XZ Backdoor Hücumu

XZ Backdoor: “Bu, çox çətin bir şey idi”

SSH-nin arxa qapısı

Zərərli və ya təhlükəyə məruz qalan bir saxlayıcı adlı kitabxanaya zərərli davranış daxil etdi liblzma, xz sıxılma alətləri və kitabxanalarının bir hissəsidir və SSH-də arxa qapıya səbəb olur. Bu, inkişaf etmiş bir proqram təminatı təchizatı zənciri hücumudur, çünki kitabxana qəsdən arxa qapı üçün dəyişdirilmişdir, hücum yükünü rəyçilərdən gizlətmək üçün qarışıqlıq və gizli üsullarla.

Bu yaxınlarda (29 mart tarixində) aşkar edilib və açıqlanıb və hücumların idarə olunması davam edir. Lakin, məhdud mühit dəstinin (x86_64 arxitekturası üçün DEB və RPM paketləri və GCC ilə qurulmuş) yalnız buraxılışdan əvvəlki versiyalarına təsir etdiyi üçün tez bir zamanda qarşısını almaq mümkün oldu. Hər halda, CVE verildi CVSS baza balı 10-dan ən vacib kibertəhlükəsizlik zəiflikləri üçün ayrılmışdır. Əgər sabit paylanmalara daxil olarsa, təsir çox böyük olardı. 

Hücumun texniki təhlili, o cümlədən xz arxa qapı ətraflı izah edildi, başqa yerdə təhlil edilib. Bu yazı hücumun zaman xəttinə, necə aşkarlana biləcəyinə, hadisənin bu günə qədər necə həll edildiyinə və hücumdan hansı dərslərin çıxarıla biləcəyinə diqqət yetirəcək.

Arxa qapının uzun quyruğu ilkin yamaqdan xeyli sonra da davam etdi. 2025-ci ilin avqust ayında, CVE-2024-3094 açıqlanmasından bir ildən çox sonra, Binarly-dəki təhlükəsizlik tədqiqatçıları Docker Hub-da dərc edilmiş onlarla Debian Docker görüntüsündə arxa qapının hələ də mövcud olduğunu aşkar etdilər və Debian komandası onları aktiv risk deyil, tarixi inkişaf artefaktları kimi qəbul edərək silməkdən imtina etdi. Ayrı-ayrılıqda, OpenSSF və OpenJS XZ hadisəsindən qısa müddət sonra oxşar sosial mühəndislik ələ keçirmə cəhdlərinin artıq JavaScript layihələrini hədəf aldığı barədə birgə xəbərdarlıq etdi və bu da burada istifadə edilən texniki xidmətçi-etibar hücum modelinin başqa yerdə yenidən istifadə edildiyini göstərir.

XZ arxa qapısı necə vuruldu

Qeyd: git deposu içindədir git.tukaani.org. Lakin, orada da bir var idi GitHub-da yerləşdirilən repozitoriya (hazırda bloklanıb) GitHub hesabının sonradan Git depolarına inteqrasiya edilən dəyişiklikləri yerləşdirdiyi yerdə.

Arxa qapının bir hissəsi yalnız 5.6.0 və 5.6.1 versiyaları üçün paylanmış tarballlarda görünür, git depolarında deyil və a-ya əsaslanır build-to-host.m4 faylında tək sətir autoconf tərəfindən istifadə edilən makro fayl. Digər hissə iki ehtimal olunan test faylında idi pis-3-korrupsiyalı_lzma2.xzyaxşı-böyük_sıxılmış.lzma

