Jak škodlivé balíčky v PyPI ohrožují bezpečnost softwaru

  Novinky

V digitálním věku, kdy se softwarový vývoj neustále zrychluje a závisí na sdílených knihovnách a repozitářích, se bezpečnost dodavatelského řetězce stává stále palčivějším tématem. Nedávný objev dvou škodlivých balíčků v Python Package Index (PyPI), oblíbeném repozitáři pro sdílení a distribuci softwarových balíčků psaných v Pythonu, odhalil sofistikovanou techniku zvanou DLL side-loading. Tato technika je využívána k obejití detekce antivirovými programy a k provedení škodlivého kódu, čímž se otevírá nová fronta v boji proti kybernetickým hrozbám.

Co je DLL Side-Loading?

DLL side-loading je technika, která umožňuje útočníkům spustit škodlivý kód v rámci legitimní aplikace tím, že zneužijí způsob, jakým aplikace načítá dynamické knihovny (DLL). Tento postup často využívá skutečnosti, že mnoho aplikací hledá a načítá knihovny DLL z určitých, ne vždy bezpečných umístění na disku. Útočník může umístit škodlivou knihovnu DLL do tohoto očekávaného umístění a pokud aplikace tuto knihovnu načte, dojde k spuštění škodlivého kódu.

Tato metoda se stala oblíbeným nástrojem kybernetických zločinců, protože může efektivně obejít některé bezpečnostní kontroly tím, že se maskuje za legitimní procesy. Příkladem může být útok, při kterém bylo zneužito npm balíčku s názvem „aabquerys“, který také použil techniku DLL side-loading k provedení škodlivého kódu schopného nasadit vzdálený přístupový trojan.

Popis škodlivých balíčků

Cyberbezpečnostní výzkumníci nedávno odhalili dva škodlivé balíčky na Python Package Index (PyPI), které používaly techniku DLL side-loading k obejití bezpečnostních opatření a spuštění škodlivého kódu. Tyto balíčky, nazvané NP6HelperHttptest a NP6HelperHttper, byly staženy 537, respektive 166krát, než byly odstraněny z repozitáře.

Tyto škodlivé balíčky byly navrženy tak, aby zneužívaly důvěry vývojářů v repozitáře otevřeného zdrojového kódu. Napodobením názvů legitimních balíčků se snažily o tzv. typosquatting – techniku, kdy se útočníci snaží vytvořit balíčky s podobnými nebo snadno zaměnitelnými názvy, aby oklamali vývojáře, kteří mohou omylem stáhnout škodlivou verzi.

Analýza škodlivého kódu

Klíčovou součástí těchto škodlivých balíčků byl skript setup.py, který měl za úkol stáhnout dva soubory: legitimní spustitelný soubor od pekingské společnosti Kingsoft Corporation (označený jako „ComServer.exe“) a škodlivou knihovnu DLL (označenou jako „dgdeskband64.dll“). Tento proces byl navržen tak, aby umožnil side-loading škodlivé knihovny DLL, čímž se škodlivý kód vyhnul detekci.

Spustitelný soubor „ComServer.exe“ byl zranitelný vůči technice DLL side-loading, což útočníkům umožnilo spustit škodlivý kód skrytý v knihovně „dgdeskband64.dll“ bez upozornění bezpečnostních systémů. Tento škodlivý DLL poté navázal komunikaci s doménou kontrolovanou útočníkem („us.archive-ubuntu[.]top“), odkud stáhl soubor ve formátu GIF. Tento soubor však ve skutečnosti nebyl obrázkem, ale shellcodem pro Cobalt Strike Beacon, nástroj používaný pro tzv. red teaming a post-exploitační fáze kybernetických útoků.

Cíle a metody útočníků

Použití Cobalt Strike Beacon shellcodu naznačuje, že útočníci měli za cíl získat dlouhodobý přístup k napadeným systémům, což jim umožňovalo provádět další škodlivé aktivity, jako je sběr dat, šíření malware nebo další průnik do sítě. Tento přístup zdůrazňuje sofistikovanost a dlouhodobé cíle kybernetických útočníků, kteří zneužívají otevřené repozitáře softwaru jako vektor pro své útoky.

