Collax Security Gateway: gespeichertes Cross-Site-Scripting über LLDP-Nachbardaten in der Interface-Detailansicht
Ein Gerät im selben Layer-2-Segment plant über ein manipuliertes LLDP-Frame gespeichertes Skript, das im Admin-Ursprung ausgeführt wird, sobald ein Administrator die Interface-Detailansicht öffnet.
Advisory-ID: TP-2026-064
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: 7.4 (Hoch) · CVSS:3.1/AV:A/AC:L/PR:N/UI:R/S:C/C:H/I:L/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 zeichnet LLDP-Nachbarn auf seinen Netzwerkschnittstellen auf und zeigt Name, Beschreibung und Inventar jedes Nachbarn in der Interface-Detailansicht der Admin-Oberfläche. Diese Strings stammen aus LLDP-Frames, die jedes Gerät im selben Layer-2-Segment senden kann. Der LLDP-Parser trimmt nur Leerraum und gibt jedes TLV ohne HTML-Kodierung wieder aus, die Accessoren liefern die Werte roh. Das Detailformular rendert die Nachbarfelder als typlose
Ursache
AKLib/Network/Interface/LLDP/Parse.pm:42-51 trimmt den TLV-Text und ruft $writer->dataElement($lastTag, $text) auf, worauf XML::Parser Entities zu literalem < und > zurückdekodiert, sodass keine HTML-Kodierung stattfindet.
Die Chassis-, MED-Inventar- und Port-Accessoren liefern diese Werte roh, und Interface.pm übergibt die Nachbarliste an das Formular.
Das Formular rendert die Nachbarfelder als typlose
In html/gui/qx/ak/index.js escaped das Display-Widget nur boolean, bytesize, date und json; jeder andere String, auch ein typloser Wert, erreicht setLabel(e) roh, und das Label-Control ist mit rich=true angelegt, sodass der String als HTML interpretiert wird.
Das Rich-Label ist eine gewollte qooxdoo-Funktion; der Defekt ist das angreiferkontrollierte LLDP-TLV, das über das fail-open 'typlos wird rich' dorthin gelangt.
Proof of Concept
Schematisch: von einem Gerät im selben Layer-2-Segment.
LLDP-Frame, System-Description-TLV (oder System-Name / Port-Description / MED-Inventar):
<Event-Handler-Payload>
Ein reines
Auswirkung
- Gespeichertes Skript im :8001-Admin-Ursprung, ausgelöst, sobald ein Administrator die Interface-Detailansicht öffnet.
- Appliance-weit keine CSP-, X-Content-Type-Options- oder X-Frame-Options-Header, sodass das eingeschleuste Markup rendert.
- Das Cookie auth_cookie ist base64(user:password) und nicht HttpOnly, sodass das Skript das Klartext-Admin-Passwort offenlegt.
- Quelle ist ein Layer-2-benachbartes Gerät ohne Appliance-Zugangsdaten; der Payload bleibt in der Nachbartabelle, bis er angezeigt wird.
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.
