dog
Goto Top

Sicherheitslücke in der Konzeption der Filterregeln ermöglichen das Umgehen des Time-For-Kids Schulfilter Plus

Dieses Dokument liegt bei mir schon länger rum und damit andere Admins, die diese Software benutzen, ihre Systeme auf Anfälligkeit kontrollieren können lade ich das mal hier ab.

Aus der Art und Weise, in welcher Reihenfolge URL-Listen ausgewertet werden und wie die Einträge der URL-Listen verarbeitet werden kann eine Sicherheitslücke resultieren, die im Zweifelsfall zur kompletten Umgehung des Schulfilters in jeder Situation von Nutzern genutzt werden kann.

back-to-topBetroffene Versionen

Time for Kids Schulfilter Plus <= 2.1.03 (Zum Zeitpunkt des Verfassens aktuellste Version)

back-to-topEinschätzung

Abweichend, von „Schwach“ bis „Völlige Umgehung“ möglich (wenn die Konfiguration nach der Installation nicht verändert wird)

back-to-topBeschreibung

Die Sicherheitslücke ist ein Ergebnis zweier Programmfunktionen, die vorher erläutert werden müssen, um die Sicherheitslücke selbst zu verstehen.
Im Beispiel werden die folgenden Seiten benutzt:
  • seite.de als Seite, die standardmäßig gesperrt ist aber evtl. von einigen Nutzern legitim genutzt werden soll
  • boese.com als Seite, die immer gesperrt sein sollte

back-to-topVerarbeitung von URL-Listen

Der Schulfilter Plus bietet an mehreren Punkten die Möglichkeiten, URL-Listen mit eigenen Links einzutragen (Administration, Internetgrundschutz, Lernboxen). Es ist essentiell wichtig zu verstehen, wie diese Listen verarbeitet werden. Grundregeln der URL-Listen:
  1. Pro Zeile steht eine URL (also ein Eintrag).
  2. Ein * steht für null oder mehr Zeichen an dieser Stelle.
  3. Ein ? steht für genau ein beliebiges Zeichen an dieser Stelle.
  4. Der Filter unterscheidet zwischen DNS-Match und URL-Match:
    1. Sobald ein Eintrag ein ? oder * enthält, wird er automatisch zu einem URL- Match.
    2. Wenn ein Eintrag keinen Pfad-Anteil enthält, (www.seite.de aber nicht www.seite.de/unterseite) ist es ein DNS-Match
  5. Regeln für einen DNS-Match:
    1. Beginnt der Eintrag mit http://, wird es herausgefiltert, ist also unbedeutend
    2. Solange der DNS-Name eines Eintrags nur aus TLD oder TLD und SLD besteht, muss die Domain exakt übereinstimmen (seite oder seite.de,aber nicht www.seite.de)
    3. Wenn der Eintrag aus mehr als 2 Komponenten besteht (www.seite.de oder times.co.uk) darf er an einer beliebigen Stelle im Query String erscheinen, solange er von Nicht-Buchstaben umschlossen ist
  6. Regeln für ein URL-Match
    1. Bei einem URL-Match muss die gesamte URL mit dem Eintrag übereinstimmen
    2. Sobald ein URL-Match an einer beliebigen Stelle ein * oder ? enthält wird auch ein * an Anfang und Ende des Eintrags eingefügt.
    3. Wenn ein Eintrag mit * umschlossen ist, kann er sich an einer beliebigen Stelle in der URL befinden.

back-to-topBeispiele der Anwendung

