XZ Backdoor Attack

XZ Backdoor: «Бул абдан оор болду»

SSH арткы эшиктерин ачуу

Зыяндуу же бузулган тейлөөчү аттуу китепканага зыяндуу жүрүм-турумду киргизген liblzma, xz кысуу куралдарынын жана китепканаларынын бир бөлүгү, натыйжада SSHде арткы эшик пайда болгон. Бул программалык камсыздоо чынжырынын өркүндөтүлгөн чабуулу, анткени китепкана атайылап арткы эшик үчүн өзгөртүлгөн, чабуулдун пайдалуу жүгүн сынчылардан жашыруу үчүн бүдөмүктөө жана жашыруун ыкмалар менен.

Ал жакында эле (29-мартта) табылып, ачыкка чыгарылды жана чабуулдарды башкаруу уланууда. Бирок, ал чектелүү чөйрөлөрдүн (x86_64 архитектурасы үчүн DEB жана RPM пакеттери жана GCC менен курулган) чыгарылышка чейинки версияларына гана таасир эткендиктен, ал тез эле токтотулду. Кандай болгон күндө да, CVE берилген CVSS базалык упайы 10дон турат, бул киберкоопсуздуктун эң маанилүү аялуу жактары үчүн сакталган. Эгерде ал туруктуу бөлүштүрүүлөргө кирсе, таасири абдан чоң болот. 

Кол салуунун техникалык анализи, анын ичинде xz бэкдору терең түшүндүрүлдү, башка жерде талданган. Бул постто чабуулдун убактысы, аны кантип аныктоого болору, окуя азыркыга чейин кантип жөнгө салынганы жана чабуулдан кандай сабактар ​​алынышы мүмкүн экендиги каралат.

Арткы эшиктин узун куйругу баштапкы жамаачыдан бир топ убакыт өткөндөн кийин да уланды. 2025-жылдын август айында, CVE-2024-3094 ачыкка чыккандан бир жылдан ашык убакыт өткөндөн кийин, Binarly компаниясынын коопсуздук боюнча изилдөөчүлөрү Docker Hub сайтында жарыяланган он эки Debian Docker сүрөттөрүндө арткы эшиктин дагы эле бар экенин аныкташкан, Debian командасы аларды алып салуудан баш тартып, аларды активдүү тобокелдик катары эмес, тарыхый өнүгүү артефакттары катары карашкан. Өзүнчө, OpenSSF жана OpenJS XZ окуясынан көп өтпөй ушул сыяктуу социалдык инженерия аркылуу басып алуу аракеттери JavaScript долбоорлоруна багытталгандыгы тууралуу биргелешкен эскертүү жарыялады, бул жерде колдонулган тейлөөчү-ишеним чабуул схемасы башка жерде кайра колдонулуп жатканын көрсөтүп турат.

XZ арткы эшиги кантип сайылган

Эскертүү: git репозиторийи жайгашкан git.tukaani.org. Бирок, ошондой эле болгон GitHub хостинг репозиторийи (учурда бөгөттөлгөн), анда GitHub аккаунту кийинчерээк Git репозиторийине интеграцияланган өзгөртүүлөрдү жарыялап жаткан.

Арткы эшиктин бир бөлүгү 5.6.0 жана 5.6.1 версиялары үчүн таратылган тарболдордо гана окшойт, git репозиторийлеринде эмес жана ...га таянат. build-to-host.m4 файлындагы бир сап autoconf тарабынан колдонулган макро файл. Башка бөлүгү эки болжолдуу тест файлында болгон bad-3-corrupt_lzma2.xz жана жакшы-чоң_кысылган.lzma

