XZ:n takaoven hyökkäys

XZ Backdoor: ”Se oli lähellä”

SSH-takaportti

Pahansuopa tai vaarantunut ylläpitäjä lisäsi haitallista toimintaa kirjastoon nimeltä liblzma, joka on osa xz-pakkaustyökaluja ja -kirjastoja, mikä johtaa SSH:n takaportin syntymiseen. Tämä on edistynyt ohjelmistotoimitusketjuhyökkäys, koska kirjastoa on tarkoituksella muokattu takaporttia varten käyttäen häivytys- ja piilotustekniikoita hyökkäyksen sisällön piilottamiseksi tarkistajilta.

Se löydettiin ja paljastettiin äskettäin (29. maaliskuuta), ja hyökkäyksen käsittely on käynnissä. Se saatiin kuitenkin nopeasti hallintaan, koska se näyttää vaikuttavan vain rajoitetun joukon ympäristöjen (DEB- ja RPM-paketit, x86_64-arkkitehtuurille ja GCC:llä rakennetut) julkaisua edeltäviin versioihin. Joka tapauksessa, CVE sai CVSS-peruspisteet 10:stä, joka on varattu kriittisimmille kyberturvallisuushaavoittuvuuksille. Jos se päätyisi vakaisiin jakeluihin, vaikutus olisi valtava. 

Hyökkäyksen tekninen analyysi, mukaan lukien xz-takaovi selitettynä perusteellisesti, analysoitiin muualla. Tässä viestissä keskitytään hyökkäyksen aikajanaan, siihen, miten se voitiin havaita, miten tapaus käsiteltiin ajantasaisesti ja mitä opetuksia hyökkäyksestä voidaan oppia.

Takaoven pitkä häntä on jatkunut pitkään alkuperäisen päivityksen jälkeen. Elokuussa 2025, yli vuosi CVE-2024-3094:n paljastumisen jälkeen, Binarlyn tietoturvatutkijat löysivät takaoven edelleen kymmenestä Docker Hubissa julkaistusta Debian Docker -levykuvasta. Debianin tiimi kieltäytyi poistamasta niitä, vaan piti niitä historiallisina kehitysartefakteina eikä aktiivisena riskinä. Erikseen, OpenSSF ja OpenJS julkaisivat yhteisen varoituksen pian XZ-tapauksen jälkeen, että vastaavia sosiaalisen manipuloinnin yritysostoyrityksiä oli jo kohdistettu JavaScript-projekteihin, mikä viittaa siihen, että tässä käytettyä ylläpitäjien luottamushyökkäysmallia käytetään uudelleen muuallakin.

Miten XZ:n takaoveen ruiskutettiin

Huomautus: git-arkisto on git.tukaani.org. Kuitenkin, siellä oli myös GitHubin isännöimä arkisto (tällä hetkellä estetty), jossa GitHub-tili julkaisi muutoksia, jotka myöhemmin integroitiin Git-arkistoon.

Osa takaportista näyttää olevan vain 5.6.0- ja 5.6.1-versioiden hajautetuissa tarball-tiedostoissa, ei git-arkistojen sisällä ja perustuu johonkin yksi rivi tiedostossa build-to-host.m4 autoconfin käyttämä makrotiedosto. Toinen osa oli kahdessa oletetussa testitiedostossa bad-3-corrupt_lzma2.xz ja hyvä-suuri_pakattu.lzma

