XZ напад на задна врата

XZ Backdoor: „Тоа беше тесна битка“

Задворување на SSH

Злонамерен или компромитиран одржувач вметна злонамерно однесување во библиотека со име либлзма, дел од алатките и библиотеките за компресија xz, што резултираше со задна врата во SSH. Ова е напреден напад на синџирот на снабдување со софтвер бидејќи библиотеката беше намерно изменета за задна врата, со техники на замаглување и прикривање за криење на товарот на нападот од рецензентите.

Беше откриен и обелоденет неодамна (на 29 март), а справувањето со нападите е во тек. Сепак, брзо беше сопрено бидејќи се чини дека влијае само на претходните верзии на ограничен број средини (DEB и RPM пакети, за архитектурата x86_64 и изградени со GCC). Како и да е, CVE му беше дадено Основен резултат на CVSS од 10, што е резервирано за најкритичните ранливости во сајбер безбедноста. Доколку влезе во стабилни дистрибуции, влијанието би било огромно. 

Техничката анализа на нападот, вклучувајќи го и xz задна врата објаснета детално, беше анализирано на друго место. Овој пост ќе се фокусира на временската рамка на нападот, како може да се открие, како е постапено со инцидентот до денес и кои лекции можат да се извлечат од нападот.

Долгата опашка на задна врата продолжи и по првичната закрпа. Во август 2025 година, повеќе од една година откако беше откриен CVE-2024-3094, безбедносните истражувачи во Binarly открија дека задна врата сè уште е присутна на десетина слики од Debian Docker објавени на Docker Hub, при што тимот на Debian одби да ги отстрани, третирајќи ги како артефакти од историски развој, а не како активен ризик. Одделно, OpenSSF и OpenJS издадоа заедничко предупредување кратко по инцидентот со XZ дека слични обиди за преземање преку социјален инженеринг веќе ги таргетирале JavaScript проектите, што укажува дека моделот на напад од страна на одржувачот на доверба што се користи овде се користи повторно на друго место.

Како беше инјектирана задната врата на XZ

Забелешка: Репозиториумот git е во git.tukaani.org. Сепак, исто така имаше Репозиториум хостиран во GitHub (моментално блокирано) каде што сметката на GitHub ги објавуваше промените што подоцна беа интегрирани во Git репозиториумот.

Еден дел од задната врата се чини дека е само во дистрибуираните tarball-ови за верзиите 5.6.0 и 5.6.1, а не во репозиториумите на git и се потпира на еден ред во build-to-host.m4 макро датотека што ја користи autoconf. Другиот дел беше во две наводни тест-датотеки bad-3-corrupt_lzma2.xz good-large_compressed.lzma

кои беа commitТед од сметката на GitHub „Џиа Тан“ (JiaT75) во xz репозиториум на 23 февруари. Беше безопасна промена со додавање на testfiles (наводно .lzma и .xz компресирани блокови). Интересно е што тест-датотеките не беа користени од тестовите! Линијата во .m4-датотеката инјектира замаглена скрипта (вклучена во tarball-от) што треба да се изврши на крајот од конфигурацијата ако се совпаднат некои услови. Ја модифицира Makefile за либлзма библиотеката да содржи код што извлекува податоци од .xz датотеката, која по деобфускацијата завршува во ова скрипта, се повикува на крајот од конфигурацијата. Одлучува дали да се измени процесот на градење за да се инјектира код: само под GCC и GCC линкерот, под Debian или rpm и само за x86_64 Linux. Кога ќе се совпадне, инјектираниот код го пресретнува извршувањето со замена на два ифунк решавачи, така што одредени повици се заменуваат. Ова предизвикува табелите со симболи да се парсираат во меморијата (ова одзема време, што доведе до откривање, како што е објаснето подоцна).

Потоа работите стануваат интересни: Задната врата инсталира кука за ревизија во динамичкиот линкер, чекајќи да пристигне симболот на функцијата RSA_public_decrypt, кој се пренасочува кон точка во кодот на задната врата, кој пак повикува назад. libcrypto, веројатно за да се изврши нормална автентикација. И товарот се активира ако програмата што работи го има името на процесот /usr/sbin/sshdБеше јасно дека целта беа SSH серверите. Традиционално, ssh сервери како OpenSSH не беа поврзани со либлзма, но sshd е често закрпени за поддршка на systemd-notify за да можат другите сервиси да се стартуваат кога работи sshd. Потоа liblzma се вчитува индиректно од systemd, затворајќи го кругот.

Задната врата сè уште не е целосно анализирана, но се чини дека е овозможува извршување на далечинска команда (РЦЕ) со привилегиите на sshd демонот, работи во контекст на претходна автентикација. Информациите од далечинскиот сертификат, кога ќе се совпаднат со задна врата, се дешифрираат со ChaCha20, а кога ќе се дешифрираат успешно, се пренесуваат до систем()Значи, ова е во суштина затворен RCE, многу полош од обично заобиколување на јавен клуч. 

