Skryté zraniteľnosti v starom kóde často vytvárajú neviditeľné riziká pre moderné vývojové prostredia.
Jeden takýto problém sa nedávno objavil v ekosystéme Python, kde zastarané bootstrap skripty spojené s nástrojom zc.buildout vystavujú používateľov útokom na prevzatie domény.
Tieto skripty, určené na automatizáciu inštalácie závislostí balíkov, obsahujú pevne zakódované odkazy na externé domény, ktoré už nie sú pod kontrolou pôvodných správcov.
Jadrom problému je špecifické správanie v týchto skriptoch, kde sa pokúšajú získať zastaraný distribučný balík z python-distribute(.)org.
Táto doména je od roku 2014 opustená a momentálne je zaparkovaná a je možné ju zakúpiť. Ak by túto doménu získal aktér hrozby, mohol by obsluhovať škodlivé dáta, ktoré by automaticky stiahol a spustil ktorýkoľvek vývojár spustiaci kompromitovaný bootstrap skript.
Pomôcky na balenie používané komunitou PyPI začiatkom roku 2010 (zdroj – Reversinglabs)
To vytvára priamu cestu pre útoky na dodávateľský reťazec a obchádza štandardné bezpečnostné kontroly.
Bezpečnostní analytici Reversinglabs identifikovali túto zraniteľnosť a poznamenali, že ovplyvňuje niekoľko známych balíkov vrátane slapos.core, pypiserver a tornado.
Hoci mnohí vývojári prešli na novšie štandardy balenia, tieto staršie súbory často pretrvávajú v úložiskách.
Zraniteľnosť sa nespustí počas štandardnej inštalácie pip, ale zvyčajne vyžaduje manuálne spustenie alebo vyvolanie prostredníctvom procesu zostavovania, ako je napríklad Makefile.
Po aktivácii skript slepo dôveruje externému zdroju, čím vzniká značné riziko dodávateľského reťazca podobné incidentu fsevents v registri npm.
Analýza vykonávacieho mechanizmu
Technické jadro tejto zraniteľnosti spočíva v nezabezpečenom spôsobe, akým bootstrap skript spracováva riešenie závislostí. Logika kódu špecificky kontroluje prítomnosť distribučného balíka.
Načítanie kódu a spustenie distribučného nastavenia v súbore bootstrap.py (zdroj – Reversinglabs)
Ak sa nenájde, skript spustí rutinu sťahovania pomocou vstavaných knižníc urllib v Pythone. Ako je znázornené na obrázku vyššie, distribuované nastavenie sa načíta a spustí v bootstrap.py; skript explicitne požaduje obsah od už neexistujúceho python-distribute(.)org.
Rozhodujúce je, že odpoveď z tejto adresy URL je odovzdaná priamo funkcii exec(), ktorá spustí kód okamžite bez akejkoľvek kontroly integrity alebo overenia podpisu.
Skript dôkazu konceptu, ktorý využíva zraniteľnosť v slapos.core (zdroj – Reversinglabs)
Na overenie tohto vektora výskumníci vytvorili osvedčenie o koncepte zamerané na slapos.core. Skript Proof-of-concept využíva zraniteľnosť v slapos.core, PoC pracuje tak, že manipuluje s argumentmi príkazového riadka, aby prinútil skript prejsť na zraniteľnú cestu sťahovania.
Výsledok výstupu terminálu po spustení skriptu PoC potvrdzuje, že skript sa úspešne pripojí k externej doméne, čo dokazuje, že akýkoľvek kód, ktorý je tam hosťovaný, by sa spúšťal s plnými oprávneniami používateľa.
Sledujte nás na Google News, LinkedIn a X a získajte ďalšie okamžité aktualizácie, nastavte CSN ako preferovaný zdroj v Google.








