zurĂŒck zum Artikel

Webserver-SicherheitslĂŒcke: Heikle Konfigurations- und Statusdaten publiziert

| Sylvester Tremmel

Fehlkonfigurierte Webserver von Bundesbehörden und IT-Firmen prÀsentierten Besucher-IPs, Benutzernamen, Meeting-Kennungen und mehr offen im Internet.

Um Server zu debuggen und zu ĂŒberwachen, ist es nĂŒtzlich, Konfigurations- und Statusinformationen einfach abrufen zu können. Das geht leicht schief, wie weit verbreitete Konfigurationsfehler belegen. Der bekannte Webserver Apache bietet unter anderem die Module mod_info und mod_status an. Beide stellen HTML-Seiten bereit, die allerlei Daten ĂŒber den Server anzeigen und standardmĂ€ĂŸig unter den Pfaden /server-info und /server-status zu erreichen sind.

Seit Jahren kommt es immer wieder zu FÀllen, in denen Server falsch konfiguriert sind und die Seiten dieser Module unabsichtlich veröffentlicht werden. Das ist aber kein lÀssliches Kavaliersdelikt, das nur dröge Verwaltungsdaten betrifft. Konkrete Nachforschungen fördern oft sensible Information zutage, etwa Links, die unberechtigte Downloads erlauben, oder Kennungen, die Zugang zu internen Meetings verschaffen.

Das IT-Sicherheitsunternehmen "Deutsche Gesellschaft fĂŒr Cybersicherheit" wollte sich ein Bild der Lage verschaffen und hat alle .de-Domains systematisch gescannt. Das Ergebnis war verheerend. Die Fachleute fanden mehr als 70.000 Domains, die Informationen von mod_info oder mod_status veröffentlichten. Um der Problematik mehr Aufmerksamkeit zu verschaffen, wandten sie sich an c’t.

Die Liste enthĂ€lt Systeme verschiedenster Betreiber. Stichproben fanden alles – von privaten Homepages ĂŒber kommunale Webseiten bis zu Servern großer Organisationen: Banken, IT-Firmen wie AVM oder G Data, das Bundesfinanzministerium und sogar CERT-Bund, das "Computer-Notfallteam des BSI", finden sich in der Liste.

Dass die Fehlkonfigurationen so verbreitet sind, ist auf den ersten Blick verwunderlich. Die Apache-Dokumentation warnt davor [1], dass die beiden Module sicherheitsrelevante Auswirkungen haben können, und gibt auch Beispiele, die Zugriffe auf diese Module einschrĂ€nken. FĂŒr das Server-Status-Modul sieht das etwa so aus:

<Location "/server-status">
    SetHandler server-status
    Require local
</Location>

Die Direktive Require local erzwingt, dass nur Anfragen, die vom Server selbst kommen, beantwortet werden. Allerdings ergeben sich unter UmstÀnden zwei Folgeprobleme, die viele Admins offenbar nicht im Auge haben: Zum einen befinden sich Webserver hÀufig hinter einem Loadbalancer oder einem anderen vorgeschalteten System, das oft auf der gleichen Maschine lÀuft. Aus Sicht des Webservers kommen dann aber alle Anfragen von der eigenen Maschine und entsprechend bekommt auch jedermann Zugriff auf die Status- und Infoseiten.

Die Apache-Dokumentation warnt mehrfach und deutlich vor den Problemen. Gelesen wird sie anscheinend zu selten.

Das andere Problem ist, dass sich Apache-Server ihre Konfiguration aus verschiedenen Quellen zusammensammeln, die einander kompliziert ĂŒberlagern und ergĂ€nzen können. Eine Require-Anweisung an einer Stelle wird dadurch leicht mit einer anderen, die mehr Zugriff erlaubt, kombiniert und der Schutz wirkungslos.

Mehr Infos

c’t 26/2020