bu idi commitTed GitHub hesabı “Jia Tan” tərəfindən (JiaT75) içində xz deposu 23 fevralda test fayllarının (guya .lzma və .xz sıxılmış blokları) əlavə edilməsi zərərsiz bir dəyişiklik idi. Maraqlıdır ki, test faylları testlər tərəfindən istifadə edilmədi! .m4 faylındakı sətir, bəzi şərtlər uyğun gələrsə, konfiqurasiyanın sonunda icra ediləcək qarışıq bir skript (tarballa daxil edilmişdir) daxil edir. Makefile-ı dəyişdirir liblzma deobfuscation-dan sonra bitən .xz faylından məlumatları çıxaran kodu ehtiva edən kitabxana bu skriptdə, konfiqurasiya sonunda çağırılır. Kod daxil etmək üçün qurma prosesinin dəyişdirilib-dəyişdirilməməsinə qərar verir: yalnız GCC və GCC linker altında, Debian və ya rpm altında və yalnız x86_64 Linux üçün. Uyğunlaşdıqda, daxil edilmiş kod ikisini əvəz etməklə icraya mane olur ifunc müəyyən çağırışlar dəyişdirilir, beləliklə müəyyən çağırışlar dəyişdirilir. Bu, simvol cədvəllərinin yaddaşda təhlil edilməsinə səbəb olur (bu, daha sonra izah edildiyi kimi, aşkarlanmaya səbəb olan vaxt aparır).

Sonra hər şey maraqlı olur: Arxa qapı dinamik linkerə audit hook quraşdırır və RSA_public_decrypt funksiya simvolunun gəlməsini gözləyir, bu simvol arxa qapı kodunun bir nöqtəsinə yönləndirilir və bu da öz növbəsində geri çağırır. libcrypto, ehtimal ki, normal identifikasiyanı yerinə yetirmək üçün. Və işləyən proqramın proses adı varsa, faydalı yük aktivləşir /usr/sbin/sshdSSH serverlərinin hədəf olduğu aydın idi. Ənənəvi olaraq, ssh OpenSSH kimi serverlər əlaqələndirilməyib liblzma, lakin sshd tez-tez yamaqlanır sshd işləyərkən digər xidmətlərin işə düşə bilməsi üçün systemd-notify-i dəstəkləmək. Və sonra liblzma dolayı yolla yüklənir systemd, dairəni bağlayır.

Arxa qapı hələ tam təhlil edilməyib, amma görünür ki, uzaqdan əmr icrasına imkan verir (RCE) sshd daemonunun imtiyazları ilə, əvvəlcədən identifikasiya kontekstində işləyir. Uzaqdan verilən sertifikatdan gələn məlumat, arxa qapı tərəfindən uyğunlaşdırıldıqda, ChaCha20 ilə deşifrə olunur və uğurla deşifrə edildikdə ötürülür sistem()Beləliklə, bu, mahiyyət etibarilə qapalı bir RCE-dir, sadəcə açıq açar keçidindən daha pisdir. 

Daha sonrakı 5.6.1 versiyasında izləri gizlətmək üçün əlavə səylər göstərildi, simvol adları üçün daha da qarışıqlıq yaratdı və görülən səhvləri düzəltməyə çalışdı. uzadılması mexanizmi Arxa qapıya əlavə ediləcək müəyyən imzaların axtarıldığı əlavə test faylları da yerləşdirildi.

Bu kifayət qədər mürəkkəb hücum sabit Linux distributivləri əldə edilənə qədər diqqətdən kənarda qala bilər. Xoşbəxtlikdən, bəzi insanlar qeyri-adi şeylərin niyə baş verdiyini yoxlamağı sevirlər.  

XZ Backdoor Hücumunun Kəşfi

