Sebuah proyek outsourcing perangkat lunak telah mengungkap bahaya dari solusi keamanan buatan sendiri ketika tim pengembangan luar negeri menciptakan perlindungan SQL injection mereka sendiri yang secara tidak sengaja memblokir pengguna dengan nama-nama tertentu yang umum. Insiden ini menyoroti kekhawatiran yang berkembang tentang kualitas dan risiko keamanan yang terkait dengan pekerjaan pengembangan offshore.
Pendekatan Keamanan yang Cacat
Alih-alih mengikuti praktik standar industri untuk mencegah serangan SQL injection, tim luar negeri tersebut mengembangkan sistem penyaringan khusus yang memindai input pengguna untuk kata kunci SQL yang mencurigakan. Solusi mereka memblokir teks apa pun yang mengandung kata-kata seperti select, update, delete, dan yang krusial, set - yang menjelaskan mengapa pengguna bernama Seth tidak bisa menggunakan sistem tersebut. Demikian pula, Amanda dan George diblokir karena nama mereka mengandung and dan or, keduanya merupakan operator SQL umum yang ditandai oleh filter sebagai berbahaya.
SQL injection adalah jenis serangan siber di mana kode berbahaya dimasukkan ke dalam query database melalui field input pengguna.
Nama yang Diblokir dan Alasannya:
- Seth → Mengandung "set" (kata kunci SQL)
- Amanda → Mengandung "and" (operator SQL)
- George → Mengandung "or" (operator SQL)
Mengapa Solusi yang Tepat Penting
Komunitas pengembangan menekankan bahwa jenis penyaringan berbasis kata kunci ini merepresentasikan kesalahpahaman fundamental tentang prinsip-prinsip keamanan. Aplikasi modern seharusnya menggunakan parameterized statements atau prepared queries, yang memisahkan data pengguna dari perintah SQL sepenuhnya. Pendekatan ini menghilangkan kebutuhan untuk penyaringan yang kompleks sambil memberikan perlindungan yang jauh lebih kuat terhadap serangan.
Pendekatan filter khusus menunjukkan apa yang disebut para ahli keamanan sebagai perbaikan dari luar daripada mengatasi akar masalah. Ini menciptakan rasa aman yang palsu sambil memperkenalkan masalah baru, sebagaimana dibuktikan oleh diskriminasi terhadap pengguna dengan nama-nama tertentu.
Kata Kunci SQL yang Disaring oleh Sistem yang Cacat:
- Operasi database: create, database, table, insert, update, delete, drop, truncate
- Operasi query: select, where, or, and, values, set
- Operasi lainnya: rename, replace, handler
Biaya Tersembunyi dari Pengembangan Murah
Studi kasus ini mencerminkan masalah yang lebih luas dengan outsourcing pekerjaan pengembangan berdasarkan terutama pada penghematan biaya. Meskipun tim luar negeri mengenakan tarif kurang dari setengah tarif per jam dari pengembang internal, mereka akhirnya menagih lebih dari tiga kali lipat jam yang diperkirakan. Proyek tersebut memerlukan pekerjaan tambahan yang ekstensif dari tim pengembangan asli untuk mengidentifikasi dan memperbaiki masalah-masalah tersebut.
Orang pelit membayar dua kali lipat. Saya menduga bahwa biaya proyek 'luar negeri' ini bisa dengan mudah menelan biaya 20 kali lipat dari harga murah yang tertera.
Insiden ini menekankan bahwa outsourcing yang sukses memerlukan lebih dari sekadar tarif per jam yang lebih rendah. Ini menuntut komunikasi yang jelas, pengawasan teknis yang tepat, dan pengembang yang memahami prinsip-prinsip keamanan fundamental. Ketika elemen-elemen ini hilang, penghematan biaya yang seharusnya dapat dengan cepat berubah menjadi kegagalan mahal yang memerlukan pengerjaan ulang secara menyeluruh.
Dampak Biaya Proyek:
- Tarif per jam luar negeri: Kurang dari 50% dari pengembang internal
- Penagihan aktual: 3x dari estimasi jam kerja
- Penyelesaian akhir: Memerlukan intervensi tim internal
Pelajaran untuk Proyek Masa Depan
Cerita ini berfungsi sebagai pengingat bahwa keamanan tidak bisa menjadi pertimbangan belakangan atau sesuatu yang diimprovisasi. Baik bekerja dengan tim internal maupun kontraktor eksternal, organisasi perlu memastikan bahwa praktik keamanan dasar dipahami dan diimplementasikan dengan benar dari awal. Biaya memperbaiki masalah keamanan setelah fakta - baik dalam hal uang maupun pengalaman pengguna - jauh melebihi investasi dalam melakukan hal-hal dengan benar sejak awal.
Referensi: INJECTION REJECTION