Collax Security Gateway: anonymes reflektiertes SVG-Cross-Site-Scripting im Logo-Generator

Ein unauthentifizierter Angreifer, der ein Opfer auf eine manipulierte /.logo-URL lockt, erlangt Skriptausführung im Admin-Ursprung, weil der Farbparameter roh in ein aktives SVG-Dokument gelangt.

Advisory-ID: TP-2026-068
Produkt: Collax Security Gateway (deutsche UTM-, Firewall-, Mail- und SSL-VPN-Appliance; betrifft auch Collax Business Server und Groupware Suite)
Schwachstellentyp: Reflektiertes Cross-Site-Scripting (CWE-79)
CVE: pending (MITRE CNA-LR)
CVSS 3.1: 9.3 (Kritisch) · CVSS:3.1/AV:N/AC:L/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

Die Admin-Oberfläche liefert ihr Branding-Logo aus cgi-bin/generate-logo.cgi, aliasiert auf /.logo. Das Skript zeichnet ein SVG-Hexagon in einer vom Aufrufer gewählten Farbe und gibt es mit Content-Type image/svg+xml zurück. Der Query-Parameter c wird als freier String gelesen und roh in das style-Attribut eines -Elements als stroke:# konkateniert. Ein doppeltes Anführungszeichen schliesst das style-Attribut, /> schliesst das , und folgendes Markup wird wortgetreu in das SVG-Dokument emittiert. Da die Antwort ein aktives image/svg+xml-Dokument ist, führt eine Top-Level-Navigation zur manipulierten URL eingebetteten Skript aus, und das Alias ist ohne Authentifizierung erreichbar.

Ursache

createOutline baut '<path id="outline" style="...stroke:'.$color.';..."' (generate-logo.cgi:173) und konkateniert die Farbe ohne Kodierung in ein doppelt gequotetes style-Attribut.
Die Farbe stammt aus generate-logo.cgi:30 $q->param('c') || $opt->color, deklariert als freier String (generate-logo.cgi:14, type 's') ohne ^[0-9a-fA-F]{3,6}$-Prüfung.
Die Geschwisterdimensionen w und h sind als Integer deklariert (generate-logo.cgi:12-13, type 'i') und mit %d gedruckt (generate-logo.cgi:33), können also kein Markup tragen, was zeigt, dass die Farbe versehentlich unbeschränkt blieb.
Die Antwort wird auf image/svg+xml gesetzt (generate-logo.cgi:21), sodass das eingeschleuste Markup bei Direktnavigation als aktives Dokument rendert.
Kein Apache-Header schränkt das Skript ein, und /.logo ist als Branding-Asset der Vor-Login-Seite ohne Authentifizierung erreichbar.

Proof of Concept

Schematisch: eine Top-Level-Navigationsverknüpfung zum Logo-Asset mit manipulierter Farbe.

GET /.logo?c=<Ausbruch aus dem style-Attribut mit Skript-Markup> HTTP/1.1
Host: <gw>:8001

Die Antwort trägt Content-Type: image/svg+xml, und die Farbe bricht aus dem style-Attribut und dem -Element aus. Nur c ist injizierbar: w=999"/>...&h=1 rendert width='999' height='1', was bestätigt, dass w und h zu Integern gezwungen werden. Am 01.09.2026 auf Code-Ebene unter chroot+akrun verifiziert; das Browser-Feuern folgt aus dem aktiven SVG-Content-Type und der appliance-weiten Abwesenheit von CSP.

Auswirkung

  • Anonyme Skriptausführung im Admin-Ursprung jedes Opfers, das die manipulierte /.logo-URL per Top-Level-Navigation öffnet, ohne Konto.
  • Offenlegung des nicht-HttpOnly auth_cookie im Admin-Ursprung, das base64(user:password) ist, und damit des Klartext-Admin-Passworts.
  • Fälschung von Administrations-RPC-Aktionen in der Opfer-Sitzung im selben Ursprung.
  • Vollständige Kontrolle über UTM, Firewall und Mail-Gateway folgt aus der Offenlegung der Admin-Zugangsdaten.

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.