Collax Security Gateway: OS-Command-Injection im Postfix-Queue-Hold erlaubt delegiertem mailadmin Root-Ausführung
Ein auf die Mail-Queue-Verwaltung beschränkter delegierter Mail-Administrator erlangt ohne Vorbedingung beliebige Befehlsausführung als admin und weiter als root über den ungeprüften refvalue der Hold-Aktion.
Advisory-ID: TP-2026-071
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: 9.9 (Kritisch) · CVSS:3.1/AV:N/AC:L/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 Mail-Queue-Formular öffnen (forms/mailqueue.form:5). Die Hold-Aktion des Formulars ist als function='holdMail' refvalue='id' deklariert (forms/mailqueue.form:63). Der JSON-RPC-Dispatcher leitet den client-gelieferten refvalue unverändert an holdMail weiter, das ihn in einen Shell-String konkateniert, system '/usr/sbin/suwrap root postfix_queue hold ' . $key . ' >/dev/null' (AKLib/Mail/MailQueue.pm:85). Der eingehende refvalue erhält keine Typ- oder Formatprüfung; der Request-Handler übergibt das rohe JSON-Feld direkt an die Methode. Da suwrap setuid root:admin mode 4750 ist, eskaliert admin in einem Schritt zu root, und es gibt keine Vorbedingung am Queue-Zustand.
Ursache
holdMail konkateniert sein Argument in ein Shell-Kommando, system '/usr/sbin/suwrap root postfix_queue hold ' . $key . ' >/dev/null' (AKLib/Mail/MailQueue.pm:85), sodass Shell-Metazeichen in $key ausgeführt werden.
Der Wert sollte eine Postfix-Queue-ID sein: der postfix_queue-Helfer dokumentiert 'qid is a postfix queue id' und quotet sein eigenes Argument als -h '$2' (suwrap/postfix_queue:9,31), sodass die Injection ein Hop-1-Defekt im Perl-Aufrufer vor dem Quoting des Helfers ist.
Die Hold-Aktion liefert refvalue='id' (forms/mailqueue.form:63), und der Request-Handler übergibt den rohen Client-JSON-refvalue ohne eingehende Validierung an die Methode (sein actionCheck baut nur ausgehende Links).
Das Formular ist jedem Inhaber von role.mailadmin gewährt (forms/mailqueue.form:5), 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 und das Mail-Queue-Formular öffnen (/json/
{"method":"holdMail","refvalue":"<Shell-Ausbruch>","params":[]}
holdMail interpoliert refvalue in den Shell-String und führt ihn vor postfix_queue aus. Es gibt keine Vorbedingung am Queue-Inhalt. Am 01.09.2026 mit einem Marker uid=0(root) unter chroot+akrun verifiziert.
Auswirkung
- Ein auf die Mail-Queue-Verwaltung beschränkter delegierter Mail-Administrator führt beliebige OS-Befehle als admin und dann root aus.
- Keine Vorbedingung am Queue-Inhalt; die einzelne Hold-Aktion erreicht den Sink.
- 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.
