Félelmetes eset történt az elmúlt hetekben. Egy csomagolásra használt open source alkalmazásba, az egyik fejlesztő beépített egy hátsó ajtót, amivel több millió linuxos szerverhez, klienshez szereztek volna hozzáférést.
A probléma egy, a Microsoftnál dolgozó Andres Freund nevű, szoftverfejlesztőnek tűnt fel, akinek az alkalmazás használata során feltűnt, hogy “lassan” fut le, vagyis lassabban, mint eddig, valamint túl sok erőforrást eszik ez az alkalmazás, ezért beletúrt ennek a csomagoló szoftvernek a kódjába, megtalálva a kis rejtett backdoort az XZ Utils nevű tömörítőben.
Valójában, ha ő nincs, a backdoor elterjedése hatalmas veszélyt hordozott volna magában, hisz ezzel akár kritikus infrastruktúrához is hozzá tudtak volna férni ártó szándákú illetők. De legfélelmetesebb, hogy az egész véletlenül derült ki. Ha említett fejlesztő nem ilyen intuitív, most lehet, hogy újra a középkor szintjén állunk vagy még rosszabb.
Ennek kapcsán osztanék meg egy érdekes írást, magyarra fordítva, ami a Lawfare-en jelent meg, Bruce Schneier írásában.
Hátsó ajtó az XZ Utils-ban, ami majdnem megtörtént
A múlt héten az internet megúszott egy jelentős nemzetállami támadást, amelynek katasztrofális kiberbiztonsági következményei lettek volna világszerte. Ez a katasztrófa nem következett be, így nem fog nagy figyelmet kapni – pedig kellene. A támadás és annak felfedezése fontos tanulsággal bír: A globális internet biztonsága számtalan homályos szoftveren múlik, amelyeket még homályosabb,még kevésbé fizetett, még kevésbé befolyásolható és néha sebezhető önkéntesek írnak és tartanak karban. Ez egy tarthatatlan helyzet, amelyet a rosszindulatú szereplők kihasználnak. Mégis nagyon keveset tesznek ennek orvoslására.
A programozók nem szeretnek többletmunkát végezni. Ha találnak olyan, már megírt kódot, amely azt csinálja, amit akarnak, akkor inkább azt használják, minthogy újraalkossák a funkciót. Ezeket a könyvtáraknak nevezett kódtárakat olyan oldalakon tárolják, mint a GitHub. Mindenre vannak könyvtárak: objektumok 3D-s megjelenítésére, helyesírás-ellenőrzésre, bonyolult matematikai feladatok elvégzésére, e-kereskedelmi bevásárlókosár kezelésére, fájlok mozgatására az interneten – mindenre. A könyvtárak nélkülözhetetlenek a modern programozáshoz; ezek az összetett szoftverek építőkövei. Az általuk biztosított modularitás teszi a szoftverprojekteket kezelhetővé. Minden, amit használsz, több tucat ilyen könyvtárat tartalmaz: némelyik kereskedelmi, némelyik nyílt forráskódú és szabadon hozzáférhető. Ezek nélkülözhetetlenek a kész szoftverek funkcionalitásához. És a biztonságához is.
Valószínűleg még sosem hallott az XZ Utils nevű nyílt forráskódú könyvtárról, pedig több százmillió számítógépen megtalálható. Valószínűleg az Önében is. Minden bizonnyal ott van az Ön által használt vállalati vagy szervezeti hálózatban is. Ez egy szabadon elérhető könyvtár, amely adattömörítést végez. Fontos, ugyanúgy, ahogyan több száz hasonló, homályos könyvtár is fontos.
Sok nyílt forráskódú könyvtárat, mint például az XZ Utils-t, önkéntesek tartanak fenn. Az XZ Utils esetében ez egyetlen ember, Lasse Collin. Ő vezeti az XZ Utils-t, amióta 2009-ben megírta. És, legalábbis 2022-ben, volt néhány „hosszú távú mentális egészségügyi problémája”. (Hogy tisztázzuk, ebben a történetben nem ő a hibás. Ez egy rendszerprobléma).
Legalább 2021-től kezdve Collin személyesen is célkeresztbe került. Nem tudjuk, hogy ki, de vannak fióknevek: Jia Tan, Jigar Kumar, Dennis Ens. Ezek nem valódi nevek. Nyomást gyakoroltak Collinra, hogy adja át az XZ Utils feletti irányítást. 2023 elején sikerült is nekik. Tan az évet azzal töltötte, hogy lassan beépítsen egy hátsó ajtót az XZ Utilsba: letiltotta azokat a rendszereket, amelyek felfedezhették volna a tevékenységét, lerakta az alapokat, és végül az év elején hozzáadta a teljes hátsó ajtót. Március 25-én Hans Jansen – egy másik álnév – megpróbálta rávenni a különböző Unix-rendszereket, hogy frissítsenek az XZ Utils új verziójára.
És mindenki készen is állt erre. Ez egy rutinszerű frissítés. Néhány héten belül mind a Debian, mind a Red Hat Linux része lett volna, amelyek az interneten lévő szerverek túlnyomó többségén futnak. Március 29-én azonban egy másik, nem fizetett önkéntes, Andres Freund – egy valódi személy, aki a Microsoftnál dolgozik, de szabadidejében csinálta ezt – észrevett valami furcsát abban, hogy az XZ Utils új verziója milyen sok feldolgozást végez. Ez az a fajta dolog, amit könnyen figyelmen kívül lehet hagyni. De Freund valamilyen oknál fogva lenyomozta a furcsaságot, és felfedezte a hátsó ajtót.
Ez egy mesteri munka. Az SSH távoli bejelentkezési protokollt érinti, alapvetően egy rejtett funkció hozzáadásával, amelynek engedélyezéséhez egy bizonyos kulcsra van szükség. Valaki, aki rendelkezik ezzel a kulccsal, a hátsóajtóval feltölthet és futtathat egy tetszőleges kódot a célgépen. Az SSH root felhasználóként fut, így ez a kód bármit megtehetett volna. Engedjük szabadjára a fantáziánkat.
Ez nem olyan dolog, amit egy hacker csak úgy összedob. Ez a hátsó ajtó egy több éves mérnöki munka eredménye. Az, ahogyan a kód kikerüli a forráskód felderítését, ahogyan szunnyad és észrevétlen marad, amíg nem aktiválódik, valamint a hatalmas ereje és rugalmassága alátámasztja azt a széles körben elterjedt feltételezést, hogy egy jelentős nemzetállam áll emögött.
Ha nem fedezték volna fel, valószínűleg előbb-utóbb az internet minden számítógépén és szerverén megtalálható lett volna. Bár nem világos, hogy a hátsó ajtó érintette volna-e a Windows és a macOS rendszert, Linuxon működött volna. Emlékszik még 2020-ra, amikor Oroszország hátsó ajtót ültetett a SolarWindsbe, amely 14 000 hálózatot érintett? Az soknak tűnt, de ez nagyságrendekkel nagyobb kárt okozott volna. És megint csak azért sikerült elkerülni a katasztrófát, mert egy önkéntes belebotlott. És ez egyáltalán csak azért volt lehetséges, mert az első fizetetlen önkéntest, valakit, akiről kiderült, hogy nemzetbiztonsági kockázat, egy külföldi harmadik személy vette célba és használta ki.
Így nem lehet kritikus nemzeti infrastruktúrát üzemeltetni. És mégis, itt vagyunk. Ez egy támadás volt a szoftverellátási láncunk ellen. Ez a támadás a szoftverfüggőségek aláaknázása volt. A SolarWinds támadás a frissítési folyamatot célozta meg. Más támadások a rendszertervezést, fejlesztést és telepítést célozzák. Az ilyen támadások egyre gyakoribbá és hatékonyabbá válnak, és egyre inkább a nemzetállamok által választott fegyverek is.
Lehetetlen megszámolni, hogy hány ilyen egyetlen hibapont van a számítógépes rendszereinkben. És nem lehet tudni, hogy a kritikus fontosságú szoftverkönyvtárak fizetetlen és meg nem becsült karbantartói közül hányan vannak kitéve a nyomásnak. (Ismétlem, ne hibáztassuk őket. Hibáztassuk az iparágat, amely örömmel használja ki a fizetetlen munkájukat). Vagy hogy hányan hoztak létre véletlenül kihasználható sebezhetőségeket. Hány további kényszerítési kísérlet van folyamatban? Egy tucat? Száz? Kizártnak tűnik, hogy az XZ Utils művelete egyedi eset volt.
A megoldások nehezek. A nyílt forráskód betiltása nem fog működni; éppen azért, mert az XZ Utils nyílt forráskódú, egy mérnök időben felfedezte a problémát. A szoftverkönyvtárak betiltása sem fog működni; a modern szoftverek nem működnek nélkülük. A biztonsági mérnökök évek óta szorgalmaznak valamit, amit „szoftver-anyagjegyzéknek” neveznek: egyfajta összetevőlistát, hogy ha valamelyik csomagot veszélyeztetik, a hálózat tulajdonosai legalább tudják, hogy sebezhetőek-e. Az iparág gyűlöli ezt az ötletet, és évek óta harcol ellene, de talán mostanra fordult a kocka.
Az alapvető probléma az, hogy a technológiai cégek még jobban utálnak plusz pénzt költeni, mint a programozók plusz munkát végezni. Ha van ingyenes szoftver, akkor azt fogják használni – és nem fognak sok házon belüli biztonsági tesztelést végezni. Egyszerűbb szoftverfejlesztés egyenlő alacsonyabb költségekkel egyenlő nagyobb nyereséggel. A piacgazdaság jutalmazza ezt a fajta bizonytalanságot.
Fenntartható módszerekre van szükségünk a nyílt forráskódú projektek finanszírozására, amelyek de facto kritikus infrastruktúrává válnak. A nyilvános megszégyenítés segíthet ebben. Az Open Source Security Foundation (OSSF), amelyet 2022-ben alapítottak, miután egy másik kritikus sebezhetőséget fedeztek fel egy nyílt forráskódú könyvtárban – a Log4j-ben -, ezzel a problémával foglalkozik. A nagy technológiai cégek 30 millió dolláros támogatást ígértek a Log4j kritikus ellátási lánc sebezhetőségét követően, de nem teljesítették. És még mindig örömmel veszik igénybe ezt a sok ingyenes munkaerőt és ingyenes erőforrást, ahogyan azt egy nemrégiben elhangzott Microsoft-anekdota is mutatja. Az ingyenesen elérhető könyvtárakból hasznot húzó vállalatoknak valóban fel kell lépniük, és a kormányzat erre kényszerítheti őket.
Rengeteg olyan technológia van, amelyet alkalmazni lehetne erre a problémára, ha a vállalatok hajlandóak lennének pénzt költeni rá. A kötelezettségek segítenek. A Cybersecurity and Infrastructure Security Agency (CISA) „secure by design” kezdeményezése segíteni fog, és a CISA végre együttműködik az OSSF-fel ebben a problémában. Természetesen e könyvtárak biztonságának részét kell képeznie minden széles körű kormányzati kiberbiztonsági kezdeményezésnek.
Ezúttal rendkívüli szerencsénk volt, de talán tanulhatunk a meg nem történt katasztrófából. Az elektromos hálózathoz, a kommunikációs hálózathoz és a közlekedési rendszerekhez hasonlóan a szoftverellátási lánc is kritikus infrastruktúra, a nemzetbiztonság része, és sebezhető a külföldi támadásokkal szemben. Az amerikai kormánynak fel kell ismernie, hogy ez nemzetbiztonsági probléma, és ekként kell kezelnie.