Malware-resistente Python ohne das Rätselraten
Wir lieben Python. Es ist aus gutem Grund eine der beliebtesten Programmiersprachen der Welt: lesbar, flexibel, leistungsstark und wird von einer der lebendigsten Open-Source-Communities unterstützt. PyPI ist ein Triumph der öffentlichen Infrastruktur – Hosting von über einer halben Million Paketen – ein unglaublicher Beweis dafür, wie Open Source skalieren und Innovationen ermöglichen kann.
Aber mit dieser Skala kommt Komplexität. Und Komplexität ist heute ein Sicherheitsproblem.
Open Source kann sicher sein. Aber die Standardeinstellung "Vertraue einfach dem, was auf PyPI ist" reicht nicht mehr aus - vor allem, wenn Angreifer wissen, dass jedes Build-System, jedes Notebook und jede CI-Pipeline nur eine Pip-Installation von einem schlechten Tag entfernt ist.
Angreifer haben es bemerkt. Sie brauchen keine 0-Tage, wenn es nur darum geht, die Anmeldeinformationen eines Betreuers zu kompromittieren oder ein Paket hochzuladen, das gerade nah genug an etwas Beliebtes herankommt.
Aus diesem Grund haben wir Chainguard-Bibliotheken für Python entwickelt: um die Art und Weise zu ändern, wie Menschen Open-Source-Pakete erstellen, verteilen und konsumieren — beginnend mit Python.
Open Source ist nicht unsicher, aber die Standardeinstellungen sind
hier die aktuelle Realität: Das Verpackungssystem von Python wurde nicht für moderne Bedrohungen der Lieferkette entwickelt. Das ist kein Schlag für PyPI oder seine Betreuer - sie haben unglaubliche Arbeit geleistet, um die Infrastruktur zu skalieren und Missbrauch zu bekämpfen -, aber das Bedrohungsmodell hat sich geändert.
Aber wir glauben auch, dass die Standardeinstellung "was auch immer auf PyPI ist" nicht mehr gut genug ist, besonders wenn Pipelines automatisch Code einziehen, transitive Abhängigkeiten 12 Schichten tief gehen und eine einzige kompromittierte Version Tausende von Systemen infizieren kann, bevor sie bemerkt wird.
Das ist nicht theoretisch. Nach unseren Untersuchungen hätte der Wiederaufbau von Paketen aus der Quelle und die Überprüfung der Herkunft 98 % der bekannten schädlichen Pakete daran gehindert, jemals in der Produktion verwendet zu werden.
Also machten wir uns daran, das Modell umzudrehen. Anstatt "zu erkennen und zu reagieren", stellen wir sicher, dass bösartige Pakete es überhaupt nicht schaffen.
Sicherung jeder Phase der Lieferkette
So funktioniert es:
Wir bauen beliebte Python-Pakete aus ihren vorgelagerten Repos um. Wir stellen sicher, dass jedes Paket über einen Quellcode verfügt, den Sie lesen und prüfen können.
Wir tun dies in einer SLSA Level 2 gehärteten Bauumgebung mit vollständiger Isolierung und Reproduzierbarkeit.
Wir fügen jedem von uns veröffentlichten Paket eine signierte SBOM bei, damit Sie genau wissen, was sich darin befindet und woher es stammt.
Wir sperren jede Phase des Build- und Distributionszyklus: Beschaffung, Zusammenstellung, Signierung, Verpackung und Veröffentlichung.
Wenn wir kein Tag oder Commit finden können, das einem Release in der Upstream-Version eines Pakets entspricht, erstellen wir es nicht. So einfach ist das.
Wenn Vertrauen zusammenbricht: Lehren aus num2words
Möglicherweise haben Sie den jüngsten Kompromiss des num2words-Pakets gesehen. Es ist ein bekanntes Dienstprogramm, das Zahlen in Wörter umwandelt (denken Sie 42 → "zweiundvierzig"). Anfang dieses Monats erhielt ein böswilliger Akteur Zugriff auf das PyPI-Konto des Betreuers und veröffentlichte eine Backdoor-Version, die Anmeldeinformationen aus CI-Umgebungen exfiltrierte. StepSecurity hat hier die vollständige Aufschlüsselung.
Nun, hier ist der Schlüsselteil: Diese bösartige Version hat es nie in Chainguard-Bibliotheken geschafft. Wir haben versucht, ein Tag oder einen Commit im Repository des Upstream-Projekts zu finden. Es gab jedoch kein solches Tag und daher haben wir diese Version nicht veröffentlicht. So einfach ist das.
Kein Alarm. Kein Patch-Verschlüsseln.
Wenn Sie Chainguard-Bibliotheken für Python verwenden, sind Ihre Builds sauber. Ihr Risiko, minimiert. Und es gibt kein Aufwachen mit einer weiteren Lieferkettenwarnung.
Nicht nur standardmäßig sicher - wurde entwickelt, um verifizierbar zu sein
Mit Chainguard Libraries für Python erhalten Sie nicht nur sicherere Bibliotheken. Sie erhalten:
✅ Pakete, die aus der Quelle neu zusammengestellt wurden
✅ Nachweisbare Provenienz
✅ SLSA-konforme Builds
✅ Unterzeichnete SBOMs
Und vor allem: Malware-resistente Pakete, denen Sie tatsächlich vertrauen können.
Dies ist kein Wrapper. Dies ist ein grundlegendes Umdenken darüber, wie Python-Bibliotheken aufgebaut und bereitgestellt werden — basierend auf Open-Source-Prinzipien, aber mit gehärteten Bereitstellungsmechanismen.
Wir haben bewiesen, dass dies in Java in großem Maßstab funktioniert. Jetzt machen wir es in Python — und weitere Ökosysteme werden folgen. Und mit Chainguard Libraries erhalten Sie ein System, das funktioniert, weil es langweilig ist — vorhersehbare Builds, überprüfbare Provenienz und nichts, wonach Sie nicht gefragt haben.
Du schreibst Python. Wir stellen sicher, dass es sicher läuft. Kontaktieren Sie uns noch heute, um mehr zu erfahren.
Share this article
Related articles
- product
Forrester TEI study: Chainguard Containers delivered 233% return on investment
Dustin Kirkland, SVP of Engineering
- product
Expanding Chainguard’s Helm chart coverage and deepening user experiences
Sam Katzen, Staff Product Marketing Manager, and Tazin Progga, Senior Product Manager
- product
Introducing Fulfillment Dashboard: New artifact requests are now self-serve
Sam Katzen, Staff Product Marketing Manager, and Reid Tatoris, VP of Product
- product
Super SBOMs: See exactly what's inside
Tony Camp, Staff Product Manager
- product
Security baked into your software supply chain: The combined benefit of JFrog and Chainguard
Mandy Hubbard, Senior Technical Product Marketing Manager, and Dafna Zahger Bernanka, JFrog Director of Product Marketing, Security
- product
Introducing automatic, short-lived credentials for Chainguard Libraries for Python
Jason Hall, Principal Software Engineer, and Ross Gordon, Staff Product Marketing Manager