Skip to content

Commit 2016705

Browse files
committed
🔧 Extend seccurity section
1 parent 5e7df28 commit 2016705

3 files changed

Lines changed: 73 additions & 6 deletions

File tree

docs/productive/security/dependencies.rst

Lines changed: 62 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -279,6 +279,68 @@ Zeile 4:
279279
`Searching across multiple indexes
280280
<https://docs.astral.sh/uv/concepts/indexes/#searching-across-multiple-indexes>`_
281281

282+
Überprüft Package Attestations
283+
------------------------------
284+
285+
:term:`PyPI` :ref:`Package Attestations <package-attestations>` liefern mithilfe
286+
von `Sigstore <https://www.sigstore.dev>`_ einen kryptografischen Nachweis über
287+
die Herkunft eines Pakets gemäß :pep:`740`. Seit `gh-action-pypi-publish v1.11.0
288+
<https://github.com/pypa/gh-action-pypi-publish/discussions/281>`_ werden
289+
die Bescheinigungen auch automatisch generiert. Bis Ende 2025 nutzten mehr als
290+
50-Tsd. Projekte *Trusted Publishing*, und 17 % der Uploads enthielten
291+
Attestations. *Trusted Publishing* wurde zudem auf Organisationen und
292+
selbstverwaltete GitLab-Instanzen ausgeweitet.
293+
294+
.. seealso::
295+
* `PyPI in 2025: A Year in Review
296+
<https://blog.pypi.org/posts/2025-12-31-pypi-2025-in-review/>`_
297+
* `Are we PEP 740 yet? 🔏
298+
<https://trailofbits.github.io/are-we-pep740-yet/>`_
299+
300+
:pep:`740` definiert neben *Package Attestations* auch :abbr:`SLSA (Supply-chain
301+
Levels for Software Artifacts)`-Provenance-AttestationsFür Anwendungsfälle
302+
außerhalb von :term:`PyPI` kann `actions/attest
303+
<https://github.com/actions/attest>`_ SLSA-Provenienz- und
304+
:doc:`SBOM <sbom>`-Bescheinigungen für jedes Artefakt generieren.
305+
306+
Im Fall des Angriffs auf :ref:`Ultralytics <ultralytics>` hätte mit den
307+
Attestations erkannt werden können, welche Versionen aus einem kompromittierten
308+
Workflow stammten und welche legitim waren – ganz ohne manuelle forensische
309+
Analyse. Die Transparency-Logs von Sigstore bieten einen unabhängigen Prüfpfad
310+
mit exakten Zeitstempeln und Angaben zur Herkunft jedes veröffentlichten
311+
Artefakts.
312+
313+
Fügt zeitbasierte Abwehrmaßnahmen hinzu
314+
---------------------------------------
315+
316+
Wenn ein bösartiges Paket auf :term:`PyPI` veröffentlicht wird, ist es sofort
317+
weltweit verfügbar. Die Erkennungszeiten variieren – manche Angriffe werden
318+
innerhalb weniger Stunden entdeckt, während andere wochen- oder monatelang
319+
unbemerkt bleiben. 2025 gab es über 2.000 Malware-Meldungen, wovon 66 %
320+
innerhalb von vier Stunden bearbeitet wurden.
321+
322+
Mit dem Abwarten vor der Verwendung neu veröffentlichter Pakete erhaltet ihr
323+
zwar keine Garantie, aber das Risiko wird vermindert, dass die Community
324+
offensichtliche Bedrohungen aufzudeckt.
325+
326+
Moderne Paketmanager unterstützen zeitbasierte Filterung. :term:`uv` verfügt
327+
über die Option ``--exclude-newer``, und pip ≥ v26 hat die Option
328+
``--uploaded-prior-to`` mit demselben Zweck eingeführt wobei beide sich gemäß
329+
:pep:`700` auf Metadaten zur Upload-Zeit stützen.
330+
331+
Verwendet interne Paket-Repositories in euren Organisationen
332+
------------------------------------------------------------
333+
334+
In kleineren Organisationen kann ein einfacher Spiegel des :term:`PyPI`, der
335+
Pakete um eine Woche verzögert bereitstellt, bereits das Sicherheitsrisiko für
336+
die Organisation vermindern. Ihr solltet dann jedoch darauf achten, dass ihr für
337+
kritische Sicherheitspatches die Verzögerung aufheben könnt. Sofern ihr in eurer
338+
Organisation interne Paket-Repositories verwendet, könnt ihr darüberhinaus noch
339+
weitere Sicherheitsmaßnahmen treffen:
340+
341+
#. Automatisierte Security-Scans der Pakete
342+
#. Automatisiertes Bauen der Pakete mit *Trusted Publishing* und SLSA-Provenienz
343+
282344
----
283345

284346
Im folgenden schauen wir uns nun an, wie die Abhängigkeiten in unseren

docs/productive/security/environments.rst

Lines changed: 9 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -78,9 +78,12 @@ verwenden, :abbr:`z. B. (zum Beispiel)` mit:
7878
Überprüft eure GitHub-Actions
7979
-----------------------------
8080

81-
:ref:`zizmorcore` ist ein Tool zur statischen Analyse, das Sicherheitslücken in
82-
GitHub-Actions-Workflows aufspürt – darunter Template-Injection, nicht fixierte
83-
Aktionen, übermäßige Berechtigungen, das Offenlegen von Anmeldedaten sowie `mehr
84-
als 30 weitere Prüfregeln <https://docs.zizmor.sh/audits/>`_. ``zizmor`` erkennt
85-
Schwachstellen wie diejenigen, die durch :ref:`token_exfiltration` ausgenutzt
86-
wurden.
81+
`zizmor <https://docs.zizmor.sh>`_ ist ein Tool zur statischen Analyse, das
82+
Sicherheitslücken in GitHub-Actions-Workflows aufspürt – darunter
83+
Template-Injection, nicht fixierte Aktionen, übermäßige Berechtigungen, das
84+
Offenlegen von Anmeldedaten sowie `mehr als 30 weitere Prüfregeln
85+
<https://docs.zizmor.sh/audits/>`_. ``zizmor`` erkennt Schwachstellen wie
86+
diejenigen, die durch :ref:`token_exfiltration` ausgenutzt wurden.
87+
88+
.. seealso::
89+
* :ref:`zizmorcore`

docs/productive/security/index.rst

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -79,6 +79,8 @@ Token Exfiltration
7979
`Token Exfiltration Campaign via GitHub Actions Workflows
8080
<https://blog.pypi.org/posts/2025-09-16-github-actions-token-exfiltration/>`_
8181

82+
.. _ultralytics:
83+
8284
Ultralytics
8385
Im Dezember 2024 wurde `ultralytics
8486
<https://pypi.org/project/ultralytics/>`_ Opfer eines Supply-Chain-Angriffs,

0 commit comments

Comments
 (0)