⚠️ KMI waarschuwing: Code geel in Luxemburg Laatste update van KMI waarschuwingen voor België. KMI ↗ Kaart ↗ Artikel →
← Terug
Onderzoek onthult veiligheidsrisico's door Python-bytecode in PyPI-pakketten

Onderzoek onthult veiligheidsrisico's door Python-bytecode in PyPI-pakketten

Een recente empirische studie heeft een aanzienlijke kloof blootgelegd tussen de inspectie en de uitvoering van Python-pakketten. Terwijl de beveiliging van deze pakketten zich hoofdzakelijk richt op de broncode, kunnen Python-runtimes direct bytecode uitvoeren via .pyc-bestanden en gecompileerde modules. Dit creëert een blinde vlek waar kwaadwillenden misbruik van kunnen maken om detectie te omzeilen.

Bytecode-blootstelling in het ecosysteem

In een onderzoek getiteld "Beyond Source: An Empirical Study of Python Bytecode Security Risks", gepubliceerd op arxiv.org, analyseerden onderzoekers van de Utah State University meer dan een miljoen artefacten van de Python Package Index (PyPI). Hierbij identificeerden zij 7.388 artefacten die bytecode bevatten. Dit omvat 228.578 .pyc-bestanden, waarvan 28.193 bestanden geen bijbehorende broncode in het artefact hadden.

Deze bevindingen onderstrepen een risico dat al eerder werd gesignaleerd. Zo meldde csoonline.com dat aanvallers gecompileerde bytecode gebruiken om malware te verbergen, omdat veel vulnerability-scanners simpelweg geen gecompileerde open-source software lezen.

Analyse van de CPython-runtime

Het onderzoek richtte zich specifiek op de robuustheid van de CPython-runtime (versies 3.8 tot 3.14) bij het verwerken van kwaadaardige bytecode. De resultaten tonen aan dat de interpreter kwetsbaar is voor gemanipuleerde input. Door middel van 'fuzzing' werden 1.009 unieke runtime-bevindingen gedaan, waarbij veel gevallen wezen op symptomen van pointer-dereferentie.

Daarnaast vertoonden 261 groepen kenmerken van potentiële geheugen corruptie. Opvallend is dat 91,7% van deze groepen een stadium van uitvoering bereikte dat voorbij de gedocumenteerde onveilige grens van ingestie ligt. Volgens de onderzoekers op kunnen deze bytecode-gedragingen niet worden gereproduceerd vanuit reguliere Python-broncode, wat betekent dat bytecode een onafhankelijk veiligheidsrisico vormt.

Beperkingen van huidige beveiligingstools

De studie wijst uit dat bestaande tools voor analyse niet robuust genoeg zijn. Hoewel decompilers in staat zijn om voor het overgrote deel van de bestanden broncode te genereren, leiden gemanipuleerde bytecode-bestanden vaak tot crashes van de native processen of timeouts.

Deze problematiek sluit aan bij bredere zorgen over de Python-beveiliging. In het Python Security Handbook wordt gesteld dat CPython geen sterke validatie uitvoert op bytecode en grotendeels vertrouwt op de aanname dat de bytecode correct is gevormd. Malafide bytecode via .pyc-bestanden of marshal.load() kan leiden tot interpreter-crashes of zelfs volledige exploits, zoals stack-overflows.

Bredere context van Python-kwetsbaarheden

De risico's van bytecode vormen een aanvulling op de reeds bekende problemen in de Python-supply chain. Andere onderzoeken benadrukken de noodzaak van continue monitoring. Zo analyseerde een studie via springer.com de commit-geschiedenis van 361 open-source projecten op GitHub, waarbij werd vastgesteld dat beveiligingsproblemen in de broncode vaak gemiddeld 11 dagen overleven voordat ze worden opgelost.

Terwijl veel security-audits zich concentreren op statische analyse van broncode (SAST), concludeert de studie van de Utah State University via aipapers.ai dat het beveiligen van broncode alleen onvoldoende is. Er is een dringende noodzaak om ook de bytecode-laag te analyseren, zeker in omgevingen waar code wordt gedistribueerd zonder dat de broncode beschikbaar is.

Lees origineel artikel — Nieuws
Waardering
0
Stem mee op dit artikel
Discussie
Nog geen reacties. Wees de eerste!