Çox vaxt zərərli davranış təsadüfən və ya təsadüfən aşkar edilir. Yaxşı bir nümunə a idi köhnəlmə xəbərdarlığı (“Xəbərdarlıqlar kimin vecinədir?”) kəşfinə səbəb oldu hadisə axını hücumu 2018-ci ilin oktyabr ayında. Digəri xəbərdarlıq edən istifadəçidir Codecov 2021-ci ilin aprel ayında onların bash yükləyici skriptinin yoxlama cəmini keçməməsi ("Artefaktların bütövlüyünü yoxlama cəmi ilə kim yoxlayır?") SSH ilə anomaliyalar və qəribə simptomlar logins (loginçoxlu CPU alır və keçən vaxtın artması, valgrind səhvləri) maraq oyandırdı Andres Freund, ayıq-sayıq PostgreSQL geliştiricisi, lakin təhlükəsizlik analitiki deyil (dediyi kimi)). Debian Sid üzərində OpenSSH ilə bir sıra araşdırmalardan sonra o, cavab müddəti probleminin kitabxanadan asılı olduğu qənaətinə gəldi, liblzma, Bir hissəsi xz-util sıxılma kitabxanası. Səbəb: “yuxarı axın xz anbarı və xz tartopları arxa qapıdan bağlanıb"Bu diaqnostika çox dəqiq idi!   29 mart 2024-cü ildə Andres Openwall-da ilk təhlilini paylaşdı: “xz/liblzma-nın yuxarı axınındakı arxa qapı ssh serverinin iflasına səbəb olur"Fakt: XZ Utils 5.6.0 və 5.6.1 tarballs-da arxa qapı var. Bu tarballs yuxarıda qeyd olunan Jia Tan hesabı tərəfindən yaradılıb və imzalanıb.  He Mastodon kateqoriyasında yerləşdirilib həmin günün sonunda kəşfin təsadüfi olduğunu və bir çox təsadüf tələb etdiyini anladılar. Digər istifadəçilərin şərhlərini oxumağa dəyər. GitHub istifadəçisi thesamesam (aka Sam James) gözəl bir Gist dərc etdi xz-utils arxa qapısı ilə bağlı tez-tez verilən suallar hücumun ümumiləşdirildiyi və daha çox şeylə əlaqəli olduğu yer dərin təhlillər hücum yükünün. Bu təhlillər texniki cəhətdən maraqlı idi və çox ətraflı şəkildə hazırlanmış inyeksiyanı daha yaxşı başa düşməyimizə kömək etdi: Bu gözəl Tomas Rokçianın posteri  GitHub deposunda JiaT75 fəaliyyətinin bir hissəsini və inyeksiya skriptinin ikili arxa qapını necə daxil etdiyini göstərir və daha da təsvir edir. xz arxa qapı izah edildi.

Hadisə necə həll edildi

Andreas Freundun açıqlaması ehtiyatlı idi, çünki öz sözləri ilə desək:

“Açıq-aşkar yuxarı axınla əlaqəli olduğu nəzərə alınmaqla, yuxarı axınla bağlı bir səhv bildirməmişəm. Əvvəlcə bunun Debian-a xas bir problem olduğunu düşündüyüm üçün security@...ian.org ünvanına daha ilkin hesabat göndərdim. Daha sonra problemi distros@ ünvanına bildirdim.” CISA-ya paylayıcı şirkət tərəfindən məlumat verildi.

Red Hat bu məsələyə CVE-2024-3094 təyin etdi. Sonra bu xəbər vəhşi alov kimi yayıldı. XZ-nin digər texniki xidmətçisi Lasse Collin əlavə etdi yeni commit 30 Mart Şənbə günü “CMake: Sabotaj edilmiş Landlock sandbox yoxlamasını düzəlt” başlığı ilə dərc olunmuş məqalədə, ən azı CMake ilə qurularkən kitabxananın sandbox quru kilidləmə üsullarından biri sabotaja məruz qalıb. O, problemi dərhal açıqladı. XZ Utils arxa qapısı. Red Hat bu məsələni təyin etdi CVE-2024-3094 (həmçinin baxın CVE, NVD, Ubuntu). Ona böyük bir tapşırıq verildi CVSS Baza Balı 10Bu cür nəticələr həmişə interneti larzaya salır. CISEyni 29 martda A bir açıqlama verdi zirək, təcililik səbəbindən bəlkə də çox sadədir, istifadəçilərə 5.4.6 stabil versiyasına keçmələri tövsiyə olunur. Tukaani təşkilatının nəzdindəki GitHub depoları deaktiv edildi (bu yaxşıdır, yoxsa pis? Məncə yaxşı: Bir çox distro və təşkilat hələ də yoluxmuş tarballları qurmaq üçün GitHub buraxılışlarına keçid verirdi. Reponun deaktiv edilməsi bunun qarşısını alır. Hər halda, bir nüsxə və ya repos var git.tukaani.org). JiaTan75 və Lasse Collins' (Larhzu) GitHub hesabları da dayandırılıb. Bu, bir hissəsidir saxlama, hətta günahsız insanlara təsir edə bilsə belə. JiaT75 qeyri-aktiv depolardakı fəaliyyət hələlik görmək mümkün deyil. Sənaye dərhal reaksiya verdi. Bir çox satıcı həssas sistemləri aşkar etmək üçün qaydalar dərc etdi, məsələn Yara qaydalarıvə ya kommersiya alətlərində dəstək Sysdig, PANvə başqaları. Təhlükəsizlik mütəxəssisləri kimi Ceyms Bertoti açıq mənbəli proqram təminatına necə yanaşdığımızı nəzərdən keçirdiyimiz barədə paylaşım etdi.  Hazırda hadisənin Aradan Qaldırılması və Bərpası mərhələsindəyik. JiaTan75 tərəfindən dəstəklənən digər layihələr, xüsusən də libarchive/libarchive (JiaTan75-in müntəzəm töhfə verdiyi yerdə) və fuzzer oss-fuzz (burada bu commit JiaTan75 tərəfindən hazırlanmış, əslində oss-fuzz-dan qaçmağa çalışdı arxa qapını aşkar edə bilmədiBu gizlətmə cəhdləri əlavə dəlillər gətirir. 

