Sven Rautenberg: Potentielle Gefahren beim Datei Upload

Beitrag lesen

Moin!

Diese Prüfung des Mimetyps ist unsinnig. Die Angabe stammt vom hochladenden HTTP-Client - das kann ein handelsüblicher Browser sein, aber genausogut ein manipulierender Angreifer, der deine Prüfung auf korrekten Mimetyp einfach umgeht, indem er den gewünschten Typ sendet, aber trotzdem "böse Dateiinhalte".
Stimmt. Ich überprüfe nun die Dateiendung der hochgeladenen Datei. Ist diese ~= .lua wird die Verarbeitung abgebrochen.

Naja, ich kann weder der Prüfung des Mimetyps noch der Dateiendung irgendetwas relevantes abgewinnen. Die Dateiendung explizit nicht als ".lua" haben zu wollen erscheint mir widersinnig, wenn man Lua-Skripte behandelt. (Oder meint "~=" etwa "ungleich"...)

Zusätzlich habe ich in meine .htaccess ein
  <Files *.lua>
    Order allow,deny
    Deny from all
  </Files>
eingetragen. Ist das jetzt ein ausreichender Schutz?

Das wurde andernorts schon mal angesprochen: Lagere diese Dateien außerhalb des vom Web aus erreichbaren Bereichs. Diese Pauschalbehandlung "nichts, was hochgeladen wurde, kann runtergeladen werden", ohne dass explizit irgendwelche Prüfungen und Sonderfälle beachtet werden, hilft ganz gut gegen übersehene Lückenbildung.

Generell ist für die Sicherheit die grundsätzliche Einstellung (sprich: Geisteshaltung) des Programmierers wichtig. Wenn der eher paranoid ist und kritische Prüfungen kombiniert mit pauschalen negativen Vorurteilen über die möglichen auftretenden Inhalte, führt das zu einer pessimistischen Behandlung der von außen eintreffenden Dateien, von denen nur die besten, standardkonformsten "überleben".

Das Gegenteil wäre das eher blauäugige "wird schon nichts passieren" - und nur, wenn mal was passiert ist, wird dieses Problem dann explizit gefixt, bis das nächste Problem auftritt.

Da hast du ja, wie dieser Thread beweist, zumindest schon mal das Bewußtsein entwickelt, dass Sicherheit nicht blöd ist und nur für Idioten da. :)

Im übrigen vielen Dank für deine Auflistung möglicher Gefahrenquellen. Denn um eine möglichst sichere Anwendung zu stricken, muss man ja erstmal um diese wissen, um wirkungsvolle und umfassende "Gegenmaßnahmen" treffen zu können. Und genau da hapert es bei mir (u.a.) - auf die meisten Böswilligkeiten so mancher User käme ich nie im Leben.

Die Liste ist natürlich nicht vollständig - kann sie nie sein.

Wie du selbst entdeckt hast, wäre es beispielsweise blöd, sich ".php"-Dateien auf den Webspace hochladen zu lassen, die man dann per HTTP abrufen und dabei von PHP-Interpreter ausführen lassen kann.

Sowas würde dir ja aber nie passieren, wenn du pauschal hochgeladene Dateien nie direkt zum Download anbietest, sondern sie immer nur per Skript zurücklieferst, welches die Dateiinhalte nicht ausführt, sondern als Bytedatenstrom mit "application/octet-stream" sendet.

Bilder könnte man, falls eine entsprechende Formatprüfung positiv ausfällt, ja auch mit entsprechendem Bild-Mimetyp schicken.

Deshalb: Pauschal erstmal Dinge zu verbieten, und dann geprüfte Einzelfälle wieder aufzuweichen, ist die weitaus bessere Strategie, als Dinge gar nicht zu beachten, und nur für einzelne Fälle Verbote zu installieren.

- Sven Rautenberg

--
"Love your nation - respect the others."