FixVibe
Covered by FixVibecritical

SQL-befecskendezés: Az illetéktelen adatbázis-hozzáférés megelőzése

Az SQL injekció (SQLi) egy kritikus biztonsági rés, ahol a támadók megzavarják az alkalmazások adatbázis-lekérdezéseit. A rosszindulatú SQL-szintaxis beiktatásával a támadók megkerülhetik a hitelesítést, megtekinthetik az érzékeny adatokat, például jelszavakat és hitelkártyaadatokat, vagy akár feltörhetik a mögöttes szervert.

CWE-89

Az SQL-befecskendezés hatása

Az SQL-befecskendezés (SQLi) lehetővé teszi a támadók számára, hogy megzavarják azokat a lekérdezéseket, amelyeket egy alkalmazás a [S1] adatbázisában végez. Az elsődleges hatás az érzékeny adatokhoz, például felhasználói jelszavakhoz, hitelkártyaadatokhoz és személyes adatokhoz való jogosulatlan hozzáférést jelent. [S1].

Az adatlopáson túl a támadók gyakran módosíthatják vagy törölhetik az adatbázisrekordokat, ami az alkalmazások viselkedésének tartós megváltozásához vagy adatvesztéshez vezethet. [S1]. Súlyos esetekben a SQLi kiterjeszthető a háttér-infrastruktúra veszélyeztetése, a szolgáltatásmegtagadási támadások lehetővé tétele vagy a szervezet rendszereibe való tartós hátsó ajtó biztosítása érdekében.

Kiváltó ok: Nem biztonságos bevitelkezelés

Az SQL-befecskendezés kiváltó oka a [S2] SQL-parancsban használt speciális elemek nem megfelelő semlegesítése. Ez akkor fordul elő, amikor egy alkalmazás SQL-lekérdezéseket hoz létre úgy, hogy a külsőleg befolyásolt bemeneteket közvetlenül a [S1][S2] lekérdezési karakterláncba fűzi össze.

Mivel a bemenet nincs megfelelően elszigetelve a lekérdezési struktúrától, az adatbázis-értelmező a felhasználói bemenet egyes részeit SQL-kódként hajthatja végre, nem pedig szó szerinti adatként kezeli. [S2]. Ez a sérülékenység a lekérdezés különböző részeiben nyilvánulhat meg, beleértve a SELECT utasításokat, a INSERT értékeket vagy a UPDATE [S1] utasításokat.

Konkrét javítások és enyhítések

Paraméterezett lekérdezések használata

Az SQL-befecskendezés megelőzésének leghatékonyabb módja a paraméterezett lekérdezések, más néven előkészített utasítások [S1]. A karakterláncok összefűzése helyett a fejlesztőknek olyan strukturált mechanizmusokat kell használniuk, amelyek kikényszerítik az adatok és a [S2] kód elkülönítését.

A legkisebb kiváltság elve

Az alkalmazásoknak a feladataikhoz szükséges legalacsonyabb jogosultságokkal kell csatlakozniuk az adatbázishoz. [S2]. A webalkalmazás-fiók nem rendelkezhet rendszergazdai jogosultságokkal, és a funkciójához szükséges konkrét táblákra vagy műveletekre korlátozódhat. [S2].

Bemenet ellenőrzése és kódolása

Bár nem helyettesíti a paraméterezést, a bemeneti érvényesítés mélyreható védelmet biztosít a [S2]. Az alkalmazásoknak ismert-jó elfogadási stratégiát kell használniuk, ellenőrizve, hogy a bemenet megfelel-e a várt típusoknak, hosszoknak és formátumoknak: [S2].

Hogyan teszteli a FixVibe

A FixVibe már lefedi az SQL-befecskendezést a kapuzott active.sqli szkenner modulon keresztül. Az aktív vizsgálatok csak a domain tulajdonjogának ellenőrzése és tanúsítása után futnak le. Az ellenőrzés bejárja az azonos eredetű GET-végpontokat a lekérdezési paraméterekkel, létrehoz egy kiindulási választ, megkeresi az SQL-specifikus logikai anomáliákat, és csak az időzítés megerősítése után jelenti a megállapítást több késleltetési hosszon keresztül. A lerakatvizsgálatok a code.web-app-risk-checklist-backfill révén a kiváltó ok korábbi felderítésében is segítenek, amely megjelöli a sabloninterpolációval épített nyers SQL-hívásokat.