Hücum altında kim var?

Ya GitHub JiaT75 hesabı təhlükəyə atılıb (unutmayın ki, GitHub bu yaxınlarda 2FA tələb edib), ya da hesaba borclu olan fiziki istifadəçi qaranlıq tərəfə keçib. Lakin hücumun texniki mürəkkəbliyi səbəbindən, bəlkə də dövlət tərəfindən dəstəklənən inkişaf etmiş davamlı təhdid (APT) haqqında düşünmək üçün tutarlı səbəblər var. Kibertəhlükəsizlik agentlikləri və hüquq-mühafizə orqanları tərəfindən aparılan əlavə araşdırma bunu göstərəcək... Bu giriş YCombinator Hacker News-da Jia Tan haqqında "kim" və onun fəaliyyətinə bir az işıq salır. Tövsiyə olunur! Sosial mühəndislikdən istifadə edərək pis adamların digər istifadəçiləri necə aldatmağa çalışdıqları haqqında çox məlumat verir.

“Çox əsəbidir - arxa qapının müəllifi bir neçə həftə ərzində mənimlə (rwmj) əlaqə saxlayıb xz 5.6.x-i Fedora 40 və 41-ə “əla yeni funksiyalar” səbəbindən əlavə etməyə çalışıb. Hətta valgrind problemini həll etmək üçün onunla birlikdə çalışdıq (indi məlum olur ki, bu, onun əlavə etdiyi arxa qapıdan qaynaqlanıb). Embarqonun təsadüfən pozulmasından sonra dünən gecə problemi həll etmək üçün yarışmalı olduq. O, 2 ildir ki, xz layihəsinin bir hissəsidir, hər cür ikili test faylları əlavə edir və dürüst olmaq lazımdırsa, bu səviyyədəki mürəkkəbliyə baxmayaraq, əksi sübut olunana qədər xz-in daha köhnə versiyalarına şübhə ilə yanaşardım.”

Jia Tan izlənilməməsi üçün tədbirlər gördü: Görünür, qoşulmaq üçün VPN-dən (vpn.singapore.witopia.net) istifadə edib - bu, özlüyündə normaldır. Və bir çox dəyişikliklər dəyişiklikləri birləşdirməyə çağıran müvəqqəti, birdəfəlik e-poçtlarla (bu halda ProtonMail-dən) dəstəklənir.

Aktyor, töhfə verən şəxs kimi Linux nüvəsinə qədər daha dərinə getmək niyyətində ola bilər xy-əlavə edilmiş layihə. İlkin analiz bu günə qədər düşük əlaməti tapmadı.

Qeyd: başqa XZ-də aşağı profilli töhfə verən “Hans Jansen” (GitHub istifadəçisi “hansjans162”) yoxlama altındaOnun debian-dakı hesabı artıq bağlanacaqO, debian/xz-utils-də istədiyini gizlətmək üçün Debian Games-də bir çox yeniləmə, arxa qapının paylanmasını sürətləndirmək üçün upstream 5.6.1-ə yeniləmə etdi. debian/qeyri-sabit

