XZ tagaukse rünnak

XZ Backdoor: „See oli napilt“

SSH tagaukse kasutamine

Pahatahtlik või ohustatud hooldaja lisas pahatahtliku käitumise teeki nimega liblzma, mis on osa xz tihendustööriistadest ja teekidest, mille tulemuseks on SSH-s tagauks. See on täiustatud tarkvara tarneahela rünnak, kuna teeki muudeti tagaukse jaoks tahtlikult, kasutades hägustamise ja varjamistehnikaid rünnaku sisu varjamiseks arvustajate eest.

See avastati ja avalikustati hiljuti (29. märtsil) ning rünnaku käsitlemine on pooleli. See aga saadi kiiresti kontrolli alla, kuna see näib mõjutavat ainult piiratud hulga keskkondade eelväljalaskeversioone (DEB ja RPM paketid x86_64 arhitektuurile ja GCC-ga ehitatud). Igatahes CVE anti CVSS baasskoor 10-st, mis on reserveeritud kõige kriitilisemate küberturvalisuse haavatavuste jaoks. Kui see jõuaks stabiilsetesse jaotustesse, oleks mõju tohutu. 

Rünnaku tehniline analüüs, sh. xz tagauks on põhjalikult selgitatud, analüüsiti mujal. See postitus keskendub rünnaku ajajoonele, sellele, kuidas seda avastada, kuidas intsidenti ajakohasena käsitleti ja milliseid õppetunde rünnakust saab teha.

Tagaukse pikk saba on jätkunud ka pärast esialgset parandust. 2025. aasta augustis, enam kui aasta pärast CVE-2024-3094 avalikustamist, leidsid Binarly turvauurijad, et tagauks on endiselt olemas tosinas Debiani Dockeri kujutises, mis olid avaldatud Docker Hubis, kusjuures Debiani meeskond keeldus neid eemaldamast, käsitledes neid pigem ajalooliste arendusartefaktidena kui aktiivse riskina. Eraldi, OpenSSF ja OpenJS andsid vahetult pärast XZ intsidenti välja ühise hoiatuse, et sarnased sotsiaalse inseneritöö ülevõtmiskatsed on juba suunatud JavaScripti projektidele, mis viitab sellele, et siin kasutatud hooldaja usalduse rünnakumustrit kasutatakse mujal uuesti.

Kuidas XZ tagauks süstiti

Märkus: giti hoidla asub git.tukaani.org. Kuid seal oli ka GitHubi hostitud repositoorium (praegu blokeeritud), kuhu GitHubi konto postitas muudatusi, mis hiljem Giti repositooriumisse integreeriti.

Üks osa tagauksest näib olevat ainult 5.6.0 ja 5.6.1 versioonide hajutatud tarballides, mitte giti repositooriumides ja tugineb a-le üks rida failis build-to-host.m4 autoconfi poolt kasutatav makrofail. Teine osa oli kahes väidetavas testfailis bad-3-corrupt_lzma2.xz ja hea-suur_tihendatud.lzma

see oli commitTEDi GitHubi konto „Jia Tan” poolt (JiaT75) aastal xz hoidla 23. veebruaril. See oli süütu muudatus, mis lisas testfailid (väidetavalt .lzma ja .xz tihendatud plokid). Huvitaval kombel ei kasutanud testid testfaile! .m4-failis olev rida süstib hägustatud skripti (mis on kaasas tarballis), mis käivitatakse configure'i lõpus, kui teatud tingimused vastavad. See muudab Makefile'i liblzma teeki, mis sisaldab koodi, mis ekstraheerib andmeid .xz-failist ja mis pärast deobfuskatsiooni lõppu selles skriptis, käivitatakse konfigureerimise lõpus. See otsustab, kas muuta ehitusprotsessi koodi sisestamiseks: ainult GCC ja GCC linkeri all, Debiani või rpm all ja ainult x86_64 Linuxi puhul. Kui see sobib, peatab süstitud kood täitmise, asendades kaks ifunc resolverid, nii et teatud kõned asendatakse. See põhjustab sümbolitabelite parsimise mälus (see võtab aega, mis viis tuvastamiseni, nagu hiljem selgitatakse).