ошол эле commitTED GitHub аккаунту “Jia Tan” тарабынан (JiaT75) ичинде xz репозиторийи 23-февралда. Бул testfile'дарды (болжол менен .lzma жана .xz кысылган блоктор) кошуудагы зыянсыз өзгөртүү болгон. Кызыгы, тест файлдары тесттер тарабынан колдонулган эмес! .m4 файлындагы сап конфигурациянын аягында аткарыла турган бүдөмүк скриптти (tarball'го киргизилген) киргизет, ал кээ бир шарттар дал келсе. Ал Makefile'ды өзгөртөт liblzma деобфускация аяктагандан кийин .xz файлынан маалыматтарды чыгаруучу кодду камтыган китепкана бул скриптте, конфигурациянын аягында чакырылат. Ал кодду киргизүү үчүн түзүү процессин өзгөртүү керекпи же жокпу, чечет: GCC жана GCC шилтеме берүүчүсүндө гана, Debian же rpm астында жана x86_64 Linux үчүн гана. Дал келгенде, киргизилген код эки алмаштыруу менен аткарууну токтотот ifunc резолюторлор, ошондуктан айрым чакыруулар алмаштырылат. Бул символдук таблицалардын эс тутумда талданышына алып келет (бул убакытты талап кылат, бул кийинчерээк түшүндүрүлгөндөй, аныктоого алып келди).

Анан кызыктуу нерселер башталат: арткы эшик динамикалык шилтеме бергичке аудит илмегин орнотуп, RSA_public_decrypt функциясынын символунун келишин күтөт, ал арткы эшиктин кодундагы чекитке багытталат, ал өз кезегинде кайра чакырат. libcrypto, болжол менен кадимки аутентификацияны аткаруу үчүн. Жана пайдалуу жүктөм иштеп жаткан программанын процесстин аталышы болсо, активдешет /usr/sbin/sshdSSH серверлери бутага алынганы айдан ачык болчу. Салт боюнча, sshd OpenSSH сыяктуу серверлер байланышкан эмес liblzma, бирок sshd көп учурда жамааланган sshd иштеп жатканда башка кызматтар иштей башташы үчүн systemd-notify функциясын колдоо. Андан кийин liblzma кыйыр түрдө жүктөлөт systemd, тегеректи жабуу.

Арткы эшик али толук талданып бүтө элек, бирок ал ошондой көрүнөт алыстан буйрукту аткарууга мүмкүндүк берет (RCE) sshd демонун артыкчылыктары менен, алдын ала аутентификация контекстинде иштеп жатат. Алыскы сертификаттан алынган маалымат, арткы эшик аркылуу дал келгенде, ChaCha20 менен чечмеленет жана ал ийгиликтүү чечмеленгенде, ал төмөнкүгө өткөрүлүп берилет система()Демек, бул, негизинен, жабык RCE, жөн гана ачык ачкычты айланып өтүүдөн алда канча жаман. 

Кийинчерээк 5.6.1 версиясындагы гастрономдук шарда издер жашырууга кошумча аракеттер көрүлүп, символдордун аталыштары үчүн дагы бир бүдөмүктүктөр кошулуп, байкалган каталарды оңдоого аракет кылынган. узартуу механизми кошумча тест файлдары арткы эшикке кошуу үчүн белгилүү бир кол тамгалар изделүүчү жерде да орнотулган.

Бул татаал чабуул туруктуу Linux дистрибутивдерине жеткенге чейин байкалбай калышы мүмкүн. Бактыга жараша, кээ бир адамдар эмне үчүн адаттан тыш нерселер болуп жатканын текшергиси келет.  

XZ Backdoor чабуулунун ачылышы

