Worum es geht
Beim Dateiendpunkt von OpenAtlas beeinflusste „size“ den Verzeichnispfad. Mit einem niedrig privilegierten Konto ließ sich der vorgesehene Bereich verlassen und auf Dateien außerhalb des Upload-Verzeichnisses zugreifen.
Was ich gefunden habe
In /display/<filename> wurde „size“ zur Auswahl eines Unterverzeichnisses genutzt. Der Wert war nicht auf die tatsächlich erwarteten Größen oder Verzeichnisnamen begrenzt und floss direkt in die Pfadbildung ein.
Dadurch konnte ein eingeloggter Benutzer den Zielpfad aus dem vorgesehenen Bereich herauslenken. Technisch ist das eine Path-Traversal-/Local-File-Inclusion-Situation.
Spannend wird das bei Konfigurationsdateien: Datenbank-Zugangsdaten, Flask-Secrets oder ähnliche Schlüssel können Folgeangriffe ermöglichen, die weit über das ursprüngliche File-Read hinausgehen.
Warum das relevant ist
Der Angriff setzt eine gültige, niedrig privilegierte Sitzung voraus. Entscheidend ist danach, welche Dateien für den Prozess lesbar sind. Gerade Konfigurationen und Secrets können aus einem File-Read sehr schnell ein deutlich größeres Problem machen.
Mögliche Auswirkung
- Lesen von Dateien außerhalb des vorgesehenen Verzeichnisses (z. B. Konfiguration/Secrets) durch authentifizierte Nutzer mit minimalen Rechten.
Behebung
- Auf OpenAtlas 8.13.0 oder eine neuere Version aktualisieren.
- Den Parameter „size“ ausschließlich gegen eine feste Allowlist erwarteter Werte prüfen.
- Dateipfade nach dem Auflösen normalisieren und sicherstellen, dass das Ergebnis innerhalb des vorgesehenen Basisverzeichnisses bleibt.
- Secrets nicht unnötig im Anwendungspfad ablegen und Dateirechte nach dem Least-Privilege-Prinzip setzen.
Versionen
Disclosure Timeline
- Entdeckung
Im Rahmen eines On-Premise-Penetrationstests identifiziert.
- Bericht übermittelt
Technische Details und Reproduktion an den Hersteller gesendet.
- Fix bestätigt
OpenAtlas informierte über die Behebung des Findings.
- CVE-Zuweisung
CVE-ID im koordinierten Disclosure-Prozess erhalten.