Zum Inhalt springen
← Zurück zum Cyberlagebild
Zuletzt aktualisiert 01.10.2026 00:25

GitPython: --no-index bypasses diff unsafe-option protections and enables a blind local-file content oracle

CVSS –1 Quelle

Beschreibung

### Zusammenfassung GitPython 3.1.59 blockiert einen zuvor verfügbaren lokalen Datei-Lesepfad durch unsichere Git-Diff-Optionen wie -O/--orderfile. Die High-Level-Diff-API erlaubt jedoch weiterhin --no-index mit dem Standard allow unsafe options= Falsch. --no-index verändert die Semantik der Pfadargumente: statt Repository-relativer Pfadspecs interpretiert Git sie als willkürliche Dateisystempfade. In Kombination mit der Option -I/--ignore-matching-lines erzeugt dies ein inhaltsabhängiges boolesches Orakel über eine vom Anrufer ausgewählte lokale Datei. Dies wurde gegen das veröffentlichte GitPython 3.1.59 Rad reproduziert. Der ursprüngliche unsichere Optionspfad wird in 3.1.59 blockiert, während dieser alternative Pfad erreichbar bleibt, ohne allow unsafe options=True zu setzen. ### Details Bestätigte API-Oberfläche: repo.index.diff( None, no index=True, I=pattern, paths=[baseline path, target path], create patch=True, ) Das relevante Verhalten ist: 1. --no-index macht die beiden Werte, die über paths filesystem operanden statt repository pathspecs geliefert werden. 2. -I/--ignore-matching-lines lässt Gits Ergebnis davon abhängen, ob der gelieferte reguläre Ausdruck mit dem relevanten Dateiinhalt übereinstimmt. 3. GitPython zeigt das resultierende Bit durch unterscheidbares Verhalten: - Matching-Bedingung: normale Rückkehr mit einem leeren DiffIndex - Nicht-Matching-Bedingung: GitCommandError mit Exit-Status 1 Eine Anwendung, die von Angreifern beeinflusste Diff-Optionen und Pfade weiterleitet und die Erfolgs- / Fehler-Unterscheidung freigibt, kann daher wiederholt abgefragt werden, um ein erratenes lokales Single-Line-Geheimnis wiederherzustellen. Das Problem wurde mit dem Standard allow unsafe options= bestätigt. Falsch. Das Verhalten erfordert nicht, dass der Anrufer sich explizit für den unsicheren Optionsmodus von GitPython entscheidet. Verifizierte beabsichtigte Sicherheitsgrenze: GitPython 3.1.58 akzeptiert den früheren lokalen Eingabepfad -O/-orderfile. - GitPython 3.1.59 lehnt den gleichen Pfad mit UnsafeOptionError ab. GitPython 3.1.59 erlaubt weiterhin den oben beschriebenen --no-index-Alternativpfad. Dies scheint ein alternativer Weg zu der gleichen Vertraulichkeitseigenschaft für lokale Dateien zu sein, die durch das Härten der 3.1.59-Diff-Option geschützt werden soll. ### PoC Ein Minimalreproduzierer, ein kontrollierter Extraktionsdemonstrator, eine Beweismatrix und eine vorgeschlagene Sanierung sind im beigefügten Paket enthalten. [gitpython-3159-maintainer-evidence.zip](https://github.com/user-attachments/files/31123571/gitpython-3159-maintainer-evidence.zip) Der minimale Reproduzierer erstellt nur temporäre, vom Forscher kontrollierte Dateien und demonstriert das folgende Prädikat: korrektes Präfix -> normales GitPython gibt falsches Präfix zurück -> GitCommandError(status=1) Im kontrollierten Extraktionstest habe ich drei unabhängige zufällige Einzellinienwerte generiert und alle drei genau durch wiederholte Aufrufe der GitPython High-Level-API wiederhergestellt. Ergebnis: 3/3 wiederhergestellt. Der Extraktionsgurt installiert auch einen Python-Audit-Hook, der den direkten Python-Open-Zugriff auf die Zieldatei während der Orakelphase ablehnt. Das inhaltsabhängige Lesen wird daher b ..

HerstellerOracle
Produktgitpython
Produktfamiliepip
Betroffene Versionen>= 3.1.59, < 3.1.60
Behobene Versionen3.1.60

Quellen & weiterführende Informationen

Hier werden ausschließlich tatsächlich zu dieser Schwachstelle gespeicherte Quellenbelege angezeigt.

Was ist zur Behebung zu tun?

Auf eine behobene Version aktualisieren: 3.1.60.

PrioritätGrün
EinordnungPlanbar behandeln und überwachen.

Empfohlene Schritte

  • Betroffene Systeme identifizieren: Oracle gitpython.
  • Exposition prüfen: Internet-Erreichbarkeit, Admin-Oberflächen, VPN, Mail- oder Webdienste.
  • Update/Rollout auf behobene Version vorbereiten und priorisiert einspielen.
  • Nacharbeiten dokumentieren: betroffene Assets, Maßnahme, Zeitpunkt, Restrestrisiko.

Übergangsmaßnahmen

  • Zugriff auf betroffene Dienste auf vertrauenswürdige Netze einschränken.
  • WAF/IDS/EDR-Regeln und Hersteller-IOCs aktivieren, sofern verfügbar.
  • Nicht benötigte Funktionen, Plugins oder Dienste temporär deaktivieren.