FixVibe
Covered by FixVibecritical

Suntikan SQL: Menghalang Capaian Pangkalan Data Tanpa Kebenaran

Suntikan SQL (SQLi) ialah kelemahan kritikal di mana penyerang mengganggu pertanyaan pangkalan data aplikasi. Dengan menyuntik sintaks SQL yang berniat jahat, penyerang boleh memintas pengesahan, melihat data sensitif seperti kata laluan dan butiran kad kredit, atau malah menjejaskan pelayan asas.

CWE-89

Kesan SQL Injection

Suntikan SQL (SQLi) membenarkan penyerang mengganggu pertanyaan yang dibuat oleh aplikasi ke pangkalan datanya [S1]. Kesan utama termasuk akses tanpa kebenaran kepada data sensitif seperti kata laluan pengguna, butiran kad kredit dan maklumat peribadi [S1].

Di luar kecurian data, penyerang selalunya boleh mengubah suai atau memadam rekod pangkalan data, yang membawa kepada perubahan berterusan dalam tingkah laku aplikasi atau kehilangan data [S1]. Dalam kes keterukan tinggi, SQLi boleh ditingkatkan untuk menjejaskan infrastruktur bahagian belakang, mendayakan serangan penafian perkhidmatan atau menyediakan pintu belakang yang berterusan ke dalam sistem organisasi [S1][S2].

Punca Punca: Pengendalian Input Tidak Selamat

Punca suntikan SQL ialah peneutralan elemen khas yang tidak betul yang digunakan dalam arahan SQL [S2]. Ini berlaku apabila aplikasi membina pertanyaan SQL dengan menggabungkan input yang dipengaruhi secara luaran terus ke dalam rentetan pertanyaan [S1][S2].

Oleh kerana input tidak diasingkan dengan betul daripada struktur pertanyaan, penterjemah pangkalan data boleh melaksanakan bahagian input pengguna sebagai kod SQL dan bukannya menganggapnya sebagai data literal [S2]. Kerentanan ini boleh nyata dalam pelbagai bahagian pertanyaan, termasuk pernyataan SELECT, nilai INSERT atau UPDATE pernyataan [S1].

Pembaikan Konkrit dan Tebatan

Gunakan Pertanyaan Berparameter

Cara paling berkesan untuk menghalang suntikan SQL ialah penggunaan pertanyaan berparameter, juga dikenali sebagai pernyataan yang disediakan [S1]. Daripada menggabungkan rentetan, pembangun harus menggunakan mekanisme berstruktur yang menguatkuasakan pengasingan data dan kod [S2].

Prinsip Keistimewaan Paling Rendah

Aplikasi harus menyambung ke pangkalan data menggunakan keistimewaan terendah yang diperlukan untuk tugas mereka [S2]. Akaun aplikasi web tidak seharusnya mempunyai keistimewaan pentadbiran dan harus dihadkan kepada jadual atau operasi tertentu yang diperlukan untuk fungsinya [S2].

Pengesahan Input dan Pengekodan

Walaupun bukan pengganti untuk parameterisasi, pengesahan input menyediakan [S2] pertahanan mendalam. Aplikasi harus menggunakan strategi yang dikenali-baik, mengesahkan bahawa input sepadan dengan jenis, panjang dan format yang dijangkakan [S2].

Bagaimana FixVibe mengujinya

FixVibe sudah meliputi suntikan SQL melalui modul pengimbas active.sqli berpagar. Imbasan aktif hanya dijalankan selepas pengesahan dan pengesahan pemilikan domain. Semakan merangkak titik akhir GET asal yang sama dengan parameter pertanyaan, menetapkan tindak balas garis dasar, mencari anomali boolean khusus SQL dan hanya melaporkan penemuan selepas pengesahan masa merentas berbilang panjang kelewatan. Imbasan repositori juga membantu menangkap punca lebih awal melalui code.web-app-risk-checklist-backfill, yang membenderakan panggilan SQL mentah yang dibina dengan interpolasi templat.