Dopady na bezpečnost dodavatelského řetězce

Útoky pomocí techniky DLL side-loading prostřednictvím repozitářů otevřeného zdrojového kódu, jako je PyPI, poukazují na zranitelnost softwarového dodavatelského řetězce. Tyto útoky nejen kompromitují bezpečnost koncových uživatelů, ale také erodují důvěru ve vývojářské ekosystémy a nástroje, které jsou zásadní pro moderní vývoj softwaru.

Příkladem může být nedávný útok na SolarWinds, kde útočníci infiltrovali softwarový dodavatelský řetězec společnosti a zneužili jej k distribuci škodlivého kódu desítkám tisíců jejích zákazníků. Tento incident zdůrazňuje, jak mohou být i velmi sofistikované organizace zranitelné vůči útokům na dodavatelský řetězec.

Opatření a doporučení

  1. Důkladná kontrola závislostí: Vývojáři by měli pečlivě kontrolovat všechny závislosti svých projektů, včetně těch z otevřených repozitářů. Nástroje jako „OWASP Dependency-Check“ mohou pomoci identifikovat známé zranitelnosti v použitých knihovnách.
  2. Používání privátních repozitářů: Organizace by měly zvážit vytvoření a používání privátních repozitářů pro správu závislostí, kde mohou lépe kontrolovat a auditovat balíčky.
  3. Vzdělávání a osvěta: Je důležité, aby se vývojáři pravidelně vzdělávali v oblasti bezpečnostních hrozeb a osvojili si nejlepší postupy pro bezpečný vývoj softwaru.
  4. Implementace automatizovaného sledování zranitelností: Využití nástrojů pro automatizované sledování zranitelností a zabezpečení kódu může pomoci včas odhalit potenciální hrozby.
  5. Zabezpečení procesů CI/CD: Zabezpečení procesů Continuous Integration/Continuous Deployment (CI/CD) včetně revize kódu, automatizovaných bezpečnostních testů a důkladných auditů může výrazně snížit riziko zneužití.

Závěr

Vývoj softwaru v současné době neodmyslitelně zahrnuje využívání sdílených knihoven a repozitářů, které přináší významné výhody v rychlosti a efektivitě. Nicméně, jak ukazují nedávné události, tato praxe také otevírá dveře sofistikovaným kybernetickým hrozbám, které mohou zneužívat důvěru a otevřenost softwarového ekosystému. Útoky jako ty, které zneužily Python Package Index (PyPI) prostřednictvím techniky DLL side-loading, poukazují na neustále se vyvíjející povahu kybernetických hrozeb a zdůrazňují potřebu neustálé ostražitosti a inovace v oblasti kybernetické bezpečnosti.

Případy, jako bylo zneužití npm a PyPI, zdůrazňují, že kybernetická bezpečnost není jen záležitostí individuálních organizací, ale vyžaduje koordinované úsilí celého softwarového průmyslu. Spolupráce, sdílení informací o hrozbách a společné normy pro bezpečnostní postupy mohou posílit obranu proti kybernetickým útočníkům.

Zabezpečení softwarového dodavatelského řetězce by mělo být prioritou pro všechny organizace zapojené do vývoje a distribuce softwaru. Přijetí nejlepších postupů, jako je pečlivá kontrola závislostí, používání privátních repozitářů, vzdělávání vývojářů a implementace robustních bezpečnostních procesů, může významně přispět k minimalizaci rizik.

V konečném důsledku je důležité si uvědomit, že v oblasti kybernetické bezpečnosti není nikdy možné dosáhnout stavu úplné bezpečnosti. Nicméně, proaktivní přístup, neustálé vzdělávání a adaptace na nově se objevující hrozby mohou organizacím poskytnout silný základ pro obranu proti stále sofistikovanějším kybernetickým útokům.

Napiš komentář