Pár napja Jann Horn, a Google Project Zero csapatának tagja, aki korábban azonosította a Spectre és a Meltdown sebezhetőségét, bemutatott egy technikát a sebezhetőség kihasználására megtalálható a Linux kernel szemétgyűjtőjében (CVE-2021-4083).
Sebezhetőség faji állapot okozza amikor a unix socket fájlleírókat megtisztítják és potenciálisan lehetővé teszi a jogosulatlan helyi felhasználók számára a kód futtatását a kernel szintjén.
A probléma érdekes, mert az időablak amely során a versenyállapot bekövetkezik túl kicsinek értékelték valódi sérülékenységek létrehozására, de a tanulmány szerzője kimutatta, hogy a kezdetben szkeptikus sebezhetőségek is valódi támadások forrásává válhatnak, ha a sérülékenység létrehozója rendelkezik a szükséges képességekkel és idővel.
Yann Horn megmutatta, hogyan lehet filigrán manipulációk segítségével csökkenteni az állapotot Verseny esemény, amely akkor következik be, amikor a close() és az fget() függvényeket egyidejűleg hívjuk egy teljesen kihasznált, használat utáni szabad sérülékenységhez, és hozzáférést kapunk a kernelen belül már felszabadult adatstruktúrához.
Versenyfeltétel lép fel egy fájlleíró bezárása során miközben a close() és az fget() függvényeket egyszerre hívjuk meg. A close() hívás az fget() végrehajtása előtt végrehajtható, ami összezavarja az elemgyűjtőt kihasználatlan, mert a visszaszámlálás szerint a fájlszerkezetnek nem lesz külső hivatkozása, hanem a fájlleíróhoz csatolva marad, azaz a szemétgyűjtő azt feltételezi, hogy kizárólagos hozzáféréssel rendelkezik a szerkezethez, de valójában rövid ideig, a fájlleíró táblázat fennmaradó bejegyzése továbbra is a struktúra felszabadítását jelzi.
A valószínűség növelésére versenyhelyzetbe lépni, számos trükköt alkalmaztak, amelyek lehetővé tették a siker valószínűségének növelését a részesedés 30%-a konkrét rendszeroptimalizálások végrehajtásakor. Például annak érdekében, hogy a fájlleírókat tartalmazó struktúra elérési idejét több száz nanomásodperccel megnöveljük, az adatokat kiürítettük a processzor gyorsítótárából azáltal, hogy a gyorsítótárat egy másik CPU magon végzett tevékenységgel szennyezték, ami lehetővé tette a struktúra visszaállítását a memóriából és nem a CPU gyors gyorsítótára.
A második fontos tulajdonság volt hardveres időzítő által generált megszakítások használata hogy növelje a versenyidőt. Az időzítést úgy választottuk meg, hogy a megszakításkezelő a versenyfeltétel bekövetkeztekor tüzeljen, és egy időre megszakítsa a kód végrehajtását. Az irányítás visszaadásának további késleltetése érdekében az epoll körülbelül 50 ezer bejegyzést generált a sorban, ami iterációt igényelt a megszakításkezelőben.
A technika sebezhetőség kihasználása 90 napos titoktartási időszak után került nyilvánosságra. A probléma
és december elején javították. A javítást az 5.16-os kernel tartalmazta, és átkerült a kernel LTS-ágaiba és a disztribúciókban található kernelt tartalmazó csomagokba is. Meg kell jegyezni, hogy a sérülékenységet a CVE-2021-0920 hasonló probléma elemzése során azonosították, amely a szemétgyűjtőben nyilvánul meg az MSG_PEEK jelző feldolgozása során.
Egy másik sebezhetőséget találtak nemrég a Linux kernelben ez volt a CVE-2022 0742- hogy kimerítheti a rendelkezésre álló memóriát, és távolról szolgáltatásmegtagadást okozhat speciálisan kialakított icmp6 csomagok küldésével. A probléma a 6-as vagy 130-es típusú ICMPv131-üzenetek feldolgozása során fellépő memóriaszivárgással kapcsolatos.
A probléma az 5.13-as kernel óta fennáll, és az 5.16.13-as és az 5.15.27-es verziókban javították. A probléma nem érintette a Debian, SUSE, Ubuntu LTS (18.04, 20.04) és RHEL stabil ágakat, Arch Linuxon javították.
Végül ha érdekel, hogy többet tudjon meg róla a megjegyzésben ellenőrizheti a részleteket a következő link.