Көп учурда зыяндуу жүрүм-турум кокустук же кокустан аныкталат. Жакшы мисал болгон эскирүү жөнүндө эскертүү ("Эскертүүлөр кимге керек?") ачылышына алып келди окуя агымына чабуул 2018-жылдын октябрь айында. Дагы бири - эскерткен колдонуучу Codecov 2021-жылдын апрель айында алардын bash жүктөөчү скрипти текшерүү суммасынан өтпөгөнүн билдирген ("Ким артефакттардын бүтүндүгүн текшерүү суммасы менен текшерет?") SSH менен байланышкан аномалиялар жана кызыктай симптомдор loginS (loginкөп CPU талап кылат жана убакыттын өтүшү көбөйөт, valgrind каталары) кызыгууну жаратты Андрес Фрейнд, сергек PostgreSQL иштеп чыгуучусу, бирок коопсуздук боюнча аналитик эмес (ал айткандай)). Debian Sid боюнча OpenSSH менен бир аз изилдөө жүргүзгөндөн кийин, ал жооп берүү убактысынын көйгөйү китепканага байланыштуу деген жыйынтыкка келген, liblzma, бөлүгү xz-utils кысуу китепканасы. Себеби: “xz репозиторийинин жогору жагы жана xz тарболдору арткы эшикке жабылган"Бул диагноз абдан так болду!   2024-жылдын 29-мартында Андрес Openwall сайтында биринчи анализин жарыялаган: “xz/liblzma жогорку агымындагы бэкдор ssh серверинин бузулушуна алып келди"Факты: XZ Utils 5.6.0 жана 5.6.1 тарболдорунда арткы эшик бар. Бул тарболдор жогоруда айтылган Jia Tan аккаунту тарабынан түзүлүп, кол коюлган.  He Мастодон бөлүмүнө жарыяланды ошол күнү кечирээк, ачылыш кокустук болгонун жана көптөгөн дал келүүлөрдү талап кылганын түшүнүштү. Башка колдонуучулардын комментарийлерин окууга арзыйт. GitHub колдонуучусу thesamesam (башкача айтканда, Сэм Джеймс) жакшы Gist жарыялады xz-utils арткы эшиги боюнча көп берилүүчү суроолор чабуул кыскача баяндалган жерде, көбүрөөк байланыштырылган терең анализдер чабуулдун пайдалуу жүгүнүн. Бул анализдер техникалык жактан кызыктуу болду жана бизге инъекцияны жакшыраак түшүнүүгө жардам берди, ал абдан кылдат иштелип чыккан: Бул жакшы Томас Роччиянын плакаты  GitHub репозиторийиндеги JiaT75тин иш-аракетинин бир бөлүгүн жана инъекция скрипти бинардык арткы эшикти кантип киргизерин көрсөтөт, андан ары ... көрсөтөт xz бэкдор түшүндүрдү.

Окуя кандайча жөнгө салынды

Андреас Фройнддун ачыкка чыгаруусу этияттык менен жасалган, анткени анын өз сөзү менен айтканда:

"Жогорку деңгээлдеги көйгөйдүн ачык көрүнүп турганын эске алганда, мен жогорку деңгээлдеги ката жөнүндө кабарлаган жокмун. Башында бул Debianга тиешелүү көйгөй деп ойлогондуктан, security@...ian.org дарегине алдын ала отчет жөнөттүм. Кийинчерээк мен бул көйгөй жөнүндө distros@ дарегине кабарладым." CISАга бөлүштүрүү компаниясы кабарлаган.

Red Hat бул маселеге CVE-2024-3094 номерин дайындады. Андан кийин бул сөз жапайы оттой тез тарады. XZ үчүн дагы бир тейлөөчү Лассе Коллин кошумчалады жаңы commit Ишемби, 30-март күнү "CMake: Landlock кумкоргонунун саботаждалган текшерүүсүн оңдоо" деген аталыштагы макала жарыяланды. Китепкананын кумкоргондогу кургактык кулпусунун ыкмаларынын бири, жок дегенде CMake менен курууда саботаждалган. Ал маселени дароо ачыктады. XZ Utils арткы эшиги. Red Hat бул маселени дайындады CVE-2024-3094 (ошондой эле караңыз CVE, NVD, Ubuntu). Ага абдан чоң тапшырма берилген CVSS базалык упайы 10Мындай упайлар интернетти ар дайым дүрбөлөңгө салат. CISОшол эле жылдын 29-мартында А жарыялаган сак, шашылыштыктан улам өтө жөнөкөй болушу мүмкүн, колдонуучуларга 5.4.6 туруктуу версиясына өтүүнү сунуштайт. Tukaani уюмунун алдындагы GitHub репозиторийлери өчүрүлгөн (бул жакшыбы же жаманбы? Менимче, жакшы: Көптөгөн дистрибутивдер жана уюмдар дагы эле GitHub релиздерине шилтеме берип, вирус жуккан тарболдорду куруу үчүн колдонушкан. Репозиторду өчүрүү мунун алдын алат. Кандай болгон күндө да, көчүрмө же репозиторийлер бар git.tukaani.org). GitHub аккаунттары JiaTan75 жана Lasse Collins' (Larhzu) дагы токтотулган. Бул бир бөлүгү токтотуу, ал тургай бейкүнөө адамдарга таасир этиши мүмкүн болсо да. JiaT75 өчүрүлбөгөн репозиторийлердеги иш-аракет азырынча көрө албайбыз. Тармак тез арада реакция кылды. Көптөгөн сатуучулар аялуу системаларды аныктоо үчүн эрежелерди жарыялашты, мисалы Яранын эрежелериже коммерциялык куралдардагы колдоо Sysdig, PANжана башкалар. Коопсуздук боюнча адистер сыяктуу Жеймс Бертоти ачык булактуу программалык камсыздоого кандай мамиле кыларыбызды карап чыгуу жөнүндө жарыялады.  Азыр биз окуяны жок кылуу жана калыбына келтирүү этабындабыз. JiaTan75 тарабынан колдоого алынган башка долбоорлор, айрыкча, кылдаттык менен каралып жатат китепкана/китепкана (JiaTan75 дайыма салым кошкон) жана фуззер oss-fuzz (бул жерде commit JiaTan75 тарабынан жасалган, чындыгында, осс-фузздан качууга аракет кылган арткы эшикти аныктай алган жокБул жашыруу аракеттери дагы бир далил кошот. 

