Бакдооринг 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 бекдору где је напад сумиран, повезујући се са више дубинске анализе од корисног терета напада. Ове анализе су биле технички сочне и помогле су нам да боље разумемо ињекцију, која је била веома разрађена:- xz/liblzma: Објашњење обфускације у Bash фазиЛепа анализа деобфускације помоћу скрипте за убризгавање, у четири „фазе“.
- Филипо Валсордина нит о плавом небу Анализа самог бекдвор-а у RSA_public_decrypt, која показује његову природу: RCE, не заобилажење аутентификације и затворен (прихвата приватни кључ аутора и ако не, враћа се на нормално понашање) / не може се вратити. Аутор је намеравао да остане неприметан како би избегао откривање!
- XZ анализа задњих врата од стране @smx-smx (у току) – Додатна анализа задњих врата (изгубио сам се скоро на почетку 😀)
- xz backdoor документација вики, још једна анализа скрипте за убризгавање 5.6.1.
Како је инцидент решен
Откривање од стране Андреаса Фројнда било је опрезно јер, његовим речима:„С обзиром на очигледну умешаност узводног система, нисам пријавио грешку узводног система. Пошто сам у почетку мислио да је у питању проблем специфичан за Дебијан, послао сам прелиминарнији извештај на security@...ian.org. Након тога, пријавио сам проблем на distros@.“ CISА је обавештен путем дистрибуције.
Ко је под нападом?
Или је налог GitHub JiaT75 био угрожен (сетите се да је GitHub недавно наложио двофакторску аутентификацију) или је физички корисник који поседује налог прешао на тамну страну. Али постоје убедљиви разлози за размишљање о напредној упорној претњи (APT), можда подржаној од стране државе, због техничке софистицираности напада. Даља истрага агенција за сајбер безбедност и органа реда ће показати… Овај унос у YCombinator Hacker News о Ђиа Тану баца мало светлости на „ко“ је то и његове активности. Препоручује се! Даје много информација о томе како лоши момци покушавају да преваре друге кориснике користећи друштвени инжењеринг.„Веома досадно - очигледни аутор задњег врата је био у комуникацији са мном (rwmj) неколико недеља покушавајући да дода xz 5.6.x у Fedora 40 и 41 због његових „одличних нових функција“. Чак смо сарађивали са њим да решимо проблем са valgrind-ом (који се сада испоставио да је изазван задњим вратима које је он додао). Морали смо да се журимо синоћ да решимо проблем након ненамерног кршења ембарга. Он је део xz пројекта већ 2 године, додајући све врсте бинарних тест датотека, и да будем искрен са овим нивоом софистицираности, био бих сумњичав чак и према старијим верзијама xz-а док се не докаже супротно.“
Да ли је напад преко задњих врата 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 софтвер за праћење затвореног кода.