se oli commitTED GitHub-tilin “Jia Tan” toimesta (JiaT75) On xz-arkisto 23. helmikuuta. Se oli harmiton muutos, jossa lisättiin testitiedostoja (oletettavasti pakattuja .lzma- ja .xz-lohkoja). Mielenkiintoista kyllä, testit eivät käyttäneet testitiedostoja! .m4-tiedoston rivi lisää obfuskoidun komentosarjan (joka sisältyy tarballiin) suoritettavaksi konfiguroinnin lopussa, jos jotkin ehdot täyttyvät. Se muokkaa Makefile-tiedostoa liblzma kirjasto, joka sisältää koodin, joka poimii tietoja .xz-tiedostosta, joka deobfuskaation jälkeen päättyy tässä käsikirjoituksessa, kutsutaan konfigurointikomennon lopussa. Se päättää, muokataanko käännösprosessia koodin injektoimiseksi: vain GCC:ssä ja GCC-linkittimen alla, Debianissa tai rpm:ssä ja vain x86_64 Linuxissa. Kun injektoitu koodi osuu kohdalleen, se keskeyttää suorituksen korvaamalla kaksi ifunc resolverit, joten tietyt kutsut korvataan. Tämä aiheuttaa symbolitaulukoiden jäsentämisen muistissa (tämä vie aikaa, mikä johti havaitsemiseen, kuten myöhemmin selitetään).

Sitten asiat muuttuvat mielenkiintoisiksi: Takaovi asentaa audit-hookin dynaamiseen linkitykseen odottaen RSA_public_decrypt-funktiosymbolin saapumista, joka ohjataan takaisin takaovikoodin pisteeseen, joka puolestaan ​​kutsuu takaisin. libcrypto, oletettavasti normaalin todennuksen suorittamiseksi. Ja hyötykuorma aktivoituu, jos käynnissä olevalla ohjelmalla on prosessin nimi /usr/sbin/sshdOli selvää, että kohteena olivat SSH-palvelimet. Perinteisesti sshd palvelimia, kuten OpenSSH:ta, ei yhdistetty liblzma, mutta sshd on usein paikattu tukemaan systemd-notify-komentoa, jotta muut palvelut voivat käynnistyä sshd:n ollessa käynnissä. Ja sitten liblzma ladataan epäsuorasti systemd, ympyrä sulkeutuu.

Takaovea ei ole vielä täysin analysoitu, mutta siltä se näyttää. sallii etäkomentojen suorittamisen (RCE) sshd-daemonin oikeuksilla, joka toimii esitunnistusta edeltävässä kontekstissa. Etävarmenteesta saadut tiedot, kun takaovi osuu niihin, puretaan ChaCha20:lla, ja kun salaus puretaan onnistuneesti, tiedot välitetään järjestelmä()Joten tämä on pohjimmiltaan aidattu RCE, paljon pahempi kuin pelkkä julkisen avaimen ohitus. 

Myöhemmässä 5.6.1-tarball-tiedostossa esiteltiin lisäponnisteluja jälkien piilottamiseksi, symbolien nimien hämärtämiseksi ja havaittujen virheiden korjaamiseksi. jatkomekanismi jossa etsittiin lisää testitiedostoja tiettyjen takaoven lisäämistä varten tarkoitettujen allekirjoitusten varalta.

Tämä melko hienostunut hyökkäys voi jäädä huomaamatta, kunnes vakaat Linux-jakelut ovat saatavilla. Onneksi jotkut ihmiset haluavat tarkistaa, miksi poikkeavia asioita tapahtuu.  

XZ-takaovihyökkäyksen paljastuminen

