Fragen? Antworten! Siehe auch: Alternativlos
Aber selbst wenn das nur eine Sicherheitsfirma war, ist das natürlich ein ganz übler Verkacker, nicht nur für die betroffene Firma sondern auch für die ganze Branche. Fakt ist leider einfach mal, dass der Kunde bei Sicherheitsaudits im Allgemeinen dasteht wie der Patient beim Arzt, oder der Kunde beim Klempner oder in der Autowerkstatt. Der Experte kann dem Kunden da einen vom Pferd erzählen. Der Kunde kann das gar nicht prüfen, weil er die Materie gar nicht ausreichend versteht. Ausnahmen bestätigen die Regel.
Aber mal zum konkreten Interview hier. Die Überschrift sagt: Vier Security-Buden haben auditiert. Das Interview selbst sagt aber was anderes:
Wir testen unsere Produkte nicht nur selbst, sondern auch mit vier externen UnternehmenDa steht Test, nicht Security-Test. Wer sagt, dass das nicht sowas wie "Abstrahlung wegen CE-Siegel prüfen" oder so war. Weiter unten dann:
Diese Sicherheitsdienstleister, so Schöllhammer weiter, bekommen von AVM umfangreiche DokumentationenWie, nur Dokumentation? Nicht den Code? Dann kann man auch nicht wirklich von einem Audit reden, sondern nur von einem Penetrationstest.
AVM selbst macht auch noch Fuzzing, sagen sie. Was ich über den Bug bisher gesehen habe: Es ist eine Unix-Kommandozeilen-Injection über schlecht validierte URL-Bestandteile. Das Backend ist anscheinend ein großes CGI-Binary mit LUA drin. Ich hab ja nichts gegen LUA, aber dieser Ansatz heißt eben auch, dass dieses Binary mit den maximalen Zugriffsrechten laufen muss, die man für alle Aktionen braucht, die dieses Tool ausführen muss. Das Design hätte schonmal Punktabzug geben müssen im Audit.
Dann: Nicht ordentlich validierte URL-Bestandteile sind genau die Haupt-Angriffsfläche bei Web-Anwendungen.
Wenn ich den Quellcode für eine Webanwendung habe, greppe ich als erstes nach Dingen wie system() und Logging-Funktionen (für Format-String-Bugs) und SQL-Statement-Absetz-Routinen (für SQL Injection). Das ist das erste, was man tut, noch bevor man sich ein Kaltgetränk holt. Es ist aus meiner Sicht nicht glaubwürdig, dass ein Audit nicht findet, wenn URL-Bestandteile in system() landen, ob gefiltert oder nicht. Daher glaube ich, dass hier kein Audit stattfand sondern nur ein Penetrationstest ohne Quellcodezugriff.
Wenn man einen Penetrationstest macht, ist das erste, was man tut, dass man einmal alle URLs kartografiert, die in der Oberfläche so vorkommen. Dafür gibt es Tools. Dann geht man die alle durch und tut jeweils Sonderzeichen rein oder übergibt besonders lange Strings. Das ist, was ein Penetrationstest tut. Im Fall der Fritzbox sind die BIOS-Images öffentlich, d.h. man kann beim Kartografieren die Liste der Skripte sehen. Das senkt die Wahrscheinlichkeit dafür, dass man ein Skript übersieht.
Was ich sagen will: Selbst wenn die keinen richtigen Audit hatten sondern nur einen Pentest, selbst dann hätte dieser Bug gefunden werden müssen. Da gibt es keine Ausrede.
AVM sagt, dass sie Fuzzing machen. Der Kontext scheint zu sein, dass sie da ihre VOIP-Protokolle gefuzzt haben. Aber anscheinend nicht ihre Web-Oberfläche, denn Fuzzing der Weboberfläche hätte diesen Bug auch gefunden.
Ich kann mir das also nur so erklären, dass entweder gar keine Security-Tests stattgefunden haben, sondern nur Funktionalitätstests, oder dass der Dienstleister viel zu wenig Zeit gekriegt hat (das kommt leider häufig vor in der Praxis, dass da unter starkem Zeitdruck operiert wird, weil so ein Audit ja auch signifikant Geld kostet), oder dass da schlicht der/die Dienstleister überfordert war. Der Bug sieht für mich jedenfalls nicht wie die Art von Bug aus, bei denen man halt mit den Schultern zuckt und Shit Happens sagt. Dieser Bug war vermeidbar.
Bei allem Bashing über die AVM-Prozesse muss man aber auch anerkennen, dass die vorbildlich reagiert haben. Hoffentlich machen sie jetzt auch einen Anlauf und suchen nach den anderen Bugs, die vermeidbar gewesen wären :-)
Update: Oh, eine Sache noch. Wie gesagt ohne jeden Einblick in diesen speziellen Fall. Was auch passieren kann, wieso so ein Bug nicht gemeldet wird: Wenn man beim Audit SO VIELE BUGS findet, dass man die gesamte verfügbare Zeit damit beschäftigt ist, die bereits gefundenen Bugs zu Protokoll zu geben, dann fällt hinten auch was runter. Das kommt gelegentlich vor. An der Stelle kann man dann dem Sicherheits-Dienstleiter keinen Vorwurf machen.
Ich behaupte auch nicht, dass dieser Bug aus irgendeinem automatisierten Tool hätte rausfallen müssen. Aber ich behaupte, dass das genau die Art von Angriffsoberfläche ist, die man bei einem Penetrationstest prüft. Das ist kein Obskuro-Spezial-Unfindbar-Krypto-Heisenbug, der sich nur bei bestimmten Sternenkonstellationen und Außentemperaturverhältnissen ausnutzen lässt.