Hələlik deyə biləcəyimiz tək şey odur ki, bu, fərqli hesablardan istifadə edən, bu kampaniya üzərində ən azı iki il çalışan və SSH-də RCE yerləşdirmək üçün səbirlə çalışan (hələlik müəyyən edilməmiş) bir APT-dir.

Bu yazı yazıldığı vaxta qədər “Jia Tan”ın kimliyi təsdiqlənməyib. Müəyyən bir şəxsə, təşkilata və ya dövlət qurumuna aid heç bir etibarlı mənsubiyyət ictimaiyyət tərəfindən təsdiqlənməyib ki, bu da personanın əməliyyat intizamının nə qədər təsirli olduğunu təsdiqləyir.

XZ-nin arxa qapı hücumunun qarşısı alına bilərdimi?

Olduqca çətindir. 

Birincisi, yeridilən arxa qapının bir hissəsi testlər tərəfindən istifadə olunmayan sıxılmış test fayllarına daxil oldu. Retrospektiv olaraq, bu, bəzi (səs-küylü) həyəcan siqnalları yarada bilər, bəs bütün test fayllarının real dünyada faktiki testlər tərəfindən istifadə edildiyini yoxlamaq kimin vecinədir? İkincisi, yeridilən arxa qapının bir hissəsi buraxılış tartoplarına makro fayllar şəklində daxil oldu və gözlənilən tartoplarla fərqləri əl ilə yoxlamaq çətindir. Avtomatlaşdırma da mürəkkəbdir, çünki quruluşun özündən gözlənilən nəticəni (automake/autoconf-un necə işlədiyini bilən hər kəs üçün) əsl tartopun gözləntilərə uyğun olub-olmadığını təhlil etmək üçün modelləşdirmək çətindir. Bəziləri bunu ortaya qoydu as “Git ağacından uyğunsuzluq yaradan tartoplar bir xüsusiyyətdir, səhv deyil”İkili tarballların mənbə kodundan mənşəyi həll olunmamış bir problemdir.

İstifadəçi nüfuzu? Yaxşı, JiaTan75 GitHub hesabı keçmişə görə saxtakarlıq etmirdi. commits. Yalnız dəlillər toplandıqdan sonra dayandırıldı, lakin 29 mart tarixinə qədər normal iş görən adi istifadəçi idi. Yaxşı, o qədər də normal deyildi. Sonradan commits (bu, bu, bubu istismar kodunu tənzimləyən) bəzi konfiqurasiyada valgrind səhvlərini və qəzalarını düzəltməyə çalışdı, bu da arxa qapı tərəfindən gözlənilən yığın düzülüşü ilə fərqlərə görə baş verdi. Commit Rəylər bunu aşkar edə bilər, bəs ikili test faylındakı dəyişiklikləri və ya C mənbə kodunda GCC atributlarındakı dəyişikliyin əsl motivasiyasını təhlil etməyə kimin səbri çatar?

SSH zamanı həyəcan siqnalları işə salınmalıdırmı? login 300 ms əvəzinə 800 ms çəkir? Yəqin ki, yalnız həddindən artıq ehtiyatlı insanlar buna diqqət yetirərdilər. Siseron demişdi ki, "Tələskənlik gəncliyə, ehtiyatlılıq isə qocalığa aiddir."  

IFunc infrastrukturu 2023-cü ilin iyun ayında “Hans Jansen” və “Jia Tan” tərəfindən əlavə edilmişdir. Bu, ilkdir commit crc64_fast.c faylına ifunc dəstəyinin əlavə edilməsi (daha sonra arxa qapını yerləşdirmək üçün istifadə olunurdu). Test fayllarına arxa qapı binarlarını yerləşdirməzdən aylar əvvəl!

Qeyd: Müəllif və commitBurada fərq var, amma bu normaldır: Lasse Collin layihənin dəstəkləyicisidir və o, dəyişiklikləri birləşdirib. Hətta "Hans Jansen"ə təşəkkür edir...

Andres Freundun paylaşımından və RedHat tərəfindən yaradılan CVE-dən əvvəl heç kim narahatlıq bildirməmişdi. Bunu aşkarlayan alətlər kaskadı görsəniz, təsirlənmiş komponenti indi aşkar edirlər, ex post-fakto

