Tweets by @buherablog
profile for buherator at IT Security Stack Exchange, Q&A for IT security professionals

A BitBetyár Blog

Túljártál a nagyokosok eszén? Küldd be a mutatványodat! (e-mail a buherator gmailkomra jöhet)

Full-Disclosure / Névjegy / Coming out


Promó

H.A.C.K.

Címkék

0day (110) adobe (87) adobe reader (21) anonymous (26) apple (60) az olvasó ír (49) blackhat (20) botnet (22) bug (200) buherablog (44) buhera sörözés (39) bukta (49) deface (38) dns (22) dos (29) esemény (82) facebook (26) firefox (64) flash (33) gondolat (31) google (59) google chrome (36) hacktivity (37) hírek (117) incidens (224) internet explorer (88) iphone (35) java (50) jog (22) kína (21) kriptográfia (68) kultúra (21) linux (24) malware (43) microsoft (142) móka (48) mozilla (23) office (26) oracle (40) os x (43) patch (197) php (20) politika (31) privacy (58) programozás (22) safari (34) sql injection (62) windows (85) xss (77) Címkefelhő

Licensz

Creative Commons Licenc

Új /GS ellenőrzés a Visual Studio 11-ben

2012.01.30. 09:30 | buherator | Szólj hozzá!

A Microsoft Visual Studio következő kiadásában új automatikus ellenőrzéssel bővül a /GS fordítási paraméter funkcionalitása. A /GS alapvetően az úgynevezett stack sütik (stack cookie, stack canary) bekapcsolására szolgál. A kapcsoló használatával fordított binárisok függvényeinek elejére és végére a fordító egy-egy plusz kódrészletet pakol. Az első egy véletlen szót (sütit) helyez a stackre a helyi változók és a függvényhívához elmentett metaadatok (pl. visszatérési cím) közé. Amennyiben egy stack túlcsordulás következtében egy támadó megpróbálja felülírni ezeket a metaadatokat, a sütit is felül kell csapnia, ezt a változást pedig érzékeli a függvény végén található ellenőrző kód, és megszakítja a program futását, mielőtt a rossz visszatérési címre ugrana a vezérlés. 

Ez a megoldás azonban nem hatékony, ha a támadó közvetlenül képes megadni a memória írás eltolását:

void foo(int n, TCHAR val){
TCHAR buf[256];
// ...
buf[n]=val; 
}

Ha a támadó képes befolyásolni n értékét, közvetlenül elérheti az elmentett visszatérési címet, érintetlenül hagyva a stack sütit. A Microsoft szakértői úgy találták, hogy az ilyen típusú problémák egyik jelentősebb részhalmazát azok az esetek teszik ki, amikor sztring termináláshoz használt NULL byte kerül támadó által kontrollált pozícióba. Ezért a Visual Studio 11-ben automatikusan bekerül egy egyszerű értékellenőrzés (nagyobb-e a megadott eltolás a puffer hosszánál?) bizonyos értékadások elé. Ahhoz, hogy ez megtörténjen, a következő feltételeknek kell teljesülnie:

  • Az írandó tömb mérete ismert és nem változik
  • A tömb 1 vagy 2 byte méretű elemekből áll (tipikusan valamilyen karakterlánc)
  • Az írás értéke nulla (sztring terminátor)

Fontos megjegyezni, hogy ez nem csak stacken tárolt változókra vonatkozik, hanem a globálisakra is. Látható, hogy az új védelem korántsem fedi le az összes lehetséges problémás esetet, mindazonáltal a Microsoftnál úgy gondolják, hogy ezzel a változtatással jelentős mennyiségű sebezhetőséget lehet majd megelőzni, nem befolyásolva jelentősen az új alkalmazások méretét illetve teljesítményét.

Címkék: microsoft megerősítés visual studio

Kommentek:

A hozzászólások a vonatkozó jogszabályok  értelmében felhasználói tartalomnak minősülnek, értük a szolgáltatás technikai  üzemeltetője semmilyen felelősséget nem vállal, azokat nem ellenőrzi. Kifogás esetén forduljon a blog szerkesztőjéhez. Részletek a  Felhasználási feltételekben és az adatvédelmi tájékoztatóban.

Nincsenek hozzászólások.