Eingabedaten validieren sollte die erste Lektion für alle sein, die sich mit ihren Scripten ins "WeltWeite Warten" (www) trauen.
Leider gibt es immer wieder traurige Gegenbeispiele. fefe hat jetzt entdeckt, dass packages.debian.org die URL-Parameter ungeprüft übernimmt, inclusive der auf der Seite angezeigten MD5SUM des Pakets. Sowas ist ziemlich blauäugig ;-)
Vor ein paar Stunden konnte man noch beliebigen HTML-Code einschleußen (siehe Screenshot - ja, soviel Spaß muss sein), inzwischen wird "immerhin" die MD5SUM auf Länge und erlaubte Zeichen überprüft. Eine falsche MD5SUM ausgeben geht immer noch, solange die Länge stimmt.
Eine falsche MD5sum in Verbindung mit einem manipulierten FTP-Server heißt de facto, dass jemand ein gefaktes Paket mit beliebig bösem Inhalt anbieten kann und das nichtmal auffällt. Auf debian-www hält man sowas aber für "low risk". Es geht ja auch nur um potenziell gefakte Pakete mit bösen suid-root Programmen...
Was fefe übersehen hat: auch die anderen Parameter sind beliebig manipulierbar. Ich bin mal gespannt, wie lange Debian den Internet Explorer zum Download anbietet *eg*
Wie man sowas manipulationssicher programmiert? Eigentlich recht einfach - man packt die Nutzdaten (Paketnamen, MD5SUM usw.) in eine Datenbank und übergibt dem Script nur die ID als Parameter.
UPDATE: Inzwischen wurde die RegEx etwas verschärft und erlaubt nur noch [0-9a-f]. Ich habe die obigen Links etwas angepasst, damit sie weiterhin funktionieren. Falsche MD5SUMs kann man immer noch einschleußen...
Kommentare