Подоцнежната tarball верзија 5.6.1 покажа дополнителни напори за сокривање на трагите, додавајќи дополнително замаглување на имињата на симболите и обидувајќи се да ги поправи забележаните грешки. механизам за продолжување каде што беа барани дополнителни тест-датотеки за одредени потписи за додавање на задна врата, исто така беа поставени.

Овој прилично софистициран напад може да помине незабележано сè додека не се достигнат стабилни Linux дистрибуции. За среќа, некои луѓе сакаат да проверат зошто се случуваат абнормални работи.  

Откривањето на нападот со задна врата на XZ

Многу пати инјектираното злонамерно однесување е откриено случајно или ненамерно. Добар пример беше предупредување за неподдржување („Кого го интересираат предупредувањата?“) што доведе до откривањето на напад со поток на настани во октомври 2018 година. Друг е корисникот кој предупреди Codecov во април 2021 година дека нивната скрипта за прикачување на bash не ја поминала проверката („Кој го потврдува интегритетот на артефактите со контролни суми“?) Аномалии и чудни симптоми со ssh logins (loginодзема многу процесор и зголемено изминато време, грешки во valgrind) ја разбудија љубопитноста на Андрес Фројнд, буден програмер на PostgreSQL, но не и аналитичар за безбедност (како што изјави тој)). По некое истражување со OpenSSH на Debian Sid, тој заклучи дека проблемот со времето на одговор се потпира на библиотека, либлзма, Дел од xz-утили библиотека за компресија. Причината: „репозиториумот xz на горниот тек и xz tarball-овите се затворени со задна врата.„Оваа дијагностика беше толку точна!“   На 29 март 2024 година, Андрес ја објави првата анализа во Openwall: „задна врата во upstream xz/liblzma што доведува до компромитирање на ssh серверот„Факт: tarball-овите на XZ Utils 5.6.0 и 5.6.1 содржат задна врата. Овие tarball-ови беа креирани и потпишани од претходно споменатиот профил на Jia Tan.“  He објавено во Мастодон подоцна истиот ден, признавајќи дека откритието било случајно и барало многу случајности. Коментарите од другите корисници вреди да се прочитаат. Корисник на GitHub истото (познат како Сем Џејмс) објави убав опис на содржината Најчесто поставувани прашања за задната врата xz-utils каде што беше сумиран нападот, поврзувајќи се со повеќе длабински анализи од товарот за напад. Овие анализи беа технички сочни и ни помогнаа подобро да го разбереме инјектирањето, кое беше многу разработено: Ова убаво постер од Томас Рочија  покажува дел од активноста на JiaT75 на репозиториумот GitHub и како скриптата за инјектирање ја вметнува бинарната задна врата, дополнително илустрирајќи го xz задна врата објаснета.

Како беше третиран инцидентот

Откривањето од Андреас Фројнд беше претпазливо бидејќи, според неговите зборови:

„Со оглед на очигледната вмешаност на upstream, не пријавив upstream грешка. Бидејќи првично мислев дека е проблем специфичен за Debian, испратив попрелиминарен извештај на security@...ian.org. Последователно, го пријавив проблемот на distros@. CISА беше известен преку дистрибуција.“

Ред Хет му додели на ова издание CVE-2024-3094. Потоа зборот се прошири како шумски пожар. Ласе Колин, другиот одржувач на XZ, додаде нови commit во сабота, 30 март, со наслов „CMake: Поправка на саботирана проверка на копнен песок“. Еден од методите за копнен песок со библиотеката беше саботиран, барем при градење со CMake. Тој веднаш го откри проблемот во Задна врата на XZ Utils. Ред Хет го додели ова прашање на „Ред Хет“ CVE-2024-3094 (видете исто така во CVE, НВД, Ubuntu). Му беше доделено неверојатен Основен резултат на CVSS од 10Ваквите резултати секогаш го освојуваат интернетот. CISА на истиот 29 март објави алармирање, можеби премногу едноставно поради итноста, препорачувајќи им на корисниците да се вратат на стабилната верзија 5.4.6. Репозиториумите на GitHub под организацијата Tukaani беа оневозможени (дали е ова добро или лошо? Мислам дека е добро: Многу дистрибуции и организации сè уште се поврзуваа со изданијата на GitHub за да ги набават заразените tarball-ови за градење. Оневозможувањето на репозиториумот го спречува тоа. Сепак, постои копија од репозиториумот на git.tukaani.org). Сметките на GitHub, JiaTan75 и Lasse Collins (Larhzu), исто така беа суспендирани. Ова е дел од задржување, дури и кога може да влијае на невини луѓе. JiaT75 активност во неонеспособени складишта сè уште не може да се види. Индустријата реагираше брзо. Многу добавувачи објавија правила за откривање на ранливи системи, како што се Јара владееили поддршка во комерцијални алатки од Сисдиг, PANи други. Специјалисти за безбедност како Џејмс Бертоти објави за преглед на тоа како пристапуваме кон софтверот со отворен код.  Сега сме во фаза на искоренување и закрепнување од инцидентот. Други проекти што ги одржува JiaTan75 се под детален преглед, особено либарчив/либарчив (каде JiaTan75 беше редовен соработник) и fuzzer-от осс-фуз (каде што ова commit направено од JiaTan75 се обиде да избегне oss-fuzz, што всушност не можеше да ја детектира задната врата). Овие обиди за прикривање додаваат дополнителни докази. 

