Content Security Policy (CSP) - Ein Kommentar

Content Security Policy (CSP)

Ein Kommentar

Marc Ruef
by Marc Ruef
time to read: 4 minutes

Im Webbereich sind Cross Site Scripting-Schwachstellen für einen Grossteil erfolgreicher Angriffe verantwortlich. Und mit der Etablierung von Web 2.0, das mit Ajax auf Javascript basiert, ist dieses Problem aus funktionalen Gründen nicht mehr ohne weiteres zu eliminieren.

Die jeweiligen Browserhersteller sind darum bemüht, das Ausnutzen derartiger Schwachstellen clientseitig anzugehen. Microsoft hat im Internet Explorer 8 einen simplen Filter für typische Pattern implementiert, um reflektive Type-1 Angriffe abzuwehren. Wie immer bei musterbasierten Blacklists kann auch hier mit klassischen Massnahmen die Einschränkung umgangen werden:

Beim Herumspielen mit dem neuen XSS-Filter fand ich einen interessanten Weg, wie durch einfaches Maskieren von beliebigem Javascript durch Nullbytes reflektives XSS (auch Type-1 XSS genannt) am Filter vorbeigeschleust werden kann und der Code ohne Warnung auf dem Client ausgeführt wird.

Das Mozilla Team geht noch einen Schritt weiter und führt in den kommenden Versionen von Firefox die Content Security Policy (vorgesehen für Firefox 3.6 oder 3.7) ein. Bei dieser wird es möglich, dass ein Webserver bzw. eine Webapplikation durch den Header X-Content-Security-Policy die Herkunft von Script-Code einschränken kann.

Die wichtigste Eigenschaft der CSP ist, dass bei der Anwendung sämtlicher Inline-Code nicht mehr ausgeführt wird. Dies gilt für script-Tags, Javascript-URIs und Event-Handlers. Dadurch kann ein Grossteil der üblichen XSS-Angriffe – dies betrifft ebenfalls persistente Type-2 Attacken – verhindert werden.

Zugelassen sind sodann nur noch Skripte, die explizit auf der verteilten Whitelist vermerkt sind. Dies sind in erster Linie Webserver, die beispielsweise in dedizierter Weise für das Verteilen der JS-Dateien zuständig sind. Aber auch das Hinzufügen eigener Events bleibt möglich.

Firefox 3.5 versagt beim CSP Test

Das gesamte Modell scheint ein richtiger Schritt in die richtige Richtung zu sein. Die grundlegenden Probleme von XSS-Attacken werden flankiert, so dass wohl ein Grossteil der üblichen Schwachstellen nicht mehr ohne weiteres ausnutzbar bleiben wird.

Dennoch werden mit CSP nicht nur Vorteile eingebracht. Das zusätzliche Modell erhöht die Komplexität einer Installation (und ebenfalls der Browser-Software). Vor allem auch deswegen, weil Webapplikationen nicht mehr ohne weiteres kleinere Javascript-Snipplets einbinden können. Das Unterbringen von Script-Code muss mit bedacht gewählt und umgesetzt werden. Gerade ältere Projekte oder Projekte aus dem nicht-professionellen Umfeld werden mit dieser zusätzlichen Hürde zu kämpfen haben. Dass der eine oder andere Entwickler deshalb auf CSP verzichtet ist wohl anzunehmen.

Ebenso gewinnen damit Header Injection Angriffe ein Mehr an Wichtigkeit. Durch erweiterte Manipulationen liessen sich nämlich die jeweiligen Zusatzfunktionen wieder deaktivieren und damit der verwundbare Zustand wiederherstellen. Die CSP bleibt damit wohl in erster Linie eine Symptombekämpfung:

Eine Veränderung, die den Angriff in seiner Form verändert, ihn jedoch nicht verhindert, ist nicht als (umfassende) Gegenmassnahme zu verstehen.

About the Author

Marc Ruef

Marc Ruef has been working in information security since the late 1990s. He is well-known for his many publications and books. The last one called The Art of Penetration Testing is discussing security testing in detail. He is a lecturer at several faculties, like ETH, HWZ, HSLU and IKF. (ORCID 0000-0002-1328-6357)

Links

You need support in such a project?

Our experts will get in contact with you!

×
Specific Criticism of CVSS4

Specific Criticism of CVSS4

Marc Ruef

scip Cybersecurity Forecast

scip Cybersecurity Forecast

Marc Ruef

Voice Authentication

Voice Authentication

Marc Ruef

Bug Bounty

Bug Bounty

Marc Ruef

You want more?

Further articles available here

You need support in such a project?

Our experts will get in contact with you!

You want more?

Further articles available here