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

XZ Backdoor: „То је било близу“

Бакдооринг SSH-а

Злонамерни или компромитовани одржавалац је убацио злонамерно понашање у библиотеку под називом либлзма, део xz алата и библиотека за компресију, што је резултирало бекдором у SSH-у. Ово је напредни напад на ланац снабдевања софтвером јер је библиотека намерно модификована за бекдор, са техникама замагљивања и прикривања за скривање садржаја напада од рецензената. Недавно је откривен и објављен (29. марта), а поступак по питању напада је у току. Међутим, брзо је обуздан јер изгледа да утиче само на прелиминарне верзије ограниченог скупа окружења (DEB и RPM пакети, за x86_64 архитектуру и изграђени са GCC). У сваком случају, ЦВЕ добио је Основни CVSS резултат од 10, што је резервисано за најкритичније рањивости у сајбер безбедности. Уколико уђе у стабилне дистрибуције, утицај би био огроман.  Техничка анализа напада, укључујући и xz задња врата детаљно објашњена, анализиран је на другом месту. Овај пост ће се фокусирати на временску линију напада, како је могао бити откривен, како је инцидент решаван до данас и које се лекције могу извући из напада.

Како је убризган XZ бекдор

Напомена: Гит репозиторијум је у git.tukaani.org. Међутим, такође је постојао Репозиторијум хостован на GitHub-у (тренутно блокирано) где је GitHub налог објављивао измене које су касније интегрисане у Git репозиторијум. Један део задњег улаза изгледа да се налази само у дистрибуираним tarball-овима за верзије 5.6.0 и 5.6.1, не у git репозиторијумима и ослања се на једна линија у build-to-host.m4 макро датотека коју користи autoconf. Други део је био у две наводне тест датотеке bad-3-corrupt_lzma2.xz добро-велико_компресовано.lzma који су били commitТед преко GitHub налога „Jia Tan“ (ЈиаТ75) У xz репозиторијум 23. фебруара. Била је то безопасна промена додавањем тест датотека (наводно .lzma и .xz компресованих блокова). Занимљиво је да тест датотеке нису коришћене од стране тестова! Линија у .m4 датотеци убризгава замаскирани скрипт (укључен у tarball) који се извршава на крају configure ако се неки услови испуне. Она мења Makefile за либлзма библиотека која садржи код који издваја податке из .xz датотеке, што се завршава након деобфускације у овом сценарију, се позива на крају команде configure. Она одлучује да ли да модификује процес изградње како би убризгао код: само под GCC-ом и GCC линкером, под Debian-ом или rpm-ом и само за x86_64 Linux. Када се подудара, убризгани код пресрета извршавање заменом два ифунч разрешивачи тако да се одређени позиви замењују. Ово узрокује да се табеле симбола рашчлањују у меморији (ово захтева време, што је довело до детекције, као што је објашњено касније). Онда ствари постају занимљиве: задња врата инсталирају куку за ревизију у динамички линкер, чекајући да стигне симбол функције RSA_public_decrypt, који се преусмерава на тачку у задњем коду, који затим позива назад. либцрипто, вероватно да би се извршила нормална аутентификација. А корисни терет се активира ако покренути програм има назив процеса /usr/sbin/sshdБило је јасно да су SSH сервери били мета. Традиционално, ссхд сервери попут OpenSSH нису били повезани са либлзма, али sshd је често закрпљено да би се подржала systemd-notify како би се други сервиси могли покренути када је sshd покренут. А затим се liblzma индиректно учитава од стране системд, затварајући круг. Задња врата још нису у потпуности анализирана, али изгледа да јесу омогућавање даљинског извршавања команди (РЦЕ) са привилегијама sshd демона, који се покреће у контексту претходне аутентификације. Информације из удаљеног сертификата, када их задња врата упореде, дешифрују се помоћу ChaCha20, а када се успешно дешифрују, прослеђују се систем()Дакле, ово је у суштини затворени RCE, много гори од пуког заобилажења јавног кључа.  Каснији tarball 5.6.1 показао је додатне напоре да се сакрију трагови, додајући додатно замагљивање имена симбола и покушавајући да исправи уочене грешке. механизам за продужење где су тражене додатне тест датотеке за одређене потписе које би се додале задњем улазу. Овај прилично софистицирани напад могао би проћи незапажено док се не дођу до стабилних Линукс дистрибуција. Срећом, неки људи воле да провере зашто се дешавају абнормалне ствари.  

Појачајте своје SCA sa Xygeni Open Source Security

Преузмите наш кратак преглед да бисте видели како штитимо ваше зависности отвореног кода од рањивости и претњи.

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

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

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

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

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

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

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

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

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

