Még mindig "sebezhető" a Yahoo

forrás Prim Online, 2003. július 28. 12:01
A sebezhetőség jelen esetben nem programhiba miatt van, hanem azért, mert a későbbiekben leírt Yahoo programokba egy kis shell kódot juttatva, az sebezhetővé teszi azokat.
Kiváló alkalom egy igen érdekes cracker technika, az un "NOP sled", bemutatására. Egyszerű fordításban ez a kifejezés sokat nem jelent, sőt megkockáztatható hogy fejcsóválóan értelmetlen. A "nop - nope" jelentése az MTA SZTAKI angol szótár szerint: "nem, dehogyis." Ugyanitt a "sled" jelentése: "szánkó, csúszka". Hát igen - ebből nehéz következtetni bármire is.

Hogy mégis mit takar a "NOP sled": köztudott, hogy egy "célszámítógép" architektúra kódjaiban van egy sorozatnyi un. "nem operációs" utasítás is. Ezeket az utasításokat igen gyakran használják fel, a puffer túlcsordulást okozó technikákban, úgy, hogy hatalmas mennyiségű kérést, küldenek az ezek közül kiválasztott, átalakított kihasználható kódnak. A "NOP sled" könnyít a címzésen: miután a NOP nem statikus, hanem változtatja a helyét, "csúszkál", nem szükséges tévedhetetlenül a kihasználható pontnak címezni a kéréseket, hívásokat. E helyett a NOP közepe, a NOP "útjának egy pontja" a cím, ami nem téveszthető el, és megoldható, hogy az exploit kód felé "csússzon" és futtassa, elindítsa azt. "Azt, hogy a Yahoo miért nem javította ki a sebezhetőséget, nem tudom, csak azt, hogy rossz utat választott, rosszul döntött."

Az exploitot kipróbáltuk, és működött a Yahoo Messenger 5,5,0,1246, Yahoo Module 5,5,0,454, esetében. Ehhez Windows 2000 Szakember 5.0.2195 SP3 -at használtunk, de egyéb közlés szerint a sebezhetőséget nem csak az Windows 2000-rel, hanem az XP-vel is ki lehet használni. Mindössze néhány címet kell esetleg kicserélni hozzá.

A hiba bekövetkezésének feltételei: A Yahoo szolgáltató alkalmazásain igen sokan vannak regisztrálva. Ez a nagy mennyiségű kliens használható ki akkor, amikor valaki a bejelentett címét meg akarja változtatni. A címváltoztatás nagyon egyszerűen működik, tulajdonképpen a cím az egyik postaládából a másikba kerül. Meg kell szerezni egy statikus szektort, ahova a shell kódot helyezed. Ha sokan akarnak ezen a statikus területen/szektorban címet változtatni, ahol "kis programunk"/kódunk van - e miatt nem tehetik meg.

Két lehetőség van arra, hogy a rendszer összeomoljon - az első, nevezhetjük belépés "bypass"-nak, (elkerülés, megkerülés), amikor azonnal, első, egyetlen alkalommal buffer túlcsordulás nélkül "nop sled" segítségével a rendszer összeomlik, nem kell "pöröllyel szétverni". Elég a NOP "csúszkálása" abban a szektorban, ahol a kódunk van. (a "nop sled" miatt nem kell érdekes a kód címe a futás elindításához, - ezáltal az azonnali összeomláshoz, mindehhez elég a NOP) Ez is igen kellemetlen lehet, de nem tudom, melyik a meglepőbb, ez vagy a következő:

Itt is használni kell egy kis kódot, ami ez esetben semmiféle kárt nem okoz, bejuttatása után, csak egy felbukkanó ablakot nyit ki. Ekkor kicserélhetnéd, de mivel igen kis hely van, ezt nem tudod nagyobb megtenni. A shell azért kell, hogy letöltsön egy programot - a sloth.notpijas.com - ról, ami végrehajtja mindazt, amit távolról akarsz. Előidézhetsz egy rossz URI kezelést, - amihez elegendő az, hogy az áldozat egy rossz "html" fájlt nézzen meg, elindítva ezzel tudtán kívül a programunkat, ami szintén a rendszer összeomlásához vezet.

Geysap & B$H