FlawOpen

flawopen.com/Teardowns/cve-2026-104286-fortimail-ibe-path-traversal

● CVE-2026-104286 · CVSS 9.8[7] · Kritisch
Sicherheitsforschung · FlawOpen

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]

💡 Einfache Erklärung (ELI5)

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]
CISA KEV
CISA nahm CVE-2026-104286 am 1. Oktober 2026 in den KEV-Katalog auf. Das bestätigt bekannte Ausnutzung, aber keine Kompromittierung eines bestimmten Geräts.[2], [5]
Abweichende Versionsangaben
Fortinet-Zusammenfassung und Behördenhinweise nennen 7.2, 7.4, 7.6 und 8.0; strukturierte CNA-Daten nennen zusätzlich 7.0. Lassen Sie 7.0 von Fortinet bestätigen.[6], [5], [4]

Framework-Zuordnungen

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

BereichAussage der maßgeblichen QuellenMaßnahme für Betreiber
FortiMail 7.0NVD/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.2Die 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.0Laut 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 UntersuchungFortinet 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

Schritt 1

Nicht authentifizierte Anfrage erreicht den Webablauf

Laut Fortinet können speziell gestaltete HTTP- oder HTTPS-Anfragen den Fehler ohne Zugangsdaten auslösen. Der öffentliche Hinweis legt den internen Handler nicht offen.[1], [5], [4]

Schritt 2

Der Pfad verlässt seine vorgesehene Grenze

Der Anbieter klassifiziert den Fehler als Path Traversal (CWE-22), wodurch Dateien auf dem betroffenen FortiMail geschrieben werden können. Leiten Sie aus der CVE-Beschreibung keinen konkreten Persistenzweg ab.[1], [6], [5]

Schritt 3

Geschriebene Dateien können weitere Folgen haben

Fortinet bewertet den Fehler mit CVSS 3.1 9,8 Kritisch und meldet aktive Ausnutzung. Nutzen Sie die aktuellen IOCs des Herstellers zur Untersuchung.[1], [5], [4]

Schritt 4

Eindämmen, Beweise sichern, aktualisieren

IBE deaktivieren oder Webzugriff auf vertrauenswürdige Netze beschränken. Logs und Konfiguration sichern, IOCs prüfen und das Fixrelease für den jeweiligen Zweig installieren.[1], [5]

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.

VERWUNDBARE IMPLEMENTIERUNG
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
GEHÄRTETER SICHERHEITS-PATCH
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

Quellen