Python Package Index
Verbesserung der Sicherheit des Python Ökosystems in Zusammenarbeit mit Trail of Bits
Eckdaten
- Status:
- Laufend
- Investition
- 1.056.672,77 €
- Investitionsjahr(e)
- 2023, 2024
Python ist eine Programmiersprache, die häufig für die Entwicklung von Websites und Software, Aufgabenautomatisierung, Datenanalyse und Datenvisualisierung verwendet wird. In Umfragen zu den am häufigsten verwendeten Programmiersprachen rangiert sie oft auf Platz zwei und bei den Sprachen, die Entwickler*innen lernen möchten, auf Platz eins. Die meisten Python-Entwickler*innen verlassen sich auf FOSS-Pakete, um ihre Anwendungen sicherer und effizienter zu entwickeln, indem sie getesteten und spezialisierten Code wiederverwenden, und PyPI (The Python Package Index) ist eines der meistgenutzten Repositories, um diese Pakete zu erhalten.
Der STF investiert in die Entwicklung, Wartung und Unterstützung des PyPI-Paket-Repositorys sowie einiger seiner häufig genutzten und kritischen Pakete, auf die sich Entwickler*innen zur Sicherung ihrer Anwendungen verlassen. Ergänzend zu dieser Arbeit wird dieses Projekt auch die Sigstore Code-Signing-Community unterstützen und die Integration mit den Ökosystemen von Python, Ruby und Rust verbessern, um sicherzustellen, dass Entwickler*innen sich auf Paket-Repositories wie PyPI verlassen können, ohne Attacken im Zusammenhang mit Lieferketten oder anderen Abhängigkeiten zu riskieren.
Warum ist das wichtig?
Diese Arbeit zielt auf Python-Pakete ab, auf welche die Wirtschaft, Wissenschaft und die Zivilgesellschaft am stärksten angewiesen sind. Darüber hinaus werden kritische Verbesserungen an der Infrastruktur dieser Komponenten dazu beitragen, die sichere Entwicklung und künftige Wartbarkeit zu gewährleisten, womit auch langfristig in die Sicherheit investiert wird.
Schließlich werden die Sigstore-Integrationen dazu beitragen, das Python-, Ruby- und Rust-Ökosystem vor Angriffen auf die Lieferkette zu schützen. Das hat das deutsche Bundesministerium für Sicherheit in der Informationstechnik in seinem Bericht zur Lage der IT-Sicherheit in Deutschland 2022 als eine der drei größten Bedrohungen für die Wirtschaft bezeichnet.
Was unterstützen wir?
Folgendes sind die Projekte, die von dieser Arbeit betroffen sein werden:
- PyCA Cryptography ist ein Top-20-Python-Paket, das moderne und qualitativ hochwertige APIs für kryptografische Operationen sowohl auf hoher als auch auf niedriger Ebene bietet. Eine nennenswerte Einschränkung der aktuellen APIs von PyCA Cryptography ist das Fehlen einer X.509-Zertifikatsvalidierung. Ein erfolgreicher Abschluss dieser Arbeit würde einen signifikanten und positiven Einfluss auf die allgemeine Sicherheitslage von in Python geschriebenem kryptografischem Code haben: PyCA Cryptography ist die beliebteste Kryptografie-Bibliothek für Python, mit fast 160 Millionen PyPI-Downloads pro Monat. Die Verfügbarkeit einer ausgereiften und missbrauchsresistenten API für die Validierung von X.509-Zertifikaten würde es Tausenden von kritischen Python-Paketen ermöglichen, von ad-hoc und fehleranfälligen Lösungen, die auf pyOpenSSL und anderen Legacy-Paketen aufbauen, wegzukommen und so die allgemeine Sicherheitslage der PKI-Ökosysteme zu verbessern, die TLS und andere kritische Komponenten des Internets sichern.
- BoringSSL ist ein leichtgewichtiger und moderner Fork von OpenSSL und eines der von PyCA Cryptography unterstützten Backends. Allerdings ist das BoringSSL-Backend nicht auf Funktionsparität mit den OpenSSL- oder LibreSSL-Backends. Die Verbesserung der Parität zwischen BoringSSL und OpenSSL würde die Anwendbarkeit und Nutzbarkeit von PyCA Cryptography auf allen Plattformen und in allen Einsatzbereichen verbessern, in denen OpenSSL kein akzeptables oder nutzbares Backend ist (aus Sicherheitsgründen oder weil es gegen Policies verstößt). Es würde auch die allgemeine Sicherheit von PyCA Cryptography und allen nachgelagerten Projekten verbessern, indem unnötige Abhängigkeiten von OpenSSL reduziert werden.
- pyOpenSSL ist ein Top-50-Paket auf PyPI mit ungefähr 62 Millionen Downloads pro Monat, wird aber auch als ein veraltetes Paket betrachtet. Viele seiner APIs sind missbrauchsanfällig und funktionell doppelt vorhanden im Vergleich zu sichereren, einfacher zu nutzenden APIs in PyCA Cryptography. Um die unnötige Nutzung von pyOpenSSL zu verhindern und die Nutzer zu ermutigen, auf PyCA Cryptography umzusteigen, haben die pyOpenSSL-Maintainer eine Reihe von veralteten APIs identifiziert, die für eine Abschaffung und Entfernung geeignet sind. Ein weiteres Ziel ist es, die pyOpenSSL-Testsuite zu aktualisieren, die dem OpenSSL-Ökosystem hilft, schwerwiegende Bugs und Defekte zu finden, bevor sie die Endnutzer erreichen. Damit wird auch auch die allgemeine Wartbarkeit und der Zustand von pyOpenSSL selbst verbessert.
- M2Crypto ist ein veralteter Low-Level-Python-Wrapper für OpenSSL, mit vielen bestehenden Usern. Seine öffentlichen APIs sind direkte Schnittstellen zu OpenSSLs low level und unsicheren APIs, was bedeutet, dass die Verwendung von M2Crypto zu unsicheren Implementierungen führen kann. Der Betreuer von M2Crypto sieht das Projekt in einem “veralteten” Zustand, es sind vor allem Arbeiten rund um Kompatibilität und Fehlerbehebungen, welche einen Großteil der Wartungsarbeiten ausmachen. Im Rahmen dieses Projektes werden diverse Kompatibilitätsarbeiten vorgenommen, die darauf abzielen, viele der APIs von M2Crypto auf sichere Shims über PyCA Cryptography zu migrieren. Zusätzlich wird eine Übersicht über die Abhängigkeiten von M2Crypto erstellt, um APIs zu identifizieren, die aufgrund mangelnder Nutzung sicher beendet werden können (und eventuell komplett entfernt werden können). Diese Arbeit würde es einem beträchtlichen Teil des kryptographischen Ökosystems von Python ermöglichen, auf transparente Weise zu einer sichereren und aktiver gepflegten Abhängigkeit für kryptographische Primitive und Bausteine zu wechseln.
- PyPI ist das offizielle Repository für Drittanbieter-Software für Python. Warehouse ist eine Neufassung der ursprünglichen PyPI-Codebasis und hat erhebliche Altlasten von seinem Vorgänger geerbt. Ein Großteil dieses Verhaltens erfüllt in der aktuellen Codebasis keinen wichtigen Zweck mehr und sollte entfernt oder überarbeitet werden, um die allgemeine Wartbarkeit und Entwicklungsgeschwindigkeit zu verbessern, was jedoch aus Zeitmangel nicht geschehen ist. Diese Arbeit würde die allgemeine Wartbarkeit von Warehouse verbessern, indem Komponenten entfernt oder überarbeitet werden, die für die Betreuer*innen lästig geworden sind. Sie trägt auch dazu bei, sicherheitskritische Komponenten von Warehouse (die AuthN/Z-Schichten und API-Tokens) zu vereinfachen, sodass sie leichter zu prüfen und umfassend zu testen sind.
- Die Programmiersprache Python enthält das ssl-Modul, das eine SSL/TLS-API bereitstellt. Diese API ist im Python-Ökosystem aufgrund ihrer Standardverfügbarkeit weit verbreitet, birgt aber auch erhebliche Risiken in Bezug auf Nutzbarkeit, Sicherheit und Wartbarkeit. Dieses Projekt wird dazu beitragen, die Bemühungen um eine einheitliche TLS-Standardisierung wiederzubeleben, dringend benötigte Aktualisierungen der API aus den letzten sechs Jahren einzubeziehen und APIs zu verwerfen, die durch andere ersetzt wurden. Dies hätte erhebliche Auswirkungen auf den allgemeinen Zustand, die Benutzerfreundlichkeit und die Wartungsfreundlichkeit der Python-Standardbibliothek.
- Sigstore ist ein Open-Source-Projekt, das es Entwickler*innen und Benutzer*innen ermöglicht, Code zu signieren und zu verifizieren. Diese Arbeit würde Warehouse mit der allgemeinen Verlagerung des Paketmanagement-Ökosystems hin zu Sigstore und weg von Ad-hoc-PGP-Signaturen in Einklang bringen und die Software-Lieferkette für Nutzer weiter absichern. Darüber hinaus werden die Entwicklung einer einheitlichen Paketierungs-Client-Politik über alle Ökosysteme hinweg und Verbesserungen an den Rust- und Ruby-Sigstore-Clients dazu beitragen, den Wert des Sigstore-Ökosystems zu steigern und die Akzeptanz dieser neuen Bemühungen unter FOSS-Softwareentwickler*innen zu fördern.