Beenshtë identifikuar një dobësi në menaxherin e paketës APT (CVE-2019-3462), çfarë lejon një sulmues të fillojë një mashtrim të paketës së instaluar nëse sulmuesi ka kontroll në pasqyrën e depozitës ose mund të prishë trafikun tranzit midis përdoruesit dhe depozitës (sulmi MITM).
Problemi u identifikua nga studiuesi i sigurisë Max Justicz, i njohur për zbulimin e dobësive në menaxherin e paketës APK (Alpine) dhe në magazinat Packagist, NPM dhe RubyGems.
Problemi Kjo është për shkak të verifikimit të pasaktë të fushave në kodin e përpunimit të ridrejtimit HTTP.
Cili është problemi?
Kjo dobësi lejon një sulmues të zëvendësojë përmbajtjen e tij në të dhënat e transmetuara brenda sesionit HTTP (Debian dhe Ubuntu përdorin HTTP dhe jo HTTPS për të hyrë në depo, duke supozuar se nënshkrimi dixhital është i mjaftueshëm me krahasimin e meta të dhënave dhe madhësisë së paketës.)
Dobësia e identifikuar lejon fuqinë e sulmuesit zëvendësoni paketën e transmetuar, pas së cilës APT do ta perceptojë atë si të marrë nga pasqyra zyrtare dhe do të fillojë procesin e instalimit.
Përmes përfshirjes në paketën me qëllim të keq të skripteve të nisur gjatë instalimit, një sulmues mund të arrijë ekzekutimin e kodit të tij në një sistem me privilegje root.
Për të shkarkuar të dhëna nga depoja, APT fillon një proces të fëmijëve me zbatimin e një transporti specifik dhe organizon ndërveprimin me këtë proces duke përdorur një protokoll të thjeshtë teksti me ndarjen e komandave me një vijë të zbrazët.
Si mund ta zbuloj problemin?
Thelbi i problemit është se mbajtësi i transportit HTTP, me të marrë një përgjigje nga serveri HTTP me titullin "Vendndodhja:", ai kërkon konfirmimin e ridrejtimit nga procesi kryesor.
Transferimi i plotë i përmbajtjes së këtij titulli. Për shkak të mungesës së pastërtisë së karaktereve speciale të transmetuara, një sulmues mund të specifikojë një ndërprerje linje në fushën "Vendndodhja:".
Meqenëse kjo vlerë do të dekodifikohet dhe transmetohet përmes kanalit të komunikimit me procesin kryesor, sulmuesi mund të simulojë një përgjigje të ndryshme nga mbajtësi i transportit HTTP dhe të zëvendësojë bllokun bedel 201 URI.
Për shembull, nëse, kur kërkon një pako, sulmuesi zëvendëson përgjigjen, ky zëvendësim do të rezultojë në transferimin e bllokut tjetër të të dhënave në procesin kryesor.
Llogaritja e hasheve për skedarët e shkarkuar trajtohet dhe procesi kryesor thjesht kontrollon këto të dhëna me hashe nga baza e të dhënave të paketave të nënshkruara.
Midis të dhënave, një sulmues mund të specifikojë çdo vlerë të testit hash të lidhur në bazën e të dhënave me paketat aktuale të nënshkruara, por në të vërtetë nuk korrespondon me hashet e skedarit të transferuar.
Procesi kryesor do të pranojë kodin e përgjigjes të zëvendësuar nga sulmi, do të kërkojë hash në bazën e të dhënave dhe do të konsiderojë që paketa për të cilën ekziston një nënshkrim i saktë dixhital është i ngarkuar, edhe pse në të vërtetë vlera e fushës me hash është zëvendësuar në kanali i komunikimit me procesin kryesor duke përdorur sulmin dhe skedarin e specifikuar në meta të dhënat e zëvendësuara.
Shkarkimi i një pakete me qëllim të keq bëhet duke bashkangjitur paketën në skedarin Release.gpg, gjatë transferimit.
Kjo skedar ka një vendndodhje të parashikueshme në sistemin e skedarëve dhe bashkëngjitja e një pakete në fillimin e saj nuk ndikon në nxjerrjen e nënshkrimit dixhital nga depoja.
Kur merr të dhëna, apt pamundëson proceset e punëtorëve që specializohen në protokollet e ndryshme që do të përdoren për transferimin e të dhënave.
Procesi kryesor pastaj komunikon me këta punëtorë përmes stdin / stdout për t'i treguar atyre se çfarë të shkarkojnë dhe ku ta vendosin atë në sistemin e skedarëve duke përdorur një protokoll që duket pak si HTTP.
Procesi kryesor do të paraqesë konfigurimin e tij dhe do të kërkojë një burim dhe procesi i punëtorit do të përgjigjet.
Kur serveri HTTP përgjigjet me një ridrejtim, procesi i punëtorit kthen 103 Redirect në vend të 201 URI të Bërë, dhe procesi kryesor përdor këtë përgjigje për të kuptuar se cilin burim do të kërkojë më tej.