Dieser Artikel stammt aus c’t 26/2020 [2]. Darin hat die Redaktion den Bausatz fĂŒr das c’t-Notfall-Windows aktualisiert, mit dem Sie einen bootfĂ€higen USB-Stick erzeugen können, um Daten zu retten, Viren zu jagen oder Bootprobleme zu lösen. Außerdem gibt es einen Test aktueller High-End-Smartphones, spannender Fitness-Tracker und Streaming-Sticks zum nach- und aufrĂŒsten von TV-Funktionen. Dazu gibt es weitere Tests, jede Menge Praxis und eine ganze Ladung voller Tipps zur Heimnetz-Verkabelung. c't 26/2020 ist ab sofort im Heise-Shop [3] und am gut sortierten Zeitschriftenkiosk erhĂ€ltlich.

Beabsichtigt war die Konfiguration in keinem von c’t untersuchten Fall; nach der Kontaktaufnahme unsererseits haben alle hier genannten Organisationen ihre Serverkonfiguration schnell angepasst. Wie schwerwiegend die Auswirkungen solcher Fehlkonfigurationen sind, ist allerdings von Fall zu Fall ganz unterschiedlich und hĂ€ngt davon ab, welche anderen Probleme ein Server mit sich herumtrĂ€gt. Die von mod_info exponierte Seite listet beispielsweise die Versionen des genutzten Apache-Servers sowie eingesetzter Module und SSL-Bibliotheken auf. Das ist fatal, wenn es sich um alte Versionen mit bekannten SicherheitslĂŒcken handelt.

Beim CERT-Bund – das mod_info, aber nicht mod_status exponiert hatte – war das nicht der Fall. Aber die Infoseite enthĂ€lt trotzdem zahlreiche Informationen, die man potenziellen Angreifern nicht liefern möchte. c’t konnte so zum Beispiel nachvollziehen, wie mod_info den ZugriffsbeschrĂ€nkungen beim CERT-Bund entgangen war.

Konnte dank der Fehlkonfiguration jedermann debuggen: Die Require local-Anweisungen oben werden durch eine allgemeinere Require all granted-Anweisung ĂŒberlagert – und fĂŒr /server-info nicht wieder eingeschrĂ€nkt.

Schlimmer sind hĂ€ufig die Auswirkungen von mod_status. Das Modul zeigt zwar weniger Konfigurationsdetails an, veröffentlicht standardmĂ€ĂŸig aber aktuelle Requests. Die Requests geben zum einen Aufschluss ĂŒber IP-Adressen, die einen Server kontaktieren. Dabei handelt es sich ĂŒblicherweise um personenbezogene Daten, die nicht ohne Weiteres veröffentlicht werden dĂŒrfen.

Ironischerweise helfen hier Systeme wie Loadbalancer, obwohl sie, wie gesagt, die LĂŒcke oft ĂŒberhaupt erst aufreißen: Bei Requests, die durch so ein System gehen, sieht der Apache-Server nur die feste IP-Adresse dieses Systems und nicht die Adressen der Besucher. Etwa bei einem Server des Bundesfinanzministeriums verhinderte ein so vorgeschalteter Cache, dass Besucheradressen öffentlich wurden.

Mehr von c't Magazin Mehr von c't Magazin [4]

Neben den IP-Adressen zeigt die Request-Liste der Statusseite auch die genutzten URLs an. Es ist keine gute Praxis, aber oft enthalten URLs sensible Informationen, welche die Server-Status-Seite dann publiziert.

GrĂ¶ĂŸeren Problemen gerade noch entgangen ist die Sparda-Bank MĂŒnchen. Deren System publizierte URLs mit Teilen von IBANs. Dabei handelte es sich allerdings nur um die vordere HĂ€lfte der Nummern, womit sich Land und Bank identifizieren lassen, aber keine Konten.

Schlechter sah es bei der IT-Security-Firma G Data aus. Der betroffene Server wurde zum Dateiaustausch im Unternehmen genutzt und publizierte ĂŒber die URLs unter anderem Benutzernamen von Firmenmitarbeitern. Die entsprachen oft den Klarnamen der Mitarbeiter nach dem Schema "Vorname.Nachname" und erlaubten so zumindest RĂŒckschlĂŒsse auf Unternehmenszugehörigkeiten. Außerdem fanden sich in den URLs Datei-Hashes. DarĂŒber war es sogar möglich, die jeweiligen Dateien unbefugt herunterzuladen. G Data betont allerdings, dass diese Dateien keine personenbezogenen Daten enthielten. Personenbezogene Daten wĂŒrden grundsĂ€tzlich nur in Dateien mit einem Passwortschutz geteilt.

