Professional Documents
Culture Documents
Fleiner Rita
Budapesti Mszaki Fiskola Neumann Jnos Informatikai Kar
sszefoglal
A publikci clja az adatbzis httrrel rendelkez alkalmazsok biztonsgt fenyeget
tmadsok egyik tpusnak, az SQL injekcinak a bemutatsa, ismertetve a tmads alapjait, tpusait
s az ellene val vdekezsi lehetsgeket. Az SQL injekcis tmads dinamikusan szerkesztett SQL
utastsba illeszt kros tevkenysget megvalst kdot, a behatols az adatbzisokra pl
alkalmazsoknak, klns tekintettel a webes alkalmazsoknak a srlkenysgt kihasznlva
valsulhat meg. A tmad megszerezheti az alkalmazs mgtt ll teljes adatbzis tartalmt,
megvltoztathatja az adatbzis felptst, illetve tartalmt, st az adatbzis szervert futtat
szmtgpet is kompromittlhatja. A srlkenysg oka mgtt legtbbszr magnak az
alkalmazsnak a programozsi hibja ll, nem pedig az alkalmazs mgtt ll adatbzis krnyezet
vagy annak teleptsi konfigurcija. Ez is indokolja, hogy az SQL injekci elleni vdekezst nem
kizrlag az informatikai infrastruktra biztonsgnak vdelme jelenti, fontos magra az alkalmazsra
s annak kdjra is figyelmet szentelni.
Kulcsszavak
SQL injekci, informatikai biztonsg, adatbzis
Abstract
In this paper we describe the SQL injection based attack threatening the security of
applications with database backend. The bases and the typesof the attack are studied, and the
possibilities of the prevention and detection are considered. SQL injection is a class of attacks where
un-sanitized user input is able to change the structure of a dynamically built SQL query, injecting
malicious code into the database.The exploitation can occur through the vulnerability of application,
especially web application that utilize a database server. The attacker is able not only to steal the entire
content of the database, but also to make changes to the database schema and content or even to
compromise the infrastructure behind the database server. An application is vulnerable to SQL
injection as a result of faulty programming of the application itself. It is not the result of a bad
architecture or wrong deployment. The right solution lies not only in securing the infrastructure, but
also in writing secure code and applying correct database acess.
Keywords
SQL injection, IT security, database
1. Bevezets
Napjainkban az informatikai szolgltatsok jelents rsze adatbzisokban trolt
informcik kezelshez, rendelkezsre bocstshoz kapcsoldik. Az adatbzisok
kezelsnek, elrsnek legelterjedtebb mdja az SQL (szabvnyos adatbzis kezel nyelv)
alap hozzfrs.
Az adatbzisok lekrdezsre alapul tmads az SQL injekci, melynek igen szleskr
kvetkezmnyei lehetnek, mint pldul bizalmas informcik kiszivrgsa, adatok
integritsnak megsrtse, hozzfrsi szablyok fellrsa, tvoli parancsok lefuttatsa s
szolgltats megtagadsa tpus tmads (DoS) indtsa. A tmad megszerezheti az
alkalmazs mgtt ll teljes adatbzis tartalmt, megvltoztathatja az adatbzis felptst
(smjt), illetve tartalmt, st az adatbzis szervert futtat szmtgpet is
kompromittlhatja. A mdiban is nagy visszhangot kivlt esemnyek, mint pldul
kreditkrtya informcik megszerzse illetve szemlyes adatok kiszivrogtatsa, gyakran
SQL injekcira plve jnnek ltre.
Jelen publikci clja az adatbzisok biztonsgt fenyeget tmadsok egyik fontos
tpusnak, az SQL injekcinak a felvzolsa, elemezve a tmads alapjait, tpusait s az ellene
val vdekezs lehetsgeit. Az 2. fejezetben bemutatom az SQL injekcis tmadsok
fogalmt, lnyegt s a kvetkezmnyeinek tpusait, a 3. fejezetben a tmads elleni egyik
legrgebbi vdekezs kvetkezmnyeknt kialakult tpust, a bekttt szem SQL injekci
sajtossgait, mdszereit ismertetem, a 4. fejezetben elemzem az SQL injekci elleni
vdekezs lehetsgeit, majd az 5. fejezetben sszegzem a trgyalt informcikat.
2. SQL injekci bemutatsa
Az SQL injekcis tmads lnyege egy tervezett tartalm, dinamikusan szerkesztett SQL
utastsba kros tevkenysgeket megvalst SQL utastsok beillesztse (hozzfzse).
Ezen tpus tmads az adatbzisokra pl alkalmazsoknak, klns tekintettel a webes
alkalmazsoknak a srlkenysgt kihasznlva valsul meg. A srlkenysg oka mgtt
legtbbszr magnak az alkalmazsnak a programozsi hibja ll, nem pedig az alkalmazs
mgtt ll adatbzis krnyezet vagy annak teleptsi konfigurcija. Ez is indokolja, hogy az
SQL injekci elleni vdekezst nem kizrlag az informatikai infrastruktra biztonsgnak
vdelmben kell keresni, fontos magra az alkalmazsra s annak kdjra is figyelmet
szentelni.
A webes alkalmazsok architektrjnak legfels szintjn felhasznli interfsz szerept
ellt web bngsz tallhat. A kzps szinten az zleti logikt kpvisel web szerver s
alkalmazs szerver llnak. A web szerver a listener szolgltats segtsgvel fogadja a kliens
gpen lv bngsz ltal kldtt krseket, amiket az ltalban ugyanazon fizikai gpen lv
alkalmazs szerverhez tovbbt. Az alkalmazs szerver SQL utastsok elkldse tjn
kezdemnyezi az adatbzisban trolt adatok elrst az architektra legals szintjn lv
adatbzis szervertl.
Az alkalmazs a felhasznltl bekrt paramterek segtsgvel lltja el az SQL
szerverhez eljuttatand lekrdezst, amit egyetlen sztring fog kpviselni. A tmads lnyege
abban rejlik, hogy az alkalmazson keresztl meg lehet vltoztatni az SQL lekrdezs
jelentst, mivel egyetlen sztring tartalmazza a lekrdezsi utasts szintaktikjt s a
felhasznl ltal megadott paramtereket. Ezt a sztringet kldi el az alkalmazs az adatbzis
szerverhez, ltalban input paramterek ellenrzse nlkl. A tmad a paramter rtknek
olyan kompromittl karaktersorozatot ad meg, ami megvltoztatja az eredeti lekrdezs
2
szintaktikjt, ezltal a tmad egszen ms feladatot valst meg, mint amit a programoz a
kdjval szndkozott volna. Meg kell emlteni, hogy a dinamikusan ellltott utasts nem
csak a felhasznltl bekrt adatokbl ptkezhet, hanem a kliens gpen fut bngszn
megjelen rlapok rejtett mezibl, tovbb a szerver oldali munkamenet vagy alkalmazs
vltozibl, mert ezek stibe (cookie) gyazva megtallhatak a felhasznlk gpn, s
viszonylag knnyen hamisthatk.
Az SQL injekcis tmads brmely adatbzis platformon vgrehajthat. A tmadst a clja
szerint a kvetkez hrom tpusba sorolhatjuk:
1) Adatokhoz val jogosulatlan hozzfrs
A tmad az alkalmazs kijtszsa ltal elri, hogy az adatbzisbl szmra nem
megengedett adatokat krdezzen le, belertve jelszavakat s felhasznli azonostkat is. A
jogosulatlan hozzfrs gyakran a felhasznli hitelests kijtszsval jn ltre.
2) Adatbzis mdostsa
A tmad adatokat szrhat be, mdosthat, illetve trlhet ki az adatbzisbl, illetve
megvltoztathatja az adatbzis struktrjt, smjt. Azonostk, jelszavak, adatbzis
hozzfrsek ltrehozsa, mdostsa s trlse is ebbe a kategriba tartozik.
3) Adatbzis szervert futtat szmtgp kompromittlsa
SQL injekcival el lehet rni j felhasznl felvtelt az adatbzis szervert futtat gpen,
ami ltal a tmad a szmtgphez hozzfrsi jogot tud nyerni s akr opercis rendszer
szint parancsokat hajthat vgre SYSTEM jogosultsggal.
A tmads pontosabb megrtshez pldkat mutatok be [7] alapjn:
1) Plda: Hitelests kijtszsa
Az alkalmazs kdrszlete:
SqlQry = "SELECT * FROM Users WHERE Username = '" & Request.QueryString("User")
& "' AND Password = '" & Request.QueryString("Pass") & "'"
LoginRS.Open SqlQry, MyConn
If LoginRS.EOF Then Response.Write("Invalid Login")
Jhiszem felhasznl esetn, John felhasznl nv s Smith jelsz megadsa utna
kvetkez SQL lekrdezs jn ltre:
SELECT * FROM Users WHERE Username = John AND Password = Smith
A tmad jelsznak megadja a X OR 1=1 sztringet, akkor a kvetkez SQL lekrdezs
keletkezik:
SELECT * FROM Users WHERE Username = John AND Password = X OR 1=1
Ez az adatbzis lekrdezs tetszleges felhasznl nv megadsa mellett a teljes Users
tbla tartalmt kilistzza, ami teljesen klnbzik attl, ami a programoz szndka lett volna.
vagy sem, majd ebbl vonunk le kvetkeztetseket a sikeres SQL injekci vgrehajtsa
rdekben. Ezek segtsgvel
1) SQL injekcira pl tmads lehetsgt tudjuk felderteni
2) Kitallhatjuk az injekci szintaktikjt s az adatbzis tpust
3) UNION SELECT tpus tmadst tudunk felpteni
4) Ezek utn ms tpus injekcis tmadsokat (pl. WHERE felttelre pl vagy utasts
befecskendez) mr knny megalkotni.
4. SQL injekcis tmadsok elleni vdekezs
Ebben a fejezetben bemutatom az SQL injekcis tmads elleni vdekezsi lehetsgeket,
azokat hrom kategriba csoportostva aszerint, hogy az informatikai infrastruktra melyik
szintjn valsulnak meg
Az SQL injekcira pl tmads az alkalmazsban rejl biztonsgi rst hasznlja ki
lehetsget adva arra, hogy a felhasznl ltal megadott bemeneti paramter a szksges
formai ellenrzs nlkl kerljn be az adatbzis lekrdezst meghatroz sztringbe. Az
alkalmazsok fejleszti ltalban nem informci biztonsgi szakemberek, a program rsa
kzben nem biztonsgi krdsekre koncentrlnak, inkbb az id korltra s a helyesen fut
kdokra helyezik a figyelmet. Ez jelentsen hozzjrul ahhoz, hogy az ltaluk rott programok
biztonsgi rseket tartalmaznak. A hibkat s problmkat sokszor nem k, hanem az IT
biztonsggal foglalkoz szakemberek szlelik s prbljk utlagos eszkzkkel megoldani.
A teljes biztonsgot az jelenten, ha mr a kdok rsakor tudatosan tervezs s megvalsts
trtnne. Ebben a fejezetben megvizsgljuk, hogy az emltett kt szakterlet a maga szintjn
milyen vdekezsi mdokkal tud lni.
Egy msik rdekes krds, hogy a tmadsok elleni vdekezsben gyakran hasznlt
behatols rzkel (IDS) s behatols megelz (IPS) rendszerek az adatbzis vdelemben
milyen szerepet tudnak betlteni, s ehhez milyen technikt hasznlnak. Bemutatok hrom
klnbz mdszerre alapozott behatols rzkel s behatols megelz rendszert.
Adatbzis biztonsg szempontjbl alkalmazott IDS s IPS rendszerek a megfigyel
pontjaikat, ms nven szenzoraikat nem a hlzati szinten, hanem az architektrban
magasabban elhelyezked adatbzis szerverben vagy a szerver eltti proxy-n helyezik el. A
szenzort gy ptik fel, hogy az SQL adatfolyamot figyel meg.
4.1. Hlzat szintjn megvalsthat vdekezs
A tzfalak s a hlzati szint IPS, IDS rendszerek nem nyjtanak megfelel vdelmet,
hisz ezen a szinten a kiaknzst megvalst, rosszindulat lekrdezs nem klnbztethet
meg a normlis tpustl. SQL injekcis behatols rzkelshez az SQL utastst
megvalst karaktersorozatot kell rtelmezni valamilyen eszkz tjn, ez pedig az
architektrban a hlzati szint fltti rtegben valsthat meg.
4.2. Alkalmazs szintjn megvalsthat vdekezs
Az elzekben mr lttuk, hogy kiemelten fontos az alkalmazsok programkdjnak
ksztsekor tudatban lenni a biztonsgi krdseknek, illetve rdemes meghatrozott
A.
Agarwal:
SQL
injection:
Developers
fight
back,
2006.
http://searchsoftwarequality.techtarget.com/tip/0,289483,sid92_gci1179106,00.html
[2]
[3]
S.
Friedl:
SQL
Injection
Attacks
http://www.unixwiz.net/techtips/sql-injection.html
[4]
by
Example,
2007.
http://www.imperva.com/application_defense_center/white_papers/sql_injection_signat
ures_evasion.html
[5]
J.D. Meier, A. Mackman, B. Wastell, P. Bansode, A. Wigley: How To: Protect From
SQL
Injection
in
ASP.NET,
2005.
http://msdn.microsoft.com/enus/library/ms998271.aspx
[6]
F. S. Rietta: Application layer intrusion detection for SQL injection. ACM Southeast
Regional Conference 2006: 531-536.
[7]
A. Shulman: Traditional SQL Injection Protection:. The Wrong Solution for the Right
Problem.
CTO.
Imperva
Inc.
http://webcourse.cs.technion.ac.il/236350/Spring2005/ho/WCFiles/AdvancedSQLInject
ion.pdf
[8]
L.
Spitzner.
Honeytokens:
The
other
http://www.securityfocus.com/infocus/1713
[9]
honeypot.
July
2003.