Upload: Keine HTML Dateien zulassen / Session-Sicherheitslüc

Fragen zur Installation von CONTENIDO 4.9? Probleme bei der Konfiguration? Hinweise oder Fragen zur Entwicklung des Systemes oder zur Sicherheit?
Antworten
matthiasschnueriger
Beiträge: 60
Registriert: Mo 28. Nov 2005, 16:01
Kontaktdaten:

Upload: Keine HTML Dateien zulassen / Session-Sicherheitslüc

Beitrag von matthiasschnueriger » Mo 2. Aug 2010, 05:56

Hallo,

Ich habe meine Webseite einem Internet Security Experten gezeigt. Gemäss seinen Aussagen hat Contenido zum Teil gravierende Sicherheitslücken, welche ich jetzt zu schliessen versuche.

1. Wie kann ich bei der Datenverwaltung den Upload von HTML-Dateien verweigern?
Hintergrund: Meine Seite hat verschiedene User und wenn einer dieser User ein HTML File mit "Cross Site Scripting" (ich verstehe davon nichts) hochlädt, kann er theoretisch die Session eines anderen Users abfangen und sich dann ohne Zugangsdaten unter einem anderen Namen einloggen.

2. Das bringt mich zu Frage 2: Nach Angaben des Experten laufen die Sessions im Verzeichnis cms/ mit Cookies, in contenido/ jedoch über den URL Parameter "contenido=". Weshalb ist das so? Zitat Experte: "Allerdings ist bei Contenido eben genau das Session Cookie schlecht gemacht, weil's nicht an die Browser-Session gebunden ist, sondern nach einer Stunde abläuft."

Was sagen die Forum-Experten dazu...?

kummer
Beiträge: 2423
Registriert: Do 6. Mai 2004, 09:17
Wohnort: Bern, Schweiz
Kontaktdaten:

Re: Upload: Keine HTML Dateien zulassen / Session-Sicherheit

Beitrag von kummer » Mo 2. Aug 2010, 08:26

matthiasschnueriger hat geschrieben:1. Wie kann ich bei der Datenverwaltung den Upload von HTML-Dateien verweigern?
Hintergrund: Meine Seite hat verschiedene User und wenn einer dieser User ein HTML File mit "Cross Site Scripting" (ich verstehe davon nichts) hochlädt, kann er theoretisch die Session eines anderen Users abfangen und sich dann ohne Zugangsdaten unter einem anderen Namen einloggen.
Zunächst ist durch das Ausschalten von HTML beim Upload dieses Problem nicht weg. Es hängt genau genau genommen gar nicht mit den HTML-Dokumenten zusammen, obwohl schadhafter Code freilich dort eingebettet sein kann. Die grundsätzliche Frage ist ja, ob deine Benutzer vertrauenswürdig sind. Wenn nicht, dann musst du den von diesen Benutzer stammenden Inhalt stets auf Injektionen und schadhaften Code untersuchen oder besser gleich die Möglichkeiten soweit einschränken, dass die Übergabe entsprechender Scripte ausgeschlossen ist. Legt ein solcher Benutzer eine ganz normale Seite in Contenido an, kann er an dieser Stelle ebenfalls schadhaften Code unterbringen.

Trotzdem kannst du natürlich was tun. Beim Upload ist eine Möglichkeit. Du kannst aber auch einfach bei der Ausgabe eingreifen und Dateien mit der Endung .html und .htm gar nicht erst ausliefern. Dazu reicht ein Eintrag in der .htaccess. Aber wie gesagt: es wird dir nicht helfen, wenn deine Benutzer nicht vertrauenswürdig sind.
matthiasschnueriger hat geschrieben:2. Das bringt mich zu Frage 2: Nach Angaben des Experten laufen die Sessions im Verzeichnis cms/ mit Cookies, in contenido/ jedoch über den URL Parameter "contenido=". Weshalb ist das so? Zitat Experte: "Allerdings ist bei Contenido eben genau das Session Cookie schlecht gemacht, weil's nicht an die Browser-Session gebunden ist, sondern nach einer Stunde abläuft."
Tja, das stimmt; ich kenne jedoch weder den Grund noch weiss ich, weshalb das immer noch so ist. An dieser Stelle ist Wissen auf der Seite der Agentur gefragt. Idealerweise wird die Pflege ausschliesslich über SSL vorgenommen. Je nach Sicherheitsbedürfnis muss auch darüber nachgedacht werden, vom Benutzer eine zertifikatsbasierte Authentifizierung zu verlangen. Out-of-the-Box wird die Aktualisierung über den Port 80 vorgenommen und sowohl Benutzername als auch Passwort im Klartext übertragen. Wenn man das so belässt, sind alle anderen Sicherheitsprobleme mehr oder weniger irrelevant. Will man also was tun, sollte man dort ansetzen.

