Aktív témák
-
Gregorius
őstag
egy olyan nagy paraméterrel, amitől az túlcsordul
Itt egy alapvető tévedésedet eloszlatnám: nem a stack csordul túl, hanem a buffer.
A stack az egy olyan képződmény, ami nagyobb memóriacímtől a kisebb felé nő. Ne kérdezd, miért van ez így, így van és kész, ez ''hagyomány''. A probléma az, hogy a buffereket (tipikusan egy char [] vagy hasonló) a különböző függvények (pl. strcpy) éppen másik irányba (kisebb címtől nagyobb felé) írják, tehát ha a buffernek lefoglalt memóriaterületen túllóg a beírt adat, akkor a stackre utoljára rárakott adatokat, vezérlő információkat fogja felülírni, tehát szó sincs semmiféle átfordulásról, ez nem olyan túlcsordulás. Inkább túlírásnak (overrun) lehetne hívni.
Azért problémás az ügy, mert ugyan lehet, hogy nagy kárt nem tud okozni a hiba bizonyos esetekben, de DoS-szerű támadást mindenképpen (egyszerűen hibával elszáll a program/service, ld. MSBlast), azon túl potenciálisan bármilyen kárt lehet vele okozni (akár egy mass-mailer vagy egy proggi, ami ellopja a bizalmas adataidat nem elég nagy kár?). Sokkal egyszerűbb egy ilyen hibát kijavítani (miután kiderült, hogy ott van), mint azon filózni, hogy ez mennyire lehet veszélyes.
[Szerkesztve] -
kisfurko
senior tag
Ez az idegen kód végrehajtásosdi inkább a system process-ekre veszélyes.
Normál esetben megfelelően reagál mondjuk egy Apache. Ekkor simán csak a neked való oldalakat tudod lekérdezni. Ha egy lekéréssel be tudod juttatni a saját kódodat, akkor olyan oldalt, Apache rendszerfile-t is megkaphatsz, amit nem tudnál normálisan.
E? -
rog
addikt
ok megfejtettem mit írtál. :)
gyak ugyanaz mnt az első pl a és b processel.
B meghívja A.Y-t. (ismerve a stack méretét, egy olyan nagy paraméterrel, amitől az túlcsordul és a paraméter vége, benne a gonoszságra mutató címmel rákerül a megfelelő helyre).
ezáltal a A.Y-ról a vezérlés nem a hívóra kerül (ez lehet B.X, A.X, vagy C.X is) hanem a stack-en levő gonoszságra.
mit ér el vele?
a G-kód a hívó jogaival fog rendelkezni (A.X esetén A jogaival C.X esetén C jogaival, B.xnél B jogaival, az utolsó mondjuk szívás.)
ha A-ból vagy c-ből hívják meg a hibás Y függvényt akkor hogy kerül a stackre a Goni kód, meg csorduláshoz kellő hosszú paraméter? -
WN31RD
addikt
''hogy veszi át a támadó a ''B'' process felett az irányítást?''
B processzben:
X függvény meghívja Y függvényt
Y függvény hibás, és egy támadó Y függvény hibáját kihasználva beleírja a verembe a gonosz kódot, plusz a gonosz kódra mutató visszatérési értéket
Y függvény befejezi a működését, és visszatérne X-hez... de nem X-hez tér vissza, hanem a gonosz kódhoz kerül a vezérlés, mert a visszatérési érték át lett írva
(Na, cracker tanfolyam ;] átmenetileg berekesztve... elhúztam.) -
faster
nagyúr
Szerintem itt nem processzek közötti oda-vissza ugrálásról van szó, hanem egy processzen belüli függvényhívás-visszatérésről. A függvény a visszatérési értéket a stacken tárolja, ami felülíródik, és a saját kódra mutat. Csak az nem világos, hogy ez a kód is a stacken van-e (bár gondolom, csak ott, hiszen a puffer túlcsordulás csak a stacken képes írása), és vajon a kód írója honnan tudja, hogy milyen címre kerül az ő programkódja.
-
WN31RD
addikt
Na, értem végre, hogy mit nem értesz. :D
Nincsen szó processzek közötti váltásról.
Az A processz elindítja B processzt adott jogokkal. Innentől kezdve elfelejthetjük az A processzt.
B processznek a stackjét elbassza egy támadó, ezáltal átveszi B processz felett az irányítást, és a támadó kód B processz részeként fut, természetesen a B processz jogaival.
B processz (illetve a benne levő kód) garázdálkodik...
Természetesen a B processz (illetve a benne levő kód), elindíthat egy C processzt, amibe bemásolhatja a gonosz kódot, de ez csak a garázdálkodás része... azaz részletkérdés.
Ennyi.
Világos?
[Szerkesztve] -
WN31RD
addikt
Védelmi szinteken nem lehet ezzel a módszerrel átmenni, de a program jogait megkapja a gonosz kód is, tehát pl. egy vírus terjedhet a programot futtató felhasználónak a jogaival, ha pedig egy privilegizált (pl. root-ként futó) szerverprocessz az áldozat, akkor ugye nem kell tovább magyarázni...
-
WN31RD
addikt
''szóval az ip-t nem lehet olyan címre küldeni, ami a stack-en van?''
Pontosan. (De nem csak a veremről van szó, hanem az adatszegmensről is.)
''de mivan ha a gonoszság nem a veremben van? vagy olyan nem lehet?''
Elvileg olyannak nem kellene lenni, hogy kifejezetten gonosz programrész máshol legyen, de előfordulhat az, hogy egy teljesen normális rutin gonosz paraméterekkel meghívva gonosz dolgot csinál. A verem átírásával (a verembe írást semmi nem akadályozza meg) ilyen módon továbbra is támadható marad a gép.
''az ellen nem véd'' :D
''hogy működik egészen pontosan ez a túlcsordításos történet?''
Pl. így működhet:
A memóriában (veremben) a következők vannak:
... valamilyen puffer ... visszatérési cím ...
A program beolvas a pufferbe, de hibás a beolvasó kód, és nem ellenőrzi a beolvasandó adat méretét, és ha túl sokat kap, akkor felülírja a puffer utáni területet is, beleértve a visszatérési címet.
A támadó felülírja a visszatérési címet pl. a puffer bizonyos helyére mutató pointerrel, oda pedig berakja a kódot, és kész. -
kisfurko
senior tag
Nem olvastam még el, de én úgy tudom elképzelni, hogy csak az futhat (lap), aminek be van állítva az execute flag-je. A rendszer pedig csak a kód lapjainak állítja be. A kód lapjait meg nem lehet módosítani, mert read-only. Tehát nincs gonosz kód. Vagy valamit kifelejtettem?
Aktív témák
Hirdetés
- f(x)=exp(x): A laposföld elmebaj: Vissza a jövőbe!
- NVIDIA GeForce RTX 3080 / 3090 / Ti (GA102)
- Folyószámla, bankszámla, bankváltás, külföldi kártyahasználat
- Yettel topik
- Milyen TV-t vegyek?
- E-roller topik
- AMD Ryzen 9 / 7 / 5 7***(X) "Zen 4" (AM5)
- Apple iPhone 16 Pro - rutinvizsga
- NVIDIA GeForce RTX 5080 / 5090 (GB203 / 202)
- Vicces képek
- További aktív témák...
- LG 27GR95QL - 27" OLED / Limitált LoL Edition / QHD 2K / 240Hz & 0.03ms / NVIDIA G-Sync / FreeSync
- BANKMENTES részletfizetés Noblechairs HERO RL valódi bőr Gamer Szék
- Bomba ár! HP EliteBook 850 G2 - i5-5GEN I 8GB I 256GB SSD I 15,6" FULL HD I Cam I W10 I Gari!
- Nike Airmax 720 43-as sneaker eladó
- ÁRGARANCIA!Épített KomPhone Ryzen 7 9800X3D 32/64GB RAM RTX 5070Ti 16GB GAMER PC termékbeszámítással
Állásajánlatok
Cég: CAMERA-PRO Hungary Kft
Város: Budapest
Cég: Promenade Publishing House Kft.
Város: Budapest