flawopen.com/Teardowns/cve-2026-104286-fortimail-ibe-path-traversal
CVE-2026-104286: FortiMail-IBE-Pfad-Traversal
CVE-2026-104286 ermöglicht nicht authentifizierten HTTP(S)-Anfragen, per Pfad-Traversal Dateien auf anfälligen FortiMail-Systemen zu schreiben. Fortinet meldet aktive Ausnutzung; deaktivieren Sie IBE oder beschränken Sie den Webzugriff, untersuchen und aktualisieren Sie.[1], [5]
Stellen Sie sich einen Postraum vor, in dem ein Mitarbeiter Anhänge ablegt. Der Fehler lässt eine Anfrage einen irreführenden Ordnerpfad angeben und eine Datei außerhalb des vorgesehenen Bereichs schreiben. Die Übergangsmaßnahme schließt IBE oder beschränkt den Zugriff auf die Weboberfläche, während Sie aktualisieren und nach früherem Zugriff suchen.[1], [5]
Kernkonzepte & Begriffe
Path Traversal (CWE-22)- Nicht vertrauenswürdige Pfadbestandteile verlassen das vorgesehene Verzeichnis. Fortinet beschreibt beliebige Dateischreibvorgänge auf betroffenen FortiMail-Systemen.[1], [6]
Identity-Based Encryption (IBE)- FortiMail-Funktion für verschlüsselte Nachrichtenabläufe. Die temporäre Maßnahme des Herstellers ist, IBE zu deaktivieren; berücksichtigen Sie betriebliche Folgen.[1], [5]
Framework-Zuordnungen
- CWE-Referenz für die in diesem Leitfaden beschriebene Schwachstelle: CWE-22
- CISA KEV — aufgenommen am 2026-10-01 — CVE-2026-104286
Ursachenanalyse
Fortinet beschreibt CVE-2026-104286 als Path-Traversal-Schwachstelle, über die nicht authentifizierte HTTP- oder HTTPS-Anfragen Dateien schreiben können. Die Firmware ist proprietär; der öffentliche Hinweis enthält weder verwundbare Quellzeilen noch einen Patch-Diff, und dieser Artikel erfindet sie nicht. Öffentliche Behördenhinweise bestätigen die beliebige Dateischreibwirkung, die Ausnutzung und Versionshinweise, beschreiben aber nicht den internen FortiMail-Handler. Fortinets Hinweis ist die Quelle für die Übergangsmaßnahme, IBE abzuschalten oder den Webzugriff einzuschränken, sowie für die veröffentlichten IOCs. Dämmen Sie das Gerät ein, untersuchen Sie es und installieren Sie anschließend das passende Fixrelease; ein fehlender IOC-Treffer beweist keine Sicherheit. Die Beschreibung im CVE-Datensatz nennt 7.2.0–7.2.9, 7.4.0–7.4.8, 7.6.0–7.6.6 und 8.0.0–8.0.1. Die strukturierte Versionstabelle nennt niedrigere Obergrenzen für 7.4 und 7.6 und zusätzlich 7.0.0–7.0.9. Der Lösungsabschnitt desselben Datensatzes nennt niedrigere kommende Versionen — 7.4.8, 7.6.6, 8.0.1 und 7.2.10 — und widerspricht damit sowohl den betroffenen Versionen im Datensatz als auch dem kanadischen Hinweis vom 1. Oktober. Nutzen Sie diesen datierten Behördenhinweis als veröffentlichte Handlungsgrundlage und bestätigen Sie aktuelle Verfügbarkeit sowie den Status von 7.0 bei Fortinet; leiten Sie aus den widersprüchlichen CNA-Feldern keine korrigierte Version ab.[1], [3], [5], [4], [6], [7]
Betriebsmatrix: Versionsumfang und erste Reaktion
| Bereich | Aussage der maßgeblichen Quellen | Maßnahme für Betreiber |
|---|---|---|
| FortiMail 7.0 | NVD/CNA-Daten führen 7.0.0–7.0.9 auf; die offiziellen Zusammenfassungen aus Kanada und Frankreich nennen den Zweig 7.0 nicht. Beschreibung und Tabelle desselben Datensatzes weichen außerdem bei den Obergrenzen für 7.4 und 7.6 voneinander ab. Der Lösungsabschnitt nennt außerdem niedrigere kommende Versionen (7.4.8, 7.6.6, 8.0.1 und 7.2.10), im Widerspruch zu den betroffenen Bereichen und dem kanadischen Hinweis. | Lassen Sie den Status von Fortinet bestätigen; leiten Sie aus einem fehlenden Zweig keine Sicherheit ab. |
| FortiMail 7.2 | Die kanadische Warnung empfiehlt ein Upgrade auf Zweig 7.4 oder höher. | Planen Sie den Wechsel auf einen unterstützten, korrigierten Zweig; nehmen Sie keinen Patch für 7.2 an. |
| FortiMail 7.4 / 7.6 / 8.0 | Laut kanadischer Warnung sind 7.4.9, 7.6.7 beziehungsweise 8.0.2 die korrigierten Versionen. | Nutzen Sie den kanadischen Hinweis AV26-989 als veröffentlichte Versionsgrundlage; prüfen Sie Verfügbarkeit und Support vor dem Upgrade in Fortinets aktuellem Hinweis. Verwenden Sie die niedrigeren CNA-Grenzen nicht ohne Bestätigung. |
| Eindämmung und Untersuchung | Fortinet meldet Ausnutzung und veröffentlicht Kompromittierungsindikatoren; als Übergangsmaßnahme soll IBE deaktiviert oder der Webzugriff eingeschränkt werden. | Sichern Sie Beweise, setzen Sie die Übergangsmaßnahme um, prüfen Sie Fortinets Indikatoren, patchen Sie und bewerten Sie eine mögliche Kompromittierung. |
Schritt-für-Schritt Angriffsablauf
Quellcode: Verwundbar vs. Sicher
Der FortiMail-Firmwarecode und der Hersteller-Patch-Diff sind nicht öffentlich. Dies ist daher ein allgemeines Python-Abwehrmuster, kein Fortinet-Code und keine Reproduktion. Es öffnet ein vertrauenswürdiges Verzeichnis einmal, verwendet einen vom Server erzeugten undurchsichtigen Dateinamen und erstellt eine neue Datei relativ zum Verzeichnisdeskriptor mit exklusiver Anlage und No-Follow-Flags. Das Muster ist POSIX-spezifisch und bricht sicher ab, wenn erforderliche Flags fehlen. Bei verschachtelten Pfaden jede validierte Komponente einzeln über Verzeichnisdeskriptoren durchlaufen; keinen Textpfad prüfen und später unter seinem Namen erneut öffnen. CVE-2026-104286 wird durch Fortinets unterstütztes Update oder die offizielle Übergangsmaßnahme behoben. Alle Bestandteile des konfigurierten Root-Pfads einschließlich der übergeordneten Verzeichnisse müssen administrativ kontrolliert bleiben; O_NOFOLLOW schützt beim Öffnen nur die letzte Komponente.
from pathlib import Path
def destination(root: Path, request_path: str) -> Path:
# Unsicheres Muster: Anfrageeingabe wird verbunden,
# ohne die Begrenzung auf die erlaubte Wurzel zu prüfen.
return root / request_path
import os
import uuid
# Das vertrauenswürdige Dienstverzeichnis einmal öffnen; seine übergeordneten Pfade müssen administrativ kontrolliert bleiben.
def open_upload_root(root):
required = ("O_DIRECTORY", "O_NOFOLLOW")
if not all(hasattr(os, flag) for flag in required) or os.open not in os.supports_dir_fd:
raise RuntimeError("POSIX directory protections unavailable")
flags = os.O_RDONLY | os.O_DIRECTORY | os.O_NOFOLLOW
return os.open(root, flags)
# Request-Pfade nicht in Dateipfade umwandeln; einen undurchsichtigen Namen erzeugen.
# O_EXCL schlägt bei vorhandenem Namen fehl; O_NOFOLLOW weist einen Symlink am Ende zurück.
ROOT_FD = open_upload_root("/srv/app-private/uploads")
def create_upload_file():
name = uuid.uuid4().hex
flags = os.O_WRONLY | os.O_CREAT | os.O_EXCL | os.O_NOFOLLOW
fd = os.open(name, flags, 0o600, dir_fd=ROOT_FD)
return name, fd
Checkliste für Engineering & Systemsicherheit
- ✓Erfassen Sie Geräte und FortiMail-Versionen. Fortinet/Behörden nennen 7.0 nicht, strukturierte CNA-Daten jedoch 7.0.0–7.0.9; lassen Sie diesen Zweig von Fortinet bestätigen.[1], [5], [6]
- ✓Setzen Sie sofort die Herstellermaßnahme um: IBE deaktivieren oder öffentlichen Webzugriff entfernen und auf vertrauenswürdige private Netze beschränken. Stimmen Sie die Folgen von IBE mit dem Mailbetrieb ab.[1]
- ✓Sichern Sie Logs, Konfigurationsbackups und forensische Daten vor Neustart oder Upgrade. Prüfen Sie die aktuellen IOCs aus FG-IR-26-175 und untersuchen Sie Treffer.[1], [4]
- ✓Nutzen Sie den kanadischen Hinweis AV26-989 als veröffentlichte Versionsgrundlage; prüfen Sie Verfügbarkeit und Support vor dem Upgrade in Fortinets aktuellem Hinweis. Verwenden Sie die niedrigeren CNA-Grenzen nicht ohne Bestätigung.[5], [1], [7]
- ✓Behandeln Sie Patchen und Kompromittierungsprüfung getrennt. Ein Fix entfernt keine zuvor platzierten Dateien, Zugangsdaten oder Persistenz; bei verdächtigen Hinweisen Incident-Response-Verfahren starten.
- ✓Prüfen Sie in eigenem Code den kanonischen Pfad nach einmaliger strikter Dekodierung gegen eine Positivliste, lehnen Sie NUL und fehlerhafte Kodierungen ab und öffnen Sie Dateien relativ zu einem vertrauenswürdigen Verzeichnis.