Ђиа Тан је предузео мере да спречи праћење: Изгледа да је коришћен ВПН (vpn.singapore.witopia.net) за повезивање – што је само по себи у реду. И чини се да су многе промене поткрепљене привременим, једнократним имејловима (у овом случају од ПротонМејла) који позивају на спајање промена. Глумац би могао да намерава да иде још дубље, све до Линуксовог језгра, као доприносилац xy-уграђено пројекат. Почетна анализа није пронашла доказе о побачају, до данас. Напомена: још један нископрофилни сарадник XZ-а „Ханс Јансен“ (Корисник GitHub-а „hansjans162“) је под лупомЊегов налог на Debian-у је сада блокиранНаправио је много ажурирања за Debian Games како би сакрио оно које је желео на debian/xz-utils, ажурирање за upstream 5.6.1 како би убрзао дистрибуцију задњег врата за... дебијан/нестабилан Све што за сада можемо рећи јесте да је ово (још увек неидентификована) APT преварантска стратегија која користи различите налоге, ради најмање две године на овој кампањи и стрпљиво ради на имплантацији RCE-а у SSH.

Да ли је напад преко задњих врата XZ могао бити спречен?

Прилично тешко.  Прво, део убризганог бекдора је доспео у компресоване тест датотеке које тестови нису користили. Ретроспективно, то би могло да изазове неке (бучне) аларме, али кога брига за проверу да ли све тест датотеке користе стварни тестови у стварном свету? Друго, део убризганог бекдора је доспео у макро датотекама у тарболове издања, и тешко је ручно проверити разлике у односу на очекиване тарболове. Аутоматизација је такође сложена, јер је очекивани резултат саме изградње (за свакога ко зна како функционише automake/autoconf) тешко моделирати за анализу да ли прави тарбол одговара очекивањима. Неки су то позирали as „Неусклађеност tarball-ова са git стаблом је функција, а не грешка“Порекло бинарних тарболова из њиховог изворног кода је нерешен проблем. Репутација корисника? Па, JiaTan75 GitHub налог није радио преваре према прошлости. commitСуспендован је тек након што су се накупили докази, али до 29. марта то је био редован корисник који је обављао уобичајене послове. Па, не баш тако нормално. Касније commitс (ово, ово, ово, i ово (што је прилагодило експлоатациони код) покушало је да поправи грешке и падове valgrind-а у неким конфигурацијама, због разлика у распореду стека који очекује задња врата. Commit Рецензије би ово могле да открију, али ко има стрпљења да анализира промене у бинарној тест датотеци или праву мотивацију за промену GCC атрибута у C изворном коду? Да ли треба дизати узбуну када је SSH login траје 800 мс уместо 300 мс? Вероватно би само хипер-разборити људи обратили пажњу. Цицерон је рекао, „Брзоумност припада младости; разборитост старости.“   Инфраструктуру ifunc су у јуну 2023. године додали „Ханс Јансен“ и „Ђиа Тан“. Ово је први commit додавање ifunc подршке за crc64_fast.c (касније коришћено за убризгавање бекдора). Месецима пре убризгавања бинарних датотека бекдора у тест датотеке!

Напомена: Аутор и commitМожда се разликује овде, али то је нормално: Ласе Колин је одржавалац пројекта и он је спојио измене. Чак се захваљује „Хансу Јансену“...

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

Вероватно најбоља превенција је произашла из природе Линукс дистрибуција и начина на који нестабилне, најсавременије верзије прелазе на стабилне дистрибуције низводно само након одређеног темпа процеса.

Лекције научене из XZ bBackdoor напада

Приметили смо колико је тешко открити намерно задња врата. Задња врата треба сматрати интерном претњом, јер их постављају интерни запослени или преко угрожених интерних налога. А тим људима се углавном верује. А када се задња врата имплантирају у дистрибуирани артефакт, теже их је открити.

Неки аутори попут Кевина Бомонта уперено у систем, што отвара велику површину за напад сервиса трећих страна ка задњим вратима. То је оно што је злонамерни актер овде злоупотребио. Systemd има много пратилаца, али XZ је непозната библиотека уз ланац. „Када је узводни ток заражен, сви пију отровану воду низводно“.

Неповезани захтев за промену у систему за динамичко учитавање библиотека за компресију, који би уклонио задња врата, већ је био спојен са системом, али још није испоручен. Додатне зависности које је увео libsystemd могу бити извор рањивости, и јуче Овај захтев је отворен

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

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

Рано откриће и брза реакција су толико ограничили утицај. Ако се сећате завршна сцена из Мушкарци у црном иии: „То је било тесно.“ Још једном, К није заборавио да остави бакшиш. И ниједан боглодић није ушао у стабилне Линукс дистрибуције.
1. „Ја *нисам* истраживач безбедности, нити реверзни инжењер.“ 2. Ђиа је уобичајено кинеско име. Тан је такође уобичајено презиме које значи „величанствен“. Много људи који нису у сродству деле ово име, молим вас, немојте никога осуђивати овим именом!
sca-tools-software-composition-analysis-tools
Приоритизујте, отклоните и обезбедите ризике везане за ваш софтвер
Набавите свој бесплатни налог.
Није потребна кредитна картица.

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

са Xygeni пакетом производа