Siis lähevad asjad huvitavaks: tagauks paigaldab dünaamilisse linkerisse auditeerimiskonksu, oodates RSA_public_decrypt funktsiooni sümboli saabumist, mis suunatakse tagaukse koodi punkti, mis omakorda kutsub tagasi libcrypto, arvatavasti tavalise autentimise teostamiseks. Ja kasulik koormus aktiveerub, kui töötaval programmil on protsessi nimi /usr/sbin/sshdOli selge, et sihtmärgiks olid SSH-serverid. Traditsiooniliselt sSHD serverid nagu OpenSSH ei olnud ühendatud liblzma, aga sshd on sageli lapitud et toetada systemd-notify'd, et teised teenused saaksid käivituda sshd töötamise ajal. Ja seejärel laadib liblzma kaudselt systemd, ringi sulgemine.

Tagaust pole veel täielikult analüüsitud, aga tundub, et on. lubades käskude kaugkäivitamist (RCE) sshd deemoni õigustega, mis töötab eelautentimise kontekstis. Kaugsertifikaadist pärinev teave, kui see tagauksega sobib, dekrüpteeritakse ChaCha20 abil ja kui see edukalt dekrüpteeritakse, edastatakse see süsteem()Seega on see sisuliselt piiratud RCE, palju hullem kui lihtsalt avaliku võtme möödaviik. 

Hilisem 5.6.1 tarball näitas täiendavaid pingutusi jälgede peitmiseks, lisades sümbolite nimedele veelgi hägusust ja püüdes parandada täheldatud vigu. pikendusmehhanism kus otsiti täiendavaid testfaile teatud signatuuride leidmiseks tagauksele lisamiseks.

See üsna keerukas rünnak võib jääda märkamatuks enne stabiilsete Linuxi distributsioonide valmimist. Õnneks meeldib mõnele inimesele kontrollida, miks ebatavalised asjad juhtuvad.  

XZ tagaukse rünnaku avastamine