Aus den obigen Regeln ergeben sich einige wichtige Implikationen:
  1. Der Eintrag seite.de führt dazu, dass die URL http://seite.de, http://seite.de/irgendwas usw. freigegeben werden, nicht aber http://www.seite.de oder http://www.seite.de/unterseite usw. Dieses Verhalten ist erwartet und wird hier als korrekt angesehen. Aus dem Eintrag seite.de kann also keine (oder zumindest nicht die hier thematisierte) Sicherheitslücke entstehen. [Regeln 4.2., 5.2.]
  2. Hätte der Eintrag http://seite.de gelautet, wäre dies kein Unterschied zur in 1 beschriebenen Situation. [Regel 5.1.]
  3. Da mit dem in 1 beschriebenen Eintrag zwar seite.de aufrufbar ist, aber nicht www.seite.de entschließt man sich auch noch diesen zweiten Eintrag aufzunehmen. Für diesen zusätzlichen Eintrag greift Regel 5.3 (1). Aus dieser Regel ergibt sich, dass die URL http://boese.com/?useless=www.seite.de jetzt auch freigegeben ist!
  4. Wir stellen nun folgende Unterrichtssituation dar: Ein Lehrer möchte, dass sich die Schüler auf der Internetseite des Spiegels informieren. Dazu legt er eine Lernbox an, die alle Internetseiten sperrt und trägt dann den üblichen Eintrag www.spiegel.de ein (2), so dass die Schüler sich nur auf der Internetseite des Spiegels bewegen können. Das Ergebnis ist das selbe wie in 2 - Eine totale Umgehung des Filters ist möglich. [Regel 5.3.]
  5. Es hätte auch nichts geholfen, hätte der Lehrer den Eintrag als http://www.spiegel.de/panorama/gesellschaft/* geschrieben, um sich auf ein Ressort zu beschränken. Regel 6.2. und damit auch 6.3. greift hier und somit ist http://boese.com/?useless=www.spiegel.de/panorama/gesellschaft/x erreichbar.
  6. Wenn der Lehrer in Situation 3 einen absoluten Eintrag wie http://www.spiegel.de/panorama/gesellschaft/artikel.html oder www.spiegel.de/panorama/gesellschaft/artikel.html gemacht hätte, wäre dieser sicher, da hier Regel 6.1. greift. Die Internetseite wäre dann aber wenig ansehnlich, da auch keine Bilder etc. geladen werden können.

back-to-topZusammenfassung

Wenn Sie derzeit bei der Anwendung der Linklisten absolut sichergehen wollen, halten Sie sich an folgende Regeln:
  • Der Eintrag seite.de ist sicher, wird aber in den wenigsten Fällen funktionieren
  • Der Eintrag www.seite.de sollte niemals verwendet werden!
  • Ein * oder ein ? sollten niemals verwendet werden!
  • Ein führendes http:// ist prinzipiell überflüssig.

back-to-top„Aber die bösen Seiten werden ja gar nicht richtig dargestellt“

