Collax Security Gateway: OS-Command-Injection im Release-Pfad der Held-Mail-Queue erlaubt delegiertem mailadmin Root-Ausführung

Ein auf die Held-Mail-Verwaltung beschränkter delegierter Mail-Administrator überschreibt die client-seitige Queue-ID und erlangt beliebige Befehlsausführung als admin und weiter als root.

Advisory-ID: TP-2026-067
Produkt: Collax Security Gateway (deutsche UTM-, Firewall-, Mail- und SSL-VPN-Appliance; betrifft auch Collax Business Server und Groupware Suite)
Schwachstellentyp: OS-Command-Injection (CWE-78)
CVE: pending (MITRE CNA-LR)
CVSS 3.1: 8.5 (Hoch) · CVSS:3.1/AV:N/AC:H/PR:L/UI:N/S:C/C:H/I:H/A:H
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

Die Admin-Oberfläche unterstützt delegierte Administration: ein nur mit der Rolle mailadmin ausgestatteter Benutzer darf das Held-Mail-Formular öffnen (forms/mailqhold.form:4). Jede Queue-Zeile enthält ein -Feld (forms/mailqhold.form:102). Die Aktionen release, remove und send fügen die id jeder markierten Zeile zu einem String zusammen und interpolieren ihn in ein Shell-Kommando, system qq[/usr/sbin/suwrap root postfix_queue multiple-release "$release" >/dev/null] (AKLib/Mail/MailQHold.pm:112, gleiches Muster bei :123 und :134). Das id-Feld ist client-überschreibbar: der JSON-RPC-Table-Decode schreibt den dekodierbaren -Skalar einer geladenen Zeile, und die Klasse hat keinen setId-Guard. Da suwrap setuid root:admin mode 4750 ist, eskaliert admin in einem Schritt zu root.

Ursache

releaseMails fügt die id jeder markierten Zeile zu $release zusammen und interpoliert sie in ein doppelt gequotetes Shell-Kommando, system qq[/usr/sbin/suwrap root postfix_queue multiple-release "$release" >/dev/null] (AKLib/Mail/MailQHold.pm:112); removeMails (:123) und sendMails (:134) wiederholen das Muster.
Der Wert sollte eine leerzeichengetrennte Liste von Postfix-Queue-IDs sein, kein Shell-Fragment.
Die Zeilen-id ist client-überschreibbar: das Formular liefert (forms/mailqhold.form:102), der RPC-Table-Decode schreibt diesen Skalar auf ein geladenes MailQHold::Item, und die Klasse hat keinen setId-Guard (MailQHold.pm:14).
Das Formular ist jedem Inhaber von role.mailadmin gewährt (forms/mailqhold.form:4), einer Rolle unterhalb des vollen Administrators.
Die eingeschleuste Shell läuft als OS-Benutzer admin (adminhttpd.conf:119-120), und /usr/sbin/suwrap ist setuid root:admin mode 4750, sodass admin direkt zu root gelangt.

Proof of Concept

Schematisch: als Benutzer mit nur role.mailadmin an :8001 anmelden, das Held-Mail-Formular öffnen (/json//mailqhold), mindestens eine Mail in der HOLD-Queue.

{"method":"releaseMails","params":[{"id":"<Shell-Ausbruch>","mark":1}]}

releaseMails fügt die id der markierten Zeile in $release ein und führt das Shell-Kommando aus, vor postfix_queue. Am 01.09.2026 mit einem Marker uid=0(root) unter chroot+akrun verifiziert.

Auswirkung

  • Ein auf die Held-Mail-Verwaltung beschränkter delegierter Mail-Administrator führt beliebige OS-Befehle als admin und dann root aus.
  • Erfordert mindestens eine gehaltene Mail, damit eine überschreibbare Zeile existiert; der Score steigt auf 9.9, wo der Angreifer eine gehaltene Mail erzwingen kann.
  • Vollständige Kompromittierung des Gateways aus einem beschränkten delegierten Zugang, ein Bruch der Rechtegrenze.
  • Appliance-weit keine CSP-, X-Frame-Options- oder X-Content-Type-Options-Header.

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.