Yəqin ki, ən yaxşı qarşısının alınması Linux distributivlərinin təbiətindən və qeyri-sabit, köhnəlmiş versiyaların yalnız templi bir prosesdən sonra sabit distributivlərə necə keçməsindən irəli gəlirdi.

XZ bBackdoor Hücumundan Əldə Edilən Dərslər

aşkar etməyin nə qədər çətin olduğunu qeyd etdik qəsdən Arxa qapılar. Arxa qapılar daxili təhdid hesab edilməlidir, çünki onlar daxili işçilər tərəfindən və ya pozulmuş daxili hesablar vasitəsilə yerləşdirilir. Və bu adamlara əsasən etibar edilir. Arxa qapı paylanmış artefakta yerləşdirildikdə, onu aşkar etmək çətinləşir.

Kevin Beaumont kimi bəzi müəlliflər işarə etdi sistem, üçüncü tərəf xidmətlərinin böyük bir hücum səthini arxa qapıya açır. Pis aktyor burada məhz bundan sui-istifadə edib. Systemd-in çoxlu göz bəbəyi var, lakin XZ zəncirdə qaranlıq bir kitabxanadır. "Yuxarı axın çirkləndikdə, hamı aşağı axında zəhərli su içir".

Sistemdə əlaqəsiz bir dəyişiklik tələbi sıxılma kitabxanalarını dinamik şəkildə yükləyirArxa qapını çıxaracaq olan , artıq sistemə birləşdirilmişdi, lakin hələ çatdırılmamışdır. libsystemd tərəfindən təqdim edilən əlavə asılılıqlar zəifliklərin mənbəyi ola bilər.və dünən bu sorğu açıldı

A Şərhlər "xz: Problemi həll etmək üçün ifunc-u deaktiv edin" bölməsində commit bu cür fəaliyyətin qarşısını almaq istəyiriksə, diqqəti hara yönəltməli olduğumuz barədə dəqiq bir fikir verdi (vurğu mənimdir):

"Bir icma olaraq öyrənməli olduğumuz dərs daha çox təhlükəsizliyi təmin etməkdir" software supply chain security hərtərəfli olaraq, yalnız mənbə kodundan kənarda qurma sistemlərinin auditi. Məsələn, hücum edənlərin SolarWinds qapalı mənbəli monitorinq proqram təminatı təklif edən proqram təminatı yeniləmələrini dəyişdirdiyi SolarWinds sızması kimi.

Erkən kəşf və təcili reaksiya təsiri çox məhdudlaşdırdı. Əgər xatırlayırsınızsa bitmə səhnəsi Qara Geyimli Kişilər III: “Bu, çox çətin idi”. K bir daha məsləhəti unutmadı. Və heç bir boglodit Linux stabil distributivlərinə daxil olmadı.
1. “Mən nə təhlükəsizlik tədqiqatçısı, nə də tərs mühəndisəm.” 2. Jia, Çin dilində geniş yayılmış bir addır. Tan da "möhtəşəm" mənasını verən geniş yayılmış bir ailə adıdır. Bir çox qohum olmayan insan bu adı paylaşır, xahiş edirəm heç kimi bu adla qınamayın!

FAQ

XZ arxa qapısı bu gün də risklidirmi?

Əsasən saxlanılıb, lakin tamamilə yox olmayıb. 2025-ci ilin avqust ayında tədqiqatçılar Debian tərəfindən qeyri-aktiv tarixi əsərlər kimi qəbul edilən bir neçə Debian Docker Hub görüntüsündə arxa qapının hələ də mövcud olduğunu aşkar etdilər. Komandalar 2024-cü il yamasının qapını tamamilə bağladığını düşünmək əvəzinə, köhnəlmiş, yamamamış əsas görüntülər üzərində qurulmadıqlarını yoxlamalıdırlar.

sca-tools-proqram-kompozisiya-analiz-alətləri
Proqram təminatı risklərinizi prioritetləşdirin, aradan qaldırın və təhlükəsizləşdirin
Pulsuz Hesabınızı əldə edin.
Kredit kartı tələb olunmur.

Proqram təminatınızın hazırlanması və çatdırılmasını təmin edin

Xygeni Məhsul Dəsti ilə