Die Datenbankverbindungsdaten des Frontends sollten sich ausserdem von denen im Backend unterscheiden. Im Frontend sollte der DB-Benutzer ausschliesslich über Select-Rechte verfügen sowie ggf. über Update-, Insert- und Delete-Rechte für spezifische Tabellen, bei welchen das tatsächlich notwendig ist. Welche das sind, hängt von den verwendeten Modulen ab.

Dann sollte man alle verwendeten Module auf Sicherheitslücken untersuchen und ggf. selber welche schreiben. Das gilt insbesondere für Module, die Besucherdaten entgegen nehmen. Also Kontaktformulare, Gästebuchmodule, Newsletter usw. Oder man lässt solche besser gleich weg. Hängt halt vom Sicherheitsbedürfnis ab.

Deine Benutzer, das sollte man daneben nicht vergessen, müssen zwingend als vertrauenswürdig gelten. Wenn das nicht so ist, dürfen sie im Backend schlicht nichts tun. Du hast im Backend alle Möglichkeiten und diese will man vernünftigerweise nicht einschränken. Ich vermute mal, wir sprechen von zwei Arten von Benutzern. Diejenigen, die Zugang zum Backend erhalten, müssen als vertrauenswürdig gelten, sonst haben sie dort nichts verloren. Benutzer, die über das Frontend Daten liefern können naturgemäss nicht als vertrauenswürdig eingestuft werden. Deren Möglichkeiten müssen soweit eingeschränkt werden, dass die Injektion schadhafter Code ausgeschlossen ist. Das ist nun allerdings mehrheitlich eine Frage der Module und weniger des Kernsystems.

Kurz gesagt: dein Sicherheitsexperte hat schon recht. Allerdings hat er dir nur die Hälfte gesagt. Wenn er also tatsächlich ein Experte ist, wird er die aufzeigen können, was du tun kannst, um Sicherheit zu gewinnen. Das Ausschalten von HTML-Uploads sowie das angesprochene Session-Problem dürften nicht die grössten Probleme sein.
aitsu.org :: schnell - flexibel - komfortabel :: Version 2.2.0 (since June 22, 2011) (jetzt mit dual license GPL/kommerziell)

Oldperl
Beiträge: 4254
Registriert: Do 30. Jun 2005, 22:56
Wohnort: Eltmann, Unterfranken, Bayern
Kontaktdaten:

Re: Upload: Keine HTML Dateien zulassen / Session-Sicherheit

Beitrag von Oldperl » Mo 2. Aug 2010, 13:55

:!: Verschoben, Sicherheitsthema.

Gruß aus Franken

Ortwin
ConLite 2.1, alternatives und stabiles Update von Contenido 4.8.x unter PHP 7.x - Download und Repo auf Gitport.de
phpBO Search Advanced - das Suchwort-Plugin für CONTENIDO 4.9
Mein Entwickler-Blog

matthiasschnueriger
Beiträge: 60
Registriert: Mo 28. Nov 2005, 16:01
Kontaktdaten:

Re: Upload: Keine HTML Dateien zulassen / Session-Sicherheit

Beitrag von matthiasschnueriger » Mi 4. Aug 2010, 10:00

Kummer: Vielen Dank für deine ausführlichen Erklärungen! Ich sehe das genauso, wenn ein Benutzer mit Zugang zum Backend Schaden anrichten will, ist der Fehler bereits viel vorher (und zwar bei der Vergabe der Zugangsdaten) geschehen!

kummer
Beiträge: 2423
Registriert: Do 6. Mai 2004, 09:17
Wohnort: Bern, Schweiz
Kontaktdaten:

Re: Upload: Keine HTML Dateien zulassen / Session-Sicherheit

Beitrag von kummer » Mi 4. Aug 2010, 12:25

Dennoch würde ich mindestens den Zugang auf das contenido-Verzeichnis ausschliesslich über SSL laufen lassen. Sonst werden Passwörter im Klartext übertragen.
aitsu.org :: schnell - flexibel - komfortabel :: Version 2.2.0 (since June 22, 2011) (jetzt mit dual license GPL/kommerziell)

Antworten