Кој е под напад?

Или сметката на GitHub JiaT75 била компромитирана (запомнете дека GitHub неодамна наложи 2FA) или физичкиот корисник што ја поседува сметката отишол на темната страна. Но, постојат убедливи причини да се размислува за напредна постојана закана (APT), можеби поддржана од државата, поради техничката софистицираност на нападот. Понатамошната истрага од страна на агенциите за сајбер безбедност и органите за спроведување на законот ќе покаже... Овој запис во YCombinator Hacker News за Џиа Тан фрла светлина врз „кој“ и неговата активност. Препорачано! Дава многу информации за тоа како лошите момци се обидуваат да ги измамат другите корисници, користејќи социјален инженеринг.

„Многу досадно - очигледниот автор на задна врата комуницираше со мене (rwmj) неколку недели обидувајќи се да го додаде xz 5.6.x на Fedora 40 и 41 поради неговите „одлични нови функции“. Дури и работевме со него за да го решиме проблемот со valgrind (кој сега се покажа дека е предизвикан од задна врата што тој ја додал). Моравме да се тркаме синоќа за да го решиме проблемот по ненамерно кршење на ембаргото. Тој е дел од проектот xz веќе 2 години, додавајќи секакви бинарни тест датотеки, и да бидам искрен со ова ниво на софистицираност би бил сомничав дури и за постари верзии на xz додека не се докаже спротивното.“

Џиа Тан презеде мерки за да спречи следење: Се чини дека користел VPN (vpn.singapore.witopia.net) за поврзување - што само по себе е во ред. И многу промени се чини дека се поткрепени со временски, еднократни е-пораки (од ProtonMail во овој случај) кои бараат спојување на промените.

Актерот можеби има намера да оди уште подлабоко, до јадрото на Linux, како придонесувач на xy-вградено проект. Првичната анализа не пронајде докази за спонтан абортус, до денес.

Забелешка: уште еден нископрофилен соработник на XZ „Ханс Јансен“ (Корисникот на GitHub „hansjans162“) е под лупаНеговата сметка на debian сега е пристапТој направи многу ажурирања на Debian Games за да го скрие она што го сакаше на debian/xz-utils, ажурирање на upstream 5.6.1 за да забрза со дистрибуцијата на задна врата до дебиан/нестабилен

Засега, сè што можеме да кажеме е дека станува збор за (сè уште неидентификуван) APT кој користи различни сметки, работи најмалку две години на оваа кампања и трпеливо работи на имплантирање на RCE во SSH.

Во моментот на пишување на ова, идентитетот зад „Џиа Тан“ останува непотврден. Јавно не е потврдено никакво веродостојно припишување на одредена личност, организација или државен актер, што потврдува колку ефикасна била оперативната дисциплина на личноста.

Дали нападот со задна врата на XZ можеше да се спречи?

Доста тешко. 

Прво, дел од инјектираната задна врата влезе во компресирани тест-датотеки кои не беа користени од тестовите. Ретроспективно, тоа би можело да предизвика некои (бучни) аларми, но кого го интересира проверка дали сите тест-датотеки се користат од реалните тестови во реалниот свет? Второ, дел од инјектираната задна врата влезе во макро-датотеки во tarball-овите за издавање, и тешко е рачно да се провери за разлики со очекуваните tarball-ови. Автоматизацијата е исто така комплексна, бидејќи очекуваниот резултат од самото градење (за секој што знае како функционира автоматското креирање/автоконфигурација) е тешко да се моделира за анализа дали вистинскиот tarball се совпаѓа со очекувањата. Некои го поставија as „Несовпаѓањето на tarball-овите од git дрвото е карактеристика, а не грешка“Потеклото на бинарните tarball датотеки од нивниот изворен код е нерешен проблем.