Ким кол салууда?

GitHub JiaT75 аккаунту бузулган (GitHub жакында 2FA талап кылганын эстен чыгарбаңыз) же аккаунтка карыз болгон физикалык колдонуучу караңгы тарапка кеткен. Бирок чабуулдун техникалык жактан татаалдыгынан улам, балким, мамлекет тарабынан колдоого алынган, өнүккөн туруктуу коркунуч (APT) жөнүндө ойлонууга орчундуу себептер бар. Киберкоопсуздук агенттиктери жана укук коргоо органдары тарабынан жүргүзүлгөн андан аркы иликтөөлөр муну көрсөтөт... Бул кириш YCombinator хакер жаңылыктарында Цзя Тан жөнүндө "ким" жана анын иш-аракеттерине бир аз жарык чачат. Сунушталат! Ал жаман адамдар социалдык инженерияны колдонуп, башка колдонуучуларды кантип алдоо аракети жөнүндө көп маалымат берет.

«Абдан кыжырды келтирет - арткы эшиктин автору Fedora 40 жана 41 версияларына xz 5.6.xти кошууга аракет кылып, бир нече жума бою мени менен (rwmj) байланышта болуп, анын «сонун жаңы функциялары» бар экенин айтты. Атүгүл биз аны менен бирге valgrind көйгөйүн чечүү үчүн да иштедик (азыр ал кошкон арткы эшиктен улам келип чыкканы белгилүү болду). Эмбаргонун кокустан бузулушунан кийин көйгөйдү чечүү үчүн кечээ кечинде жарышууга туура келди. Ал 2 жылдан бери xz долбоорунун бир бөлүгү болуп, ар кандай бинардык тест файлдарын кошуп келет жана чынын айтсам, мындай татаалдык деңгээли менен мен башкача далилденмейинче, xzдин эски версияларына дагы шектенмекмин».

Цзя Тан байкоого алынбоо үчүн чараларды көрдү: байланышуу үчүн VPN (vpn.singapore.witopia.net) колдонгон окшойт - бул өзүнчө жакшы. Көптөгөн өзгөртүүлөр убактылуу, бир жолу колдонулуучу электрондук каттар (бул учурда ProtonMailден) менен коштолуп, өзгөртүүлөрдү бириктирүүгө чакыргандай сезилет.

Актер Linux ядросуна чейин, салым кошкон адам катары, андан да тереңирээк барууну көздөшү мүмкүн. xy-капталган долбоор. Бүгүнкү күнгө карата баштапкы анализ боюнан түшүүнүн эч кандай белгилерин тапкан жок.

Эскертүү: башка XZ сайтынын анча белгилүү эмес катышуучусу “Ханс Янсен” (GitHub колдонуучусу “hansjans162”) болуп саналат текшерүү астындаАнын debian'дагы аккаунту азыр бөгөттөлгөнАл debian/xz-utils'те каалаганын жашыруу үчүн Debian Games'ке көптөгөн жаңыртууларды киргизди, ал эми арткы эшикти тезирээк таратуу үчүн upstream 5.6.1ге жаңыртуу киргизди. debian/туруксуз