Im vorherigen Abschnitt wurde eine Methode gezeigt, wie man den Filter umgehen kann - nämlich über den Query String.
Diese Methode hat den Nachteil, dass tatsächlich die aktuell aufgerufene Seite, aber keine Bilder, die sich in der Seite befinden, geladen werden.
Dies heißt aber keinesfalls, dass es nicht möglich ist. Die Methode funktioniert gleichermaßen für Textseiten wie für Bilder. Wenn ein Nutzer also ein gesperrtes Bild gefunden hat (z.b. http://boese.com/bild.jpg kann auch hier einfach der Query String angehängt werden: http://boese.com/bild.jpg?www.seite.de).
Dieselbe Methodik funktioniert natürlich auch mit Programmen (exe-Dateien) etc.

Daneben gibt es noch eine zweite Methodik, den Filter zu umgehen: über Subdomains.
Diese Methode funktioniert nicht immer, aber ein Beispiel liefert www.time-for-kids.de selbst.

Um diese Methode nachzuvollziehen, entfernen Sie den time-for-kids Eintrag aus der globalen Weißen Liste und legen sie eine Lernbox mit der Vorgabe „bis 12 Jahre“ an.
Die Website von Time for Kids sollte jetzt gesperrt sein.
Legen Sie jetzt unter „Freie Links“ den Eintrag seite.de* an.
Ab jetzt ist es möglich, beide Einträge zu kombinieren: Rufen Sie in ihrem Browser http://seite.de.www.time-for-kids.de auf. [Regel 4.1., 6.3.]

Jetzt haben wir eine eigentlich gesperrte Seite mit allen Bildern vor uns.
Diese Methode setzt also gleichermaßen eine Fehlkonfiguration des Schulfilters und eine Wildcard-Konfiguration (3) bei der aufgerufenen Website voraus.

Eine dritte Möglichkeit, basierend auf Methode 1, ist es, eine einfache Firefox-Extension zu schreiben, die jede geladene URL entsprechend abändert. Vorlagen liefern hier FireBug, Tamperdata und HTTPS Everywhere.
Alternativ kann aber auch folgendes Bookmarklet benutzt werden, um z.B. alle Bilder auf einer Seite nachzuladen:
{{javascript:(function(){el=document.getElementsByTagName(‘img‘);for(i=0;i<el.length;i++){el.item(i).src+="?www.seite.de";}})();}}  
Somit es möglich, ohne jeglichen Eingriff in das System den Filter praktisch komplett zu umgehen.

back-to-topReihenfolge der Filterregeln

Der zweite wichtige Punkt ist die Anwendungsreihenfolge der einzelnen Filterregeln. Diese können Sie dem folgenden Diagramm entnehmen:
9159d4d6449bb0b2f08e26fb08b580cb
Beachten Sie, dass die Regeln des Internetgrundschutz nicht gelten, sobald es eine aktive Lernbox gibt, und dass innerhalb einer Lernbox „Freie Links“ über „Gesperrte Links“ gehen. Die beiden administrativen Listen stehen immer über dem Rest.
(Anm.: Die offizielle Dokumentation des Herstellers enthält weder die oben gegebenen Erläuterungen zu URL-Listen, noch eine Beschreibung der Andwendungsreihenfolge der Filter)

back-to-topSicherheitsproblematik

Ein Teil der Sicherheitsproblematik wurde bereits erläutert, ein weiterer entsteht aus den Standardvorgaben in der „Weißen Liste“.

Diese unterscheiden sich je nach Version, mit der die Erstinstallation durchgeführt wurde!
Die Einträge der aktuellen Version 2.1.03 sind:
*localhost*

*time-for-kids*

*.iss.*

*.cobion.*

*webfilterplus*

*handeln-handinhand*

*update*drweb.com*

*ntrsupport.com*

*<IP-DES-TFK-SERVERS>*

*<NAME-DES-TFK-SERVERS>*
Die Einträge wiederum können sich zwischen den verschiedenen Varianten (Squid,ISA, etc.) unterscheiden.

Da die „Weiße Liste“ vor praktisch allen anderen kommt, ist es somit immer möglich, den Filter vollständig zu umgehen, wie bereits im ersten Teil gezeigt wurde.
Dabei reicht es idR schon http://boese.com/?time-for-kids zu schreiben.

In anderen Versionen beginnen diese Einträge evtl. mit einem http:// oder enthalten einen genaueren Domainnamen (z.B. http://www.time-for-kids.de/*).
Das ist aber unerheblich!
Alleine ein Eintrag, der z.B. time-for-kids.de oder www.time-for-kids.de/update.php lautet, ist sicher!

Sie können aber alle Einträge dieser Liste ohne Bedenken löschen! Stellen Sie nur zwei Dinge sicher:
  • Die Updates des Proxys selbst dürfen nicht über den Proxy erfolgen
  • Der Aufruf des Cockpits darf nicht über den Proxy erfolgen

back-to-topStellungnahme des Herstellers

  • Juli 2010: Das Problem ist bekannt. Es wird mit der Version 2.1.04 in den nächsten 2-3 Wochen behoben.
  • Update September 2011: Mit dem Update im Juli 2011 auf Version 2.1.04 konnte die Lücke im Kurztest nicht mehr nachvollzogen werden. Damit hat der Hersteller über ein Jahr(4) gebraucht um eine KRITISCHE Sicherheitslücke zu beheben!

(1) In Version 2.1.03 besteht ein Bug im Schulfilter, wodurch eine Linkliste mit exakt den zwei Einträgen seite.de und www.seite.de dazu führt, dass keiner von beiden angewendet wird. Dies kann dadurch umgangen werden, dass ein beliebiger dritter Eintrag in diese Liste geschrieben wird.

(2) Wir erinnern und, dass nach Punkt 1 der Eintrag spiegel.de sicher gewesen wäre. Dieser hätte aber nichts genützt, da man von http://spiegel.de automatisch auf http://www.spiegel.de weitergeleitet wird.

(3) Ob eine Website eine Wildcard-Konfiguration besitzt, können Sie testen, indem Sie bla.seite.de aufrufen. Ändert sich die URL in Ihrer Adresszeile nicht und sehen Sie die reguläre Seite, ist das der Fall.

(4) Ich habe diese Lücke im Juli 2010 mittgeteilt. Zu dem Zeitpunkt war sie laut Aussage des Herstellers allerdings schon "bekannt".

Content-Key: 165927

Url: https://administrator.de/contentid/165927

Printed on: April 16, 2024 at 06:04 o'clock

Mitglied: 99496
99496 Jun 26, 2011 at 18:24:35 (UTC)
Goto Top
Ich bedanke mich für diesen Hilfreichen Beitrag - wir benutzen hier selbst einen Schulrouter Plus und das funktioniert wirklich - beim nächsten Gespräch mit der Servicehotline werde ich das erwähnen.

Mfg Max
Member: dog
dog Sep 08, 2011 at 13:27:26 (UTC)
Goto Top
Update: In der neuen Version 2.1.04 konnte ich das Problem im Kurztest nicht mehr nachvollziehen.
Über ein Jahr später...
Mitglied: 99496
99496 Sep 08, 2011 at 13:59:14 (UTC)
Goto Top
Als ich meinen Beitrag vor deinem Beitrag schrieb, war das Problem weiterhin ein Problem face-smile

mfg max