Репутација на корисникот? Па, според минатото, сметката на JiaTan75 GitHub не правела нечесни работи. commitс. Беше суспендиран дури откако се акумулираа доказите, но до 29 март тоа беше редовен корисник кој вршеше нормална работа. Па, не толку нормално. Подоцна commits (оваа, оваа, оваа, и оваа кој го прилагоди експлоит кодот) се обиде да ги поправи грешките на valgrind и падовите во некои конфигурации, поради разлики во распоредот на стекот што го очекуваше задна врата. Commit Прегледите би можеле да го детектираат ова, но кој има трпение да анализира промени во бинарна тест-датотека или вистинска мотивација за промена на GCC атрибутите во изворниот код на C?

Дали треба да се активира аларм кога SSH login трае 800 ms наместо 300 ms? Веројатно само хипер-претпазливи луѓе би го забележале тоа. Цицерон рекол, „Бруталноста ѝ припаѓа на младоста; разумноста на староста.“  

Инфраструктурата на ifunc беше додадена во јуни 2023 година од „Ханс Јансен“ и „Џиа Тан“. Ова е првата commit додавање на поддршка за ifunc на crc64_fast.c (подоцна користено за инјектирање на backdoor). Месеци пред инјектирање на бинарните датотеки на backdoor во тест датотеките!

Забелешка: Автор и commitсе разликуваат овде, но ова е нормално: Ласе Колин е одржувачот на проектот и тој ги спои промените. Тој дури и му се заблагодарува на „Ханс Јансен“...

Никој не изрази загриженост пред објавата на Андрес Фројнд и CVE-то создадено од RedHat. Ако видите каскада од алатки што би го фатиле ова, тие веднаш ја детектираат засегнатата компонента, екс пост факто

Веројатно најдобрата превенција дојде од природата на Linux дистрибуциите и тоа како нестабилните, напредни верзии преминуваат на стабилни дистрибуции само потоа по темпиран процес.

Научени лекции од нападот со задна врата на XZ b

Забележавме колку е тешко да се открие намерно задни врати. Задните врати треба да се сметаат за внатрешна закана, бидејќи се поставени од внатрешен персонал или преку компромитирани внатрешни сметки. И на тие луѓе најмногу им се верува. И кога задните врати се вградени во дистрибуираниот артефакт, тоа го отежнува нејзиното откривање.

Некои автори како Кевин Бомонт посочена на систем, што отвора голема површина за напад на услуги од трети страни кон задна врата. Ова е она што лошиот актер го злоупотреби овде. Systemd има многу очи, но XZ е нејасна библиотека нагоре во синџирот. „Кога горниот тек е загаден, сите пијат отровна вода низводно“.

Неповрзано барање за промена во системот за динамичко вчитување на библиотеки за компресија, кој би ја отстранил задната врата, веќе беше споен во системот, но сè уште не е доставен. Дополнителните зависности воведени од libsystemd може да бидат извор на ранливости., и вчера ова барање беше отворено

A коментира во „xz: Оневозможете го ifunc за да го решите проблемот“ commit даде остар увид за тоа каде да се фокусираме ако сакаме да спречиме таква активност (нагласокот е мој):

„Лекцијата што треба да ја научиме како заедница е повеќе да обезбедиме software supply chain security холистички, ревизијата на градење системи надвор од само изворниот код. Како што е пробивот во SolarWinds каде што напаѓачите ги модифицираа ажурирањата на софтверот за понудата на софтвер за следење со затворен код на SolarWinds.

Раното откривање и брзата реакција толку многу го ограничија влијанието. Ако се сеќавате на завршна сцена од Мажи во црно iii: „Тоа беше тесна битка“. Уште еднаш, К не заборави да остави бакшиш. И ниеден боглодит не влезе во стабилните дистрибуции на Linux.
1. „Јас *не* сум истражувач за безбедност, ниту обратен инженер.“ 2. Џиа е вообичаено кинеско име. Тан е исто така вообичаено семејно име што значи „величествен“. Многу неповрзани луѓе го делат ова име, ве молам не осудувајте никого со ова име!

NAJČESTO POSTAVUVANI PRAŠANJA

Дали задната врата на XZ сè уште претставува ризик денес?

Претежно содржан, но не целосно исчезнат. Во август 2025 година, истражувачите открија дека задната врата сè уште е присутна на неколку слики од Debian Docker Hub, третирани од Debian како неактивни историски артефакти. Тимовите треба да потврдат дека не градат врз застарени, незакрпени основни слики, наместо да претпоставуваат дека закрпата од 2024 година целосно ја затворила вратата.

алатки-за-анализа-на-композиции-на-sca-алатки
Дајте приоритет, санирајте и обезбедете ги вашите софтверски ризици
Добијте ја вашата бесплатна сметка.
Не е потребна кредитна картичка.

Обезбедете го вашиот развој и испорака на софтвер

со Xygeni Product Suite