Collax Security Gateway: gespeichertes Cross-Site-Scripting über den Mail-Envelope-Absender in der Held-Mail-Queue
Ein unauthentifizierter SMTP-Absender setzt einen manipulierten Envelope-Absender und platziert gespeichertes Skript, das im Admin-Ursprung ausgeführt wird, sobald ein Mail-Administrator die Held-Mail-Queue öffnet.
Advisory-ID: TP-2026-065
Produkt: Collax Security Gateway (deutsche UTM-, Firewall-, Mail- und SSL-VPN-Appliance; betrifft auch Collax Business Server und Groupware Suite)
Schwachstellentyp: Gespeichertes Cross-Site-Scripting (CWE-79)
CVE: pending (MITRE CNA-LR)
CVSS 3.1: 8.0 (Hoch) · CVSS:3.1/AV:N/AC:H/PR:N/UI:R/S:C/C:H/I:H/A:N
Hersteller-Advisory: Collax Release Notes CSG 7.2.48
Betroffene Versionen: 7.2.46 und früher
Behoben in: 7.2.48
Gemeldet: 01. September 2026
Zusammenfassung
Collax Security Gateway hält verdächtige Nachrichten in einer Quarantäne, die ein Mail-Administrator in der Admin-Oberfläche prüft. Die Held-Mail-Tabelle zeigt den Envelope-Absender jeder Nachricht, also das vom entfernten, unauthentifizierten Sendehost gesetzte SMTP MAIL FROM. Der Quarantäne-Loader liest den Absender über postcat und speichert ihn wortgetreu, nur Leerraum wird getrimmt. Der Accessor gibt den Wert roh zurück, die Queue wird ohne HTML-Kodierung an den qooxdoo-Client übergeben, und dessen Cell-Renderer-Map leitet den Typ email an einen roh-HTML-Renderer weiter. Ohne CSP platziert ein unauthentifizierter Absender damit gespeichertes Markup, das im :8001-Admin-Ursprung rendert.
Ursache
suwrap/holdq.pl:91-92 liest den Postfix-Envelope-Absender über postcat und speichert ihn wortgetreu im Queue-Item, nur Leerraum getrimmt, sodass < > " = erhalten bleiben.
AKLib/Mail/MailQHold.pm:20-22 sub sender gibt diesen Wert roh zurück, und loadMailQHold JSON-kodiert die Queue ohne HTML-Kodierung an den Client.
Das Held-Mail-Formular deklariert die Spalte als
Das qooxdoo-Admin-Bundle escaped nur die Typen plain, bytesize, boolean, checkbox und date; jeder andere Typ, email eingeschlossen, fällt auf default:d=new ak.ui.table.cellrenderer.Html (html/gui/qx/ak/index.js), der den Wert als innerHTML in ein
Der roh-HTML-Renderer ist beabsichtigt (ein explizites type='html' wird anderswo genutzt); der Defekt ist der angreiferkontrollierte Envelope-Absender, der über das fail-open Typ-zu-Renderer-Mapping dorthin gelangt.
Proof of Concept
Schematisch: der Envelope-Absender wird als RFC-5321-Quoted-String gesetzt, damit HTML-Metazeichen im Local-Part zulässig sind.
MAIL FROM:<"<Event-Handler-Payload>"@evil.example>
Die Nachricht landet in der HOLD-Quarantäne. Öffnet ein Mail-Administrator die Held-Mail-Queue, schreibt der Html-Cell-Renderer den Absender als innerHTML und feuert den Payload im :8001-Admin-Ursprung. Ohne CSP liest das Skript das nicht-HttpOnly auth_cookie (base64(user:password)). Der serverseitige Emit-Pfad wurde statisch gegen die Quelle verifiziert; Browser-Ausführung, das Überleben des Absenders durch Postfix und die Mail-Gateway-HOLD-Vorbedingung brauchen eine gebootete Appliance.
Auswirkung
- Gespeichertes Skript im :8001-Admin-Ursprung, ausgelöst, sobald ein Mail-Administrator die Quarantäne prüft.
- Appliance-weit keine CSP, sodass das eingeschleuste Markup rendert.
- Das auth_cookie ist base64(user:password) und nicht HttpOnly, sodass das Skript das Klartext-Admin-Passwort offenlegt.
- Quelle ist ein unauthentifizierter entfernter SMTP-Absender; der Payload bleibt in der Quarantäne, bis er geprüft wird.
- Bedingt auf eine als filternde Mail-Gateway betriebene Appliance mit aktiver HOLD-Quarantäne.
Referenzen
Steckt so etwas in Ihrer Software?
Diese Schwachstelle hat unser Team im Rahmen seiner Arbeit gefunden. Lassen Sie Ihre Anwendungen von denselben Spezialisten prüfen, mit einem Penetrationstest von turingpoint.