Азырынча биз айта ала турган нерсе, бул (азырынча белгисиз) ар кандай аккаунттарды колдонгон, бул өнөктүктө кеминде эки жыл иштеген жана SSHге RCE имплантациялоо үчүн чыдамдуулук менен иштеп жаткан APT.

Учурда "Жиа Тандын" ким экени тактала элек. Белгилүү бир адамга, уюмга же мамлекеттик ишмерге таандык экени тууралуу эч кандай ишенимдүү маалымат коомчулук тарабынан тастыктала элек, бул инсандын иштөө тартиби канчалык натыйжалуу болгонун тастыктайт.

XZ арткы эшиктен жасалган чабуулдун алдын алууга мүмкүн болдубу?

Бир топ кыйын. 

Биринчиден, сайылган арткы эшиктин бир бөлүгү тесттерде колдонулбаган кысылган тест файлдарына кирген. Ретроспективдүү түрдө, бул кээ бир (ызы-чуулуу) коңгуроо кагышы мүмкүн, бирок реалдуу дүйнөдөгү бардык тест файлдары реалдуу тесттерде колдонулганын текшерүү кимге керек? Экинчиден, сайылган арткы эшиктин бир бөлүгү макро файлдарда чыгарылуучу шар шарларына кирген жана күтүлгөн шар шарлары менен айырмачылыктарды кол менен текшерүү кыйын. Автоматташтыруу дагы татаал, анткени курулуштун өзүнөн күтүлгөн натыйжаны (automake/autoconf кантип иштээрин билгендер үчүн) чыныгы шар шары күтүүлөргө дал келеби же жокпу, талдоо үчүн моделдөө кыйын. Айрымдары аны коюшту as "Git дарагынан дал келбеген брезент шарлары - бул ката эмес, өзгөчөлүк"Бинардык тарболдордун баштапкы кодунан келип чыгышы чечиле элек көйгөй бойдон калууда.

Колдонуучунун кадыр-баркыбы? Ооба, JiaTan75 GitHub аккаунту мурдакыдай эле жаман иштерди жасаган эмес. commits. Ал далилдер топтолгондон кийин гана токтотулган, бирок 29-мартка чейин кадимкидей эле иштеп жаткан кадимки колдонуучу болгон. Ооба, анчалык деле кадимкидей эмес. Кийинчерээк commitS (бул, бул, бул, жана бул эксплуатация кодун тууралаган) бэкдор тарабынан күтүлгөн стектин жайгашуусу менен айырмачылыктардан улам айрым конфигурациялардагы valgrind каталарын жана кыйроолорун оңдоого аракет кылган. Commit сын-пикирлер муну аныктай алат, бирок бинардык тест файлындагы өзгөрүүлөрдү же C булак кодундагы GCC атрибуттарынын өзгөрүшүнүн чыныгы мотивациясын талдоого кимдин чыдамы жетет?

SSH учурунда ойготкучтарды күйгүзүү керекпи? login 300 мс ордуна 800 мс талап кылынат? Балким, муну өтө этият адамдар гана байкайт. Цицерон мындай деген: «Шашылыштык жаштыкта, акылдуулук карылыкта».  

IFunc инфраструктурасы 2023-жылдын июнь айында “Hans Jansen” жана “Jia Tan” тарабынан кошулган. Бул биринчиси commit crc64_fast.c файлына ifunc колдоосун кошуу (кийинчерээк арткы эшикти киргизүү үчүн колдонулган). Тест файлдарына арткы эшиктин бинардык файлдарын киргизүүдөн бир нече ай мурун!

Эскертүү: Автор жана commitБул жерде айырмачылыктар бар, бирок бул кадыресе көрүнүш: Лассе Коллин долбоордун колдоочусу жана ал өзгөртүүлөрдү бириктирген. Ал тургай "Ханс Янсенге" ыраазычылык билдирет...

Андрес Фройнддун билдирүүсүнөн жана RedHat тарабынан түзүлгөн CVEден мурун эч ким тынчсыздануу билдирген эмес. Эгер сиз муну аныктай турган куралдардын каскадын көрсөңүз, алар жабыркаган компонентти азыр аныкташат, ex post факто

