Be abejonės Užpakalinių durų atvejis, aptiktas XZ programoje, yra vienas iš atvejų, kurie įeis į Linux istoriją ir tai ne veltui, o visas Jia Tan atliktas darbas Tai vienas geriausių taikomosios socialinės inžinerijos pavyzdžių, nes atliktais darbais neabejotinai reikia žavėtis už investuotą laiką, nes nekalbame apie savaites ar mėnesius, bent jau dvejus metus.
Šis atvejis patraukė daugelio ir pradėta atvirkštinės inžinerijos analizė, kurie pagal jų preliminarius rezultatus atskleisti užpakalinių durų buvimą, įterptą į liblzmą kaip kampanijos, skirtos įsiskverbti į XZ paketą, dalis. Šios užpakalinės durys yra specialiai sukurtos paveikti x86_64 sistemas su Linux branduoliu ir Glibc C biblioteka, kur sshd yra pritaikytas papildomas pataisymas, susietas su libsystemd.
Tyrėjai tai mini Iš pradžių buvo manoma, kad užpakalinės durys gali apeiti sshd autentifikavimą ir gauti prieigą prie sistemos per SSH, tačiau tolesnė analizė atskleidė, kad užpakalinės durys leidžia vykdyti savavališką kodą sistemoje nepaliekant pėdsakų sshd žurnaluose.
Funkciją RSA_public_decrypt perima užpakalinės durys, kad patikrintų pagrindinio kompiuterio parašą naudojant fiksuotą raktą Ed448. Jei patvirtinimas sėkmingas, išorinio pagrindinio kompiuterio perduotas kodas vykdomas naudojant funkciją system() prieš sshd iš naujo nustatant teises. Vykdytini kodo duomenys išgaunami iš parametro „N“, perduodami funkcijai RSA_public_decrypt, ir patikrinami bei iššifruojami naudojant iš anksto nustatytą raktą ChaCha20.
Norėdami suaktyvinti galines duris sshd, naudoja standartinį pagrindinio kompiuterio raktų mainų mechanizmą ir reaguoja tik į užpuoliko paruoštą raktą ir atitinkantis iš anksto nustatytą fiksuotą raktą Ed448. Jei viešojo rakto parašo patikrinimas nepavyksta arba nepatvirtintas vykdymo duomenų vientisumas, užpakalinės durys grąžina standartinių SSH funkcijų valdymą.
Užpuoliko privatusis raktas lieka nežinomas, todėl neįmanoma įdiegti patvirtinimo kodo, kad būtų galima suaktyvinti užpakalines duris iš išorinių šaltinių arba sukurti skaitytuvą, kuris tinkle aptiktų pažeistus pagrindinius kompiuterius. Tačiau mokslininkai sukūrė scenarijų, parodantį, kaip viešasis raktas gali būti pakeistas OpenSSH sertifikate, kurį perduoda SSH klientas, kurį apdoroja funkcija RSA_public_decrypt, kurią perima užpakalinės durys.
Papildomai, Tyrėjai atrado mechanizmą, skirtą neutralizuoti užpakalines duris (killswitch
) vietinėje sistemoje nustatydami aplinkos kintamąjį prieš paleisdami sshd. Taip pat buvo atlikta išsami apvalkalo kūrimo, naudojamo siekiant supainioti objekto failo išskleidimo su užpakalinėmis durimis ir pakeitimo bibliotekoje procesą. liblzma.
Kompiliuojant XZ paketą buvo vykdomas tam tikras kodas iš scenarijaus «build-to-host.m4
», kuri manipuliavo bandomuoju failu ir padarė tam tikrus veikėjų pakeitimus ir pavertė jį nepažeistu failu, iš kurio buvo ištrauktas apvalkalo scenarijus. Gautas apvalkalo scenarijus sugebėjo palaipsniui išgauti kitą apvalkalo scenarijų iš turinio, praleisdamas tam tikras sekas su komandomis ir pakeisdamas simbolius.
Dėl šio proceso buvo sukurtas gana sudėtingas ir platus apvalkalo scenarijus, kuris tiesiogiai ištraukė failą su užpakalinėmis durimis iš failo good-large_compressed.lzma, jį iššifravo ir įdėjo į liblzma. Šiame scenarijuje taip pat buvo įdiegtas papildinio mechanizmas, kuris leido vėliau pateikti papildomus vykdomuosius komponentus, įdedant naujus bandomuosius failus, nekeičiant good-large_compressed.lzma ir bad-3-corrupt_lzma2.xz, naudojant parašo paiešką. Kode taip pat buvo dešifratorius, pagrįstas RC4 algoritmu, įdiegtu AWK kalba.
Kita vertus, verta paminėti, kad remiantis incidentu, Buvo sukurtas įrankių rinkinys, vadinamas xzbot, kas apima:
- Medaus puodas, skirtas sukurti fiktyvius serverius, kurie apsimeta esą pažeidžiami, kad aptiktų užpuolikų bandymus prisijungti.
- Pataisa, skirta pakeisti viešąjį raktą, esantį liblzma.so viduje esančiame užpakaliniame duryje, savo (norint prisijungti prie galinių durų naudojant atitinkamą privatų raktą).
- Demonstracinė versija, skirta pradėti kodo vykdymą modifikuotose užpakalinėse duryse naudojant atitinkamą privatųjį raktą.
Jei jus domina galimybė sužinoti daugiau apie tai, išsamią informaciją galite sužinoti šią nuorodą.