Tihti tuleb pahatahtlik käitumine ilmsiks juhuslikult või kogemata. Hea näide oli aegumise hoiatus („Keda hoiatused üldse huvitavad?“), mis viis selle avastamiseni sündmustevoo rünnak oktoobris 2018. Teine on kasutaja, kes hoiatas Codecov 2021. aasta aprillis, et nende bash-üleslaadija skript ei läbinud kontrollsummat („Kes kontrollib artefaktide terviklikkust kontrollsummade abil”?) SSH-ga seotud anomaaliad ja kummalised sümptomid logins (login(mis võtab palju protsessori koormust ja suurendab möödunud aega, valgrindi vead) äratasid uudishimu Andres Freund, valvas PostgreSQL-i arendaja, kuid mitte turvaanalüütik (nagu ta ise väitis). Pärast mõningast uurimist OpenSSH-ga Debian Sidis jõudis ta järeldusele, et reageerimisaja probleem sõltub teekist, liblzmaOsa xz-utils tihendusraamatukogu. Põhjus: „ülesvoolu xz repositoorium ja xz tarballid on tagaukse abil kaitstud". See diagnoos oli nii täpne!   29. märtsil 2024 postitas Andres Openwalli esimese analüüsi: „xz/liblzma ülesvoolu tagauks, mis viib SSH-serveri ohtu sattumiseni„Fakt: XZ Utils 5.6.0 ja 5.6.1 tarballid sisaldavad tagaust. Need tarballid lõi ja allkirjastas eelmainitud Jia Tan konto.“  He postitatud Mastodoni alla hiljem samal päeval, tunnistades, et avastus oli juhuslik ja eeldas paljusid kokkusattumusi. Teiste kasutajate kommentaare tasub lugeda. GitHubi kasutaja samad (teise nimega Sam James) avaldas kena Gisti kokkuvõtte KKK xz-utils tagaukse kohta kus rünnak kokku võeti, lingides rohkematega põhjalikud analüüsid rünnaku kasulikust koormusest. Need analüüsid olid tehniliselt mahlakad ja aitasid meil paremini mõista süsti, mis oli väga keerukas: See tore Thomas Roccia plakat  näitab osa JiaT75 aktiivsusest GitHubi repositooriumis ja seda, kuidas süstimisskript lisab binaarse tagaukse, illustreerides veelgi xz tagauks selgitatud.

Kuidas intsidendiga toime tuldi

Andreas Freundi avalikustamine oli ettevaatlik, sest tema enda sõnadega:

„Arvestades ilmset ülesvoolu seotust, ei ole ma ülesvoolu veast teatanud. Kuna algselt arvasin, et see on Debiani-spetsiifiline probleem, saatsin esialgsema teate aadressile security@...ian.org. Seejärel teatasin probleemist aadressile distros@.“ CISA-le teatati jaotusest.

Red Hat määras sellele probleemile koodi CVE-2024-3094. Seejärel levis see info kulutulena. Lasse Collin, XZ teine ​​hooldaja, lisas a uus commit laupäeval, 30. märtsil pealkirjaga „CMake: saboteeritud Landlocki liivakasti kontrolli parandamine“. Üks teeki liivakasti abil toimivatest Landlocki meetoditest saboteeriti, vähemalt CMake'iga ehitamisel. Ta avalikustas probleemi koheselt XZ Utilsi tagauks. Red Hat määras selle probleemi CVE-2024-3094 (vt ka jaotises CVE, NDV, Ubuntu). Sellele määrati tohutu CVSS baasskoor 10Sellised hinded vallutavad interneti alati tormiliselt. CISSamal 29. märtsil avaldas A hoiatada, võib-olla kiireloomulisuse tõttu liiga lihtsustatud, soovitades kasutajatel minna tagasi stabiilsele versioonile 5.4.6. Tukaani organisatsiooni GitHubi repositooriumid keelati (kas see on hea või halb? Minu arvates hea: paljud distributsioonid ja organisatsioonid linkisid endiselt GitHubi väljaannetele, et hankida nakatunud tarballe ehitamiseks. Repositooriumi keelamine seda takistab. Repositooriumi koopia on igal juhul olemas aadressil git.tukaani.org). Samuti peatati GitHubi kontod JiaTan75 ja Lasse Collinsi (Larhzu). See on osa sellest. isoleerimine, isegi kui see võib mõjutada süütuid inimesi. JiaT75 tegevus puueteta hoidlates veel näha ei saa. Tööstusharu reageeris kiiresti. Paljud müüjad avaldasid haavatavate süsteemide tuvastamise reeglid, näiteks Yara reeglidvõi tuge kommertstööriistade osas Sysdig, PANja teised. Turvaspetsialistid nagu James Berthoty postitas avatud lähtekoodiga tarkvarale lähenemise ülevaatamise kohta.  Praegu oleme intsidendi likvideerimise ja taastamise faasis. Teised JiaTan75 hallatavad projektid on tähelepaneliku ülevaatuse all, eelkõige libarchive/libarchive (kus JiaTan75 oli regulaarne kaastööline) ja fuzzer oss-fuzz (kus see commit JiaTan75 tehtud töö püüdis vältida oss-fuzz'i, mis tegelikult ei suutnud tagaust tuvastada). Need varjamiskatsed lisavad täiendavaid tõendeid. 

Kes on rünnaku all?

Kas GitHub JiaT75 konto sattus ohtu (pidage meeles, et GitHub kehtestas hiljuti kahefaktorilise autentimise) või läks konto füüsiline kasutaja pimedale poolele. Kuid rünnaku tehnilise keerukuse tõttu on kaalukaid põhjuseid arvata, et tegemist on edasijõudnud püsiva ohuga (APT), mis võib olla riiklikult toetatud. Küberturvalisuse asutuste ja õiguskaitseorganite edasine uurimine näitab ... See kirje YCombinatori häkkerite uudistes Jia Tani kohta heidab valgust sellele, kes see oli ja millise tegevusega tegu on. Soovitatav! See annab palju teavet selle kohta, kuidas pahad üritavad teisi kasutajaid sotsiaalse manipuleerimise abil petta.