Балким, эң жакшы алдын алуу Linux дистрибутивдеринин мүнөзүнөн жана туруксуз, эскирген версиялардын туруктуу дистрибутивдерге темптүү процесстен кийин гана өтүшүнөн келип чыккандыр.

XZ bBackdoor чабуулунан алынган сабактар

Аны аныктоо канчалык кыйын экенин белгиледик атайы арткы эшиктер. Арткы эшиктер ички коркунуч катары каралышы керек, анткени алар ички кызматкерлер тарабынан же бузулган ички аккаунттар аркылуу орнотулат. Ал эми бул адамдарга көбүнчө ишенишет. Ал эми арткы эшик таратылган артефактка орнотулганда, аны аныктоо кыйыныраак болот.

Кевин Бомонт сыяктуу айрым авторлор көрсөттү система, бул үчүнчү тараптын кызматтарынын чоң чабуул бетин бэкдорго ачат. Жаман актёр бул жерде дал ушуну кыянаттык менен колдонгон. Systemdдин көздөрү көп, бирок XZ чынжырдын башында белгисиз китепкана. "Жогорку агым булганганда, ар бир адам ылдыйкы агымда ууланган суу ичет".

Системадагы байланышсыз өзгөртүү өтүнүчү динамикалык түрдө жүктөлүүчү кысуу китепканалары, ал арткы эшикти алып сала турган, системага мурунтан эле бириктирилген, бирок азырынча жеткириле элек. libsystemd тарабынан киргизилген кошумча көз карандылыктар алсыздыктардын булагы болушу мүмкүн, жана кечээ бул өтүнүч ачылды

A түшүндүрмө "xz: Көйгөйдү чечүү үчүн ifunc'ту өчүрүү" бөлүмүндө commit эгерде биз мындай иш-аракеттердин алдын алгыбыз келсе, көңүлдү кайда буруу керектиги боюнча так түшүнүк берди (баса меники):

«Коомчулук катары биз алышыбыз керек болгон сабак – бул коопсуздукту камсыз кылуу». software supply chain security комплекстүү түрдө, жөн гана булак кодунан тышкары курулуш системаларын аудиттөө. Мисалы, чабуулчулар SolarWinds жабык булактуу мониторинг программасын сунуштаган программалык камсыздоонун жаңыртууларын өзгөрткөн SolarWinds бузулушу сыяктуу.

Алгачкы ачылыш жана тез реакция таасирди бир топ чектеп койгон. Эгер эсиңизде болсо акыркы көрүнүш Кара III эркектер: «Бул абдан сонун болду». Дагы бир жолу, К кеңеш калтырууну унуткан жок. Жана Linuxтун туруктуу дистрибутивдерине эч кандай боглодит кирген жок.
1. «Мен коопсуздук боюнча изилдөөчү да, тескери инженер да эмесмин». 2. Цзя - кытай тилинде кеңири таралган ысым. Тан дагы "сонун" дегенди билдирген кеңири таралган үй-бүлөлүк ысым. Бул ысымды көптөгөн тууган эмес адамдар колдонушат, сураныч, бул ысым менен эч кимди айыптабаңыз!

FAQ

XZ арткы эшиги бүгүнкү күндө дагы эле коркунучтабы?

Көбүнчө камалган, бирок толугу менен жок болгон эмес. 2025-жылдын август айында изилдөөчүлөр Debian тарабынан активдүү эмес тарыхый артефакттар катары каралган бир нече Debian Docker Hub сүрөттөрүндө арткы эшик дагы эле бар экенин аныкташкан. Командалар 2024-жылдагы патч эшикти толугу менен жапты деп ойлогондун ордуна, эскирген, патчталбаган базалык сүрөттөрдүн негизинде куруп жатпаганын текшериши керек.

sca-tools-программалык-композициялык-талдоо-куралдары
Программалык камсыздооңуздун тобокелдиктерин артыкчылыктуу деп эсептеңиз, оңдоңуз жана коопсуздугун камсыз кылыңыз
Акысыз аккаунтуңузду алыңыз.
Насыя картасы талап кылынбайт.

Программалык камсыздоону иштеп чыгууну жана жеткирүүнү камсыз кылыңыз

Xygeni Product Suite менен