Usein sisäänjuurrutettu haitallinen käyttäytyminen paljastuu sattumalta tai vahingossa. Hyvä esimerkki oli vanhenemisvaroitus ("Kuka välittää varoituksista?"), joka johti sen löytämiseen tapahtumavirtahyökkäys lokakuussa 2018. Toinen on käyttäjä, joka varoitti Codecov huhtikuussa 2021, että heidän bash-latausskriptinsä ei läpäissyt tarkistussummaa ("Kuka tarkistaa esineiden eheyden tarkistussummilla"?) SSH:n poikkeavuuksia ja outoja oireita logins (loginvie paljon prosessoritehoa ja lisää kulunutta aikaa, valgrind-virheet) herättivät uteliaisuutta Andres Freund, valpas PostgreSQL-kehittäjä, mutta ei tietoturva-analyytikko (kuten hän totesiTutkittuaan OpenSSH:ta Debian Sidissä hän päätteli, että vasteaikaongelma riippui kirjastosta, liblzma, Osa xz-utilit pakkauskirjasto. Syy: “Ylävirran xz-arkisto ja xz-tarballit on murtautunut takaportin läpi". Tämä diagnoosi oli niin tarkka!   Andres julkaisi Openwallissa ensimmäisen analyysin 29. maaliskuuta 2024: ”xz/liblzma-palvelimen ylävirran takaportti, joka johtaa ssh-palvelimen vaarantumiseen”. Tosiasia: XZ Utils 5.6.0- ja 5.6.1-tar-tiedostot sisältävät takaportin. Nämä tar-tiedostot on luotu ja allekirjoitettu edellä mainitun Jia Tan -tilin toimesta.  He julkaistu Mastodonissa myöhemmin samana päivänä tajuten, että löytö oli vahinko ja vaati paljon sattumia. Muiden käyttäjien kommentit ovat lukemisen arvoisia. GitHub-käyttäjä samat (alias Sam James) julkaisi mukavan Gistin Usein kysytyt kysymykset xz-utils-takaportista jossa hyökkäys tiivistettiin ja linkitettiin muihin perusteelliset analyysit hyökkäyksen hyötykuormasta. Nämä analyysit olivat teknisesti mehukkaita ja auttoivat meitä ymmärtämään paremmin injektiota, joka oli erittäin monimutkainen: Tämä mukava juliste Thomas Roccialta  näyttää osan JiaT75:n toiminnasta GitHub-arkistossa ja kuinka injektioskripti lisää binäärisen takaoven, havainnollistaen edelleen xz takaovi selitettynä.

Miten tapahtumaan suhtauduttiin

Andreas Freundin paljastus oli varovainen, koska hänen omien sanojensa mukaan:

"Ottaen huomioon ilmeisen ylätason osallisuuden, en ole raportoinut ylätason bugista. Koska aluksi luulin sen olevan Debian-kohtainen ongelma, lähetin alustavamman raportin osoitteeseen security@...ian.org. Myöhemmin ilmoitin ongelmasta osoitteeseen distros@." CISA sai ilmoituksen jakelusta.”

Red Hat antoi tälle haavoittuvuudelle CVE-2024-3094. Sitten tieto levisi kulovalkean tavoin. Lasse Collin, XZ:n toinen ylläpitäjä, lisäsi uusi commit lauantaina 30. maaliskuuta otsikolla ”CMake: Korjaa sabotoitu Landlock-hiekkalaatikon tarkistus”. Yksi kirjaston hiekkalaatikon Landlock-metodeista sabotoitiin, ainakin CMakella rakennettaessa. Hän paljasti ongelman viipymättä XZ Utils takaoven. Red Hat määräsi tämän tehtävän CVE-2024-3094 (katso myös kohdassa CVE, NVD, Ubuntu). Sille annettiin valtava CVSS-peruspistemäärä 10Tällaiset tulokset valloittavat aina internetin myrskyn lailla. CISA julkaisi samana 29. maaliskuuta hälytys, ehkä liian yksinkertainen asian kiireellisyyden vuoksi, suosittelemalla käyttäjille alennusta vakaaseen 5.4.6-versioon. Tukaani-organisaation GitHub-arkistot poistettiin käytöstä (onko tämä hyvä vai huono asia? Mielestäni hyvä: Monet jakelut ja organisaatiot linkittivät edelleen GitHub-julkaisuihin saadakseen tartunnan saaneita tar-tiedostoja rakentamista varten. Arkiston poistaminen käytöstä estää tämän. Arkistoista on joka tapauksessa kopio osoitteessa git.tukaani.org). Myös GitHub-tilit JiaTan75 ja Lasse Collins (Larhzu) jäädytettiin. Tämä on osa hillitseminen, vaikka se saattaisi vaikuttaa viattomiin ihmisiin. JiaT75 toiminta ei-estetyissä arkistoissa ei voida vielä nähdä. Alan toimiala reagoi nopeasti. Monet toimittajat julkaisivat sääntöjä haavoittuvien järjestelmien havaitsemiseksi, kuten Yaran säännöttai tukea kaupallisissa työkaluissa Sysdig, PANja muita. Turvallisuusasiantuntijat, kuten James Berthoty julkaisi kirjoituksensa avoimen lähdekoodin ohjelmistoihin suhtautumisemme tarkastelusta.  Olemme nyt tapahtuman hävittämis- ja toipumisvaiheessa. Muita JiaTan75:n ylläpitämiä projekteja tarkastellaan tarkasti, erityisesti libarchive/libarchive (jossa JiaTan75 oli säännöllinen avustaja) ja fuzzer oss-fuzz (missä tämä commit JiaTan75:n tekemässä yritettiin välttää oss-fuzzia, joka itse asiassa ei pystynyt havaitsemaan takaovea). Nämä salailuyritykset lisäävät todisteita. 

Kuka on hyökkäyksen kohteena?

Joko GitHub JiaT75 -tili vaarantui (muista, että GitHub määräsi äskettäin kaksivaiheisen tunnistautumisen) tai tilin fyysinen käyttäjä siirtyi pimeälle puolelle. Hyökkäyksen teknisen monimutkaisuuden vuoksi on kuitenkin vakuuttavia syitä epäillä kehittynyttä pysyvää uhkaa (APT), mahdollisesti valtion tukemaa. Kyberturvallisuusviranomaisten ja lainvalvonnan jatkotutkimukset kertovat… Tämä merkintä YCombinator Hacker -uutisissa Jia Tanista valaisee hieman "kuka"-käyttäjää ja hänen toimintaansa. Suositellaan! Se antaa paljon tietoa siitä, miten pahikset yrittävät huijata muita käyttäjiä sosiaalisen manipuloinnin avulla.

”Todella ärsyttävää - takaoven ilmeinen tekijä oli yhteydessä minuun (rwmj) useiden viikkojen ajan yrittäen saada xz 5.6.x:n lisättyä Fedora 40:een ja 41:een sen "hienojen uusien ominaisuuksien" vuoksi. Työskentelimme jopa hänen kanssaan korjataksemme valgrind-ongelman (jonka nyt kävi ilmi, että se johtui hänen lisäämästään takaovesta). Meidän piti kiirehtiä eilen illalla korjaamaan ongelma vahingossa tapahtuneen embargon rikkomisen jälkeen. Hän on ollut osa xz-projektia kaksi vuotta ja lisännyt kaikenlaisia ​​binäärisiä testitiedostoja, ja rehellisesti sanottuna tämän hienostuneisuuden tason vuoksi suhtautuisin epäillen jopa vanhempiin xz-versioihin, kunnes toisin todistetaan.”

Jia Tan ryhtyi toimiin estääkseen seurannan: Se näyttää käyttäneen VPN:ää (vpn.singapore.witopia.net) yhteyden muodostamiseen – mikä sinänsä on ihan ok. Ja monia muutoksia näyttää tukevan väliaikaiset, kertakäyttöiset sähköpostit (tässä tapauksessa ProtonMaililta), joissa kehotetaan yhdistämään muutokset.

Toimija saattaa haluta mennä vielä syvemmälle, aina Linux-ytimeen asti, osallistujana xy-upotettu projekti. Alustavassa analyysissä ei tähän mennessä löytynyt merkkejä keskenmenosta.

Huomautus: toinen Matalan profiilin XZ-avustaja ”Hans Jansen” (GitHub-käyttäjä “hansjans162”) on tarkkailun alaisenaSen tili Debianissa on nyt tukossaHän teki useita päivityksiä Debian Gamesiin piilottaakseen haluamansa debian/xz-utils-sivustolla, päivityksen upstream 5.6.1:een nopeuttaakseen takaportin jakelua debian/epävakaa

Voimme vain sanoa toistaiseksi, että kyseessä on (vielä tunnistamaton) APT, joka käyttää eri tilejä, on työskennellyt tämän kampanjan parissa ainakin kaksi vuotta ja työskentelee kärsivällisesti RCE:n istuttamiseksi SSH:hon.

Tämän kirjoitushetkellä ”Jia Tanin” henkilöllisyys on edelleen vahvistamatta. Mitään uskottavaa yhteyttä tiettyyn henkilöön, organisaatioon tai valtion toimijaan ei ole julkisesti vahvistettu, mikä vahvistaa henkilön operatiivisen kurinpidon tehokkuutta.

Oliko XZ:n takaportin hyökkäys estettävissä?

Melko vaikeaa. 

Ensinnäkin osa injektoidusta takaportista tuli pakattuihin testitiedostoihin, joita testit eivät käyttäneet. Jälkikäteen ajateltuna se saattoi aiheuttaa joitakin (kohinaisia) hälytyksiä, mutta kuka välittää tarkistaa, että kaikkia testitiedostoja käytetään oikeissa testeissä tosielämässä? Toiseksi osa injektoidusta takaportista tuli makrotiedostoina julkaisupaketin tarball-tiedostoihin, ja erojen tarkistaminen odotettuihin tarball-tiedostoihin verrattuna on vaikeaa manuaalisesti. Myös automaatio on monimutkaista, koska itse koonnin odotettua tulosta (jollekin, joka tietää, miten automake/autoconf toimii) on vaikea mallintaa sen analysoimiseksi, vastaako todellinen tarball odotuksia. Jotkut esittivät sen as "Git-puun kanssa ristiriitaiset tarball-tiedostot ovat ominaisuus, ei vika."Binääritarballien alkuperä lähdekoodistaan ​​on ratkaisematon ongelma.

Käyttäjän maine? No, JiaTan75 GitHub -tili ei tehnyt aiempien tietojen mukaan luvattomia asioita. commits. Se keskeytettiin vasta todisteiden kertymisen jälkeen, mutta 29. maaliskuuta asti se oli säännöllinen käyttäjä, joka hoiti normaalia liiketoimintaa. No, ei niin normaalia. Myöhemmin commits (tätä, tätä, tätäja tätä (joka muokkasi exploit-koodia) yritti korjata valgrind-virheitä ja kaatumisia joissakin kokoonpanoissa, jotka johtuivat eroista takaoven odottamassa pinoasettelussa. Commit Arvostelut voisivat havaita tämän, mutta kenellä on kärsivällisyyttä analysoida muutoksia binääritestaustiedostossa tai todellista motiivia GCC-attribuuttien muutoksille C-lähdekoodissa?

Pitäisikö hälyttää, kun SSH login kestää 800 ms 300 ms:n sijaan? Todennäköisesti vain ylivarovaiset ihmiset panisivat sen merkille. Cicero sanoi, "Häikähtämättömyys kuuluu nuoruuteen, varovaisuus vanhuuteen."  

IFUNC-infrastruktuurin lisäsivät kesäkuussa 2023 ”Hans Jansen” ja ”Jia Tan”. Tämä on ensimmäinen commit ifunc-tuen lisääminen crc64_fast.c-tiedostoon (käytettiin myöhemmin takaportin injektoimiseen). Kuukausia ennen kuin takaportin binäärit injektoitiin testitiedostoihin!

Huomautus: Tekijä ja commitovat tässä erilaisia, mutta tämä on normaalia: Lasse Collin on projektin ylläpitäjä, ja hän yhdisti muutokset. Hän jopa kiittää ”Hans Jansenia”…

Kukaan ei ilmaissut huolenaiheita ennen Andres Freundin viestiä ja Red Hatin luomaa CVE-hyökkäystä. Jos näet työkalujen ketjureaktion, joka havaitsee tämän, ne havaitsevat tartunnan saaneen komponentin nyt. jälkikäteen

Todennäköisesti paras ennaltaehkäisy tuli Linux-jakelujen luonteesta ja siitä, miten epävakaat ja ajan tasalla olevat versiot siirtyvät vakaisiin jakeluihin vasta tahdistetun prosessin jälkeen.

XZ:n bBackdoor-hyökkäyksestä opitut asiat

Olemme huomanneet, kuinka vaikeaa on havaita tahallinen Takaportit. Takaportteja tulisi pitää sisäisenä uhkana, koska ne on asennettu sisäisen henkilöstön toimesta tai vaarantuneiden sisäisten tilien kautta. Ja näihin kavereihin enimmäkseen luotetaan. Ja kun takaovi on asennettu hajautettuun esineeseen, sen havaitseminen vaikeutuu.

Jotkut kirjailijat, kuten Kevin Beaumont osoitti järjestelmä, mikä avaa laajan hyökkäyspinnan kolmannen osapuolen palveluille takaoville. Tätä pahantahtoinen toimija käytti hyväkseen. Systemd:llä on paljon silmäpareja, mutta XZ on hämäräperäinen kirjasto ketjun yläpäässä. "Kun ylävirta on saastunut, kaikki juovat myrkytettyä vettä alavirtaan".

Järjestelmässä oleva, asiaankuulumaton muutospyyntö kohteelle dynaamisesti latautuvat pakkauskirjastot, joka poistaisi takaoven, oli jo yhdistetty järjestelmään, mutta sitä ei ole vielä toimitettu. libsystemd:n ​​aiheuttamat ylimääräiset riippuvuudet voivat olla haavoittuvuuksien lähde, ja eilen tämä pyyntö avattiin

A kommentti kohdassa ”xz: Poista ifunc käytöstä ongelman korjaamiseksi” commit antoi terävän näkemyksen siitä, mihin tulisi keskittyä, jos haluamme estää tällaisen toiminnan (kursivointi minun):

"Yhteisönä meidän tulisi oppia enemmän turvaamisesta" software supply chain security kokonaisvaltaisesti, auditoimalla lähdekoodin lisäksi myös muita rakennusjärjestelmiä. Kuten SolarWinds-tietomurto, jossa hyökkääjät muokkasivat SolarWindsin suljetun lähdekoodin valvontaohjelmistojen ohjelmistopäivityksiä.”

Varhainen löytäminen ja nopea reagointi rajoittivat vaikutusta niin paljon. Jos muistat loppukohtaus Miehet mustissa III: ”Se oli tiukka peli”. Jälleen kerran K ei unohtanut jättää tippiä. Eikä yhtäkään boglodiittia päässyt Linuxin vakaisiin jakeluihin.
1. ”En ole tietoturvatutkija enkä takaisinmallintaja.” 2. Jia on yleinen kiinalainen etunimi. Tan on myös yleinen sukunimi, joka tarkoittaa ”loistavaa”. Monet toisillemme sukua olemattomat ihmiset jakavat tämän nimen, älkää tuomitko ketään tämän nimen perusteella!

FAQ

Onko XZ:n takaovi edelleen riski tänä päivänä?

Suurimmaksi osaksi hallinnassa, mutta ei kokonaan poissa. Elokuussa 2025 tutkijat havaitsivat takaportin edelleen useissa Debian Docker Hub -levykuvissa, joita Debian käsitteli passiivisina historiallisina artefaktteina. Tiimien tulisi varmistaa, etteivät he rakenna vanhentuneiden, korjaamattomien peruslevykuvien päälle sen sijaan, että olettaisivat vuoden 2024 korjauksen sulkeneen oven kokonaan.

sca-työkalut-ohjelmisto-koostumusanalyysityökalut
Priorisoi, korjaa ja suojaa ohjelmistoriskisi
Hanki ilmainen tili.
Luottokorttia ei vaadita.

Turvaa ohjelmistokehityksesi ja -toimituksesi

Xygeni-tuotepaketin kanssa