Problematisch war auch ein System des Fritzbox-Herstellers AVM. Es exponierte den Server-Status eines Jitsi-Servers fĂŒr Videokonferenzen zwischen Mitarbeitern. Die Namen der virtuellen KonferenzrĂ€ume waren dadurch frei zugĂ€nglich und jedermann konnte an Konferenzen teilnehmen, die nicht individuell passwortgeschĂŒtzt waren. Gerade in grĂ¶ĂŸeren Konferenzen kann es leicht passieren, dass solche unerbetenen GĂ€ste nicht weiter auffallen und dem internen Meeting ungestört beiwohnen können.

AVM, G Data und das BSI zeigen, dass niemand gegen Unachtsamkeit gefeit ist. Zehntausende weitere Systeme sind noch betroffen und die Experten der Gesellschaft fĂŒr Cybersicherheit wollen bald mit einer aktualisierten Liste an die Öffentlichkeit gehen. Zeit also, sich die Konfigurationen der eigenen Server sorgfĂ€ltig anzusehen und nicht nur schnell die Pfade /server-info und /server-status zu testen. Es lassen sich auch andere Pfade nutzen und es gibt Ă€hnliche Probleme mit anderen Statusseiten: Der Hoster von CERT-Bund schaffte es offenbar, den öffentlichen Zugang zu /server-info abzudrehen und dabei zu ĂŒbersehen, dass auf die gleiche Weise auch Statusinformationen eines Perl-Interpreters unter /perl-status publiziert wurden. Nach einem weiteren Hinweis von c’t wurde auch dieses Verhalten korrigiert.

Relevante Apache-Dokumentation

Apache Module mod_info [5]
Allgemeine Dokumentation zum Modul mod_info.

Apache Module mod_status [6]
Allgemeine Dokumentation zum Modul mod_status.

Apache Module mod_authz_core / Require Directive [7]
ErklĂ€rungen zur Require-Direktive und wie sich mehrere davon ĂŒberlagern können.

Configuration Sections / How the sections are merged [8]
Beschreibung wie sich Konfigurationssektionen in Apaches Konfiguration ĂŒberlagern.

Apache Module [9] m [10]od_authz_core [11] / AuthMerging Directive [12]
Über die AuthMerging-Direktive lĂ€sst sich definieren, wie Authorisierungseinstellungen verschiedener Konfigurationssektionen miteinander kombiniert werden.

Apache Module mod_remoteip [13]
Das Module Remote IP ist nĂŒtzlich, wenn sich Apache-Server hinter Load-Balancern, Caches oder Reverse-Proxys befinden, und dennoch auf die IP-Adresse des Besuchers reagieren sollen.

(syt [14])


URL dieses Artikels:
https://www.heise.de/-4971830

Links in diesem Artikel:
[1] https://httpd.apache.org/docs/2.4/mod/mod_info.html#security
[2] https://www.heise.de/select/ct/2020/26
[3] https://shop.heise.de/c-t-26-2020
[4] https://www.heise.de/ct
[5] https://httpd.apache.org/docs/2.4/mod/mod_info.html
[6] https://httpd.apache.org/docs/2.4/mod/mod_status.html
[7] https://httpd.apache.org/docs/2.4/mod/mod_authz_core.html#require
[8] https://httpd.apache.org/docs/2.4/sections.html#merging
[9] https://httpd.apache.org/docs/2.4/mod/mod_authz_core.html#authmerging
[10] https://httpd.apache.org/docs/2.4/mod/mod_authz_core.html#authmerging
[11] https://httpd.apache.org/docs/2.4/mod/mod_authz_core.html#authmerging
[12] https://httpd.apache.org/docs/2.4/mod/mod_authz_core.html#authmerging
[13] https://httpd.apache.org/docs/2.4/mod/mod_remoteip.html
[14] mailto:syt@ct.de