„Väga tüütu – tagaukse ilmne autor suhtles minuga (rwmj) mitu nädalat, püüdes xz 5.6.x Fedora 40 ja 41-le lisada selle „suurepäraste uute funktsioonide” tõttu. Tegime temaga isegi koostööd valgrindi probleemi lahendamiseks (mis nüüd selgus, et oli põhjustatud tema lisatud tagauksest). Pidime eile õhtul kiirustama, et probleem lahendada pärast embargo tahtmatut rikkumist. Ta on xz projektis osalenud kaks aastat, lisades igasuguseid binaartestifaile, ja ausalt öeldes suhtuksin selle keerukusastmega isegi vanematesse xz versioonidesse kahtlustavalt, kuni pole tõestatud vastupidist.“

Jia Tan võttis jälgimise vältimiseks meetmeid: tundub, et ühenduse loomiseks kasutati VPN-i (vpn.singapore.witopia.net) – mis iseenesest on okei. Ja paljusid muudatusi näivad toetavat ajutised, ühekordselt kasutatavad meilid (antud juhul ProtonMaililt), mis kutsuvad üles muudatusi ühendama.

Tegelane võib kavatseda minna veelgi sügavamale, kuni Linuxi kernelini, kui kaastööline xy-kujuliselt manustatud projekt. Esialgne analüüs ei leidnud tänase seisuga mingeid tõendeid raseduse katkemise kohta.

Märkus: veel üks Madala profiiliga XZ kaastööline „Hans Jansen“ (GitHubi kasutaja „hansjans162”) on kontrolli allaSelle konto Debianis on nüüd blokeeritudTa tegi Debian Gamesile palju uuendusi, et varjata seda, mida ta debian/xz-utilsis tahtis, uuenduse Upstream 5.6.1-le, et kiirendada tagaukse levitamist debian/ebastabiilne

Praegu saame vaid öelda, et tegemist on (veel tuvastamata) APT-ga, kes kasutab erinevaid kontosid, on selle kampaania kallal töötanud vähemalt kaks aastat ja kannatlikult SSH-sse RCE implanteerimise nimel töötanud.

Selle kirjutamise seisuga on „Jia Tani” taga peituv identiteet endiselt kinnitamata. Avalikult pole usaldusväärset seost konkreetse isiku, organisatsiooni või riikliku tegelasega kinnitatud, mis kinnitab veelgi, kui tõhus oli selle isiku operatiivne distsipliin.

Kas XZ tagaukse rünnakut oli võimalik ära hoida?

Pigem keeruline. 

Esiteks jõudis osa süstitud tagauksest tihendatud testfailidesse, mida testid ei kasutanud. Tagantjärele võis see tekitada mõningaid (mürarikkaid) alarme, aga keda huvitab kontrollida, kas kõiki testfaile kasutatakse pärismaailma testides? Teiseks jõudis osa süstitud tagauksest makrofailidena väljalaske tarballidesse ja on keeruline käsitsi kontrollida erinevusi oodatavatest tarballidest. Ka automatiseerimine on keeruline, kuna ehituse enda oodatavat tulemust (kõigile, kes teavad, kuidas automake/autoconf töötab) on raske modelleerida, et analüüsida, kas tegelik tarball vastab ootustele. Mõned esitasid selle as „Git-puust mittevastavad tar-failid on funktsioon, mitte viga.“Binaarsete tarballide päritolu lähtekoodist on lahendamata probleem.

Kasutaja maine? Noh, JiaTan75 GitHubi konto ei teinud varasemate andmete kohaselt pettusi. commits. See peatati alles pärast tõendite kogunemist, kuid kuni 29. märtsini oli see tavakasutaja, kes tegeles tavapärase äritegevusega. Noh, mitte nii tavaline. Hiljem commits (see, see, seeja see (mis kohandas ärakasutamise koodi) püüdis parandada valgrindi vigu ja krahhe mõnes konfiguratsioonis, mis olid tingitud erinevustest tagaukse oodatavast pinu paigutusest. Commit arvustused võiksid seda tuvastada, aga kellel on kannatust analüüsida binaartestfaili muudatusi või C lähtekoodi GCC atribuutide muutmise tegelikku motivatsiooni?

Kas SSH korral peaks alarmi andma? login võtab 300 ms asemel 800 ms? Tõenäoliselt paneksid seda tähele ainult üliettevaatlikud inimesed. Cicero ütles, "Noorusele kuulub tormakus, vanaduspõlvele ettevaatlikkus."  

IFUNCi taristu lisasid 2023. aasta juunis „Hans Jansen” ja „Jia Tan”. See on esimene commit ifunci toe lisamine crc64_fast.c faili (hiljem kasutati seda tagaukse süstimiseks). Kuude kaupa enne tagaukse binaarfailide süstimist testfailidesse!

Märkus: Autor ja commitSiin on erinevusi, aga see on normaalne: projekti hooldaja on Lasse Collin ja tema liitis muudatused. Ta tänab isegi „Hans Jansenit” ...

Enne Andres Freundi postitust ja RedHati loodud CVE-d ei väljendanud keegi muret. Kui näete tööriistade kaskaadi, mis seda tabaksid, siis nad tuvastavad mõjutatud komponendi nüüd. tagantjärele

Tõenäoliselt tulenes parim ennetus Linuxi distributsioonide olemusest ja sellest, kuidas ebastabiilsed ja tipptasemel versioonid liiguvad stabiilsetesse distributsioonidesse alles pärast teatud tempoga protsessi.

XZ bBackdoor Attackist saadud õppetunnid

Oleme märganud, kui raske on seda tuvastada tahtlik Tagauksed. Tagauksi tuleks pidada sisemiseks ohuks, kuna need paigaldavad sisetöötajad või need paigaldatakse ohustatud sisekontode kaudu. Ja neid tüüpe enamasti usaldatakse. Ja kui tagauks on hajutatud artefakti sisse paigutatud, on seda raskem tuvastada.

Mõned autorid, näiteks Kevin Beaumont osutas süsteem, mis avab tagauksele suure rünnakupinna kolmandate osapoolte teenustele. Seda pahatahtlik tegija siin kuritarvitaski. Systemd-l on palju silmapaare, aga XZ on ahelas ülespoole tundmatu teek. „Kui ülesvool on saastunud, joovad kõik allavoolu mürgitatud vett“.

Süsteemis olev mitteseotud muutmistaotlus dünaamiliselt laadivad tihendusteegid, mis eemaldaks tagaukse, oli juba süsteemiga liidetud, kuid seda polnud veel tarnitud. Libsystemd poolt tekitatud lisasõltuvused võivad olla haavatavuste allikaksja eile see päring avati

A kommentaar jaotises „xz: probleemi lahendamiseks keelake ifunc” commit andis terava ülevaate sellest, millele sellise tegevuse ennetamiseks keskenduda (rõhutus on minu):

„Õppetund, mida peaksime kogukonnana õppima, on pigem turvalisuse tagamine software supply chain security terviklikult, auditeerides ehitussüsteeme lisaks lähtekoodile. Nagu SolarWindsi rikkumine, kus ründajad muutsid SolarWindsi suletud lähtekoodiga jälgimistarkvara pakkumise tarkvaravärskendusi.

Varajane avastamine ja kiire reageerimine piirasid mõju nii palju. Kui mäletate lõpustseen alates Men in Black III: „See oli napilt.“ Taas kord ei unustanud K jootraha jätta. Ja ükski boglodiidist Linuxi stabiilsetesse distributsioonidesse ei pääsenud.
1. „Ma *ei ole* turvauurija ega pöördprojekteerija.“ 2. Jia on levinud hiina eesnimi. Tan on ka levinud perekonnanimi, mis tähendab „suurepärane“. Seda nime kannavad paljud omavahel mitteseotud inimesed, palun ärge mõistke kedagi selle nime järgi hukka!

KKK

Kas XZ tagauks on tänapäeval endiselt ohtlik?

Enamasti kontrollitud, aga mitte täielikult kadunud. 2025. aasta augustis leidsid teadlased tagaukse endiselt mitmetes Debiani Docker Hubi kujundites, mida Debian käsitles mitteaktiivsete ajalooliste artefaktidena. Meeskonnad peaksid kontrollima, et nad ei ehita aegunud, parandamata baaskujutistele, selle asemel et eeldada, et 2024. aasta parandus sulges ukse täielikult.

sca-tööriistad-tarkvara-kompositsiooni-analüüsi-tööriistad
Tarkvarariskide prioriseerimine, leevendamine ja turvamine
Hankige oma tasuta konto.
Krediitkaarti pole vaja.

Turvaline tarkvaraarendus ja -tarne

Xygeni tootekomplektiga