<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="en">
		<id>https://wiki.owasp.org/api.php?action=feedcontributions&amp;feedformat=atom&amp;user=Mrohr</id>
		<title>OWASP - User contributions [en]</title>
		<link rel="self" type="application/atom+xml" href="https://wiki.owasp.org/api.php?action=feedcontributions&amp;feedformat=atom&amp;user=Mrohr"/>
		<link rel="alternate" type="text/html" href="https://wiki.owasp.org/index.php/Special:Contributions/Mrohr"/>
		<updated>2026-04-05T19:35:35Z</updated>
		<subtitle>User contributions</subtitle>
		<generator>MediaWiki 1.27.2</generator>

	<entry>
		<id>https://wiki.owasp.org/index.php?title=Category:OWASP_Java_Project&amp;diff=136839</id>
		<title>Category:OWASP Java Project</title>
		<link rel="alternate" type="text/html" href="https://wiki.owasp.org/index.php?title=Category:OWASP_Java_Project&amp;diff=136839"/>
				<updated>2012-09-30T20:46:50Z</updated>
		
		<summary type="html">&lt;p&gt;Mrohr: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;==== Main  ====&lt;br /&gt;
&lt;br /&gt;
The OWASP Java Project's goal is to enable Java and J2EE developers to build secure applications efficiently. See the [http://www.owasp.org/index.php/OWASP_Java_Project#tab=Roadmap OWASP Java Project Roadmap] for more information on our plans.&lt;br /&gt;
&lt;br /&gt;
==Java Security Overview==&lt;br /&gt;
&lt;br /&gt;
While Java and J2EE contain many security technologies, it is not easy to produce an application without security vulnerabilities. Most application security [[:Category:Vulnerability|vulnerabilities]] apply to Java applications just like other environments. The notable exception is [[Buffer Overflow|buffer overflow]] and related issues that do not apply to Java applications.&lt;br /&gt;
&lt;br /&gt;
There is a wealth of information about vulnerabilities that apply to Java and JavaEE application in the [[:Category:Vulnerability|Vulnerability]] articles here at OWASP. The articles that have specific Java examples are tagged with the [[:Category:Java|Java category]].&lt;br /&gt;
&lt;br /&gt;
The goals of this project are to provide information about building, configuring, deploying, operating, and maintaining secure Java applications. We cover the following topics:&lt;br /&gt;
&lt;br /&gt;
; [[OWASP Java Table of Contents#J2EE Security for Architects | J2EE Security for Architects]]&lt;br /&gt;
: Provides information about the design and architectural considerations for a Java web application.  Common architectures such as EJB, Web Services and Spring Middle tiers are discussed.&lt;br /&gt;
&lt;br /&gt;
; [[OWASP Java Table of Contents#J2EE Security for Developers | J2EE Security for Developers]]&lt;br /&gt;
: These articles cover dangerous Java calls and common vulnerabilities associated with them, such as Runtime.exec(), Statement.execute(), readline(), etc... The dangers of native code, dynamic code, and reflection will be discussed. We'll also talk about using tools like PMD, jlint, FindBugs, Eclipse, jad, and more. This section will also cover standard security mechanisms in the JDK, such as cryptography, logging, encryption, error handling.  Securing elements of an application, such as servlets, JSPs, controllers, business logic, and persistence layers will be covered. We'll discuss handling request parameters, encoding, injection, and more. We'll also discuss the use of security mechanisms such as log4j, BouncyCastle, XML encryption, XML signature, and other technologies.&lt;br /&gt;
&lt;br /&gt;
; [[OWASP Java Table of Contents#J2EE Security For Deployers| J2EE Security for Deployers]]&lt;br /&gt;
: These articles cover topics specifically related to the J2EE environment. We discuss minimizing the attack surface in web.xml, configuring error handlers, and performing hardening of popular J2EE application servers.&lt;br /&gt;
&lt;br /&gt;
; [[OWASP Java Table of Contents#J2EE Security for Security Analysts and Testers| J2EE Security for Security Analysts and Testers]]&lt;br /&gt;
: These articles cover the verification, analysis, and testing of the security of J2EE applications. This section will cover using tools to find vulnerabilities, both in source code and in running applications. These articles will focus on J2EE-specific aspects of testing applications that use various common J2EE frameworks and coding patterns.&lt;br /&gt;
&lt;br /&gt;
==== Related OWASP Projects  ====&lt;br /&gt;
&lt;br /&gt;
;[[:Category:OWASP Enterprise Security API|OWASP Enterprise Security API (ESAPI) Project]] &lt;br /&gt;
:a free and open collection of all the security methods that a developer needs to build a secure web application.&lt;br /&gt;
&lt;br /&gt;
;[[:Category:OWASP Guide Project|OWASP Development Guide]] &lt;br /&gt;
:a massive document covering all aspects of web application and web service security&lt;br /&gt;
&lt;br /&gt;
;[[:Category:OWASP AntiSamy Project|OWASP AntiSamy Java Project]] &lt;br /&gt;
:an API for validating rich HTML/CSS input from users without exposure to cross-site scripting and phishing attacks&lt;br /&gt;
&lt;br /&gt;
;[[OWASP Secure Coding Practices - Quick Reference Guide|OWASP Secure Coding Practices - Quick Reference Guide]] &lt;br /&gt;
:this document provides a quick high level reference for secure coding practices. It is technology agnostic and defines a set of general software security coding practices, in a checklist format, that can be integrated into the development lifecycle.&lt;br /&gt;
&lt;br /&gt;
;[[:Category:OWASP Code Review Project|OWASP Code Review Guide]] &lt;br /&gt;
:a project to capture best practices for reviewing code.&lt;br /&gt;
&lt;br /&gt;
;[[:Category:OWASP CSRFGuard Project|OWASP CSRFGuard Project]] &lt;br /&gt;
:a J2EE filter that implements a unique request token to mitigate CSRF attacks&lt;br /&gt;
&lt;br /&gt;
==== Resources  ====&lt;br /&gt;
&amp;lt;tbd&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== Roadmap  ====&lt;br /&gt;
The OWASP Java Project's overall goal is to...&lt;br /&gt;
&lt;br /&gt;
 build and maintain a central landing page on the Web for all Java users (developers, architects &amp;amp; co.) interested in Web security&lt;br /&gt;
&lt;br /&gt;
and to&lt;br /&gt;
&lt;br /&gt;
 produce materials that show J2EE architects, developers, and&lt;br /&gt;
 deployers how to deal with most common application security&lt;br /&gt;
 problems throughout the lifecycle.&lt;br /&gt;
&lt;br /&gt;
In the near term, we are focused on the following tactical goals:&lt;br /&gt;
&lt;br /&gt;
# Restructure the existing content&lt;br /&gt;
# Align the page with other Java-related OWASP projects like ESAPI, Webgoat, ASVS (including a new chapter:  &amp;quot;OWASP J2EE Related Projects&amp;quot;)&lt;br /&gt;
# Priorize work on missing content&lt;br /&gt;
# Implement a J2EE/Java EE Secure Coding Guideline based on ESAPI, ASVS and/or the Quick Reference Guide.&lt;br /&gt;
# Set-up a comparision of security aspects of web frameworks such like struts2, spring mvc, jsf, gwt, etc.&lt;br /&gt;
# Set-up a comparision of security aspects of templating technologies such as jsp, velocity, tiles, etc.&lt;br /&gt;
# Provide examples of how to prevent comman attacks like XSS in popular web frameworks&lt;br /&gt;
# A practical guide to implementing a security policy for a Java web application&lt;br /&gt;
# Provide secure configuration guides for popular application servers&lt;br /&gt;
# Provide an OWASP Java Top 10&lt;br /&gt;
&lt;br /&gt;
==Current Tasks==&lt;br /&gt;
* Call for volunteers - Join the [http://lists.owasp.org/mailman/listinfo/java-project mailing list], read the [[Tutorial]], check the [[OWASP Java Table of Contents]] and get started!&lt;br /&gt;
* Review of current articles&lt;br /&gt;
See the [[OWASP Java Table of Contents]] for details of individual article status &lt;br /&gt;
&lt;br /&gt;
==Ideas==&lt;br /&gt;
&lt;br /&gt;
Please submit your high level ideas about the direction of the OWASP Java Project here (you can sign your ideas by adding four tilde characters like this &amp;lt;nowiki&amp;gt;~~~~&amp;lt;/nowiki&amp;gt;)&lt;br /&gt;
* To add specific articles, visit the [[OWASP Java Table of Contents]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==== Project About  ====&lt;br /&gt;
{{:Projects/OWASP Java Project | Project About}}&lt;br /&gt;
&lt;br /&gt;
__NOTOC__&lt;br /&gt;
&amp;lt;headertabs/&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Joining the Project==&lt;br /&gt;
&lt;br /&gt;
[[user:Mrichter|Mirko Richter]] is the project lead.  The project's high level roadmap can be found at the Roadmap tab.&lt;br /&gt;
* Please submit your ideas for individual articles to the [[Java Project Article Wishlist]].&lt;br /&gt;
* If you'd like to contribute:&lt;br /&gt;
# visit the [[Tutorial]], &lt;br /&gt;
# join the [http://lists.owasp.org/mailman/listinfo/java-project mailing list] &lt;br /&gt;
# and pick a topic from the [[OWASP Java Table of Contents]], or suggest a new topic.&amp;lt;br&amp;gt;&lt;br /&gt;
Remember to add the tag: &amp;lt;nowiki&amp;gt;[[Category:OWASP Java Project]]&amp;lt;/nowiki&amp;gt; to the end of new articles so that they're properly categorised.&lt;br /&gt;
&lt;br /&gt;
[[Category:OWASP_Project| Java Project ]]&lt;br /&gt;
[[Category:OWASP Document]]&lt;br /&gt;
[[Category:OWASP Download]]&lt;br /&gt;
[[Category:Language]]&lt;/div&gt;</summary>
		<author><name>Mrohr</name></author>	</entry>

	<entry>
		<id>https://wiki.owasp.org/index.php?title=Talk:OWASP_Review_BSI_IT-Grundschutz_Baustein_Webanwendungen&amp;diff=130225</id>
		<title>Talk:OWASP Review BSI IT-Grundschutz Baustein Webanwendungen</title>
		<link rel="alternate" type="text/html" href="https://wiki.owasp.org/index.php?title=Talk:OWASP_Review_BSI_IT-Grundschutz_Baustein_Webanwendungen&amp;diff=130225"/>
				<updated>2012-05-21T19:41:41Z</updated>
		
		<summary type="html">&lt;p&gt;Mrohr: /* G 4.WA05 Fehlende oder mangelhafte Fehlerbehandlung durch Web-Anwendungen (Tobias, Matthias) */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Since it's about a review of a document in German, all the discussions will be done in German :-)&lt;br /&gt;
&lt;br /&gt;
Diskussionen rund um den Review des &amp;quot;IT-Grundschutzbausteins Webanwendungen&amp;quot; finden hier statt, sinnvollerweise auf Deutsch :-)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Vorschlag für Kriterien, die an unser Review angelegt werden sollten (.kai) ==&lt;br /&gt;
&lt;br /&gt;
* Der Baustein soll alle wichtigen Themen der Entwicklung sicherer&lt;br /&gt;
Webanwendungen enthalten.&lt;br /&gt;
&lt;br /&gt;
* Der Baustein soll die verschiedenen Phasen der Software-Entwicklung&lt;br /&gt;
vollständig abdecken.&lt;br /&gt;
&lt;br /&gt;
* Der Baustein soll zwischen verbindlichen, prüfbaren Vorgaben und&lt;br /&gt;
unverbindlichen Empfehlungen sprachlich sauber unterscheiden (hier&lt;br /&gt;
spielt mein Auditorenblick eine Rolle). Vor allem soll der Baustein&lt;br /&gt;
verbindliche Anforderungen auch tatsächlich stellen. Alle&lt;br /&gt;
verbindlichen Anforderungen müssen unabhängig von der jeweiligen&lt;br /&gt;
Umgebung auch umsetzbar sein, d.h. sie müssen entsprechend generisch&lt;br /&gt;
sein.&lt;br /&gt;
&lt;br /&gt;
* Die Maßnahmen sollen nur in (begründbaren) Ausnahmen zu Empfehlungen&lt;br /&gt;
von OWASP im Widerspruch stehen.&lt;br /&gt;
&lt;br /&gt;
* Die Maßnahmen sollen verständlich und anwendbar sein.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== &amp;quot;Hilfsmittel&amp;quot; (Markus, Matthias) ==&lt;br /&gt;
Ich würde das Script zur Vermeidung von Clickjacking wrappen und nicht als losen Skript-block in den Text einbinden - einfach schlechter Programmierstiel diese losen Blöcke.&lt;br /&gt;
Der Zugriff auf das Body-Element mit byTagName-Array[0] ist auch nicht wirklich gut. Ich halte Zugriffe über das DOM (klassisch), bei ID bzw. XPATH für besser. &lt;br /&gt;
&lt;br /&gt;
([[User:Mrohr|Matthias]]) Verwunderlich finde ich aber, dass der Autor zum Einen zwar von der Verwendung von JavaScript vollstaendig abraet, zum Anderen aber eben solches als Best-Practice-Ansatz fuer Click Jacking empfiehlt.&lt;br /&gt;
&lt;br /&gt;
SQL-Injection Characters:&lt;br /&gt;
die Pipe fehlt hier zur Textkonatenierung&lt;br /&gt;
+ / - haben auch eine Bedeutung bei JOINs.&lt;br /&gt;
&lt;br /&gt;
([[User:Mrohr|Matthias]]) Special Character bzw. DB Escaping ist schon recht DB-spezifisch (siehe [https://www.owasp.org/index.php/SQL_Injection_Prevention_Cheat_Sheet SQL Prevention Cheat sheet]). Wozu werden die hier ueberhaupt aufgefuehrt? Um Eingebafilterung nach pot. SQL Injections durchzufuheren, oder um eine eigene Escaping-Funktion zu schreiben? Raus damit!&lt;br /&gt;
&lt;br /&gt;
== &amp;quot;Goldene Regeln&amp;quot; (Matthias) ==&lt;br /&gt;
&lt;br /&gt;
Hier meine Anmerkungen zu diesem Dokument:&lt;br /&gt;
&lt;br /&gt;
; 1. Für mich fehlende Punkte&lt;br /&gt;
* Korrektur der Ursache (Root Cause) von Schwachstellen statt  Verhinderung deren Ausnutzung&lt;br /&gt;
* Bezug auf Minimierung der Angriffsfläche und Least-Privilege-Prinzip&lt;br /&gt;
* Bezug auf Defense-in-Depth-Prinzip&lt;br /&gt;
* Verwendung von getesteten Security APIs (z.B. OWASP ESAPI) statt selbstentwickelter Funktionen&lt;br /&gt;
* Bezug auf Externalisierung von Sicherheitsfunktionen, sowie deklerative vor programmatischer Sicherheit.&lt;br /&gt;
&lt;br /&gt;
; 2. Begriff &amp;quot;Web-Anwendung&amp;quot;&lt;br /&gt;
Würde ich generell durch &amp;quot;Webanwendung&amp;quot; ersetzen.&lt;br /&gt;
&lt;br /&gt;
; 3. Einleitung (&amp;quot;Web-Anwendungen stellen Funktionalität zur Verfügung, ...&amp;quot;)&lt;br /&gt;
&lt;br /&gt;
Wozu dient dieser Satz?&lt;br /&gt;
&lt;br /&gt;
; 4. &amp;quot;Die Architektur der Web-Anwendung ist im Sicherheitskonzept zu  dokumentieren.....&amp;quot; &lt;br /&gt;
&lt;br /&gt;
Ich fände es sinnvoller, wenn hier von der &amp;quot;Sicherheitsarchitektur&amp;quot; gesprochen wird, welche etwa neben den sicherheitsrelevanten Datenflüssen, sensible Komponenten, Entry Points, Akteure architekturelle Security Controls wie Authentisierung, Kryptographie und natürlich die Trust Boundaries beinhaltet.&lt;br /&gt;
&lt;br /&gt;
; 5. &amp;quot;Bei Web-Anwendungen handelt es sich häufig um spezielle Eigenentwicklungen....&amp;quot;&lt;br /&gt;
&lt;br /&gt;
Erstens würde ich hier den geläufigen Begriff &amp;quot;Individualsoftware&amp;quot; verwenden. Zweitens würde ich statt bestimmte SDLC-Phasen vorzugeben (die Begriffe &amp;quot;Softwareverteilung&amp;quot; und &amp;quot;Integration&amp;quot; sind mir bei Webanwendungen bisher noch nicht so häufig untergekommen), besser von der Notwendigkeit sprechen, Sicherheit in allen Entwicklungsphasen zu berücksichtigen, also eines SDLs.&lt;br /&gt;
&lt;br /&gt;
; 6. &amp;quot;Alle Ein- und Ausgaben der Web-Anwendung müssen in eine normalisierte Form überführt werden....&amp;quot;&lt;br /&gt;
&lt;br /&gt;
Normalisierung ist für mich nicht gleich Kanonsierung, auch wenn beide Begriffe häufig als synonym verwendet werden.  Der Unterschied wird in der [http://owasp-esapi-java.googlecode.com/svn/trunk_doc/2.0-rc4/org/owasp/esapi/Encoder.html API-Beschreibung der ESAPI] erklärt. Die Normalisierungs-Funktion ist allerdings schon vor einiger Zeit aus der ESAPI [https://lists.owasp.org/pipermail/esapi-dev/2010-January/000266.html rausgeflogen]. Die generelle Kanonisierung von Ausgaben halte ich dazu für nicht sinnvoll.&lt;br /&gt;
&lt;br /&gt;
Zweitens, finde ich den weiteren Text zwar grundsätzlich formal korrekt, aber so allgemein, dass dieser glaube ich niemandem so richtig etwas bringt.  &lt;br /&gt;
&lt;br /&gt;
Besser fände ich hier Ein- von Ausgabevalidierung grundsätzlich voneinander abzugrenzen. Etwa was ich per Eingabevalidierung (Längenprüfung, Casting, etc. per Whitelisting) und was mit Ausgebavalidierung (Enkodierung, Escaping, Parametrisierung) machen muss und kann.&lt;br /&gt;
&lt;br /&gt;
Eingabedaten können technisch zudem auch Werte eingelesener Property-Dateien sein. Muss ich die auch validieren? Ist das dann noch Grundschutz? &lt;br /&gt;
&lt;br /&gt;
; 7. &amp;quot;Für den Zugriff auf sensitive Funktionen oder Informationen muss die Web-Anwendung eine wirksame Authentisierung und Sitzungsverwaltung unterstützen. Die Eigenschaften der Sitzungs-ID müssen so gewählt werden, dass die Sitzung ausreichend geschützt ist. ....&amp;quot;&lt;br /&gt;
&lt;br /&gt;
Besser fände ich &amp;quot;eine Authentisierung, die über eine dem Schutzbedarf der Anwendung angemessene Stärke verfügt.&amp;quot; &lt;br /&gt;
&lt;br /&gt;
Eigentlich geht es doch mehr um den Schutz der Sitzungs-ID, da diese gewöhnlich im Verlauf einer Sitzung den Client authentisiert. Oder den Schutz des Zugriffs auf eine Sitzung. &lt;br /&gt;
&lt;br /&gt;
Zudem fehlt hier meiner Meinung nach der Hinweis auf die bevorzugte Verwendung getesteter Standardkomponenten.&lt;br /&gt;
&lt;br /&gt;
; 8. &amp;quot;Die Web-Anwendung sollte die zu übermittelnden Daten schützen.&amp;quot;&lt;br /&gt;
&lt;br /&gt;
Dies würde ich nur auf sensible Daten beziehen. Zusätzlich zu HTTPS würde ich hier schreiben, dass sensible Daten generell nicht in der URL übertragen werden dürfen.&lt;br /&gt;
&lt;br /&gt;
; 9. &amp;quot;Die Preisgabe interner Informationen (z.B. Kommentare, Fehlermeldungen)&amp;quot;&lt;br /&gt;
&lt;br /&gt;
Hier würde ich eher schreiben &amp;quot;(IN Kommentaren, Fehlermeldungen, HTTP Headern, etc.)&amp;quot;&lt;br /&gt;
&lt;br /&gt;
; 10. &amp;quot;Fehler müssen so behandelt werden, ... müssen Fehler bei der Autorisierung zu einer Verweigerung beim Zugriff auf die angeforderte Ressource führen.&amp;quot;&lt;br /&gt;
&lt;br /&gt;
Sprachlich: &amp;quot;Die Webanwendung muss sich stets in einem sicheren Zustand befinden. Beispielsweise müssen Fehler bei der Autorisierung zu einer Verweigerung des Zugriffs führen (Default-Deny-Strategie).&amp;quot;&lt;br /&gt;
&lt;br /&gt;
; 11. &amp;quot;Die Logging-Funktionen der Web-Anwendung müssen aufgetretene Ereignisse derart protokollieren, dass sicherheitskritische Vorfälle nachvollzogen werden können.&amp;quot;&lt;br /&gt;
&lt;br /&gt;
Hier würde hier eher von &amp;quot;allen sicherheitsrelevanten Ereignissen&amp;quot; sprechen.&lt;br /&gt;
&lt;br /&gt;
Weiterhin sollten insbesondere beim Logging der Datenschutz berücksichtigt werden, personenbezogene Daten also nach Möglichkeit nicht oder nur anonymisiert in technischen Logdateien protokolliert werden.&lt;br /&gt;
&lt;br /&gt;
; 12. &amp;quot;Alle Sicherheitsmechanismen (z.B. Authentisierung und Zugriffskontrolle) sind serverseitig zu implementieren und können nicht durch clientseitige Mechanismen ersetzt werden.&amp;quot;&lt;br /&gt;
&lt;br /&gt;
Die Aussage ist so nicht korrekt. Darüber hatten wir bereits bei der ASVS mehrfach diskutiert. &lt;br /&gt;
&lt;br /&gt;
Überall dort wo der Client angegriffen wird, also etwa bei RIAs (Stichwort DOM-Based XSS) müssen wir Security Controls clientseitig implementieren. Es gibt mittlerweile deshalb auch eine Portierung der ESAPI auf Javascript. Überall dort wo der Server oder Hintegrundsysteme angegriffen werden, ist die Aussage aber natürlich zutreffend.&lt;br /&gt;
&lt;br /&gt;
== &amp;quot;Gefährdungen&amp;quot; (Markus, Dennis, .... &amp;lt;Dein Name&amp;gt;) ==&lt;br /&gt;
; Generell:&lt;br /&gt;
Reference auf RFCs fehlen.&lt;br /&gt;
&lt;br /&gt;
==B.5.XX Web-Anwendungen ==&lt;br /&gt;
; 1. Erster Absatz - Letzter Satz: --Wieso werden hier nur HTML/XML Doks und Oberflächen angesprochen? Was ist der Unterschied zwischen einem HTML-Dok und einer Oberfläche? Was ist mit  Flash, etc.? Was ist mit WebSockets?&lt;br /&gt;
; 2. Stichpunkt &amp;quot;Protokollierung&amp;quot;: Sicherheits relevant ist ein sehr dehnbarer Begriff - Eine bessere Formulierung könnte sein: Zur Rekonstruktion von Nutzerhandlungen nötige Ereignisse (positve &amp;amp; negative) müssen protokolliert werden . . . &lt;br /&gt;
; 3. Absatz: &amp;quot;Abgrenzung des Bausteins&amp;quot;: &amp;quot;Die spez. Sicherheitsanforderungen an Web-Services werden in diesem Baustein nicht betrachtet&amp;quot; --&amp;gt; Wie so nicht? Was ist das Backend von einer Rest / AJAX-basierenden Webanwendung denn anderes als ein Web-Service? Diesen Satz würde ich entfernen.&lt;br /&gt;
; 4.Vorsätzliche Handlungen -&amp;gt; Web-Spoofing (G.5.87) -- Missverständliche Bezeichnung / Nomenklatur&lt;br /&gt;
; 5. Seite 4 : erste Zeile &amp;quot;Umsetzung&amp;quot;: &amp;quot;dafür umzusetztende Komponenten müssen die Webanwendung schützen...&amp;quot; - Hier fehlt mir der Hinweis, dass dieser Schutz verifiziert werden muss.&lt;br /&gt;
; 6 Seite 5: &amp;quot;Umsetzung&amp;quot; - Wir haben CSRF, D(D)os und SQL-Injection aber wo ist XSS?&lt;br /&gt;
; 7 Seite 7: &amp;quot;Die Sicherheitsfunktion wird ausschließlich clientseitig...&amp;quot; --&amp;gt; Warum muss der Angreifer überhaupt einen Browser umkonfigurieren? Was ist mit Proxies, Scripts, etc.? Ich würde das reduzieren darauf, dass rein Webbrowser-basierende Schutzfunktionen einfach umgangen werden können.&lt;br /&gt;
; 8 Seite 8: Die angesprochenen Punkte hinterlassen den Eindruck nicht vollständig zu sein: Mir fehlen Punkte wie &amp;quot;Outsourcing&amp;quot;, &amp;quot;KnowHow der Entwickler&amp;quot;, Tooling, Framework-Auswahl, etc.&lt;br /&gt;
; 9 Seite 9: Eigentlich möchte der Autor hier über Datenschutz sprechen. Abgesehen von den letzten drei Zeilen geht es aber nur um &amp;quot;User tracking&amp;quot; - Wo ist der Rest der Datenschutzproblematik? Warum der Fokuss auf Tracking? Mir ist das zu einseitig.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
tbd.&lt;br /&gt;
&lt;br /&gt;
; Wortwahl:&lt;br /&gt;
Ich stosse innerhalb der Texte immer wieder an die Worten '''Hintergrundsystem''' und '''Sicherheitskontext'''.&lt;br /&gt;
'''Hintergrundsystem:''' besseres Synonym?&lt;br /&gt;
'''Sicherheitskontext:''' nur weil es in den Texten um Sicherheit geht muss nicht an jeder Stelle immer wieder das Wort _Sicherheits_kontext eingebaut werden.&lt;br /&gt;
Bsp: &amp;quot;Erlangt ein Angreifer Kenntnis von einer solchen gültigen, aber nicht mehr genutzten SessionID, so kann er die Web-Anwendung im Sicherheitskontext des nicht abgemeldeten Benutzers weiter verwenden.&amp;quot; (G 5,WA12 Unzureichendes Session-Management von Web-Anwendungen)&lt;br /&gt;
Verbesserungsansansatz: ... so kann er die Web-Anwendung anstelle des eigentlichen Besitzers weiterhin verwenden.&lt;br /&gt;
&lt;br /&gt;
== &amp;quot;G 2.WA01 Mangelhafte Auswahl oder Konzeption von Web-Anwendungen&amp;quot; (Matthias) ==&lt;br /&gt;
&lt;br /&gt;
Nachdem ich mir diese Gefährdung durchgelesen hatte, fehlten mir ehrlich gesagt etwas die Worte. Nicht nur, dass hier fast jeder zweite Satz entweder falsch ist bzw. massive Fehler enthält oder ich diesen schlicht nicht verstehe, ist der ganze Text sprachlich wirklich enorm verbesserungsfähig. &lt;br /&gt;
&lt;br /&gt;
Na gut, ich konzentriere mich mal auf die fachlichen Punkte:&lt;br /&gt;
&lt;br /&gt;
; 1. Security Controls&lt;br /&gt;
Werden mal mit &amp;quot;Schutzmechanismen&amp;quot;, mal mit &amp;quot;Sicherheitskomponenten&amp;quot; und dann wieder als &amp;quot;Sicherheitsfunktionen&amp;quot; bezeichnet. Hier macht eine einheitliche Benennung sicherlich Sinn und ist weniger verwirrend.&lt;br /&gt;
&lt;br /&gt;
; 2. &amp;quot;Eine Web-Anwendung ist in der Regel ein verteiltes, komplexes System bestehend aus unterschiedlichen Komponenten (z. B. Webserver, Applikationsserver, Hintergrundsysteme)&amp;quot;&lt;br /&gt;
&lt;br /&gt;
Eine Webanwendung besteht sicher nicht aus einem Webserver- oder anderer infrastruktureller Komponenten, sondern ist Software welches diese nutzt.&lt;br /&gt;
&lt;br /&gt;
; 3. &amp;quot;Bei individuell entwickelten Web-Anwendungen sind im Allgemeinen die Frameworks, Komponenten und Schnittstellen im Rahmen der Konzeption auszuwählen und deren Einbindung und Absicherung zu betrachten....Im Gegensatz dazu ist bei der Konzeption von Web-Anwendungen auf Basis von Standardsoftware insbesondere auf die Auswahl der Software und die Konfiguration der Teilkomponenten zu achten&amp;quot;&lt;br /&gt;
&lt;br /&gt;
Wir unterscheiden im Rahmen von Webanwendungen eigentlich Free or Opensource Software (FOSS bzw. FLOSS), Standardsoftware und Individualsoftware voneinander. Wir unterscheiden nicht Frameworks von Standardsoftware. Frameworks können Teil von Standardsoftware sein, wie etwa bei SharePoint, SAP, etc, oder aber FOSS, wie etwa Spring. Die ganzen Absätze machen für mich daher keinen Sinn.&lt;br /&gt;
&lt;br /&gt;
; 4. &amp;quot;Eine Sicherheitsfunktion (z. B. Authentisierung, Autorisierung) wird nicht an einer Stelle umgesetzt und verwendet, sondern ist mehrfach in der Web- Anwendung realisiert. Wird diese Sicherheitsfunktion an den verschiedenen Stellen unterschiedlich umgesetzt, führt dies zu einem uneinheitlichen Sicherheitsniveau.&amp;quot;&lt;br /&gt;
&lt;br /&gt;
Natürlich ist die mehrfache Verwendung bestimmter Security Controls, beispielsweise von Zugriffskontrollen (Complete-Mediation) oder Validierung (Robustheit) erstrebenswert. Was der Autor hier wahrscheinlich meinte, war die Notwendigkeit diese zu Kapseln bzw. zu Externalisieren. Das bezieht sich im übrigen nicht nur auf die Controls selbst, sondern auch auf ihre Parametrisierung (etwa. über Konfigdateien / XACML).&lt;br /&gt;
&lt;br /&gt;
Wichtiger wäre in diesem Zusammenhang zudem die fehlende Berücksichtigung bestimmter Security Controls.&lt;br /&gt;
&lt;br /&gt;
; 5. &amp;quot;Auswahl von Web-Anwendungen auf Basis von Standardsoftware&amp;quot;&lt;br /&gt;
Was will der Satz sagen? Ich wähle Standardsoftware aus, aber doch keine Webanwendungen. Oder heißt das, ich kaufe eine existierende Anwendung ein (Webanwendung!=Indivudualsoftware)? &lt;br /&gt;
&lt;br /&gt;
; 6. &amp;quot;Das ausgewählte Produkt verfügt nicht über die ausreichende Sicherheitsfunktionalität, ... Daher müssen die notwendigen Schutzmechanismen nachträglich hinzugefügt werden, wodurch zusätzliche Aufwände entstehen.&amp;quot;&lt;br /&gt;
Das ist etwas sehr positiv formuliert. Tatsächlich können fehlende Security Controls in zugekaufter Software (insb. Standardsoftware) in der Realität häufig gar nicht hinzugefügt werden oder nur perimetrisch (z.B. per WAF oder Access Gateway).&lt;br /&gt;
&lt;br /&gt;
; 7. &amp;quot;Die Hintergrundsysteme werden unzureichend abgesichert und dadurch ist die Datenbank der Web-Anwendung aus dem Internet erreichbar.&amp;quot;&lt;br /&gt;
Gehören fehlende Netzwerksegmentierung bzw. Firewallregeln wirklich in diesen Kontext? Das ist doch eigentlich Grundschutz der Infrastruktur, oder?&lt;br /&gt;
&lt;br /&gt;
; 8. &amp;quot;Aufgrund schwacher Parameter in der Konfiguration des Frameworks zum Session-Management werden unsichere SessionIDs erzeugt.&amp;quot;&lt;br /&gt;
Was sind &amp;quot;schwache&amp;quot; Parameter?&lt;br /&gt;
&lt;br /&gt;
Welches Framework erlaubt unsichere SessionIDs durch eine &amp;quot;schwache&amp;quot; Konfiguration zu erzeugen?&lt;br /&gt;
&lt;br /&gt;
; 9. &amp;quot;Wird die Konfiguration des Web-Browsers durch einen Angreifer manipuliert, können die clientseitig umgesetzten&amp;quot;&lt;br /&gt;
&lt;br /&gt;
Manipuliert ein Angreifer die Konfguration seines Webbroswers, wenn er einen MITM-Proxy konfiguriert?&lt;br /&gt;
&lt;br /&gt;
Wie bereits bei den &amp;quot;Goldenen Regeln&amp;quot; angemerkt, gilt auch hier, das manche Security Controls auch clientseitig umgesetzt werden dürfen (etwa. zur Verhinderung von Dom-Based XSS).&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== &amp;quot;G 5.WA10 Fehler in der Web-Anwendungslogik&amp;quot; (Dennis, Matthias) ==&lt;br /&gt;
; 1. &amp;quot;Damit kann aufgrund der Prüfreihenfolge ein hoher Ressourcenverbrauch provoziert werden, der für Denial-of-Service-Angriffe ausgenutzt werden kann.&amp;quot;&lt;br /&gt;
Meiner Meinung nach passt in diesem Kontext die Attacke DoS nicht ganz. Falls die nachfolgende Funktionalität wegen der langen Ausführungszeit der Filterkomponente übersprungen wird bzw. ein Fehler auftritt würde dies meiner Ansicht in die Thematik Anwendungslogik passen. Eine DoS-Attacke kann hingegen anhand jeder Funktion durchgeführt werden.&lt;br /&gt;
&lt;br /&gt;
([[User:Mrohr|Matthias]]) Jo stimmt, aber ich stimme mit der Aussage eigentlich schon ueberein, auch wenn diese zugegeben etwas ungluecklich formuliert ist. Es geht hier ja darum, rechenintensive Pruefungen/Filterung moeglichst zu vermeiden bzw. zu reduzieren. Aus diesem Grund machen wir ja auch bei der AV-Pruefung zunaechst Blacklist-Checks und erst am Ende rechenintensive statistische oder verhaltensbezogene Pruefungen.&lt;br /&gt;
&lt;br /&gt;
== &amp;quot;G 5.WA11 Umgehung clientseitig umgesetzter Sicherheitsfunktionen von Web-Anwendungen&amp;quot; (Dennis) ==&lt;br /&gt;
; 1. &amp;quot;Ein Angreifer kann diese ausnutzen, um beispielsweise unbefugt Befehle an Hintergrundsysteme der Web-Anwendung zu übermittlen (z.B. in Form von Datenbankanfragen bei einer SQL-Injection).&amp;quot;&lt;br /&gt;
Umformulierung des Inhalts der Klammer. Hatte beim ersten Lesen für mich den Anschein, als ob ein Formular genutzt werden könnte welches den Nutzer aufforder eine SQLI einzugeben. Ich denke &amp;quot;Datenbankanfrage zwecks Ausführung einer SQL-Injection&amp;quot; würde besser passen.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== G 2.WA02 Mängel bei der Entwicklung und der Erweiterung von Web-Anwendungen (Matthias) ==&lt;br /&gt;
&lt;br /&gt;
Allgemein ist de obere Teil ok, die aufgezählten &amp;quot;Auswirkungen von fehlenden Vorgaben&amp;quot; verstehe ich jedoch nicht. Wo ist etwa der Bezug von Barrierefreiheit auf die Anwendungssicherheit?&lt;br /&gt;
&lt;br /&gt;
Mein Vorschlag, um diese Punkte etwa sinnvoll umzubauen:&lt;br /&gt;
* &amp;quot;Fehlendes Vorgehensmodell&amp;quot;: Bezug auf fehlende Berücksichtigung von Sicherheit im SDLC. Statt eines SDLCs selbst sollte hier besser auf die Notwendigkeit eines Secure Development Lifecycle (SDL) hingewiesen werden&lt;br /&gt;
* &amp;quot;Fehlende Programmierrichtlinien&amp;quot; =&amp;gt; Besser wäre hier &amp;quot;Fehlende Sicherheitsrichtlinien in der Programmierung&amp;quot; also &amp;quot;Secure Coding Guidelines&amp;quot;&lt;br /&gt;
* &amp;quot;Testfälle&amp;quot; =&amp;gt; &amp;quot;Sicherheitsrelevante Testfälle&amp;quot; (z.B. Security Unit Tests). &lt;br /&gt;
* &amp;quot;Barrierefreiheit&amp;quot;: Warum nicht an dieser Stelle die Auswirkungen von Sicherheitsfunktionen auf die Bedienbarkeit, etwa anhand von CAPTCHAS erläutern?&lt;br /&gt;
&lt;br /&gt;
== G 2.WA03 Unzureichender Schutz personenbezogener Daten bei Web-Anwendungen (Matthias) ==&lt;br /&gt;
&lt;br /&gt;
Der Titel dieses Bausteines heißt &amp;quot;Schutz personenbezogener Daten&amp;quot;, die genannten Beispiele beziehen sich bis auf den letzten jedoch auf die missbräuchliche (oder zumindest problematische) Nutzung aus Sicht des Datenschutzes. &lt;br /&gt;
&lt;br /&gt;
Die Punkt 1-3 sollten daher besser entfallen und z.B. durch die Folgenden ersetzt werden:&lt;br /&gt;
* Unsichere Einbindung von sozialen Netzwerken (Bezug nehmen auf den Like-Button bei Facebook)&lt;br /&gt;
* Unsichere Einbindung von Werbeinhalten&lt;br /&gt;
* Unsichere Übertragung und Caching&lt;br /&gt;
* Unsichere Protokollierung&lt;br /&gt;
* Ungenügender Zugriffsschutz&lt;br /&gt;
* Verstoß des Minimalprinzips bzw. der Zweckgebundenheit (welche Daten werden wirklich benötigt)&lt;br /&gt;
&lt;br /&gt;
Auch wäre es ggf. zumindest einen Verweis auf das BDSG zu machen.&lt;br /&gt;
&lt;br /&gt;
== G 4.33 Unzureichende oder fehlende Authentisierung (Matthias) ==&lt;br /&gt;
&lt;br /&gt;
; 1. Erster Absatz: &amp;quot;Wenn Authentisierungsmechanismen fehlen oder zu schlecht sind&amp;quot;&lt;br /&gt;
&lt;br /&gt;
&amp;quot;schlecht&amp;quot; sollte vlt besser durch &amp;quot;unzureichend&amp;quot; ersetzt werden.&lt;br /&gt;
&lt;br /&gt;
; 2. &amp;quot;Sicherheitslücken entstehen bei... der Benutzerauthentisierung&amp;quot;&lt;br /&gt;
&lt;br /&gt;
Hier findet nur ein Bezug auf &amp;quot;Passwörter&amp;quot; statt. Der Bezug auf die fehlerhaft implementierte oder dem Schutzbedarf ungenügende Schutzmechanismen (z.B. keine 2-Faktor-Authentisierung bei hochsensiblen Daten) fehlt. Auch auf das komplette fehlen von Authentisierungs-Controls wird hier nicht  eingegangen&lt;br /&gt;
&lt;br /&gt;
; 3. &amp;quot;Sicherheitslücken entstehen bei... der Komponentenauthentisierung&amp;quot;&lt;br /&gt;
&lt;br /&gt;
Wie bei 2., wird auch hier wieder nur auf Passwörter, nicht jedoch auf das fehlen von Controls selbst eingegangen. An dieser Stelle fehlt auch ein Hinweis auf die Notwendigkeit dedizierter Benutzeraccounts.&lt;br /&gt;
&lt;br /&gt;
; 4. &amp;quot;Sicherheitslücken entstehen bei... der Wahl des Verfahrens&amp;quot;&lt;br /&gt;
&lt;br /&gt;
Statt untauglich würde ich auch hier von &amp;quot;dem Schutzbedarf der Daten nicht angemessen&amp;quot; sprechen, eigentlich gehört das für mich aber in die obigen Punkte.&lt;br /&gt;
&lt;br /&gt;
; 5. Serverseitige Authentisierung fehlt&lt;br /&gt;
&lt;br /&gt;
Auch der Server (bzw. die Anwendung selbst) kann sich fehlerhaft oder ungenügend beim Benutzer authentsieren, etwa über DNS, SSL-Zertifikate, etc.&lt;br /&gt;
&lt;br /&gt;
== G 4.WA04 Unzureichende Validierung von Ein- und Ausgabedaten bei Web-Anwendungen (Matthias) ==&lt;br /&gt;
&lt;br /&gt;
; 1. &amp;quot;Unzureichende Validierung von Eingabedaten&amp;quot;&lt;br /&gt;
&lt;br /&gt;
Die genannten Beispiele sind genau keine korrekten Beispiele für diesen Fall, sondern betreffen die Ausgabevalidierung bzw. Enkodierung. Typische Fehler der Eingabevalidierung ist eine Manipulierbarkeit der Business Logik.&lt;br /&gt;
&lt;br /&gt;
; 2. &amp;quot;Unzureichende Validierung von Ausgabedaten&amp;quot;&lt;br /&gt;
&lt;br /&gt;
Hier geht es zentral um die Verhinderung von Interpreter Injection, also serverseitig (z.B. SQL oder LDAP Injection) oder clientseitig (XSS, JSON Injection, etc.). Statt &amp;quot;können die Ausgaben Schadcode&amp;quot; enthalten würde ich hier eher davon Sprechen, dass ein solcher Interpreteraufruf manipuliert werden kann (was dann z.B. zur Einschleusung von Schadcode genutzt werden kann).&lt;br /&gt;
&lt;br /&gt;
; 3. &amp;quot;Die Suchfunktion der Web-Anwendung verwendet die Eingaben der Benutzer ungefiltert&amp;quot;&lt;br /&gt;
&lt;br /&gt;
Mit ungenügender &amp;quot;Filterung&amp;quot; hat SQL Injection nichts zu tun,  eigentlich geht es hierbei darum, dass SQL-Anfragen dynamisch mit unvalidierten Eingebedaten zusammengebaut (konkateniert) werden.&lt;br /&gt;
&lt;br /&gt;
; 4. &amp;quot;Ungefilterter HTML-Code in Kommentar-Funktion&amp;quot;&lt;br /&gt;
&lt;br /&gt;
Hier fehlt der Bezug auf persistentes XSS, das hier sicherlich zentral ist.&lt;br /&gt;
&lt;br /&gt;
== G 4.WA05 Fehlende oder mangelhafte Fehlerbehandlung durch Web-Anwendungen (Tobias, Matthias) ==&lt;br /&gt;
; Abschnitt &amp;quot;Unsichere Fehlerbehandlung&amp;quot;&lt;br /&gt;
Die G adressiert &amp;quot;Unsichere Fehlerbehandlung&amp;quot;, der Abschnitt die &amp;quot;Unsichere Fehlerbehandlung in Sicherheitskomponenten&amp;quot;. Entsprechend sollte der fettgedruckte Teil angepasst werden.&lt;br /&gt;
&lt;br /&gt;
; &amp;quot;fehlende SQL-Parameter,&amp;quot;&lt;br /&gt;
Sollte besser &amp;quot;Fehlermeldungen bei ungültigen SQL-Abfragen&amp;quot; lauten.&lt;br /&gt;
&lt;br /&gt;
; &amp;quot;Auch scheinbar unkritische Informationen, wie die Meldung ob (..)&amp;quot;&lt;br /&gt;
Korrekt, allerdings nicht nachvollziehbar, wenn das Problem der Leser nicht schon bekannt ist. Daher erweitern nach &amp;quot; Rahmen von Brute-Force-Angriffen ausgenutzt werden.&amp;quot; mit &amp;quot;. Bei Brute-Force-Angriffen wäre in diesem Fall klar, dass der Benutzername gültig ist.&amp;quot;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
([[User:Mrohr|Matthias]]): Stimme dem Obigen auch zu, ausserdem:&lt;br /&gt;
&lt;br /&gt;
; ([[User:Mrohr|Matthias]]): Sprachlich: &amp;quot;kann dies unvorhersehbare Auswirkungen haben und den Betrieb der Web-Anwendung bis zur Unerreichbarkeit einschränken.&amp;quot;&lt;br /&gt;
&lt;br /&gt;
&amp;quot;Unerreichbarkeit&amp;quot; ist etas merkwuerdig ausgedrueckt, besser ware hier von der &amp;quot;Verfuegbarkeit&amp;quot; zu sprechen. Im Uebrigen fehlt vollstaendig der Bezug auf die Verfuegbarkeit als Primaeres Schutzziel der Informationssicherheit.&lt;br /&gt;
&lt;br /&gt;
; ([[User:Mrohr|Matthias]]): &amp;quot;Clientseitige Fehlerbehandlung&amp;quot;&lt;br /&gt;
Das stimmt soweit, das generelle Problem ist jedoch genereller, naehmlich die clientseitige Abbildung sicherheitsrelaventer Logik (in diesem Fall die Fehlerbehandlung)&lt;br /&gt;
&lt;br /&gt;
== G 4.WA06 Unzureichende Nachvollziehbarkeit von sicherheitsrelevanten Ereignissen bei Web-Anwendungen (Matthias) ==&lt;br /&gt;
&lt;br /&gt;
; 1. Erster Absatz: &amp;quot;Die Behebung einer Schwachstelle ist dann nicht oder nur unter erschwerten Bedingungen möglich.&amp;quot;&lt;br /&gt;
&lt;br /&gt;
Hier würde ich ergänzen: &amp;quot;...und Angriffe auf die Anwendungen können ggf. nicht erkannt oder nachvollzogen werden&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
; 2. &amp;quot;Beispiele&amp;quot;: Kommulierbarkeit&lt;br /&gt;
&lt;br /&gt;
Hier fehlt auch ein Bezug auf die Kommulierbarkeit von SIcherheitsereignissen, dass diese also auch von solchen anderer Systeme in Verbindung gesetzt werden können&lt;br /&gt;
&lt;br /&gt;
; 3. &amp;quot;Beispiele&amp;quot;: Gerichtsverwertbarkeit&lt;br /&gt;
&lt;br /&gt;
Auch die Möglichkeit zur Gerichtsverwertbarkeit (etwa durch eindeutigen Zeitstempel) und manipulationssicherer Speicherung, würde ich an dieser Stelle unbedingt erwähnen.&lt;br /&gt;
&lt;br /&gt;
== G 4.WA07 Offenlegung von Informationen bei Web-Anwendungen (Matthias) ==&lt;br /&gt;
&lt;br /&gt;
; 1. Titel&lt;br /&gt;
&lt;br /&gt;
Hier würde ggf. &amp;quot;Offenlegung vertraulicher Informationen&amp;quot; sicher besser passen als &amp;quot;Offenlegung von Informationen&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
; 2. Beispiellink&lt;br /&gt;
&lt;br /&gt;
Ein Beispiellink (mit und ohne Token) würde sicher die Verständlichkeit dieser Schwachstelle verbessern.&lt;br /&gt;
&lt;br /&gt;
; 3. Erster Absatz: &amp;quot;Wenn demzufolge Informationen unnötig offengelegt werden, steigt die Wahrscheinlichkeit eines erfolgreichen Angriffs.&amp;quot;&lt;br /&gt;
&lt;br /&gt;
Interne Informationen auszublenden ist eine Härtungsmaßnahme, deren Anzeige erhöht aber nicht zwangsläufig die Wahrscheinlichkeit eines erfolgreichen Angriffs. Ich würde diesen Satz weglassen.&lt;br /&gt;
&lt;br /&gt;
; 4. Fehlende Punkte&lt;br /&gt;
&lt;br /&gt;
* Ein Hinweis auf HTTP Header wäre hier sicher erwähnenswert.&lt;br /&gt;
* Weiterhin bzgl. der Anzeige von Traces und ein Verweis auf den Entsprechenden Baustein zur Fehlerbehandlung&lt;br /&gt;
&lt;br /&gt;
== G 5.WA14 Cross-Site Request Forgery (CSRF, XSRF) (Matthias) ==&lt;br /&gt;
&lt;br /&gt;
; 1. Erster Absatz: &amp;quot;Können Funktionen einer Web-Anwendung ohne weitere Überprüfung der Authentizität des HTTP-Requests (z.B. durch Tokens in versteckten Formularfeldern) genutzt werden&amp;quot;&lt;br /&gt;
&lt;br /&gt;
Statt &amp;quot;Funktionen&amp;quot; würde ich besser von &amp;quot;schreibenden Aktionen&amp;quot; sprechen, dann macht der Satz mehr Sinn.&lt;br /&gt;
&lt;br /&gt;
; 2. Dritter Absatz: &amp;quot;Im Gegensatz zu XSS (siehe ...￼ ) ist das Angriffsziel nicht die Information auf dem Client (z. B. in Cookies),&amp;quot;&lt;br /&gt;
&lt;br /&gt;
Dieser (Halb-)Satz macht keinen Sinn, auch weil es bei XSS nicht nur im Informationen auf dem Cient geht. Vorschlag: &amp;quot;ist das Angriffsziel nicht die Ausführung von Skriptcode, sondern von unbefugten, schreibenden Aktionen im Kontext des angemeldeten Benutzers.&amp;quot;&lt;br /&gt;
&lt;br /&gt;
; 3. Session Riding&lt;br /&gt;
&lt;br /&gt;
Session Riding ist quasi nur ein anderer Begriff für CSRF. Die einzige Form von CSRF die mir bekannt ist, sind Angriffe mit Standard-Passwörtern auf HTTP-Basic-Auth geschützten Ressourcen.&lt;br /&gt;
&lt;br /&gt;
Im Grunde ist Session Riding aber nur ein Synonym für CSRF. Der Absatz ist daher auch nur eine Wiederholung der obigen Beschreibung.&lt;br /&gt;
&lt;br /&gt;
; 4. Zum Beispiel: &amp;quot;Durch einen präparierten Link auf einer Webseite wird die Änderung des Zugangspasswortes des Routers eingeleitet.&amp;quot;&lt;br /&gt;
&lt;br /&gt;
Etwas ungüngstig ausgedrückt. Besser wäre: &amp;quot;wird eine Anfrage zur Änderung des Zugangspasswortes an den Router gesendet. Hierbei sendet der Browser automatisch den Session Cookie mit, worüber die Webanwendung die Authentizität der Anfrage verifiziert und die Änderung durchführt.&amp;quot;&lt;br /&gt;
&lt;br /&gt;
== G 5.WA18 Clickjacking (Matthias) ==&lt;br /&gt;
&lt;br /&gt;
Hier stellt sich mir nur die allgemeine Frage, ob Clickjacking, bzw. der Schutz davor tatsächlich einem Grundschutz zuzurechnen ist. Persönlich würde ich dies nicht tun.&lt;br /&gt;
&lt;br /&gt;
== M 2.WA02 Dokumentation der Architektur von Web-Anwendungen (Matthias) ==&lt;br /&gt;
&lt;br /&gt;
; Verantwortlich für die Umsetzung&lt;br /&gt;
Hier wäre auch die Nennung des &amp;quot;Architekten&amp;quot; sinnvoll&lt;br /&gt;
 &lt;br /&gt;
; Fehlende Bestandteile der Dokumentation:&lt;br /&gt;
* Schutzbedarf des Systems sowie der verarbeiteten Daten&lt;br /&gt;
* Schützenswerte Daten und Funktionen (Assets)&lt;br /&gt;
* Betriebliche Anforderungen an die Sicherheit bzw. eingesetzte Plattform&lt;br /&gt;
* Dokumentierte Konfigurationseinstellungen &lt;br /&gt;
* BIA (RTO, RPO)&lt;br /&gt;
* Schnittstellen&lt;br /&gt;
* Trust Boundaries&lt;br /&gt;
* Akteure (bzw. Trust Level)&lt;br /&gt;
* Sicherheitsannahmen&lt;br /&gt;
* Geltende Compliance-Anforderungen (BDSG, PCI DSS, etc.)&lt;br /&gt;
&lt;br /&gt;
; Benutzermanagement&lt;br /&gt;
&lt;br /&gt;
Wenn damit das Identity Management gemeint ist, gehört das Dokumentiert, ist aber keine Sicherheitsfunktion. Oder ist hiermit das Rollen- und Berechtigungskonzept gemeint? Grenzt sich aus meiner Sicht schwer mit dem Thema Authentisierung ab. &lt;br /&gt;
&lt;br /&gt;
; Prüffragen&lt;br /&gt;
&lt;br /&gt;
Hier fehlt etwas in Bezug auf Sicherheitsanforderungen. Beispiel: &amp;quot;Werden Sicherheitsanforderungen an den Betrieb während der Entwicklung abgestimmt und dokumentiert&amp;quot;&lt;br /&gt;
&lt;br /&gt;
== M 2.WA12 Entwicklung und Erweiterung von Anwendungen (Markus) ==&lt;br /&gt;
; &amp;quot;Es sollte darauf geachtet werden, dass Sicherheitsanforderungen&lt;br /&gt;
vollständig durch Sicherheitsmechanismen erfüllt und zur Erstellung von&lt;br /&gt;
Testfällen festgehalten werden.&amp;quot; --&amp;gt; Bessere Formulierung würde aussagen, dass die Sicherheitsanforderungen durch Testfälle verifiziert werden.&lt;br /&gt;
&amp;quot;(z. B. durch Kommentare im&lt;br /&gt;
Quelltext). Somit ist der Quelltext zu einem&amp;quot; --&amp;gt; Das ist kein empfehlenswerter Programmierstiel! Raus mit diesem Kommentar&lt;br /&gt;
;&amp;quot;Zum Schutz vor dem Verlust bereits entwickelter und verworfener&lt;br /&gt;
Lösungen sowie zu Dokumentationszwecken sollte die Historie der&lt;br /&gt;
Änderungen festgehalten werden (z. B. durch ein Revisionssystem).&amp;quot; --&amp;gt; Auch diesen Absatz können wir streichen - Kein professioneller Programmierer arbeitet ohne Versionierugssystem.&lt;br /&gt;
;&amp;quot;Bei Web-Anwendung sollten die Webseiten auf Konformität zu dem&lt;br /&gt;
verwendeten Standard (z. B. HTML-Standard) getestet werden. Dadurch&lt;br /&gt;
können unvorgesehene Seiteneffekte aufgrund einer Fehlinterpretation&lt;br /&gt;
seitens der Browser vermieden werden.&amp;quot; --&amp;gt; Könnte man noch um &amp;quot;Die Software ist in möglichst vielen Browsern zu testen&amp;quot; erweitern.&lt;br /&gt;
;Generell geht der Autor leider nicht auf die Rollen &amp;amp; Rechte Verteilung ein. Mir fehlt der Hinweis, das es eine personelle Trennung zwischen Entwicklung, Test und Betrieb geben muss.&lt;br /&gt;
;Zum Thema Wartung / Betrieb --&amp;gt; Hier wird keine Aussage getroffen bezüglich Log_Files. Dieses Thema kann kritische Auswirkungen haben, Bsp.: logging ganzer HTTP-Requests im LogLevel=Debug.&lt;br /&gt;
; &amp;quot;Produktspezifische Sicherheitsfunkionalität&amp;quot; - Dieser Absatz ist gefährlich - der Angreifer ist nicht zur Verwendung dies Zielbrowsers gezwungen. Deshalb können Browser-spez. Sicherheitsfunktionen nur als Add-ON gewertet werden.&lt;br /&gt;
; &amp;quot;Festlegung der Entwicklungsumgebung&amp;quot; - Dieser Absatz geht nicht auf die zu verwendenden Testdaten ein. Der Hinweis, dass Live-Daten / Kundendaten nichts in Test- &amp;amp; Entwicklungsumgebungen zu suchen haben fehlt!!!&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== M 2.WA24 Web-Tracking (Matthias) ==&lt;br /&gt;
&lt;br /&gt;
; Letzter Absatz: &amp;quot;Falls eine Auswertung von Nutzerdaten, insbesondere personenbezogener Daten, .. &amp;quot;&lt;br /&gt;
&lt;br /&gt;
Hier sollte denke ich besser von personenbeziehbaren Daten gesprochen Werten. Dies betrifft etwa die Zuordnung von Surfverhalten zu einer bestimmten Person. Dies sollte stets nach den Prinzipien Datensparsamkeit und Datenvermeidung, Erforderlichkeit, sowie Zweckbindung erfolgen. Ist Webtracking nicht personenbeziehbar ist dies kein Thema für den Datenschutz.&lt;br /&gt;
&lt;br /&gt;
== M 4.WA04 Authentisierung bei Web- Anwendungen (Matthias) ==&lt;br /&gt;
&lt;br /&gt;
: Verantwortlich fuer Umsetzung &lt;br /&gt;
sollte in erster Linie beim Architekturen und in zweiter beim Entwickler liegen&lt;br /&gt;
; Vermischung von Authentisierung und Session Management &lt;br /&gt;
&lt;br /&gt;
Bei diesem Baustein findet eine ziemlich große Vermischung von Anforderung an die Authentisierung und das erst in &amp;quot;M 4.WA06 Session-Management bei Web- Anwendungen&amp;quot; behandelte Session Management statt (Beispiel: &amp;quot;Remember-Me-Funktion&amp;quot;). Beide Themen sollten sinnvollerweise getrennt voneinander zu betrachten und aufeinander zu beziehen.&lt;br /&gt;
&lt;br /&gt;
; Verwendung von Frameworks&lt;br /&gt;
&lt;br /&gt;
Die Anforderung ist schon ein wenig eingeschränkt. Besser passt hier denke ich die &amp;quot;Abbildung der Authentisierung über Standardkomponenten (Bibliotheken oder Frameworks)&amp;quot;. &lt;br /&gt;
&lt;br /&gt;
; Remember-Me-Funktion&lt;br /&gt;
&lt;br /&gt;
Siehe oben, gehört zum Session Management. Das ließt sich im übrigen so, als ob eine Webanwendung Credentials auf dem Client abhängt. &lt;br /&gt;
&lt;br /&gt;
; Grenzwerte für gescheiterte Anmeldeversuche&lt;br /&gt;
&lt;br /&gt;
Diese Empfehlung ist allgemein falsch, da sie sehr von der betrachteten Anwendung abhängt. Besser wäre hier allgemein von Mechanismen zur Verhinderung von automatisierten Angriffen zu sprechen (Anti-Automatisierung). &lt;br /&gt;
&lt;br /&gt;
Etwa umsetzbar durch&lt;br /&gt;
* Sperrung nach x Anmeldeversuchen&lt;br /&gt;
* Throttling&lt;br /&gt;
* Captchas&lt;br /&gt;
* Sicherheitsfragen&lt;br /&gt;
&lt;br /&gt;
Das allgemeine Sperren kann leicht für das gezielte Aussperren von Benutzern (User Lockout) verwendet werden. Was etwa bei Trading-Anwendungen nicht funktioniert.&lt;br /&gt;
&lt;br /&gt;
; Automatisiertes Zurücksetzen von Authentisierungsdaten&lt;br /&gt;
&lt;br /&gt;
Würde ich besser als &amp;quot;Passwort-Reset&amp;quot; bezeichnen.&lt;br /&gt;
&lt;br /&gt;
Weiterhin fehlt hier der Hinweis, dass statt ein automatisiertes Zurücksetzen, ein Mechanismus zu empfehlen ist, bei dem über ein hinterlegtes Sicherheitsmerkmal (Handy-Nummer oder E-Mail-Adresse) vom Benutzer zunächst eine Verifikation durchgeführt wird. Beispielsweise durch einen erhaltenen Link. Erst dann darf eine Änderung des Passwortes durch den Benutzer erfolgen.&lt;br /&gt;
&lt;br /&gt;
; Registrierung nicht behandelt&lt;br /&gt;
&lt;br /&gt;
Es existiert hier kein Punkt, der die sichere Implementierung von Benutzerregistrierungen behandelt.&lt;br /&gt;
&lt;br /&gt;
; Verweis auf Externalisierung fehlt.&lt;br /&gt;
&lt;br /&gt;
Statt die Authentisierung selbst durchzuführen kann eine Anwendung hierzu auf eine externe Komponente (Beispiel: SiteMinder oder Kerberos) zurückgreifen.&lt;br /&gt;
&lt;br /&gt;
; Verweis auf Behandlung von Credentials fehlt&lt;br /&gt;
&lt;br /&gt;
Auch wenn das  in &amp;quot;M 4.WA15 Schutz vertraulicher Daten bei Web- Anwendungen&amp;quot; ausführlich behandelt wird, sollte in diesem Baustein bereits auf den angemessenen Schutz von Authentisierungsdaten bei Übertragung und Speicherung hingewiesen werden.&lt;br /&gt;
&lt;br /&gt;
== M 4.WA05Umfassende Ein- und Ausgabevalidierung bei Web-Anwedungen (Markus) ==&lt;br /&gt;
; &amp;quot;Ablehnung der Daten im&lt;br /&gt;
Fehlerfall&amp;quot; --&amp;gt; Hier könnte man noch auf Tar-Pits eingehen - nur ein Vorschlag.&lt;br /&gt;
&lt;br /&gt;
== M 4.WA06Session-Management bei Web-Anwendungen (Markus, Matthias) ==&lt;br /&gt;
; &amp;quot;Übertragung der SessionID mittels GETRequest&amp;quot; --&amp;gt; Hier fehlt der Hinweis, dass die Lebensdauer dieser SessionIds kurz/kürzer sein muss, als im Falle der Speicherung im Cookie.&lt;br /&gt;
&lt;br /&gt;
([[User:Mrohr|Matthias]]) Die Anmerkung verstehe ich ehrlich gesagt ueberhaupt nicht, zumal das SM haeufig transparent zwischen Cookies und URL Rewriting wechselt. Wozu soll das gut sein? Wie soll das geschehen? Idealerweise sollte die Session ID niemals in die URL geschrieben werden, das sollte eigentlich genuegen.&lt;br /&gt;
&lt;br /&gt;
; &amp;quot;Verschlüsselte Übertragung von SessionIDs&amp;quot; --&amp;gt; Hier fehlt der Hinweis auf den Beast-Exploit. TLS Version &amp;gt; 1.0 verwenden!&lt;br /&gt;
&lt;br /&gt;
([[User:Mrohr|Matthias]]) Solange hier nicht auf eine explizite TLS Version eingegangen wird, sollte meiner grossen Ueberzeugung nach hier auch auf keine Exploits etc. eingagen werden, das gehoert an andere Stelle.&lt;br /&gt;
&lt;br /&gt;
; ([[User:Mrohr|Matthias]]) Weiterhin:&lt;br /&gt;
&lt;br /&gt;
 Es dürfen keine extern bekannten oder erratbaren Daten (z. B. IP-Adresse, Uhrzeit) in die Berechnung der SessionID einfließen.&lt;br /&gt;
&lt;br /&gt;
Die Aussage finde ich etwas problematisch, wichtiger ist, dass die Entropie ausreichend hoch ist. Haeufig werden etwa IPs von Load Balancern in die Session ID hineingeschrieben.&lt;br /&gt;
&lt;br /&gt;
 - Domain (z. B. webapp.domain.tld),&lt;br /&gt;
 - Path (z. B. /webapp/),&lt;br /&gt;
 - Secure und&lt;br /&gt;
 - HttpOnly.Beschränkte Sitzungsdauer&lt;br /&gt;
&lt;br /&gt;
Das sieht so aus, als ob es empfehlenswert ist, das Domain-Tag zu verwenden, das ist es sicherlich nicht. Was macht hier der Hinweis &amp;quot;Beschraenke Sizuungsdauer&amp;quot;?&lt;br /&gt;
&lt;br /&gt;
== M 4.WA07Fehlerbehandlung durch Web-Anwendungen (Markus, Matthias) ==&lt;br /&gt;
; Konsistenter / Inkonsistener Zustand einer Webanwendung und der daraus resultierende Datenverlust: Hier fehlen mir die Punkte: DOS, Priv.Escalation, CodeExecution.&lt;br /&gt;
([[User:Mrohr|Matthias]]) Vorschlag &amp;quot;und somit der Schutz der Daten&amp;quot; aendern in &amp;quot;und somit ETWA der Schutz der Daten&amp;quot; korrigieren&lt;br /&gt;
&lt;br /&gt;
; Vermeidung vertraulicher Informationen in Fehlermeldungen --&amp;gt; Fehlermeldungen sollten ebenfalls eine Systeminformationen preisgeben (Softwareversion, Patchlevel, etc.)&lt;br /&gt;
([[User:Mrohr|Matthias]]) Ich glaube hier ist es wichtig zu unterscheiden, wo die Fehlermeldung ausgegeben bzw. wem diese angezeigt wird. Das wird in diesem Modul garnicht so recht unterscheiden. Der Autor meint glaube ich, wie Fehlermeldungen durch die Webanwendung angezeigt werden. In dem Fall hat er recht. Du meinst glaube ich eher, wie Fehlermeldungen protokolliert werden. In dem Fall hast du natuerlich auch recht. Das in dem Text verwendete Wort &amp;quot;ausgeben&amp;quot; ist nicht unbedingt eindeutig und sollte genauer spezifiziert werden.&lt;br /&gt;
&lt;br /&gt;
; Abbruch des Vorgangs nach Auftreten eines Fehlers --&amp;gt; TarPits scheinen dem Autor umbekannt zu sein :)&lt;br /&gt;
([[User:Mrohr|Matthias]]) Stimmt, wobei sich diese ja auch nur auf einen sehr bestimmten Fehlertypen beziehen. Generell laesst sich so etwas unterscheiden, wenn man Fehler-Domains erstellt. Beispiel: Technisch-Unerwartet = Abbruch, Technisch-Erwartet = Fehlermeldug/Tear Pit, etc.&lt;br /&gt;
&lt;br /&gt;
; &amp;quot;Werden Fehler möglichst von der gleichen Komponente behandelt, in der&lt;br /&gt;
der Fehler aufgetreten ist?&amp;quot; --&amp;gt; Das &amp;quot;möglichst&amp;quot; sollten wir streichen.&lt;br /&gt;
([[User:Mrohr|Matthias]]) Hm, der Aussage kann ich nicht ganz zustimmen, bzw. es haengt von dem Begriff &amp;quot;Komponente&amp;quot; ab. Eine Anwendungskomponente kann serwohl bewusst bestimmte Exceptions werfen, die von der einbindenden Komponente behandelt werden muessen.&lt;br /&gt;
&lt;br /&gt;
== M 4.WA08Schutz vor automatisierter Nutzung von Web-Anwendungen (Markus, Matthias) ==&lt;br /&gt;
; &amp;quot;Brute-Force-&lt;br /&gt;
Angriffe (z. B. Erraten von Zugangsdaten) und Enumeration-Angriffe (z. B.&lt;br /&gt;
automatisiertes Ermitteln von gültigen Login-Namen)&amp;quot; -- die Beispiele sind identisch - besser Beispiele suchen, z.b. URL-Enumeration&lt;br /&gt;
&lt;br /&gt;
([[User:Mrohr|Matthias]]) Das sehe ich anders. Brute-Forcing bezieht auf Passwoerter und Enumeration auf Benutzernamen, etwa durchs hochzaehlen. Auch wenn ich zustimmen muss, dass die nicht ganz gluecklich gewaehlt wurden. Stann &amp;quot;Erraten von Zugangsdaten&amp;quot; wuerde ich besser von &amp;quot;Erraten von Passwoertern&amp;quot; sprechen. Oder wie gesagt gleich auch auf andere Beispiele (etwa Object ID Enumeration) beziehen.&lt;br /&gt;
&lt;br /&gt;
== M 4.WA11Sichere Konfiguration von Web-Anwendungen (Markus, Matthias) ==&lt;br /&gt;
; &amp;quot;Sicherer Umgang mit TLS/SSL&amp;quot; -- Hier fehlt der Hinweis, dass TLS-1.0 gebrochen ist&lt;br /&gt;
; &amp;quot;Zeichenkodierungskonfiguration&amp;quot; -- Ein Whitelisting abhängig von der Encodierung wäre ein weiterer Vorschlag&lt;br /&gt;
; &amp;quot;Restriktive Dateisystemberechtigungen&amp;quot; -- auch wenn es ein klassiker ist - der AS sollte ebenfalls mit von einem eingeschränkten Nutzer gestartet werden und nicht als root&lt;br /&gt;
; Administration Consolen:zur Ergänzen: Wenn diese nicht benötigit, sollten derartige Applikationen nicht deployed werden, unabhängig von möglichen Zugangsbeschränkungen.&lt;br /&gt;
&lt;br /&gt;
([[User:Mrohr|Matthias]]) Sorry, meiner Meinung nach hat die Bewertung von Kryptoverfahren hier abslut nichts zu suchen.Stattdessen sollte hier auf den entsprechenden [https://www.bsi.bund.de/ContentBSI/Publikationen/TechnischeRichtlinien/tr02102/index_htm.html Empfehlung des BSI] verwiesen werden, auch wenn dieses Dokument derzeit noch etwas outdated zu sein scheint.&lt;br /&gt;
&lt;br /&gt;
== M 4.WA13Kontrolliertes Einbinden von Daten und Inhalten bei Web-Anwendungen (Markus) ==&lt;br /&gt;
; Datei-Upload: Bei einem Upload werden Dateien durchaus in TEMP-Verzeichnissen gesammelt und danach weiterverarbeitet. Diese TEMP-Verzeichnisse sind im Rahmen einer Sicherheitsanalyse zu betrachten -&amp;gt; Möglicher (unbefugter) Zugriff auf weitere Uploads&lt;br /&gt;
; Upload komprimierter Dateien / großer Dateien birgt die Gefahr von DOS Angriffen&lt;br /&gt;
; Upload von Dateien kann bei weiterem Parsing zu Speicherengpässen führen --&amp;gt; DOS-Angriffe auf Thread-Local etc.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== M 4.WA14Restriktive Herausgabe sicherheitsrelevanter Informationen bei Web-Anwendungen (Markus, Matthias) ==&lt;br /&gt;
OK - Keine Anmerkungen von mir.&lt;br /&gt;
&lt;br /&gt;
([[User:Mrohr|Matthias]]) Von mir schon;)&lt;br /&gt;
&lt;br /&gt;
; ([[User:Mrohr|Matthias]]) Vermeidung von Kommentaren in ausgelieferten Webseiten&lt;br /&gt;
&lt;br /&gt;
Das ist leider total falsch, wir brauchen haeufig Komentare, aus Kompatibilitaetsgruenden. So wird etwa der JavaScript-Block haeufig auskommentiert.&lt;br /&gt;
&lt;br /&gt;
Wurde stattessen besser von sicherheitsrelevanten Kommentaren sprechen und als Massnahme generell Entwicklerkommentare ueber Sprachkonstruktre (etwa JSP) durchzufuehren.&lt;br /&gt;
&lt;br /&gt;
; ([[User:Mrohr|Matthias]]) Löschen nicht benötigter Dateien&lt;br /&gt;
&lt;br /&gt;
Hier wurde ich ggf. Dateien von Versionisierungstools (etwa Subversion) erwaehnen, das sehen wir schon recht haeufig.&lt;br /&gt;
&lt;br /&gt;
Statt Dateien einfach nur zu loeschen (was in der Praxis haeufig nicht so einfach ist) bietet es sich zudem an, den Zugriff auf bestimmte Dateien oder Dateitypen generell zu sperren, etwa mittels ACL im Apache.&lt;br /&gt;
&lt;br /&gt;
; ([[User:Mrohr|Matthias]]) Gibt die Web-Anwendung ausschließlich neutrale Fehlermeldungen aus und sind diese im Quelltext identisch? {E: C}&lt;br /&gt;
&lt;br /&gt;
Persoenlich verstehe ich das nicht. Wieseo neutrale Fehlermeldung? Das macht fuer mich nur beim Login Sin. Hierzu existiert in dem Text auch keinerlei Bezug. Ich wuerde das daher besser entfernen und im Rahmen der Fehlerbehandlung diskutieren. Mindestens sollte hier jedoch besser von &amp;quot;sicherheitsunbedentlichen Fehlermeldungen&amp;quot; oder so gesprochen werden.&lt;br /&gt;
&lt;br /&gt;
; ([[User:Mrohr|Matthias]]) Wird der Referrer bei Verlassen der Web-Anwendung (z. B. durch einen Link auf eine externe Seite) gefiltert?&lt;br /&gt;
&lt;br /&gt;
Diesen Punkt sehe ich als sehr Fallabhengig an. Es kann fuer seiten durchaus wuenschenswert sein, dass der Referer weitergegeben wird. Der Referer sollte natuerlich keine sensiblen Informationen enthalten, was ja an anderer Stelle (etwa Session Management) vorgegeben wird bzw. gegeben werden sollte.&lt;br /&gt;
&lt;br /&gt;
== M 4.WA15Schutz vertraulicher Daten bei Web-Anwendungen (Markus, Matthias) ==&lt;br /&gt;
; Sichere kryptographische Algorithmen:&lt;br /&gt;
 Hier fehlt mir eine Liste der aktuelle als sicher geltenden Verfahren.&lt;br /&gt;
([[User:Mrohr|Matthias]]) Am Besten Referenz auf [https://www.bsi.bund.de/ContentBSI/Publikationen/TechnischeRichtlinien/tr02102/index_htm.html https://www.bsi.bund.de/ContentBSI/Publikationen/TechnischeRichtlinien/tr02102/index_htm.html]&lt;br /&gt;
&lt;br /&gt;
; Schlüssel&lt;br /&gt;
 Das die Schlüssel bestimmten Formaten entsprechen müssen ist ok - aber das Schlüsselmanagement wird gar nicht besprochen?&lt;br /&gt;
; Schutz der Daten im Browsercache&lt;br /&gt;
 Skripte und Browserplugins können ebenfalls auf den Browsercache zugreifen - diese werden hier nicht erwähnt.&lt;br /&gt;
&lt;br /&gt;
([[User:Mrohr|Matthias]]) Weiterhin entsprechen die vorgeschlagenen HTTP Headern nicht dem Best Practice:&lt;br /&gt;
&lt;br /&gt;
 Cache-control: no-cache, no-store&lt;br /&gt;
 Pragma: no-cache&lt;br /&gt;
 Expires: -1&lt;br /&gt;
&lt;br /&gt;
([[User:Mrohr|Matthias]]) Die Empfehlung hinsichtlich des manuellen Leerens des Browsercaches sollte wenn dann nur bei Anwendungen mit sehr hohem Schutzbedarf in Erwaegung gezogen werden. Wichtiger waere da schon eher die richtigen Cache-Header zu verwenden. Solche Empfehlungen ihm Rahmen des Grundschutzes aber wirklich nichts zu suchen. &lt;br /&gt;
&lt;br /&gt;
; Maskierung von Passwörtern &lt;br /&gt;
 Dies schützt bei der Eingabe nur vor ShoulderSurfing nicht vor Skripten oder Plugins die diese an andere Server posten.&lt;br /&gt;
&lt;br /&gt;
([[User:Mrohr|Matthias]]) Das ist voellig korrekt. Aber inwieweit ist die Aussage Passwort-Felder zu verwenden fehlerhaft bzw. hier unzureichend beschrieben?&lt;br /&gt;
&lt;br /&gt;
; Sicherung von Zugangsdaten:&lt;br /&gt;
 Zugangsdaten in einer Datei abzulegen - wenn auch ausserhalb des WebRoots ist keine gute Idee.&lt;br /&gt;
([[User:Mrohr|Matthias]]) Es ist sicher nicht die schoenste Variante, es laesst sich aber nunmal in vielen Faellen nicht vermeiden. Deshalb fordert der [http://code.google.com/p/owasp-asvs/wiki/Verification_V2 ASVS] hier etwa auch nicht mehr. Fuer den hier angestreben Grundschutz sollte das meiner Meinung nach ausreichen.&lt;br /&gt;
; Schutz von Quelltexten:&lt;br /&gt;
 Hier würde ich property files mit aufnehmen. der hinweis auf web-inf/classes fehlt - warum?&lt;br /&gt;
 Bei include-befehlen sind die pfadangaben zu überdenken.&lt;br /&gt;
([[User:Mrohr|Matthias]]) Wuerde property Dateien allgemein den Konfigurationsdateien zuordnen. Der Begriff &amp;quot;Einzubindende Dateien&amp;quot; ist mir allrdings Neu&lt;br /&gt;
&lt;br /&gt;
([[User:Mrohr|Matthias]]) Weiterhin, fehlt ein genereller Bezug auf HTML 5 WebStorage, LSOs etc. Zumindest in abstrakter Form, so dass diese dadurch indirekt addresiert werden. Egal, in dem relevanten Punkt will der Autor meiner Meinung nach nur einige Beispiele nennen, das sollte keinen Anspruch auf Vollsteandigkeit haben muessen.&lt;br /&gt;
&lt;br /&gt;
; ([[User:Mrohr|Matthias]]) - Durch dieses Attribut wird die Gültigkeit des Cookies auf die Domäne der Web-Anwendung beschränkt.&lt;br /&gt;
Nein, das ist leider total falsch. Das Domain-Attribut stellt eine Aufweichung der Cookie-Gueltigkeit dar und nicht anders herum. Gewoehlich sind Cookies immer Host-Cockies und das sollte auch so bleiben. Die Empfehlung sollte entfernt werden.&lt;br /&gt;
&lt;br /&gt;
== M 4.WA16Zugriffskontrolle bei Web-Anwendungen (Markus) ==&lt;br /&gt;
; Zugriffskontrolle via Frameworks:&lt;br /&gt;
 Dieser Punkt (Frameworks) wird nur in einem Satz erwähnt. Es werden keine Bespiele gegeben - Das ist zu wenig.&lt;br /&gt;
 Es müssen alle Zugriffe geschützt werden. Eine Protokollierung aller Zugriffe mit den nötigen Informationen ist ebenfalls empfehlenswert.&lt;br /&gt;
; Datei Upload:&lt;br /&gt;
 Die Gefahr eines DOS wird hier nicht erwähnt.&lt;br /&gt;
&lt;br /&gt;
== M 4.WA19Verhinderung von Cross-Site Request Forgery (CSRF, XSRF) (Markus, Matthias) ==&lt;br /&gt;
; Verantwortliche: &lt;br /&gt;
 Entwickler und Admins!&lt;br /&gt;
([[User:Mrohr|Matthias]]) Korrekt, wobei auch in der Reihenfolge&lt;br /&gt;
&lt;br /&gt;
; Anti-CSRF-Token in hidden fields:&lt;br /&gt;
 Das ist keine gute Idee. Ich würde das streichen!&lt;br /&gt;
&lt;br /&gt;
([[User:Mrohr|Matthias]]) Watt? Anti-CSRF-Tokens in Hidden Fields sind die Standard-Massnahme. Wie denn sonst? Bitte nicht streichen!!! &lt;br /&gt;
&lt;br /&gt;
([[User:Mrohr|Matthias]]) Die Technik bei der die Session ID als Anti-CSRF-Token verwendet wird, wird als Double-Cookie Submit bezeichnet, das sollte hier referenziert werden.&lt;br /&gt;
&lt;br /&gt;
; Umgehung von Schutzmechanismen:&lt;br /&gt;
 Man in the middle hat keinen direkten Bezug zu CSRF! Das würde ich streichen.&lt;br /&gt;
([[User:Mrohr|Matthias]]) Der Hinweis ist korrekt. Wovon der Autor hier spricht ist Session Replay nicht CSRF.&lt;br /&gt;
&lt;br /&gt;
; Frameworks:&lt;br /&gt;
 Gute Idee - aber es gibt auch Features in den ApplicationServern die CSRF unterbinden - warum wird das nicht besprochen?&lt;br /&gt;
&lt;br /&gt;
([[User:Mrohr|Matthias]]) Sehe ich persoenlich nicht so, da CSRF primaer ein Applikations-Fehler ist, und auch in der Applikation und nicht im Environment (AppServer) geloest werden sollte. Auch wenn das manchmal ggf. die einzig machbare Loesung darstellt.&lt;br /&gt;
&lt;br /&gt;
([[User:Mrohr|Matthias]]) Was generell fehlt, ist ein Hinweis darauf, dass schreibende Requests generell per HTTP Post abgewickelt werden sollten, da HTTP Get keine &amp;quot;Safe Method&amp;quot;  (siehe HTTP 1.1, RFC 2616) ist.&lt;br /&gt;
&lt;br /&gt;
== M 4.WA20Sicherer Entwurf der Logik von Web-Anwendungen (Markus, Matthias) ==&lt;br /&gt;
; Rollbacks:&lt;br /&gt;
 Tritt ein Fehler auf muss die Applikation einen konsistenten Datenstand zurück lassen. Das wird hier nicht erwähnt.&lt;br /&gt;
; RaceConditions:&lt;br /&gt;
 Fehler in der Geschäftslogik können auch durch zwei gleichzeitige Sessions auf einer Webapplikation auftreten - das wird hier nicht besprochen.&lt;br /&gt;
&lt;br /&gt;
([[User:Mrohr|Matthias]]) Ehrlich gesagt kann ich nicht ganz nachvollziehen, was der Sichere Entwurf der Logik von Web-Anwendungen mit dem Verzicht auf aktive Inhalte zu tun hat. Unabhaengig davon sollte man solche unsinnigen Aussagen im Jahre 2012 nicht mehr treffen, damit macht man sicht nur laecherlich.&lt;br /&gt;
&lt;br /&gt;
Nichts desto trotz, was hier als &amp;quot;echte&amp;quot; Massnahmen erwaehnt werden sollte sind:&lt;br /&gt;
* Verhinderung von Race Conditions, aber nicht nur durch Concurrent Sessions sondern auch durch Singletons (TOCTOU)&lt;br /&gt;
* Enforcements von Workflows, etwa durch die Verwendung von State Machines oder Request Tokens (auch bekannt als Site Usage Enforcement)&lt;br /&gt;
* Fail Securely (bzw. Verweis)&lt;br /&gt;
* Serverseitige Abbildung der Anwendungslogik, zumindest wenn diese sicherheitsrelevant sit&lt;br /&gt;
&lt;br /&gt;
== M 4.WA22Verhinderung der Blockade von Ressourcen (DoS) bei Web-Anwendungen (Markus, Matthias) ==&lt;br /&gt;
; Datenspeicher:&lt;br /&gt;
 Neben dem Datenspeicher sollte auch der RAM-Verbrauch pro Thread der Applikation limitiert werden.&lt;br /&gt;
([[User:Mrohr|Matthias]]) Stimmt, ich wuerde hier sogar allgemein von Ressourcenverbrauch am Beispiel RAM und Datenspeicher, sprechen&lt;br /&gt;
&lt;br /&gt;
; Voraggregation von Daten / Caching&lt;br /&gt;
 Dieser Punkt fehlt: Stark ressourcen belastende Anfragen können auch in Lastarmen Zeiten vorberechnet werden.&lt;br /&gt;
([[User:Mrohr|Matthias]]) Stimmt, koennte noch als Anmerkung bei &amp;quot;Cachen von Anfragen&amp;quot; hinzugefuegt werden&lt;br /&gt;
&lt;br /&gt;
; ([[User:Mrohr|Matthias]]) Prueffrage: &amp;quot;Wird ein möglicher Überlauf von Protokolldaten... verhindert&amp;quot;&lt;br /&gt;
&lt;br /&gt;
Ist eine etwas eingeschrankte Sicht. Wurde hier eher von Ueberlauf von Speicherplaz zu Beispiel im Rahmen der Protokollierung sprechen&lt;br /&gt;
&lt;br /&gt;
; ([[User:Mrohr|Matthias]]) Durchfuehrung von Lasttests zur Identifikation ressourcenintensiver Operationen&lt;br /&gt;
&lt;br /&gt;
Der Hinweis waere ggf. erwahnenswert&lt;br /&gt;
&lt;br /&gt;
; ([[User:Mrohr|Matthias]]) Hinweis auf nicht-angemeldeten Bereich&lt;br /&gt;
&lt;br /&gt;
Das Risiko durch rechenintensive Operationen durch einen DoS betroffen zu sein ist natuerlich fuer gewoehlich um so groesser, wenn diese im anonymen Bereich angeboten wird. Der Hinweis ware ggf. ebenfalls hilfreich.&lt;br /&gt;
&lt;br /&gt;
== M 4.WA25Verhinderung von Clickjacking (Markus, Matthias) ==&lt;br /&gt;
Ok - das passt soweit.&lt;br /&gt;
&lt;br /&gt;
([[User:Mrohr|Matthias]]) Stimmt, auch wenn ich &amp;quot;Angreifer&amp;quot; in dem Beispiel eher als &amp;quot;Webseitenbetreiber&amp;quot; beschreiebn wuerde, da er nicht wirklich aktiv einen Angriff durchfuehrt, oder? Bitte nochmal ueber meinen Hinweis aus G 5.WA18 nachdenken: Ist Clickjacking-Schutz tatsaechlich Grundschutz? Ich bin mir da selber nicht so wirklich sicher.&lt;br /&gt;
&lt;br /&gt;
== M 5.WA21Sichere Anbindung von Hintergrundsystemen an Web-Anwendungen (Markus, Matthias) ==&lt;br /&gt;
; Verantwortliche:&lt;br /&gt;
 Architekten fehlen. Entwickler müssen die Views umsetzen und die Datasource entsprechend einbinden - die fehlen hier ebenfalls.&lt;br /&gt;
; DirectorySystem Beispiel:&lt;br /&gt;
 Das DirectorySystem wird in dem angegeben Beispiel zum Single Point of Failure - das wird verschwiegen.&lt;br /&gt;
; Firewalls:&lt;br /&gt;
 Das sind fachlich-blinde Systeme. Was ist mit WAFs / IDS / IPS etc.?&lt;br /&gt;
([[User:Mrohr|Matthias]]) Stimmt, das hat in diesem Baustein nichts zu suchen&lt;br /&gt;
&lt;br /&gt;
; ([[User:Mrohr|Matthias]]) Typische Hintergrundsysteme&lt;br /&gt;
Hier fehlt irgendwie &amp;quot;Middleware&amp;quot;, die ist denke ich nicht immer Legacy&lt;br /&gt;
&lt;br /&gt;
== M 5.WA23Systemarchitektur einer Web-Anwendung (Markus, Matthias) ==&lt;br /&gt;
; Verantwortliche:&lt;br /&gt;
Auch hier fehlend wieder die Architekten. &lt;br /&gt;
([[User:Mrohr|Matthias]]) Stimmt, habe das Dokument mal komplett durchgesucht.Tatsaechlich wird der &amp;quot;Architekt&amp;quot; niemals genannt, das scheint also eher ein grundseatzliches Problem zu sein. Der Administrator hat hier aber nun wirklich nichts zu suchen.&lt;br /&gt;
&lt;br /&gt;
; Virtualisierung:&lt;br /&gt;
Virtualisierung bietet weitere Angriffsvektoren (z.B.: Hypervisor) die eine &amp;quot;Blech&amp;quot;Farm nicht bietet.&lt;br /&gt;
&lt;br /&gt;
([[User:Mrohr|Matthias]]) Genau, wobei auch der ganze Bereich geshareter Plattformen (z.B. By SharePoint) hier fehlt.&lt;/div&gt;</summary>
		<author><name>Mrohr</name></author>	</entry>

	<entry>
		<id>https://wiki.owasp.org/index.php?title=Talk:OWASP_Review_BSI_IT-Grundschutz_Baustein_Webanwendungen&amp;diff=130215</id>
		<title>Talk:OWASP Review BSI IT-Grundschutz Baustein Webanwendungen</title>
		<link rel="alternate" type="text/html" href="https://wiki.owasp.org/index.php?title=Talk:OWASP_Review_BSI_IT-Grundschutz_Baustein_Webanwendungen&amp;diff=130215"/>
				<updated>2012-05-21T15:56:48Z</updated>
		
		<summary type="html">&lt;p&gt;Mrohr: /* &amp;quot;G 5.WA10 Fehler in der Web-Anwendungslogik&amp;quot; (Dennis) */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Since it's about a review of a document in German, all the discussions will be done in German :-)&lt;br /&gt;
&lt;br /&gt;
Diskussionen rund um den Review des &amp;quot;IT-Grundschutzbausteins Webanwendungen&amp;quot; finden hier statt, sinnvollerweise auf Deutsch :-)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Vorschlag für Kriterien, die an unser Review angelegt werden sollten (.kai) ==&lt;br /&gt;
&lt;br /&gt;
* Der Baustein soll alle wichtigen Themen der Entwicklung sicherer&lt;br /&gt;
Webanwendungen enthalten.&lt;br /&gt;
&lt;br /&gt;
* Der Baustein soll die verschiedenen Phasen der Software-Entwicklung&lt;br /&gt;
vollständig abdecken.&lt;br /&gt;
&lt;br /&gt;
* Der Baustein soll zwischen verbindlichen, prüfbaren Vorgaben und&lt;br /&gt;
unverbindlichen Empfehlungen sprachlich sauber unterscheiden (hier&lt;br /&gt;
spielt mein Auditorenblick eine Rolle). Vor allem soll der Baustein&lt;br /&gt;
verbindliche Anforderungen auch tatsächlich stellen. Alle&lt;br /&gt;
verbindlichen Anforderungen müssen unabhängig von der jeweiligen&lt;br /&gt;
Umgebung auch umsetzbar sein, d.h. sie müssen entsprechend generisch&lt;br /&gt;
sein.&lt;br /&gt;
&lt;br /&gt;
* Die Maßnahmen sollen nur in (begründbaren) Ausnahmen zu Empfehlungen&lt;br /&gt;
von OWASP im Widerspruch stehen.&lt;br /&gt;
&lt;br /&gt;
* Die Maßnahmen sollen verständlich und anwendbar sein.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== &amp;quot;Hilfsmittel&amp;quot; (Markus, Matthias) ==&lt;br /&gt;
Ich würde das Script zur Vermeidung von Clickjacking wrappen und nicht als losen Skript-block in den Text einbinden - einfach schlechter Programmierstiel diese losen Blöcke.&lt;br /&gt;
Der Zugriff auf das Body-Element mit byTagName-Array[0] ist auch nicht wirklich gut. Ich halte Zugriffe über das DOM (klassisch), bei ID bzw. XPATH für besser. &lt;br /&gt;
&lt;br /&gt;
([[User:Mrohr|Matthias]]) Verwunderlich finde ich aber, dass der Autor zum Einen zwar von der Verwendung von JavaScript vollstaendig abraet, zum Anderen aber eben solches als Best-Practice-Ansatz fuer Click Jacking empfiehlt.&lt;br /&gt;
&lt;br /&gt;
SQL-Injection Characters:&lt;br /&gt;
die Pipe fehlt hier zur Textkonatenierung&lt;br /&gt;
+ / - haben auch eine Bedeutung bei JOINs.&lt;br /&gt;
&lt;br /&gt;
([[User:Mrohr|Matthias]]) Special Character bzw. DB Escaping ist schon recht DB-spezifisch (siehe [https://www.owasp.org/index.php/SQL_Injection_Prevention_Cheat_Sheet SQL Prevention Cheat sheet]). Wozu werden die hier ueberhaupt aufgefuehrt? Um Eingebafilterung nach pot. SQL Injections durchzufuheren, oder um eine eigene Escaping-Funktion zu schreiben? Raus damit!&lt;br /&gt;
&lt;br /&gt;
== &amp;quot;Goldene Regeln&amp;quot; (Matthias) ==&lt;br /&gt;
&lt;br /&gt;
Hier meine Anmerkungen zu diesem Dokument:&lt;br /&gt;
&lt;br /&gt;
; 1. Für mich fehlende Punkte&lt;br /&gt;
* Korrektur der Ursache (Root Cause) von Schwachstellen statt  Verhinderung deren Ausnutzung&lt;br /&gt;
* Bezug auf Minimierung der Angriffsfläche und Least-Privilege-Prinzip&lt;br /&gt;
* Bezug auf Defense-in-Depth-Prinzip&lt;br /&gt;
* Verwendung von getesteten Security APIs (z.B. OWASP ESAPI) statt selbstentwickelter Funktionen&lt;br /&gt;
* Bezug auf Externalisierung von Sicherheitsfunktionen, sowie deklerative vor programmatischer Sicherheit.&lt;br /&gt;
&lt;br /&gt;
; 2. Begriff &amp;quot;Web-Anwendung&amp;quot;&lt;br /&gt;
Würde ich generell durch &amp;quot;Webanwendung&amp;quot; ersetzen.&lt;br /&gt;
&lt;br /&gt;
; 3. Einleitung (&amp;quot;Web-Anwendungen stellen Funktionalität zur Verfügung, ...&amp;quot;)&lt;br /&gt;
&lt;br /&gt;
Wozu dient dieser Satz?&lt;br /&gt;
&lt;br /&gt;
; 4. &amp;quot;Die Architektur der Web-Anwendung ist im Sicherheitskonzept zu  dokumentieren.....&amp;quot; &lt;br /&gt;
&lt;br /&gt;
Ich fände es sinnvoller, wenn hier von der &amp;quot;Sicherheitsarchitektur&amp;quot; gesprochen wird, welche etwa neben den sicherheitsrelevanten Datenflüssen, sensible Komponenten, Entry Points, Akteure architekturelle Security Controls wie Authentisierung, Kryptographie und natürlich die Trust Boundaries beinhaltet.&lt;br /&gt;
&lt;br /&gt;
; 5. &amp;quot;Bei Web-Anwendungen handelt es sich häufig um spezielle Eigenentwicklungen....&amp;quot;&lt;br /&gt;
&lt;br /&gt;
Erstens würde ich hier den geläufigen Begriff &amp;quot;Individualsoftware&amp;quot; verwenden. Zweitens würde ich statt bestimmte SDLC-Phasen vorzugeben (die Begriffe &amp;quot;Softwareverteilung&amp;quot; und &amp;quot;Integration&amp;quot; sind mir bei Webanwendungen bisher noch nicht so häufig untergekommen), besser von der Notwendigkeit sprechen, Sicherheit in allen Entwicklungsphasen zu berücksichtigen, also eines SDLs.&lt;br /&gt;
&lt;br /&gt;
; 6. &amp;quot;Alle Ein- und Ausgaben der Web-Anwendung müssen in eine normalisierte Form überführt werden....&amp;quot;&lt;br /&gt;
&lt;br /&gt;
Normalisierung ist für mich nicht gleich Kanonsierung, auch wenn beide Begriffe häufig als synonym verwendet werden.  Der Unterschied wird in der [http://owasp-esapi-java.googlecode.com/svn/trunk_doc/2.0-rc4/org/owasp/esapi/Encoder.html API-Beschreibung der ESAPI] erklärt. Die Normalisierungs-Funktion ist allerdings schon vor einiger Zeit aus der ESAPI [https://lists.owasp.org/pipermail/esapi-dev/2010-January/000266.html rausgeflogen]. Die generelle Kanonisierung von Ausgaben halte ich dazu für nicht sinnvoll.&lt;br /&gt;
&lt;br /&gt;
Zweitens, finde ich den weiteren Text zwar grundsätzlich formal korrekt, aber so allgemein, dass dieser glaube ich niemandem so richtig etwas bringt.  &lt;br /&gt;
&lt;br /&gt;
Besser fände ich hier Ein- von Ausgabevalidierung grundsätzlich voneinander abzugrenzen. Etwa was ich per Eingabevalidierung (Längenprüfung, Casting, etc. per Whitelisting) und was mit Ausgebavalidierung (Enkodierung, Escaping, Parametrisierung) machen muss und kann.&lt;br /&gt;
&lt;br /&gt;
Eingabedaten können technisch zudem auch Werte eingelesener Property-Dateien sein. Muss ich die auch validieren? Ist das dann noch Grundschutz? &lt;br /&gt;
&lt;br /&gt;
; 7. &amp;quot;Für den Zugriff auf sensitive Funktionen oder Informationen muss die Web-Anwendung eine wirksame Authentisierung und Sitzungsverwaltung unterstützen. Die Eigenschaften der Sitzungs-ID müssen so gewählt werden, dass die Sitzung ausreichend geschützt ist. ....&amp;quot;&lt;br /&gt;
&lt;br /&gt;
Besser fände ich &amp;quot;eine Authentisierung, die über eine dem Schutzbedarf der Anwendung angemessene Stärke verfügt.&amp;quot; &lt;br /&gt;
&lt;br /&gt;
Eigentlich geht es doch mehr um den Schutz der Sitzungs-ID, da diese gewöhnlich im Verlauf einer Sitzung den Client authentisiert. Oder den Schutz des Zugriffs auf eine Sitzung. &lt;br /&gt;
&lt;br /&gt;
Zudem fehlt hier meiner Meinung nach der Hinweis auf die bevorzugte Verwendung getesteter Standardkomponenten.&lt;br /&gt;
&lt;br /&gt;
; 8. &amp;quot;Die Web-Anwendung sollte die zu übermittelnden Daten schützen.&amp;quot;&lt;br /&gt;
&lt;br /&gt;
Dies würde ich nur auf sensible Daten beziehen. Zusätzlich zu HTTPS würde ich hier schreiben, dass sensible Daten generell nicht in der URL übertragen werden dürfen.&lt;br /&gt;
&lt;br /&gt;
; 9. &amp;quot;Die Preisgabe interner Informationen (z.B. Kommentare, Fehlermeldungen)&amp;quot;&lt;br /&gt;
&lt;br /&gt;
Hier würde ich eher schreiben &amp;quot;(IN Kommentaren, Fehlermeldungen, HTTP Headern, etc.)&amp;quot;&lt;br /&gt;
&lt;br /&gt;
; 10. &amp;quot;Fehler müssen so behandelt werden, ... müssen Fehler bei der Autorisierung zu einer Verweigerung beim Zugriff auf die angeforderte Ressource führen.&amp;quot;&lt;br /&gt;
&lt;br /&gt;
Sprachlich: &amp;quot;Die Webanwendung muss sich stets in einem sicheren Zustand befinden. Beispielsweise müssen Fehler bei der Autorisierung zu einer Verweigerung des Zugriffs führen (Default-Deny-Strategie).&amp;quot;&lt;br /&gt;
&lt;br /&gt;
; 11. &amp;quot;Die Logging-Funktionen der Web-Anwendung müssen aufgetretene Ereignisse derart protokollieren, dass sicherheitskritische Vorfälle nachvollzogen werden können.&amp;quot;&lt;br /&gt;
&lt;br /&gt;
Hier würde hier eher von &amp;quot;allen sicherheitsrelevanten Ereignissen&amp;quot; sprechen.&lt;br /&gt;
&lt;br /&gt;
Weiterhin sollten insbesondere beim Logging der Datenschutz berücksichtigt werden, personenbezogene Daten also nach Möglichkeit nicht oder nur anonymisiert in technischen Logdateien protokolliert werden.&lt;br /&gt;
&lt;br /&gt;
; 12. &amp;quot;Alle Sicherheitsmechanismen (z.B. Authentisierung und Zugriffskontrolle) sind serverseitig zu implementieren und können nicht durch clientseitige Mechanismen ersetzt werden.&amp;quot;&lt;br /&gt;
&lt;br /&gt;
Die Aussage ist so nicht korrekt. Darüber hatten wir bereits bei der ASVS mehrfach diskutiert. &lt;br /&gt;
&lt;br /&gt;
Überall dort wo der Client angegriffen wird, also etwa bei RIAs (Stichwort DOM-Based XSS) müssen wir Security Controls clientseitig implementieren. Es gibt mittlerweile deshalb auch eine Portierung der ESAPI auf Javascript. Überall dort wo der Server oder Hintegrundsysteme angegriffen werden, ist die Aussage aber natürlich zutreffend.&lt;br /&gt;
&lt;br /&gt;
== &amp;quot;Gefährdungen&amp;quot; (Markus, Dennis, .... &amp;lt;Dein Name&amp;gt;) ==&lt;br /&gt;
; Generell:&lt;br /&gt;
Reference auf RFCs fehlen.&lt;br /&gt;
&lt;br /&gt;
==B.5.XX Web-Anwendungen ==&lt;br /&gt;
; 1. Erster Absatz - Letzter Satz: --Wieso werden hier nur HTML/XML Doks und Oberflächen angesprochen? Was ist der Unterschied zwischen einem HTML-Dok und einer Oberfläche? Was ist mit  Flash, etc.? Was ist mit WebSockets?&lt;br /&gt;
; 2. Stichpunkt &amp;quot;Protokollierung&amp;quot;: Sicherheits relevant ist ein sehr dehnbarer Begriff - Eine bessere Formulierung könnte sein: Zur Rekonstruktion von Nutzerhandlungen nötige Ereignisse (positve &amp;amp; negative) müssen protokolliert werden . . . &lt;br /&gt;
; 3. Absatz: &amp;quot;Abgrenzung des Bausteins&amp;quot;: &amp;quot;Die spez. Sicherheitsanforderungen an Web-Services werden in diesem Baustein nicht betrachtet&amp;quot; --&amp;gt; Wie so nicht? Was ist das Backend von einer Rest / AJAX-basierenden Webanwendung denn anderes als ein Web-Service? Diesen Satz würde ich entfernen.&lt;br /&gt;
; 4.Vorsätzliche Handlungen -&amp;gt; Web-Spoofing (G.5.87) -- Missverständliche Bezeichnung / Nomenklatur&lt;br /&gt;
; 5. Seite 4 : erste Zeile &amp;quot;Umsetzung&amp;quot;: &amp;quot;dafür umzusetztende Komponenten müssen die Webanwendung schützen...&amp;quot; - Hier fehlt mir der Hinweis, dass dieser Schutz verifiziert werden muss.&lt;br /&gt;
; 6 Seite 5: &amp;quot;Umsetzung&amp;quot; - Wir haben CSRF, D(D)os und SQL-Injection aber wo ist XSS?&lt;br /&gt;
; 7 Seite 7: &amp;quot;Die Sicherheitsfunktion wird ausschließlich clientseitig...&amp;quot; --&amp;gt; Warum muss der Angreifer überhaupt einen Browser umkonfigurieren? Was ist mit Proxies, Scripts, etc.? Ich würde das reduzieren darauf, dass rein Webbrowser-basierende Schutzfunktionen einfach umgangen werden können.&lt;br /&gt;
; 8 Seite 8: Die angesprochenen Punkte hinterlassen den Eindruck nicht vollständig zu sein: Mir fehlen Punkte wie &amp;quot;Outsourcing&amp;quot;, &amp;quot;KnowHow der Entwickler&amp;quot;, Tooling, Framework-Auswahl, etc.&lt;br /&gt;
; 9 Seite 9: Eigentlich möchte der Autor hier über Datenschutz sprechen. Abgesehen von den letzten drei Zeilen geht es aber nur um &amp;quot;User tracking&amp;quot; - Wo ist der Rest der Datenschutzproblematik? Warum der Fokuss auf Tracking? Mir ist das zu einseitig.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
tbd.&lt;br /&gt;
&lt;br /&gt;
; Wortwahl:&lt;br /&gt;
Ich stosse innerhalb der Texte immer wieder an die Worten '''Hintergrundsystem''' und '''Sicherheitskontext'''.&lt;br /&gt;
'''Hintergrundsystem:''' besseres Synonym?&lt;br /&gt;
'''Sicherheitskontext:''' nur weil es in den Texten um Sicherheit geht muss nicht an jeder Stelle immer wieder das Wort _Sicherheits_kontext eingebaut werden.&lt;br /&gt;
Bsp: &amp;quot;Erlangt ein Angreifer Kenntnis von einer solchen gültigen, aber nicht mehr genutzten SessionID, so kann er die Web-Anwendung im Sicherheitskontext des nicht abgemeldeten Benutzers weiter verwenden.&amp;quot; (G 5,WA12 Unzureichendes Session-Management von Web-Anwendungen)&lt;br /&gt;
Verbesserungsansansatz: ... so kann er die Web-Anwendung anstelle des eigentlichen Besitzers weiterhin verwenden.&lt;br /&gt;
&lt;br /&gt;
== &amp;quot;G 2.WA01 Mangelhafte Auswahl oder Konzeption von Web-Anwendungen&amp;quot; (Matthias) ==&lt;br /&gt;
&lt;br /&gt;
Nachdem ich mir diese Gefährdung durchgelesen hatte, fehlten mir ehrlich gesagt etwas die Worte. Nicht nur, dass hier fast jeder zweite Satz entweder falsch ist bzw. massive Fehler enthält oder ich diesen schlicht nicht verstehe, ist der ganze Text sprachlich wirklich enorm verbesserungsfähig. &lt;br /&gt;
&lt;br /&gt;
Na gut, ich konzentriere mich mal auf die fachlichen Punkte:&lt;br /&gt;
&lt;br /&gt;
; 1. Security Controls&lt;br /&gt;
Werden mal mit &amp;quot;Schutzmechanismen&amp;quot;, mal mit &amp;quot;Sicherheitskomponenten&amp;quot; und dann wieder als &amp;quot;Sicherheitsfunktionen&amp;quot; bezeichnet. Hier macht eine einheitliche Benennung sicherlich Sinn und ist weniger verwirrend.&lt;br /&gt;
&lt;br /&gt;
; 2. &amp;quot;Eine Web-Anwendung ist in der Regel ein verteiltes, komplexes System bestehend aus unterschiedlichen Komponenten (z. B. Webserver, Applikationsserver, Hintergrundsysteme)&amp;quot;&lt;br /&gt;
&lt;br /&gt;
Eine Webanwendung besteht sicher nicht aus einem Webserver- oder anderer infrastruktureller Komponenten, sondern ist Software welches diese nutzt.&lt;br /&gt;
&lt;br /&gt;
; 3. &amp;quot;Bei individuell entwickelten Web-Anwendungen sind im Allgemeinen die Frameworks, Komponenten und Schnittstellen im Rahmen der Konzeption auszuwählen und deren Einbindung und Absicherung zu betrachten....Im Gegensatz dazu ist bei der Konzeption von Web-Anwendungen auf Basis von Standardsoftware insbesondere auf die Auswahl der Software und die Konfiguration der Teilkomponenten zu achten&amp;quot;&lt;br /&gt;
&lt;br /&gt;
Wir unterscheiden im Rahmen von Webanwendungen eigentlich Free or Opensource Software (FOSS bzw. FLOSS), Standardsoftware und Individualsoftware voneinander. Wir unterscheiden nicht Frameworks von Standardsoftware. Frameworks können Teil von Standardsoftware sein, wie etwa bei SharePoint, SAP, etc, oder aber FOSS, wie etwa Spring. Die ganzen Absätze machen für mich daher keinen Sinn.&lt;br /&gt;
&lt;br /&gt;
; 4. &amp;quot;Eine Sicherheitsfunktion (z. B. Authentisierung, Autorisierung) wird nicht an einer Stelle umgesetzt und verwendet, sondern ist mehrfach in der Web- Anwendung realisiert. Wird diese Sicherheitsfunktion an den verschiedenen Stellen unterschiedlich umgesetzt, führt dies zu einem uneinheitlichen Sicherheitsniveau.&amp;quot;&lt;br /&gt;
&lt;br /&gt;
Natürlich ist die mehrfache Verwendung bestimmter Security Controls, beispielsweise von Zugriffskontrollen (Complete-Mediation) oder Validierung (Robustheit) erstrebenswert. Was der Autor hier wahrscheinlich meinte, war die Notwendigkeit diese zu Kapseln bzw. zu Externalisieren. Das bezieht sich im übrigen nicht nur auf die Controls selbst, sondern auch auf ihre Parametrisierung (etwa. über Konfigdateien / XACML).&lt;br /&gt;
&lt;br /&gt;
Wichtiger wäre in diesem Zusammenhang zudem die fehlende Berücksichtigung bestimmter Security Controls.&lt;br /&gt;
&lt;br /&gt;
; 5. &amp;quot;Auswahl von Web-Anwendungen auf Basis von Standardsoftware&amp;quot;&lt;br /&gt;
Was will der Satz sagen? Ich wähle Standardsoftware aus, aber doch keine Webanwendungen. Oder heißt das, ich kaufe eine existierende Anwendung ein (Webanwendung!=Indivudualsoftware)? &lt;br /&gt;
&lt;br /&gt;
; 6. &amp;quot;Das ausgewählte Produkt verfügt nicht über die ausreichende Sicherheitsfunktionalität, ... Daher müssen die notwendigen Schutzmechanismen nachträglich hinzugefügt werden, wodurch zusätzliche Aufwände entstehen.&amp;quot;&lt;br /&gt;
Das ist etwas sehr positiv formuliert. Tatsächlich können fehlende Security Controls in zugekaufter Software (insb. Standardsoftware) in der Realität häufig gar nicht hinzugefügt werden oder nur perimetrisch (z.B. per WAF oder Access Gateway).&lt;br /&gt;
&lt;br /&gt;
; 7. &amp;quot;Die Hintergrundsysteme werden unzureichend abgesichert und dadurch ist die Datenbank der Web-Anwendung aus dem Internet erreichbar.&amp;quot;&lt;br /&gt;
Gehören fehlende Netzwerksegmentierung bzw. Firewallregeln wirklich in diesen Kontext? Das ist doch eigentlich Grundschutz der Infrastruktur, oder?&lt;br /&gt;
&lt;br /&gt;
; 8. &amp;quot;Aufgrund schwacher Parameter in der Konfiguration des Frameworks zum Session-Management werden unsichere SessionIDs erzeugt.&amp;quot;&lt;br /&gt;
Was sind &amp;quot;schwache&amp;quot; Parameter?&lt;br /&gt;
&lt;br /&gt;
Welches Framework erlaubt unsichere SessionIDs durch eine &amp;quot;schwache&amp;quot; Konfiguration zu erzeugen?&lt;br /&gt;
&lt;br /&gt;
; 9. &amp;quot;Wird die Konfiguration des Web-Browsers durch einen Angreifer manipuliert, können die clientseitig umgesetzten&amp;quot;&lt;br /&gt;
&lt;br /&gt;
Manipuliert ein Angreifer die Konfguration seines Webbroswers, wenn er einen MITM-Proxy konfiguriert?&lt;br /&gt;
&lt;br /&gt;
Wie bereits bei den &amp;quot;Goldenen Regeln&amp;quot; angemerkt, gilt auch hier, das manche Security Controls auch clientseitig umgesetzt werden dürfen (etwa. zur Verhinderung von Dom-Based XSS).&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== &amp;quot;G 5.WA10 Fehler in der Web-Anwendungslogik&amp;quot; (Dennis, Matthias) ==&lt;br /&gt;
; 1. &amp;quot;Damit kann aufgrund der Prüfreihenfolge ein hoher Ressourcenverbrauch provoziert werden, der für Denial-of-Service-Angriffe ausgenutzt werden kann.&amp;quot;&lt;br /&gt;
Meiner Meinung nach passt in diesem Kontext die Attacke DoS nicht ganz. Falls die nachfolgende Funktionalität wegen der langen Ausführungszeit der Filterkomponente übersprungen wird bzw. ein Fehler auftritt würde dies meiner Ansicht in die Thematik Anwendungslogik passen. Eine DoS-Attacke kann hingegen anhand jeder Funktion durchgeführt werden.&lt;br /&gt;
&lt;br /&gt;
([[User:Mrohr|Matthias]]) Jo stimmt, aber ich stimme mit der Aussage eigentlich schon ueberein, auch wenn diese zugegeben etwas ungluecklich formuliert ist. Es geht hier ja darum, rechenintensive Pruefungen/Filterung moeglichst zu vermeiden bzw. zu reduzieren. Aus diesem Grund machen wir ja auch bei der AV-Pruefung zunaechst Blacklist-Checks und erst am Ende rechenintensive statistische oder verhaltensbezogene Pruefungen.&lt;br /&gt;
&lt;br /&gt;
== &amp;quot;G 5.WA11 Umgehung clientseitig umgesetzter Sicherheitsfunktionen von Web-Anwendungen&amp;quot; (Dennis) ==&lt;br /&gt;
; 1. &amp;quot;Ein Angreifer kann diese ausnutzen, um beispielsweise unbefugt Befehle an Hintergrundsysteme der Web-Anwendung zu übermittlen (z.B. in Form von Datenbankanfragen bei einer SQL-Injection).&amp;quot;&lt;br /&gt;
Umformulierung des Inhalts der Klammer. Hatte beim ersten Lesen für mich den Anschein, als ob ein Formular genutzt werden könnte welches den Nutzer aufforder eine SQLI einzugeben. Ich denke &amp;quot;Datenbankanfrage zwecks Ausführung einer SQL-Injection&amp;quot; würde besser passen.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== G 2.WA02 Mängel bei der Entwicklung und der Erweiterung von Web-Anwendungen (Matthias) ==&lt;br /&gt;
&lt;br /&gt;
Allgemein ist de obere Teil ok, die aufgezählten &amp;quot;Auswirkungen von fehlenden Vorgaben&amp;quot; verstehe ich jedoch nicht. Wo ist etwa der Bezug von Barrierefreiheit auf die Anwendungssicherheit?&lt;br /&gt;
&lt;br /&gt;
Mein Vorschlag, um diese Punkte etwa sinnvoll umzubauen:&lt;br /&gt;
* &amp;quot;Fehlendes Vorgehensmodell&amp;quot;: Bezug auf fehlende Berücksichtigung von Sicherheit im SDLC. Statt eines SDLCs selbst sollte hier besser auf die Notwendigkeit eines Secure Development Lifecycle (SDL) hingewiesen werden&lt;br /&gt;
* &amp;quot;Fehlende Programmierrichtlinien&amp;quot; =&amp;gt; Besser wäre hier &amp;quot;Fehlende Sicherheitsrichtlinien in der Programmierung&amp;quot; also &amp;quot;Secure Coding Guidelines&amp;quot;&lt;br /&gt;
* &amp;quot;Testfälle&amp;quot; =&amp;gt; &amp;quot;Sicherheitsrelevante Testfälle&amp;quot; (z.B. Security Unit Tests). &lt;br /&gt;
* &amp;quot;Barrierefreiheit&amp;quot;: Warum nicht an dieser Stelle die Auswirkungen von Sicherheitsfunktionen auf die Bedienbarkeit, etwa anhand von CAPTCHAS erläutern?&lt;br /&gt;
&lt;br /&gt;
== G 2.WA03 Unzureichender Schutz personenbezogener Daten bei Web-Anwendungen (Matthias) ==&lt;br /&gt;
&lt;br /&gt;
Der Titel dieses Bausteines heißt &amp;quot;Schutz personenbezogener Daten&amp;quot;, die genannten Beispiele beziehen sich bis auf den letzten jedoch auf die missbräuchliche (oder zumindest problematische) Nutzung aus Sicht des Datenschutzes. &lt;br /&gt;
&lt;br /&gt;
Die Punkt 1-3 sollten daher besser entfallen und z.B. durch die Folgenden ersetzt werden:&lt;br /&gt;
* Unsichere Einbindung von sozialen Netzwerken (Bezug nehmen auf den Like-Button bei Facebook)&lt;br /&gt;
* Unsichere Einbindung von Werbeinhalten&lt;br /&gt;
* Unsichere Übertragung und Caching&lt;br /&gt;
* Unsichere Protokollierung&lt;br /&gt;
* Ungenügender Zugriffsschutz&lt;br /&gt;
* Verstoß des Minimalprinzips bzw. der Zweckgebundenheit (welche Daten werden wirklich benötigt)&lt;br /&gt;
&lt;br /&gt;
Auch wäre es ggf. zumindest einen Verweis auf das BDSG zu machen.&lt;br /&gt;
&lt;br /&gt;
== G 4.33 Unzureichende oder fehlende Authentisierung (Matthias) ==&lt;br /&gt;
&lt;br /&gt;
; 1. Erster Absatz: &amp;quot;Wenn Authentisierungsmechanismen fehlen oder zu schlecht sind&amp;quot;&lt;br /&gt;
&lt;br /&gt;
&amp;quot;schlecht&amp;quot; sollte vlt besser durch &amp;quot;unzureichend&amp;quot; ersetzt werden.&lt;br /&gt;
&lt;br /&gt;
; 2. &amp;quot;Sicherheitslücken entstehen bei... der Benutzerauthentisierung&amp;quot;&lt;br /&gt;
&lt;br /&gt;
Hier findet nur ein Bezug auf &amp;quot;Passwörter&amp;quot; statt. Der Bezug auf die fehlerhaft implementierte oder dem Schutzbedarf ungenügende Schutzmechanismen (z.B. keine 2-Faktor-Authentisierung bei hochsensiblen Daten) fehlt. Auch auf das komplette fehlen von Authentisierungs-Controls wird hier nicht  eingegangen&lt;br /&gt;
&lt;br /&gt;
; 3. &amp;quot;Sicherheitslücken entstehen bei... der Komponentenauthentisierung&amp;quot;&lt;br /&gt;
&lt;br /&gt;
Wie bei 2., wird auch hier wieder nur auf Passwörter, nicht jedoch auf das fehlen von Controls selbst eingegangen. An dieser Stelle fehlt auch ein Hinweis auf die Notwendigkeit dedizierter Benutzeraccounts.&lt;br /&gt;
&lt;br /&gt;
; 4. &amp;quot;Sicherheitslücken entstehen bei... der Wahl des Verfahrens&amp;quot;&lt;br /&gt;
&lt;br /&gt;
Statt untauglich würde ich auch hier von &amp;quot;dem Schutzbedarf der Daten nicht angemessen&amp;quot; sprechen, eigentlich gehört das für mich aber in die obigen Punkte.&lt;br /&gt;
&lt;br /&gt;
; 5. Serverseitige Authentisierung fehlt&lt;br /&gt;
&lt;br /&gt;
Auch der Server (bzw. die Anwendung selbst) kann sich fehlerhaft oder ungenügend beim Benutzer authentsieren, etwa über DNS, SSL-Zertifikate, etc.&lt;br /&gt;
&lt;br /&gt;
== G 4.WA04 Unzureichende Validierung von Ein- und Ausgabedaten bei Web-Anwendungen (Matthias) ==&lt;br /&gt;
&lt;br /&gt;
; 1. &amp;quot;Unzureichende Validierung von Eingabedaten&amp;quot;&lt;br /&gt;
&lt;br /&gt;
Die genannten Beispiele sind genau keine korrekten Beispiele für diesen Fall, sondern betreffen die Ausgabevalidierung bzw. Enkodierung. Typische Fehler der Eingabevalidierung ist eine Manipulierbarkeit der Business Logik.&lt;br /&gt;
&lt;br /&gt;
; 2. &amp;quot;Unzureichende Validierung von Ausgabedaten&amp;quot;&lt;br /&gt;
&lt;br /&gt;
Hier geht es zentral um die Verhinderung von Interpreter Injection, also serverseitig (z.B. SQL oder LDAP Injection) oder clientseitig (XSS, JSON Injection, etc.). Statt &amp;quot;können die Ausgaben Schadcode&amp;quot; enthalten würde ich hier eher davon Sprechen, dass ein solcher Interpreteraufruf manipuliert werden kann (was dann z.B. zur Einschleusung von Schadcode genutzt werden kann).&lt;br /&gt;
&lt;br /&gt;
; 3. &amp;quot;Die Suchfunktion der Web-Anwendung verwendet die Eingaben der Benutzer ungefiltert&amp;quot;&lt;br /&gt;
&lt;br /&gt;
Mit ungenügender &amp;quot;Filterung&amp;quot; hat SQL Injection nichts zu tun,  eigentlich geht es hierbei darum, dass SQL-Anfragen dynamisch mit unvalidierten Eingebedaten zusammengebaut (konkateniert) werden.&lt;br /&gt;
&lt;br /&gt;
; 4. &amp;quot;Ungefilterter HTML-Code in Kommentar-Funktion&amp;quot;&lt;br /&gt;
&lt;br /&gt;
Hier fehlt der Bezug auf persistentes XSS, das hier sicherlich zentral ist.&lt;br /&gt;
&lt;br /&gt;
== G 4.WA05 Fehlende oder mangelhafte Fehlerbehandlung durch Web-Anwendungen (Tobias, Matthias) ==&lt;br /&gt;
; Abschnitt &amp;quot;Unsichere Fehlerbehandlung&amp;quot;&lt;br /&gt;
Die G adressiert &amp;quot;Unsichere Fehlerbehandlung&amp;quot;, der Abschnitt die &amp;quot;Unsichere Fehlerbehandlung in Sicherheitskomponenten&amp;quot;. Entsprechend sollte der fettgedruckte Teil angepasst werden.&lt;br /&gt;
&lt;br /&gt;
; &amp;quot;fehlende SQL-Parameter,&amp;quot;&lt;br /&gt;
Sollte besser &amp;quot;Fehlermeldungen bei ungültigen SQL-Abfragen&amp;quot; lauten.&lt;br /&gt;
&lt;br /&gt;
; &amp;quot;Auch scheinbar unkritische Informationen, wie die Meldung ob (..)&amp;quot;&lt;br /&gt;
Korrekt, allerdings nicht nachvollziehbar, wenn das Problem der Leser nicht schon bekannt ist. Daher erweitern nach &amp;quot; Rahmen von Brute-Force-Angriffen ausgenutzt werden.&amp;quot; mit &amp;quot;. Bei Brute-Force-Angriffen wäre in diesem Fall klar, dass der Benutzername gültig ist.&amp;quot;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[User:Mrohr|Matthias]]): Stimme dem Obigen auch zu, ausserdem:&lt;br /&gt;
&lt;br /&gt;
; Sprachlich: &amp;quot;kann dies unvorhersehbare Auswirkungen haben und den Betrieb der Web-Anwendung bis zur Unerreichbarkeit einschränken.&amp;quot;&lt;br /&gt;
&lt;br /&gt;
&amp;quot;Unerreichbarkeit&amp;quot; ist etas merkwuerdig ausgedrueckt, besser ware hier von der &amp;quot;Verfuegbarkeit&amp;quot; zu sprechen. Im Uebrigen fehlt vollstaendig der Bezug auf die Verfuegbarkeit als Primaeres Schutzziel der Informationssicherheit.&lt;br /&gt;
&lt;br /&gt;
; &amp;quot;Clientseitige Fehlerbehandlung&amp;quot;&lt;br /&gt;
Das stimmt soweit, das generelle Problem ist jedoch genereller, naehmlich die clientseitige Abbildung sicherheitsrelaventer Logik (in diesem Fall die Fehlerbehandlung)&lt;br /&gt;
&lt;br /&gt;
== G 4.WA06 Unzureichende Nachvollziehbarkeit von sicherheitsrelevanten Ereignissen bei Web-Anwendungen (Matthias) ==&lt;br /&gt;
&lt;br /&gt;
; 1. Erster Absatz: &amp;quot;Die Behebung einer Schwachstelle ist dann nicht oder nur unter erschwerten Bedingungen möglich.&amp;quot;&lt;br /&gt;
&lt;br /&gt;
Hier würde ich ergänzen: &amp;quot;...und Angriffe auf die Anwendungen können ggf. nicht erkannt oder nachvollzogen werden&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
; 2. &amp;quot;Beispiele&amp;quot;: Kommulierbarkeit&lt;br /&gt;
&lt;br /&gt;
Hier fehlt auch ein Bezug auf die Kommulierbarkeit von SIcherheitsereignissen, dass diese also auch von solchen anderer Systeme in Verbindung gesetzt werden können&lt;br /&gt;
&lt;br /&gt;
; 3. &amp;quot;Beispiele&amp;quot;: Gerichtsverwertbarkeit&lt;br /&gt;
&lt;br /&gt;
Auch die Möglichkeit zur Gerichtsverwertbarkeit (etwa durch eindeutigen Zeitstempel) und manipulationssicherer Speicherung, würde ich an dieser Stelle unbedingt erwähnen.&lt;br /&gt;
&lt;br /&gt;
== G 4.WA07 Offenlegung von Informationen bei Web-Anwendungen (Matthias) ==&lt;br /&gt;
&lt;br /&gt;
; 1. Titel&lt;br /&gt;
&lt;br /&gt;
Hier würde ggf. &amp;quot;Offenlegung vertraulicher Informationen&amp;quot; sicher besser passen als &amp;quot;Offenlegung von Informationen&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
; 2. Beispiellink&lt;br /&gt;
&lt;br /&gt;
Ein Beispiellink (mit und ohne Token) würde sicher die Verständlichkeit dieser Schwachstelle verbessern.&lt;br /&gt;
&lt;br /&gt;
; 3. Erster Absatz: &amp;quot;Wenn demzufolge Informationen unnötig offengelegt werden, steigt die Wahrscheinlichkeit eines erfolgreichen Angriffs.&amp;quot;&lt;br /&gt;
&lt;br /&gt;
Interne Informationen auszublenden ist eine Härtungsmaßnahme, deren Anzeige erhöht aber nicht zwangsläufig die Wahrscheinlichkeit eines erfolgreichen Angriffs. Ich würde diesen Satz weglassen.&lt;br /&gt;
&lt;br /&gt;
; 4. Fehlende Punkte&lt;br /&gt;
&lt;br /&gt;
* Ein Hinweis auf HTTP Header wäre hier sicher erwähnenswert.&lt;br /&gt;
* Weiterhin bzgl. der Anzeige von Traces und ein Verweis auf den Entsprechenden Baustein zur Fehlerbehandlung&lt;br /&gt;
&lt;br /&gt;
== G 5.WA14 Cross-Site Request Forgery (CSRF, XSRF) (Matthias) ==&lt;br /&gt;
&lt;br /&gt;
; 1. Erster Absatz: &amp;quot;Können Funktionen einer Web-Anwendung ohne weitere Überprüfung der Authentizität des HTTP-Requests (z.B. durch Tokens in versteckten Formularfeldern) genutzt werden&amp;quot;&lt;br /&gt;
&lt;br /&gt;
Statt &amp;quot;Funktionen&amp;quot; würde ich besser von &amp;quot;schreibenden Aktionen&amp;quot; sprechen, dann macht der Satz mehr Sinn.&lt;br /&gt;
&lt;br /&gt;
; 2. Dritter Absatz: &amp;quot;Im Gegensatz zu XSS (siehe ...￼ ) ist das Angriffsziel nicht die Information auf dem Client (z. B. in Cookies),&amp;quot;&lt;br /&gt;
&lt;br /&gt;
Dieser (Halb-)Satz macht keinen Sinn, auch weil es bei XSS nicht nur im Informationen auf dem Cient geht. Vorschlag: &amp;quot;ist das Angriffsziel nicht die Ausführung von Skriptcode, sondern von unbefugten, schreibenden Aktionen im Kontext des angemeldeten Benutzers.&amp;quot;&lt;br /&gt;
&lt;br /&gt;
; 3. Session Riding&lt;br /&gt;
&lt;br /&gt;
Session Riding ist quasi nur ein anderer Begriff für CSRF. Die einzige Form von CSRF die mir bekannt ist, sind Angriffe mit Standard-Passwörtern auf HTTP-Basic-Auth geschützten Ressourcen.&lt;br /&gt;
&lt;br /&gt;
Im Grunde ist Session Riding aber nur ein Synonym für CSRF. Der Absatz ist daher auch nur eine Wiederholung der obigen Beschreibung.&lt;br /&gt;
&lt;br /&gt;
; 4. Zum Beispiel: &amp;quot;Durch einen präparierten Link auf einer Webseite wird die Änderung des Zugangspasswortes des Routers eingeleitet.&amp;quot;&lt;br /&gt;
&lt;br /&gt;
Etwas ungüngstig ausgedrückt. Besser wäre: &amp;quot;wird eine Anfrage zur Änderung des Zugangspasswortes an den Router gesendet. Hierbei sendet der Browser automatisch den Session Cookie mit, worüber die Webanwendung die Authentizität der Anfrage verifiziert und die Änderung durchführt.&amp;quot;&lt;br /&gt;
&lt;br /&gt;
== G 5.WA18 Clickjacking (Matthias) ==&lt;br /&gt;
&lt;br /&gt;
Hier stellt sich mir nur die allgemeine Frage, ob Clickjacking, bzw. der Schutz davor tatsächlich einem Grundschutz zuzurechnen ist. Persönlich würde ich dies nicht tun.&lt;br /&gt;
&lt;br /&gt;
== M 2.WA02 Dokumentation der Architektur von Web-Anwendungen (Matthias) ==&lt;br /&gt;
&lt;br /&gt;
; Verantwortlich für die Umsetzung&lt;br /&gt;
Hier wäre auch die Nennung des &amp;quot;Architekten&amp;quot; sinnvoll&lt;br /&gt;
 &lt;br /&gt;
; Fehlende Bestandteile der Dokumentation:&lt;br /&gt;
* Schutzbedarf des Systems sowie der verarbeiteten Daten&lt;br /&gt;
* Schützenswerte Daten und Funktionen (Assets)&lt;br /&gt;
* Betriebliche Anforderungen an die Sicherheit bzw. eingesetzte Plattform&lt;br /&gt;
* Dokumentierte Konfigurationseinstellungen &lt;br /&gt;
* BIA (RTO, RPO)&lt;br /&gt;
* Schnittstellen&lt;br /&gt;
* Trust Boundaries&lt;br /&gt;
* Akteure (bzw. Trust Level)&lt;br /&gt;
* Sicherheitsannahmen&lt;br /&gt;
* Geltende Compliance-Anforderungen (BDSG, PCI DSS, etc.)&lt;br /&gt;
&lt;br /&gt;
; Benutzermanagement&lt;br /&gt;
&lt;br /&gt;
Wenn damit das Identity Management gemeint ist, gehört das Dokumentiert, ist aber keine Sicherheitsfunktion. Oder ist hiermit das Rollen- und Berechtigungskonzept gemeint? Grenzt sich aus meiner Sicht schwer mit dem Thema Authentisierung ab. &lt;br /&gt;
&lt;br /&gt;
; Prüffragen&lt;br /&gt;
&lt;br /&gt;
Hier fehlt etwas in Bezug auf Sicherheitsanforderungen. Beispiel: &amp;quot;Werden Sicherheitsanforderungen an den Betrieb während der Entwicklung abgestimmt und dokumentiert&amp;quot;&lt;br /&gt;
&lt;br /&gt;
== M 2.WA12 Entwicklung und Erweiterung von Anwendungen (Markus) ==&lt;br /&gt;
; &amp;quot;Es sollte darauf geachtet werden, dass Sicherheitsanforderungen&lt;br /&gt;
vollständig durch Sicherheitsmechanismen erfüllt und zur Erstellung von&lt;br /&gt;
Testfällen festgehalten werden.&amp;quot; --&amp;gt; Bessere Formulierung würde aussagen, dass die Sicherheitsanforderungen durch Testfälle verifiziert werden.&lt;br /&gt;
&amp;quot;(z. B. durch Kommentare im&lt;br /&gt;
Quelltext). Somit ist der Quelltext zu einem&amp;quot; --&amp;gt; Das ist kein empfehlenswerter Programmierstiel! Raus mit diesem Kommentar&lt;br /&gt;
;&amp;quot;Zum Schutz vor dem Verlust bereits entwickelter und verworfener&lt;br /&gt;
Lösungen sowie zu Dokumentationszwecken sollte die Historie der&lt;br /&gt;
Änderungen festgehalten werden (z. B. durch ein Revisionssystem).&amp;quot; --&amp;gt; Auch diesen Absatz können wir streichen - Kein professioneller Programmierer arbeitet ohne Versionierugssystem.&lt;br /&gt;
;&amp;quot;Bei Web-Anwendung sollten die Webseiten auf Konformität zu dem&lt;br /&gt;
verwendeten Standard (z. B. HTML-Standard) getestet werden. Dadurch&lt;br /&gt;
können unvorgesehene Seiteneffekte aufgrund einer Fehlinterpretation&lt;br /&gt;
seitens der Browser vermieden werden.&amp;quot; --&amp;gt; Könnte man noch um &amp;quot;Die Software ist in möglichst vielen Browsern zu testen&amp;quot; erweitern.&lt;br /&gt;
;Generell geht der Autor leider nicht auf die Rollen &amp;amp; Rechte Verteilung ein. Mir fehlt der Hinweis, das es eine personelle Trennung zwischen Entwicklung, Test und Betrieb geben muss.&lt;br /&gt;
;Zum Thema Wartung / Betrieb --&amp;gt; Hier wird keine Aussage getroffen bezüglich Log_Files. Dieses Thema kann kritische Auswirkungen haben, Bsp.: logging ganzer HTTP-Requests im LogLevel=Debug.&lt;br /&gt;
; &amp;quot;Produktspezifische Sicherheitsfunkionalität&amp;quot; - Dieser Absatz ist gefährlich - der Angreifer ist nicht zur Verwendung dies Zielbrowsers gezwungen. Deshalb können Browser-spez. Sicherheitsfunktionen nur als Add-ON gewertet werden.&lt;br /&gt;
; &amp;quot;Festlegung der Entwicklungsumgebung&amp;quot; - Dieser Absatz geht nicht auf die zu verwendenden Testdaten ein. Der Hinweis, dass Live-Daten / Kundendaten nichts in Test- &amp;amp; Entwicklungsumgebungen zu suchen haben fehlt!!!&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== M 2.WA24 Web-Tracking (Matthias) ==&lt;br /&gt;
&lt;br /&gt;
; Letzter Absatz: &amp;quot;Falls eine Auswertung von Nutzerdaten, insbesondere personenbezogener Daten, .. &amp;quot;&lt;br /&gt;
&lt;br /&gt;
Hier sollte denke ich besser von personenbeziehbaren Daten gesprochen Werten. Dies betrifft etwa die Zuordnung von Surfverhalten zu einer bestimmten Person. Dies sollte stets nach den Prinzipien Datensparsamkeit und Datenvermeidung, Erforderlichkeit, sowie Zweckbindung erfolgen. Ist Webtracking nicht personenbeziehbar ist dies kein Thema für den Datenschutz.&lt;br /&gt;
&lt;br /&gt;
== M 4.WA04 Authentisierung bei Web- Anwendungen (Matthias) ==&lt;br /&gt;
&lt;br /&gt;
: Verantwortlich fuer Umsetzung &lt;br /&gt;
sollte in erster Linie beim Architekturen und in zweiter beim Entwickler liegen&lt;br /&gt;
; Vermischung von Authentisierung und Session Management &lt;br /&gt;
&lt;br /&gt;
Bei diesem Baustein findet eine ziemlich große Vermischung von Anforderung an die Authentisierung und das erst in &amp;quot;M 4.WA06 Session-Management bei Web- Anwendungen&amp;quot; behandelte Session Management statt (Beispiel: &amp;quot;Remember-Me-Funktion&amp;quot;). Beide Themen sollten sinnvollerweise getrennt voneinander zu betrachten und aufeinander zu beziehen.&lt;br /&gt;
&lt;br /&gt;
; Verwendung von Frameworks&lt;br /&gt;
&lt;br /&gt;
Die Anforderung ist schon ein wenig eingeschränkt. Besser passt hier denke ich die &amp;quot;Abbildung der Authentisierung über Standardkomponenten (Bibliotheken oder Frameworks)&amp;quot;. &lt;br /&gt;
&lt;br /&gt;
; Remember-Me-Funktion&lt;br /&gt;
&lt;br /&gt;
Siehe oben, gehört zum Session Management. Das ließt sich im übrigen so, als ob eine Webanwendung Credentials auf dem Client abhängt. &lt;br /&gt;
&lt;br /&gt;
; Grenzwerte für gescheiterte Anmeldeversuche&lt;br /&gt;
&lt;br /&gt;
Diese Empfehlung ist allgemein falsch, da sie sehr von der betrachteten Anwendung abhängt. Besser wäre hier allgemein von Mechanismen zur Verhinderung von automatisierten Angriffen zu sprechen (Anti-Automatisierung). &lt;br /&gt;
&lt;br /&gt;
Etwa umsetzbar durch&lt;br /&gt;
* Sperrung nach x Anmeldeversuchen&lt;br /&gt;
* Throttling&lt;br /&gt;
* Captchas&lt;br /&gt;
* Sicherheitsfragen&lt;br /&gt;
&lt;br /&gt;
Das allgemeine Sperren kann leicht für das gezielte Aussperren von Benutzern (User Lockout) verwendet werden. Was etwa bei Trading-Anwendungen nicht funktioniert.&lt;br /&gt;
&lt;br /&gt;
; Automatisiertes Zurücksetzen von Authentisierungsdaten&lt;br /&gt;
&lt;br /&gt;
Würde ich besser als &amp;quot;Passwort-Reset&amp;quot; bezeichnen.&lt;br /&gt;
&lt;br /&gt;
Weiterhin fehlt hier der Hinweis, dass statt ein automatisiertes Zurücksetzen, ein Mechanismus zu empfehlen ist, bei dem über ein hinterlegtes Sicherheitsmerkmal (Handy-Nummer oder E-Mail-Adresse) vom Benutzer zunächst eine Verifikation durchgeführt wird. Beispielsweise durch einen erhaltenen Link. Erst dann darf eine Änderung des Passwortes durch den Benutzer erfolgen.&lt;br /&gt;
&lt;br /&gt;
; Registrierung nicht behandelt&lt;br /&gt;
&lt;br /&gt;
Es existiert hier kein Punkt, der die sichere Implementierung von Benutzerregistrierungen behandelt.&lt;br /&gt;
&lt;br /&gt;
; Verweis auf Externalisierung fehlt.&lt;br /&gt;
&lt;br /&gt;
Statt die Authentisierung selbst durchzuführen kann eine Anwendung hierzu auf eine externe Komponente (Beispiel: SiteMinder oder Kerberos) zurückgreifen.&lt;br /&gt;
&lt;br /&gt;
; Verweis auf Behandlung von Credentials fehlt&lt;br /&gt;
&lt;br /&gt;
Auch wenn das  in &amp;quot;M 4.WA15 Schutz vertraulicher Daten bei Web- Anwendungen&amp;quot; ausführlich behandelt wird, sollte in diesem Baustein bereits auf den angemessenen Schutz von Authentisierungsdaten bei Übertragung und Speicherung hingewiesen werden.&lt;br /&gt;
&lt;br /&gt;
== M 4.WA05Umfassende Ein- und Ausgabevalidierung bei Web-Anwedungen (Markus) ==&lt;br /&gt;
; &amp;quot;Ablehnung der Daten im&lt;br /&gt;
Fehlerfall&amp;quot; --&amp;gt; Hier könnte man noch auf Tar-Pits eingehen - nur ein Vorschlag.&lt;br /&gt;
&lt;br /&gt;
== M 4.WA06Session-Management bei Web-Anwendungen (Markus, Matthias) ==&lt;br /&gt;
; &amp;quot;Übertragung der SessionID mittels GETRequest&amp;quot; --&amp;gt; Hier fehlt der Hinweis, dass die Lebensdauer dieser SessionIds kurz/kürzer sein muss, als im Falle der Speicherung im Cookie.&lt;br /&gt;
&lt;br /&gt;
([[User:Mrohr|Matthias]]) Die Anmerkung verstehe ich ehrlich gesagt ueberhaupt nicht, zumal das SM haeufig transparent zwischen Cookies und URL Rewriting wechselt. Wozu soll das gut sein? Wie soll das geschehen? Idealerweise sollte die Session ID niemals in die URL geschrieben werden, das sollte eigentlich genuegen.&lt;br /&gt;
&lt;br /&gt;
; &amp;quot;Verschlüsselte Übertragung von SessionIDs&amp;quot; --&amp;gt; Hier fehlt der Hinweis auf den Beast-Exploit. TLS Version &amp;gt; 1.0 verwenden!&lt;br /&gt;
&lt;br /&gt;
([[User:Mrohr|Matthias]]) Solange hier nicht auf eine explizite TLS Version eingegangen wird, sollte meiner grossen Ueberzeugung nach hier auch auf keine Exploits etc. eingagen werden, das gehoert an andere Stelle.&lt;br /&gt;
&lt;br /&gt;
; ([[User:Mrohr|Matthias]]) Weiterhin:&lt;br /&gt;
&lt;br /&gt;
 Es dürfen keine extern bekannten oder erratbaren Daten (z. B. IP-Adresse, Uhrzeit) in die Berechnung der SessionID einfließen.&lt;br /&gt;
&lt;br /&gt;
Die Aussage finde ich etwas problematisch, wichtiger ist, dass die Entropie ausreichend hoch ist. Haeufig werden etwa IPs von Load Balancern in die Session ID hineingeschrieben.&lt;br /&gt;
&lt;br /&gt;
 - Domain (z. B. webapp.domain.tld),&lt;br /&gt;
 - Path (z. B. /webapp/),&lt;br /&gt;
 - Secure und&lt;br /&gt;
 - HttpOnly.Beschränkte Sitzungsdauer&lt;br /&gt;
&lt;br /&gt;
Das sieht so aus, als ob es empfehlenswert ist, das Domain-Tag zu verwenden, das ist es sicherlich nicht. Was macht hier der Hinweis &amp;quot;Beschraenke Sizuungsdauer&amp;quot;?&lt;br /&gt;
&lt;br /&gt;
== M 4.WA07Fehlerbehandlung durch Web-Anwendungen (Markus, Matthias) ==&lt;br /&gt;
; Konsistenter / Inkonsistener Zustand einer Webanwendung und der daraus resultierende Datenverlust: Hier fehlen mir die Punkte: DOS, Priv.Escalation, CodeExecution.&lt;br /&gt;
([[User:Mrohr|Matthias]]) Vorschlag &amp;quot;und somit der Schutz der Daten&amp;quot; aendern in &amp;quot;und somit ETWA der Schutz der Daten&amp;quot; korrigieren&lt;br /&gt;
&lt;br /&gt;
; Vermeidung vertraulicher Informationen in Fehlermeldungen --&amp;gt; Fehlermeldungen sollten ebenfalls eine Systeminformationen preisgeben (Softwareversion, Patchlevel, etc.)&lt;br /&gt;
([[User:Mrohr|Matthias]]) Ich glaube hier ist es wichtig zu unterscheiden, wo die Fehlermeldung ausgegeben bzw. wem diese angezeigt wird. Das wird in diesem Modul garnicht so recht unterscheiden. Der Autor meint glaube ich, wie Fehlermeldungen durch die Webanwendung angezeigt werden. In dem Fall hat er recht. Du meinst glaube ich eher, wie Fehlermeldungen protokolliert werden. In dem Fall hast du natuerlich auch recht. Das in dem Text verwendete Wort &amp;quot;ausgeben&amp;quot; ist nicht unbedingt eindeutig und sollte genauer spezifiziert werden.&lt;br /&gt;
&lt;br /&gt;
; Abbruch des Vorgangs nach Auftreten eines Fehlers --&amp;gt; TarPits scheinen dem Autor umbekannt zu sein :)&lt;br /&gt;
([[User:Mrohr|Matthias]]) Stimmt, wobei sich diese ja auch nur auf einen sehr bestimmten Fehlertypen beziehen. Generell laesst sich so etwas unterscheiden, wenn man Fehler-Domains erstellt. Beispiel: Technisch-Unerwartet = Abbruch, Technisch-Erwartet = Fehlermeldug/Tear Pit, etc.&lt;br /&gt;
&lt;br /&gt;
; &amp;quot;Werden Fehler möglichst von der gleichen Komponente behandelt, in der&lt;br /&gt;
der Fehler aufgetreten ist?&amp;quot; --&amp;gt; Das &amp;quot;möglichst&amp;quot; sollten wir streichen.&lt;br /&gt;
([[User:Mrohr|Matthias]]) Hm, der Aussage kann ich nicht ganz zustimmen, bzw. es haengt von dem Begriff &amp;quot;Komponente&amp;quot; ab. Eine Anwendungskomponente kann serwohl bewusst bestimmte Exceptions werfen, die von der einbindenden Komponente behandelt werden muessen.&lt;br /&gt;
&lt;br /&gt;
== M 4.WA08Schutz vor automatisierter Nutzung von Web-Anwendungen (Markus, Matthias) ==&lt;br /&gt;
; &amp;quot;Brute-Force-&lt;br /&gt;
Angriffe (z. B. Erraten von Zugangsdaten) und Enumeration-Angriffe (z. B.&lt;br /&gt;
automatisiertes Ermitteln von gültigen Login-Namen)&amp;quot; -- die Beispiele sind identisch - besser Beispiele suchen, z.b. URL-Enumeration&lt;br /&gt;
&lt;br /&gt;
([[User:Mrohr|Matthias]]) Das sehe ich anders. Brute-Forcing bezieht auf Passwoerter und Enumeration auf Benutzernamen, etwa durchs hochzaehlen. Auch wenn ich zustimmen muss, dass die nicht ganz gluecklich gewaehlt wurden. Stann &amp;quot;Erraten von Zugangsdaten&amp;quot; wuerde ich besser von &amp;quot;Erraten von Passwoertern&amp;quot; sprechen. Oder wie gesagt gleich auch auf andere Beispiele (etwa Object ID Enumeration) beziehen.&lt;br /&gt;
&lt;br /&gt;
== M 4.WA11Sichere Konfiguration von Web-Anwendungen (Markus, Matthias) ==&lt;br /&gt;
; &amp;quot;Sicherer Umgang mit TLS/SSL&amp;quot; -- Hier fehlt der Hinweis, dass TLS-1.0 gebrochen ist&lt;br /&gt;
; &amp;quot;Zeichenkodierungskonfiguration&amp;quot; -- Ein Whitelisting abhängig von der Encodierung wäre ein weiterer Vorschlag&lt;br /&gt;
; &amp;quot;Restriktive Dateisystemberechtigungen&amp;quot; -- auch wenn es ein klassiker ist - der AS sollte ebenfalls mit von einem eingeschränkten Nutzer gestartet werden und nicht als root&lt;br /&gt;
; Administration Consolen:zur Ergänzen: Wenn diese nicht benötigit, sollten derartige Applikationen nicht deployed werden, unabhängig von möglichen Zugangsbeschränkungen.&lt;br /&gt;
&lt;br /&gt;
([[User:Mrohr|Matthias]]) Sorry, meiner Meinung nach hat die Bewertung von Kryptoverfahren hier abslut nichts zu suchen.Stattdessen sollte hier auf den entsprechenden [https://www.bsi.bund.de/ContentBSI/Publikationen/TechnischeRichtlinien/tr02102/index_htm.html Empfehlung des BSI] verwiesen werden, auch wenn dieses Dokument derzeit noch etwas outdated zu sein scheint.&lt;br /&gt;
&lt;br /&gt;
== M 4.WA13Kontrolliertes Einbinden von Daten und Inhalten bei Web-Anwendungen (Markus) ==&lt;br /&gt;
; Datei-Upload: Bei einem Upload werden Dateien durchaus in TEMP-Verzeichnissen gesammelt und danach weiterverarbeitet. Diese TEMP-Verzeichnisse sind im Rahmen einer Sicherheitsanalyse zu betrachten -&amp;gt; Möglicher (unbefugter) Zugriff auf weitere Uploads&lt;br /&gt;
; Upload komprimierter Dateien / großer Dateien birgt die Gefahr von DOS Angriffen&lt;br /&gt;
; Upload von Dateien kann bei weiterem Parsing zu Speicherengpässen führen --&amp;gt; DOS-Angriffe auf Thread-Local etc.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== M 4.WA14Restriktive Herausgabe sicherheitsrelevanter Informationen bei Web-Anwendungen (Markus, Matthias) ==&lt;br /&gt;
OK - Keine Anmerkungen von mir.&lt;br /&gt;
&lt;br /&gt;
([[User:Mrohr|Matthias]]) Von mir schon;)&lt;br /&gt;
&lt;br /&gt;
; ([[User:Mrohr|Matthias]]) Vermeidung von Kommentaren in ausgelieferten Webseiten&lt;br /&gt;
&lt;br /&gt;
Das ist leider total falsch, wir brauchen haeufig Komentare, aus Kompatibilitaetsgruenden. So wird etwa der JavaScript-Block haeufig auskommentiert.&lt;br /&gt;
&lt;br /&gt;
Wurde stattessen besser von sicherheitsrelevanten Kommentaren sprechen und als Massnahme generell Entwicklerkommentare ueber Sprachkonstruktre (etwa JSP) durchzufuehren.&lt;br /&gt;
&lt;br /&gt;
; ([[User:Mrohr|Matthias]]) Löschen nicht benötigter Dateien&lt;br /&gt;
&lt;br /&gt;
Hier wurde ich ggf. Dateien von Versionisierungstools (etwa Subversion) erwaehnen, das sehen wir schon recht haeufig.&lt;br /&gt;
&lt;br /&gt;
Statt Dateien einfach nur zu loeschen (was in der Praxis haeufig nicht so einfach ist) bietet es sich zudem an, den Zugriff auf bestimmte Dateien oder Dateitypen generell zu sperren, etwa mittels ACL im Apache.&lt;br /&gt;
&lt;br /&gt;
; ([[User:Mrohr|Matthias]]) Gibt die Web-Anwendung ausschließlich neutrale Fehlermeldungen aus und sind diese im Quelltext identisch? {E: C}&lt;br /&gt;
&lt;br /&gt;
Persoenlich verstehe ich das nicht. Wieseo neutrale Fehlermeldung? Das macht fuer mich nur beim Login Sin. Hierzu existiert in dem Text auch keinerlei Bezug. Ich wuerde das daher besser entfernen und im Rahmen der Fehlerbehandlung diskutieren. Mindestens sollte hier jedoch besser von &amp;quot;sicherheitsunbedentlichen Fehlermeldungen&amp;quot; oder so gesprochen werden.&lt;br /&gt;
&lt;br /&gt;
; ([[User:Mrohr|Matthias]]) Wird der Referrer bei Verlassen der Web-Anwendung (z. B. durch einen Link auf eine externe Seite) gefiltert?&lt;br /&gt;
&lt;br /&gt;
Diesen Punkt sehe ich als sehr Fallabhengig an. Es kann fuer seiten durchaus wuenschenswert sein, dass der Referer weitergegeben wird. Der Referer sollte natuerlich keine sensiblen Informationen enthalten, was ja an anderer Stelle (etwa Session Management) vorgegeben wird bzw. gegeben werden sollte.&lt;br /&gt;
&lt;br /&gt;
== M 4.WA15Schutz vertraulicher Daten bei Web-Anwendungen (Markus, Matthias) ==&lt;br /&gt;
; Sichere kryptographische Algorithmen:&lt;br /&gt;
 Hier fehlt mir eine Liste der aktuelle als sicher geltenden Verfahren.&lt;br /&gt;
([[User:Mrohr|Matthias]]) Am Besten Referenz auf [https://www.bsi.bund.de/ContentBSI/Publikationen/TechnischeRichtlinien/tr02102/index_htm.html https://www.bsi.bund.de/ContentBSI/Publikationen/TechnischeRichtlinien/tr02102/index_htm.html]&lt;br /&gt;
&lt;br /&gt;
; Schlüssel&lt;br /&gt;
 Das die Schlüssel bestimmten Formaten entsprechen müssen ist ok - aber das Schlüsselmanagement wird gar nicht besprochen?&lt;br /&gt;
; Schutz der Daten im Browsercache&lt;br /&gt;
 Skripte und Browserplugins können ebenfalls auf den Browsercache zugreifen - diese werden hier nicht erwähnt.&lt;br /&gt;
&lt;br /&gt;
([[User:Mrohr|Matthias]]) Weiterhin entsprechen die vorgeschlagenen HTTP Headern nicht dem Best Practice:&lt;br /&gt;
&lt;br /&gt;
 Cache-control: no-cache, no-store&lt;br /&gt;
 Pragma: no-cache&lt;br /&gt;
 Expires: -1&lt;br /&gt;
&lt;br /&gt;
([[User:Mrohr|Matthias]]) Die Empfehlung hinsichtlich des manuellen Leerens des Browsercaches sollte wenn dann nur bei Anwendungen mit sehr hohem Schutzbedarf in Erwaegung gezogen werden. Wichtiger waere da schon eher die richtigen Cache-Header zu verwenden. Solche Empfehlungen ihm Rahmen des Grundschutzes aber wirklich nichts zu suchen. &lt;br /&gt;
&lt;br /&gt;
; Maskierung von Passwörtern &lt;br /&gt;
 Dies schützt bei der Eingabe nur vor ShoulderSurfing nicht vor Skripten oder Plugins die diese an andere Server posten.&lt;br /&gt;
&lt;br /&gt;
([[User:Mrohr|Matthias]]) Das ist voellig korrekt. Aber inwieweit ist die Aussage Passwort-Felder zu verwenden fehlerhaft bzw. hier unzureichend beschrieben?&lt;br /&gt;
&lt;br /&gt;
; Sicherung von Zugangsdaten:&lt;br /&gt;
 Zugangsdaten in einer Datei abzulegen - wenn auch ausserhalb des WebRoots ist keine gute Idee.&lt;br /&gt;
([[User:Mrohr|Matthias]]) Es ist sicher nicht die schoenste Variante, es laesst sich aber nunmal in vielen Faellen nicht vermeiden. Deshalb fordert der [http://code.google.com/p/owasp-asvs/wiki/Verification_V2 ASVS] hier etwa auch nicht mehr. Fuer den hier angestreben Grundschutz sollte das meiner Meinung nach ausreichen.&lt;br /&gt;
; Schutz von Quelltexten:&lt;br /&gt;
 Hier würde ich property files mit aufnehmen. der hinweis auf web-inf/classes fehlt - warum?&lt;br /&gt;
 Bei include-befehlen sind die pfadangaben zu überdenken.&lt;br /&gt;
([[User:Mrohr|Matthias]]) Wuerde property Dateien allgemein den Konfigurationsdateien zuordnen. Der Begriff &amp;quot;Einzubindende Dateien&amp;quot; ist mir allrdings Neu&lt;br /&gt;
&lt;br /&gt;
([[User:Mrohr|Matthias]]) Weiterhin, fehlt ein genereller Bezug auf HTML 5 WebStorage, LSOs etc. Zumindest in abstrakter Form, so dass diese dadurch indirekt addresiert werden. Egal, in dem relevanten Punkt will der Autor meiner Meinung nach nur einige Beispiele nennen, das sollte keinen Anspruch auf Vollsteandigkeit haben muessen.&lt;br /&gt;
&lt;br /&gt;
; ([[User:Mrohr|Matthias]]) - Durch dieses Attribut wird die Gültigkeit des Cookies auf die Domäne der Web-Anwendung beschränkt.&lt;br /&gt;
Nein, das ist leider total falsch. Das Domain-Attribut stellt eine Aufweichung der Cookie-Gueltigkeit dar und nicht anders herum. Gewoehlich sind Cookies immer Host-Cockies und das sollte auch so bleiben. Die Empfehlung sollte entfernt werden.&lt;br /&gt;
&lt;br /&gt;
== M 4.WA16Zugriffskontrolle bei Web-Anwendungen (Markus) ==&lt;br /&gt;
; Zugriffskontrolle via Frameworks:&lt;br /&gt;
 Dieser Punkt (Frameworks) wird nur in einem Satz erwähnt. Es werden keine Bespiele gegeben - Das ist zu wenig.&lt;br /&gt;
 Es müssen alle Zugriffe geschützt werden. Eine Protokollierung aller Zugriffe mit den nötigen Informationen ist ebenfalls empfehlenswert.&lt;br /&gt;
; Datei Upload:&lt;br /&gt;
 Die Gefahr eines DOS wird hier nicht erwähnt.&lt;br /&gt;
&lt;br /&gt;
== M 4.WA19Verhinderung von Cross-Site Request Forgery (CSRF, XSRF) (Markus, Matthias) ==&lt;br /&gt;
; Verantwortliche: &lt;br /&gt;
 Entwickler und Admins!&lt;br /&gt;
([[User:Mrohr|Matthias]]) Korrekt, wobei auch in der Reihenfolge&lt;br /&gt;
&lt;br /&gt;
; Anti-CSRF-Token in hidden fields:&lt;br /&gt;
 Das ist keine gute Idee. Ich würde das streichen!&lt;br /&gt;
&lt;br /&gt;
([[User:Mrohr|Matthias]]) Watt? Anti-CSRF-Tokens in Hidden Fields sind die Standard-Massnahme. Wie denn sonst? Bitte nicht streichen!!! &lt;br /&gt;
&lt;br /&gt;
([[User:Mrohr|Matthias]]) Die Technik bei der die Session ID als Anti-CSRF-Token verwendet wird, wird als Double-Cookie Submit bezeichnet, das sollte hier referenziert werden.&lt;br /&gt;
&lt;br /&gt;
; Umgehung von Schutzmechanismen:&lt;br /&gt;
 Man in the middle hat keinen direkten Bezug zu CSRF! Das würde ich streichen.&lt;br /&gt;
([[User:Mrohr|Matthias]]) Der Hinweis ist korrekt. Wovon der Autor hier spricht ist Session Replay nicht CSRF.&lt;br /&gt;
&lt;br /&gt;
; Frameworks:&lt;br /&gt;
 Gute Idee - aber es gibt auch Features in den ApplicationServern die CSRF unterbinden - warum wird das nicht besprochen?&lt;br /&gt;
&lt;br /&gt;
([[User:Mrohr|Matthias]]) Sehe ich persoenlich nicht so, da CSRF primaer ein Applikations-Fehler ist, und auch in der Applikation und nicht im Environment (AppServer) geloest werden sollte. Auch wenn das manchmal ggf. die einzig machbare Loesung darstellt.&lt;br /&gt;
&lt;br /&gt;
([[User:Mrohr|Matthias]]) Was generell fehlt, ist ein Hinweis darauf, dass schreibende Requests generell per HTTP Post abgewickelt werden sollten, da HTTP Get keine &amp;quot;Safe Method&amp;quot;  (siehe HTTP 1.1, RFC 2616) ist.&lt;br /&gt;
&lt;br /&gt;
== M 4.WA20Sicherer Entwurf der Logik von Web-Anwendungen (Markus, Matthias) ==&lt;br /&gt;
; Rollbacks:&lt;br /&gt;
 Tritt ein Fehler auf muss die Applikation einen konsistenten Datenstand zurück lassen. Das wird hier nicht erwähnt.&lt;br /&gt;
; RaceConditions:&lt;br /&gt;
 Fehler in der Geschäftslogik können auch durch zwei gleichzeitige Sessions auf einer Webapplikation auftreten - das wird hier nicht besprochen.&lt;br /&gt;
&lt;br /&gt;
([[User:Mrohr|Matthias]]) Ehrlich gesagt kann ich nicht ganz nachvollziehen, was der Sichere Entwurf der Logik von Web-Anwendungen mit dem Verzicht auf aktive Inhalte zu tun hat. Unabhaengig davon sollte man solche unsinnigen Aussagen im Jahre 2012 nicht mehr treffen, damit macht man sicht nur laecherlich.&lt;br /&gt;
&lt;br /&gt;
Nichts desto trotz, was hier als &amp;quot;echte&amp;quot; Massnahmen erwaehnt werden sollte sind:&lt;br /&gt;
* Verhinderung von Race Conditions, aber nicht nur durch Concurrent Sessions sondern auch durch Singletons (TOCTOU)&lt;br /&gt;
* Enforcements von Workflows, etwa durch die Verwendung von State Machines oder Request Tokens (auch bekannt als Site Usage Enforcement)&lt;br /&gt;
* Fail Securely (bzw. Verweis)&lt;br /&gt;
* Serverseitige Abbildung der Anwendungslogik, zumindest wenn diese sicherheitsrelevant sit&lt;br /&gt;
&lt;br /&gt;
== M 4.WA22Verhinderung der Blockade von Ressourcen (DoS) bei Web-Anwendungen (Markus, Matthias) ==&lt;br /&gt;
; Datenspeicher:&lt;br /&gt;
 Neben dem Datenspeicher sollte auch der RAM-Verbrauch pro Thread der Applikation limitiert werden.&lt;br /&gt;
([[User:Mrohr|Matthias]]) Stimmt, ich wuerde hier sogar allgemein von Ressourcenverbrauch am Beispiel RAM und Datenspeicher, sprechen&lt;br /&gt;
&lt;br /&gt;
; Voraggregation von Daten / Caching&lt;br /&gt;
 Dieser Punkt fehlt: Stark ressourcen belastende Anfragen können auch in Lastarmen Zeiten vorberechnet werden.&lt;br /&gt;
([[User:Mrohr|Matthias]]) Stimmt, koennte noch als Anmerkung bei &amp;quot;Cachen von Anfragen&amp;quot; hinzugefuegt werden&lt;br /&gt;
&lt;br /&gt;
; ([[User:Mrohr|Matthias]]) Prueffrage: &amp;quot;Wird ein möglicher Überlauf von Protokolldaten... verhindert&amp;quot;&lt;br /&gt;
&lt;br /&gt;
Ist eine etwas eingeschrankte Sicht. Wurde hier eher von Ueberlauf von Speicherplaz zu Beispiel im Rahmen der Protokollierung sprechen&lt;br /&gt;
&lt;br /&gt;
; ([[User:Mrohr|Matthias]]) Durchfuehrung von Lasttests zur Identifikation ressourcenintensiver Operationen&lt;br /&gt;
&lt;br /&gt;
Der Hinweis waere ggf. erwahnenswert&lt;br /&gt;
&lt;br /&gt;
; ([[User:Mrohr|Matthias]]) Hinweis auf nicht-angemeldeten Bereich&lt;br /&gt;
&lt;br /&gt;
Das Risiko durch rechenintensive Operationen durch einen DoS betroffen zu sein ist natuerlich fuer gewoehlich um so groesser, wenn diese im anonymen Bereich angeboten wird. Der Hinweis ware ggf. ebenfalls hilfreich.&lt;br /&gt;
&lt;br /&gt;
== M 4.WA25Verhinderung von Clickjacking (Markus, Matthias) ==&lt;br /&gt;
Ok - das passt soweit.&lt;br /&gt;
&lt;br /&gt;
([[User:Mrohr|Matthias]]) Stimmt, auch wenn ich &amp;quot;Angreifer&amp;quot; in dem Beispiel eher als &amp;quot;Webseitenbetreiber&amp;quot; beschreiebn wuerde, da er nicht wirklich aktiv einen Angriff durchfuehrt, oder? Bitte nochmal ueber meinen Hinweis aus G 5.WA18 nachdenken: Ist Clickjacking-Schutz tatsaechlich Grundschutz? Ich bin mir da selber nicht so wirklich sicher.&lt;br /&gt;
&lt;br /&gt;
== M 5.WA21Sichere Anbindung von Hintergrundsystemen an Web-Anwendungen (Markus, Matthias) ==&lt;br /&gt;
; Verantwortliche:&lt;br /&gt;
 Architekten fehlen. Entwickler müssen die Views umsetzen und die Datasource entsprechend einbinden - die fehlen hier ebenfalls.&lt;br /&gt;
; DirectorySystem Beispiel:&lt;br /&gt;
 Das DirectorySystem wird in dem angegeben Beispiel zum Single Point of Failure - das wird verschwiegen.&lt;br /&gt;
; Firewalls:&lt;br /&gt;
 Das sind fachlich-blinde Systeme. Was ist mit WAFs / IDS / IPS etc.?&lt;br /&gt;
([[User:Mrohr|Matthias]]) Stimmt, das hat in diesem Baustein nichts zu suchen&lt;br /&gt;
&lt;br /&gt;
; ([[User:Mrohr|Matthias]]) Typische Hintergrundsysteme&lt;br /&gt;
Hier fehlt irgendwie &amp;quot;Middleware&amp;quot;, die ist denke ich nicht immer Legacy&lt;br /&gt;
&lt;br /&gt;
== M 5.WA23Systemarchitektur einer Web-Anwendung (Markus, Matthias) ==&lt;br /&gt;
; Verantwortliche:&lt;br /&gt;
Auch hier fehlend wieder die Architekten. &lt;br /&gt;
([[User:Mrohr|Matthias]]) Stimmt, habe das Dokument mal komplett durchgesucht.Tatsaechlich wird der &amp;quot;Architekt&amp;quot; niemals genannt, das scheint also eher ein grundseatzliches Problem zu sein. Der Administrator hat hier aber nun wirklich nichts zu suchen.&lt;br /&gt;
&lt;br /&gt;
; Virtualisierung:&lt;br /&gt;
Virtualisierung bietet weitere Angriffsvektoren (z.B.: Hypervisor) die eine &amp;quot;Blech&amp;quot;Farm nicht bietet.&lt;br /&gt;
&lt;br /&gt;
([[User:Mrohr|Matthias]]) Genau, wobei auch der ganze Bereich geshareter Plattformen (z.B. By SharePoint) hier fehlt.&lt;/div&gt;</summary>
		<author><name>Mrohr</name></author>	</entry>

	<entry>
		<id>https://wiki.owasp.org/index.php?title=Talk:OWASP_Review_BSI_IT-Grundschutz_Baustein_Webanwendungen&amp;diff=130214</id>
		<title>Talk:OWASP Review BSI IT-Grundschutz Baustein Webanwendungen</title>
		<link rel="alternate" type="text/html" href="https://wiki.owasp.org/index.php?title=Talk:OWASP_Review_BSI_IT-Grundschutz_Baustein_Webanwendungen&amp;diff=130214"/>
				<updated>2012-05-21T15:56:25Z</updated>
		
		<summary type="html">&lt;p&gt;Mrohr: /* G 4.WA07 Offenlegung von Informationen bei Web-Anwendungen (Matthias) */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Since it's about a review of a document in German, all the discussions will be done in German :-)&lt;br /&gt;
&lt;br /&gt;
Diskussionen rund um den Review des &amp;quot;IT-Grundschutzbausteins Webanwendungen&amp;quot; finden hier statt, sinnvollerweise auf Deutsch :-)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Vorschlag für Kriterien, die an unser Review angelegt werden sollten (.kai) ==&lt;br /&gt;
&lt;br /&gt;
* Der Baustein soll alle wichtigen Themen der Entwicklung sicherer&lt;br /&gt;
Webanwendungen enthalten.&lt;br /&gt;
&lt;br /&gt;
* Der Baustein soll die verschiedenen Phasen der Software-Entwicklung&lt;br /&gt;
vollständig abdecken.&lt;br /&gt;
&lt;br /&gt;
* Der Baustein soll zwischen verbindlichen, prüfbaren Vorgaben und&lt;br /&gt;
unverbindlichen Empfehlungen sprachlich sauber unterscheiden (hier&lt;br /&gt;
spielt mein Auditorenblick eine Rolle). Vor allem soll der Baustein&lt;br /&gt;
verbindliche Anforderungen auch tatsächlich stellen. Alle&lt;br /&gt;
verbindlichen Anforderungen müssen unabhängig von der jeweiligen&lt;br /&gt;
Umgebung auch umsetzbar sein, d.h. sie müssen entsprechend generisch&lt;br /&gt;
sein.&lt;br /&gt;
&lt;br /&gt;
* Die Maßnahmen sollen nur in (begründbaren) Ausnahmen zu Empfehlungen&lt;br /&gt;
von OWASP im Widerspruch stehen.&lt;br /&gt;
&lt;br /&gt;
* Die Maßnahmen sollen verständlich und anwendbar sein.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== &amp;quot;Hilfsmittel&amp;quot; (Markus, Matthias) ==&lt;br /&gt;
Ich würde das Script zur Vermeidung von Clickjacking wrappen und nicht als losen Skript-block in den Text einbinden - einfach schlechter Programmierstiel diese losen Blöcke.&lt;br /&gt;
Der Zugriff auf das Body-Element mit byTagName-Array[0] ist auch nicht wirklich gut. Ich halte Zugriffe über das DOM (klassisch), bei ID bzw. XPATH für besser. &lt;br /&gt;
&lt;br /&gt;
([[User:Mrohr|Matthias]]) Verwunderlich finde ich aber, dass der Autor zum Einen zwar von der Verwendung von JavaScript vollstaendig abraet, zum Anderen aber eben solches als Best-Practice-Ansatz fuer Click Jacking empfiehlt.&lt;br /&gt;
&lt;br /&gt;
SQL-Injection Characters:&lt;br /&gt;
die Pipe fehlt hier zur Textkonatenierung&lt;br /&gt;
+ / - haben auch eine Bedeutung bei JOINs.&lt;br /&gt;
&lt;br /&gt;
([[User:Mrohr|Matthias]]) Special Character bzw. DB Escaping ist schon recht DB-spezifisch (siehe [https://www.owasp.org/index.php/SQL_Injection_Prevention_Cheat_Sheet SQL Prevention Cheat sheet]). Wozu werden die hier ueberhaupt aufgefuehrt? Um Eingebafilterung nach pot. SQL Injections durchzufuheren, oder um eine eigene Escaping-Funktion zu schreiben? Raus damit!&lt;br /&gt;
&lt;br /&gt;
== &amp;quot;Goldene Regeln&amp;quot; (Matthias) ==&lt;br /&gt;
&lt;br /&gt;
Hier meine Anmerkungen zu diesem Dokument:&lt;br /&gt;
&lt;br /&gt;
; 1. Für mich fehlende Punkte&lt;br /&gt;
* Korrektur der Ursache (Root Cause) von Schwachstellen statt  Verhinderung deren Ausnutzung&lt;br /&gt;
* Bezug auf Minimierung der Angriffsfläche und Least-Privilege-Prinzip&lt;br /&gt;
* Bezug auf Defense-in-Depth-Prinzip&lt;br /&gt;
* Verwendung von getesteten Security APIs (z.B. OWASP ESAPI) statt selbstentwickelter Funktionen&lt;br /&gt;
* Bezug auf Externalisierung von Sicherheitsfunktionen, sowie deklerative vor programmatischer Sicherheit.&lt;br /&gt;
&lt;br /&gt;
; 2. Begriff &amp;quot;Web-Anwendung&amp;quot;&lt;br /&gt;
Würde ich generell durch &amp;quot;Webanwendung&amp;quot; ersetzen.&lt;br /&gt;
&lt;br /&gt;
; 3. Einleitung (&amp;quot;Web-Anwendungen stellen Funktionalität zur Verfügung, ...&amp;quot;)&lt;br /&gt;
&lt;br /&gt;
Wozu dient dieser Satz?&lt;br /&gt;
&lt;br /&gt;
; 4. &amp;quot;Die Architektur der Web-Anwendung ist im Sicherheitskonzept zu  dokumentieren.....&amp;quot; &lt;br /&gt;
&lt;br /&gt;
Ich fände es sinnvoller, wenn hier von der &amp;quot;Sicherheitsarchitektur&amp;quot; gesprochen wird, welche etwa neben den sicherheitsrelevanten Datenflüssen, sensible Komponenten, Entry Points, Akteure architekturelle Security Controls wie Authentisierung, Kryptographie und natürlich die Trust Boundaries beinhaltet.&lt;br /&gt;
&lt;br /&gt;
; 5. &amp;quot;Bei Web-Anwendungen handelt es sich häufig um spezielle Eigenentwicklungen....&amp;quot;&lt;br /&gt;
&lt;br /&gt;
Erstens würde ich hier den geläufigen Begriff &amp;quot;Individualsoftware&amp;quot; verwenden. Zweitens würde ich statt bestimmte SDLC-Phasen vorzugeben (die Begriffe &amp;quot;Softwareverteilung&amp;quot; und &amp;quot;Integration&amp;quot; sind mir bei Webanwendungen bisher noch nicht so häufig untergekommen), besser von der Notwendigkeit sprechen, Sicherheit in allen Entwicklungsphasen zu berücksichtigen, also eines SDLs.&lt;br /&gt;
&lt;br /&gt;
; 6. &amp;quot;Alle Ein- und Ausgaben der Web-Anwendung müssen in eine normalisierte Form überführt werden....&amp;quot;&lt;br /&gt;
&lt;br /&gt;
Normalisierung ist für mich nicht gleich Kanonsierung, auch wenn beide Begriffe häufig als synonym verwendet werden.  Der Unterschied wird in der [http://owasp-esapi-java.googlecode.com/svn/trunk_doc/2.0-rc4/org/owasp/esapi/Encoder.html API-Beschreibung der ESAPI] erklärt. Die Normalisierungs-Funktion ist allerdings schon vor einiger Zeit aus der ESAPI [https://lists.owasp.org/pipermail/esapi-dev/2010-January/000266.html rausgeflogen]. Die generelle Kanonisierung von Ausgaben halte ich dazu für nicht sinnvoll.&lt;br /&gt;
&lt;br /&gt;
Zweitens, finde ich den weiteren Text zwar grundsätzlich formal korrekt, aber so allgemein, dass dieser glaube ich niemandem so richtig etwas bringt.  &lt;br /&gt;
&lt;br /&gt;
Besser fände ich hier Ein- von Ausgabevalidierung grundsätzlich voneinander abzugrenzen. Etwa was ich per Eingabevalidierung (Längenprüfung, Casting, etc. per Whitelisting) und was mit Ausgebavalidierung (Enkodierung, Escaping, Parametrisierung) machen muss und kann.&lt;br /&gt;
&lt;br /&gt;
Eingabedaten können technisch zudem auch Werte eingelesener Property-Dateien sein. Muss ich die auch validieren? Ist das dann noch Grundschutz? &lt;br /&gt;
&lt;br /&gt;
; 7. &amp;quot;Für den Zugriff auf sensitive Funktionen oder Informationen muss die Web-Anwendung eine wirksame Authentisierung und Sitzungsverwaltung unterstützen. Die Eigenschaften der Sitzungs-ID müssen so gewählt werden, dass die Sitzung ausreichend geschützt ist. ....&amp;quot;&lt;br /&gt;
&lt;br /&gt;
Besser fände ich &amp;quot;eine Authentisierung, die über eine dem Schutzbedarf der Anwendung angemessene Stärke verfügt.&amp;quot; &lt;br /&gt;
&lt;br /&gt;
Eigentlich geht es doch mehr um den Schutz der Sitzungs-ID, da diese gewöhnlich im Verlauf einer Sitzung den Client authentisiert. Oder den Schutz des Zugriffs auf eine Sitzung. &lt;br /&gt;
&lt;br /&gt;
Zudem fehlt hier meiner Meinung nach der Hinweis auf die bevorzugte Verwendung getesteter Standardkomponenten.&lt;br /&gt;
&lt;br /&gt;
; 8. &amp;quot;Die Web-Anwendung sollte die zu übermittelnden Daten schützen.&amp;quot;&lt;br /&gt;
&lt;br /&gt;
Dies würde ich nur auf sensible Daten beziehen. Zusätzlich zu HTTPS würde ich hier schreiben, dass sensible Daten generell nicht in der URL übertragen werden dürfen.&lt;br /&gt;
&lt;br /&gt;
; 9. &amp;quot;Die Preisgabe interner Informationen (z.B. Kommentare, Fehlermeldungen)&amp;quot;&lt;br /&gt;
&lt;br /&gt;
Hier würde ich eher schreiben &amp;quot;(IN Kommentaren, Fehlermeldungen, HTTP Headern, etc.)&amp;quot;&lt;br /&gt;
&lt;br /&gt;
; 10. &amp;quot;Fehler müssen so behandelt werden, ... müssen Fehler bei der Autorisierung zu einer Verweigerung beim Zugriff auf die angeforderte Ressource führen.&amp;quot;&lt;br /&gt;
&lt;br /&gt;
Sprachlich: &amp;quot;Die Webanwendung muss sich stets in einem sicheren Zustand befinden. Beispielsweise müssen Fehler bei der Autorisierung zu einer Verweigerung des Zugriffs führen (Default-Deny-Strategie).&amp;quot;&lt;br /&gt;
&lt;br /&gt;
; 11. &amp;quot;Die Logging-Funktionen der Web-Anwendung müssen aufgetretene Ereignisse derart protokollieren, dass sicherheitskritische Vorfälle nachvollzogen werden können.&amp;quot;&lt;br /&gt;
&lt;br /&gt;
Hier würde hier eher von &amp;quot;allen sicherheitsrelevanten Ereignissen&amp;quot; sprechen.&lt;br /&gt;
&lt;br /&gt;
Weiterhin sollten insbesondere beim Logging der Datenschutz berücksichtigt werden, personenbezogene Daten also nach Möglichkeit nicht oder nur anonymisiert in technischen Logdateien protokolliert werden.&lt;br /&gt;
&lt;br /&gt;
; 12. &amp;quot;Alle Sicherheitsmechanismen (z.B. Authentisierung und Zugriffskontrolle) sind serverseitig zu implementieren und können nicht durch clientseitige Mechanismen ersetzt werden.&amp;quot;&lt;br /&gt;
&lt;br /&gt;
Die Aussage ist so nicht korrekt. Darüber hatten wir bereits bei der ASVS mehrfach diskutiert. &lt;br /&gt;
&lt;br /&gt;
Überall dort wo der Client angegriffen wird, also etwa bei RIAs (Stichwort DOM-Based XSS) müssen wir Security Controls clientseitig implementieren. Es gibt mittlerweile deshalb auch eine Portierung der ESAPI auf Javascript. Überall dort wo der Server oder Hintegrundsysteme angegriffen werden, ist die Aussage aber natürlich zutreffend.&lt;br /&gt;
&lt;br /&gt;
== &amp;quot;Gefährdungen&amp;quot; (Markus, Dennis, .... &amp;lt;Dein Name&amp;gt;) ==&lt;br /&gt;
; Generell:&lt;br /&gt;
Reference auf RFCs fehlen.&lt;br /&gt;
&lt;br /&gt;
==B.5.XX Web-Anwendungen ==&lt;br /&gt;
; 1. Erster Absatz - Letzter Satz: --Wieso werden hier nur HTML/XML Doks und Oberflächen angesprochen? Was ist der Unterschied zwischen einem HTML-Dok und einer Oberfläche? Was ist mit  Flash, etc.? Was ist mit WebSockets?&lt;br /&gt;
; 2. Stichpunkt &amp;quot;Protokollierung&amp;quot;: Sicherheits relevant ist ein sehr dehnbarer Begriff - Eine bessere Formulierung könnte sein: Zur Rekonstruktion von Nutzerhandlungen nötige Ereignisse (positve &amp;amp; negative) müssen protokolliert werden . . . &lt;br /&gt;
; 3. Absatz: &amp;quot;Abgrenzung des Bausteins&amp;quot;: &amp;quot;Die spez. Sicherheitsanforderungen an Web-Services werden in diesem Baustein nicht betrachtet&amp;quot; --&amp;gt; Wie so nicht? Was ist das Backend von einer Rest / AJAX-basierenden Webanwendung denn anderes als ein Web-Service? Diesen Satz würde ich entfernen.&lt;br /&gt;
; 4.Vorsätzliche Handlungen -&amp;gt; Web-Spoofing (G.5.87) -- Missverständliche Bezeichnung / Nomenklatur&lt;br /&gt;
; 5. Seite 4 : erste Zeile &amp;quot;Umsetzung&amp;quot;: &amp;quot;dafür umzusetztende Komponenten müssen die Webanwendung schützen...&amp;quot; - Hier fehlt mir der Hinweis, dass dieser Schutz verifiziert werden muss.&lt;br /&gt;
; 6 Seite 5: &amp;quot;Umsetzung&amp;quot; - Wir haben CSRF, D(D)os und SQL-Injection aber wo ist XSS?&lt;br /&gt;
; 7 Seite 7: &amp;quot;Die Sicherheitsfunktion wird ausschließlich clientseitig...&amp;quot; --&amp;gt; Warum muss der Angreifer überhaupt einen Browser umkonfigurieren? Was ist mit Proxies, Scripts, etc.? Ich würde das reduzieren darauf, dass rein Webbrowser-basierende Schutzfunktionen einfach umgangen werden können.&lt;br /&gt;
; 8 Seite 8: Die angesprochenen Punkte hinterlassen den Eindruck nicht vollständig zu sein: Mir fehlen Punkte wie &amp;quot;Outsourcing&amp;quot;, &amp;quot;KnowHow der Entwickler&amp;quot;, Tooling, Framework-Auswahl, etc.&lt;br /&gt;
; 9 Seite 9: Eigentlich möchte der Autor hier über Datenschutz sprechen. Abgesehen von den letzten drei Zeilen geht es aber nur um &amp;quot;User tracking&amp;quot; - Wo ist der Rest der Datenschutzproblematik? Warum der Fokuss auf Tracking? Mir ist das zu einseitig.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
tbd.&lt;br /&gt;
&lt;br /&gt;
; Wortwahl:&lt;br /&gt;
Ich stosse innerhalb der Texte immer wieder an die Worten '''Hintergrundsystem''' und '''Sicherheitskontext'''.&lt;br /&gt;
'''Hintergrundsystem:''' besseres Synonym?&lt;br /&gt;
'''Sicherheitskontext:''' nur weil es in den Texten um Sicherheit geht muss nicht an jeder Stelle immer wieder das Wort _Sicherheits_kontext eingebaut werden.&lt;br /&gt;
Bsp: &amp;quot;Erlangt ein Angreifer Kenntnis von einer solchen gültigen, aber nicht mehr genutzten SessionID, so kann er die Web-Anwendung im Sicherheitskontext des nicht abgemeldeten Benutzers weiter verwenden.&amp;quot; (G 5,WA12 Unzureichendes Session-Management von Web-Anwendungen)&lt;br /&gt;
Verbesserungsansansatz: ... so kann er die Web-Anwendung anstelle des eigentlichen Besitzers weiterhin verwenden.&lt;br /&gt;
&lt;br /&gt;
== &amp;quot;G 2.WA01 Mangelhafte Auswahl oder Konzeption von Web-Anwendungen&amp;quot; (Matthias) ==&lt;br /&gt;
&lt;br /&gt;
Nachdem ich mir diese Gefährdung durchgelesen hatte, fehlten mir ehrlich gesagt etwas die Worte. Nicht nur, dass hier fast jeder zweite Satz entweder falsch ist bzw. massive Fehler enthält oder ich diesen schlicht nicht verstehe, ist der ganze Text sprachlich wirklich enorm verbesserungsfähig. &lt;br /&gt;
&lt;br /&gt;
Na gut, ich konzentriere mich mal auf die fachlichen Punkte:&lt;br /&gt;
&lt;br /&gt;
; 1. Security Controls&lt;br /&gt;
Werden mal mit &amp;quot;Schutzmechanismen&amp;quot;, mal mit &amp;quot;Sicherheitskomponenten&amp;quot; und dann wieder als &amp;quot;Sicherheitsfunktionen&amp;quot; bezeichnet. Hier macht eine einheitliche Benennung sicherlich Sinn und ist weniger verwirrend.&lt;br /&gt;
&lt;br /&gt;
; 2. &amp;quot;Eine Web-Anwendung ist in der Regel ein verteiltes, komplexes System bestehend aus unterschiedlichen Komponenten (z. B. Webserver, Applikationsserver, Hintergrundsysteme)&amp;quot;&lt;br /&gt;
&lt;br /&gt;
Eine Webanwendung besteht sicher nicht aus einem Webserver- oder anderer infrastruktureller Komponenten, sondern ist Software welches diese nutzt.&lt;br /&gt;
&lt;br /&gt;
; 3. &amp;quot;Bei individuell entwickelten Web-Anwendungen sind im Allgemeinen die Frameworks, Komponenten und Schnittstellen im Rahmen der Konzeption auszuwählen und deren Einbindung und Absicherung zu betrachten....Im Gegensatz dazu ist bei der Konzeption von Web-Anwendungen auf Basis von Standardsoftware insbesondere auf die Auswahl der Software und die Konfiguration der Teilkomponenten zu achten&amp;quot;&lt;br /&gt;
&lt;br /&gt;
Wir unterscheiden im Rahmen von Webanwendungen eigentlich Free or Opensource Software (FOSS bzw. FLOSS), Standardsoftware und Individualsoftware voneinander. Wir unterscheiden nicht Frameworks von Standardsoftware. Frameworks können Teil von Standardsoftware sein, wie etwa bei SharePoint, SAP, etc, oder aber FOSS, wie etwa Spring. Die ganzen Absätze machen für mich daher keinen Sinn.&lt;br /&gt;
&lt;br /&gt;
; 4. &amp;quot;Eine Sicherheitsfunktion (z. B. Authentisierung, Autorisierung) wird nicht an einer Stelle umgesetzt und verwendet, sondern ist mehrfach in der Web- Anwendung realisiert. Wird diese Sicherheitsfunktion an den verschiedenen Stellen unterschiedlich umgesetzt, führt dies zu einem uneinheitlichen Sicherheitsniveau.&amp;quot;&lt;br /&gt;
&lt;br /&gt;
Natürlich ist die mehrfache Verwendung bestimmter Security Controls, beispielsweise von Zugriffskontrollen (Complete-Mediation) oder Validierung (Robustheit) erstrebenswert. Was der Autor hier wahrscheinlich meinte, war die Notwendigkeit diese zu Kapseln bzw. zu Externalisieren. Das bezieht sich im übrigen nicht nur auf die Controls selbst, sondern auch auf ihre Parametrisierung (etwa. über Konfigdateien / XACML).&lt;br /&gt;
&lt;br /&gt;
Wichtiger wäre in diesem Zusammenhang zudem die fehlende Berücksichtigung bestimmter Security Controls.&lt;br /&gt;
&lt;br /&gt;
; 5. &amp;quot;Auswahl von Web-Anwendungen auf Basis von Standardsoftware&amp;quot;&lt;br /&gt;
Was will der Satz sagen? Ich wähle Standardsoftware aus, aber doch keine Webanwendungen. Oder heißt das, ich kaufe eine existierende Anwendung ein (Webanwendung!=Indivudualsoftware)? &lt;br /&gt;
&lt;br /&gt;
; 6. &amp;quot;Das ausgewählte Produkt verfügt nicht über die ausreichende Sicherheitsfunktionalität, ... Daher müssen die notwendigen Schutzmechanismen nachträglich hinzugefügt werden, wodurch zusätzliche Aufwände entstehen.&amp;quot;&lt;br /&gt;
Das ist etwas sehr positiv formuliert. Tatsächlich können fehlende Security Controls in zugekaufter Software (insb. Standardsoftware) in der Realität häufig gar nicht hinzugefügt werden oder nur perimetrisch (z.B. per WAF oder Access Gateway).&lt;br /&gt;
&lt;br /&gt;
; 7. &amp;quot;Die Hintergrundsysteme werden unzureichend abgesichert und dadurch ist die Datenbank der Web-Anwendung aus dem Internet erreichbar.&amp;quot;&lt;br /&gt;
Gehören fehlende Netzwerksegmentierung bzw. Firewallregeln wirklich in diesen Kontext? Das ist doch eigentlich Grundschutz der Infrastruktur, oder?&lt;br /&gt;
&lt;br /&gt;
; 8. &amp;quot;Aufgrund schwacher Parameter in der Konfiguration des Frameworks zum Session-Management werden unsichere SessionIDs erzeugt.&amp;quot;&lt;br /&gt;
Was sind &amp;quot;schwache&amp;quot; Parameter?&lt;br /&gt;
&lt;br /&gt;
Welches Framework erlaubt unsichere SessionIDs durch eine &amp;quot;schwache&amp;quot; Konfiguration zu erzeugen?&lt;br /&gt;
&lt;br /&gt;
; 9. &amp;quot;Wird die Konfiguration des Web-Browsers durch einen Angreifer manipuliert, können die clientseitig umgesetzten&amp;quot;&lt;br /&gt;
&lt;br /&gt;
Manipuliert ein Angreifer die Konfguration seines Webbroswers, wenn er einen MITM-Proxy konfiguriert?&lt;br /&gt;
&lt;br /&gt;
Wie bereits bei den &amp;quot;Goldenen Regeln&amp;quot; angemerkt, gilt auch hier, das manche Security Controls auch clientseitig umgesetzt werden dürfen (etwa. zur Verhinderung von Dom-Based XSS).&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== &amp;quot;G 5.WA10 Fehler in der Web-Anwendungslogik&amp;quot; (Dennis) ==&lt;br /&gt;
; 1. &amp;quot;Damit kann aufgrund der Prüfreihenfolge ein hoher Ressourcenverbrauch provoziert werden, der für Denial-of-Service-Angriffe ausgenutzt werden kann.&amp;quot;&lt;br /&gt;
Meiner Meinung nach passt in diesem Kontext die Attacke DoS nicht ganz. Falls die nachfolgende Funktionalität wegen der langen Ausführungszeit der Filterkomponente übersprungen wird bzw. ein Fehler auftritt würde dies meiner Ansicht in die Thematik Anwendungslogik passen. Eine DoS-Attacke kann hingegen anhand jeder Funktion durchgeführt werden.&lt;br /&gt;
&lt;br /&gt;
([[User:Mrohr|Matthias]]) Jo stimmt, aber ich stimme mit der Aussage eigentlich schon ueberein, auch wenn diese zugegeben etwas ungluecklich formuliert ist. Es geht hier ja darum, rechenintensive Pruefungen/Filterung moeglichst zu vermeiden bzw. zu reduzieren. Aus diesem Grund machen wir ja auch bei der AV-Pruefung zunaechst Blacklist-Checks und erst am Ende rechenintensive statistische oder verhaltensbezogene Pruefungen.&lt;br /&gt;
&lt;br /&gt;
== &amp;quot;G 5.WA11 Umgehung clientseitig umgesetzter Sicherheitsfunktionen von Web-Anwendungen&amp;quot; (Dennis) ==&lt;br /&gt;
; 1. &amp;quot;Ein Angreifer kann diese ausnutzen, um beispielsweise unbefugt Befehle an Hintergrundsysteme der Web-Anwendung zu übermittlen (z.B. in Form von Datenbankanfragen bei einer SQL-Injection).&amp;quot;&lt;br /&gt;
Umformulierung des Inhalts der Klammer. Hatte beim ersten Lesen für mich den Anschein, als ob ein Formular genutzt werden könnte welches den Nutzer aufforder eine SQLI einzugeben. Ich denke &amp;quot;Datenbankanfrage zwecks Ausführung einer SQL-Injection&amp;quot; würde besser passen.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== G 2.WA02 Mängel bei der Entwicklung und der Erweiterung von Web-Anwendungen (Matthias) ==&lt;br /&gt;
&lt;br /&gt;
Allgemein ist de obere Teil ok, die aufgezählten &amp;quot;Auswirkungen von fehlenden Vorgaben&amp;quot; verstehe ich jedoch nicht. Wo ist etwa der Bezug von Barrierefreiheit auf die Anwendungssicherheit?&lt;br /&gt;
&lt;br /&gt;
Mein Vorschlag, um diese Punkte etwa sinnvoll umzubauen:&lt;br /&gt;
* &amp;quot;Fehlendes Vorgehensmodell&amp;quot;: Bezug auf fehlende Berücksichtigung von Sicherheit im SDLC. Statt eines SDLCs selbst sollte hier besser auf die Notwendigkeit eines Secure Development Lifecycle (SDL) hingewiesen werden&lt;br /&gt;
* &amp;quot;Fehlende Programmierrichtlinien&amp;quot; =&amp;gt; Besser wäre hier &amp;quot;Fehlende Sicherheitsrichtlinien in der Programmierung&amp;quot; also &amp;quot;Secure Coding Guidelines&amp;quot;&lt;br /&gt;
* &amp;quot;Testfälle&amp;quot; =&amp;gt; &amp;quot;Sicherheitsrelevante Testfälle&amp;quot; (z.B. Security Unit Tests). &lt;br /&gt;
* &amp;quot;Barrierefreiheit&amp;quot;: Warum nicht an dieser Stelle die Auswirkungen von Sicherheitsfunktionen auf die Bedienbarkeit, etwa anhand von CAPTCHAS erläutern?&lt;br /&gt;
&lt;br /&gt;
== G 2.WA03 Unzureichender Schutz personenbezogener Daten bei Web-Anwendungen (Matthias) ==&lt;br /&gt;
&lt;br /&gt;
Der Titel dieses Bausteines heißt &amp;quot;Schutz personenbezogener Daten&amp;quot;, die genannten Beispiele beziehen sich bis auf den letzten jedoch auf die missbräuchliche (oder zumindest problematische) Nutzung aus Sicht des Datenschutzes. &lt;br /&gt;
&lt;br /&gt;
Die Punkt 1-3 sollten daher besser entfallen und z.B. durch die Folgenden ersetzt werden:&lt;br /&gt;
* Unsichere Einbindung von sozialen Netzwerken (Bezug nehmen auf den Like-Button bei Facebook)&lt;br /&gt;
* Unsichere Einbindung von Werbeinhalten&lt;br /&gt;
* Unsichere Übertragung und Caching&lt;br /&gt;
* Unsichere Protokollierung&lt;br /&gt;
* Ungenügender Zugriffsschutz&lt;br /&gt;
* Verstoß des Minimalprinzips bzw. der Zweckgebundenheit (welche Daten werden wirklich benötigt)&lt;br /&gt;
&lt;br /&gt;
Auch wäre es ggf. zumindest einen Verweis auf das BDSG zu machen.&lt;br /&gt;
&lt;br /&gt;
== G 4.33 Unzureichende oder fehlende Authentisierung (Matthias) ==&lt;br /&gt;
&lt;br /&gt;
; 1. Erster Absatz: &amp;quot;Wenn Authentisierungsmechanismen fehlen oder zu schlecht sind&amp;quot;&lt;br /&gt;
&lt;br /&gt;
&amp;quot;schlecht&amp;quot; sollte vlt besser durch &amp;quot;unzureichend&amp;quot; ersetzt werden.&lt;br /&gt;
&lt;br /&gt;
; 2. &amp;quot;Sicherheitslücken entstehen bei... der Benutzerauthentisierung&amp;quot;&lt;br /&gt;
&lt;br /&gt;
Hier findet nur ein Bezug auf &amp;quot;Passwörter&amp;quot; statt. Der Bezug auf die fehlerhaft implementierte oder dem Schutzbedarf ungenügende Schutzmechanismen (z.B. keine 2-Faktor-Authentisierung bei hochsensiblen Daten) fehlt. Auch auf das komplette fehlen von Authentisierungs-Controls wird hier nicht  eingegangen&lt;br /&gt;
&lt;br /&gt;
; 3. &amp;quot;Sicherheitslücken entstehen bei... der Komponentenauthentisierung&amp;quot;&lt;br /&gt;
&lt;br /&gt;
Wie bei 2., wird auch hier wieder nur auf Passwörter, nicht jedoch auf das fehlen von Controls selbst eingegangen. An dieser Stelle fehlt auch ein Hinweis auf die Notwendigkeit dedizierter Benutzeraccounts.&lt;br /&gt;
&lt;br /&gt;
; 4. &amp;quot;Sicherheitslücken entstehen bei... der Wahl des Verfahrens&amp;quot;&lt;br /&gt;
&lt;br /&gt;
Statt untauglich würde ich auch hier von &amp;quot;dem Schutzbedarf der Daten nicht angemessen&amp;quot; sprechen, eigentlich gehört das für mich aber in die obigen Punkte.&lt;br /&gt;
&lt;br /&gt;
; 5. Serverseitige Authentisierung fehlt&lt;br /&gt;
&lt;br /&gt;
Auch der Server (bzw. die Anwendung selbst) kann sich fehlerhaft oder ungenügend beim Benutzer authentsieren, etwa über DNS, SSL-Zertifikate, etc.&lt;br /&gt;
&lt;br /&gt;
== G 4.WA04 Unzureichende Validierung von Ein- und Ausgabedaten bei Web-Anwendungen (Matthias) ==&lt;br /&gt;
&lt;br /&gt;
; 1. &amp;quot;Unzureichende Validierung von Eingabedaten&amp;quot;&lt;br /&gt;
&lt;br /&gt;
Die genannten Beispiele sind genau keine korrekten Beispiele für diesen Fall, sondern betreffen die Ausgabevalidierung bzw. Enkodierung. Typische Fehler der Eingabevalidierung ist eine Manipulierbarkeit der Business Logik.&lt;br /&gt;
&lt;br /&gt;
; 2. &amp;quot;Unzureichende Validierung von Ausgabedaten&amp;quot;&lt;br /&gt;
&lt;br /&gt;
Hier geht es zentral um die Verhinderung von Interpreter Injection, also serverseitig (z.B. SQL oder LDAP Injection) oder clientseitig (XSS, JSON Injection, etc.). Statt &amp;quot;können die Ausgaben Schadcode&amp;quot; enthalten würde ich hier eher davon Sprechen, dass ein solcher Interpreteraufruf manipuliert werden kann (was dann z.B. zur Einschleusung von Schadcode genutzt werden kann).&lt;br /&gt;
&lt;br /&gt;
; 3. &amp;quot;Die Suchfunktion der Web-Anwendung verwendet die Eingaben der Benutzer ungefiltert&amp;quot;&lt;br /&gt;
&lt;br /&gt;
Mit ungenügender &amp;quot;Filterung&amp;quot; hat SQL Injection nichts zu tun,  eigentlich geht es hierbei darum, dass SQL-Anfragen dynamisch mit unvalidierten Eingebedaten zusammengebaut (konkateniert) werden.&lt;br /&gt;
&lt;br /&gt;
; 4. &amp;quot;Ungefilterter HTML-Code in Kommentar-Funktion&amp;quot;&lt;br /&gt;
&lt;br /&gt;
Hier fehlt der Bezug auf persistentes XSS, das hier sicherlich zentral ist.&lt;br /&gt;
&lt;br /&gt;
== G 4.WA05 Fehlende oder mangelhafte Fehlerbehandlung durch Web-Anwendungen (Tobias, Matthias) ==&lt;br /&gt;
; Abschnitt &amp;quot;Unsichere Fehlerbehandlung&amp;quot;&lt;br /&gt;
Die G adressiert &amp;quot;Unsichere Fehlerbehandlung&amp;quot;, der Abschnitt die &amp;quot;Unsichere Fehlerbehandlung in Sicherheitskomponenten&amp;quot;. Entsprechend sollte der fettgedruckte Teil angepasst werden.&lt;br /&gt;
&lt;br /&gt;
; &amp;quot;fehlende SQL-Parameter,&amp;quot;&lt;br /&gt;
Sollte besser &amp;quot;Fehlermeldungen bei ungültigen SQL-Abfragen&amp;quot; lauten.&lt;br /&gt;
&lt;br /&gt;
; &amp;quot;Auch scheinbar unkritische Informationen, wie die Meldung ob (..)&amp;quot;&lt;br /&gt;
Korrekt, allerdings nicht nachvollziehbar, wenn das Problem der Leser nicht schon bekannt ist. Daher erweitern nach &amp;quot; Rahmen von Brute-Force-Angriffen ausgenutzt werden.&amp;quot; mit &amp;quot;. Bei Brute-Force-Angriffen wäre in diesem Fall klar, dass der Benutzername gültig ist.&amp;quot;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[User:Mrohr|Matthias]]): Stimme dem Obigen auch zu, ausserdem:&lt;br /&gt;
&lt;br /&gt;
; Sprachlich: &amp;quot;kann dies unvorhersehbare Auswirkungen haben und den Betrieb der Web-Anwendung bis zur Unerreichbarkeit einschränken.&amp;quot;&lt;br /&gt;
&lt;br /&gt;
&amp;quot;Unerreichbarkeit&amp;quot; ist etas merkwuerdig ausgedrueckt, besser ware hier von der &amp;quot;Verfuegbarkeit&amp;quot; zu sprechen. Im Uebrigen fehlt vollstaendig der Bezug auf die Verfuegbarkeit als Primaeres Schutzziel der Informationssicherheit.&lt;br /&gt;
&lt;br /&gt;
; &amp;quot;Clientseitige Fehlerbehandlung&amp;quot;&lt;br /&gt;
Das stimmt soweit, das generelle Problem ist jedoch genereller, naehmlich die clientseitige Abbildung sicherheitsrelaventer Logik (in diesem Fall die Fehlerbehandlung)&lt;br /&gt;
&lt;br /&gt;
== G 4.WA06 Unzureichende Nachvollziehbarkeit von sicherheitsrelevanten Ereignissen bei Web-Anwendungen (Matthias) ==&lt;br /&gt;
&lt;br /&gt;
; 1. Erster Absatz: &amp;quot;Die Behebung einer Schwachstelle ist dann nicht oder nur unter erschwerten Bedingungen möglich.&amp;quot;&lt;br /&gt;
&lt;br /&gt;
Hier würde ich ergänzen: &amp;quot;...und Angriffe auf die Anwendungen können ggf. nicht erkannt oder nachvollzogen werden&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
; 2. &amp;quot;Beispiele&amp;quot;: Kommulierbarkeit&lt;br /&gt;
&lt;br /&gt;
Hier fehlt auch ein Bezug auf die Kommulierbarkeit von SIcherheitsereignissen, dass diese also auch von solchen anderer Systeme in Verbindung gesetzt werden können&lt;br /&gt;
&lt;br /&gt;
; 3. &amp;quot;Beispiele&amp;quot;: Gerichtsverwertbarkeit&lt;br /&gt;
&lt;br /&gt;
Auch die Möglichkeit zur Gerichtsverwertbarkeit (etwa durch eindeutigen Zeitstempel) und manipulationssicherer Speicherung, würde ich an dieser Stelle unbedingt erwähnen.&lt;br /&gt;
&lt;br /&gt;
== G 4.WA07 Offenlegung von Informationen bei Web-Anwendungen (Matthias) ==&lt;br /&gt;
&lt;br /&gt;
; 1. Titel&lt;br /&gt;
&lt;br /&gt;
Hier würde ggf. &amp;quot;Offenlegung vertraulicher Informationen&amp;quot; sicher besser passen als &amp;quot;Offenlegung von Informationen&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
; 2. Beispiellink&lt;br /&gt;
&lt;br /&gt;
Ein Beispiellink (mit und ohne Token) würde sicher die Verständlichkeit dieser Schwachstelle verbessern.&lt;br /&gt;
&lt;br /&gt;
; 3. Erster Absatz: &amp;quot;Wenn demzufolge Informationen unnötig offengelegt werden, steigt die Wahrscheinlichkeit eines erfolgreichen Angriffs.&amp;quot;&lt;br /&gt;
&lt;br /&gt;
Interne Informationen auszublenden ist eine Härtungsmaßnahme, deren Anzeige erhöht aber nicht zwangsläufig die Wahrscheinlichkeit eines erfolgreichen Angriffs. Ich würde diesen Satz weglassen.&lt;br /&gt;
&lt;br /&gt;
; 4. Fehlende Punkte&lt;br /&gt;
&lt;br /&gt;
* Ein Hinweis auf HTTP Header wäre hier sicher erwähnenswert.&lt;br /&gt;
* Weiterhin bzgl. der Anzeige von Traces und ein Verweis auf den Entsprechenden Baustein zur Fehlerbehandlung&lt;br /&gt;
&lt;br /&gt;
== G 5.WA14 Cross-Site Request Forgery (CSRF, XSRF) (Matthias) ==&lt;br /&gt;
&lt;br /&gt;
; 1. Erster Absatz: &amp;quot;Können Funktionen einer Web-Anwendung ohne weitere Überprüfung der Authentizität des HTTP-Requests (z.B. durch Tokens in versteckten Formularfeldern) genutzt werden&amp;quot;&lt;br /&gt;
&lt;br /&gt;
Statt &amp;quot;Funktionen&amp;quot; würde ich besser von &amp;quot;schreibenden Aktionen&amp;quot; sprechen, dann macht der Satz mehr Sinn.&lt;br /&gt;
&lt;br /&gt;
; 2. Dritter Absatz: &amp;quot;Im Gegensatz zu XSS (siehe ...￼ ) ist das Angriffsziel nicht die Information auf dem Client (z. B. in Cookies),&amp;quot;&lt;br /&gt;
&lt;br /&gt;
Dieser (Halb-)Satz macht keinen Sinn, auch weil es bei XSS nicht nur im Informationen auf dem Cient geht. Vorschlag: &amp;quot;ist das Angriffsziel nicht die Ausführung von Skriptcode, sondern von unbefugten, schreibenden Aktionen im Kontext des angemeldeten Benutzers.&amp;quot;&lt;br /&gt;
&lt;br /&gt;
; 3. Session Riding&lt;br /&gt;
&lt;br /&gt;
Session Riding ist quasi nur ein anderer Begriff für CSRF. Die einzige Form von CSRF die mir bekannt ist, sind Angriffe mit Standard-Passwörtern auf HTTP-Basic-Auth geschützten Ressourcen.&lt;br /&gt;
&lt;br /&gt;
Im Grunde ist Session Riding aber nur ein Synonym für CSRF. Der Absatz ist daher auch nur eine Wiederholung der obigen Beschreibung.&lt;br /&gt;
&lt;br /&gt;
; 4. Zum Beispiel: &amp;quot;Durch einen präparierten Link auf einer Webseite wird die Änderung des Zugangspasswortes des Routers eingeleitet.&amp;quot;&lt;br /&gt;
&lt;br /&gt;
Etwas ungüngstig ausgedrückt. Besser wäre: &amp;quot;wird eine Anfrage zur Änderung des Zugangspasswortes an den Router gesendet. Hierbei sendet der Browser automatisch den Session Cookie mit, worüber die Webanwendung die Authentizität der Anfrage verifiziert und die Änderung durchführt.&amp;quot;&lt;br /&gt;
&lt;br /&gt;
== G 5.WA18 Clickjacking (Matthias) ==&lt;br /&gt;
&lt;br /&gt;
Hier stellt sich mir nur die allgemeine Frage, ob Clickjacking, bzw. der Schutz davor tatsächlich einem Grundschutz zuzurechnen ist. Persönlich würde ich dies nicht tun.&lt;br /&gt;
&lt;br /&gt;
== M 2.WA02 Dokumentation der Architektur von Web-Anwendungen (Matthias) ==&lt;br /&gt;
&lt;br /&gt;
; Verantwortlich für die Umsetzung&lt;br /&gt;
Hier wäre auch die Nennung des &amp;quot;Architekten&amp;quot; sinnvoll&lt;br /&gt;
 &lt;br /&gt;
; Fehlende Bestandteile der Dokumentation:&lt;br /&gt;
* Schutzbedarf des Systems sowie der verarbeiteten Daten&lt;br /&gt;
* Schützenswerte Daten und Funktionen (Assets)&lt;br /&gt;
* Betriebliche Anforderungen an die Sicherheit bzw. eingesetzte Plattform&lt;br /&gt;
* Dokumentierte Konfigurationseinstellungen &lt;br /&gt;
* BIA (RTO, RPO)&lt;br /&gt;
* Schnittstellen&lt;br /&gt;
* Trust Boundaries&lt;br /&gt;
* Akteure (bzw. Trust Level)&lt;br /&gt;
* Sicherheitsannahmen&lt;br /&gt;
* Geltende Compliance-Anforderungen (BDSG, PCI DSS, etc.)&lt;br /&gt;
&lt;br /&gt;
; Benutzermanagement&lt;br /&gt;
&lt;br /&gt;
Wenn damit das Identity Management gemeint ist, gehört das Dokumentiert, ist aber keine Sicherheitsfunktion. Oder ist hiermit das Rollen- und Berechtigungskonzept gemeint? Grenzt sich aus meiner Sicht schwer mit dem Thema Authentisierung ab. &lt;br /&gt;
&lt;br /&gt;
; Prüffragen&lt;br /&gt;
&lt;br /&gt;
Hier fehlt etwas in Bezug auf Sicherheitsanforderungen. Beispiel: &amp;quot;Werden Sicherheitsanforderungen an den Betrieb während der Entwicklung abgestimmt und dokumentiert&amp;quot;&lt;br /&gt;
&lt;br /&gt;
== M 2.WA12 Entwicklung und Erweiterung von Anwendungen (Markus) ==&lt;br /&gt;
; &amp;quot;Es sollte darauf geachtet werden, dass Sicherheitsanforderungen&lt;br /&gt;
vollständig durch Sicherheitsmechanismen erfüllt und zur Erstellung von&lt;br /&gt;
Testfällen festgehalten werden.&amp;quot; --&amp;gt; Bessere Formulierung würde aussagen, dass die Sicherheitsanforderungen durch Testfälle verifiziert werden.&lt;br /&gt;
&amp;quot;(z. B. durch Kommentare im&lt;br /&gt;
Quelltext). Somit ist der Quelltext zu einem&amp;quot; --&amp;gt; Das ist kein empfehlenswerter Programmierstiel! Raus mit diesem Kommentar&lt;br /&gt;
;&amp;quot;Zum Schutz vor dem Verlust bereits entwickelter und verworfener&lt;br /&gt;
Lösungen sowie zu Dokumentationszwecken sollte die Historie der&lt;br /&gt;
Änderungen festgehalten werden (z. B. durch ein Revisionssystem).&amp;quot; --&amp;gt; Auch diesen Absatz können wir streichen - Kein professioneller Programmierer arbeitet ohne Versionierugssystem.&lt;br /&gt;
;&amp;quot;Bei Web-Anwendung sollten die Webseiten auf Konformität zu dem&lt;br /&gt;
verwendeten Standard (z. B. HTML-Standard) getestet werden. Dadurch&lt;br /&gt;
können unvorgesehene Seiteneffekte aufgrund einer Fehlinterpretation&lt;br /&gt;
seitens der Browser vermieden werden.&amp;quot; --&amp;gt; Könnte man noch um &amp;quot;Die Software ist in möglichst vielen Browsern zu testen&amp;quot; erweitern.&lt;br /&gt;
;Generell geht der Autor leider nicht auf die Rollen &amp;amp; Rechte Verteilung ein. Mir fehlt der Hinweis, das es eine personelle Trennung zwischen Entwicklung, Test und Betrieb geben muss.&lt;br /&gt;
;Zum Thema Wartung / Betrieb --&amp;gt; Hier wird keine Aussage getroffen bezüglich Log_Files. Dieses Thema kann kritische Auswirkungen haben, Bsp.: logging ganzer HTTP-Requests im LogLevel=Debug.&lt;br /&gt;
; &amp;quot;Produktspezifische Sicherheitsfunkionalität&amp;quot; - Dieser Absatz ist gefährlich - der Angreifer ist nicht zur Verwendung dies Zielbrowsers gezwungen. Deshalb können Browser-spez. Sicherheitsfunktionen nur als Add-ON gewertet werden.&lt;br /&gt;
; &amp;quot;Festlegung der Entwicklungsumgebung&amp;quot; - Dieser Absatz geht nicht auf die zu verwendenden Testdaten ein. Der Hinweis, dass Live-Daten / Kundendaten nichts in Test- &amp;amp; Entwicklungsumgebungen zu suchen haben fehlt!!!&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== M 2.WA24 Web-Tracking (Matthias) ==&lt;br /&gt;
&lt;br /&gt;
; Letzter Absatz: &amp;quot;Falls eine Auswertung von Nutzerdaten, insbesondere personenbezogener Daten, .. &amp;quot;&lt;br /&gt;
&lt;br /&gt;
Hier sollte denke ich besser von personenbeziehbaren Daten gesprochen Werten. Dies betrifft etwa die Zuordnung von Surfverhalten zu einer bestimmten Person. Dies sollte stets nach den Prinzipien Datensparsamkeit und Datenvermeidung, Erforderlichkeit, sowie Zweckbindung erfolgen. Ist Webtracking nicht personenbeziehbar ist dies kein Thema für den Datenschutz.&lt;br /&gt;
&lt;br /&gt;
== M 4.WA04 Authentisierung bei Web- Anwendungen (Matthias) ==&lt;br /&gt;
&lt;br /&gt;
: Verantwortlich fuer Umsetzung &lt;br /&gt;
sollte in erster Linie beim Architekturen und in zweiter beim Entwickler liegen&lt;br /&gt;
; Vermischung von Authentisierung und Session Management &lt;br /&gt;
&lt;br /&gt;
Bei diesem Baustein findet eine ziemlich große Vermischung von Anforderung an die Authentisierung und das erst in &amp;quot;M 4.WA06 Session-Management bei Web- Anwendungen&amp;quot; behandelte Session Management statt (Beispiel: &amp;quot;Remember-Me-Funktion&amp;quot;). Beide Themen sollten sinnvollerweise getrennt voneinander zu betrachten und aufeinander zu beziehen.&lt;br /&gt;
&lt;br /&gt;
; Verwendung von Frameworks&lt;br /&gt;
&lt;br /&gt;
Die Anforderung ist schon ein wenig eingeschränkt. Besser passt hier denke ich die &amp;quot;Abbildung der Authentisierung über Standardkomponenten (Bibliotheken oder Frameworks)&amp;quot;. &lt;br /&gt;
&lt;br /&gt;
; Remember-Me-Funktion&lt;br /&gt;
&lt;br /&gt;
Siehe oben, gehört zum Session Management. Das ließt sich im übrigen so, als ob eine Webanwendung Credentials auf dem Client abhängt. &lt;br /&gt;
&lt;br /&gt;
; Grenzwerte für gescheiterte Anmeldeversuche&lt;br /&gt;
&lt;br /&gt;
Diese Empfehlung ist allgemein falsch, da sie sehr von der betrachteten Anwendung abhängt. Besser wäre hier allgemein von Mechanismen zur Verhinderung von automatisierten Angriffen zu sprechen (Anti-Automatisierung). &lt;br /&gt;
&lt;br /&gt;
Etwa umsetzbar durch&lt;br /&gt;
* Sperrung nach x Anmeldeversuchen&lt;br /&gt;
* Throttling&lt;br /&gt;
* Captchas&lt;br /&gt;
* Sicherheitsfragen&lt;br /&gt;
&lt;br /&gt;
Das allgemeine Sperren kann leicht für das gezielte Aussperren von Benutzern (User Lockout) verwendet werden. Was etwa bei Trading-Anwendungen nicht funktioniert.&lt;br /&gt;
&lt;br /&gt;
; Automatisiertes Zurücksetzen von Authentisierungsdaten&lt;br /&gt;
&lt;br /&gt;
Würde ich besser als &amp;quot;Passwort-Reset&amp;quot; bezeichnen.&lt;br /&gt;
&lt;br /&gt;
Weiterhin fehlt hier der Hinweis, dass statt ein automatisiertes Zurücksetzen, ein Mechanismus zu empfehlen ist, bei dem über ein hinterlegtes Sicherheitsmerkmal (Handy-Nummer oder E-Mail-Adresse) vom Benutzer zunächst eine Verifikation durchgeführt wird. Beispielsweise durch einen erhaltenen Link. Erst dann darf eine Änderung des Passwortes durch den Benutzer erfolgen.&lt;br /&gt;
&lt;br /&gt;
; Registrierung nicht behandelt&lt;br /&gt;
&lt;br /&gt;
Es existiert hier kein Punkt, der die sichere Implementierung von Benutzerregistrierungen behandelt.&lt;br /&gt;
&lt;br /&gt;
; Verweis auf Externalisierung fehlt.&lt;br /&gt;
&lt;br /&gt;
Statt die Authentisierung selbst durchzuführen kann eine Anwendung hierzu auf eine externe Komponente (Beispiel: SiteMinder oder Kerberos) zurückgreifen.&lt;br /&gt;
&lt;br /&gt;
; Verweis auf Behandlung von Credentials fehlt&lt;br /&gt;
&lt;br /&gt;
Auch wenn das  in &amp;quot;M 4.WA15 Schutz vertraulicher Daten bei Web- Anwendungen&amp;quot; ausführlich behandelt wird, sollte in diesem Baustein bereits auf den angemessenen Schutz von Authentisierungsdaten bei Übertragung und Speicherung hingewiesen werden.&lt;br /&gt;
&lt;br /&gt;
== M 4.WA05Umfassende Ein- und Ausgabevalidierung bei Web-Anwedungen (Markus) ==&lt;br /&gt;
; &amp;quot;Ablehnung der Daten im&lt;br /&gt;
Fehlerfall&amp;quot; --&amp;gt; Hier könnte man noch auf Tar-Pits eingehen - nur ein Vorschlag.&lt;br /&gt;
&lt;br /&gt;
== M 4.WA06Session-Management bei Web-Anwendungen (Markus, Matthias) ==&lt;br /&gt;
; &amp;quot;Übertragung der SessionID mittels GETRequest&amp;quot; --&amp;gt; Hier fehlt der Hinweis, dass die Lebensdauer dieser SessionIds kurz/kürzer sein muss, als im Falle der Speicherung im Cookie.&lt;br /&gt;
&lt;br /&gt;
([[User:Mrohr|Matthias]]) Die Anmerkung verstehe ich ehrlich gesagt ueberhaupt nicht, zumal das SM haeufig transparent zwischen Cookies und URL Rewriting wechselt. Wozu soll das gut sein? Wie soll das geschehen? Idealerweise sollte die Session ID niemals in die URL geschrieben werden, das sollte eigentlich genuegen.&lt;br /&gt;
&lt;br /&gt;
; &amp;quot;Verschlüsselte Übertragung von SessionIDs&amp;quot; --&amp;gt; Hier fehlt der Hinweis auf den Beast-Exploit. TLS Version &amp;gt; 1.0 verwenden!&lt;br /&gt;
&lt;br /&gt;
([[User:Mrohr|Matthias]]) Solange hier nicht auf eine explizite TLS Version eingegangen wird, sollte meiner grossen Ueberzeugung nach hier auch auf keine Exploits etc. eingagen werden, das gehoert an andere Stelle.&lt;br /&gt;
&lt;br /&gt;
; ([[User:Mrohr|Matthias]]) Weiterhin:&lt;br /&gt;
&lt;br /&gt;
 Es dürfen keine extern bekannten oder erratbaren Daten (z. B. IP-Adresse, Uhrzeit) in die Berechnung der SessionID einfließen.&lt;br /&gt;
&lt;br /&gt;
Die Aussage finde ich etwas problematisch, wichtiger ist, dass die Entropie ausreichend hoch ist. Haeufig werden etwa IPs von Load Balancern in die Session ID hineingeschrieben.&lt;br /&gt;
&lt;br /&gt;
 - Domain (z. B. webapp.domain.tld),&lt;br /&gt;
 - Path (z. B. /webapp/),&lt;br /&gt;
 - Secure und&lt;br /&gt;
 - HttpOnly.Beschränkte Sitzungsdauer&lt;br /&gt;
&lt;br /&gt;
Das sieht so aus, als ob es empfehlenswert ist, das Domain-Tag zu verwenden, das ist es sicherlich nicht. Was macht hier der Hinweis &amp;quot;Beschraenke Sizuungsdauer&amp;quot;?&lt;br /&gt;
&lt;br /&gt;
== M 4.WA07Fehlerbehandlung durch Web-Anwendungen (Markus, Matthias) ==&lt;br /&gt;
; Konsistenter / Inkonsistener Zustand einer Webanwendung und der daraus resultierende Datenverlust: Hier fehlen mir die Punkte: DOS, Priv.Escalation, CodeExecution.&lt;br /&gt;
([[User:Mrohr|Matthias]]) Vorschlag &amp;quot;und somit der Schutz der Daten&amp;quot; aendern in &amp;quot;und somit ETWA der Schutz der Daten&amp;quot; korrigieren&lt;br /&gt;
&lt;br /&gt;
; Vermeidung vertraulicher Informationen in Fehlermeldungen --&amp;gt; Fehlermeldungen sollten ebenfalls eine Systeminformationen preisgeben (Softwareversion, Patchlevel, etc.)&lt;br /&gt;
([[User:Mrohr|Matthias]]) Ich glaube hier ist es wichtig zu unterscheiden, wo die Fehlermeldung ausgegeben bzw. wem diese angezeigt wird. Das wird in diesem Modul garnicht so recht unterscheiden. Der Autor meint glaube ich, wie Fehlermeldungen durch die Webanwendung angezeigt werden. In dem Fall hat er recht. Du meinst glaube ich eher, wie Fehlermeldungen protokolliert werden. In dem Fall hast du natuerlich auch recht. Das in dem Text verwendete Wort &amp;quot;ausgeben&amp;quot; ist nicht unbedingt eindeutig und sollte genauer spezifiziert werden.&lt;br /&gt;
&lt;br /&gt;
; Abbruch des Vorgangs nach Auftreten eines Fehlers --&amp;gt; TarPits scheinen dem Autor umbekannt zu sein :)&lt;br /&gt;
([[User:Mrohr|Matthias]]) Stimmt, wobei sich diese ja auch nur auf einen sehr bestimmten Fehlertypen beziehen. Generell laesst sich so etwas unterscheiden, wenn man Fehler-Domains erstellt. Beispiel: Technisch-Unerwartet = Abbruch, Technisch-Erwartet = Fehlermeldug/Tear Pit, etc.&lt;br /&gt;
&lt;br /&gt;
; &amp;quot;Werden Fehler möglichst von der gleichen Komponente behandelt, in der&lt;br /&gt;
der Fehler aufgetreten ist?&amp;quot; --&amp;gt; Das &amp;quot;möglichst&amp;quot; sollten wir streichen.&lt;br /&gt;
([[User:Mrohr|Matthias]]) Hm, der Aussage kann ich nicht ganz zustimmen, bzw. es haengt von dem Begriff &amp;quot;Komponente&amp;quot; ab. Eine Anwendungskomponente kann serwohl bewusst bestimmte Exceptions werfen, die von der einbindenden Komponente behandelt werden muessen.&lt;br /&gt;
&lt;br /&gt;
== M 4.WA08Schutz vor automatisierter Nutzung von Web-Anwendungen (Markus, Matthias) ==&lt;br /&gt;
; &amp;quot;Brute-Force-&lt;br /&gt;
Angriffe (z. B. Erraten von Zugangsdaten) und Enumeration-Angriffe (z. B.&lt;br /&gt;
automatisiertes Ermitteln von gültigen Login-Namen)&amp;quot; -- die Beispiele sind identisch - besser Beispiele suchen, z.b. URL-Enumeration&lt;br /&gt;
&lt;br /&gt;
([[User:Mrohr|Matthias]]) Das sehe ich anders. Brute-Forcing bezieht auf Passwoerter und Enumeration auf Benutzernamen, etwa durchs hochzaehlen. Auch wenn ich zustimmen muss, dass die nicht ganz gluecklich gewaehlt wurden. Stann &amp;quot;Erraten von Zugangsdaten&amp;quot; wuerde ich besser von &amp;quot;Erraten von Passwoertern&amp;quot; sprechen. Oder wie gesagt gleich auch auf andere Beispiele (etwa Object ID Enumeration) beziehen.&lt;br /&gt;
&lt;br /&gt;
== M 4.WA11Sichere Konfiguration von Web-Anwendungen (Markus, Matthias) ==&lt;br /&gt;
; &amp;quot;Sicherer Umgang mit TLS/SSL&amp;quot; -- Hier fehlt der Hinweis, dass TLS-1.0 gebrochen ist&lt;br /&gt;
; &amp;quot;Zeichenkodierungskonfiguration&amp;quot; -- Ein Whitelisting abhängig von der Encodierung wäre ein weiterer Vorschlag&lt;br /&gt;
; &amp;quot;Restriktive Dateisystemberechtigungen&amp;quot; -- auch wenn es ein klassiker ist - der AS sollte ebenfalls mit von einem eingeschränkten Nutzer gestartet werden und nicht als root&lt;br /&gt;
; Administration Consolen:zur Ergänzen: Wenn diese nicht benötigit, sollten derartige Applikationen nicht deployed werden, unabhängig von möglichen Zugangsbeschränkungen.&lt;br /&gt;
&lt;br /&gt;
([[User:Mrohr|Matthias]]) Sorry, meiner Meinung nach hat die Bewertung von Kryptoverfahren hier abslut nichts zu suchen.Stattdessen sollte hier auf den entsprechenden [https://www.bsi.bund.de/ContentBSI/Publikationen/TechnischeRichtlinien/tr02102/index_htm.html Empfehlung des BSI] verwiesen werden, auch wenn dieses Dokument derzeit noch etwas outdated zu sein scheint.&lt;br /&gt;
&lt;br /&gt;
== M 4.WA13Kontrolliertes Einbinden von Daten und Inhalten bei Web-Anwendungen (Markus) ==&lt;br /&gt;
; Datei-Upload: Bei einem Upload werden Dateien durchaus in TEMP-Verzeichnissen gesammelt und danach weiterverarbeitet. Diese TEMP-Verzeichnisse sind im Rahmen einer Sicherheitsanalyse zu betrachten -&amp;gt; Möglicher (unbefugter) Zugriff auf weitere Uploads&lt;br /&gt;
; Upload komprimierter Dateien / großer Dateien birgt die Gefahr von DOS Angriffen&lt;br /&gt;
; Upload von Dateien kann bei weiterem Parsing zu Speicherengpässen führen --&amp;gt; DOS-Angriffe auf Thread-Local etc.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== M 4.WA14Restriktive Herausgabe sicherheitsrelevanter Informationen bei Web-Anwendungen (Markus, Matthias) ==&lt;br /&gt;
OK - Keine Anmerkungen von mir.&lt;br /&gt;
&lt;br /&gt;
([[User:Mrohr|Matthias]]) Von mir schon;)&lt;br /&gt;
&lt;br /&gt;
; ([[User:Mrohr|Matthias]]) Vermeidung von Kommentaren in ausgelieferten Webseiten&lt;br /&gt;
&lt;br /&gt;
Das ist leider total falsch, wir brauchen haeufig Komentare, aus Kompatibilitaetsgruenden. So wird etwa der JavaScript-Block haeufig auskommentiert.&lt;br /&gt;
&lt;br /&gt;
Wurde stattessen besser von sicherheitsrelevanten Kommentaren sprechen und als Massnahme generell Entwicklerkommentare ueber Sprachkonstruktre (etwa JSP) durchzufuehren.&lt;br /&gt;
&lt;br /&gt;
; ([[User:Mrohr|Matthias]]) Löschen nicht benötigter Dateien&lt;br /&gt;
&lt;br /&gt;
Hier wurde ich ggf. Dateien von Versionisierungstools (etwa Subversion) erwaehnen, das sehen wir schon recht haeufig.&lt;br /&gt;
&lt;br /&gt;
Statt Dateien einfach nur zu loeschen (was in der Praxis haeufig nicht so einfach ist) bietet es sich zudem an, den Zugriff auf bestimmte Dateien oder Dateitypen generell zu sperren, etwa mittels ACL im Apache.&lt;br /&gt;
&lt;br /&gt;
; ([[User:Mrohr|Matthias]]) Gibt die Web-Anwendung ausschließlich neutrale Fehlermeldungen aus und sind diese im Quelltext identisch? {E: C}&lt;br /&gt;
&lt;br /&gt;
Persoenlich verstehe ich das nicht. Wieseo neutrale Fehlermeldung? Das macht fuer mich nur beim Login Sin. Hierzu existiert in dem Text auch keinerlei Bezug. Ich wuerde das daher besser entfernen und im Rahmen der Fehlerbehandlung diskutieren. Mindestens sollte hier jedoch besser von &amp;quot;sicherheitsunbedentlichen Fehlermeldungen&amp;quot; oder so gesprochen werden.&lt;br /&gt;
&lt;br /&gt;
; ([[User:Mrohr|Matthias]]) Wird der Referrer bei Verlassen der Web-Anwendung (z. B. durch einen Link auf eine externe Seite) gefiltert?&lt;br /&gt;
&lt;br /&gt;
Diesen Punkt sehe ich als sehr Fallabhengig an. Es kann fuer seiten durchaus wuenschenswert sein, dass der Referer weitergegeben wird. Der Referer sollte natuerlich keine sensiblen Informationen enthalten, was ja an anderer Stelle (etwa Session Management) vorgegeben wird bzw. gegeben werden sollte.&lt;br /&gt;
&lt;br /&gt;
== M 4.WA15Schutz vertraulicher Daten bei Web-Anwendungen (Markus, Matthias) ==&lt;br /&gt;
; Sichere kryptographische Algorithmen:&lt;br /&gt;
 Hier fehlt mir eine Liste der aktuelle als sicher geltenden Verfahren.&lt;br /&gt;
([[User:Mrohr|Matthias]]) Am Besten Referenz auf [https://www.bsi.bund.de/ContentBSI/Publikationen/TechnischeRichtlinien/tr02102/index_htm.html https://www.bsi.bund.de/ContentBSI/Publikationen/TechnischeRichtlinien/tr02102/index_htm.html]&lt;br /&gt;
&lt;br /&gt;
; Schlüssel&lt;br /&gt;
 Das die Schlüssel bestimmten Formaten entsprechen müssen ist ok - aber das Schlüsselmanagement wird gar nicht besprochen?&lt;br /&gt;
; Schutz der Daten im Browsercache&lt;br /&gt;
 Skripte und Browserplugins können ebenfalls auf den Browsercache zugreifen - diese werden hier nicht erwähnt.&lt;br /&gt;
&lt;br /&gt;
([[User:Mrohr|Matthias]]) Weiterhin entsprechen die vorgeschlagenen HTTP Headern nicht dem Best Practice:&lt;br /&gt;
&lt;br /&gt;
 Cache-control: no-cache, no-store&lt;br /&gt;
 Pragma: no-cache&lt;br /&gt;
 Expires: -1&lt;br /&gt;
&lt;br /&gt;
([[User:Mrohr|Matthias]]) Die Empfehlung hinsichtlich des manuellen Leerens des Browsercaches sollte wenn dann nur bei Anwendungen mit sehr hohem Schutzbedarf in Erwaegung gezogen werden. Wichtiger waere da schon eher die richtigen Cache-Header zu verwenden. Solche Empfehlungen ihm Rahmen des Grundschutzes aber wirklich nichts zu suchen. &lt;br /&gt;
&lt;br /&gt;
; Maskierung von Passwörtern &lt;br /&gt;
 Dies schützt bei der Eingabe nur vor ShoulderSurfing nicht vor Skripten oder Plugins die diese an andere Server posten.&lt;br /&gt;
&lt;br /&gt;
([[User:Mrohr|Matthias]]) Das ist voellig korrekt. Aber inwieweit ist die Aussage Passwort-Felder zu verwenden fehlerhaft bzw. hier unzureichend beschrieben?&lt;br /&gt;
&lt;br /&gt;
; Sicherung von Zugangsdaten:&lt;br /&gt;
 Zugangsdaten in einer Datei abzulegen - wenn auch ausserhalb des WebRoots ist keine gute Idee.&lt;br /&gt;
([[User:Mrohr|Matthias]]) Es ist sicher nicht die schoenste Variante, es laesst sich aber nunmal in vielen Faellen nicht vermeiden. Deshalb fordert der [http://code.google.com/p/owasp-asvs/wiki/Verification_V2 ASVS] hier etwa auch nicht mehr. Fuer den hier angestreben Grundschutz sollte das meiner Meinung nach ausreichen.&lt;br /&gt;
; Schutz von Quelltexten:&lt;br /&gt;
 Hier würde ich property files mit aufnehmen. der hinweis auf web-inf/classes fehlt - warum?&lt;br /&gt;
 Bei include-befehlen sind die pfadangaben zu überdenken.&lt;br /&gt;
([[User:Mrohr|Matthias]]) Wuerde property Dateien allgemein den Konfigurationsdateien zuordnen. Der Begriff &amp;quot;Einzubindende Dateien&amp;quot; ist mir allrdings Neu&lt;br /&gt;
&lt;br /&gt;
([[User:Mrohr|Matthias]]) Weiterhin, fehlt ein genereller Bezug auf HTML 5 WebStorage, LSOs etc. Zumindest in abstrakter Form, so dass diese dadurch indirekt addresiert werden. Egal, in dem relevanten Punkt will der Autor meiner Meinung nach nur einige Beispiele nennen, das sollte keinen Anspruch auf Vollsteandigkeit haben muessen.&lt;br /&gt;
&lt;br /&gt;
; ([[User:Mrohr|Matthias]]) - Durch dieses Attribut wird die Gültigkeit des Cookies auf die Domäne der Web-Anwendung beschränkt.&lt;br /&gt;
Nein, das ist leider total falsch. Das Domain-Attribut stellt eine Aufweichung der Cookie-Gueltigkeit dar und nicht anders herum. Gewoehlich sind Cookies immer Host-Cockies und das sollte auch so bleiben. Die Empfehlung sollte entfernt werden.&lt;br /&gt;
&lt;br /&gt;
== M 4.WA16Zugriffskontrolle bei Web-Anwendungen (Markus) ==&lt;br /&gt;
; Zugriffskontrolle via Frameworks:&lt;br /&gt;
 Dieser Punkt (Frameworks) wird nur in einem Satz erwähnt. Es werden keine Bespiele gegeben - Das ist zu wenig.&lt;br /&gt;
 Es müssen alle Zugriffe geschützt werden. Eine Protokollierung aller Zugriffe mit den nötigen Informationen ist ebenfalls empfehlenswert.&lt;br /&gt;
; Datei Upload:&lt;br /&gt;
 Die Gefahr eines DOS wird hier nicht erwähnt.&lt;br /&gt;
&lt;br /&gt;
== M 4.WA19Verhinderung von Cross-Site Request Forgery (CSRF, XSRF) (Markus, Matthias) ==&lt;br /&gt;
; Verantwortliche: &lt;br /&gt;
 Entwickler und Admins!&lt;br /&gt;
([[User:Mrohr|Matthias]]) Korrekt, wobei auch in der Reihenfolge&lt;br /&gt;
&lt;br /&gt;
; Anti-CSRF-Token in hidden fields:&lt;br /&gt;
 Das ist keine gute Idee. Ich würde das streichen!&lt;br /&gt;
&lt;br /&gt;
([[User:Mrohr|Matthias]]) Watt? Anti-CSRF-Tokens in Hidden Fields sind die Standard-Massnahme. Wie denn sonst? Bitte nicht streichen!!! &lt;br /&gt;
&lt;br /&gt;
([[User:Mrohr|Matthias]]) Die Technik bei der die Session ID als Anti-CSRF-Token verwendet wird, wird als Double-Cookie Submit bezeichnet, das sollte hier referenziert werden.&lt;br /&gt;
&lt;br /&gt;
; Umgehung von Schutzmechanismen:&lt;br /&gt;
 Man in the middle hat keinen direkten Bezug zu CSRF! Das würde ich streichen.&lt;br /&gt;
([[User:Mrohr|Matthias]]) Der Hinweis ist korrekt. Wovon der Autor hier spricht ist Session Replay nicht CSRF.&lt;br /&gt;
&lt;br /&gt;
; Frameworks:&lt;br /&gt;
 Gute Idee - aber es gibt auch Features in den ApplicationServern die CSRF unterbinden - warum wird das nicht besprochen?&lt;br /&gt;
&lt;br /&gt;
([[User:Mrohr|Matthias]]) Sehe ich persoenlich nicht so, da CSRF primaer ein Applikations-Fehler ist, und auch in der Applikation und nicht im Environment (AppServer) geloest werden sollte. Auch wenn das manchmal ggf. die einzig machbare Loesung darstellt.&lt;br /&gt;
&lt;br /&gt;
([[User:Mrohr|Matthias]]) Was generell fehlt, ist ein Hinweis darauf, dass schreibende Requests generell per HTTP Post abgewickelt werden sollten, da HTTP Get keine &amp;quot;Safe Method&amp;quot;  (siehe HTTP 1.1, RFC 2616) ist.&lt;br /&gt;
&lt;br /&gt;
== M 4.WA20Sicherer Entwurf der Logik von Web-Anwendungen (Markus, Matthias) ==&lt;br /&gt;
; Rollbacks:&lt;br /&gt;
 Tritt ein Fehler auf muss die Applikation einen konsistenten Datenstand zurück lassen. Das wird hier nicht erwähnt.&lt;br /&gt;
; RaceConditions:&lt;br /&gt;
 Fehler in der Geschäftslogik können auch durch zwei gleichzeitige Sessions auf einer Webapplikation auftreten - das wird hier nicht besprochen.&lt;br /&gt;
&lt;br /&gt;
([[User:Mrohr|Matthias]]) Ehrlich gesagt kann ich nicht ganz nachvollziehen, was der Sichere Entwurf der Logik von Web-Anwendungen mit dem Verzicht auf aktive Inhalte zu tun hat. Unabhaengig davon sollte man solche unsinnigen Aussagen im Jahre 2012 nicht mehr treffen, damit macht man sicht nur laecherlich.&lt;br /&gt;
&lt;br /&gt;
Nichts desto trotz, was hier als &amp;quot;echte&amp;quot; Massnahmen erwaehnt werden sollte sind:&lt;br /&gt;
* Verhinderung von Race Conditions, aber nicht nur durch Concurrent Sessions sondern auch durch Singletons (TOCTOU)&lt;br /&gt;
* Enforcements von Workflows, etwa durch die Verwendung von State Machines oder Request Tokens (auch bekannt als Site Usage Enforcement)&lt;br /&gt;
* Fail Securely (bzw. Verweis)&lt;br /&gt;
* Serverseitige Abbildung der Anwendungslogik, zumindest wenn diese sicherheitsrelevant sit&lt;br /&gt;
&lt;br /&gt;
== M 4.WA22Verhinderung der Blockade von Ressourcen (DoS) bei Web-Anwendungen (Markus, Matthias) ==&lt;br /&gt;
; Datenspeicher:&lt;br /&gt;
 Neben dem Datenspeicher sollte auch der RAM-Verbrauch pro Thread der Applikation limitiert werden.&lt;br /&gt;
([[User:Mrohr|Matthias]]) Stimmt, ich wuerde hier sogar allgemein von Ressourcenverbrauch am Beispiel RAM und Datenspeicher, sprechen&lt;br /&gt;
&lt;br /&gt;
; Voraggregation von Daten / Caching&lt;br /&gt;
 Dieser Punkt fehlt: Stark ressourcen belastende Anfragen können auch in Lastarmen Zeiten vorberechnet werden.&lt;br /&gt;
([[User:Mrohr|Matthias]]) Stimmt, koennte noch als Anmerkung bei &amp;quot;Cachen von Anfragen&amp;quot; hinzugefuegt werden&lt;br /&gt;
&lt;br /&gt;
; ([[User:Mrohr|Matthias]]) Prueffrage: &amp;quot;Wird ein möglicher Überlauf von Protokolldaten... verhindert&amp;quot;&lt;br /&gt;
&lt;br /&gt;
Ist eine etwas eingeschrankte Sicht. Wurde hier eher von Ueberlauf von Speicherplaz zu Beispiel im Rahmen der Protokollierung sprechen&lt;br /&gt;
&lt;br /&gt;
; ([[User:Mrohr|Matthias]]) Durchfuehrung von Lasttests zur Identifikation ressourcenintensiver Operationen&lt;br /&gt;
&lt;br /&gt;
Der Hinweis waere ggf. erwahnenswert&lt;br /&gt;
&lt;br /&gt;
; ([[User:Mrohr|Matthias]]) Hinweis auf nicht-angemeldeten Bereich&lt;br /&gt;
&lt;br /&gt;
Das Risiko durch rechenintensive Operationen durch einen DoS betroffen zu sein ist natuerlich fuer gewoehlich um so groesser, wenn diese im anonymen Bereich angeboten wird. Der Hinweis ware ggf. ebenfalls hilfreich.&lt;br /&gt;
&lt;br /&gt;
== M 4.WA25Verhinderung von Clickjacking (Markus, Matthias) ==&lt;br /&gt;
Ok - das passt soweit.&lt;br /&gt;
&lt;br /&gt;
([[User:Mrohr|Matthias]]) Stimmt, auch wenn ich &amp;quot;Angreifer&amp;quot; in dem Beispiel eher als &amp;quot;Webseitenbetreiber&amp;quot; beschreiebn wuerde, da er nicht wirklich aktiv einen Angriff durchfuehrt, oder? Bitte nochmal ueber meinen Hinweis aus G 5.WA18 nachdenken: Ist Clickjacking-Schutz tatsaechlich Grundschutz? Ich bin mir da selber nicht so wirklich sicher.&lt;br /&gt;
&lt;br /&gt;
== M 5.WA21Sichere Anbindung von Hintergrundsystemen an Web-Anwendungen (Markus, Matthias) ==&lt;br /&gt;
; Verantwortliche:&lt;br /&gt;
 Architekten fehlen. Entwickler müssen die Views umsetzen und die Datasource entsprechend einbinden - die fehlen hier ebenfalls.&lt;br /&gt;
; DirectorySystem Beispiel:&lt;br /&gt;
 Das DirectorySystem wird in dem angegeben Beispiel zum Single Point of Failure - das wird verschwiegen.&lt;br /&gt;
; Firewalls:&lt;br /&gt;
 Das sind fachlich-blinde Systeme. Was ist mit WAFs / IDS / IPS etc.?&lt;br /&gt;
([[User:Mrohr|Matthias]]) Stimmt, das hat in diesem Baustein nichts zu suchen&lt;br /&gt;
&lt;br /&gt;
; ([[User:Mrohr|Matthias]]) Typische Hintergrundsysteme&lt;br /&gt;
Hier fehlt irgendwie &amp;quot;Middleware&amp;quot;, die ist denke ich nicht immer Legacy&lt;br /&gt;
&lt;br /&gt;
== M 5.WA23Systemarchitektur einer Web-Anwendung (Markus, Matthias) ==&lt;br /&gt;
; Verantwortliche:&lt;br /&gt;
Auch hier fehlend wieder die Architekten. &lt;br /&gt;
([[User:Mrohr|Matthias]]) Stimmt, habe das Dokument mal komplett durchgesucht.Tatsaechlich wird der &amp;quot;Architekt&amp;quot; niemals genannt, das scheint also eher ein grundseatzliches Problem zu sein. Der Administrator hat hier aber nun wirklich nichts zu suchen.&lt;br /&gt;
&lt;br /&gt;
; Virtualisierung:&lt;br /&gt;
Virtualisierung bietet weitere Angriffsvektoren (z.B.: Hypervisor) die eine &amp;quot;Blech&amp;quot;Farm nicht bietet.&lt;br /&gt;
&lt;br /&gt;
([[User:Mrohr|Matthias]]) Genau, wobei auch der ganze Bereich geshareter Plattformen (z.B. By SharePoint) hier fehlt.&lt;/div&gt;</summary>
		<author><name>Mrohr</name></author>	</entry>

	<entry>
		<id>https://wiki.owasp.org/index.php?title=Talk:OWASP_Review_BSI_IT-Grundschutz_Baustein_Webanwendungen&amp;diff=130213</id>
		<title>Talk:OWASP Review BSI IT-Grundschutz Baustein Webanwendungen</title>
		<link rel="alternate" type="text/html" href="https://wiki.owasp.org/index.php?title=Talk:OWASP_Review_BSI_IT-Grundschutz_Baustein_Webanwendungen&amp;diff=130213"/>
				<updated>2012-05-21T15:56:06Z</updated>
		
		<summary type="html">&lt;p&gt;Mrohr: /* M 4.WA07Fehlerbehandlung durch Web-Anwendungen (Markus) */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Since it's about a review of a document in German, all the discussions will be done in German :-)&lt;br /&gt;
&lt;br /&gt;
Diskussionen rund um den Review des &amp;quot;IT-Grundschutzbausteins Webanwendungen&amp;quot; finden hier statt, sinnvollerweise auf Deutsch :-)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Vorschlag für Kriterien, die an unser Review angelegt werden sollten (.kai) ==&lt;br /&gt;
&lt;br /&gt;
* Der Baustein soll alle wichtigen Themen der Entwicklung sicherer&lt;br /&gt;
Webanwendungen enthalten.&lt;br /&gt;
&lt;br /&gt;
* Der Baustein soll die verschiedenen Phasen der Software-Entwicklung&lt;br /&gt;
vollständig abdecken.&lt;br /&gt;
&lt;br /&gt;
* Der Baustein soll zwischen verbindlichen, prüfbaren Vorgaben und&lt;br /&gt;
unverbindlichen Empfehlungen sprachlich sauber unterscheiden (hier&lt;br /&gt;
spielt mein Auditorenblick eine Rolle). Vor allem soll der Baustein&lt;br /&gt;
verbindliche Anforderungen auch tatsächlich stellen. Alle&lt;br /&gt;
verbindlichen Anforderungen müssen unabhängig von der jeweiligen&lt;br /&gt;
Umgebung auch umsetzbar sein, d.h. sie müssen entsprechend generisch&lt;br /&gt;
sein.&lt;br /&gt;
&lt;br /&gt;
* Die Maßnahmen sollen nur in (begründbaren) Ausnahmen zu Empfehlungen&lt;br /&gt;
von OWASP im Widerspruch stehen.&lt;br /&gt;
&lt;br /&gt;
* Die Maßnahmen sollen verständlich und anwendbar sein.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== &amp;quot;Hilfsmittel&amp;quot; (Markus, Matthias) ==&lt;br /&gt;
Ich würde das Script zur Vermeidung von Clickjacking wrappen und nicht als losen Skript-block in den Text einbinden - einfach schlechter Programmierstiel diese losen Blöcke.&lt;br /&gt;
Der Zugriff auf das Body-Element mit byTagName-Array[0] ist auch nicht wirklich gut. Ich halte Zugriffe über das DOM (klassisch), bei ID bzw. XPATH für besser. &lt;br /&gt;
&lt;br /&gt;
([[User:Mrohr|Matthias]]) Verwunderlich finde ich aber, dass der Autor zum Einen zwar von der Verwendung von JavaScript vollstaendig abraet, zum Anderen aber eben solches als Best-Practice-Ansatz fuer Click Jacking empfiehlt.&lt;br /&gt;
&lt;br /&gt;
SQL-Injection Characters:&lt;br /&gt;
die Pipe fehlt hier zur Textkonatenierung&lt;br /&gt;
+ / - haben auch eine Bedeutung bei JOINs.&lt;br /&gt;
&lt;br /&gt;
([[User:Mrohr|Matthias]]) Special Character bzw. DB Escaping ist schon recht DB-spezifisch (siehe [https://www.owasp.org/index.php/SQL_Injection_Prevention_Cheat_Sheet SQL Prevention Cheat sheet]). Wozu werden die hier ueberhaupt aufgefuehrt? Um Eingebafilterung nach pot. SQL Injections durchzufuheren, oder um eine eigene Escaping-Funktion zu schreiben? Raus damit!&lt;br /&gt;
&lt;br /&gt;
== &amp;quot;Goldene Regeln&amp;quot; (Matthias) ==&lt;br /&gt;
&lt;br /&gt;
Hier meine Anmerkungen zu diesem Dokument:&lt;br /&gt;
&lt;br /&gt;
; 1. Für mich fehlende Punkte&lt;br /&gt;
* Korrektur der Ursache (Root Cause) von Schwachstellen statt  Verhinderung deren Ausnutzung&lt;br /&gt;
* Bezug auf Minimierung der Angriffsfläche und Least-Privilege-Prinzip&lt;br /&gt;
* Bezug auf Defense-in-Depth-Prinzip&lt;br /&gt;
* Verwendung von getesteten Security APIs (z.B. OWASP ESAPI) statt selbstentwickelter Funktionen&lt;br /&gt;
* Bezug auf Externalisierung von Sicherheitsfunktionen, sowie deklerative vor programmatischer Sicherheit.&lt;br /&gt;
&lt;br /&gt;
; 2. Begriff &amp;quot;Web-Anwendung&amp;quot;&lt;br /&gt;
Würde ich generell durch &amp;quot;Webanwendung&amp;quot; ersetzen.&lt;br /&gt;
&lt;br /&gt;
; 3. Einleitung (&amp;quot;Web-Anwendungen stellen Funktionalität zur Verfügung, ...&amp;quot;)&lt;br /&gt;
&lt;br /&gt;
Wozu dient dieser Satz?&lt;br /&gt;
&lt;br /&gt;
; 4. &amp;quot;Die Architektur der Web-Anwendung ist im Sicherheitskonzept zu  dokumentieren.....&amp;quot; &lt;br /&gt;
&lt;br /&gt;
Ich fände es sinnvoller, wenn hier von der &amp;quot;Sicherheitsarchitektur&amp;quot; gesprochen wird, welche etwa neben den sicherheitsrelevanten Datenflüssen, sensible Komponenten, Entry Points, Akteure architekturelle Security Controls wie Authentisierung, Kryptographie und natürlich die Trust Boundaries beinhaltet.&lt;br /&gt;
&lt;br /&gt;
; 5. &amp;quot;Bei Web-Anwendungen handelt es sich häufig um spezielle Eigenentwicklungen....&amp;quot;&lt;br /&gt;
&lt;br /&gt;
Erstens würde ich hier den geläufigen Begriff &amp;quot;Individualsoftware&amp;quot; verwenden. Zweitens würde ich statt bestimmte SDLC-Phasen vorzugeben (die Begriffe &amp;quot;Softwareverteilung&amp;quot; und &amp;quot;Integration&amp;quot; sind mir bei Webanwendungen bisher noch nicht so häufig untergekommen), besser von der Notwendigkeit sprechen, Sicherheit in allen Entwicklungsphasen zu berücksichtigen, also eines SDLs.&lt;br /&gt;
&lt;br /&gt;
; 6. &amp;quot;Alle Ein- und Ausgaben der Web-Anwendung müssen in eine normalisierte Form überführt werden....&amp;quot;&lt;br /&gt;
&lt;br /&gt;
Normalisierung ist für mich nicht gleich Kanonsierung, auch wenn beide Begriffe häufig als synonym verwendet werden.  Der Unterschied wird in der [http://owasp-esapi-java.googlecode.com/svn/trunk_doc/2.0-rc4/org/owasp/esapi/Encoder.html API-Beschreibung der ESAPI] erklärt. Die Normalisierungs-Funktion ist allerdings schon vor einiger Zeit aus der ESAPI [https://lists.owasp.org/pipermail/esapi-dev/2010-January/000266.html rausgeflogen]. Die generelle Kanonisierung von Ausgaben halte ich dazu für nicht sinnvoll.&lt;br /&gt;
&lt;br /&gt;
Zweitens, finde ich den weiteren Text zwar grundsätzlich formal korrekt, aber so allgemein, dass dieser glaube ich niemandem so richtig etwas bringt.  &lt;br /&gt;
&lt;br /&gt;
Besser fände ich hier Ein- von Ausgabevalidierung grundsätzlich voneinander abzugrenzen. Etwa was ich per Eingabevalidierung (Längenprüfung, Casting, etc. per Whitelisting) und was mit Ausgebavalidierung (Enkodierung, Escaping, Parametrisierung) machen muss und kann.&lt;br /&gt;
&lt;br /&gt;
Eingabedaten können technisch zudem auch Werte eingelesener Property-Dateien sein. Muss ich die auch validieren? Ist das dann noch Grundschutz? &lt;br /&gt;
&lt;br /&gt;
; 7. &amp;quot;Für den Zugriff auf sensitive Funktionen oder Informationen muss die Web-Anwendung eine wirksame Authentisierung und Sitzungsverwaltung unterstützen. Die Eigenschaften der Sitzungs-ID müssen so gewählt werden, dass die Sitzung ausreichend geschützt ist. ....&amp;quot;&lt;br /&gt;
&lt;br /&gt;
Besser fände ich &amp;quot;eine Authentisierung, die über eine dem Schutzbedarf der Anwendung angemessene Stärke verfügt.&amp;quot; &lt;br /&gt;
&lt;br /&gt;
Eigentlich geht es doch mehr um den Schutz der Sitzungs-ID, da diese gewöhnlich im Verlauf einer Sitzung den Client authentisiert. Oder den Schutz des Zugriffs auf eine Sitzung. &lt;br /&gt;
&lt;br /&gt;
Zudem fehlt hier meiner Meinung nach der Hinweis auf die bevorzugte Verwendung getesteter Standardkomponenten.&lt;br /&gt;
&lt;br /&gt;
; 8. &amp;quot;Die Web-Anwendung sollte die zu übermittelnden Daten schützen.&amp;quot;&lt;br /&gt;
&lt;br /&gt;
Dies würde ich nur auf sensible Daten beziehen. Zusätzlich zu HTTPS würde ich hier schreiben, dass sensible Daten generell nicht in der URL übertragen werden dürfen.&lt;br /&gt;
&lt;br /&gt;
; 9. &amp;quot;Die Preisgabe interner Informationen (z.B. Kommentare, Fehlermeldungen)&amp;quot;&lt;br /&gt;
&lt;br /&gt;
Hier würde ich eher schreiben &amp;quot;(IN Kommentaren, Fehlermeldungen, HTTP Headern, etc.)&amp;quot;&lt;br /&gt;
&lt;br /&gt;
; 10. &amp;quot;Fehler müssen so behandelt werden, ... müssen Fehler bei der Autorisierung zu einer Verweigerung beim Zugriff auf die angeforderte Ressource führen.&amp;quot;&lt;br /&gt;
&lt;br /&gt;
Sprachlich: &amp;quot;Die Webanwendung muss sich stets in einem sicheren Zustand befinden. Beispielsweise müssen Fehler bei der Autorisierung zu einer Verweigerung des Zugriffs führen (Default-Deny-Strategie).&amp;quot;&lt;br /&gt;
&lt;br /&gt;
; 11. &amp;quot;Die Logging-Funktionen der Web-Anwendung müssen aufgetretene Ereignisse derart protokollieren, dass sicherheitskritische Vorfälle nachvollzogen werden können.&amp;quot;&lt;br /&gt;
&lt;br /&gt;
Hier würde hier eher von &amp;quot;allen sicherheitsrelevanten Ereignissen&amp;quot; sprechen.&lt;br /&gt;
&lt;br /&gt;
Weiterhin sollten insbesondere beim Logging der Datenschutz berücksichtigt werden, personenbezogene Daten also nach Möglichkeit nicht oder nur anonymisiert in technischen Logdateien protokolliert werden.&lt;br /&gt;
&lt;br /&gt;
; 12. &amp;quot;Alle Sicherheitsmechanismen (z.B. Authentisierung und Zugriffskontrolle) sind serverseitig zu implementieren und können nicht durch clientseitige Mechanismen ersetzt werden.&amp;quot;&lt;br /&gt;
&lt;br /&gt;
Die Aussage ist so nicht korrekt. Darüber hatten wir bereits bei der ASVS mehrfach diskutiert. &lt;br /&gt;
&lt;br /&gt;
Überall dort wo der Client angegriffen wird, also etwa bei RIAs (Stichwort DOM-Based XSS) müssen wir Security Controls clientseitig implementieren. Es gibt mittlerweile deshalb auch eine Portierung der ESAPI auf Javascript. Überall dort wo der Server oder Hintegrundsysteme angegriffen werden, ist die Aussage aber natürlich zutreffend.&lt;br /&gt;
&lt;br /&gt;
== &amp;quot;Gefährdungen&amp;quot; (Markus, Dennis, .... &amp;lt;Dein Name&amp;gt;) ==&lt;br /&gt;
; Generell:&lt;br /&gt;
Reference auf RFCs fehlen.&lt;br /&gt;
&lt;br /&gt;
==B.5.XX Web-Anwendungen ==&lt;br /&gt;
; 1. Erster Absatz - Letzter Satz: --Wieso werden hier nur HTML/XML Doks und Oberflächen angesprochen? Was ist der Unterschied zwischen einem HTML-Dok und einer Oberfläche? Was ist mit  Flash, etc.? Was ist mit WebSockets?&lt;br /&gt;
; 2. Stichpunkt &amp;quot;Protokollierung&amp;quot;: Sicherheits relevant ist ein sehr dehnbarer Begriff - Eine bessere Formulierung könnte sein: Zur Rekonstruktion von Nutzerhandlungen nötige Ereignisse (positve &amp;amp; negative) müssen protokolliert werden . . . &lt;br /&gt;
; 3. Absatz: &amp;quot;Abgrenzung des Bausteins&amp;quot;: &amp;quot;Die spez. Sicherheitsanforderungen an Web-Services werden in diesem Baustein nicht betrachtet&amp;quot; --&amp;gt; Wie so nicht? Was ist das Backend von einer Rest / AJAX-basierenden Webanwendung denn anderes als ein Web-Service? Diesen Satz würde ich entfernen.&lt;br /&gt;
; 4.Vorsätzliche Handlungen -&amp;gt; Web-Spoofing (G.5.87) -- Missverständliche Bezeichnung / Nomenklatur&lt;br /&gt;
; 5. Seite 4 : erste Zeile &amp;quot;Umsetzung&amp;quot;: &amp;quot;dafür umzusetztende Komponenten müssen die Webanwendung schützen...&amp;quot; - Hier fehlt mir der Hinweis, dass dieser Schutz verifiziert werden muss.&lt;br /&gt;
; 6 Seite 5: &amp;quot;Umsetzung&amp;quot; - Wir haben CSRF, D(D)os und SQL-Injection aber wo ist XSS?&lt;br /&gt;
; 7 Seite 7: &amp;quot;Die Sicherheitsfunktion wird ausschließlich clientseitig...&amp;quot; --&amp;gt; Warum muss der Angreifer überhaupt einen Browser umkonfigurieren? Was ist mit Proxies, Scripts, etc.? Ich würde das reduzieren darauf, dass rein Webbrowser-basierende Schutzfunktionen einfach umgangen werden können.&lt;br /&gt;
; 8 Seite 8: Die angesprochenen Punkte hinterlassen den Eindruck nicht vollständig zu sein: Mir fehlen Punkte wie &amp;quot;Outsourcing&amp;quot;, &amp;quot;KnowHow der Entwickler&amp;quot;, Tooling, Framework-Auswahl, etc.&lt;br /&gt;
; 9 Seite 9: Eigentlich möchte der Autor hier über Datenschutz sprechen. Abgesehen von den letzten drei Zeilen geht es aber nur um &amp;quot;User tracking&amp;quot; - Wo ist der Rest der Datenschutzproblematik? Warum der Fokuss auf Tracking? Mir ist das zu einseitig.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
tbd.&lt;br /&gt;
&lt;br /&gt;
; Wortwahl:&lt;br /&gt;
Ich stosse innerhalb der Texte immer wieder an die Worten '''Hintergrundsystem''' und '''Sicherheitskontext'''.&lt;br /&gt;
'''Hintergrundsystem:''' besseres Synonym?&lt;br /&gt;
'''Sicherheitskontext:''' nur weil es in den Texten um Sicherheit geht muss nicht an jeder Stelle immer wieder das Wort _Sicherheits_kontext eingebaut werden.&lt;br /&gt;
Bsp: &amp;quot;Erlangt ein Angreifer Kenntnis von einer solchen gültigen, aber nicht mehr genutzten SessionID, so kann er die Web-Anwendung im Sicherheitskontext des nicht abgemeldeten Benutzers weiter verwenden.&amp;quot; (G 5,WA12 Unzureichendes Session-Management von Web-Anwendungen)&lt;br /&gt;
Verbesserungsansansatz: ... so kann er die Web-Anwendung anstelle des eigentlichen Besitzers weiterhin verwenden.&lt;br /&gt;
&lt;br /&gt;
== &amp;quot;G 2.WA01 Mangelhafte Auswahl oder Konzeption von Web-Anwendungen&amp;quot; (Matthias) ==&lt;br /&gt;
&lt;br /&gt;
Nachdem ich mir diese Gefährdung durchgelesen hatte, fehlten mir ehrlich gesagt etwas die Worte. Nicht nur, dass hier fast jeder zweite Satz entweder falsch ist bzw. massive Fehler enthält oder ich diesen schlicht nicht verstehe, ist der ganze Text sprachlich wirklich enorm verbesserungsfähig. &lt;br /&gt;
&lt;br /&gt;
Na gut, ich konzentriere mich mal auf die fachlichen Punkte:&lt;br /&gt;
&lt;br /&gt;
; 1. Security Controls&lt;br /&gt;
Werden mal mit &amp;quot;Schutzmechanismen&amp;quot;, mal mit &amp;quot;Sicherheitskomponenten&amp;quot; und dann wieder als &amp;quot;Sicherheitsfunktionen&amp;quot; bezeichnet. Hier macht eine einheitliche Benennung sicherlich Sinn und ist weniger verwirrend.&lt;br /&gt;
&lt;br /&gt;
; 2. &amp;quot;Eine Web-Anwendung ist in der Regel ein verteiltes, komplexes System bestehend aus unterschiedlichen Komponenten (z. B. Webserver, Applikationsserver, Hintergrundsysteme)&amp;quot;&lt;br /&gt;
&lt;br /&gt;
Eine Webanwendung besteht sicher nicht aus einem Webserver- oder anderer infrastruktureller Komponenten, sondern ist Software welches diese nutzt.&lt;br /&gt;
&lt;br /&gt;
; 3. &amp;quot;Bei individuell entwickelten Web-Anwendungen sind im Allgemeinen die Frameworks, Komponenten und Schnittstellen im Rahmen der Konzeption auszuwählen und deren Einbindung und Absicherung zu betrachten....Im Gegensatz dazu ist bei der Konzeption von Web-Anwendungen auf Basis von Standardsoftware insbesondere auf die Auswahl der Software und die Konfiguration der Teilkomponenten zu achten&amp;quot;&lt;br /&gt;
&lt;br /&gt;
Wir unterscheiden im Rahmen von Webanwendungen eigentlich Free or Opensource Software (FOSS bzw. FLOSS), Standardsoftware und Individualsoftware voneinander. Wir unterscheiden nicht Frameworks von Standardsoftware. Frameworks können Teil von Standardsoftware sein, wie etwa bei SharePoint, SAP, etc, oder aber FOSS, wie etwa Spring. Die ganzen Absätze machen für mich daher keinen Sinn.&lt;br /&gt;
&lt;br /&gt;
; 4. &amp;quot;Eine Sicherheitsfunktion (z. B. Authentisierung, Autorisierung) wird nicht an einer Stelle umgesetzt und verwendet, sondern ist mehrfach in der Web- Anwendung realisiert. Wird diese Sicherheitsfunktion an den verschiedenen Stellen unterschiedlich umgesetzt, führt dies zu einem uneinheitlichen Sicherheitsniveau.&amp;quot;&lt;br /&gt;
&lt;br /&gt;
Natürlich ist die mehrfache Verwendung bestimmter Security Controls, beispielsweise von Zugriffskontrollen (Complete-Mediation) oder Validierung (Robustheit) erstrebenswert. Was der Autor hier wahrscheinlich meinte, war die Notwendigkeit diese zu Kapseln bzw. zu Externalisieren. Das bezieht sich im übrigen nicht nur auf die Controls selbst, sondern auch auf ihre Parametrisierung (etwa. über Konfigdateien / XACML).&lt;br /&gt;
&lt;br /&gt;
Wichtiger wäre in diesem Zusammenhang zudem die fehlende Berücksichtigung bestimmter Security Controls.&lt;br /&gt;
&lt;br /&gt;
; 5. &amp;quot;Auswahl von Web-Anwendungen auf Basis von Standardsoftware&amp;quot;&lt;br /&gt;
Was will der Satz sagen? Ich wähle Standardsoftware aus, aber doch keine Webanwendungen. Oder heißt das, ich kaufe eine existierende Anwendung ein (Webanwendung!=Indivudualsoftware)? &lt;br /&gt;
&lt;br /&gt;
; 6. &amp;quot;Das ausgewählte Produkt verfügt nicht über die ausreichende Sicherheitsfunktionalität, ... Daher müssen die notwendigen Schutzmechanismen nachträglich hinzugefügt werden, wodurch zusätzliche Aufwände entstehen.&amp;quot;&lt;br /&gt;
Das ist etwas sehr positiv formuliert. Tatsächlich können fehlende Security Controls in zugekaufter Software (insb. Standardsoftware) in der Realität häufig gar nicht hinzugefügt werden oder nur perimetrisch (z.B. per WAF oder Access Gateway).&lt;br /&gt;
&lt;br /&gt;
; 7. &amp;quot;Die Hintergrundsysteme werden unzureichend abgesichert und dadurch ist die Datenbank der Web-Anwendung aus dem Internet erreichbar.&amp;quot;&lt;br /&gt;
Gehören fehlende Netzwerksegmentierung bzw. Firewallregeln wirklich in diesen Kontext? Das ist doch eigentlich Grundschutz der Infrastruktur, oder?&lt;br /&gt;
&lt;br /&gt;
; 8. &amp;quot;Aufgrund schwacher Parameter in der Konfiguration des Frameworks zum Session-Management werden unsichere SessionIDs erzeugt.&amp;quot;&lt;br /&gt;
Was sind &amp;quot;schwache&amp;quot; Parameter?&lt;br /&gt;
&lt;br /&gt;
Welches Framework erlaubt unsichere SessionIDs durch eine &amp;quot;schwache&amp;quot; Konfiguration zu erzeugen?&lt;br /&gt;
&lt;br /&gt;
; 9. &amp;quot;Wird die Konfiguration des Web-Browsers durch einen Angreifer manipuliert, können die clientseitig umgesetzten&amp;quot;&lt;br /&gt;
&lt;br /&gt;
Manipuliert ein Angreifer die Konfguration seines Webbroswers, wenn er einen MITM-Proxy konfiguriert?&lt;br /&gt;
&lt;br /&gt;
Wie bereits bei den &amp;quot;Goldenen Regeln&amp;quot; angemerkt, gilt auch hier, das manche Security Controls auch clientseitig umgesetzt werden dürfen (etwa. zur Verhinderung von Dom-Based XSS).&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== &amp;quot;G 5.WA10 Fehler in der Web-Anwendungslogik&amp;quot; (Dennis) ==&lt;br /&gt;
; 1. &amp;quot;Damit kann aufgrund der Prüfreihenfolge ein hoher Ressourcenverbrauch provoziert werden, der für Denial-of-Service-Angriffe ausgenutzt werden kann.&amp;quot;&lt;br /&gt;
Meiner Meinung nach passt in diesem Kontext die Attacke DoS nicht ganz. Falls die nachfolgende Funktionalität wegen der langen Ausführungszeit der Filterkomponente übersprungen wird bzw. ein Fehler auftritt würde dies meiner Ansicht in die Thematik Anwendungslogik passen. Eine DoS-Attacke kann hingegen anhand jeder Funktion durchgeführt werden.&lt;br /&gt;
&lt;br /&gt;
([[User:Mrohr|Matthias]]) Jo stimmt, aber ich stimme mit der Aussage eigentlich schon ueberein, auch wenn diese zugegeben etwas ungluecklich formuliert ist. Es geht hier ja darum, rechenintensive Pruefungen/Filterung moeglichst zu vermeiden bzw. zu reduzieren. Aus diesem Grund machen wir ja auch bei der AV-Pruefung zunaechst Blacklist-Checks und erst am Ende rechenintensive statistische oder verhaltensbezogene Pruefungen.&lt;br /&gt;
&lt;br /&gt;
== &amp;quot;G 5.WA11 Umgehung clientseitig umgesetzter Sicherheitsfunktionen von Web-Anwendungen&amp;quot; (Dennis) ==&lt;br /&gt;
; 1. &amp;quot;Ein Angreifer kann diese ausnutzen, um beispielsweise unbefugt Befehle an Hintergrundsysteme der Web-Anwendung zu übermittlen (z.B. in Form von Datenbankanfragen bei einer SQL-Injection).&amp;quot;&lt;br /&gt;
Umformulierung des Inhalts der Klammer. Hatte beim ersten Lesen für mich den Anschein, als ob ein Formular genutzt werden könnte welches den Nutzer aufforder eine SQLI einzugeben. Ich denke &amp;quot;Datenbankanfrage zwecks Ausführung einer SQL-Injection&amp;quot; würde besser passen.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== G 2.WA02 Mängel bei der Entwicklung und der Erweiterung von Web-Anwendungen (Matthias) ==&lt;br /&gt;
&lt;br /&gt;
Allgemein ist de obere Teil ok, die aufgezählten &amp;quot;Auswirkungen von fehlenden Vorgaben&amp;quot; verstehe ich jedoch nicht. Wo ist etwa der Bezug von Barrierefreiheit auf die Anwendungssicherheit?&lt;br /&gt;
&lt;br /&gt;
Mein Vorschlag, um diese Punkte etwa sinnvoll umzubauen:&lt;br /&gt;
* &amp;quot;Fehlendes Vorgehensmodell&amp;quot;: Bezug auf fehlende Berücksichtigung von Sicherheit im SDLC. Statt eines SDLCs selbst sollte hier besser auf die Notwendigkeit eines Secure Development Lifecycle (SDL) hingewiesen werden&lt;br /&gt;
* &amp;quot;Fehlende Programmierrichtlinien&amp;quot; =&amp;gt; Besser wäre hier &amp;quot;Fehlende Sicherheitsrichtlinien in der Programmierung&amp;quot; also &amp;quot;Secure Coding Guidelines&amp;quot;&lt;br /&gt;
* &amp;quot;Testfälle&amp;quot; =&amp;gt; &amp;quot;Sicherheitsrelevante Testfälle&amp;quot; (z.B. Security Unit Tests). &lt;br /&gt;
* &amp;quot;Barrierefreiheit&amp;quot;: Warum nicht an dieser Stelle die Auswirkungen von Sicherheitsfunktionen auf die Bedienbarkeit, etwa anhand von CAPTCHAS erläutern?&lt;br /&gt;
&lt;br /&gt;
== G 2.WA03 Unzureichender Schutz personenbezogener Daten bei Web-Anwendungen (Matthias) ==&lt;br /&gt;
&lt;br /&gt;
Der Titel dieses Bausteines heißt &amp;quot;Schutz personenbezogener Daten&amp;quot;, die genannten Beispiele beziehen sich bis auf den letzten jedoch auf die missbräuchliche (oder zumindest problematische) Nutzung aus Sicht des Datenschutzes. &lt;br /&gt;
&lt;br /&gt;
Die Punkt 1-3 sollten daher besser entfallen und z.B. durch die Folgenden ersetzt werden:&lt;br /&gt;
* Unsichere Einbindung von sozialen Netzwerken (Bezug nehmen auf den Like-Button bei Facebook)&lt;br /&gt;
* Unsichere Einbindung von Werbeinhalten&lt;br /&gt;
* Unsichere Übertragung und Caching&lt;br /&gt;
* Unsichere Protokollierung&lt;br /&gt;
* Ungenügender Zugriffsschutz&lt;br /&gt;
* Verstoß des Minimalprinzips bzw. der Zweckgebundenheit (welche Daten werden wirklich benötigt)&lt;br /&gt;
&lt;br /&gt;
Auch wäre es ggf. zumindest einen Verweis auf das BDSG zu machen.&lt;br /&gt;
&lt;br /&gt;
== G 4.33 Unzureichende oder fehlende Authentisierung (Matthias) ==&lt;br /&gt;
&lt;br /&gt;
; 1. Erster Absatz: &amp;quot;Wenn Authentisierungsmechanismen fehlen oder zu schlecht sind&amp;quot;&lt;br /&gt;
&lt;br /&gt;
&amp;quot;schlecht&amp;quot; sollte vlt besser durch &amp;quot;unzureichend&amp;quot; ersetzt werden.&lt;br /&gt;
&lt;br /&gt;
; 2. &amp;quot;Sicherheitslücken entstehen bei... der Benutzerauthentisierung&amp;quot;&lt;br /&gt;
&lt;br /&gt;
Hier findet nur ein Bezug auf &amp;quot;Passwörter&amp;quot; statt. Der Bezug auf die fehlerhaft implementierte oder dem Schutzbedarf ungenügende Schutzmechanismen (z.B. keine 2-Faktor-Authentisierung bei hochsensiblen Daten) fehlt. Auch auf das komplette fehlen von Authentisierungs-Controls wird hier nicht  eingegangen&lt;br /&gt;
&lt;br /&gt;
; 3. &amp;quot;Sicherheitslücken entstehen bei... der Komponentenauthentisierung&amp;quot;&lt;br /&gt;
&lt;br /&gt;
Wie bei 2., wird auch hier wieder nur auf Passwörter, nicht jedoch auf das fehlen von Controls selbst eingegangen. An dieser Stelle fehlt auch ein Hinweis auf die Notwendigkeit dedizierter Benutzeraccounts.&lt;br /&gt;
&lt;br /&gt;
; 4. &amp;quot;Sicherheitslücken entstehen bei... der Wahl des Verfahrens&amp;quot;&lt;br /&gt;
&lt;br /&gt;
Statt untauglich würde ich auch hier von &amp;quot;dem Schutzbedarf der Daten nicht angemessen&amp;quot; sprechen, eigentlich gehört das für mich aber in die obigen Punkte.&lt;br /&gt;
&lt;br /&gt;
; 5. Serverseitige Authentisierung fehlt&lt;br /&gt;
&lt;br /&gt;
Auch der Server (bzw. die Anwendung selbst) kann sich fehlerhaft oder ungenügend beim Benutzer authentsieren, etwa über DNS, SSL-Zertifikate, etc.&lt;br /&gt;
&lt;br /&gt;
== G 4.WA04 Unzureichende Validierung von Ein- und Ausgabedaten bei Web-Anwendungen (Matthias) ==&lt;br /&gt;
&lt;br /&gt;
; 1. &amp;quot;Unzureichende Validierung von Eingabedaten&amp;quot;&lt;br /&gt;
&lt;br /&gt;
Die genannten Beispiele sind genau keine korrekten Beispiele für diesen Fall, sondern betreffen die Ausgabevalidierung bzw. Enkodierung. Typische Fehler der Eingabevalidierung ist eine Manipulierbarkeit der Business Logik.&lt;br /&gt;
&lt;br /&gt;
; 2. &amp;quot;Unzureichende Validierung von Ausgabedaten&amp;quot;&lt;br /&gt;
&lt;br /&gt;
Hier geht es zentral um die Verhinderung von Interpreter Injection, also serverseitig (z.B. SQL oder LDAP Injection) oder clientseitig (XSS, JSON Injection, etc.). Statt &amp;quot;können die Ausgaben Schadcode&amp;quot; enthalten würde ich hier eher davon Sprechen, dass ein solcher Interpreteraufruf manipuliert werden kann (was dann z.B. zur Einschleusung von Schadcode genutzt werden kann).&lt;br /&gt;
&lt;br /&gt;
; 3. &amp;quot;Die Suchfunktion der Web-Anwendung verwendet die Eingaben der Benutzer ungefiltert&amp;quot;&lt;br /&gt;
&lt;br /&gt;
Mit ungenügender &amp;quot;Filterung&amp;quot; hat SQL Injection nichts zu tun,  eigentlich geht es hierbei darum, dass SQL-Anfragen dynamisch mit unvalidierten Eingebedaten zusammengebaut (konkateniert) werden.&lt;br /&gt;
&lt;br /&gt;
; 4. &amp;quot;Ungefilterter HTML-Code in Kommentar-Funktion&amp;quot;&lt;br /&gt;
&lt;br /&gt;
Hier fehlt der Bezug auf persistentes XSS, das hier sicherlich zentral ist.&lt;br /&gt;
&lt;br /&gt;
== G 4.WA05 Fehlende oder mangelhafte Fehlerbehandlung durch Web-Anwendungen (Tobias, Matthias) ==&lt;br /&gt;
; Abschnitt &amp;quot;Unsichere Fehlerbehandlung&amp;quot;&lt;br /&gt;
Die G adressiert &amp;quot;Unsichere Fehlerbehandlung&amp;quot;, der Abschnitt die &amp;quot;Unsichere Fehlerbehandlung in Sicherheitskomponenten&amp;quot;. Entsprechend sollte der fettgedruckte Teil angepasst werden.&lt;br /&gt;
&lt;br /&gt;
; &amp;quot;fehlende SQL-Parameter,&amp;quot;&lt;br /&gt;
Sollte besser &amp;quot;Fehlermeldungen bei ungültigen SQL-Abfragen&amp;quot; lauten.&lt;br /&gt;
&lt;br /&gt;
; &amp;quot;Auch scheinbar unkritische Informationen, wie die Meldung ob (..)&amp;quot;&lt;br /&gt;
Korrekt, allerdings nicht nachvollziehbar, wenn das Problem der Leser nicht schon bekannt ist. Daher erweitern nach &amp;quot; Rahmen von Brute-Force-Angriffen ausgenutzt werden.&amp;quot; mit &amp;quot;. Bei Brute-Force-Angriffen wäre in diesem Fall klar, dass der Benutzername gültig ist.&amp;quot;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[User:Mrohr|Matthias]]): Stimme dem Obigen auch zu, ausserdem:&lt;br /&gt;
&lt;br /&gt;
; Sprachlich: &amp;quot;kann dies unvorhersehbare Auswirkungen haben und den Betrieb der Web-Anwendung bis zur Unerreichbarkeit einschränken.&amp;quot;&lt;br /&gt;
&lt;br /&gt;
&amp;quot;Unerreichbarkeit&amp;quot; ist etas merkwuerdig ausgedrueckt, besser ware hier von der &amp;quot;Verfuegbarkeit&amp;quot; zu sprechen. Im Uebrigen fehlt vollstaendig der Bezug auf die Verfuegbarkeit als Primaeres Schutzziel der Informationssicherheit.&lt;br /&gt;
&lt;br /&gt;
; &amp;quot;Clientseitige Fehlerbehandlung&amp;quot;&lt;br /&gt;
Das stimmt soweit, das generelle Problem ist jedoch genereller, naehmlich die clientseitige Abbildung sicherheitsrelaventer Logik (in diesem Fall die Fehlerbehandlung)&lt;br /&gt;
&lt;br /&gt;
== G 4.WA06 Unzureichende Nachvollziehbarkeit von sicherheitsrelevanten Ereignissen bei Web-Anwendungen (Matthias) ==&lt;br /&gt;
&lt;br /&gt;
; 1. Erster Absatz: &amp;quot;Die Behebung einer Schwachstelle ist dann nicht oder nur unter erschwerten Bedingungen möglich.&amp;quot;&lt;br /&gt;
&lt;br /&gt;
Hier würde ich ergänzen: &amp;quot;...und Angriffe auf die Anwendungen können ggf. nicht erkannt oder nachvollzogen werden&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
; 2. &amp;quot;Beispiele&amp;quot;: Kommulierbarkeit&lt;br /&gt;
&lt;br /&gt;
Hier fehlt auch ein Bezug auf die Kommulierbarkeit von SIcherheitsereignissen, dass diese also auch von solchen anderer Systeme in Verbindung gesetzt werden können&lt;br /&gt;
&lt;br /&gt;
; 3. &amp;quot;Beispiele&amp;quot;: Gerichtsverwertbarkeit&lt;br /&gt;
&lt;br /&gt;
Auch die Möglichkeit zur Gerichtsverwertbarkeit (etwa durch eindeutigen Zeitstempel) und manipulationssicherer Speicherung, würde ich an dieser Stelle unbedingt erwähnen.&lt;br /&gt;
&lt;br /&gt;
== G 4.WA07 Offenlegung von Informationen bei Web-Anwendungen (Matthias) ==&lt;br /&gt;
&lt;br /&gt;
; 1. Titel&lt;br /&gt;
&lt;br /&gt;
Hier würde ggf. &amp;quot;Offenlegung vertraulicher Informationen&amp;quot; sicher besser passen als &amp;quot;Offenlegung von Informationen&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
; 2. Beispiellink&lt;br /&gt;
&lt;br /&gt;
Ein Beispiellink (mit und ohne Token) würde sicher die Verständlichkeit dieser Schwachstelle verbessern.&lt;br /&gt;
&lt;br /&gt;
; 3. Erster Absatz: &amp;quot;Wenn demzufolge Informationen unnötig offengelegt werden, steigt die Wahrscheinlichkeit eines erfolgreichen Angriffs.&amp;quot;&lt;br /&gt;
&lt;br /&gt;
Interne Informationen auszublenden ist eine Härtungsmaßnahme, deren Anzeige erhöht aber nicht zwangsläufig die Wahrscheinlichkeit eines erfolgreichen Angriffs. Ich würde diesen Satz weglassen.&lt;br /&gt;
&lt;br /&gt;
 ; 4. Fehlende Punkte&lt;br /&gt;
&lt;br /&gt;
* Ein Hinweis auf HTTP Header wäre hier sicher erwähnenswert.&lt;br /&gt;
* Weiterhin bzgl. der Anzeige von Traces und ein Verweis auf den Entsprechenden Baustein zur Fehlerbehandlung&lt;br /&gt;
&lt;br /&gt;
== G 5.WA14 Cross-Site Request Forgery (CSRF, XSRF) (Matthias) ==&lt;br /&gt;
&lt;br /&gt;
; 1. Erster Absatz: &amp;quot;Können Funktionen einer Web-Anwendung ohne weitere Überprüfung der Authentizität des HTTP-Requests (z.B. durch Tokens in versteckten Formularfeldern) genutzt werden&amp;quot;&lt;br /&gt;
&lt;br /&gt;
Statt &amp;quot;Funktionen&amp;quot; würde ich besser von &amp;quot;schreibenden Aktionen&amp;quot; sprechen, dann macht der Satz mehr Sinn.&lt;br /&gt;
&lt;br /&gt;
; 2. Dritter Absatz: &amp;quot;Im Gegensatz zu XSS (siehe ...￼ ) ist das Angriffsziel nicht die Information auf dem Client (z. B. in Cookies),&amp;quot;&lt;br /&gt;
&lt;br /&gt;
Dieser (Halb-)Satz macht keinen Sinn, auch weil es bei XSS nicht nur im Informationen auf dem Cient geht. Vorschlag: &amp;quot;ist das Angriffsziel nicht die Ausführung von Skriptcode, sondern von unbefugten, schreibenden Aktionen im Kontext des angemeldeten Benutzers.&amp;quot;&lt;br /&gt;
&lt;br /&gt;
; 3. Session Riding&lt;br /&gt;
&lt;br /&gt;
Session Riding ist quasi nur ein anderer Begriff für CSRF. Die einzige Form von CSRF die mir bekannt ist, sind Angriffe mit Standard-Passwörtern auf HTTP-Basic-Auth geschützten Ressourcen.&lt;br /&gt;
&lt;br /&gt;
Im Grunde ist Session Riding aber nur ein Synonym für CSRF. Der Absatz ist daher auch nur eine Wiederholung der obigen Beschreibung.&lt;br /&gt;
&lt;br /&gt;
; 4. Zum Beispiel: &amp;quot;Durch einen präparierten Link auf einer Webseite wird die Änderung des Zugangspasswortes des Routers eingeleitet.&amp;quot;&lt;br /&gt;
&lt;br /&gt;
Etwas ungüngstig ausgedrückt. Besser wäre: &amp;quot;wird eine Anfrage zur Änderung des Zugangspasswortes an den Router gesendet. Hierbei sendet der Browser automatisch den Session Cookie mit, worüber die Webanwendung die Authentizität der Anfrage verifiziert und die Änderung durchführt.&amp;quot;&lt;br /&gt;
&lt;br /&gt;
== G 5.WA18 Clickjacking (Matthias) ==&lt;br /&gt;
&lt;br /&gt;
Hier stellt sich mir nur die allgemeine Frage, ob Clickjacking, bzw. der Schutz davor tatsächlich einem Grundschutz zuzurechnen ist. Persönlich würde ich dies nicht tun.&lt;br /&gt;
&lt;br /&gt;
== M 2.WA02 Dokumentation der Architektur von Web-Anwendungen (Matthias) ==&lt;br /&gt;
&lt;br /&gt;
; Verantwortlich für die Umsetzung&lt;br /&gt;
Hier wäre auch die Nennung des &amp;quot;Architekten&amp;quot; sinnvoll&lt;br /&gt;
 &lt;br /&gt;
; Fehlende Bestandteile der Dokumentation:&lt;br /&gt;
* Schutzbedarf des Systems sowie der verarbeiteten Daten&lt;br /&gt;
* Schützenswerte Daten und Funktionen (Assets)&lt;br /&gt;
* Betriebliche Anforderungen an die Sicherheit bzw. eingesetzte Plattform&lt;br /&gt;
* Dokumentierte Konfigurationseinstellungen &lt;br /&gt;
* BIA (RTO, RPO)&lt;br /&gt;
* Schnittstellen&lt;br /&gt;
* Trust Boundaries&lt;br /&gt;
* Akteure (bzw. Trust Level)&lt;br /&gt;
* Sicherheitsannahmen&lt;br /&gt;
* Geltende Compliance-Anforderungen (BDSG, PCI DSS, etc.)&lt;br /&gt;
&lt;br /&gt;
; Benutzermanagement&lt;br /&gt;
&lt;br /&gt;
Wenn damit das Identity Management gemeint ist, gehört das Dokumentiert, ist aber keine Sicherheitsfunktion. Oder ist hiermit das Rollen- und Berechtigungskonzept gemeint? Grenzt sich aus meiner Sicht schwer mit dem Thema Authentisierung ab. &lt;br /&gt;
&lt;br /&gt;
; Prüffragen&lt;br /&gt;
&lt;br /&gt;
Hier fehlt etwas in Bezug auf Sicherheitsanforderungen. Beispiel: &amp;quot;Werden Sicherheitsanforderungen an den Betrieb während der Entwicklung abgestimmt und dokumentiert&amp;quot;&lt;br /&gt;
&lt;br /&gt;
== M 2.WA12 Entwicklung und Erweiterung von Anwendungen (Markus) ==&lt;br /&gt;
; &amp;quot;Es sollte darauf geachtet werden, dass Sicherheitsanforderungen&lt;br /&gt;
vollständig durch Sicherheitsmechanismen erfüllt und zur Erstellung von&lt;br /&gt;
Testfällen festgehalten werden.&amp;quot; --&amp;gt; Bessere Formulierung würde aussagen, dass die Sicherheitsanforderungen durch Testfälle verifiziert werden.&lt;br /&gt;
&amp;quot;(z. B. durch Kommentare im&lt;br /&gt;
Quelltext). Somit ist der Quelltext zu einem&amp;quot; --&amp;gt; Das ist kein empfehlenswerter Programmierstiel! Raus mit diesem Kommentar&lt;br /&gt;
;&amp;quot;Zum Schutz vor dem Verlust bereits entwickelter und verworfener&lt;br /&gt;
Lösungen sowie zu Dokumentationszwecken sollte die Historie der&lt;br /&gt;
Änderungen festgehalten werden (z. B. durch ein Revisionssystem).&amp;quot; --&amp;gt; Auch diesen Absatz können wir streichen - Kein professioneller Programmierer arbeitet ohne Versionierugssystem.&lt;br /&gt;
;&amp;quot;Bei Web-Anwendung sollten die Webseiten auf Konformität zu dem&lt;br /&gt;
verwendeten Standard (z. B. HTML-Standard) getestet werden. Dadurch&lt;br /&gt;
können unvorgesehene Seiteneffekte aufgrund einer Fehlinterpretation&lt;br /&gt;
seitens der Browser vermieden werden.&amp;quot; --&amp;gt; Könnte man noch um &amp;quot;Die Software ist in möglichst vielen Browsern zu testen&amp;quot; erweitern.&lt;br /&gt;
;Generell geht der Autor leider nicht auf die Rollen &amp;amp; Rechte Verteilung ein. Mir fehlt der Hinweis, das es eine personelle Trennung zwischen Entwicklung, Test und Betrieb geben muss.&lt;br /&gt;
;Zum Thema Wartung / Betrieb --&amp;gt; Hier wird keine Aussage getroffen bezüglich Log_Files. Dieses Thema kann kritische Auswirkungen haben, Bsp.: logging ganzer HTTP-Requests im LogLevel=Debug.&lt;br /&gt;
; &amp;quot;Produktspezifische Sicherheitsfunkionalität&amp;quot; - Dieser Absatz ist gefährlich - der Angreifer ist nicht zur Verwendung dies Zielbrowsers gezwungen. Deshalb können Browser-spez. Sicherheitsfunktionen nur als Add-ON gewertet werden.&lt;br /&gt;
; &amp;quot;Festlegung der Entwicklungsumgebung&amp;quot; - Dieser Absatz geht nicht auf die zu verwendenden Testdaten ein. Der Hinweis, dass Live-Daten / Kundendaten nichts in Test- &amp;amp; Entwicklungsumgebungen zu suchen haben fehlt!!!&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== M 2.WA24 Web-Tracking (Matthias) ==&lt;br /&gt;
&lt;br /&gt;
; Letzter Absatz: &amp;quot;Falls eine Auswertung von Nutzerdaten, insbesondere personenbezogener Daten, .. &amp;quot;&lt;br /&gt;
&lt;br /&gt;
Hier sollte denke ich besser von personenbeziehbaren Daten gesprochen Werten. Dies betrifft etwa die Zuordnung von Surfverhalten zu einer bestimmten Person. Dies sollte stets nach den Prinzipien Datensparsamkeit und Datenvermeidung, Erforderlichkeit, sowie Zweckbindung erfolgen. Ist Webtracking nicht personenbeziehbar ist dies kein Thema für den Datenschutz.&lt;br /&gt;
&lt;br /&gt;
== M 4.WA04 Authentisierung bei Web- Anwendungen (Matthias) ==&lt;br /&gt;
&lt;br /&gt;
: Verantwortlich fuer Umsetzung &lt;br /&gt;
sollte in erster Linie beim Architekturen und in zweiter beim Entwickler liegen&lt;br /&gt;
; Vermischung von Authentisierung und Session Management &lt;br /&gt;
&lt;br /&gt;
Bei diesem Baustein findet eine ziemlich große Vermischung von Anforderung an die Authentisierung und das erst in &amp;quot;M 4.WA06 Session-Management bei Web- Anwendungen&amp;quot; behandelte Session Management statt (Beispiel: &amp;quot;Remember-Me-Funktion&amp;quot;). Beide Themen sollten sinnvollerweise getrennt voneinander zu betrachten und aufeinander zu beziehen.&lt;br /&gt;
&lt;br /&gt;
; Verwendung von Frameworks&lt;br /&gt;
&lt;br /&gt;
Die Anforderung ist schon ein wenig eingeschränkt. Besser passt hier denke ich die &amp;quot;Abbildung der Authentisierung über Standardkomponenten (Bibliotheken oder Frameworks)&amp;quot;. &lt;br /&gt;
&lt;br /&gt;
; Remember-Me-Funktion&lt;br /&gt;
&lt;br /&gt;
Siehe oben, gehört zum Session Management. Das ließt sich im übrigen so, als ob eine Webanwendung Credentials auf dem Client abhängt. &lt;br /&gt;
&lt;br /&gt;
; Grenzwerte für gescheiterte Anmeldeversuche&lt;br /&gt;
&lt;br /&gt;
Diese Empfehlung ist allgemein falsch, da sie sehr von der betrachteten Anwendung abhängt. Besser wäre hier allgemein von Mechanismen zur Verhinderung von automatisierten Angriffen zu sprechen (Anti-Automatisierung). &lt;br /&gt;
&lt;br /&gt;
Etwa umsetzbar durch&lt;br /&gt;
* Sperrung nach x Anmeldeversuchen&lt;br /&gt;
* Throttling&lt;br /&gt;
* Captchas&lt;br /&gt;
* Sicherheitsfragen&lt;br /&gt;
&lt;br /&gt;
Das allgemeine Sperren kann leicht für das gezielte Aussperren von Benutzern (User Lockout) verwendet werden. Was etwa bei Trading-Anwendungen nicht funktioniert.&lt;br /&gt;
&lt;br /&gt;
; Automatisiertes Zurücksetzen von Authentisierungsdaten&lt;br /&gt;
&lt;br /&gt;
Würde ich besser als &amp;quot;Passwort-Reset&amp;quot; bezeichnen.&lt;br /&gt;
&lt;br /&gt;
Weiterhin fehlt hier der Hinweis, dass statt ein automatisiertes Zurücksetzen, ein Mechanismus zu empfehlen ist, bei dem über ein hinterlegtes Sicherheitsmerkmal (Handy-Nummer oder E-Mail-Adresse) vom Benutzer zunächst eine Verifikation durchgeführt wird. Beispielsweise durch einen erhaltenen Link. Erst dann darf eine Änderung des Passwortes durch den Benutzer erfolgen.&lt;br /&gt;
&lt;br /&gt;
; Registrierung nicht behandelt&lt;br /&gt;
&lt;br /&gt;
Es existiert hier kein Punkt, der die sichere Implementierung von Benutzerregistrierungen behandelt.&lt;br /&gt;
&lt;br /&gt;
; Verweis auf Externalisierung fehlt.&lt;br /&gt;
&lt;br /&gt;
Statt die Authentisierung selbst durchzuführen kann eine Anwendung hierzu auf eine externe Komponente (Beispiel: SiteMinder oder Kerberos) zurückgreifen.&lt;br /&gt;
&lt;br /&gt;
; Verweis auf Behandlung von Credentials fehlt&lt;br /&gt;
&lt;br /&gt;
Auch wenn das  in &amp;quot;M 4.WA15 Schutz vertraulicher Daten bei Web- Anwendungen&amp;quot; ausführlich behandelt wird, sollte in diesem Baustein bereits auf den angemessenen Schutz von Authentisierungsdaten bei Übertragung und Speicherung hingewiesen werden.&lt;br /&gt;
&lt;br /&gt;
== M 4.WA05Umfassende Ein- und Ausgabevalidierung bei Web-Anwedungen (Markus) ==&lt;br /&gt;
; &amp;quot;Ablehnung der Daten im&lt;br /&gt;
Fehlerfall&amp;quot; --&amp;gt; Hier könnte man noch auf Tar-Pits eingehen - nur ein Vorschlag.&lt;br /&gt;
&lt;br /&gt;
== M 4.WA06Session-Management bei Web-Anwendungen (Markus, Matthias) ==&lt;br /&gt;
; &amp;quot;Übertragung der SessionID mittels GETRequest&amp;quot; --&amp;gt; Hier fehlt der Hinweis, dass die Lebensdauer dieser SessionIds kurz/kürzer sein muss, als im Falle der Speicherung im Cookie.&lt;br /&gt;
&lt;br /&gt;
([[User:Mrohr|Matthias]]) Die Anmerkung verstehe ich ehrlich gesagt ueberhaupt nicht, zumal das SM haeufig transparent zwischen Cookies und URL Rewriting wechselt. Wozu soll das gut sein? Wie soll das geschehen? Idealerweise sollte die Session ID niemals in die URL geschrieben werden, das sollte eigentlich genuegen.&lt;br /&gt;
&lt;br /&gt;
; &amp;quot;Verschlüsselte Übertragung von SessionIDs&amp;quot; --&amp;gt; Hier fehlt der Hinweis auf den Beast-Exploit. TLS Version &amp;gt; 1.0 verwenden!&lt;br /&gt;
&lt;br /&gt;
([[User:Mrohr|Matthias]]) Solange hier nicht auf eine explizite TLS Version eingegangen wird, sollte meiner grossen Ueberzeugung nach hier auch auf keine Exploits etc. eingagen werden, das gehoert an andere Stelle.&lt;br /&gt;
&lt;br /&gt;
; ([[User:Mrohr|Matthias]]) Weiterhin:&lt;br /&gt;
&lt;br /&gt;
 Es dürfen keine extern bekannten oder erratbaren Daten (z. B. IP-Adresse, Uhrzeit) in die Berechnung der SessionID einfließen.&lt;br /&gt;
&lt;br /&gt;
Die Aussage finde ich etwas problematisch, wichtiger ist, dass die Entropie ausreichend hoch ist. Haeufig werden etwa IPs von Load Balancern in die Session ID hineingeschrieben.&lt;br /&gt;
&lt;br /&gt;
 - Domain (z. B. webapp.domain.tld),&lt;br /&gt;
 - Path (z. B. /webapp/),&lt;br /&gt;
 - Secure und&lt;br /&gt;
 - HttpOnly.Beschränkte Sitzungsdauer&lt;br /&gt;
&lt;br /&gt;
Das sieht so aus, als ob es empfehlenswert ist, das Domain-Tag zu verwenden, das ist es sicherlich nicht. Was macht hier der Hinweis &amp;quot;Beschraenke Sizuungsdauer&amp;quot;?&lt;br /&gt;
&lt;br /&gt;
== M 4.WA07Fehlerbehandlung durch Web-Anwendungen (Markus, Matthias) ==&lt;br /&gt;
; Konsistenter / Inkonsistener Zustand einer Webanwendung und der daraus resultierende Datenverlust: Hier fehlen mir die Punkte: DOS, Priv.Escalation, CodeExecution.&lt;br /&gt;
([[User:Mrohr|Matthias]]) Vorschlag &amp;quot;und somit der Schutz der Daten&amp;quot; aendern in &amp;quot;und somit ETWA der Schutz der Daten&amp;quot; korrigieren&lt;br /&gt;
&lt;br /&gt;
; Vermeidung vertraulicher Informationen in Fehlermeldungen --&amp;gt; Fehlermeldungen sollten ebenfalls eine Systeminformationen preisgeben (Softwareversion, Patchlevel, etc.)&lt;br /&gt;
([[User:Mrohr|Matthias]]) Ich glaube hier ist es wichtig zu unterscheiden, wo die Fehlermeldung ausgegeben bzw. wem diese angezeigt wird. Das wird in diesem Modul garnicht so recht unterscheiden. Der Autor meint glaube ich, wie Fehlermeldungen durch die Webanwendung angezeigt werden. In dem Fall hat er recht. Du meinst glaube ich eher, wie Fehlermeldungen protokolliert werden. In dem Fall hast du natuerlich auch recht. Das in dem Text verwendete Wort &amp;quot;ausgeben&amp;quot; ist nicht unbedingt eindeutig und sollte genauer spezifiziert werden.&lt;br /&gt;
&lt;br /&gt;
; Abbruch des Vorgangs nach Auftreten eines Fehlers --&amp;gt; TarPits scheinen dem Autor umbekannt zu sein :)&lt;br /&gt;
([[User:Mrohr|Matthias]]) Stimmt, wobei sich diese ja auch nur auf einen sehr bestimmten Fehlertypen beziehen. Generell laesst sich so etwas unterscheiden, wenn man Fehler-Domains erstellt. Beispiel: Technisch-Unerwartet = Abbruch, Technisch-Erwartet = Fehlermeldug/Tear Pit, etc.&lt;br /&gt;
&lt;br /&gt;
; &amp;quot;Werden Fehler möglichst von der gleichen Komponente behandelt, in der&lt;br /&gt;
der Fehler aufgetreten ist?&amp;quot; --&amp;gt; Das &amp;quot;möglichst&amp;quot; sollten wir streichen.&lt;br /&gt;
([[User:Mrohr|Matthias]]) Hm, der Aussage kann ich nicht ganz zustimmen, bzw. es haengt von dem Begriff &amp;quot;Komponente&amp;quot; ab. Eine Anwendungskomponente kann serwohl bewusst bestimmte Exceptions werfen, die von der einbindenden Komponente behandelt werden muessen.&lt;br /&gt;
&lt;br /&gt;
== M 4.WA08Schutz vor automatisierter Nutzung von Web-Anwendungen (Markus, Matthias) ==&lt;br /&gt;
; &amp;quot;Brute-Force-&lt;br /&gt;
Angriffe (z. B. Erraten von Zugangsdaten) und Enumeration-Angriffe (z. B.&lt;br /&gt;
automatisiertes Ermitteln von gültigen Login-Namen)&amp;quot; -- die Beispiele sind identisch - besser Beispiele suchen, z.b. URL-Enumeration&lt;br /&gt;
&lt;br /&gt;
([[User:Mrohr|Matthias]]) Das sehe ich anders. Brute-Forcing bezieht auf Passwoerter und Enumeration auf Benutzernamen, etwa durchs hochzaehlen. Auch wenn ich zustimmen muss, dass die nicht ganz gluecklich gewaehlt wurden. Stann &amp;quot;Erraten von Zugangsdaten&amp;quot; wuerde ich besser von &amp;quot;Erraten von Passwoertern&amp;quot; sprechen. Oder wie gesagt gleich auch auf andere Beispiele (etwa Object ID Enumeration) beziehen.&lt;br /&gt;
&lt;br /&gt;
== M 4.WA11Sichere Konfiguration von Web-Anwendungen (Markus, Matthias) ==&lt;br /&gt;
; &amp;quot;Sicherer Umgang mit TLS/SSL&amp;quot; -- Hier fehlt der Hinweis, dass TLS-1.0 gebrochen ist&lt;br /&gt;
; &amp;quot;Zeichenkodierungskonfiguration&amp;quot; -- Ein Whitelisting abhängig von der Encodierung wäre ein weiterer Vorschlag&lt;br /&gt;
; &amp;quot;Restriktive Dateisystemberechtigungen&amp;quot; -- auch wenn es ein klassiker ist - der AS sollte ebenfalls mit von einem eingeschränkten Nutzer gestartet werden und nicht als root&lt;br /&gt;
; Administration Consolen:zur Ergänzen: Wenn diese nicht benötigit, sollten derartige Applikationen nicht deployed werden, unabhängig von möglichen Zugangsbeschränkungen.&lt;br /&gt;
&lt;br /&gt;
([[User:Mrohr|Matthias]]) Sorry, meiner Meinung nach hat die Bewertung von Kryptoverfahren hier abslut nichts zu suchen.Stattdessen sollte hier auf den entsprechenden [https://www.bsi.bund.de/ContentBSI/Publikationen/TechnischeRichtlinien/tr02102/index_htm.html Empfehlung des BSI] verwiesen werden, auch wenn dieses Dokument derzeit noch etwas outdated zu sein scheint.&lt;br /&gt;
&lt;br /&gt;
== M 4.WA13Kontrolliertes Einbinden von Daten und Inhalten bei Web-Anwendungen (Markus) ==&lt;br /&gt;
; Datei-Upload: Bei einem Upload werden Dateien durchaus in TEMP-Verzeichnissen gesammelt und danach weiterverarbeitet. Diese TEMP-Verzeichnisse sind im Rahmen einer Sicherheitsanalyse zu betrachten -&amp;gt; Möglicher (unbefugter) Zugriff auf weitere Uploads&lt;br /&gt;
; Upload komprimierter Dateien / großer Dateien birgt die Gefahr von DOS Angriffen&lt;br /&gt;
; Upload von Dateien kann bei weiterem Parsing zu Speicherengpässen führen --&amp;gt; DOS-Angriffe auf Thread-Local etc.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== M 4.WA14Restriktive Herausgabe sicherheitsrelevanter Informationen bei Web-Anwendungen (Markus, Matthias) ==&lt;br /&gt;
OK - Keine Anmerkungen von mir.&lt;br /&gt;
&lt;br /&gt;
([[User:Mrohr|Matthias]]) Von mir schon;)&lt;br /&gt;
&lt;br /&gt;
; ([[User:Mrohr|Matthias]]) Vermeidung von Kommentaren in ausgelieferten Webseiten&lt;br /&gt;
&lt;br /&gt;
Das ist leider total falsch, wir brauchen haeufig Komentare, aus Kompatibilitaetsgruenden. So wird etwa der JavaScript-Block haeufig auskommentiert.&lt;br /&gt;
&lt;br /&gt;
Wurde stattessen besser von sicherheitsrelevanten Kommentaren sprechen und als Massnahme generell Entwicklerkommentare ueber Sprachkonstruktre (etwa JSP) durchzufuehren.&lt;br /&gt;
&lt;br /&gt;
; ([[User:Mrohr|Matthias]]) Löschen nicht benötigter Dateien&lt;br /&gt;
&lt;br /&gt;
Hier wurde ich ggf. Dateien von Versionisierungstools (etwa Subversion) erwaehnen, das sehen wir schon recht haeufig.&lt;br /&gt;
&lt;br /&gt;
Statt Dateien einfach nur zu loeschen (was in der Praxis haeufig nicht so einfach ist) bietet es sich zudem an, den Zugriff auf bestimmte Dateien oder Dateitypen generell zu sperren, etwa mittels ACL im Apache.&lt;br /&gt;
&lt;br /&gt;
; ([[User:Mrohr|Matthias]]) Gibt die Web-Anwendung ausschließlich neutrale Fehlermeldungen aus und sind diese im Quelltext identisch? {E: C}&lt;br /&gt;
&lt;br /&gt;
Persoenlich verstehe ich das nicht. Wieseo neutrale Fehlermeldung? Das macht fuer mich nur beim Login Sin. Hierzu existiert in dem Text auch keinerlei Bezug. Ich wuerde das daher besser entfernen und im Rahmen der Fehlerbehandlung diskutieren. Mindestens sollte hier jedoch besser von &amp;quot;sicherheitsunbedentlichen Fehlermeldungen&amp;quot; oder so gesprochen werden.&lt;br /&gt;
&lt;br /&gt;
; ([[User:Mrohr|Matthias]]) Wird der Referrer bei Verlassen der Web-Anwendung (z. B. durch einen Link auf eine externe Seite) gefiltert?&lt;br /&gt;
&lt;br /&gt;
Diesen Punkt sehe ich als sehr Fallabhengig an. Es kann fuer seiten durchaus wuenschenswert sein, dass der Referer weitergegeben wird. Der Referer sollte natuerlich keine sensiblen Informationen enthalten, was ja an anderer Stelle (etwa Session Management) vorgegeben wird bzw. gegeben werden sollte.&lt;br /&gt;
&lt;br /&gt;
== M 4.WA15Schutz vertraulicher Daten bei Web-Anwendungen (Markus, Matthias) ==&lt;br /&gt;
; Sichere kryptographische Algorithmen:&lt;br /&gt;
 Hier fehlt mir eine Liste der aktuelle als sicher geltenden Verfahren.&lt;br /&gt;
([[User:Mrohr|Matthias]]) Am Besten Referenz auf [https://www.bsi.bund.de/ContentBSI/Publikationen/TechnischeRichtlinien/tr02102/index_htm.html https://www.bsi.bund.de/ContentBSI/Publikationen/TechnischeRichtlinien/tr02102/index_htm.html]&lt;br /&gt;
&lt;br /&gt;
; Schlüssel&lt;br /&gt;
 Das die Schlüssel bestimmten Formaten entsprechen müssen ist ok - aber das Schlüsselmanagement wird gar nicht besprochen?&lt;br /&gt;
; Schutz der Daten im Browsercache&lt;br /&gt;
 Skripte und Browserplugins können ebenfalls auf den Browsercache zugreifen - diese werden hier nicht erwähnt.&lt;br /&gt;
&lt;br /&gt;
([[User:Mrohr|Matthias]]) Weiterhin entsprechen die vorgeschlagenen HTTP Headern nicht dem Best Practice:&lt;br /&gt;
&lt;br /&gt;
 Cache-control: no-cache, no-store&lt;br /&gt;
 Pragma: no-cache&lt;br /&gt;
 Expires: -1&lt;br /&gt;
&lt;br /&gt;
([[User:Mrohr|Matthias]]) Die Empfehlung hinsichtlich des manuellen Leerens des Browsercaches sollte wenn dann nur bei Anwendungen mit sehr hohem Schutzbedarf in Erwaegung gezogen werden. Wichtiger waere da schon eher die richtigen Cache-Header zu verwenden. Solche Empfehlungen ihm Rahmen des Grundschutzes aber wirklich nichts zu suchen. &lt;br /&gt;
&lt;br /&gt;
; Maskierung von Passwörtern &lt;br /&gt;
 Dies schützt bei der Eingabe nur vor ShoulderSurfing nicht vor Skripten oder Plugins die diese an andere Server posten.&lt;br /&gt;
&lt;br /&gt;
([[User:Mrohr|Matthias]]) Das ist voellig korrekt. Aber inwieweit ist die Aussage Passwort-Felder zu verwenden fehlerhaft bzw. hier unzureichend beschrieben?&lt;br /&gt;
&lt;br /&gt;
; Sicherung von Zugangsdaten:&lt;br /&gt;
 Zugangsdaten in einer Datei abzulegen - wenn auch ausserhalb des WebRoots ist keine gute Idee.&lt;br /&gt;
([[User:Mrohr|Matthias]]) Es ist sicher nicht die schoenste Variante, es laesst sich aber nunmal in vielen Faellen nicht vermeiden. Deshalb fordert der [http://code.google.com/p/owasp-asvs/wiki/Verification_V2 ASVS] hier etwa auch nicht mehr. Fuer den hier angestreben Grundschutz sollte das meiner Meinung nach ausreichen.&lt;br /&gt;
; Schutz von Quelltexten:&lt;br /&gt;
 Hier würde ich property files mit aufnehmen. der hinweis auf web-inf/classes fehlt - warum?&lt;br /&gt;
 Bei include-befehlen sind die pfadangaben zu überdenken.&lt;br /&gt;
([[User:Mrohr|Matthias]]) Wuerde property Dateien allgemein den Konfigurationsdateien zuordnen. Der Begriff &amp;quot;Einzubindende Dateien&amp;quot; ist mir allrdings Neu&lt;br /&gt;
&lt;br /&gt;
([[User:Mrohr|Matthias]]) Weiterhin, fehlt ein genereller Bezug auf HTML 5 WebStorage, LSOs etc. Zumindest in abstrakter Form, so dass diese dadurch indirekt addresiert werden. Egal, in dem relevanten Punkt will der Autor meiner Meinung nach nur einige Beispiele nennen, das sollte keinen Anspruch auf Vollsteandigkeit haben muessen.&lt;br /&gt;
&lt;br /&gt;
; ([[User:Mrohr|Matthias]]) - Durch dieses Attribut wird die Gültigkeit des Cookies auf die Domäne der Web-Anwendung beschränkt.&lt;br /&gt;
Nein, das ist leider total falsch. Das Domain-Attribut stellt eine Aufweichung der Cookie-Gueltigkeit dar und nicht anders herum. Gewoehlich sind Cookies immer Host-Cockies und das sollte auch so bleiben. Die Empfehlung sollte entfernt werden.&lt;br /&gt;
&lt;br /&gt;
== M 4.WA16Zugriffskontrolle bei Web-Anwendungen (Markus) ==&lt;br /&gt;
; Zugriffskontrolle via Frameworks:&lt;br /&gt;
 Dieser Punkt (Frameworks) wird nur in einem Satz erwähnt. Es werden keine Bespiele gegeben - Das ist zu wenig.&lt;br /&gt;
 Es müssen alle Zugriffe geschützt werden. Eine Protokollierung aller Zugriffe mit den nötigen Informationen ist ebenfalls empfehlenswert.&lt;br /&gt;
; Datei Upload:&lt;br /&gt;
 Die Gefahr eines DOS wird hier nicht erwähnt.&lt;br /&gt;
&lt;br /&gt;
== M 4.WA19Verhinderung von Cross-Site Request Forgery (CSRF, XSRF) (Markus, Matthias) ==&lt;br /&gt;
; Verantwortliche: &lt;br /&gt;
 Entwickler und Admins!&lt;br /&gt;
([[User:Mrohr|Matthias]]) Korrekt, wobei auch in der Reihenfolge&lt;br /&gt;
&lt;br /&gt;
; Anti-CSRF-Token in hidden fields:&lt;br /&gt;
 Das ist keine gute Idee. Ich würde das streichen!&lt;br /&gt;
&lt;br /&gt;
([[User:Mrohr|Matthias]]) Watt? Anti-CSRF-Tokens in Hidden Fields sind die Standard-Massnahme. Wie denn sonst? Bitte nicht streichen!!! &lt;br /&gt;
&lt;br /&gt;
([[User:Mrohr|Matthias]]) Die Technik bei der die Session ID als Anti-CSRF-Token verwendet wird, wird als Double-Cookie Submit bezeichnet, das sollte hier referenziert werden.&lt;br /&gt;
&lt;br /&gt;
; Umgehung von Schutzmechanismen:&lt;br /&gt;
 Man in the middle hat keinen direkten Bezug zu CSRF! Das würde ich streichen.&lt;br /&gt;
([[User:Mrohr|Matthias]]) Der Hinweis ist korrekt. Wovon der Autor hier spricht ist Session Replay nicht CSRF.&lt;br /&gt;
&lt;br /&gt;
; Frameworks:&lt;br /&gt;
 Gute Idee - aber es gibt auch Features in den ApplicationServern die CSRF unterbinden - warum wird das nicht besprochen?&lt;br /&gt;
&lt;br /&gt;
([[User:Mrohr|Matthias]]) Sehe ich persoenlich nicht so, da CSRF primaer ein Applikations-Fehler ist, und auch in der Applikation und nicht im Environment (AppServer) geloest werden sollte. Auch wenn das manchmal ggf. die einzig machbare Loesung darstellt.&lt;br /&gt;
&lt;br /&gt;
([[User:Mrohr|Matthias]]) Was generell fehlt, ist ein Hinweis darauf, dass schreibende Requests generell per HTTP Post abgewickelt werden sollten, da HTTP Get keine &amp;quot;Safe Method&amp;quot;  (siehe HTTP 1.1, RFC 2616) ist.&lt;br /&gt;
&lt;br /&gt;
== M 4.WA20Sicherer Entwurf der Logik von Web-Anwendungen (Markus, Matthias) ==&lt;br /&gt;
; Rollbacks:&lt;br /&gt;
 Tritt ein Fehler auf muss die Applikation einen konsistenten Datenstand zurück lassen. Das wird hier nicht erwähnt.&lt;br /&gt;
; RaceConditions:&lt;br /&gt;
 Fehler in der Geschäftslogik können auch durch zwei gleichzeitige Sessions auf einer Webapplikation auftreten - das wird hier nicht besprochen.&lt;br /&gt;
&lt;br /&gt;
([[User:Mrohr|Matthias]]) Ehrlich gesagt kann ich nicht ganz nachvollziehen, was der Sichere Entwurf der Logik von Web-Anwendungen mit dem Verzicht auf aktive Inhalte zu tun hat. Unabhaengig davon sollte man solche unsinnigen Aussagen im Jahre 2012 nicht mehr treffen, damit macht man sicht nur laecherlich.&lt;br /&gt;
&lt;br /&gt;
Nichts desto trotz, was hier als &amp;quot;echte&amp;quot; Massnahmen erwaehnt werden sollte sind:&lt;br /&gt;
* Verhinderung von Race Conditions, aber nicht nur durch Concurrent Sessions sondern auch durch Singletons (TOCTOU)&lt;br /&gt;
* Enforcements von Workflows, etwa durch die Verwendung von State Machines oder Request Tokens (auch bekannt als Site Usage Enforcement)&lt;br /&gt;
* Fail Securely (bzw. Verweis)&lt;br /&gt;
* Serverseitige Abbildung der Anwendungslogik, zumindest wenn diese sicherheitsrelevant sit&lt;br /&gt;
&lt;br /&gt;
== M 4.WA22Verhinderung der Blockade von Ressourcen (DoS) bei Web-Anwendungen (Markus, Matthias) ==&lt;br /&gt;
; Datenspeicher:&lt;br /&gt;
 Neben dem Datenspeicher sollte auch der RAM-Verbrauch pro Thread der Applikation limitiert werden.&lt;br /&gt;
([[User:Mrohr|Matthias]]) Stimmt, ich wuerde hier sogar allgemein von Ressourcenverbrauch am Beispiel RAM und Datenspeicher, sprechen&lt;br /&gt;
&lt;br /&gt;
; Voraggregation von Daten / Caching&lt;br /&gt;
 Dieser Punkt fehlt: Stark ressourcen belastende Anfragen können auch in Lastarmen Zeiten vorberechnet werden.&lt;br /&gt;
([[User:Mrohr|Matthias]]) Stimmt, koennte noch als Anmerkung bei &amp;quot;Cachen von Anfragen&amp;quot; hinzugefuegt werden&lt;br /&gt;
&lt;br /&gt;
; ([[User:Mrohr|Matthias]]) Prueffrage: &amp;quot;Wird ein möglicher Überlauf von Protokolldaten... verhindert&amp;quot;&lt;br /&gt;
&lt;br /&gt;
Ist eine etwas eingeschrankte Sicht. Wurde hier eher von Ueberlauf von Speicherplaz zu Beispiel im Rahmen der Protokollierung sprechen&lt;br /&gt;
&lt;br /&gt;
; ([[User:Mrohr|Matthias]]) Durchfuehrung von Lasttests zur Identifikation ressourcenintensiver Operationen&lt;br /&gt;
&lt;br /&gt;
Der Hinweis waere ggf. erwahnenswert&lt;br /&gt;
&lt;br /&gt;
; ([[User:Mrohr|Matthias]]) Hinweis auf nicht-angemeldeten Bereich&lt;br /&gt;
&lt;br /&gt;
Das Risiko durch rechenintensive Operationen durch einen DoS betroffen zu sein ist natuerlich fuer gewoehlich um so groesser, wenn diese im anonymen Bereich angeboten wird. Der Hinweis ware ggf. ebenfalls hilfreich.&lt;br /&gt;
&lt;br /&gt;
== M 4.WA25Verhinderung von Clickjacking (Markus, Matthias) ==&lt;br /&gt;
Ok - das passt soweit.&lt;br /&gt;
&lt;br /&gt;
([[User:Mrohr|Matthias]]) Stimmt, auch wenn ich &amp;quot;Angreifer&amp;quot; in dem Beispiel eher als &amp;quot;Webseitenbetreiber&amp;quot; beschreiebn wuerde, da er nicht wirklich aktiv einen Angriff durchfuehrt, oder? Bitte nochmal ueber meinen Hinweis aus G 5.WA18 nachdenken: Ist Clickjacking-Schutz tatsaechlich Grundschutz? Ich bin mir da selber nicht so wirklich sicher.&lt;br /&gt;
&lt;br /&gt;
== M 5.WA21Sichere Anbindung von Hintergrundsystemen an Web-Anwendungen (Markus, Matthias) ==&lt;br /&gt;
; Verantwortliche:&lt;br /&gt;
 Architekten fehlen. Entwickler müssen die Views umsetzen und die Datasource entsprechend einbinden - die fehlen hier ebenfalls.&lt;br /&gt;
; DirectorySystem Beispiel:&lt;br /&gt;
 Das DirectorySystem wird in dem angegeben Beispiel zum Single Point of Failure - das wird verschwiegen.&lt;br /&gt;
; Firewalls:&lt;br /&gt;
 Das sind fachlich-blinde Systeme. Was ist mit WAFs / IDS / IPS etc.?&lt;br /&gt;
([[User:Mrohr|Matthias]]) Stimmt, das hat in diesem Baustein nichts zu suchen&lt;br /&gt;
&lt;br /&gt;
; ([[User:Mrohr|Matthias]]) Typische Hintergrundsysteme&lt;br /&gt;
Hier fehlt irgendwie &amp;quot;Middleware&amp;quot;, die ist denke ich nicht immer Legacy&lt;br /&gt;
&lt;br /&gt;
== M 5.WA23Systemarchitektur einer Web-Anwendung (Markus, Matthias) ==&lt;br /&gt;
; Verantwortliche:&lt;br /&gt;
Auch hier fehlend wieder die Architekten. &lt;br /&gt;
([[User:Mrohr|Matthias]]) Stimmt, habe das Dokument mal komplett durchgesucht.Tatsaechlich wird der &amp;quot;Architekt&amp;quot; niemals genannt, das scheint also eher ein grundseatzliches Problem zu sein. Der Administrator hat hier aber nun wirklich nichts zu suchen.&lt;br /&gt;
&lt;br /&gt;
; Virtualisierung:&lt;br /&gt;
Virtualisierung bietet weitere Angriffsvektoren (z.B.: Hypervisor) die eine &amp;quot;Blech&amp;quot;Farm nicht bietet.&lt;br /&gt;
&lt;br /&gt;
([[User:Mrohr|Matthias]]) Genau, wobei auch der ganze Bereich geshareter Plattformen (z.B. By SharePoint) hier fehlt.&lt;/div&gt;</summary>
		<author><name>Mrohr</name></author>	</entry>

	<entry>
		<id>https://wiki.owasp.org/index.php?title=Talk:OWASP_Review_BSI_IT-Grundschutz_Baustein_Webanwendungen&amp;diff=130212</id>
		<title>Talk:OWASP Review BSI IT-Grundschutz Baustein Webanwendungen</title>
		<link rel="alternate" type="text/html" href="https://wiki.owasp.org/index.php?title=Talk:OWASP_Review_BSI_IT-Grundschutz_Baustein_Webanwendungen&amp;diff=130212"/>
				<updated>2012-05-21T15:55:57Z</updated>
		
		<summary type="html">&lt;p&gt;Mrohr: /* M 4.WA11Sichere Konfiguration von Web-Anwendungen (Markus) */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Since it's about a review of a document in German, all the discussions will be done in German :-)&lt;br /&gt;
&lt;br /&gt;
Diskussionen rund um den Review des &amp;quot;IT-Grundschutzbausteins Webanwendungen&amp;quot; finden hier statt, sinnvollerweise auf Deutsch :-)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Vorschlag für Kriterien, die an unser Review angelegt werden sollten (.kai) ==&lt;br /&gt;
&lt;br /&gt;
* Der Baustein soll alle wichtigen Themen der Entwicklung sicherer&lt;br /&gt;
Webanwendungen enthalten.&lt;br /&gt;
&lt;br /&gt;
* Der Baustein soll die verschiedenen Phasen der Software-Entwicklung&lt;br /&gt;
vollständig abdecken.&lt;br /&gt;
&lt;br /&gt;
* Der Baustein soll zwischen verbindlichen, prüfbaren Vorgaben und&lt;br /&gt;
unverbindlichen Empfehlungen sprachlich sauber unterscheiden (hier&lt;br /&gt;
spielt mein Auditorenblick eine Rolle). Vor allem soll der Baustein&lt;br /&gt;
verbindliche Anforderungen auch tatsächlich stellen. Alle&lt;br /&gt;
verbindlichen Anforderungen müssen unabhängig von der jeweiligen&lt;br /&gt;
Umgebung auch umsetzbar sein, d.h. sie müssen entsprechend generisch&lt;br /&gt;
sein.&lt;br /&gt;
&lt;br /&gt;
* Die Maßnahmen sollen nur in (begründbaren) Ausnahmen zu Empfehlungen&lt;br /&gt;
von OWASP im Widerspruch stehen.&lt;br /&gt;
&lt;br /&gt;
* Die Maßnahmen sollen verständlich und anwendbar sein.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== &amp;quot;Hilfsmittel&amp;quot; (Markus, Matthias) ==&lt;br /&gt;
Ich würde das Script zur Vermeidung von Clickjacking wrappen und nicht als losen Skript-block in den Text einbinden - einfach schlechter Programmierstiel diese losen Blöcke.&lt;br /&gt;
Der Zugriff auf das Body-Element mit byTagName-Array[0] ist auch nicht wirklich gut. Ich halte Zugriffe über das DOM (klassisch), bei ID bzw. XPATH für besser. &lt;br /&gt;
&lt;br /&gt;
([[User:Mrohr|Matthias]]) Verwunderlich finde ich aber, dass der Autor zum Einen zwar von der Verwendung von JavaScript vollstaendig abraet, zum Anderen aber eben solches als Best-Practice-Ansatz fuer Click Jacking empfiehlt.&lt;br /&gt;
&lt;br /&gt;
SQL-Injection Characters:&lt;br /&gt;
die Pipe fehlt hier zur Textkonatenierung&lt;br /&gt;
+ / - haben auch eine Bedeutung bei JOINs.&lt;br /&gt;
&lt;br /&gt;
([[User:Mrohr|Matthias]]) Special Character bzw. DB Escaping ist schon recht DB-spezifisch (siehe [https://www.owasp.org/index.php/SQL_Injection_Prevention_Cheat_Sheet SQL Prevention Cheat sheet]). Wozu werden die hier ueberhaupt aufgefuehrt? Um Eingebafilterung nach pot. SQL Injections durchzufuheren, oder um eine eigene Escaping-Funktion zu schreiben? Raus damit!&lt;br /&gt;
&lt;br /&gt;
== &amp;quot;Goldene Regeln&amp;quot; (Matthias) ==&lt;br /&gt;
&lt;br /&gt;
Hier meine Anmerkungen zu diesem Dokument:&lt;br /&gt;
&lt;br /&gt;
; 1. Für mich fehlende Punkte&lt;br /&gt;
* Korrektur der Ursache (Root Cause) von Schwachstellen statt  Verhinderung deren Ausnutzung&lt;br /&gt;
* Bezug auf Minimierung der Angriffsfläche und Least-Privilege-Prinzip&lt;br /&gt;
* Bezug auf Defense-in-Depth-Prinzip&lt;br /&gt;
* Verwendung von getesteten Security APIs (z.B. OWASP ESAPI) statt selbstentwickelter Funktionen&lt;br /&gt;
* Bezug auf Externalisierung von Sicherheitsfunktionen, sowie deklerative vor programmatischer Sicherheit.&lt;br /&gt;
&lt;br /&gt;
; 2. Begriff &amp;quot;Web-Anwendung&amp;quot;&lt;br /&gt;
Würde ich generell durch &amp;quot;Webanwendung&amp;quot; ersetzen.&lt;br /&gt;
&lt;br /&gt;
; 3. Einleitung (&amp;quot;Web-Anwendungen stellen Funktionalität zur Verfügung, ...&amp;quot;)&lt;br /&gt;
&lt;br /&gt;
Wozu dient dieser Satz?&lt;br /&gt;
&lt;br /&gt;
; 4. &amp;quot;Die Architektur der Web-Anwendung ist im Sicherheitskonzept zu  dokumentieren.....&amp;quot; &lt;br /&gt;
&lt;br /&gt;
Ich fände es sinnvoller, wenn hier von der &amp;quot;Sicherheitsarchitektur&amp;quot; gesprochen wird, welche etwa neben den sicherheitsrelevanten Datenflüssen, sensible Komponenten, Entry Points, Akteure architekturelle Security Controls wie Authentisierung, Kryptographie und natürlich die Trust Boundaries beinhaltet.&lt;br /&gt;
&lt;br /&gt;
; 5. &amp;quot;Bei Web-Anwendungen handelt es sich häufig um spezielle Eigenentwicklungen....&amp;quot;&lt;br /&gt;
&lt;br /&gt;
Erstens würde ich hier den geläufigen Begriff &amp;quot;Individualsoftware&amp;quot; verwenden. Zweitens würde ich statt bestimmte SDLC-Phasen vorzugeben (die Begriffe &amp;quot;Softwareverteilung&amp;quot; und &amp;quot;Integration&amp;quot; sind mir bei Webanwendungen bisher noch nicht so häufig untergekommen), besser von der Notwendigkeit sprechen, Sicherheit in allen Entwicklungsphasen zu berücksichtigen, also eines SDLs.&lt;br /&gt;
&lt;br /&gt;
; 6. &amp;quot;Alle Ein- und Ausgaben der Web-Anwendung müssen in eine normalisierte Form überführt werden....&amp;quot;&lt;br /&gt;
&lt;br /&gt;
Normalisierung ist für mich nicht gleich Kanonsierung, auch wenn beide Begriffe häufig als synonym verwendet werden.  Der Unterschied wird in der [http://owasp-esapi-java.googlecode.com/svn/trunk_doc/2.0-rc4/org/owasp/esapi/Encoder.html API-Beschreibung der ESAPI] erklärt. Die Normalisierungs-Funktion ist allerdings schon vor einiger Zeit aus der ESAPI [https://lists.owasp.org/pipermail/esapi-dev/2010-January/000266.html rausgeflogen]. Die generelle Kanonisierung von Ausgaben halte ich dazu für nicht sinnvoll.&lt;br /&gt;
&lt;br /&gt;
Zweitens, finde ich den weiteren Text zwar grundsätzlich formal korrekt, aber so allgemein, dass dieser glaube ich niemandem so richtig etwas bringt.  &lt;br /&gt;
&lt;br /&gt;
Besser fände ich hier Ein- von Ausgabevalidierung grundsätzlich voneinander abzugrenzen. Etwa was ich per Eingabevalidierung (Längenprüfung, Casting, etc. per Whitelisting) und was mit Ausgebavalidierung (Enkodierung, Escaping, Parametrisierung) machen muss und kann.&lt;br /&gt;
&lt;br /&gt;
Eingabedaten können technisch zudem auch Werte eingelesener Property-Dateien sein. Muss ich die auch validieren? Ist das dann noch Grundschutz? &lt;br /&gt;
&lt;br /&gt;
; 7. &amp;quot;Für den Zugriff auf sensitive Funktionen oder Informationen muss die Web-Anwendung eine wirksame Authentisierung und Sitzungsverwaltung unterstützen. Die Eigenschaften der Sitzungs-ID müssen so gewählt werden, dass die Sitzung ausreichend geschützt ist. ....&amp;quot;&lt;br /&gt;
&lt;br /&gt;
Besser fände ich &amp;quot;eine Authentisierung, die über eine dem Schutzbedarf der Anwendung angemessene Stärke verfügt.&amp;quot; &lt;br /&gt;
&lt;br /&gt;
Eigentlich geht es doch mehr um den Schutz der Sitzungs-ID, da diese gewöhnlich im Verlauf einer Sitzung den Client authentisiert. Oder den Schutz des Zugriffs auf eine Sitzung. &lt;br /&gt;
&lt;br /&gt;
Zudem fehlt hier meiner Meinung nach der Hinweis auf die bevorzugte Verwendung getesteter Standardkomponenten.&lt;br /&gt;
&lt;br /&gt;
; 8. &amp;quot;Die Web-Anwendung sollte die zu übermittelnden Daten schützen.&amp;quot;&lt;br /&gt;
&lt;br /&gt;
Dies würde ich nur auf sensible Daten beziehen. Zusätzlich zu HTTPS würde ich hier schreiben, dass sensible Daten generell nicht in der URL übertragen werden dürfen.&lt;br /&gt;
&lt;br /&gt;
; 9. &amp;quot;Die Preisgabe interner Informationen (z.B. Kommentare, Fehlermeldungen)&amp;quot;&lt;br /&gt;
&lt;br /&gt;
Hier würde ich eher schreiben &amp;quot;(IN Kommentaren, Fehlermeldungen, HTTP Headern, etc.)&amp;quot;&lt;br /&gt;
&lt;br /&gt;
; 10. &amp;quot;Fehler müssen so behandelt werden, ... müssen Fehler bei der Autorisierung zu einer Verweigerung beim Zugriff auf die angeforderte Ressource führen.&amp;quot;&lt;br /&gt;
&lt;br /&gt;
Sprachlich: &amp;quot;Die Webanwendung muss sich stets in einem sicheren Zustand befinden. Beispielsweise müssen Fehler bei der Autorisierung zu einer Verweigerung des Zugriffs führen (Default-Deny-Strategie).&amp;quot;&lt;br /&gt;
&lt;br /&gt;
; 11. &amp;quot;Die Logging-Funktionen der Web-Anwendung müssen aufgetretene Ereignisse derart protokollieren, dass sicherheitskritische Vorfälle nachvollzogen werden können.&amp;quot;&lt;br /&gt;
&lt;br /&gt;
Hier würde hier eher von &amp;quot;allen sicherheitsrelevanten Ereignissen&amp;quot; sprechen.&lt;br /&gt;
&lt;br /&gt;
Weiterhin sollten insbesondere beim Logging der Datenschutz berücksichtigt werden, personenbezogene Daten also nach Möglichkeit nicht oder nur anonymisiert in technischen Logdateien protokolliert werden.&lt;br /&gt;
&lt;br /&gt;
; 12. &amp;quot;Alle Sicherheitsmechanismen (z.B. Authentisierung und Zugriffskontrolle) sind serverseitig zu implementieren und können nicht durch clientseitige Mechanismen ersetzt werden.&amp;quot;&lt;br /&gt;
&lt;br /&gt;
Die Aussage ist so nicht korrekt. Darüber hatten wir bereits bei der ASVS mehrfach diskutiert. &lt;br /&gt;
&lt;br /&gt;
Überall dort wo der Client angegriffen wird, also etwa bei RIAs (Stichwort DOM-Based XSS) müssen wir Security Controls clientseitig implementieren. Es gibt mittlerweile deshalb auch eine Portierung der ESAPI auf Javascript. Überall dort wo der Server oder Hintegrundsysteme angegriffen werden, ist die Aussage aber natürlich zutreffend.&lt;br /&gt;
&lt;br /&gt;
== &amp;quot;Gefährdungen&amp;quot; (Markus, Dennis, .... &amp;lt;Dein Name&amp;gt;) ==&lt;br /&gt;
; Generell:&lt;br /&gt;
Reference auf RFCs fehlen.&lt;br /&gt;
&lt;br /&gt;
==B.5.XX Web-Anwendungen ==&lt;br /&gt;
; 1. Erster Absatz - Letzter Satz: --Wieso werden hier nur HTML/XML Doks und Oberflächen angesprochen? Was ist der Unterschied zwischen einem HTML-Dok und einer Oberfläche? Was ist mit  Flash, etc.? Was ist mit WebSockets?&lt;br /&gt;
; 2. Stichpunkt &amp;quot;Protokollierung&amp;quot;: Sicherheits relevant ist ein sehr dehnbarer Begriff - Eine bessere Formulierung könnte sein: Zur Rekonstruktion von Nutzerhandlungen nötige Ereignisse (positve &amp;amp; negative) müssen protokolliert werden . . . &lt;br /&gt;
; 3. Absatz: &amp;quot;Abgrenzung des Bausteins&amp;quot;: &amp;quot;Die spez. Sicherheitsanforderungen an Web-Services werden in diesem Baustein nicht betrachtet&amp;quot; --&amp;gt; Wie so nicht? Was ist das Backend von einer Rest / AJAX-basierenden Webanwendung denn anderes als ein Web-Service? Diesen Satz würde ich entfernen.&lt;br /&gt;
; 4.Vorsätzliche Handlungen -&amp;gt; Web-Spoofing (G.5.87) -- Missverständliche Bezeichnung / Nomenklatur&lt;br /&gt;
; 5. Seite 4 : erste Zeile &amp;quot;Umsetzung&amp;quot;: &amp;quot;dafür umzusetztende Komponenten müssen die Webanwendung schützen...&amp;quot; - Hier fehlt mir der Hinweis, dass dieser Schutz verifiziert werden muss.&lt;br /&gt;
; 6 Seite 5: &amp;quot;Umsetzung&amp;quot; - Wir haben CSRF, D(D)os und SQL-Injection aber wo ist XSS?&lt;br /&gt;
; 7 Seite 7: &amp;quot;Die Sicherheitsfunktion wird ausschließlich clientseitig...&amp;quot; --&amp;gt; Warum muss der Angreifer überhaupt einen Browser umkonfigurieren? Was ist mit Proxies, Scripts, etc.? Ich würde das reduzieren darauf, dass rein Webbrowser-basierende Schutzfunktionen einfach umgangen werden können.&lt;br /&gt;
; 8 Seite 8: Die angesprochenen Punkte hinterlassen den Eindruck nicht vollständig zu sein: Mir fehlen Punkte wie &amp;quot;Outsourcing&amp;quot;, &amp;quot;KnowHow der Entwickler&amp;quot;, Tooling, Framework-Auswahl, etc.&lt;br /&gt;
; 9 Seite 9: Eigentlich möchte der Autor hier über Datenschutz sprechen. Abgesehen von den letzten drei Zeilen geht es aber nur um &amp;quot;User tracking&amp;quot; - Wo ist der Rest der Datenschutzproblematik? Warum der Fokuss auf Tracking? Mir ist das zu einseitig.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
tbd.&lt;br /&gt;
&lt;br /&gt;
; Wortwahl:&lt;br /&gt;
Ich stosse innerhalb der Texte immer wieder an die Worten '''Hintergrundsystem''' und '''Sicherheitskontext'''.&lt;br /&gt;
'''Hintergrundsystem:''' besseres Synonym?&lt;br /&gt;
'''Sicherheitskontext:''' nur weil es in den Texten um Sicherheit geht muss nicht an jeder Stelle immer wieder das Wort _Sicherheits_kontext eingebaut werden.&lt;br /&gt;
Bsp: &amp;quot;Erlangt ein Angreifer Kenntnis von einer solchen gültigen, aber nicht mehr genutzten SessionID, so kann er die Web-Anwendung im Sicherheitskontext des nicht abgemeldeten Benutzers weiter verwenden.&amp;quot; (G 5,WA12 Unzureichendes Session-Management von Web-Anwendungen)&lt;br /&gt;
Verbesserungsansansatz: ... so kann er die Web-Anwendung anstelle des eigentlichen Besitzers weiterhin verwenden.&lt;br /&gt;
&lt;br /&gt;
== &amp;quot;G 2.WA01 Mangelhafte Auswahl oder Konzeption von Web-Anwendungen&amp;quot; (Matthias) ==&lt;br /&gt;
&lt;br /&gt;
Nachdem ich mir diese Gefährdung durchgelesen hatte, fehlten mir ehrlich gesagt etwas die Worte. Nicht nur, dass hier fast jeder zweite Satz entweder falsch ist bzw. massive Fehler enthält oder ich diesen schlicht nicht verstehe, ist der ganze Text sprachlich wirklich enorm verbesserungsfähig. &lt;br /&gt;
&lt;br /&gt;
Na gut, ich konzentriere mich mal auf die fachlichen Punkte:&lt;br /&gt;
&lt;br /&gt;
; 1. Security Controls&lt;br /&gt;
Werden mal mit &amp;quot;Schutzmechanismen&amp;quot;, mal mit &amp;quot;Sicherheitskomponenten&amp;quot; und dann wieder als &amp;quot;Sicherheitsfunktionen&amp;quot; bezeichnet. Hier macht eine einheitliche Benennung sicherlich Sinn und ist weniger verwirrend.&lt;br /&gt;
&lt;br /&gt;
; 2. &amp;quot;Eine Web-Anwendung ist in der Regel ein verteiltes, komplexes System bestehend aus unterschiedlichen Komponenten (z. B. Webserver, Applikationsserver, Hintergrundsysteme)&amp;quot;&lt;br /&gt;
&lt;br /&gt;
Eine Webanwendung besteht sicher nicht aus einem Webserver- oder anderer infrastruktureller Komponenten, sondern ist Software welches diese nutzt.&lt;br /&gt;
&lt;br /&gt;
; 3. &amp;quot;Bei individuell entwickelten Web-Anwendungen sind im Allgemeinen die Frameworks, Komponenten und Schnittstellen im Rahmen der Konzeption auszuwählen und deren Einbindung und Absicherung zu betrachten....Im Gegensatz dazu ist bei der Konzeption von Web-Anwendungen auf Basis von Standardsoftware insbesondere auf die Auswahl der Software und die Konfiguration der Teilkomponenten zu achten&amp;quot;&lt;br /&gt;
&lt;br /&gt;
Wir unterscheiden im Rahmen von Webanwendungen eigentlich Free or Opensource Software (FOSS bzw. FLOSS), Standardsoftware und Individualsoftware voneinander. Wir unterscheiden nicht Frameworks von Standardsoftware. Frameworks können Teil von Standardsoftware sein, wie etwa bei SharePoint, SAP, etc, oder aber FOSS, wie etwa Spring. Die ganzen Absätze machen für mich daher keinen Sinn.&lt;br /&gt;
&lt;br /&gt;
; 4. &amp;quot;Eine Sicherheitsfunktion (z. B. Authentisierung, Autorisierung) wird nicht an einer Stelle umgesetzt und verwendet, sondern ist mehrfach in der Web- Anwendung realisiert. Wird diese Sicherheitsfunktion an den verschiedenen Stellen unterschiedlich umgesetzt, führt dies zu einem uneinheitlichen Sicherheitsniveau.&amp;quot;&lt;br /&gt;
&lt;br /&gt;
Natürlich ist die mehrfache Verwendung bestimmter Security Controls, beispielsweise von Zugriffskontrollen (Complete-Mediation) oder Validierung (Robustheit) erstrebenswert. Was der Autor hier wahrscheinlich meinte, war die Notwendigkeit diese zu Kapseln bzw. zu Externalisieren. Das bezieht sich im übrigen nicht nur auf die Controls selbst, sondern auch auf ihre Parametrisierung (etwa. über Konfigdateien / XACML).&lt;br /&gt;
&lt;br /&gt;
Wichtiger wäre in diesem Zusammenhang zudem die fehlende Berücksichtigung bestimmter Security Controls.&lt;br /&gt;
&lt;br /&gt;
; 5. &amp;quot;Auswahl von Web-Anwendungen auf Basis von Standardsoftware&amp;quot;&lt;br /&gt;
Was will der Satz sagen? Ich wähle Standardsoftware aus, aber doch keine Webanwendungen. Oder heißt das, ich kaufe eine existierende Anwendung ein (Webanwendung!=Indivudualsoftware)? &lt;br /&gt;
&lt;br /&gt;
; 6. &amp;quot;Das ausgewählte Produkt verfügt nicht über die ausreichende Sicherheitsfunktionalität, ... Daher müssen die notwendigen Schutzmechanismen nachträglich hinzugefügt werden, wodurch zusätzliche Aufwände entstehen.&amp;quot;&lt;br /&gt;
Das ist etwas sehr positiv formuliert. Tatsächlich können fehlende Security Controls in zugekaufter Software (insb. Standardsoftware) in der Realität häufig gar nicht hinzugefügt werden oder nur perimetrisch (z.B. per WAF oder Access Gateway).&lt;br /&gt;
&lt;br /&gt;
; 7. &amp;quot;Die Hintergrundsysteme werden unzureichend abgesichert und dadurch ist die Datenbank der Web-Anwendung aus dem Internet erreichbar.&amp;quot;&lt;br /&gt;
Gehören fehlende Netzwerksegmentierung bzw. Firewallregeln wirklich in diesen Kontext? Das ist doch eigentlich Grundschutz der Infrastruktur, oder?&lt;br /&gt;
&lt;br /&gt;
; 8. &amp;quot;Aufgrund schwacher Parameter in der Konfiguration des Frameworks zum Session-Management werden unsichere SessionIDs erzeugt.&amp;quot;&lt;br /&gt;
Was sind &amp;quot;schwache&amp;quot; Parameter?&lt;br /&gt;
&lt;br /&gt;
Welches Framework erlaubt unsichere SessionIDs durch eine &amp;quot;schwache&amp;quot; Konfiguration zu erzeugen?&lt;br /&gt;
&lt;br /&gt;
; 9. &amp;quot;Wird die Konfiguration des Web-Browsers durch einen Angreifer manipuliert, können die clientseitig umgesetzten&amp;quot;&lt;br /&gt;
&lt;br /&gt;
Manipuliert ein Angreifer die Konfguration seines Webbroswers, wenn er einen MITM-Proxy konfiguriert?&lt;br /&gt;
&lt;br /&gt;
Wie bereits bei den &amp;quot;Goldenen Regeln&amp;quot; angemerkt, gilt auch hier, das manche Security Controls auch clientseitig umgesetzt werden dürfen (etwa. zur Verhinderung von Dom-Based XSS).&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== &amp;quot;G 5.WA10 Fehler in der Web-Anwendungslogik&amp;quot; (Dennis) ==&lt;br /&gt;
; 1. &amp;quot;Damit kann aufgrund der Prüfreihenfolge ein hoher Ressourcenverbrauch provoziert werden, der für Denial-of-Service-Angriffe ausgenutzt werden kann.&amp;quot;&lt;br /&gt;
Meiner Meinung nach passt in diesem Kontext die Attacke DoS nicht ganz. Falls die nachfolgende Funktionalität wegen der langen Ausführungszeit der Filterkomponente übersprungen wird bzw. ein Fehler auftritt würde dies meiner Ansicht in die Thematik Anwendungslogik passen. Eine DoS-Attacke kann hingegen anhand jeder Funktion durchgeführt werden.&lt;br /&gt;
&lt;br /&gt;
([[User:Mrohr|Matthias]]) Jo stimmt, aber ich stimme mit der Aussage eigentlich schon ueberein, auch wenn diese zugegeben etwas ungluecklich formuliert ist. Es geht hier ja darum, rechenintensive Pruefungen/Filterung moeglichst zu vermeiden bzw. zu reduzieren. Aus diesem Grund machen wir ja auch bei der AV-Pruefung zunaechst Blacklist-Checks und erst am Ende rechenintensive statistische oder verhaltensbezogene Pruefungen.&lt;br /&gt;
&lt;br /&gt;
== &amp;quot;G 5.WA11 Umgehung clientseitig umgesetzter Sicherheitsfunktionen von Web-Anwendungen&amp;quot; (Dennis) ==&lt;br /&gt;
; 1. &amp;quot;Ein Angreifer kann diese ausnutzen, um beispielsweise unbefugt Befehle an Hintergrundsysteme der Web-Anwendung zu übermittlen (z.B. in Form von Datenbankanfragen bei einer SQL-Injection).&amp;quot;&lt;br /&gt;
Umformulierung des Inhalts der Klammer. Hatte beim ersten Lesen für mich den Anschein, als ob ein Formular genutzt werden könnte welches den Nutzer aufforder eine SQLI einzugeben. Ich denke &amp;quot;Datenbankanfrage zwecks Ausführung einer SQL-Injection&amp;quot; würde besser passen.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== G 2.WA02 Mängel bei der Entwicklung und der Erweiterung von Web-Anwendungen (Matthias) ==&lt;br /&gt;
&lt;br /&gt;
Allgemein ist de obere Teil ok, die aufgezählten &amp;quot;Auswirkungen von fehlenden Vorgaben&amp;quot; verstehe ich jedoch nicht. Wo ist etwa der Bezug von Barrierefreiheit auf die Anwendungssicherheit?&lt;br /&gt;
&lt;br /&gt;
Mein Vorschlag, um diese Punkte etwa sinnvoll umzubauen:&lt;br /&gt;
* &amp;quot;Fehlendes Vorgehensmodell&amp;quot;: Bezug auf fehlende Berücksichtigung von Sicherheit im SDLC. Statt eines SDLCs selbst sollte hier besser auf die Notwendigkeit eines Secure Development Lifecycle (SDL) hingewiesen werden&lt;br /&gt;
* &amp;quot;Fehlende Programmierrichtlinien&amp;quot; =&amp;gt; Besser wäre hier &amp;quot;Fehlende Sicherheitsrichtlinien in der Programmierung&amp;quot; also &amp;quot;Secure Coding Guidelines&amp;quot;&lt;br /&gt;
* &amp;quot;Testfälle&amp;quot; =&amp;gt; &amp;quot;Sicherheitsrelevante Testfälle&amp;quot; (z.B. Security Unit Tests). &lt;br /&gt;
* &amp;quot;Barrierefreiheit&amp;quot;: Warum nicht an dieser Stelle die Auswirkungen von Sicherheitsfunktionen auf die Bedienbarkeit, etwa anhand von CAPTCHAS erläutern?&lt;br /&gt;
&lt;br /&gt;
== G 2.WA03 Unzureichender Schutz personenbezogener Daten bei Web-Anwendungen (Matthias) ==&lt;br /&gt;
&lt;br /&gt;
Der Titel dieses Bausteines heißt &amp;quot;Schutz personenbezogener Daten&amp;quot;, die genannten Beispiele beziehen sich bis auf den letzten jedoch auf die missbräuchliche (oder zumindest problematische) Nutzung aus Sicht des Datenschutzes. &lt;br /&gt;
&lt;br /&gt;
Die Punkt 1-3 sollten daher besser entfallen und z.B. durch die Folgenden ersetzt werden:&lt;br /&gt;
* Unsichere Einbindung von sozialen Netzwerken (Bezug nehmen auf den Like-Button bei Facebook)&lt;br /&gt;
* Unsichere Einbindung von Werbeinhalten&lt;br /&gt;
* Unsichere Übertragung und Caching&lt;br /&gt;
* Unsichere Protokollierung&lt;br /&gt;
* Ungenügender Zugriffsschutz&lt;br /&gt;
* Verstoß des Minimalprinzips bzw. der Zweckgebundenheit (welche Daten werden wirklich benötigt)&lt;br /&gt;
&lt;br /&gt;
Auch wäre es ggf. zumindest einen Verweis auf das BDSG zu machen.&lt;br /&gt;
&lt;br /&gt;
== G 4.33 Unzureichende oder fehlende Authentisierung (Matthias) ==&lt;br /&gt;
&lt;br /&gt;
; 1. Erster Absatz: &amp;quot;Wenn Authentisierungsmechanismen fehlen oder zu schlecht sind&amp;quot;&lt;br /&gt;
&lt;br /&gt;
&amp;quot;schlecht&amp;quot; sollte vlt besser durch &amp;quot;unzureichend&amp;quot; ersetzt werden.&lt;br /&gt;
&lt;br /&gt;
; 2. &amp;quot;Sicherheitslücken entstehen bei... der Benutzerauthentisierung&amp;quot;&lt;br /&gt;
&lt;br /&gt;
Hier findet nur ein Bezug auf &amp;quot;Passwörter&amp;quot; statt. Der Bezug auf die fehlerhaft implementierte oder dem Schutzbedarf ungenügende Schutzmechanismen (z.B. keine 2-Faktor-Authentisierung bei hochsensiblen Daten) fehlt. Auch auf das komplette fehlen von Authentisierungs-Controls wird hier nicht  eingegangen&lt;br /&gt;
&lt;br /&gt;
; 3. &amp;quot;Sicherheitslücken entstehen bei... der Komponentenauthentisierung&amp;quot;&lt;br /&gt;
&lt;br /&gt;
Wie bei 2., wird auch hier wieder nur auf Passwörter, nicht jedoch auf das fehlen von Controls selbst eingegangen. An dieser Stelle fehlt auch ein Hinweis auf die Notwendigkeit dedizierter Benutzeraccounts.&lt;br /&gt;
&lt;br /&gt;
; 4. &amp;quot;Sicherheitslücken entstehen bei... der Wahl des Verfahrens&amp;quot;&lt;br /&gt;
&lt;br /&gt;
Statt untauglich würde ich auch hier von &amp;quot;dem Schutzbedarf der Daten nicht angemessen&amp;quot; sprechen, eigentlich gehört das für mich aber in die obigen Punkte.&lt;br /&gt;
&lt;br /&gt;
; 5. Serverseitige Authentisierung fehlt&lt;br /&gt;
&lt;br /&gt;
Auch der Server (bzw. die Anwendung selbst) kann sich fehlerhaft oder ungenügend beim Benutzer authentsieren, etwa über DNS, SSL-Zertifikate, etc.&lt;br /&gt;
&lt;br /&gt;
== G 4.WA04 Unzureichende Validierung von Ein- und Ausgabedaten bei Web-Anwendungen (Matthias) ==&lt;br /&gt;
&lt;br /&gt;
; 1. &amp;quot;Unzureichende Validierung von Eingabedaten&amp;quot;&lt;br /&gt;
&lt;br /&gt;
Die genannten Beispiele sind genau keine korrekten Beispiele für diesen Fall, sondern betreffen die Ausgabevalidierung bzw. Enkodierung. Typische Fehler der Eingabevalidierung ist eine Manipulierbarkeit der Business Logik.&lt;br /&gt;
&lt;br /&gt;
; 2. &amp;quot;Unzureichende Validierung von Ausgabedaten&amp;quot;&lt;br /&gt;
&lt;br /&gt;
Hier geht es zentral um die Verhinderung von Interpreter Injection, also serverseitig (z.B. SQL oder LDAP Injection) oder clientseitig (XSS, JSON Injection, etc.). Statt &amp;quot;können die Ausgaben Schadcode&amp;quot; enthalten würde ich hier eher davon Sprechen, dass ein solcher Interpreteraufruf manipuliert werden kann (was dann z.B. zur Einschleusung von Schadcode genutzt werden kann).&lt;br /&gt;
&lt;br /&gt;
; 3. &amp;quot;Die Suchfunktion der Web-Anwendung verwendet die Eingaben der Benutzer ungefiltert&amp;quot;&lt;br /&gt;
&lt;br /&gt;
Mit ungenügender &amp;quot;Filterung&amp;quot; hat SQL Injection nichts zu tun,  eigentlich geht es hierbei darum, dass SQL-Anfragen dynamisch mit unvalidierten Eingebedaten zusammengebaut (konkateniert) werden.&lt;br /&gt;
&lt;br /&gt;
; 4. &amp;quot;Ungefilterter HTML-Code in Kommentar-Funktion&amp;quot;&lt;br /&gt;
&lt;br /&gt;
Hier fehlt der Bezug auf persistentes XSS, das hier sicherlich zentral ist.&lt;br /&gt;
&lt;br /&gt;
== G 4.WA05 Fehlende oder mangelhafte Fehlerbehandlung durch Web-Anwendungen (Tobias, Matthias) ==&lt;br /&gt;
; Abschnitt &amp;quot;Unsichere Fehlerbehandlung&amp;quot;&lt;br /&gt;
Die G adressiert &amp;quot;Unsichere Fehlerbehandlung&amp;quot;, der Abschnitt die &amp;quot;Unsichere Fehlerbehandlung in Sicherheitskomponenten&amp;quot;. Entsprechend sollte der fettgedruckte Teil angepasst werden.&lt;br /&gt;
&lt;br /&gt;
; &amp;quot;fehlende SQL-Parameter,&amp;quot;&lt;br /&gt;
Sollte besser &amp;quot;Fehlermeldungen bei ungültigen SQL-Abfragen&amp;quot; lauten.&lt;br /&gt;
&lt;br /&gt;
; &amp;quot;Auch scheinbar unkritische Informationen, wie die Meldung ob (..)&amp;quot;&lt;br /&gt;
Korrekt, allerdings nicht nachvollziehbar, wenn das Problem der Leser nicht schon bekannt ist. Daher erweitern nach &amp;quot; Rahmen von Brute-Force-Angriffen ausgenutzt werden.&amp;quot; mit &amp;quot;. Bei Brute-Force-Angriffen wäre in diesem Fall klar, dass der Benutzername gültig ist.&amp;quot;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[User:Mrohr|Matthias]]): Stimme dem Obigen auch zu, ausserdem:&lt;br /&gt;
&lt;br /&gt;
; Sprachlich: &amp;quot;kann dies unvorhersehbare Auswirkungen haben und den Betrieb der Web-Anwendung bis zur Unerreichbarkeit einschränken.&amp;quot;&lt;br /&gt;
&lt;br /&gt;
&amp;quot;Unerreichbarkeit&amp;quot; ist etas merkwuerdig ausgedrueckt, besser ware hier von der &amp;quot;Verfuegbarkeit&amp;quot; zu sprechen. Im Uebrigen fehlt vollstaendig der Bezug auf die Verfuegbarkeit als Primaeres Schutzziel der Informationssicherheit.&lt;br /&gt;
&lt;br /&gt;
; &amp;quot;Clientseitige Fehlerbehandlung&amp;quot;&lt;br /&gt;
Das stimmt soweit, das generelle Problem ist jedoch genereller, naehmlich die clientseitige Abbildung sicherheitsrelaventer Logik (in diesem Fall die Fehlerbehandlung)&lt;br /&gt;
&lt;br /&gt;
== G 4.WA06 Unzureichende Nachvollziehbarkeit von sicherheitsrelevanten Ereignissen bei Web-Anwendungen (Matthias) ==&lt;br /&gt;
&lt;br /&gt;
; 1. Erster Absatz: &amp;quot;Die Behebung einer Schwachstelle ist dann nicht oder nur unter erschwerten Bedingungen möglich.&amp;quot;&lt;br /&gt;
&lt;br /&gt;
Hier würde ich ergänzen: &amp;quot;...und Angriffe auf die Anwendungen können ggf. nicht erkannt oder nachvollzogen werden&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
; 2. &amp;quot;Beispiele&amp;quot;: Kommulierbarkeit&lt;br /&gt;
&lt;br /&gt;
Hier fehlt auch ein Bezug auf die Kommulierbarkeit von SIcherheitsereignissen, dass diese also auch von solchen anderer Systeme in Verbindung gesetzt werden können&lt;br /&gt;
&lt;br /&gt;
; 3. &amp;quot;Beispiele&amp;quot;: Gerichtsverwertbarkeit&lt;br /&gt;
&lt;br /&gt;
Auch die Möglichkeit zur Gerichtsverwertbarkeit (etwa durch eindeutigen Zeitstempel) und manipulationssicherer Speicherung, würde ich an dieser Stelle unbedingt erwähnen.&lt;br /&gt;
&lt;br /&gt;
== G 4.WA07 Offenlegung von Informationen bei Web-Anwendungen (Matthias) ==&lt;br /&gt;
&lt;br /&gt;
; 1. Titel&lt;br /&gt;
&lt;br /&gt;
Hier würde ggf. &amp;quot;Offenlegung vertraulicher Informationen&amp;quot; sicher besser passen als &amp;quot;Offenlegung von Informationen&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
; 2. Beispiellink&lt;br /&gt;
&lt;br /&gt;
Ein Beispiellink (mit und ohne Token) würde sicher die Verständlichkeit dieser Schwachstelle verbessern.&lt;br /&gt;
&lt;br /&gt;
; 3. Erster Absatz: &amp;quot;Wenn demzufolge Informationen unnötig offengelegt werden, steigt die Wahrscheinlichkeit eines erfolgreichen Angriffs.&amp;quot;&lt;br /&gt;
&lt;br /&gt;
Interne Informationen auszublenden ist eine Härtungsmaßnahme, deren Anzeige erhöht aber nicht zwangsläufig die Wahrscheinlichkeit eines erfolgreichen Angriffs. Ich würde diesen Satz weglassen.&lt;br /&gt;
&lt;br /&gt;
 ; 4. Fehlende Punkte&lt;br /&gt;
&lt;br /&gt;
* Ein Hinweis auf HTTP Header wäre hier sicher erwähnenswert.&lt;br /&gt;
* Weiterhin bzgl. der Anzeige von Traces und ein Verweis auf den Entsprechenden Baustein zur Fehlerbehandlung&lt;br /&gt;
&lt;br /&gt;
== G 5.WA14 Cross-Site Request Forgery (CSRF, XSRF) (Matthias) ==&lt;br /&gt;
&lt;br /&gt;
; 1. Erster Absatz: &amp;quot;Können Funktionen einer Web-Anwendung ohne weitere Überprüfung der Authentizität des HTTP-Requests (z.B. durch Tokens in versteckten Formularfeldern) genutzt werden&amp;quot;&lt;br /&gt;
&lt;br /&gt;
Statt &amp;quot;Funktionen&amp;quot; würde ich besser von &amp;quot;schreibenden Aktionen&amp;quot; sprechen, dann macht der Satz mehr Sinn.&lt;br /&gt;
&lt;br /&gt;
; 2. Dritter Absatz: &amp;quot;Im Gegensatz zu XSS (siehe ...￼ ) ist das Angriffsziel nicht die Information auf dem Client (z. B. in Cookies),&amp;quot;&lt;br /&gt;
&lt;br /&gt;
Dieser (Halb-)Satz macht keinen Sinn, auch weil es bei XSS nicht nur im Informationen auf dem Cient geht. Vorschlag: &amp;quot;ist das Angriffsziel nicht die Ausführung von Skriptcode, sondern von unbefugten, schreibenden Aktionen im Kontext des angemeldeten Benutzers.&amp;quot;&lt;br /&gt;
&lt;br /&gt;
; 3. Session Riding&lt;br /&gt;
&lt;br /&gt;
Session Riding ist quasi nur ein anderer Begriff für CSRF. Die einzige Form von CSRF die mir bekannt ist, sind Angriffe mit Standard-Passwörtern auf HTTP-Basic-Auth geschützten Ressourcen.&lt;br /&gt;
&lt;br /&gt;
Im Grunde ist Session Riding aber nur ein Synonym für CSRF. Der Absatz ist daher auch nur eine Wiederholung der obigen Beschreibung.&lt;br /&gt;
&lt;br /&gt;
; 4. Zum Beispiel: &amp;quot;Durch einen präparierten Link auf einer Webseite wird die Änderung des Zugangspasswortes des Routers eingeleitet.&amp;quot;&lt;br /&gt;
&lt;br /&gt;
Etwas ungüngstig ausgedrückt. Besser wäre: &amp;quot;wird eine Anfrage zur Änderung des Zugangspasswortes an den Router gesendet. Hierbei sendet der Browser automatisch den Session Cookie mit, worüber die Webanwendung die Authentizität der Anfrage verifiziert und die Änderung durchführt.&amp;quot;&lt;br /&gt;
&lt;br /&gt;
== G 5.WA18 Clickjacking (Matthias) ==&lt;br /&gt;
&lt;br /&gt;
Hier stellt sich mir nur die allgemeine Frage, ob Clickjacking, bzw. der Schutz davor tatsächlich einem Grundschutz zuzurechnen ist. Persönlich würde ich dies nicht tun.&lt;br /&gt;
&lt;br /&gt;
== M 2.WA02 Dokumentation der Architektur von Web-Anwendungen (Matthias) ==&lt;br /&gt;
&lt;br /&gt;
; Verantwortlich für die Umsetzung&lt;br /&gt;
Hier wäre auch die Nennung des &amp;quot;Architekten&amp;quot; sinnvoll&lt;br /&gt;
 &lt;br /&gt;
; Fehlende Bestandteile der Dokumentation:&lt;br /&gt;
* Schutzbedarf des Systems sowie der verarbeiteten Daten&lt;br /&gt;
* Schützenswerte Daten und Funktionen (Assets)&lt;br /&gt;
* Betriebliche Anforderungen an die Sicherheit bzw. eingesetzte Plattform&lt;br /&gt;
* Dokumentierte Konfigurationseinstellungen &lt;br /&gt;
* BIA (RTO, RPO)&lt;br /&gt;
* Schnittstellen&lt;br /&gt;
* Trust Boundaries&lt;br /&gt;
* Akteure (bzw. Trust Level)&lt;br /&gt;
* Sicherheitsannahmen&lt;br /&gt;
* Geltende Compliance-Anforderungen (BDSG, PCI DSS, etc.)&lt;br /&gt;
&lt;br /&gt;
; Benutzermanagement&lt;br /&gt;
&lt;br /&gt;
Wenn damit das Identity Management gemeint ist, gehört das Dokumentiert, ist aber keine Sicherheitsfunktion. Oder ist hiermit das Rollen- und Berechtigungskonzept gemeint? Grenzt sich aus meiner Sicht schwer mit dem Thema Authentisierung ab. &lt;br /&gt;
&lt;br /&gt;
; Prüffragen&lt;br /&gt;
&lt;br /&gt;
Hier fehlt etwas in Bezug auf Sicherheitsanforderungen. Beispiel: &amp;quot;Werden Sicherheitsanforderungen an den Betrieb während der Entwicklung abgestimmt und dokumentiert&amp;quot;&lt;br /&gt;
&lt;br /&gt;
== M 2.WA12 Entwicklung und Erweiterung von Anwendungen (Markus) ==&lt;br /&gt;
; &amp;quot;Es sollte darauf geachtet werden, dass Sicherheitsanforderungen&lt;br /&gt;
vollständig durch Sicherheitsmechanismen erfüllt und zur Erstellung von&lt;br /&gt;
Testfällen festgehalten werden.&amp;quot; --&amp;gt; Bessere Formulierung würde aussagen, dass die Sicherheitsanforderungen durch Testfälle verifiziert werden.&lt;br /&gt;
&amp;quot;(z. B. durch Kommentare im&lt;br /&gt;
Quelltext). Somit ist der Quelltext zu einem&amp;quot; --&amp;gt; Das ist kein empfehlenswerter Programmierstiel! Raus mit diesem Kommentar&lt;br /&gt;
;&amp;quot;Zum Schutz vor dem Verlust bereits entwickelter und verworfener&lt;br /&gt;
Lösungen sowie zu Dokumentationszwecken sollte die Historie der&lt;br /&gt;
Änderungen festgehalten werden (z. B. durch ein Revisionssystem).&amp;quot; --&amp;gt; Auch diesen Absatz können wir streichen - Kein professioneller Programmierer arbeitet ohne Versionierugssystem.&lt;br /&gt;
;&amp;quot;Bei Web-Anwendung sollten die Webseiten auf Konformität zu dem&lt;br /&gt;
verwendeten Standard (z. B. HTML-Standard) getestet werden. Dadurch&lt;br /&gt;
können unvorgesehene Seiteneffekte aufgrund einer Fehlinterpretation&lt;br /&gt;
seitens der Browser vermieden werden.&amp;quot; --&amp;gt; Könnte man noch um &amp;quot;Die Software ist in möglichst vielen Browsern zu testen&amp;quot; erweitern.&lt;br /&gt;
;Generell geht der Autor leider nicht auf die Rollen &amp;amp; Rechte Verteilung ein. Mir fehlt der Hinweis, das es eine personelle Trennung zwischen Entwicklung, Test und Betrieb geben muss.&lt;br /&gt;
;Zum Thema Wartung / Betrieb --&amp;gt; Hier wird keine Aussage getroffen bezüglich Log_Files. Dieses Thema kann kritische Auswirkungen haben, Bsp.: logging ganzer HTTP-Requests im LogLevel=Debug.&lt;br /&gt;
; &amp;quot;Produktspezifische Sicherheitsfunkionalität&amp;quot; - Dieser Absatz ist gefährlich - der Angreifer ist nicht zur Verwendung dies Zielbrowsers gezwungen. Deshalb können Browser-spez. Sicherheitsfunktionen nur als Add-ON gewertet werden.&lt;br /&gt;
; &amp;quot;Festlegung der Entwicklungsumgebung&amp;quot; - Dieser Absatz geht nicht auf die zu verwendenden Testdaten ein. Der Hinweis, dass Live-Daten / Kundendaten nichts in Test- &amp;amp; Entwicklungsumgebungen zu suchen haben fehlt!!!&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== M 2.WA24 Web-Tracking (Matthias) ==&lt;br /&gt;
&lt;br /&gt;
; Letzter Absatz: &amp;quot;Falls eine Auswertung von Nutzerdaten, insbesondere personenbezogener Daten, .. &amp;quot;&lt;br /&gt;
&lt;br /&gt;
Hier sollte denke ich besser von personenbeziehbaren Daten gesprochen Werten. Dies betrifft etwa die Zuordnung von Surfverhalten zu einer bestimmten Person. Dies sollte stets nach den Prinzipien Datensparsamkeit und Datenvermeidung, Erforderlichkeit, sowie Zweckbindung erfolgen. Ist Webtracking nicht personenbeziehbar ist dies kein Thema für den Datenschutz.&lt;br /&gt;
&lt;br /&gt;
== M 4.WA04 Authentisierung bei Web- Anwendungen (Matthias) ==&lt;br /&gt;
&lt;br /&gt;
: Verantwortlich fuer Umsetzung &lt;br /&gt;
sollte in erster Linie beim Architekturen und in zweiter beim Entwickler liegen&lt;br /&gt;
; Vermischung von Authentisierung und Session Management &lt;br /&gt;
&lt;br /&gt;
Bei diesem Baustein findet eine ziemlich große Vermischung von Anforderung an die Authentisierung und das erst in &amp;quot;M 4.WA06 Session-Management bei Web- Anwendungen&amp;quot; behandelte Session Management statt (Beispiel: &amp;quot;Remember-Me-Funktion&amp;quot;). Beide Themen sollten sinnvollerweise getrennt voneinander zu betrachten und aufeinander zu beziehen.&lt;br /&gt;
&lt;br /&gt;
; Verwendung von Frameworks&lt;br /&gt;
&lt;br /&gt;
Die Anforderung ist schon ein wenig eingeschränkt. Besser passt hier denke ich die &amp;quot;Abbildung der Authentisierung über Standardkomponenten (Bibliotheken oder Frameworks)&amp;quot;. &lt;br /&gt;
&lt;br /&gt;
; Remember-Me-Funktion&lt;br /&gt;
&lt;br /&gt;
Siehe oben, gehört zum Session Management. Das ließt sich im übrigen so, als ob eine Webanwendung Credentials auf dem Client abhängt. &lt;br /&gt;
&lt;br /&gt;
; Grenzwerte für gescheiterte Anmeldeversuche&lt;br /&gt;
&lt;br /&gt;
Diese Empfehlung ist allgemein falsch, da sie sehr von der betrachteten Anwendung abhängt. Besser wäre hier allgemein von Mechanismen zur Verhinderung von automatisierten Angriffen zu sprechen (Anti-Automatisierung). &lt;br /&gt;
&lt;br /&gt;
Etwa umsetzbar durch&lt;br /&gt;
* Sperrung nach x Anmeldeversuchen&lt;br /&gt;
* Throttling&lt;br /&gt;
* Captchas&lt;br /&gt;
* Sicherheitsfragen&lt;br /&gt;
&lt;br /&gt;
Das allgemeine Sperren kann leicht für das gezielte Aussperren von Benutzern (User Lockout) verwendet werden. Was etwa bei Trading-Anwendungen nicht funktioniert.&lt;br /&gt;
&lt;br /&gt;
; Automatisiertes Zurücksetzen von Authentisierungsdaten&lt;br /&gt;
&lt;br /&gt;
Würde ich besser als &amp;quot;Passwort-Reset&amp;quot; bezeichnen.&lt;br /&gt;
&lt;br /&gt;
Weiterhin fehlt hier der Hinweis, dass statt ein automatisiertes Zurücksetzen, ein Mechanismus zu empfehlen ist, bei dem über ein hinterlegtes Sicherheitsmerkmal (Handy-Nummer oder E-Mail-Adresse) vom Benutzer zunächst eine Verifikation durchgeführt wird. Beispielsweise durch einen erhaltenen Link. Erst dann darf eine Änderung des Passwortes durch den Benutzer erfolgen.&lt;br /&gt;
&lt;br /&gt;
; Registrierung nicht behandelt&lt;br /&gt;
&lt;br /&gt;
Es existiert hier kein Punkt, der die sichere Implementierung von Benutzerregistrierungen behandelt.&lt;br /&gt;
&lt;br /&gt;
; Verweis auf Externalisierung fehlt.&lt;br /&gt;
&lt;br /&gt;
Statt die Authentisierung selbst durchzuführen kann eine Anwendung hierzu auf eine externe Komponente (Beispiel: SiteMinder oder Kerberos) zurückgreifen.&lt;br /&gt;
&lt;br /&gt;
; Verweis auf Behandlung von Credentials fehlt&lt;br /&gt;
&lt;br /&gt;
Auch wenn das  in &amp;quot;M 4.WA15 Schutz vertraulicher Daten bei Web- Anwendungen&amp;quot; ausführlich behandelt wird, sollte in diesem Baustein bereits auf den angemessenen Schutz von Authentisierungsdaten bei Übertragung und Speicherung hingewiesen werden.&lt;br /&gt;
&lt;br /&gt;
== M 4.WA05Umfassende Ein- und Ausgabevalidierung bei Web-Anwedungen (Markus) ==&lt;br /&gt;
; &amp;quot;Ablehnung der Daten im&lt;br /&gt;
Fehlerfall&amp;quot; --&amp;gt; Hier könnte man noch auf Tar-Pits eingehen - nur ein Vorschlag.&lt;br /&gt;
&lt;br /&gt;
== M 4.WA06Session-Management bei Web-Anwendungen (Markus, Matthias) ==&lt;br /&gt;
; &amp;quot;Übertragung der SessionID mittels GETRequest&amp;quot; --&amp;gt; Hier fehlt der Hinweis, dass die Lebensdauer dieser SessionIds kurz/kürzer sein muss, als im Falle der Speicherung im Cookie.&lt;br /&gt;
&lt;br /&gt;
([[User:Mrohr|Matthias]]) Die Anmerkung verstehe ich ehrlich gesagt ueberhaupt nicht, zumal das SM haeufig transparent zwischen Cookies und URL Rewriting wechselt. Wozu soll das gut sein? Wie soll das geschehen? Idealerweise sollte die Session ID niemals in die URL geschrieben werden, das sollte eigentlich genuegen.&lt;br /&gt;
&lt;br /&gt;
; &amp;quot;Verschlüsselte Übertragung von SessionIDs&amp;quot; --&amp;gt; Hier fehlt der Hinweis auf den Beast-Exploit. TLS Version &amp;gt; 1.0 verwenden!&lt;br /&gt;
&lt;br /&gt;
([[User:Mrohr|Matthias]]) Solange hier nicht auf eine explizite TLS Version eingegangen wird, sollte meiner grossen Ueberzeugung nach hier auch auf keine Exploits etc. eingagen werden, das gehoert an andere Stelle.&lt;br /&gt;
&lt;br /&gt;
; ([[User:Mrohr|Matthias]]) Weiterhin:&lt;br /&gt;
&lt;br /&gt;
 Es dürfen keine extern bekannten oder erratbaren Daten (z. B. IP-Adresse, Uhrzeit) in die Berechnung der SessionID einfließen.&lt;br /&gt;
&lt;br /&gt;
Die Aussage finde ich etwas problematisch, wichtiger ist, dass die Entropie ausreichend hoch ist. Haeufig werden etwa IPs von Load Balancern in die Session ID hineingeschrieben.&lt;br /&gt;
&lt;br /&gt;
 - Domain (z. B. webapp.domain.tld),&lt;br /&gt;
 - Path (z. B. /webapp/),&lt;br /&gt;
 - Secure und&lt;br /&gt;
 - HttpOnly.Beschränkte Sitzungsdauer&lt;br /&gt;
&lt;br /&gt;
Das sieht so aus, als ob es empfehlenswert ist, das Domain-Tag zu verwenden, das ist es sicherlich nicht. Was macht hier der Hinweis &amp;quot;Beschraenke Sizuungsdauer&amp;quot;?&lt;br /&gt;
&lt;br /&gt;
== M 4.WA07Fehlerbehandlung durch Web-Anwendungen (Markus) ==&lt;br /&gt;
; Konsistenter / Inkonsistener Zustand einer Webanwendung und der daraus resultierende Datenverlust: Hier fehlen mir die Punkte: DOS, Priv.Escalation, CodeExecution.&lt;br /&gt;
([[User:Mrohr|Matthias]]) Vorschlag &amp;quot;und somit der Schutz der Daten&amp;quot; aendern in &amp;quot;und somit ETWA der Schutz der Daten&amp;quot; korrigieren&lt;br /&gt;
&lt;br /&gt;
; Vermeidung vertraulicher Informationen in Fehlermeldungen --&amp;gt; Fehlermeldungen sollten ebenfalls eine Systeminformationen preisgeben (Softwareversion, Patchlevel, etc.)&lt;br /&gt;
([[User:Mrohr|Matthias]]) Ich glaube hier ist es wichtig zu unterscheiden, wo die Fehlermeldung ausgegeben bzw. wem diese angezeigt wird. Das wird in diesem Modul garnicht so recht unterscheiden. Der Autor meint glaube ich, wie Fehlermeldungen durch die Webanwendung angezeigt werden. In dem Fall hat er recht. Du meinst glaube ich eher, wie Fehlermeldungen protokolliert werden. In dem Fall hast du natuerlich auch recht. Das in dem Text verwendete Wort &amp;quot;ausgeben&amp;quot; ist nicht unbedingt eindeutig und sollte genauer spezifiziert werden.&lt;br /&gt;
&lt;br /&gt;
; Abbruch des Vorgangs nach Auftreten eines Fehlers --&amp;gt; TarPits scheinen dem Autor umbekannt zu sein :)&lt;br /&gt;
([[User:Mrohr|Matthias]]) Stimmt, wobei sich diese ja auch nur auf einen sehr bestimmten Fehlertypen beziehen. Generell laesst sich so etwas unterscheiden, wenn man Fehler-Domains erstellt. Beispiel: Technisch-Unerwartet = Abbruch, Technisch-Erwartet = Fehlermeldug/Tear Pit, etc.&lt;br /&gt;
&lt;br /&gt;
; &amp;quot;Werden Fehler möglichst von der gleichen Komponente behandelt, in der&lt;br /&gt;
der Fehler aufgetreten ist?&amp;quot; --&amp;gt; Das &amp;quot;möglichst&amp;quot; sollten wir streichen.&lt;br /&gt;
([[User:Mrohr|Matthias]]) Hm, der Aussage kann ich nicht ganz zustimmen, bzw. es haengt von dem Begriff &amp;quot;Komponente&amp;quot; ab. Eine Anwendungskomponente kann serwohl bewusst bestimmte Exceptions werfen, die von der einbindenden Komponente behandelt werden muessen.&lt;br /&gt;
&lt;br /&gt;
== M 4.WA08Schutz vor automatisierter Nutzung von Web-Anwendungen (Markus, Matthias) ==&lt;br /&gt;
; &amp;quot;Brute-Force-&lt;br /&gt;
Angriffe (z. B. Erraten von Zugangsdaten) und Enumeration-Angriffe (z. B.&lt;br /&gt;
automatisiertes Ermitteln von gültigen Login-Namen)&amp;quot; -- die Beispiele sind identisch - besser Beispiele suchen, z.b. URL-Enumeration&lt;br /&gt;
&lt;br /&gt;
([[User:Mrohr|Matthias]]) Das sehe ich anders. Brute-Forcing bezieht auf Passwoerter und Enumeration auf Benutzernamen, etwa durchs hochzaehlen. Auch wenn ich zustimmen muss, dass die nicht ganz gluecklich gewaehlt wurden. Stann &amp;quot;Erraten von Zugangsdaten&amp;quot; wuerde ich besser von &amp;quot;Erraten von Passwoertern&amp;quot; sprechen. Oder wie gesagt gleich auch auf andere Beispiele (etwa Object ID Enumeration) beziehen.&lt;br /&gt;
&lt;br /&gt;
== M 4.WA11Sichere Konfiguration von Web-Anwendungen (Markus, Matthias) ==&lt;br /&gt;
; &amp;quot;Sicherer Umgang mit TLS/SSL&amp;quot; -- Hier fehlt der Hinweis, dass TLS-1.0 gebrochen ist&lt;br /&gt;
; &amp;quot;Zeichenkodierungskonfiguration&amp;quot; -- Ein Whitelisting abhängig von der Encodierung wäre ein weiterer Vorschlag&lt;br /&gt;
; &amp;quot;Restriktive Dateisystemberechtigungen&amp;quot; -- auch wenn es ein klassiker ist - der AS sollte ebenfalls mit von einem eingeschränkten Nutzer gestartet werden und nicht als root&lt;br /&gt;
; Administration Consolen:zur Ergänzen: Wenn diese nicht benötigit, sollten derartige Applikationen nicht deployed werden, unabhängig von möglichen Zugangsbeschränkungen.&lt;br /&gt;
&lt;br /&gt;
([[User:Mrohr|Matthias]]) Sorry, meiner Meinung nach hat die Bewertung von Kryptoverfahren hier abslut nichts zu suchen.Stattdessen sollte hier auf den entsprechenden [https://www.bsi.bund.de/ContentBSI/Publikationen/TechnischeRichtlinien/tr02102/index_htm.html Empfehlung des BSI] verwiesen werden, auch wenn dieses Dokument derzeit noch etwas outdated zu sein scheint.&lt;br /&gt;
&lt;br /&gt;
== M 4.WA13Kontrolliertes Einbinden von Daten und Inhalten bei Web-Anwendungen (Markus) ==&lt;br /&gt;
; Datei-Upload: Bei einem Upload werden Dateien durchaus in TEMP-Verzeichnissen gesammelt und danach weiterverarbeitet. Diese TEMP-Verzeichnisse sind im Rahmen einer Sicherheitsanalyse zu betrachten -&amp;gt; Möglicher (unbefugter) Zugriff auf weitere Uploads&lt;br /&gt;
; Upload komprimierter Dateien / großer Dateien birgt die Gefahr von DOS Angriffen&lt;br /&gt;
; Upload von Dateien kann bei weiterem Parsing zu Speicherengpässen führen --&amp;gt; DOS-Angriffe auf Thread-Local etc.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== M 4.WA14Restriktive Herausgabe sicherheitsrelevanter Informationen bei Web-Anwendungen (Markus, Matthias) ==&lt;br /&gt;
OK - Keine Anmerkungen von mir.&lt;br /&gt;
&lt;br /&gt;
([[User:Mrohr|Matthias]]) Von mir schon;)&lt;br /&gt;
&lt;br /&gt;
; ([[User:Mrohr|Matthias]]) Vermeidung von Kommentaren in ausgelieferten Webseiten&lt;br /&gt;
&lt;br /&gt;
Das ist leider total falsch, wir brauchen haeufig Komentare, aus Kompatibilitaetsgruenden. So wird etwa der JavaScript-Block haeufig auskommentiert.&lt;br /&gt;
&lt;br /&gt;
Wurde stattessen besser von sicherheitsrelevanten Kommentaren sprechen und als Massnahme generell Entwicklerkommentare ueber Sprachkonstruktre (etwa JSP) durchzufuehren.&lt;br /&gt;
&lt;br /&gt;
; ([[User:Mrohr|Matthias]]) Löschen nicht benötigter Dateien&lt;br /&gt;
&lt;br /&gt;
Hier wurde ich ggf. Dateien von Versionisierungstools (etwa Subversion) erwaehnen, das sehen wir schon recht haeufig.&lt;br /&gt;
&lt;br /&gt;
Statt Dateien einfach nur zu loeschen (was in der Praxis haeufig nicht so einfach ist) bietet es sich zudem an, den Zugriff auf bestimmte Dateien oder Dateitypen generell zu sperren, etwa mittels ACL im Apache.&lt;br /&gt;
&lt;br /&gt;
; ([[User:Mrohr|Matthias]]) Gibt die Web-Anwendung ausschließlich neutrale Fehlermeldungen aus und sind diese im Quelltext identisch? {E: C}&lt;br /&gt;
&lt;br /&gt;
Persoenlich verstehe ich das nicht. Wieseo neutrale Fehlermeldung? Das macht fuer mich nur beim Login Sin. Hierzu existiert in dem Text auch keinerlei Bezug. Ich wuerde das daher besser entfernen und im Rahmen der Fehlerbehandlung diskutieren. Mindestens sollte hier jedoch besser von &amp;quot;sicherheitsunbedentlichen Fehlermeldungen&amp;quot; oder so gesprochen werden.&lt;br /&gt;
&lt;br /&gt;
; ([[User:Mrohr|Matthias]]) Wird der Referrer bei Verlassen der Web-Anwendung (z. B. durch einen Link auf eine externe Seite) gefiltert?&lt;br /&gt;
&lt;br /&gt;
Diesen Punkt sehe ich als sehr Fallabhengig an. Es kann fuer seiten durchaus wuenschenswert sein, dass der Referer weitergegeben wird. Der Referer sollte natuerlich keine sensiblen Informationen enthalten, was ja an anderer Stelle (etwa Session Management) vorgegeben wird bzw. gegeben werden sollte.&lt;br /&gt;
&lt;br /&gt;
== M 4.WA15Schutz vertraulicher Daten bei Web-Anwendungen (Markus, Matthias) ==&lt;br /&gt;
; Sichere kryptographische Algorithmen:&lt;br /&gt;
 Hier fehlt mir eine Liste der aktuelle als sicher geltenden Verfahren.&lt;br /&gt;
([[User:Mrohr|Matthias]]) Am Besten Referenz auf [https://www.bsi.bund.de/ContentBSI/Publikationen/TechnischeRichtlinien/tr02102/index_htm.html https://www.bsi.bund.de/ContentBSI/Publikationen/TechnischeRichtlinien/tr02102/index_htm.html]&lt;br /&gt;
&lt;br /&gt;
; Schlüssel&lt;br /&gt;
 Das die Schlüssel bestimmten Formaten entsprechen müssen ist ok - aber das Schlüsselmanagement wird gar nicht besprochen?&lt;br /&gt;
; Schutz der Daten im Browsercache&lt;br /&gt;
 Skripte und Browserplugins können ebenfalls auf den Browsercache zugreifen - diese werden hier nicht erwähnt.&lt;br /&gt;
&lt;br /&gt;
([[User:Mrohr|Matthias]]) Weiterhin entsprechen die vorgeschlagenen HTTP Headern nicht dem Best Practice:&lt;br /&gt;
&lt;br /&gt;
 Cache-control: no-cache, no-store&lt;br /&gt;
 Pragma: no-cache&lt;br /&gt;
 Expires: -1&lt;br /&gt;
&lt;br /&gt;
([[User:Mrohr|Matthias]]) Die Empfehlung hinsichtlich des manuellen Leerens des Browsercaches sollte wenn dann nur bei Anwendungen mit sehr hohem Schutzbedarf in Erwaegung gezogen werden. Wichtiger waere da schon eher die richtigen Cache-Header zu verwenden. Solche Empfehlungen ihm Rahmen des Grundschutzes aber wirklich nichts zu suchen. &lt;br /&gt;
&lt;br /&gt;
; Maskierung von Passwörtern &lt;br /&gt;
 Dies schützt bei der Eingabe nur vor ShoulderSurfing nicht vor Skripten oder Plugins die diese an andere Server posten.&lt;br /&gt;
&lt;br /&gt;
([[User:Mrohr|Matthias]]) Das ist voellig korrekt. Aber inwieweit ist die Aussage Passwort-Felder zu verwenden fehlerhaft bzw. hier unzureichend beschrieben?&lt;br /&gt;
&lt;br /&gt;
; Sicherung von Zugangsdaten:&lt;br /&gt;
 Zugangsdaten in einer Datei abzulegen - wenn auch ausserhalb des WebRoots ist keine gute Idee.&lt;br /&gt;
([[User:Mrohr|Matthias]]) Es ist sicher nicht die schoenste Variante, es laesst sich aber nunmal in vielen Faellen nicht vermeiden. Deshalb fordert der [http://code.google.com/p/owasp-asvs/wiki/Verification_V2 ASVS] hier etwa auch nicht mehr. Fuer den hier angestreben Grundschutz sollte das meiner Meinung nach ausreichen.&lt;br /&gt;
; Schutz von Quelltexten:&lt;br /&gt;
 Hier würde ich property files mit aufnehmen. der hinweis auf web-inf/classes fehlt - warum?&lt;br /&gt;
 Bei include-befehlen sind die pfadangaben zu überdenken.&lt;br /&gt;
([[User:Mrohr|Matthias]]) Wuerde property Dateien allgemein den Konfigurationsdateien zuordnen. Der Begriff &amp;quot;Einzubindende Dateien&amp;quot; ist mir allrdings Neu&lt;br /&gt;
&lt;br /&gt;
([[User:Mrohr|Matthias]]) Weiterhin, fehlt ein genereller Bezug auf HTML 5 WebStorage, LSOs etc. Zumindest in abstrakter Form, so dass diese dadurch indirekt addresiert werden. Egal, in dem relevanten Punkt will der Autor meiner Meinung nach nur einige Beispiele nennen, das sollte keinen Anspruch auf Vollsteandigkeit haben muessen.&lt;br /&gt;
&lt;br /&gt;
; ([[User:Mrohr|Matthias]]) - Durch dieses Attribut wird die Gültigkeit des Cookies auf die Domäne der Web-Anwendung beschränkt.&lt;br /&gt;
Nein, das ist leider total falsch. Das Domain-Attribut stellt eine Aufweichung der Cookie-Gueltigkeit dar und nicht anders herum. Gewoehlich sind Cookies immer Host-Cockies und das sollte auch so bleiben. Die Empfehlung sollte entfernt werden.&lt;br /&gt;
&lt;br /&gt;
== M 4.WA16Zugriffskontrolle bei Web-Anwendungen (Markus) ==&lt;br /&gt;
; Zugriffskontrolle via Frameworks:&lt;br /&gt;
 Dieser Punkt (Frameworks) wird nur in einem Satz erwähnt. Es werden keine Bespiele gegeben - Das ist zu wenig.&lt;br /&gt;
 Es müssen alle Zugriffe geschützt werden. Eine Protokollierung aller Zugriffe mit den nötigen Informationen ist ebenfalls empfehlenswert.&lt;br /&gt;
; Datei Upload:&lt;br /&gt;
 Die Gefahr eines DOS wird hier nicht erwähnt.&lt;br /&gt;
&lt;br /&gt;
== M 4.WA19Verhinderung von Cross-Site Request Forgery (CSRF, XSRF) (Markus, Matthias) ==&lt;br /&gt;
; Verantwortliche: &lt;br /&gt;
 Entwickler und Admins!&lt;br /&gt;
([[User:Mrohr|Matthias]]) Korrekt, wobei auch in der Reihenfolge&lt;br /&gt;
&lt;br /&gt;
; Anti-CSRF-Token in hidden fields:&lt;br /&gt;
 Das ist keine gute Idee. Ich würde das streichen!&lt;br /&gt;
&lt;br /&gt;
([[User:Mrohr|Matthias]]) Watt? Anti-CSRF-Tokens in Hidden Fields sind die Standard-Massnahme. Wie denn sonst? Bitte nicht streichen!!! &lt;br /&gt;
&lt;br /&gt;
([[User:Mrohr|Matthias]]) Die Technik bei der die Session ID als Anti-CSRF-Token verwendet wird, wird als Double-Cookie Submit bezeichnet, das sollte hier referenziert werden.&lt;br /&gt;
&lt;br /&gt;
; Umgehung von Schutzmechanismen:&lt;br /&gt;
 Man in the middle hat keinen direkten Bezug zu CSRF! Das würde ich streichen.&lt;br /&gt;
([[User:Mrohr|Matthias]]) Der Hinweis ist korrekt. Wovon der Autor hier spricht ist Session Replay nicht CSRF.&lt;br /&gt;
&lt;br /&gt;
; Frameworks:&lt;br /&gt;
 Gute Idee - aber es gibt auch Features in den ApplicationServern die CSRF unterbinden - warum wird das nicht besprochen?&lt;br /&gt;
&lt;br /&gt;
([[User:Mrohr|Matthias]]) Sehe ich persoenlich nicht so, da CSRF primaer ein Applikations-Fehler ist, und auch in der Applikation und nicht im Environment (AppServer) geloest werden sollte. Auch wenn das manchmal ggf. die einzig machbare Loesung darstellt.&lt;br /&gt;
&lt;br /&gt;
([[User:Mrohr|Matthias]]) Was generell fehlt, ist ein Hinweis darauf, dass schreibende Requests generell per HTTP Post abgewickelt werden sollten, da HTTP Get keine &amp;quot;Safe Method&amp;quot;  (siehe HTTP 1.1, RFC 2616) ist.&lt;br /&gt;
&lt;br /&gt;
== M 4.WA20Sicherer Entwurf der Logik von Web-Anwendungen (Markus, Matthias) ==&lt;br /&gt;
; Rollbacks:&lt;br /&gt;
 Tritt ein Fehler auf muss die Applikation einen konsistenten Datenstand zurück lassen. Das wird hier nicht erwähnt.&lt;br /&gt;
; RaceConditions:&lt;br /&gt;
 Fehler in der Geschäftslogik können auch durch zwei gleichzeitige Sessions auf einer Webapplikation auftreten - das wird hier nicht besprochen.&lt;br /&gt;
&lt;br /&gt;
([[User:Mrohr|Matthias]]) Ehrlich gesagt kann ich nicht ganz nachvollziehen, was der Sichere Entwurf der Logik von Web-Anwendungen mit dem Verzicht auf aktive Inhalte zu tun hat. Unabhaengig davon sollte man solche unsinnigen Aussagen im Jahre 2012 nicht mehr treffen, damit macht man sicht nur laecherlich.&lt;br /&gt;
&lt;br /&gt;
Nichts desto trotz, was hier als &amp;quot;echte&amp;quot; Massnahmen erwaehnt werden sollte sind:&lt;br /&gt;
* Verhinderung von Race Conditions, aber nicht nur durch Concurrent Sessions sondern auch durch Singletons (TOCTOU)&lt;br /&gt;
* Enforcements von Workflows, etwa durch die Verwendung von State Machines oder Request Tokens (auch bekannt als Site Usage Enforcement)&lt;br /&gt;
* Fail Securely (bzw. Verweis)&lt;br /&gt;
* Serverseitige Abbildung der Anwendungslogik, zumindest wenn diese sicherheitsrelevant sit&lt;br /&gt;
&lt;br /&gt;
== M 4.WA22Verhinderung der Blockade von Ressourcen (DoS) bei Web-Anwendungen (Markus, Matthias) ==&lt;br /&gt;
; Datenspeicher:&lt;br /&gt;
 Neben dem Datenspeicher sollte auch der RAM-Verbrauch pro Thread der Applikation limitiert werden.&lt;br /&gt;
([[User:Mrohr|Matthias]]) Stimmt, ich wuerde hier sogar allgemein von Ressourcenverbrauch am Beispiel RAM und Datenspeicher, sprechen&lt;br /&gt;
&lt;br /&gt;
; Voraggregation von Daten / Caching&lt;br /&gt;
 Dieser Punkt fehlt: Stark ressourcen belastende Anfragen können auch in Lastarmen Zeiten vorberechnet werden.&lt;br /&gt;
([[User:Mrohr|Matthias]]) Stimmt, koennte noch als Anmerkung bei &amp;quot;Cachen von Anfragen&amp;quot; hinzugefuegt werden&lt;br /&gt;
&lt;br /&gt;
; ([[User:Mrohr|Matthias]]) Prueffrage: &amp;quot;Wird ein möglicher Überlauf von Protokolldaten... verhindert&amp;quot;&lt;br /&gt;
&lt;br /&gt;
Ist eine etwas eingeschrankte Sicht. Wurde hier eher von Ueberlauf von Speicherplaz zu Beispiel im Rahmen der Protokollierung sprechen&lt;br /&gt;
&lt;br /&gt;
; ([[User:Mrohr|Matthias]]) Durchfuehrung von Lasttests zur Identifikation ressourcenintensiver Operationen&lt;br /&gt;
&lt;br /&gt;
Der Hinweis waere ggf. erwahnenswert&lt;br /&gt;
&lt;br /&gt;
; ([[User:Mrohr|Matthias]]) Hinweis auf nicht-angemeldeten Bereich&lt;br /&gt;
&lt;br /&gt;
Das Risiko durch rechenintensive Operationen durch einen DoS betroffen zu sein ist natuerlich fuer gewoehlich um so groesser, wenn diese im anonymen Bereich angeboten wird. Der Hinweis ware ggf. ebenfalls hilfreich.&lt;br /&gt;
&lt;br /&gt;
== M 4.WA25Verhinderung von Clickjacking (Markus, Matthias) ==&lt;br /&gt;
Ok - das passt soweit.&lt;br /&gt;
&lt;br /&gt;
([[User:Mrohr|Matthias]]) Stimmt, auch wenn ich &amp;quot;Angreifer&amp;quot; in dem Beispiel eher als &amp;quot;Webseitenbetreiber&amp;quot; beschreiebn wuerde, da er nicht wirklich aktiv einen Angriff durchfuehrt, oder? Bitte nochmal ueber meinen Hinweis aus G 5.WA18 nachdenken: Ist Clickjacking-Schutz tatsaechlich Grundschutz? Ich bin mir da selber nicht so wirklich sicher.&lt;br /&gt;
&lt;br /&gt;
== M 5.WA21Sichere Anbindung von Hintergrundsystemen an Web-Anwendungen (Markus, Matthias) ==&lt;br /&gt;
; Verantwortliche:&lt;br /&gt;
 Architekten fehlen. Entwickler müssen die Views umsetzen und die Datasource entsprechend einbinden - die fehlen hier ebenfalls.&lt;br /&gt;
; DirectorySystem Beispiel:&lt;br /&gt;
 Das DirectorySystem wird in dem angegeben Beispiel zum Single Point of Failure - das wird verschwiegen.&lt;br /&gt;
; Firewalls:&lt;br /&gt;
 Das sind fachlich-blinde Systeme. Was ist mit WAFs / IDS / IPS etc.?&lt;br /&gt;
([[User:Mrohr|Matthias]]) Stimmt, das hat in diesem Baustein nichts zu suchen&lt;br /&gt;
&lt;br /&gt;
; ([[User:Mrohr|Matthias]]) Typische Hintergrundsysteme&lt;br /&gt;
Hier fehlt irgendwie &amp;quot;Middleware&amp;quot;, die ist denke ich nicht immer Legacy&lt;br /&gt;
&lt;br /&gt;
== M 5.WA23Systemarchitektur einer Web-Anwendung (Markus, Matthias) ==&lt;br /&gt;
; Verantwortliche:&lt;br /&gt;
Auch hier fehlend wieder die Architekten. &lt;br /&gt;
([[User:Mrohr|Matthias]]) Stimmt, habe das Dokument mal komplett durchgesucht.Tatsaechlich wird der &amp;quot;Architekt&amp;quot; niemals genannt, das scheint also eher ein grundseatzliches Problem zu sein. Der Administrator hat hier aber nun wirklich nichts zu suchen.&lt;br /&gt;
&lt;br /&gt;
; Virtualisierung:&lt;br /&gt;
Virtualisierung bietet weitere Angriffsvektoren (z.B.: Hypervisor) die eine &amp;quot;Blech&amp;quot;Farm nicht bietet.&lt;br /&gt;
&lt;br /&gt;
([[User:Mrohr|Matthias]]) Genau, wobei auch der ganze Bereich geshareter Plattformen (z.B. By SharePoint) hier fehlt.&lt;/div&gt;</summary>
		<author><name>Mrohr</name></author>	</entry>

	<entry>
		<id>https://wiki.owasp.org/index.php?title=Talk:OWASP_Review_BSI_IT-Grundschutz_Baustein_Webanwendungen&amp;diff=130211</id>
		<title>Talk:OWASP Review BSI IT-Grundschutz Baustein Webanwendungen</title>
		<link rel="alternate" type="text/html" href="https://wiki.owasp.org/index.php?title=Talk:OWASP_Review_BSI_IT-Grundschutz_Baustein_Webanwendungen&amp;diff=130211"/>
				<updated>2012-05-21T15:55:46Z</updated>
		
		<summary type="html">&lt;p&gt;Mrohr: /* M 4.WA08Schutz vor automatisierter Nutzung von Web-Anwendungen (Markus) */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Since it's about a review of a document in German, all the discussions will be done in German :-)&lt;br /&gt;
&lt;br /&gt;
Diskussionen rund um den Review des &amp;quot;IT-Grundschutzbausteins Webanwendungen&amp;quot; finden hier statt, sinnvollerweise auf Deutsch :-)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Vorschlag für Kriterien, die an unser Review angelegt werden sollten (.kai) ==&lt;br /&gt;
&lt;br /&gt;
* Der Baustein soll alle wichtigen Themen der Entwicklung sicherer&lt;br /&gt;
Webanwendungen enthalten.&lt;br /&gt;
&lt;br /&gt;
* Der Baustein soll die verschiedenen Phasen der Software-Entwicklung&lt;br /&gt;
vollständig abdecken.&lt;br /&gt;
&lt;br /&gt;
* Der Baustein soll zwischen verbindlichen, prüfbaren Vorgaben und&lt;br /&gt;
unverbindlichen Empfehlungen sprachlich sauber unterscheiden (hier&lt;br /&gt;
spielt mein Auditorenblick eine Rolle). Vor allem soll der Baustein&lt;br /&gt;
verbindliche Anforderungen auch tatsächlich stellen. Alle&lt;br /&gt;
verbindlichen Anforderungen müssen unabhängig von der jeweiligen&lt;br /&gt;
Umgebung auch umsetzbar sein, d.h. sie müssen entsprechend generisch&lt;br /&gt;
sein.&lt;br /&gt;
&lt;br /&gt;
* Die Maßnahmen sollen nur in (begründbaren) Ausnahmen zu Empfehlungen&lt;br /&gt;
von OWASP im Widerspruch stehen.&lt;br /&gt;
&lt;br /&gt;
* Die Maßnahmen sollen verständlich und anwendbar sein.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== &amp;quot;Hilfsmittel&amp;quot; (Markus, Matthias) ==&lt;br /&gt;
Ich würde das Script zur Vermeidung von Clickjacking wrappen und nicht als losen Skript-block in den Text einbinden - einfach schlechter Programmierstiel diese losen Blöcke.&lt;br /&gt;
Der Zugriff auf das Body-Element mit byTagName-Array[0] ist auch nicht wirklich gut. Ich halte Zugriffe über das DOM (klassisch), bei ID bzw. XPATH für besser. &lt;br /&gt;
&lt;br /&gt;
([[User:Mrohr|Matthias]]) Verwunderlich finde ich aber, dass der Autor zum Einen zwar von der Verwendung von JavaScript vollstaendig abraet, zum Anderen aber eben solches als Best-Practice-Ansatz fuer Click Jacking empfiehlt.&lt;br /&gt;
&lt;br /&gt;
SQL-Injection Characters:&lt;br /&gt;
die Pipe fehlt hier zur Textkonatenierung&lt;br /&gt;
+ / - haben auch eine Bedeutung bei JOINs.&lt;br /&gt;
&lt;br /&gt;
([[User:Mrohr|Matthias]]) Special Character bzw. DB Escaping ist schon recht DB-spezifisch (siehe [https://www.owasp.org/index.php/SQL_Injection_Prevention_Cheat_Sheet SQL Prevention Cheat sheet]). Wozu werden die hier ueberhaupt aufgefuehrt? Um Eingebafilterung nach pot. SQL Injections durchzufuheren, oder um eine eigene Escaping-Funktion zu schreiben? Raus damit!&lt;br /&gt;
&lt;br /&gt;
== &amp;quot;Goldene Regeln&amp;quot; (Matthias) ==&lt;br /&gt;
&lt;br /&gt;
Hier meine Anmerkungen zu diesem Dokument:&lt;br /&gt;
&lt;br /&gt;
; 1. Für mich fehlende Punkte&lt;br /&gt;
* Korrektur der Ursache (Root Cause) von Schwachstellen statt  Verhinderung deren Ausnutzung&lt;br /&gt;
* Bezug auf Minimierung der Angriffsfläche und Least-Privilege-Prinzip&lt;br /&gt;
* Bezug auf Defense-in-Depth-Prinzip&lt;br /&gt;
* Verwendung von getesteten Security APIs (z.B. OWASP ESAPI) statt selbstentwickelter Funktionen&lt;br /&gt;
* Bezug auf Externalisierung von Sicherheitsfunktionen, sowie deklerative vor programmatischer Sicherheit.&lt;br /&gt;
&lt;br /&gt;
; 2. Begriff &amp;quot;Web-Anwendung&amp;quot;&lt;br /&gt;
Würde ich generell durch &amp;quot;Webanwendung&amp;quot; ersetzen.&lt;br /&gt;
&lt;br /&gt;
; 3. Einleitung (&amp;quot;Web-Anwendungen stellen Funktionalität zur Verfügung, ...&amp;quot;)&lt;br /&gt;
&lt;br /&gt;
Wozu dient dieser Satz?&lt;br /&gt;
&lt;br /&gt;
; 4. &amp;quot;Die Architektur der Web-Anwendung ist im Sicherheitskonzept zu  dokumentieren.....&amp;quot; &lt;br /&gt;
&lt;br /&gt;
Ich fände es sinnvoller, wenn hier von der &amp;quot;Sicherheitsarchitektur&amp;quot; gesprochen wird, welche etwa neben den sicherheitsrelevanten Datenflüssen, sensible Komponenten, Entry Points, Akteure architekturelle Security Controls wie Authentisierung, Kryptographie und natürlich die Trust Boundaries beinhaltet.&lt;br /&gt;
&lt;br /&gt;
; 5. &amp;quot;Bei Web-Anwendungen handelt es sich häufig um spezielle Eigenentwicklungen....&amp;quot;&lt;br /&gt;
&lt;br /&gt;
Erstens würde ich hier den geläufigen Begriff &amp;quot;Individualsoftware&amp;quot; verwenden. Zweitens würde ich statt bestimmte SDLC-Phasen vorzugeben (die Begriffe &amp;quot;Softwareverteilung&amp;quot; und &amp;quot;Integration&amp;quot; sind mir bei Webanwendungen bisher noch nicht so häufig untergekommen), besser von der Notwendigkeit sprechen, Sicherheit in allen Entwicklungsphasen zu berücksichtigen, also eines SDLs.&lt;br /&gt;
&lt;br /&gt;
; 6. &amp;quot;Alle Ein- und Ausgaben der Web-Anwendung müssen in eine normalisierte Form überführt werden....&amp;quot;&lt;br /&gt;
&lt;br /&gt;
Normalisierung ist für mich nicht gleich Kanonsierung, auch wenn beide Begriffe häufig als synonym verwendet werden.  Der Unterschied wird in der [http://owasp-esapi-java.googlecode.com/svn/trunk_doc/2.0-rc4/org/owasp/esapi/Encoder.html API-Beschreibung der ESAPI] erklärt. Die Normalisierungs-Funktion ist allerdings schon vor einiger Zeit aus der ESAPI [https://lists.owasp.org/pipermail/esapi-dev/2010-January/000266.html rausgeflogen]. Die generelle Kanonisierung von Ausgaben halte ich dazu für nicht sinnvoll.&lt;br /&gt;
&lt;br /&gt;
Zweitens, finde ich den weiteren Text zwar grundsätzlich formal korrekt, aber so allgemein, dass dieser glaube ich niemandem so richtig etwas bringt.  &lt;br /&gt;
&lt;br /&gt;
Besser fände ich hier Ein- von Ausgabevalidierung grundsätzlich voneinander abzugrenzen. Etwa was ich per Eingabevalidierung (Längenprüfung, Casting, etc. per Whitelisting) und was mit Ausgebavalidierung (Enkodierung, Escaping, Parametrisierung) machen muss und kann.&lt;br /&gt;
&lt;br /&gt;
Eingabedaten können technisch zudem auch Werte eingelesener Property-Dateien sein. Muss ich die auch validieren? Ist das dann noch Grundschutz? &lt;br /&gt;
&lt;br /&gt;
; 7. &amp;quot;Für den Zugriff auf sensitive Funktionen oder Informationen muss die Web-Anwendung eine wirksame Authentisierung und Sitzungsverwaltung unterstützen. Die Eigenschaften der Sitzungs-ID müssen so gewählt werden, dass die Sitzung ausreichend geschützt ist. ....&amp;quot;&lt;br /&gt;
&lt;br /&gt;
Besser fände ich &amp;quot;eine Authentisierung, die über eine dem Schutzbedarf der Anwendung angemessene Stärke verfügt.&amp;quot; &lt;br /&gt;
&lt;br /&gt;
Eigentlich geht es doch mehr um den Schutz der Sitzungs-ID, da diese gewöhnlich im Verlauf einer Sitzung den Client authentisiert. Oder den Schutz des Zugriffs auf eine Sitzung. &lt;br /&gt;
&lt;br /&gt;
Zudem fehlt hier meiner Meinung nach der Hinweis auf die bevorzugte Verwendung getesteter Standardkomponenten.&lt;br /&gt;
&lt;br /&gt;
; 8. &amp;quot;Die Web-Anwendung sollte die zu übermittelnden Daten schützen.&amp;quot;&lt;br /&gt;
&lt;br /&gt;
Dies würde ich nur auf sensible Daten beziehen. Zusätzlich zu HTTPS würde ich hier schreiben, dass sensible Daten generell nicht in der URL übertragen werden dürfen.&lt;br /&gt;
&lt;br /&gt;
; 9. &amp;quot;Die Preisgabe interner Informationen (z.B. Kommentare, Fehlermeldungen)&amp;quot;&lt;br /&gt;
&lt;br /&gt;
Hier würde ich eher schreiben &amp;quot;(IN Kommentaren, Fehlermeldungen, HTTP Headern, etc.)&amp;quot;&lt;br /&gt;
&lt;br /&gt;
; 10. &amp;quot;Fehler müssen so behandelt werden, ... müssen Fehler bei der Autorisierung zu einer Verweigerung beim Zugriff auf die angeforderte Ressource führen.&amp;quot;&lt;br /&gt;
&lt;br /&gt;
Sprachlich: &amp;quot;Die Webanwendung muss sich stets in einem sicheren Zustand befinden. Beispielsweise müssen Fehler bei der Autorisierung zu einer Verweigerung des Zugriffs führen (Default-Deny-Strategie).&amp;quot;&lt;br /&gt;
&lt;br /&gt;
; 11. &amp;quot;Die Logging-Funktionen der Web-Anwendung müssen aufgetretene Ereignisse derart protokollieren, dass sicherheitskritische Vorfälle nachvollzogen werden können.&amp;quot;&lt;br /&gt;
&lt;br /&gt;
Hier würde hier eher von &amp;quot;allen sicherheitsrelevanten Ereignissen&amp;quot; sprechen.&lt;br /&gt;
&lt;br /&gt;
Weiterhin sollten insbesondere beim Logging der Datenschutz berücksichtigt werden, personenbezogene Daten also nach Möglichkeit nicht oder nur anonymisiert in technischen Logdateien protokolliert werden.&lt;br /&gt;
&lt;br /&gt;
; 12. &amp;quot;Alle Sicherheitsmechanismen (z.B. Authentisierung und Zugriffskontrolle) sind serverseitig zu implementieren und können nicht durch clientseitige Mechanismen ersetzt werden.&amp;quot;&lt;br /&gt;
&lt;br /&gt;
Die Aussage ist so nicht korrekt. Darüber hatten wir bereits bei der ASVS mehrfach diskutiert. &lt;br /&gt;
&lt;br /&gt;
Überall dort wo der Client angegriffen wird, also etwa bei RIAs (Stichwort DOM-Based XSS) müssen wir Security Controls clientseitig implementieren. Es gibt mittlerweile deshalb auch eine Portierung der ESAPI auf Javascript. Überall dort wo der Server oder Hintegrundsysteme angegriffen werden, ist die Aussage aber natürlich zutreffend.&lt;br /&gt;
&lt;br /&gt;
== &amp;quot;Gefährdungen&amp;quot; (Markus, Dennis, .... &amp;lt;Dein Name&amp;gt;) ==&lt;br /&gt;
; Generell:&lt;br /&gt;
Reference auf RFCs fehlen.&lt;br /&gt;
&lt;br /&gt;
==B.5.XX Web-Anwendungen ==&lt;br /&gt;
; 1. Erster Absatz - Letzter Satz: --Wieso werden hier nur HTML/XML Doks und Oberflächen angesprochen? Was ist der Unterschied zwischen einem HTML-Dok und einer Oberfläche? Was ist mit  Flash, etc.? Was ist mit WebSockets?&lt;br /&gt;
; 2. Stichpunkt &amp;quot;Protokollierung&amp;quot;: Sicherheits relevant ist ein sehr dehnbarer Begriff - Eine bessere Formulierung könnte sein: Zur Rekonstruktion von Nutzerhandlungen nötige Ereignisse (positve &amp;amp; negative) müssen protokolliert werden . . . &lt;br /&gt;
; 3. Absatz: &amp;quot;Abgrenzung des Bausteins&amp;quot;: &amp;quot;Die spez. Sicherheitsanforderungen an Web-Services werden in diesem Baustein nicht betrachtet&amp;quot; --&amp;gt; Wie so nicht? Was ist das Backend von einer Rest / AJAX-basierenden Webanwendung denn anderes als ein Web-Service? Diesen Satz würde ich entfernen.&lt;br /&gt;
; 4.Vorsätzliche Handlungen -&amp;gt; Web-Spoofing (G.5.87) -- Missverständliche Bezeichnung / Nomenklatur&lt;br /&gt;
; 5. Seite 4 : erste Zeile &amp;quot;Umsetzung&amp;quot;: &amp;quot;dafür umzusetztende Komponenten müssen die Webanwendung schützen...&amp;quot; - Hier fehlt mir der Hinweis, dass dieser Schutz verifiziert werden muss.&lt;br /&gt;
; 6 Seite 5: &amp;quot;Umsetzung&amp;quot; - Wir haben CSRF, D(D)os und SQL-Injection aber wo ist XSS?&lt;br /&gt;
; 7 Seite 7: &amp;quot;Die Sicherheitsfunktion wird ausschließlich clientseitig...&amp;quot; --&amp;gt; Warum muss der Angreifer überhaupt einen Browser umkonfigurieren? Was ist mit Proxies, Scripts, etc.? Ich würde das reduzieren darauf, dass rein Webbrowser-basierende Schutzfunktionen einfach umgangen werden können.&lt;br /&gt;
; 8 Seite 8: Die angesprochenen Punkte hinterlassen den Eindruck nicht vollständig zu sein: Mir fehlen Punkte wie &amp;quot;Outsourcing&amp;quot;, &amp;quot;KnowHow der Entwickler&amp;quot;, Tooling, Framework-Auswahl, etc.&lt;br /&gt;
; 9 Seite 9: Eigentlich möchte der Autor hier über Datenschutz sprechen. Abgesehen von den letzten drei Zeilen geht es aber nur um &amp;quot;User tracking&amp;quot; - Wo ist der Rest der Datenschutzproblematik? Warum der Fokuss auf Tracking? Mir ist das zu einseitig.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
tbd.&lt;br /&gt;
&lt;br /&gt;
; Wortwahl:&lt;br /&gt;
Ich stosse innerhalb der Texte immer wieder an die Worten '''Hintergrundsystem''' und '''Sicherheitskontext'''.&lt;br /&gt;
'''Hintergrundsystem:''' besseres Synonym?&lt;br /&gt;
'''Sicherheitskontext:''' nur weil es in den Texten um Sicherheit geht muss nicht an jeder Stelle immer wieder das Wort _Sicherheits_kontext eingebaut werden.&lt;br /&gt;
Bsp: &amp;quot;Erlangt ein Angreifer Kenntnis von einer solchen gültigen, aber nicht mehr genutzten SessionID, so kann er die Web-Anwendung im Sicherheitskontext des nicht abgemeldeten Benutzers weiter verwenden.&amp;quot; (G 5,WA12 Unzureichendes Session-Management von Web-Anwendungen)&lt;br /&gt;
Verbesserungsansansatz: ... so kann er die Web-Anwendung anstelle des eigentlichen Besitzers weiterhin verwenden.&lt;br /&gt;
&lt;br /&gt;
== &amp;quot;G 2.WA01 Mangelhafte Auswahl oder Konzeption von Web-Anwendungen&amp;quot; (Matthias) ==&lt;br /&gt;
&lt;br /&gt;
Nachdem ich mir diese Gefährdung durchgelesen hatte, fehlten mir ehrlich gesagt etwas die Worte. Nicht nur, dass hier fast jeder zweite Satz entweder falsch ist bzw. massive Fehler enthält oder ich diesen schlicht nicht verstehe, ist der ganze Text sprachlich wirklich enorm verbesserungsfähig. &lt;br /&gt;
&lt;br /&gt;
Na gut, ich konzentriere mich mal auf die fachlichen Punkte:&lt;br /&gt;
&lt;br /&gt;
; 1. Security Controls&lt;br /&gt;
Werden mal mit &amp;quot;Schutzmechanismen&amp;quot;, mal mit &amp;quot;Sicherheitskomponenten&amp;quot; und dann wieder als &amp;quot;Sicherheitsfunktionen&amp;quot; bezeichnet. Hier macht eine einheitliche Benennung sicherlich Sinn und ist weniger verwirrend.&lt;br /&gt;
&lt;br /&gt;
; 2. &amp;quot;Eine Web-Anwendung ist in der Regel ein verteiltes, komplexes System bestehend aus unterschiedlichen Komponenten (z. B. Webserver, Applikationsserver, Hintergrundsysteme)&amp;quot;&lt;br /&gt;
&lt;br /&gt;
Eine Webanwendung besteht sicher nicht aus einem Webserver- oder anderer infrastruktureller Komponenten, sondern ist Software welches diese nutzt.&lt;br /&gt;
&lt;br /&gt;
; 3. &amp;quot;Bei individuell entwickelten Web-Anwendungen sind im Allgemeinen die Frameworks, Komponenten und Schnittstellen im Rahmen der Konzeption auszuwählen und deren Einbindung und Absicherung zu betrachten....Im Gegensatz dazu ist bei der Konzeption von Web-Anwendungen auf Basis von Standardsoftware insbesondere auf die Auswahl der Software und die Konfiguration der Teilkomponenten zu achten&amp;quot;&lt;br /&gt;
&lt;br /&gt;
Wir unterscheiden im Rahmen von Webanwendungen eigentlich Free or Opensource Software (FOSS bzw. FLOSS), Standardsoftware und Individualsoftware voneinander. Wir unterscheiden nicht Frameworks von Standardsoftware. Frameworks können Teil von Standardsoftware sein, wie etwa bei SharePoint, SAP, etc, oder aber FOSS, wie etwa Spring. Die ganzen Absätze machen für mich daher keinen Sinn.&lt;br /&gt;
&lt;br /&gt;
; 4. &amp;quot;Eine Sicherheitsfunktion (z. B. Authentisierung, Autorisierung) wird nicht an einer Stelle umgesetzt und verwendet, sondern ist mehrfach in der Web- Anwendung realisiert. Wird diese Sicherheitsfunktion an den verschiedenen Stellen unterschiedlich umgesetzt, führt dies zu einem uneinheitlichen Sicherheitsniveau.&amp;quot;&lt;br /&gt;
&lt;br /&gt;
Natürlich ist die mehrfache Verwendung bestimmter Security Controls, beispielsweise von Zugriffskontrollen (Complete-Mediation) oder Validierung (Robustheit) erstrebenswert. Was der Autor hier wahrscheinlich meinte, war die Notwendigkeit diese zu Kapseln bzw. zu Externalisieren. Das bezieht sich im übrigen nicht nur auf die Controls selbst, sondern auch auf ihre Parametrisierung (etwa. über Konfigdateien / XACML).&lt;br /&gt;
&lt;br /&gt;
Wichtiger wäre in diesem Zusammenhang zudem die fehlende Berücksichtigung bestimmter Security Controls.&lt;br /&gt;
&lt;br /&gt;
; 5. &amp;quot;Auswahl von Web-Anwendungen auf Basis von Standardsoftware&amp;quot;&lt;br /&gt;
Was will der Satz sagen? Ich wähle Standardsoftware aus, aber doch keine Webanwendungen. Oder heißt das, ich kaufe eine existierende Anwendung ein (Webanwendung!=Indivudualsoftware)? &lt;br /&gt;
&lt;br /&gt;
; 6. &amp;quot;Das ausgewählte Produkt verfügt nicht über die ausreichende Sicherheitsfunktionalität, ... Daher müssen die notwendigen Schutzmechanismen nachträglich hinzugefügt werden, wodurch zusätzliche Aufwände entstehen.&amp;quot;&lt;br /&gt;
Das ist etwas sehr positiv formuliert. Tatsächlich können fehlende Security Controls in zugekaufter Software (insb. Standardsoftware) in der Realität häufig gar nicht hinzugefügt werden oder nur perimetrisch (z.B. per WAF oder Access Gateway).&lt;br /&gt;
&lt;br /&gt;
; 7. &amp;quot;Die Hintergrundsysteme werden unzureichend abgesichert und dadurch ist die Datenbank der Web-Anwendung aus dem Internet erreichbar.&amp;quot;&lt;br /&gt;
Gehören fehlende Netzwerksegmentierung bzw. Firewallregeln wirklich in diesen Kontext? Das ist doch eigentlich Grundschutz der Infrastruktur, oder?&lt;br /&gt;
&lt;br /&gt;
; 8. &amp;quot;Aufgrund schwacher Parameter in der Konfiguration des Frameworks zum Session-Management werden unsichere SessionIDs erzeugt.&amp;quot;&lt;br /&gt;
Was sind &amp;quot;schwache&amp;quot; Parameter?&lt;br /&gt;
&lt;br /&gt;
Welches Framework erlaubt unsichere SessionIDs durch eine &amp;quot;schwache&amp;quot; Konfiguration zu erzeugen?&lt;br /&gt;
&lt;br /&gt;
; 9. &amp;quot;Wird die Konfiguration des Web-Browsers durch einen Angreifer manipuliert, können die clientseitig umgesetzten&amp;quot;&lt;br /&gt;
&lt;br /&gt;
Manipuliert ein Angreifer die Konfguration seines Webbroswers, wenn er einen MITM-Proxy konfiguriert?&lt;br /&gt;
&lt;br /&gt;
Wie bereits bei den &amp;quot;Goldenen Regeln&amp;quot; angemerkt, gilt auch hier, das manche Security Controls auch clientseitig umgesetzt werden dürfen (etwa. zur Verhinderung von Dom-Based XSS).&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== &amp;quot;G 5.WA10 Fehler in der Web-Anwendungslogik&amp;quot; (Dennis) ==&lt;br /&gt;
; 1. &amp;quot;Damit kann aufgrund der Prüfreihenfolge ein hoher Ressourcenverbrauch provoziert werden, der für Denial-of-Service-Angriffe ausgenutzt werden kann.&amp;quot;&lt;br /&gt;
Meiner Meinung nach passt in diesem Kontext die Attacke DoS nicht ganz. Falls die nachfolgende Funktionalität wegen der langen Ausführungszeit der Filterkomponente übersprungen wird bzw. ein Fehler auftritt würde dies meiner Ansicht in die Thematik Anwendungslogik passen. Eine DoS-Attacke kann hingegen anhand jeder Funktion durchgeführt werden.&lt;br /&gt;
&lt;br /&gt;
([[User:Mrohr|Matthias]]) Jo stimmt, aber ich stimme mit der Aussage eigentlich schon ueberein, auch wenn diese zugegeben etwas ungluecklich formuliert ist. Es geht hier ja darum, rechenintensive Pruefungen/Filterung moeglichst zu vermeiden bzw. zu reduzieren. Aus diesem Grund machen wir ja auch bei der AV-Pruefung zunaechst Blacklist-Checks und erst am Ende rechenintensive statistische oder verhaltensbezogene Pruefungen.&lt;br /&gt;
&lt;br /&gt;
== &amp;quot;G 5.WA11 Umgehung clientseitig umgesetzter Sicherheitsfunktionen von Web-Anwendungen&amp;quot; (Dennis) ==&lt;br /&gt;
; 1. &amp;quot;Ein Angreifer kann diese ausnutzen, um beispielsweise unbefugt Befehle an Hintergrundsysteme der Web-Anwendung zu übermittlen (z.B. in Form von Datenbankanfragen bei einer SQL-Injection).&amp;quot;&lt;br /&gt;
Umformulierung des Inhalts der Klammer. Hatte beim ersten Lesen für mich den Anschein, als ob ein Formular genutzt werden könnte welches den Nutzer aufforder eine SQLI einzugeben. Ich denke &amp;quot;Datenbankanfrage zwecks Ausführung einer SQL-Injection&amp;quot; würde besser passen.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== G 2.WA02 Mängel bei der Entwicklung und der Erweiterung von Web-Anwendungen (Matthias) ==&lt;br /&gt;
&lt;br /&gt;
Allgemein ist de obere Teil ok, die aufgezählten &amp;quot;Auswirkungen von fehlenden Vorgaben&amp;quot; verstehe ich jedoch nicht. Wo ist etwa der Bezug von Barrierefreiheit auf die Anwendungssicherheit?&lt;br /&gt;
&lt;br /&gt;
Mein Vorschlag, um diese Punkte etwa sinnvoll umzubauen:&lt;br /&gt;
* &amp;quot;Fehlendes Vorgehensmodell&amp;quot;: Bezug auf fehlende Berücksichtigung von Sicherheit im SDLC. Statt eines SDLCs selbst sollte hier besser auf die Notwendigkeit eines Secure Development Lifecycle (SDL) hingewiesen werden&lt;br /&gt;
* &amp;quot;Fehlende Programmierrichtlinien&amp;quot; =&amp;gt; Besser wäre hier &amp;quot;Fehlende Sicherheitsrichtlinien in der Programmierung&amp;quot; also &amp;quot;Secure Coding Guidelines&amp;quot;&lt;br /&gt;
* &amp;quot;Testfälle&amp;quot; =&amp;gt; &amp;quot;Sicherheitsrelevante Testfälle&amp;quot; (z.B. Security Unit Tests). &lt;br /&gt;
* &amp;quot;Barrierefreiheit&amp;quot;: Warum nicht an dieser Stelle die Auswirkungen von Sicherheitsfunktionen auf die Bedienbarkeit, etwa anhand von CAPTCHAS erläutern?&lt;br /&gt;
&lt;br /&gt;
== G 2.WA03 Unzureichender Schutz personenbezogener Daten bei Web-Anwendungen (Matthias) ==&lt;br /&gt;
&lt;br /&gt;
Der Titel dieses Bausteines heißt &amp;quot;Schutz personenbezogener Daten&amp;quot;, die genannten Beispiele beziehen sich bis auf den letzten jedoch auf die missbräuchliche (oder zumindest problematische) Nutzung aus Sicht des Datenschutzes. &lt;br /&gt;
&lt;br /&gt;
Die Punkt 1-3 sollten daher besser entfallen und z.B. durch die Folgenden ersetzt werden:&lt;br /&gt;
* Unsichere Einbindung von sozialen Netzwerken (Bezug nehmen auf den Like-Button bei Facebook)&lt;br /&gt;
* Unsichere Einbindung von Werbeinhalten&lt;br /&gt;
* Unsichere Übertragung und Caching&lt;br /&gt;
* Unsichere Protokollierung&lt;br /&gt;
* Ungenügender Zugriffsschutz&lt;br /&gt;
* Verstoß des Minimalprinzips bzw. der Zweckgebundenheit (welche Daten werden wirklich benötigt)&lt;br /&gt;
&lt;br /&gt;
Auch wäre es ggf. zumindest einen Verweis auf das BDSG zu machen.&lt;br /&gt;
&lt;br /&gt;
== G 4.33 Unzureichende oder fehlende Authentisierung (Matthias) ==&lt;br /&gt;
&lt;br /&gt;
; 1. Erster Absatz: &amp;quot;Wenn Authentisierungsmechanismen fehlen oder zu schlecht sind&amp;quot;&lt;br /&gt;
&lt;br /&gt;
&amp;quot;schlecht&amp;quot; sollte vlt besser durch &amp;quot;unzureichend&amp;quot; ersetzt werden.&lt;br /&gt;
&lt;br /&gt;
; 2. &amp;quot;Sicherheitslücken entstehen bei... der Benutzerauthentisierung&amp;quot;&lt;br /&gt;
&lt;br /&gt;
Hier findet nur ein Bezug auf &amp;quot;Passwörter&amp;quot; statt. Der Bezug auf die fehlerhaft implementierte oder dem Schutzbedarf ungenügende Schutzmechanismen (z.B. keine 2-Faktor-Authentisierung bei hochsensiblen Daten) fehlt. Auch auf das komplette fehlen von Authentisierungs-Controls wird hier nicht  eingegangen&lt;br /&gt;
&lt;br /&gt;
; 3. &amp;quot;Sicherheitslücken entstehen bei... der Komponentenauthentisierung&amp;quot;&lt;br /&gt;
&lt;br /&gt;
Wie bei 2., wird auch hier wieder nur auf Passwörter, nicht jedoch auf das fehlen von Controls selbst eingegangen. An dieser Stelle fehlt auch ein Hinweis auf die Notwendigkeit dedizierter Benutzeraccounts.&lt;br /&gt;
&lt;br /&gt;
; 4. &amp;quot;Sicherheitslücken entstehen bei... der Wahl des Verfahrens&amp;quot;&lt;br /&gt;
&lt;br /&gt;
Statt untauglich würde ich auch hier von &amp;quot;dem Schutzbedarf der Daten nicht angemessen&amp;quot; sprechen, eigentlich gehört das für mich aber in die obigen Punkte.&lt;br /&gt;
&lt;br /&gt;
; 5. Serverseitige Authentisierung fehlt&lt;br /&gt;
&lt;br /&gt;
Auch der Server (bzw. die Anwendung selbst) kann sich fehlerhaft oder ungenügend beim Benutzer authentsieren, etwa über DNS, SSL-Zertifikate, etc.&lt;br /&gt;
&lt;br /&gt;
== G 4.WA04 Unzureichende Validierung von Ein- und Ausgabedaten bei Web-Anwendungen (Matthias) ==&lt;br /&gt;
&lt;br /&gt;
; 1. &amp;quot;Unzureichende Validierung von Eingabedaten&amp;quot;&lt;br /&gt;
&lt;br /&gt;
Die genannten Beispiele sind genau keine korrekten Beispiele für diesen Fall, sondern betreffen die Ausgabevalidierung bzw. Enkodierung. Typische Fehler der Eingabevalidierung ist eine Manipulierbarkeit der Business Logik.&lt;br /&gt;
&lt;br /&gt;
; 2. &amp;quot;Unzureichende Validierung von Ausgabedaten&amp;quot;&lt;br /&gt;
&lt;br /&gt;
Hier geht es zentral um die Verhinderung von Interpreter Injection, also serverseitig (z.B. SQL oder LDAP Injection) oder clientseitig (XSS, JSON Injection, etc.). Statt &amp;quot;können die Ausgaben Schadcode&amp;quot; enthalten würde ich hier eher davon Sprechen, dass ein solcher Interpreteraufruf manipuliert werden kann (was dann z.B. zur Einschleusung von Schadcode genutzt werden kann).&lt;br /&gt;
&lt;br /&gt;
; 3. &amp;quot;Die Suchfunktion der Web-Anwendung verwendet die Eingaben der Benutzer ungefiltert&amp;quot;&lt;br /&gt;
&lt;br /&gt;
Mit ungenügender &amp;quot;Filterung&amp;quot; hat SQL Injection nichts zu tun,  eigentlich geht es hierbei darum, dass SQL-Anfragen dynamisch mit unvalidierten Eingebedaten zusammengebaut (konkateniert) werden.&lt;br /&gt;
&lt;br /&gt;
; 4. &amp;quot;Ungefilterter HTML-Code in Kommentar-Funktion&amp;quot;&lt;br /&gt;
&lt;br /&gt;
Hier fehlt der Bezug auf persistentes XSS, das hier sicherlich zentral ist.&lt;br /&gt;
&lt;br /&gt;
== G 4.WA05 Fehlende oder mangelhafte Fehlerbehandlung durch Web-Anwendungen (Tobias, Matthias) ==&lt;br /&gt;
; Abschnitt &amp;quot;Unsichere Fehlerbehandlung&amp;quot;&lt;br /&gt;
Die G adressiert &amp;quot;Unsichere Fehlerbehandlung&amp;quot;, der Abschnitt die &amp;quot;Unsichere Fehlerbehandlung in Sicherheitskomponenten&amp;quot;. Entsprechend sollte der fettgedruckte Teil angepasst werden.&lt;br /&gt;
&lt;br /&gt;
; &amp;quot;fehlende SQL-Parameter,&amp;quot;&lt;br /&gt;
Sollte besser &amp;quot;Fehlermeldungen bei ungültigen SQL-Abfragen&amp;quot; lauten.&lt;br /&gt;
&lt;br /&gt;
; &amp;quot;Auch scheinbar unkritische Informationen, wie die Meldung ob (..)&amp;quot;&lt;br /&gt;
Korrekt, allerdings nicht nachvollziehbar, wenn das Problem der Leser nicht schon bekannt ist. Daher erweitern nach &amp;quot; Rahmen von Brute-Force-Angriffen ausgenutzt werden.&amp;quot; mit &amp;quot;. Bei Brute-Force-Angriffen wäre in diesem Fall klar, dass der Benutzername gültig ist.&amp;quot;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[User:Mrohr|Matthias]]): Stimme dem Obigen auch zu, ausserdem:&lt;br /&gt;
&lt;br /&gt;
; Sprachlich: &amp;quot;kann dies unvorhersehbare Auswirkungen haben und den Betrieb der Web-Anwendung bis zur Unerreichbarkeit einschränken.&amp;quot;&lt;br /&gt;
&lt;br /&gt;
&amp;quot;Unerreichbarkeit&amp;quot; ist etas merkwuerdig ausgedrueckt, besser ware hier von der &amp;quot;Verfuegbarkeit&amp;quot; zu sprechen. Im Uebrigen fehlt vollstaendig der Bezug auf die Verfuegbarkeit als Primaeres Schutzziel der Informationssicherheit.&lt;br /&gt;
&lt;br /&gt;
; &amp;quot;Clientseitige Fehlerbehandlung&amp;quot;&lt;br /&gt;
Das stimmt soweit, das generelle Problem ist jedoch genereller, naehmlich die clientseitige Abbildung sicherheitsrelaventer Logik (in diesem Fall die Fehlerbehandlung)&lt;br /&gt;
&lt;br /&gt;
== G 4.WA06 Unzureichende Nachvollziehbarkeit von sicherheitsrelevanten Ereignissen bei Web-Anwendungen (Matthias) ==&lt;br /&gt;
&lt;br /&gt;
; 1. Erster Absatz: &amp;quot;Die Behebung einer Schwachstelle ist dann nicht oder nur unter erschwerten Bedingungen möglich.&amp;quot;&lt;br /&gt;
&lt;br /&gt;
Hier würde ich ergänzen: &amp;quot;...und Angriffe auf die Anwendungen können ggf. nicht erkannt oder nachvollzogen werden&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
; 2. &amp;quot;Beispiele&amp;quot;: Kommulierbarkeit&lt;br /&gt;
&lt;br /&gt;
Hier fehlt auch ein Bezug auf die Kommulierbarkeit von SIcherheitsereignissen, dass diese also auch von solchen anderer Systeme in Verbindung gesetzt werden können&lt;br /&gt;
&lt;br /&gt;
; 3. &amp;quot;Beispiele&amp;quot;: Gerichtsverwertbarkeit&lt;br /&gt;
&lt;br /&gt;
Auch die Möglichkeit zur Gerichtsverwertbarkeit (etwa durch eindeutigen Zeitstempel) und manipulationssicherer Speicherung, würde ich an dieser Stelle unbedingt erwähnen.&lt;br /&gt;
&lt;br /&gt;
== G 4.WA07 Offenlegung von Informationen bei Web-Anwendungen (Matthias) ==&lt;br /&gt;
&lt;br /&gt;
; 1. Titel&lt;br /&gt;
&lt;br /&gt;
Hier würde ggf. &amp;quot;Offenlegung vertraulicher Informationen&amp;quot; sicher besser passen als &amp;quot;Offenlegung von Informationen&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
; 2. Beispiellink&lt;br /&gt;
&lt;br /&gt;
Ein Beispiellink (mit und ohne Token) würde sicher die Verständlichkeit dieser Schwachstelle verbessern.&lt;br /&gt;
&lt;br /&gt;
; 3. Erster Absatz: &amp;quot;Wenn demzufolge Informationen unnötig offengelegt werden, steigt die Wahrscheinlichkeit eines erfolgreichen Angriffs.&amp;quot;&lt;br /&gt;
&lt;br /&gt;
Interne Informationen auszublenden ist eine Härtungsmaßnahme, deren Anzeige erhöht aber nicht zwangsläufig die Wahrscheinlichkeit eines erfolgreichen Angriffs. Ich würde diesen Satz weglassen.&lt;br /&gt;
&lt;br /&gt;
 ; 4. Fehlende Punkte&lt;br /&gt;
&lt;br /&gt;
* Ein Hinweis auf HTTP Header wäre hier sicher erwähnenswert.&lt;br /&gt;
* Weiterhin bzgl. der Anzeige von Traces und ein Verweis auf den Entsprechenden Baustein zur Fehlerbehandlung&lt;br /&gt;
&lt;br /&gt;
== G 5.WA14 Cross-Site Request Forgery (CSRF, XSRF) (Matthias) ==&lt;br /&gt;
&lt;br /&gt;
; 1. Erster Absatz: &amp;quot;Können Funktionen einer Web-Anwendung ohne weitere Überprüfung der Authentizität des HTTP-Requests (z.B. durch Tokens in versteckten Formularfeldern) genutzt werden&amp;quot;&lt;br /&gt;
&lt;br /&gt;
Statt &amp;quot;Funktionen&amp;quot; würde ich besser von &amp;quot;schreibenden Aktionen&amp;quot; sprechen, dann macht der Satz mehr Sinn.&lt;br /&gt;
&lt;br /&gt;
; 2. Dritter Absatz: &amp;quot;Im Gegensatz zu XSS (siehe ...￼ ) ist das Angriffsziel nicht die Information auf dem Client (z. B. in Cookies),&amp;quot;&lt;br /&gt;
&lt;br /&gt;
Dieser (Halb-)Satz macht keinen Sinn, auch weil es bei XSS nicht nur im Informationen auf dem Cient geht. Vorschlag: &amp;quot;ist das Angriffsziel nicht die Ausführung von Skriptcode, sondern von unbefugten, schreibenden Aktionen im Kontext des angemeldeten Benutzers.&amp;quot;&lt;br /&gt;
&lt;br /&gt;
; 3. Session Riding&lt;br /&gt;
&lt;br /&gt;
Session Riding ist quasi nur ein anderer Begriff für CSRF. Die einzige Form von CSRF die mir bekannt ist, sind Angriffe mit Standard-Passwörtern auf HTTP-Basic-Auth geschützten Ressourcen.&lt;br /&gt;
&lt;br /&gt;
Im Grunde ist Session Riding aber nur ein Synonym für CSRF. Der Absatz ist daher auch nur eine Wiederholung der obigen Beschreibung.&lt;br /&gt;
&lt;br /&gt;
; 4. Zum Beispiel: &amp;quot;Durch einen präparierten Link auf einer Webseite wird die Änderung des Zugangspasswortes des Routers eingeleitet.&amp;quot;&lt;br /&gt;
&lt;br /&gt;
Etwas ungüngstig ausgedrückt. Besser wäre: &amp;quot;wird eine Anfrage zur Änderung des Zugangspasswortes an den Router gesendet. Hierbei sendet der Browser automatisch den Session Cookie mit, worüber die Webanwendung die Authentizität der Anfrage verifiziert und die Änderung durchführt.&amp;quot;&lt;br /&gt;
&lt;br /&gt;
== G 5.WA18 Clickjacking (Matthias) ==&lt;br /&gt;
&lt;br /&gt;
Hier stellt sich mir nur die allgemeine Frage, ob Clickjacking, bzw. der Schutz davor tatsächlich einem Grundschutz zuzurechnen ist. Persönlich würde ich dies nicht tun.&lt;br /&gt;
&lt;br /&gt;
== M 2.WA02 Dokumentation der Architektur von Web-Anwendungen (Matthias) ==&lt;br /&gt;
&lt;br /&gt;
; Verantwortlich für die Umsetzung&lt;br /&gt;
Hier wäre auch die Nennung des &amp;quot;Architekten&amp;quot; sinnvoll&lt;br /&gt;
 &lt;br /&gt;
; Fehlende Bestandteile der Dokumentation:&lt;br /&gt;
* Schutzbedarf des Systems sowie der verarbeiteten Daten&lt;br /&gt;
* Schützenswerte Daten und Funktionen (Assets)&lt;br /&gt;
* Betriebliche Anforderungen an die Sicherheit bzw. eingesetzte Plattform&lt;br /&gt;
* Dokumentierte Konfigurationseinstellungen &lt;br /&gt;
* BIA (RTO, RPO)&lt;br /&gt;
* Schnittstellen&lt;br /&gt;
* Trust Boundaries&lt;br /&gt;
* Akteure (bzw. Trust Level)&lt;br /&gt;
* Sicherheitsannahmen&lt;br /&gt;
* Geltende Compliance-Anforderungen (BDSG, PCI DSS, etc.)&lt;br /&gt;
&lt;br /&gt;
; Benutzermanagement&lt;br /&gt;
&lt;br /&gt;
Wenn damit das Identity Management gemeint ist, gehört das Dokumentiert, ist aber keine Sicherheitsfunktion. Oder ist hiermit das Rollen- und Berechtigungskonzept gemeint? Grenzt sich aus meiner Sicht schwer mit dem Thema Authentisierung ab. &lt;br /&gt;
&lt;br /&gt;
; Prüffragen&lt;br /&gt;
&lt;br /&gt;
Hier fehlt etwas in Bezug auf Sicherheitsanforderungen. Beispiel: &amp;quot;Werden Sicherheitsanforderungen an den Betrieb während der Entwicklung abgestimmt und dokumentiert&amp;quot;&lt;br /&gt;
&lt;br /&gt;
== M 2.WA12 Entwicklung und Erweiterung von Anwendungen (Markus) ==&lt;br /&gt;
; &amp;quot;Es sollte darauf geachtet werden, dass Sicherheitsanforderungen&lt;br /&gt;
vollständig durch Sicherheitsmechanismen erfüllt und zur Erstellung von&lt;br /&gt;
Testfällen festgehalten werden.&amp;quot; --&amp;gt; Bessere Formulierung würde aussagen, dass die Sicherheitsanforderungen durch Testfälle verifiziert werden.&lt;br /&gt;
&amp;quot;(z. B. durch Kommentare im&lt;br /&gt;
Quelltext). Somit ist der Quelltext zu einem&amp;quot; --&amp;gt; Das ist kein empfehlenswerter Programmierstiel! Raus mit diesem Kommentar&lt;br /&gt;
;&amp;quot;Zum Schutz vor dem Verlust bereits entwickelter und verworfener&lt;br /&gt;
Lösungen sowie zu Dokumentationszwecken sollte die Historie der&lt;br /&gt;
Änderungen festgehalten werden (z. B. durch ein Revisionssystem).&amp;quot; --&amp;gt; Auch diesen Absatz können wir streichen - Kein professioneller Programmierer arbeitet ohne Versionierugssystem.&lt;br /&gt;
;&amp;quot;Bei Web-Anwendung sollten die Webseiten auf Konformität zu dem&lt;br /&gt;
verwendeten Standard (z. B. HTML-Standard) getestet werden. Dadurch&lt;br /&gt;
können unvorgesehene Seiteneffekte aufgrund einer Fehlinterpretation&lt;br /&gt;
seitens der Browser vermieden werden.&amp;quot; --&amp;gt; Könnte man noch um &amp;quot;Die Software ist in möglichst vielen Browsern zu testen&amp;quot; erweitern.&lt;br /&gt;
;Generell geht der Autor leider nicht auf die Rollen &amp;amp; Rechte Verteilung ein. Mir fehlt der Hinweis, das es eine personelle Trennung zwischen Entwicklung, Test und Betrieb geben muss.&lt;br /&gt;
;Zum Thema Wartung / Betrieb --&amp;gt; Hier wird keine Aussage getroffen bezüglich Log_Files. Dieses Thema kann kritische Auswirkungen haben, Bsp.: logging ganzer HTTP-Requests im LogLevel=Debug.&lt;br /&gt;
; &amp;quot;Produktspezifische Sicherheitsfunkionalität&amp;quot; - Dieser Absatz ist gefährlich - der Angreifer ist nicht zur Verwendung dies Zielbrowsers gezwungen. Deshalb können Browser-spez. Sicherheitsfunktionen nur als Add-ON gewertet werden.&lt;br /&gt;
; &amp;quot;Festlegung der Entwicklungsumgebung&amp;quot; - Dieser Absatz geht nicht auf die zu verwendenden Testdaten ein. Der Hinweis, dass Live-Daten / Kundendaten nichts in Test- &amp;amp; Entwicklungsumgebungen zu suchen haben fehlt!!!&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== M 2.WA24 Web-Tracking (Matthias) ==&lt;br /&gt;
&lt;br /&gt;
; Letzter Absatz: &amp;quot;Falls eine Auswertung von Nutzerdaten, insbesondere personenbezogener Daten, .. &amp;quot;&lt;br /&gt;
&lt;br /&gt;
Hier sollte denke ich besser von personenbeziehbaren Daten gesprochen Werten. Dies betrifft etwa die Zuordnung von Surfverhalten zu einer bestimmten Person. Dies sollte stets nach den Prinzipien Datensparsamkeit und Datenvermeidung, Erforderlichkeit, sowie Zweckbindung erfolgen. Ist Webtracking nicht personenbeziehbar ist dies kein Thema für den Datenschutz.&lt;br /&gt;
&lt;br /&gt;
== M 4.WA04 Authentisierung bei Web- Anwendungen (Matthias) ==&lt;br /&gt;
&lt;br /&gt;
: Verantwortlich fuer Umsetzung &lt;br /&gt;
sollte in erster Linie beim Architekturen und in zweiter beim Entwickler liegen&lt;br /&gt;
; Vermischung von Authentisierung und Session Management &lt;br /&gt;
&lt;br /&gt;
Bei diesem Baustein findet eine ziemlich große Vermischung von Anforderung an die Authentisierung und das erst in &amp;quot;M 4.WA06 Session-Management bei Web- Anwendungen&amp;quot; behandelte Session Management statt (Beispiel: &amp;quot;Remember-Me-Funktion&amp;quot;). Beide Themen sollten sinnvollerweise getrennt voneinander zu betrachten und aufeinander zu beziehen.&lt;br /&gt;
&lt;br /&gt;
; Verwendung von Frameworks&lt;br /&gt;
&lt;br /&gt;
Die Anforderung ist schon ein wenig eingeschränkt. Besser passt hier denke ich die &amp;quot;Abbildung der Authentisierung über Standardkomponenten (Bibliotheken oder Frameworks)&amp;quot;. &lt;br /&gt;
&lt;br /&gt;
; Remember-Me-Funktion&lt;br /&gt;
&lt;br /&gt;
Siehe oben, gehört zum Session Management. Das ließt sich im übrigen so, als ob eine Webanwendung Credentials auf dem Client abhängt. &lt;br /&gt;
&lt;br /&gt;
; Grenzwerte für gescheiterte Anmeldeversuche&lt;br /&gt;
&lt;br /&gt;
Diese Empfehlung ist allgemein falsch, da sie sehr von der betrachteten Anwendung abhängt. Besser wäre hier allgemein von Mechanismen zur Verhinderung von automatisierten Angriffen zu sprechen (Anti-Automatisierung). &lt;br /&gt;
&lt;br /&gt;
Etwa umsetzbar durch&lt;br /&gt;
* Sperrung nach x Anmeldeversuchen&lt;br /&gt;
* Throttling&lt;br /&gt;
* Captchas&lt;br /&gt;
* Sicherheitsfragen&lt;br /&gt;
&lt;br /&gt;
Das allgemeine Sperren kann leicht für das gezielte Aussperren von Benutzern (User Lockout) verwendet werden. Was etwa bei Trading-Anwendungen nicht funktioniert.&lt;br /&gt;
&lt;br /&gt;
; Automatisiertes Zurücksetzen von Authentisierungsdaten&lt;br /&gt;
&lt;br /&gt;
Würde ich besser als &amp;quot;Passwort-Reset&amp;quot; bezeichnen.&lt;br /&gt;
&lt;br /&gt;
Weiterhin fehlt hier der Hinweis, dass statt ein automatisiertes Zurücksetzen, ein Mechanismus zu empfehlen ist, bei dem über ein hinterlegtes Sicherheitsmerkmal (Handy-Nummer oder E-Mail-Adresse) vom Benutzer zunächst eine Verifikation durchgeführt wird. Beispielsweise durch einen erhaltenen Link. Erst dann darf eine Änderung des Passwortes durch den Benutzer erfolgen.&lt;br /&gt;
&lt;br /&gt;
; Registrierung nicht behandelt&lt;br /&gt;
&lt;br /&gt;
Es existiert hier kein Punkt, der die sichere Implementierung von Benutzerregistrierungen behandelt.&lt;br /&gt;
&lt;br /&gt;
; Verweis auf Externalisierung fehlt.&lt;br /&gt;
&lt;br /&gt;
Statt die Authentisierung selbst durchzuführen kann eine Anwendung hierzu auf eine externe Komponente (Beispiel: SiteMinder oder Kerberos) zurückgreifen.&lt;br /&gt;
&lt;br /&gt;
; Verweis auf Behandlung von Credentials fehlt&lt;br /&gt;
&lt;br /&gt;
Auch wenn das  in &amp;quot;M 4.WA15 Schutz vertraulicher Daten bei Web- Anwendungen&amp;quot; ausführlich behandelt wird, sollte in diesem Baustein bereits auf den angemessenen Schutz von Authentisierungsdaten bei Übertragung und Speicherung hingewiesen werden.&lt;br /&gt;
&lt;br /&gt;
== M 4.WA05Umfassende Ein- und Ausgabevalidierung bei Web-Anwedungen (Markus) ==&lt;br /&gt;
; &amp;quot;Ablehnung der Daten im&lt;br /&gt;
Fehlerfall&amp;quot; --&amp;gt; Hier könnte man noch auf Tar-Pits eingehen - nur ein Vorschlag.&lt;br /&gt;
&lt;br /&gt;
== M 4.WA06Session-Management bei Web-Anwendungen (Markus, Matthias) ==&lt;br /&gt;
; &amp;quot;Übertragung der SessionID mittels GETRequest&amp;quot; --&amp;gt; Hier fehlt der Hinweis, dass die Lebensdauer dieser SessionIds kurz/kürzer sein muss, als im Falle der Speicherung im Cookie.&lt;br /&gt;
&lt;br /&gt;
([[User:Mrohr|Matthias]]) Die Anmerkung verstehe ich ehrlich gesagt ueberhaupt nicht, zumal das SM haeufig transparent zwischen Cookies und URL Rewriting wechselt. Wozu soll das gut sein? Wie soll das geschehen? Idealerweise sollte die Session ID niemals in die URL geschrieben werden, das sollte eigentlich genuegen.&lt;br /&gt;
&lt;br /&gt;
; &amp;quot;Verschlüsselte Übertragung von SessionIDs&amp;quot; --&amp;gt; Hier fehlt der Hinweis auf den Beast-Exploit. TLS Version &amp;gt; 1.0 verwenden!&lt;br /&gt;
&lt;br /&gt;
([[User:Mrohr|Matthias]]) Solange hier nicht auf eine explizite TLS Version eingegangen wird, sollte meiner grossen Ueberzeugung nach hier auch auf keine Exploits etc. eingagen werden, das gehoert an andere Stelle.&lt;br /&gt;
&lt;br /&gt;
; ([[User:Mrohr|Matthias]]) Weiterhin:&lt;br /&gt;
&lt;br /&gt;
 Es dürfen keine extern bekannten oder erratbaren Daten (z. B. IP-Adresse, Uhrzeit) in die Berechnung der SessionID einfließen.&lt;br /&gt;
&lt;br /&gt;
Die Aussage finde ich etwas problematisch, wichtiger ist, dass die Entropie ausreichend hoch ist. Haeufig werden etwa IPs von Load Balancern in die Session ID hineingeschrieben.&lt;br /&gt;
&lt;br /&gt;
 - Domain (z. B. webapp.domain.tld),&lt;br /&gt;
 - Path (z. B. /webapp/),&lt;br /&gt;
 - Secure und&lt;br /&gt;
 - HttpOnly.Beschränkte Sitzungsdauer&lt;br /&gt;
&lt;br /&gt;
Das sieht so aus, als ob es empfehlenswert ist, das Domain-Tag zu verwenden, das ist es sicherlich nicht. Was macht hier der Hinweis &amp;quot;Beschraenke Sizuungsdauer&amp;quot;?&lt;br /&gt;
&lt;br /&gt;
== M 4.WA07Fehlerbehandlung durch Web-Anwendungen (Markus) ==&lt;br /&gt;
; Konsistenter / Inkonsistener Zustand einer Webanwendung und der daraus resultierende Datenverlust: Hier fehlen mir die Punkte: DOS, Priv.Escalation, CodeExecution.&lt;br /&gt;
([[User:Mrohr|Matthias]]) Vorschlag &amp;quot;und somit der Schutz der Daten&amp;quot; aendern in &amp;quot;und somit ETWA der Schutz der Daten&amp;quot; korrigieren&lt;br /&gt;
&lt;br /&gt;
; Vermeidung vertraulicher Informationen in Fehlermeldungen --&amp;gt; Fehlermeldungen sollten ebenfalls eine Systeminformationen preisgeben (Softwareversion, Patchlevel, etc.)&lt;br /&gt;
([[User:Mrohr|Matthias]]) Ich glaube hier ist es wichtig zu unterscheiden, wo die Fehlermeldung ausgegeben bzw. wem diese angezeigt wird. Das wird in diesem Modul garnicht so recht unterscheiden. Der Autor meint glaube ich, wie Fehlermeldungen durch die Webanwendung angezeigt werden. In dem Fall hat er recht. Du meinst glaube ich eher, wie Fehlermeldungen protokolliert werden. In dem Fall hast du natuerlich auch recht. Das in dem Text verwendete Wort &amp;quot;ausgeben&amp;quot; ist nicht unbedingt eindeutig und sollte genauer spezifiziert werden.&lt;br /&gt;
&lt;br /&gt;
; Abbruch des Vorgangs nach Auftreten eines Fehlers --&amp;gt; TarPits scheinen dem Autor umbekannt zu sein :)&lt;br /&gt;
([[User:Mrohr|Matthias]]) Stimmt, wobei sich diese ja auch nur auf einen sehr bestimmten Fehlertypen beziehen. Generell laesst sich so etwas unterscheiden, wenn man Fehler-Domains erstellt. Beispiel: Technisch-Unerwartet = Abbruch, Technisch-Erwartet = Fehlermeldug/Tear Pit, etc.&lt;br /&gt;
&lt;br /&gt;
; &amp;quot;Werden Fehler möglichst von der gleichen Komponente behandelt, in der&lt;br /&gt;
der Fehler aufgetreten ist?&amp;quot; --&amp;gt; Das &amp;quot;möglichst&amp;quot; sollten wir streichen.&lt;br /&gt;
([[User:Mrohr|Matthias]]) Hm, der Aussage kann ich nicht ganz zustimmen, bzw. es haengt von dem Begriff &amp;quot;Komponente&amp;quot; ab. Eine Anwendungskomponente kann serwohl bewusst bestimmte Exceptions werfen, die von der einbindenden Komponente behandelt werden muessen.&lt;br /&gt;
&lt;br /&gt;
== M 4.WA08Schutz vor automatisierter Nutzung von Web-Anwendungen (Markus, Matthias) ==&lt;br /&gt;
; &amp;quot;Brute-Force-&lt;br /&gt;
Angriffe (z. B. Erraten von Zugangsdaten) und Enumeration-Angriffe (z. B.&lt;br /&gt;
automatisiertes Ermitteln von gültigen Login-Namen)&amp;quot; -- die Beispiele sind identisch - besser Beispiele suchen, z.b. URL-Enumeration&lt;br /&gt;
&lt;br /&gt;
([[User:Mrohr|Matthias]]) Das sehe ich anders. Brute-Forcing bezieht auf Passwoerter und Enumeration auf Benutzernamen, etwa durchs hochzaehlen. Auch wenn ich zustimmen muss, dass die nicht ganz gluecklich gewaehlt wurden. Stann &amp;quot;Erraten von Zugangsdaten&amp;quot; wuerde ich besser von &amp;quot;Erraten von Passwoertern&amp;quot; sprechen. Oder wie gesagt gleich auch auf andere Beispiele (etwa Object ID Enumeration) beziehen.&lt;br /&gt;
&lt;br /&gt;
== M 4.WA11Sichere Konfiguration von Web-Anwendungen (Markus) ==&lt;br /&gt;
; &amp;quot;Sicherer Umgang mit TLS/SSL&amp;quot; -- Hier fehlt der Hinweis, dass TLS-1.0 gebrochen ist&lt;br /&gt;
; &amp;quot;Zeichenkodierungskonfiguration&amp;quot; -- Ein Whitelisting abhängig von der Encodierung wäre ein weiterer Vorschlag&lt;br /&gt;
; &amp;quot;Restriktive Dateisystemberechtigungen&amp;quot; -- auch wenn es ein klassiker ist - der AS sollte ebenfalls mit von einem eingeschränkten Nutzer gestartet werden und nicht als root&lt;br /&gt;
; Administration Consolen:zur Ergänzen: Wenn diese nicht benötigit, sollten derartige Applikationen nicht deployed werden, unabhängig von möglichen Zugangsbeschränkungen.&lt;br /&gt;
&lt;br /&gt;
([[User:Mrohr|Matthias]]) Sorry, meiner Meinung nach hat die Bewertung von Kryptoverfahren hier abslut nichts zu suchen.Stattdessen sollte hier auf den entsprechenden [https://www.bsi.bund.de/ContentBSI/Publikationen/TechnischeRichtlinien/tr02102/index_htm.html Empfehlung des BSI] verwiesen werden, auch wenn dieses Dokument derzeit noch etwas outdated zu sein scheint.&lt;br /&gt;
&lt;br /&gt;
== M 4.WA13Kontrolliertes Einbinden von Daten und Inhalten bei Web-Anwendungen (Markus) ==&lt;br /&gt;
; Datei-Upload: Bei einem Upload werden Dateien durchaus in TEMP-Verzeichnissen gesammelt und danach weiterverarbeitet. Diese TEMP-Verzeichnisse sind im Rahmen einer Sicherheitsanalyse zu betrachten -&amp;gt; Möglicher (unbefugter) Zugriff auf weitere Uploads&lt;br /&gt;
; Upload komprimierter Dateien / großer Dateien birgt die Gefahr von DOS Angriffen&lt;br /&gt;
; Upload von Dateien kann bei weiterem Parsing zu Speicherengpässen führen --&amp;gt; DOS-Angriffe auf Thread-Local etc.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== M 4.WA14Restriktive Herausgabe sicherheitsrelevanter Informationen bei Web-Anwendungen (Markus, Matthias) ==&lt;br /&gt;
OK - Keine Anmerkungen von mir.&lt;br /&gt;
&lt;br /&gt;
([[User:Mrohr|Matthias]]) Von mir schon;)&lt;br /&gt;
&lt;br /&gt;
; ([[User:Mrohr|Matthias]]) Vermeidung von Kommentaren in ausgelieferten Webseiten&lt;br /&gt;
&lt;br /&gt;
Das ist leider total falsch, wir brauchen haeufig Komentare, aus Kompatibilitaetsgruenden. So wird etwa der JavaScript-Block haeufig auskommentiert.&lt;br /&gt;
&lt;br /&gt;
Wurde stattessen besser von sicherheitsrelevanten Kommentaren sprechen und als Massnahme generell Entwicklerkommentare ueber Sprachkonstruktre (etwa JSP) durchzufuehren.&lt;br /&gt;
&lt;br /&gt;
; ([[User:Mrohr|Matthias]]) Löschen nicht benötigter Dateien&lt;br /&gt;
&lt;br /&gt;
Hier wurde ich ggf. Dateien von Versionisierungstools (etwa Subversion) erwaehnen, das sehen wir schon recht haeufig.&lt;br /&gt;
&lt;br /&gt;
Statt Dateien einfach nur zu loeschen (was in der Praxis haeufig nicht so einfach ist) bietet es sich zudem an, den Zugriff auf bestimmte Dateien oder Dateitypen generell zu sperren, etwa mittels ACL im Apache.&lt;br /&gt;
&lt;br /&gt;
; ([[User:Mrohr|Matthias]]) Gibt die Web-Anwendung ausschließlich neutrale Fehlermeldungen aus und sind diese im Quelltext identisch? {E: C}&lt;br /&gt;
&lt;br /&gt;
Persoenlich verstehe ich das nicht. Wieseo neutrale Fehlermeldung? Das macht fuer mich nur beim Login Sin. Hierzu existiert in dem Text auch keinerlei Bezug. Ich wuerde das daher besser entfernen und im Rahmen der Fehlerbehandlung diskutieren. Mindestens sollte hier jedoch besser von &amp;quot;sicherheitsunbedentlichen Fehlermeldungen&amp;quot; oder so gesprochen werden.&lt;br /&gt;
&lt;br /&gt;
; ([[User:Mrohr|Matthias]]) Wird der Referrer bei Verlassen der Web-Anwendung (z. B. durch einen Link auf eine externe Seite) gefiltert?&lt;br /&gt;
&lt;br /&gt;
Diesen Punkt sehe ich als sehr Fallabhengig an. Es kann fuer seiten durchaus wuenschenswert sein, dass der Referer weitergegeben wird. Der Referer sollte natuerlich keine sensiblen Informationen enthalten, was ja an anderer Stelle (etwa Session Management) vorgegeben wird bzw. gegeben werden sollte.&lt;br /&gt;
&lt;br /&gt;
== M 4.WA15Schutz vertraulicher Daten bei Web-Anwendungen (Markus, Matthias) ==&lt;br /&gt;
; Sichere kryptographische Algorithmen:&lt;br /&gt;
 Hier fehlt mir eine Liste der aktuelle als sicher geltenden Verfahren.&lt;br /&gt;
([[User:Mrohr|Matthias]]) Am Besten Referenz auf [https://www.bsi.bund.de/ContentBSI/Publikationen/TechnischeRichtlinien/tr02102/index_htm.html https://www.bsi.bund.de/ContentBSI/Publikationen/TechnischeRichtlinien/tr02102/index_htm.html]&lt;br /&gt;
&lt;br /&gt;
; Schlüssel&lt;br /&gt;
 Das die Schlüssel bestimmten Formaten entsprechen müssen ist ok - aber das Schlüsselmanagement wird gar nicht besprochen?&lt;br /&gt;
; Schutz der Daten im Browsercache&lt;br /&gt;
 Skripte und Browserplugins können ebenfalls auf den Browsercache zugreifen - diese werden hier nicht erwähnt.&lt;br /&gt;
&lt;br /&gt;
([[User:Mrohr|Matthias]]) Weiterhin entsprechen die vorgeschlagenen HTTP Headern nicht dem Best Practice:&lt;br /&gt;
&lt;br /&gt;
 Cache-control: no-cache, no-store&lt;br /&gt;
 Pragma: no-cache&lt;br /&gt;
 Expires: -1&lt;br /&gt;
&lt;br /&gt;
([[User:Mrohr|Matthias]]) Die Empfehlung hinsichtlich des manuellen Leerens des Browsercaches sollte wenn dann nur bei Anwendungen mit sehr hohem Schutzbedarf in Erwaegung gezogen werden. Wichtiger waere da schon eher die richtigen Cache-Header zu verwenden. Solche Empfehlungen ihm Rahmen des Grundschutzes aber wirklich nichts zu suchen. &lt;br /&gt;
&lt;br /&gt;
; Maskierung von Passwörtern &lt;br /&gt;
 Dies schützt bei der Eingabe nur vor ShoulderSurfing nicht vor Skripten oder Plugins die diese an andere Server posten.&lt;br /&gt;
&lt;br /&gt;
([[User:Mrohr|Matthias]]) Das ist voellig korrekt. Aber inwieweit ist die Aussage Passwort-Felder zu verwenden fehlerhaft bzw. hier unzureichend beschrieben?&lt;br /&gt;
&lt;br /&gt;
; Sicherung von Zugangsdaten:&lt;br /&gt;
 Zugangsdaten in einer Datei abzulegen - wenn auch ausserhalb des WebRoots ist keine gute Idee.&lt;br /&gt;
([[User:Mrohr|Matthias]]) Es ist sicher nicht die schoenste Variante, es laesst sich aber nunmal in vielen Faellen nicht vermeiden. Deshalb fordert der [http://code.google.com/p/owasp-asvs/wiki/Verification_V2 ASVS] hier etwa auch nicht mehr. Fuer den hier angestreben Grundschutz sollte das meiner Meinung nach ausreichen.&lt;br /&gt;
; Schutz von Quelltexten:&lt;br /&gt;
 Hier würde ich property files mit aufnehmen. der hinweis auf web-inf/classes fehlt - warum?&lt;br /&gt;
 Bei include-befehlen sind die pfadangaben zu überdenken.&lt;br /&gt;
([[User:Mrohr|Matthias]]) Wuerde property Dateien allgemein den Konfigurationsdateien zuordnen. Der Begriff &amp;quot;Einzubindende Dateien&amp;quot; ist mir allrdings Neu&lt;br /&gt;
&lt;br /&gt;
([[User:Mrohr|Matthias]]) Weiterhin, fehlt ein genereller Bezug auf HTML 5 WebStorage, LSOs etc. Zumindest in abstrakter Form, so dass diese dadurch indirekt addresiert werden. Egal, in dem relevanten Punkt will der Autor meiner Meinung nach nur einige Beispiele nennen, das sollte keinen Anspruch auf Vollsteandigkeit haben muessen.&lt;br /&gt;
&lt;br /&gt;
; ([[User:Mrohr|Matthias]]) - Durch dieses Attribut wird die Gültigkeit des Cookies auf die Domäne der Web-Anwendung beschränkt.&lt;br /&gt;
Nein, das ist leider total falsch. Das Domain-Attribut stellt eine Aufweichung der Cookie-Gueltigkeit dar und nicht anders herum. Gewoehlich sind Cookies immer Host-Cockies und das sollte auch so bleiben. Die Empfehlung sollte entfernt werden.&lt;br /&gt;
&lt;br /&gt;
== M 4.WA16Zugriffskontrolle bei Web-Anwendungen (Markus) ==&lt;br /&gt;
; Zugriffskontrolle via Frameworks:&lt;br /&gt;
 Dieser Punkt (Frameworks) wird nur in einem Satz erwähnt. Es werden keine Bespiele gegeben - Das ist zu wenig.&lt;br /&gt;
 Es müssen alle Zugriffe geschützt werden. Eine Protokollierung aller Zugriffe mit den nötigen Informationen ist ebenfalls empfehlenswert.&lt;br /&gt;
; Datei Upload:&lt;br /&gt;
 Die Gefahr eines DOS wird hier nicht erwähnt.&lt;br /&gt;
&lt;br /&gt;
== M 4.WA19Verhinderung von Cross-Site Request Forgery (CSRF, XSRF) (Markus, Matthias) ==&lt;br /&gt;
; Verantwortliche: &lt;br /&gt;
 Entwickler und Admins!&lt;br /&gt;
([[User:Mrohr|Matthias]]) Korrekt, wobei auch in der Reihenfolge&lt;br /&gt;
&lt;br /&gt;
; Anti-CSRF-Token in hidden fields:&lt;br /&gt;
 Das ist keine gute Idee. Ich würde das streichen!&lt;br /&gt;
&lt;br /&gt;
([[User:Mrohr|Matthias]]) Watt? Anti-CSRF-Tokens in Hidden Fields sind die Standard-Massnahme. Wie denn sonst? Bitte nicht streichen!!! &lt;br /&gt;
&lt;br /&gt;
([[User:Mrohr|Matthias]]) Die Technik bei der die Session ID als Anti-CSRF-Token verwendet wird, wird als Double-Cookie Submit bezeichnet, das sollte hier referenziert werden.&lt;br /&gt;
&lt;br /&gt;
; Umgehung von Schutzmechanismen:&lt;br /&gt;
 Man in the middle hat keinen direkten Bezug zu CSRF! Das würde ich streichen.&lt;br /&gt;
([[User:Mrohr|Matthias]]) Der Hinweis ist korrekt. Wovon der Autor hier spricht ist Session Replay nicht CSRF.&lt;br /&gt;
&lt;br /&gt;
; Frameworks:&lt;br /&gt;
 Gute Idee - aber es gibt auch Features in den ApplicationServern die CSRF unterbinden - warum wird das nicht besprochen?&lt;br /&gt;
&lt;br /&gt;
([[User:Mrohr|Matthias]]) Sehe ich persoenlich nicht so, da CSRF primaer ein Applikations-Fehler ist, und auch in der Applikation und nicht im Environment (AppServer) geloest werden sollte. Auch wenn das manchmal ggf. die einzig machbare Loesung darstellt.&lt;br /&gt;
&lt;br /&gt;
([[User:Mrohr|Matthias]]) Was generell fehlt, ist ein Hinweis darauf, dass schreibende Requests generell per HTTP Post abgewickelt werden sollten, da HTTP Get keine &amp;quot;Safe Method&amp;quot;  (siehe HTTP 1.1, RFC 2616) ist.&lt;br /&gt;
&lt;br /&gt;
== M 4.WA20Sicherer Entwurf der Logik von Web-Anwendungen (Markus, Matthias) ==&lt;br /&gt;
; Rollbacks:&lt;br /&gt;
 Tritt ein Fehler auf muss die Applikation einen konsistenten Datenstand zurück lassen. Das wird hier nicht erwähnt.&lt;br /&gt;
; RaceConditions:&lt;br /&gt;
 Fehler in der Geschäftslogik können auch durch zwei gleichzeitige Sessions auf einer Webapplikation auftreten - das wird hier nicht besprochen.&lt;br /&gt;
&lt;br /&gt;
([[User:Mrohr|Matthias]]) Ehrlich gesagt kann ich nicht ganz nachvollziehen, was der Sichere Entwurf der Logik von Web-Anwendungen mit dem Verzicht auf aktive Inhalte zu tun hat. Unabhaengig davon sollte man solche unsinnigen Aussagen im Jahre 2012 nicht mehr treffen, damit macht man sicht nur laecherlich.&lt;br /&gt;
&lt;br /&gt;
Nichts desto trotz, was hier als &amp;quot;echte&amp;quot; Massnahmen erwaehnt werden sollte sind:&lt;br /&gt;
* Verhinderung von Race Conditions, aber nicht nur durch Concurrent Sessions sondern auch durch Singletons (TOCTOU)&lt;br /&gt;
* Enforcements von Workflows, etwa durch die Verwendung von State Machines oder Request Tokens (auch bekannt als Site Usage Enforcement)&lt;br /&gt;
* Fail Securely (bzw. Verweis)&lt;br /&gt;
* Serverseitige Abbildung der Anwendungslogik, zumindest wenn diese sicherheitsrelevant sit&lt;br /&gt;
&lt;br /&gt;
== M 4.WA22Verhinderung der Blockade von Ressourcen (DoS) bei Web-Anwendungen (Markus, Matthias) ==&lt;br /&gt;
; Datenspeicher:&lt;br /&gt;
 Neben dem Datenspeicher sollte auch der RAM-Verbrauch pro Thread der Applikation limitiert werden.&lt;br /&gt;
([[User:Mrohr|Matthias]]) Stimmt, ich wuerde hier sogar allgemein von Ressourcenverbrauch am Beispiel RAM und Datenspeicher, sprechen&lt;br /&gt;
&lt;br /&gt;
; Voraggregation von Daten / Caching&lt;br /&gt;
 Dieser Punkt fehlt: Stark ressourcen belastende Anfragen können auch in Lastarmen Zeiten vorberechnet werden.&lt;br /&gt;
([[User:Mrohr|Matthias]]) Stimmt, koennte noch als Anmerkung bei &amp;quot;Cachen von Anfragen&amp;quot; hinzugefuegt werden&lt;br /&gt;
&lt;br /&gt;
; ([[User:Mrohr|Matthias]]) Prueffrage: &amp;quot;Wird ein möglicher Überlauf von Protokolldaten... verhindert&amp;quot;&lt;br /&gt;
&lt;br /&gt;
Ist eine etwas eingeschrankte Sicht. Wurde hier eher von Ueberlauf von Speicherplaz zu Beispiel im Rahmen der Protokollierung sprechen&lt;br /&gt;
&lt;br /&gt;
; ([[User:Mrohr|Matthias]]) Durchfuehrung von Lasttests zur Identifikation ressourcenintensiver Operationen&lt;br /&gt;
&lt;br /&gt;
Der Hinweis waere ggf. erwahnenswert&lt;br /&gt;
&lt;br /&gt;
; ([[User:Mrohr|Matthias]]) Hinweis auf nicht-angemeldeten Bereich&lt;br /&gt;
&lt;br /&gt;
Das Risiko durch rechenintensive Operationen durch einen DoS betroffen zu sein ist natuerlich fuer gewoehlich um so groesser, wenn diese im anonymen Bereich angeboten wird. Der Hinweis ware ggf. ebenfalls hilfreich.&lt;br /&gt;
&lt;br /&gt;
== M 4.WA25Verhinderung von Clickjacking (Markus, Matthias) ==&lt;br /&gt;
Ok - das passt soweit.&lt;br /&gt;
&lt;br /&gt;
([[User:Mrohr|Matthias]]) Stimmt, auch wenn ich &amp;quot;Angreifer&amp;quot; in dem Beispiel eher als &amp;quot;Webseitenbetreiber&amp;quot; beschreiebn wuerde, da er nicht wirklich aktiv einen Angriff durchfuehrt, oder? Bitte nochmal ueber meinen Hinweis aus G 5.WA18 nachdenken: Ist Clickjacking-Schutz tatsaechlich Grundschutz? Ich bin mir da selber nicht so wirklich sicher.&lt;br /&gt;
&lt;br /&gt;
== M 5.WA21Sichere Anbindung von Hintergrundsystemen an Web-Anwendungen (Markus, Matthias) ==&lt;br /&gt;
; Verantwortliche:&lt;br /&gt;
 Architekten fehlen. Entwickler müssen die Views umsetzen und die Datasource entsprechend einbinden - die fehlen hier ebenfalls.&lt;br /&gt;
; DirectorySystem Beispiel:&lt;br /&gt;
 Das DirectorySystem wird in dem angegeben Beispiel zum Single Point of Failure - das wird verschwiegen.&lt;br /&gt;
; Firewalls:&lt;br /&gt;
 Das sind fachlich-blinde Systeme. Was ist mit WAFs / IDS / IPS etc.?&lt;br /&gt;
([[User:Mrohr|Matthias]]) Stimmt, das hat in diesem Baustein nichts zu suchen&lt;br /&gt;
&lt;br /&gt;
; ([[User:Mrohr|Matthias]]) Typische Hintergrundsysteme&lt;br /&gt;
Hier fehlt irgendwie &amp;quot;Middleware&amp;quot;, die ist denke ich nicht immer Legacy&lt;br /&gt;
&lt;br /&gt;
== M 5.WA23Systemarchitektur einer Web-Anwendung (Markus, Matthias) ==&lt;br /&gt;
; Verantwortliche:&lt;br /&gt;
Auch hier fehlend wieder die Architekten. &lt;br /&gt;
([[User:Mrohr|Matthias]]) Stimmt, habe das Dokument mal komplett durchgesucht.Tatsaechlich wird der &amp;quot;Architekt&amp;quot; niemals genannt, das scheint also eher ein grundseatzliches Problem zu sein. Der Administrator hat hier aber nun wirklich nichts zu suchen.&lt;br /&gt;
&lt;br /&gt;
; Virtualisierung:&lt;br /&gt;
Virtualisierung bietet weitere Angriffsvektoren (z.B.: Hypervisor) die eine &amp;quot;Blech&amp;quot;Farm nicht bietet.&lt;br /&gt;
&lt;br /&gt;
([[User:Mrohr|Matthias]]) Genau, wobei auch der ganze Bereich geshareter Plattformen (z.B. By SharePoint) hier fehlt.&lt;/div&gt;</summary>
		<author><name>Mrohr</name></author>	</entry>

	<entry>
		<id>https://wiki.owasp.org/index.php?title=Talk:OWASP_Review_BSI_IT-Grundschutz_Baustein_Webanwendungen&amp;diff=130210</id>
		<title>Talk:OWASP Review BSI IT-Grundschutz Baustein Webanwendungen</title>
		<link rel="alternate" type="text/html" href="https://wiki.owasp.org/index.php?title=Talk:OWASP_Review_BSI_IT-Grundschutz_Baustein_Webanwendungen&amp;diff=130210"/>
				<updated>2012-05-21T15:55:28Z</updated>
		
		<summary type="html">&lt;p&gt;Mrohr: /* M 4.WA25Verhinderung von Clickjacking (Markus) */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Since it's about a review of a document in German, all the discussions will be done in German :-)&lt;br /&gt;
&lt;br /&gt;
Diskussionen rund um den Review des &amp;quot;IT-Grundschutzbausteins Webanwendungen&amp;quot; finden hier statt, sinnvollerweise auf Deutsch :-)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Vorschlag für Kriterien, die an unser Review angelegt werden sollten (.kai) ==&lt;br /&gt;
&lt;br /&gt;
* Der Baustein soll alle wichtigen Themen der Entwicklung sicherer&lt;br /&gt;
Webanwendungen enthalten.&lt;br /&gt;
&lt;br /&gt;
* Der Baustein soll die verschiedenen Phasen der Software-Entwicklung&lt;br /&gt;
vollständig abdecken.&lt;br /&gt;
&lt;br /&gt;
* Der Baustein soll zwischen verbindlichen, prüfbaren Vorgaben und&lt;br /&gt;
unverbindlichen Empfehlungen sprachlich sauber unterscheiden (hier&lt;br /&gt;
spielt mein Auditorenblick eine Rolle). Vor allem soll der Baustein&lt;br /&gt;
verbindliche Anforderungen auch tatsächlich stellen. Alle&lt;br /&gt;
verbindlichen Anforderungen müssen unabhängig von der jeweiligen&lt;br /&gt;
Umgebung auch umsetzbar sein, d.h. sie müssen entsprechend generisch&lt;br /&gt;
sein.&lt;br /&gt;
&lt;br /&gt;
* Die Maßnahmen sollen nur in (begründbaren) Ausnahmen zu Empfehlungen&lt;br /&gt;
von OWASP im Widerspruch stehen.&lt;br /&gt;
&lt;br /&gt;
* Die Maßnahmen sollen verständlich und anwendbar sein.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== &amp;quot;Hilfsmittel&amp;quot; (Markus, Matthias) ==&lt;br /&gt;
Ich würde das Script zur Vermeidung von Clickjacking wrappen und nicht als losen Skript-block in den Text einbinden - einfach schlechter Programmierstiel diese losen Blöcke.&lt;br /&gt;
Der Zugriff auf das Body-Element mit byTagName-Array[0] ist auch nicht wirklich gut. Ich halte Zugriffe über das DOM (klassisch), bei ID bzw. XPATH für besser. &lt;br /&gt;
&lt;br /&gt;
([[User:Mrohr|Matthias]]) Verwunderlich finde ich aber, dass der Autor zum Einen zwar von der Verwendung von JavaScript vollstaendig abraet, zum Anderen aber eben solches als Best-Practice-Ansatz fuer Click Jacking empfiehlt.&lt;br /&gt;
&lt;br /&gt;
SQL-Injection Characters:&lt;br /&gt;
die Pipe fehlt hier zur Textkonatenierung&lt;br /&gt;
+ / - haben auch eine Bedeutung bei JOINs.&lt;br /&gt;
&lt;br /&gt;
([[User:Mrohr|Matthias]]) Special Character bzw. DB Escaping ist schon recht DB-spezifisch (siehe [https://www.owasp.org/index.php/SQL_Injection_Prevention_Cheat_Sheet SQL Prevention Cheat sheet]). Wozu werden die hier ueberhaupt aufgefuehrt? Um Eingebafilterung nach pot. SQL Injections durchzufuheren, oder um eine eigene Escaping-Funktion zu schreiben? Raus damit!&lt;br /&gt;
&lt;br /&gt;
== &amp;quot;Goldene Regeln&amp;quot; (Matthias) ==&lt;br /&gt;
&lt;br /&gt;
Hier meine Anmerkungen zu diesem Dokument:&lt;br /&gt;
&lt;br /&gt;
; 1. Für mich fehlende Punkte&lt;br /&gt;
* Korrektur der Ursache (Root Cause) von Schwachstellen statt  Verhinderung deren Ausnutzung&lt;br /&gt;
* Bezug auf Minimierung der Angriffsfläche und Least-Privilege-Prinzip&lt;br /&gt;
* Bezug auf Defense-in-Depth-Prinzip&lt;br /&gt;
* Verwendung von getesteten Security APIs (z.B. OWASP ESAPI) statt selbstentwickelter Funktionen&lt;br /&gt;
* Bezug auf Externalisierung von Sicherheitsfunktionen, sowie deklerative vor programmatischer Sicherheit.&lt;br /&gt;
&lt;br /&gt;
; 2. Begriff &amp;quot;Web-Anwendung&amp;quot;&lt;br /&gt;
Würde ich generell durch &amp;quot;Webanwendung&amp;quot; ersetzen.&lt;br /&gt;
&lt;br /&gt;
; 3. Einleitung (&amp;quot;Web-Anwendungen stellen Funktionalität zur Verfügung, ...&amp;quot;)&lt;br /&gt;
&lt;br /&gt;
Wozu dient dieser Satz?&lt;br /&gt;
&lt;br /&gt;
; 4. &amp;quot;Die Architektur der Web-Anwendung ist im Sicherheitskonzept zu  dokumentieren.....&amp;quot; &lt;br /&gt;
&lt;br /&gt;
Ich fände es sinnvoller, wenn hier von der &amp;quot;Sicherheitsarchitektur&amp;quot; gesprochen wird, welche etwa neben den sicherheitsrelevanten Datenflüssen, sensible Komponenten, Entry Points, Akteure architekturelle Security Controls wie Authentisierung, Kryptographie und natürlich die Trust Boundaries beinhaltet.&lt;br /&gt;
&lt;br /&gt;
; 5. &amp;quot;Bei Web-Anwendungen handelt es sich häufig um spezielle Eigenentwicklungen....&amp;quot;&lt;br /&gt;
&lt;br /&gt;
Erstens würde ich hier den geläufigen Begriff &amp;quot;Individualsoftware&amp;quot; verwenden. Zweitens würde ich statt bestimmte SDLC-Phasen vorzugeben (die Begriffe &amp;quot;Softwareverteilung&amp;quot; und &amp;quot;Integration&amp;quot; sind mir bei Webanwendungen bisher noch nicht so häufig untergekommen), besser von der Notwendigkeit sprechen, Sicherheit in allen Entwicklungsphasen zu berücksichtigen, also eines SDLs.&lt;br /&gt;
&lt;br /&gt;
; 6. &amp;quot;Alle Ein- und Ausgaben der Web-Anwendung müssen in eine normalisierte Form überführt werden....&amp;quot;&lt;br /&gt;
&lt;br /&gt;
Normalisierung ist für mich nicht gleich Kanonsierung, auch wenn beide Begriffe häufig als synonym verwendet werden.  Der Unterschied wird in der [http://owasp-esapi-java.googlecode.com/svn/trunk_doc/2.0-rc4/org/owasp/esapi/Encoder.html API-Beschreibung der ESAPI] erklärt. Die Normalisierungs-Funktion ist allerdings schon vor einiger Zeit aus der ESAPI [https://lists.owasp.org/pipermail/esapi-dev/2010-January/000266.html rausgeflogen]. Die generelle Kanonisierung von Ausgaben halte ich dazu für nicht sinnvoll.&lt;br /&gt;
&lt;br /&gt;
Zweitens, finde ich den weiteren Text zwar grundsätzlich formal korrekt, aber so allgemein, dass dieser glaube ich niemandem so richtig etwas bringt.  &lt;br /&gt;
&lt;br /&gt;
Besser fände ich hier Ein- von Ausgabevalidierung grundsätzlich voneinander abzugrenzen. Etwa was ich per Eingabevalidierung (Längenprüfung, Casting, etc. per Whitelisting) und was mit Ausgebavalidierung (Enkodierung, Escaping, Parametrisierung) machen muss und kann.&lt;br /&gt;
&lt;br /&gt;
Eingabedaten können technisch zudem auch Werte eingelesener Property-Dateien sein. Muss ich die auch validieren? Ist das dann noch Grundschutz? &lt;br /&gt;
&lt;br /&gt;
; 7. &amp;quot;Für den Zugriff auf sensitive Funktionen oder Informationen muss die Web-Anwendung eine wirksame Authentisierung und Sitzungsverwaltung unterstützen. Die Eigenschaften der Sitzungs-ID müssen so gewählt werden, dass die Sitzung ausreichend geschützt ist. ....&amp;quot;&lt;br /&gt;
&lt;br /&gt;
Besser fände ich &amp;quot;eine Authentisierung, die über eine dem Schutzbedarf der Anwendung angemessene Stärke verfügt.&amp;quot; &lt;br /&gt;
&lt;br /&gt;
Eigentlich geht es doch mehr um den Schutz der Sitzungs-ID, da diese gewöhnlich im Verlauf einer Sitzung den Client authentisiert. Oder den Schutz des Zugriffs auf eine Sitzung. &lt;br /&gt;
&lt;br /&gt;
Zudem fehlt hier meiner Meinung nach der Hinweis auf die bevorzugte Verwendung getesteter Standardkomponenten.&lt;br /&gt;
&lt;br /&gt;
; 8. &amp;quot;Die Web-Anwendung sollte die zu übermittelnden Daten schützen.&amp;quot;&lt;br /&gt;
&lt;br /&gt;
Dies würde ich nur auf sensible Daten beziehen. Zusätzlich zu HTTPS würde ich hier schreiben, dass sensible Daten generell nicht in der URL übertragen werden dürfen.&lt;br /&gt;
&lt;br /&gt;
; 9. &amp;quot;Die Preisgabe interner Informationen (z.B. Kommentare, Fehlermeldungen)&amp;quot;&lt;br /&gt;
&lt;br /&gt;
Hier würde ich eher schreiben &amp;quot;(IN Kommentaren, Fehlermeldungen, HTTP Headern, etc.)&amp;quot;&lt;br /&gt;
&lt;br /&gt;
; 10. &amp;quot;Fehler müssen so behandelt werden, ... müssen Fehler bei der Autorisierung zu einer Verweigerung beim Zugriff auf die angeforderte Ressource führen.&amp;quot;&lt;br /&gt;
&lt;br /&gt;
Sprachlich: &amp;quot;Die Webanwendung muss sich stets in einem sicheren Zustand befinden. Beispielsweise müssen Fehler bei der Autorisierung zu einer Verweigerung des Zugriffs führen (Default-Deny-Strategie).&amp;quot;&lt;br /&gt;
&lt;br /&gt;
; 11. &amp;quot;Die Logging-Funktionen der Web-Anwendung müssen aufgetretene Ereignisse derart protokollieren, dass sicherheitskritische Vorfälle nachvollzogen werden können.&amp;quot;&lt;br /&gt;
&lt;br /&gt;
Hier würde hier eher von &amp;quot;allen sicherheitsrelevanten Ereignissen&amp;quot; sprechen.&lt;br /&gt;
&lt;br /&gt;
Weiterhin sollten insbesondere beim Logging der Datenschutz berücksichtigt werden, personenbezogene Daten also nach Möglichkeit nicht oder nur anonymisiert in technischen Logdateien protokolliert werden.&lt;br /&gt;
&lt;br /&gt;
; 12. &amp;quot;Alle Sicherheitsmechanismen (z.B. Authentisierung und Zugriffskontrolle) sind serverseitig zu implementieren und können nicht durch clientseitige Mechanismen ersetzt werden.&amp;quot;&lt;br /&gt;
&lt;br /&gt;
Die Aussage ist so nicht korrekt. Darüber hatten wir bereits bei der ASVS mehrfach diskutiert. &lt;br /&gt;
&lt;br /&gt;
Überall dort wo der Client angegriffen wird, also etwa bei RIAs (Stichwort DOM-Based XSS) müssen wir Security Controls clientseitig implementieren. Es gibt mittlerweile deshalb auch eine Portierung der ESAPI auf Javascript. Überall dort wo der Server oder Hintegrundsysteme angegriffen werden, ist die Aussage aber natürlich zutreffend.&lt;br /&gt;
&lt;br /&gt;
== &amp;quot;Gefährdungen&amp;quot; (Markus, Dennis, .... &amp;lt;Dein Name&amp;gt;) ==&lt;br /&gt;
; Generell:&lt;br /&gt;
Reference auf RFCs fehlen.&lt;br /&gt;
&lt;br /&gt;
==B.5.XX Web-Anwendungen ==&lt;br /&gt;
; 1. Erster Absatz - Letzter Satz: --Wieso werden hier nur HTML/XML Doks und Oberflächen angesprochen? Was ist der Unterschied zwischen einem HTML-Dok und einer Oberfläche? Was ist mit  Flash, etc.? Was ist mit WebSockets?&lt;br /&gt;
; 2. Stichpunkt &amp;quot;Protokollierung&amp;quot;: Sicherheits relevant ist ein sehr dehnbarer Begriff - Eine bessere Formulierung könnte sein: Zur Rekonstruktion von Nutzerhandlungen nötige Ereignisse (positve &amp;amp; negative) müssen protokolliert werden . . . &lt;br /&gt;
; 3. Absatz: &amp;quot;Abgrenzung des Bausteins&amp;quot;: &amp;quot;Die spez. Sicherheitsanforderungen an Web-Services werden in diesem Baustein nicht betrachtet&amp;quot; --&amp;gt; Wie so nicht? Was ist das Backend von einer Rest / AJAX-basierenden Webanwendung denn anderes als ein Web-Service? Diesen Satz würde ich entfernen.&lt;br /&gt;
; 4.Vorsätzliche Handlungen -&amp;gt; Web-Spoofing (G.5.87) -- Missverständliche Bezeichnung / Nomenklatur&lt;br /&gt;
; 5. Seite 4 : erste Zeile &amp;quot;Umsetzung&amp;quot;: &amp;quot;dafür umzusetztende Komponenten müssen die Webanwendung schützen...&amp;quot; - Hier fehlt mir der Hinweis, dass dieser Schutz verifiziert werden muss.&lt;br /&gt;
; 6 Seite 5: &amp;quot;Umsetzung&amp;quot; - Wir haben CSRF, D(D)os und SQL-Injection aber wo ist XSS?&lt;br /&gt;
; 7 Seite 7: &amp;quot;Die Sicherheitsfunktion wird ausschließlich clientseitig...&amp;quot; --&amp;gt; Warum muss der Angreifer überhaupt einen Browser umkonfigurieren? Was ist mit Proxies, Scripts, etc.? Ich würde das reduzieren darauf, dass rein Webbrowser-basierende Schutzfunktionen einfach umgangen werden können.&lt;br /&gt;
; 8 Seite 8: Die angesprochenen Punkte hinterlassen den Eindruck nicht vollständig zu sein: Mir fehlen Punkte wie &amp;quot;Outsourcing&amp;quot;, &amp;quot;KnowHow der Entwickler&amp;quot;, Tooling, Framework-Auswahl, etc.&lt;br /&gt;
; 9 Seite 9: Eigentlich möchte der Autor hier über Datenschutz sprechen. Abgesehen von den letzten drei Zeilen geht es aber nur um &amp;quot;User tracking&amp;quot; - Wo ist der Rest der Datenschutzproblematik? Warum der Fokuss auf Tracking? Mir ist das zu einseitig.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
tbd.&lt;br /&gt;
&lt;br /&gt;
; Wortwahl:&lt;br /&gt;
Ich stosse innerhalb der Texte immer wieder an die Worten '''Hintergrundsystem''' und '''Sicherheitskontext'''.&lt;br /&gt;
'''Hintergrundsystem:''' besseres Synonym?&lt;br /&gt;
'''Sicherheitskontext:''' nur weil es in den Texten um Sicherheit geht muss nicht an jeder Stelle immer wieder das Wort _Sicherheits_kontext eingebaut werden.&lt;br /&gt;
Bsp: &amp;quot;Erlangt ein Angreifer Kenntnis von einer solchen gültigen, aber nicht mehr genutzten SessionID, so kann er die Web-Anwendung im Sicherheitskontext des nicht abgemeldeten Benutzers weiter verwenden.&amp;quot; (G 5,WA12 Unzureichendes Session-Management von Web-Anwendungen)&lt;br /&gt;
Verbesserungsansansatz: ... so kann er die Web-Anwendung anstelle des eigentlichen Besitzers weiterhin verwenden.&lt;br /&gt;
&lt;br /&gt;
== &amp;quot;G 2.WA01 Mangelhafte Auswahl oder Konzeption von Web-Anwendungen&amp;quot; (Matthias) ==&lt;br /&gt;
&lt;br /&gt;
Nachdem ich mir diese Gefährdung durchgelesen hatte, fehlten mir ehrlich gesagt etwas die Worte. Nicht nur, dass hier fast jeder zweite Satz entweder falsch ist bzw. massive Fehler enthält oder ich diesen schlicht nicht verstehe, ist der ganze Text sprachlich wirklich enorm verbesserungsfähig. &lt;br /&gt;
&lt;br /&gt;
Na gut, ich konzentriere mich mal auf die fachlichen Punkte:&lt;br /&gt;
&lt;br /&gt;
; 1. Security Controls&lt;br /&gt;
Werden mal mit &amp;quot;Schutzmechanismen&amp;quot;, mal mit &amp;quot;Sicherheitskomponenten&amp;quot; und dann wieder als &amp;quot;Sicherheitsfunktionen&amp;quot; bezeichnet. Hier macht eine einheitliche Benennung sicherlich Sinn und ist weniger verwirrend.&lt;br /&gt;
&lt;br /&gt;
; 2. &amp;quot;Eine Web-Anwendung ist in der Regel ein verteiltes, komplexes System bestehend aus unterschiedlichen Komponenten (z. B. Webserver, Applikationsserver, Hintergrundsysteme)&amp;quot;&lt;br /&gt;
&lt;br /&gt;
Eine Webanwendung besteht sicher nicht aus einem Webserver- oder anderer infrastruktureller Komponenten, sondern ist Software welches diese nutzt.&lt;br /&gt;
&lt;br /&gt;
; 3. &amp;quot;Bei individuell entwickelten Web-Anwendungen sind im Allgemeinen die Frameworks, Komponenten und Schnittstellen im Rahmen der Konzeption auszuwählen und deren Einbindung und Absicherung zu betrachten....Im Gegensatz dazu ist bei der Konzeption von Web-Anwendungen auf Basis von Standardsoftware insbesondere auf die Auswahl der Software und die Konfiguration der Teilkomponenten zu achten&amp;quot;&lt;br /&gt;
&lt;br /&gt;
Wir unterscheiden im Rahmen von Webanwendungen eigentlich Free or Opensource Software (FOSS bzw. FLOSS), Standardsoftware und Individualsoftware voneinander. Wir unterscheiden nicht Frameworks von Standardsoftware. Frameworks können Teil von Standardsoftware sein, wie etwa bei SharePoint, SAP, etc, oder aber FOSS, wie etwa Spring. Die ganzen Absätze machen für mich daher keinen Sinn.&lt;br /&gt;
&lt;br /&gt;
; 4. &amp;quot;Eine Sicherheitsfunktion (z. B. Authentisierung, Autorisierung) wird nicht an einer Stelle umgesetzt und verwendet, sondern ist mehrfach in der Web- Anwendung realisiert. Wird diese Sicherheitsfunktion an den verschiedenen Stellen unterschiedlich umgesetzt, führt dies zu einem uneinheitlichen Sicherheitsniveau.&amp;quot;&lt;br /&gt;
&lt;br /&gt;
Natürlich ist die mehrfache Verwendung bestimmter Security Controls, beispielsweise von Zugriffskontrollen (Complete-Mediation) oder Validierung (Robustheit) erstrebenswert. Was der Autor hier wahrscheinlich meinte, war die Notwendigkeit diese zu Kapseln bzw. zu Externalisieren. Das bezieht sich im übrigen nicht nur auf die Controls selbst, sondern auch auf ihre Parametrisierung (etwa. über Konfigdateien / XACML).&lt;br /&gt;
&lt;br /&gt;
Wichtiger wäre in diesem Zusammenhang zudem die fehlende Berücksichtigung bestimmter Security Controls.&lt;br /&gt;
&lt;br /&gt;
; 5. &amp;quot;Auswahl von Web-Anwendungen auf Basis von Standardsoftware&amp;quot;&lt;br /&gt;
Was will der Satz sagen? Ich wähle Standardsoftware aus, aber doch keine Webanwendungen. Oder heißt das, ich kaufe eine existierende Anwendung ein (Webanwendung!=Indivudualsoftware)? &lt;br /&gt;
&lt;br /&gt;
; 6. &amp;quot;Das ausgewählte Produkt verfügt nicht über die ausreichende Sicherheitsfunktionalität, ... Daher müssen die notwendigen Schutzmechanismen nachträglich hinzugefügt werden, wodurch zusätzliche Aufwände entstehen.&amp;quot;&lt;br /&gt;
Das ist etwas sehr positiv formuliert. Tatsächlich können fehlende Security Controls in zugekaufter Software (insb. Standardsoftware) in der Realität häufig gar nicht hinzugefügt werden oder nur perimetrisch (z.B. per WAF oder Access Gateway).&lt;br /&gt;
&lt;br /&gt;
; 7. &amp;quot;Die Hintergrundsysteme werden unzureichend abgesichert und dadurch ist die Datenbank der Web-Anwendung aus dem Internet erreichbar.&amp;quot;&lt;br /&gt;
Gehören fehlende Netzwerksegmentierung bzw. Firewallregeln wirklich in diesen Kontext? Das ist doch eigentlich Grundschutz der Infrastruktur, oder?&lt;br /&gt;
&lt;br /&gt;
; 8. &amp;quot;Aufgrund schwacher Parameter in der Konfiguration des Frameworks zum Session-Management werden unsichere SessionIDs erzeugt.&amp;quot;&lt;br /&gt;
Was sind &amp;quot;schwache&amp;quot; Parameter?&lt;br /&gt;
&lt;br /&gt;
Welches Framework erlaubt unsichere SessionIDs durch eine &amp;quot;schwache&amp;quot; Konfiguration zu erzeugen?&lt;br /&gt;
&lt;br /&gt;
; 9. &amp;quot;Wird die Konfiguration des Web-Browsers durch einen Angreifer manipuliert, können die clientseitig umgesetzten&amp;quot;&lt;br /&gt;
&lt;br /&gt;
Manipuliert ein Angreifer die Konfguration seines Webbroswers, wenn er einen MITM-Proxy konfiguriert?&lt;br /&gt;
&lt;br /&gt;
Wie bereits bei den &amp;quot;Goldenen Regeln&amp;quot; angemerkt, gilt auch hier, das manche Security Controls auch clientseitig umgesetzt werden dürfen (etwa. zur Verhinderung von Dom-Based XSS).&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== &amp;quot;G 5.WA10 Fehler in der Web-Anwendungslogik&amp;quot; (Dennis) ==&lt;br /&gt;
; 1. &amp;quot;Damit kann aufgrund der Prüfreihenfolge ein hoher Ressourcenverbrauch provoziert werden, der für Denial-of-Service-Angriffe ausgenutzt werden kann.&amp;quot;&lt;br /&gt;
Meiner Meinung nach passt in diesem Kontext die Attacke DoS nicht ganz. Falls die nachfolgende Funktionalität wegen der langen Ausführungszeit der Filterkomponente übersprungen wird bzw. ein Fehler auftritt würde dies meiner Ansicht in die Thematik Anwendungslogik passen. Eine DoS-Attacke kann hingegen anhand jeder Funktion durchgeführt werden.&lt;br /&gt;
&lt;br /&gt;
([[User:Mrohr|Matthias]]) Jo stimmt, aber ich stimme mit der Aussage eigentlich schon ueberein, auch wenn diese zugegeben etwas ungluecklich formuliert ist. Es geht hier ja darum, rechenintensive Pruefungen/Filterung moeglichst zu vermeiden bzw. zu reduzieren. Aus diesem Grund machen wir ja auch bei der AV-Pruefung zunaechst Blacklist-Checks und erst am Ende rechenintensive statistische oder verhaltensbezogene Pruefungen.&lt;br /&gt;
&lt;br /&gt;
== &amp;quot;G 5.WA11 Umgehung clientseitig umgesetzter Sicherheitsfunktionen von Web-Anwendungen&amp;quot; (Dennis) ==&lt;br /&gt;
; 1. &amp;quot;Ein Angreifer kann diese ausnutzen, um beispielsweise unbefugt Befehle an Hintergrundsysteme der Web-Anwendung zu übermittlen (z.B. in Form von Datenbankanfragen bei einer SQL-Injection).&amp;quot;&lt;br /&gt;
Umformulierung des Inhalts der Klammer. Hatte beim ersten Lesen für mich den Anschein, als ob ein Formular genutzt werden könnte welches den Nutzer aufforder eine SQLI einzugeben. Ich denke &amp;quot;Datenbankanfrage zwecks Ausführung einer SQL-Injection&amp;quot; würde besser passen.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== G 2.WA02 Mängel bei der Entwicklung und der Erweiterung von Web-Anwendungen (Matthias) ==&lt;br /&gt;
&lt;br /&gt;
Allgemein ist de obere Teil ok, die aufgezählten &amp;quot;Auswirkungen von fehlenden Vorgaben&amp;quot; verstehe ich jedoch nicht. Wo ist etwa der Bezug von Barrierefreiheit auf die Anwendungssicherheit?&lt;br /&gt;
&lt;br /&gt;
Mein Vorschlag, um diese Punkte etwa sinnvoll umzubauen:&lt;br /&gt;
* &amp;quot;Fehlendes Vorgehensmodell&amp;quot;: Bezug auf fehlende Berücksichtigung von Sicherheit im SDLC. Statt eines SDLCs selbst sollte hier besser auf die Notwendigkeit eines Secure Development Lifecycle (SDL) hingewiesen werden&lt;br /&gt;
* &amp;quot;Fehlende Programmierrichtlinien&amp;quot; =&amp;gt; Besser wäre hier &amp;quot;Fehlende Sicherheitsrichtlinien in der Programmierung&amp;quot; also &amp;quot;Secure Coding Guidelines&amp;quot;&lt;br /&gt;
* &amp;quot;Testfälle&amp;quot; =&amp;gt; &amp;quot;Sicherheitsrelevante Testfälle&amp;quot; (z.B. Security Unit Tests). &lt;br /&gt;
* &amp;quot;Barrierefreiheit&amp;quot;: Warum nicht an dieser Stelle die Auswirkungen von Sicherheitsfunktionen auf die Bedienbarkeit, etwa anhand von CAPTCHAS erläutern?&lt;br /&gt;
&lt;br /&gt;
== G 2.WA03 Unzureichender Schutz personenbezogener Daten bei Web-Anwendungen (Matthias) ==&lt;br /&gt;
&lt;br /&gt;
Der Titel dieses Bausteines heißt &amp;quot;Schutz personenbezogener Daten&amp;quot;, die genannten Beispiele beziehen sich bis auf den letzten jedoch auf die missbräuchliche (oder zumindest problematische) Nutzung aus Sicht des Datenschutzes. &lt;br /&gt;
&lt;br /&gt;
Die Punkt 1-3 sollten daher besser entfallen und z.B. durch die Folgenden ersetzt werden:&lt;br /&gt;
* Unsichere Einbindung von sozialen Netzwerken (Bezug nehmen auf den Like-Button bei Facebook)&lt;br /&gt;
* Unsichere Einbindung von Werbeinhalten&lt;br /&gt;
* Unsichere Übertragung und Caching&lt;br /&gt;
* Unsichere Protokollierung&lt;br /&gt;
* Ungenügender Zugriffsschutz&lt;br /&gt;
* Verstoß des Minimalprinzips bzw. der Zweckgebundenheit (welche Daten werden wirklich benötigt)&lt;br /&gt;
&lt;br /&gt;
Auch wäre es ggf. zumindest einen Verweis auf das BDSG zu machen.&lt;br /&gt;
&lt;br /&gt;
== G 4.33 Unzureichende oder fehlende Authentisierung (Matthias) ==&lt;br /&gt;
&lt;br /&gt;
; 1. Erster Absatz: &amp;quot;Wenn Authentisierungsmechanismen fehlen oder zu schlecht sind&amp;quot;&lt;br /&gt;
&lt;br /&gt;
&amp;quot;schlecht&amp;quot; sollte vlt besser durch &amp;quot;unzureichend&amp;quot; ersetzt werden.&lt;br /&gt;
&lt;br /&gt;
; 2. &amp;quot;Sicherheitslücken entstehen bei... der Benutzerauthentisierung&amp;quot;&lt;br /&gt;
&lt;br /&gt;
Hier findet nur ein Bezug auf &amp;quot;Passwörter&amp;quot; statt. Der Bezug auf die fehlerhaft implementierte oder dem Schutzbedarf ungenügende Schutzmechanismen (z.B. keine 2-Faktor-Authentisierung bei hochsensiblen Daten) fehlt. Auch auf das komplette fehlen von Authentisierungs-Controls wird hier nicht  eingegangen&lt;br /&gt;
&lt;br /&gt;
; 3. &amp;quot;Sicherheitslücken entstehen bei... der Komponentenauthentisierung&amp;quot;&lt;br /&gt;
&lt;br /&gt;
Wie bei 2., wird auch hier wieder nur auf Passwörter, nicht jedoch auf das fehlen von Controls selbst eingegangen. An dieser Stelle fehlt auch ein Hinweis auf die Notwendigkeit dedizierter Benutzeraccounts.&lt;br /&gt;
&lt;br /&gt;
; 4. &amp;quot;Sicherheitslücken entstehen bei... der Wahl des Verfahrens&amp;quot;&lt;br /&gt;
&lt;br /&gt;
Statt untauglich würde ich auch hier von &amp;quot;dem Schutzbedarf der Daten nicht angemessen&amp;quot; sprechen, eigentlich gehört das für mich aber in die obigen Punkte.&lt;br /&gt;
&lt;br /&gt;
; 5. Serverseitige Authentisierung fehlt&lt;br /&gt;
&lt;br /&gt;
Auch der Server (bzw. die Anwendung selbst) kann sich fehlerhaft oder ungenügend beim Benutzer authentsieren, etwa über DNS, SSL-Zertifikate, etc.&lt;br /&gt;
&lt;br /&gt;
== G 4.WA04 Unzureichende Validierung von Ein- und Ausgabedaten bei Web-Anwendungen (Matthias) ==&lt;br /&gt;
&lt;br /&gt;
; 1. &amp;quot;Unzureichende Validierung von Eingabedaten&amp;quot;&lt;br /&gt;
&lt;br /&gt;
Die genannten Beispiele sind genau keine korrekten Beispiele für diesen Fall, sondern betreffen die Ausgabevalidierung bzw. Enkodierung. Typische Fehler der Eingabevalidierung ist eine Manipulierbarkeit der Business Logik.&lt;br /&gt;
&lt;br /&gt;
; 2. &amp;quot;Unzureichende Validierung von Ausgabedaten&amp;quot;&lt;br /&gt;
&lt;br /&gt;
Hier geht es zentral um die Verhinderung von Interpreter Injection, also serverseitig (z.B. SQL oder LDAP Injection) oder clientseitig (XSS, JSON Injection, etc.). Statt &amp;quot;können die Ausgaben Schadcode&amp;quot; enthalten würde ich hier eher davon Sprechen, dass ein solcher Interpreteraufruf manipuliert werden kann (was dann z.B. zur Einschleusung von Schadcode genutzt werden kann).&lt;br /&gt;
&lt;br /&gt;
; 3. &amp;quot;Die Suchfunktion der Web-Anwendung verwendet die Eingaben der Benutzer ungefiltert&amp;quot;&lt;br /&gt;
&lt;br /&gt;
Mit ungenügender &amp;quot;Filterung&amp;quot; hat SQL Injection nichts zu tun,  eigentlich geht es hierbei darum, dass SQL-Anfragen dynamisch mit unvalidierten Eingebedaten zusammengebaut (konkateniert) werden.&lt;br /&gt;
&lt;br /&gt;
; 4. &amp;quot;Ungefilterter HTML-Code in Kommentar-Funktion&amp;quot;&lt;br /&gt;
&lt;br /&gt;
Hier fehlt der Bezug auf persistentes XSS, das hier sicherlich zentral ist.&lt;br /&gt;
&lt;br /&gt;
== G 4.WA05 Fehlende oder mangelhafte Fehlerbehandlung durch Web-Anwendungen (Tobias, Matthias) ==&lt;br /&gt;
; Abschnitt &amp;quot;Unsichere Fehlerbehandlung&amp;quot;&lt;br /&gt;
Die G adressiert &amp;quot;Unsichere Fehlerbehandlung&amp;quot;, der Abschnitt die &amp;quot;Unsichere Fehlerbehandlung in Sicherheitskomponenten&amp;quot;. Entsprechend sollte der fettgedruckte Teil angepasst werden.&lt;br /&gt;
&lt;br /&gt;
; &amp;quot;fehlende SQL-Parameter,&amp;quot;&lt;br /&gt;
Sollte besser &amp;quot;Fehlermeldungen bei ungültigen SQL-Abfragen&amp;quot; lauten.&lt;br /&gt;
&lt;br /&gt;
; &amp;quot;Auch scheinbar unkritische Informationen, wie die Meldung ob (..)&amp;quot;&lt;br /&gt;
Korrekt, allerdings nicht nachvollziehbar, wenn das Problem der Leser nicht schon bekannt ist. Daher erweitern nach &amp;quot; Rahmen von Brute-Force-Angriffen ausgenutzt werden.&amp;quot; mit &amp;quot;. Bei Brute-Force-Angriffen wäre in diesem Fall klar, dass der Benutzername gültig ist.&amp;quot;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[User:Mrohr|Matthias]]): Stimme dem Obigen auch zu, ausserdem:&lt;br /&gt;
&lt;br /&gt;
; Sprachlich: &amp;quot;kann dies unvorhersehbare Auswirkungen haben und den Betrieb der Web-Anwendung bis zur Unerreichbarkeit einschränken.&amp;quot;&lt;br /&gt;
&lt;br /&gt;
&amp;quot;Unerreichbarkeit&amp;quot; ist etas merkwuerdig ausgedrueckt, besser ware hier von der &amp;quot;Verfuegbarkeit&amp;quot; zu sprechen. Im Uebrigen fehlt vollstaendig der Bezug auf die Verfuegbarkeit als Primaeres Schutzziel der Informationssicherheit.&lt;br /&gt;
&lt;br /&gt;
; &amp;quot;Clientseitige Fehlerbehandlung&amp;quot;&lt;br /&gt;
Das stimmt soweit, das generelle Problem ist jedoch genereller, naehmlich die clientseitige Abbildung sicherheitsrelaventer Logik (in diesem Fall die Fehlerbehandlung)&lt;br /&gt;
&lt;br /&gt;
== G 4.WA06 Unzureichende Nachvollziehbarkeit von sicherheitsrelevanten Ereignissen bei Web-Anwendungen (Matthias) ==&lt;br /&gt;
&lt;br /&gt;
; 1. Erster Absatz: &amp;quot;Die Behebung einer Schwachstelle ist dann nicht oder nur unter erschwerten Bedingungen möglich.&amp;quot;&lt;br /&gt;
&lt;br /&gt;
Hier würde ich ergänzen: &amp;quot;...und Angriffe auf die Anwendungen können ggf. nicht erkannt oder nachvollzogen werden&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
; 2. &amp;quot;Beispiele&amp;quot;: Kommulierbarkeit&lt;br /&gt;
&lt;br /&gt;
Hier fehlt auch ein Bezug auf die Kommulierbarkeit von SIcherheitsereignissen, dass diese also auch von solchen anderer Systeme in Verbindung gesetzt werden können&lt;br /&gt;
&lt;br /&gt;
; 3. &amp;quot;Beispiele&amp;quot;: Gerichtsverwertbarkeit&lt;br /&gt;
&lt;br /&gt;
Auch die Möglichkeit zur Gerichtsverwertbarkeit (etwa durch eindeutigen Zeitstempel) und manipulationssicherer Speicherung, würde ich an dieser Stelle unbedingt erwähnen.&lt;br /&gt;
&lt;br /&gt;
== G 4.WA07 Offenlegung von Informationen bei Web-Anwendungen (Matthias) ==&lt;br /&gt;
&lt;br /&gt;
; 1. Titel&lt;br /&gt;
&lt;br /&gt;
Hier würde ggf. &amp;quot;Offenlegung vertraulicher Informationen&amp;quot; sicher besser passen als &amp;quot;Offenlegung von Informationen&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
; 2. Beispiellink&lt;br /&gt;
&lt;br /&gt;
Ein Beispiellink (mit und ohne Token) würde sicher die Verständlichkeit dieser Schwachstelle verbessern.&lt;br /&gt;
&lt;br /&gt;
; 3. Erster Absatz: &amp;quot;Wenn demzufolge Informationen unnötig offengelegt werden, steigt die Wahrscheinlichkeit eines erfolgreichen Angriffs.&amp;quot;&lt;br /&gt;
&lt;br /&gt;
Interne Informationen auszublenden ist eine Härtungsmaßnahme, deren Anzeige erhöht aber nicht zwangsläufig die Wahrscheinlichkeit eines erfolgreichen Angriffs. Ich würde diesen Satz weglassen.&lt;br /&gt;
&lt;br /&gt;
 ; 4. Fehlende Punkte&lt;br /&gt;
&lt;br /&gt;
* Ein Hinweis auf HTTP Header wäre hier sicher erwähnenswert.&lt;br /&gt;
* Weiterhin bzgl. der Anzeige von Traces und ein Verweis auf den Entsprechenden Baustein zur Fehlerbehandlung&lt;br /&gt;
&lt;br /&gt;
== G 5.WA14 Cross-Site Request Forgery (CSRF, XSRF) (Matthias) ==&lt;br /&gt;
&lt;br /&gt;
; 1. Erster Absatz: &amp;quot;Können Funktionen einer Web-Anwendung ohne weitere Überprüfung der Authentizität des HTTP-Requests (z.B. durch Tokens in versteckten Formularfeldern) genutzt werden&amp;quot;&lt;br /&gt;
&lt;br /&gt;
Statt &amp;quot;Funktionen&amp;quot; würde ich besser von &amp;quot;schreibenden Aktionen&amp;quot; sprechen, dann macht der Satz mehr Sinn.&lt;br /&gt;
&lt;br /&gt;
; 2. Dritter Absatz: &amp;quot;Im Gegensatz zu XSS (siehe ...￼ ) ist das Angriffsziel nicht die Information auf dem Client (z. B. in Cookies),&amp;quot;&lt;br /&gt;
&lt;br /&gt;
Dieser (Halb-)Satz macht keinen Sinn, auch weil es bei XSS nicht nur im Informationen auf dem Cient geht. Vorschlag: &amp;quot;ist das Angriffsziel nicht die Ausführung von Skriptcode, sondern von unbefugten, schreibenden Aktionen im Kontext des angemeldeten Benutzers.&amp;quot;&lt;br /&gt;
&lt;br /&gt;
; 3. Session Riding&lt;br /&gt;
&lt;br /&gt;
Session Riding ist quasi nur ein anderer Begriff für CSRF. Die einzige Form von CSRF die mir bekannt ist, sind Angriffe mit Standard-Passwörtern auf HTTP-Basic-Auth geschützten Ressourcen.&lt;br /&gt;
&lt;br /&gt;
Im Grunde ist Session Riding aber nur ein Synonym für CSRF. Der Absatz ist daher auch nur eine Wiederholung der obigen Beschreibung.&lt;br /&gt;
&lt;br /&gt;
; 4. Zum Beispiel: &amp;quot;Durch einen präparierten Link auf einer Webseite wird die Änderung des Zugangspasswortes des Routers eingeleitet.&amp;quot;&lt;br /&gt;
&lt;br /&gt;
Etwas ungüngstig ausgedrückt. Besser wäre: &amp;quot;wird eine Anfrage zur Änderung des Zugangspasswortes an den Router gesendet. Hierbei sendet der Browser automatisch den Session Cookie mit, worüber die Webanwendung die Authentizität der Anfrage verifiziert und die Änderung durchführt.&amp;quot;&lt;br /&gt;
&lt;br /&gt;
== G 5.WA18 Clickjacking (Matthias) ==&lt;br /&gt;
&lt;br /&gt;
Hier stellt sich mir nur die allgemeine Frage, ob Clickjacking, bzw. der Schutz davor tatsächlich einem Grundschutz zuzurechnen ist. Persönlich würde ich dies nicht tun.&lt;br /&gt;
&lt;br /&gt;
== M 2.WA02 Dokumentation der Architektur von Web-Anwendungen (Matthias) ==&lt;br /&gt;
&lt;br /&gt;
; Verantwortlich für die Umsetzung&lt;br /&gt;
Hier wäre auch die Nennung des &amp;quot;Architekten&amp;quot; sinnvoll&lt;br /&gt;
 &lt;br /&gt;
; Fehlende Bestandteile der Dokumentation:&lt;br /&gt;
* Schutzbedarf des Systems sowie der verarbeiteten Daten&lt;br /&gt;
* Schützenswerte Daten und Funktionen (Assets)&lt;br /&gt;
* Betriebliche Anforderungen an die Sicherheit bzw. eingesetzte Plattform&lt;br /&gt;
* Dokumentierte Konfigurationseinstellungen &lt;br /&gt;
* BIA (RTO, RPO)&lt;br /&gt;
* Schnittstellen&lt;br /&gt;
* Trust Boundaries&lt;br /&gt;
* Akteure (bzw. Trust Level)&lt;br /&gt;
* Sicherheitsannahmen&lt;br /&gt;
* Geltende Compliance-Anforderungen (BDSG, PCI DSS, etc.)&lt;br /&gt;
&lt;br /&gt;
; Benutzermanagement&lt;br /&gt;
&lt;br /&gt;
Wenn damit das Identity Management gemeint ist, gehört das Dokumentiert, ist aber keine Sicherheitsfunktion. Oder ist hiermit das Rollen- und Berechtigungskonzept gemeint? Grenzt sich aus meiner Sicht schwer mit dem Thema Authentisierung ab. &lt;br /&gt;
&lt;br /&gt;
; Prüffragen&lt;br /&gt;
&lt;br /&gt;
Hier fehlt etwas in Bezug auf Sicherheitsanforderungen. Beispiel: &amp;quot;Werden Sicherheitsanforderungen an den Betrieb während der Entwicklung abgestimmt und dokumentiert&amp;quot;&lt;br /&gt;
&lt;br /&gt;
== M 2.WA12 Entwicklung und Erweiterung von Anwendungen (Markus) ==&lt;br /&gt;
; &amp;quot;Es sollte darauf geachtet werden, dass Sicherheitsanforderungen&lt;br /&gt;
vollständig durch Sicherheitsmechanismen erfüllt und zur Erstellung von&lt;br /&gt;
Testfällen festgehalten werden.&amp;quot; --&amp;gt; Bessere Formulierung würde aussagen, dass die Sicherheitsanforderungen durch Testfälle verifiziert werden.&lt;br /&gt;
&amp;quot;(z. B. durch Kommentare im&lt;br /&gt;
Quelltext). Somit ist der Quelltext zu einem&amp;quot; --&amp;gt; Das ist kein empfehlenswerter Programmierstiel! Raus mit diesem Kommentar&lt;br /&gt;
;&amp;quot;Zum Schutz vor dem Verlust bereits entwickelter und verworfener&lt;br /&gt;
Lösungen sowie zu Dokumentationszwecken sollte die Historie der&lt;br /&gt;
Änderungen festgehalten werden (z. B. durch ein Revisionssystem).&amp;quot; --&amp;gt; Auch diesen Absatz können wir streichen - Kein professioneller Programmierer arbeitet ohne Versionierugssystem.&lt;br /&gt;
;&amp;quot;Bei Web-Anwendung sollten die Webseiten auf Konformität zu dem&lt;br /&gt;
verwendeten Standard (z. B. HTML-Standard) getestet werden. Dadurch&lt;br /&gt;
können unvorgesehene Seiteneffekte aufgrund einer Fehlinterpretation&lt;br /&gt;
seitens der Browser vermieden werden.&amp;quot; --&amp;gt; Könnte man noch um &amp;quot;Die Software ist in möglichst vielen Browsern zu testen&amp;quot; erweitern.&lt;br /&gt;
;Generell geht der Autor leider nicht auf die Rollen &amp;amp; Rechte Verteilung ein. Mir fehlt der Hinweis, das es eine personelle Trennung zwischen Entwicklung, Test und Betrieb geben muss.&lt;br /&gt;
;Zum Thema Wartung / Betrieb --&amp;gt; Hier wird keine Aussage getroffen bezüglich Log_Files. Dieses Thema kann kritische Auswirkungen haben, Bsp.: logging ganzer HTTP-Requests im LogLevel=Debug.&lt;br /&gt;
; &amp;quot;Produktspezifische Sicherheitsfunkionalität&amp;quot; - Dieser Absatz ist gefährlich - der Angreifer ist nicht zur Verwendung dies Zielbrowsers gezwungen. Deshalb können Browser-spez. Sicherheitsfunktionen nur als Add-ON gewertet werden.&lt;br /&gt;
; &amp;quot;Festlegung der Entwicklungsumgebung&amp;quot; - Dieser Absatz geht nicht auf die zu verwendenden Testdaten ein. Der Hinweis, dass Live-Daten / Kundendaten nichts in Test- &amp;amp; Entwicklungsumgebungen zu suchen haben fehlt!!!&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== M 2.WA24 Web-Tracking (Matthias) ==&lt;br /&gt;
&lt;br /&gt;
; Letzter Absatz: &amp;quot;Falls eine Auswertung von Nutzerdaten, insbesondere personenbezogener Daten, .. &amp;quot;&lt;br /&gt;
&lt;br /&gt;
Hier sollte denke ich besser von personenbeziehbaren Daten gesprochen Werten. Dies betrifft etwa die Zuordnung von Surfverhalten zu einer bestimmten Person. Dies sollte stets nach den Prinzipien Datensparsamkeit und Datenvermeidung, Erforderlichkeit, sowie Zweckbindung erfolgen. Ist Webtracking nicht personenbeziehbar ist dies kein Thema für den Datenschutz.&lt;br /&gt;
&lt;br /&gt;
== M 4.WA04 Authentisierung bei Web- Anwendungen (Matthias) ==&lt;br /&gt;
&lt;br /&gt;
: Verantwortlich fuer Umsetzung &lt;br /&gt;
sollte in erster Linie beim Architekturen und in zweiter beim Entwickler liegen&lt;br /&gt;
; Vermischung von Authentisierung und Session Management &lt;br /&gt;
&lt;br /&gt;
Bei diesem Baustein findet eine ziemlich große Vermischung von Anforderung an die Authentisierung und das erst in &amp;quot;M 4.WA06 Session-Management bei Web- Anwendungen&amp;quot; behandelte Session Management statt (Beispiel: &amp;quot;Remember-Me-Funktion&amp;quot;). Beide Themen sollten sinnvollerweise getrennt voneinander zu betrachten und aufeinander zu beziehen.&lt;br /&gt;
&lt;br /&gt;
; Verwendung von Frameworks&lt;br /&gt;
&lt;br /&gt;
Die Anforderung ist schon ein wenig eingeschränkt. Besser passt hier denke ich die &amp;quot;Abbildung der Authentisierung über Standardkomponenten (Bibliotheken oder Frameworks)&amp;quot;. &lt;br /&gt;
&lt;br /&gt;
; Remember-Me-Funktion&lt;br /&gt;
&lt;br /&gt;
Siehe oben, gehört zum Session Management. Das ließt sich im übrigen so, als ob eine Webanwendung Credentials auf dem Client abhängt. &lt;br /&gt;
&lt;br /&gt;
; Grenzwerte für gescheiterte Anmeldeversuche&lt;br /&gt;
&lt;br /&gt;
Diese Empfehlung ist allgemein falsch, da sie sehr von der betrachteten Anwendung abhängt. Besser wäre hier allgemein von Mechanismen zur Verhinderung von automatisierten Angriffen zu sprechen (Anti-Automatisierung). &lt;br /&gt;
&lt;br /&gt;
Etwa umsetzbar durch&lt;br /&gt;
* Sperrung nach x Anmeldeversuchen&lt;br /&gt;
* Throttling&lt;br /&gt;
* Captchas&lt;br /&gt;
* Sicherheitsfragen&lt;br /&gt;
&lt;br /&gt;
Das allgemeine Sperren kann leicht für das gezielte Aussperren von Benutzern (User Lockout) verwendet werden. Was etwa bei Trading-Anwendungen nicht funktioniert.&lt;br /&gt;
&lt;br /&gt;
; Automatisiertes Zurücksetzen von Authentisierungsdaten&lt;br /&gt;
&lt;br /&gt;
Würde ich besser als &amp;quot;Passwort-Reset&amp;quot; bezeichnen.&lt;br /&gt;
&lt;br /&gt;
Weiterhin fehlt hier der Hinweis, dass statt ein automatisiertes Zurücksetzen, ein Mechanismus zu empfehlen ist, bei dem über ein hinterlegtes Sicherheitsmerkmal (Handy-Nummer oder E-Mail-Adresse) vom Benutzer zunächst eine Verifikation durchgeführt wird. Beispielsweise durch einen erhaltenen Link. Erst dann darf eine Änderung des Passwortes durch den Benutzer erfolgen.&lt;br /&gt;
&lt;br /&gt;
; Registrierung nicht behandelt&lt;br /&gt;
&lt;br /&gt;
Es existiert hier kein Punkt, der die sichere Implementierung von Benutzerregistrierungen behandelt.&lt;br /&gt;
&lt;br /&gt;
; Verweis auf Externalisierung fehlt.&lt;br /&gt;
&lt;br /&gt;
Statt die Authentisierung selbst durchzuführen kann eine Anwendung hierzu auf eine externe Komponente (Beispiel: SiteMinder oder Kerberos) zurückgreifen.&lt;br /&gt;
&lt;br /&gt;
; Verweis auf Behandlung von Credentials fehlt&lt;br /&gt;
&lt;br /&gt;
Auch wenn das  in &amp;quot;M 4.WA15 Schutz vertraulicher Daten bei Web- Anwendungen&amp;quot; ausführlich behandelt wird, sollte in diesem Baustein bereits auf den angemessenen Schutz von Authentisierungsdaten bei Übertragung und Speicherung hingewiesen werden.&lt;br /&gt;
&lt;br /&gt;
== M 4.WA05Umfassende Ein- und Ausgabevalidierung bei Web-Anwedungen (Markus) ==&lt;br /&gt;
; &amp;quot;Ablehnung der Daten im&lt;br /&gt;
Fehlerfall&amp;quot; --&amp;gt; Hier könnte man noch auf Tar-Pits eingehen - nur ein Vorschlag.&lt;br /&gt;
&lt;br /&gt;
== M 4.WA06Session-Management bei Web-Anwendungen (Markus, Matthias) ==&lt;br /&gt;
; &amp;quot;Übertragung der SessionID mittels GETRequest&amp;quot; --&amp;gt; Hier fehlt der Hinweis, dass die Lebensdauer dieser SessionIds kurz/kürzer sein muss, als im Falle der Speicherung im Cookie.&lt;br /&gt;
&lt;br /&gt;
([[User:Mrohr|Matthias]]) Die Anmerkung verstehe ich ehrlich gesagt ueberhaupt nicht, zumal das SM haeufig transparent zwischen Cookies und URL Rewriting wechselt. Wozu soll das gut sein? Wie soll das geschehen? Idealerweise sollte die Session ID niemals in die URL geschrieben werden, das sollte eigentlich genuegen.&lt;br /&gt;
&lt;br /&gt;
; &amp;quot;Verschlüsselte Übertragung von SessionIDs&amp;quot; --&amp;gt; Hier fehlt der Hinweis auf den Beast-Exploit. TLS Version &amp;gt; 1.0 verwenden!&lt;br /&gt;
&lt;br /&gt;
([[User:Mrohr|Matthias]]) Solange hier nicht auf eine explizite TLS Version eingegangen wird, sollte meiner grossen Ueberzeugung nach hier auch auf keine Exploits etc. eingagen werden, das gehoert an andere Stelle.&lt;br /&gt;
&lt;br /&gt;
; ([[User:Mrohr|Matthias]]) Weiterhin:&lt;br /&gt;
&lt;br /&gt;
 Es dürfen keine extern bekannten oder erratbaren Daten (z. B. IP-Adresse, Uhrzeit) in die Berechnung der SessionID einfließen.&lt;br /&gt;
&lt;br /&gt;
Die Aussage finde ich etwas problematisch, wichtiger ist, dass die Entropie ausreichend hoch ist. Haeufig werden etwa IPs von Load Balancern in die Session ID hineingeschrieben.&lt;br /&gt;
&lt;br /&gt;
 - Domain (z. B. webapp.domain.tld),&lt;br /&gt;
 - Path (z. B. /webapp/),&lt;br /&gt;
 - Secure und&lt;br /&gt;
 - HttpOnly.Beschränkte Sitzungsdauer&lt;br /&gt;
&lt;br /&gt;
Das sieht so aus, als ob es empfehlenswert ist, das Domain-Tag zu verwenden, das ist es sicherlich nicht. Was macht hier der Hinweis &amp;quot;Beschraenke Sizuungsdauer&amp;quot;?&lt;br /&gt;
&lt;br /&gt;
== M 4.WA07Fehlerbehandlung durch Web-Anwendungen (Markus) ==&lt;br /&gt;
; Konsistenter / Inkonsistener Zustand einer Webanwendung und der daraus resultierende Datenverlust: Hier fehlen mir die Punkte: DOS, Priv.Escalation, CodeExecution.&lt;br /&gt;
([[User:Mrohr|Matthias]]) Vorschlag &amp;quot;und somit der Schutz der Daten&amp;quot; aendern in &amp;quot;und somit ETWA der Schutz der Daten&amp;quot; korrigieren&lt;br /&gt;
&lt;br /&gt;
; Vermeidung vertraulicher Informationen in Fehlermeldungen --&amp;gt; Fehlermeldungen sollten ebenfalls eine Systeminformationen preisgeben (Softwareversion, Patchlevel, etc.)&lt;br /&gt;
([[User:Mrohr|Matthias]]) Ich glaube hier ist es wichtig zu unterscheiden, wo die Fehlermeldung ausgegeben bzw. wem diese angezeigt wird. Das wird in diesem Modul garnicht so recht unterscheiden. Der Autor meint glaube ich, wie Fehlermeldungen durch die Webanwendung angezeigt werden. In dem Fall hat er recht. Du meinst glaube ich eher, wie Fehlermeldungen protokolliert werden. In dem Fall hast du natuerlich auch recht. Das in dem Text verwendete Wort &amp;quot;ausgeben&amp;quot; ist nicht unbedingt eindeutig und sollte genauer spezifiziert werden.&lt;br /&gt;
&lt;br /&gt;
; Abbruch des Vorgangs nach Auftreten eines Fehlers --&amp;gt; TarPits scheinen dem Autor umbekannt zu sein :)&lt;br /&gt;
([[User:Mrohr|Matthias]]) Stimmt, wobei sich diese ja auch nur auf einen sehr bestimmten Fehlertypen beziehen. Generell laesst sich so etwas unterscheiden, wenn man Fehler-Domains erstellt. Beispiel: Technisch-Unerwartet = Abbruch, Technisch-Erwartet = Fehlermeldug/Tear Pit, etc.&lt;br /&gt;
&lt;br /&gt;
; &amp;quot;Werden Fehler möglichst von der gleichen Komponente behandelt, in der&lt;br /&gt;
der Fehler aufgetreten ist?&amp;quot; --&amp;gt; Das &amp;quot;möglichst&amp;quot; sollten wir streichen.&lt;br /&gt;
([[User:Mrohr|Matthias]]) Hm, der Aussage kann ich nicht ganz zustimmen, bzw. es haengt von dem Begriff &amp;quot;Komponente&amp;quot; ab. Eine Anwendungskomponente kann serwohl bewusst bestimmte Exceptions werfen, die von der einbindenden Komponente behandelt werden muessen.&lt;br /&gt;
&lt;br /&gt;
== M 4.WA08Schutz vor automatisierter Nutzung von Web-Anwendungen (Markus) ==&lt;br /&gt;
; &amp;quot;Brute-Force-&lt;br /&gt;
Angriffe (z. B. Erraten von Zugangsdaten) und Enumeration-Angriffe (z. B.&lt;br /&gt;
automatisiertes Ermitteln von gültigen Login-Namen)&amp;quot; -- die Beispiele sind identisch - besser Beispiele suchen, z.b. URL-Enumeration&lt;br /&gt;
&lt;br /&gt;
([[User:Mrohr|Matthias]]) Das sehe ich anders. Brute-Forcing bezieht auf Passwoerter und Enumeration auf Benutzernamen, etwa durchs hochzaehlen. Auch wenn ich zustimmen muss, dass die nicht ganz gluecklich gewaehlt wurden. Stann &amp;quot;Erraten von Zugangsdaten&amp;quot; wuerde ich besser von &amp;quot;Erraten von Passwoertern&amp;quot; sprechen. Oder wie gesagt gleich auch auf andere Beispiele (etwa Object ID Enumeration) beziehen.&lt;br /&gt;
&lt;br /&gt;
== M 4.WA11Sichere Konfiguration von Web-Anwendungen (Markus) ==&lt;br /&gt;
; &amp;quot;Sicherer Umgang mit TLS/SSL&amp;quot; -- Hier fehlt der Hinweis, dass TLS-1.0 gebrochen ist&lt;br /&gt;
; &amp;quot;Zeichenkodierungskonfiguration&amp;quot; -- Ein Whitelisting abhängig von der Encodierung wäre ein weiterer Vorschlag&lt;br /&gt;
; &amp;quot;Restriktive Dateisystemberechtigungen&amp;quot; -- auch wenn es ein klassiker ist - der AS sollte ebenfalls mit von einem eingeschränkten Nutzer gestartet werden und nicht als root&lt;br /&gt;
; Administration Consolen:zur Ergänzen: Wenn diese nicht benötigit, sollten derartige Applikationen nicht deployed werden, unabhängig von möglichen Zugangsbeschränkungen.&lt;br /&gt;
&lt;br /&gt;
([[User:Mrohr|Matthias]]) Sorry, meiner Meinung nach hat die Bewertung von Kryptoverfahren hier abslut nichts zu suchen.Stattdessen sollte hier auf den entsprechenden [https://www.bsi.bund.de/ContentBSI/Publikationen/TechnischeRichtlinien/tr02102/index_htm.html Empfehlung des BSI] verwiesen werden, auch wenn dieses Dokument derzeit noch etwas outdated zu sein scheint.&lt;br /&gt;
&lt;br /&gt;
== M 4.WA13Kontrolliertes Einbinden von Daten und Inhalten bei Web-Anwendungen (Markus) ==&lt;br /&gt;
; Datei-Upload: Bei einem Upload werden Dateien durchaus in TEMP-Verzeichnissen gesammelt und danach weiterverarbeitet. Diese TEMP-Verzeichnisse sind im Rahmen einer Sicherheitsanalyse zu betrachten -&amp;gt; Möglicher (unbefugter) Zugriff auf weitere Uploads&lt;br /&gt;
; Upload komprimierter Dateien / großer Dateien birgt die Gefahr von DOS Angriffen&lt;br /&gt;
; Upload von Dateien kann bei weiterem Parsing zu Speicherengpässen führen --&amp;gt; DOS-Angriffe auf Thread-Local etc.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== M 4.WA14Restriktive Herausgabe sicherheitsrelevanter Informationen bei Web-Anwendungen (Markus, Matthias) ==&lt;br /&gt;
OK - Keine Anmerkungen von mir.&lt;br /&gt;
&lt;br /&gt;
([[User:Mrohr|Matthias]]) Von mir schon;)&lt;br /&gt;
&lt;br /&gt;
; ([[User:Mrohr|Matthias]]) Vermeidung von Kommentaren in ausgelieferten Webseiten&lt;br /&gt;
&lt;br /&gt;
Das ist leider total falsch, wir brauchen haeufig Komentare, aus Kompatibilitaetsgruenden. So wird etwa der JavaScript-Block haeufig auskommentiert.&lt;br /&gt;
&lt;br /&gt;
Wurde stattessen besser von sicherheitsrelevanten Kommentaren sprechen und als Massnahme generell Entwicklerkommentare ueber Sprachkonstruktre (etwa JSP) durchzufuehren.&lt;br /&gt;
&lt;br /&gt;
; ([[User:Mrohr|Matthias]]) Löschen nicht benötigter Dateien&lt;br /&gt;
&lt;br /&gt;
Hier wurde ich ggf. Dateien von Versionisierungstools (etwa Subversion) erwaehnen, das sehen wir schon recht haeufig.&lt;br /&gt;
&lt;br /&gt;
Statt Dateien einfach nur zu loeschen (was in der Praxis haeufig nicht so einfach ist) bietet es sich zudem an, den Zugriff auf bestimmte Dateien oder Dateitypen generell zu sperren, etwa mittels ACL im Apache.&lt;br /&gt;
&lt;br /&gt;
; ([[User:Mrohr|Matthias]]) Gibt die Web-Anwendung ausschließlich neutrale Fehlermeldungen aus und sind diese im Quelltext identisch? {E: C}&lt;br /&gt;
&lt;br /&gt;
Persoenlich verstehe ich das nicht. Wieseo neutrale Fehlermeldung? Das macht fuer mich nur beim Login Sin. Hierzu existiert in dem Text auch keinerlei Bezug. Ich wuerde das daher besser entfernen und im Rahmen der Fehlerbehandlung diskutieren. Mindestens sollte hier jedoch besser von &amp;quot;sicherheitsunbedentlichen Fehlermeldungen&amp;quot; oder so gesprochen werden.&lt;br /&gt;
&lt;br /&gt;
; ([[User:Mrohr|Matthias]]) Wird der Referrer bei Verlassen der Web-Anwendung (z. B. durch einen Link auf eine externe Seite) gefiltert?&lt;br /&gt;
&lt;br /&gt;
Diesen Punkt sehe ich als sehr Fallabhengig an. Es kann fuer seiten durchaus wuenschenswert sein, dass der Referer weitergegeben wird. Der Referer sollte natuerlich keine sensiblen Informationen enthalten, was ja an anderer Stelle (etwa Session Management) vorgegeben wird bzw. gegeben werden sollte.&lt;br /&gt;
&lt;br /&gt;
== M 4.WA15Schutz vertraulicher Daten bei Web-Anwendungen (Markus, Matthias) ==&lt;br /&gt;
; Sichere kryptographische Algorithmen:&lt;br /&gt;
 Hier fehlt mir eine Liste der aktuelle als sicher geltenden Verfahren.&lt;br /&gt;
([[User:Mrohr|Matthias]]) Am Besten Referenz auf [https://www.bsi.bund.de/ContentBSI/Publikationen/TechnischeRichtlinien/tr02102/index_htm.html https://www.bsi.bund.de/ContentBSI/Publikationen/TechnischeRichtlinien/tr02102/index_htm.html]&lt;br /&gt;
&lt;br /&gt;
; Schlüssel&lt;br /&gt;
 Das die Schlüssel bestimmten Formaten entsprechen müssen ist ok - aber das Schlüsselmanagement wird gar nicht besprochen?&lt;br /&gt;
; Schutz der Daten im Browsercache&lt;br /&gt;
 Skripte und Browserplugins können ebenfalls auf den Browsercache zugreifen - diese werden hier nicht erwähnt.&lt;br /&gt;
&lt;br /&gt;
([[User:Mrohr|Matthias]]) Weiterhin entsprechen die vorgeschlagenen HTTP Headern nicht dem Best Practice:&lt;br /&gt;
&lt;br /&gt;
 Cache-control: no-cache, no-store&lt;br /&gt;
 Pragma: no-cache&lt;br /&gt;
 Expires: -1&lt;br /&gt;
&lt;br /&gt;
([[User:Mrohr|Matthias]]) Die Empfehlung hinsichtlich des manuellen Leerens des Browsercaches sollte wenn dann nur bei Anwendungen mit sehr hohem Schutzbedarf in Erwaegung gezogen werden. Wichtiger waere da schon eher die richtigen Cache-Header zu verwenden. Solche Empfehlungen ihm Rahmen des Grundschutzes aber wirklich nichts zu suchen. &lt;br /&gt;
&lt;br /&gt;
; Maskierung von Passwörtern &lt;br /&gt;
 Dies schützt bei der Eingabe nur vor ShoulderSurfing nicht vor Skripten oder Plugins die diese an andere Server posten.&lt;br /&gt;
&lt;br /&gt;
([[User:Mrohr|Matthias]]) Das ist voellig korrekt. Aber inwieweit ist die Aussage Passwort-Felder zu verwenden fehlerhaft bzw. hier unzureichend beschrieben?&lt;br /&gt;
&lt;br /&gt;
; Sicherung von Zugangsdaten:&lt;br /&gt;
 Zugangsdaten in einer Datei abzulegen - wenn auch ausserhalb des WebRoots ist keine gute Idee.&lt;br /&gt;
([[User:Mrohr|Matthias]]) Es ist sicher nicht die schoenste Variante, es laesst sich aber nunmal in vielen Faellen nicht vermeiden. Deshalb fordert der [http://code.google.com/p/owasp-asvs/wiki/Verification_V2 ASVS] hier etwa auch nicht mehr. Fuer den hier angestreben Grundschutz sollte das meiner Meinung nach ausreichen.&lt;br /&gt;
; Schutz von Quelltexten:&lt;br /&gt;
 Hier würde ich property files mit aufnehmen. der hinweis auf web-inf/classes fehlt - warum?&lt;br /&gt;
 Bei include-befehlen sind die pfadangaben zu überdenken.&lt;br /&gt;
([[User:Mrohr|Matthias]]) Wuerde property Dateien allgemein den Konfigurationsdateien zuordnen. Der Begriff &amp;quot;Einzubindende Dateien&amp;quot; ist mir allrdings Neu&lt;br /&gt;
&lt;br /&gt;
([[User:Mrohr|Matthias]]) Weiterhin, fehlt ein genereller Bezug auf HTML 5 WebStorage, LSOs etc. Zumindest in abstrakter Form, so dass diese dadurch indirekt addresiert werden. Egal, in dem relevanten Punkt will der Autor meiner Meinung nach nur einige Beispiele nennen, das sollte keinen Anspruch auf Vollsteandigkeit haben muessen.&lt;br /&gt;
&lt;br /&gt;
; ([[User:Mrohr|Matthias]]) - Durch dieses Attribut wird die Gültigkeit des Cookies auf die Domäne der Web-Anwendung beschränkt.&lt;br /&gt;
Nein, das ist leider total falsch. Das Domain-Attribut stellt eine Aufweichung der Cookie-Gueltigkeit dar und nicht anders herum. Gewoehlich sind Cookies immer Host-Cockies und das sollte auch so bleiben. Die Empfehlung sollte entfernt werden.&lt;br /&gt;
&lt;br /&gt;
== M 4.WA16Zugriffskontrolle bei Web-Anwendungen (Markus) ==&lt;br /&gt;
; Zugriffskontrolle via Frameworks:&lt;br /&gt;
 Dieser Punkt (Frameworks) wird nur in einem Satz erwähnt. Es werden keine Bespiele gegeben - Das ist zu wenig.&lt;br /&gt;
 Es müssen alle Zugriffe geschützt werden. Eine Protokollierung aller Zugriffe mit den nötigen Informationen ist ebenfalls empfehlenswert.&lt;br /&gt;
; Datei Upload:&lt;br /&gt;
 Die Gefahr eines DOS wird hier nicht erwähnt.&lt;br /&gt;
&lt;br /&gt;
== M 4.WA19Verhinderung von Cross-Site Request Forgery (CSRF, XSRF) (Markus, Matthias) ==&lt;br /&gt;
; Verantwortliche: &lt;br /&gt;
 Entwickler und Admins!&lt;br /&gt;
([[User:Mrohr|Matthias]]) Korrekt, wobei auch in der Reihenfolge&lt;br /&gt;
&lt;br /&gt;
; Anti-CSRF-Token in hidden fields:&lt;br /&gt;
 Das ist keine gute Idee. Ich würde das streichen!&lt;br /&gt;
&lt;br /&gt;
([[User:Mrohr|Matthias]]) Watt? Anti-CSRF-Tokens in Hidden Fields sind die Standard-Massnahme. Wie denn sonst? Bitte nicht streichen!!! &lt;br /&gt;
&lt;br /&gt;
([[User:Mrohr|Matthias]]) Die Technik bei der die Session ID als Anti-CSRF-Token verwendet wird, wird als Double-Cookie Submit bezeichnet, das sollte hier referenziert werden.&lt;br /&gt;
&lt;br /&gt;
; Umgehung von Schutzmechanismen:&lt;br /&gt;
 Man in the middle hat keinen direkten Bezug zu CSRF! Das würde ich streichen.&lt;br /&gt;
([[User:Mrohr|Matthias]]) Der Hinweis ist korrekt. Wovon der Autor hier spricht ist Session Replay nicht CSRF.&lt;br /&gt;
&lt;br /&gt;
; Frameworks:&lt;br /&gt;
 Gute Idee - aber es gibt auch Features in den ApplicationServern die CSRF unterbinden - warum wird das nicht besprochen?&lt;br /&gt;
&lt;br /&gt;
([[User:Mrohr|Matthias]]) Sehe ich persoenlich nicht so, da CSRF primaer ein Applikations-Fehler ist, und auch in der Applikation und nicht im Environment (AppServer) geloest werden sollte. Auch wenn das manchmal ggf. die einzig machbare Loesung darstellt.&lt;br /&gt;
&lt;br /&gt;
([[User:Mrohr|Matthias]]) Was generell fehlt, ist ein Hinweis darauf, dass schreibende Requests generell per HTTP Post abgewickelt werden sollten, da HTTP Get keine &amp;quot;Safe Method&amp;quot;  (siehe HTTP 1.1, RFC 2616) ist.&lt;br /&gt;
&lt;br /&gt;
== M 4.WA20Sicherer Entwurf der Logik von Web-Anwendungen (Markus, Matthias) ==&lt;br /&gt;
; Rollbacks:&lt;br /&gt;
 Tritt ein Fehler auf muss die Applikation einen konsistenten Datenstand zurück lassen. Das wird hier nicht erwähnt.&lt;br /&gt;
; RaceConditions:&lt;br /&gt;
 Fehler in der Geschäftslogik können auch durch zwei gleichzeitige Sessions auf einer Webapplikation auftreten - das wird hier nicht besprochen.&lt;br /&gt;
&lt;br /&gt;
([[User:Mrohr|Matthias]]) Ehrlich gesagt kann ich nicht ganz nachvollziehen, was der Sichere Entwurf der Logik von Web-Anwendungen mit dem Verzicht auf aktive Inhalte zu tun hat. Unabhaengig davon sollte man solche unsinnigen Aussagen im Jahre 2012 nicht mehr treffen, damit macht man sicht nur laecherlich.&lt;br /&gt;
&lt;br /&gt;
Nichts desto trotz, was hier als &amp;quot;echte&amp;quot; Massnahmen erwaehnt werden sollte sind:&lt;br /&gt;
* Verhinderung von Race Conditions, aber nicht nur durch Concurrent Sessions sondern auch durch Singletons (TOCTOU)&lt;br /&gt;
* Enforcements von Workflows, etwa durch die Verwendung von State Machines oder Request Tokens (auch bekannt als Site Usage Enforcement)&lt;br /&gt;
* Fail Securely (bzw. Verweis)&lt;br /&gt;
* Serverseitige Abbildung der Anwendungslogik, zumindest wenn diese sicherheitsrelevant sit&lt;br /&gt;
&lt;br /&gt;
== M 4.WA22Verhinderung der Blockade von Ressourcen (DoS) bei Web-Anwendungen (Markus, Matthias) ==&lt;br /&gt;
; Datenspeicher:&lt;br /&gt;
 Neben dem Datenspeicher sollte auch der RAM-Verbrauch pro Thread der Applikation limitiert werden.&lt;br /&gt;
([[User:Mrohr|Matthias]]) Stimmt, ich wuerde hier sogar allgemein von Ressourcenverbrauch am Beispiel RAM und Datenspeicher, sprechen&lt;br /&gt;
&lt;br /&gt;
; Voraggregation von Daten / Caching&lt;br /&gt;
 Dieser Punkt fehlt: Stark ressourcen belastende Anfragen können auch in Lastarmen Zeiten vorberechnet werden.&lt;br /&gt;
([[User:Mrohr|Matthias]]) Stimmt, koennte noch als Anmerkung bei &amp;quot;Cachen von Anfragen&amp;quot; hinzugefuegt werden&lt;br /&gt;
&lt;br /&gt;
; ([[User:Mrohr|Matthias]]) Prueffrage: &amp;quot;Wird ein möglicher Überlauf von Protokolldaten... verhindert&amp;quot;&lt;br /&gt;
&lt;br /&gt;
Ist eine etwas eingeschrankte Sicht. Wurde hier eher von Ueberlauf von Speicherplaz zu Beispiel im Rahmen der Protokollierung sprechen&lt;br /&gt;
&lt;br /&gt;
; ([[User:Mrohr|Matthias]]) Durchfuehrung von Lasttests zur Identifikation ressourcenintensiver Operationen&lt;br /&gt;
&lt;br /&gt;
Der Hinweis waere ggf. erwahnenswert&lt;br /&gt;
&lt;br /&gt;
; ([[User:Mrohr|Matthias]]) Hinweis auf nicht-angemeldeten Bereich&lt;br /&gt;
&lt;br /&gt;
Das Risiko durch rechenintensive Operationen durch einen DoS betroffen zu sein ist natuerlich fuer gewoehlich um so groesser, wenn diese im anonymen Bereich angeboten wird. Der Hinweis ware ggf. ebenfalls hilfreich.&lt;br /&gt;
&lt;br /&gt;
== M 4.WA25Verhinderung von Clickjacking (Markus, Matthias) ==&lt;br /&gt;
Ok - das passt soweit.&lt;br /&gt;
&lt;br /&gt;
([[User:Mrohr|Matthias]]) Stimmt, auch wenn ich &amp;quot;Angreifer&amp;quot; in dem Beispiel eher als &amp;quot;Webseitenbetreiber&amp;quot; beschreiebn wuerde, da er nicht wirklich aktiv einen Angriff durchfuehrt, oder? Bitte nochmal ueber meinen Hinweis aus G 5.WA18 nachdenken: Ist Clickjacking-Schutz tatsaechlich Grundschutz? Ich bin mir da selber nicht so wirklich sicher.&lt;br /&gt;
&lt;br /&gt;
== M 5.WA21Sichere Anbindung von Hintergrundsystemen an Web-Anwendungen (Markus, Matthias) ==&lt;br /&gt;
; Verantwortliche:&lt;br /&gt;
 Architekten fehlen. Entwickler müssen die Views umsetzen und die Datasource entsprechend einbinden - die fehlen hier ebenfalls.&lt;br /&gt;
; DirectorySystem Beispiel:&lt;br /&gt;
 Das DirectorySystem wird in dem angegeben Beispiel zum Single Point of Failure - das wird verschwiegen.&lt;br /&gt;
; Firewalls:&lt;br /&gt;
 Das sind fachlich-blinde Systeme. Was ist mit WAFs / IDS / IPS etc.?&lt;br /&gt;
([[User:Mrohr|Matthias]]) Stimmt, das hat in diesem Baustein nichts zu suchen&lt;br /&gt;
&lt;br /&gt;
; ([[User:Mrohr|Matthias]]) Typische Hintergrundsysteme&lt;br /&gt;
Hier fehlt irgendwie &amp;quot;Middleware&amp;quot;, die ist denke ich nicht immer Legacy&lt;br /&gt;
&lt;br /&gt;
== M 5.WA23Systemarchitektur einer Web-Anwendung (Markus, Matthias) ==&lt;br /&gt;
; Verantwortliche:&lt;br /&gt;
Auch hier fehlend wieder die Architekten. &lt;br /&gt;
([[User:Mrohr|Matthias]]) Stimmt, habe das Dokument mal komplett durchgesucht.Tatsaechlich wird der &amp;quot;Architekt&amp;quot; niemals genannt, das scheint also eher ein grundseatzliches Problem zu sein. Der Administrator hat hier aber nun wirklich nichts zu suchen.&lt;br /&gt;
&lt;br /&gt;
; Virtualisierung:&lt;br /&gt;
Virtualisierung bietet weitere Angriffsvektoren (z.B.: Hypervisor) die eine &amp;quot;Blech&amp;quot;Farm nicht bietet.&lt;br /&gt;
&lt;br /&gt;
([[User:Mrohr|Matthias]]) Genau, wobei auch der ganze Bereich geshareter Plattformen (z.B. By SharePoint) hier fehlt.&lt;/div&gt;</summary>
		<author><name>Mrohr</name></author>	</entry>

	<entry>
		<id>https://wiki.owasp.org/index.php?title=Talk:OWASP_Review_BSI_IT-Grundschutz_Baustein_Webanwendungen&amp;diff=130209</id>
		<title>Talk:OWASP Review BSI IT-Grundschutz Baustein Webanwendungen</title>
		<link rel="alternate" type="text/html" href="https://wiki.owasp.org/index.php?title=Talk:OWASP_Review_BSI_IT-Grundschutz_Baustein_Webanwendungen&amp;diff=130209"/>
				<updated>2012-05-21T15:55:17Z</updated>
		
		<summary type="html">&lt;p&gt;Mrohr: /* M 5.WA23Systemarchitektur einer Web-Anwendung (Markus) */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Since it's about a review of a document in German, all the discussions will be done in German :-)&lt;br /&gt;
&lt;br /&gt;
Diskussionen rund um den Review des &amp;quot;IT-Grundschutzbausteins Webanwendungen&amp;quot; finden hier statt, sinnvollerweise auf Deutsch :-)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Vorschlag für Kriterien, die an unser Review angelegt werden sollten (.kai) ==&lt;br /&gt;
&lt;br /&gt;
* Der Baustein soll alle wichtigen Themen der Entwicklung sicherer&lt;br /&gt;
Webanwendungen enthalten.&lt;br /&gt;
&lt;br /&gt;
* Der Baustein soll die verschiedenen Phasen der Software-Entwicklung&lt;br /&gt;
vollständig abdecken.&lt;br /&gt;
&lt;br /&gt;
* Der Baustein soll zwischen verbindlichen, prüfbaren Vorgaben und&lt;br /&gt;
unverbindlichen Empfehlungen sprachlich sauber unterscheiden (hier&lt;br /&gt;
spielt mein Auditorenblick eine Rolle). Vor allem soll der Baustein&lt;br /&gt;
verbindliche Anforderungen auch tatsächlich stellen. Alle&lt;br /&gt;
verbindlichen Anforderungen müssen unabhängig von der jeweiligen&lt;br /&gt;
Umgebung auch umsetzbar sein, d.h. sie müssen entsprechend generisch&lt;br /&gt;
sein.&lt;br /&gt;
&lt;br /&gt;
* Die Maßnahmen sollen nur in (begründbaren) Ausnahmen zu Empfehlungen&lt;br /&gt;
von OWASP im Widerspruch stehen.&lt;br /&gt;
&lt;br /&gt;
* Die Maßnahmen sollen verständlich und anwendbar sein.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== &amp;quot;Hilfsmittel&amp;quot; (Markus, Matthias) ==&lt;br /&gt;
Ich würde das Script zur Vermeidung von Clickjacking wrappen und nicht als losen Skript-block in den Text einbinden - einfach schlechter Programmierstiel diese losen Blöcke.&lt;br /&gt;
Der Zugriff auf das Body-Element mit byTagName-Array[0] ist auch nicht wirklich gut. Ich halte Zugriffe über das DOM (klassisch), bei ID bzw. XPATH für besser. &lt;br /&gt;
&lt;br /&gt;
([[User:Mrohr|Matthias]]) Verwunderlich finde ich aber, dass der Autor zum Einen zwar von der Verwendung von JavaScript vollstaendig abraet, zum Anderen aber eben solches als Best-Practice-Ansatz fuer Click Jacking empfiehlt.&lt;br /&gt;
&lt;br /&gt;
SQL-Injection Characters:&lt;br /&gt;
die Pipe fehlt hier zur Textkonatenierung&lt;br /&gt;
+ / - haben auch eine Bedeutung bei JOINs.&lt;br /&gt;
&lt;br /&gt;
([[User:Mrohr|Matthias]]) Special Character bzw. DB Escaping ist schon recht DB-spezifisch (siehe [https://www.owasp.org/index.php/SQL_Injection_Prevention_Cheat_Sheet SQL Prevention Cheat sheet]). Wozu werden die hier ueberhaupt aufgefuehrt? Um Eingebafilterung nach pot. SQL Injections durchzufuheren, oder um eine eigene Escaping-Funktion zu schreiben? Raus damit!&lt;br /&gt;
&lt;br /&gt;
== &amp;quot;Goldene Regeln&amp;quot; (Matthias) ==&lt;br /&gt;
&lt;br /&gt;
Hier meine Anmerkungen zu diesem Dokument:&lt;br /&gt;
&lt;br /&gt;
; 1. Für mich fehlende Punkte&lt;br /&gt;
* Korrektur der Ursache (Root Cause) von Schwachstellen statt  Verhinderung deren Ausnutzung&lt;br /&gt;
* Bezug auf Minimierung der Angriffsfläche und Least-Privilege-Prinzip&lt;br /&gt;
* Bezug auf Defense-in-Depth-Prinzip&lt;br /&gt;
* Verwendung von getesteten Security APIs (z.B. OWASP ESAPI) statt selbstentwickelter Funktionen&lt;br /&gt;
* Bezug auf Externalisierung von Sicherheitsfunktionen, sowie deklerative vor programmatischer Sicherheit.&lt;br /&gt;
&lt;br /&gt;
; 2. Begriff &amp;quot;Web-Anwendung&amp;quot;&lt;br /&gt;
Würde ich generell durch &amp;quot;Webanwendung&amp;quot; ersetzen.&lt;br /&gt;
&lt;br /&gt;
; 3. Einleitung (&amp;quot;Web-Anwendungen stellen Funktionalität zur Verfügung, ...&amp;quot;)&lt;br /&gt;
&lt;br /&gt;
Wozu dient dieser Satz?&lt;br /&gt;
&lt;br /&gt;
; 4. &amp;quot;Die Architektur der Web-Anwendung ist im Sicherheitskonzept zu  dokumentieren.....&amp;quot; &lt;br /&gt;
&lt;br /&gt;
Ich fände es sinnvoller, wenn hier von der &amp;quot;Sicherheitsarchitektur&amp;quot; gesprochen wird, welche etwa neben den sicherheitsrelevanten Datenflüssen, sensible Komponenten, Entry Points, Akteure architekturelle Security Controls wie Authentisierung, Kryptographie und natürlich die Trust Boundaries beinhaltet.&lt;br /&gt;
&lt;br /&gt;
; 5. &amp;quot;Bei Web-Anwendungen handelt es sich häufig um spezielle Eigenentwicklungen....&amp;quot;&lt;br /&gt;
&lt;br /&gt;
Erstens würde ich hier den geläufigen Begriff &amp;quot;Individualsoftware&amp;quot; verwenden. Zweitens würde ich statt bestimmte SDLC-Phasen vorzugeben (die Begriffe &amp;quot;Softwareverteilung&amp;quot; und &amp;quot;Integration&amp;quot; sind mir bei Webanwendungen bisher noch nicht so häufig untergekommen), besser von der Notwendigkeit sprechen, Sicherheit in allen Entwicklungsphasen zu berücksichtigen, also eines SDLs.&lt;br /&gt;
&lt;br /&gt;
; 6. &amp;quot;Alle Ein- und Ausgaben der Web-Anwendung müssen in eine normalisierte Form überführt werden....&amp;quot;&lt;br /&gt;
&lt;br /&gt;
Normalisierung ist für mich nicht gleich Kanonsierung, auch wenn beide Begriffe häufig als synonym verwendet werden.  Der Unterschied wird in der [http://owasp-esapi-java.googlecode.com/svn/trunk_doc/2.0-rc4/org/owasp/esapi/Encoder.html API-Beschreibung der ESAPI] erklärt. Die Normalisierungs-Funktion ist allerdings schon vor einiger Zeit aus der ESAPI [https://lists.owasp.org/pipermail/esapi-dev/2010-January/000266.html rausgeflogen]. Die generelle Kanonisierung von Ausgaben halte ich dazu für nicht sinnvoll.&lt;br /&gt;
&lt;br /&gt;
Zweitens, finde ich den weiteren Text zwar grundsätzlich formal korrekt, aber so allgemein, dass dieser glaube ich niemandem so richtig etwas bringt.  &lt;br /&gt;
&lt;br /&gt;
Besser fände ich hier Ein- von Ausgabevalidierung grundsätzlich voneinander abzugrenzen. Etwa was ich per Eingabevalidierung (Längenprüfung, Casting, etc. per Whitelisting) und was mit Ausgebavalidierung (Enkodierung, Escaping, Parametrisierung) machen muss und kann.&lt;br /&gt;
&lt;br /&gt;
Eingabedaten können technisch zudem auch Werte eingelesener Property-Dateien sein. Muss ich die auch validieren? Ist das dann noch Grundschutz? &lt;br /&gt;
&lt;br /&gt;
; 7. &amp;quot;Für den Zugriff auf sensitive Funktionen oder Informationen muss die Web-Anwendung eine wirksame Authentisierung und Sitzungsverwaltung unterstützen. Die Eigenschaften der Sitzungs-ID müssen so gewählt werden, dass die Sitzung ausreichend geschützt ist. ....&amp;quot;&lt;br /&gt;
&lt;br /&gt;
Besser fände ich &amp;quot;eine Authentisierung, die über eine dem Schutzbedarf der Anwendung angemessene Stärke verfügt.&amp;quot; &lt;br /&gt;
&lt;br /&gt;
Eigentlich geht es doch mehr um den Schutz der Sitzungs-ID, da diese gewöhnlich im Verlauf einer Sitzung den Client authentisiert. Oder den Schutz des Zugriffs auf eine Sitzung. &lt;br /&gt;
&lt;br /&gt;
Zudem fehlt hier meiner Meinung nach der Hinweis auf die bevorzugte Verwendung getesteter Standardkomponenten.&lt;br /&gt;
&lt;br /&gt;
; 8. &amp;quot;Die Web-Anwendung sollte die zu übermittelnden Daten schützen.&amp;quot;&lt;br /&gt;
&lt;br /&gt;
Dies würde ich nur auf sensible Daten beziehen. Zusätzlich zu HTTPS würde ich hier schreiben, dass sensible Daten generell nicht in der URL übertragen werden dürfen.&lt;br /&gt;
&lt;br /&gt;
; 9. &amp;quot;Die Preisgabe interner Informationen (z.B. Kommentare, Fehlermeldungen)&amp;quot;&lt;br /&gt;
&lt;br /&gt;
Hier würde ich eher schreiben &amp;quot;(IN Kommentaren, Fehlermeldungen, HTTP Headern, etc.)&amp;quot;&lt;br /&gt;
&lt;br /&gt;
; 10. &amp;quot;Fehler müssen so behandelt werden, ... müssen Fehler bei der Autorisierung zu einer Verweigerung beim Zugriff auf die angeforderte Ressource führen.&amp;quot;&lt;br /&gt;
&lt;br /&gt;
Sprachlich: &amp;quot;Die Webanwendung muss sich stets in einem sicheren Zustand befinden. Beispielsweise müssen Fehler bei der Autorisierung zu einer Verweigerung des Zugriffs führen (Default-Deny-Strategie).&amp;quot;&lt;br /&gt;
&lt;br /&gt;
; 11. &amp;quot;Die Logging-Funktionen der Web-Anwendung müssen aufgetretene Ereignisse derart protokollieren, dass sicherheitskritische Vorfälle nachvollzogen werden können.&amp;quot;&lt;br /&gt;
&lt;br /&gt;
Hier würde hier eher von &amp;quot;allen sicherheitsrelevanten Ereignissen&amp;quot; sprechen.&lt;br /&gt;
&lt;br /&gt;
Weiterhin sollten insbesondere beim Logging der Datenschutz berücksichtigt werden, personenbezogene Daten also nach Möglichkeit nicht oder nur anonymisiert in technischen Logdateien protokolliert werden.&lt;br /&gt;
&lt;br /&gt;
; 12. &amp;quot;Alle Sicherheitsmechanismen (z.B. Authentisierung und Zugriffskontrolle) sind serverseitig zu implementieren und können nicht durch clientseitige Mechanismen ersetzt werden.&amp;quot;&lt;br /&gt;
&lt;br /&gt;
Die Aussage ist so nicht korrekt. Darüber hatten wir bereits bei der ASVS mehrfach diskutiert. &lt;br /&gt;
&lt;br /&gt;
Überall dort wo der Client angegriffen wird, also etwa bei RIAs (Stichwort DOM-Based XSS) müssen wir Security Controls clientseitig implementieren. Es gibt mittlerweile deshalb auch eine Portierung der ESAPI auf Javascript. Überall dort wo der Server oder Hintegrundsysteme angegriffen werden, ist die Aussage aber natürlich zutreffend.&lt;br /&gt;
&lt;br /&gt;
== &amp;quot;Gefährdungen&amp;quot; (Markus, Dennis, .... &amp;lt;Dein Name&amp;gt;) ==&lt;br /&gt;
; Generell:&lt;br /&gt;
Reference auf RFCs fehlen.&lt;br /&gt;
&lt;br /&gt;
==B.5.XX Web-Anwendungen ==&lt;br /&gt;
; 1. Erster Absatz - Letzter Satz: --Wieso werden hier nur HTML/XML Doks und Oberflächen angesprochen? Was ist der Unterschied zwischen einem HTML-Dok und einer Oberfläche? Was ist mit  Flash, etc.? Was ist mit WebSockets?&lt;br /&gt;
; 2. Stichpunkt &amp;quot;Protokollierung&amp;quot;: Sicherheits relevant ist ein sehr dehnbarer Begriff - Eine bessere Formulierung könnte sein: Zur Rekonstruktion von Nutzerhandlungen nötige Ereignisse (positve &amp;amp; negative) müssen protokolliert werden . . . &lt;br /&gt;
; 3. Absatz: &amp;quot;Abgrenzung des Bausteins&amp;quot;: &amp;quot;Die spez. Sicherheitsanforderungen an Web-Services werden in diesem Baustein nicht betrachtet&amp;quot; --&amp;gt; Wie so nicht? Was ist das Backend von einer Rest / AJAX-basierenden Webanwendung denn anderes als ein Web-Service? Diesen Satz würde ich entfernen.&lt;br /&gt;
; 4.Vorsätzliche Handlungen -&amp;gt; Web-Spoofing (G.5.87) -- Missverständliche Bezeichnung / Nomenklatur&lt;br /&gt;
; 5. Seite 4 : erste Zeile &amp;quot;Umsetzung&amp;quot;: &amp;quot;dafür umzusetztende Komponenten müssen die Webanwendung schützen...&amp;quot; - Hier fehlt mir der Hinweis, dass dieser Schutz verifiziert werden muss.&lt;br /&gt;
; 6 Seite 5: &amp;quot;Umsetzung&amp;quot; - Wir haben CSRF, D(D)os und SQL-Injection aber wo ist XSS?&lt;br /&gt;
; 7 Seite 7: &amp;quot;Die Sicherheitsfunktion wird ausschließlich clientseitig...&amp;quot; --&amp;gt; Warum muss der Angreifer überhaupt einen Browser umkonfigurieren? Was ist mit Proxies, Scripts, etc.? Ich würde das reduzieren darauf, dass rein Webbrowser-basierende Schutzfunktionen einfach umgangen werden können.&lt;br /&gt;
; 8 Seite 8: Die angesprochenen Punkte hinterlassen den Eindruck nicht vollständig zu sein: Mir fehlen Punkte wie &amp;quot;Outsourcing&amp;quot;, &amp;quot;KnowHow der Entwickler&amp;quot;, Tooling, Framework-Auswahl, etc.&lt;br /&gt;
; 9 Seite 9: Eigentlich möchte der Autor hier über Datenschutz sprechen. Abgesehen von den letzten drei Zeilen geht es aber nur um &amp;quot;User tracking&amp;quot; - Wo ist der Rest der Datenschutzproblematik? Warum der Fokuss auf Tracking? Mir ist das zu einseitig.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
tbd.&lt;br /&gt;
&lt;br /&gt;
; Wortwahl:&lt;br /&gt;
Ich stosse innerhalb der Texte immer wieder an die Worten '''Hintergrundsystem''' und '''Sicherheitskontext'''.&lt;br /&gt;
'''Hintergrundsystem:''' besseres Synonym?&lt;br /&gt;
'''Sicherheitskontext:''' nur weil es in den Texten um Sicherheit geht muss nicht an jeder Stelle immer wieder das Wort _Sicherheits_kontext eingebaut werden.&lt;br /&gt;
Bsp: &amp;quot;Erlangt ein Angreifer Kenntnis von einer solchen gültigen, aber nicht mehr genutzten SessionID, so kann er die Web-Anwendung im Sicherheitskontext des nicht abgemeldeten Benutzers weiter verwenden.&amp;quot; (G 5,WA12 Unzureichendes Session-Management von Web-Anwendungen)&lt;br /&gt;
Verbesserungsansansatz: ... so kann er die Web-Anwendung anstelle des eigentlichen Besitzers weiterhin verwenden.&lt;br /&gt;
&lt;br /&gt;
== &amp;quot;G 2.WA01 Mangelhafte Auswahl oder Konzeption von Web-Anwendungen&amp;quot; (Matthias) ==&lt;br /&gt;
&lt;br /&gt;
Nachdem ich mir diese Gefährdung durchgelesen hatte, fehlten mir ehrlich gesagt etwas die Worte. Nicht nur, dass hier fast jeder zweite Satz entweder falsch ist bzw. massive Fehler enthält oder ich diesen schlicht nicht verstehe, ist der ganze Text sprachlich wirklich enorm verbesserungsfähig. &lt;br /&gt;
&lt;br /&gt;
Na gut, ich konzentriere mich mal auf die fachlichen Punkte:&lt;br /&gt;
&lt;br /&gt;
; 1. Security Controls&lt;br /&gt;
Werden mal mit &amp;quot;Schutzmechanismen&amp;quot;, mal mit &amp;quot;Sicherheitskomponenten&amp;quot; und dann wieder als &amp;quot;Sicherheitsfunktionen&amp;quot; bezeichnet. Hier macht eine einheitliche Benennung sicherlich Sinn und ist weniger verwirrend.&lt;br /&gt;
&lt;br /&gt;
; 2. &amp;quot;Eine Web-Anwendung ist in der Regel ein verteiltes, komplexes System bestehend aus unterschiedlichen Komponenten (z. B. Webserver, Applikationsserver, Hintergrundsysteme)&amp;quot;&lt;br /&gt;
&lt;br /&gt;
Eine Webanwendung besteht sicher nicht aus einem Webserver- oder anderer infrastruktureller Komponenten, sondern ist Software welches diese nutzt.&lt;br /&gt;
&lt;br /&gt;
; 3. &amp;quot;Bei individuell entwickelten Web-Anwendungen sind im Allgemeinen die Frameworks, Komponenten und Schnittstellen im Rahmen der Konzeption auszuwählen und deren Einbindung und Absicherung zu betrachten....Im Gegensatz dazu ist bei der Konzeption von Web-Anwendungen auf Basis von Standardsoftware insbesondere auf die Auswahl der Software und die Konfiguration der Teilkomponenten zu achten&amp;quot;&lt;br /&gt;
&lt;br /&gt;
Wir unterscheiden im Rahmen von Webanwendungen eigentlich Free or Opensource Software (FOSS bzw. FLOSS), Standardsoftware und Individualsoftware voneinander. Wir unterscheiden nicht Frameworks von Standardsoftware. Frameworks können Teil von Standardsoftware sein, wie etwa bei SharePoint, SAP, etc, oder aber FOSS, wie etwa Spring. Die ganzen Absätze machen für mich daher keinen Sinn.&lt;br /&gt;
&lt;br /&gt;
; 4. &amp;quot;Eine Sicherheitsfunktion (z. B. Authentisierung, Autorisierung) wird nicht an einer Stelle umgesetzt und verwendet, sondern ist mehrfach in der Web- Anwendung realisiert. Wird diese Sicherheitsfunktion an den verschiedenen Stellen unterschiedlich umgesetzt, führt dies zu einem uneinheitlichen Sicherheitsniveau.&amp;quot;&lt;br /&gt;
&lt;br /&gt;
Natürlich ist die mehrfache Verwendung bestimmter Security Controls, beispielsweise von Zugriffskontrollen (Complete-Mediation) oder Validierung (Robustheit) erstrebenswert. Was der Autor hier wahrscheinlich meinte, war die Notwendigkeit diese zu Kapseln bzw. zu Externalisieren. Das bezieht sich im übrigen nicht nur auf die Controls selbst, sondern auch auf ihre Parametrisierung (etwa. über Konfigdateien / XACML).&lt;br /&gt;
&lt;br /&gt;
Wichtiger wäre in diesem Zusammenhang zudem die fehlende Berücksichtigung bestimmter Security Controls.&lt;br /&gt;
&lt;br /&gt;
; 5. &amp;quot;Auswahl von Web-Anwendungen auf Basis von Standardsoftware&amp;quot;&lt;br /&gt;
Was will der Satz sagen? Ich wähle Standardsoftware aus, aber doch keine Webanwendungen. Oder heißt das, ich kaufe eine existierende Anwendung ein (Webanwendung!=Indivudualsoftware)? &lt;br /&gt;
&lt;br /&gt;
; 6. &amp;quot;Das ausgewählte Produkt verfügt nicht über die ausreichende Sicherheitsfunktionalität, ... Daher müssen die notwendigen Schutzmechanismen nachträglich hinzugefügt werden, wodurch zusätzliche Aufwände entstehen.&amp;quot;&lt;br /&gt;
Das ist etwas sehr positiv formuliert. Tatsächlich können fehlende Security Controls in zugekaufter Software (insb. Standardsoftware) in der Realität häufig gar nicht hinzugefügt werden oder nur perimetrisch (z.B. per WAF oder Access Gateway).&lt;br /&gt;
&lt;br /&gt;
; 7. &amp;quot;Die Hintergrundsysteme werden unzureichend abgesichert und dadurch ist die Datenbank der Web-Anwendung aus dem Internet erreichbar.&amp;quot;&lt;br /&gt;
Gehören fehlende Netzwerksegmentierung bzw. Firewallregeln wirklich in diesen Kontext? Das ist doch eigentlich Grundschutz der Infrastruktur, oder?&lt;br /&gt;
&lt;br /&gt;
; 8. &amp;quot;Aufgrund schwacher Parameter in der Konfiguration des Frameworks zum Session-Management werden unsichere SessionIDs erzeugt.&amp;quot;&lt;br /&gt;
Was sind &amp;quot;schwache&amp;quot; Parameter?&lt;br /&gt;
&lt;br /&gt;
Welches Framework erlaubt unsichere SessionIDs durch eine &amp;quot;schwache&amp;quot; Konfiguration zu erzeugen?&lt;br /&gt;
&lt;br /&gt;
; 9. &amp;quot;Wird die Konfiguration des Web-Browsers durch einen Angreifer manipuliert, können die clientseitig umgesetzten&amp;quot;&lt;br /&gt;
&lt;br /&gt;
Manipuliert ein Angreifer die Konfguration seines Webbroswers, wenn er einen MITM-Proxy konfiguriert?&lt;br /&gt;
&lt;br /&gt;
Wie bereits bei den &amp;quot;Goldenen Regeln&amp;quot; angemerkt, gilt auch hier, das manche Security Controls auch clientseitig umgesetzt werden dürfen (etwa. zur Verhinderung von Dom-Based XSS).&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== &amp;quot;G 5.WA10 Fehler in der Web-Anwendungslogik&amp;quot; (Dennis) ==&lt;br /&gt;
; 1. &amp;quot;Damit kann aufgrund der Prüfreihenfolge ein hoher Ressourcenverbrauch provoziert werden, der für Denial-of-Service-Angriffe ausgenutzt werden kann.&amp;quot;&lt;br /&gt;
Meiner Meinung nach passt in diesem Kontext die Attacke DoS nicht ganz. Falls die nachfolgende Funktionalität wegen der langen Ausführungszeit der Filterkomponente übersprungen wird bzw. ein Fehler auftritt würde dies meiner Ansicht in die Thematik Anwendungslogik passen. Eine DoS-Attacke kann hingegen anhand jeder Funktion durchgeführt werden.&lt;br /&gt;
&lt;br /&gt;
([[User:Mrohr|Matthias]]) Jo stimmt, aber ich stimme mit der Aussage eigentlich schon ueberein, auch wenn diese zugegeben etwas ungluecklich formuliert ist. Es geht hier ja darum, rechenintensive Pruefungen/Filterung moeglichst zu vermeiden bzw. zu reduzieren. Aus diesem Grund machen wir ja auch bei der AV-Pruefung zunaechst Blacklist-Checks und erst am Ende rechenintensive statistische oder verhaltensbezogene Pruefungen.&lt;br /&gt;
&lt;br /&gt;
== &amp;quot;G 5.WA11 Umgehung clientseitig umgesetzter Sicherheitsfunktionen von Web-Anwendungen&amp;quot; (Dennis) ==&lt;br /&gt;
; 1. &amp;quot;Ein Angreifer kann diese ausnutzen, um beispielsweise unbefugt Befehle an Hintergrundsysteme der Web-Anwendung zu übermittlen (z.B. in Form von Datenbankanfragen bei einer SQL-Injection).&amp;quot;&lt;br /&gt;
Umformulierung des Inhalts der Klammer. Hatte beim ersten Lesen für mich den Anschein, als ob ein Formular genutzt werden könnte welches den Nutzer aufforder eine SQLI einzugeben. Ich denke &amp;quot;Datenbankanfrage zwecks Ausführung einer SQL-Injection&amp;quot; würde besser passen.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== G 2.WA02 Mängel bei der Entwicklung und der Erweiterung von Web-Anwendungen (Matthias) ==&lt;br /&gt;
&lt;br /&gt;
Allgemein ist de obere Teil ok, die aufgezählten &amp;quot;Auswirkungen von fehlenden Vorgaben&amp;quot; verstehe ich jedoch nicht. Wo ist etwa der Bezug von Barrierefreiheit auf die Anwendungssicherheit?&lt;br /&gt;
&lt;br /&gt;
Mein Vorschlag, um diese Punkte etwa sinnvoll umzubauen:&lt;br /&gt;
* &amp;quot;Fehlendes Vorgehensmodell&amp;quot;: Bezug auf fehlende Berücksichtigung von Sicherheit im SDLC. Statt eines SDLCs selbst sollte hier besser auf die Notwendigkeit eines Secure Development Lifecycle (SDL) hingewiesen werden&lt;br /&gt;
* &amp;quot;Fehlende Programmierrichtlinien&amp;quot; =&amp;gt; Besser wäre hier &amp;quot;Fehlende Sicherheitsrichtlinien in der Programmierung&amp;quot; also &amp;quot;Secure Coding Guidelines&amp;quot;&lt;br /&gt;
* &amp;quot;Testfälle&amp;quot; =&amp;gt; &amp;quot;Sicherheitsrelevante Testfälle&amp;quot; (z.B. Security Unit Tests). &lt;br /&gt;
* &amp;quot;Barrierefreiheit&amp;quot;: Warum nicht an dieser Stelle die Auswirkungen von Sicherheitsfunktionen auf die Bedienbarkeit, etwa anhand von CAPTCHAS erläutern?&lt;br /&gt;
&lt;br /&gt;
== G 2.WA03 Unzureichender Schutz personenbezogener Daten bei Web-Anwendungen (Matthias) ==&lt;br /&gt;
&lt;br /&gt;
Der Titel dieses Bausteines heißt &amp;quot;Schutz personenbezogener Daten&amp;quot;, die genannten Beispiele beziehen sich bis auf den letzten jedoch auf die missbräuchliche (oder zumindest problematische) Nutzung aus Sicht des Datenschutzes. &lt;br /&gt;
&lt;br /&gt;
Die Punkt 1-3 sollten daher besser entfallen und z.B. durch die Folgenden ersetzt werden:&lt;br /&gt;
* Unsichere Einbindung von sozialen Netzwerken (Bezug nehmen auf den Like-Button bei Facebook)&lt;br /&gt;
* Unsichere Einbindung von Werbeinhalten&lt;br /&gt;
* Unsichere Übertragung und Caching&lt;br /&gt;
* Unsichere Protokollierung&lt;br /&gt;
* Ungenügender Zugriffsschutz&lt;br /&gt;
* Verstoß des Minimalprinzips bzw. der Zweckgebundenheit (welche Daten werden wirklich benötigt)&lt;br /&gt;
&lt;br /&gt;
Auch wäre es ggf. zumindest einen Verweis auf das BDSG zu machen.&lt;br /&gt;
&lt;br /&gt;
== G 4.33 Unzureichende oder fehlende Authentisierung (Matthias) ==&lt;br /&gt;
&lt;br /&gt;
; 1. Erster Absatz: &amp;quot;Wenn Authentisierungsmechanismen fehlen oder zu schlecht sind&amp;quot;&lt;br /&gt;
&lt;br /&gt;
&amp;quot;schlecht&amp;quot; sollte vlt besser durch &amp;quot;unzureichend&amp;quot; ersetzt werden.&lt;br /&gt;
&lt;br /&gt;
; 2. &amp;quot;Sicherheitslücken entstehen bei... der Benutzerauthentisierung&amp;quot;&lt;br /&gt;
&lt;br /&gt;
Hier findet nur ein Bezug auf &amp;quot;Passwörter&amp;quot; statt. Der Bezug auf die fehlerhaft implementierte oder dem Schutzbedarf ungenügende Schutzmechanismen (z.B. keine 2-Faktor-Authentisierung bei hochsensiblen Daten) fehlt. Auch auf das komplette fehlen von Authentisierungs-Controls wird hier nicht  eingegangen&lt;br /&gt;
&lt;br /&gt;
; 3. &amp;quot;Sicherheitslücken entstehen bei... der Komponentenauthentisierung&amp;quot;&lt;br /&gt;
&lt;br /&gt;
Wie bei 2., wird auch hier wieder nur auf Passwörter, nicht jedoch auf das fehlen von Controls selbst eingegangen. An dieser Stelle fehlt auch ein Hinweis auf die Notwendigkeit dedizierter Benutzeraccounts.&lt;br /&gt;
&lt;br /&gt;
; 4. &amp;quot;Sicherheitslücken entstehen bei... der Wahl des Verfahrens&amp;quot;&lt;br /&gt;
&lt;br /&gt;
Statt untauglich würde ich auch hier von &amp;quot;dem Schutzbedarf der Daten nicht angemessen&amp;quot; sprechen, eigentlich gehört das für mich aber in die obigen Punkte.&lt;br /&gt;
&lt;br /&gt;
; 5. Serverseitige Authentisierung fehlt&lt;br /&gt;
&lt;br /&gt;
Auch der Server (bzw. die Anwendung selbst) kann sich fehlerhaft oder ungenügend beim Benutzer authentsieren, etwa über DNS, SSL-Zertifikate, etc.&lt;br /&gt;
&lt;br /&gt;
== G 4.WA04 Unzureichende Validierung von Ein- und Ausgabedaten bei Web-Anwendungen (Matthias) ==&lt;br /&gt;
&lt;br /&gt;
; 1. &amp;quot;Unzureichende Validierung von Eingabedaten&amp;quot;&lt;br /&gt;
&lt;br /&gt;
Die genannten Beispiele sind genau keine korrekten Beispiele für diesen Fall, sondern betreffen die Ausgabevalidierung bzw. Enkodierung. Typische Fehler der Eingabevalidierung ist eine Manipulierbarkeit der Business Logik.&lt;br /&gt;
&lt;br /&gt;
; 2. &amp;quot;Unzureichende Validierung von Ausgabedaten&amp;quot;&lt;br /&gt;
&lt;br /&gt;
Hier geht es zentral um die Verhinderung von Interpreter Injection, also serverseitig (z.B. SQL oder LDAP Injection) oder clientseitig (XSS, JSON Injection, etc.). Statt &amp;quot;können die Ausgaben Schadcode&amp;quot; enthalten würde ich hier eher davon Sprechen, dass ein solcher Interpreteraufruf manipuliert werden kann (was dann z.B. zur Einschleusung von Schadcode genutzt werden kann).&lt;br /&gt;
&lt;br /&gt;
; 3. &amp;quot;Die Suchfunktion der Web-Anwendung verwendet die Eingaben der Benutzer ungefiltert&amp;quot;&lt;br /&gt;
&lt;br /&gt;
Mit ungenügender &amp;quot;Filterung&amp;quot; hat SQL Injection nichts zu tun,  eigentlich geht es hierbei darum, dass SQL-Anfragen dynamisch mit unvalidierten Eingebedaten zusammengebaut (konkateniert) werden.&lt;br /&gt;
&lt;br /&gt;
; 4. &amp;quot;Ungefilterter HTML-Code in Kommentar-Funktion&amp;quot;&lt;br /&gt;
&lt;br /&gt;
Hier fehlt der Bezug auf persistentes XSS, das hier sicherlich zentral ist.&lt;br /&gt;
&lt;br /&gt;
== G 4.WA05 Fehlende oder mangelhafte Fehlerbehandlung durch Web-Anwendungen (Tobias, Matthias) ==&lt;br /&gt;
; Abschnitt &amp;quot;Unsichere Fehlerbehandlung&amp;quot;&lt;br /&gt;
Die G adressiert &amp;quot;Unsichere Fehlerbehandlung&amp;quot;, der Abschnitt die &amp;quot;Unsichere Fehlerbehandlung in Sicherheitskomponenten&amp;quot;. Entsprechend sollte der fettgedruckte Teil angepasst werden.&lt;br /&gt;
&lt;br /&gt;
; &amp;quot;fehlende SQL-Parameter,&amp;quot;&lt;br /&gt;
Sollte besser &amp;quot;Fehlermeldungen bei ungültigen SQL-Abfragen&amp;quot; lauten.&lt;br /&gt;
&lt;br /&gt;
; &amp;quot;Auch scheinbar unkritische Informationen, wie die Meldung ob (..)&amp;quot;&lt;br /&gt;
Korrekt, allerdings nicht nachvollziehbar, wenn das Problem der Leser nicht schon bekannt ist. Daher erweitern nach &amp;quot; Rahmen von Brute-Force-Angriffen ausgenutzt werden.&amp;quot; mit &amp;quot;. Bei Brute-Force-Angriffen wäre in diesem Fall klar, dass der Benutzername gültig ist.&amp;quot;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[User:Mrohr|Matthias]]): Stimme dem Obigen auch zu, ausserdem:&lt;br /&gt;
&lt;br /&gt;
; Sprachlich: &amp;quot;kann dies unvorhersehbare Auswirkungen haben und den Betrieb der Web-Anwendung bis zur Unerreichbarkeit einschränken.&amp;quot;&lt;br /&gt;
&lt;br /&gt;
&amp;quot;Unerreichbarkeit&amp;quot; ist etas merkwuerdig ausgedrueckt, besser ware hier von der &amp;quot;Verfuegbarkeit&amp;quot; zu sprechen. Im Uebrigen fehlt vollstaendig der Bezug auf die Verfuegbarkeit als Primaeres Schutzziel der Informationssicherheit.&lt;br /&gt;
&lt;br /&gt;
; &amp;quot;Clientseitige Fehlerbehandlung&amp;quot;&lt;br /&gt;
Das stimmt soweit, das generelle Problem ist jedoch genereller, naehmlich die clientseitige Abbildung sicherheitsrelaventer Logik (in diesem Fall die Fehlerbehandlung)&lt;br /&gt;
&lt;br /&gt;
== G 4.WA06 Unzureichende Nachvollziehbarkeit von sicherheitsrelevanten Ereignissen bei Web-Anwendungen (Matthias) ==&lt;br /&gt;
&lt;br /&gt;
; 1. Erster Absatz: &amp;quot;Die Behebung einer Schwachstelle ist dann nicht oder nur unter erschwerten Bedingungen möglich.&amp;quot;&lt;br /&gt;
&lt;br /&gt;
Hier würde ich ergänzen: &amp;quot;...und Angriffe auf die Anwendungen können ggf. nicht erkannt oder nachvollzogen werden&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
; 2. &amp;quot;Beispiele&amp;quot;: Kommulierbarkeit&lt;br /&gt;
&lt;br /&gt;
Hier fehlt auch ein Bezug auf die Kommulierbarkeit von SIcherheitsereignissen, dass diese also auch von solchen anderer Systeme in Verbindung gesetzt werden können&lt;br /&gt;
&lt;br /&gt;
; 3. &amp;quot;Beispiele&amp;quot;: Gerichtsverwertbarkeit&lt;br /&gt;
&lt;br /&gt;
Auch die Möglichkeit zur Gerichtsverwertbarkeit (etwa durch eindeutigen Zeitstempel) und manipulationssicherer Speicherung, würde ich an dieser Stelle unbedingt erwähnen.&lt;br /&gt;
&lt;br /&gt;
== G 4.WA07 Offenlegung von Informationen bei Web-Anwendungen (Matthias) ==&lt;br /&gt;
&lt;br /&gt;
; 1. Titel&lt;br /&gt;
&lt;br /&gt;
Hier würde ggf. &amp;quot;Offenlegung vertraulicher Informationen&amp;quot; sicher besser passen als &amp;quot;Offenlegung von Informationen&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
; 2. Beispiellink&lt;br /&gt;
&lt;br /&gt;
Ein Beispiellink (mit und ohne Token) würde sicher die Verständlichkeit dieser Schwachstelle verbessern.&lt;br /&gt;
&lt;br /&gt;
; 3. Erster Absatz: &amp;quot;Wenn demzufolge Informationen unnötig offengelegt werden, steigt die Wahrscheinlichkeit eines erfolgreichen Angriffs.&amp;quot;&lt;br /&gt;
&lt;br /&gt;
Interne Informationen auszublenden ist eine Härtungsmaßnahme, deren Anzeige erhöht aber nicht zwangsläufig die Wahrscheinlichkeit eines erfolgreichen Angriffs. Ich würde diesen Satz weglassen.&lt;br /&gt;
&lt;br /&gt;
 ; 4. Fehlende Punkte&lt;br /&gt;
&lt;br /&gt;
* Ein Hinweis auf HTTP Header wäre hier sicher erwähnenswert.&lt;br /&gt;
* Weiterhin bzgl. der Anzeige von Traces und ein Verweis auf den Entsprechenden Baustein zur Fehlerbehandlung&lt;br /&gt;
&lt;br /&gt;
== G 5.WA14 Cross-Site Request Forgery (CSRF, XSRF) (Matthias) ==&lt;br /&gt;
&lt;br /&gt;
; 1. Erster Absatz: &amp;quot;Können Funktionen einer Web-Anwendung ohne weitere Überprüfung der Authentizität des HTTP-Requests (z.B. durch Tokens in versteckten Formularfeldern) genutzt werden&amp;quot;&lt;br /&gt;
&lt;br /&gt;
Statt &amp;quot;Funktionen&amp;quot; würde ich besser von &amp;quot;schreibenden Aktionen&amp;quot; sprechen, dann macht der Satz mehr Sinn.&lt;br /&gt;
&lt;br /&gt;
; 2. Dritter Absatz: &amp;quot;Im Gegensatz zu XSS (siehe ...￼ ) ist das Angriffsziel nicht die Information auf dem Client (z. B. in Cookies),&amp;quot;&lt;br /&gt;
&lt;br /&gt;
Dieser (Halb-)Satz macht keinen Sinn, auch weil es bei XSS nicht nur im Informationen auf dem Cient geht. Vorschlag: &amp;quot;ist das Angriffsziel nicht die Ausführung von Skriptcode, sondern von unbefugten, schreibenden Aktionen im Kontext des angemeldeten Benutzers.&amp;quot;&lt;br /&gt;
&lt;br /&gt;
; 3. Session Riding&lt;br /&gt;
&lt;br /&gt;
Session Riding ist quasi nur ein anderer Begriff für CSRF. Die einzige Form von CSRF die mir bekannt ist, sind Angriffe mit Standard-Passwörtern auf HTTP-Basic-Auth geschützten Ressourcen.&lt;br /&gt;
&lt;br /&gt;
Im Grunde ist Session Riding aber nur ein Synonym für CSRF. Der Absatz ist daher auch nur eine Wiederholung der obigen Beschreibung.&lt;br /&gt;
&lt;br /&gt;
; 4. Zum Beispiel: &amp;quot;Durch einen präparierten Link auf einer Webseite wird die Änderung des Zugangspasswortes des Routers eingeleitet.&amp;quot;&lt;br /&gt;
&lt;br /&gt;
Etwas ungüngstig ausgedrückt. Besser wäre: &amp;quot;wird eine Anfrage zur Änderung des Zugangspasswortes an den Router gesendet. Hierbei sendet der Browser automatisch den Session Cookie mit, worüber die Webanwendung die Authentizität der Anfrage verifiziert und die Änderung durchführt.&amp;quot;&lt;br /&gt;
&lt;br /&gt;
== G 5.WA18 Clickjacking (Matthias) ==&lt;br /&gt;
&lt;br /&gt;
Hier stellt sich mir nur die allgemeine Frage, ob Clickjacking, bzw. der Schutz davor tatsächlich einem Grundschutz zuzurechnen ist. Persönlich würde ich dies nicht tun.&lt;br /&gt;
&lt;br /&gt;
== M 2.WA02 Dokumentation der Architektur von Web-Anwendungen (Matthias) ==&lt;br /&gt;
&lt;br /&gt;
; Verantwortlich für die Umsetzung&lt;br /&gt;
Hier wäre auch die Nennung des &amp;quot;Architekten&amp;quot; sinnvoll&lt;br /&gt;
 &lt;br /&gt;
; Fehlende Bestandteile der Dokumentation:&lt;br /&gt;
* Schutzbedarf des Systems sowie der verarbeiteten Daten&lt;br /&gt;
* Schützenswerte Daten und Funktionen (Assets)&lt;br /&gt;
* Betriebliche Anforderungen an die Sicherheit bzw. eingesetzte Plattform&lt;br /&gt;
* Dokumentierte Konfigurationseinstellungen &lt;br /&gt;
* BIA (RTO, RPO)&lt;br /&gt;
* Schnittstellen&lt;br /&gt;
* Trust Boundaries&lt;br /&gt;
* Akteure (bzw. Trust Level)&lt;br /&gt;
* Sicherheitsannahmen&lt;br /&gt;
* Geltende Compliance-Anforderungen (BDSG, PCI DSS, etc.)&lt;br /&gt;
&lt;br /&gt;
; Benutzermanagement&lt;br /&gt;
&lt;br /&gt;
Wenn damit das Identity Management gemeint ist, gehört das Dokumentiert, ist aber keine Sicherheitsfunktion. Oder ist hiermit das Rollen- und Berechtigungskonzept gemeint? Grenzt sich aus meiner Sicht schwer mit dem Thema Authentisierung ab. &lt;br /&gt;
&lt;br /&gt;
; Prüffragen&lt;br /&gt;
&lt;br /&gt;
Hier fehlt etwas in Bezug auf Sicherheitsanforderungen. Beispiel: &amp;quot;Werden Sicherheitsanforderungen an den Betrieb während der Entwicklung abgestimmt und dokumentiert&amp;quot;&lt;br /&gt;
&lt;br /&gt;
== M 2.WA12 Entwicklung und Erweiterung von Anwendungen (Markus) ==&lt;br /&gt;
; &amp;quot;Es sollte darauf geachtet werden, dass Sicherheitsanforderungen&lt;br /&gt;
vollständig durch Sicherheitsmechanismen erfüllt und zur Erstellung von&lt;br /&gt;
Testfällen festgehalten werden.&amp;quot; --&amp;gt; Bessere Formulierung würde aussagen, dass die Sicherheitsanforderungen durch Testfälle verifiziert werden.&lt;br /&gt;
&amp;quot;(z. B. durch Kommentare im&lt;br /&gt;
Quelltext). Somit ist der Quelltext zu einem&amp;quot; --&amp;gt; Das ist kein empfehlenswerter Programmierstiel! Raus mit diesem Kommentar&lt;br /&gt;
;&amp;quot;Zum Schutz vor dem Verlust bereits entwickelter und verworfener&lt;br /&gt;
Lösungen sowie zu Dokumentationszwecken sollte die Historie der&lt;br /&gt;
Änderungen festgehalten werden (z. B. durch ein Revisionssystem).&amp;quot; --&amp;gt; Auch diesen Absatz können wir streichen - Kein professioneller Programmierer arbeitet ohne Versionierugssystem.&lt;br /&gt;
;&amp;quot;Bei Web-Anwendung sollten die Webseiten auf Konformität zu dem&lt;br /&gt;
verwendeten Standard (z. B. HTML-Standard) getestet werden. Dadurch&lt;br /&gt;
können unvorgesehene Seiteneffekte aufgrund einer Fehlinterpretation&lt;br /&gt;
seitens der Browser vermieden werden.&amp;quot; --&amp;gt; Könnte man noch um &amp;quot;Die Software ist in möglichst vielen Browsern zu testen&amp;quot; erweitern.&lt;br /&gt;
;Generell geht der Autor leider nicht auf die Rollen &amp;amp; Rechte Verteilung ein. Mir fehlt der Hinweis, das es eine personelle Trennung zwischen Entwicklung, Test und Betrieb geben muss.&lt;br /&gt;
;Zum Thema Wartung / Betrieb --&amp;gt; Hier wird keine Aussage getroffen bezüglich Log_Files. Dieses Thema kann kritische Auswirkungen haben, Bsp.: logging ganzer HTTP-Requests im LogLevel=Debug.&lt;br /&gt;
; &amp;quot;Produktspezifische Sicherheitsfunkionalität&amp;quot; - Dieser Absatz ist gefährlich - der Angreifer ist nicht zur Verwendung dies Zielbrowsers gezwungen. Deshalb können Browser-spez. Sicherheitsfunktionen nur als Add-ON gewertet werden.&lt;br /&gt;
; &amp;quot;Festlegung der Entwicklungsumgebung&amp;quot; - Dieser Absatz geht nicht auf die zu verwendenden Testdaten ein. Der Hinweis, dass Live-Daten / Kundendaten nichts in Test- &amp;amp; Entwicklungsumgebungen zu suchen haben fehlt!!!&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== M 2.WA24 Web-Tracking (Matthias) ==&lt;br /&gt;
&lt;br /&gt;
; Letzter Absatz: &amp;quot;Falls eine Auswertung von Nutzerdaten, insbesondere personenbezogener Daten, .. &amp;quot;&lt;br /&gt;
&lt;br /&gt;
Hier sollte denke ich besser von personenbeziehbaren Daten gesprochen Werten. Dies betrifft etwa die Zuordnung von Surfverhalten zu einer bestimmten Person. Dies sollte stets nach den Prinzipien Datensparsamkeit und Datenvermeidung, Erforderlichkeit, sowie Zweckbindung erfolgen. Ist Webtracking nicht personenbeziehbar ist dies kein Thema für den Datenschutz.&lt;br /&gt;
&lt;br /&gt;
== M 4.WA04 Authentisierung bei Web- Anwendungen (Matthias) ==&lt;br /&gt;
&lt;br /&gt;
: Verantwortlich fuer Umsetzung &lt;br /&gt;
sollte in erster Linie beim Architekturen und in zweiter beim Entwickler liegen&lt;br /&gt;
; Vermischung von Authentisierung und Session Management &lt;br /&gt;
&lt;br /&gt;
Bei diesem Baustein findet eine ziemlich große Vermischung von Anforderung an die Authentisierung und das erst in &amp;quot;M 4.WA06 Session-Management bei Web- Anwendungen&amp;quot; behandelte Session Management statt (Beispiel: &amp;quot;Remember-Me-Funktion&amp;quot;). Beide Themen sollten sinnvollerweise getrennt voneinander zu betrachten und aufeinander zu beziehen.&lt;br /&gt;
&lt;br /&gt;
; Verwendung von Frameworks&lt;br /&gt;
&lt;br /&gt;
Die Anforderung ist schon ein wenig eingeschränkt. Besser passt hier denke ich die &amp;quot;Abbildung der Authentisierung über Standardkomponenten (Bibliotheken oder Frameworks)&amp;quot;. &lt;br /&gt;
&lt;br /&gt;
; Remember-Me-Funktion&lt;br /&gt;
&lt;br /&gt;
Siehe oben, gehört zum Session Management. Das ließt sich im übrigen so, als ob eine Webanwendung Credentials auf dem Client abhängt. &lt;br /&gt;
&lt;br /&gt;
; Grenzwerte für gescheiterte Anmeldeversuche&lt;br /&gt;
&lt;br /&gt;
Diese Empfehlung ist allgemein falsch, da sie sehr von der betrachteten Anwendung abhängt. Besser wäre hier allgemein von Mechanismen zur Verhinderung von automatisierten Angriffen zu sprechen (Anti-Automatisierung). &lt;br /&gt;
&lt;br /&gt;
Etwa umsetzbar durch&lt;br /&gt;
* Sperrung nach x Anmeldeversuchen&lt;br /&gt;
* Throttling&lt;br /&gt;
* Captchas&lt;br /&gt;
* Sicherheitsfragen&lt;br /&gt;
&lt;br /&gt;
Das allgemeine Sperren kann leicht für das gezielte Aussperren von Benutzern (User Lockout) verwendet werden. Was etwa bei Trading-Anwendungen nicht funktioniert.&lt;br /&gt;
&lt;br /&gt;
; Automatisiertes Zurücksetzen von Authentisierungsdaten&lt;br /&gt;
&lt;br /&gt;
Würde ich besser als &amp;quot;Passwort-Reset&amp;quot; bezeichnen.&lt;br /&gt;
&lt;br /&gt;
Weiterhin fehlt hier der Hinweis, dass statt ein automatisiertes Zurücksetzen, ein Mechanismus zu empfehlen ist, bei dem über ein hinterlegtes Sicherheitsmerkmal (Handy-Nummer oder E-Mail-Adresse) vom Benutzer zunächst eine Verifikation durchgeführt wird. Beispielsweise durch einen erhaltenen Link. Erst dann darf eine Änderung des Passwortes durch den Benutzer erfolgen.&lt;br /&gt;
&lt;br /&gt;
; Registrierung nicht behandelt&lt;br /&gt;
&lt;br /&gt;
Es existiert hier kein Punkt, der die sichere Implementierung von Benutzerregistrierungen behandelt.&lt;br /&gt;
&lt;br /&gt;
; Verweis auf Externalisierung fehlt.&lt;br /&gt;
&lt;br /&gt;
Statt die Authentisierung selbst durchzuführen kann eine Anwendung hierzu auf eine externe Komponente (Beispiel: SiteMinder oder Kerberos) zurückgreifen.&lt;br /&gt;
&lt;br /&gt;
; Verweis auf Behandlung von Credentials fehlt&lt;br /&gt;
&lt;br /&gt;
Auch wenn das  in &amp;quot;M 4.WA15 Schutz vertraulicher Daten bei Web- Anwendungen&amp;quot; ausführlich behandelt wird, sollte in diesem Baustein bereits auf den angemessenen Schutz von Authentisierungsdaten bei Übertragung und Speicherung hingewiesen werden.&lt;br /&gt;
&lt;br /&gt;
== M 4.WA05Umfassende Ein- und Ausgabevalidierung bei Web-Anwedungen (Markus) ==&lt;br /&gt;
; &amp;quot;Ablehnung der Daten im&lt;br /&gt;
Fehlerfall&amp;quot; --&amp;gt; Hier könnte man noch auf Tar-Pits eingehen - nur ein Vorschlag.&lt;br /&gt;
&lt;br /&gt;
== M 4.WA06Session-Management bei Web-Anwendungen (Markus, Matthias) ==&lt;br /&gt;
; &amp;quot;Übertragung der SessionID mittels GETRequest&amp;quot; --&amp;gt; Hier fehlt der Hinweis, dass die Lebensdauer dieser SessionIds kurz/kürzer sein muss, als im Falle der Speicherung im Cookie.&lt;br /&gt;
&lt;br /&gt;
([[User:Mrohr|Matthias]]) Die Anmerkung verstehe ich ehrlich gesagt ueberhaupt nicht, zumal das SM haeufig transparent zwischen Cookies und URL Rewriting wechselt. Wozu soll das gut sein? Wie soll das geschehen? Idealerweise sollte die Session ID niemals in die URL geschrieben werden, das sollte eigentlich genuegen.&lt;br /&gt;
&lt;br /&gt;
; &amp;quot;Verschlüsselte Übertragung von SessionIDs&amp;quot; --&amp;gt; Hier fehlt der Hinweis auf den Beast-Exploit. TLS Version &amp;gt; 1.0 verwenden!&lt;br /&gt;
&lt;br /&gt;
([[User:Mrohr|Matthias]]) Solange hier nicht auf eine explizite TLS Version eingegangen wird, sollte meiner grossen Ueberzeugung nach hier auch auf keine Exploits etc. eingagen werden, das gehoert an andere Stelle.&lt;br /&gt;
&lt;br /&gt;
; ([[User:Mrohr|Matthias]]) Weiterhin:&lt;br /&gt;
&lt;br /&gt;
 Es dürfen keine extern bekannten oder erratbaren Daten (z. B. IP-Adresse, Uhrzeit) in die Berechnung der SessionID einfließen.&lt;br /&gt;
&lt;br /&gt;
Die Aussage finde ich etwas problematisch, wichtiger ist, dass die Entropie ausreichend hoch ist. Haeufig werden etwa IPs von Load Balancern in die Session ID hineingeschrieben.&lt;br /&gt;
&lt;br /&gt;
 - Domain (z. B. webapp.domain.tld),&lt;br /&gt;
 - Path (z. B. /webapp/),&lt;br /&gt;
 - Secure und&lt;br /&gt;
 - HttpOnly.Beschränkte Sitzungsdauer&lt;br /&gt;
&lt;br /&gt;
Das sieht so aus, als ob es empfehlenswert ist, das Domain-Tag zu verwenden, das ist es sicherlich nicht. Was macht hier der Hinweis &amp;quot;Beschraenke Sizuungsdauer&amp;quot;?&lt;br /&gt;
&lt;br /&gt;
== M 4.WA07Fehlerbehandlung durch Web-Anwendungen (Markus) ==&lt;br /&gt;
; Konsistenter / Inkonsistener Zustand einer Webanwendung und der daraus resultierende Datenverlust: Hier fehlen mir die Punkte: DOS, Priv.Escalation, CodeExecution.&lt;br /&gt;
([[User:Mrohr|Matthias]]) Vorschlag &amp;quot;und somit der Schutz der Daten&amp;quot; aendern in &amp;quot;und somit ETWA der Schutz der Daten&amp;quot; korrigieren&lt;br /&gt;
&lt;br /&gt;
; Vermeidung vertraulicher Informationen in Fehlermeldungen --&amp;gt; Fehlermeldungen sollten ebenfalls eine Systeminformationen preisgeben (Softwareversion, Patchlevel, etc.)&lt;br /&gt;
([[User:Mrohr|Matthias]]) Ich glaube hier ist es wichtig zu unterscheiden, wo die Fehlermeldung ausgegeben bzw. wem diese angezeigt wird. Das wird in diesem Modul garnicht so recht unterscheiden. Der Autor meint glaube ich, wie Fehlermeldungen durch die Webanwendung angezeigt werden. In dem Fall hat er recht. Du meinst glaube ich eher, wie Fehlermeldungen protokolliert werden. In dem Fall hast du natuerlich auch recht. Das in dem Text verwendete Wort &amp;quot;ausgeben&amp;quot; ist nicht unbedingt eindeutig und sollte genauer spezifiziert werden.&lt;br /&gt;
&lt;br /&gt;
; Abbruch des Vorgangs nach Auftreten eines Fehlers --&amp;gt; TarPits scheinen dem Autor umbekannt zu sein :)&lt;br /&gt;
([[User:Mrohr|Matthias]]) Stimmt, wobei sich diese ja auch nur auf einen sehr bestimmten Fehlertypen beziehen. Generell laesst sich so etwas unterscheiden, wenn man Fehler-Domains erstellt. Beispiel: Technisch-Unerwartet = Abbruch, Technisch-Erwartet = Fehlermeldug/Tear Pit, etc.&lt;br /&gt;
&lt;br /&gt;
; &amp;quot;Werden Fehler möglichst von der gleichen Komponente behandelt, in der&lt;br /&gt;
der Fehler aufgetreten ist?&amp;quot; --&amp;gt; Das &amp;quot;möglichst&amp;quot; sollten wir streichen.&lt;br /&gt;
([[User:Mrohr|Matthias]]) Hm, der Aussage kann ich nicht ganz zustimmen, bzw. es haengt von dem Begriff &amp;quot;Komponente&amp;quot; ab. Eine Anwendungskomponente kann serwohl bewusst bestimmte Exceptions werfen, die von der einbindenden Komponente behandelt werden muessen.&lt;br /&gt;
&lt;br /&gt;
== M 4.WA08Schutz vor automatisierter Nutzung von Web-Anwendungen (Markus) ==&lt;br /&gt;
; &amp;quot;Brute-Force-&lt;br /&gt;
Angriffe (z. B. Erraten von Zugangsdaten) und Enumeration-Angriffe (z. B.&lt;br /&gt;
automatisiertes Ermitteln von gültigen Login-Namen)&amp;quot; -- die Beispiele sind identisch - besser Beispiele suchen, z.b. URL-Enumeration&lt;br /&gt;
&lt;br /&gt;
([[User:Mrohr|Matthias]]) Das sehe ich anders. Brute-Forcing bezieht auf Passwoerter und Enumeration auf Benutzernamen, etwa durchs hochzaehlen. Auch wenn ich zustimmen muss, dass die nicht ganz gluecklich gewaehlt wurden. Stann &amp;quot;Erraten von Zugangsdaten&amp;quot; wuerde ich besser von &amp;quot;Erraten von Passwoertern&amp;quot; sprechen. Oder wie gesagt gleich auch auf andere Beispiele (etwa Object ID Enumeration) beziehen.&lt;br /&gt;
&lt;br /&gt;
== M 4.WA11Sichere Konfiguration von Web-Anwendungen (Markus) ==&lt;br /&gt;
; &amp;quot;Sicherer Umgang mit TLS/SSL&amp;quot; -- Hier fehlt der Hinweis, dass TLS-1.0 gebrochen ist&lt;br /&gt;
; &amp;quot;Zeichenkodierungskonfiguration&amp;quot; -- Ein Whitelisting abhängig von der Encodierung wäre ein weiterer Vorschlag&lt;br /&gt;
; &amp;quot;Restriktive Dateisystemberechtigungen&amp;quot; -- auch wenn es ein klassiker ist - der AS sollte ebenfalls mit von einem eingeschränkten Nutzer gestartet werden und nicht als root&lt;br /&gt;
; Administration Consolen:zur Ergänzen: Wenn diese nicht benötigit, sollten derartige Applikationen nicht deployed werden, unabhängig von möglichen Zugangsbeschränkungen.&lt;br /&gt;
&lt;br /&gt;
([[User:Mrohr|Matthias]]) Sorry, meiner Meinung nach hat die Bewertung von Kryptoverfahren hier abslut nichts zu suchen.Stattdessen sollte hier auf den entsprechenden [https://www.bsi.bund.de/ContentBSI/Publikationen/TechnischeRichtlinien/tr02102/index_htm.html Empfehlung des BSI] verwiesen werden, auch wenn dieses Dokument derzeit noch etwas outdated zu sein scheint.&lt;br /&gt;
&lt;br /&gt;
== M 4.WA13Kontrolliertes Einbinden von Daten und Inhalten bei Web-Anwendungen (Markus) ==&lt;br /&gt;
; Datei-Upload: Bei einem Upload werden Dateien durchaus in TEMP-Verzeichnissen gesammelt und danach weiterverarbeitet. Diese TEMP-Verzeichnisse sind im Rahmen einer Sicherheitsanalyse zu betrachten -&amp;gt; Möglicher (unbefugter) Zugriff auf weitere Uploads&lt;br /&gt;
; Upload komprimierter Dateien / großer Dateien birgt die Gefahr von DOS Angriffen&lt;br /&gt;
; Upload von Dateien kann bei weiterem Parsing zu Speicherengpässen führen --&amp;gt; DOS-Angriffe auf Thread-Local etc.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== M 4.WA14Restriktive Herausgabe sicherheitsrelevanter Informationen bei Web-Anwendungen (Markus, Matthias) ==&lt;br /&gt;
OK - Keine Anmerkungen von mir.&lt;br /&gt;
&lt;br /&gt;
([[User:Mrohr|Matthias]]) Von mir schon;)&lt;br /&gt;
&lt;br /&gt;
; ([[User:Mrohr|Matthias]]) Vermeidung von Kommentaren in ausgelieferten Webseiten&lt;br /&gt;
&lt;br /&gt;
Das ist leider total falsch, wir brauchen haeufig Komentare, aus Kompatibilitaetsgruenden. So wird etwa der JavaScript-Block haeufig auskommentiert.&lt;br /&gt;
&lt;br /&gt;
Wurde stattessen besser von sicherheitsrelevanten Kommentaren sprechen und als Massnahme generell Entwicklerkommentare ueber Sprachkonstruktre (etwa JSP) durchzufuehren.&lt;br /&gt;
&lt;br /&gt;
; ([[User:Mrohr|Matthias]]) Löschen nicht benötigter Dateien&lt;br /&gt;
&lt;br /&gt;
Hier wurde ich ggf. Dateien von Versionisierungstools (etwa Subversion) erwaehnen, das sehen wir schon recht haeufig.&lt;br /&gt;
&lt;br /&gt;
Statt Dateien einfach nur zu loeschen (was in der Praxis haeufig nicht so einfach ist) bietet es sich zudem an, den Zugriff auf bestimmte Dateien oder Dateitypen generell zu sperren, etwa mittels ACL im Apache.&lt;br /&gt;
&lt;br /&gt;
; ([[User:Mrohr|Matthias]]) Gibt die Web-Anwendung ausschließlich neutrale Fehlermeldungen aus und sind diese im Quelltext identisch? {E: C}&lt;br /&gt;
&lt;br /&gt;
Persoenlich verstehe ich das nicht. Wieseo neutrale Fehlermeldung? Das macht fuer mich nur beim Login Sin. Hierzu existiert in dem Text auch keinerlei Bezug. Ich wuerde das daher besser entfernen und im Rahmen der Fehlerbehandlung diskutieren. Mindestens sollte hier jedoch besser von &amp;quot;sicherheitsunbedentlichen Fehlermeldungen&amp;quot; oder so gesprochen werden.&lt;br /&gt;
&lt;br /&gt;
; ([[User:Mrohr|Matthias]]) Wird der Referrer bei Verlassen der Web-Anwendung (z. B. durch einen Link auf eine externe Seite) gefiltert?&lt;br /&gt;
&lt;br /&gt;
Diesen Punkt sehe ich als sehr Fallabhengig an. Es kann fuer seiten durchaus wuenschenswert sein, dass der Referer weitergegeben wird. Der Referer sollte natuerlich keine sensiblen Informationen enthalten, was ja an anderer Stelle (etwa Session Management) vorgegeben wird bzw. gegeben werden sollte.&lt;br /&gt;
&lt;br /&gt;
== M 4.WA15Schutz vertraulicher Daten bei Web-Anwendungen (Markus, Matthias) ==&lt;br /&gt;
; Sichere kryptographische Algorithmen:&lt;br /&gt;
 Hier fehlt mir eine Liste der aktuelle als sicher geltenden Verfahren.&lt;br /&gt;
([[User:Mrohr|Matthias]]) Am Besten Referenz auf [https://www.bsi.bund.de/ContentBSI/Publikationen/TechnischeRichtlinien/tr02102/index_htm.html https://www.bsi.bund.de/ContentBSI/Publikationen/TechnischeRichtlinien/tr02102/index_htm.html]&lt;br /&gt;
&lt;br /&gt;
; Schlüssel&lt;br /&gt;
 Das die Schlüssel bestimmten Formaten entsprechen müssen ist ok - aber das Schlüsselmanagement wird gar nicht besprochen?&lt;br /&gt;
; Schutz der Daten im Browsercache&lt;br /&gt;
 Skripte und Browserplugins können ebenfalls auf den Browsercache zugreifen - diese werden hier nicht erwähnt.&lt;br /&gt;
&lt;br /&gt;
([[User:Mrohr|Matthias]]) Weiterhin entsprechen die vorgeschlagenen HTTP Headern nicht dem Best Practice:&lt;br /&gt;
&lt;br /&gt;
 Cache-control: no-cache, no-store&lt;br /&gt;
 Pragma: no-cache&lt;br /&gt;
 Expires: -1&lt;br /&gt;
&lt;br /&gt;
([[User:Mrohr|Matthias]]) Die Empfehlung hinsichtlich des manuellen Leerens des Browsercaches sollte wenn dann nur bei Anwendungen mit sehr hohem Schutzbedarf in Erwaegung gezogen werden. Wichtiger waere da schon eher die richtigen Cache-Header zu verwenden. Solche Empfehlungen ihm Rahmen des Grundschutzes aber wirklich nichts zu suchen. &lt;br /&gt;
&lt;br /&gt;
; Maskierung von Passwörtern &lt;br /&gt;
 Dies schützt bei der Eingabe nur vor ShoulderSurfing nicht vor Skripten oder Plugins die diese an andere Server posten.&lt;br /&gt;
&lt;br /&gt;
([[User:Mrohr|Matthias]]) Das ist voellig korrekt. Aber inwieweit ist die Aussage Passwort-Felder zu verwenden fehlerhaft bzw. hier unzureichend beschrieben?&lt;br /&gt;
&lt;br /&gt;
; Sicherung von Zugangsdaten:&lt;br /&gt;
 Zugangsdaten in einer Datei abzulegen - wenn auch ausserhalb des WebRoots ist keine gute Idee.&lt;br /&gt;
([[User:Mrohr|Matthias]]) Es ist sicher nicht die schoenste Variante, es laesst sich aber nunmal in vielen Faellen nicht vermeiden. Deshalb fordert der [http://code.google.com/p/owasp-asvs/wiki/Verification_V2 ASVS] hier etwa auch nicht mehr. Fuer den hier angestreben Grundschutz sollte das meiner Meinung nach ausreichen.&lt;br /&gt;
; Schutz von Quelltexten:&lt;br /&gt;
 Hier würde ich property files mit aufnehmen. der hinweis auf web-inf/classes fehlt - warum?&lt;br /&gt;
 Bei include-befehlen sind die pfadangaben zu überdenken.&lt;br /&gt;
([[User:Mrohr|Matthias]]) Wuerde property Dateien allgemein den Konfigurationsdateien zuordnen. Der Begriff &amp;quot;Einzubindende Dateien&amp;quot; ist mir allrdings Neu&lt;br /&gt;
&lt;br /&gt;
([[User:Mrohr|Matthias]]) Weiterhin, fehlt ein genereller Bezug auf HTML 5 WebStorage, LSOs etc. Zumindest in abstrakter Form, so dass diese dadurch indirekt addresiert werden. Egal, in dem relevanten Punkt will der Autor meiner Meinung nach nur einige Beispiele nennen, das sollte keinen Anspruch auf Vollsteandigkeit haben muessen.&lt;br /&gt;
&lt;br /&gt;
; ([[User:Mrohr|Matthias]]) - Durch dieses Attribut wird die Gültigkeit des Cookies auf die Domäne der Web-Anwendung beschränkt.&lt;br /&gt;
Nein, das ist leider total falsch. Das Domain-Attribut stellt eine Aufweichung der Cookie-Gueltigkeit dar und nicht anders herum. Gewoehlich sind Cookies immer Host-Cockies und das sollte auch so bleiben. Die Empfehlung sollte entfernt werden.&lt;br /&gt;
&lt;br /&gt;
== M 4.WA16Zugriffskontrolle bei Web-Anwendungen (Markus) ==&lt;br /&gt;
; Zugriffskontrolle via Frameworks:&lt;br /&gt;
 Dieser Punkt (Frameworks) wird nur in einem Satz erwähnt. Es werden keine Bespiele gegeben - Das ist zu wenig.&lt;br /&gt;
 Es müssen alle Zugriffe geschützt werden. Eine Protokollierung aller Zugriffe mit den nötigen Informationen ist ebenfalls empfehlenswert.&lt;br /&gt;
; Datei Upload:&lt;br /&gt;
 Die Gefahr eines DOS wird hier nicht erwähnt.&lt;br /&gt;
&lt;br /&gt;
== M 4.WA19Verhinderung von Cross-Site Request Forgery (CSRF, XSRF) (Markus, Matthias) ==&lt;br /&gt;
; Verantwortliche: &lt;br /&gt;
 Entwickler und Admins!&lt;br /&gt;
([[User:Mrohr|Matthias]]) Korrekt, wobei auch in der Reihenfolge&lt;br /&gt;
&lt;br /&gt;
; Anti-CSRF-Token in hidden fields:&lt;br /&gt;
 Das ist keine gute Idee. Ich würde das streichen!&lt;br /&gt;
&lt;br /&gt;
([[User:Mrohr|Matthias]]) Watt? Anti-CSRF-Tokens in Hidden Fields sind die Standard-Massnahme. Wie denn sonst? Bitte nicht streichen!!! &lt;br /&gt;
&lt;br /&gt;
([[User:Mrohr|Matthias]]) Die Technik bei der die Session ID als Anti-CSRF-Token verwendet wird, wird als Double-Cookie Submit bezeichnet, das sollte hier referenziert werden.&lt;br /&gt;
&lt;br /&gt;
; Umgehung von Schutzmechanismen:&lt;br /&gt;
 Man in the middle hat keinen direkten Bezug zu CSRF! Das würde ich streichen.&lt;br /&gt;
([[User:Mrohr|Matthias]]) Der Hinweis ist korrekt. Wovon der Autor hier spricht ist Session Replay nicht CSRF.&lt;br /&gt;
&lt;br /&gt;
; Frameworks:&lt;br /&gt;
 Gute Idee - aber es gibt auch Features in den ApplicationServern die CSRF unterbinden - warum wird das nicht besprochen?&lt;br /&gt;
&lt;br /&gt;
([[User:Mrohr|Matthias]]) Sehe ich persoenlich nicht so, da CSRF primaer ein Applikations-Fehler ist, und auch in der Applikation und nicht im Environment (AppServer) geloest werden sollte. Auch wenn das manchmal ggf. die einzig machbare Loesung darstellt.&lt;br /&gt;
&lt;br /&gt;
([[User:Mrohr|Matthias]]) Was generell fehlt, ist ein Hinweis darauf, dass schreibende Requests generell per HTTP Post abgewickelt werden sollten, da HTTP Get keine &amp;quot;Safe Method&amp;quot;  (siehe HTTP 1.1, RFC 2616) ist.&lt;br /&gt;
&lt;br /&gt;
== M 4.WA20Sicherer Entwurf der Logik von Web-Anwendungen (Markus, Matthias) ==&lt;br /&gt;
; Rollbacks:&lt;br /&gt;
 Tritt ein Fehler auf muss die Applikation einen konsistenten Datenstand zurück lassen. Das wird hier nicht erwähnt.&lt;br /&gt;
; RaceConditions:&lt;br /&gt;
 Fehler in der Geschäftslogik können auch durch zwei gleichzeitige Sessions auf einer Webapplikation auftreten - das wird hier nicht besprochen.&lt;br /&gt;
&lt;br /&gt;
([[User:Mrohr|Matthias]]) Ehrlich gesagt kann ich nicht ganz nachvollziehen, was der Sichere Entwurf der Logik von Web-Anwendungen mit dem Verzicht auf aktive Inhalte zu tun hat. Unabhaengig davon sollte man solche unsinnigen Aussagen im Jahre 2012 nicht mehr treffen, damit macht man sicht nur laecherlich.&lt;br /&gt;
&lt;br /&gt;
Nichts desto trotz, was hier als &amp;quot;echte&amp;quot; Massnahmen erwaehnt werden sollte sind:&lt;br /&gt;
* Verhinderung von Race Conditions, aber nicht nur durch Concurrent Sessions sondern auch durch Singletons (TOCTOU)&lt;br /&gt;
* Enforcements von Workflows, etwa durch die Verwendung von State Machines oder Request Tokens (auch bekannt als Site Usage Enforcement)&lt;br /&gt;
* Fail Securely (bzw. Verweis)&lt;br /&gt;
* Serverseitige Abbildung der Anwendungslogik, zumindest wenn diese sicherheitsrelevant sit&lt;br /&gt;
&lt;br /&gt;
== M 4.WA22Verhinderung der Blockade von Ressourcen (DoS) bei Web-Anwendungen (Markus, Matthias) ==&lt;br /&gt;
; Datenspeicher:&lt;br /&gt;
 Neben dem Datenspeicher sollte auch der RAM-Verbrauch pro Thread der Applikation limitiert werden.&lt;br /&gt;
([[User:Mrohr|Matthias]]) Stimmt, ich wuerde hier sogar allgemein von Ressourcenverbrauch am Beispiel RAM und Datenspeicher, sprechen&lt;br /&gt;
&lt;br /&gt;
; Voraggregation von Daten / Caching&lt;br /&gt;
 Dieser Punkt fehlt: Stark ressourcen belastende Anfragen können auch in Lastarmen Zeiten vorberechnet werden.&lt;br /&gt;
([[User:Mrohr|Matthias]]) Stimmt, koennte noch als Anmerkung bei &amp;quot;Cachen von Anfragen&amp;quot; hinzugefuegt werden&lt;br /&gt;
&lt;br /&gt;
; ([[User:Mrohr|Matthias]]) Prueffrage: &amp;quot;Wird ein möglicher Überlauf von Protokolldaten... verhindert&amp;quot;&lt;br /&gt;
&lt;br /&gt;
Ist eine etwas eingeschrankte Sicht. Wurde hier eher von Ueberlauf von Speicherplaz zu Beispiel im Rahmen der Protokollierung sprechen&lt;br /&gt;
&lt;br /&gt;
; ([[User:Mrohr|Matthias]]) Durchfuehrung von Lasttests zur Identifikation ressourcenintensiver Operationen&lt;br /&gt;
&lt;br /&gt;
Der Hinweis waere ggf. erwahnenswert&lt;br /&gt;
&lt;br /&gt;
; ([[User:Mrohr|Matthias]]) Hinweis auf nicht-angemeldeten Bereich&lt;br /&gt;
&lt;br /&gt;
Das Risiko durch rechenintensive Operationen durch einen DoS betroffen zu sein ist natuerlich fuer gewoehlich um so groesser, wenn diese im anonymen Bereich angeboten wird. Der Hinweis ware ggf. ebenfalls hilfreich.&lt;br /&gt;
&lt;br /&gt;
== M 4.WA25Verhinderung von Clickjacking (Markus) ==&lt;br /&gt;
Ok - das passt soweit.&lt;br /&gt;
&lt;br /&gt;
([[User:Mrohr|Matthias]]) Stimmt, auch wenn ich &amp;quot;Angreifer&amp;quot; in dem Beispiel eher als &amp;quot;Webseitenbetreiber&amp;quot; beschreiebn wuerde, da er nicht wirklich aktiv einen Angriff durchfuehrt, oder? Bitte nochmal ueber meinen Hinweis aus G 5.WA18 nachdenken: Ist Clickjacking-Schutz tatsaechlich Grundschutz? Ich bin mir da selber nicht so wirklich sicher.&lt;br /&gt;
&lt;br /&gt;
== M 5.WA21Sichere Anbindung von Hintergrundsystemen an Web-Anwendungen (Markus, Matthias) ==&lt;br /&gt;
; Verantwortliche:&lt;br /&gt;
 Architekten fehlen. Entwickler müssen die Views umsetzen und die Datasource entsprechend einbinden - die fehlen hier ebenfalls.&lt;br /&gt;
; DirectorySystem Beispiel:&lt;br /&gt;
 Das DirectorySystem wird in dem angegeben Beispiel zum Single Point of Failure - das wird verschwiegen.&lt;br /&gt;
; Firewalls:&lt;br /&gt;
 Das sind fachlich-blinde Systeme. Was ist mit WAFs / IDS / IPS etc.?&lt;br /&gt;
([[User:Mrohr|Matthias]]) Stimmt, das hat in diesem Baustein nichts zu suchen&lt;br /&gt;
&lt;br /&gt;
; ([[User:Mrohr|Matthias]]) Typische Hintergrundsysteme&lt;br /&gt;
Hier fehlt irgendwie &amp;quot;Middleware&amp;quot;, die ist denke ich nicht immer Legacy&lt;br /&gt;
&lt;br /&gt;
== M 5.WA23Systemarchitektur einer Web-Anwendung (Markus, Matthias) ==&lt;br /&gt;
; Verantwortliche:&lt;br /&gt;
Auch hier fehlend wieder die Architekten. &lt;br /&gt;
([[User:Mrohr|Matthias]]) Stimmt, habe das Dokument mal komplett durchgesucht.Tatsaechlich wird der &amp;quot;Architekt&amp;quot; niemals genannt, das scheint also eher ein grundseatzliches Problem zu sein. Der Administrator hat hier aber nun wirklich nichts zu suchen.&lt;br /&gt;
&lt;br /&gt;
; Virtualisierung:&lt;br /&gt;
Virtualisierung bietet weitere Angriffsvektoren (z.B.: Hypervisor) die eine &amp;quot;Blech&amp;quot;Farm nicht bietet.&lt;br /&gt;
&lt;br /&gt;
([[User:Mrohr|Matthias]]) Genau, wobei auch der ganze Bereich geshareter Plattformen (z.B. By SharePoint) hier fehlt.&lt;/div&gt;</summary>
		<author><name>Mrohr</name></author>	</entry>

	<entry>
		<id>https://wiki.owasp.org/index.php?title=Talk:OWASP_Review_BSI_IT-Grundschutz_Baustein_Webanwendungen&amp;diff=130208</id>
		<title>Talk:OWASP Review BSI IT-Grundschutz Baustein Webanwendungen</title>
		<link rel="alternate" type="text/html" href="https://wiki.owasp.org/index.php?title=Talk:OWASP_Review_BSI_IT-Grundschutz_Baustein_Webanwendungen&amp;diff=130208"/>
				<updated>2012-05-21T15:55:02Z</updated>
		
		<summary type="html">&lt;p&gt;Mrohr: /* M 5.WA21Sichere Anbindung von Hintergrundsystemen an Web-Anwendungen (Markus) */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Since it's about a review of a document in German, all the discussions will be done in German :-)&lt;br /&gt;
&lt;br /&gt;
Diskussionen rund um den Review des &amp;quot;IT-Grundschutzbausteins Webanwendungen&amp;quot; finden hier statt, sinnvollerweise auf Deutsch :-)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Vorschlag für Kriterien, die an unser Review angelegt werden sollten (.kai) ==&lt;br /&gt;
&lt;br /&gt;
* Der Baustein soll alle wichtigen Themen der Entwicklung sicherer&lt;br /&gt;
Webanwendungen enthalten.&lt;br /&gt;
&lt;br /&gt;
* Der Baustein soll die verschiedenen Phasen der Software-Entwicklung&lt;br /&gt;
vollständig abdecken.&lt;br /&gt;
&lt;br /&gt;
* Der Baustein soll zwischen verbindlichen, prüfbaren Vorgaben und&lt;br /&gt;
unverbindlichen Empfehlungen sprachlich sauber unterscheiden (hier&lt;br /&gt;
spielt mein Auditorenblick eine Rolle). Vor allem soll der Baustein&lt;br /&gt;
verbindliche Anforderungen auch tatsächlich stellen. Alle&lt;br /&gt;
verbindlichen Anforderungen müssen unabhängig von der jeweiligen&lt;br /&gt;
Umgebung auch umsetzbar sein, d.h. sie müssen entsprechend generisch&lt;br /&gt;
sein.&lt;br /&gt;
&lt;br /&gt;
* Die Maßnahmen sollen nur in (begründbaren) Ausnahmen zu Empfehlungen&lt;br /&gt;
von OWASP im Widerspruch stehen.&lt;br /&gt;
&lt;br /&gt;
* Die Maßnahmen sollen verständlich und anwendbar sein.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== &amp;quot;Hilfsmittel&amp;quot; (Markus, Matthias) ==&lt;br /&gt;
Ich würde das Script zur Vermeidung von Clickjacking wrappen und nicht als losen Skript-block in den Text einbinden - einfach schlechter Programmierstiel diese losen Blöcke.&lt;br /&gt;
Der Zugriff auf das Body-Element mit byTagName-Array[0] ist auch nicht wirklich gut. Ich halte Zugriffe über das DOM (klassisch), bei ID bzw. XPATH für besser. &lt;br /&gt;
&lt;br /&gt;
([[User:Mrohr|Matthias]]) Verwunderlich finde ich aber, dass der Autor zum Einen zwar von der Verwendung von JavaScript vollstaendig abraet, zum Anderen aber eben solches als Best-Practice-Ansatz fuer Click Jacking empfiehlt.&lt;br /&gt;
&lt;br /&gt;
SQL-Injection Characters:&lt;br /&gt;
die Pipe fehlt hier zur Textkonatenierung&lt;br /&gt;
+ / - haben auch eine Bedeutung bei JOINs.&lt;br /&gt;
&lt;br /&gt;
([[User:Mrohr|Matthias]]) Special Character bzw. DB Escaping ist schon recht DB-spezifisch (siehe [https://www.owasp.org/index.php/SQL_Injection_Prevention_Cheat_Sheet SQL Prevention Cheat sheet]). Wozu werden die hier ueberhaupt aufgefuehrt? Um Eingebafilterung nach pot. SQL Injections durchzufuheren, oder um eine eigene Escaping-Funktion zu schreiben? Raus damit!&lt;br /&gt;
&lt;br /&gt;
== &amp;quot;Goldene Regeln&amp;quot; (Matthias) ==&lt;br /&gt;
&lt;br /&gt;
Hier meine Anmerkungen zu diesem Dokument:&lt;br /&gt;
&lt;br /&gt;
; 1. Für mich fehlende Punkte&lt;br /&gt;
* Korrektur der Ursache (Root Cause) von Schwachstellen statt  Verhinderung deren Ausnutzung&lt;br /&gt;
* Bezug auf Minimierung der Angriffsfläche und Least-Privilege-Prinzip&lt;br /&gt;
* Bezug auf Defense-in-Depth-Prinzip&lt;br /&gt;
* Verwendung von getesteten Security APIs (z.B. OWASP ESAPI) statt selbstentwickelter Funktionen&lt;br /&gt;
* Bezug auf Externalisierung von Sicherheitsfunktionen, sowie deklerative vor programmatischer Sicherheit.&lt;br /&gt;
&lt;br /&gt;
; 2. Begriff &amp;quot;Web-Anwendung&amp;quot;&lt;br /&gt;
Würde ich generell durch &amp;quot;Webanwendung&amp;quot; ersetzen.&lt;br /&gt;
&lt;br /&gt;
; 3. Einleitung (&amp;quot;Web-Anwendungen stellen Funktionalität zur Verfügung, ...&amp;quot;)&lt;br /&gt;
&lt;br /&gt;
Wozu dient dieser Satz?&lt;br /&gt;
&lt;br /&gt;
; 4. &amp;quot;Die Architektur der Web-Anwendung ist im Sicherheitskonzept zu  dokumentieren.....&amp;quot; &lt;br /&gt;
&lt;br /&gt;
Ich fände es sinnvoller, wenn hier von der &amp;quot;Sicherheitsarchitektur&amp;quot; gesprochen wird, welche etwa neben den sicherheitsrelevanten Datenflüssen, sensible Komponenten, Entry Points, Akteure architekturelle Security Controls wie Authentisierung, Kryptographie und natürlich die Trust Boundaries beinhaltet.&lt;br /&gt;
&lt;br /&gt;
; 5. &amp;quot;Bei Web-Anwendungen handelt es sich häufig um spezielle Eigenentwicklungen....&amp;quot;&lt;br /&gt;
&lt;br /&gt;
Erstens würde ich hier den geläufigen Begriff &amp;quot;Individualsoftware&amp;quot; verwenden. Zweitens würde ich statt bestimmte SDLC-Phasen vorzugeben (die Begriffe &amp;quot;Softwareverteilung&amp;quot; und &amp;quot;Integration&amp;quot; sind mir bei Webanwendungen bisher noch nicht so häufig untergekommen), besser von der Notwendigkeit sprechen, Sicherheit in allen Entwicklungsphasen zu berücksichtigen, also eines SDLs.&lt;br /&gt;
&lt;br /&gt;
; 6. &amp;quot;Alle Ein- und Ausgaben der Web-Anwendung müssen in eine normalisierte Form überführt werden....&amp;quot;&lt;br /&gt;
&lt;br /&gt;
Normalisierung ist für mich nicht gleich Kanonsierung, auch wenn beide Begriffe häufig als synonym verwendet werden.  Der Unterschied wird in der [http://owasp-esapi-java.googlecode.com/svn/trunk_doc/2.0-rc4/org/owasp/esapi/Encoder.html API-Beschreibung der ESAPI] erklärt. Die Normalisierungs-Funktion ist allerdings schon vor einiger Zeit aus der ESAPI [https://lists.owasp.org/pipermail/esapi-dev/2010-January/000266.html rausgeflogen]. Die generelle Kanonisierung von Ausgaben halte ich dazu für nicht sinnvoll.&lt;br /&gt;
&lt;br /&gt;
Zweitens, finde ich den weiteren Text zwar grundsätzlich formal korrekt, aber so allgemein, dass dieser glaube ich niemandem so richtig etwas bringt.  &lt;br /&gt;
&lt;br /&gt;
Besser fände ich hier Ein- von Ausgabevalidierung grundsätzlich voneinander abzugrenzen. Etwa was ich per Eingabevalidierung (Längenprüfung, Casting, etc. per Whitelisting) und was mit Ausgebavalidierung (Enkodierung, Escaping, Parametrisierung) machen muss und kann.&lt;br /&gt;
&lt;br /&gt;
Eingabedaten können technisch zudem auch Werte eingelesener Property-Dateien sein. Muss ich die auch validieren? Ist das dann noch Grundschutz? &lt;br /&gt;
&lt;br /&gt;
; 7. &amp;quot;Für den Zugriff auf sensitive Funktionen oder Informationen muss die Web-Anwendung eine wirksame Authentisierung und Sitzungsverwaltung unterstützen. Die Eigenschaften der Sitzungs-ID müssen so gewählt werden, dass die Sitzung ausreichend geschützt ist. ....&amp;quot;&lt;br /&gt;
&lt;br /&gt;
Besser fände ich &amp;quot;eine Authentisierung, die über eine dem Schutzbedarf der Anwendung angemessene Stärke verfügt.&amp;quot; &lt;br /&gt;
&lt;br /&gt;
Eigentlich geht es doch mehr um den Schutz der Sitzungs-ID, da diese gewöhnlich im Verlauf einer Sitzung den Client authentisiert. Oder den Schutz des Zugriffs auf eine Sitzung. &lt;br /&gt;
&lt;br /&gt;
Zudem fehlt hier meiner Meinung nach der Hinweis auf die bevorzugte Verwendung getesteter Standardkomponenten.&lt;br /&gt;
&lt;br /&gt;
; 8. &amp;quot;Die Web-Anwendung sollte die zu übermittelnden Daten schützen.&amp;quot;&lt;br /&gt;
&lt;br /&gt;
Dies würde ich nur auf sensible Daten beziehen. Zusätzlich zu HTTPS würde ich hier schreiben, dass sensible Daten generell nicht in der URL übertragen werden dürfen.&lt;br /&gt;
&lt;br /&gt;
; 9. &amp;quot;Die Preisgabe interner Informationen (z.B. Kommentare, Fehlermeldungen)&amp;quot;&lt;br /&gt;
&lt;br /&gt;
Hier würde ich eher schreiben &amp;quot;(IN Kommentaren, Fehlermeldungen, HTTP Headern, etc.)&amp;quot;&lt;br /&gt;
&lt;br /&gt;
; 10. &amp;quot;Fehler müssen so behandelt werden, ... müssen Fehler bei der Autorisierung zu einer Verweigerung beim Zugriff auf die angeforderte Ressource führen.&amp;quot;&lt;br /&gt;
&lt;br /&gt;
Sprachlich: &amp;quot;Die Webanwendung muss sich stets in einem sicheren Zustand befinden. Beispielsweise müssen Fehler bei der Autorisierung zu einer Verweigerung des Zugriffs führen (Default-Deny-Strategie).&amp;quot;&lt;br /&gt;
&lt;br /&gt;
; 11. &amp;quot;Die Logging-Funktionen der Web-Anwendung müssen aufgetretene Ereignisse derart protokollieren, dass sicherheitskritische Vorfälle nachvollzogen werden können.&amp;quot;&lt;br /&gt;
&lt;br /&gt;
Hier würde hier eher von &amp;quot;allen sicherheitsrelevanten Ereignissen&amp;quot; sprechen.&lt;br /&gt;
&lt;br /&gt;
Weiterhin sollten insbesondere beim Logging der Datenschutz berücksichtigt werden, personenbezogene Daten also nach Möglichkeit nicht oder nur anonymisiert in technischen Logdateien protokolliert werden.&lt;br /&gt;
&lt;br /&gt;
; 12. &amp;quot;Alle Sicherheitsmechanismen (z.B. Authentisierung und Zugriffskontrolle) sind serverseitig zu implementieren und können nicht durch clientseitige Mechanismen ersetzt werden.&amp;quot;&lt;br /&gt;
&lt;br /&gt;
Die Aussage ist so nicht korrekt. Darüber hatten wir bereits bei der ASVS mehrfach diskutiert. &lt;br /&gt;
&lt;br /&gt;
Überall dort wo der Client angegriffen wird, also etwa bei RIAs (Stichwort DOM-Based XSS) müssen wir Security Controls clientseitig implementieren. Es gibt mittlerweile deshalb auch eine Portierung der ESAPI auf Javascript. Überall dort wo der Server oder Hintegrundsysteme angegriffen werden, ist die Aussage aber natürlich zutreffend.&lt;br /&gt;
&lt;br /&gt;
== &amp;quot;Gefährdungen&amp;quot; (Markus, Dennis, .... &amp;lt;Dein Name&amp;gt;) ==&lt;br /&gt;
; Generell:&lt;br /&gt;
Reference auf RFCs fehlen.&lt;br /&gt;
&lt;br /&gt;
==B.5.XX Web-Anwendungen ==&lt;br /&gt;
; 1. Erster Absatz - Letzter Satz: --Wieso werden hier nur HTML/XML Doks und Oberflächen angesprochen? Was ist der Unterschied zwischen einem HTML-Dok und einer Oberfläche? Was ist mit  Flash, etc.? Was ist mit WebSockets?&lt;br /&gt;
; 2. Stichpunkt &amp;quot;Protokollierung&amp;quot;: Sicherheits relevant ist ein sehr dehnbarer Begriff - Eine bessere Formulierung könnte sein: Zur Rekonstruktion von Nutzerhandlungen nötige Ereignisse (positve &amp;amp; negative) müssen protokolliert werden . . . &lt;br /&gt;
; 3. Absatz: &amp;quot;Abgrenzung des Bausteins&amp;quot;: &amp;quot;Die spez. Sicherheitsanforderungen an Web-Services werden in diesem Baustein nicht betrachtet&amp;quot; --&amp;gt; Wie so nicht? Was ist das Backend von einer Rest / AJAX-basierenden Webanwendung denn anderes als ein Web-Service? Diesen Satz würde ich entfernen.&lt;br /&gt;
; 4.Vorsätzliche Handlungen -&amp;gt; Web-Spoofing (G.5.87) -- Missverständliche Bezeichnung / Nomenklatur&lt;br /&gt;
; 5. Seite 4 : erste Zeile &amp;quot;Umsetzung&amp;quot;: &amp;quot;dafür umzusetztende Komponenten müssen die Webanwendung schützen...&amp;quot; - Hier fehlt mir der Hinweis, dass dieser Schutz verifiziert werden muss.&lt;br /&gt;
; 6 Seite 5: &amp;quot;Umsetzung&amp;quot; - Wir haben CSRF, D(D)os und SQL-Injection aber wo ist XSS?&lt;br /&gt;
; 7 Seite 7: &amp;quot;Die Sicherheitsfunktion wird ausschließlich clientseitig...&amp;quot; --&amp;gt; Warum muss der Angreifer überhaupt einen Browser umkonfigurieren? Was ist mit Proxies, Scripts, etc.? Ich würde das reduzieren darauf, dass rein Webbrowser-basierende Schutzfunktionen einfach umgangen werden können.&lt;br /&gt;
; 8 Seite 8: Die angesprochenen Punkte hinterlassen den Eindruck nicht vollständig zu sein: Mir fehlen Punkte wie &amp;quot;Outsourcing&amp;quot;, &amp;quot;KnowHow der Entwickler&amp;quot;, Tooling, Framework-Auswahl, etc.&lt;br /&gt;
; 9 Seite 9: Eigentlich möchte der Autor hier über Datenschutz sprechen. Abgesehen von den letzten drei Zeilen geht es aber nur um &amp;quot;User tracking&amp;quot; - Wo ist der Rest der Datenschutzproblematik? Warum der Fokuss auf Tracking? Mir ist das zu einseitig.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
tbd.&lt;br /&gt;
&lt;br /&gt;
; Wortwahl:&lt;br /&gt;
Ich stosse innerhalb der Texte immer wieder an die Worten '''Hintergrundsystem''' und '''Sicherheitskontext'''.&lt;br /&gt;
'''Hintergrundsystem:''' besseres Synonym?&lt;br /&gt;
'''Sicherheitskontext:''' nur weil es in den Texten um Sicherheit geht muss nicht an jeder Stelle immer wieder das Wort _Sicherheits_kontext eingebaut werden.&lt;br /&gt;
Bsp: &amp;quot;Erlangt ein Angreifer Kenntnis von einer solchen gültigen, aber nicht mehr genutzten SessionID, so kann er die Web-Anwendung im Sicherheitskontext des nicht abgemeldeten Benutzers weiter verwenden.&amp;quot; (G 5,WA12 Unzureichendes Session-Management von Web-Anwendungen)&lt;br /&gt;
Verbesserungsansansatz: ... so kann er die Web-Anwendung anstelle des eigentlichen Besitzers weiterhin verwenden.&lt;br /&gt;
&lt;br /&gt;
== &amp;quot;G 2.WA01 Mangelhafte Auswahl oder Konzeption von Web-Anwendungen&amp;quot; (Matthias) ==&lt;br /&gt;
&lt;br /&gt;
Nachdem ich mir diese Gefährdung durchgelesen hatte, fehlten mir ehrlich gesagt etwas die Worte. Nicht nur, dass hier fast jeder zweite Satz entweder falsch ist bzw. massive Fehler enthält oder ich diesen schlicht nicht verstehe, ist der ganze Text sprachlich wirklich enorm verbesserungsfähig. &lt;br /&gt;
&lt;br /&gt;
Na gut, ich konzentriere mich mal auf die fachlichen Punkte:&lt;br /&gt;
&lt;br /&gt;
; 1. Security Controls&lt;br /&gt;
Werden mal mit &amp;quot;Schutzmechanismen&amp;quot;, mal mit &amp;quot;Sicherheitskomponenten&amp;quot; und dann wieder als &amp;quot;Sicherheitsfunktionen&amp;quot; bezeichnet. Hier macht eine einheitliche Benennung sicherlich Sinn und ist weniger verwirrend.&lt;br /&gt;
&lt;br /&gt;
; 2. &amp;quot;Eine Web-Anwendung ist in der Regel ein verteiltes, komplexes System bestehend aus unterschiedlichen Komponenten (z. B. Webserver, Applikationsserver, Hintergrundsysteme)&amp;quot;&lt;br /&gt;
&lt;br /&gt;
Eine Webanwendung besteht sicher nicht aus einem Webserver- oder anderer infrastruktureller Komponenten, sondern ist Software welches diese nutzt.&lt;br /&gt;
&lt;br /&gt;
; 3. &amp;quot;Bei individuell entwickelten Web-Anwendungen sind im Allgemeinen die Frameworks, Komponenten und Schnittstellen im Rahmen der Konzeption auszuwählen und deren Einbindung und Absicherung zu betrachten....Im Gegensatz dazu ist bei der Konzeption von Web-Anwendungen auf Basis von Standardsoftware insbesondere auf die Auswahl der Software und die Konfiguration der Teilkomponenten zu achten&amp;quot;&lt;br /&gt;
&lt;br /&gt;
Wir unterscheiden im Rahmen von Webanwendungen eigentlich Free or Opensource Software (FOSS bzw. FLOSS), Standardsoftware und Individualsoftware voneinander. Wir unterscheiden nicht Frameworks von Standardsoftware. Frameworks können Teil von Standardsoftware sein, wie etwa bei SharePoint, SAP, etc, oder aber FOSS, wie etwa Spring. Die ganzen Absätze machen für mich daher keinen Sinn.&lt;br /&gt;
&lt;br /&gt;
; 4. &amp;quot;Eine Sicherheitsfunktion (z. B. Authentisierung, Autorisierung) wird nicht an einer Stelle umgesetzt und verwendet, sondern ist mehrfach in der Web- Anwendung realisiert. Wird diese Sicherheitsfunktion an den verschiedenen Stellen unterschiedlich umgesetzt, führt dies zu einem uneinheitlichen Sicherheitsniveau.&amp;quot;&lt;br /&gt;
&lt;br /&gt;
Natürlich ist die mehrfache Verwendung bestimmter Security Controls, beispielsweise von Zugriffskontrollen (Complete-Mediation) oder Validierung (Robustheit) erstrebenswert. Was der Autor hier wahrscheinlich meinte, war die Notwendigkeit diese zu Kapseln bzw. zu Externalisieren. Das bezieht sich im übrigen nicht nur auf die Controls selbst, sondern auch auf ihre Parametrisierung (etwa. über Konfigdateien / XACML).&lt;br /&gt;
&lt;br /&gt;
Wichtiger wäre in diesem Zusammenhang zudem die fehlende Berücksichtigung bestimmter Security Controls.&lt;br /&gt;
&lt;br /&gt;
; 5. &amp;quot;Auswahl von Web-Anwendungen auf Basis von Standardsoftware&amp;quot;&lt;br /&gt;
Was will der Satz sagen? Ich wähle Standardsoftware aus, aber doch keine Webanwendungen. Oder heißt das, ich kaufe eine existierende Anwendung ein (Webanwendung!=Indivudualsoftware)? &lt;br /&gt;
&lt;br /&gt;
; 6. &amp;quot;Das ausgewählte Produkt verfügt nicht über die ausreichende Sicherheitsfunktionalität, ... Daher müssen die notwendigen Schutzmechanismen nachträglich hinzugefügt werden, wodurch zusätzliche Aufwände entstehen.&amp;quot;&lt;br /&gt;
Das ist etwas sehr positiv formuliert. Tatsächlich können fehlende Security Controls in zugekaufter Software (insb. Standardsoftware) in der Realität häufig gar nicht hinzugefügt werden oder nur perimetrisch (z.B. per WAF oder Access Gateway).&lt;br /&gt;
&lt;br /&gt;
; 7. &amp;quot;Die Hintergrundsysteme werden unzureichend abgesichert und dadurch ist die Datenbank der Web-Anwendung aus dem Internet erreichbar.&amp;quot;&lt;br /&gt;
Gehören fehlende Netzwerksegmentierung bzw. Firewallregeln wirklich in diesen Kontext? Das ist doch eigentlich Grundschutz der Infrastruktur, oder?&lt;br /&gt;
&lt;br /&gt;
; 8. &amp;quot;Aufgrund schwacher Parameter in der Konfiguration des Frameworks zum Session-Management werden unsichere SessionIDs erzeugt.&amp;quot;&lt;br /&gt;
Was sind &amp;quot;schwache&amp;quot; Parameter?&lt;br /&gt;
&lt;br /&gt;
Welches Framework erlaubt unsichere SessionIDs durch eine &amp;quot;schwache&amp;quot; Konfiguration zu erzeugen?&lt;br /&gt;
&lt;br /&gt;
; 9. &amp;quot;Wird die Konfiguration des Web-Browsers durch einen Angreifer manipuliert, können die clientseitig umgesetzten&amp;quot;&lt;br /&gt;
&lt;br /&gt;
Manipuliert ein Angreifer die Konfguration seines Webbroswers, wenn er einen MITM-Proxy konfiguriert?&lt;br /&gt;
&lt;br /&gt;
Wie bereits bei den &amp;quot;Goldenen Regeln&amp;quot; angemerkt, gilt auch hier, das manche Security Controls auch clientseitig umgesetzt werden dürfen (etwa. zur Verhinderung von Dom-Based XSS).&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== &amp;quot;G 5.WA10 Fehler in der Web-Anwendungslogik&amp;quot; (Dennis) ==&lt;br /&gt;
; 1. &amp;quot;Damit kann aufgrund der Prüfreihenfolge ein hoher Ressourcenverbrauch provoziert werden, der für Denial-of-Service-Angriffe ausgenutzt werden kann.&amp;quot;&lt;br /&gt;
Meiner Meinung nach passt in diesem Kontext die Attacke DoS nicht ganz. Falls die nachfolgende Funktionalität wegen der langen Ausführungszeit der Filterkomponente übersprungen wird bzw. ein Fehler auftritt würde dies meiner Ansicht in die Thematik Anwendungslogik passen. Eine DoS-Attacke kann hingegen anhand jeder Funktion durchgeführt werden.&lt;br /&gt;
&lt;br /&gt;
([[User:Mrohr|Matthias]]) Jo stimmt, aber ich stimme mit der Aussage eigentlich schon ueberein, auch wenn diese zugegeben etwas ungluecklich formuliert ist. Es geht hier ja darum, rechenintensive Pruefungen/Filterung moeglichst zu vermeiden bzw. zu reduzieren. Aus diesem Grund machen wir ja auch bei der AV-Pruefung zunaechst Blacklist-Checks und erst am Ende rechenintensive statistische oder verhaltensbezogene Pruefungen.&lt;br /&gt;
&lt;br /&gt;
== &amp;quot;G 5.WA11 Umgehung clientseitig umgesetzter Sicherheitsfunktionen von Web-Anwendungen&amp;quot; (Dennis) ==&lt;br /&gt;
; 1. &amp;quot;Ein Angreifer kann diese ausnutzen, um beispielsweise unbefugt Befehle an Hintergrundsysteme der Web-Anwendung zu übermittlen (z.B. in Form von Datenbankanfragen bei einer SQL-Injection).&amp;quot;&lt;br /&gt;
Umformulierung des Inhalts der Klammer. Hatte beim ersten Lesen für mich den Anschein, als ob ein Formular genutzt werden könnte welches den Nutzer aufforder eine SQLI einzugeben. Ich denke &amp;quot;Datenbankanfrage zwecks Ausführung einer SQL-Injection&amp;quot; würde besser passen.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== G 2.WA02 Mängel bei der Entwicklung und der Erweiterung von Web-Anwendungen (Matthias) ==&lt;br /&gt;
&lt;br /&gt;
Allgemein ist de obere Teil ok, die aufgezählten &amp;quot;Auswirkungen von fehlenden Vorgaben&amp;quot; verstehe ich jedoch nicht. Wo ist etwa der Bezug von Barrierefreiheit auf die Anwendungssicherheit?&lt;br /&gt;
&lt;br /&gt;
Mein Vorschlag, um diese Punkte etwa sinnvoll umzubauen:&lt;br /&gt;
* &amp;quot;Fehlendes Vorgehensmodell&amp;quot;: Bezug auf fehlende Berücksichtigung von Sicherheit im SDLC. Statt eines SDLCs selbst sollte hier besser auf die Notwendigkeit eines Secure Development Lifecycle (SDL) hingewiesen werden&lt;br /&gt;
* &amp;quot;Fehlende Programmierrichtlinien&amp;quot; =&amp;gt; Besser wäre hier &amp;quot;Fehlende Sicherheitsrichtlinien in der Programmierung&amp;quot; also &amp;quot;Secure Coding Guidelines&amp;quot;&lt;br /&gt;
* &amp;quot;Testfälle&amp;quot; =&amp;gt; &amp;quot;Sicherheitsrelevante Testfälle&amp;quot; (z.B. Security Unit Tests). &lt;br /&gt;
* &amp;quot;Barrierefreiheit&amp;quot;: Warum nicht an dieser Stelle die Auswirkungen von Sicherheitsfunktionen auf die Bedienbarkeit, etwa anhand von CAPTCHAS erläutern?&lt;br /&gt;
&lt;br /&gt;
== G 2.WA03 Unzureichender Schutz personenbezogener Daten bei Web-Anwendungen (Matthias) ==&lt;br /&gt;
&lt;br /&gt;
Der Titel dieses Bausteines heißt &amp;quot;Schutz personenbezogener Daten&amp;quot;, die genannten Beispiele beziehen sich bis auf den letzten jedoch auf die missbräuchliche (oder zumindest problematische) Nutzung aus Sicht des Datenschutzes. &lt;br /&gt;
&lt;br /&gt;
Die Punkt 1-3 sollten daher besser entfallen und z.B. durch die Folgenden ersetzt werden:&lt;br /&gt;
* Unsichere Einbindung von sozialen Netzwerken (Bezug nehmen auf den Like-Button bei Facebook)&lt;br /&gt;
* Unsichere Einbindung von Werbeinhalten&lt;br /&gt;
* Unsichere Übertragung und Caching&lt;br /&gt;
* Unsichere Protokollierung&lt;br /&gt;
* Ungenügender Zugriffsschutz&lt;br /&gt;
* Verstoß des Minimalprinzips bzw. der Zweckgebundenheit (welche Daten werden wirklich benötigt)&lt;br /&gt;
&lt;br /&gt;
Auch wäre es ggf. zumindest einen Verweis auf das BDSG zu machen.&lt;br /&gt;
&lt;br /&gt;
== G 4.33 Unzureichende oder fehlende Authentisierung (Matthias) ==&lt;br /&gt;
&lt;br /&gt;
; 1. Erster Absatz: &amp;quot;Wenn Authentisierungsmechanismen fehlen oder zu schlecht sind&amp;quot;&lt;br /&gt;
&lt;br /&gt;
&amp;quot;schlecht&amp;quot; sollte vlt besser durch &amp;quot;unzureichend&amp;quot; ersetzt werden.&lt;br /&gt;
&lt;br /&gt;
; 2. &amp;quot;Sicherheitslücken entstehen bei... der Benutzerauthentisierung&amp;quot;&lt;br /&gt;
&lt;br /&gt;
Hier findet nur ein Bezug auf &amp;quot;Passwörter&amp;quot; statt. Der Bezug auf die fehlerhaft implementierte oder dem Schutzbedarf ungenügende Schutzmechanismen (z.B. keine 2-Faktor-Authentisierung bei hochsensiblen Daten) fehlt. Auch auf das komplette fehlen von Authentisierungs-Controls wird hier nicht  eingegangen&lt;br /&gt;
&lt;br /&gt;
; 3. &amp;quot;Sicherheitslücken entstehen bei... der Komponentenauthentisierung&amp;quot;&lt;br /&gt;
&lt;br /&gt;
Wie bei 2., wird auch hier wieder nur auf Passwörter, nicht jedoch auf das fehlen von Controls selbst eingegangen. An dieser Stelle fehlt auch ein Hinweis auf die Notwendigkeit dedizierter Benutzeraccounts.&lt;br /&gt;
&lt;br /&gt;
; 4. &amp;quot;Sicherheitslücken entstehen bei... der Wahl des Verfahrens&amp;quot;&lt;br /&gt;
&lt;br /&gt;
Statt untauglich würde ich auch hier von &amp;quot;dem Schutzbedarf der Daten nicht angemessen&amp;quot; sprechen, eigentlich gehört das für mich aber in die obigen Punkte.&lt;br /&gt;
&lt;br /&gt;
; 5. Serverseitige Authentisierung fehlt&lt;br /&gt;
&lt;br /&gt;
Auch der Server (bzw. die Anwendung selbst) kann sich fehlerhaft oder ungenügend beim Benutzer authentsieren, etwa über DNS, SSL-Zertifikate, etc.&lt;br /&gt;
&lt;br /&gt;
== G 4.WA04 Unzureichende Validierung von Ein- und Ausgabedaten bei Web-Anwendungen (Matthias) ==&lt;br /&gt;
&lt;br /&gt;
; 1. &amp;quot;Unzureichende Validierung von Eingabedaten&amp;quot;&lt;br /&gt;
&lt;br /&gt;
Die genannten Beispiele sind genau keine korrekten Beispiele für diesen Fall, sondern betreffen die Ausgabevalidierung bzw. Enkodierung. Typische Fehler der Eingabevalidierung ist eine Manipulierbarkeit der Business Logik.&lt;br /&gt;
&lt;br /&gt;
; 2. &amp;quot;Unzureichende Validierung von Ausgabedaten&amp;quot;&lt;br /&gt;
&lt;br /&gt;
Hier geht es zentral um die Verhinderung von Interpreter Injection, also serverseitig (z.B. SQL oder LDAP Injection) oder clientseitig (XSS, JSON Injection, etc.). Statt &amp;quot;können die Ausgaben Schadcode&amp;quot; enthalten würde ich hier eher davon Sprechen, dass ein solcher Interpreteraufruf manipuliert werden kann (was dann z.B. zur Einschleusung von Schadcode genutzt werden kann).&lt;br /&gt;
&lt;br /&gt;
; 3. &amp;quot;Die Suchfunktion der Web-Anwendung verwendet die Eingaben der Benutzer ungefiltert&amp;quot;&lt;br /&gt;
&lt;br /&gt;
Mit ungenügender &amp;quot;Filterung&amp;quot; hat SQL Injection nichts zu tun,  eigentlich geht es hierbei darum, dass SQL-Anfragen dynamisch mit unvalidierten Eingebedaten zusammengebaut (konkateniert) werden.&lt;br /&gt;
&lt;br /&gt;
; 4. &amp;quot;Ungefilterter HTML-Code in Kommentar-Funktion&amp;quot;&lt;br /&gt;
&lt;br /&gt;
Hier fehlt der Bezug auf persistentes XSS, das hier sicherlich zentral ist.&lt;br /&gt;
&lt;br /&gt;
== G 4.WA05 Fehlende oder mangelhafte Fehlerbehandlung durch Web-Anwendungen (Tobias, Matthias) ==&lt;br /&gt;
; Abschnitt &amp;quot;Unsichere Fehlerbehandlung&amp;quot;&lt;br /&gt;
Die G adressiert &amp;quot;Unsichere Fehlerbehandlung&amp;quot;, der Abschnitt die &amp;quot;Unsichere Fehlerbehandlung in Sicherheitskomponenten&amp;quot;. Entsprechend sollte der fettgedruckte Teil angepasst werden.&lt;br /&gt;
&lt;br /&gt;
; &amp;quot;fehlende SQL-Parameter,&amp;quot;&lt;br /&gt;
Sollte besser &amp;quot;Fehlermeldungen bei ungültigen SQL-Abfragen&amp;quot; lauten.&lt;br /&gt;
&lt;br /&gt;
; &amp;quot;Auch scheinbar unkritische Informationen, wie die Meldung ob (..)&amp;quot;&lt;br /&gt;
Korrekt, allerdings nicht nachvollziehbar, wenn das Problem der Leser nicht schon bekannt ist. Daher erweitern nach &amp;quot; Rahmen von Brute-Force-Angriffen ausgenutzt werden.&amp;quot; mit &amp;quot;. Bei Brute-Force-Angriffen wäre in diesem Fall klar, dass der Benutzername gültig ist.&amp;quot;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[User:Mrohr|Matthias]]): Stimme dem Obigen auch zu, ausserdem:&lt;br /&gt;
&lt;br /&gt;
; Sprachlich: &amp;quot;kann dies unvorhersehbare Auswirkungen haben und den Betrieb der Web-Anwendung bis zur Unerreichbarkeit einschränken.&amp;quot;&lt;br /&gt;
&lt;br /&gt;
&amp;quot;Unerreichbarkeit&amp;quot; ist etas merkwuerdig ausgedrueckt, besser ware hier von der &amp;quot;Verfuegbarkeit&amp;quot; zu sprechen. Im Uebrigen fehlt vollstaendig der Bezug auf die Verfuegbarkeit als Primaeres Schutzziel der Informationssicherheit.&lt;br /&gt;
&lt;br /&gt;
; &amp;quot;Clientseitige Fehlerbehandlung&amp;quot;&lt;br /&gt;
Das stimmt soweit, das generelle Problem ist jedoch genereller, naehmlich die clientseitige Abbildung sicherheitsrelaventer Logik (in diesem Fall die Fehlerbehandlung)&lt;br /&gt;
&lt;br /&gt;
== G 4.WA06 Unzureichende Nachvollziehbarkeit von sicherheitsrelevanten Ereignissen bei Web-Anwendungen (Matthias) ==&lt;br /&gt;
&lt;br /&gt;
; 1. Erster Absatz: &amp;quot;Die Behebung einer Schwachstelle ist dann nicht oder nur unter erschwerten Bedingungen möglich.&amp;quot;&lt;br /&gt;
&lt;br /&gt;
Hier würde ich ergänzen: &amp;quot;...und Angriffe auf die Anwendungen können ggf. nicht erkannt oder nachvollzogen werden&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
; 2. &amp;quot;Beispiele&amp;quot;: Kommulierbarkeit&lt;br /&gt;
&lt;br /&gt;
Hier fehlt auch ein Bezug auf die Kommulierbarkeit von SIcherheitsereignissen, dass diese also auch von solchen anderer Systeme in Verbindung gesetzt werden können&lt;br /&gt;
&lt;br /&gt;
; 3. &amp;quot;Beispiele&amp;quot;: Gerichtsverwertbarkeit&lt;br /&gt;
&lt;br /&gt;
Auch die Möglichkeit zur Gerichtsverwertbarkeit (etwa durch eindeutigen Zeitstempel) und manipulationssicherer Speicherung, würde ich an dieser Stelle unbedingt erwähnen.&lt;br /&gt;
&lt;br /&gt;
== G 4.WA07 Offenlegung von Informationen bei Web-Anwendungen (Matthias) ==&lt;br /&gt;
&lt;br /&gt;
; 1. Titel&lt;br /&gt;
&lt;br /&gt;
Hier würde ggf. &amp;quot;Offenlegung vertraulicher Informationen&amp;quot; sicher besser passen als &amp;quot;Offenlegung von Informationen&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
; 2. Beispiellink&lt;br /&gt;
&lt;br /&gt;
Ein Beispiellink (mit und ohne Token) würde sicher die Verständlichkeit dieser Schwachstelle verbessern.&lt;br /&gt;
&lt;br /&gt;
; 3. Erster Absatz: &amp;quot;Wenn demzufolge Informationen unnötig offengelegt werden, steigt die Wahrscheinlichkeit eines erfolgreichen Angriffs.&amp;quot;&lt;br /&gt;
&lt;br /&gt;
Interne Informationen auszublenden ist eine Härtungsmaßnahme, deren Anzeige erhöht aber nicht zwangsläufig die Wahrscheinlichkeit eines erfolgreichen Angriffs. Ich würde diesen Satz weglassen.&lt;br /&gt;
&lt;br /&gt;
 ; 4. Fehlende Punkte&lt;br /&gt;
&lt;br /&gt;
* Ein Hinweis auf HTTP Header wäre hier sicher erwähnenswert.&lt;br /&gt;
* Weiterhin bzgl. der Anzeige von Traces und ein Verweis auf den Entsprechenden Baustein zur Fehlerbehandlung&lt;br /&gt;
&lt;br /&gt;
== G 5.WA14 Cross-Site Request Forgery (CSRF, XSRF) (Matthias) ==&lt;br /&gt;
&lt;br /&gt;
; 1. Erster Absatz: &amp;quot;Können Funktionen einer Web-Anwendung ohne weitere Überprüfung der Authentizität des HTTP-Requests (z.B. durch Tokens in versteckten Formularfeldern) genutzt werden&amp;quot;&lt;br /&gt;
&lt;br /&gt;
Statt &amp;quot;Funktionen&amp;quot; würde ich besser von &amp;quot;schreibenden Aktionen&amp;quot; sprechen, dann macht der Satz mehr Sinn.&lt;br /&gt;
&lt;br /&gt;
; 2. Dritter Absatz: &amp;quot;Im Gegensatz zu XSS (siehe ...￼ ) ist das Angriffsziel nicht die Information auf dem Client (z. B. in Cookies),&amp;quot;&lt;br /&gt;
&lt;br /&gt;
Dieser (Halb-)Satz macht keinen Sinn, auch weil es bei XSS nicht nur im Informationen auf dem Cient geht. Vorschlag: &amp;quot;ist das Angriffsziel nicht die Ausführung von Skriptcode, sondern von unbefugten, schreibenden Aktionen im Kontext des angemeldeten Benutzers.&amp;quot;&lt;br /&gt;
&lt;br /&gt;
; 3. Session Riding&lt;br /&gt;
&lt;br /&gt;
Session Riding ist quasi nur ein anderer Begriff für CSRF. Die einzige Form von CSRF die mir bekannt ist, sind Angriffe mit Standard-Passwörtern auf HTTP-Basic-Auth geschützten Ressourcen.&lt;br /&gt;
&lt;br /&gt;
Im Grunde ist Session Riding aber nur ein Synonym für CSRF. Der Absatz ist daher auch nur eine Wiederholung der obigen Beschreibung.&lt;br /&gt;
&lt;br /&gt;
; 4. Zum Beispiel: &amp;quot;Durch einen präparierten Link auf einer Webseite wird die Änderung des Zugangspasswortes des Routers eingeleitet.&amp;quot;&lt;br /&gt;
&lt;br /&gt;
Etwas ungüngstig ausgedrückt. Besser wäre: &amp;quot;wird eine Anfrage zur Änderung des Zugangspasswortes an den Router gesendet. Hierbei sendet der Browser automatisch den Session Cookie mit, worüber die Webanwendung die Authentizität der Anfrage verifiziert und die Änderung durchführt.&amp;quot;&lt;br /&gt;
&lt;br /&gt;
== G 5.WA18 Clickjacking (Matthias) ==&lt;br /&gt;
&lt;br /&gt;
Hier stellt sich mir nur die allgemeine Frage, ob Clickjacking, bzw. der Schutz davor tatsächlich einem Grundschutz zuzurechnen ist. Persönlich würde ich dies nicht tun.&lt;br /&gt;
&lt;br /&gt;
== M 2.WA02 Dokumentation der Architektur von Web-Anwendungen (Matthias) ==&lt;br /&gt;
&lt;br /&gt;
; Verantwortlich für die Umsetzung&lt;br /&gt;
Hier wäre auch die Nennung des &amp;quot;Architekten&amp;quot; sinnvoll&lt;br /&gt;
 &lt;br /&gt;
; Fehlende Bestandteile der Dokumentation:&lt;br /&gt;
* Schutzbedarf des Systems sowie der verarbeiteten Daten&lt;br /&gt;
* Schützenswerte Daten und Funktionen (Assets)&lt;br /&gt;
* Betriebliche Anforderungen an die Sicherheit bzw. eingesetzte Plattform&lt;br /&gt;
* Dokumentierte Konfigurationseinstellungen &lt;br /&gt;
* BIA (RTO, RPO)&lt;br /&gt;
* Schnittstellen&lt;br /&gt;
* Trust Boundaries&lt;br /&gt;
* Akteure (bzw. Trust Level)&lt;br /&gt;
* Sicherheitsannahmen&lt;br /&gt;
* Geltende Compliance-Anforderungen (BDSG, PCI DSS, etc.)&lt;br /&gt;
&lt;br /&gt;
; Benutzermanagement&lt;br /&gt;
&lt;br /&gt;
Wenn damit das Identity Management gemeint ist, gehört das Dokumentiert, ist aber keine Sicherheitsfunktion. Oder ist hiermit das Rollen- und Berechtigungskonzept gemeint? Grenzt sich aus meiner Sicht schwer mit dem Thema Authentisierung ab. &lt;br /&gt;
&lt;br /&gt;
; Prüffragen&lt;br /&gt;
&lt;br /&gt;
Hier fehlt etwas in Bezug auf Sicherheitsanforderungen. Beispiel: &amp;quot;Werden Sicherheitsanforderungen an den Betrieb während der Entwicklung abgestimmt und dokumentiert&amp;quot;&lt;br /&gt;
&lt;br /&gt;
== M 2.WA12 Entwicklung und Erweiterung von Anwendungen (Markus) ==&lt;br /&gt;
; &amp;quot;Es sollte darauf geachtet werden, dass Sicherheitsanforderungen&lt;br /&gt;
vollständig durch Sicherheitsmechanismen erfüllt und zur Erstellung von&lt;br /&gt;
Testfällen festgehalten werden.&amp;quot; --&amp;gt; Bessere Formulierung würde aussagen, dass die Sicherheitsanforderungen durch Testfälle verifiziert werden.&lt;br /&gt;
&amp;quot;(z. B. durch Kommentare im&lt;br /&gt;
Quelltext). Somit ist der Quelltext zu einem&amp;quot; --&amp;gt; Das ist kein empfehlenswerter Programmierstiel! Raus mit diesem Kommentar&lt;br /&gt;
;&amp;quot;Zum Schutz vor dem Verlust bereits entwickelter und verworfener&lt;br /&gt;
Lösungen sowie zu Dokumentationszwecken sollte die Historie der&lt;br /&gt;
Änderungen festgehalten werden (z. B. durch ein Revisionssystem).&amp;quot; --&amp;gt; Auch diesen Absatz können wir streichen - Kein professioneller Programmierer arbeitet ohne Versionierugssystem.&lt;br /&gt;
;&amp;quot;Bei Web-Anwendung sollten die Webseiten auf Konformität zu dem&lt;br /&gt;
verwendeten Standard (z. B. HTML-Standard) getestet werden. Dadurch&lt;br /&gt;
können unvorgesehene Seiteneffekte aufgrund einer Fehlinterpretation&lt;br /&gt;
seitens der Browser vermieden werden.&amp;quot; --&amp;gt; Könnte man noch um &amp;quot;Die Software ist in möglichst vielen Browsern zu testen&amp;quot; erweitern.&lt;br /&gt;
;Generell geht der Autor leider nicht auf die Rollen &amp;amp; Rechte Verteilung ein. Mir fehlt der Hinweis, das es eine personelle Trennung zwischen Entwicklung, Test und Betrieb geben muss.&lt;br /&gt;
;Zum Thema Wartung / Betrieb --&amp;gt; Hier wird keine Aussage getroffen bezüglich Log_Files. Dieses Thema kann kritische Auswirkungen haben, Bsp.: logging ganzer HTTP-Requests im LogLevel=Debug.&lt;br /&gt;
; &amp;quot;Produktspezifische Sicherheitsfunkionalität&amp;quot; - Dieser Absatz ist gefährlich - der Angreifer ist nicht zur Verwendung dies Zielbrowsers gezwungen. Deshalb können Browser-spez. Sicherheitsfunktionen nur als Add-ON gewertet werden.&lt;br /&gt;
; &amp;quot;Festlegung der Entwicklungsumgebung&amp;quot; - Dieser Absatz geht nicht auf die zu verwendenden Testdaten ein. Der Hinweis, dass Live-Daten / Kundendaten nichts in Test- &amp;amp; Entwicklungsumgebungen zu suchen haben fehlt!!!&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== M 2.WA24 Web-Tracking (Matthias) ==&lt;br /&gt;
&lt;br /&gt;
; Letzter Absatz: &amp;quot;Falls eine Auswertung von Nutzerdaten, insbesondere personenbezogener Daten, .. &amp;quot;&lt;br /&gt;
&lt;br /&gt;
Hier sollte denke ich besser von personenbeziehbaren Daten gesprochen Werten. Dies betrifft etwa die Zuordnung von Surfverhalten zu einer bestimmten Person. Dies sollte stets nach den Prinzipien Datensparsamkeit und Datenvermeidung, Erforderlichkeit, sowie Zweckbindung erfolgen. Ist Webtracking nicht personenbeziehbar ist dies kein Thema für den Datenschutz.&lt;br /&gt;
&lt;br /&gt;
== M 4.WA04 Authentisierung bei Web- Anwendungen (Matthias) ==&lt;br /&gt;
&lt;br /&gt;
: Verantwortlich fuer Umsetzung &lt;br /&gt;
sollte in erster Linie beim Architekturen und in zweiter beim Entwickler liegen&lt;br /&gt;
; Vermischung von Authentisierung und Session Management &lt;br /&gt;
&lt;br /&gt;
Bei diesem Baustein findet eine ziemlich große Vermischung von Anforderung an die Authentisierung und das erst in &amp;quot;M 4.WA06 Session-Management bei Web- Anwendungen&amp;quot; behandelte Session Management statt (Beispiel: &amp;quot;Remember-Me-Funktion&amp;quot;). Beide Themen sollten sinnvollerweise getrennt voneinander zu betrachten und aufeinander zu beziehen.&lt;br /&gt;
&lt;br /&gt;
; Verwendung von Frameworks&lt;br /&gt;
&lt;br /&gt;
Die Anforderung ist schon ein wenig eingeschränkt. Besser passt hier denke ich die &amp;quot;Abbildung der Authentisierung über Standardkomponenten (Bibliotheken oder Frameworks)&amp;quot;. &lt;br /&gt;
&lt;br /&gt;
; Remember-Me-Funktion&lt;br /&gt;
&lt;br /&gt;
Siehe oben, gehört zum Session Management. Das ließt sich im übrigen so, als ob eine Webanwendung Credentials auf dem Client abhängt. &lt;br /&gt;
&lt;br /&gt;
; Grenzwerte für gescheiterte Anmeldeversuche&lt;br /&gt;
&lt;br /&gt;
Diese Empfehlung ist allgemein falsch, da sie sehr von der betrachteten Anwendung abhängt. Besser wäre hier allgemein von Mechanismen zur Verhinderung von automatisierten Angriffen zu sprechen (Anti-Automatisierung). &lt;br /&gt;
&lt;br /&gt;
Etwa umsetzbar durch&lt;br /&gt;
* Sperrung nach x Anmeldeversuchen&lt;br /&gt;
* Throttling&lt;br /&gt;
* Captchas&lt;br /&gt;
* Sicherheitsfragen&lt;br /&gt;
&lt;br /&gt;
Das allgemeine Sperren kann leicht für das gezielte Aussperren von Benutzern (User Lockout) verwendet werden. Was etwa bei Trading-Anwendungen nicht funktioniert.&lt;br /&gt;
&lt;br /&gt;
; Automatisiertes Zurücksetzen von Authentisierungsdaten&lt;br /&gt;
&lt;br /&gt;
Würde ich besser als &amp;quot;Passwort-Reset&amp;quot; bezeichnen.&lt;br /&gt;
&lt;br /&gt;
Weiterhin fehlt hier der Hinweis, dass statt ein automatisiertes Zurücksetzen, ein Mechanismus zu empfehlen ist, bei dem über ein hinterlegtes Sicherheitsmerkmal (Handy-Nummer oder E-Mail-Adresse) vom Benutzer zunächst eine Verifikation durchgeführt wird. Beispielsweise durch einen erhaltenen Link. Erst dann darf eine Änderung des Passwortes durch den Benutzer erfolgen.&lt;br /&gt;
&lt;br /&gt;
; Registrierung nicht behandelt&lt;br /&gt;
&lt;br /&gt;
Es existiert hier kein Punkt, der die sichere Implementierung von Benutzerregistrierungen behandelt.&lt;br /&gt;
&lt;br /&gt;
; Verweis auf Externalisierung fehlt.&lt;br /&gt;
&lt;br /&gt;
Statt die Authentisierung selbst durchzuführen kann eine Anwendung hierzu auf eine externe Komponente (Beispiel: SiteMinder oder Kerberos) zurückgreifen.&lt;br /&gt;
&lt;br /&gt;
; Verweis auf Behandlung von Credentials fehlt&lt;br /&gt;
&lt;br /&gt;
Auch wenn das  in &amp;quot;M 4.WA15 Schutz vertraulicher Daten bei Web- Anwendungen&amp;quot; ausführlich behandelt wird, sollte in diesem Baustein bereits auf den angemessenen Schutz von Authentisierungsdaten bei Übertragung und Speicherung hingewiesen werden.&lt;br /&gt;
&lt;br /&gt;
== M 4.WA05Umfassende Ein- und Ausgabevalidierung bei Web-Anwedungen (Markus) ==&lt;br /&gt;
; &amp;quot;Ablehnung der Daten im&lt;br /&gt;
Fehlerfall&amp;quot; --&amp;gt; Hier könnte man noch auf Tar-Pits eingehen - nur ein Vorschlag.&lt;br /&gt;
&lt;br /&gt;
== M 4.WA06Session-Management bei Web-Anwendungen (Markus, Matthias) ==&lt;br /&gt;
; &amp;quot;Übertragung der SessionID mittels GETRequest&amp;quot; --&amp;gt; Hier fehlt der Hinweis, dass die Lebensdauer dieser SessionIds kurz/kürzer sein muss, als im Falle der Speicherung im Cookie.&lt;br /&gt;
&lt;br /&gt;
([[User:Mrohr|Matthias]]) Die Anmerkung verstehe ich ehrlich gesagt ueberhaupt nicht, zumal das SM haeufig transparent zwischen Cookies und URL Rewriting wechselt. Wozu soll das gut sein? Wie soll das geschehen? Idealerweise sollte die Session ID niemals in die URL geschrieben werden, das sollte eigentlich genuegen.&lt;br /&gt;
&lt;br /&gt;
; &amp;quot;Verschlüsselte Übertragung von SessionIDs&amp;quot; --&amp;gt; Hier fehlt der Hinweis auf den Beast-Exploit. TLS Version &amp;gt; 1.0 verwenden!&lt;br /&gt;
&lt;br /&gt;
([[User:Mrohr|Matthias]]) Solange hier nicht auf eine explizite TLS Version eingegangen wird, sollte meiner grossen Ueberzeugung nach hier auch auf keine Exploits etc. eingagen werden, das gehoert an andere Stelle.&lt;br /&gt;
&lt;br /&gt;
; ([[User:Mrohr|Matthias]]) Weiterhin:&lt;br /&gt;
&lt;br /&gt;
 Es dürfen keine extern bekannten oder erratbaren Daten (z. B. IP-Adresse, Uhrzeit) in die Berechnung der SessionID einfließen.&lt;br /&gt;
&lt;br /&gt;
Die Aussage finde ich etwas problematisch, wichtiger ist, dass die Entropie ausreichend hoch ist. Haeufig werden etwa IPs von Load Balancern in die Session ID hineingeschrieben.&lt;br /&gt;
&lt;br /&gt;
 - Domain (z. B. webapp.domain.tld),&lt;br /&gt;
 - Path (z. B. /webapp/),&lt;br /&gt;
 - Secure und&lt;br /&gt;
 - HttpOnly.Beschränkte Sitzungsdauer&lt;br /&gt;
&lt;br /&gt;
Das sieht so aus, als ob es empfehlenswert ist, das Domain-Tag zu verwenden, das ist es sicherlich nicht. Was macht hier der Hinweis &amp;quot;Beschraenke Sizuungsdauer&amp;quot;?&lt;br /&gt;
&lt;br /&gt;
== M 4.WA07Fehlerbehandlung durch Web-Anwendungen (Markus) ==&lt;br /&gt;
; Konsistenter / Inkonsistener Zustand einer Webanwendung und der daraus resultierende Datenverlust: Hier fehlen mir die Punkte: DOS, Priv.Escalation, CodeExecution.&lt;br /&gt;
([[User:Mrohr|Matthias]]) Vorschlag &amp;quot;und somit der Schutz der Daten&amp;quot; aendern in &amp;quot;und somit ETWA der Schutz der Daten&amp;quot; korrigieren&lt;br /&gt;
&lt;br /&gt;
; Vermeidung vertraulicher Informationen in Fehlermeldungen --&amp;gt; Fehlermeldungen sollten ebenfalls eine Systeminformationen preisgeben (Softwareversion, Patchlevel, etc.)&lt;br /&gt;
([[User:Mrohr|Matthias]]) Ich glaube hier ist es wichtig zu unterscheiden, wo die Fehlermeldung ausgegeben bzw. wem diese angezeigt wird. Das wird in diesem Modul garnicht so recht unterscheiden. Der Autor meint glaube ich, wie Fehlermeldungen durch die Webanwendung angezeigt werden. In dem Fall hat er recht. Du meinst glaube ich eher, wie Fehlermeldungen protokolliert werden. In dem Fall hast du natuerlich auch recht. Das in dem Text verwendete Wort &amp;quot;ausgeben&amp;quot; ist nicht unbedingt eindeutig und sollte genauer spezifiziert werden.&lt;br /&gt;
&lt;br /&gt;
; Abbruch des Vorgangs nach Auftreten eines Fehlers --&amp;gt; TarPits scheinen dem Autor umbekannt zu sein :)&lt;br /&gt;
([[User:Mrohr|Matthias]]) Stimmt, wobei sich diese ja auch nur auf einen sehr bestimmten Fehlertypen beziehen. Generell laesst sich so etwas unterscheiden, wenn man Fehler-Domains erstellt. Beispiel: Technisch-Unerwartet = Abbruch, Technisch-Erwartet = Fehlermeldug/Tear Pit, etc.&lt;br /&gt;
&lt;br /&gt;
; &amp;quot;Werden Fehler möglichst von der gleichen Komponente behandelt, in der&lt;br /&gt;
der Fehler aufgetreten ist?&amp;quot; --&amp;gt; Das &amp;quot;möglichst&amp;quot; sollten wir streichen.&lt;br /&gt;
([[User:Mrohr|Matthias]]) Hm, der Aussage kann ich nicht ganz zustimmen, bzw. es haengt von dem Begriff &amp;quot;Komponente&amp;quot; ab. Eine Anwendungskomponente kann serwohl bewusst bestimmte Exceptions werfen, die von der einbindenden Komponente behandelt werden muessen.&lt;br /&gt;
&lt;br /&gt;
== M 4.WA08Schutz vor automatisierter Nutzung von Web-Anwendungen (Markus) ==&lt;br /&gt;
; &amp;quot;Brute-Force-&lt;br /&gt;
Angriffe (z. B. Erraten von Zugangsdaten) und Enumeration-Angriffe (z. B.&lt;br /&gt;
automatisiertes Ermitteln von gültigen Login-Namen)&amp;quot; -- die Beispiele sind identisch - besser Beispiele suchen, z.b. URL-Enumeration&lt;br /&gt;
&lt;br /&gt;
([[User:Mrohr|Matthias]]) Das sehe ich anders. Brute-Forcing bezieht auf Passwoerter und Enumeration auf Benutzernamen, etwa durchs hochzaehlen. Auch wenn ich zustimmen muss, dass die nicht ganz gluecklich gewaehlt wurden. Stann &amp;quot;Erraten von Zugangsdaten&amp;quot; wuerde ich besser von &amp;quot;Erraten von Passwoertern&amp;quot; sprechen. Oder wie gesagt gleich auch auf andere Beispiele (etwa Object ID Enumeration) beziehen.&lt;br /&gt;
&lt;br /&gt;
== M 4.WA11Sichere Konfiguration von Web-Anwendungen (Markus) ==&lt;br /&gt;
; &amp;quot;Sicherer Umgang mit TLS/SSL&amp;quot; -- Hier fehlt der Hinweis, dass TLS-1.0 gebrochen ist&lt;br /&gt;
; &amp;quot;Zeichenkodierungskonfiguration&amp;quot; -- Ein Whitelisting abhängig von der Encodierung wäre ein weiterer Vorschlag&lt;br /&gt;
; &amp;quot;Restriktive Dateisystemberechtigungen&amp;quot; -- auch wenn es ein klassiker ist - der AS sollte ebenfalls mit von einem eingeschränkten Nutzer gestartet werden und nicht als root&lt;br /&gt;
; Administration Consolen:zur Ergänzen: Wenn diese nicht benötigit, sollten derartige Applikationen nicht deployed werden, unabhängig von möglichen Zugangsbeschränkungen.&lt;br /&gt;
&lt;br /&gt;
([[User:Mrohr|Matthias]]) Sorry, meiner Meinung nach hat die Bewertung von Kryptoverfahren hier abslut nichts zu suchen.Stattdessen sollte hier auf den entsprechenden [https://www.bsi.bund.de/ContentBSI/Publikationen/TechnischeRichtlinien/tr02102/index_htm.html Empfehlung des BSI] verwiesen werden, auch wenn dieses Dokument derzeit noch etwas outdated zu sein scheint.&lt;br /&gt;
&lt;br /&gt;
== M 4.WA13Kontrolliertes Einbinden von Daten und Inhalten bei Web-Anwendungen (Markus) ==&lt;br /&gt;
; Datei-Upload: Bei einem Upload werden Dateien durchaus in TEMP-Verzeichnissen gesammelt und danach weiterverarbeitet. Diese TEMP-Verzeichnisse sind im Rahmen einer Sicherheitsanalyse zu betrachten -&amp;gt; Möglicher (unbefugter) Zugriff auf weitere Uploads&lt;br /&gt;
; Upload komprimierter Dateien / großer Dateien birgt die Gefahr von DOS Angriffen&lt;br /&gt;
; Upload von Dateien kann bei weiterem Parsing zu Speicherengpässen führen --&amp;gt; DOS-Angriffe auf Thread-Local etc.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== M 4.WA14Restriktive Herausgabe sicherheitsrelevanter Informationen bei Web-Anwendungen (Markus, Matthias) ==&lt;br /&gt;
OK - Keine Anmerkungen von mir.&lt;br /&gt;
&lt;br /&gt;
([[User:Mrohr|Matthias]]) Von mir schon;)&lt;br /&gt;
&lt;br /&gt;
; ([[User:Mrohr|Matthias]]) Vermeidung von Kommentaren in ausgelieferten Webseiten&lt;br /&gt;
&lt;br /&gt;
Das ist leider total falsch, wir brauchen haeufig Komentare, aus Kompatibilitaetsgruenden. So wird etwa der JavaScript-Block haeufig auskommentiert.&lt;br /&gt;
&lt;br /&gt;
Wurde stattessen besser von sicherheitsrelevanten Kommentaren sprechen und als Massnahme generell Entwicklerkommentare ueber Sprachkonstruktre (etwa JSP) durchzufuehren.&lt;br /&gt;
&lt;br /&gt;
; ([[User:Mrohr|Matthias]]) Löschen nicht benötigter Dateien&lt;br /&gt;
&lt;br /&gt;
Hier wurde ich ggf. Dateien von Versionisierungstools (etwa Subversion) erwaehnen, das sehen wir schon recht haeufig.&lt;br /&gt;
&lt;br /&gt;
Statt Dateien einfach nur zu loeschen (was in der Praxis haeufig nicht so einfach ist) bietet es sich zudem an, den Zugriff auf bestimmte Dateien oder Dateitypen generell zu sperren, etwa mittels ACL im Apache.&lt;br /&gt;
&lt;br /&gt;
; ([[User:Mrohr|Matthias]]) Gibt die Web-Anwendung ausschließlich neutrale Fehlermeldungen aus und sind diese im Quelltext identisch? {E: C}&lt;br /&gt;
&lt;br /&gt;
Persoenlich verstehe ich das nicht. Wieseo neutrale Fehlermeldung? Das macht fuer mich nur beim Login Sin. Hierzu existiert in dem Text auch keinerlei Bezug. Ich wuerde das daher besser entfernen und im Rahmen der Fehlerbehandlung diskutieren. Mindestens sollte hier jedoch besser von &amp;quot;sicherheitsunbedentlichen Fehlermeldungen&amp;quot; oder so gesprochen werden.&lt;br /&gt;
&lt;br /&gt;
; ([[User:Mrohr|Matthias]]) Wird der Referrer bei Verlassen der Web-Anwendung (z. B. durch einen Link auf eine externe Seite) gefiltert?&lt;br /&gt;
&lt;br /&gt;
Diesen Punkt sehe ich als sehr Fallabhengig an. Es kann fuer seiten durchaus wuenschenswert sein, dass der Referer weitergegeben wird. Der Referer sollte natuerlich keine sensiblen Informationen enthalten, was ja an anderer Stelle (etwa Session Management) vorgegeben wird bzw. gegeben werden sollte.&lt;br /&gt;
&lt;br /&gt;
== M 4.WA15Schutz vertraulicher Daten bei Web-Anwendungen (Markus, Matthias) ==&lt;br /&gt;
; Sichere kryptographische Algorithmen:&lt;br /&gt;
 Hier fehlt mir eine Liste der aktuelle als sicher geltenden Verfahren.&lt;br /&gt;
([[User:Mrohr|Matthias]]) Am Besten Referenz auf [https://www.bsi.bund.de/ContentBSI/Publikationen/TechnischeRichtlinien/tr02102/index_htm.html https://www.bsi.bund.de/ContentBSI/Publikationen/TechnischeRichtlinien/tr02102/index_htm.html]&lt;br /&gt;
&lt;br /&gt;
; Schlüssel&lt;br /&gt;
 Das die Schlüssel bestimmten Formaten entsprechen müssen ist ok - aber das Schlüsselmanagement wird gar nicht besprochen?&lt;br /&gt;
; Schutz der Daten im Browsercache&lt;br /&gt;
 Skripte und Browserplugins können ebenfalls auf den Browsercache zugreifen - diese werden hier nicht erwähnt.&lt;br /&gt;
&lt;br /&gt;
([[User:Mrohr|Matthias]]) Weiterhin entsprechen die vorgeschlagenen HTTP Headern nicht dem Best Practice:&lt;br /&gt;
&lt;br /&gt;
 Cache-control: no-cache, no-store&lt;br /&gt;
 Pragma: no-cache&lt;br /&gt;
 Expires: -1&lt;br /&gt;
&lt;br /&gt;
([[User:Mrohr|Matthias]]) Die Empfehlung hinsichtlich des manuellen Leerens des Browsercaches sollte wenn dann nur bei Anwendungen mit sehr hohem Schutzbedarf in Erwaegung gezogen werden. Wichtiger waere da schon eher die richtigen Cache-Header zu verwenden. Solche Empfehlungen ihm Rahmen des Grundschutzes aber wirklich nichts zu suchen. &lt;br /&gt;
&lt;br /&gt;
; Maskierung von Passwörtern &lt;br /&gt;
 Dies schützt bei der Eingabe nur vor ShoulderSurfing nicht vor Skripten oder Plugins die diese an andere Server posten.&lt;br /&gt;
&lt;br /&gt;
([[User:Mrohr|Matthias]]) Das ist voellig korrekt. Aber inwieweit ist die Aussage Passwort-Felder zu verwenden fehlerhaft bzw. hier unzureichend beschrieben?&lt;br /&gt;
&lt;br /&gt;
; Sicherung von Zugangsdaten:&lt;br /&gt;
 Zugangsdaten in einer Datei abzulegen - wenn auch ausserhalb des WebRoots ist keine gute Idee.&lt;br /&gt;
([[User:Mrohr|Matthias]]) Es ist sicher nicht die schoenste Variante, es laesst sich aber nunmal in vielen Faellen nicht vermeiden. Deshalb fordert der [http://code.google.com/p/owasp-asvs/wiki/Verification_V2 ASVS] hier etwa auch nicht mehr. Fuer den hier angestreben Grundschutz sollte das meiner Meinung nach ausreichen.&lt;br /&gt;
; Schutz von Quelltexten:&lt;br /&gt;
 Hier würde ich property files mit aufnehmen. der hinweis auf web-inf/classes fehlt - warum?&lt;br /&gt;
 Bei include-befehlen sind die pfadangaben zu überdenken.&lt;br /&gt;
([[User:Mrohr|Matthias]]) Wuerde property Dateien allgemein den Konfigurationsdateien zuordnen. Der Begriff &amp;quot;Einzubindende Dateien&amp;quot; ist mir allrdings Neu&lt;br /&gt;
&lt;br /&gt;
([[User:Mrohr|Matthias]]) Weiterhin, fehlt ein genereller Bezug auf HTML 5 WebStorage, LSOs etc. Zumindest in abstrakter Form, so dass diese dadurch indirekt addresiert werden. Egal, in dem relevanten Punkt will der Autor meiner Meinung nach nur einige Beispiele nennen, das sollte keinen Anspruch auf Vollsteandigkeit haben muessen.&lt;br /&gt;
&lt;br /&gt;
; ([[User:Mrohr|Matthias]]) - Durch dieses Attribut wird die Gültigkeit des Cookies auf die Domäne der Web-Anwendung beschränkt.&lt;br /&gt;
Nein, das ist leider total falsch. Das Domain-Attribut stellt eine Aufweichung der Cookie-Gueltigkeit dar und nicht anders herum. Gewoehlich sind Cookies immer Host-Cockies und das sollte auch so bleiben. Die Empfehlung sollte entfernt werden.&lt;br /&gt;
&lt;br /&gt;
== M 4.WA16Zugriffskontrolle bei Web-Anwendungen (Markus) ==&lt;br /&gt;
; Zugriffskontrolle via Frameworks:&lt;br /&gt;
 Dieser Punkt (Frameworks) wird nur in einem Satz erwähnt. Es werden keine Bespiele gegeben - Das ist zu wenig.&lt;br /&gt;
 Es müssen alle Zugriffe geschützt werden. Eine Protokollierung aller Zugriffe mit den nötigen Informationen ist ebenfalls empfehlenswert.&lt;br /&gt;
; Datei Upload:&lt;br /&gt;
 Die Gefahr eines DOS wird hier nicht erwähnt.&lt;br /&gt;
&lt;br /&gt;
== M 4.WA19Verhinderung von Cross-Site Request Forgery (CSRF, XSRF) (Markus, Matthias) ==&lt;br /&gt;
; Verantwortliche: &lt;br /&gt;
 Entwickler und Admins!&lt;br /&gt;
([[User:Mrohr|Matthias]]) Korrekt, wobei auch in der Reihenfolge&lt;br /&gt;
&lt;br /&gt;
; Anti-CSRF-Token in hidden fields:&lt;br /&gt;
 Das ist keine gute Idee. Ich würde das streichen!&lt;br /&gt;
&lt;br /&gt;
([[User:Mrohr|Matthias]]) Watt? Anti-CSRF-Tokens in Hidden Fields sind die Standard-Massnahme. Wie denn sonst? Bitte nicht streichen!!! &lt;br /&gt;
&lt;br /&gt;
([[User:Mrohr|Matthias]]) Die Technik bei der die Session ID als Anti-CSRF-Token verwendet wird, wird als Double-Cookie Submit bezeichnet, das sollte hier referenziert werden.&lt;br /&gt;
&lt;br /&gt;
; Umgehung von Schutzmechanismen:&lt;br /&gt;
 Man in the middle hat keinen direkten Bezug zu CSRF! Das würde ich streichen.&lt;br /&gt;
([[User:Mrohr|Matthias]]) Der Hinweis ist korrekt. Wovon der Autor hier spricht ist Session Replay nicht CSRF.&lt;br /&gt;
&lt;br /&gt;
; Frameworks:&lt;br /&gt;
 Gute Idee - aber es gibt auch Features in den ApplicationServern die CSRF unterbinden - warum wird das nicht besprochen?&lt;br /&gt;
&lt;br /&gt;
([[User:Mrohr|Matthias]]) Sehe ich persoenlich nicht so, da CSRF primaer ein Applikations-Fehler ist, und auch in der Applikation und nicht im Environment (AppServer) geloest werden sollte. Auch wenn das manchmal ggf. die einzig machbare Loesung darstellt.&lt;br /&gt;
&lt;br /&gt;
([[User:Mrohr|Matthias]]) Was generell fehlt, ist ein Hinweis darauf, dass schreibende Requests generell per HTTP Post abgewickelt werden sollten, da HTTP Get keine &amp;quot;Safe Method&amp;quot;  (siehe HTTP 1.1, RFC 2616) ist.&lt;br /&gt;
&lt;br /&gt;
== M 4.WA20Sicherer Entwurf der Logik von Web-Anwendungen (Markus, Matthias) ==&lt;br /&gt;
; Rollbacks:&lt;br /&gt;
 Tritt ein Fehler auf muss die Applikation einen konsistenten Datenstand zurück lassen. Das wird hier nicht erwähnt.&lt;br /&gt;
; RaceConditions:&lt;br /&gt;
 Fehler in der Geschäftslogik können auch durch zwei gleichzeitige Sessions auf einer Webapplikation auftreten - das wird hier nicht besprochen.&lt;br /&gt;
&lt;br /&gt;
([[User:Mrohr|Matthias]]) Ehrlich gesagt kann ich nicht ganz nachvollziehen, was der Sichere Entwurf der Logik von Web-Anwendungen mit dem Verzicht auf aktive Inhalte zu tun hat. Unabhaengig davon sollte man solche unsinnigen Aussagen im Jahre 2012 nicht mehr treffen, damit macht man sicht nur laecherlich.&lt;br /&gt;
&lt;br /&gt;
Nichts desto trotz, was hier als &amp;quot;echte&amp;quot; Massnahmen erwaehnt werden sollte sind:&lt;br /&gt;
* Verhinderung von Race Conditions, aber nicht nur durch Concurrent Sessions sondern auch durch Singletons (TOCTOU)&lt;br /&gt;
* Enforcements von Workflows, etwa durch die Verwendung von State Machines oder Request Tokens (auch bekannt als Site Usage Enforcement)&lt;br /&gt;
* Fail Securely (bzw. Verweis)&lt;br /&gt;
* Serverseitige Abbildung der Anwendungslogik, zumindest wenn diese sicherheitsrelevant sit&lt;br /&gt;
&lt;br /&gt;
== M 4.WA22Verhinderung der Blockade von Ressourcen (DoS) bei Web-Anwendungen (Markus, Matthias) ==&lt;br /&gt;
; Datenspeicher:&lt;br /&gt;
 Neben dem Datenspeicher sollte auch der RAM-Verbrauch pro Thread der Applikation limitiert werden.&lt;br /&gt;
([[User:Mrohr|Matthias]]) Stimmt, ich wuerde hier sogar allgemein von Ressourcenverbrauch am Beispiel RAM und Datenspeicher, sprechen&lt;br /&gt;
&lt;br /&gt;
; Voraggregation von Daten / Caching&lt;br /&gt;
 Dieser Punkt fehlt: Stark ressourcen belastende Anfragen können auch in Lastarmen Zeiten vorberechnet werden.&lt;br /&gt;
([[User:Mrohr|Matthias]]) Stimmt, koennte noch als Anmerkung bei &amp;quot;Cachen von Anfragen&amp;quot; hinzugefuegt werden&lt;br /&gt;
&lt;br /&gt;
; ([[User:Mrohr|Matthias]]) Prueffrage: &amp;quot;Wird ein möglicher Überlauf von Protokolldaten... verhindert&amp;quot;&lt;br /&gt;
&lt;br /&gt;
Ist eine etwas eingeschrankte Sicht. Wurde hier eher von Ueberlauf von Speicherplaz zu Beispiel im Rahmen der Protokollierung sprechen&lt;br /&gt;
&lt;br /&gt;
; ([[User:Mrohr|Matthias]]) Durchfuehrung von Lasttests zur Identifikation ressourcenintensiver Operationen&lt;br /&gt;
&lt;br /&gt;
Der Hinweis waere ggf. erwahnenswert&lt;br /&gt;
&lt;br /&gt;
; ([[User:Mrohr|Matthias]]) Hinweis auf nicht-angemeldeten Bereich&lt;br /&gt;
&lt;br /&gt;
Das Risiko durch rechenintensive Operationen durch einen DoS betroffen zu sein ist natuerlich fuer gewoehlich um so groesser, wenn diese im anonymen Bereich angeboten wird. Der Hinweis ware ggf. ebenfalls hilfreich.&lt;br /&gt;
&lt;br /&gt;
== M 4.WA25Verhinderung von Clickjacking (Markus) ==&lt;br /&gt;
Ok - das passt soweit.&lt;br /&gt;
&lt;br /&gt;
([[User:Mrohr|Matthias]]) Stimmt, auch wenn ich &amp;quot;Angreifer&amp;quot; in dem Beispiel eher als &amp;quot;Webseitenbetreiber&amp;quot; beschreiebn wuerde, da er nicht wirklich aktiv einen Angriff durchfuehrt, oder? Bitte nochmal ueber meinen Hinweis aus G 5.WA18 nachdenken: Ist Clickjacking-Schutz tatsaechlich Grundschutz? Ich bin mir da selber nicht so wirklich sicher.&lt;br /&gt;
&lt;br /&gt;
== M 5.WA21Sichere Anbindung von Hintergrundsystemen an Web-Anwendungen (Markus, Matthias) ==&lt;br /&gt;
; Verantwortliche:&lt;br /&gt;
 Architekten fehlen. Entwickler müssen die Views umsetzen und die Datasource entsprechend einbinden - die fehlen hier ebenfalls.&lt;br /&gt;
; DirectorySystem Beispiel:&lt;br /&gt;
 Das DirectorySystem wird in dem angegeben Beispiel zum Single Point of Failure - das wird verschwiegen.&lt;br /&gt;
; Firewalls:&lt;br /&gt;
 Das sind fachlich-blinde Systeme. Was ist mit WAFs / IDS / IPS etc.?&lt;br /&gt;
([[User:Mrohr|Matthias]]) Stimmt, das hat in diesem Baustein nichts zu suchen&lt;br /&gt;
&lt;br /&gt;
; ([[User:Mrohr|Matthias]]) Typische Hintergrundsysteme&lt;br /&gt;
Hier fehlt irgendwie &amp;quot;Middleware&amp;quot;, die ist denke ich nicht immer Legacy&lt;br /&gt;
&lt;br /&gt;
== M 5.WA23Systemarchitektur einer Web-Anwendung (Markus) ==&lt;br /&gt;
; Verantwortliche:&lt;br /&gt;
Auch hier fehlend wieder die Architekten. &lt;br /&gt;
([[User:Mrohr|Matthias]]) Stimmt, habe das Dokument mal komplett durchgesucht.Tatsaechlich wird der &amp;quot;Architekt&amp;quot; niemals genannt, das scheint also eher ein grundseatzliches Problem zu sein. Der Administrator hat hier aber nun wirklich nichts zu suchen.&lt;br /&gt;
&lt;br /&gt;
; Virtualisierung:&lt;br /&gt;
Virtualisierung bietet weitere Angriffsvektoren (z.B.: Hypervisor) die eine &amp;quot;Blech&amp;quot;Farm nicht bietet.&lt;br /&gt;
&lt;br /&gt;
([[User:Mrohr|Matthias]]) Genau, wobei auch der ganze Bereich geshareter Plattformen (z.B. By SharePoint) hier fehlt.&lt;/div&gt;</summary>
		<author><name>Mrohr</name></author>	</entry>

	<entry>
		<id>https://wiki.owasp.org/index.php?title=Talk:OWASP_Review_BSI_IT-Grundschutz_Baustein_Webanwendungen&amp;diff=130207</id>
		<title>Talk:OWASP Review BSI IT-Grundschutz Baustein Webanwendungen</title>
		<link rel="alternate" type="text/html" href="https://wiki.owasp.org/index.php?title=Talk:OWASP_Review_BSI_IT-Grundschutz_Baustein_Webanwendungen&amp;diff=130207"/>
				<updated>2012-05-21T15:54:13Z</updated>
		
		<summary type="html">&lt;p&gt;Mrohr: /* &amp;quot;Hilfsmittel&amp;quot; (Markus) */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Since it's about a review of a document in German, all the discussions will be done in German :-)&lt;br /&gt;
&lt;br /&gt;
Diskussionen rund um den Review des &amp;quot;IT-Grundschutzbausteins Webanwendungen&amp;quot; finden hier statt, sinnvollerweise auf Deutsch :-)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Vorschlag für Kriterien, die an unser Review angelegt werden sollten (.kai) ==&lt;br /&gt;
&lt;br /&gt;
* Der Baustein soll alle wichtigen Themen der Entwicklung sicherer&lt;br /&gt;
Webanwendungen enthalten.&lt;br /&gt;
&lt;br /&gt;
* Der Baustein soll die verschiedenen Phasen der Software-Entwicklung&lt;br /&gt;
vollständig abdecken.&lt;br /&gt;
&lt;br /&gt;
* Der Baustein soll zwischen verbindlichen, prüfbaren Vorgaben und&lt;br /&gt;
unverbindlichen Empfehlungen sprachlich sauber unterscheiden (hier&lt;br /&gt;
spielt mein Auditorenblick eine Rolle). Vor allem soll der Baustein&lt;br /&gt;
verbindliche Anforderungen auch tatsächlich stellen. Alle&lt;br /&gt;
verbindlichen Anforderungen müssen unabhängig von der jeweiligen&lt;br /&gt;
Umgebung auch umsetzbar sein, d.h. sie müssen entsprechend generisch&lt;br /&gt;
sein.&lt;br /&gt;
&lt;br /&gt;
* Die Maßnahmen sollen nur in (begründbaren) Ausnahmen zu Empfehlungen&lt;br /&gt;
von OWASP im Widerspruch stehen.&lt;br /&gt;
&lt;br /&gt;
* Die Maßnahmen sollen verständlich und anwendbar sein.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== &amp;quot;Hilfsmittel&amp;quot; (Markus, Matthias) ==&lt;br /&gt;
Ich würde das Script zur Vermeidung von Clickjacking wrappen und nicht als losen Skript-block in den Text einbinden - einfach schlechter Programmierstiel diese losen Blöcke.&lt;br /&gt;
Der Zugriff auf das Body-Element mit byTagName-Array[0] ist auch nicht wirklich gut. Ich halte Zugriffe über das DOM (klassisch), bei ID bzw. XPATH für besser. &lt;br /&gt;
&lt;br /&gt;
([[User:Mrohr|Matthias]]) Verwunderlich finde ich aber, dass der Autor zum Einen zwar von der Verwendung von JavaScript vollstaendig abraet, zum Anderen aber eben solches als Best-Practice-Ansatz fuer Click Jacking empfiehlt.&lt;br /&gt;
&lt;br /&gt;
SQL-Injection Characters:&lt;br /&gt;
die Pipe fehlt hier zur Textkonatenierung&lt;br /&gt;
+ / - haben auch eine Bedeutung bei JOINs.&lt;br /&gt;
&lt;br /&gt;
([[User:Mrohr|Matthias]]) Special Character bzw. DB Escaping ist schon recht DB-spezifisch (siehe [https://www.owasp.org/index.php/SQL_Injection_Prevention_Cheat_Sheet SQL Prevention Cheat sheet]). Wozu werden die hier ueberhaupt aufgefuehrt? Um Eingebafilterung nach pot. SQL Injections durchzufuheren, oder um eine eigene Escaping-Funktion zu schreiben? Raus damit!&lt;br /&gt;
&lt;br /&gt;
== &amp;quot;Goldene Regeln&amp;quot; (Matthias) ==&lt;br /&gt;
&lt;br /&gt;
Hier meine Anmerkungen zu diesem Dokument:&lt;br /&gt;
&lt;br /&gt;
; 1. Für mich fehlende Punkte&lt;br /&gt;
* Korrektur der Ursache (Root Cause) von Schwachstellen statt  Verhinderung deren Ausnutzung&lt;br /&gt;
* Bezug auf Minimierung der Angriffsfläche und Least-Privilege-Prinzip&lt;br /&gt;
* Bezug auf Defense-in-Depth-Prinzip&lt;br /&gt;
* Verwendung von getesteten Security APIs (z.B. OWASP ESAPI) statt selbstentwickelter Funktionen&lt;br /&gt;
* Bezug auf Externalisierung von Sicherheitsfunktionen, sowie deklerative vor programmatischer Sicherheit.&lt;br /&gt;
&lt;br /&gt;
; 2. Begriff &amp;quot;Web-Anwendung&amp;quot;&lt;br /&gt;
Würde ich generell durch &amp;quot;Webanwendung&amp;quot; ersetzen.&lt;br /&gt;
&lt;br /&gt;
; 3. Einleitung (&amp;quot;Web-Anwendungen stellen Funktionalität zur Verfügung, ...&amp;quot;)&lt;br /&gt;
&lt;br /&gt;
Wozu dient dieser Satz?&lt;br /&gt;
&lt;br /&gt;
; 4. &amp;quot;Die Architektur der Web-Anwendung ist im Sicherheitskonzept zu  dokumentieren.....&amp;quot; &lt;br /&gt;
&lt;br /&gt;
Ich fände es sinnvoller, wenn hier von der &amp;quot;Sicherheitsarchitektur&amp;quot; gesprochen wird, welche etwa neben den sicherheitsrelevanten Datenflüssen, sensible Komponenten, Entry Points, Akteure architekturelle Security Controls wie Authentisierung, Kryptographie und natürlich die Trust Boundaries beinhaltet.&lt;br /&gt;
&lt;br /&gt;
; 5. &amp;quot;Bei Web-Anwendungen handelt es sich häufig um spezielle Eigenentwicklungen....&amp;quot;&lt;br /&gt;
&lt;br /&gt;
Erstens würde ich hier den geläufigen Begriff &amp;quot;Individualsoftware&amp;quot; verwenden. Zweitens würde ich statt bestimmte SDLC-Phasen vorzugeben (die Begriffe &amp;quot;Softwareverteilung&amp;quot; und &amp;quot;Integration&amp;quot; sind mir bei Webanwendungen bisher noch nicht so häufig untergekommen), besser von der Notwendigkeit sprechen, Sicherheit in allen Entwicklungsphasen zu berücksichtigen, also eines SDLs.&lt;br /&gt;
&lt;br /&gt;
; 6. &amp;quot;Alle Ein- und Ausgaben der Web-Anwendung müssen in eine normalisierte Form überführt werden....&amp;quot;&lt;br /&gt;
&lt;br /&gt;
Normalisierung ist für mich nicht gleich Kanonsierung, auch wenn beide Begriffe häufig als synonym verwendet werden.  Der Unterschied wird in der [http://owasp-esapi-java.googlecode.com/svn/trunk_doc/2.0-rc4/org/owasp/esapi/Encoder.html API-Beschreibung der ESAPI] erklärt. Die Normalisierungs-Funktion ist allerdings schon vor einiger Zeit aus der ESAPI [https://lists.owasp.org/pipermail/esapi-dev/2010-January/000266.html rausgeflogen]. Die generelle Kanonisierung von Ausgaben halte ich dazu für nicht sinnvoll.&lt;br /&gt;
&lt;br /&gt;
Zweitens, finde ich den weiteren Text zwar grundsätzlich formal korrekt, aber so allgemein, dass dieser glaube ich niemandem so richtig etwas bringt.  &lt;br /&gt;
&lt;br /&gt;
Besser fände ich hier Ein- von Ausgabevalidierung grundsätzlich voneinander abzugrenzen. Etwa was ich per Eingabevalidierung (Längenprüfung, Casting, etc. per Whitelisting) und was mit Ausgebavalidierung (Enkodierung, Escaping, Parametrisierung) machen muss und kann.&lt;br /&gt;
&lt;br /&gt;
Eingabedaten können technisch zudem auch Werte eingelesener Property-Dateien sein. Muss ich die auch validieren? Ist das dann noch Grundschutz? &lt;br /&gt;
&lt;br /&gt;
; 7. &amp;quot;Für den Zugriff auf sensitive Funktionen oder Informationen muss die Web-Anwendung eine wirksame Authentisierung und Sitzungsverwaltung unterstützen. Die Eigenschaften der Sitzungs-ID müssen so gewählt werden, dass die Sitzung ausreichend geschützt ist. ....&amp;quot;&lt;br /&gt;
&lt;br /&gt;
Besser fände ich &amp;quot;eine Authentisierung, die über eine dem Schutzbedarf der Anwendung angemessene Stärke verfügt.&amp;quot; &lt;br /&gt;
&lt;br /&gt;
Eigentlich geht es doch mehr um den Schutz der Sitzungs-ID, da diese gewöhnlich im Verlauf einer Sitzung den Client authentisiert. Oder den Schutz des Zugriffs auf eine Sitzung. &lt;br /&gt;
&lt;br /&gt;
Zudem fehlt hier meiner Meinung nach der Hinweis auf die bevorzugte Verwendung getesteter Standardkomponenten.&lt;br /&gt;
&lt;br /&gt;
; 8. &amp;quot;Die Web-Anwendung sollte die zu übermittelnden Daten schützen.&amp;quot;&lt;br /&gt;
&lt;br /&gt;
Dies würde ich nur auf sensible Daten beziehen. Zusätzlich zu HTTPS würde ich hier schreiben, dass sensible Daten generell nicht in der URL übertragen werden dürfen.&lt;br /&gt;
&lt;br /&gt;
; 9. &amp;quot;Die Preisgabe interner Informationen (z.B. Kommentare, Fehlermeldungen)&amp;quot;&lt;br /&gt;
&lt;br /&gt;
Hier würde ich eher schreiben &amp;quot;(IN Kommentaren, Fehlermeldungen, HTTP Headern, etc.)&amp;quot;&lt;br /&gt;
&lt;br /&gt;
; 10. &amp;quot;Fehler müssen so behandelt werden, ... müssen Fehler bei der Autorisierung zu einer Verweigerung beim Zugriff auf die angeforderte Ressource führen.&amp;quot;&lt;br /&gt;
&lt;br /&gt;
Sprachlich: &amp;quot;Die Webanwendung muss sich stets in einem sicheren Zustand befinden. Beispielsweise müssen Fehler bei der Autorisierung zu einer Verweigerung des Zugriffs führen (Default-Deny-Strategie).&amp;quot;&lt;br /&gt;
&lt;br /&gt;
; 11. &amp;quot;Die Logging-Funktionen der Web-Anwendung müssen aufgetretene Ereignisse derart protokollieren, dass sicherheitskritische Vorfälle nachvollzogen werden können.&amp;quot;&lt;br /&gt;
&lt;br /&gt;
Hier würde hier eher von &amp;quot;allen sicherheitsrelevanten Ereignissen&amp;quot; sprechen.&lt;br /&gt;
&lt;br /&gt;
Weiterhin sollten insbesondere beim Logging der Datenschutz berücksichtigt werden, personenbezogene Daten also nach Möglichkeit nicht oder nur anonymisiert in technischen Logdateien protokolliert werden.&lt;br /&gt;
&lt;br /&gt;
; 12. &amp;quot;Alle Sicherheitsmechanismen (z.B. Authentisierung und Zugriffskontrolle) sind serverseitig zu implementieren und können nicht durch clientseitige Mechanismen ersetzt werden.&amp;quot;&lt;br /&gt;
&lt;br /&gt;
Die Aussage ist so nicht korrekt. Darüber hatten wir bereits bei der ASVS mehrfach diskutiert. &lt;br /&gt;
&lt;br /&gt;
Überall dort wo der Client angegriffen wird, also etwa bei RIAs (Stichwort DOM-Based XSS) müssen wir Security Controls clientseitig implementieren. Es gibt mittlerweile deshalb auch eine Portierung der ESAPI auf Javascript. Überall dort wo der Server oder Hintegrundsysteme angegriffen werden, ist die Aussage aber natürlich zutreffend.&lt;br /&gt;
&lt;br /&gt;
== &amp;quot;Gefährdungen&amp;quot; (Markus, Dennis, .... &amp;lt;Dein Name&amp;gt;) ==&lt;br /&gt;
; Generell:&lt;br /&gt;
Reference auf RFCs fehlen.&lt;br /&gt;
&lt;br /&gt;
==B.5.XX Web-Anwendungen ==&lt;br /&gt;
; 1. Erster Absatz - Letzter Satz: --Wieso werden hier nur HTML/XML Doks und Oberflächen angesprochen? Was ist der Unterschied zwischen einem HTML-Dok und einer Oberfläche? Was ist mit  Flash, etc.? Was ist mit WebSockets?&lt;br /&gt;
; 2. Stichpunkt &amp;quot;Protokollierung&amp;quot;: Sicherheits relevant ist ein sehr dehnbarer Begriff - Eine bessere Formulierung könnte sein: Zur Rekonstruktion von Nutzerhandlungen nötige Ereignisse (positve &amp;amp; negative) müssen protokolliert werden . . . &lt;br /&gt;
; 3. Absatz: &amp;quot;Abgrenzung des Bausteins&amp;quot;: &amp;quot;Die spez. Sicherheitsanforderungen an Web-Services werden in diesem Baustein nicht betrachtet&amp;quot; --&amp;gt; Wie so nicht? Was ist das Backend von einer Rest / AJAX-basierenden Webanwendung denn anderes als ein Web-Service? Diesen Satz würde ich entfernen.&lt;br /&gt;
; 4.Vorsätzliche Handlungen -&amp;gt; Web-Spoofing (G.5.87) -- Missverständliche Bezeichnung / Nomenklatur&lt;br /&gt;
; 5. Seite 4 : erste Zeile &amp;quot;Umsetzung&amp;quot;: &amp;quot;dafür umzusetztende Komponenten müssen die Webanwendung schützen...&amp;quot; - Hier fehlt mir der Hinweis, dass dieser Schutz verifiziert werden muss.&lt;br /&gt;
; 6 Seite 5: &amp;quot;Umsetzung&amp;quot; - Wir haben CSRF, D(D)os und SQL-Injection aber wo ist XSS?&lt;br /&gt;
; 7 Seite 7: &amp;quot;Die Sicherheitsfunktion wird ausschließlich clientseitig...&amp;quot; --&amp;gt; Warum muss der Angreifer überhaupt einen Browser umkonfigurieren? Was ist mit Proxies, Scripts, etc.? Ich würde das reduzieren darauf, dass rein Webbrowser-basierende Schutzfunktionen einfach umgangen werden können.&lt;br /&gt;
; 8 Seite 8: Die angesprochenen Punkte hinterlassen den Eindruck nicht vollständig zu sein: Mir fehlen Punkte wie &amp;quot;Outsourcing&amp;quot;, &amp;quot;KnowHow der Entwickler&amp;quot;, Tooling, Framework-Auswahl, etc.&lt;br /&gt;
; 9 Seite 9: Eigentlich möchte der Autor hier über Datenschutz sprechen. Abgesehen von den letzten drei Zeilen geht es aber nur um &amp;quot;User tracking&amp;quot; - Wo ist der Rest der Datenschutzproblematik? Warum der Fokuss auf Tracking? Mir ist das zu einseitig.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
tbd.&lt;br /&gt;
&lt;br /&gt;
; Wortwahl:&lt;br /&gt;
Ich stosse innerhalb der Texte immer wieder an die Worten '''Hintergrundsystem''' und '''Sicherheitskontext'''.&lt;br /&gt;
'''Hintergrundsystem:''' besseres Synonym?&lt;br /&gt;
'''Sicherheitskontext:''' nur weil es in den Texten um Sicherheit geht muss nicht an jeder Stelle immer wieder das Wort _Sicherheits_kontext eingebaut werden.&lt;br /&gt;
Bsp: &amp;quot;Erlangt ein Angreifer Kenntnis von einer solchen gültigen, aber nicht mehr genutzten SessionID, so kann er die Web-Anwendung im Sicherheitskontext des nicht abgemeldeten Benutzers weiter verwenden.&amp;quot; (G 5,WA12 Unzureichendes Session-Management von Web-Anwendungen)&lt;br /&gt;
Verbesserungsansansatz: ... so kann er die Web-Anwendung anstelle des eigentlichen Besitzers weiterhin verwenden.&lt;br /&gt;
&lt;br /&gt;
== &amp;quot;G 2.WA01 Mangelhafte Auswahl oder Konzeption von Web-Anwendungen&amp;quot; (Matthias) ==&lt;br /&gt;
&lt;br /&gt;
Nachdem ich mir diese Gefährdung durchgelesen hatte, fehlten mir ehrlich gesagt etwas die Worte. Nicht nur, dass hier fast jeder zweite Satz entweder falsch ist bzw. massive Fehler enthält oder ich diesen schlicht nicht verstehe, ist der ganze Text sprachlich wirklich enorm verbesserungsfähig. &lt;br /&gt;
&lt;br /&gt;
Na gut, ich konzentriere mich mal auf die fachlichen Punkte:&lt;br /&gt;
&lt;br /&gt;
; 1. Security Controls&lt;br /&gt;
Werden mal mit &amp;quot;Schutzmechanismen&amp;quot;, mal mit &amp;quot;Sicherheitskomponenten&amp;quot; und dann wieder als &amp;quot;Sicherheitsfunktionen&amp;quot; bezeichnet. Hier macht eine einheitliche Benennung sicherlich Sinn und ist weniger verwirrend.&lt;br /&gt;
&lt;br /&gt;
; 2. &amp;quot;Eine Web-Anwendung ist in der Regel ein verteiltes, komplexes System bestehend aus unterschiedlichen Komponenten (z. B. Webserver, Applikationsserver, Hintergrundsysteme)&amp;quot;&lt;br /&gt;
&lt;br /&gt;
Eine Webanwendung besteht sicher nicht aus einem Webserver- oder anderer infrastruktureller Komponenten, sondern ist Software welches diese nutzt.&lt;br /&gt;
&lt;br /&gt;
; 3. &amp;quot;Bei individuell entwickelten Web-Anwendungen sind im Allgemeinen die Frameworks, Komponenten und Schnittstellen im Rahmen der Konzeption auszuwählen und deren Einbindung und Absicherung zu betrachten....Im Gegensatz dazu ist bei der Konzeption von Web-Anwendungen auf Basis von Standardsoftware insbesondere auf die Auswahl der Software und die Konfiguration der Teilkomponenten zu achten&amp;quot;&lt;br /&gt;
&lt;br /&gt;
Wir unterscheiden im Rahmen von Webanwendungen eigentlich Free or Opensource Software (FOSS bzw. FLOSS), Standardsoftware und Individualsoftware voneinander. Wir unterscheiden nicht Frameworks von Standardsoftware. Frameworks können Teil von Standardsoftware sein, wie etwa bei SharePoint, SAP, etc, oder aber FOSS, wie etwa Spring. Die ganzen Absätze machen für mich daher keinen Sinn.&lt;br /&gt;
&lt;br /&gt;
; 4. &amp;quot;Eine Sicherheitsfunktion (z. B. Authentisierung, Autorisierung) wird nicht an einer Stelle umgesetzt und verwendet, sondern ist mehrfach in der Web- Anwendung realisiert. Wird diese Sicherheitsfunktion an den verschiedenen Stellen unterschiedlich umgesetzt, führt dies zu einem uneinheitlichen Sicherheitsniveau.&amp;quot;&lt;br /&gt;
&lt;br /&gt;
Natürlich ist die mehrfache Verwendung bestimmter Security Controls, beispielsweise von Zugriffskontrollen (Complete-Mediation) oder Validierung (Robustheit) erstrebenswert. Was der Autor hier wahrscheinlich meinte, war die Notwendigkeit diese zu Kapseln bzw. zu Externalisieren. Das bezieht sich im übrigen nicht nur auf die Controls selbst, sondern auch auf ihre Parametrisierung (etwa. über Konfigdateien / XACML).&lt;br /&gt;
&lt;br /&gt;
Wichtiger wäre in diesem Zusammenhang zudem die fehlende Berücksichtigung bestimmter Security Controls.&lt;br /&gt;
&lt;br /&gt;
; 5. &amp;quot;Auswahl von Web-Anwendungen auf Basis von Standardsoftware&amp;quot;&lt;br /&gt;
Was will der Satz sagen? Ich wähle Standardsoftware aus, aber doch keine Webanwendungen. Oder heißt das, ich kaufe eine existierende Anwendung ein (Webanwendung!=Indivudualsoftware)? &lt;br /&gt;
&lt;br /&gt;
; 6. &amp;quot;Das ausgewählte Produkt verfügt nicht über die ausreichende Sicherheitsfunktionalität, ... Daher müssen die notwendigen Schutzmechanismen nachträglich hinzugefügt werden, wodurch zusätzliche Aufwände entstehen.&amp;quot;&lt;br /&gt;
Das ist etwas sehr positiv formuliert. Tatsächlich können fehlende Security Controls in zugekaufter Software (insb. Standardsoftware) in der Realität häufig gar nicht hinzugefügt werden oder nur perimetrisch (z.B. per WAF oder Access Gateway).&lt;br /&gt;
&lt;br /&gt;
; 7. &amp;quot;Die Hintergrundsysteme werden unzureichend abgesichert und dadurch ist die Datenbank der Web-Anwendung aus dem Internet erreichbar.&amp;quot;&lt;br /&gt;
Gehören fehlende Netzwerksegmentierung bzw. Firewallregeln wirklich in diesen Kontext? Das ist doch eigentlich Grundschutz der Infrastruktur, oder?&lt;br /&gt;
&lt;br /&gt;
; 8. &amp;quot;Aufgrund schwacher Parameter in der Konfiguration des Frameworks zum Session-Management werden unsichere SessionIDs erzeugt.&amp;quot;&lt;br /&gt;
Was sind &amp;quot;schwache&amp;quot; Parameter?&lt;br /&gt;
&lt;br /&gt;
Welches Framework erlaubt unsichere SessionIDs durch eine &amp;quot;schwache&amp;quot; Konfiguration zu erzeugen?&lt;br /&gt;
&lt;br /&gt;
; 9. &amp;quot;Wird die Konfiguration des Web-Browsers durch einen Angreifer manipuliert, können die clientseitig umgesetzten&amp;quot;&lt;br /&gt;
&lt;br /&gt;
Manipuliert ein Angreifer die Konfguration seines Webbroswers, wenn er einen MITM-Proxy konfiguriert?&lt;br /&gt;
&lt;br /&gt;
Wie bereits bei den &amp;quot;Goldenen Regeln&amp;quot; angemerkt, gilt auch hier, das manche Security Controls auch clientseitig umgesetzt werden dürfen (etwa. zur Verhinderung von Dom-Based XSS).&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== &amp;quot;G 5.WA10 Fehler in der Web-Anwendungslogik&amp;quot; (Dennis) ==&lt;br /&gt;
; 1. &amp;quot;Damit kann aufgrund der Prüfreihenfolge ein hoher Ressourcenverbrauch provoziert werden, der für Denial-of-Service-Angriffe ausgenutzt werden kann.&amp;quot;&lt;br /&gt;
Meiner Meinung nach passt in diesem Kontext die Attacke DoS nicht ganz. Falls die nachfolgende Funktionalität wegen der langen Ausführungszeit der Filterkomponente übersprungen wird bzw. ein Fehler auftritt würde dies meiner Ansicht in die Thematik Anwendungslogik passen. Eine DoS-Attacke kann hingegen anhand jeder Funktion durchgeführt werden.&lt;br /&gt;
&lt;br /&gt;
([[User:Mrohr|Matthias]]) Jo stimmt, aber ich stimme mit der Aussage eigentlich schon ueberein, auch wenn diese zugegeben etwas ungluecklich formuliert ist. Es geht hier ja darum, rechenintensive Pruefungen/Filterung moeglichst zu vermeiden bzw. zu reduzieren. Aus diesem Grund machen wir ja auch bei der AV-Pruefung zunaechst Blacklist-Checks und erst am Ende rechenintensive statistische oder verhaltensbezogene Pruefungen.&lt;br /&gt;
&lt;br /&gt;
== &amp;quot;G 5.WA11 Umgehung clientseitig umgesetzter Sicherheitsfunktionen von Web-Anwendungen&amp;quot; (Dennis) ==&lt;br /&gt;
; 1. &amp;quot;Ein Angreifer kann diese ausnutzen, um beispielsweise unbefugt Befehle an Hintergrundsysteme der Web-Anwendung zu übermittlen (z.B. in Form von Datenbankanfragen bei einer SQL-Injection).&amp;quot;&lt;br /&gt;
Umformulierung des Inhalts der Klammer. Hatte beim ersten Lesen für mich den Anschein, als ob ein Formular genutzt werden könnte welches den Nutzer aufforder eine SQLI einzugeben. Ich denke &amp;quot;Datenbankanfrage zwecks Ausführung einer SQL-Injection&amp;quot; würde besser passen.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== G 2.WA02 Mängel bei der Entwicklung und der Erweiterung von Web-Anwendungen (Matthias) ==&lt;br /&gt;
&lt;br /&gt;
Allgemein ist de obere Teil ok, die aufgezählten &amp;quot;Auswirkungen von fehlenden Vorgaben&amp;quot; verstehe ich jedoch nicht. Wo ist etwa der Bezug von Barrierefreiheit auf die Anwendungssicherheit?&lt;br /&gt;
&lt;br /&gt;
Mein Vorschlag, um diese Punkte etwa sinnvoll umzubauen:&lt;br /&gt;
* &amp;quot;Fehlendes Vorgehensmodell&amp;quot;: Bezug auf fehlende Berücksichtigung von Sicherheit im SDLC. Statt eines SDLCs selbst sollte hier besser auf die Notwendigkeit eines Secure Development Lifecycle (SDL) hingewiesen werden&lt;br /&gt;
* &amp;quot;Fehlende Programmierrichtlinien&amp;quot; =&amp;gt; Besser wäre hier &amp;quot;Fehlende Sicherheitsrichtlinien in der Programmierung&amp;quot; also &amp;quot;Secure Coding Guidelines&amp;quot;&lt;br /&gt;
* &amp;quot;Testfälle&amp;quot; =&amp;gt; &amp;quot;Sicherheitsrelevante Testfälle&amp;quot; (z.B. Security Unit Tests). &lt;br /&gt;
* &amp;quot;Barrierefreiheit&amp;quot;: Warum nicht an dieser Stelle die Auswirkungen von Sicherheitsfunktionen auf die Bedienbarkeit, etwa anhand von CAPTCHAS erläutern?&lt;br /&gt;
&lt;br /&gt;
== G 2.WA03 Unzureichender Schutz personenbezogener Daten bei Web-Anwendungen (Matthias) ==&lt;br /&gt;
&lt;br /&gt;
Der Titel dieses Bausteines heißt &amp;quot;Schutz personenbezogener Daten&amp;quot;, die genannten Beispiele beziehen sich bis auf den letzten jedoch auf die missbräuchliche (oder zumindest problematische) Nutzung aus Sicht des Datenschutzes. &lt;br /&gt;
&lt;br /&gt;
Die Punkt 1-3 sollten daher besser entfallen und z.B. durch die Folgenden ersetzt werden:&lt;br /&gt;
* Unsichere Einbindung von sozialen Netzwerken (Bezug nehmen auf den Like-Button bei Facebook)&lt;br /&gt;
* Unsichere Einbindung von Werbeinhalten&lt;br /&gt;
* Unsichere Übertragung und Caching&lt;br /&gt;
* Unsichere Protokollierung&lt;br /&gt;
* Ungenügender Zugriffsschutz&lt;br /&gt;
* Verstoß des Minimalprinzips bzw. der Zweckgebundenheit (welche Daten werden wirklich benötigt)&lt;br /&gt;
&lt;br /&gt;
Auch wäre es ggf. zumindest einen Verweis auf das BDSG zu machen.&lt;br /&gt;
&lt;br /&gt;
== G 4.33 Unzureichende oder fehlende Authentisierung (Matthias) ==&lt;br /&gt;
&lt;br /&gt;
; 1. Erster Absatz: &amp;quot;Wenn Authentisierungsmechanismen fehlen oder zu schlecht sind&amp;quot;&lt;br /&gt;
&lt;br /&gt;
&amp;quot;schlecht&amp;quot; sollte vlt besser durch &amp;quot;unzureichend&amp;quot; ersetzt werden.&lt;br /&gt;
&lt;br /&gt;
; 2. &amp;quot;Sicherheitslücken entstehen bei... der Benutzerauthentisierung&amp;quot;&lt;br /&gt;
&lt;br /&gt;
Hier findet nur ein Bezug auf &amp;quot;Passwörter&amp;quot; statt. Der Bezug auf die fehlerhaft implementierte oder dem Schutzbedarf ungenügende Schutzmechanismen (z.B. keine 2-Faktor-Authentisierung bei hochsensiblen Daten) fehlt. Auch auf das komplette fehlen von Authentisierungs-Controls wird hier nicht  eingegangen&lt;br /&gt;
&lt;br /&gt;
; 3. &amp;quot;Sicherheitslücken entstehen bei... der Komponentenauthentisierung&amp;quot;&lt;br /&gt;
&lt;br /&gt;
Wie bei 2., wird auch hier wieder nur auf Passwörter, nicht jedoch auf das fehlen von Controls selbst eingegangen. An dieser Stelle fehlt auch ein Hinweis auf die Notwendigkeit dedizierter Benutzeraccounts.&lt;br /&gt;
&lt;br /&gt;
; 4. &amp;quot;Sicherheitslücken entstehen bei... der Wahl des Verfahrens&amp;quot;&lt;br /&gt;
&lt;br /&gt;
Statt untauglich würde ich auch hier von &amp;quot;dem Schutzbedarf der Daten nicht angemessen&amp;quot; sprechen, eigentlich gehört das für mich aber in die obigen Punkte.&lt;br /&gt;
&lt;br /&gt;
; 5. Serverseitige Authentisierung fehlt&lt;br /&gt;
&lt;br /&gt;
Auch der Server (bzw. die Anwendung selbst) kann sich fehlerhaft oder ungenügend beim Benutzer authentsieren, etwa über DNS, SSL-Zertifikate, etc.&lt;br /&gt;
&lt;br /&gt;
== G 4.WA04 Unzureichende Validierung von Ein- und Ausgabedaten bei Web-Anwendungen (Matthias) ==&lt;br /&gt;
&lt;br /&gt;
; 1. &amp;quot;Unzureichende Validierung von Eingabedaten&amp;quot;&lt;br /&gt;
&lt;br /&gt;
Die genannten Beispiele sind genau keine korrekten Beispiele für diesen Fall, sondern betreffen die Ausgabevalidierung bzw. Enkodierung. Typische Fehler der Eingabevalidierung ist eine Manipulierbarkeit der Business Logik.&lt;br /&gt;
&lt;br /&gt;
; 2. &amp;quot;Unzureichende Validierung von Ausgabedaten&amp;quot;&lt;br /&gt;
&lt;br /&gt;
Hier geht es zentral um die Verhinderung von Interpreter Injection, also serverseitig (z.B. SQL oder LDAP Injection) oder clientseitig (XSS, JSON Injection, etc.). Statt &amp;quot;können die Ausgaben Schadcode&amp;quot; enthalten würde ich hier eher davon Sprechen, dass ein solcher Interpreteraufruf manipuliert werden kann (was dann z.B. zur Einschleusung von Schadcode genutzt werden kann).&lt;br /&gt;
&lt;br /&gt;
; 3. &amp;quot;Die Suchfunktion der Web-Anwendung verwendet die Eingaben der Benutzer ungefiltert&amp;quot;&lt;br /&gt;
&lt;br /&gt;
Mit ungenügender &amp;quot;Filterung&amp;quot; hat SQL Injection nichts zu tun,  eigentlich geht es hierbei darum, dass SQL-Anfragen dynamisch mit unvalidierten Eingebedaten zusammengebaut (konkateniert) werden.&lt;br /&gt;
&lt;br /&gt;
; 4. &amp;quot;Ungefilterter HTML-Code in Kommentar-Funktion&amp;quot;&lt;br /&gt;
&lt;br /&gt;
Hier fehlt der Bezug auf persistentes XSS, das hier sicherlich zentral ist.&lt;br /&gt;
&lt;br /&gt;
== G 4.WA05 Fehlende oder mangelhafte Fehlerbehandlung durch Web-Anwendungen (Tobias, Matthias) ==&lt;br /&gt;
; Abschnitt &amp;quot;Unsichere Fehlerbehandlung&amp;quot;&lt;br /&gt;
Die G adressiert &amp;quot;Unsichere Fehlerbehandlung&amp;quot;, der Abschnitt die &amp;quot;Unsichere Fehlerbehandlung in Sicherheitskomponenten&amp;quot;. Entsprechend sollte der fettgedruckte Teil angepasst werden.&lt;br /&gt;
&lt;br /&gt;
; &amp;quot;fehlende SQL-Parameter,&amp;quot;&lt;br /&gt;
Sollte besser &amp;quot;Fehlermeldungen bei ungültigen SQL-Abfragen&amp;quot; lauten.&lt;br /&gt;
&lt;br /&gt;
; &amp;quot;Auch scheinbar unkritische Informationen, wie die Meldung ob (..)&amp;quot;&lt;br /&gt;
Korrekt, allerdings nicht nachvollziehbar, wenn das Problem der Leser nicht schon bekannt ist. Daher erweitern nach &amp;quot; Rahmen von Brute-Force-Angriffen ausgenutzt werden.&amp;quot; mit &amp;quot;. Bei Brute-Force-Angriffen wäre in diesem Fall klar, dass der Benutzername gültig ist.&amp;quot;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[User:Mrohr|Matthias]]): Stimme dem Obigen auch zu, ausserdem:&lt;br /&gt;
&lt;br /&gt;
; Sprachlich: &amp;quot;kann dies unvorhersehbare Auswirkungen haben und den Betrieb der Web-Anwendung bis zur Unerreichbarkeit einschränken.&amp;quot;&lt;br /&gt;
&lt;br /&gt;
&amp;quot;Unerreichbarkeit&amp;quot; ist etas merkwuerdig ausgedrueckt, besser ware hier von der &amp;quot;Verfuegbarkeit&amp;quot; zu sprechen. Im Uebrigen fehlt vollstaendig der Bezug auf die Verfuegbarkeit als Primaeres Schutzziel der Informationssicherheit.&lt;br /&gt;
&lt;br /&gt;
; &amp;quot;Clientseitige Fehlerbehandlung&amp;quot;&lt;br /&gt;
Das stimmt soweit, das generelle Problem ist jedoch genereller, naehmlich die clientseitige Abbildung sicherheitsrelaventer Logik (in diesem Fall die Fehlerbehandlung)&lt;br /&gt;
&lt;br /&gt;
== G 4.WA06 Unzureichende Nachvollziehbarkeit von sicherheitsrelevanten Ereignissen bei Web-Anwendungen (Matthias) ==&lt;br /&gt;
&lt;br /&gt;
; 1. Erster Absatz: &amp;quot;Die Behebung einer Schwachstelle ist dann nicht oder nur unter erschwerten Bedingungen möglich.&amp;quot;&lt;br /&gt;
&lt;br /&gt;
Hier würde ich ergänzen: &amp;quot;...und Angriffe auf die Anwendungen können ggf. nicht erkannt oder nachvollzogen werden&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
; 2. &amp;quot;Beispiele&amp;quot;: Kommulierbarkeit&lt;br /&gt;
&lt;br /&gt;
Hier fehlt auch ein Bezug auf die Kommulierbarkeit von SIcherheitsereignissen, dass diese also auch von solchen anderer Systeme in Verbindung gesetzt werden können&lt;br /&gt;
&lt;br /&gt;
; 3. &amp;quot;Beispiele&amp;quot;: Gerichtsverwertbarkeit&lt;br /&gt;
&lt;br /&gt;
Auch die Möglichkeit zur Gerichtsverwertbarkeit (etwa durch eindeutigen Zeitstempel) und manipulationssicherer Speicherung, würde ich an dieser Stelle unbedingt erwähnen.&lt;br /&gt;
&lt;br /&gt;
== G 4.WA07 Offenlegung von Informationen bei Web-Anwendungen (Matthias) ==&lt;br /&gt;
&lt;br /&gt;
; 1. Titel&lt;br /&gt;
&lt;br /&gt;
Hier würde ggf. &amp;quot;Offenlegung vertraulicher Informationen&amp;quot; sicher besser passen als &amp;quot;Offenlegung von Informationen&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
; 2. Beispiellink&lt;br /&gt;
&lt;br /&gt;
Ein Beispiellink (mit und ohne Token) würde sicher die Verständlichkeit dieser Schwachstelle verbessern.&lt;br /&gt;
&lt;br /&gt;
; 3. Erster Absatz: &amp;quot;Wenn demzufolge Informationen unnötig offengelegt werden, steigt die Wahrscheinlichkeit eines erfolgreichen Angriffs.&amp;quot;&lt;br /&gt;
&lt;br /&gt;
Interne Informationen auszublenden ist eine Härtungsmaßnahme, deren Anzeige erhöht aber nicht zwangsläufig die Wahrscheinlichkeit eines erfolgreichen Angriffs. Ich würde diesen Satz weglassen.&lt;br /&gt;
&lt;br /&gt;
 ; 4. Fehlende Punkte&lt;br /&gt;
&lt;br /&gt;
* Ein Hinweis auf HTTP Header wäre hier sicher erwähnenswert.&lt;br /&gt;
* Weiterhin bzgl. der Anzeige von Traces und ein Verweis auf den Entsprechenden Baustein zur Fehlerbehandlung&lt;br /&gt;
&lt;br /&gt;
== G 5.WA14 Cross-Site Request Forgery (CSRF, XSRF) (Matthias) ==&lt;br /&gt;
&lt;br /&gt;
; 1. Erster Absatz: &amp;quot;Können Funktionen einer Web-Anwendung ohne weitere Überprüfung der Authentizität des HTTP-Requests (z.B. durch Tokens in versteckten Formularfeldern) genutzt werden&amp;quot;&lt;br /&gt;
&lt;br /&gt;
Statt &amp;quot;Funktionen&amp;quot; würde ich besser von &amp;quot;schreibenden Aktionen&amp;quot; sprechen, dann macht der Satz mehr Sinn.&lt;br /&gt;
&lt;br /&gt;
; 2. Dritter Absatz: &amp;quot;Im Gegensatz zu XSS (siehe ...￼ ) ist das Angriffsziel nicht die Information auf dem Client (z. B. in Cookies),&amp;quot;&lt;br /&gt;
&lt;br /&gt;
Dieser (Halb-)Satz macht keinen Sinn, auch weil es bei XSS nicht nur im Informationen auf dem Cient geht. Vorschlag: &amp;quot;ist das Angriffsziel nicht die Ausführung von Skriptcode, sondern von unbefugten, schreibenden Aktionen im Kontext des angemeldeten Benutzers.&amp;quot;&lt;br /&gt;
&lt;br /&gt;
; 3. Session Riding&lt;br /&gt;
&lt;br /&gt;
Session Riding ist quasi nur ein anderer Begriff für CSRF. Die einzige Form von CSRF die mir bekannt ist, sind Angriffe mit Standard-Passwörtern auf HTTP-Basic-Auth geschützten Ressourcen.&lt;br /&gt;
&lt;br /&gt;
Im Grunde ist Session Riding aber nur ein Synonym für CSRF. Der Absatz ist daher auch nur eine Wiederholung der obigen Beschreibung.&lt;br /&gt;
&lt;br /&gt;
; 4. Zum Beispiel: &amp;quot;Durch einen präparierten Link auf einer Webseite wird die Änderung des Zugangspasswortes des Routers eingeleitet.&amp;quot;&lt;br /&gt;
&lt;br /&gt;
Etwas ungüngstig ausgedrückt. Besser wäre: &amp;quot;wird eine Anfrage zur Änderung des Zugangspasswortes an den Router gesendet. Hierbei sendet der Browser automatisch den Session Cookie mit, worüber die Webanwendung die Authentizität der Anfrage verifiziert und die Änderung durchführt.&amp;quot;&lt;br /&gt;
&lt;br /&gt;
== G 5.WA18 Clickjacking (Matthias) ==&lt;br /&gt;
&lt;br /&gt;
Hier stellt sich mir nur die allgemeine Frage, ob Clickjacking, bzw. der Schutz davor tatsächlich einem Grundschutz zuzurechnen ist. Persönlich würde ich dies nicht tun.&lt;br /&gt;
&lt;br /&gt;
== M 2.WA02 Dokumentation der Architektur von Web-Anwendungen (Matthias) ==&lt;br /&gt;
&lt;br /&gt;
; Verantwortlich für die Umsetzung&lt;br /&gt;
Hier wäre auch die Nennung des &amp;quot;Architekten&amp;quot; sinnvoll&lt;br /&gt;
 &lt;br /&gt;
; Fehlende Bestandteile der Dokumentation:&lt;br /&gt;
* Schutzbedarf des Systems sowie der verarbeiteten Daten&lt;br /&gt;
* Schützenswerte Daten und Funktionen (Assets)&lt;br /&gt;
* Betriebliche Anforderungen an die Sicherheit bzw. eingesetzte Plattform&lt;br /&gt;
* Dokumentierte Konfigurationseinstellungen &lt;br /&gt;
* BIA (RTO, RPO)&lt;br /&gt;
* Schnittstellen&lt;br /&gt;
* Trust Boundaries&lt;br /&gt;
* Akteure (bzw. Trust Level)&lt;br /&gt;
* Sicherheitsannahmen&lt;br /&gt;
* Geltende Compliance-Anforderungen (BDSG, PCI DSS, etc.)&lt;br /&gt;
&lt;br /&gt;
; Benutzermanagement&lt;br /&gt;
&lt;br /&gt;
Wenn damit das Identity Management gemeint ist, gehört das Dokumentiert, ist aber keine Sicherheitsfunktion. Oder ist hiermit das Rollen- und Berechtigungskonzept gemeint? Grenzt sich aus meiner Sicht schwer mit dem Thema Authentisierung ab. &lt;br /&gt;
&lt;br /&gt;
; Prüffragen&lt;br /&gt;
&lt;br /&gt;
Hier fehlt etwas in Bezug auf Sicherheitsanforderungen. Beispiel: &amp;quot;Werden Sicherheitsanforderungen an den Betrieb während der Entwicklung abgestimmt und dokumentiert&amp;quot;&lt;br /&gt;
&lt;br /&gt;
== M 2.WA12 Entwicklung und Erweiterung von Anwendungen (Markus) ==&lt;br /&gt;
; &amp;quot;Es sollte darauf geachtet werden, dass Sicherheitsanforderungen&lt;br /&gt;
vollständig durch Sicherheitsmechanismen erfüllt und zur Erstellung von&lt;br /&gt;
Testfällen festgehalten werden.&amp;quot; --&amp;gt; Bessere Formulierung würde aussagen, dass die Sicherheitsanforderungen durch Testfälle verifiziert werden.&lt;br /&gt;
&amp;quot;(z. B. durch Kommentare im&lt;br /&gt;
Quelltext). Somit ist der Quelltext zu einem&amp;quot; --&amp;gt; Das ist kein empfehlenswerter Programmierstiel! Raus mit diesem Kommentar&lt;br /&gt;
;&amp;quot;Zum Schutz vor dem Verlust bereits entwickelter und verworfener&lt;br /&gt;
Lösungen sowie zu Dokumentationszwecken sollte die Historie der&lt;br /&gt;
Änderungen festgehalten werden (z. B. durch ein Revisionssystem).&amp;quot; --&amp;gt; Auch diesen Absatz können wir streichen - Kein professioneller Programmierer arbeitet ohne Versionierugssystem.&lt;br /&gt;
;&amp;quot;Bei Web-Anwendung sollten die Webseiten auf Konformität zu dem&lt;br /&gt;
verwendeten Standard (z. B. HTML-Standard) getestet werden. Dadurch&lt;br /&gt;
können unvorgesehene Seiteneffekte aufgrund einer Fehlinterpretation&lt;br /&gt;
seitens der Browser vermieden werden.&amp;quot; --&amp;gt; Könnte man noch um &amp;quot;Die Software ist in möglichst vielen Browsern zu testen&amp;quot; erweitern.&lt;br /&gt;
;Generell geht der Autor leider nicht auf die Rollen &amp;amp; Rechte Verteilung ein. Mir fehlt der Hinweis, das es eine personelle Trennung zwischen Entwicklung, Test und Betrieb geben muss.&lt;br /&gt;
;Zum Thema Wartung / Betrieb --&amp;gt; Hier wird keine Aussage getroffen bezüglich Log_Files. Dieses Thema kann kritische Auswirkungen haben, Bsp.: logging ganzer HTTP-Requests im LogLevel=Debug.&lt;br /&gt;
; &amp;quot;Produktspezifische Sicherheitsfunkionalität&amp;quot; - Dieser Absatz ist gefährlich - der Angreifer ist nicht zur Verwendung dies Zielbrowsers gezwungen. Deshalb können Browser-spez. Sicherheitsfunktionen nur als Add-ON gewertet werden.&lt;br /&gt;
; &amp;quot;Festlegung der Entwicklungsumgebung&amp;quot; - Dieser Absatz geht nicht auf die zu verwendenden Testdaten ein. Der Hinweis, dass Live-Daten / Kundendaten nichts in Test- &amp;amp; Entwicklungsumgebungen zu suchen haben fehlt!!!&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== M 2.WA24 Web-Tracking (Matthias) ==&lt;br /&gt;
&lt;br /&gt;
; Letzter Absatz: &amp;quot;Falls eine Auswertung von Nutzerdaten, insbesondere personenbezogener Daten, .. &amp;quot;&lt;br /&gt;
&lt;br /&gt;
Hier sollte denke ich besser von personenbeziehbaren Daten gesprochen Werten. Dies betrifft etwa die Zuordnung von Surfverhalten zu einer bestimmten Person. Dies sollte stets nach den Prinzipien Datensparsamkeit und Datenvermeidung, Erforderlichkeit, sowie Zweckbindung erfolgen. Ist Webtracking nicht personenbeziehbar ist dies kein Thema für den Datenschutz.&lt;br /&gt;
&lt;br /&gt;
== M 4.WA04 Authentisierung bei Web- Anwendungen (Matthias) ==&lt;br /&gt;
&lt;br /&gt;
: Verantwortlich fuer Umsetzung &lt;br /&gt;
sollte in erster Linie beim Architekturen und in zweiter beim Entwickler liegen&lt;br /&gt;
; Vermischung von Authentisierung und Session Management &lt;br /&gt;
&lt;br /&gt;
Bei diesem Baustein findet eine ziemlich große Vermischung von Anforderung an die Authentisierung und das erst in &amp;quot;M 4.WA06 Session-Management bei Web- Anwendungen&amp;quot; behandelte Session Management statt (Beispiel: &amp;quot;Remember-Me-Funktion&amp;quot;). Beide Themen sollten sinnvollerweise getrennt voneinander zu betrachten und aufeinander zu beziehen.&lt;br /&gt;
&lt;br /&gt;
; Verwendung von Frameworks&lt;br /&gt;
&lt;br /&gt;
Die Anforderung ist schon ein wenig eingeschränkt. Besser passt hier denke ich die &amp;quot;Abbildung der Authentisierung über Standardkomponenten (Bibliotheken oder Frameworks)&amp;quot;. &lt;br /&gt;
&lt;br /&gt;
; Remember-Me-Funktion&lt;br /&gt;
&lt;br /&gt;
Siehe oben, gehört zum Session Management. Das ließt sich im übrigen so, als ob eine Webanwendung Credentials auf dem Client abhängt. &lt;br /&gt;
&lt;br /&gt;
; Grenzwerte für gescheiterte Anmeldeversuche&lt;br /&gt;
&lt;br /&gt;
Diese Empfehlung ist allgemein falsch, da sie sehr von der betrachteten Anwendung abhängt. Besser wäre hier allgemein von Mechanismen zur Verhinderung von automatisierten Angriffen zu sprechen (Anti-Automatisierung). &lt;br /&gt;
&lt;br /&gt;
Etwa umsetzbar durch&lt;br /&gt;
* Sperrung nach x Anmeldeversuchen&lt;br /&gt;
* Throttling&lt;br /&gt;
* Captchas&lt;br /&gt;
* Sicherheitsfragen&lt;br /&gt;
&lt;br /&gt;
Das allgemeine Sperren kann leicht für das gezielte Aussperren von Benutzern (User Lockout) verwendet werden. Was etwa bei Trading-Anwendungen nicht funktioniert.&lt;br /&gt;
&lt;br /&gt;
; Automatisiertes Zurücksetzen von Authentisierungsdaten&lt;br /&gt;
&lt;br /&gt;
Würde ich besser als &amp;quot;Passwort-Reset&amp;quot; bezeichnen.&lt;br /&gt;
&lt;br /&gt;
Weiterhin fehlt hier der Hinweis, dass statt ein automatisiertes Zurücksetzen, ein Mechanismus zu empfehlen ist, bei dem über ein hinterlegtes Sicherheitsmerkmal (Handy-Nummer oder E-Mail-Adresse) vom Benutzer zunächst eine Verifikation durchgeführt wird. Beispielsweise durch einen erhaltenen Link. Erst dann darf eine Änderung des Passwortes durch den Benutzer erfolgen.&lt;br /&gt;
&lt;br /&gt;
; Registrierung nicht behandelt&lt;br /&gt;
&lt;br /&gt;
Es existiert hier kein Punkt, der die sichere Implementierung von Benutzerregistrierungen behandelt.&lt;br /&gt;
&lt;br /&gt;
; Verweis auf Externalisierung fehlt.&lt;br /&gt;
&lt;br /&gt;
Statt die Authentisierung selbst durchzuführen kann eine Anwendung hierzu auf eine externe Komponente (Beispiel: SiteMinder oder Kerberos) zurückgreifen.&lt;br /&gt;
&lt;br /&gt;
; Verweis auf Behandlung von Credentials fehlt&lt;br /&gt;
&lt;br /&gt;
Auch wenn das  in &amp;quot;M 4.WA15 Schutz vertraulicher Daten bei Web- Anwendungen&amp;quot; ausführlich behandelt wird, sollte in diesem Baustein bereits auf den angemessenen Schutz von Authentisierungsdaten bei Übertragung und Speicherung hingewiesen werden.&lt;br /&gt;
&lt;br /&gt;
== M 4.WA05Umfassende Ein- und Ausgabevalidierung bei Web-Anwedungen (Markus) ==&lt;br /&gt;
; &amp;quot;Ablehnung der Daten im&lt;br /&gt;
Fehlerfall&amp;quot; --&amp;gt; Hier könnte man noch auf Tar-Pits eingehen - nur ein Vorschlag.&lt;br /&gt;
&lt;br /&gt;
== M 4.WA06Session-Management bei Web-Anwendungen (Markus, Matthias) ==&lt;br /&gt;
; &amp;quot;Übertragung der SessionID mittels GETRequest&amp;quot; --&amp;gt; Hier fehlt der Hinweis, dass die Lebensdauer dieser SessionIds kurz/kürzer sein muss, als im Falle der Speicherung im Cookie.&lt;br /&gt;
&lt;br /&gt;
([[User:Mrohr|Matthias]]) Die Anmerkung verstehe ich ehrlich gesagt ueberhaupt nicht, zumal das SM haeufig transparent zwischen Cookies und URL Rewriting wechselt. Wozu soll das gut sein? Wie soll das geschehen? Idealerweise sollte die Session ID niemals in die URL geschrieben werden, das sollte eigentlich genuegen.&lt;br /&gt;
&lt;br /&gt;
; &amp;quot;Verschlüsselte Übertragung von SessionIDs&amp;quot; --&amp;gt; Hier fehlt der Hinweis auf den Beast-Exploit. TLS Version &amp;gt; 1.0 verwenden!&lt;br /&gt;
&lt;br /&gt;
([[User:Mrohr|Matthias]]) Solange hier nicht auf eine explizite TLS Version eingegangen wird, sollte meiner grossen Ueberzeugung nach hier auch auf keine Exploits etc. eingagen werden, das gehoert an andere Stelle.&lt;br /&gt;
&lt;br /&gt;
; ([[User:Mrohr|Matthias]]) Weiterhin:&lt;br /&gt;
&lt;br /&gt;
 Es dürfen keine extern bekannten oder erratbaren Daten (z. B. IP-Adresse, Uhrzeit) in die Berechnung der SessionID einfließen.&lt;br /&gt;
&lt;br /&gt;
Die Aussage finde ich etwas problematisch, wichtiger ist, dass die Entropie ausreichend hoch ist. Haeufig werden etwa IPs von Load Balancern in die Session ID hineingeschrieben.&lt;br /&gt;
&lt;br /&gt;
 - Domain (z. B. webapp.domain.tld),&lt;br /&gt;
 - Path (z. B. /webapp/),&lt;br /&gt;
 - Secure und&lt;br /&gt;
 - HttpOnly.Beschränkte Sitzungsdauer&lt;br /&gt;
&lt;br /&gt;
Das sieht so aus, als ob es empfehlenswert ist, das Domain-Tag zu verwenden, das ist es sicherlich nicht. Was macht hier der Hinweis &amp;quot;Beschraenke Sizuungsdauer&amp;quot;?&lt;br /&gt;
&lt;br /&gt;
== M 4.WA07Fehlerbehandlung durch Web-Anwendungen (Markus) ==&lt;br /&gt;
; Konsistenter / Inkonsistener Zustand einer Webanwendung und der daraus resultierende Datenverlust: Hier fehlen mir die Punkte: DOS, Priv.Escalation, CodeExecution.&lt;br /&gt;
([[User:Mrohr|Matthias]]) Vorschlag &amp;quot;und somit der Schutz der Daten&amp;quot; aendern in &amp;quot;und somit ETWA der Schutz der Daten&amp;quot; korrigieren&lt;br /&gt;
&lt;br /&gt;
; Vermeidung vertraulicher Informationen in Fehlermeldungen --&amp;gt; Fehlermeldungen sollten ebenfalls eine Systeminformationen preisgeben (Softwareversion, Patchlevel, etc.)&lt;br /&gt;
([[User:Mrohr|Matthias]]) Ich glaube hier ist es wichtig zu unterscheiden, wo die Fehlermeldung ausgegeben bzw. wem diese angezeigt wird. Das wird in diesem Modul garnicht so recht unterscheiden. Der Autor meint glaube ich, wie Fehlermeldungen durch die Webanwendung angezeigt werden. In dem Fall hat er recht. Du meinst glaube ich eher, wie Fehlermeldungen protokolliert werden. In dem Fall hast du natuerlich auch recht. Das in dem Text verwendete Wort &amp;quot;ausgeben&amp;quot; ist nicht unbedingt eindeutig und sollte genauer spezifiziert werden.&lt;br /&gt;
&lt;br /&gt;
; Abbruch des Vorgangs nach Auftreten eines Fehlers --&amp;gt; TarPits scheinen dem Autor umbekannt zu sein :)&lt;br /&gt;
([[User:Mrohr|Matthias]]) Stimmt, wobei sich diese ja auch nur auf einen sehr bestimmten Fehlertypen beziehen. Generell laesst sich so etwas unterscheiden, wenn man Fehler-Domains erstellt. Beispiel: Technisch-Unerwartet = Abbruch, Technisch-Erwartet = Fehlermeldug/Tear Pit, etc.&lt;br /&gt;
&lt;br /&gt;
; &amp;quot;Werden Fehler möglichst von der gleichen Komponente behandelt, in der&lt;br /&gt;
der Fehler aufgetreten ist?&amp;quot; --&amp;gt; Das &amp;quot;möglichst&amp;quot; sollten wir streichen.&lt;br /&gt;
([[User:Mrohr|Matthias]]) Hm, der Aussage kann ich nicht ganz zustimmen, bzw. es haengt von dem Begriff &amp;quot;Komponente&amp;quot; ab. Eine Anwendungskomponente kann serwohl bewusst bestimmte Exceptions werfen, die von der einbindenden Komponente behandelt werden muessen.&lt;br /&gt;
&lt;br /&gt;
== M 4.WA08Schutz vor automatisierter Nutzung von Web-Anwendungen (Markus) ==&lt;br /&gt;
; &amp;quot;Brute-Force-&lt;br /&gt;
Angriffe (z. B. Erraten von Zugangsdaten) und Enumeration-Angriffe (z. B.&lt;br /&gt;
automatisiertes Ermitteln von gültigen Login-Namen)&amp;quot; -- die Beispiele sind identisch - besser Beispiele suchen, z.b. URL-Enumeration&lt;br /&gt;
&lt;br /&gt;
([[User:Mrohr|Matthias]]) Das sehe ich anders. Brute-Forcing bezieht auf Passwoerter und Enumeration auf Benutzernamen, etwa durchs hochzaehlen. Auch wenn ich zustimmen muss, dass die nicht ganz gluecklich gewaehlt wurden. Stann &amp;quot;Erraten von Zugangsdaten&amp;quot; wuerde ich besser von &amp;quot;Erraten von Passwoertern&amp;quot; sprechen. Oder wie gesagt gleich auch auf andere Beispiele (etwa Object ID Enumeration) beziehen.&lt;br /&gt;
&lt;br /&gt;
== M 4.WA11Sichere Konfiguration von Web-Anwendungen (Markus) ==&lt;br /&gt;
; &amp;quot;Sicherer Umgang mit TLS/SSL&amp;quot; -- Hier fehlt der Hinweis, dass TLS-1.0 gebrochen ist&lt;br /&gt;
; &amp;quot;Zeichenkodierungskonfiguration&amp;quot; -- Ein Whitelisting abhängig von der Encodierung wäre ein weiterer Vorschlag&lt;br /&gt;
; &amp;quot;Restriktive Dateisystemberechtigungen&amp;quot; -- auch wenn es ein klassiker ist - der AS sollte ebenfalls mit von einem eingeschränkten Nutzer gestartet werden und nicht als root&lt;br /&gt;
; Administration Consolen:zur Ergänzen: Wenn diese nicht benötigit, sollten derartige Applikationen nicht deployed werden, unabhängig von möglichen Zugangsbeschränkungen.&lt;br /&gt;
&lt;br /&gt;
([[User:Mrohr|Matthias]]) Sorry, meiner Meinung nach hat die Bewertung von Kryptoverfahren hier abslut nichts zu suchen.Stattdessen sollte hier auf den entsprechenden [https://www.bsi.bund.de/ContentBSI/Publikationen/TechnischeRichtlinien/tr02102/index_htm.html Empfehlung des BSI] verwiesen werden, auch wenn dieses Dokument derzeit noch etwas outdated zu sein scheint.&lt;br /&gt;
&lt;br /&gt;
== M 4.WA13Kontrolliertes Einbinden von Daten und Inhalten bei Web-Anwendungen (Markus) ==&lt;br /&gt;
; Datei-Upload: Bei einem Upload werden Dateien durchaus in TEMP-Verzeichnissen gesammelt und danach weiterverarbeitet. Diese TEMP-Verzeichnisse sind im Rahmen einer Sicherheitsanalyse zu betrachten -&amp;gt; Möglicher (unbefugter) Zugriff auf weitere Uploads&lt;br /&gt;
; Upload komprimierter Dateien / großer Dateien birgt die Gefahr von DOS Angriffen&lt;br /&gt;
; Upload von Dateien kann bei weiterem Parsing zu Speicherengpässen führen --&amp;gt; DOS-Angriffe auf Thread-Local etc.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== M 4.WA14Restriktive Herausgabe sicherheitsrelevanter Informationen bei Web-Anwendungen (Markus, Matthias) ==&lt;br /&gt;
OK - Keine Anmerkungen von mir.&lt;br /&gt;
&lt;br /&gt;
([[User:Mrohr|Matthias]]) Von mir schon;)&lt;br /&gt;
&lt;br /&gt;
; ([[User:Mrohr|Matthias]]) Vermeidung von Kommentaren in ausgelieferten Webseiten&lt;br /&gt;
&lt;br /&gt;
Das ist leider total falsch, wir brauchen haeufig Komentare, aus Kompatibilitaetsgruenden. So wird etwa der JavaScript-Block haeufig auskommentiert.&lt;br /&gt;
&lt;br /&gt;
Wurde stattessen besser von sicherheitsrelevanten Kommentaren sprechen und als Massnahme generell Entwicklerkommentare ueber Sprachkonstruktre (etwa JSP) durchzufuehren.&lt;br /&gt;
&lt;br /&gt;
; ([[User:Mrohr|Matthias]]) Löschen nicht benötigter Dateien&lt;br /&gt;
&lt;br /&gt;
Hier wurde ich ggf. Dateien von Versionisierungstools (etwa Subversion) erwaehnen, das sehen wir schon recht haeufig.&lt;br /&gt;
&lt;br /&gt;
Statt Dateien einfach nur zu loeschen (was in der Praxis haeufig nicht so einfach ist) bietet es sich zudem an, den Zugriff auf bestimmte Dateien oder Dateitypen generell zu sperren, etwa mittels ACL im Apache.&lt;br /&gt;
&lt;br /&gt;
; ([[User:Mrohr|Matthias]]) Gibt die Web-Anwendung ausschließlich neutrale Fehlermeldungen aus und sind diese im Quelltext identisch? {E: C}&lt;br /&gt;
&lt;br /&gt;
Persoenlich verstehe ich das nicht. Wieseo neutrale Fehlermeldung? Das macht fuer mich nur beim Login Sin. Hierzu existiert in dem Text auch keinerlei Bezug. Ich wuerde das daher besser entfernen und im Rahmen der Fehlerbehandlung diskutieren. Mindestens sollte hier jedoch besser von &amp;quot;sicherheitsunbedentlichen Fehlermeldungen&amp;quot; oder so gesprochen werden.&lt;br /&gt;
&lt;br /&gt;
; ([[User:Mrohr|Matthias]]) Wird der Referrer bei Verlassen der Web-Anwendung (z. B. durch einen Link auf eine externe Seite) gefiltert?&lt;br /&gt;
&lt;br /&gt;
Diesen Punkt sehe ich als sehr Fallabhengig an. Es kann fuer seiten durchaus wuenschenswert sein, dass der Referer weitergegeben wird. Der Referer sollte natuerlich keine sensiblen Informationen enthalten, was ja an anderer Stelle (etwa Session Management) vorgegeben wird bzw. gegeben werden sollte.&lt;br /&gt;
&lt;br /&gt;
== M 4.WA15Schutz vertraulicher Daten bei Web-Anwendungen (Markus, Matthias) ==&lt;br /&gt;
; Sichere kryptographische Algorithmen:&lt;br /&gt;
 Hier fehlt mir eine Liste der aktuelle als sicher geltenden Verfahren.&lt;br /&gt;
([[User:Mrohr|Matthias]]) Am Besten Referenz auf [https://www.bsi.bund.de/ContentBSI/Publikationen/TechnischeRichtlinien/tr02102/index_htm.html https://www.bsi.bund.de/ContentBSI/Publikationen/TechnischeRichtlinien/tr02102/index_htm.html]&lt;br /&gt;
&lt;br /&gt;
; Schlüssel&lt;br /&gt;
 Das die Schlüssel bestimmten Formaten entsprechen müssen ist ok - aber das Schlüsselmanagement wird gar nicht besprochen?&lt;br /&gt;
; Schutz der Daten im Browsercache&lt;br /&gt;
 Skripte und Browserplugins können ebenfalls auf den Browsercache zugreifen - diese werden hier nicht erwähnt.&lt;br /&gt;
&lt;br /&gt;
([[User:Mrohr|Matthias]]) Weiterhin entsprechen die vorgeschlagenen HTTP Headern nicht dem Best Practice:&lt;br /&gt;
&lt;br /&gt;
 Cache-control: no-cache, no-store&lt;br /&gt;
 Pragma: no-cache&lt;br /&gt;
 Expires: -1&lt;br /&gt;
&lt;br /&gt;
([[User:Mrohr|Matthias]]) Die Empfehlung hinsichtlich des manuellen Leerens des Browsercaches sollte wenn dann nur bei Anwendungen mit sehr hohem Schutzbedarf in Erwaegung gezogen werden. Wichtiger waere da schon eher die richtigen Cache-Header zu verwenden. Solche Empfehlungen ihm Rahmen des Grundschutzes aber wirklich nichts zu suchen. &lt;br /&gt;
&lt;br /&gt;
; Maskierung von Passwörtern &lt;br /&gt;
 Dies schützt bei der Eingabe nur vor ShoulderSurfing nicht vor Skripten oder Plugins die diese an andere Server posten.&lt;br /&gt;
&lt;br /&gt;
([[User:Mrohr|Matthias]]) Das ist voellig korrekt. Aber inwieweit ist die Aussage Passwort-Felder zu verwenden fehlerhaft bzw. hier unzureichend beschrieben?&lt;br /&gt;
&lt;br /&gt;
; Sicherung von Zugangsdaten:&lt;br /&gt;
 Zugangsdaten in einer Datei abzulegen - wenn auch ausserhalb des WebRoots ist keine gute Idee.&lt;br /&gt;
([[User:Mrohr|Matthias]]) Es ist sicher nicht die schoenste Variante, es laesst sich aber nunmal in vielen Faellen nicht vermeiden. Deshalb fordert der [http://code.google.com/p/owasp-asvs/wiki/Verification_V2 ASVS] hier etwa auch nicht mehr. Fuer den hier angestreben Grundschutz sollte das meiner Meinung nach ausreichen.&lt;br /&gt;
; Schutz von Quelltexten:&lt;br /&gt;
 Hier würde ich property files mit aufnehmen. der hinweis auf web-inf/classes fehlt - warum?&lt;br /&gt;
 Bei include-befehlen sind die pfadangaben zu überdenken.&lt;br /&gt;
([[User:Mrohr|Matthias]]) Wuerde property Dateien allgemein den Konfigurationsdateien zuordnen. Der Begriff &amp;quot;Einzubindende Dateien&amp;quot; ist mir allrdings Neu&lt;br /&gt;
&lt;br /&gt;
([[User:Mrohr|Matthias]]) Weiterhin, fehlt ein genereller Bezug auf HTML 5 WebStorage, LSOs etc. Zumindest in abstrakter Form, so dass diese dadurch indirekt addresiert werden. Egal, in dem relevanten Punkt will der Autor meiner Meinung nach nur einige Beispiele nennen, das sollte keinen Anspruch auf Vollsteandigkeit haben muessen.&lt;br /&gt;
&lt;br /&gt;
; ([[User:Mrohr|Matthias]]) - Durch dieses Attribut wird die Gültigkeit des Cookies auf die Domäne der Web-Anwendung beschränkt.&lt;br /&gt;
Nein, das ist leider total falsch. Das Domain-Attribut stellt eine Aufweichung der Cookie-Gueltigkeit dar und nicht anders herum. Gewoehlich sind Cookies immer Host-Cockies und das sollte auch so bleiben. Die Empfehlung sollte entfernt werden.&lt;br /&gt;
&lt;br /&gt;
== M 4.WA16Zugriffskontrolle bei Web-Anwendungen (Markus) ==&lt;br /&gt;
; Zugriffskontrolle via Frameworks:&lt;br /&gt;
 Dieser Punkt (Frameworks) wird nur in einem Satz erwähnt. Es werden keine Bespiele gegeben - Das ist zu wenig.&lt;br /&gt;
 Es müssen alle Zugriffe geschützt werden. Eine Protokollierung aller Zugriffe mit den nötigen Informationen ist ebenfalls empfehlenswert.&lt;br /&gt;
; Datei Upload:&lt;br /&gt;
 Die Gefahr eines DOS wird hier nicht erwähnt.&lt;br /&gt;
&lt;br /&gt;
== M 4.WA19Verhinderung von Cross-Site Request Forgery (CSRF, XSRF) (Markus, Matthias) ==&lt;br /&gt;
; Verantwortliche: &lt;br /&gt;
 Entwickler und Admins!&lt;br /&gt;
([[User:Mrohr|Matthias]]) Korrekt, wobei auch in der Reihenfolge&lt;br /&gt;
&lt;br /&gt;
; Anti-CSRF-Token in hidden fields:&lt;br /&gt;
 Das ist keine gute Idee. Ich würde das streichen!&lt;br /&gt;
&lt;br /&gt;
([[User:Mrohr|Matthias]]) Watt? Anti-CSRF-Tokens in Hidden Fields sind die Standard-Massnahme. Wie denn sonst? Bitte nicht streichen!!! &lt;br /&gt;
&lt;br /&gt;
([[User:Mrohr|Matthias]]) Die Technik bei der die Session ID als Anti-CSRF-Token verwendet wird, wird als Double-Cookie Submit bezeichnet, das sollte hier referenziert werden.&lt;br /&gt;
&lt;br /&gt;
; Umgehung von Schutzmechanismen:&lt;br /&gt;
 Man in the middle hat keinen direkten Bezug zu CSRF! Das würde ich streichen.&lt;br /&gt;
([[User:Mrohr|Matthias]]) Der Hinweis ist korrekt. Wovon der Autor hier spricht ist Session Replay nicht CSRF.&lt;br /&gt;
&lt;br /&gt;
; Frameworks:&lt;br /&gt;
 Gute Idee - aber es gibt auch Features in den ApplicationServern die CSRF unterbinden - warum wird das nicht besprochen?&lt;br /&gt;
&lt;br /&gt;
([[User:Mrohr|Matthias]]) Sehe ich persoenlich nicht so, da CSRF primaer ein Applikations-Fehler ist, und auch in der Applikation und nicht im Environment (AppServer) geloest werden sollte. Auch wenn das manchmal ggf. die einzig machbare Loesung darstellt.&lt;br /&gt;
&lt;br /&gt;
([[User:Mrohr|Matthias]]) Was generell fehlt, ist ein Hinweis darauf, dass schreibende Requests generell per HTTP Post abgewickelt werden sollten, da HTTP Get keine &amp;quot;Safe Method&amp;quot;  (siehe HTTP 1.1, RFC 2616) ist.&lt;br /&gt;
&lt;br /&gt;
== M 4.WA20Sicherer Entwurf der Logik von Web-Anwendungen (Markus, Matthias) ==&lt;br /&gt;
; Rollbacks:&lt;br /&gt;
 Tritt ein Fehler auf muss die Applikation einen konsistenten Datenstand zurück lassen. Das wird hier nicht erwähnt.&lt;br /&gt;
; RaceConditions:&lt;br /&gt;
 Fehler in der Geschäftslogik können auch durch zwei gleichzeitige Sessions auf einer Webapplikation auftreten - das wird hier nicht besprochen.&lt;br /&gt;
&lt;br /&gt;
([[User:Mrohr|Matthias]]) Ehrlich gesagt kann ich nicht ganz nachvollziehen, was der Sichere Entwurf der Logik von Web-Anwendungen mit dem Verzicht auf aktive Inhalte zu tun hat. Unabhaengig davon sollte man solche unsinnigen Aussagen im Jahre 2012 nicht mehr treffen, damit macht man sicht nur laecherlich.&lt;br /&gt;
&lt;br /&gt;
Nichts desto trotz, was hier als &amp;quot;echte&amp;quot; Massnahmen erwaehnt werden sollte sind:&lt;br /&gt;
* Verhinderung von Race Conditions, aber nicht nur durch Concurrent Sessions sondern auch durch Singletons (TOCTOU)&lt;br /&gt;
* Enforcements von Workflows, etwa durch die Verwendung von State Machines oder Request Tokens (auch bekannt als Site Usage Enforcement)&lt;br /&gt;
* Fail Securely (bzw. Verweis)&lt;br /&gt;
* Serverseitige Abbildung der Anwendungslogik, zumindest wenn diese sicherheitsrelevant sit&lt;br /&gt;
&lt;br /&gt;
== M 4.WA22Verhinderung der Blockade von Ressourcen (DoS) bei Web-Anwendungen (Markus, Matthias) ==&lt;br /&gt;
; Datenspeicher:&lt;br /&gt;
 Neben dem Datenspeicher sollte auch der RAM-Verbrauch pro Thread der Applikation limitiert werden.&lt;br /&gt;
([[User:Mrohr|Matthias]]) Stimmt, ich wuerde hier sogar allgemein von Ressourcenverbrauch am Beispiel RAM und Datenspeicher, sprechen&lt;br /&gt;
&lt;br /&gt;
; Voraggregation von Daten / Caching&lt;br /&gt;
 Dieser Punkt fehlt: Stark ressourcen belastende Anfragen können auch in Lastarmen Zeiten vorberechnet werden.&lt;br /&gt;
([[User:Mrohr|Matthias]]) Stimmt, koennte noch als Anmerkung bei &amp;quot;Cachen von Anfragen&amp;quot; hinzugefuegt werden&lt;br /&gt;
&lt;br /&gt;
; ([[User:Mrohr|Matthias]]) Prueffrage: &amp;quot;Wird ein möglicher Überlauf von Protokolldaten... verhindert&amp;quot;&lt;br /&gt;
&lt;br /&gt;
Ist eine etwas eingeschrankte Sicht. Wurde hier eher von Ueberlauf von Speicherplaz zu Beispiel im Rahmen der Protokollierung sprechen&lt;br /&gt;
&lt;br /&gt;
; ([[User:Mrohr|Matthias]]) Durchfuehrung von Lasttests zur Identifikation ressourcenintensiver Operationen&lt;br /&gt;
&lt;br /&gt;
Der Hinweis waere ggf. erwahnenswert&lt;br /&gt;
&lt;br /&gt;
; ([[User:Mrohr|Matthias]]) Hinweis auf nicht-angemeldeten Bereich&lt;br /&gt;
&lt;br /&gt;
Das Risiko durch rechenintensive Operationen durch einen DoS betroffen zu sein ist natuerlich fuer gewoehlich um so groesser, wenn diese im anonymen Bereich angeboten wird. Der Hinweis ware ggf. ebenfalls hilfreich.&lt;br /&gt;
&lt;br /&gt;
== M 4.WA25Verhinderung von Clickjacking (Markus) ==&lt;br /&gt;
Ok - das passt soweit.&lt;br /&gt;
&lt;br /&gt;
([[User:Mrohr|Matthias]]) Stimmt, auch wenn ich &amp;quot;Angreifer&amp;quot; in dem Beispiel eher als &amp;quot;Webseitenbetreiber&amp;quot; beschreiebn wuerde, da er nicht wirklich aktiv einen Angriff durchfuehrt, oder? Bitte nochmal ueber meinen Hinweis aus G 5.WA18 nachdenken: Ist Clickjacking-Schutz tatsaechlich Grundschutz? Ich bin mir da selber nicht so wirklich sicher.&lt;br /&gt;
&lt;br /&gt;
== M 5.WA21Sichere Anbindung von Hintergrundsystemen an Web-Anwendungen (Markus) ==&lt;br /&gt;
; Verantwortliche:&lt;br /&gt;
 Architekten fehlen. Entwickler müssen die Views umsetzen und die Datasource entsprechend einbinden - die fehlen hier ebenfalls.&lt;br /&gt;
; DirectorySystem Beispiel:&lt;br /&gt;
 Das DirectorySystem wird in dem angegeben Beispiel zum Single Point of Failure - das wird verschwiegen.&lt;br /&gt;
; Firewalls:&lt;br /&gt;
 Das sind fachlich-blinde Systeme. Was ist mit WAFs / IDS / IPS etc.?&lt;br /&gt;
([[User:Mrohr|Matthias]]) Stimmt, das hat in diesem Baustein nichts zu suchen&lt;br /&gt;
&lt;br /&gt;
; ([[User:Mrohr|Matthias]]) Typische Hintergrundsysteme&lt;br /&gt;
Hier fehlt irgendwie &amp;quot;Middleware&amp;quot;, die ist denke ich nicht immer Legacy&lt;br /&gt;
&lt;br /&gt;
== M 5.WA23Systemarchitektur einer Web-Anwendung (Markus) ==&lt;br /&gt;
; Verantwortliche:&lt;br /&gt;
Auch hier fehlend wieder die Architekten. &lt;br /&gt;
([[User:Mrohr|Matthias]]) Stimmt, habe das Dokument mal komplett durchgesucht.Tatsaechlich wird der &amp;quot;Architekt&amp;quot; niemals genannt, das scheint also eher ein grundseatzliches Problem zu sein. Der Administrator hat hier aber nun wirklich nichts zu suchen.&lt;br /&gt;
&lt;br /&gt;
; Virtualisierung:&lt;br /&gt;
Virtualisierung bietet weitere Angriffsvektoren (z.B.: Hypervisor) die eine &amp;quot;Blech&amp;quot;Farm nicht bietet.&lt;br /&gt;
&lt;br /&gt;
([[User:Mrohr|Matthias]]) Genau, wobei auch der ganze Bereich geshareter Plattformen (z.B. By SharePoint) hier fehlt.&lt;/div&gt;</summary>
		<author><name>Mrohr</name></author>	</entry>

	<entry>
		<id>https://wiki.owasp.org/index.php?title=OWASP_Review_BSI_IT-Grundschutz_Baustein_Webanwendungen&amp;diff=130206</id>
		<title>OWASP Review BSI IT-Grundschutz Baustein Webanwendungen</title>
		<link rel="alternate" type="text/html" href="https://wiki.owasp.org/index.php?title=OWASP_Review_BSI_IT-Grundschutz_Baustein_Webanwendungen&amp;diff=130206"/>
				<updated>2012-05-21T15:53:41Z</updated>
		
		<summary type="html">&lt;p&gt;Mrohr: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Category:OWASP_Project|OWASP Review BSI IT-Grundschutz Baustein Webanwendungen]]&lt;br /&gt;
==Mailing-List, Coordination and Contact==&lt;br /&gt;
If you want to become a part of the OWASP review team, please subscribe to the mailing list [https://lists.owasp.org/mailman/listinfo/bsi-webbaustein-review https://lists.owasp.org/mailman/listinfo/bsi-webbaustein-review]. It is not necessary to be a member to volunteer, of course :-)&lt;br /&gt;
&lt;br /&gt;
The contact the coordinating team please mail to [mailto:bsi-webbaustein@owasp.de bsi-webbaustein@owasp.de] or contact the project leader  [mailto:ralf.reinhardt@owasp.org Ralf] [[User:Ralf Reinhardt|Reinhardt]]&lt;br /&gt;
&lt;br /&gt;
This is a project of the [[Germany | OWASP German Chapter]].&lt;br /&gt;
&lt;br /&gt;
==Abstract==&lt;br /&gt;
Technical review of the module web application&lt;br /&gt;
(&amp;quot;Baustein Webanwendungen&amp;quot;) of the IT-baseline protection catalog (&amp;quot;IT&lt;br /&gt;
Grundschutz Katalog&amp;quot;) of the German Federal Office for Information&lt;br /&gt;
Security (&amp;quot;BSI&amp;quot;) from the OWASP's point of view.&lt;br /&gt;
&lt;br /&gt;
==Introduction==&lt;br /&gt;
The German &amp;quot;Federal Office for Information Security&amp;quot; (BSI), which is&lt;br /&gt;
comparable to departments focused on security in organizations like NIST&lt;br /&gt;
or CCTA, offers the IT Baseline Protection (&amp;quot;IT-Grundschutz&amp;quot;) for public&lt;br /&gt;
usage, which is based on ISO/IEC 27001. The IT Baseline Protection&lt;br /&gt;
include a catalog of approx. 80 &amp;quot;Bausteine&amp;quot; (building blocks). Those&lt;br /&gt;
blocks are dealing with one particular subject of IT security. They are&lt;br /&gt;
usually written in the German language and later translated to English.&lt;br /&gt;
They become the de facto standard for IT security and related&lt;br /&gt;
certifications in Germany after they are finally released.&lt;br /&gt;
&lt;br /&gt;
In January 2012 the draft of the block &amp;quot;Webanwendungen&amp;quot; (web&lt;br /&gt;
applications) was released with a request for comments. Since this is&lt;br /&gt;
the core expertise of OWASP we invited a delegate of the BSI to attend&lt;br /&gt;
the last chapter meeting of the German Chapter which took place in&lt;br /&gt;
Frankfurt / Main on the 3rd of February. The meeting's outcome was the&lt;br /&gt;
strong wish to perform a review of that very web application block as an&lt;br /&gt;
OWASP project. This project will help to expand the visibility of OWASP&lt;br /&gt;
in the German IT security landscape broadly.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Roadmap==&lt;br /&gt;
* Time is running out, so it's just: &amp;lt;b&amp;gt;Review!&amp;lt;/b&amp;gt;&lt;br /&gt;
* Details  [[Talk:OWASP_Review_BSI_IT-Grundschutz_Baustein_Webanwendungen| see &amp;quot;Discussion&amp;quot;]]&lt;br /&gt;
&amp;lt;!--&lt;br /&gt;
* Building a coordinating team&lt;br /&gt;
* &amp;lt;b&amp;gt;Defining the review rules&amp;lt;/b&amp;gt; [[Talk:OWASP_Review_BSI_IT-Grundschutz_Baustein_Webanwendungen| see &amp;quot;Discussion&amp;quot;]]   &lt;br /&gt;
* Reading the BSI documents&lt;br /&gt;
* Collecting comments from the community familiar with the BSI documents&lt;br /&gt;
* Creating a common understanding&lt;br /&gt;
* Writing a review with OWASP glasses &lt;br /&gt;
* Review of OWASP's review itself&lt;br /&gt;
* Releasing the result(s)&lt;br /&gt;
--&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Deadline==&lt;br /&gt;
06/01/2012, in German: '''01.06.2012'''&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Relevant links and general information==&lt;br /&gt;
==== Document download ====&lt;br /&gt;
&amp;quot;Entwurf Baustein Webanwendungen&amp;quot; of the BSI (in German language) directly: &lt;br /&gt;
[https://www.bsi.bund.de/SharedDocs/Downloads/DE/BSI/Grundschutz/Download/Vorabversionen/Baustein_Webanwendungen_Entwurf.zip https://www.bsi.bund.de/SharedDocs/Downloads/DE/BSI/Grundschutz/Download/Vorabversionen/Baustein_Webanwendungen_Entwurf.zip]&lt;br /&gt;
&lt;br /&gt;
General download section of the BSI:&lt;br /&gt;
[https://www.bsi.bund.de/ContentBSI/grundschutz/kataloge/download/download.html https://www.bsi.bund.de/ContentBSI/grundschutz/kataloge/download/download.html]&lt;br /&gt;
&lt;br /&gt;
==== Some further information about &amp;quot;BSI&amp;quot; and &amp;quot;Grundschutz&amp;quot;====&lt;br /&gt;
The BSI about itself: [https://www.bsi.bund.de/EN/Home/home_node.html https://www.bsi.bund.de/EN/Home/home_node.html ]&lt;br /&gt;
&lt;br /&gt;
Wikipedia about BSI: [http://en.wikipedia.org/wiki/Bundesamt_f%C3%BCr_Sicherheit_in_der_Informationstechnik http://en.wikipedia.org/wiki/Bundesamt_f%C3%BCr_Sicherheit_in_der_Informationstechnik]&lt;br /&gt;
&lt;br /&gt;
Wikipedia about &amp;quot;IT-Grundschutz Katalog&amp;quot;: [http://en.wikipedia.org/wiki/IT_Baseline_Protection_Catalogs http://en.wikipedia.org/wiki/IT_Baseline_Protection_Catalogs]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Actual Work in Progress==&lt;br /&gt;
&lt;br /&gt;
===Allgemeine Punkte===&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;text-decoration: underline&amp;quot;&amp;gt;[[OWASP_Review_BSI_IT-Grundschutz_Baustein_Webanwendungen/Allgemeine_Punkte|Allgemeine Punkte]]&amp;lt;/span&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
===Kapitel-Review===&lt;br /&gt;
&lt;br /&gt;
Hier eine &amp;lt;u&amp;gt;Auflistung der einzelnen Kapitel / Teile / Review-TODOs&amp;lt;/u&amp;gt; - wer einen Teil übernehmen möchte schreibt sich bitte einfach ein (im Feld &amp;lt;u&amp;gt;Person&amp;lt;/u&amp;gt;).&lt;br /&gt;
&lt;br /&gt;
Im &amp;lt;u&amp;gt;Kommentarfeld&amp;lt;/u&amp;gt; bitte angeben, bis wann ihr plant, den Punkt fertig bearbeitet zu haben (und natürlich sonstige notwendigen Kommentare). Das Kommentarfeld eignet sich auch, um anzugeben, wer den peer review für diesen Teil macht (vgl. Status &amp;quot;in Diskussion&amp;quot;).  &lt;br /&gt;
&lt;br /&gt;
Unter &amp;lt;u&amp;gt;Status&amp;lt;/u&amp;gt; könnt Ihr das folgende angeben:&lt;br /&gt;
* &amp;lt;b&amp;gt;offen&amp;lt;/b&amp;gt; (dieser Teil ist noch unbearbeitet)&lt;br /&gt;
* &amp;lt;b&amp;gt;in Arbeit&amp;lt;/b&amp;gt; (dieser Teil wird aktuell bearbeitet)&lt;br /&gt;
* &amp;lt;b&amp;gt;in Diskussion&amp;lt;/b&amp;gt; (Arbeit des initialen Reviewers abgeschlossen; Kommentierung / peer review durch andere wird durchgeführt)&lt;br /&gt;
* &amp;lt;b&amp;gt;geschlossen&amp;lt;/b&amp;gt; (die Kommentierung dieses Teils ist abgeschlossen)&lt;br /&gt;
* &amp;lt;b&amp;gt;übernommen&amp;lt;/b&amp;gt; (dieser Teil wurde in das finale Word-Dokument übernommen)&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Kapitel / Teil&lt;br /&gt;
! Person&lt;br /&gt;
! Status&lt;br /&gt;
! Kommentar&lt;br /&gt;
|-&lt;br /&gt;
| B 5.XX Web-Anwendungen, Beschreibung und Abgrenzung (inkl. Seite 5)&lt;br /&gt;
| Markus&lt;br /&gt;
| in Diskussion&lt;br /&gt;
| keiner&lt;br /&gt;
|-&lt;br /&gt;
&amp;lt;!--| G 2.1 Fehlende oder unzureichende Regelungen&lt;br /&gt;
| unbekannt&lt;br /&gt;
| offen&lt;br /&gt;
| keiner&lt;br /&gt;
|- &lt;br /&gt;
| G 2.4 Unzureichende Kontrolle der Sicherheitsmaßnahmen&lt;br /&gt;
| unbekannt&lt;br /&gt;
| offen&lt;br /&gt;
| keiner&lt;br /&gt;
|-&lt;br /&gt;
| G 2.7 Unerlaubte Ausübung von Rechten&lt;br /&gt;
| unbekannt&lt;br /&gt;
| offen&lt;br /&gt;
| keiner&lt;br /&gt;
|-&lt;br /&gt;
| G 2.22 Fehlende Auswertung von Protokolldaten&lt;br /&gt;
| unbekannt&lt;br /&gt;
| offen&lt;br /&gt;
| keiner&lt;br /&gt;
|-&lt;br /&gt;
| G 2.27 Fehlende oder unzureichende Dokumentation&lt;br /&gt;
| unbekannt&lt;br /&gt;
| offen&lt;br /&gt;
| keiner&lt;br /&gt;
|-&lt;br /&gt;
| G 2.67 Ungeeignete Verwaltung von Zugangs- und Zugriffsrechten&lt;br /&gt;
| unbekannt&lt;br /&gt;
| offen&lt;br /&gt;
| keiner&lt;br /&gt;
|-&lt;br /&gt;
| G 2.87 Verwendung unsicherer Protokolle in öffentlichen Netzen&lt;br /&gt;
| unbekannt&lt;br /&gt;
| offen&lt;br /&gt;
| keiner&lt;br /&gt;
|-&lt;br /&gt;
| G 2.103 Unzureichende Schulung der Mitarbeiter&lt;br /&gt;
| Matthias&lt;br /&gt;
| offen&lt;br /&gt;
| keiner&lt;br /&gt;
|- --&amp;gt;&lt;br /&gt;
| G 2.WA01 Mangelhafte Auswahl oder Konzeption von Web-Anwendungen&lt;br /&gt;
| Matthias&lt;br /&gt;
| In Diskussion&lt;br /&gt;
| keiner&lt;br /&gt;
|-&lt;br /&gt;
| G 2.WA02 Mängel bei der Entwicklung und der Erweiterung von Web-Anwendungen&lt;br /&gt;
| Matthias&lt;br /&gt;
| In Diskussion&lt;br /&gt;
| keiner&lt;br /&gt;
|-&lt;br /&gt;
| G 2.WA03 Unzureichender Schutz personenbezogener Daten bei Web-Anwendungen&lt;br /&gt;
| Matthias&lt;br /&gt;
| In Diskussion&lt;br /&gt;
| keiner&lt;br /&gt;
|-&lt;br /&gt;
&amp;lt;!-- | G 3.16 Fehlerhafte Administration von Zugangs- und Zugriffsrechten&lt;br /&gt;
| unbekannt&lt;br /&gt;
| offen&lt;br /&gt;
| keiner&lt;br /&gt;
|-&lt;br /&gt;
| G 3.38 Konfigurations- und Bedienungsfehler&lt;br /&gt;
| unbekannt&lt;br /&gt;
| offen&lt;br /&gt;
| keiner&lt;br /&gt;
|-&lt;br /&gt;
| G 3.43 Ungeeigneter Umgang mit Passwörtern&lt;br /&gt;
| unbekannt&lt;br /&gt;
| offen&lt;br /&gt;
| keiner&lt;br /&gt;
|-&lt;br /&gt;
| G 4.22 Software-Schwachstellen oder -Fehler&lt;br /&gt;
| unbekannt&lt;br /&gt;
| offen&lt;br /&gt;
| keiner&lt;br /&gt;
|- --&amp;gt;&lt;br /&gt;
| G 4.33 Unzureichende oder fehlende Authentisierung&lt;br /&gt;
| Matthias&lt;br /&gt;
| In Diskussion&lt;br /&gt;
| keiner&lt;br /&gt;
|-&lt;br /&gt;
&amp;lt;!-- | G 4.35 Unsichere kryptographische Algorithmen&lt;br /&gt;
| unbekannt&lt;br /&gt;
| offen&lt;br /&gt;
| keiner&lt;br /&gt;
|- --&amp;gt;&lt;br /&gt;
| G 4.WA04 Unzureichende Validierung von Ein- und Ausgabedaten bei Web-Anwendungen&lt;br /&gt;
| Matthias&lt;br /&gt;
| In Diskussion&lt;br /&gt;
| keiner&lt;br /&gt;
|-&lt;br /&gt;
| G 4.WA05 Fehlende oder mangelhafte Fehlerbehandlung durch Web-Anwendungen&lt;br /&gt;
| Tobias&lt;br /&gt;
| In Diskussion&lt;br /&gt;
| keiner&lt;br /&gt;
|-&lt;br /&gt;
| G 4.WA06 Unzureichende Nachvollziehbarkeit von sicherheitsrelevanten Ereignissen bei Web-Anwendungen&lt;br /&gt;
| Matthias&lt;br /&gt;
| In Diskussion&lt;br /&gt;
| keiner&lt;br /&gt;
|-&lt;br /&gt;
| G 4.WA07 Offenlegung von Informationen bei Web-Anwendungen&lt;br /&gt;
| Matthias&lt;br /&gt;
| in Diskussion&lt;br /&gt;
| keiner&lt;br /&gt;
|-&lt;br /&gt;
&amp;lt;!-- | G 5.18 Systematisches Ausprobieren von Passwörtern&lt;br /&gt;
| unbekannt&lt;br /&gt;
| offen&lt;br /&gt;
| keiner&lt;br /&gt;
|-&lt;br /&gt;
| G 5.19 Missbrauch von Benutzerrechten&lt;br /&gt;
| unbekannt&lt;br /&gt;
| offen&lt;br /&gt;
| keiner&lt;br /&gt;
|-&lt;br /&gt;
| G 5.20 Missbrauch von Administratorrechten&lt;br /&gt;
| unbekannt&lt;br /&gt;
| offen&lt;br /&gt;
| keiner&lt;br /&gt;
|-&lt;br /&gt;
| G 5.28 Verhinderung von Diensten&lt;br /&gt;
| unbekannt&lt;br /&gt;
| offen&lt;br /&gt;
| keiner&lt;br /&gt;
|-&lt;br /&gt;
| G 5.87 Web-Spoofing&lt;br /&gt;
| unbekannt&lt;br /&gt;
| offen&lt;br /&gt;
| keiner&lt;br /&gt;
|- --&amp;gt;&lt;br /&gt;
| G 5.131 SQL-Injection&lt;br /&gt;
| Ralf&lt;br /&gt;
| in Arbeit&lt;br /&gt;
| keiner&lt;br /&gt;
|-&lt;br /&gt;
| G 5.WA08 Unberechtigter Zugriff auf oder Manipulation von Daten bei Web-Anwendungen&lt;br /&gt;
| unbekannt&lt;br /&gt;
| &amp;lt;b&amp;gt;offen&amp;lt;/b&amp;gt;&lt;br /&gt;
| keiner, Seite 17&lt;br /&gt;
|-&lt;br /&gt;
| G 5.WA09 Missbrauch einer Web-Anwendung durch automatisierte Nutzung&lt;br /&gt;
| unbekannt&lt;br /&gt;
| &amp;lt;b&amp;gt;offen&amp;lt;/b&amp;gt;&lt;br /&gt;
| keiner, Seite 18&lt;br /&gt;
|-&lt;br /&gt;
| G 5.WA10 Fehler in der Logik von Web-Anwendungen&lt;br /&gt;
| Ralf&lt;br /&gt;
| in Arbeit&lt;br /&gt;
| keiner&lt;br /&gt;
|-&lt;br /&gt;
| G 5.WA11 Umgehung clientseitig umgesetzter Sicherheitsfunktionen von Web-Anwendungen&lt;br /&gt;
| Ralf&lt;br /&gt;
| in Arbeit&lt;br /&gt;
| keiner&lt;br /&gt;
|-&lt;br /&gt;
| G 5.WA12 Unzureichendes Session-Management von Web-Anwendungen&lt;br /&gt;
| unbekannt&lt;br /&gt;
| &amp;lt;b&amp;gt;offen&amp;lt;/b&amp;gt;&lt;br /&gt;
| keiner, Seite 21&lt;br /&gt;
|-&lt;br /&gt;
| G 5.WA13 Cross-Site Scripting (XSS)&lt;br /&gt;
| Ralf&lt;br /&gt;
| in Arbeit&lt;br /&gt;
| keiner&lt;br /&gt;
|-&lt;br /&gt;
| G 5.WA14 Cross-Site Request Forgery (CSRF, XSRF)&lt;br /&gt;
| Matthias&lt;br /&gt;
| in Diskussion&lt;br /&gt;
| keiner&lt;br /&gt;
|-&lt;br /&gt;
| G 5.WA15 Umgehung der Autorisierung bei Web-Anwendungen&lt;br /&gt;
| unbekannt&lt;br /&gt;
| &amp;lt;b&amp;gt;offen&amp;lt;/b&amp;gt;&lt;br /&gt;
| keiner, Seite 25&lt;br /&gt;
|-&lt;br /&gt;
| G 5.WA16 Einbindung von fremden Daten und Schadcode bei Web-Anwendungen&lt;br /&gt;
| unbekannt&lt;br /&gt;
| &amp;lt;b&amp;gt;offen&amp;lt;/b&amp;gt;&lt;br /&gt;
| keiner, Seite 26 u. 27&lt;br /&gt;
|-&lt;br /&gt;
| G 5.WA17 Injection-Angriffe&lt;br /&gt;
| Ralf&lt;br /&gt;
| in Arbeit&lt;br /&gt;
| keiner&lt;br /&gt;
|-&lt;br /&gt;
| G 5.WA18 Clickjacking&lt;br /&gt;
| unbekannt&lt;br /&gt;
| &amp;lt;b&amp;gt;offen&amp;lt;/b&amp;gt;&lt;br /&gt;
| keiner, Seite 29&lt;br /&gt;
|-&lt;br /&gt;
&amp;lt;!--| M 2.1 (A) Festlegung von Verantwortlichkeiten und Regelungen&lt;br /&gt;
| unbekannt&lt;br /&gt;
| offen&lt;br /&gt;
| keiner&lt;br /&gt;
|-&lt;br /&gt;
| M 2.31 (C) Dokumentation der zugelassenen Benutzer und Rechteprofile&lt;br /&gt;
| unbekannt&lt;br /&gt;
| offen&lt;br /&gt;
| keiner&lt;br /&gt;
|-&lt;br /&gt;
| M 2.34 (A) Dokumentation der Veränderungen an einem bestehenden System&lt;br /&gt;
| unbekannt&lt;br /&gt;
| offen&lt;br /&gt;
| keiner&lt;br /&gt;
|-&lt;br /&gt;
| M 2.63 (A) Einrichten der Zugriffsrechte&lt;br /&gt;
| unbekannt&lt;br /&gt;
| offen&lt;br /&gt;
| keiner&lt;br /&gt;
|-&lt;br /&gt;
| M 2.64 (A) Kontrolle der Protokolldateien&lt;br /&gt;
| unbekannt&lt;br /&gt;
| offen&lt;br /&gt;
| keiner&lt;br /&gt;
|-&lt;br /&gt;
| M 2.110 (B) Datenschutzaspekte bei der Protokollierung&lt;br /&gt;
| unbekannt&lt;br /&gt;
| offen&lt;br /&gt;
| keiner&lt;br /&gt;
|-&lt;br /&gt;
| M 5.66 (Z) Verwendung von TLS/SSL&lt;br /&gt;
| unbekannt&lt;br /&gt;
| offen&lt;br /&gt;
| keiner&lt;br /&gt;
|- --&amp;gt;&lt;br /&gt;
| M 2.WA02 (B) Dokumentation der Architektur von Web-Anwendungen&lt;br /&gt;
| Matthias&lt;br /&gt;
| in Diskussion&lt;br /&gt;
| keiner&lt;br /&gt;
|-&lt;br /&gt;
| M 4.WA20 (A) Sicherer Entwurf der Logik von Web-Anwendungen&lt;br /&gt;
| Markus&lt;br /&gt;
| in Diskussion&lt;br /&gt;
| keiner&lt;br /&gt;
|-&lt;br /&gt;
| M 2.WA12 (B) Entwicklung und Erweiterung von Anwendungen&lt;br /&gt;
| Markus&lt;br /&gt;
| in Diskussion&lt;br /&gt;
| keiner&lt;br /&gt;
|-&lt;br /&gt;
| M 5.WA21 (A) Sichere Anbindung von Hintergrundsystemen an Web-Anwendungen&lt;br /&gt;
| Markus&lt;br /&gt;
| in Diskussion&lt;br /&gt;
| keiner&lt;br /&gt;
|-&lt;br /&gt;
| M 5.WA23 (A) Systemarchitektur einer Web-Anwendung&lt;br /&gt;
| Makrus&lt;br /&gt;
| in Diskussion&lt;br /&gt;
| keiner&lt;br /&gt;
|-&lt;br /&gt;
| M 2.WA24 (W) Web-Tracking&lt;br /&gt;
| Matthias&lt;br /&gt;
| in Diskussion&lt;br /&gt;
| keiner&lt;br /&gt;
|-&lt;br /&gt;
&amp;lt;!-- | M 4.176 (A) Auswahl einer Authentisierungsmethode für Webangebote&lt;br /&gt;
| unbekannt&lt;br /&gt;
| offen&lt;br /&gt;
| keiner&lt;br /&gt;
|-&lt;br /&gt;
| M 2.80 (A) Erstellung eines Anforderungskatalogs für Standardsoftware&lt;br /&gt;
| unbekannt&lt;br /&gt;
| offen&lt;br /&gt;
| keiner&lt;br /&gt;
|-&lt;br /&gt;
| M 2.62 (A) Software-Abnahme- und Freigabe-Verfahren&lt;br /&gt;
| Matthias&lt;br /&gt;
| offen&lt;br /&gt;
| keiner&lt;br /&gt;
|-&lt;br /&gt;
| M 2.363 (A) Schutz gegen SQL-Injection&lt;br /&gt;
| unbekannt&lt;br /&gt;
| offen&lt;br /&gt;
| keiner&lt;br /&gt;
|-&lt;br /&gt;
| M 3.5 (B) Schulung zu Sicherheitsmaßnahmen&lt;br /&gt;
| Matthias&lt;br /&gt;
| offen&lt;br /&gt;
| keiner&lt;br /&gt;
|- --&amp;gt;&lt;br /&gt;
| M 4.WA04 (A) Authentisierung bei Web-Anwendungen&lt;br /&gt;
| Matthias&lt;br /&gt;
| In Diskussion&lt;br /&gt;
| keiner&lt;br /&gt;
|-&lt;br /&gt;
| M 4.WA05 (A) Umfassende Ein- und Ausgabevalidierung bei Web-Anwendungen&lt;br /&gt;
| Markus&lt;br /&gt;
| in Diskussion&lt;br /&gt;
| keiner&lt;br /&gt;
|-&lt;br /&gt;
| M 4.WA06 (A) Session-Management bei Web-Anwendungen&lt;br /&gt;
| Markus&lt;br /&gt;
| in Diskussion&lt;br /&gt;
| keiner&lt;br /&gt;
|-&lt;br /&gt;
| M 4.WA07 (A) Fehlerbehandlung durch Web-Anwendungen&lt;br /&gt;
| Markus&lt;br /&gt;
| in Diskussion&lt;br /&gt;
| keiner&lt;br /&gt;
|-&lt;br /&gt;
| M 4.WA08 (B) Schutz vor automatisierter Nutzung von Web-Anwendungen&lt;br /&gt;
| Markus&lt;br /&gt;
| in Diskussion&lt;br /&gt;
| keiner&lt;br /&gt;
|-&lt;br /&gt;
| M 4.WA11 (A) Sichere Konfiguration von Web-Anwendungen&lt;br /&gt;
| Markus&lt;br /&gt;
| in Diskussion&lt;br /&gt;
| keiner&lt;br /&gt;
|-&lt;br /&gt;
| M 4.WA13 (A) Kontrolliertes Einbinden von Daten und Inhalten bei Web-Anwendungen&lt;br /&gt;
| Markus&lt;br /&gt;
| in Diskussion&lt;br /&gt;
| keiner&lt;br /&gt;
|-&lt;br /&gt;
| M 4.WA15 (A) Schutz vertraulicher Daten bei Web-Anwendungen&lt;br /&gt;
| Markus&lt;br /&gt;
| in Diskussion&lt;br /&gt;
| keiner&lt;br /&gt;
|-&lt;br /&gt;
| M 4.WA16 (A) Zugriffskontrolle bei Web-Anwendungen&lt;br /&gt;
| Markus&lt;br /&gt;
| in Diskussion&lt;br /&gt;
| keiner&lt;br /&gt;
|-&lt;br /&gt;
| M 4.WA19 (B) Verhinderung von Cross-Site Request Forgery (CSRF, XSRF)&lt;br /&gt;
| Markus&lt;br /&gt;
| in Diskussion&lt;br /&gt;
| keiner&lt;br /&gt;
|-&lt;br /&gt;
| M 4.WA22 (B) Verhinderung der Blockade von Ressourcen (DoS) bei Web-Anwendungen&lt;br /&gt;
| Markus&lt;br /&gt;
| In Diskussion&lt;br /&gt;
| keiner&lt;br /&gt;
|-&lt;br /&gt;
| M 4.WA25 (C) Verhinderung von Clickjacking&lt;br /&gt;
| Markus&lt;br /&gt;
| in Diskussion&lt;br /&gt;
| keiner&lt;br /&gt;
|-&lt;br /&gt;
&amp;lt;!-- | M 2.8 (A) Vergabe von Zugriffsrechten&lt;br /&gt;
| unbekannt&lt;br /&gt;
| offen&lt;br /&gt;
| keiner&lt;br /&gt;
|-&lt;br /&gt;
| M 2.35 (A) Informationsbeschaffung über Sicherheitslücken des Systems&lt;br /&gt;
| unbekannt&lt;br /&gt;
| offen&lt;br /&gt;
| keiner&lt;br /&gt;
|-&lt;br /&gt;
| M 2.273 (A) Zeitnahes Einspielen sicherheitsrelevanter Patches und Updates&lt;br /&gt;
| unbekannt&lt;br /&gt;
| offen&lt;br /&gt;
| keiner&lt;br /&gt;
|-&lt;br /&gt;
| M 4.78 (B) Sorgfältige Durchführung von Konfigurationsänderungen&lt;br /&gt;
| unbekannt&lt;br /&gt;
| offen&lt;br /&gt;
| keiner&lt;br /&gt;
|- --&amp;gt;&lt;br /&gt;
| M 4.WA09 (C) Protokollierung sicherheitsrelevanter Ereignisse von Web-Anwendungen&lt;br /&gt;
| unbekannt&lt;br /&gt;
| &amp;lt;b&amp;gt;offen&amp;lt;/b&amp;gt;&lt;br /&gt;
| keiner, Seite 56 u. 57 u. 58&lt;br /&gt;
|-&lt;br /&gt;
| M 4.WA14 (A) Restriktive Herausgabe sicherheitsrelevanter Informationen bei Web-Anwendungen&lt;br /&gt;
| Markus&lt;br /&gt;
| in Diskussion&lt;br /&gt;
| keiner&lt;br /&gt;
|-&lt;br /&gt;
| Dokument &amp;quot;Webanwendungen_Goldene Regeln.pdf&amp;quot;&lt;br /&gt;
| Matthias&lt;br /&gt;
| In Diskussion&lt;br /&gt;
| keiner&lt;br /&gt;
|-&lt;br /&gt;
| Dokument &amp;quot;Webanwendungen_Hilfsmittel.pdf&amp;quot;&lt;br /&gt;
| Markus&lt;br /&gt;
| &amp;lt;b&amp;gt;in Diskussion&amp;lt;/b&amp;gt;&lt;br /&gt;
| keiner, 3 Seiten&lt;br /&gt;
|-&lt;br /&gt;
| Dokument &amp;quot;Webanwendungen_Kreuzreferenztabelle.pdf&amp;quot;&lt;br /&gt;
| unbekannt&lt;br /&gt;
| &amp;lt;b&amp;gt;offen&amp;lt;/b&amp;gt;&lt;br /&gt;
| keiner, 2 Seiten&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
Weitere Informationen und die aktuellen Arbeitsstände gibt es unter [[Talk:OWASP_Review_BSI_IT-Grundschutz_Baustein_Webanwendungen| &amp;quot;Discussion&amp;quot;]].&lt;br /&gt;
&lt;br /&gt;
==Coordinating Team==&lt;br /&gt;
* Tobias Glemser&lt;br /&gt;
* Boris Hemkemeier&lt;br /&gt;
* Kai Jendrian&lt;br /&gt;
* Ralf Reinhardt&lt;br /&gt;
* Dirk Wetter&lt;br /&gt;
&lt;br /&gt;
==Project Contributors==&lt;br /&gt;
* Dennis Moers&lt;br /&gt;
* Markus Miedaner&lt;br /&gt;
* [[User:Mrohr|Matthias Rohr]]&lt;br /&gt;
* ''Your name here''&lt;br /&gt;
&lt;br /&gt;
==Project Licence==&lt;br /&gt;
Creative Commons Attribution ShareAlike 3.0&lt;/div&gt;</summary>
		<author><name>Mrohr</name></author>	</entry>

	<entry>
		<id>https://wiki.owasp.org/index.php?title=Talk:OWASP_Review_BSI_IT-Grundschutz_Baustein_Webanwendungen&amp;diff=130205</id>
		<title>Talk:OWASP Review BSI IT-Grundschutz Baustein Webanwendungen</title>
		<link rel="alternate" type="text/html" href="https://wiki.owasp.org/index.php?title=Talk:OWASP_Review_BSI_IT-Grundschutz_Baustein_Webanwendungen&amp;diff=130205"/>
				<updated>2012-05-21T15:52:52Z</updated>
		
		<summary type="html">&lt;p&gt;Mrohr: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Since it's about a review of a document in German, all the discussions will be done in German :-)&lt;br /&gt;
&lt;br /&gt;
Diskussionen rund um den Review des &amp;quot;IT-Grundschutzbausteins Webanwendungen&amp;quot; finden hier statt, sinnvollerweise auf Deutsch :-)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Vorschlag für Kriterien, die an unser Review angelegt werden sollten (.kai) ==&lt;br /&gt;
&lt;br /&gt;
* Der Baustein soll alle wichtigen Themen der Entwicklung sicherer&lt;br /&gt;
Webanwendungen enthalten.&lt;br /&gt;
&lt;br /&gt;
* Der Baustein soll die verschiedenen Phasen der Software-Entwicklung&lt;br /&gt;
vollständig abdecken.&lt;br /&gt;
&lt;br /&gt;
* Der Baustein soll zwischen verbindlichen, prüfbaren Vorgaben und&lt;br /&gt;
unverbindlichen Empfehlungen sprachlich sauber unterscheiden (hier&lt;br /&gt;
spielt mein Auditorenblick eine Rolle). Vor allem soll der Baustein&lt;br /&gt;
verbindliche Anforderungen auch tatsächlich stellen. Alle&lt;br /&gt;
verbindlichen Anforderungen müssen unabhängig von der jeweiligen&lt;br /&gt;
Umgebung auch umsetzbar sein, d.h. sie müssen entsprechend generisch&lt;br /&gt;
sein.&lt;br /&gt;
&lt;br /&gt;
* Die Maßnahmen sollen nur in (begründbaren) Ausnahmen zu Empfehlungen&lt;br /&gt;
von OWASP im Widerspruch stehen.&lt;br /&gt;
&lt;br /&gt;
* Die Maßnahmen sollen verständlich und anwendbar sein.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== &amp;quot;Hilfsmittel&amp;quot; (Markus) ==&lt;br /&gt;
Ich würde das Script zur Vermeidung von Clickjacking wrappen und nicht als losen Skript-block in den Text einbinden - einfach schlechter Programmierstiel diese losen Blöcke.&lt;br /&gt;
Der Zugriff auf das Body-Element mit byTagName-Array[0] ist auch nicht wirklich gut. Ich halte Zugriffe über das DOM (klassisch), bei ID bzw. XPATH für besser. &lt;br /&gt;
&lt;br /&gt;
([[User:Mrohr|Matthias]]) Verwunderlich finde ich aber, dass der Autor zum Einen zwar von der Verwendung von JavaScript vollstaendig abraet, zum Anderen aber eben solches als Best-Practice-Ansatz fuer Click Jacking empfiehlt.&lt;br /&gt;
&lt;br /&gt;
SQL-Injection Characters:&lt;br /&gt;
die Pipe fehlt hier zur Textkonatenierung&lt;br /&gt;
+ / - haben auch eine Bedeutung bei JOINs.&lt;br /&gt;
&lt;br /&gt;
([[User:Mrohr|Matthias]]) Special Character bzw. DB Escaping ist schon recht DB-spezifisch (siehe [https://www.owasp.org/index.php/SQL_Injection_Prevention_Cheat_Sheet SQL Prevention Cheat sheet]). Wozu werden die hier ueberhaupt aufgefuehrt? Um Eingebafilterung nach pot. SQL Injections durchzufuheren, oder um eine eigene Escaping-Funktion zu schreiben? Raus damit!&lt;br /&gt;
&lt;br /&gt;
== &amp;quot;Goldene Regeln&amp;quot; (Matthias) ==&lt;br /&gt;
&lt;br /&gt;
Hier meine Anmerkungen zu diesem Dokument:&lt;br /&gt;
&lt;br /&gt;
; 1. Für mich fehlende Punkte&lt;br /&gt;
* Korrektur der Ursache (Root Cause) von Schwachstellen statt  Verhinderung deren Ausnutzung&lt;br /&gt;
* Bezug auf Minimierung der Angriffsfläche und Least-Privilege-Prinzip&lt;br /&gt;
* Bezug auf Defense-in-Depth-Prinzip&lt;br /&gt;
* Verwendung von getesteten Security APIs (z.B. OWASP ESAPI) statt selbstentwickelter Funktionen&lt;br /&gt;
* Bezug auf Externalisierung von Sicherheitsfunktionen, sowie deklerative vor programmatischer Sicherheit.&lt;br /&gt;
&lt;br /&gt;
; 2. Begriff &amp;quot;Web-Anwendung&amp;quot;&lt;br /&gt;
Würde ich generell durch &amp;quot;Webanwendung&amp;quot; ersetzen.&lt;br /&gt;
&lt;br /&gt;
; 3. Einleitung (&amp;quot;Web-Anwendungen stellen Funktionalität zur Verfügung, ...&amp;quot;)&lt;br /&gt;
&lt;br /&gt;
Wozu dient dieser Satz?&lt;br /&gt;
&lt;br /&gt;
; 4. &amp;quot;Die Architektur der Web-Anwendung ist im Sicherheitskonzept zu  dokumentieren.....&amp;quot; &lt;br /&gt;
&lt;br /&gt;
Ich fände es sinnvoller, wenn hier von der &amp;quot;Sicherheitsarchitektur&amp;quot; gesprochen wird, welche etwa neben den sicherheitsrelevanten Datenflüssen, sensible Komponenten, Entry Points, Akteure architekturelle Security Controls wie Authentisierung, Kryptographie und natürlich die Trust Boundaries beinhaltet.&lt;br /&gt;
&lt;br /&gt;
; 5. &amp;quot;Bei Web-Anwendungen handelt es sich häufig um spezielle Eigenentwicklungen....&amp;quot;&lt;br /&gt;
&lt;br /&gt;
Erstens würde ich hier den geläufigen Begriff &amp;quot;Individualsoftware&amp;quot; verwenden. Zweitens würde ich statt bestimmte SDLC-Phasen vorzugeben (die Begriffe &amp;quot;Softwareverteilung&amp;quot; und &amp;quot;Integration&amp;quot; sind mir bei Webanwendungen bisher noch nicht so häufig untergekommen), besser von der Notwendigkeit sprechen, Sicherheit in allen Entwicklungsphasen zu berücksichtigen, also eines SDLs.&lt;br /&gt;
&lt;br /&gt;
; 6. &amp;quot;Alle Ein- und Ausgaben der Web-Anwendung müssen in eine normalisierte Form überführt werden....&amp;quot;&lt;br /&gt;
&lt;br /&gt;
Normalisierung ist für mich nicht gleich Kanonsierung, auch wenn beide Begriffe häufig als synonym verwendet werden.  Der Unterschied wird in der [http://owasp-esapi-java.googlecode.com/svn/trunk_doc/2.0-rc4/org/owasp/esapi/Encoder.html API-Beschreibung der ESAPI] erklärt. Die Normalisierungs-Funktion ist allerdings schon vor einiger Zeit aus der ESAPI [https://lists.owasp.org/pipermail/esapi-dev/2010-January/000266.html rausgeflogen]. Die generelle Kanonisierung von Ausgaben halte ich dazu für nicht sinnvoll.&lt;br /&gt;
&lt;br /&gt;
Zweitens, finde ich den weiteren Text zwar grundsätzlich formal korrekt, aber so allgemein, dass dieser glaube ich niemandem so richtig etwas bringt.  &lt;br /&gt;
&lt;br /&gt;
Besser fände ich hier Ein- von Ausgabevalidierung grundsätzlich voneinander abzugrenzen. Etwa was ich per Eingabevalidierung (Längenprüfung, Casting, etc. per Whitelisting) und was mit Ausgebavalidierung (Enkodierung, Escaping, Parametrisierung) machen muss und kann.&lt;br /&gt;
&lt;br /&gt;
Eingabedaten können technisch zudem auch Werte eingelesener Property-Dateien sein. Muss ich die auch validieren? Ist das dann noch Grundschutz? &lt;br /&gt;
&lt;br /&gt;
; 7. &amp;quot;Für den Zugriff auf sensitive Funktionen oder Informationen muss die Web-Anwendung eine wirksame Authentisierung und Sitzungsverwaltung unterstützen. Die Eigenschaften der Sitzungs-ID müssen so gewählt werden, dass die Sitzung ausreichend geschützt ist. ....&amp;quot;&lt;br /&gt;
&lt;br /&gt;
Besser fände ich &amp;quot;eine Authentisierung, die über eine dem Schutzbedarf der Anwendung angemessene Stärke verfügt.&amp;quot; &lt;br /&gt;
&lt;br /&gt;
Eigentlich geht es doch mehr um den Schutz der Sitzungs-ID, da diese gewöhnlich im Verlauf einer Sitzung den Client authentisiert. Oder den Schutz des Zugriffs auf eine Sitzung. &lt;br /&gt;
&lt;br /&gt;
Zudem fehlt hier meiner Meinung nach der Hinweis auf die bevorzugte Verwendung getesteter Standardkomponenten.&lt;br /&gt;
&lt;br /&gt;
; 8. &amp;quot;Die Web-Anwendung sollte die zu übermittelnden Daten schützen.&amp;quot;&lt;br /&gt;
&lt;br /&gt;
Dies würde ich nur auf sensible Daten beziehen. Zusätzlich zu HTTPS würde ich hier schreiben, dass sensible Daten generell nicht in der URL übertragen werden dürfen.&lt;br /&gt;
&lt;br /&gt;
; 9. &amp;quot;Die Preisgabe interner Informationen (z.B. Kommentare, Fehlermeldungen)&amp;quot;&lt;br /&gt;
&lt;br /&gt;
Hier würde ich eher schreiben &amp;quot;(IN Kommentaren, Fehlermeldungen, HTTP Headern, etc.)&amp;quot;&lt;br /&gt;
&lt;br /&gt;
; 10. &amp;quot;Fehler müssen so behandelt werden, ... müssen Fehler bei der Autorisierung zu einer Verweigerung beim Zugriff auf die angeforderte Ressource führen.&amp;quot;&lt;br /&gt;
&lt;br /&gt;
Sprachlich: &amp;quot;Die Webanwendung muss sich stets in einem sicheren Zustand befinden. Beispielsweise müssen Fehler bei der Autorisierung zu einer Verweigerung des Zugriffs führen (Default-Deny-Strategie).&amp;quot;&lt;br /&gt;
&lt;br /&gt;
; 11. &amp;quot;Die Logging-Funktionen der Web-Anwendung müssen aufgetretene Ereignisse derart protokollieren, dass sicherheitskritische Vorfälle nachvollzogen werden können.&amp;quot;&lt;br /&gt;
&lt;br /&gt;
Hier würde hier eher von &amp;quot;allen sicherheitsrelevanten Ereignissen&amp;quot; sprechen.&lt;br /&gt;
&lt;br /&gt;
Weiterhin sollten insbesondere beim Logging der Datenschutz berücksichtigt werden, personenbezogene Daten also nach Möglichkeit nicht oder nur anonymisiert in technischen Logdateien protokolliert werden.&lt;br /&gt;
&lt;br /&gt;
; 12. &amp;quot;Alle Sicherheitsmechanismen (z.B. Authentisierung und Zugriffskontrolle) sind serverseitig zu implementieren und können nicht durch clientseitige Mechanismen ersetzt werden.&amp;quot;&lt;br /&gt;
&lt;br /&gt;
Die Aussage ist so nicht korrekt. Darüber hatten wir bereits bei der ASVS mehrfach diskutiert. &lt;br /&gt;
&lt;br /&gt;
Überall dort wo der Client angegriffen wird, also etwa bei RIAs (Stichwort DOM-Based XSS) müssen wir Security Controls clientseitig implementieren. Es gibt mittlerweile deshalb auch eine Portierung der ESAPI auf Javascript. Überall dort wo der Server oder Hintegrundsysteme angegriffen werden, ist die Aussage aber natürlich zutreffend.&lt;br /&gt;
&lt;br /&gt;
== &amp;quot;Gefährdungen&amp;quot; (Markus, Dennis, .... &amp;lt;Dein Name&amp;gt;) ==&lt;br /&gt;
; Generell:&lt;br /&gt;
Reference auf RFCs fehlen.&lt;br /&gt;
&lt;br /&gt;
==B.5.XX Web-Anwendungen ==&lt;br /&gt;
; 1. Erster Absatz - Letzter Satz: --Wieso werden hier nur HTML/XML Doks und Oberflächen angesprochen? Was ist der Unterschied zwischen einem HTML-Dok und einer Oberfläche? Was ist mit  Flash, etc.? Was ist mit WebSockets?&lt;br /&gt;
; 2. Stichpunkt &amp;quot;Protokollierung&amp;quot;: Sicherheits relevant ist ein sehr dehnbarer Begriff - Eine bessere Formulierung könnte sein: Zur Rekonstruktion von Nutzerhandlungen nötige Ereignisse (positve &amp;amp; negative) müssen protokolliert werden . . . &lt;br /&gt;
; 3. Absatz: &amp;quot;Abgrenzung des Bausteins&amp;quot;: &amp;quot;Die spez. Sicherheitsanforderungen an Web-Services werden in diesem Baustein nicht betrachtet&amp;quot; --&amp;gt; Wie so nicht? Was ist das Backend von einer Rest / AJAX-basierenden Webanwendung denn anderes als ein Web-Service? Diesen Satz würde ich entfernen.&lt;br /&gt;
; 4.Vorsätzliche Handlungen -&amp;gt; Web-Spoofing (G.5.87) -- Missverständliche Bezeichnung / Nomenklatur&lt;br /&gt;
; 5. Seite 4 : erste Zeile &amp;quot;Umsetzung&amp;quot;: &amp;quot;dafür umzusetztende Komponenten müssen die Webanwendung schützen...&amp;quot; - Hier fehlt mir der Hinweis, dass dieser Schutz verifiziert werden muss.&lt;br /&gt;
; 6 Seite 5: &amp;quot;Umsetzung&amp;quot; - Wir haben CSRF, D(D)os und SQL-Injection aber wo ist XSS?&lt;br /&gt;
; 7 Seite 7: &amp;quot;Die Sicherheitsfunktion wird ausschließlich clientseitig...&amp;quot; --&amp;gt; Warum muss der Angreifer überhaupt einen Browser umkonfigurieren? Was ist mit Proxies, Scripts, etc.? Ich würde das reduzieren darauf, dass rein Webbrowser-basierende Schutzfunktionen einfach umgangen werden können.&lt;br /&gt;
; 8 Seite 8: Die angesprochenen Punkte hinterlassen den Eindruck nicht vollständig zu sein: Mir fehlen Punkte wie &amp;quot;Outsourcing&amp;quot;, &amp;quot;KnowHow der Entwickler&amp;quot;, Tooling, Framework-Auswahl, etc.&lt;br /&gt;
; 9 Seite 9: Eigentlich möchte der Autor hier über Datenschutz sprechen. Abgesehen von den letzten drei Zeilen geht es aber nur um &amp;quot;User tracking&amp;quot; - Wo ist der Rest der Datenschutzproblematik? Warum der Fokuss auf Tracking? Mir ist das zu einseitig.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
tbd.&lt;br /&gt;
&lt;br /&gt;
; Wortwahl:&lt;br /&gt;
Ich stosse innerhalb der Texte immer wieder an die Worten '''Hintergrundsystem''' und '''Sicherheitskontext'''.&lt;br /&gt;
'''Hintergrundsystem:''' besseres Synonym?&lt;br /&gt;
'''Sicherheitskontext:''' nur weil es in den Texten um Sicherheit geht muss nicht an jeder Stelle immer wieder das Wort _Sicherheits_kontext eingebaut werden.&lt;br /&gt;
Bsp: &amp;quot;Erlangt ein Angreifer Kenntnis von einer solchen gültigen, aber nicht mehr genutzten SessionID, so kann er die Web-Anwendung im Sicherheitskontext des nicht abgemeldeten Benutzers weiter verwenden.&amp;quot; (G 5,WA12 Unzureichendes Session-Management von Web-Anwendungen)&lt;br /&gt;
Verbesserungsansansatz: ... so kann er die Web-Anwendung anstelle des eigentlichen Besitzers weiterhin verwenden.&lt;br /&gt;
&lt;br /&gt;
== &amp;quot;G 2.WA01 Mangelhafte Auswahl oder Konzeption von Web-Anwendungen&amp;quot; (Matthias) ==&lt;br /&gt;
&lt;br /&gt;
Nachdem ich mir diese Gefährdung durchgelesen hatte, fehlten mir ehrlich gesagt etwas die Worte. Nicht nur, dass hier fast jeder zweite Satz entweder falsch ist bzw. massive Fehler enthält oder ich diesen schlicht nicht verstehe, ist der ganze Text sprachlich wirklich enorm verbesserungsfähig. &lt;br /&gt;
&lt;br /&gt;
Na gut, ich konzentriere mich mal auf die fachlichen Punkte:&lt;br /&gt;
&lt;br /&gt;
; 1. Security Controls&lt;br /&gt;
Werden mal mit &amp;quot;Schutzmechanismen&amp;quot;, mal mit &amp;quot;Sicherheitskomponenten&amp;quot; und dann wieder als &amp;quot;Sicherheitsfunktionen&amp;quot; bezeichnet. Hier macht eine einheitliche Benennung sicherlich Sinn und ist weniger verwirrend.&lt;br /&gt;
&lt;br /&gt;
; 2. &amp;quot;Eine Web-Anwendung ist in der Regel ein verteiltes, komplexes System bestehend aus unterschiedlichen Komponenten (z. B. Webserver, Applikationsserver, Hintergrundsysteme)&amp;quot;&lt;br /&gt;
&lt;br /&gt;
Eine Webanwendung besteht sicher nicht aus einem Webserver- oder anderer infrastruktureller Komponenten, sondern ist Software welches diese nutzt.&lt;br /&gt;
&lt;br /&gt;
; 3. &amp;quot;Bei individuell entwickelten Web-Anwendungen sind im Allgemeinen die Frameworks, Komponenten und Schnittstellen im Rahmen der Konzeption auszuwählen und deren Einbindung und Absicherung zu betrachten....Im Gegensatz dazu ist bei der Konzeption von Web-Anwendungen auf Basis von Standardsoftware insbesondere auf die Auswahl der Software und die Konfiguration der Teilkomponenten zu achten&amp;quot;&lt;br /&gt;
&lt;br /&gt;
Wir unterscheiden im Rahmen von Webanwendungen eigentlich Free or Opensource Software (FOSS bzw. FLOSS), Standardsoftware und Individualsoftware voneinander. Wir unterscheiden nicht Frameworks von Standardsoftware. Frameworks können Teil von Standardsoftware sein, wie etwa bei SharePoint, SAP, etc, oder aber FOSS, wie etwa Spring. Die ganzen Absätze machen für mich daher keinen Sinn.&lt;br /&gt;
&lt;br /&gt;
; 4. &amp;quot;Eine Sicherheitsfunktion (z. B. Authentisierung, Autorisierung) wird nicht an einer Stelle umgesetzt und verwendet, sondern ist mehrfach in der Web- Anwendung realisiert. Wird diese Sicherheitsfunktion an den verschiedenen Stellen unterschiedlich umgesetzt, führt dies zu einem uneinheitlichen Sicherheitsniveau.&amp;quot;&lt;br /&gt;
&lt;br /&gt;
Natürlich ist die mehrfache Verwendung bestimmter Security Controls, beispielsweise von Zugriffskontrollen (Complete-Mediation) oder Validierung (Robustheit) erstrebenswert. Was der Autor hier wahrscheinlich meinte, war die Notwendigkeit diese zu Kapseln bzw. zu Externalisieren. Das bezieht sich im übrigen nicht nur auf die Controls selbst, sondern auch auf ihre Parametrisierung (etwa. über Konfigdateien / XACML).&lt;br /&gt;
&lt;br /&gt;
Wichtiger wäre in diesem Zusammenhang zudem die fehlende Berücksichtigung bestimmter Security Controls.&lt;br /&gt;
&lt;br /&gt;
; 5. &amp;quot;Auswahl von Web-Anwendungen auf Basis von Standardsoftware&amp;quot;&lt;br /&gt;
Was will der Satz sagen? Ich wähle Standardsoftware aus, aber doch keine Webanwendungen. Oder heißt das, ich kaufe eine existierende Anwendung ein (Webanwendung!=Indivudualsoftware)? &lt;br /&gt;
&lt;br /&gt;
; 6. &amp;quot;Das ausgewählte Produkt verfügt nicht über die ausreichende Sicherheitsfunktionalität, ... Daher müssen die notwendigen Schutzmechanismen nachträglich hinzugefügt werden, wodurch zusätzliche Aufwände entstehen.&amp;quot;&lt;br /&gt;
Das ist etwas sehr positiv formuliert. Tatsächlich können fehlende Security Controls in zugekaufter Software (insb. Standardsoftware) in der Realität häufig gar nicht hinzugefügt werden oder nur perimetrisch (z.B. per WAF oder Access Gateway).&lt;br /&gt;
&lt;br /&gt;
; 7. &amp;quot;Die Hintergrundsysteme werden unzureichend abgesichert und dadurch ist die Datenbank der Web-Anwendung aus dem Internet erreichbar.&amp;quot;&lt;br /&gt;
Gehören fehlende Netzwerksegmentierung bzw. Firewallregeln wirklich in diesen Kontext? Das ist doch eigentlich Grundschutz der Infrastruktur, oder?&lt;br /&gt;
&lt;br /&gt;
; 8. &amp;quot;Aufgrund schwacher Parameter in der Konfiguration des Frameworks zum Session-Management werden unsichere SessionIDs erzeugt.&amp;quot;&lt;br /&gt;
Was sind &amp;quot;schwache&amp;quot; Parameter?&lt;br /&gt;
&lt;br /&gt;
Welches Framework erlaubt unsichere SessionIDs durch eine &amp;quot;schwache&amp;quot; Konfiguration zu erzeugen?&lt;br /&gt;
&lt;br /&gt;
; 9. &amp;quot;Wird die Konfiguration des Web-Browsers durch einen Angreifer manipuliert, können die clientseitig umgesetzten&amp;quot;&lt;br /&gt;
&lt;br /&gt;
Manipuliert ein Angreifer die Konfguration seines Webbroswers, wenn er einen MITM-Proxy konfiguriert?&lt;br /&gt;
&lt;br /&gt;
Wie bereits bei den &amp;quot;Goldenen Regeln&amp;quot; angemerkt, gilt auch hier, das manche Security Controls auch clientseitig umgesetzt werden dürfen (etwa. zur Verhinderung von Dom-Based XSS).&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== &amp;quot;G 5.WA10 Fehler in der Web-Anwendungslogik&amp;quot; (Dennis) ==&lt;br /&gt;
; 1. &amp;quot;Damit kann aufgrund der Prüfreihenfolge ein hoher Ressourcenverbrauch provoziert werden, der für Denial-of-Service-Angriffe ausgenutzt werden kann.&amp;quot;&lt;br /&gt;
Meiner Meinung nach passt in diesem Kontext die Attacke DoS nicht ganz. Falls die nachfolgende Funktionalität wegen der langen Ausführungszeit der Filterkomponente übersprungen wird bzw. ein Fehler auftritt würde dies meiner Ansicht in die Thematik Anwendungslogik passen. Eine DoS-Attacke kann hingegen anhand jeder Funktion durchgeführt werden.&lt;br /&gt;
&lt;br /&gt;
([[User:Mrohr|Matthias]]) Jo stimmt, aber ich stimme mit der Aussage eigentlich schon ueberein, auch wenn diese zugegeben etwas ungluecklich formuliert ist. Es geht hier ja darum, rechenintensive Pruefungen/Filterung moeglichst zu vermeiden bzw. zu reduzieren. Aus diesem Grund machen wir ja auch bei der AV-Pruefung zunaechst Blacklist-Checks und erst am Ende rechenintensive statistische oder verhaltensbezogene Pruefungen.&lt;br /&gt;
&lt;br /&gt;
== &amp;quot;G 5.WA11 Umgehung clientseitig umgesetzter Sicherheitsfunktionen von Web-Anwendungen&amp;quot; (Dennis) ==&lt;br /&gt;
; 1. &amp;quot;Ein Angreifer kann diese ausnutzen, um beispielsweise unbefugt Befehle an Hintergrundsysteme der Web-Anwendung zu übermittlen (z.B. in Form von Datenbankanfragen bei einer SQL-Injection).&amp;quot;&lt;br /&gt;
Umformulierung des Inhalts der Klammer. Hatte beim ersten Lesen für mich den Anschein, als ob ein Formular genutzt werden könnte welches den Nutzer aufforder eine SQLI einzugeben. Ich denke &amp;quot;Datenbankanfrage zwecks Ausführung einer SQL-Injection&amp;quot; würde besser passen.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== G 2.WA02 Mängel bei der Entwicklung und der Erweiterung von Web-Anwendungen (Matthias) ==&lt;br /&gt;
&lt;br /&gt;
Allgemein ist de obere Teil ok, die aufgezählten &amp;quot;Auswirkungen von fehlenden Vorgaben&amp;quot; verstehe ich jedoch nicht. Wo ist etwa der Bezug von Barrierefreiheit auf die Anwendungssicherheit?&lt;br /&gt;
&lt;br /&gt;
Mein Vorschlag, um diese Punkte etwa sinnvoll umzubauen:&lt;br /&gt;
* &amp;quot;Fehlendes Vorgehensmodell&amp;quot;: Bezug auf fehlende Berücksichtigung von Sicherheit im SDLC. Statt eines SDLCs selbst sollte hier besser auf die Notwendigkeit eines Secure Development Lifecycle (SDL) hingewiesen werden&lt;br /&gt;
* &amp;quot;Fehlende Programmierrichtlinien&amp;quot; =&amp;gt; Besser wäre hier &amp;quot;Fehlende Sicherheitsrichtlinien in der Programmierung&amp;quot; also &amp;quot;Secure Coding Guidelines&amp;quot;&lt;br /&gt;
* &amp;quot;Testfälle&amp;quot; =&amp;gt; &amp;quot;Sicherheitsrelevante Testfälle&amp;quot; (z.B. Security Unit Tests). &lt;br /&gt;
* &amp;quot;Barrierefreiheit&amp;quot;: Warum nicht an dieser Stelle die Auswirkungen von Sicherheitsfunktionen auf die Bedienbarkeit, etwa anhand von CAPTCHAS erläutern?&lt;br /&gt;
&lt;br /&gt;
== G 2.WA03 Unzureichender Schutz personenbezogener Daten bei Web-Anwendungen (Matthias) ==&lt;br /&gt;
&lt;br /&gt;
Der Titel dieses Bausteines heißt &amp;quot;Schutz personenbezogener Daten&amp;quot;, die genannten Beispiele beziehen sich bis auf den letzten jedoch auf die missbräuchliche (oder zumindest problematische) Nutzung aus Sicht des Datenschutzes. &lt;br /&gt;
&lt;br /&gt;
Die Punkt 1-3 sollten daher besser entfallen und z.B. durch die Folgenden ersetzt werden:&lt;br /&gt;
* Unsichere Einbindung von sozialen Netzwerken (Bezug nehmen auf den Like-Button bei Facebook)&lt;br /&gt;
* Unsichere Einbindung von Werbeinhalten&lt;br /&gt;
* Unsichere Übertragung und Caching&lt;br /&gt;
* Unsichere Protokollierung&lt;br /&gt;
* Ungenügender Zugriffsschutz&lt;br /&gt;
* Verstoß des Minimalprinzips bzw. der Zweckgebundenheit (welche Daten werden wirklich benötigt)&lt;br /&gt;
&lt;br /&gt;
Auch wäre es ggf. zumindest einen Verweis auf das BDSG zu machen.&lt;br /&gt;
&lt;br /&gt;
== G 4.33 Unzureichende oder fehlende Authentisierung (Matthias) ==&lt;br /&gt;
&lt;br /&gt;
; 1. Erster Absatz: &amp;quot;Wenn Authentisierungsmechanismen fehlen oder zu schlecht sind&amp;quot;&lt;br /&gt;
&lt;br /&gt;
&amp;quot;schlecht&amp;quot; sollte vlt besser durch &amp;quot;unzureichend&amp;quot; ersetzt werden.&lt;br /&gt;
&lt;br /&gt;
; 2. &amp;quot;Sicherheitslücken entstehen bei... der Benutzerauthentisierung&amp;quot;&lt;br /&gt;
&lt;br /&gt;
Hier findet nur ein Bezug auf &amp;quot;Passwörter&amp;quot; statt. Der Bezug auf die fehlerhaft implementierte oder dem Schutzbedarf ungenügende Schutzmechanismen (z.B. keine 2-Faktor-Authentisierung bei hochsensiblen Daten) fehlt. Auch auf das komplette fehlen von Authentisierungs-Controls wird hier nicht  eingegangen&lt;br /&gt;
&lt;br /&gt;
; 3. &amp;quot;Sicherheitslücken entstehen bei... der Komponentenauthentisierung&amp;quot;&lt;br /&gt;
&lt;br /&gt;
Wie bei 2., wird auch hier wieder nur auf Passwörter, nicht jedoch auf das fehlen von Controls selbst eingegangen. An dieser Stelle fehlt auch ein Hinweis auf die Notwendigkeit dedizierter Benutzeraccounts.&lt;br /&gt;
&lt;br /&gt;
; 4. &amp;quot;Sicherheitslücken entstehen bei... der Wahl des Verfahrens&amp;quot;&lt;br /&gt;
&lt;br /&gt;
Statt untauglich würde ich auch hier von &amp;quot;dem Schutzbedarf der Daten nicht angemessen&amp;quot; sprechen, eigentlich gehört das für mich aber in die obigen Punkte.&lt;br /&gt;
&lt;br /&gt;
; 5. Serverseitige Authentisierung fehlt&lt;br /&gt;
&lt;br /&gt;
Auch der Server (bzw. die Anwendung selbst) kann sich fehlerhaft oder ungenügend beim Benutzer authentsieren, etwa über DNS, SSL-Zertifikate, etc.&lt;br /&gt;
&lt;br /&gt;
== G 4.WA04 Unzureichende Validierung von Ein- und Ausgabedaten bei Web-Anwendungen (Matthias) ==&lt;br /&gt;
&lt;br /&gt;
; 1. &amp;quot;Unzureichende Validierung von Eingabedaten&amp;quot;&lt;br /&gt;
&lt;br /&gt;
Die genannten Beispiele sind genau keine korrekten Beispiele für diesen Fall, sondern betreffen die Ausgabevalidierung bzw. Enkodierung. Typische Fehler der Eingabevalidierung ist eine Manipulierbarkeit der Business Logik.&lt;br /&gt;
&lt;br /&gt;
; 2. &amp;quot;Unzureichende Validierung von Ausgabedaten&amp;quot;&lt;br /&gt;
&lt;br /&gt;
Hier geht es zentral um die Verhinderung von Interpreter Injection, also serverseitig (z.B. SQL oder LDAP Injection) oder clientseitig (XSS, JSON Injection, etc.). Statt &amp;quot;können die Ausgaben Schadcode&amp;quot; enthalten würde ich hier eher davon Sprechen, dass ein solcher Interpreteraufruf manipuliert werden kann (was dann z.B. zur Einschleusung von Schadcode genutzt werden kann).&lt;br /&gt;
&lt;br /&gt;
; 3. &amp;quot;Die Suchfunktion der Web-Anwendung verwendet die Eingaben der Benutzer ungefiltert&amp;quot;&lt;br /&gt;
&lt;br /&gt;
Mit ungenügender &amp;quot;Filterung&amp;quot; hat SQL Injection nichts zu tun,  eigentlich geht es hierbei darum, dass SQL-Anfragen dynamisch mit unvalidierten Eingebedaten zusammengebaut (konkateniert) werden.&lt;br /&gt;
&lt;br /&gt;
; 4. &amp;quot;Ungefilterter HTML-Code in Kommentar-Funktion&amp;quot;&lt;br /&gt;
&lt;br /&gt;
Hier fehlt der Bezug auf persistentes XSS, das hier sicherlich zentral ist.&lt;br /&gt;
&lt;br /&gt;
== G 4.WA05 Fehlende oder mangelhafte Fehlerbehandlung durch Web-Anwendungen (Tobias, Matthias) ==&lt;br /&gt;
; Abschnitt &amp;quot;Unsichere Fehlerbehandlung&amp;quot;&lt;br /&gt;
Die G adressiert &amp;quot;Unsichere Fehlerbehandlung&amp;quot;, der Abschnitt die &amp;quot;Unsichere Fehlerbehandlung in Sicherheitskomponenten&amp;quot;. Entsprechend sollte der fettgedruckte Teil angepasst werden.&lt;br /&gt;
&lt;br /&gt;
; &amp;quot;fehlende SQL-Parameter,&amp;quot;&lt;br /&gt;
Sollte besser &amp;quot;Fehlermeldungen bei ungültigen SQL-Abfragen&amp;quot; lauten.&lt;br /&gt;
&lt;br /&gt;
; &amp;quot;Auch scheinbar unkritische Informationen, wie die Meldung ob (..)&amp;quot;&lt;br /&gt;
Korrekt, allerdings nicht nachvollziehbar, wenn das Problem der Leser nicht schon bekannt ist. Daher erweitern nach &amp;quot; Rahmen von Brute-Force-Angriffen ausgenutzt werden.&amp;quot; mit &amp;quot;. Bei Brute-Force-Angriffen wäre in diesem Fall klar, dass der Benutzername gültig ist.&amp;quot;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[User:Mrohr|Matthias]]): Stimme dem Obigen auch zu, ausserdem:&lt;br /&gt;
&lt;br /&gt;
; Sprachlich: &amp;quot;kann dies unvorhersehbare Auswirkungen haben und den Betrieb der Web-Anwendung bis zur Unerreichbarkeit einschränken.&amp;quot;&lt;br /&gt;
&lt;br /&gt;
&amp;quot;Unerreichbarkeit&amp;quot; ist etas merkwuerdig ausgedrueckt, besser ware hier von der &amp;quot;Verfuegbarkeit&amp;quot; zu sprechen. Im Uebrigen fehlt vollstaendig der Bezug auf die Verfuegbarkeit als Primaeres Schutzziel der Informationssicherheit.&lt;br /&gt;
&lt;br /&gt;
; &amp;quot;Clientseitige Fehlerbehandlung&amp;quot;&lt;br /&gt;
Das stimmt soweit, das generelle Problem ist jedoch genereller, naehmlich die clientseitige Abbildung sicherheitsrelaventer Logik (in diesem Fall die Fehlerbehandlung)&lt;br /&gt;
&lt;br /&gt;
== G 4.WA06 Unzureichende Nachvollziehbarkeit von sicherheitsrelevanten Ereignissen bei Web-Anwendungen (Matthias) ==&lt;br /&gt;
&lt;br /&gt;
; 1. Erster Absatz: &amp;quot;Die Behebung einer Schwachstelle ist dann nicht oder nur unter erschwerten Bedingungen möglich.&amp;quot;&lt;br /&gt;
&lt;br /&gt;
Hier würde ich ergänzen: &amp;quot;...und Angriffe auf die Anwendungen können ggf. nicht erkannt oder nachvollzogen werden&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
; 2. &amp;quot;Beispiele&amp;quot;: Kommulierbarkeit&lt;br /&gt;
&lt;br /&gt;
Hier fehlt auch ein Bezug auf die Kommulierbarkeit von SIcherheitsereignissen, dass diese also auch von solchen anderer Systeme in Verbindung gesetzt werden können&lt;br /&gt;
&lt;br /&gt;
; 3. &amp;quot;Beispiele&amp;quot;: Gerichtsverwertbarkeit&lt;br /&gt;
&lt;br /&gt;
Auch die Möglichkeit zur Gerichtsverwertbarkeit (etwa durch eindeutigen Zeitstempel) und manipulationssicherer Speicherung, würde ich an dieser Stelle unbedingt erwähnen.&lt;br /&gt;
&lt;br /&gt;
== G 4.WA07 Offenlegung von Informationen bei Web-Anwendungen (Matthias) ==&lt;br /&gt;
&lt;br /&gt;
; 1. Titel&lt;br /&gt;
&lt;br /&gt;
Hier würde ggf. &amp;quot;Offenlegung vertraulicher Informationen&amp;quot; sicher besser passen als &amp;quot;Offenlegung von Informationen&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
; 2. Beispiellink&lt;br /&gt;
&lt;br /&gt;
Ein Beispiellink (mit und ohne Token) würde sicher die Verständlichkeit dieser Schwachstelle verbessern.&lt;br /&gt;
&lt;br /&gt;
; 3. Erster Absatz: &amp;quot;Wenn demzufolge Informationen unnötig offengelegt werden, steigt die Wahrscheinlichkeit eines erfolgreichen Angriffs.&amp;quot;&lt;br /&gt;
&lt;br /&gt;
Interne Informationen auszublenden ist eine Härtungsmaßnahme, deren Anzeige erhöht aber nicht zwangsläufig die Wahrscheinlichkeit eines erfolgreichen Angriffs. Ich würde diesen Satz weglassen.&lt;br /&gt;
&lt;br /&gt;
 ; 4. Fehlende Punkte&lt;br /&gt;
&lt;br /&gt;
* Ein Hinweis auf HTTP Header wäre hier sicher erwähnenswert.&lt;br /&gt;
* Weiterhin bzgl. der Anzeige von Traces und ein Verweis auf den Entsprechenden Baustein zur Fehlerbehandlung&lt;br /&gt;
&lt;br /&gt;
== G 5.WA14 Cross-Site Request Forgery (CSRF, XSRF) (Matthias) ==&lt;br /&gt;
&lt;br /&gt;
; 1. Erster Absatz: &amp;quot;Können Funktionen einer Web-Anwendung ohne weitere Überprüfung der Authentizität des HTTP-Requests (z.B. durch Tokens in versteckten Formularfeldern) genutzt werden&amp;quot;&lt;br /&gt;
&lt;br /&gt;
Statt &amp;quot;Funktionen&amp;quot; würde ich besser von &amp;quot;schreibenden Aktionen&amp;quot; sprechen, dann macht der Satz mehr Sinn.&lt;br /&gt;
&lt;br /&gt;
; 2. Dritter Absatz: &amp;quot;Im Gegensatz zu XSS (siehe ...￼ ) ist das Angriffsziel nicht die Information auf dem Client (z. B. in Cookies),&amp;quot;&lt;br /&gt;
&lt;br /&gt;
Dieser (Halb-)Satz macht keinen Sinn, auch weil es bei XSS nicht nur im Informationen auf dem Cient geht. Vorschlag: &amp;quot;ist das Angriffsziel nicht die Ausführung von Skriptcode, sondern von unbefugten, schreibenden Aktionen im Kontext des angemeldeten Benutzers.&amp;quot;&lt;br /&gt;
&lt;br /&gt;
; 3. Session Riding&lt;br /&gt;
&lt;br /&gt;
Session Riding ist quasi nur ein anderer Begriff für CSRF. Die einzige Form von CSRF die mir bekannt ist, sind Angriffe mit Standard-Passwörtern auf HTTP-Basic-Auth geschützten Ressourcen.&lt;br /&gt;
&lt;br /&gt;
Im Grunde ist Session Riding aber nur ein Synonym für CSRF. Der Absatz ist daher auch nur eine Wiederholung der obigen Beschreibung.&lt;br /&gt;
&lt;br /&gt;
; 4. Zum Beispiel: &amp;quot;Durch einen präparierten Link auf einer Webseite wird die Änderung des Zugangspasswortes des Routers eingeleitet.&amp;quot;&lt;br /&gt;
&lt;br /&gt;
Etwas ungüngstig ausgedrückt. Besser wäre: &amp;quot;wird eine Anfrage zur Änderung des Zugangspasswortes an den Router gesendet. Hierbei sendet der Browser automatisch den Session Cookie mit, worüber die Webanwendung die Authentizität der Anfrage verifiziert und die Änderung durchführt.&amp;quot;&lt;br /&gt;
&lt;br /&gt;
== G 5.WA18 Clickjacking (Matthias) ==&lt;br /&gt;
&lt;br /&gt;
Hier stellt sich mir nur die allgemeine Frage, ob Clickjacking, bzw. der Schutz davor tatsächlich einem Grundschutz zuzurechnen ist. Persönlich würde ich dies nicht tun.&lt;br /&gt;
&lt;br /&gt;
== M 2.WA02 Dokumentation der Architektur von Web-Anwendungen (Matthias) ==&lt;br /&gt;
&lt;br /&gt;
; Verantwortlich für die Umsetzung&lt;br /&gt;
Hier wäre auch die Nennung des &amp;quot;Architekten&amp;quot; sinnvoll&lt;br /&gt;
 &lt;br /&gt;
; Fehlende Bestandteile der Dokumentation:&lt;br /&gt;
* Schutzbedarf des Systems sowie der verarbeiteten Daten&lt;br /&gt;
* Schützenswerte Daten und Funktionen (Assets)&lt;br /&gt;
* Betriebliche Anforderungen an die Sicherheit bzw. eingesetzte Plattform&lt;br /&gt;
* Dokumentierte Konfigurationseinstellungen &lt;br /&gt;
* BIA (RTO, RPO)&lt;br /&gt;
* Schnittstellen&lt;br /&gt;
* Trust Boundaries&lt;br /&gt;
* Akteure (bzw. Trust Level)&lt;br /&gt;
* Sicherheitsannahmen&lt;br /&gt;
* Geltende Compliance-Anforderungen (BDSG, PCI DSS, etc.)&lt;br /&gt;
&lt;br /&gt;
; Benutzermanagement&lt;br /&gt;
&lt;br /&gt;
Wenn damit das Identity Management gemeint ist, gehört das Dokumentiert, ist aber keine Sicherheitsfunktion. Oder ist hiermit das Rollen- und Berechtigungskonzept gemeint? Grenzt sich aus meiner Sicht schwer mit dem Thema Authentisierung ab. &lt;br /&gt;
&lt;br /&gt;
; Prüffragen&lt;br /&gt;
&lt;br /&gt;
Hier fehlt etwas in Bezug auf Sicherheitsanforderungen. Beispiel: &amp;quot;Werden Sicherheitsanforderungen an den Betrieb während der Entwicklung abgestimmt und dokumentiert&amp;quot;&lt;br /&gt;
&lt;br /&gt;
== M 2.WA12 Entwicklung und Erweiterung von Anwendungen (Markus) ==&lt;br /&gt;
; &amp;quot;Es sollte darauf geachtet werden, dass Sicherheitsanforderungen&lt;br /&gt;
vollständig durch Sicherheitsmechanismen erfüllt und zur Erstellung von&lt;br /&gt;
Testfällen festgehalten werden.&amp;quot; --&amp;gt; Bessere Formulierung würde aussagen, dass die Sicherheitsanforderungen durch Testfälle verifiziert werden.&lt;br /&gt;
&amp;quot;(z. B. durch Kommentare im&lt;br /&gt;
Quelltext). Somit ist der Quelltext zu einem&amp;quot; --&amp;gt; Das ist kein empfehlenswerter Programmierstiel! Raus mit diesem Kommentar&lt;br /&gt;
;&amp;quot;Zum Schutz vor dem Verlust bereits entwickelter und verworfener&lt;br /&gt;
Lösungen sowie zu Dokumentationszwecken sollte die Historie der&lt;br /&gt;
Änderungen festgehalten werden (z. B. durch ein Revisionssystem).&amp;quot; --&amp;gt; Auch diesen Absatz können wir streichen - Kein professioneller Programmierer arbeitet ohne Versionierugssystem.&lt;br /&gt;
;&amp;quot;Bei Web-Anwendung sollten die Webseiten auf Konformität zu dem&lt;br /&gt;
verwendeten Standard (z. B. HTML-Standard) getestet werden. Dadurch&lt;br /&gt;
können unvorgesehene Seiteneffekte aufgrund einer Fehlinterpretation&lt;br /&gt;
seitens der Browser vermieden werden.&amp;quot; --&amp;gt; Könnte man noch um &amp;quot;Die Software ist in möglichst vielen Browsern zu testen&amp;quot; erweitern.&lt;br /&gt;
;Generell geht der Autor leider nicht auf die Rollen &amp;amp; Rechte Verteilung ein. Mir fehlt der Hinweis, das es eine personelle Trennung zwischen Entwicklung, Test und Betrieb geben muss.&lt;br /&gt;
;Zum Thema Wartung / Betrieb --&amp;gt; Hier wird keine Aussage getroffen bezüglich Log_Files. Dieses Thema kann kritische Auswirkungen haben, Bsp.: logging ganzer HTTP-Requests im LogLevel=Debug.&lt;br /&gt;
; &amp;quot;Produktspezifische Sicherheitsfunkionalität&amp;quot; - Dieser Absatz ist gefährlich - der Angreifer ist nicht zur Verwendung dies Zielbrowsers gezwungen. Deshalb können Browser-spez. Sicherheitsfunktionen nur als Add-ON gewertet werden.&lt;br /&gt;
; &amp;quot;Festlegung der Entwicklungsumgebung&amp;quot; - Dieser Absatz geht nicht auf die zu verwendenden Testdaten ein. Der Hinweis, dass Live-Daten / Kundendaten nichts in Test- &amp;amp; Entwicklungsumgebungen zu suchen haben fehlt!!!&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== M 2.WA24 Web-Tracking (Matthias) ==&lt;br /&gt;
&lt;br /&gt;
; Letzter Absatz: &amp;quot;Falls eine Auswertung von Nutzerdaten, insbesondere personenbezogener Daten, .. &amp;quot;&lt;br /&gt;
&lt;br /&gt;
Hier sollte denke ich besser von personenbeziehbaren Daten gesprochen Werten. Dies betrifft etwa die Zuordnung von Surfverhalten zu einer bestimmten Person. Dies sollte stets nach den Prinzipien Datensparsamkeit und Datenvermeidung, Erforderlichkeit, sowie Zweckbindung erfolgen. Ist Webtracking nicht personenbeziehbar ist dies kein Thema für den Datenschutz.&lt;br /&gt;
&lt;br /&gt;
== M 4.WA04 Authentisierung bei Web- Anwendungen (Matthias) ==&lt;br /&gt;
&lt;br /&gt;
: Verantwortlich fuer Umsetzung &lt;br /&gt;
sollte in erster Linie beim Architekturen und in zweiter beim Entwickler liegen&lt;br /&gt;
; Vermischung von Authentisierung und Session Management &lt;br /&gt;
&lt;br /&gt;
Bei diesem Baustein findet eine ziemlich große Vermischung von Anforderung an die Authentisierung und das erst in &amp;quot;M 4.WA06 Session-Management bei Web- Anwendungen&amp;quot; behandelte Session Management statt (Beispiel: &amp;quot;Remember-Me-Funktion&amp;quot;). Beide Themen sollten sinnvollerweise getrennt voneinander zu betrachten und aufeinander zu beziehen.&lt;br /&gt;
&lt;br /&gt;
; Verwendung von Frameworks&lt;br /&gt;
&lt;br /&gt;
Die Anforderung ist schon ein wenig eingeschränkt. Besser passt hier denke ich die &amp;quot;Abbildung der Authentisierung über Standardkomponenten (Bibliotheken oder Frameworks)&amp;quot;. &lt;br /&gt;
&lt;br /&gt;
; Remember-Me-Funktion&lt;br /&gt;
&lt;br /&gt;
Siehe oben, gehört zum Session Management. Das ließt sich im übrigen so, als ob eine Webanwendung Credentials auf dem Client abhängt. &lt;br /&gt;
&lt;br /&gt;
; Grenzwerte für gescheiterte Anmeldeversuche&lt;br /&gt;
&lt;br /&gt;
Diese Empfehlung ist allgemein falsch, da sie sehr von der betrachteten Anwendung abhängt. Besser wäre hier allgemein von Mechanismen zur Verhinderung von automatisierten Angriffen zu sprechen (Anti-Automatisierung). &lt;br /&gt;
&lt;br /&gt;
Etwa umsetzbar durch&lt;br /&gt;
* Sperrung nach x Anmeldeversuchen&lt;br /&gt;
* Throttling&lt;br /&gt;
* Captchas&lt;br /&gt;
* Sicherheitsfragen&lt;br /&gt;
&lt;br /&gt;
Das allgemeine Sperren kann leicht für das gezielte Aussperren von Benutzern (User Lockout) verwendet werden. Was etwa bei Trading-Anwendungen nicht funktioniert.&lt;br /&gt;
&lt;br /&gt;
; Automatisiertes Zurücksetzen von Authentisierungsdaten&lt;br /&gt;
&lt;br /&gt;
Würde ich besser als &amp;quot;Passwort-Reset&amp;quot; bezeichnen.&lt;br /&gt;
&lt;br /&gt;
Weiterhin fehlt hier der Hinweis, dass statt ein automatisiertes Zurücksetzen, ein Mechanismus zu empfehlen ist, bei dem über ein hinterlegtes Sicherheitsmerkmal (Handy-Nummer oder E-Mail-Adresse) vom Benutzer zunächst eine Verifikation durchgeführt wird. Beispielsweise durch einen erhaltenen Link. Erst dann darf eine Änderung des Passwortes durch den Benutzer erfolgen.&lt;br /&gt;
&lt;br /&gt;
; Registrierung nicht behandelt&lt;br /&gt;
&lt;br /&gt;
Es existiert hier kein Punkt, der die sichere Implementierung von Benutzerregistrierungen behandelt.&lt;br /&gt;
&lt;br /&gt;
; Verweis auf Externalisierung fehlt.&lt;br /&gt;
&lt;br /&gt;
Statt die Authentisierung selbst durchzuführen kann eine Anwendung hierzu auf eine externe Komponente (Beispiel: SiteMinder oder Kerberos) zurückgreifen.&lt;br /&gt;
&lt;br /&gt;
; Verweis auf Behandlung von Credentials fehlt&lt;br /&gt;
&lt;br /&gt;
Auch wenn das  in &amp;quot;M 4.WA15 Schutz vertraulicher Daten bei Web- Anwendungen&amp;quot; ausführlich behandelt wird, sollte in diesem Baustein bereits auf den angemessenen Schutz von Authentisierungsdaten bei Übertragung und Speicherung hingewiesen werden.&lt;br /&gt;
&lt;br /&gt;
== M 4.WA05Umfassende Ein- und Ausgabevalidierung bei Web-Anwedungen (Markus) ==&lt;br /&gt;
; &amp;quot;Ablehnung der Daten im&lt;br /&gt;
Fehlerfall&amp;quot; --&amp;gt; Hier könnte man noch auf Tar-Pits eingehen - nur ein Vorschlag.&lt;br /&gt;
&lt;br /&gt;
== M 4.WA06Session-Management bei Web-Anwendungen (Markus, Matthias) ==&lt;br /&gt;
; &amp;quot;Übertragung der SessionID mittels GETRequest&amp;quot; --&amp;gt; Hier fehlt der Hinweis, dass die Lebensdauer dieser SessionIds kurz/kürzer sein muss, als im Falle der Speicherung im Cookie.&lt;br /&gt;
&lt;br /&gt;
([[User:Mrohr|Matthias]]) Die Anmerkung verstehe ich ehrlich gesagt ueberhaupt nicht, zumal das SM haeufig transparent zwischen Cookies und URL Rewriting wechselt. Wozu soll das gut sein? Wie soll das geschehen? Idealerweise sollte die Session ID niemals in die URL geschrieben werden, das sollte eigentlich genuegen.&lt;br /&gt;
&lt;br /&gt;
; &amp;quot;Verschlüsselte Übertragung von SessionIDs&amp;quot; --&amp;gt; Hier fehlt der Hinweis auf den Beast-Exploit. TLS Version &amp;gt; 1.0 verwenden!&lt;br /&gt;
&lt;br /&gt;
([[User:Mrohr|Matthias]]) Solange hier nicht auf eine explizite TLS Version eingegangen wird, sollte meiner grossen Ueberzeugung nach hier auch auf keine Exploits etc. eingagen werden, das gehoert an andere Stelle.&lt;br /&gt;
&lt;br /&gt;
; ([[User:Mrohr|Matthias]]) Weiterhin:&lt;br /&gt;
&lt;br /&gt;
 Es dürfen keine extern bekannten oder erratbaren Daten (z. B. IP-Adresse, Uhrzeit) in die Berechnung der SessionID einfließen.&lt;br /&gt;
&lt;br /&gt;
Die Aussage finde ich etwas problematisch, wichtiger ist, dass die Entropie ausreichend hoch ist. Haeufig werden etwa IPs von Load Balancern in die Session ID hineingeschrieben.&lt;br /&gt;
&lt;br /&gt;
 - Domain (z. B. webapp.domain.tld),&lt;br /&gt;
 - Path (z. B. /webapp/),&lt;br /&gt;
 - Secure und&lt;br /&gt;
 - HttpOnly.Beschränkte Sitzungsdauer&lt;br /&gt;
&lt;br /&gt;
Das sieht so aus, als ob es empfehlenswert ist, das Domain-Tag zu verwenden, das ist es sicherlich nicht. Was macht hier der Hinweis &amp;quot;Beschraenke Sizuungsdauer&amp;quot;?&lt;br /&gt;
&lt;br /&gt;
== M 4.WA07Fehlerbehandlung durch Web-Anwendungen (Markus) ==&lt;br /&gt;
; Konsistenter / Inkonsistener Zustand einer Webanwendung und der daraus resultierende Datenverlust: Hier fehlen mir die Punkte: DOS, Priv.Escalation, CodeExecution.&lt;br /&gt;
([[User:Mrohr|Matthias]]) Vorschlag &amp;quot;und somit der Schutz der Daten&amp;quot; aendern in &amp;quot;und somit ETWA der Schutz der Daten&amp;quot; korrigieren&lt;br /&gt;
&lt;br /&gt;
; Vermeidung vertraulicher Informationen in Fehlermeldungen --&amp;gt; Fehlermeldungen sollten ebenfalls eine Systeminformationen preisgeben (Softwareversion, Patchlevel, etc.)&lt;br /&gt;
([[User:Mrohr|Matthias]]) Ich glaube hier ist es wichtig zu unterscheiden, wo die Fehlermeldung ausgegeben bzw. wem diese angezeigt wird. Das wird in diesem Modul garnicht so recht unterscheiden. Der Autor meint glaube ich, wie Fehlermeldungen durch die Webanwendung angezeigt werden. In dem Fall hat er recht. Du meinst glaube ich eher, wie Fehlermeldungen protokolliert werden. In dem Fall hast du natuerlich auch recht. Das in dem Text verwendete Wort &amp;quot;ausgeben&amp;quot; ist nicht unbedingt eindeutig und sollte genauer spezifiziert werden.&lt;br /&gt;
&lt;br /&gt;
; Abbruch des Vorgangs nach Auftreten eines Fehlers --&amp;gt; TarPits scheinen dem Autor umbekannt zu sein :)&lt;br /&gt;
([[User:Mrohr|Matthias]]) Stimmt, wobei sich diese ja auch nur auf einen sehr bestimmten Fehlertypen beziehen. Generell laesst sich so etwas unterscheiden, wenn man Fehler-Domains erstellt. Beispiel: Technisch-Unerwartet = Abbruch, Technisch-Erwartet = Fehlermeldug/Tear Pit, etc.&lt;br /&gt;
&lt;br /&gt;
; &amp;quot;Werden Fehler möglichst von der gleichen Komponente behandelt, in der&lt;br /&gt;
der Fehler aufgetreten ist?&amp;quot; --&amp;gt; Das &amp;quot;möglichst&amp;quot; sollten wir streichen.&lt;br /&gt;
([[User:Mrohr|Matthias]]) Hm, der Aussage kann ich nicht ganz zustimmen, bzw. es haengt von dem Begriff &amp;quot;Komponente&amp;quot; ab. Eine Anwendungskomponente kann serwohl bewusst bestimmte Exceptions werfen, die von der einbindenden Komponente behandelt werden muessen.&lt;br /&gt;
&lt;br /&gt;
== M 4.WA08Schutz vor automatisierter Nutzung von Web-Anwendungen (Markus) ==&lt;br /&gt;
; &amp;quot;Brute-Force-&lt;br /&gt;
Angriffe (z. B. Erraten von Zugangsdaten) und Enumeration-Angriffe (z. B.&lt;br /&gt;
automatisiertes Ermitteln von gültigen Login-Namen)&amp;quot; -- die Beispiele sind identisch - besser Beispiele suchen, z.b. URL-Enumeration&lt;br /&gt;
&lt;br /&gt;
([[User:Mrohr|Matthias]]) Das sehe ich anders. Brute-Forcing bezieht auf Passwoerter und Enumeration auf Benutzernamen, etwa durchs hochzaehlen. Auch wenn ich zustimmen muss, dass die nicht ganz gluecklich gewaehlt wurden. Stann &amp;quot;Erraten von Zugangsdaten&amp;quot; wuerde ich besser von &amp;quot;Erraten von Passwoertern&amp;quot; sprechen. Oder wie gesagt gleich auch auf andere Beispiele (etwa Object ID Enumeration) beziehen.&lt;br /&gt;
&lt;br /&gt;
== M 4.WA11Sichere Konfiguration von Web-Anwendungen (Markus) ==&lt;br /&gt;
; &amp;quot;Sicherer Umgang mit TLS/SSL&amp;quot; -- Hier fehlt der Hinweis, dass TLS-1.0 gebrochen ist&lt;br /&gt;
; &amp;quot;Zeichenkodierungskonfiguration&amp;quot; -- Ein Whitelisting abhängig von der Encodierung wäre ein weiterer Vorschlag&lt;br /&gt;
; &amp;quot;Restriktive Dateisystemberechtigungen&amp;quot; -- auch wenn es ein klassiker ist - der AS sollte ebenfalls mit von einem eingeschränkten Nutzer gestartet werden und nicht als root&lt;br /&gt;
; Administration Consolen:zur Ergänzen: Wenn diese nicht benötigit, sollten derartige Applikationen nicht deployed werden, unabhängig von möglichen Zugangsbeschränkungen.&lt;br /&gt;
&lt;br /&gt;
([[User:Mrohr|Matthias]]) Sorry, meiner Meinung nach hat die Bewertung von Kryptoverfahren hier abslut nichts zu suchen.Stattdessen sollte hier auf den entsprechenden [https://www.bsi.bund.de/ContentBSI/Publikationen/TechnischeRichtlinien/tr02102/index_htm.html Empfehlung des BSI] verwiesen werden, auch wenn dieses Dokument derzeit noch etwas outdated zu sein scheint.&lt;br /&gt;
&lt;br /&gt;
== M 4.WA13Kontrolliertes Einbinden von Daten und Inhalten bei Web-Anwendungen (Markus) ==&lt;br /&gt;
; Datei-Upload: Bei einem Upload werden Dateien durchaus in TEMP-Verzeichnissen gesammelt und danach weiterverarbeitet. Diese TEMP-Verzeichnisse sind im Rahmen einer Sicherheitsanalyse zu betrachten -&amp;gt; Möglicher (unbefugter) Zugriff auf weitere Uploads&lt;br /&gt;
; Upload komprimierter Dateien / großer Dateien birgt die Gefahr von DOS Angriffen&lt;br /&gt;
; Upload von Dateien kann bei weiterem Parsing zu Speicherengpässen führen --&amp;gt; DOS-Angriffe auf Thread-Local etc.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== M 4.WA14Restriktive Herausgabe sicherheitsrelevanter Informationen bei Web-Anwendungen (Markus, Matthias) ==&lt;br /&gt;
OK - Keine Anmerkungen von mir.&lt;br /&gt;
&lt;br /&gt;
([[User:Mrohr|Matthias]]) Von mir schon;)&lt;br /&gt;
&lt;br /&gt;
; ([[User:Mrohr|Matthias]]) Vermeidung von Kommentaren in ausgelieferten Webseiten&lt;br /&gt;
&lt;br /&gt;
Das ist leider total falsch, wir brauchen haeufig Komentare, aus Kompatibilitaetsgruenden. So wird etwa der JavaScript-Block haeufig auskommentiert.&lt;br /&gt;
&lt;br /&gt;
Wurde stattessen besser von sicherheitsrelevanten Kommentaren sprechen und als Massnahme generell Entwicklerkommentare ueber Sprachkonstruktre (etwa JSP) durchzufuehren.&lt;br /&gt;
&lt;br /&gt;
; ([[User:Mrohr|Matthias]]) Löschen nicht benötigter Dateien&lt;br /&gt;
&lt;br /&gt;
Hier wurde ich ggf. Dateien von Versionisierungstools (etwa Subversion) erwaehnen, das sehen wir schon recht haeufig.&lt;br /&gt;
&lt;br /&gt;
Statt Dateien einfach nur zu loeschen (was in der Praxis haeufig nicht so einfach ist) bietet es sich zudem an, den Zugriff auf bestimmte Dateien oder Dateitypen generell zu sperren, etwa mittels ACL im Apache.&lt;br /&gt;
&lt;br /&gt;
; ([[User:Mrohr|Matthias]]) Gibt die Web-Anwendung ausschließlich neutrale Fehlermeldungen aus und sind diese im Quelltext identisch? {E: C}&lt;br /&gt;
&lt;br /&gt;
Persoenlich verstehe ich das nicht. Wieseo neutrale Fehlermeldung? Das macht fuer mich nur beim Login Sin. Hierzu existiert in dem Text auch keinerlei Bezug. Ich wuerde das daher besser entfernen und im Rahmen der Fehlerbehandlung diskutieren. Mindestens sollte hier jedoch besser von &amp;quot;sicherheitsunbedentlichen Fehlermeldungen&amp;quot; oder so gesprochen werden.&lt;br /&gt;
&lt;br /&gt;
; ([[User:Mrohr|Matthias]]) Wird der Referrer bei Verlassen der Web-Anwendung (z. B. durch einen Link auf eine externe Seite) gefiltert?&lt;br /&gt;
&lt;br /&gt;
Diesen Punkt sehe ich als sehr Fallabhengig an. Es kann fuer seiten durchaus wuenschenswert sein, dass der Referer weitergegeben wird. Der Referer sollte natuerlich keine sensiblen Informationen enthalten, was ja an anderer Stelle (etwa Session Management) vorgegeben wird bzw. gegeben werden sollte.&lt;br /&gt;
&lt;br /&gt;
== M 4.WA15Schutz vertraulicher Daten bei Web-Anwendungen (Markus, Matthias) ==&lt;br /&gt;
; Sichere kryptographische Algorithmen:&lt;br /&gt;
 Hier fehlt mir eine Liste der aktuelle als sicher geltenden Verfahren.&lt;br /&gt;
([[User:Mrohr|Matthias]]) Am Besten Referenz auf [https://www.bsi.bund.de/ContentBSI/Publikationen/TechnischeRichtlinien/tr02102/index_htm.html https://www.bsi.bund.de/ContentBSI/Publikationen/TechnischeRichtlinien/tr02102/index_htm.html]&lt;br /&gt;
&lt;br /&gt;
; Schlüssel&lt;br /&gt;
 Das die Schlüssel bestimmten Formaten entsprechen müssen ist ok - aber das Schlüsselmanagement wird gar nicht besprochen?&lt;br /&gt;
; Schutz der Daten im Browsercache&lt;br /&gt;
 Skripte und Browserplugins können ebenfalls auf den Browsercache zugreifen - diese werden hier nicht erwähnt.&lt;br /&gt;
&lt;br /&gt;
([[User:Mrohr|Matthias]]) Weiterhin entsprechen die vorgeschlagenen HTTP Headern nicht dem Best Practice:&lt;br /&gt;
&lt;br /&gt;
 Cache-control: no-cache, no-store&lt;br /&gt;
 Pragma: no-cache&lt;br /&gt;
 Expires: -1&lt;br /&gt;
&lt;br /&gt;
([[User:Mrohr|Matthias]]) Die Empfehlung hinsichtlich des manuellen Leerens des Browsercaches sollte wenn dann nur bei Anwendungen mit sehr hohem Schutzbedarf in Erwaegung gezogen werden. Wichtiger waere da schon eher die richtigen Cache-Header zu verwenden. Solche Empfehlungen ihm Rahmen des Grundschutzes aber wirklich nichts zu suchen. &lt;br /&gt;
&lt;br /&gt;
; Maskierung von Passwörtern &lt;br /&gt;
 Dies schützt bei der Eingabe nur vor ShoulderSurfing nicht vor Skripten oder Plugins die diese an andere Server posten.&lt;br /&gt;
&lt;br /&gt;
([[User:Mrohr|Matthias]]) Das ist voellig korrekt. Aber inwieweit ist die Aussage Passwort-Felder zu verwenden fehlerhaft bzw. hier unzureichend beschrieben?&lt;br /&gt;
&lt;br /&gt;
; Sicherung von Zugangsdaten:&lt;br /&gt;
 Zugangsdaten in einer Datei abzulegen - wenn auch ausserhalb des WebRoots ist keine gute Idee.&lt;br /&gt;
([[User:Mrohr|Matthias]]) Es ist sicher nicht die schoenste Variante, es laesst sich aber nunmal in vielen Faellen nicht vermeiden. Deshalb fordert der [http://code.google.com/p/owasp-asvs/wiki/Verification_V2 ASVS] hier etwa auch nicht mehr. Fuer den hier angestreben Grundschutz sollte das meiner Meinung nach ausreichen.&lt;br /&gt;
; Schutz von Quelltexten:&lt;br /&gt;
 Hier würde ich property files mit aufnehmen. der hinweis auf web-inf/classes fehlt - warum?&lt;br /&gt;
 Bei include-befehlen sind die pfadangaben zu überdenken.&lt;br /&gt;
([[User:Mrohr|Matthias]]) Wuerde property Dateien allgemein den Konfigurationsdateien zuordnen. Der Begriff &amp;quot;Einzubindende Dateien&amp;quot; ist mir allrdings Neu&lt;br /&gt;
&lt;br /&gt;
([[User:Mrohr|Matthias]]) Weiterhin, fehlt ein genereller Bezug auf HTML 5 WebStorage, LSOs etc. Zumindest in abstrakter Form, so dass diese dadurch indirekt addresiert werden. Egal, in dem relevanten Punkt will der Autor meiner Meinung nach nur einige Beispiele nennen, das sollte keinen Anspruch auf Vollsteandigkeit haben muessen.&lt;br /&gt;
&lt;br /&gt;
; ([[User:Mrohr|Matthias]]) - Durch dieses Attribut wird die Gültigkeit des Cookies auf die Domäne der Web-Anwendung beschränkt.&lt;br /&gt;
Nein, das ist leider total falsch. Das Domain-Attribut stellt eine Aufweichung der Cookie-Gueltigkeit dar und nicht anders herum. Gewoehlich sind Cookies immer Host-Cockies und das sollte auch so bleiben. Die Empfehlung sollte entfernt werden.&lt;br /&gt;
&lt;br /&gt;
== M 4.WA16Zugriffskontrolle bei Web-Anwendungen (Markus) ==&lt;br /&gt;
; Zugriffskontrolle via Frameworks:&lt;br /&gt;
 Dieser Punkt (Frameworks) wird nur in einem Satz erwähnt. Es werden keine Bespiele gegeben - Das ist zu wenig.&lt;br /&gt;
 Es müssen alle Zugriffe geschützt werden. Eine Protokollierung aller Zugriffe mit den nötigen Informationen ist ebenfalls empfehlenswert.&lt;br /&gt;
; Datei Upload:&lt;br /&gt;
 Die Gefahr eines DOS wird hier nicht erwähnt.&lt;br /&gt;
&lt;br /&gt;
== M 4.WA19Verhinderung von Cross-Site Request Forgery (CSRF, XSRF) (Markus, Matthias) ==&lt;br /&gt;
; Verantwortliche: &lt;br /&gt;
 Entwickler und Admins!&lt;br /&gt;
([[User:Mrohr|Matthias]]) Korrekt, wobei auch in der Reihenfolge&lt;br /&gt;
&lt;br /&gt;
; Anti-CSRF-Token in hidden fields:&lt;br /&gt;
 Das ist keine gute Idee. Ich würde das streichen!&lt;br /&gt;
&lt;br /&gt;
([[User:Mrohr|Matthias]]) Watt? Anti-CSRF-Tokens in Hidden Fields sind die Standard-Massnahme. Wie denn sonst? Bitte nicht streichen!!! &lt;br /&gt;
&lt;br /&gt;
([[User:Mrohr|Matthias]]) Die Technik bei der die Session ID als Anti-CSRF-Token verwendet wird, wird als Double-Cookie Submit bezeichnet, das sollte hier referenziert werden.&lt;br /&gt;
&lt;br /&gt;
; Umgehung von Schutzmechanismen:&lt;br /&gt;
 Man in the middle hat keinen direkten Bezug zu CSRF! Das würde ich streichen.&lt;br /&gt;
([[User:Mrohr|Matthias]]) Der Hinweis ist korrekt. Wovon der Autor hier spricht ist Session Replay nicht CSRF.&lt;br /&gt;
&lt;br /&gt;
; Frameworks:&lt;br /&gt;
 Gute Idee - aber es gibt auch Features in den ApplicationServern die CSRF unterbinden - warum wird das nicht besprochen?&lt;br /&gt;
&lt;br /&gt;
([[User:Mrohr|Matthias]]) Sehe ich persoenlich nicht so, da CSRF primaer ein Applikations-Fehler ist, und auch in der Applikation und nicht im Environment (AppServer) geloest werden sollte. Auch wenn das manchmal ggf. die einzig machbare Loesung darstellt.&lt;br /&gt;
&lt;br /&gt;
([[User:Mrohr|Matthias]]) Was generell fehlt, ist ein Hinweis darauf, dass schreibende Requests generell per HTTP Post abgewickelt werden sollten, da HTTP Get keine &amp;quot;Safe Method&amp;quot;  (siehe HTTP 1.1, RFC 2616) ist.&lt;br /&gt;
&lt;br /&gt;
== M 4.WA20Sicherer Entwurf der Logik von Web-Anwendungen (Markus, Matthias) ==&lt;br /&gt;
; Rollbacks:&lt;br /&gt;
 Tritt ein Fehler auf muss die Applikation einen konsistenten Datenstand zurück lassen. Das wird hier nicht erwähnt.&lt;br /&gt;
; RaceConditions:&lt;br /&gt;
 Fehler in der Geschäftslogik können auch durch zwei gleichzeitige Sessions auf einer Webapplikation auftreten - das wird hier nicht besprochen.&lt;br /&gt;
&lt;br /&gt;
([[User:Mrohr|Matthias]]) Ehrlich gesagt kann ich nicht ganz nachvollziehen, was der Sichere Entwurf der Logik von Web-Anwendungen mit dem Verzicht auf aktive Inhalte zu tun hat. Unabhaengig davon sollte man solche unsinnigen Aussagen im Jahre 2012 nicht mehr treffen, damit macht man sicht nur laecherlich.&lt;br /&gt;
&lt;br /&gt;
Nichts desto trotz, was hier als &amp;quot;echte&amp;quot; Massnahmen erwaehnt werden sollte sind:&lt;br /&gt;
* Verhinderung von Race Conditions, aber nicht nur durch Concurrent Sessions sondern auch durch Singletons (TOCTOU)&lt;br /&gt;
* Enforcements von Workflows, etwa durch die Verwendung von State Machines oder Request Tokens (auch bekannt als Site Usage Enforcement)&lt;br /&gt;
* Fail Securely (bzw. Verweis)&lt;br /&gt;
* Serverseitige Abbildung der Anwendungslogik, zumindest wenn diese sicherheitsrelevant sit&lt;br /&gt;
&lt;br /&gt;
== M 4.WA22Verhinderung der Blockade von Ressourcen (DoS) bei Web-Anwendungen (Markus, Matthias) ==&lt;br /&gt;
; Datenspeicher:&lt;br /&gt;
 Neben dem Datenspeicher sollte auch der RAM-Verbrauch pro Thread der Applikation limitiert werden.&lt;br /&gt;
([[User:Mrohr|Matthias]]) Stimmt, ich wuerde hier sogar allgemein von Ressourcenverbrauch am Beispiel RAM und Datenspeicher, sprechen&lt;br /&gt;
&lt;br /&gt;
; Voraggregation von Daten / Caching&lt;br /&gt;
 Dieser Punkt fehlt: Stark ressourcen belastende Anfragen können auch in Lastarmen Zeiten vorberechnet werden.&lt;br /&gt;
([[User:Mrohr|Matthias]]) Stimmt, koennte noch als Anmerkung bei &amp;quot;Cachen von Anfragen&amp;quot; hinzugefuegt werden&lt;br /&gt;
&lt;br /&gt;
; ([[User:Mrohr|Matthias]]) Prueffrage: &amp;quot;Wird ein möglicher Überlauf von Protokolldaten... verhindert&amp;quot;&lt;br /&gt;
&lt;br /&gt;
Ist eine etwas eingeschrankte Sicht. Wurde hier eher von Ueberlauf von Speicherplaz zu Beispiel im Rahmen der Protokollierung sprechen&lt;br /&gt;
&lt;br /&gt;
; ([[User:Mrohr|Matthias]]) Durchfuehrung von Lasttests zur Identifikation ressourcenintensiver Operationen&lt;br /&gt;
&lt;br /&gt;
Der Hinweis waere ggf. erwahnenswert&lt;br /&gt;
&lt;br /&gt;
; ([[User:Mrohr|Matthias]]) Hinweis auf nicht-angemeldeten Bereich&lt;br /&gt;
&lt;br /&gt;
Das Risiko durch rechenintensive Operationen durch einen DoS betroffen zu sein ist natuerlich fuer gewoehlich um so groesser, wenn diese im anonymen Bereich angeboten wird. Der Hinweis ware ggf. ebenfalls hilfreich.&lt;br /&gt;
&lt;br /&gt;
== M 4.WA25Verhinderung von Clickjacking (Markus) ==&lt;br /&gt;
Ok - das passt soweit.&lt;br /&gt;
&lt;br /&gt;
([[User:Mrohr|Matthias]]) Stimmt, auch wenn ich &amp;quot;Angreifer&amp;quot; in dem Beispiel eher als &amp;quot;Webseitenbetreiber&amp;quot; beschreiebn wuerde, da er nicht wirklich aktiv einen Angriff durchfuehrt, oder? Bitte nochmal ueber meinen Hinweis aus G 5.WA18 nachdenken: Ist Clickjacking-Schutz tatsaechlich Grundschutz? Ich bin mir da selber nicht so wirklich sicher.&lt;br /&gt;
&lt;br /&gt;
== M 5.WA21Sichere Anbindung von Hintergrundsystemen an Web-Anwendungen (Markus) ==&lt;br /&gt;
; Verantwortliche:&lt;br /&gt;
 Architekten fehlen. Entwickler müssen die Views umsetzen und die Datasource entsprechend einbinden - die fehlen hier ebenfalls.&lt;br /&gt;
; DirectorySystem Beispiel:&lt;br /&gt;
 Das DirectorySystem wird in dem angegeben Beispiel zum Single Point of Failure - das wird verschwiegen.&lt;br /&gt;
; Firewalls:&lt;br /&gt;
 Das sind fachlich-blinde Systeme. Was ist mit WAFs / IDS / IPS etc.?&lt;br /&gt;
([[User:Mrohr|Matthias]]) Stimmt, das hat in diesem Baustein nichts zu suchen&lt;br /&gt;
&lt;br /&gt;
; ([[User:Mrohr|Matthias]]) Typische Hintergrundsysteme&lt;br /&gt;
Hier fehlt irgendwie &amp;quot;Middleware&amp;quot;, die ist denke ich nicht immer Legacy&lt;br /&gt;
&lt;br /&gt;
== M 5.WA23Systemarchitektur einer Web-Anwendung (Markus) ==&lt;br /&gt;
; Verantwortliche:&lt;br /&gt;
Auch hier fehlend wieder die Architekten. &lt;br /&gt;
([[User:Mrohr|Matthias]]) Stimmt, habe das Dokument mal komplett durchgesucht.Tatsaechlich wird der &amp;quot;Architekt&amp;quot; niemals genannt, das scheint also eher ein grundseatzliches Problem zu sein. Der Administrator hat hier aber nun wirklich nichts zu suchen.&lt;br /&gt;
&lt;br /&gt;
; Virtualisierung:&lt;br /&gt;
Virtualisierung bietet weitere Angriffsvektoren (z.B.: Hypervisor) die eine &amp;quot;Blech&amp;quot;Farm nicht bietet.&lt;br /&gt;
&lt;br /&gt;
([[User:Mrohr|Matthias]]) Genau, wobei auch der ganze Bereich geshareter Plattformen (z.B. By SharePoint) hier fehlt.&lt;/div&gt;</summary>
		<author><name>Mrohr</name></author>	</entry>

	<entry>
		<id>https://wiki.owasp.org/index.php?title=Talk:OWASP_Review_BSI_IT-Grundschutz_Baustein_Webanwendungen&amp;diff=130204</id>
		<title>Talk:OWASP Review BSI IT-Grundschutz Baustein Webanwendungen</title>
		<link rel="alternate" type="text/html" href="https://wiki.owasp.org/index.php?title=Talk:OWASP_Review_BSI_IT-Grundschutz_Baustein_Webanwendungen&amp;diff=130204"/>
				<updated>2012-05-21T15:44:58Z</updated>
		
		<summary type="html">&lt;p&gt;Mrohr: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Since it's about a review of a document in German, all the discussions will be done in German :-)&lt;br /&gt;
&lt;br /&gt;
Diskussionen rund um den Review des &amp;quot;IT-Grundschutzbausteins Webanwendungen&amp;quot; finden hier statt, sinnvollerweise auf Deutsch :-)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Vorschlag für Kriterien, die an unser Review angelegt werden sollten (.kai) ==&lt;br /&gt;
&lt;br /&gt;
* Der Baustein soll alle wichtigen Themen der Entwicklung sicherer&lt;br /&gt;
Webanwendungen enthalten.&lt;br /&gt;
&lt;br /&gt;
* Der Baustein soll die verschiedenen Phasen der Software-Entwicklung&lt;br /&gt;
vollständig abdecken.&lt;br /&gt;
&lt;br /&gt;
* Der Baustein soll zwischen verbindlichen, prüfbaren Vorgaben und&lt;br /&gt;
unverbindlichen Empfehlungen sprachlich sauber unterscheiden (hier&lt;br /&gt;
spielt mein Auditorenblick eine Rolle). Vor allem soll der Baustein&lt;br /&gt;
verbindliche Anforderungen auch tatsächlich stellen. Alle&lt;br /&gt;
verbindlichen Anforderungen müssen unabhängig von der jeweiligen&lt;br /&gt;
Umgebung auch umsetzbar sein, d.h. sie müssen entsprechend generisch&lt;br /&gt;
sein.&lt;br /&gt;
&lt;br /&gt;
* Die Maßnahmen sollen nur in (begründbaren) Ausnahmen zu Empfehlungen&lt;br /&gt;
von OWASP im Widerspruch stehen.&lt;br /&gt;
&lt;br /&gt;
* Die Maßnahmen sollen verständlich und anwendbar sein.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== &amp;quot;Hilfsmittel&amp;quot; (Markus) ==&lt;br /&gt;
Ich würde das Script zur Vermeidung von Clickjacking wrappen und nicht als losen Skript-block in den Text einbinden - einfach schlechter Programmierstiel diese losen Blöcke.&lt;br /&gt;
Der Zugriff auf das Body-Element mit byTagName-Array[0] ist auch nicht wirklich gut. Ich halte Zugriffe über das DOM (klassisch), bei ID bzw. XPATH für besser. &lt;br /&gt;
&lt;br /&gt;
SQL-Injection Characters:&lt;br /&gt;
die Pipe fehlt hier zur Textkonatenierung&lt;br /&gt;
+ / - haben auch eine Bedeutung bei JOINs.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== &amp;quot;Goldene Regeln&amp;quot; (Matthias) ==&lt;br /&gt;
&lt;br /&gt;
Hier meine Anmerkungen zu diesem Dokument:&lt;br /&gt;
&lt;br /&gt;
; 1. Für mich fehlende Punkte&lt;br /&gt;
* Korrektur der Ursache (Root Cause) von Schwachstellen statt  Verhinderung deren Ausnutzung&lt;br /&gt;
* Bezug auf Minimierung der Angriffsfläche und Least-Privilege-Prinzip&lt;br /&gt;
* Bezug auf Defense-in-Depth-Prinzip&lt;br /&gt;
* Verwendung von getesteten Security APIs (z.B. OWASP ESAPI) statt selbstentwickelter Funktionen&lt;br /&gt;
* Bezug auf Externalisierung von Sicherheitsfunktionen, sowie deklerative vor programmatischer Sicherheit.&lt;br /&gt;
&lt;br /&gt;
; 2. Begriff &amp;quot;Web-Anwendung&amp;quot;&lt;br /&gt;
Würde ich generell durch &amp;quot;Webanwendung&amp;quot; ersetzen.&lt;br /&gt;
&lt;br /&gt;
; 3. Einleitung (&amp;quot;Web-Anwendungen stellen Funktionalität zur Verfügung, ...&amp;quot;)&lt;br /&gt;
&lt;br /&gt;
Wozu dient dieser Satz?&lt;br /&gt;
&lt;br /&gt;
; 4. &amp;quot;Die Architektur der Web-Anwendung ist im Sicherheitskonzept zu  dokumentieren.....&amp;quot; &lt;br /&gt;
&lt;br /&gt;
Ich fände es sinnvoller, wenn hier von der &amp;quot;Sicherheitsarchitektur&amp;quot; gesprochen wird, welche etwa neben den sicherheitsrelevanten Datenflüssen, sensible Komponenten, Entry Points, Akteure architekturelle Security Controls wie Authentisierung, Kryptographie und natürlich die Trust Boundaries beinhaltet.&lt;br /&gt;
&lt;br /&gt;
; 5. &amp;quot;Bei Web-Anwendungen handelt es sich häufig um spezielle Eigenentwicklungen....&amp;quot;&lt;br /&gt;
&lt;br /&gt;
Erstens würde ich hier den geläufigen Begriff &amp;quot;Individualsoftware&amp;quot; verwenden. Zweitens würde ich statt bestimmte SDLC-Phasen vorzugeben (die Begriffe &amp;quot;Softwareverteilung&amp;quot; und &amp;quot;Integration&amp;quot; sind mir bei Webanwendungen bisher noch nicht so häufig untergekommen), besser von der Notwendigkeit sprechen, Sicherheit in allen Entwicklungsphasen zu berücksichtigen, also eines SDLs.&lt;br /&gt;
&lt;br /&gt;
; 6. &amp;quot;Alle Ein- und Ausgaben der Web-Anwendung müssen in eine normalisierte Form überführt werden....&amp;quot;&lt;br /&gt;
&lt;br /&gt;
Normalisierung ist für mich nicht gleich Kanonsierung, auch wenn beide Begriffe häufig als synonym verwendet werden.  Der Unterschied wird in der [http://owasp-esapi-java.googlecode.com/svn/trunk_doc/2.0-rc4/org/owasp/esapi/Encoder.html API-Beschreibung der ESAPI] erklärt. Die Normalisierungs-Funktion ist allerdings schon vor einiger Zeit aus der ESAPI [https://lists.owasp.org/pipermail/esapi-dev/2010-January/000266.html rausgeflogen]. Die generelle Kanonisierung von Ausgaben halte ich dazu für nicht sinnvoll.&lt;br /&gt;
&lt;br /&gt;
Zweitens, finde ich den weiteren Text zwar grundsätzlich formal korrekt, aber so allgemein, dass dieser glaube ich niemandem so richtig etwas bringt.  &lt;br /&gt;
&lt;br /&gt;
Besser fände ich hier Ein- von Ausgabevalidierung grundsätzlich voneinander abzugrenzen. Etwa was ich per Eingabevalidierung (Längenprüfung, Casting, etc. per Whitelisting) und was mit Ausgebavalidierung (Enkodierung, Escaping, Parametrisierung) machen muss und kann.&lt;br /&gt;
&lt;br /&gt;
Eingabedaten können technisch zudem auch Werte eingelesener Property-Dateien sein. Muss ich die auch validieren? Ist das dann noch Grundschutz? &lt;br /&gt;
&lt;br /&gt;
; 7. &amp;quot;Für den Zugriff auf sensitive Funktionen oder Informationen muss die Web-Anwendung eine wirksame Authentisierung und Sitzungsverwaltung unterstützen. Die Eigenschaften der Sitzungs-ID müssen so gewählt werden, dass die Sitzung ausreichend geschützt ist. ....&amp;quot;&lt;br /&gt;
&lt;br /&gt;
Besser fände ich &amp;quot;eine Authentisierung, die über eine dem Schutzbedarf der Anwendung angemessene Stärke verfügt.&amp;quot; &lt;br /&gt;
&lt;br /&gt;
Eigentlich geht es doch mehr um den Schutz der Sitzungs-ID, da diese gewöhnlich im Verlauf einer Sitzung den Client authentisiert. Oder den Schutz des Zugriffs auf eine Sitzung. &lt;br /&gt;
&lt;br /&gt;
Zudem fehlt hier meiner Meinung nach der Hinweis auf die bevorzugte Verwendung getesteter Standardkomponenten.&lt;br /&gt;
&lt;br /&gt;
; 8. &amp;quot;Die Web-Anwendung sollte die zu übermittelnden Daten schützen.&amp;quot;&lt;br /&gt;
&lt;br /&gt;
Dies würde ich nur auf sensible Daten beziehen. Zusätzlich zu HTTPS würde ich hier schreiben, dass sensible Daten generell nicht in der URL übertragen werden dürfen.&lt;br /&gt;
&lt;br /&gt;
; 9. &amp;quot;Die Preisgabe interner Informationen (z.B. Kommentare, Fehlermeldungen)&amp;quot;&lt;br /&gt;
&lt;br /&gt;
Hier würde ich eher schreiben &amp;quot;(IN Kommentaren, Fehlermeldungen, HTTP Headern, etc.)&amp;quot;&lt;br /&gt;
&lt;br /&gt;
; 10. &amp;quot;Fehler müssen so behandelt werden, ... müssen Fehler bei der Autorisierung zu einer Verweigerung beim Zugriff auf die angeforderte Ressource führen.&amp;quot;&lt;br /&gt;
&lt;br /&gt;
Sprachlich: &amp;quot;Die Webanwendung muss sich stets in einem sicheren Zustand befinden. Beispielsweise müssen Fehler bei der Autorisierung zu einer Verweigerung des Zugriffs führen (Default-Deny-Strategie).&amp;quot;&lt;br /&gt;
&lt;br /&gt;
; 11. &amp;quot;Die Logging-Funktionen der Web-Anwendung müssen aufgetretene Ereignisse derart protokollieren, dass sicherheitskritische Vorfälle nachvollzogen werden können.&amp;quot;&lt;br /&gt;
&lt;br /&gt;
Hier würde hier eher von &amp;quot;allen sicherheitsrelevanten Ereignissen&amp;quot; sprechen.&lt;br /&gt;
&lt;br /&gt;
Weiterhin sollten insbesondere beim Logging der Datenschutz berücksichtigt werden, personenbezogene Daten also nach Möglichkeit nicht oder nur anonymisiert in technischen Logdateien protokolliert werden.&lt;br /&gt;
&lt;br /&gt;
; 12. &amp;quot;Alle Sicherheitsmechanismen (z.B. Authentisierung und Zugriffskontrolle) sind serverseitig zu implementieren und können nicht durch clientseitige Mechanismen ersetzt werden.&amp;quot;&lt;br /&gt;
&lt;br /&gt;
Die Aussage ist so nicht korrekt. Darüber hatten wir bereits bei der ASVS mehrfach diskutiert. &lt;br /&gt;
&lt;br /&gt;
Überall dort wo der Client angegriffen wird, also etwa bei RIAs (Stichwort DOM-Based XSS) müssen wir Security Controls clientseitig implementieren. Es gibt mittlerweile deshalb auch eine Portierung der ESAPI auf Javascript. Überall dort wo der Server oder Hintegrundsysteme angegriffen werden, ist die Aussage aber natürlich zutreffend.&lt;br /&gt;
&lt;br /&gt;
== &amp;quot;Gefährdungen&amp;quot; (Markus, Dennis, .... &amp;lt;Dein Name&amp;gt;) ==&lt;br /&gt;
; Generell:&lt;br /&gt;
Reference auf RFCs fehlen.&lt;br /&gt;
&lt;br /&gt;
==B.5.XX Web-Anwendungen ==&lt;br /&gt;
; 1. Erster Absatz - Letzter Satz: --Wieso werden hier nur HTML/XML Doks und Oberflächen angesprochen? Was ist der Unterschied zwischen einem HTML-Dok und einer Oberfläche? Was ist mit  Flash, etc.? Was ist mit WebSockets?&lt;br /&gt;
; 2. Stichpunkt &amp;quot;Protokollierung&amp;quot;: Sicherheits relevant ist ein sehr dehnbarer Begriff - Eine bessere Formulierung könnte sein: Zur Rekonstruktion von Nutzerhandlungen nötige Ereignisse (positve &amp;amp; negative) müssen protokolliert werden . . . &lt;br /&gt;
; 3. Absatz: &amp;quot;Abgrenzung des Bausteins&amp;quot;: &amp;quot;Die spez. Sicherheitsanforderungen an Web-Services werden in diesem Baustein nicht betrachtet&amp;quot; --&amp;gt; Wie so nicht? Was ist das Backend von einer Rest / AJAX-basierenden Webanwendung denn anderes als ein Web-Service? Diesen Satz würde ich entfernen.&lt;br /&gt;
; 4.Vorsätzliche Handlungen -&amp;gt; Web-Spoofing (G.5.87) -- Missverständliche Bezeichnung / Nomenklatur&lt;br /&gt;
; 5. Seite 4 : erste Zeile &amp;quot;Umsetzung&amp;quot;: &amp;quot;dafür umzusetztende Komponenten müssen die Webanwendung schützen...&amp;quot; - Hier fehlt mir der Hinweis, dass dieser Schutz verifiziert werden muss.&lt;br /&gt;
; 6 Seite 5: &amp;quot;Umsetzung&amp;quot; - Wir haben CSRF, D(D)os und SQL-Injection aber wo ist XSS?&lt;br /&gt;
; 7 Seite 7: &amp;quot;Die Sicherheitsfunktion wird ausschließlich clientseitig...&amp;quot; --&amp;gt; Warum muss der Angreifer überhaupt einen Browser umkonfigurieren? Was ist mit Proxies, Scripts, etc.? Ich würde das reduzieren darauf, dass rein Webbrowser-basierende Schutzfunktionen einfach umgangen werden können.&lt;br /&gt;
; 8 Seite 8: Die angesprochenen Punkte hinterlassen den Eindruck nicht vollständig zu sein: Mir fehlen Punkte wie &amp;quot;Outsourcing&amp;quot;, &amp;quot;KnowHow der Entwickler&amp;quot;, Tooling, Framework-Auswahl, etc.&lt;br /&gt;
; 9 Seite 9: Eigentlich möchte der Autor hier über Datenschutz sprechen. Abgesehen von den letzten drei Zeilen geht es aber nur um &amp;quot;User tracking&amp;quot; - Wo ist der Rest der Datenschutzproblematik? Warum der Fokuss auf Tracking? Mir ist das zu einseitig.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
tbd.&lt;br /&gt;
&lt;br /&gt;
; Wortwahl:&lt;br /&gt;
Ich stosse innerhalb der Texte immer wieder an die Worten '''Hintergrundsystem''' und '''Sicherheitskontext'''.&lt;br /&gt;
'''Hintergrundsystem:''' besseres Synonym?&lt;br /&gt;
'''Sicherheitskontext:''' nur weil es in den Texten um Sicherheit geht muss nicht an jeder Stelle immer wieder das Wort _Sicherheits_kontext eingebaut werden.&lt;br /&gt;
Bsp: &amp;quot;Erlangt ein Angreifer Kenntnis von einer solchen gültigen, aber nicht mehr genutzten SessionID, so kann er die Web-Anwendung im Sicherheitskontext des nicht abgemeldeten Benutzers weiter verwenden.&amp;quot; (G 5,WA12 Unzureichendes Session-Management von Web-Anwendungen)&lt;br /&gt;
Verbesserungsansansatz: ... so kann er die Web-Anwendung anstelle des eigentlichen Besitzers weiterhin verwenden.&lt;br /&gt;
&lt;br /&gt;
== &amp;quot;G 2.WA01 Mangelhafte Auswahl oder Konzeption von Web-Anwendungen&amp;quot; (Matthias) ==&lt;br /&gt;
&lt;br /&gt;
Nachdem ich mir diese Gefährdung durchgelesen hatte, fehlten mir ehrlich gesagt etwas die Worte. Nicht nur, dass hier fast jeder zweite Satz entweder falsch ist bzw. massive Fehler enthält oder ich diesen schlicht nicht verstehe, ist der ganze Text sprachlich wirklich enorm verbesserungsfähig. &lt;br /&gt;
&lt;br /&gt;
Na gut, ich konzentriere mich mal auf die fachlichen Punkte:&lt;br /&gt;
&lt;br /&gt;
; 1. Security Controls&lt;br /&gt;
Werden mal mit &amp;quot;Schutzmechanismen&amp;quot;, mal mit &amp;quot;Sicherheitskomponenten&amp;quot; und dann wieder als &amp;quot;Sicherheitsfunktionen&amp;quot; bezeichnet. Hier macht eine einheitliche Benennung sicherlich Sinn und ist weniger verwirrend.&lt;br /&gt;
&lt;br /&gt;
; 2. &amp;quot;Eine Web-Anwendung ist in der Regel ein verteiltes, komplexes System bestehend aus unterschiedlichen Komponenten (z. B. Webserver, Applikationsserver, Hintergrundsysteme)&amp;quot;&lt;br /&gt;
&lt;br /&gt;
Eine Webanwendung besteht sicher nicht aus einem Webserver- oder anderer infrastruktureller Komponenten, sondern ist Software welches diese nutzt.&lt;br /&gt;
&lt;br /&gt;
; 3. &amp;quot;Bei individuell entwickelten Web-Anwendungen sind im Allgemeinen die Frameworks, Komponenten und Schnittstellen im Rahmen der Konzeption auszuwählen und deren Einbindung und Absicherung zu betrachten....Im Gegensatz dazu ist bei der Konzeption von Web-Anwendungen auf Basis von Standardsoftware insbesondere auf die Auswahl der Software und die Konfiguration der Teilkomponenten zu achten&amp;quot;&lt;br /&gt;
&lt;br /&gt;
Wir unterscheiden im Rahmen von Webanwendungen eigentlich Free or Opensource Software (FOSS bzw. FLOSS), Standardsoftware und Individualsoftware voneinander. Wir unterscheiden nicht Frameworks von Standardsoftware. Frameworks können Teil von Standardsoftware sein, wie etwa bei SharePoint, SAP, etc, oder aber FOSS, wie etwa Spring. Die ganzen Absätze machen für mich daher keinen Sinn.&lt;br /&gt;
&lt;br /&gt;
; 4. &amp;quot;Eine Sicherheitsfunktion (z. B. Authentisierung, Autorisierung) wird nicht an einer Stelle umgesetzt und verwendet, sondern ist mehrfach in der Web- Anwendung realisiert. Wird diese Sicherheitsfunktion an den verschiedenen Stellen unterschiedlich umgesetzt, führt dies zu einem uneinheitlichen Sicherheitsniveau.&amp;quot;&lt;br /&gt;
&lt;br /&gt;
Natürlich ist die mehrfache Verwendung bestimmter Security Controls, beispielsweise von Zugriffskontrollen (Complete-Mediation) oder Validierung (Robustheit) erstrebenswert. Was der Autor hier wahrscheinlich meinte, war die Notwendigkeit diese zu Kapseln bzw. zu Externalisieren. Das bezieht sich im übrigen nicht nur auf die Controls selbst, sondern auch auf ihre Parametrisierung (etwa. über Konfigdateien / XACML).&lt;br /&gt;
&lt;br /&gt;
Wichtiger wäre in diesem Zusammenhang zudem die fehlende Berücksichtigung bestimmter Security Controls.&lt;br /&gt;
&lt;br /&gt;
; 5. &amp;quot;Auswahl von Web-Anwendungen auf Basis von Standardsoftware&amp;quot;&lt;br /&gt;
Was will der Satz sagen? Ich wähle Standardsoftware aus, aber doch keine Webanwendungen. Oder heißt das, ich kaufe eine existierende Anwendung ein (Webanwendung!=Indivudualsoftware)? &lt;br /&gt;
&lt;br /&gt;
; 6. &amp;quot;Das ausgewählte Produkt verfügt nicht über die ausreichende Sicherheitsfunktionalität, ... Daher müssen die notwendigen Schutzmechanismen nachträglich hinzugefügt werden, wodurch zusätzliche Aufwände entstehen.&amp;quot;&lt;br /&gt;
Das ist etwas sehr positiv formuliert. Tatsächlich können fehlende Security Controls in zugekaufter Software (insb. Standardsoftware) in der Realität häufig gar nicht hinzugefügt werden oder nur perimetrisch (z.B. per WAF oder Access Gateway).&lt;br /&gt;
&lt;br /&gt;
; 7. &amp;quot;Die Hintergrundsysteme werden unzureichend abgesichert und dadurch ist die Datenbank der Web-Anwendung aus dem Internet erreichbar.&amp;quot;&lt;br /&gt;
Gehören fehlende Netzwerksegmentierung bzw. Firewallregeln wirklich in diesen Kontext? Das ist doch eigentlich Grundschutz der Infrastruktur, oder?&lt;br /&gt;
&lt;br /&gt;
; 8. &amp;quot;Aufgrund schwacher Parameter in der Konfiguration des Frameworks zum Session-Management werden unsichere SessionIDs erzeugt.&amp;quot;&lt;br /&gt;
Was sind &amp;quot;schwache&amp;quot; Parameter?&lt;br /&gt;
&lt;br /&gt;
Welches Framework erlaubt unsichere SessionIDs durch eine &amp;quot;schwache&amp;quot; Konfiguration zu erzeugen?&lt;br /&gt;
&lt;br /&gt;
; 9. &amp;quot;Wird die Konfiguration des Web-Browsers durch einen Angreifer manipuliert, können die clientseitig umgesetzten&amp;quot;&lt;br /&gt;
&lt;br /&gt;
Manipuliert ein Angreifer die Konfguration seines Webbroswers, wenn er einen MITM-Proxy konfiguriert?&lt;br /&gt;
&lt;br /&gt;
Wie bereits bei den &amp;quot;Goldenen Regeln&amp;quot; angemerkt, gilt auch hier, das manche Security Controls auch clientseitig umgesetzt werden dürfen (etwa. zur Verhinderung von Dom-Based XSS).&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== &amp;quot;G 5.WA10 Fehler in der Web-Anwendungslogik&amp;quot; (Dennis) ==&lt;br /&gt;
; 1. &amp;quot;Damit kann aufgrund der Prüfreihenfolge ein hoher Ressourcenverbrauch provoziert werden, der für Denial-of-Service-Angriffe ausgenutzt werden kann.&amp;quot;&lt;br /&gt;
Meiner Meinung nach passt in diesem Kontext die Attacke DoS nicht ganz. Falls die nachfolgende Funktionalität wegen der langen Ausführungszeit der Filterkomponente übersprungen wird bzw. ein Fehler auftritt würde dies meiner Ansicht in die Thematik Anwendungslogik passen. Eine DoS-Attacke kann hingegen anhand jeder Funktion durchgeführt werden.&lt;br /&gt;
&lt;br /&gt;
([[User:Mrohr|Matthias]]) Jo stimmt, aber ich stimme mit der Aussage eigentlich schon ueberein, auch wenn diese zugegeben etwas ungluecklich formuliert ist. Es geht hier ja darum, rechenintensive Pruefungen/Filterung moeglichst zu vermeiden bzw. zu reduzieren. Aus diesem Grund machen wir ja auch bei der AV-Pruefung zunaechst Blacklist-Checks und erst am Ende rechenintensive statistische oder verhaltensbezogene Pruefungen.&lt;br /&gt;
&lt;br /&gt;
== &amp;quot;G 5.WA11 Umgehung clientseitig umgesetzter Sicherheitsfunktionen von Web-Anwendungen&amp;quot; (Dennis) ==&lt;br /&gt;
; 1. &amp;quot;Ein Angreifer kann diese ausnutzen, um beispielsweise unbefugt Befehle an Hintergrundsysteme der Web-Anwendung zu übermittlen (z.B. in Form von Datenbankanfragen bei einer SQL-Injection).&amp;quot;&lt;br /&gt;
Umformulierung des Inhalts der Klammer. Hatte beim ersten Lesen für mich den Anschein, als ob ein Formular genutzt werden könnte welches den Nutzer aufforder eine SQLI einzugeben. Ich denke &amp;quot;Datenbankanfrage zwecks Ausführung einer SQL-Injection&amp;quot; würde besser passen.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== G 2.WA02 Mängel bei der Entwicklung und der Erweiterung von Web-Anwendungen (Matthias) ==&lt;br /&gt;
&lt;br /&gt;
Allgemein ist de obere Teil ok, die aufgezählten &amp;quot;Auswirkungen von fehlenden Vorgaben&amp;quot; verstehe ich jedoch nicht. Wo ist etwa der Bezug von Barrierefreiheit auf die Anwendungssicherheit?&lt;br /&gt;
&lt;br /&gt;
Mein Vorschlag, um diese Punkte etwa sinnvoll umzubauen:&lt;br /&gt;
* &amp;quot;Fehlendes Vorgehensmodell&amp;quot;: Bezug auf fehlende Berücksichtigung von Sicherheit im SDLC. Statt eines SDLCs selbst sollte hier besser auf die Notwendigkeit eines Secure Development Lifecycle (SDL) hingewiesen werden&lt;br /&gt;
* &amp;quot;Fehlende Programmierrichtlinien&amp;quot; =&amp;gt; Besser wäre hier &amp;quot;Fehlende Sicherheitsrichtlinien in der Programmierung&amp;quot; also &amp;quot;Secure Coding Guidelines&amp;quot;&lt;br /&gt;
* &amp;quot;Testfälle&amp;quot; =&amp;gt; &amp;quot;Sicherheitsrelevante Testfälle&amp;quot; (z.B. Security Unit Tests). &lt;br /&gt;
* &amp;quot;Barrierefreiheit&amp;quot;: Warum nicht an dieser Stelle die Auswirkungen von Sicherheitsfunktionen auf die Bedienbarkeit, etwa anhand von CAPTCHAS erläutern?&lt;br /&gt;
&lt;br /&gt;
== G 2.WA03 Unzureichender Schutz personenbezogener Daten bei Web-Anwendungen (Matthias) ==&lt;br /&gt;
&lt;br /&gt;
Der Titel dieses Bausteines heißt &amp;quot;Schutz personenbezogener Daten&amp;quot;, die genannten Beispiele beziehen sich bis auf den letzten jedoch auf die missbräuchliche (oder zumindest problematische) Nutzung aus Sicht des Datenschutzes. &lt;br /&gt;
&lt;br /&gt;
Die Punkt 1-3 sollten daher besser entfallen und z.B. durch die Folgenden ersetzt werden:&lt;br /&gt;
* Unsichere Einbindung von sozialen Netzwerken (Bezug nehmen auf den Like-Button bei Facebook)&lt;br /&gt;
* Unsichere Einbindung von Werbeinhalten&lt;br /&gt;
* Unsichere Übertragung und Caching&lt;br /&gt;
* Unsichere Protokollierung&lt;br /&gt;
* Ungenügender Zugriffsschutz&lt;br /&gt;
* Verstoß des Minimalprinzips bzw. der Zweckgebundenheit (welche Daten werden wirklich benötigt)&lt;br /&gt;
&lt;br /&gt;
Auch wäre es ggf. zumindest einen Verweis auf das BDSG zu machen.&lt;br /&gt;
&lt;br /&gt;
== G 4.33 Unzureichende oder fehlende Authentisierung (Matthias) ==&lt;br /&gt;
&lt;br /&gt;
; 1. Erster Absatz: &amp;quot;Wenn Authentisierungsmechanismen fehlen oder zu schlecht sind&amp;quot;&lt;br /&gt;
&lt;br /&gt;
&amp;quot;schlecht&amp;quot; sollte vlt besser durch &amp;quot;unzureichend&amp;quot; ersetzt werden.&lt;br /&gt;
&lt;br /&gt;
; 2. &amp;quot;Sicherheitslücken entstehen bei... der Benutzerauthentisierung&amp;quot;&lt;br /&gt;
&lt;br /&gt;
Hier findet nur ein Bezug auf &amp;quot;Passwörter&amp;quot; statt. Der Bezug auf die fehlerhaft implementierte oder dem Schutzbedarf ungenügende Schutzmechanismen (z.B. keine 2-Faktor-Authentisierung bei hochsensiblen Daten) fehlt. Auch auf das komplette fehlen von Authentisierungs-Controls wird hier nicht  eingegangen&lt;br /&gt;
&lt;br /&gt;
; 3. &amp;quot;Sicherheitslücken entstehen bei... der Komponentenauthentisierung&amp;quot;&lt;br /&gt;
&lt;br /&gt;
Wie bei 2., wird auch hier wieder nur auf Passwörter, nicht jedoch auf das fehlen von Controls selbst eingegangen. An dieser Stelle fehlt auch ein Hinweis auf die Notwendigkeit dedizierter Benutzeraccounts.&lt;br /&gt;
&lt;br /&gt;
; 4. &amp;quot;Sicherheitslücken entstehen bei... der Wahl des Verfahrens&amp;quot;&lt;br /&gt;
&lt;br /&gt;
Statt untauglich würde ich auch hier von &amp;quot;dem Schutzbedarf der Daten nicht angemessen&amp;quot; sprechen, eigentlich gehört das für mich aber in die obigen Punkte.&lt;br /&gt;
&lt;br /&gt;
; 5. Serverseitige Authentisierung fehlt&lt;br /&gt;
&lt;br /&gt;
Auch der Server (bzw. die Anwendung selbst) kann sich fehlerhaft oder ungenügend beim Benutzer authentsieren, etwa über DNS, SSL-Zertifikate, etc.&lt;br /&gt;
&lt;br /&gt;
== G 4.WA04 Unzureichende Validierung von Ein- und Ausgabedaten bei Web-Anwendungen (Matthias) ==&lt;br /&gt;
&lt;br /&gt;
; 1. &amp;quot;Unzureichende Validierung von Eingabedaten&amp;quot;&lt;br /&gt;
&lt;br /&gt;
Die genannten Beispiele sind genau keine korrekten Beispiele für diesen Fall, sondern betreffen die Ausgabevalidierung bzw. Enkodierung. Typische Fehler der Eingabevalidierung ist eine Manipulierbarkeit der Business Logik.&lt;br /&gt;
&lt;br /&gt;
; 2. &amp;quot;Unzureichende Validierung von Ausgabedaten&amp;quot;&lt;br /&gt;
&lt;br /&gt;
Hier geht es zentral um die Verhinderung von Interpreter Injection, also serverseitig (z.B. SQL oder LDAP Injection) oder clientseitig (XSS, JSON Injection, etc.). Statt &amp;quot;können die Ausgaben Schadcode&amp;quot; enthalten würde ich hier eher davon Sprechen, dass ein solcher Interpreteraufruf manipuliert werden kann (was dann z.B. zur Einschleusung von Schadcode genutzt werden kann).&lt;br /&gt;
&lt;br /&gt;
; 3. &amp;quot;Die Suchfunktion der Web-Anwendung verwendet die Eingaben der Benutzer ungefiltert&amp;quot;&lt;br /&gt;
&lt;br /&gt;
Mit ungenügender &amp;quot;Filterung&amp;quot; hat SQL Injection nichts zu tun,  eigentlich geht es hierbei darum, dass SQL-Anfragen dynamisch mit unvalidierten Eingebedaten zusammengebaut (konkateniert) werden.&lt;br /&gt;
&lt;br /&gt;
; 4. &amp;quot;Ungefilterter HTML-Code in Kommentar-Funktion&amp;quot;&lt;br /&gt;
&lt;br /&gt;
Hier fehlt der Bezug auf persistentes XSS, das hier sicherlich zentral ist.&lt;br /&gt;
&lt;br /&gt;
== G 4.WA05 Fehlende oder mangelhafte Fehlerbehandlung durch Web-Anwendungen (Tobias, Matthias) ==&lt;br /&gt;
; Abschnitt &amp;quot;Unsichere Fehlerbehandlung&amp;quot;&lt;br /&gt;
Die G adressiert &amp;quot;Unsichere Fehlerbehandlung&amp;quot;, der Abschnitt die &amp;quot;Unsichere Fehlerbehandlung in Sicherheitskomponenten&amp;quot;. Entsprechend sollte der fettgedruckte Teil angepasst werden.&lt;br /&gt;
&lt;br /&gt;
; &amp;quot;fehlende SQL-Parameter,&amp;quot;&lt;br /&gt;
Sollte besser &amp;quot;Fehlermeldungen bei ungültigen SQL-Abfragen&amp;quot; lauten.&lt;br /&gt;
&lt;br /&gt;
; &amp;quot;Auch scheinbar unkritische Informationen, wie die Meldung ob (..)&amp;quot;&lt;br /&gt;
Korrekt, allerdings nicht nachvollziehbar, wenn das Problem der Leser nicht schon bekannt ist. Daher erweitern nach &amp;quot; Rahmen von Brute-Force-Angriffen ausgenutzt werden.&amp;quot; mit &amp;quot;. Bei Brute-Force-Angriffen wäre in diesem Fall klar, dass der Benutzername gültig ist.&amp;quot;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[User:Mrohr|Matthias]]): Stimme dem Obigen auch zu, ausserdem:&lt;br /&gt;
&lt;br /&gt;
; Sprachlich: &amp;quot;kann dies unvorhersehbare Auswirkungen haben und den Betrieb der Web-Anwendung bis zur Unerreichbarkeit einschränken.&amp;quot;&lt;br /&gt;
&lt;br /&gt;
&amp;quot;Unerreichbarkeit&amp;quot; ist etas merkwuerdig ausgedrueckt, besser ware hier von der &amp;quot;Verfuegbarkeit&amp;quot; zu sprechen. Im Uebrigen fehlt vollstaendig der Bezug auf die Verfuegbarkeit als Primaeres Schutzziel der Informationssicherheit.&lt;br /&gt;
&lt;br /&gt;
; &amp;quot;Clientseitige Fehlerbehandlung&amp;quot;&lt;br /&gt;
Das stimmt soweit, das generelle Problem ist jedoch genereller, naehmlich die clientseitige Abbildung sicherheitsrelaventer Logik (in diesem Fall die Fehlerbehandlung)&lt;br /&gt;
&lt;br /&gt;
== G 4.WA06 Unzureichende Nachvollziehbarkeit von sicherheitsrelevanten Ereignissen bei Web-Anwendungen (Matthias) ==&lt;br /&gt;
&lt;br /&gt;
; 1. Erster Absatz: &amp;quot;Die Behebung einer Schwachstelle ist dann nicht oder nur unter erschwerten Bedingungen möglich.&amp;quot;&lt;br /&gt;
&lt;br /&gt;
Hier würde ich ergänzen: &amp;quot;...und Angriffe auf die Anwendungen können ggf. nicht erkannt oder nachvollzogen werden&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
; 2. &amp;quot;Beispiele&amp;quot;: Kommulierbarkeit&lt;br /&gt;
&lt;br /&gt;
Hier fehlt auch ein Bezug auf die Kommulierbarkeit von SIcherheitsereignissen, dass diese also auch von solchen anderer Systeme in Verbindung gesetzt werden können&lt;br /&gt;
&lt;br /&gt;
; 3. &amp;quot;Beispiele&amp;quot;: Gerichtsverwertbarkeit&lt;br /&gt;
&lt;br /&gt;
Auch die Möglichkeit zur Gerichtsverwertbarkeit (etwa durch eindeutigen Zeitstempel) und manipulationssicherer Speicherung, würde ich an dieser Stelle unbedingt erwähnen.&lt;br /&gt;
&lt;br /&gt;
== G 4.WA07 Offenlegung von Informationen bei Web-Anwendungen (Matthias) ==&lt;br /&gt;
&lt;br /&gt;
; 1. Titel&lt;br /&gt;
&lt;br /&gt;
Hier würde ggf. &amp;quot;Offenlegung vertraulicher Informationen&amp;quot; sicher besser passen als &amp;quot;Offenlegung von Informationen&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
; 2. Beispiellink&lt;br /&gt;
&lt;br /&gt;
Ein Beispiellink (mit und ohne Token) würde sicher die Verständlichkeit dieser Schwachstelle verbessern.&lt;br /&gt;
&lt;br /&gt;
; 3. Erster Absatz: &amp;quot;Wenn demzufolge Informationen unnötig offengelegt werden, steigt die Wahrscheinlichkeit eines erfolgreichen Angriffs.&amp;quot;&lt;br /&gt;
&lt;br /&gt;
Interne Informationen auszublenden ist eine Härtungsmaßnahme, deren Anzeige erhöht aber nicht zwangsläufig die Wahrscheinlichkeit eines erfolgreichen Angriffs. Ich würde diesen Satz weglassen.&lt;br /&gt;
&lt;br /&gt;
 ; 4. Fehlende Punkte&lt;br /&gt;
&lt;br /&gt;
* Ein Hinweis auf HTTP Header wäre hier sicher erwähnenswert.&lt;br /&gt;
* Weiterhin bzgl. der Anzeige von Traces und ein Verweis auf den Entsprechenden Baustein zur Fehlerbehandlung&lt;br /&gt;
&lt;br /&gt;
== G 5.WA14 Cross-Site Request Forgery (CSRF, XSRF) (Matthias) ==&lt;br /&gt;
&lt;br /&gt;
; 1. Erster Absatz: &amp;quot;Können Funktionen einer Web-Anwendung ohne weitere Überprüfung der Authentizität des HTTP-Requests (z.B. durch Tokens in versteckten Formularfeldern) genutzt werden&amp;quot;&lt;br /&gt;
&lt;br /&gt;
Statt &amp;quot;Funktionen&amp;quot; würde ich besser von &amp;quot;schreibenden Aktionen&amp;quot; sprechen, dann macht der Satz mehr Sinn.&lt;br /&gt;
&lt;br /&gt;
; 2. Dritter Absatz: &amp;quot;Im Gegensatz zu XSS (siehe ...￼ ) ist das Angriffsziel nicht die Information auf dem Client (z. B. in Cookies),&amp;quot;&lt;br /&gt;
&lt;br /&gt;
Dieser (Halb-)Satz macht keinen Sinn, auch weil es bei XSS nicht nur im Informationen auf dem Cient geht. Vorschlag: &amp;quot;ist das Angriffsziel nicht die Ausführung von Skriptcode, sondern von unbefugten, schreibenden Aktionen im Kontext des angemeldeten Benutzers.&amp;quot;&lt;br /&gt;
&lt;br /&gt;
; 3. Session Riding&lt;br /&gt;
&lt;br /&gt;
Session Riding ist quasi nur ein anderer Begriff für CSRF. Die einzige Form von CSRF die mir bekannt ist, sind Angriffe mit Standard-Passwörtern auf HTTP-Basic-Auth geschützten Ressourcen.&lt;br /&gt;
&lt;br /&gt;
Im Grunde ist Session Riding aber nur ein Synonym für CSRF. Der Absatz ist daher auch nur eine Wiederholung der obigen Beschreibung.&lt;br /&gt;
&lt;br /&gt;
; 4. Zum Beispiel: &amp;quot;Durch einen präparierten Link auf einer Webseite wird die Änderung des Zugangspasswortes des Routers eingeleitet.&amp;quot;&lt;br /&gt;
&lt;br /&gt;
Etwas ungüngstig ausgedrückt. Besser wäre: &amp;quot;wird eine Anfrage zur Änderung des Zugangspasswortes an den Router gesendet. Hierbei sendet der Browser automatisch den Session Cookie mit, worüber die Webanwendung die Authentizität der Anfrage verifiziert und die Änderung durchführt.&amp;quot;&lt;br /&gt;
&lt;br /&gt;
== G 5.WA18 Clickjacking (Matthias) ==&lt;br /&gt;
&lt;br /&gt;
Hier stellt sich mir nur die allgemeine Frage, ob Clickjacking, bzw. der Schutz davor tatsächlich einem Grundschutz zuzurechnen ist. Persönlich würde ich dies nicht tun.&lt;br /&gt;
&lt;br /&gt;
== M 2.WA02 Dokumentation der Architektur von Web-Anwendungen (Matthias) ==&lt;br /&gt;
&lt;br /&gt;
; Verantwortlich für die Umsetzung&lt;br /&gt;
Hier wäre auch die Nennung des &amp;quot;Architekten&amp;quot; sinnvoll&lt;br /&gt;
 &lt;br /&gt;
; Fehlende Bestandteile der Dokumentation:&lt;br /&gt;
* Schutzbedarf des Systems sowie der verarbeiteten Daten&lt;br /&gt;
* Schützenswerte Daten und Funktionen (Assets)&lt;br /&gt;
* Betriebliche Anforderungen an die Sicherheit bzw. eingesetzte Plattform&lt;br /&gt;
* Dokumentierte Konfigurationseinstellungen &lt;br /&gt;
* BIA (RTO, RPO)&lt;br /&gt;
* Schnittstellen&lt;br /&gt;
* Trust Boundaries&lt;br /&gt;
* Akteure (bzw. Trust Level)&lt;br /&gt;
* Sicherheitsannahmen&lt;br /&gt;
* Geltende Compliance-Anforderungen (BDSG, PCI DSS, etc.)&lt;br /&gt;
&lt;br /&gt;
; Benutzermanagement&lt;br /&gt;
&lt;br /&gt;
Wenn damit das Identity Management gemeint ist, gehört das Dokumentiert, ist aber keine Sicherheitsfunktion. Oder ist hiermit das Rollen- und Berechtigungskonzept gemeint? Grenzt sich aus meiner Sicht schwer mit dem Thema Authentisierung ab. &lt;br /&gt;
&lt;br /&gt;
; Prüffragen&lt;br /&gt;
&lt;br /&gt;
Hier fehlt etwas in Bezug auf Sicherheitsanforderungen. Beispiel: &amp;quot;Werden Sicherheitsanforderungen an den Betrieb während der Entwicklung abgestimmt und dokumentiert&amp;quot;&lt;br /&gt;
&lt;br /&gt;
== M 2.WA12 Entwicklung und Erweiterung von Anwendungen (Markus) ==&lt;br /&gt;
; &amp;quot;Es sollte darauf geachtet werden, dass Sicherheitsanforderungen&lt;br /&gt;
vollständig durch Sicherheitsmechanismen erfüllt und zur Erstellung von&lt;br /&gt;
Testfällen festgehalten werden.&amp;quot; --&amp;gt; Bessere Formulierung würde aussagen, dass die Sicherheitsanforderungen durch Testfälle verifiziert werden.&lt;br /&gt;
&amp;quot;(z. B. durch Kommentare im&lt;br /&gt;
Quelltext). Somit ist der Quelltext zu einem&amp;quot; --&amp;gt; Das ist kein empfehlenswerter Programmierstiel! Raus mit diesem Kommentar&lt;br /&gt;
;&amp;quot;Zum Schutz vor dem Verlust bereits entwickelter und verworfener&lt;br /&gt;
Lösungen sowie zu Dokumentationszwecken sollte die Historie der&lt;br /&gt;
Änderungen festgehalten werden (z. B. durch ein Revisionssystem).&amp;quot; --&amp;gt; Auch diesen Absatz können wir streichen - Kein professioneller Programmierer arbeitet ohne Versionierugssystem.&lt;br /&gt;
;&amp;quot;Bei Web-Anwendung sollten die Webseiten auf Konformität zu dem&lt;br /&gt;
verwendeten Standard (z. B. HTML-Standard) getestet werden. Dadurch&lt;br /&gt;
können unvorgesehene Seiteneffekte aufgrund einer Fehlinterpretation&lt;br /&gt;
seitens der Browser vermieden werden.&amp;quot; --&amp;gt; Könnte man noch um &amp;quot;Die Software ist in möglichst vielen Browsern zu testen&amp;quot; erweitern.&lt;br /&gt;
;Generell geht der Autor leider nicht auf die Rollen &amp;amp; Rechte Verteilung ein. Mir fehlt der Hinweis, das es eine personelle Trennung zwischen Entwicklung, Test und Betrieb geben muss.&lt;br /&gt;
;Zum Thema Wartung / Betrieb --&amp;gt; Hier wird keine Aussage getroffen bezüglich Log_Files. Dieses Thema kann kritische Auswirkungen haben, Bsp.: logging ganzer HTTP-Requests im LogLevel=Debug.&lt;br /&gt;
; &amp;quot;Produktspezifische Sicherheitsfunkionalität&amp;quot; - Dieser Absatz ist gefährlich - der Angreifer ist nicht zur Verwendung dies Zielbrowsers gezwungen. Deshalb können Browser-spez. Sicherheitsfunktionen nur als Add-ON gewertet werden.&lt;br /&gt;
; &amp;quot;Festlegung der Entwicklungsumgebung&amp;quot; - Dieser Absatz geht nicht auf die zu verwendenden Testdaten ein. Der Hinweis, dass Live-Daten / Kundendaten nichts in Test- &amp;amp; Entwicklungsumgebungen zu suchen haben fehlt!!!&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== M 2.WA24 Web-Tracking (Matthias) ==&lt;br /&gt;
&lt;br /&gt;
; Letzter Absatz: &amp;quot;Falls eine Auswertung von Nutzerdaten, insbesondere personenbezogener Daten, .. &amp;quot;&lt;br /&gt;
&lt;br /&gt;
Hier sollte denke ich besser von personenbeziehbaren Daten gesprochen Werten. Dies betrifft etwa die Zuordnung von Surfverhalten zu einer bestimmten Person. Dies sollte stets nach den Prinzipien Datensparsamkeit und Datenvermeidung, Erforderlichkeit, sowie Zweckbindung erfolgen. Ist Webtracking nicht personenbeziehbar ist dies kein Thema für den Datenschutz.&lt;br /&gt;
&lt;br /&gt;
== M 4.WA04 Authentisierung bei Web- Anwendungen (Matthias) ==&lt;br /&gt;
&lt;br /&gt;
: Verantwortlich fuer Umsetzung &lt;br /&gt;
sollte in erster Linie beim Architekturen und in zweiter beim Entwickler liegen&lt;br /&gt;
; Vermischung von Authentisierung und Session Management &lt;br /&gt;
&lt;br /&gt;
Bei diesem Baustein findet eine ziemlich große Vermischung von Anforderung an die Authentisierung und das erst in &amp;quot;M 4.WA06 Session-Management bei Web- Anwendungen&amp;quot; behandelte Session Management statt (Beispiel: &amp;quot;Remember-Me-Funktion&amp;quot;). Beide Themen sollten sinnvollerweise getrennt voneinander zu betrachten und aufeinander zu beziehen.&lt;br /&gt;
&lt;br /&gt;
; Verwendung von Frameworks&lt;br /&gt;
&lt;br /&gt;
Die Anforderung ist schon ein wenig eingeschränkt. Besser passt hier denke ich die &amp;quot;Abbildung der Authentisierung über Standardkomponenten (Bibliotheken oder Frameworks)&amp;quot;. &lt;br /&gt;
&lt;br /&gt;
; Remember-Me-Funktion&lt;br /&gt;
&lt;br /&gt;
Siehe oben, gehört zum Session Management. Das ließt sich im übrigen so, als ob eine Webanwendung Credentials auf dem Client abhängt. &lt;br /&gt;
&lt;br /&gt;
; Grenzwerte für gescheiterte Anmeldeversuche&lt;br /&gt;
&lt;br /&gt;
Diese Empfehlung ist allgemein falsch, da sie sehr von der betrachteten Anwendung abhängt. Besser wäre hier allgemein von Mechanismen zur Verhinderung von automatisierten Angriffen zu sprechen (Anti-Automatisierung). &lt;br /&gt;
&lt;br /&gt;
Etwa umsetzbar durch&lt;br /&gt;
* Sperrung nach x Anmeldeversuchen&lt;br /&gt;
* Throttling&lt;br /&gt;
* Captchas&lt;br /&gt;
* Sicherheitsfragen&lt;br /&gt;
&lt;br /&gt;
Das allgemeine Sperren kann leicht für das gezielte Aussperren von Benutzern (User Lockout) verwendet werden. Was etwa bei Trading-Anwendungen nicht funktioniert.&lt;br /&gt;
&lt;br /&gt;
; Automatisiertes Zurücksetzen von Authentisierungsdaten&lt;br /&gt;
&lt;br /&gt;
Würde ich besser als &amp;quot;Passwort-Reset&amp;quot; bezeichnen.&lt;br /&gt;
&lt;br /&gt;
Weiterhin fehlt hier der Hinweis, dass statt ein automatisiertes Zurücksetzen, ein Mechanismus zu empfehlen ist, bei dem über ein hinterlegtes Sicherheitsmerkmal (Handy-Nummer oder E-Mail-Adresse) vom Benutzer zunächst eine Verifikation durchgeführt wird. Beispielsweise durch einen erhaltenen Link. Erst dann darf eine Änderung des Passwortes durch den Benutzer erfolgen.&lt;br /&gt;
&lt;br /&gt;
; Registrierung nicht behandelt&lt;br /&gt;
&lt;br /&gt;
Es existiert hier kein Punkt, der die sichere Implementierung von Benutzerregistrierungen behandelt.&lt;br /&gt;
&lt;br /&gt;
; Verweis auf Externalisierung fehlt.&lt;br /&gt;
&lt;br /&gt;
Statt die Authentisierung selbst durchzuführen kann eine Anwendung hierzu auf eine externe Komponente (Beispiel: SiteMinder oder Kerberos) zurückgreifen.&lt;br /&gt;
&lt;br /&gt;
; Verweis auf Behandlung von Credentials fehlt&lt;br /&gt;
&lt;br /&gt;
Auch wenn das  in &amp;quot;M 4.WA15 Schutz vertraulicher Daten bei Web- Anwendungen&amp;quot; ausführlich behandelt wird, sollte in diesem Baustein bereits auf den angemessenen Schutz von Authentisierungsdaten bei Übertragung und Speicherung hingewiesen werden.&lt;br /&gt;
&lt;br /&gt;
== M 4.WA05Umfassende Ein- und Ausgabevalidierung bei Web-Anwedungen (Markus) ==&lt;br /&gt;
; &amp;quot;Ablehnung der Daten im&lt;br /&gt;
Fehlerfall&amp;quot; --&amp;gt; Hier könnte man noch auf Tar-Pits eingehen - nur ein Vorschlag.&lt;br /&gt;
&lt;br /&gt;
== M 4.WA06Session-Management bei Web-Anwendungen (Markus, Matthias) ==&lt;br /&gt;
; &amp;quot;Übertragung der SessionID mittels GETRequest&amp;quot; --&amp;gt; Hier fehlt der Hinweis, dass die Lebensdauer dieser SessionIds kurz/kürzer sein muss, als im Falle der Speicherung im Cookie.&lt;br /&gt;
&lt;br /&gt;
([[User:Mrohr|Matthias]]) Die Anmerkung verstehe ich ehrlich gesagt ueberhaupt nicht, zumal das SM haeufig transparent zwischen Cookies und URL Rewriting wechselt. Wozu soll das gut sein? Wie soll das geschehen? Idealerweise sollte die Session ID niemals in die URL geschrieben werden, das sollte eigentlich genuegen.&lt;br /&gt;
&lt;br /&gt;
; &amp;quot;Verschlüsselte Übertragung von SessionIDs&amp;quot; --&amp;gt; Hier fehlt der Hinweis auf den Beast-Exploit. TLS Version &amp;gt; 1.0 verwenden!&lt;br /&gt;
&lt;br /&gt;
([[User:Mrohr|Matthias]]) Solange hier nicht auf eine explizite TLS Version eingegangen wird, sollte meiner grossen Ueberzeugung nach hier auch auf keine Exploits etc. eingagen werden, das gehoert an andere Stelle.&lt;br /&gt;
&lt;br /&gt;
; ([[User:Mrohr|Matthias]]) Weiterhin:&lt;br /&gt;
&lt;br /&gt;
 Es dürfen keine extern bekannten oder erratbaren Daten (z. B. IP-Adresse, Uhrzeit) in die Berechnung der SessionID einfließen.&lt;br /&gt;
&lt;br /&gt;
Die Aussage finde ich etwas problematisch, wichtiger ist, dass die Entropie ausreichend hoch ist. Haeufig werden etwa IPs von Load Balancern in die Session ID hineingeschrieben.&lt;br /&gt;
&lt;br /&gt;
 - Domain (z. B. webapp.domain.tld),&lt;br /&gt;
 - Path (z. B. /webapp/),&lt;br /&gt;
 - Secure und&lt;br /&gt;
 - HttpOnly.Beschränkte Sitzungsdauer&lt;br /&gt;
&lt;br /&gt;
Das sieht so aus, als ob es empfehlenswert ist, das Domain-Tag zu verwenden, das ist es sicherlich nicht. Was macht hier der Hinweis &amp;quot;Beschraenke Sizuungsdauer&amp;quot;?&lt;br /&gt;
&lt;br /&gt;
== M 4.WA07Fehlerbehandlung durch Web-Anwendungen (Markus) ==&lt;br /&gt;
; Konsistenter / Inkonsistener Zustand einer Webanwendung und der daraus resultierende Datenverlust: Hier fehlen mir die Punkte: DOS, Priv.Escalation, CodeExecution.&lt;br /&gt;
([[User:Mrohr|Matthias]]) Vorschlag &amp;quot;und somit der Schutz der Daten&amp;quot; aendern in &amp;quot;und somit ETWA der Schutz der Daten&amp;quot; korrigieren&lt;br /&gt;
&lt;br /&gt;
; Vermeidung vertraulicher Informationen in Fehlermeldungen --&amp;gt; Fehlermeldungen sollten ebenfalls eine Systeminformationen preisgeben (Softwareversion, Patchlevel, etc.)&lt;br /&gt;
([[User:Mrohr|Matthias]]) Ich glaube hier ist es wichtig zu unterscheiden, wo die Fehlermeldung ausgegeben bzw. wem diese angezeigt wird. Das wird in diesem Modul garnicht so recht unterscheiden. Der Autor meint glaube ich, wie Fehlermeldungen durch die Webanwendung angezeigt werden. In dem Fall hat er recht. Du meinst glaube ich eher, wie Fehlermeldungen protokolliert werden. In dem Fall hast du natuerlich auch recht. Das in dem Text verwendete Wort &amp;quot;ausgeben&amp;quot; ist nicht unbedingt eindeutig und sollte genauer spezifiziert werden.&lt;br /&gt;
&lt;br /&gt;
; Abbruch des Vorgangs nach Auftreten eines Fehlers --&amp;gt; TarPits scheinen dem Autor umbekannt zu sein :)&lt;br /&gt;
([[User:Mrohr|Matthias]]) Stimmt, wobei sich diese ja auch nur auf einen sehr bestimmten Fehlertypen beziehen. Generell laesst sich so etwas unterscheiden, wenn man Fehler-Domains erstellt. Beispiel: Technisch-Unerwartet = Abbruch, Technisch-Erwartet = Fehlermeldug/Tear Pit, etc.&lt;br /&gt;
&lt;br /&gt;
; &amp;quot;Werden Fehler möglichst von der gleichen Komponente behandelt, in der&lt;br /&gt;
der Fehler aufgetreten ist?&amp;quot; --&amp;gt; Das &amp;quot;möglichst&amp;quot; sollten wir streichen.&lt;br /&gt;
([[User:Mrohr|Matthias]]) Hm, der Aussage kann ich nicht ganz zustimmen, bzw. es haengt von dem Begriff &amp;quot;Komponente&amp;quot; ab. Eine Anwendungskomponente kann serwohl bewusst bestimmte Exceptions werfen, die von der einbindenden Komponente behandelt werden muessen.&lt;br /&gt;
&lt;br /&gt;
== M 4.WA08Schutz vor automatisierter Nutzung von Web-Anwendungen (Markus) ==&lt;br /&gt;
; &amp;quot;Brute-Force-&lt;br /&gt;
Angriffe (z. B. Erraten von Zugangsdaten) und Enumeration-Angriffe (z. B.&lt;br /&gt;
automatisiertes Ermitteln von gültigen Login-Namen)&amp;quot; -- die Beispiele sind identisch - besser Beispiele suchen, z.b. URL-Enumeration&lt;br /&gt;
&lt;br /&gt;
([[User:Mrohr|Matthias]]) Das sehe ich anders. Brute-Forcing bezieht auf Passwoerter und Enumeration auf Benutzernamen, etwa durchs hochzaehlen. Auch wenn ich zustimmen muss, dass die nicht ganz gluecklich gewaehlt wurden. Stann &amp;quot;Erraten von Zugangsdaten&amp;quot; wuerde ich besser von &amp;quot;Erraten von Passwoertern&amp;quot; sprechen. Oder wie gesagt gleich auch auf andere Beispiele (etwa Object ID Enumeration) beziehen.&lt;br /&gt;
&lt;br /&gt;
== M 4.WA11Sichere Konfiguration von Web-Anwendungen (Markus) ==&lt;br /&gt;
; &amp;quot;Sicherer Umgang mit TLS/SSL&amp;quot; -- Hier fehlt der Hinweis, dass TLS-1.0 gebrochen ist&lt;br /&gt;
; &amp;quot;Zeichenkodierungskonfiguration&amp;quot; -- Ein Whitelisting abhängig von der Encodierung wäre ein weiterer Vorschlag&lt;br /&gt;
; &amp;quot;Restriktive Dateisystemberechtigungen&amp;quot; -- auch wenn es ein klassiker ist - der AS sollte ebenfalls mit von einem eingeschränkten Nutzer gestartet werden und nicht als root&lt;br /&gt;
; Administration Consolen:zur Ergänzen: Wenn diese nicht benötigit, sollten derartige Applikationen nicht deployed werden, unabhängig von möglichen Zugangsbeschränkungen.&lt;br /&gt;
&lt;br /&gt;
([[User:Mrohr|Matthias]]) Sorry, meiner Meinung nach hat die Bewertung von Kryptoverfahren hier abslut nichts zu suchen.Stattdessen sollte hier auf den entsprechenden [https://www.bsi.bund.de/ContentBSI/Publikationen/TechnischeRichtlinien/tr02102/index_htm.html Empfehlung des BSI] verwiesen werden, auch wenn dieses Dokument derzeit noch etwas outdated zu sein scheint.&lt;br /&gt;
&lt;br /&gt;
== M 4.WA13Kontrolliertes Einbinden von Daten und Inhalten bei Web-Anwendungen (Markus) ==&lt;br /&gt;
; Datei-Upload: Bei einem Upload werden Dateien durchaus in TEMP-Verzeichnissen gesammelt und danach weiterverarbeitet. Diese TEMP-Verzeichnisse sind im Rahmen einer Sicherheitsanalyse zu betrachten -&amp;gt; Möglicher (unbefugter) Zugriff auf weitere Uploads&lt;br /&gt;
; Upload komprimierter Dateien / großer Dateien birgt die Gefahr von DOS Angriffen&lt;br /&gt;
; Upload von Dateien kann bei weiterem Parsing zu Speicherengpässen führen --&amp;gt; DOS-Angriffe auf Thread-Local etc.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== M 4.WA14Restriktive Herausgabe sicherheitsrelevanter Informationen bei Web-Anwendungen (Markus, Matthias) ==&lt;br /&gt;
OK - Keine Anmerkungen von mir.&lt;br /&gt;
&lt;br /&gt;
([[User:Mrohr|Matthias]]) Von mir schon;)&lt;br /&gt;
&lt;br /&gt;
; ([[User:Mrohr|Matthias]]) Vermeidung von Kommentaren in ausgelieferten Webseiten&lt;br /&gt;
&lt;br /&gt;
Das ist leider total falsch, wir brauchen haeufig Komentare, aus Kompatibilitaetsgruenden. So wird etwa der JavaScript-Block haeufig auskommentiert.&lt;br /&gt;
&lt;br /&gt;
Wurde stattessen besser von sicherheitsrelevanten Kommentaren sprechen und als Massnahme generell Entwicklerkommentare ueber Sprachkonstruktre (etwa JSP) durchzufuehren.&lt;br /&gt;
&lt;br /&gt;
; ([[User:Mrohr|Matthias]]) Löschen nicht benötigter Dateien&lt;br /&gt;
&lt;br /&gt;
Hier wurde ich ggf. Dateien von Versionisierungstools (etwa Subversion) erwaehnen, das sehen wir schon recht haeufig.&lt;br /&gt;
&lt;br /&gt;
Statt Dateien einfach nur zu loeschen (was in der Praxis haeufig nicht so einfach ist) bietet es sich zudem an, den Zugriff auf bestimmte Dateien oder Dateitypen generell zu sperren, etwa mittels ACL im Apache.&lt;br /&gt;
&lt;br /&gt;
; ([[User:Mrohr|Matthias]]) Gibt die Web-Anwendung ausschließlich neutrale Fehlermeldungen aus und sind diese im Quelltext identisch? {E: C}&lt;br /&gt;
&lt;br /&gt;
Persoenlich verstehe ich das nicht. Wieseo neutrale Fehlermeldung? Das macht fuer mich nur beim Login Sin. Hierzu existiert in dem Text auch keinerlei Bezug. Ich wuerde das daher besser entfernen und im Rahmen der Fehlerbehandlung diskutieren. Mindestens sollte hier jedoch besser von &amp;quot;sicherheitsunbedentlichen Fehlermeldungen&amp;quot; oder so gesprochen werden.&lt;br /&gt;
&lt;br /&gt;
; ([[User:Mrohr|Matthias]]) Wird der Referrer bei Verlassen der Web-Anwendung (z. B. durch einen Link auf eine externe Seite) gefiltert?&lt;br /&gt;
&lt;br /&gt;
Diesen Punkt sehe ich als sehr Fallabhengig an. Es kann fuer seiten durchaus wuenschenswert sein, dass der Referer weitergegeben wird. Der Referer sollte natuerlich keine sensiblen Informationen enthalten, was ja an anderer Stelle (etwa Session Management) vorgegeben wird bzw. gegeben werden sollte.&lt;br /&gt;
&lt;br /&gt;
== M 4.WA15Schutz vertraulicher Daten bei Web-Anwendungen (Markus, Matthias) ==&lt;br /&gt;
; Sichere kryptographische Algorithmen:&lt;br /&gt;
 Hier fehlt mir eine Liste der aktuelle als sicher geltenden Verfahren.&lt;br /&gt;
([[User:Mrohr|Matthias]]) Am Besten Referenz auf [https://www.bsi.bund.de/ContentBSI/Publikationen/TechnischeRichtlinien/tr02102/index_htm.html https://www.bsi.bund.de/ContentBSI/Publikationen/TechnischeRichtlinien/tr02102/index_htm.html]&lt;br /&gt;
&lt;br /&gt;
; Schlüssel&lt;br /&gt;
 Das die Schlüssel bestimmten Formaten entsprechen müssen ist ok - aber das Schlüsselmanagement wird gar nicht besprochen?&lt;br /&gt;
; Schutz der Daten im Browsercache&lt;br /&gt;
 Skripte und Browserplugins können ebenfalls auf den Browsercache zugreifen - diese werden hier nicht erwähnt.&lt;br /&gt;
&lt;br /&gt;
([[User:Mrohr|Matthias]]) Weiterhin entsprechen die vorgeschlagenen HTTP Headern nicht dem Best Practice:&lt;br /&gt;
&lt;br /&gt;
 Cache-control: no-cache, no-store&lt;br /&gt;
 Pragma: no-cache&lt;br /&gt;
 Expires: -1&lt;br /&gt;
&lt;br /&gt;
([[User:Mrohr|Matthias]]) Die Empfehlung hinsichtlich des manuellen Leerens des Browsercaches sollte wenn dann nur bei Anwendungen mit sehr hohem Schutzbedarf in Erwaegung gezogen werden. Wichtiger waere da schon eher die richtigen Cache-Header zu verwenden. Solche Empfehlungen ihm Rahmen des Grundschutzes aber wirklich nichts zu suchen. &lt;br /&gt;
&lt;br /&gt;
; Maskierung von Passwörtern &lt;br /&gt;
 Dies schützt bei der Eingabe nur vor ShoulderSurfing nicht vor Skripten oder Plugins die diese an andere Server posten.&lt;br /&gt;
&lt;br /&gt;
([[User:Mrohr|Matthias]]) Das ist voellig korrekt. Aber inwieweit ist die Aussage Passwort-Felder zu verwenden fehlerhaft bzw. hier unzureichend beschrieben?&lt;br /&gt;
&lt;br /&gt;
; Sicherung von Zugangsdaten:&lt;br /&gt;
 Zugangsdaten in einer Datei abzulegen - wenn auch ausserhalb des WebRoots ist keine gute Idee.&lt;br /&gt;
([[User:Mrohr|Matthias]]) Es ist sicher nicht die schoenste Variante, es laesst sich aber nunmal in vielen Faellen nicht vermeiden. Deshalb fordert der [http://code.google.com/p/owasp-asvs/wiki/Verification_V2 ASVS] hier etwa auch nicht mehr. Fuer den hier angestreben Grundschutz sollte das meiner Meinung nach ausreichen.&lt;br /&gt;
; Schutz von Quelltexten:&lt;br /&gt;
 Hier würde ich property files mit aufnehmen. der hinweis auf web-inf/classes fehlt - warum?&lt;br /&gt;
 Bei include-befehlen sind die pfadangaben zu überdenken.&lt;br /&gt;
([[User:Mrohr|Matthias]]) Wuerde property Dateien allgemein den Konfigurationsdateien zuordnen. Der Begriff &amp;quot;Einzubindende Dateien&amp;quot; ist mir allrdings Neu&lt;br /&gt;
&lt;br /&gt;
([[User:Mrohr|Matthias]]) Weiterhin, fehlt ein genereller Bezug auf HTML 5 WebStorage, LSOs etc. Zumindest in abstrakter Form, so dass diese dadurch indirekt addresiert werden. Egal, in dem relevanten Punkt will der Autor meiner Meinung nach nur einige Beispiele nennen, das sollte keinen Anspruch auf Vollsteandigkeit haben muessen.&lt;br /&gt;
&lt;br /&gt;
; ([[User:Mrohr|Matthias]]) - Durch dieses Attribut wird die Gültigkeit des Cookies auf die Domäne der Web-Anwendung beschränkt.&lt;br /&gt;
Nein, das ist leider total falsch. Das Domain-Attribut stellt eine Aufweichung der Cookie-Gueltigkeit dar und nicht anders herum. Gewoehlich sind Cookies immer Host-Cockies und das sollte auch so bleiben. Die Empfehlung sollte entfernt werden.&lt;br /&gt;
&lt;br /&gt;
== M 4.WA16Zugriffskontrolle bei Web-Anwendungen (Markus) ==&lt;br /&gt;
; Zugriffskontrolle via Frameworks:&lt;br /&gt;
 Dieser Punkt (Frameworks) wird nur in einem Satz erwähnt. Es werden keine Bespiele gegeben - Das ist zu wenig.&lt;br /&gt;
 Es müssen alle Zugriffe geschützt werden. Eine Protokollierung aller Zugriffe mit den nötigen Informationen ist ebenfalls empfehlenswert.&lt;br /&gt;
; Datei Upload:&lt;br /&gt;
 Die Gefahr eines DOS wird hier nicht erwähnt.&lt;br /&gt;
&lt;br /&gt;
== M 4.WA19Verhinderung von Cross-Site Request Forgery (CSRF, XSRF) (Markus, Matthias) ==&lt;br /&gt;
; Verantwortliche: &lt;br /&gt;
 Entwickler und Admins!&lt;br /&gt;
([[User:Mrohr|Matthias]]) Korrekt, wobei auch in der Reihenfolge&lt;br /&gt;
&lt;br /&gt;
; Anti-CSRF-Token in hidden fields:&lt;br /&gt;
 Das ist keine gute Idee. Ich würde das streichen!&lt;br /&gt;
&lt;br /&gt;
([[User:Mrohr|Matthias]]) Watt? Anti-CSRF-Tokens in Hidden Fields sind die Standard-Massnahme. Wie denn sonst? Bitte nicht streichen!!! &lt;br /&gt;
&lt;br /&gt;
([[User:Mrohr|Matthias]]) Die Technik bei der die Session ID als Anti-CSRF-Token verwendet wird, wird als Double-Cookie Submit bezeichnet, das sollte hier referenziert werden.&lt;br /&gt;
&lt;br /&gt;
; Umgehung von Schutzmechanismen:&lt;br /&gt;
 Man in the middle hat keinen direkten Bezug zu CSRF! Das würde ich streichen.&lt;br /&gt;
([[User:Mrohr|Matthias]]) Der Hinweis ist korrekt. Wovon der Autor hier spricht ist Session Replay nicht CSRF.&lt;br /&gt;
&lt;br /&gt;
; Frameworks:&lt;br /&gt;
 Gute Idee - aber es gibt auch Features in den ApplicationServern die CSRF unterbinden - warum wird das nicht besprochen?&lt;br /&gt;
&lt;br /&gt;
([[User:Mrohr|Matthias]]) Sehe ich persoenlich nicht so, da CSRF primaer ein Applikations-Fehler ist, und auch in der Applikation und nicht im Environment (AppServer) geloest werden sollte. Auch wenn das manchmal ggf. die einzig machbare Loesung darstellt.&lt;br /&gt;
&lt;br /&gt;
([[User:Mrohr|Matthias]]) Was generell fehlt, ist ein Hinweis darauf, dass schreibende Requests generell per HTTP Post abgewickelt werden sollten, da HTTP Get keine &amp;quot;Safe Method&amp;quot;  (siehe HTTP 1.1, RFC 2616) ist.&lt;br /&gt;
&lt;br /&gt;
== M 4.WA20Sicherer Entwurf der Logik von Web-Anwendungen (Markus, Matthias) ==&lt;br /&gt;
; Rollbacks:&lt;br /&gt;
 Tritt ein Fehler auf muss die Applikation einen konsistenten Datenstand zurück lassen. Das wird hier nicht erwähnt.&lt;br /&gt;
; RaceConditions:&lt;br /&gt;
 Fehler in der Geschäftslogik können auch durch zwei gleichzeitige Sessions auf einer Webapplikation auftreten - das wird hier nicht besprochen.&lt;br /&gt;
&lt;br /&gt;
([[User:Mrohr|Matthias]]) Ehrlich gesagt kann ich nicht ganz nachvollziehen, was der Sichere Entwurf der Logik von Web-Anwendungen mit dem Verzicht auf aktive Inhalte zu tun hat. Unabhaengig davon sollte man solche unsinnigen Aussagen im Jahre 2012 nicht mehr treffen, damit macht man sicht nur laecherlich.&lt;br /&gt;
&lt;br /&gt;
Nichts desto trotz, was hier als &amp;quot;echte&amp;quot; Massnahmen erwaehnt werden sollte sind:&lt;br /&gt;
* Verhinderung von Race Conditions, aber nicht nur durch Concurrent Sessions sondern auch durch Singletons (TOCTOU)&lt;br /&gt;
* Enforcements von Workflows, etwa durch die Verwendung von State Machines oder Request Tokens (auch bekannt als Site Usage Enforcement)&lt;br /&gt;
* Fail Securely (bzw. Verweis)&lt;br /&gt;
* Serverseitige Abbildung der Anwendungslogik, zumindest wenn diese sicherheitsrelevant sit&lt;br /&gt;
&lt;br /&gt;
== M 4.WA22Verhinderung der Blockade von Ressourcen (DoS) bei Web-Anwendungen (Markus, Matthias) ==&lt;br /&gt;
; Datenspeicher:&lt;br /&gt;
 Neben dem Datenspeicher sollte auch der RAM-Verbrauch pro Thread der Applikation limitiert werden.&lt;br /&gt;
([[User:Mrohr|Matthias]]) Stimmt, ich wuerde hier sogar allgemein von Ressourcenverbrauch am Beispiel RAM und Datenspeicher, sprechen&lt;br /&gt;
&lt;br /&gt;
; Voraggregation von Daten / Caching&lt;br /&gt;
 Dieser Punkt fehlt: Stark ressourcen belastende Anfragen können auch in Lastarmen Zeiten vorberechnet werden.&lt;br /&gt;
([[User:Mrohr|Matthias]]) Stimmt, koennte noch als Anmerkung bei &amp;quot;Cachen von Anfragen&amp;quot; hinzugefuegt werden&lt;br /&gt;
&lt;br /&gt;
; ([[User:Mrohr|Matthias]]) Prueffrage: &amp;quot;Wird ein möglicher Überlauf von Protokolldaten... verhindert&amp;quot;&lt;br /&gt;
&lt;br /&gt;
Ist eine etwas eingeschrankte Sicht. Wurde hier eher von Ueberlauf von Speicherplaz zu Beispiel im Rahmen der Protokollierung sprechen&lt;br /&gt;
&lt;br /&gt;
; ([[User:Mrohr|Matthias]]) Durchfuehrung von Lasttests zur Identifikation ressourcenintensiver Operationen&lt;br /&gt;
&lt;br /&gt;
Der Hinweis waere ggf. erwahnenswert&lt;br /&gt;
&lt;br /&gt;
; ([[User:Mrohr|Matthias]]) Hinweis auf nicht-angemeldeten Bereich&lt;br /&gt;
&lt;br /&gt;
Das Risiko durch rechenintensive Operationen durch einen DoS betroffen zu sein ist natuerlich fuer gewoehlich um so groesser, wenn diese im anonymen Bereich angeboten wird. Der Hinweis ware ggf. ebenfalls hilfreich.&lt;br /&gt;
&lt;br /&gt;
== M 4.WA25Verhinderung von Clickjacking (Markus) ==&lt;br /&gt;
Ok - das passt soweit.&lt;br /&gt;
&lt;br /&gt;
([[User:Mrohr|Matthias]]) Stimmt, auch wenn ich &amp;quot;Angreifer&amp;quot; in dem Beispiel eher als &amp;quot;Webseitenbetreiber&amp;quot; beschreiebn wuerde, da er nicht wirklich aktiv einen Angriff durchfuehrt, oder? Bitte nochmal ueber meinen Hinweis aus G 5.WA18 nachdenken: Ist Clickjacking-Schutz tatsaechlich Grundschutz? Ich bin mir da selber nicht so wirklich sicher.&lt;br /&gt;
&lt;br /&gt;
== M 5.WA21Sichere Anbindung von Hintergrundsystemen an Web-Anwendungen (Markus) ==&lt;br /&gt;
; Verantwortliche:&lt;br /&gt;
 Architekten fehlen. Entwickler müssen die Views umsetzen und die Datasource entsprechend einbinden - die fehlen hier ebenfalls.&lt;br /&gt;
; DirectorySystem Beispiel:&lt;br /&gt;
 Das DirectorySystem wird in dem angegeben Beispiel zum Single Point of Failure - das wird verschwiegen.&lt;br /&gt;
; Firewalls:&lt;br /&gt;
 Das sind fachlich-blinde Systeme. Was ist mit WAFs / IDS / IPS etc.?&lt;br /&gt;
([[User:Mrohr|Matthias]]) Stimmt, das hat in diesem Baustein nichts zu suchen&lt;br /&gt;
&lt;br /&gt;
; ([[User:Mrohr|Matthias]]) Typische Hintergrundsysteme&lt;br /&gt;
Hier fehlt irgendwie &amp;quot;Middleware&amp;quot;, die ist denke ich nicht immer Legacy&lt;br /&gt;
&lt;br /&gt;
== M 5.WA23Systemarchitektur einer Web-Anwendung (Markus) ==&lt;br /&gt;
; Verantwortliche:&lt;br /&gt;
Auch hier fehlend wieder die Architekten. &lt;br /&gt;
([[User:Mrohr|Matthias]]) Stimmt, habe das Dokument mal komplett durchgesucht.Tatsaechlich wird der &amp;quot;Architekt&amp;quot; niemals genannt, das scheint also eher ein grundseatzliches Problem zu sein. Der Administrator hat hier aber nun wirklich nichts zu suchen.&lt;br /&gt;
&lt;br /&gt;
; Virtualisierung:&lt;br /&gt;
Virtualisierung bietet weitere Angriffsvektoren (z.B.: Hypervisor) die eine &amp;quot;Blech&amp;quot;Farm nicht bietet.&lt;br /&gt;
&lt;br /&gt;
([[User:Mrohr|Matthias]]) Genau, wobei auch der ganze Bereich geshareter Plattformen (z.B. By SharePoint) hier fehlt.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Hilfsmittel zur Nutzung des Bausteins B 5.XX Web-Anwendung (Matthias) ==&lt;br /&gt;
&lt;br /&gt;
Die Formel zur Berechnung der Entropie von Session IDs kann ich persoenlich nicht bewerten.&lt;br /&gt;
&lt;br /&gt;
Verwunderlich finde ich aber, dass der Autor zum Einen zwar von der Verwendung von JavaScript vollstaendig abraet, zum Anderen aber eben solches als Best-Practice-Ansatz fuer Click Jacking empfiehlt.&lt;/div&gt;</summary>
		<author><name>Mrohr</name></author>	</entry>

	<entry>
		<id>https://wiki.owasp.org/index.php?title=Talk:OWASP_Review_BSI_IT-Grundschutz_Baustein_Webanwendungen&amp;diff=130199</id>
		<title>Talk:OWASP Review BSI IT-Grundschutz Baustein Webanwendungen</title>
		<link rel="alternate" type="text/html" href="https://wiki.owasp.org/index.php?title=Talk:OWASP_Review_BSI_IT-Grundschutz_Baustein_Webanwendungen&amp;diff=130199"/>
				<updated>2012-05-21T15:10:09Z</updated>
		
		<summary type="html">&lt;p&gt;Mrohr: /* M 4.WA07Fehlerbehandlung durch Web-Anwendungen (Markus) */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Since it's about a review of a document in German, all the discussions will be done in German :-)&lt;br /&gt;
&lt;br /&gt;
Diskussionen rund um den Review des &amp;quot;IT-Grundschutzbausteins Webanwendungen&amp;quot; finden hier statt, sinnvollerweise auf Deutsch :-)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Vorschlag für Kriterien, die an unser Review angelegt werden sollten (.kai) ==&lt;br /&gt;
&lt;br /&gt;
* Der Baustein soll alle wichtigen Themen der Entwicklung sicherer&lt;br /&gt;
Webanwendungen enthalten.&lt;br /&gt;
&lt;br /&gt;
* Der Baustein soll die verschiedenen Phasen der Software-Entwicklung&lt;br /&gt;
vollständig abdecken.&lt;br /&gt;
&lt;br /&gt;
* Der Baustein soll zwischen verbindlichen, prüfbaren Vorgaben und&lt;br /&gt;
unverbindlichen Empfehlungen sprachlich sauber unterscheiden (hier&lt;br /&gt;
spielt mein Auditorenblick eine Rolle). Vor allem soll der Baustein&lt;br /&gt;
verbindliche Anforderungen auch tatsächlich stellen. Alle&lt;br /&gt;
verbindlichen Anforderungen müssen unabhängig von der jeweiligen&lt;br /&gt;
Umgebung auch umsetzbar sein, d.h. sie müssen entsprechend generisch&lt;br /&gt;
sein.&lt;br /&gt;
&lt;br /&gt;
* Die Maßnahmen sollen nur in (begründbaren) Ausnahmen zu Empfehlungen&lt;br /&gt;
von OWASP im Widerspruch stehen.&lt;br /&gt;
&lt;br /&gt;
* Die Maßnahmen sollen verständlich und anwendbar sein.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== &amp;quot;Hilfsmittel&amp;quot; (Markus) ==&lt;br /&gt;
Ich würde das Script zur Vermeidung von Clickjacking wrappen und nicht als losen Skript-block in den Text einbinden - einfach schlechter Programmierstiel diese losen Blöcke.&lt;br /&gt;
Der Zugriff auf das Body-Element mit byTagName-Array[0] ist auch nicht wirklich gut. Ich halte Zugriffe über das DOM (klassisch), bei ID bzw. XPATH für besser. &lt;br /&gt;
&lt;br /&gt;
SQL-Injection Characters:&lt;br /&gt;
die Pipe fehlt hier zur Textkonatenierung&lt;br /&gt;
+ / - haben auch eine Bedeutung bei JOINs.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== &amp;quot;Goldene Regeln&amp;quot; (Matthias) ==&lt;br /&gt;
&lt;br /&gt;
Hier meine Anmerkungen zu diesem Dokument:&lt;br /&gt;
&lt;br /&gt;
; 1. Für mich fehlende Punkte&lt;br /&gt;
* Korrektur der Ursache (Root Cause) von Schwachstellen statt  Verhinderung deren Ausnutzung&lt;br /&gt;
* Bezug auf Minimierung der Angriffsfläche und Least-Privilege-Prinzip&lt;br /&gt;
* Bezug auf Defense-in-Depth-Prinzip&lt;br /&gt;
* Verwendung von getesteten Security APIs (z.B. OWASP ESAPI) statt selbstentwickelter Funktionen&lt;br /&gt;
* Bezug auf Externalisierung von Sicherheitsfunktionen, sowie deklerative vor programmatischer Sicherheit.&lt;br /&gt;
&lt;br /&gt;
; 2. Begriff &amp;quot;Web-Anwendung&amp;quot;&lt;br /&gt;
Würde ich generell durch &amp;quot;Webanwendung&amp;quot; ersetzen.&lt;br /&gt;
&lt;br /&gt;
; 3. Einleitung (&amp;quot;Web-Anwendungen stellen Funktionalität zur Verfügung, ...&amp;quot;)&lt;br /&gt;
&lt;br /&gt;
Wozu dient dieser Satz?&lt;br /&gt;
&lt;br /&gt;
; 4. &amp;quot;Die Architektur der Web-Anwendung ist im Sicherheitskonzept zu  dokumentieren.....&amp;quot; &lt;br /&gt;
&lt;br /&gt;
Ich fände es sinnvoller, wenn hier von der &amp;quot;Sicherheitsarchitektur&amp;quot; gesprochen wird, welche etwa neben den sicherheitsrelevanten Datenflüssen, sensible Komponenten, Entry Points, Akteure architekturelle Security Controls wie Authentisierung, Kryptographie und natürlich die Trust Boundaries beinhaltet.&lt;br /&gt;
&lt;br /&gt;
; 5. &amp;quot;Bei Web-Anwendungen handelt es sich häufig um spezielle Eigenentwicklungen....&amp;quot;&lt;br /&gt;
&lt;br /&gt;
Erstens würde ich hier den geläufigen Begriff &amp;quot;Individualsoftware&amp;quot; verwenden. Zweitens würde ich statt bestimmte SDLC-Phasen vorzugeben (die Begriffe &amp;quot;Softwareverteilung&amp;quot; und &amp;quot;Integration&amp;quot; sind mir bei Webanwendungen bisher noch nicht so häufig untergekommen), besser von der Notwendigkeit sprechen, Sicherheit in allen Entwicklungsphasen zu berücksichtigen, also eines SDLs.&lt;br /&gt;
&lt;br /&gt;
; 6. &amp;quot;Alle Ein- und Ausgaben der Web-Anwendung müssen in eine normalisierte Form überführt werden....&amp;quot;&lt;br /&gt;
&lt;br /&gt;
Normalisierung ist für mich nicht gleich Kanonsierung, auch wenn beide Begriffe häufig als synonym verwendet werden.  Der Unterschied wird in der [http://owasp-esapi-java.googlecode.com/svn/trunk_doc/2.0-rc4/org/owasp/esapi/Encoder.html API-Beschreibung der ESAPI] erklärt. Die Normalisierungs-Funktion ist allerdings schon vor einiger Zeit aus der ESAPI [https://lists.owasp.org/pipermail/esapi-dev/2010-January/000266.html rausgeflogen]. Die generelle Kanonisierung von Ausgaben halte ich dazu für nicht sinnvoll.&lt;br /&gt;
&lt;br /&gt;
Zweitens, finde ich den weiteren Text zwar grundsätzlich formal korrekt, aber so allgemein, dass dieser glaube ich niemandem so richtig etwas bringt.  &lt;br /&gt;
&lt;br /&gt;
Besser fände ich hier Ein- von Ausgabevalidierung grundsätzlich voneinander abzugrenzen. Etwa was ich per Eingabevalidierung (Längenprüfung, Casting, etc. per Whitelisting) und was mit Ausgebavalidierung (Enkodierung, Escaping, Parametrisierung) machen muss und kann.&lt;br /&gt;
&lt;br /&gt;
Eingabedaten können technisch zudem auch Werte eingelesener Property-Dateien sein. Muss ich die auch validieren? Ist das dann noch Grundschutz? &lt;br /&gt;
&lt;br /&gt;
; 7. &amp;quot;Für den Zugriff auf sensitive Funktionen oder Informationen muss die Web-Anwendung eine wirksame Authentisierung und Sitzungsverwaltung unterstützen. Die Eigenschaften der Sitzungs-ID müssen so gewählt werden, dass die Sitzung ausreichend geschützt ist. ....&amp;quot;&lt;br /&gt;
&lt;br /&gt;
Besser fände ich &amp;quot;eine Authentisierung, die über eine dem Schutzbedarf der Anwendung angemessene Stärke verfügt.&amp;quot; &lt;br /&gt;
&lt;br /&gt;
Eigentlich geht es doch mehr um den Schutz der Sitzungs-ID, da diese gewöhnlich im Verlauf einer Sitzung den Client authentisiert. Oder den Schutz des Zugriffs auf eine Sitzung. &lt;br /&gt;
&lt;br /&gt;
Zudem fehlt hier meiner Meinung nach der Hinweis auf die bevorzugte Verwendung getesteter Standardkomponenten.&lt;br /&gt;
&lt;br /&gt;
; 8. &amp;quot;Die Web-Anwendung sollte die zu übermittelnden Daten schützen.&amp;quot;&lt;br /&gt;
&lt;br /&gt;
Dies würde ich nur auf sensible Daten beziehen. Zusätzlich zu HTTPS würde ich hier schreiben, dass sensible Daten generell nicht in der URL übertragen werden dürfen.&lt;br /&gt;
&lt;br /&gt;
; 9. &amp;quot;Die Preisgabe interner Informationen (z.B. Kommentare, Fehlermeldungen)&amp;quot;&lt;br /&gt;
&lt;br /&gt;
Hier würde ich eher schreiben &amp;quot;(IN Kommentaren, Fehlermeldungen, HTTP Headern, etc.)&amp;quot;&lt;br /&gt;
&lt;br /&gt;
; 10. &amp;quot;Fehler müssen so behandelt werden, ... müssen Fehler bei der Autorisierung zu einer Verweigerung beim Zugriff auf die angeforderte Ressource führen.&amp;quot;&lt;br /&gt;
&lt;br /&gt;
Sprachlich: &amp;quot;Die Webanwendung muss sich stets in einem sicheren Zustand befinden. Beispielsweise müssen Fehler bei der Autorisierung zu einer Verweigerung des Zugriffs führen (Default-Deny-Strategie).&amp;quot;&lt;br /&gt;
&lt;br /&gt;
; 11. &amp;quot;Die Logging-Funktionen der Web-Anwendung müssen aufgetretene Ereignisse derart protokollieren, dass sicherheitskritische Vorfälle nachvollzogen werden können.&amp;quot;&lt;br /&gt;
&lt;br /&gt;
Hier würde hier eher von &amp;quot;allen sicherheitsrelevanten Ereignissen&amp;quot; sprechen.&lt;br /&gt;
&lt;br /&gt;
Weiterhin sollten insbesondere beim Logging der Datenschutz berücksichtigt werden, personenbezogene Daten also nach Möglichkeit nicht oder nur anonymisiert in technischen Logdateien protokolliert werden.&lt;br /&gt;
&lt;br /&gt;
; 12. &amp;quot;Alle Sicherheitsmechanismen (z.B. Authentisierung und Zugriffskontrolle) sind serverseitig zu implementieren und können nicht durch clientseitige Mechanismen ersetzt werden.&amp;quot;&lt;br /&gt;
&lt;br /&gt;
Die Aussage ist so nicht korrekt. Darüber hatten wir bereits bei der ASVS mehrfach diskutiert. &lt;br /&gt;
&lt;br /&gt;
Überall dort wo der Client angegriffen wird, also etwa bei RIAs (Stichwort DOM-Based XSS) müssen wir Security Controls clientseitig implementieren. Es gibt mittlerweile deshalb auch eine Portierung der ESAPI auf Javascript. Überall dort wo der Server oder Hintegrundsysteme angegriffen werden, ist die Aussage aber natürlich zutreffend.&lt;br /&gt;
&lt;br /&gt;
== &amp;quot;Gefährdungen&amp;quot; (Markus, Dennis, .... &amp;lt;Dein Name&amp;gt;) ==&lt;br /&gt;
; Generell:&lt;br /&gt;
Reference auf RFCs fehlen.&lt;br /&gt;
&lt;br /&gt;
==B.5.XX Web-Anwendungen ==&lt;br /&gt;
; 1. Erster Absatz - Letzter Satz: --Wieso werden hier nur HTML/XML Doks und Oberflächen angesprochen? Was ist der Unterschied zwischen einem HTML-Dok und einer Oberfläche? Was ist mit  Flash, etc.? Was ist mit WebSockets?&lt;br /&gt;
; 2. Stichpunkt &amp;quot;Protokollierung&amp;quot;: Sicherheits relevant ist ein sehr dehnbarer Begriff - Eine bessere Formulierung könnte sein: Zur Rekonstruktion von Nutzerhandlungen nötige Ereignisse (positve &amp;amp; negative) müssen protokolliert werden . . . &lt;br /&gt;
; 3. Absatz: &amp;quot;Abgrenzung des Bausteins&amp;quot;: &amp;quot;Die spez. Sicherheitsanforderungen an Web-Services werden in diesem Baustein nicht betrachtet&amp;quot; --&amp;gt; Wie so nicht? Was ist das Backend von einer Rest / AJAX-basierenden Webanwendung denn anderes als ein Web-Service? Diesen Satz würde ich entfernen.&lt;br /&gt;
; 4.Vorsätzliche Handlungen -&amp;gt; Web-Spoofing (G.5.87) -- Missverständliche Bezeichnung / Nomenklatur&lt;br /&gt;
; 5. Seite 4 : erste Zeile &amp;quot;Umsetzung&amp;quot;: &amp;quot;dafür umzusetztende Komponenten müssen die Webanwendung schützen...&amp;quot; - Hier fehlt mir der Hinweis, dass dieser Schutz verifiziert werden muss.&lt;br /&gt;
; 6 Seite 5: &amp;quot;Umsetzung&amp;quot; - Wir haben CSRF, D(D)os und SQL-Injection aber wo ist XSS?&lt;br /&gt;
; 7 Seite 7: &amp;quot;Die Sicherheitsfunktion wird ausschließlich clientseitig...&amp;quot; --&amp;gt; Warum muss der Angreifer überhaupt einen Browser umkonfigurieren? Was ist mit Proxies, Scripts, etc.? Ich würde das reduzieren darauf, dass rein Webbrowser-basierende Schutzfunktionen einfach umgangen werden können.&lt;br /&gt;
; 8 Seite 8: Die angesprochenen Punkte hinterlassen den Eindruck nicht vollständig zu sein: Mir fehlen Punkte wie &amp;quot;Outsourcing&amp;quot;, &amp;quot;KnowHow der Entwickler&amp;quot;, Tooling, Framework-Auswahl, etc.&lt;br /&gt;
; 9 Seite 9: Eigentlich möchte der Autor hier über Datenschutz sprechen. Abgesehen von den letzten drei Zeilen geht es aber nur um &amp;quot;User tracking&amp;quot; - Wo ist der Rest der Datenschutzproblematik? Warum der Fokuss auf Tracking? Mir ist das zu einseitig.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
tbd.&lt;br /&gt;
&lt;br /&gt;
; Wortwahl:&lt;br /&gt;
Ich stosse innerhalb der Texte immer wieder an die Worten '''Hintergrundsystem''' und '''Sicherheitskontext'''.&lt;br /&gt;
'''Hintergrundsystem:''' besseres Synonym?&lt;br /&gt;
'''Sicherheitskontext:''' nur weil es in den Texten um Sicherheit geht muss nicht an jeder Stelle immer wieder das Wort _Sicherheits_kontext eingebaut werden.&lt;br /&gt;
Bsp: &amp;quot;Erlangt ein Angreifer Kenntnis von einer solchen gültigen, aber nicht mehr genutzten SessionID, so kann er die Web-Anwendung im Sicherheitskontext des nicht abgemeldeten Benutzers weiter verwenden.&amp;quot; (G 5,WA12 Unzureichendes Session-Management von Web-Anwendungen)&lt;br /&gt;
Verbesserungsansansatz: ... so kann er die Web-Anwendung anstelle des eigentlichen Besitzers weiterhin verwenden.&lt;br /&gt;
&lt;br /&gt;
== &amp;quot;G 2.WA01 Mangelhafte Auswahl oder Konzeption von Web-Anwendungen&amp;quot; (Matthias) ==&lt;br /&gt;
&lt;br /&gt;
Nachdem ich mir diese Gefährdung durchgelesen hatte, fehlten mir ehrlich gesagt etwas die Worte. Nicht nur, dass hier fast jeder zweite Satz entweder falsch ist bzw. massive Fehler enthält oder ich diesen schlicht nicht verstehe, ist der ganze Text sprachlich wirklich enorm verbesserungsfähig. &lt;br /&gt;
&lt;br /&gt;
Na gut, ich konzentriere mich mal auf die fachlichen Punkte:&lt;br /&gt;
&lt;br /&gt;
; 1. Security Controls&lt;br /&gt;
Werden mal mit &amp;quot;Schutzmechanismen&amp;quot;, mal mit &amp;quot;Sicherheitskomponenten&amp;quot; und dann wieder als &amp;quot;Sicherheitsfunktionen&amp;quot; bezeichnet. Hier macht eine einheitliche Benennung sicherlich Sinn und ist weniger verwirrend.&lt;br /&gt;
&lt;br /&gt;
; 2. &amp;quot;Eine Web-Anwendung ist in der Regel ein verteiltes, komplexes System bestehend aus unterschiedlichen Komponenten (z. B. Webserver, Applikationsserver, Hintergrundsysteme)&amp;quot;&lt;br /&gt;
&lt;br /&gt;
Eine Webanwendung besteht sicher nicht aus einem Webserver- oder anderer infrastruktureller Komponenten, sondern ist Software welches diese nutzt.&lt;br /&gt;
&lt;br /&gt;
; 3. &amp;quot;Bei individuell entwickelten Web-Anwendungen sind im Allgemeinen die Frameworks, Komponenten und Schnittstellen im Rahmen der Konzeption auszuwählen und deren Einbindung und Absicherung zu betrachten....Im Gegensatz dazu ist bei der Konzeption von Web-Anwendungen auf Basis von Standardsoftware insbesondere auf die Auswahl der Software und die Konfiguration der Teilkomponenten zu achten&amp;quot;&lt;br /&gt;
&lt;br /&gt;
Wir unterscheiden im Rahmen von Webanwendungen eigentlich Free or Opensource Software (FOSS bzw. FLOSS), Standardsoftware und Individualsoftware voneinander. Wir unterscheiden nicht Frameworks von Standardsoftware. Frameworks können Teil von Standardsoftware sein, wie etwa bei SharePoint, SAP, etc, oder aber FOSS, wie etwa Spring. Die ganzen Absätze machen für mich daher keinen Sinn.&lt;br /&gt;
&lt;br /&gt;
; 4. &amp;quot;Eine Sicherheitsfunktion (z. B. Authentisierung, Autorisierung) wird nicht an einer Stelle umgesetzt und verwendet, sondern ist mehrfach in der Web- Anwendung realisiert. Wird diese Sicherheitsfunktion an den verschiedenen Stellen unterschiedlich umgesetzt, führt dies zu einem uneinheitlichen Sicherheitsniveau.&amp;quot;&lt;br /&gt;
&lt;br /&gt;
Natürlich ist die mehrfache Verwendung bestimmter Security Controls, beispielsweise von Zugriffskontrollen (Complete-Mediation) oder Validierung (Robustheit) erstrebenswert. Was der Autor hier wahrscheinlich meinte, war die Notwendigkeit diese zu Kapseln bzw. zu Externalisieren. Das bezieht sich im übrigen nicht nur auf die Controls selbst, sondern auch auf ihre Parametrisierung (etwa. über Konfigdateien / XACML).&lt;br /&gt;
&lt;br /&gt;
Wichtiger wäre in diesem Zusammenhang zudem die fehlende Berücksichtigung bestimmter Security Controls.&lt;br /&gt;
&lt;br /&gt;
; 5. &amp;quot;Auswahl von Web-Anwendungen auf Basis von Standardsoftware&amp;quot;&lt;br /&gt;
Was will der Satz sagen? Ich wähle Standardsoftware aus, aber doch keine Webanwendungen. Oder heißt das, ich kaufe eine existierende Anwendung ein (Webanwendung!=Indivudualsoftware)? &lt;br /&gt;
&lt;br /&gt;
; 6. &amp;quot;Das ausgewählte Produkt verfügt nicht über die ausreichende Sicherheitsfunktionalität, ... Daher müssen die notwendigen Schutzmechanismen nachträglich hinzugefügt werden, wodurch zusätzliche Aufwände entstehen.&amp;quot;&lt;br /&gt;
Das ist etwas sehr positiv formuliert. Tatsächlich können fehlende Security Controls in zugekaufter Software (insb. Standardsoftware) in der Realität häufig gar nicht hinzugefügt werden oder nur perimetrisch (z.B. per WAF oder Access Gateway).&lt;br /&gt;
&lt;br /&gt;
; 7. &amp;quot;Die Hintergrundsysteme werden unzureichend abgesichert und dadurch ist die Datenbank der Web-Anwendung aus dem Internet erreichbar.&amp;quot;&lt;br /&gt;
Gehören fehlende Netzwerksegmentierung bzw. Firewallregeln wirklich in diesen Kontext? Das ist doch eigentlich Grundschutz der Infrastruktur, oder?&lt;br /&gt;
&lt;br /&gt;
; 8. &amp;quot;Aufgrund schwacher Parameter in der Konfiguration des Frameworks zum Session-Management werden unsichere SessionIDs erzeugt.&amp;quot;&lt;br /&gt;
Was sind &amp;quot;schwache&amp;quot; Parameter?&lt;br /&gt;
&lt;br /&gt;
Welches Framework erlaubt unsichere SessionIDs durch eine &amp;quot;schwache&amp;quot; Konfiguration zu erzeugen?&lt;br /&gt;
&lt;br /&gt;
; 9. &amp;quot;Wird die Konfiguration des Web-Browsers durch einen Angreifer manipuliert, können die clientseitig umgesetzten&amp;quot;&lt;br /&gt;
&lt;br /&gt;
Manipuliert ein Angreifer die Konfguration seines Webbroswers, wenn er einen MITM-Proxy konfiguriert?&lt;br /&gt;
&lt;br /&gt;
Wie bereits bei den &amp;quot;Goldenen Regeln&amp;quot; angemerkt, gilt auch hier, das manche Security Controls auch clientseitig umgesetzt werden dürfen (etwa. zur Verhinderung von Dom-Based XSS).&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== &amp;quot;G 5.WA10 Fehler in der Web-Anwendungslogik&amp;quot; (Dennis) ==&lt;br /&gt;
; 1. &amp;quot;Damit kann aufgrund der Prüfreihenfolge ein hoher Ressourcenverbrauch provoziert werden, der für Denial-of-Service-Angriffe ausgenutzt werden kann.&amp;quot;&lt;br /&gt;
Meiner Meinung nach passt in diesem Kontext die Attacke DoS nicht ganz. Falls die nachfolgende Funktionalität wegen der langen Ausführungszeit der Filterkomponente übersprungen wird bzw. ein Fehler auftritt würde dies meiner Ansicht in die Thematik Anwendungslogik passen. Eine DoS-Attacke kann hingegen anhand jeder Funktion durchgeführt werden.&lt;br /&gt;
&lt;br /&gt;
([[User:Mrohr|Matthias]]) Jo stimmt, aber ich stimme mit der Aussage eigentlich schon ueberein, auch wenn diese zugegeben etwas ungluecklich formuliert ist. Es geht hier ja darum, rechenintensive Pruefungen/Filterung moeglichst zu vermeiden bzw. zu reduzieren. Aus diesem Grund machen wir ja auch bei der AV-Pruefung zunaechst Blacklist-Checks und erst am Ende rechenintensive statistische oder verhaltensbezogene Pruefungen.&lt;br /&gt;
&lt;br /&gt;
== &amp;quot;G 5.WA11 Umgehung clientseitig umgesetzter Sicherheitsfunktionen von Web-Anwendungen&amp;quot; (Dennis) ==&lt;br /&gt;
; 1. &amp;quot;Ein Angreifer kann diese ausnutzen, um beispielsweise unbefugt Befehle an Hintergrundsysteme der Web-Anwendung zu übermittlen (z.B. in Form von Datenbankanfragen bei einer SQL-Injection).&amp;quot;&lt;br /&gt;
Umformulierung des Inhalts der Klammer. Hatte beim ersten Lesen für mich den Anschein, als ob ein Formular genutzt werden könnte welches den Nutzer aufforder eine SQLI einzugeben. Ich denke &amp;quot;Datenbankanfrage zwecks Ausführung einer SQL-Injection&amp;quot; würde besser passen.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== G 2.WA02 Mängel bei der Entwicklung und der Erweiterung von Web-Anwendungen (Matthias) ==&lt;br /&gt;
&lt;br /&gt;
Allgemein ist de obere Teil ok, die aufgezählten &amp;quot;Auswirkungen von fehlenden Vorgaben&amp;quot; verstehe ich jedoch nicht. Wo ist etwa der Bezug von Barrierefreiheit auf die Anwendungssicherheit?&lt;br /&gt;
&lt;br /&gt;
Mein Vorschlag, um diese Punkte etwa sinnvoll umzubauen:&lt;br /&gt;
* &amp;quot;Fehlendes Vorgehensmodell&amp;quot;: Bezug auf fehlende Berücksichtigung von Sicherheit im SDLC. Statt eines SDLCs selbst sollte hier besser auf die Notwendigkeit eines Secure Development Lifecycle (SDL) hingewiesen werden&lt;br /&gt;
* &amp;quot;Fehlende Programmierrichtlinien&amp;quot; =&amp;gt; Besser wäre hier &amp;quot;Fehlende Sicherheitsrichtlinien in der Programmierung&amp;quot; also &amp;quot;Secure Coding Guidelines&amp;quot;&lt;br /&gt;
* &amp;quot;Testfälle&amp;quot; =&amp;gt; &amp;quot;Sicherheitsrelevante Testfälle&amp;quot; (z.B. Security Unit Tests). &lt;br /&gt;
* &amp;quot;Barrierefreiheit&amp;quot;: Warum nicht an dieser Stelle die Auswirkungen von Sicherheitsfunktionen auf die Bedienbarkeit, etwa anhand von CAPTCHAS erläutern?&lt;br /&gt;
&lt;br /&gt;
== G 2.WA03 Unzureichender Schutz personenbezogener Daten bei Web-Anwendungen (Matthias) ==&lt;br /&gt;
&lt;br /&gt;
Der Titel dieses Bausteines heißt &amp;quot;Schutz personenbezogener Daten&amp;quot;, die genannten Beispiele beziehen sich bis auf den letzten jedoch auf die missbräuchliche (oder zumindest problematische) Nutzung aus Sicht des Datenschutzes. &lt;br /&gt;
&lt;br /&gt;
Die Punkt 1-3 sollten daher besser entfallen und z.B. durch die Folgenden ersetzt werden:&lt;br /&gt;
* Unsichere Einbindung von sozialen Netzwerken (Bezug nehmen auf den Like-Button bei Facebook)&lt;br /&gt;
* Unsichere Einbindung von Werbeinhalten&lt;br /&gt;
* Unsichere Übertragung und Caching&lt;br /&gt;
* Unsichere Protokollierung&lt;br /&gt;
* Ungenügender Zugriffsschutz&lt;br /&gt;
* Verstoß des Minimalprinzips bzw. der Zweckgebundenheit (welche Daten werden wirklich benötigt)&lt;br /&gt;
&lt;br /&gt;
Auch wäre es ggf. zumindest einen Verweis auf das BDSG zu machen.&lt;br /&gt;
&lt;br /&gt;
== G 4.33 Unzureichende oder fehlende Authentisierung (Matthias) ==&lt;br /&gt;
&lt;br /&gt;
; 1. Erster Absatz: &amp;quot;Wenn Authentisierungsmechanismen fehlen oder zu schlecht sind&amp;quot;&lt;br /&gt;
&lt;br /&gt;
&amp;quot;schlecht&amp;quot; sollte vlt besser durch &amp;quot;unzureichend&amp;quot; ersetzt werden.&lt;br /&gt;
&lt;br /&gt;
; 2. &amp;quot;Sicherheitslücken entstehen bei... der Benutzerauthentisierung&amp;quot;&lt;br /&gt;
&lt;br /&gt;
Hier findet nur ein Bezug auf &amp;quot;Passwörter&amp;quot; statt. Der Bezug auf die fehlerhaft implementierte oder dem Schutzbedarf ungenügende Schutzmechanismen (z.B. keine 2-Faktor-Authentisierung bei hochsensiblen Daten) fehlt. Auch auf das komplette fehlen von Authentisierungs-Controls wird hier nicht  eingegangen&lt;br /&gt;
&lt;br /&gt;
; 3. &amp;quot;Sicherheitslücken entstehen bei... der Komponentenauthentisierung&amp;quot;&lt;br /&gt;
&lt;br /&gt;
Wie bei 2., wird auch hier wieder nur auf Passwörter, nicht jedoch auf das fehlen von Controls selbst eingegangen. An dieser Stelle fehlt auch ein Hinweis auf die Notwendigkeit dedizierter Benutzeraccounts.&lt;br /&gt;
&lt;br /&gt;
; 4. &amp;quot;Sicherheitslücken entstehen bei... der Wahl des Verfahrens&amp;quot;&lt;br /&gt;
&lt;br /&gt;
Statt untauglich würde ich auch hier von &amp;quot;dem Schutzbedarf der Daten nicht angemessen&amp;quot; sprechen, eigentlich gehört das für mich aber in die obigen Punkte.&lt;br /&gt;
&lt;br /&gt;
; 5. Serverseitige Authentisierung fehlt&lt;br /&gt;
&lt;br /&gt;
Auch der Server (bzw. die Anwendung selbst) kann sich fehlerhaft oder ungenügend beim Benutzer authentsieren, etwa über DNS, SSL-Zertifikate, etc.&lt;br /&gt;
&lt;br /&gt;
== G 4.WA04 Unzureichende Validierung von Ein- und Ausgabedaten bei Web-Anwendungen (Matthias) ==&lt;br /&gt;
&lt;br /&gt;
; 1. &amp;quot;Unzureichende Validierung von Eingabedaten&amp;quot;&lt;br /&gt;
&lt;br /&gt;
Die genannten Beispiele sind genau keine korrekten Beispiele für diesen Fall, sondern betreffen die Ausgabevalidierung bzw. Enkodierung. Typische Fehler der Eingabevalidierung ist eine Manipulierbarkeit der Business Logik.&lt;br /&gt;
&lt;br /&gt;
; 2. &amp;quot;Unzureichende Validierung von Ausgabedaten&amp;quot;&lt;br /&gt;
&lt;br /&gt;
Hier geht es zentral um die Verhinderung von Interpreter Injection, also serverseitig (z.B. SQL oder LDAP Injection) oder clientseitig (XSS, JSON Injection, etc.). Statt &amp;quot;können die Ausgaben Schadcode&amp;quot; enthalten würde ich hier eher davon Sprechen, dass ein solcher Interpreteraufruf manipuliert werden kann (was dann z.B. zur Einschleusung von Schadcode genutzt werden kann).&lt;br /&gt;
&lt;br /&gt;
; 3. &amp;quot;Die Suchfunktion der Web-Anwendung verwendet die Eingaben der Benutzer ungefiltert&amp;quot;&lt;br /&gt;
&lt;br /&gt;
Mit ungenügender &amp;quot;Filterung&amp;quot; hat SQL Injection nichts zu tun,  eigentlich geht es hierbei darum, dass SQL-Anfragen dynamisch mit unvalidierten Eingebedaten zusammengebaut (konkateniert) werden.&lt;br /&gt;
&lt;br /&gt;
; 4. &amp;quot;Ungefilterter HTML-Code in Kommentar-Funktion&amp;quot;&lt;br /&gt;
&lt;br /&gt;
Hier fehlt der Bezug auf persistentes XSS, das hier sicherlich zentral ist.&lt;br /&gt;
&lt;br /&gt;
== G 4.WA05 Fehlende oder mangelhafte Fehlerbehandlung durch Web-Anwendungen (Tobias, Matthias) ==&lt;br /&gt;
; Abschnitt &amp;quot;Unsichere Fehlerbehandlung&amp;quot;&lt;br /&gt;
Die G adressiert &amp;quot;Unsichere Fehlerbehandlung&amp;quot;, der Abschnitt die &amp;quot;Unsichere Fehlerbehandlung in Sicherheitskomponenten&amp;quot;. Entsprechend sollte der fettgedruckte Teil angepasst werden.&lt;br /&gt;
&lt;br /&gt;
; &amp;quot;fehlende SQL-Parameter,&amp;quot;&lt;br /&gt;
Sollte besser &amp;quot;Fehlermeldungen bei ungültigen SQL-Abfragen&amp;quot; lauten.&lt;br /&gt;
&lt;br /&gt;
; &amp;quot;Auch scheinbar unkritische Informationen, wie die Meldung ob (..)&amp;quot;&lt;br /&gt;
Korrekt, allerdings nicht nachvollziehbar, wenn das Problem der Leser nicht schon bekannt ist. Daher erweitern nach &amp;quot; Rahmen von Brute-Force-Angriffen ausgenutzt werden.&amp;quot; mit &amp;quot;. Bei Brute-Force-Angriffen wäre in diesem Fall klar, dass der Benutzername gültig ist.&amp;quot;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[User:Mrohr|Matthias]]): Stimme dem Obigen auch zu, ausserdem:&lt;br /&gt;
&lt;br /&gt;
; Sprachlich: &amp;quot;kann dies unvorhersehbare Auswirkungen haben und den Betrieb der Web-Anwendung bis zur Unerreichbarkeit einschränken.&amp;quot;&lt;br /&gt;
&lt;br /&gt;
&amp;quot;Unerreichbarkeit&amp;quot; ist etas merkwuerdig ausgedrueckt, besser ware hier von der &amp;quot;Verfuegbarkeit&amp;quot; zu sprechen. Im Uebrigen fehlt vollstaendig der Bezug auf die Verfuegbarkeit als Primaeres Schutzziel der Informationssicherheit.&lt;br /&gt;
&lt;br /&gt;
; &amp;quot;Clientseitige Fehlerbehandlung&amp;quot;&lt;br /&gt;
Das stimmt soweit, das generelle Problem ist jedoch genereller, naehmlich die clientseitige Abbildung sicherheitsrelaventer Logik (in diesem Fall die Fehlerbehandlung)&lt;br /&gt;
&lt;br /&gt;
== G 4.WA06 Unzureichende Nachvollziehbarkeit von sicherheitsrelevanten Ereignissen bei Web-Anwendungen (Matthias) ==&lt;br /&gt;
&lt;br /&gt;
; 1. Erster Absatz: &amp;quot;Die Behebung einer Schwachstelle ist dann nicht oder nur unter erschwerten Bedingungen möglich.&amp;quot;&lt;br /&gt;
&lt;br /&gt;
Hier würde ich ergänzen: &amp;quot;...und Angriffe auf die Anwendungen können ggf. nicht erkannt oder nachvollzogen werden&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
; 2. &amp;quot;Beispiele&amp;quot;: Kommulierbarkeit&lt;br /&gt;
&lt;br /&gt;
Hier fehlt auch ein Bezug auf die Kommulierbarkeit von SIcherheitsereignissen, dass diese also auch von solchen anderer Systeme in Verbindung gesetzt werden können&lt;br /&gt;
&lt;br /&gt;
; 3. &amp;quot;Beispiele&amp;quot;: Gerichtsverwertbarkeit&lt;br /&gt;
&lt;br /&gt;
Auch die Möglichkeit zur Gerichtsverwertbarkeit (etwa durch eindeutigen Zeitstempel) und manipulationssicherer Speicherung, würde ich an dieser Stelle unbedingt erwähnen.&lt;br /&gt;
&lt;br /&gt;
== G 4.WA07 Offenlegung von Informationen bei Web-Anwendungen (Matthias) ==&lt;br /&gt;
&lt;br /&gt;
; 1. Titel&lt;br /&gt;
&lt;br /&gt;
Hier würde ggf. &amp;quot;Offenlegung vertraulicher Informationen&amp;quot; sicher besser passen als &amp;quot;Offenlegung von Informationen&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
; 2. Beispiellink&lt;br /&gt;
&lt;br /&gt;
Ein Beispiellink (mit und ohne Token) würde sicher die Verständlichkeit dieser Schwachstelle verbessern.&lt;br /&gt;
&lt;br /&gt;
; 3. Erster Absatz: &amp;quot;Wenn demzufolge Informationen unnötig offengelegt werden, steigt die Wahrscheinlichkeit eines erfolgreichen Angriffs.&amp;quot;&lt;br /&gt;
&lt;br /&gt;
Interne Informationen auszublenden ist eine Härtungsmaßnahme, deren Anzeige erhöht aber nicht zwangsläufig die Wahrscheinlichkeit eines erfolgreichen Angriffs. Ich würde diesen Satz weglassen.&lt;br /&gt;
&lt;br /&gt;
 ; 4. Fehlende Punkte&lt;br /&gt;
&lt;br /&gt;
* Ein Hinweis auf HTTP Header wäre hier sicher erwähnenswert.&lt;br /&gt;
* Weiterhin bzgl. der Anzeige von Traces und ein Verweis auf den Entsprechenden Baustein zur Fehlerbehandlung&lt;br /&gt;
&lt;br /&gt;
== G 5.WA14 Cross-Site Request Forgery (CSRF, XSRF) (Matthias) ==&lt;br /&gt;
&lt;br /&gt;
; 1. Erster Absatz: &amp;quot;Können Funktionen einer Web-Anwendung ohne weitere Überprüfung der Authentizität des HTTP-Requests (z.B. durch Tokens in versteckten Formularfeldern) genutzt werden&amp;quot;&lt;br /&gt;
&lt;br /&gt;
Statt &amp;quot;Funktionen&amp;quot; würde ich besser von &amp;quot;schreibenden Aktionen&amp;quot; sprechen, dann macht der Satz mehr Sinn.&lt;br /&gt;
&lt;br /&gt;
; 2. Dritter Absatz: &amp;quot;Im Gegensatz zu XSS (siehe ...￼ ) ist das Angriffsziel nicht die Information auf dem Client (z. B. in Cookies),&amp;quot;&lt;br /&gt;
&lt;br /&gt;
Dieser (Halb-)Satz macht keinen Sinn, auch weil es bei XSS nicht nur im Informationen auf dem Cient geht. Vorschlag: &amp;quot;ist das Angriffsziel nicht die Ausführung von Skriptcode, sondern von unbefugten, schreibenden Aktionen im Kontext des angemeldeten Benutzers.&amp;quot;&lt;br /&gt;
&lt;br /&gt;
; 3. Session Riding&lt;br /&gt;
&lt;br /&gt;
Session Riding ist quasi nur ein anderer Begriff für CSRF. Die einzige Form von CSRF die mir bekannt ist, sind Angriffe mit Standard-Passwörtern auf HTTP-Basic-Auth geschützten Ressourcen.&lt;br /&gt;
&lt;br /&gt;
Im Grunde ist Session Riding aber nur ein Synonym für CSRF. Der Absatz ist daher auch nur eine Wiederholung der obigen Beschreibung.&lt;br /&gt;
&lt;br /&gt;
; 4. Zum Beispiel: &amp;quot;Durch einen präparierten Link auf einer Webseite wird die Änderung des Zugangspasswortes des Routers eingeleitet.&amp;quot;&lt;br /&gt;
&lt;br /&gt;
Etwas ungüngstig ausgedrückt. Besser wäre: &amp;quot;wird eine Anfrage zur Änderung des Zugangspasswortes an den Router gesendet. Hierbei sendet der Browser automatisch den Session Cookie mit, worüber die Webanwendung die Authentizität der Anfrage verifiziert und die Änderung durchführt.&amp;quot;&lt;br /&gt;
&lt;br /&gt;
== G 5.WA18 Clickjacking (Matthias) ==&lt;br /&gt;
&lt;br /&gt;
Hier stellt sich mir nur die allgemeine Frage, ob Clickjacking, bzw. der Schutz davor tatsächlich einem Grundschutz zuzurechnen ist. Persönlich würde ich dies nicht tun.&lt;br /&gt;
&lt;br /&gt;
== M 2.WA02 Dokumentation der Architektur von Web-Anwendungen (Matthias) ==&lt;br /&gt;
&lt;br /&gt;
; Verantwortlich für die Umsetzung&lt;br /&gt;
Hier wäre auch die Nennung des &amp;quot;Architekten&amp;quot; sinnvoll&lt;br /&gt;
 &lt;br /&gt;
; Fehlende Bestandteile der Dokumentation:&lt;br /&gt;
* Schutzbedarf des Systems sowie der verarbeiteten Daten&lt;br /&gt;
* Schützenswerte Daten und Funktionen (Assets)&lt;br /&gt;
* Betriebliche Anforderungen an die Sicherheit bzw. eingesetzte Plattform&lt;br /&gt;
* Dokumentierte Konfigurationseinstellungen &lt;br /&gt;
* BIA (RTO, RPO)&lt;br /&gt;
* Schnittstellen&lt;br /&gt;
* Trust Boundaries&lt;br /&gt;
* Akteure (bzw. Trust Level)&lt;br /&gt;
* Sicherheitsannahmen&lt;br /&gt;
* Geltende Compliance-Anforderungen (BDSG, PCI DSS, etc.)&lt;br /&gt;
&lt;br /&gt;
; Benutzermanagement&lt;br /&gt;
&lt;br /&gt;
Wenn damit das Identity Management gemeint ist, gehört das Dokumentiert, ist aber keine Sicherheitsfunktion. Oder ist hiermit das Rollen- und Berechtigungskonzept gemeint? Grenzt sich aus meiner Sicht schwer mit dem Thema Authentisierung ab. &lt;br /&gt;
&lt;br /&gt;
; Prüffragen&lt;br /&gt;
&lt;br /&gt;
Hier fehlt etwas in Bezug auf Sicherheitsanforderungen. Beispiel: &amp;quot;Werden Sicherheitsanforderungen an den Betrieb während der Entwicklung abgestimmt und dokumentiert&amp;quot;&lt;br /&gt;
&lt;br /&gt;
== M 2.WA12 Entwicklung und Erweiterung von Anwendungen (Markus) ==&lt;br /&gt;
; &amp;quot;Es sollte darauf geachtet werden, dass Sicherheitsanforderungen&lt;br /&gt;
vollständig durch Sicherheitsmechanismen erfüllt und zur Erstellung von&lt;br /&gt;
Testfällen festgehalten werden.&amp;quot; --&amp;gt; Bessere Formulierung würde aussagen, dass die Sicherheitsanforderungen durch Testfälle verifiziert werden.&lt;br /&gt;
&amp;quot;(z. B. durch Kommentare im&lt;br /&gt;
Quelltext). Somit ist der Quelltext zu einem&amp;quot; --&amp;gt; Das ist kein empfehlenswerter Programmierstiel! Raus mit diesem Kommentar&lt;br /&gt;
;&amp;quot;Zum Schutz vor dem Verlust bereits entwickelter und verworfener&lt;br /&gt;
Lösungen sowie zu Dokumentationszwecken sollte die Historie der&lt;br /&gt;
Änderungen festgehalten werden (z. B. durch ein Revisionssystem).&amp;quot; --&amp;gt; Auch diesen Absatz können wir streichen - Kein professioneller Programmierer arbeitet ohne Versionierugssystem.&lt;br /&gt;
;&amp;quot;Bei Web-Anwendung sollten die Webseiten auf Konformität zu dem&lt;br /&gt;
verwendeten Standard (z. B. HTML-Standard) getestet werden. Dadurch&lt;br /&gt;
können unvorgesehene Seiteneffekte aufgrund einer Fehlinterpretation&lt;br /&gt;
seitens der Browser vermieden werden.&amp;quot; --&amp;gt; Könnte man noch um &amp;quot;Die Software ist in möglichst vielen Browsern zu testen&amp;quot; erweitern.&lt;br /&gt;
;Generell geht der Autor leider nicht auf die Rollen &amp;amp; Rechte Verteilung ein. Mir fehlt der Hinweis, das es eine personelle Trennung zwischen Entwicklung, Test und Betrieb geben muss.&lt;br /&gt;
;Zum Thema Wartung / Betrieb --&amp;gt; Hier wird keine Aussage getroffen bezüglich Log_Files. Dieses Thema kann kritische Auswirkungen haben, Bsp.: logging ganzer HTTP-Requests im LogLevel=Debug.&lt;br /&gt;
; &amp;quot;Produktspezifische Sicherheitsfunkionalität&amp;quot; - Dieser Absatz ist gefährlich - der Angreifer ist nicht zur Verwendung dies Zielbrowsers gezwungen. Deshalb können Browser-spez. Sicherheitsfunktionen nur als Add-ON gewertet werden.&lt;br /&gt;
; &amp;quot;Festlegung der Entwicklungsumgebung&amp;quot; - Dieser Absatz geht nicht auf die zu verwendenden Testdaten ein. Der Hinweis, dass Live-Daten / Kundendaten nichts in Test- &amp;amp; Entwicklungsumgebungen zu suchen haben fehlt!!!&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== M 2.WA24 Web-Tracking (Matthias) ==&lt;br /&gt;
&lt;br /&gt;
; Letzter Absatz: &amp;quot;Falls eine Auswertung von Nutzerdaten, insbesondere personenbezogener Daten, .. &amp;quot;&lt;br /&gt;
&lt;br /&gt;
Hier sollte denke ich besser von personenbeziehbaren Daten gesprochen Werten. Dies betrifft etwa die Zuordnung von Surfverhalten zu einer bestimmten Person. Dies sollte stets nach den Prinzipien Datensparsamkeit und Datenvermeidung, Erforderlichkeit, sowie Zweckbindung erfolgen. Ist Webtracking nicht personenbeziehbar ist dies kein Thema für den Datenschutz.&lt;br /&gt;
&lt;br /&gt;
== M 4.WA04 Authentisierung bei Web- Anwendungen (Matthias) ==&lt;br /&gt;
&lt;br /&gt;
: Verantwortlich fuer Umsetzung &lt;br /&gt;
sollte in erster Linie beim Architekturen und in zweiter beim Entwickler liegen&lt;br /&gt;
; Vermischung von Authentisierung und Session Management &lt;br /&gt;
&lt;br /&gt;
Bei diesem Baustein findet eine ziemlich große Vermischung von Anforderung an die Authentisierung und das erst in &amp;quot;M 4.WA06 Session-Management bei Web- Anwendungen&amp;quot; behandelte Session Management statt (Beispiel: &amp;quot;Remember-Me-Funktion&amp;quot;). Beide Themen sollten sinnvollerweise getrennt voneinander zu betrachten und aufeinander zu beziehen.&lt;br /&gt;
&lt;br /&gt;
; Verwendung von Frameworks&lt;br /&gt;
&lt;br /&gt;
Die Anforderung ist schon ein wenig eingeschränkt. Besser passt hier denke ich die &amp;quot;Abbildung der Authentisierung über Standardkomponenten (Bibliotheken oder Frameworks)&amp;quot;. &lt;br /&gt;
&lt;br /&gt;
; Remember-Me-Funktion&lt;br /&gt;
&lt;br /&gt;
Siehe oben, gehört zum Session Management. Das ließt sich im übrigen so, als ob eine Webanwendung Credentials auf dem Client abhängt. &lt;br /&gt;
&lt;br /&gt;
; Grenzwerte für gescheiterte Anmeldeversuche&lt;br /&gt;
&lt;br /&gt;
Diese Empfehlung ist allgemein falsch, da sie sehr von der betrachteten Anwendung abhängt. Besser wäre hier allgemein von Mechanismen zur Verhinderung von automatisierten Angriffen zu sprechen (Anti-Automatisierung). &lt;br /&gt;
&lt;br /&gt;
Etwa umsetzbar durch&lt;br /&gt;
* Sperrung nach x Anmeldeversuchen&lt;br /&gt;
* Throttling&lt;br /&gt;
* Captchas&lt;br /&gt;
* Sicherheitsfragen&lt;br /&gt;
&lt;br /&gt;
Das allgemeine Sperren kann leicht für das gezielte Aussperren von Benutzern (User Lockout) verwendet werden. Was etwa bei Trading-Anwendungen nicht funktioniert.&lt;br /&gt;
&lt;br /&gt;
; Automatisiertes Zurücksetzen von Authentisierungsdaten&lt;br /&gt;
&lt;br /&gt;
Würde ich besser als &amp;quot;Passwort-Reset&amp;quot; bezeichnen.&lt;br /&gt;
&lt;br /&gt;
Weiterhin fehlt hier der Hinweis, dass statt ein automatisiertes Zurücksetzen, ein Mechanismus zu empfehlen ist, bei dem über ein hinterlegtes Sicherheitsmerkmal (Handy-Nummer oder E-Mail-Adresse) vom Benutzer zunächst eine Verifikation durchgeführt wird. Beispielsweise durch einen erhaltenen Link. Erst dann darf eine Änderung des Passwortes durch den Benutzer erfolgen.&lt;br /&gt;
&lt;br /&gt;
; Registrierung nicht behandelt&lt;br /&gt;
&lt;br /&gt;
Es existiert hier kein Punkt, der die sichere Implementierung von Benutzerregistrierungen behandelt.&lt;br /&gt;
&lt;br /&gt;
; Verweis auf Externalisierung fehlt.&lt;br /&gt;
&lt;br /&gt;
Statt die Authentisierung selbst durchzuführen kann eine Anwendung hierzu auf eine externe Komponente (Beispiel: SiteMinder oder Kerberos) zurückgreifen.&lt;br /&gt;
&lt;br /&gt;
; Verweis auf Behandlung von Credentials fehlt&lt;br /&gt;
&lt;br /&gt;
Auch wenn das  in &amp;quot;M 4.WA15 Schutz vertraulicher Daten bei Web- Anwendungen&amp;quot; ausführlich behandelt wird, sollte in diesem Baustein bereits auf den angemessenen Schutz von Authentisierungsdaten bei Übertragung und Speicherung hingewiesen werden.&lt;br /&gt;
&lt;br /&gt;
== M 4.WA05Umfassende Ein- und Ausgabevalidierung bei Web-Anwedungen (Markus) ==&lt;br /&gt;
; &amp;quot;Ablehnung der Daten im&lt;br /&gt;
Fehlerfall&amp;quot; --&amp;gt; Hier könnte man noch auf Tar-Pits eingehen - nur ein Vorschlag.&lt;br /&gt;
&lt;br /&gt;
== M 4.WA06Session-Management bei Web-Anwendungen (Markus, Matthias) ==&lt;br /&gt;
; &amp;quot;Übertragung der SessionID mittels GETRequest&amp;quot; --&amp;gt; Hier fehlt der Hinweis, dass die Lebensdauer dieser SessionIds kurz/kürzer sein muss, als im Falle der Speicherung im Cookie.&lt;br /&gt;
&lt;br /&gt;
([[User:Mrohr|Matthias]]) Die Anmerkung verstehe ich ehrlich gesagt ueberhaupt nicht, zumal das SM haeufig transparent zwischen Cookies und URL Rewriting wechselt. Wozu soll das gut sein? Wie soll das geschehen? Idealerweise sollte die Session ID niemals in die URL geschrieben werden, das sollte eigentlich genuegen.&lt;br /&gt;
&lt;br /&gt;
; &amp;quot;Verschlüsselte Übertragung von SessionIDs&amp;quot; --&amp;gt; Hier fehlt der Hinweis auf den Beast-Exploit. TLS Version &amp;gt; 1.0 verwenden!&lt;br /&gt;
&lt;br /&gt;
([[User:Mrohr|Matthias]]) Solange hier nicht auf eine explizite TLS Version eingegangen wird, sollte meiner grossen Ueberzeugung nach hier auch auf keine Exploits etc. eingagen werden, das gehoert an andere Stelle.&lt;br /&gt;
&lt;br /&gt;
; ([[User:Mrohr|Matthias]]) Weiterhin:&lt;br /&gt;
&lt;br /&gt;
 Es dürfen keine extern bekannten oder erratbaren Daten (z. B. IP-Adresse, Uhrzeit) in die Berechnung der SessionID einfließen.&lt;br /&gt;
&lt;br /&gt;
Die Aussage finde ich etwas problematisch, wichtiger ist, dass die Entropie ausreichend hoch ist. Haeufig werden etwa IPs von Load Balancern in die Session ID hineingeschrieben.&lt;br /&gt;
&lt;br /&gt;
 - Domain (z. B. webapp.domain.tld),&lt;br /&gt;
 - Path (z. B. /webapp/),&lt;br /&gt;
 - Secure und&lt;br /&gt;
 - HttpOnly.Beschränkte Sitzungsdauer&lt;br /&gt;
&lt;br /&gt;
Das sieht so aus, als ob es empfehlenswert ist, das Domain-Tag zu verwenden, das ist es sicherlich nicht. Was macht hier der Hinweis &amp;quot;Beschraenke Sizuungsdauer&amp;quot;?&lt;br /&gt;
&lt;br /&gt;
== M 4.WA07Fehlerbehandlung durch Web-Anwendungen (Markus) ==&lt;br /&gt;
; Konsistenter / Inkonsistener Zustand einer Webanwendung und der daraus resultierende Datenverlust: Hier fehlen mir die Punkte: DOS, Priv.Escalation, CodeExecution.&lt;br /&gt;
([[User:Mrohr|Matthias]]) Vorschlag &amp;quot;und somit der Schutz der Daten&amp;quot; aendern in &amp;quot;und somit ETWA der Schutz der Daten&amp;quot; korrigieren&lt;br /&gt;
&lt;br /&gt;
; Vermeidung vertraulicher Informationen in Fehlermeldungen --&amp;gt; Fehlermeldungen sollten ebenfalls eine Systeminformationen preisgeben (Softwareversion, Patchlevel, etc.)&lt;br /&gt;
([[User:Mrohr|Matthias]]) Ich glaube hier ist es wichtig zu unterscheiden, wo die Fehlermeldung ausgegeben bzw. wem diese angezeigt wird. Das wird in diesem Modul garnicht so recht unterscheiden. Der Autor meint glaube ich, wie Fehlermeldungen durch die Webanwendung angezeigt werden. In dem Fall hat er recht. Du meinst glaube ich eher, wie Fehlermeldungen protokolliert werden. In dem Fall hast du natuerlich auch recht. Das in dem Text verwendete Wort &amp;quot;ausgeben&amp;quot; ist nicht unbedingt eindeutig und sollte genauer spezifiziert werden.&lt;br /&gt;
&lt;br /&gt;
; Abbruch des Vorgangs nach Auftreten eines Fehlers --&amp;gt; TarPits scheinen dem Autor umbekannt zu sein :)&lt;br /&gt;
([[User:Mrohr|Matthias]]) Stimmt, wobei sich diese ja auch nur auf einen sehr bestimmten Fehlertypen beziehen. Generell laesst sich so etwas unterscheiden, wenn man Fehler-Domains erstellt. Beispiel: Technisch-Unerwartet = Abbruch, Technisch-Erwartet = Fehlermeldug/Tear Pit, etc.&lt;br /&gt;
&lt;br /&gt;
; &amp;quot;Werden Fehler möglichst von der gleichen Komponente behandelt, in der&lt;br /&gt;
der Fehler aufgetreten ist?&amp;quot; --&amp;gt; Das &amp;quot;möglichst&amp;quot; sollten wir streichen.&lt;br /&gt;
([[User:Mrohr|Matthias]]) Hm, der Aussage kann ich nicht ganz zustimmen, bzw. es haengt von dem Begriff &amp;quot;Komponente&amp;quot; ab. Eine Anwendungskomponente kann serwohl bewusst bestimmte Exceptions werfen, die von der einbindenden Komponente behandelt werden muessen.&lt;br /&gt;
&lt;br /&gt;
== M 4.WA08Schutz vor automatisierter Nutzung von Web-Anwendungen (Markus) ==&lt;br /&gt;
; &amp;quot;Brute-Force-&lt;br /&gt;
Angriffe (z. B. Erraten von Zugangsdaten) und Enumeration-Angriffe (z. B.&lt;br /&gt;
automatisiertes Ermitteln von gültigen Login-Namen)&amp;quot; -- die Beispiele sind identisch - besser Beispiele suchen, z.b. URL-Enumeration&lt;br /&gt;
&lt;br /&gt;
([[User:Mrohr|Matthias]]) Das sehe ich anders. Brute-Forcing bezieht auf Passwoerter und Enumeration auf Benutzernamen, etwa durchs hochzaehlen. Auch wenn ich zustimmen muss, dass die nicht ganz gluecklich gewaehlt wurden. Stann &amp;quot;Erraten von Zugangsdaten&amp;quot; wuerde ich besser von &amp;quot;Erraten von Passwoertern&amp;quot; sprechen. Oder wie gesagt gleich auch auf andere Beispiele (etwa Object ID Enumeration) beziehen.&lt;br /&gt;
&lt;br /&gt;
== M 4.WA11Sichere Konfiguration von Web-Anwendungen (Markus) ==&lt;br /&gt;
; &amp;quot;Sicherer Umgang mit TLS/SSL&amp;quot; -- Hier fehlt der Hinweis, dass TLS-1.0 gebrochen ist&lt;br /&gt;
; &amp;quot;Zeichenkodierungskonfiguration&amp;quot; -- Ein Whitelisting abhängig von der Encodierung wäre ein weiterer Vorschlag&lt;br /&gt;
; &amp;quot;Restriktive Dateisystemberechtigungen&amp;quot; -- auch wenn es ein klassiker ist - der AS sollte ebenfalls mit von einem eingeschränkten Nutzer gestartet werden und nicht als root&lt;br /&gt;
; Administration Consolen:zur Ergänzen: Wenn diese nicht benötigit, sollten derartige Applikationen nicht deployed werden, unabhängig von möglichen Zugangsbeschränkungen.&lt;br /&gt;
&lt;br /&gt;
([[User:Mrohr|Matthias]]) Sorry, meiner Meinung nach hat die Bewertung von Kryptoverfahren hier abslut nichts zu suchen.Stattdessen sollte hier auf den entsprechenden [https://www.bsi.bund.de/ContentBSI/Publikationen/TechnischeRichtlinien/tr02102/index_htm.html Empfehlung des BSI] verwiesen werden, auch wenn dieses Dokument derzeit noch etwas outdated zu sein scheint.&lt;br /&gt;
&lt;br /&gt;
== M 4.WA13Kontrolliertes Einbinden von Daten und Inhalten bei Web-Anwendungen (Markus) ==&lt;br /&gt;
; Datei-Upload: Bei einem Upload werden Dateien durchaus in TEMP-Verzeichnissen gesammelt und danach weiterverarbeitet. Diese TEMP-Verzeichnisse sind im Rahmen einer Sicherheitsanalyse zu betrachten -&amp;gt; Möglicher (unbefugter) Zugriff auf weitere Uploads&lt;br /&gt;
; Upload komprimierter Dateien / großer Dateien birgt die Gefahr von DOS Angriffen&lt;br /&gt;
; Upload von Dateien kann bei weiterem Parsing zu Speicherengpässen führen --&amp;gt; DOS-Angriffe auf Thread-Local etc.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== M 4.WA14Restriktive Herausgabe sicherheitsrelevanter Informationen bei Web-Anwendungen (Markus, Matthias) ==&lt;br /&gt;
OK - Keine Anmerkungen von mir.&lt;br /&gt;
&lt;br /&gt;
([[User:Mrohr|Matthias]]) Von mir schon;)&lt;br /&gt;
&lt;br /&gt;
; ([[User:Mrohr|Matthias]]) Vermeidung von Kommentaren in ausgelieferten Webseiten&lt;br /&gt;
&lt;br /&gt;
Das ist leider total falsch, wir brauchen haeufig Komentare, aus Kompatibilitaetsgruenden. So wird etwa der JavaScript-Block haeufig auskommentiert.&lt;br /&gt;
&lt;br /&gt;
Wurde stattessen besser von sicherheitsrelevanten Kommentaren sprechen und als Massnahme generell Entwicklerkommentare ueber Sprachkonstruktre (etwa JSP) durchzufuehren.&lt;br /&gt;
&lt;br /&gt;
; ([[User:Mrohr|Matthias]]) Löschen nicht benötigter Dateien&lt;br /&gt;
&lt;br /&gt;
Hier wurde ich ggf. Dateien von Versionisierungstools (etwa Subversion) erwaehnen, das sehen wir schon recht haeufig.&lt;br /&gt;
&lt;br /&gt;
Statt Dateien einfach nur zu loeschen (was in der Praxis haeufig nicht so einfach ist) bietet es sich zudem an, den Zugriff auf bestimmte Dateien oder Dateitypen generell zu sperren, etwa mittels ACL im Apache.&lt;br /&gt;
&lt;br /&gt;
; ([[User:Mrohr|Matthias]]) Gibt die Web-Anwendung ausschließlich neutrale Fehlermeldungen aus und sind diese im Quelltext identisch? {E: C}&lt;br /&gt;
&lt;br /&gt;
Persoenlich verstehe ich das nicht. Wieseo neutrale Fehlermeldung? Das macht fuer mich nur beim Login Sin. Hierzu existiert in dem Text auch keinerlei Bezug. Ich wuerde das daher besser entfernen und im Rahmen der Fehlerbehandlung diskutieren. Mindestens sollte hier jedoch besser von &amp;quot;sicherheitsunbedentlichen Fehlermeldungen&amp;quot; oder so gesprochen werden.&lt;br /&gt;
&lt;br /&gt;
; ([[User:Mrohr|Matthias]]) Wird der Referrer bei Verlassen der Web-Anwendung (z. B. durch einen Link auf eine externe Seite) gefiltert?&lt;br /&gt;
&lt;br /&gt;
Diesen Punkt sehe ich als sehr Fallabhengig an. Es kann fuer seiten durchaus wuenschenswert sein, dass der Referer weitergegeben wird. Der Referer sollte natuerlich keine sensiblen Informationen enthalten, was ja an anderer Stelle (etwa Session Management) vorgegeben wird bzw. gegeben werden sollte.&lt;br /&gt;
&lt;br /&gt;
== M 4.WA15Schutz vertraulicher Daten bei Web-Anwendungen (Markus, Matthias) ==&lt;br /&gt;
; Sichere kryptographische Algorithmen:&lt;br /&gt;
 Hier fehlt mir eine Liste der aktuelle als sicher geltenden Verfahren.&lt;br /&gt;
([[User:Mrohr|Matthias]]) Am Besten Referenz auf [https://www.bsi.bund.de/ContentBSI/Publikationen/TechnischeRichtlinien/tr02102/index_htm.html https://www.bsi.bund.de/ContentBSI/Publikationen/TechnischeRichtlinien/tr02102/index_htm.html]&lt;br /&gt;
&lt;br /&gt;
; Schlüssel&lt;br /&gt;
 Das die Schlüssel bestimmten Formaten entsprechen müssen ist ok - aber das Schlüsselmanagement wird gar nicht besprochen?&lt;br /&gt;
; Schutz der Daten im Browsercache&lt;br /&gt;
 Skripte und Browserplugins können ebenfalls auf den Browsercache zugreifen - diese werden hier nicht erwähnt.&lt;br /&gt;
&lt;br /&gt;
([[User:Mrohr|Matthias]]) Weiterhin entsprechen die vorgeschlagenen HTTP Headern nicht dem Best Practice:&lt;br /&gt;
&lt;br /&gt;
 Cache-control: no-cache, no-store&lt;br /&gt;
 Pragma: no-cache&lt;br /&gt;
 Expires: -1&lt;br /&gt;
&lt;br /&gt;
([[User:Mrohr|Matthias]]) Die Empfehlung hinsichtlich des manuellen Leerens des Browsercaches sollte wenn dann nur bei Anwendungen mit sehr hohem Schutzbedarf in Erwaegung gezogen werden. Wichtiger waere da schon eher die richtigen Cache-Header zu verwenden. Solche Empfehlungen ihm Rahmen des Grundschutzes aber wirklich nichts zu suchen. &lt;br /&gt;
&lt;br /&gt;
; Maskierung von Passwörtern &lt;br /&gt;
 Dies schützt bei der Eingabe nur vor ShoulderSurfing nicht vor Skripten oder Plugins die diese an andere Server posten.&lt;br /&gt;
&lt;br /&gt;
([[User:Mrohr|Matthias]]) Das ist voellig korrekt. Aber inwieweit ist die Aussage Passwort-Felder zu verwenden fehlerhaft bzw. hier unzureichend beschrieben?&lt;br /&gt;
&lt;br /&gt;
; Sicherung von Zugangsdaten:&lt;br /&gt;
 Zugangsdaten in einer Datei abzulegen - wenn auch ausserhalb des WebRoots ist keine gute Idee.&lt;br /&gt;
([[User:Mrohr|Matthias]]) Es ist sicher nicht die schoenste Variante, es laesst sich aber nunmal in vielen Faellen nicht vermeiden. Deshalb fordert der [http://code.google.com/p/owasp-asvs/wiki/Verification_V2 ASVS] hier etwa auch nicht mehr. Fuer den hier angestreben Grundschutz sollte das meiner Meinung nach ausreichen.&lt;br /&gt;
; Schutz von Quelltexten:&lt;br /&gt;
 Hier würde ich property files mit aufnehmen. der hinweis auf web-inf/classes fehlt - warum?&lt;br /&gt;
 Bei include-befehlen sind die pfadangaben zu überdenken.&lt;br /&gt;
([[User:Mrohr|Matthias]]) Wuerde property Dateien allgemein den Konfigurationsdateien zuordnen. Der Begriff &amp;quot;Einzubindende Dateien&amp;quot; ist mir allrdings Neu&lt;br /&gt;
&lt;br /&gt;
([[User:Mrohr|Matthias]]) Weiterhin, fehlt ein genereller Bezug auf HTML 5 WebStorage, LSOs etc. Zumindest in abstrakter Form, so dass diese dadurch indirekt addresiert werden. Egal, in dem relevanten Punkt will der Autor meiner Meinung nach nur einige Beispiele nennen, das sollte keinen Anspruch auf Vollsteandigkeit haben muessen.&lt;br /&gt;
&lt;br /&gt;
; ([[User:Mrohr|Matthias]]) - Durch dieses Attribut wird die Gültigkeit des Cookies auf die Domäne der Web-Anwendung beschränkt.&lt;br /&gt;
Nein, das ist leider total falsch. Das Domain-Attribut stellt eine Aufweichung der Cookie-Gueltigkeit dar und nicht anders herum. Gewoehlich sind Cookies immer Host-Cockies und das sollte auch so bleiben. Die Empfehlung sollte entfernt werden.&lt;br /&gt;
&lt;br /&gt;
== M 4.WA16Zugriffskontrolle bei Web-Anwendungen (Markus) ==&lt;br /&gt;
; Zugriffskontrolle via Frameworks:&lt;br /&gt;
 Dieser Punkt (Frameworks) wird nur in einem Satz erwähnt. Es werden keine Bespiele gegeben - Das ist zu wenig.&lt;br /&gt;
 Es müssen alle Zugriffe geschützt werden. Eine Protokollierung aller Zugriffe mit den nötigen Informationen ist ebenfalls empfehlenswert.&lt;br /&gt;
; Datei Upload:&lt;br /&gt;
 Die Gefahr eines DOS wird hier nicht erwähnt.&lt;br /&gt;
&lt;br /&gt;
== M 4.WA19Verhinderung von Cross-Site Request Forgery (CSRF, XSRF) (Markus, Matthias) ==&lt;br /&gt;
; Verantwortliche: &lt;br /&gt;
 Entwickler und Admins!&lt;br /&gt;
([[User:Mrohr|Matthias]]) Korrekt, wobei auch in der Reihenfolge&lt;br /&gt;
&lt;br /&gt;
; Anti-CSRF-Token in hidden fields:&lt;br /&gt;
 Das ist keine gute Idee. Ich würde das streichen!&lt;br /&gt;
&lt;br /&gt;
([[User:Mrohr|Matthias]]) Watt? Anti-CSRF-Tokens in Hidden Fields sind die Standard-Massnahme. Wie denn sonst? Bitte nicht streichen!!! &lt;br /&gt;
&lt;br /&gt;
([[User:Mrohr|Matthias]]) Die Technik bei der die Session ID als Anti-CSRF-Token verwendet wird, wird als Double-Cookie Submit bezeichnet, das sollte hier referenziert werden.&lt;br /&gt;
&lt;br /&gt;
; Umgehung von Schutzmechanismen:&lt;br /&gt;
 Man in the middle hat keinen direkten Bezug zu CSRF! Das würde ich streichen.&lt;br /&gt;
([[User:Mrohr|Matthias]]) Der Hinweis ist korrekt. Wovon der Autor hier spricht ist Session Replay nicht CSRF.&lt;br /&gt;
&lt;br /&gt;
; Frameworks:&lt;br /&gt;
 Gute Idee - aber es gibt auch Features in den ApplicationServern die CSRF unterbinden - warum wird das nicht besprochen?&lt;br /&gt;
&lt;br /&gt;
([[User:Mrohr|Matthias]]) Sehe ich persoenlich nicht so, da CSRF primaer ein Applikations-Fehler ist, und auch in der Applikation und nicht im Environment (AppServer) geloest werden sollte. Auch wenn das manchmal ggf. die einzig machbare Loesung darstellt.&lt;br /&gt;
&lt;br /&gt;
([[User:Mrohr|Matthias]]) Was generell fehlt, ist ein Hinweis darauf, dass schreibende Requests generell per HTTP Post abgewickelt werden sollten, da HTTP Get keine &amp;quot;Safe Method&amp;quot;  (siehe HTTP 1.1, RFC 2616) ist.&lt;br /&gt;
&lt;br /&gt;
== M 4.WA20Sicherer Entwurf der Logik von Web-Anwendungen (Markus, Matthias) ==&lt;br /&gt;
; Rollbacks:&lt;br /&gt;
 Tritt ein Fehler auf muss die Applikation einen konsistenten Datenstand zurück lassen. Das wird hier nicht erwähnt.&lt;br /&gt;
; RaceConditions:&lt;br /&gt;
 Fehler in der Geschäftslogik können auch durch zwei gleichzeitige Sessions auf einer Webapplikation auftreten - das wird hier nicht besprochen.&lt;br /&gt;
&lt;br /&gt;
([[User:Mrohr|Matthias]]) Ehrlich gesagt kann ich nicht ganz nachvollziehen, was der Sichere Entwurf der Logik von Web-Anwendungen mit dem Verzicht auf aktive Inhalte zu tun hat. Unabhaengig davon sollte man solche unsinnigen Aussagen im Jahre 2012 nicht mehr treffen, damit macht man sicht nur laecherlich.&lt;br /&gt;
&lt;br /&gt;
Nichts desto trotz, was hier als &amp;quot;echte&amp;quot; Massnahmen erwaehnt werden sollte sind:&lt;br /&gt;
* Verhinderung von Race Conditions, aber nicht nur durch Concurrent Sessions sondern auch durch Singletons (TOCTOU)&lt;br /&gt;
* Enforcements von Workflows, etwa durch die Verwendung von State Machines oder Request Tokens (auch bekannt als Site Usage Enforcement)&lt;br /&gt;
* Fail Securely (bzw. Verweis)&lt;br /&gt;
* Serverseitige Abbildung der Anwendungslogik, zumindest wenn diese sicherheitsrelevant sit&lt;br /&gt;
&lt;br /&gt;
== M 4.WA22Verhinderung der Blockade von Ressourcen (DoS) bei Web-Anwendungen (Markus, Matthias) ==&lt;br /&gt;
; Datenspeicher:&lt;br /&gt;
 Neben dem Datenspeicher sollte auch der RAM-Verbrauch pro Thread der Applikation limitiert werden.&lt;br /&gt;
([[User:Mrohr|Matthias]]) Stimmt, ich wuerde hier sogar allgemein von Ressourcenverbrauch am Beispiel RAM und Datenspeicher, sprechen&lt;br /&gt;
&lt;br /&gt;
; Voraggregation von Daten / Caching&lt;br /&gt;
 Dieser Punkt fehlt: Stark ressourcen belastende Anfragen können auch in Lastarmen Zeiten vorberechnet werden.&lt;br /&gt;
([[User:Mrohr|Matthias]]) Stimmt, koennte noch als Anmerkung bei &amp;quot;Cachen von Anfragen&amp;quot; hinzugefuegt werden&lt;br /&gt;
&lt;br /&gt;
; ([[User:Mrohr|Matthias]]) Prueffrage: &amp;quot;Wird ein möglicher Überlauf von Protokolldaten... verhindert&amp;quot;&lt;br /&gt;
&lt;br /&gt;
Ist eine etwas eingeschrankte Sicht. Wurde hier eher von Ueberlauf von Speicherplaz zu Beispiel im Rahmen der Protokollierung sprechen&lt;br /&gt;
&lt;br /&gt;
; ([[User:Mrohr|Matthias]]) Durchfuehrung von Lasttests zur Identifikation ressourcenintensiver Operationen&lt;br /&gt;
&lt;br /&gt;
Der Hinweis waere ggf. erwahnenswert&lt;br /&gt;
&lt;br /&gt;
; ([[User:Mrohr|Matthias]]) Hinweis auf nicht-angemeldeten Bereich&lt;br /&gt;
&lt;br /&gt;
Das Risiko durch rechenintensive Operationen durch einen DoS betroffen zu sein ist natuerlich fuer gewoehlich um so groesser, wenn diese im anonymen Bereich angeboten wird. Der Hinweis ware ggf. ebenfalls hilfreich.&lt;br /&gt;
&lt;br /&gt;
== M 4.WA25Verhinderung von Clickjacking (Markus) ==&lt;br /&gt;
Ok - das passt soweit.&lt;br /&gt;
&lt;br /&gt;
([[User:Mrohr|Matthias]]) Stimmt, auch wenn ich &amp;quot;Angreifer&amp;quot; in dem Beispiel eher als &amp;quot;Webseitenbetreiber&amp;quot; beschreiebn wuerde, da er nicht wirklich aktiv einen Angriff durchfuehrt, oder? Bitte nochmal ueber meinen Hinweis aus G 5.WA18 nachdenken: Ist Clickjacking-Schutz tatsaechlich Grundschutz? Ich bin mir da selber nicht so wirklich sicher.&lt;br /&gt;
&lt;br /&gt;
== M 5.WA21Sichere Anbindung von Hintergrundsystemen an Web-Anwendungen (Markus) ==&lt;br /&gt;
; Verantwortliche:&lt;br /&gt;
 Architekten fehlen. Entwickler müssen die Views umsetzen und die Datasource entsprechend einbinden - die fehlen hier ebenfalls.&lt;br /&gt;
; DirectorySystem Beispiel:&lt;br /&gt;
 Das DirectorySystem wird in dem angegeben Beispiel zum Single Point of Failure - das wird verschwiegen.&lt;br /&gt;
; Firewalls:&lt;br /&gt;
 Das sind fachlich-blinde Systeme. Was ist mit WAFs / IDS / IPS etc.?&lt;br /&gt;
([[User:Mrohr|Matthias]]) Stimmt, das hat in diesem Baustein nichts zu suchen&lt;br /&gt;
&lt;br /&gt;
; ([[User:Mrohr|Matthias]]) Typische Hintergrundsysteme&lt;br /&gt;
Hier fehlt irgendwie &amp;quot;Middleware&amp;quot;, die ist denke ich nicht immer Legacy&lt;br /&gt;
&lt;br /&gt;
== M 5.WA23Systemarchitektur einer Web-Anwendung (Markus) ==&lt;br /&gt;
; Verantwortliche:&lt;br /&gt;
Auch hier fehlend wieder die Architekten. &lt;br /&gt;
([[User:Mrohr|Matthias]]) Stimmt, habe das Dokument mal komplett durchgesucht.Tatsaechlich wird der &amp;quot;Architekt&amp;quot; niemals genannt, das scheint also eher ein grundseatzliches Problem zu sein. Der Administrator hat hier aber nun wirklich nichts zu suchen.&lt;br /&gt;
&lt;br /&gt;
; Virtualisierung:&lt;br /&gt;
Virtualisierung bietet weitere Angriffsvektoren (z.B.: Hypervisor) die eine &amp;quot;Blech&amp;quot;Farm nicht bietet.&lt;br /&gt;
&lt;br /&gt;
([[User:Mrohr|Matthias]]) Genau, wobei auch der ganze Bereich geshareter Plattformen (z.B. By SharePoint) hier fehlt.&lt;/div&gt;</summary>
		<author><name>Mrohr</name></author>	</entry>

	<entry>
		<id>https://wiki.owasp.org/index.php?title=Talk:OWASP_Review_BSI_IT-Grundschutz_Baustein_Webanwendungen&amp;diff=130190</id>
		<title>Talk:OWASP Review BSI IT-Grundschutz Baustein Webanwendungen</title>
		<link rel="alternate" type="text/html" href="https://wiki.owasp.org/index.php?title=Talk:OWASP_Review_BSI_IT-Grundschutz_Baustein_Webanwendungen&amp;diff=130190"/>
				<updated>2012-05-21T13:33:36Z</updated>
		
		<summary type="html">&lt;p&gt;Mrohr: /* M 5.WA23Systemarchitektur einer Web-Anwendung (Markus) */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Since it's about a review of a document in German, all the discussions will be done in German :-)&lt;br /&gt;
&lt;br /&gt;
Diskussionen rund um den Review des &amp;quot;IT-Grundschutzbausteins Webanwendungen&amp;quot; finden hier statt, sinnvollerweise auf Deutsch :-)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Vorschlag für Kriterien, die an unser Review angelegt werden sollten (.kai) ==&lt;br /&gt;
&lt;br /&gt;
* Der Baustein soll alle wichtigen Themen der Entwicklung sicherer&lt;br /&gt;
Webanwendungen enthalten.&lt;br /&gt;
&lt;br /&gt;
* Der Baustein soll die verschiedenen Phasen der Software-Entwicklung&lt;br /&gt;
vollständig abdecken.&lt;br /&gt;
&lt;br /&gt;
* Der Baustein soll zwischen verbindlichen, prüfbaren Vorgaben und&lt;br /&gt;
unverbindlichen Empfehlungen sprachlich sauber unterscheiden (hier&lt;br /&gt;
spielt mein Auditorenblick eine Rolle). Vor allem soll der Baustein&lt;br /&gt;
verbindliche Anforderungen auch tatsächlich stellen. Alle&lt;br /&gt;
verbindlichen Anforderungen müssen unabhängig von der jeweiligen&lt;br /&gt;
Umgebung auch umsetzbar sein, d.h. sie müssen entsprechend generisch&lt;br /&gt;
sein.&lt;br /&gt;
&lt;br /&gt;
* Die Maßnahmen sollen nur in (begründbaren) Ausnahmen zu Empfehlungen&lt;br /&gt;
von OWASP im Widerspruch stehen.&lt;br /&gt;
&lt;br /&gt;
* Die Maßnahmen sollen verständlich und anwendbar sein.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== &amp;quot;Hilfsmittel&amp;quot; (Markus) ==&lt;br /&gt;
Ich würde das Script zur Vermeidung von Clickjacking wrappen und nicht als losen Skript-block in den Text einbinden - einfach schlechter Programmierstiel diese losen Blöcke.&lt;br /&gt;
Der Zugriff auf das Body-Element mit byTagName-Array[0] ist auch nicht wirklich gut. Ich halte Zugriffe über das DOM (klassisch), bei ID bzw. XPATH für besser. &lt;br /&gt;
&lt;br /&gt;
SQL-Injection Characters:&lt;br /&gt;
die Pipe fehlt hier zur Textkonatenierung&lt;br /&gt;
+ / - haben auch eine Bedeutung bei JOINs.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== &amp;quot;Goldene Regeln&amp;quot; (Matthias) ==&lt;br /&gt;
&lt;br /&gt;
Hier meine Anmerkungen zu diesem Dokument:&lt;br /&gt;
&lt;br /&gt;
; 1. Für mich fehlende Punkte&lt;br /&gt;
* Korrektur der Ursache (Root Cause) von Schwachstellen statt  Verhinderung deren Ausnutzung&lt;br /&gt;
* Bezug auf Minimierung der Angriffsfläche und Least-Privilege-Prinzip&lt;br /&gt;
* Bezug auf Defense-in-Depth-Prinzip&lt;br /&gt;
* Verwendung von getesteten Security APIs (z.B. OWASP ESAPI) statt selbstentwickelter Funktionen&lt;br /&gt;
* Bezug auf Externalisierung von Sicherheitsfunktionen, sowie deklerative vor programmatischer Sicherheit.&lt;br /&gt;
&lt;br /&gt;
; 2. Begriff &amp;quot;Web-Anwendung&amp;quot;&lt;br /&gt;
Würde ich generell durch &amp;quot;Webanwendung&amp;quot; ersetzen.&lt;br /&gt;
&lt;br /&gt;
; 3. Einleitung (&amp;quot;Web-Anwendungen stellen Funktionalität zur Verfügung, ...&amp;quot;)&lt;br /&gt;
&lt;br /&gt;
Wozu dient dieser Satz?&lt;br /&gt;
&lt;br /&gt;
; 4. &amp;quot;Die Architektur der Web-Anwendung ist im Sicherheitskonzept zu  dokumentieren.....&amp;quot; &lt;br /&gt;
&lt;br /&gt;
Ich fände es sinnvoller, wenn hier von der &amp;quot;Sicherheitsarchitektur&amp;quot; gesprochen wird, welche etwa neben den sicherheitsrelevanten Datenflüssen, sensible Komponenten, Entry Points, Akteure architekturelle Security Controls wie Authentisierung, Kryptographie und natürlich die Trust Boundaries beinhaltet.&lt;br /&gt;
&lt;br /&gt;
; 5. &amp;quot;Bei Web-Anwendungen handelt es sich häufig um spezielle Eigenentwicklungen....&amp;quot;&lt;br /&gt;
&lt;br /&gt;
Erstens würde ich hier den geläufigen Begriff &amp;quot;Individualsoftware&amp;quot; verwenden. Zweitens würde ich statt bestimmte SDLC-Phasen vorzugeben (die Begriffe &amp;quot;Softwareverteilung&amp;quot; und &amp;quot;Integration&amp;quot; sind mir bei Webanwendungen bisher noch nicht so häufig untergekommen), besser von der Notwendigkeit sprechen, Sicherheit in allen Entwicklungsphasen zu berücksichtigen, also eines SDLs.&lt;br /&gt;
&lt;br /&gt;
; 6. &amp;quot;Alle Ein- und Ausgaben der Web-Anwendung müssen in eine normalisierte Form überführt werden....&amp;quot;&lt;br /&gt;
&lt;br /&gt;
Normalisierung ist für mich nicht gleich Kanonsierung, auch wenn beide Begriffe häufig als synonym verwendet werden.  Der Unterschied wird in der [http://owasp-esapi-java.googlecode.com/svn/trunk_doc/2.0-rc4/org/owasp/esapi/Encoder.html API-Beschreibung der ESAPI] erklärt. Die Normalisierungs-Funktion ist allerdings schon vor einiger Zeit aus der ESAPI [https://lists.owasp.org/pipermail/esapi-dev/2010-January/000266.html rausgeflogen]. Die generelle Kanonisierung von Ausgaben halte ich dazu für nicht sinnvoll.&lt;br /&gt;
&lt;br /&gt;
Zweitens, finde ich den weiteren Text zwar grundsätzlich formal korrekt, aber so allgemein, dass dieser glaube ich niemandem so richtig etwas bringt.  &lt;br /&gt;
&lt;br /&gt;
Besser fände ich hier Ein- von Ausgabevalidierung grundsätzlich voneinander abzugrenzen. Etwa was ich per Eingabevalidierung (Längenprüfung, Casting, etc. per Whitelisting) und was mit Ausgebavalidierung (Enkodierung, Escaping, Parametrisierung) machen muss und kann.&lt;br /&gt;
&lt;br /&gt;
Eingabedaten können technisch zudem auch Werte eingelesener Property-Dateien sein. Muss ich die auch validieren? Ist das dann noch Grundschutz? &lt;br /&gt;
&lt;br /&gt;
; 7. &amp;quot;Für den Zugriff auf sensitive Funktionen oder Informationen muss die Web-Anwendung eine wirksame Authentisierung und Sitzungsverwaltung unterstützen. Die Eigenschaften der Sitzungs-ID müssen so gewählt werden, dass die Sitzung ausreichend geschützt ist. ....&amp;quot;&lt;br /&gt;
&lt;br /&gt;
Besser fände ich &amp;quot;eine Authentisierung, die über eine dem Schutzbedarf der Anwendung angemessene Stärke verfügt.&amp;quot; &lt;br /&gt;
&lt;br /&gt;
Eigentlich geht es doch mehr um den Schutz der Sitzungs-ID, da diese gewöhnlich im Verlauf einer Sitzung den Client authentisiert. Oder den Schutz des Zugriffs auf eine Sitzung. &lt;br /&gt;
&lt;br /&gt;
Zudem fehlt hier meiner Meinung nach der Hinweis auf die bevorzugte Verwendung getesteter Standardkomponenten.&lt;br /&gt;
&lt;br /&gt;
; 8. &amp;quot;Die Web-Anwendung sollte die zu übermittelnden Daten schützen.&amp;quot;&lt;br /&gt;
&lt;br /&gt;
Dies würde ich nur auf sensible Daten beziehen. Zusätzlich zu HTTPS würde ich hier schreiben, dass sensible Daten generell nicht in der URL übertragen werden dürfen.&lt;br /&gt;
&lt;br /&gt;
; 9. &amp;quot;Die Preisgabe interner Informationen (z.B. Kommentare, Fehlermeldungen)&amp;quot;&lt;br /&gt;
&lt;br /&gt;
Hier würde ich eher schreiben &amp;quot;(IN Kommentaren, Fehlermeldungen, HTTP Headern, etc.)&amp;quot;&lt;br /&gt;
&lt;br /&gt;
; 10. &amp;quot;Fehler müssen so behandelt werden, ... müssen Fehler bei der Autorisierung zu einer Verweigerung beim Zugriff auf die angeforderte Ressource führen.&amp;quot;&lt;br /&gt;
&lt;br /&gt;
Sprachlich: &amp;quot;Die Webanwendung muss sich stets in einem sicheren Zustand befinden. Beispielsweise müssen Fehler bei der Autorisierung zu einer Verweigerung des Zugriffs führen (Default-Deny-Strategie).&amp;quot;&lt;br /&gt;
&lt;br /&gt;
; 11. &amp;quot;Die Logging-Funktionen der Web-Anwendung müssen aufgetretene Ereignisse derart protokollieren, dass sicherheitskritische Vorfälle nachvollzogen werden können.&amp;quot;&lt;br /&gt;
&lt;br /&gt;
Hier würde hier eher von &amp;quot;allen sicherheitsrelevanten Ereignissen&amp;quot; sprechen.&lt;br /&gt;
&lt;br /&gt;
Weiterhin sollten insbesondere beim Logging der Datenschutz berücksichtigt werden, personenbezogene Daten also nach Möglichkeit nicht oder nur anonymisiert in technischen Logdateien protokolliert werden.&lt;br /&gt;
&lt;br /&gt;
; 12. &amp;quot;Alle Sicherheitsmechanismen (z.B. Authentisierung und Zugriffskontrolle) sind serverseitig zu implementieren und können nicht durch clientseitige Mechanismen ersetzt werden.&amp;quot;&lt;br /&gt;
&lt;br /&gt;
Die Aussage ist so nicht korrekt. Darüber hatten wir bereits bei der ASVS mehrfach diskutiert. &lt;br /&gt;
&lt;br /&gt;
Überall dort wo der Client angegriffen wird, also etwa bei RIAs (Stichwort DOM-Based XSS) müssen wir Security Controls clientseitig implementieren. Es gibt mittlerweile deshalb auch eine Portierung der ESAPI auf Javascript. Überall dort wo der Server oder Hintegrundsysteme angegriffen werden, ist die Aussage aber natürlich zutreffend.&lt;br /&gt;
&lt;br /&gt;
== &amp;quot;Gefährdungen&amp;quot; (Markus, Dennis, .... &amp;lt;Dein Name&amp;gt;) ==&lt;br /&gt;
; Generell:&lt;br /&gt;
Reference auf RFCs fehlen.&lt;br /&gt;
&lt;br /&gt;
==B.5.XX Web-Anwendungen ==&lt;br /&gt;
; 1. Erster Absatz - Letzter Satz: --Wieso werden hier nur HTML/XML Doks und Oberflächen angesprochen? Was ist der Unterschied zwischen einem HTML-Dok und einer Oberfläche? Was ist mit  Flash, etc.? Was ist mit WebSockets?&lt;br /&gt;
; 2. Stichpunkt &amp;quot;Protokollierung&amp;quot;: Sicherheits relevant ist ein sehr dehnbarer Begriff - Eine bessere Formulierung könnte sein: Zur Rekonstruktion von Nutzerhandlungen nötige Ereignisse (positve &amp;amp; negative) müssen protokolliert werden . . . &lt;br /&gt;
; 3. Absatz: &amp;quot;Abgrenzung des Bausteins&amp;quot;: &amp;quot;Die spez. Sicherheitsanforderungen an Web-Services werden in diesem Baustein nicht betrachtet&amp;quot; --&amp;gt; Wie so nicht? Was ist das Backend von einer Rest / AJAX-basierenden Webanwendung denn anderes als ein Web-Service? Diesen Satz würde ich entfernen.&lt;br /&gt;
; 4.Vorsätzliche Handlungen -&amp;gt; Web-Spoofing (G.5.87) -- Missverständliche Bezeichnung / Nomenklatur&lt;br /&gt;
; 5. Seite 4 : erste Zeile &amp;quot;Umsetzung&amp;quot;: &amp;quot;dafür umzusetztende Komponenten müssen die Webanwendung schützen...&amp;quot; - Hier fehlt mir der Hinweis, dass dieser Schutz verifiziert werden muss.&lt;br /&gt;
; 6 Seite 5: &amp;quot;Umsetzung&amp;quot; - Wir haben CSRF, D(D)os und SQL-Injection aber wo ist XSS?&lt;br /&gt;
; 7 Seite 7: &amp;quot;Die Sicherheitsfunktion wird ausschließlich clientseitig...&amp;quot; --&amp;gt; Warum muss der Angreifer überhaupt einen Browser umkonfigurieren? Was ist mit Proxies, Scripts, etc.? Ich würde das reduzieren darauf, dass rein Webbrowser-basierende Schutzfunktionen einfach umgangen werden können.&lt;br /&gt;
; 8 Seite 8: Die angesprochenen Punkte hinterlassen den Eindruck nicht vollständig zu sein: Mir fehlen Punkte wie &amp;quot;Outsourcing&amp;quot;, &amp;quot;KnowHow der Entwickler&amp;quot;, Tooling, Framework-Auswahl, etc.&lt;br /&gt;
; 9 Seite 9: Eigentlich möchte der Autor hier über Datenschutz sprechen. Abgesehen von den letzten drei Zeilen geht es aber nur um &amp;quot;User tracking&amp;quot; - Wo ist der Rest der Datenschutzproblematik? Warum der Fokuss auf Tracking? Mir ist das zu einseitig.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
tbd.&lt;br /&gt;
&lt;br /&gt;
; Wortwahl:&lt;br /&gt;
Ich stosse innerhalb der Texte immer wieder an die Worten '''Hintergrundsystem''' und '''Sicherheitskontext'''.&lt;br /&gt;
'''Hintergrundsystem:''' besseres Synonym?&lt;br /&gt;
'''Sicherheitskontext:''' nur weil es in den Texten um Sicherheit geht muss nicht an jeder Stelle immer wieder das Wort _Sicherheits_kontext eingebaut werden.&lt;br /&gt;
Bsp: &amp;quot;Erlangt ein Angreifer Kenntnis von einer solchen gültigen, aber nicht mehr genutzten SessionID, so kann er die Web-Anwendung im Sicherheitskontext des nicht abgemeldeten Benutzers weiter verwenden.&amp;quot; (G 5,WA12 Unzureichendes Session-Management von Web-Anwendungen)&lt;br /&gt;
Verbesserungsansansatz: ... so kann er die Web-Anwendung anstelle des eigentlichen Besitzers weiterhin verwenden.&lt;br /&gt;
&lt;br /&gt;
== &amp;quot;G 2.WA01 Mangelhafte Auswahl oder Konzeption von Web-Anwendungen&amp;quot; (Matthias) ==&lt;br /&gt;
&lt;br /&gt;
Nachdem ich mir diese Gefährdung durchgelesen hatte, fehlten mir ehrlich gesagt etwas die Worte. Nicht nur, dass hier fast jeder zweite Satz entweder falsch ist bzw. massive Fehler enthält oder ich diesen schlicht nicht verstehe, ist der ganze Text sprachlich wirklich enorm verbesserungsfähig. &lt;br /&gt;
&lt;br /&gt;
Na gut, ich konzentriere mich mal auf die fachlichen Punkte:&lt;br /&gt;
&lt;br /&gt;
; 1. Security Controls&lt;br /&gt;
Werden mal mit &amp;quot;Schutzmechanismen&amp;quot;, mal mit &amp;quot;Sicherheitskomponenten&amp;quot; und dann wieder als &amp;quot;Sicherheitsfunktionen&amp;quot; bezeichnet. Hier macht eine einheitliche Benennung sicherlich Sinn und ist weniger verwirrend.&lt;br /&gt;
&lt;br /&gt;
; 2. &amp;quot;Eine Web-Anwendung ist in der Regel ein verteiltes, komplexes System bestehend aus unterschiedlichen Komponenten (z. B. Webserver, Applikationsserver, Hintergrundsysteme)&amp;quot;&lt;br /&gt;
&lt;br /&gt;
Eine Webanwendung besteht sicher nicht aus einem Webserver- oder anderer infrastruktureller Komponenten, sondern ist Software welches diese nutzt.&lt;br /&gt;
&lt;br /&gt;
; 3. &amp;quot;Bei individuell entwickelten Web-Anwendungen sind im Allgemeinen die Frameworks, Komponenten und Schnittstellen im Rahmen der Konzeption auszuwählen und deren Einbindung und Absicherung zu betrachten....Im Gegensatz dazu ist bei der Konzeption von Web-Anwendungen auf Basis von Standardsoftware insbesondere auf die Auswahl der Software und die Konfiguration der Teilkomponenten zu achten&amp;quot;&lt;br /&gt;
&lt;br /&gt;
Wir unterscheiden im Rahmen von Webanwendungen eigentlich Free or Opensource Software (FOSS bzw. FLOSS), Standardsoftware und Individualsoftware voneinander. Wir unterscheiden nicht Frameworks von Standardsoftware. Frameworks können Teil von Standardsoftware sein, wie etwa bei SharePoint, SAP, etc, oder aber FOSS, wie etwa Spring. Die ganzen Absätze machen für mich daher keinen Sinn.&lt;br /&gt;
&lt;br /&gt;
; 4. &amp;quot;Eine Sicherheitsfunktion (z. B. Authentisierung, Autorisierung) wird nicht an einer Stelle umgesetzt und verwendet, sondern ist mehrfach in der Web- Anwendung realisiert. Wird diese Sicherheitsfunktion an den verschiedenen Stellen unterschiedlich umgesetzt, führt dies zu einem uneinheitlichen Sicherheitsniveau.&amp;quot;&lt;br /&gt;
&lt;br /&gt;
Natürlich ist die mehrfache Verwendung bestimmter Security Controls, beispielsweise von Zugriffskontrollen (Complete-Mediation) oder Validierung (Robustheit) erstrebenswert. Was der Autor hier wahrscheinlich meinte, war die Notwendigkeit diese zu Kapseln bzw. zu Externalisieren. Das bezieht sich im übrigen nicht nur auf die Controls selbst, sondern auch auf ihre Parametrisierung (etwa. über Konfigdateien / XACML).&lt;br /&gt;
&lt;br /&gt;
Wichtiger wäre in diesem Zusammenhang zudem die fehlende Berücksichtigung bestimmter Security Controls.&lt;br /&gt;
&lt;br /&gt;
; 5. &amp;quot;Auswahl von Web-Anwendungen auf Basis von Standardsoftware&amp;quot;&lt;br /&gt;
Was will der Satz sagen? Ich wähle Standardsoftware aus, aber doch keine Webanwendungen. Oder heißt das, ich kaufe eine existierende Anwendung ein (Webanwendung!=Indivudualsoftware)? &lt;br /&gt;
&lt;br /&gt;
; 6. &amp;quot;Das ausgewählte Produkt verfügt nicht über die ausreichende Sicherheitsfunktionalität, ... Daher müssen die notwendigen Schutzmechanismen nachträglich hinzugefügt werden, wodurch zusätzliche Aufwände entstehen.&amp;quot;&lt;br /&gt;
Das ist etwas sehr positiv formuliert. Tatsächlich können fehlende Security Controls in zugekaufter Software (insb. Standardsoftware) in der Realität häufig gar nicht hinzugefügt werden oder nur perimetrisch (z.B. per WAF oder Access Gateway).&lt;br /&gt;
&lt;br /&gt;
; 7. &amp;quot;Die Hintergrundsysteme werden unzureichend abgesichert und dadurch ist die Datenbank der Web-Anwendung aus dem Internet erreichbar.&amp;quot;&lt;br /&gt;
Gehören fehlende Netzwerksegmentierung bzw. Firewallregeln wirklich in diesen Kontext? Das ist doch eigentlich Grundschutz der Infrastruktur, oder?&lt;br /&gt;
&lt;br /&gt;
; 8. &amp;quot;Aufgrund schwacher Parameter in der Konfiguration des Frameworks zum Session-Management werden unsichere SessionIDs erzeugt.&amp;quot;&lt;br /&gt;
Was sind &amp;quot;schwache&amp;quot; Parameter?&lt;br /&gt;
&lt;br /&gt;
Welches Framework erlaubt unsichere SessionIDs durch eine &amp;quot;schwache&amp;quot; Konfiguration zu erzeugen?&lt;br /&gt;
&lt;br /&gt;
; 9. &amp;quot;Wird die Konfiguration des Web-Browsers durch einen Angreifer manipuliert, können die clientseitig umgesetzten&amp;quot;&lt;br /&gt;
&lt;br /&gt;
Manipuliert ein Angreifer die Konfguration seines Webbroswers, wenn er einen MITM-Proxy konfiguriert?&lt;br /&gt;
&lt;br /&gt;
Wie bereits bei den &amp;quot;Goldenen Regeln&amp;quot; angemerkt, gilt auch hier, das manche Security Controls auch clientseitig umgesetzt werden dürfen (etwa. zur Verhinderung von Dom-Based XSS).&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== &amp;quot;G 5.WA10 Fehler in der Web-Anwendungslogik&amp;quot; (Dennis) ==&lt;br /&gt;
; 1. &amp;quot;Damit kann aufgrund der Prüfreihenfolge ein hoher Ressourcenverbrauch provoziert werden, der für Denial-of-Service-Angriffe ausgenutzt werden kann.&amp;quot;&lt;br /&gt;
Meiner Meinung nach passt in diesem Kontext die Attacke DoS nicht ganz. Falls die nachfolgende Funktionalität wegen der langen Ausführungszeit der Filterkomponente übersprungen wird bzw. ein Fehler auftritt würde dies meiner Ansicht in die Thematik Anwendungslogik passen. Eine DoS-Attacke kann hingegen anhand jeder Funktion durchgeführt werden.&lt;br /&gt;
&lt;br /&gt;
([[User:Mrohr|Matthias]]) Jo stimmt, aber ich stimme mit der Aussage eigentlich schon ueberein, auch wenn diese zugegeben etwas ungluecklich formuliert ist. Es geht hier ja darum, rechenintensive Pruefungen/Filterung moeglichst zu vermeiden bzw. zu reduzieren. Aus diesem Grund machen wir ja auch bei der AV-Pruefung zunaechst Blacklist-Checks und erst am Ende rechenintensive statistische oder verhaltensbezogene Pruefungen.&lt;br /&gt;
&lt;br /&gt;
== &amp;quot;G 5.WA11 Umgehung clientseitig umgesetzter Sicherheitsfunktionen von Web-Anwendungen&amp;quot; (Dennis) ==&lt;br /&gt;
; 1. &amp;quot;Ein Angreifer kann diese ausnutzen, um beispielsweise unbefugt Befehle an Hintergrundsysteme der Web-Anwendung zu übermittlen (z.B. in Form von Datenbankanfragen bei einer SQL-Injection).&amp;quot;&lt;br /&gt;
Umformulierung des Inhalts der Klammer. Hatte beim ersten Lesen für mich den Anschein, als ob ein Formular genutzt werden könnte welches den Nutzer aufforder eine SQLI einzugeben. Ich denke &amp;quot;Datenbankanfrage zwecks Ausführung einer SQL-Injection&amp;quot; würde besser passen.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== G 2.WA02 Mängel bei der Entwicklung und der Erweiterung von Web-Anwendungen (Matthias) ==&lt;br /&gt;
&lt;br /&gt;
Allgemein ist de obere Teil ok, die aufgezählten &amp;quot;Auswirkungen von fehlenden Vorgaben&amp;quot; verstehe ich jedoch nicht. Wo ist etwa der Bezug von Barrierefreiheit auf die Anwendungssicherheit?&lt;br /&gt;
&lt;br /&gt;
Mein Vorschlag, um diese Punkte etwa sinnvoll umzubauen:&lt;br /&gt;
* &amp;quot;Fehlendes Vorgehensmodell&amp;quot;: Bezug auf fehlende Berücksichtigung von Sicherheit im SDLC. Statt eines SDLCs selbst sollte hier besser auf die Notwendigkeit eines Secure Development Lifecycle (SDL) hingewiesen werden&lt;br /&gt;
* &amp;quot;Fehlende Programmierrichtlinien&amp;quot; =&amp;gt; Besser wäre hier &amp;quot;Fehlende Sicherheitsrichtlinien in der Programmierung&amp;quot; also &amp;quot;Secure Coding Guidelines&amp;quot;&lt;br /&gt;
* &amp;quot;Testfälle&amp;quot; =&amp;gt; &amp;quot;Sicherheitsrelevante Testfälle&amp;quot; (z.B. Security Unit Tests). &lt;br /&gt;
* &amp;quot;Barrierefreiheit&amp;quot;: Warum nicht an dieser Stelle die Auswirkungen von Sicherheitsfunktionen auf die Bedienbarkeit, etwa anhand von CAPTCHAS erläutern?&lt;br /&gt;
&lt;br /&gt;
== G 2.WA03 Unzureichender Schutz personenbezogener Daten bei Web-Anwendungen (Matthias) ==&lt;br /&gt;
&lt;br /&gt;
Der Titel dieses Bausteines heißt &amp;quot;Schutz personenbezogener Daten&amp;quot;, die genannten Beispiele beziehen sich bis auf den letzten jedoch auf die missbräuchliche (oder zumindest problematische) Nutzung aus Sicht des Datenschutzes. &lt;br /&gt;
&lt;br /&gt;
Die Punkt 1-3 sollten daher besser entfallen und z.B. durch die Folgenden ersetzt werden:&lt;br /&gt;
* Unsichere Einbindung von sozialen Netzwerken (Bezug nehmen auf den Like-Button bei Facebook)&lt;br /&gt;
* Unsichere Einbindung von Werbeinhalten&lt;br /&gt;
* Unsichere Übertragung und Caching&lt;br /&gt;
* Unsichere Protokollierung&lt;br /&gt;
* Ungenügender Zugriffsschutz&lt;br /&gt;
* Verstoß des Minimalprinzips bzw. der Zweckgebundenheit (welche Daten werden wirklich benötigt)&lt;br /&gt;
&lt;br /&gt;
Auch wäre es ggf. zumindest einen Verweis auf das BDSG zu machen.&lt;br /&gt;
&lt;br /&gt;
== G 4.33 Unzureichende oder fehlende Authentisierung (Matthias) ==&lt;br /&gt;
&lt;br /&gt;
; 1. Erster Absatz: &amp;quot;Wenn Authentisierungsmechanismen fehlen oder zu schlecht sind&amp;quot;&lt;br /&gt;
&lt;br /&gt;
&amp;quot;schlecht&amp;quot; sollte vlt besser durch &amp;quot;unzureichend&amp;quot; ersetzt werden.&lt;br /&gt;
&lt;br /&gt;
; 2. &amp;quot;Sicherheitslücken entstehen bei... der Benutzerauthentisierung&amp;quot;&lt;br /&gt;
&lt;br /&gt;
Hier findet nur ein Bezug auf &amp;quot;Passwörter&amp;quot; statt. Der Bezug auf die fehlerhaft implementierte oder dem Schutzbedarf ungenügende Schutzmechanismen (z.B. keine 2-Faktor-Authentisierung bei hochsensiblen Daten) fehlt. Auch auf das komplette fehlen von Authentisierungs-Controls wird hier nicht  eingegangen&lt;br /&gt;
&lt;br /&gt;
; 3. &amp;quot;Sicherheitslücken entstehen bei... der Komponentenauthentisierung&amp;quot;&lt;br /&gt;
&lt;br /&gt;
Wie bei 2., wird auch hier wieder nur auf Passwörter, nicht jedoch auf das fehlen von Controls selbst eingegangen. An dieser Stelle fehlt auch ein Hinweis auf die Notwendigkeit dedizierter Benutzeraccounts.&lt;br /&gt;
&lt;br /&gt;
; 4. &amp;quot;Sicherheitslücken entstehen bei... der Wahl des Verfahrens&amp;quot;&lt;br /&gt;
&lt;br /&gt;
Statt untauglich würde ich auch hier von &amp;quot;dem Schutzbedarf der Daten nicht angemessen&amp;quot; sprechen, eigentlich gehört das für mich aber in die obigen Punkte.&lt;br /&gt;
&lt;br /&gt;
; 5. Serverseitige Authentisierung fehlt&lt;br /&gt;
&lt;br /&gt;
Auch der Server (bzw. die Anwendung selbst) kann sich fehlerhaft oder ungenügend beim Benutzer authentsieren, etwa über DNS, SSL-Zertifikate, etc.&lt;br /&gt;
&lt;br /&gt;
== G 4.WA04 Unzureichende Validierung von Ein- und Ausgabedaten bei Web-Anwendungen (Matthias) ==&lt;br /&gt;
&lt;br /&gt;
; 1. &amp;quot;Unzureichende Validierung von Eingabedaten&amp;quot;&lt;br /&gt;
&lt;br /&gt;
Die genannten Beispiele sind genau keine korrekten Beispiele für diesen Fall, sondern betreffen die Ausgabevalidierung bzw. Enkodierung. Typische Fehler der Eingabevalidierung ist eine Manipulierbarkeit der Business Logik.&lt;br /&gt;
&lt;br /&gt;
; 2. &amp;quot;Unzureichende Validierung von Ausgabedaten&amp;quot;&lt;br /&gt;
&lt;br /&gt;
Hier geht es zentral um die Verhinderung von Interpreter Injection, also serverseitig (z.B. SQL oder LDAP Injection) oder clientseitig (XSS, JSON Injection, etc.). Statt &amp;quot;können die Ausgaben Schadcode&amp;quot; enthalten würde ich hier eher davon Sprechen, dass ein solcher Interpreteraufruf manipuliert werden kann (was dann z.B. zur Einschleusung von Schadcode genutzt werden kann).&lt;br /&gt;
&lt;br /&gt;
; 3. &amp;quot;Die Suchfunktion der Web-Anwendung verwendet die Eingaben der Benutzer ungefiltert&amp;quot;&lt;br /&gt;
&lt;br /&gt;
Mit ungenügender &amp;quot;Filterung&amp;quot; hat SQL Injection nichts zu tun,  eigentlich geht es hierbei darum, dass SQL-Anfragen dynamisch mit unvalidierten Eingebedaten zusammengebaut (konkateniert) werden.&lt;br /&gt;
&lt;br /&gt;
; 4. &amp;quot;Ungefilterter HTML-Code in Kommentar-Funktion&amp;quot;&lt;br /&gt;
&lt;br /&gt;
Hier fehlt der Bezug auf persistentes XSS, das hier sicherlich zentral ist.&lt;br /&gt;
&lt;br /&gt;
== G 4.WA05 Fehlende oder mangelhafte Fehlerbehandlung durch Web-Anwendungen (Tobias, Matthias) ==&lt;br /&gt;
; Abschnitt &amp;quot;Unsichere Fehlerbehandlung&amp;quot;&lt;br /&gt;
Die G adressiert &amp;quot;Unsichere Fehlerbehandlung&amp;quot;, der Abschnitt die &amp;quot;Unsichere Fehlerbehandlung in Sicherheitskomponenten&amp;quot;. Entsprechend sollte der fettgedruckte Teil angepasst werden.&lt;br /&gt;
&lt;br /&gt;
; &amp;quot;fehlende SQL-Parameter,&amp;quot;&lt;br /&gt;
Sollte besser &amp;quot;Fehlermeldungen bei ungültigen SQL-Abfragen&amp;quot; lauten.&lt;br /&gt;
&lt;br /&gt;
; &amp;quot;Auch scheinbar unkritische Informationen, wie die Meldung ob (..)&amp;quot;&lt;br /&gt;
Korrekt, allerdings nicht nachvollziehbar, wenn das Problem der Leser nicht schon bekannt ist. Daher erweitern nach &amp;quot; Rahmen von Brute-Force-Angriffen ausgenutzt werden.&amp;quot; mit &amp;quot;. Bei Brute-Force-Angriffen wäre in diesem Fall klar, dass der Benutzername gültig ist.&amp;quot;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[User:Mrohr|Matthias]]): Stimme dem Obigen auch zu, ausserdem:&lt;br /&gt;
&lt;br /&gt;
; Sprachlich: &amp;quot;kann dies unvorhersehbare Auswirkungen haben und den Betrieb der Web-Anwendung bis zur Unerreichbarkeit einschränken.&amp;quot;&lt;br /&gt;
&lt;br /&gt;
&amp;quot;Unerreichbarkeit&amp;quot; ist etas merkwuerdig ausgedrueckt, besser ware hier von der &amp;quot;Verfuegbarkeit&amp;quot; zu sprechen. Im Uebrigen fehlt vollstaendig der Bezug auf die Verfuegbarkeit als Primaeres Schutzziel der Informationssicherheit.&lt;br /&gt;
&lt;br /&gt;
; &amp;quot;Clientseitige Fehlerbehandlung&amp;quot;&lt;br /&gt;
Das stimmt soweit, das generelle Problem ist jedoch genereller, naehmlich die clientseitige Abbildung sicherheitsrelaventer Logik (in diesem Fall die Fehlerbehandlung)&lt;br /&gt;
&lt;br /&gt;
== G 4.WA06 Unzureichende Nachvollziehbarkeit von sicherheitsrelevanten Ereignissen bei Web-Anwendungen (Matthias) ==&lt;br /&gt;
&lt;br /&gt;
; 1. Erster Absatz: &amp;quot;Die Behebung einer Schwachstelle ist dann nicht oder nur unter erschwerten Bedingungen möglich.&amp;quot;&lt;br /&gt;
&lt;br /&gt;
Hier würde ich ergänzen: &amp;quot;...und Angriffe auf die Anwendungen können ggf. nicht erkannt oder nachvollzogen werden&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
; 2. &amp;quot;Beispiele&amp;quot;: Kommulierbarkeit&lt;br /&gt;
&lt;br /&gt;
Hier fehlt auch ein Bezug auf die Kommulierbarkeit von SIcherheitsereignissen, dass diese also auch von solchen anderer Systeme in Verbindung gesetzt werden können&lt;br /&gt;
&lt;br /&gt;
; 3. &amp;quot;Beispiele&amp;quot;: Gerichtsverwertbarkeit&lt;br /&gt;
&lt;br /&gt;
Auch die Möglichkeit zur Gerichtsverwertbarkeit (etwa durch eindeutigen Zeitstempel) und manipulationssicherer Speicherung, würde ich an dieser Stelle unbedingt erwähnen.&lt;br /&gt;
&lt;br /&gt;
== G 4.WA07 Offenlegung von Informationen bei Web-Anwendungen (Matthias) ==&lt;br /&gt;
&lt;br /&gt;
; 1. Titel&lt;br /&gt;
&lt;br /&gt;
Hier würde ggf. &amp;quot;Offenlegung vertraulicher Informationen&amp;quot; sicher besser passen als &amp;quot;Offenlegung von Informationen&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
; 2. Beispiellink&lt;br /&gt;
&lt;br /&gt;
Ein Beispiellink (mit und ohne Token) würde sicher die Verständlichkeit dieser Schwachstelle verbessern.&lt;br /&gt;
&lt;br /&gt;
; 3. Erster Absatz: &amp;quot;Wenn demzufolge Informationen unnötig offengelegt werden, steigt die Wahrscheinlichkeit eines erfolgreichen Angriffs.&amp;quot;&lt;br /&gt;
&lt;br /&gt;
Interne Informationen auszublenden ist eine Härtungsmaßnahme, deren Anzeige erhöht aber nicht zwangsläufig die Wahrscheinlichkeit eines erfolgreichen Angriffs. Ich würde diesen Satz weglassen.&lt;br /&gt;
&lt;br /&gt;
 ; 4. Fehlende Punkte&lt;br /&gt;
&lt;br /&gt;
* Ein Hinweis auf HTTP Header wäre hier sicher erwähnenswert.&lt;br /&gt;
* Weiterhin bzgl. der Anzeige von Traces und ein Verweis auf den Entsprechenden Baustein zur Fehlerbehandlung&lt;br /&gt;
&lt;br /&gt;
== G 5.WA14 Cross-Site Request Forgery (CSRF, XSRF) (Matthias) ==&lt;br /&gt;
&lt;br /&gt;
; 1. Erster Absatz: &amp;quot;Können Funktionen einer Web-Anwendung ohne weitere Überprüfung der Authentizität des HTTP-Requests (z.B. durch Tokens in versteckten Formularfeldern) genutzt werden&amp;quot;&lt;br /&gt;
&lt;br /&gt;
Statt &amp;quot;Funktionen&amp;quot; würde ich besser von &amp;quot;schreibenden Aktionen&amp;quot; sprechen, dann macht der Satz mehr Sinn.&lt;br /&gt;
&lt;br /&gt;
; 2. Dritter Absatz: &amp;quot;Im Gegensatz zu XSS (siehe ...￼ ) ist das Angriffsziel nicht die Information auf dem Client (z. B. in Cookies),&amp;quot;&lt;br /&gt;
&lt;br /&gt;
Dieser (Halb-)Satz macht keinen Sinn, auch weil es bei XSS nicht nur im Informationen auf dem Cient geht. Vorschlag: &amp;quot;ist das Angriffsziel nicht die Ausführung von Skriptcode, sondern von unbefugten, schreibenden Aktionen im Kontext des angemeldeten Benutzers.&amp;quot;&lt;br /&gt;
&lt;br /&gt;
; 3. Session Riding&lt;br /&gt;
&lt;br /&gt;
Session Riding ist quasi nur ein anderer Begriff für CSRF. Die einzige Form von CSRF die mir bekannt ist, sind Angriffe mit Standard-Passwörtern auf HTTP-Basic-Auth geschützten Ressourcen.&lt;br /&gt;
&lt;br /&gt;
Im Grunde ist Session Riding aber nur ein Synonym für CSRF. Der Absatz ist daher auch nur eine Wiederholung der obigen Beschreibung.&lt;br /&gt;
&lt;br /&gt;
; 4. Zum Beispiel: &amp;quot;Durch einen präparierten Link auf einer Webseite wird die Änderung des Zugangspasswortes des Routers eingeleitet.&amp;quot;&lt;br /&gt;
&lt;br /&gt;
Etwas ungüngstig ausgedrückt. Besser wäre: &amp;quot;wird eine Anfrage zur Änderung des Zugangspasswortes an den Router gesendet. Hierbei sendet der Browser automatisch den Session Cookie mit, worüber die Webanwendung die Authentizität der Anfrage verifiziert und die Änderung durchführt.&amp;quot;&lt;br /&gt;
&lt;br /&gt;
== G 5.WA18 Clickjacking (Matthias) ==&lt;br /&gt;
&lt;br /&gt;
Hier stellt sich mir nur die allgemeine Frage, ob Clickjacking, bzw. der Schutz davor tatsächlich einem Grundschutz zuzurechnen ist. Persönlich würde ich dies nicht tun.&lt;br /&gt;
&lt;br /&gt;
== M 2.WA02 Dokumentation der Architektur von Web-Anwendungen (Matthias) ==&lt;br /&gt;
&lt;br /&gt;
; Verantwortlich für die Umsetzung&lt;br /&gt;
Hier wäre auch die Nennung des &amp;quot;Architekten&amp;quot; sinnvoll&lt;br /&gt;
 &lt;br /&gt;
; Fehlende Bestandteile der Dokumentation:&lt;br /&gt;
* Schutzbedarf des Systems sowie der verarbeiteten Daten&lt;br /&gt;
* Schützenswerte Daten und Funktionen (Assets)&lt;br /&gt;
* Betriebliche Anforderungen an die Sicherheit bzw. eingesetzte Plattform&lt;br /&gt;
* Dokumentierte Konfigurationseinstellungen &lt;br /&gt;
* BIA (RTO, RPO)&lt;br /&gt;
* Schnittstellen&lt;br /&gt;
* Trust Boundaries&lt;br /&gt;
* Akteure (bzw. Trust Level)&lt;br /&gt;
* Sicherheitsannahmen&lt;br /&gt;
* Geltende Compliance-Anforderungen (BDSG, PCI DSS, etc.)&lt;br /&gt;
&lt;br /&gt;
; Benutzermanagement&lt;br /&gt;
&lt;br /&gt;
Wenn damit das Identity Management gemeint ist, gehört das Dokumentiert, ist aber keine Sicherheitsfunktion. Oder ist hiermit das Rollen- und Berechtigungskonzept gemeint? Grenzt sich aus meiner Sicht schwer mit dem Thema Authentisierung ab. &lt;br /&gt;
&lt;br /&gt;
; Prüffragen&lt;br /&gt;
&lt;br /&gt;
Hier fehlt etwas in Bezug auf Sicherheitsanforderungen. Beispiel: &amp;quot;Werden Sicherheitsanforderungen an den Betrieb während der Entwicklung abgestimmt und dokumentiert&amp;quot;&lt;br /&gt;
&lt;br /&gt;
== M 2.WA12 Entwicklung und Erweiterung von Anwendungen (Markus) ==&lt;br /&gt;
; &amp;quot;Es sollte darauf geachtet werden, dass Sicherheitsanforderungen&lt;br /&gt;
vollständig durch Sicherheitsmechanismen erfüllt und zur Erstellung von&lt;br /&gt;
Testfällen festgehalten werden.&amp;quot; --&amp;gt; Bessere Formulierung würde aussagen, dass die Sicherheitsanforderungen durch Testfälle verifiziert werden.&lt;br /&gt;
&amp;quot;(z. B. durch Kommentare im&lt;br /&gt;
Quelltext). Somit ist der Quelltext zu einem&amp;quot; --&amp;gt; Das ist kein empfehlenswerter Programmierstiel! Raus mit diesem Kommentar&lt;br /&gt;
;&amp;quot;Zum Schutz vor dem Verlust bereits entwickelter und verworfener&lt;br /&gt;
Lösungen sowie zu Dokumentationszwecken sollte die Historie der&lt;br /&gt;
Änderungen festgehalten werden (z. B. durch ein Revisionssystem).&amp;quot; --&amp;gt; Auch diesen Absatz können wir streichen - Kein professioneller Programmierer arbeitet ohne Versionierugssystem.&lt;br /&gt;
;&amp;quot;Bei Web-Anwendung sollten die Webseiten auf Konformität zu dem&lt;br /&gt;
verwendeten Standard (z. B. HTML-Standard) getestet werden. Dadurch&lt;br /&gt;
können unvorgesehene Seiteneffekte aufgrund einer Fehlinterpretation&lt;br /&gt;
seitens der Browser vermieden werden.&amp;quot; --&amp;gt; Könnte man noch um &amp;quot;Die Software ist in möglichst vielen Browsern zu testen&amp;quot; erweitern.&lt;br /&gt;
;Generell geht der Autor leider nicht auf die Rollen &amp;amp; Rechte Verteilung ein. Mir fehlt der Hinweis, das es eine personelle Trennung zwischen Entwicklung, Test und Betrieb geben muss.&lt;br /&gt;
;Zum Thema Wartung / Betrieb --&amp;gt; Hier wird keine Aussage getroffen bezüglich Log_Files. Dieses Thema kann kritische Auswirkungen haben, Bsp.: logging ganzer HTTP-Requests im LogLevel=Debug.&lt;br /&gt;
; &amp;quot;Produktspezifische Sicherheitsfunkionalität&amp;quot; - Dieser Absatz ist gefährlich - der Angreifer ist nicht zur Verwendung dies Zielbrowsers gezwungen. Deshalb können Browser-spez. Sicherheitsfunktionen nur als Add-ON gewertet werden.&lt;br /&gt;
; &amp;quot;Festlegung der Entwicklungsumgebung&amp;quot; - Dieser Absatz geht nicht auf die zu verwendenden Testdaten ein. Der Hinweis, dass Live-Daten / Kundendaten nichts in Test- &amp;amp; Entwicklungsumgebungen zu suchen haben fehlt!!!&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== M 2.WA24 Web-Tracking (Matthias) ==&lt;br /&gt;
&lt;br /&gt;
; Letzter Absatz: &amp;quot;Falls eine Auswertung von Nutzerdaten, insbesondere personenbezogener Daten, .. &amp;quot;&lt;br /&gt;
&lt;br /&gt;
Hier sollte denke ich besser von personenbeziehbaren Daten gesprochen Werten. Dies betrifft etwa die Zuordnung von Surfverhalten zu einer bestimmten Person. Dies sollte stets nach den Prinzipien Datensparsamkeit und Datenvermeidung, Erforderlichkeit, sowie Zweckbindung erfolgen. Ist Webtracking nicht personenbeziehbar ist dies kein Thema für den Datenschutz.&lt;br /&gt;
&lt;br /&gt;
== M 4.WA04 Authentisierung bei Web- Anwendungen (Matthias) ==&lt;br /&gt;
&lt;br /&gt;
: Verantwortlich fuer Umsetzung &lt;br /&gt;
sollte in erster Linie beim Architekturen und in zweiter beim Entwickler liegen&lt;br /&gt;
; Vermischung von Authentisierung und Session Management &lt;br /&gt;
&lt;br /&gt;
Bei diesem Baustein findet eine ziemlich große Vermischung von Anforderung an die Authentisierung und das erst in &amp;quot;M 4.WA06 Session-Management bei Web- Anwendungen&amp;quot; behandelte Session Management statt (Beispiel: &amp;quot;Remember-Me-Funktion&amp;quot;). Beide Themen sollten sinnvollerweise getrennt voneinander zu betrachten und aufeinander zu beziehen.&lt;br /&gt;
&lt;br /&gt;
; Verwendung von Frameworks&lt;br /&gt;
&lt;br /&gt;
Die Anforderung ist schon ein wenig eingeschränkt. Besser passt hier denke ich die &amp;quot;Abbildung der Authentisierung über Standardkomponenten (Bibliotheken oder Frameworks)&amp;quot;. &lt;br /&gt;
&lt;br /&gt;
; Remember-Me-Funktion&lt;br /&gt;
&lt;br /&gt;
Siehe oben, gehört zum Session Management. Das ließt sich im übrigen so, als ob eine Webanwendung Credentials auf dem Client abhängt. &lt;br /&gt;
&lt;br /&gt;
; Grenzwerte für gescheiterte Anmeldeversuche&lt;br /&gt;
&lt;br /&gt;
Diese Empfehlung ist allgemein falsch, da sie sehr von der betrachteten Anwendung abhängt. Besser wäre hier allgemein von Mechanismen zur Verhinderung von automatisierten Angriffen zu sprechen (Anti-Automatisierung). &lt;br /&gt;
&lt;br /&gt;
Etwa umsetzbar durch&lt;br /&gt;
* Sperrung nach x Anmeldeversuchen&lt;br /&gt;
* Throttling&lt;br /&gt;
* Captchas&lt;br /&gt;
* Sicherheitsfragen&lt;br /&gt;
&lt;br /&gt;
Das allgemeine Sperren kann leicht für das gezielte Aussperren von Benutzern (User Lockout) verwendet werden. Was etwa bei Trading-Anwendungen nicht funktioniert.&lt;br /&gt;
&lt;br /&gt;
; Automatisiertes Zurücksetzen von Authentisierungsdaten&lt;br /&gt;
&lt;br /&gt;
Würde ich besser als &amp;quot;Passwort-Reset&amp;quot; bezeichnen.&lt;br /&gt;
&lt;br /&gt;
Weiterhin fehlt hier der Hinweis, dass statt ein automatisiertes Zurücksetzen, ein Mechanismus zu empfehlen ist, bei dem über ein hinterlegtes Sicherheitsmerkmal (Handy-Nummer oder E-Mail-Adresse) vom Benutzer zunächst eine Verifikation durchgeführt wird. Beispielsweise durch einen erhaltenen Link. Erst dann darf eine Änderung des Passwortes durch den Benutzer erfolgen.&lt;br /&gt;
&lt;br /&gt;
; Registrierung nicht behandelt&lt;br /&gt;
&lt;br /&gt;
Es existiert hier kein Punkt, der die sichere Implementierung von Benutzerregistrierungen behandelt.&lt;br /&gt;
&lt;br /&gt;
; Verweis auf Externalisierung fehlt.&lt;br /&gt;
&lt;br /&gt;
Statt die Authentisierung selbst durchzuführen kann eine Anwendung hierzu auf eine externe Komponente (Beispiel: SiteMinder oder Kerberos) zurückgreifen.&lt;br /&gt;
&lt;br /&gt;
; Verweis auf Behandlung von Credentials fehlt&lt;br /&gt;
&lt;br /&gt;
Auch wenn das  in &amp;quot;M 4.WA15 Schutz vertraulicher Daten bei Web- Anwendungen&amp;quot; ausführlich behandelt wird, sollte in diesem Baustein bereits auf den angemessenen Schutz von Authentisierungsdaten bei Übertragung und Speicherung hingewiesen werden.&lt;br /&gt;
&lt;br /&gt;
== M 4.WA05Umfassende Ein- und Ausgabevalidierung bei Web-Anwedungen (Markus) ==&lt;br /&gt;
; &amp;quot;Ablehnung der Daten im&lt;br /&gt;
Fehlerfall&amp;quot; --&amp;gt; Hier könnte man noch auf Tar-Pits eingehen - nur ein Vorschlag.&lt;br /&gt;
&lt;br /&gt;
== M 4.WA06Session-Management bei Web-Anwendungen (Markus, Matthias) ==&lt;br /&gt;
; &amp;quot;Übertragung der SessionID mittels GETRequest&amp;quot; --&amp;gt; Hier fehlt der Hinweis, dass die Lebensdauer dieser SessionIds kurz/kürzer sein muss, als im Falle der Speicherung im Cookie.&lt;br /&gt;
&lt;br /&gt;
([[User:Mrohr|Matthias]]) Die Anmerkung verstehe ich ehrlich gesagt ueberhaupt nicht, zumal das SM haeufig transparent zwischen Cookies und URL Rewriting wechselt. Wozu soll das gut sein? Wie soll das geschehen? Idealerweise sollte die Session ID niemals in die URL geschrieben werden, das sollte eigentlich genuegen.&lt;br /&gt;
&lt;br /&gt;
; &amp;quot;Verschlüsselte Übertragung von SessionIDs&amp;quot; --&amp;gt; Hier fehlt der Hinweis auf den Beast-Exploit. TLS Version &amp;gt; 1.0 verwenden!&lt;br /&gt;
&lt;br /&gt;
([[User:Mrohr|Matthias]]) Solange hier nicht auf eine explizite TLS Version eingegangen wird, sollte meiner grossen Ueberzeugung nach hier auch auf keine Exploits etc. eingagen werden, das gehoert an andere Stelle.&lt;br /&gt;
&lt;br /&gt;
; ([[User:Mrohr|Matthias]]) Weiterhin:&lt;br /&gt;
&lt;br /&gt;
 Es dürfen keine extern bekannten oder erratbaren Daten (z. B. IP-Adresse, Uhrzeit) in die Berechnung der SessionID einfließen.&lt;br /&gt;
&lt;br /&gt;
Die Aussage finde ich etwas problematisch, wichtiger ist, dass die Entropie ausreichend hoch ist. Haeufig werden etwa IPs von Load Balancern in die Session ID hineingeschrieben.&lt;br /&gt;
&lt;br /&gt;
 - Domain (z. B. webapp.domain.tld),&lt;br /&gt;
 - Path (z. B. /webapp/),&lt;br /&gt;
 - Secure und&lt;br /&gt;
 - HttpOnly.Beschränkte Sitzungsdauer&lt;br /&gt;
&lt;br /&gt;
Das sieht so aus, als ob es empfehlenswert ist, das Domain-Tag zu verwenden, das ist es sicherlich nicht. Was macht hier der Hinweis &amp;quot;Beschraenke Sizuungsdauer&amp;quot;?&lt;br /&gt;
&lt;br /&gt;
== M 4.WA07Fehlerbehandlung durch Web-Anwendungen (Markus) ==&lt;br /&gt;
; Konsistenter / Inkonsistener Zustand einer Webanwendung und der daraus resultierende Datenverlust: Hier fehlen mir die Punkte: DOS, Priv.Escalation, CodeExecution.&lt;br /&gt;
; Vermeidung vertraulicher Informationen in Fehlermeldungen --&amp;gt; Fehlermeldungen sollten ebenfalls eine Systeminformationen preisgeben (Softwareversion, Patchlevel, etc.)&lt;br /&gt;
; Abbruch des Vorgangs nach Auftreten eines Fehlers --&amp;gt; TarPits scheinen dem Autor umbekannt zu sein :)&lt;br /&gt;
; &amp;quot;Werden Fehler möglichst von der gleichen Komponente behandelt, in der&lt;br /&gt;
der Fehler aufgetreten ist?&amp;quot; --&amp;gt; Das &amp;quot;möglichst&amp;quot; sollten wir streichen.&lt;br /&gt;
&lt;br /&gt;
== M 4.WA08Schutz vor automatisierter Nutzung von Web-Anwendungen (Markus) ==&lt;br /&gt;
; &amp;quot;Brute-Force-&lt;br /&gt;
Angriffe (z. B. Erraten von Zugangsdaten) und Enumeration-Angriffe (z. B.&lt;br /&gt;
automatisiertes Ermitteln von gültigen Login-Namen)&amp;quot; -- die Beispiele sind identisch - besser Beispiele suchen, z.b. URL-Enumeration&lt;br /&gt;
&lt;br /&gt;
([[User:Mrohr|Matthias]]) Das sehe ich anders. Brute-Forcing bezieht auf Passwoerter und Enumeration auf Benutzernamen, etwa durchs hochzaehlen. Auch wenn ich zustimmen muss, dass die nicht ganz gluecklich gewaehlt wurden. Stann &amp;quot;Erraten von Zugangsdaten&amp;quot; wuerde ich besser von &amp;quot;Erraten von Passwoertern&amp;quot; sprechen. Oder wie gesagt gleich auch auf andere Beispiele (etwa Object ID Enumeration) beziehen.&lt;br /&gt;
&lt;br /&gt;
== M 4.WA11Sichere Konfiguration von Web-Anwendungen (Markus) ==&lt;br /&gt;
; &amp;quot;Sicherer Umgang mit TLS/SSL&amp;quot; -- Hier fehlt der Hinweis, dass TLS-1.0 gebrochen ist&lt;br /&gt;
; &amp;quot;Zeichenkodierungskonfiguration&amp;quot; -- Ein Whitelisting abhängig von der Encodierung wäre ein weiterer Vorschlag&lt;br /&gt;
; &amp;quot;Restriktive Dateisystemberechtigungen&amp;quot; -- auch wenn es ein klassiker ist - der AS sollte ebenfalls mit von einem eingeschränkten Nutzer gestartet werden und nicht als root&lt;br /&gt;
; Administration Consolen:zur Ergänzen: Wenn diese nicht benötigit, sollten derartige Applikationen nicht deployed werden, unabhängig von möglichen Zugangsbeschränkungen.&lt;br /&gt;
&lt;br /&gt;
([[User:Mrohr|Matthias]]) Sorry, meiner Meinung nach hat die Bewertung von Kryptoverfahren hier abslut nichts zu suchen.Stattdessen sollte hier auf den entsprechenden [https://www.bsi.bund.de/ContentBSI/Publikationen/TechnischeRichtlinien/tr02102/index_htm.html Empfehlung des BSI] verwiesen werden, auch wenn dieses Dokument derzeit noch etwas outdated zu sein scheint.&lt;br /&gt;
&lt;br /&gt;
== M 4.WA13Kontrolliertes Einbinden von Daten und Inhalten bei Web-Anwendungen (Markus) ==&lt;br /&gt;
; Datei-Upload: Bei einem Upload werden Dateien durchaus in TEMP-Verzeichnissen gesammelt und danach weiterverarbeitet. Diese TEMP-Verzeichnisse sind im Rahmen einer Sicherheitsanalyse zu betrachten -&amp;gt; Möglicher (unbefugter) Zugriff auf weitere Uploads&lt;br /&gt;
; Upload komprimierter Dateien / großer Dateien birgt die Gefahr von DOS Angriffen&lt;br /&gt;
; Upload von Dateien kann bei weiterem Parsing zu Speicherengpässen führen --&amp;gt; DOS-Angriffe auf Thread-Local etc.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== M 4.WA14Restriktive Herausgabe sicherheitsrelevanter Informationen bei Web-Anwendungen (Markus, Matthias) ==&lt;br /&gt;
OK - Keine Anmerkungen von mir.&lt;br /&gt;
&lt;br /&gt;
([[User:Mrohr|Matthias]]) Von mir schon;)&lt;br /&gt;
&lt;br /&gt;
; ([[User:Mrohr|Matthias]]) Vermeidung von Kommentaren in ausgelieferten Webseiten&lt;br /&gt;
&lt;br /&gt;
Das ist leider total falsch, wir brauchen haeufig Komentare, aus Kompatibilitaetsgruenden. So wird etwa der JavaScript-Block haeufig auskommentiert.&lt;br /&gt;
&lt;br /&gt;
Wurde stattessen besser von sicherheitsrelevanten Kommentaren sprechen und als Massnahme generell Entwicklerkommentare ueber Sprachkonstruktre (etwa JSP) durchzufuehren.&lt;br /&gt;
&lt;br /&gt;
; ([[User:Mrohr|Matthias]]) Löschen nicht benötigter Dateien&lt;br /&gt;
&lt;br /&gt;
Hier wurde ich ggf. Dateien von Versionisierungstools (etwa Subversion) erwaehnen, das sehen wir schon recht haeufig.&lt;br /&gt;
&lt;br /&gt;
Statt Dateien einfach nur zu loeschen (was in der Praxis haeufig nicht so einfach ist) bietet es sich zudem an, den Zugriff auf bestimmte Dateien oder Dateitypen generell zu sperren, etwa mittels ACL im Apache.&lt;br /&gt;
&lt;br /&gt;
; ([[User:Mrohr|Matthias]]) Gibt die Web-Anwendung ausschließlich neutrale Fehlermeldungen aus und sind diese im Quelltext identisch? {E: C}&lt;br /&gt;
&lt;br /&gt;
Persoenlich verstehe ich das nicht. Wieseo neutrale Fehlermeldung? Das macht fuer mich nur beim Login Sin. Hierzu existiert in dem Text auch keinerlei Bezug. Ich wuerde das daher besser entfernen und im Rahmen der Fehlerbehandlung diskutieren. Mindestens sollte hier jedoch besser von &amp;quot;sicherheitsunbedentlichen Fehlermeldungen&amp;quot; oder so gesprochen werden.&lt;br /&gt;
&lt;br /&gt;
; ([[User:Mrohr|Matthias]]) Wird der Referrer bei Verlassen der Web-Anwendung (z. B. durch einen Link auf eine externe Seite) gefiltert?&lt;br /&gt;
&lt;br /&gt;
Diesen Punkt sehe ich als sehr Fallabhengig an. Es kann fuer seiten durchaus wuenschenswert sein, dass der Referer weitergegeben wird. Der Referer sollte natuerlich keine sensiblen Informationen enthalten, was ja an anderer Stelle (etwa Session Management) vorgegeben wird bzw. gegeben werden sollte.&lt;br /&gt;
&lt;br /&gt;
== M 4.WA15Schutz vertraulicher Daten bei Web-Anwendungen (Markus, Matthias) ==&lt;br /&gt;
; Sichere kryptographische Algorithmen:&lt;br /&gt;
 Hier fehlt mir eine Liste der aktuelle als sicher geltenden Verfahren.&lt;br /&gt;
([[User:Mrohr|Matthias]]) Am Besten Referenz auf [https://www.bsi.bund.de/ContentBSI/Publikationen/TechnischeRichtlinien/tr02102/index_htm.html https://www.bsi.bund.de/ContentBSI/Publikationen/TechnischeRichtlinien/tr02102/index_htm.html]&lt;br /&gt;
&lt;br /&gt;
; Schlüssel&lt;br /&gt;
 Das die Schlüssel bestimmten Formaten entsprechen müssen ist ok - aber das Schlüsselmanagement wird gar nicht besprochen?&lt;br /&gt;
; Schutz der Daten im Browsercache&lt;br /&gt;
 Skripte und Browserplugins können ebenfalls auf den Browsercache zugreifen - diese werden hier nicht erwähnt.&lt;br /&gt;
&lt;br /&gt;
([[User:Mrohr|Matthias]]) Weiterhin entsprechen die vorgeschlagenen HTTP Headern nicht dem Best Practice:&lt;br /&gt;
&lt;br /&gt;
 Cache-control: no-cache, no-store&lt;br /&gt;
 Pragma: no-cache&lt;br /&gt;
 Expires: -1&lt;br /&gt;
&lt;br /&gt;
([[User:Mrohr|Matthias]]) Die Empfehlung hinsichtlich des manuellen Leerens des Browsercaches sollte wenn dann nur bei Anwendungen mit sehr hohem Schutzbedarf in Erwaegung gezogen werden. Wichtiger waere da schon eher die richtigen Cache-Header zu verwenden. Solche Empfehlungen ihm Rahmen des Grundschutzes aber wirklich nichts zu suchen. &lt;br /&gt;
&lt;br /&gt;
; Maskierung von Passwörtern &lt;br /&gt;
 Dies schützt bei der Eingabe nur vor ShoulderSurfing nicht vor Skripten oder Plugins die diese an andere Server posten.&lt;br /&gt;
&lt;br /&gt;
([[User:Mrohr|Matthias]]) Das ist voellig korrekt. Aber inwieweit ist die Aussage Passwort-Felder zu verwenden fehlerhaft bzw. hier unzureichend beschrieben?&lt;br /&gt;
&lt;br /&gt;
; Sicherung von Zugangsdaten:&lt;br /&gt;
 Zugangsdaten in einer Datei abzulegen - wenn auch ausserhalb des WebRoots ist keine gute Idee.&lt;br /&gt;
([[User:Mrohr|Matthias]]) Es ist sicher nicht die schoenste Variante, es laesst sich aber nunmal in vielen Faellen nicht vermeiden. Deshalb fordert der [http://code.google.com/p/owasp-asvs/wiki/Verification_V2 ASVS] hier etwa auch nicht mehr. Fuer den hier angestreben Grundschutz sollte das meiner Meinung nach ausreichen.&lt;br /&gt;
; Schutz von Quelltexten:&lt;br /&gt;
 Hier würde ich property files mit aufnehmen. der hinweis auf web-inf/classes fehlt - warum?&lt;br /&gt;
 Bei include-befehlen sind die pfadangaben zu überdenken.&lt;br /&gt;
([[User:Mrohr|Matthias]]) Wuerde property Dateien allgemein den Konfigurationsdateien zuordnen. Der Begriff &amp;quot;Einzubindende Dateien&amp;quot; ist mir allrdings Neu&lt;br /&gt;
&lt;br /&gt;
([[User:Mrohr|Matthias]]) Weiterhin, fehlt ein genereller Bezug auf HTML 5 WebStorage, LSOs etc. Zumindest in abstrakter Form, so dass diese dadurch indirekt addresiert werden. Egal, in dem relevanten Punkt will der Autor meiner Meinung nach nur einige Beispiele nennen, das sollte keinen Anspruch auf Vollsteandigkeit haben muessen.&lt;br /&gt;
&lt;br /&gt;
; ([[User:Mrohr|Matthias]]) - Durch dieses Attribut wird die Gültigkeit des Cookies auf die Domäne der Web-Anwendung beschränkt.&lt;br /&gt;
Nein, das ist leider total falsch. Das Domain-Attribut stellt eine Aufweichung der Cookie-Gueltigkeit dar und nicht anders herum. Gewoehlich sind Cookies immer Host-Cockies und das sollte auch so bleiben. Die Empfehlung sollte entfernt werden.&lt;br /&gt;
&lt;br /&gt;
== M 4.WA16Zugriffskontrolle bei Web-Anwendungen (Markus) ==&lt;br /&gt;
; Zugriffskontrolle via Frameworks:&lt;br /&gt;
 Dieser Punkt (Frameworks) wird nur in einem Satz erwähnt. Es werden keine Bespiele gegeben - Das ist zu wenig.&lt;br /&gt;
 Es müssen alle Zugriffe geschützt werden. Eine Protokollierung aller Zugriffe mit den nötigen Informationen ist ebenfalls empfehlenswert.&lt;br /&gt;
; Datei Upload:&lt;br /&gt;
 Die Gefahr eines DOS wird hier nicht erwähnt.&lt;br /&gt;
&lt;br /&gt;
== M 4.WA19Verhinderung von Cross-Site Request Forgery (CSRF, XSRF) (Markus, Matthias) ==&lt;br /&gt;
; Verantwortliche: &lt;br /&gt;
 Entwickler und Admins!&lt;br /&gt;
([[User:Mrohr|Matthias]]) Korrekt, wobei auch in der Reihenfolge&lt;br /&gt;
&lt;br /&gt;
; Anti-CSRF-Token in hidden fields:&lt;br /&gt;
 Das ist keine gute Idee. Ich würde das streichen!&lt;br /&gt;
&lt;br /&gt;
([[User:Mrohr|Matthias]]) Watt? Anti-CSRF-Tokens in Hidden Fields sind die Standard-Massnahme. Wie denn sonst? Bitte nicht streichen!!! &lt;br /&gt;
&lt;br /&gt;
([[User:Mrohr|Matthias]]) Die Technik bei der die Session ID als Anti-CSRF-Token verwendet wird, wird als Double-Cookie Submit bezeichnet, das sollte hier referenziert werden.&lt;br /&gt;
&lt;br /&gt;
; Umgehung von Schutzmechanismen:&lt;br /&gt;
 Man in the middle hat keinen direkten Bezug zu CSRF! Das würde ich streichen.&lt;br /&gt;
([[User:Mrohr|Matthias]]) Der Hinweis ist korrekt. Wovon der Autor hier spricht ist Session Replay nicht CSRF.&lt;br /&gt;
&lt;br /&gt;
; Frameworks:&lt;br /&gt;
 Gute Idee - aber es gibt auch Features in den ApplicationServern die CSRF unterbinden - warum wird das nicht besprochen?&lt;br /&gt;
&lt;br /&gt;
([[User:Mrohr|Matthias]]) Sehe ich persoenlich nicht so, da CSRF primaer ein Applikations-Fehler ist, und auch in der Applikation und nicht im Environment (AppServer) geloest werden sollte. Auch wenn das manchmal ggf. die einzig machbare Loesung darstellt.&lt;br /&gt;
&lt;br /&gt;
([[User:Mrohr|Matthias]]) Was generell fehlt, ist ein Hinweis darauf, dass schreibende Requests generell per HTTP Post abgewickelt werden sollten, da HTTP Get keine &amp;quot;Safe Method&amp;quot;  (siehe HTTP 1.1, RFC 2616) ist.&lt;br /&gt;
&lt;br /&gt;
== M 4.WA20Sicherer Entwurf der Logik von Web-Anwendungen (Markus, Matthias) ==&lt;br /&gt;
; Rollbacks:&lt;br /&gt;
 Tritt ein Fehler auf muss die Applikation einen konsistenten Datenstand zurück lassen. Das wird hier nicht erwähnt.&lt;br /&gt;
; RaceConditions:&lt;br /&gt;
 Fehler in der Geschäftslogik können auch durch zwei gleichzeitige Sessions auf einer Webapplikation auftreten - das wird hier nicht besprochen.&lt;br /&gt;
&lt;br /&gt;
([[User:Mrohr|Matthias]]) Ehrlich gesagt kann ich nicht ganz nachvollziehen, was der Sichere Entwurf der Logik von Web-Anwendungen mit dem Verzicht auf aktive Inhalte zu tun hat. Unabhaengig davon sollte man solche unsinnigen Aussagen im Jahre 2012 nicht mehr treffen, damit macht man sicht nur laecherlich.&lt;br /&gt;
&lt;br /&gt;
Nichts desto trotz, was hier als &amp;quot;echte&amp;quot; Massnahmen erwaehnt werden sollte sind:&lt;br /&gt;
* Verhinderung von Race Conditions, aber nicht nur durch Concurrent Sessions sondern auch durch Singletons (TOCTOU)&lt;br /&gt;
* Enforcements von Workflows, etwa durch die Verwendung von State Machines oder Request Tokens (auch bekannt als Site Usage Enforcement)&lt;br /&gt;
* Fail Securely (bzw. Verweis)&lt;br /&gt;
* Serverseitige Abbildung der Anwendungslogik, zumindest wenn diese sicherheitsrelevant sit&lt;br /&gt;
&lt;br /&gt;
== M 4.WA22Verhinderung der Blockade von Ressourcen (DoS) bei Web-Anwendungen (Markus, Matthias) ==&lt;br /&gt;
; Datenspeicher:&lt;br /&gt;
 Neben dem Datenspeicher sollte auch der RAM-Verbrauch pro Thread der Applikation limitiert werden.&lt;br /&gt;
([[User:Mrohr|Matthias]]) Stimmt, ich wuerde hier sogar allgemein von Ressourcenverbrauch am Beispiel RAM und Datenspeicher, sprechen&lt;br /&gt;
&lt;br /&gt;
; Voraggregation von Daten / Caching&lt;br /&gt;
 Dieser Punkt fehlt: Stark ressourcen belastende Anfragen können auch in Lastarmen Zeiten vorberechnet werden.&lt;br /&gt;
([[User:Mrohr|Matthias]]) Stimmt, koennte noch als Anmerkung bei &amp;quot;Cachen von Anfragen&amp;quot; hinzugefuegt werden&lt;br /&gt;
&lt;br /&gt;
; ([[User:Mrohr|Matthias]]) Prueffrage: &amp;quot;Wird ein möglicher Überlauf von Protokolldaten... verhindert&amp;quot;&lt;br /&gt;
&lt;br /&gt;
Ist eine etwas eingeschrankte Sicht. Wurde hier eher von Ueberlauf von Speicherplaz zu Beispiel im Rahmen der Protokollierung sprechen&lt;br /&gt;
&lt;br /&gt;
; ([[User:Mrohr|Matthias]]) Durchfuehrung von Lasttests zur Identifikation ressourcenintensiver Operationen&lt;br /&gt;
&lt;br /&gt;
Der Hinweis waere ggf. erwahnenswert&lt;br /&gt;
&lt;br /&gt;
; ([[User:Mrohr|Matthias]]) Hinweis auf nicht-angemeldeten Bereich&lt;br /&gt;
&lt;br /&gt;
Das Risiko durch rechenintensive Operationen durch einen DoS betroffen zu sein ist natuerlich fuer gewoehlich um so groesser, wenn diese im anonymen Bereich angeboten wird. Der Hinweis ware ggf. ebenfalls hilfreich.&lt;br /&gt;
&lt;br /&gt;
== M 4.WA25Verhinderung von Clickjacking (Markus) ==&lt;br /&gt;
Ok - das passt soweit.&lt;br /&gt;
&lt;br /&gt;
([[User:Mrohr|Matthias]]) Stimmt, auch wenn ich &amp;quot;Angreifer&amp;quot; in dem Beispiel eher als &amp;quot;Webseitenbetreiber&amp;quot; beschreiebn wuerde, da er nicht wirklich aktiv einen Angriff durchfuehrt, oder? Bitte nochmal ueber meinen Hinweis aus G 5.WA18 nachdenken: Ist Clickjacking-Schutz tatsaechlich Grundschutz? Ich bin mir da selber nicht so wirklich sicher.&lt;br /&gt;
&lt;br /&gt;
== M 5.WA21Sichere Anbindung von Hintergrundsystemen an Web-Anwendungen (Markus) ==&lt;br /&gt;
; Verantwortliche:&lt;br /&gt;
 Architekten fehlen. Entwickler müssen die Views umsetzen und die Datasource entsprechend einbinden - die fehlen hier ebenfalls.&lt;br /&gt;
; DirectorySystem Beispiel:&lt;br /&gt;
 Das DirectorySystem wird in dem angegeben Beispiel zum Single Point of Failure - das wird verschwiegen.&lt;br /&gt;
; Firewalls:&lt;br /&gt;
 Das sind fachlich-blinde Systeme. Was ist mit WAFs / IDS / IPS etc.?&lt;br /&gt;
([[User:Mrohr|Matthias]]) Stimmt, das hat in diesem Baustein nichts zu suchen&lt;br /&gt;
&lt;br /&gt;
; ([[User:Mrohr|Matthias]]) Typische Hintergrundsysteme&lt;br /&gt;
Hier fehlt irgendwie &amp;quot;Middleware&amp;quot;, die ist denke ich nicht immer Legacy&lt;br /&gt;
&lt;br /&gt;
== M 5.WA23Systemarchitektur einer Web-Anwendung (Markus) ==&lt;br /&gt;
; Verantwortliche:&lt;br /&gt;
Auch hier fehlend wieder die Architekten. &lt;br /&gt;
([[User:Mrohr|Matthias]]) Stimmt, habe das Dokument mal komplett durchgesucht.Tatsaechlich wird der &amp;quot;Architekt&amp;quot; niemals genannt, das scheint also eher ein grundseatzliches Problem zu sein. Der Administrator hat hier aber nun wirklich nichts zu suchen.&lt;br /&gt;
&lt;br /&gt;
; Virtualisierung:&lt;br /&gt;
Virtualisierung bietet weitere Angriffsvektoren (z.B.: Hypervisor) die eine &amp;quot;Blech&amp;quot;Farm nicht bietet.&lt;br /&gt;
&lt;br /&gt;
([[User:Mrohr|Matthias]]) Genau, wobei auch der ganze Bereich geshareter Plattformen (z.B. By SharePoint) hier fehlt.&lt;/div&gt;</summary>
		<author><name>Mrohr</name></author>	</entry>

	<entry>
		<id>https://wiki.owasp.org/index.php?title=Talk:OWASP_Review_BSI_IT-Grundschutz_Baustein_Webanwendungen&amp;diff=130189</id>
		<title>Talk:OWASP Review BSI IT-Grundschutz Baustein Webanwendungen</title>
		<link rel="alternate" type="text/html" href="https://wiki.owasp.org/index.php?title=Talk:OWASP_Review_BSI_IT-Grundschutz_Baustein_Webanwendungen&amp;diff=130189"/>
				<updated>2012-05-21T13:29:29Z</updated>
		
		<summary type="html">&lt;p&gt;Mrohr: /* &amp;quot;G 5.WA10 Fehler in der Web-Anwendungslogik&amp;quot; (Dennis) */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Since it's about a review of a document in German, all the discussions will be done in German :-)&lt;br /&gt;
&lt;br /&gt;
Diskussionen rund um den Review des &amp;quot;IT-Grundschutzbausteins Webanwendungen&amp;quot; finden hier statt, sinnvollerweise auf Deutsch :-)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Vorschlag für Kriterien, die an unser Review angelegt werden sollten (.kai) ==&lt;br /&gt;
&lt;br /&gt;
* Der Baustein soll alle wichtigen Themen der Entwicklung sicherer&lt;br /&gt;
Webanwendungen enthalten.&lt;br /&gt;
&lt;br /&gt;
* Der Baustein soll die verschiedenen Phasen der Software-Entwicklung&lt;br /&gt;
vollständig abdecken.&lt;br /&gt;
&lt;br /&gt;
* Der Baustein soll zwischen verbindlichen, prüfbaren Vorgaben und&lt;br /&gt;
unverbindlichen Empfehlungen sprachlich sauber unterscheiden (hier&lt;br /&gt;
spielt mein Auditorenblick eine Rolle). Vor allem soll der Baustein&lt;br /&gt;
verbindliche Anforderungen auch tatsächlich stellen. Alle&lt;br /&gt;
verbindlichen Anforderungen müssen unabhängig von der jeweiligen&lt;br /&gt;
Umgebung auch umsetzbar sein, d.h. sie müssen entsprechend generisch&lt;br /&gt;
sein.&lt;br /&gt;
&lt;br /&gt;
* Die Maßnahmen sollen nur in (begründbaren) Ausnahmen zu Empfehlungen&lt;br /&gt;
von OWASP im Widerspruch stehen.&lt;br /&gt;
&lt;br /&gt;
* Die Maßnahmen sollen verständlich und anwendbar sein.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== &amp;quot;Hilfsmittel&amp;quot; (Markus) ==&lt;br /&gt;
Ich würde das Script zur Vermeidung von Clickjacking wrappen und nicht als losen Skript-block in den Text einbinden - einfach schlechter Programmierstiel diese losen Blöcke.&lt;br /&gt;
Der Zugriff auf das Body-Element mit byTagName-Array[0] ist auch nicht wirklich gut. Ich halte Zugriffe über das DOM (klassisch), bei ID bzw. XPATH für besser. &lt;br /&gt;
&lt;br /&gt;
SQL-Injection Characters:&lt;br /&gt;
die Pipe fehlt hier zur Textkonatenierung&lt;br /&gt;
+ / - haben auch eine Bedeutung bei JOINs.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== &amp;quot;Goldene Regeln&amp;quot; (Matthias) ==&lt;br /&gt;
&lt;br /&gt;
Hier meine Anmerkungen zu diesem Dokument:&lt;br /&gt;
&lt;br /&gt;
; 1. Für mich fehlende Punkte&lt;br /&gt;
* Korrektur der Ursache (Root Cause) von Schwachstellen statt  Verhinderung deren Ausnutzung&lt;br /&gt;
* Bezug auf Minimierung der Angriffsfläche und Least-Privilege-Prinzip&lt;br /&gt;
* Bezug auf Defense-in-Depth-Prinzip&lt;br /&gt;
* Verwendung von getesteten Security APIs (z.B. OWASP ESAPI) statt selbstentwickelter Funktionen&lt;br /&gt;
* Bezug auf Externalisierung von Sicherheitsfunktionen, sowie deklerative vor programmatischer Sicherheit.&lt;br /&gt;
&lt;br /&gt;
; 2. Begriff &amp;quot;Web-Anwendung&amp;quot;&lt;br /&gt;
Würde ich generell durch &amp;quot;Webanwendung&amp;quot; ersetzen.&lt;br /&gt;
&lt;br /&gt;
; 3. Einleitung (&amp;quot;Web-Anwendungen stellen Funktionalität zur Verfügung, ...&amp;quot;)&lt;br /&gt;
&lt;br /&gt;
Wozu dient dieser Satz?&lt;br /&gt;
&lt;br /&gt;
; 4. &amp;quot;Die Architektur der Web-Anwendung ist im Sicherheitskonzept zu  dokumentieren.....&amp;quot; &lt;br /&gt;
&lt;br /&gt;
Ich fände es sinnvoller, wenn hier von der &amp;quot;Sicherheitsarchitektur&amp;quot; gesprochen wird, welche etwa neben den sicherheitsrelevanten Datenflüssen, sensible Komponenten, Entry Points, Akteure architekturelle Security Controls wie Authentisierung, Kryptographie und natürlich die Trust Boundaries beinhaltet.&lt;br /&gt;
&lt;br /&gt;
; 5. &amp;quot;Bei Web-Anwendungen handelt es sich häufig um spezielle Eigenentwicklungen....&amp;quot;&lt;br /&gt;
&lt;br /&gt;
Erstens würde ich hier den geläufigen Begriff &amp;quot;Individualsoftware&amp;quot; verwenden. Zweitens würde ich statt bestimmte SDLC-Phasen vorzugeben (die Begriffe &amp;quot;Softwareverteilung&amp;quot; und &amp;quot;Integration&amp;quot; sind mir bei Webanwendungen bisher noch nicht so häufig untergekommen), besser von der Notwendigkeit sprechen, Sicherheit in allen Entwicklungsphasen zu berücksichtigen, also eines SDLs.&lt;br /&gt;
&lt;br /&gt;
; 6. &amp;quot;Alle Ein- und Ausgaben der Web-Anwendung müssen in eine normalisierte Form überführt werden....&amp;quot;&lt;br /&gt;
&lt;br /&gt;
Normalisierung ist für mich nicht gleich Kanonsierung, auch wenn beide Begriffe häufig als synonym verwendet werden.  Der Unterschied wird in der [http://owasp-esapi-java.googlecode.com/svn/trunk_doc/2.0-rc4/org/owasp/esapi/Encoder.html API-Beschreibung der ESAPI] erklärt. Die Normalisierungs-Funktion ist allerdings schon vor einiger Zeit aus der ESAPI [https://lists.owasp.org/pipermail/esapi-dev/2010-January/000266.html rausgeflogen]. Die generelle Kanonisierung von Ausgaben halte ich dazu für nicht sinnvoll.&lt;br /&gt;
&lt;br /&gt;
Zweitens, finde ich den weiteren Text zwar grundsätzlich formal korrekt, aber so allgemein, dass dieser glaube ich niemandem so richtig etwas bringt.  &lt;br /&gt;
&lt;br /&gt;
Besser fände ich hier Ein- von Ausgabevalidierung grundsätzlich voneinander abzugrenzen. Etwa was ich per Eingabevalidierung (Längenprüfung, Casting, etc. per Whitelisting) und was mit Ausgebavalidierung (Enkodierung, Escaping, Parametrisierung) machen muss und kann.&lt;br /&gt;
&lt;br /&gt;
Eingabedaten können technisch zudem auch Werte eingelesener Property-Dateien sein. Muss ich die auch validieren? Ist das dann noch Grundschutz? &lt;br /&gt;
&lt;br /&gt;
; 7. &amp;quot;Für den Zugriff auf sensitive Funktionen oder Informationen muss die Web-Anwendung eine wirksame Authentisierung und Sitzungsverwaltung unterstützen. Die Eigenschaften der Sitzungs-ID müssen so gewählt werden, dass die Sitzung ausreichend geschützt ist. ....&amp;quot;&lt;br /&gt;
&lt;br /&gt;
Besser fände ich &amp;quot;eine Authentisierung, die über eine dem Schutzbedarf der Anwendung angemessene Stärke verfügt.&amp;quot; &lt;br /&gt;
&lt;br /&gt;
Eigentlich geht es doch mehr um den Schutz der Sitzungs-ID, da diese gewöhnlich im Verlauf einer Sitzung den Client authentisiert. Oder den Schutz des Zugriffs auf eine Sitzung. &lt;br /&gt;
&lt;br /&gt;
Zudem fehlt hier meiner Meinung nach der Hinweis auf die bevorzugte Verwendung getesteter Standardkomponenten.&lt;br /&gt;
&lt;br /&gt;
; 8. &amp;quot;Die Web-Anwendung sollte die zu übermittelnden Daten schützen.&amp;quot;&lt;br /&gt;
&lt;br /&gt;
Dies würde ich nur auf sensible Daten beziehen. Zusätzlich zu HTTPS würde ich hier schreiben, dass sensible Daten generell nicht in der URL übertragen werden dürfen.&lt;br /&gt;
&lt;br /&gt;
; 9. &amp;quot;Die Preisgabe interner Informationen (z.B. Kommentare, Fehlermeldungen)&amp;quot;&lt;br /&gt;
&lt;br /&gt;
Hier würde ich eher schreiben &amp;quot;(IN Kommentaren, Fehlermeldungen, HTTP Headern, etc.)&amp;quot;&lt;br /&gt;
&lt;br /&gt;
; 10. &amp;quot;Fehler müssen so behandelt werden, ... müssen Fehler bei der Autorisierung zu einer Verweigerung beim Zugriff auf die angeforderte Ressource führen.&amp;quot;&lt;br /&gt;
&lt;br /&gt;
Sprachlich: &amp;quot;Die Webanwendung muss sich stets in einem sicheren Zustand befinden. Beispielsweise müssen Fehler bei der Autorisierung zu einer Verweigerung des Zugriffs führen (Default-Deny-Strategie).&amp;quot;&lt;br /&gt;
&lt;br /&gt;
; 11. &amp;quot;Die Logging-Funktionen der Web-Anwendung müssen aufgetretene Ereignisse derart protokollieren, dass sicherheitskritische Vorfälle nachvollzogen werden können.&amp;quot;&lt;br /&gt;
&lt;br /&gt;
Hier würde hier eher von &amp;quot;allen sicherheitsrelevanten Ereignissen&amp;quot; sprechen.&lt;br /&gt;
&lt;br /&gt;
Weiterhin sollten insbesondere beim Logging der Datenschutz berücksichtigt werden, personenbezogene Daten also nach Möglichkeit nicht oder nur anonymisiert in technischen Logdateien protokolliert werden.&lt;br /&gt;
&lt;br /&gt;
; 12. &amp;quot;Alle Sicherheitsmechanismen (z.B. Authentisierung und Zugriffskontrolle) sind serverseitig zu implementieren und können nicht durch clientseitige Mechanismen ersetzt werden.&amp;quot;&lt;br /&gt;
&lt;br /&gt;
Die Aussage ist so nicht korrekt. Darüber hatten wir bereits bei der ASVS mehrfach diskutiert. &lt;br /&gt;
&lt;br /&gt;
Überall dort wo der Client angegriffen wird, also etwa bei RIAs (Stichwort DOM-Based XSS) müssen wir Security Controls clientseitig implementieren. Es gibt mittlerweile deshalb auch eine Portierung der ESAPI auf Javascript. Überall dort wo der Server oder Hintegrundsysteme angegriffen werden, ist die Aussage aber natürlich zutreffend.&lt;br /&gt;
&lt;br /&gt;
== &amp;quot;Gefährdungen&amp;quot; (Markus, Dennis, .... &amp;lt;Dein Name&amp;gt;) ==&lt;br /&gt;
; Generell:&lt;br /&gt;
Reference auf RFCs fehlen.&lt;br /&gt;
&lt;br /&gt;
==B.5.XX Web-Anwendungen ==&lt;br /&gt;
; 1. Erster Absatz - Letzter Satz: --Wieso werden hier nur HTML/XML Doks und Oberflächen angesprochen? Was ist der Unterschied zwischen einem HTML-Dok und einer Oberfläche? Was ist mit  Flash, etc.? Was ist mit WebSockets?&lt;br /&gt;
; 2. Stichpunkt &amp;quot;Protokollierung&amp;quot;: Sicherheits relevant ist ein sehr dehnbarer Begriff - Eine bessere Formulierung könnte sein: Zur Rekonstruktion von Nutzerhandlungen nötige Ereignisse (positve &amp;amp; negative) müssen protokolliert werden . . . &lt;br /&gt;
; 3. Absatz: &amp;quot;Abgrenzung des Bausteins&amp;quot;: &amp;quot;Die spez. Sicherheitsanforderungen an Web-Services werden in diesem Baustein nicht betrachtet&amp;quot; --&amp;gt; Wie so nicht? Was ist das Backend von einer Rest / AJAX-basierenden Webanwendung denn anderes als ein Web-Service? Diesen Satz würde ich entfernen.&lt;br /&gt;
; 4.Vorsätzliche Handlungen -&amp;gt; Web-Spoofing (G.5.87) -- Missverständliche Bezeichnung / Nomenklatur&lt;br /&gt;
; 5. Seite 4 : erste Zeile &amp;quot;Umsetzung&amp;quot;: &amp;quot;dafür umzusetztende Komponenten müssen die Webanwendung schützen...&amp;quot; - Hier fehlt mir der Hinweis, dass dieser Schutz verifiziert werden muss.&lt;br /&gt;
; 6 Seite 5: &amp;quot;Umsetzung&amp;quot; - Wir haben CSRF, D(D)os und SQL-Injection aber wo ist XSS?&lt;br /&gt;
; 7 Seite 7: &amp;quot;Die Sicherheitsfunktion wird ausschließlich clientseitig...&amp;quot; --&amp;gt; Warum muss der Angreifer überhaupt einen Browser umkonfigurieren? Was ist mit Proxies, Scripts, etc.? Ich würde das reduzieren darauf, dass rein Webbrowser-basierende Schutzfunktionen einfach umgangen werden können.&lt;br /&gt;
; 8 Seite 8: Die angesprochenen Punkte hinterlassen den Eindruck nicht vollständig zu sein: Mir fehlen Punkte wie &amp;quot;Outsourcing&amp;quot;, &amp;quot;KnowHow der Entwickler&amp;quot;, Tooling, Framework-Auswahl, etc.&lt;br /&gt;
; 9 Seite 9: Eigentlich möchte der Autor hier über Datenschutz sprechen. Abgesehen von den letzten drei Zeilen geht es aber nur um &amp;quot;User tracking&amp;quot; - Wo ist der Rest der Datenschutzproblematik? Warum der Fokuss auf Tracking? Mir ist das zu einseitig.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
tbd.&lt;br /&gt;
&lt;br /&gt;
; Wortwahl:&lt;br /&gt;
Ich stosse innerhalb der Texte immer wieder an die Worten '''Hintergrundsystem''' und '''Sicherheitskontext'''.&lt;br /&gt;
'''Hintergrundsystem:''' besseres Synonym?&lt;br /&gt;
'''Sicherheitskontext:''' nur weil es in den Texten um Sicherheit geht muss nicht an jeder Stelle immer wieder das Wort _Sicherheits_kontext eingebaut werden.&lt;br /&gt;
Bsp: &amp;quot;Erlangt ein Angreifer Kenntnis von einer solchen gültigen, aber nicht mehr genutzten SessionID, so kann er die Web-Anwendung im Sicherheitskontext des nicht abgemeldeten Benutzers weiter verwenden.&amp;quot; (G 5,WA12 Unzureichendes Session-Management von Web-Anwendungen)&lt;br /&gt;
Verbesserungsansansatz: ... so kann er die Web-Anwendung anstelle des eigentlichen Besitzers weiterhin verwenden.&lt;br /&gt;
&lt;br /&gt;
== &amp;quot;G 2.WA01 Mangelhafte Auswahl oder Konzeption von Web-Anwendungen&amp;quot; (Matthias) ==&lt;br /&gt;
&lt;br /&gt;
Nachdem ich mir diese Gefährdung durchgelesen hatte, fehlten mir ehrlich gesagt etwas die Worte. Nicht nur, dass hier fast jeder zweite Satz entweder falsch ist bzw. massive Fehler enthält oder ich diesen schlicht nicht verstehe, ist der ganze Text sprachlich wirklich enorm verbesserungsfähig. &lt;br /&gt;
&lt;br /&gt;
Na gut, ich konzentriere mich mal auf die fachlichen Punkte:&lt;br /&gt;
&lt;br /&gt;
; 1. Security Controls&lt;br /&gt;
Werden mal mit &amp;quot;Schutzmechanismen&amp;quot;, mal mit &amp;quot;Sicherheitskomponenten&amp;quot; und dann wieder als &amp;quot;Sicherheitsfunktionen&amp;quot; bezeichnet. Hier macht eine einheitliche Benennung sicherlich Sinn und ist weniger verwirrend.&lt;br /&gt;
&lt;br /&gt;
; 2. &amp;quot;Eine Web-Anwendung ist in der Regel ein verteiltes, komplexes System bestehend aus unterschiedlichen Komponenten (z. B. Webserver, Applikationsserver, Hintergrundsysteme)&amp;quot;&lt;br /&gt;
&lt;br /&gt;
Eine Webanwendung besteht sicher nicht aus einem Webserver- oder anderer infrastruktureller Komponenten, sondern ist Software welches diese nutzt.&lt;br /&gt;
&lt;br /&gt;
; 3. &amp;quot;Bei individuell entwickelten Web-Anwendungen sind im Allgemeinen die Frameworks, Komponenten und Schnittstellen im Rahmen der Konzeption auszuwählen und deren Einbindung und Absicherung zu betrachten....Im Gegensatz dazu ist bei der Konzeption von Web-Anwendungen auf Basis von Standardsoftware insbesondere auf die Auswahl der Software und die Konfiguration der Teilkomponenten zu achten&amp;quot;&lt;br /&gt;
&lt;br /&gt;
Wir unterscheiden im Rahmen von Webanwendungen eigentlich Free or Opensource Software (FOSS bzw. FLOSS), Standardsoftware und Individualsoftware voneinander. Wir unterscheiden nicht Frameworks von Standardsoftware. Frameworks können Teil von Standardsoftware sein, wie etwa bei SharePoint, SAP, etc, oder aber FOSS, wie etwa Spring. Die ganzen Absätze machen für mich daher keinen Sinn.&lt;br /&gt;
&lt;br /&gt;
; 4. &amp;quot;Eine Sicherheitsfunktion (z. B. Authentisierung, Autorisierung) wird nicht an einer Stelle umgesetzt und verwendet, sondern ist mehrfach in der Web- Anwendung realisiert. Wird diese Sicherheitsfunktion an den verschiedenen Stellen unterschiedlich umgesetzt, führt dies zu einem uneinheitlichen Sicherheitsniveau.&amp;quot;&lt;br /&gt;
&lt;br /&gt;
Natürlich ist die mehrfache Verwendung bestimmter Security Controls, beispielsweise von Zugriffskontrollen (Complete-Mediation) oder Validierung (Robustheit) erstrebenswert. Was der Autor hier wahrscheinlich meinte, war die Notwendigkeit diese zu Kapseln bzw. zu Externalisieren. Das bezieht sich im übrigen nicht nur auf die Controls selbst, sondern auch auf ihre Parametrisierung (etwa. über Konfigdateien / XACML).&lt;br /&gt;
&lt;br /&gt;
Wichtiger wäre in diesem Zusammenhang zudem die fehlende Berücksichtigung bestimmter Security Controls.&lt;br /&gt;
&lt;br /&gt;
; 5. &amp;quot;Auswahl von Web-Anwendungen auf Basis von Standardsoftware&amp;quot;&lt;br /&gt;
Was will der Satz sagen? Ich wähle Standardsoftware aus, aber doch keine Webanwendungen. Oder heißt das, ich kaufe eine existierende Anwendung ein (Webanwendung!=Indivudualsoftware)? &lt;br /&gt;
&lt;br /&gt;
; 6. &amp;quot;Das ausgewählte Produkt verfügt nicht über die ausreichende Sicherheitsfunktionalität, ... Daher müssen die notwendigen Schutzmechanismen nachträglich hinzugefügt werden, wodurch zusätzliche Aufwände entstehen.&amp;quot;&lt;br /&gt;
Das ist etwas sehr positiv formuliert. Tatsächlich können fehlende Security Controls in zugekaufter Software (insb. Standardsoftware) in der Realität häufig gar nicht hinzugefügt werden oder nur perimetrisch (z.B. per WAF oder Access Gateway).&lt;br /&gt;
&lt;br /&gt;
; 7. &amp;quot;Die Hintergrundsysteme werden unzureichend abgesichert und dadurch ist die Datenbank der Web-Anwendung aus dem Internet erreichbar.&amp;quot;&lt;br /&gt;
Gehören fehlende Netzwerksegmentierung bzw. Firewallregeln wirklich in diesen Kontext? Das ist doch eigentlich Grundschutz der Infrastruktur, oder?&lt;br /&gt;
&lt;br /&gt;
; 8. &amp;quot;Aufgrund schwacher Parameter in der Konfiguration des Frameworks zum Session-Management werden unsichere SessionIDs erzeugt.&amp;quot;&lt;br /&gt;
Was sind &amp;quot;schwache&amp;quot; Parameter?&lt;br /&gt;
&lt;br /&gt;
Welches Framework erlaubt unsichere SessionIDs durch eine &amp;quot;schwache&amp;quot; Konfiguration zu erzeugen?&lt;br /&gt;
&lt;br /&gt;
; 9. &amp;quot;Wird die Konfiguration des Web-Browsers durch einen Angreifer manipuliert, können die clientseitig umgesetzten&amp;quot;&lt;br /&gt;
&lt;br /&gt;
Manipuliert ein Angreifer die Konfguration seines Webbroswers, wenn er einen MITM-Proxy konfiguriert?&lt;br /&gt;
&lt;br /&gt;
Wie bereits bei den &amp;quot;Goldenen Regeln&amp;quot; angemerkt, gilt auch hier, das manche Security Controls auch clientseitig umgesetzt werden dürfen (etwa. zur Verhinderung von Dom-Based XSS).&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== &amp;quot;G 5.WA10 Fehler in der Web-Anwendungslogik&amp;quot; (Dennis) ==&lt;br /&gt;
; 1. &amp;quot;Damit kann aufgrund der Prüfreihenfolge ein hoher Ressourcenverbrauch provoziert werden, der für Denial-of-Service-Angriffe ausgenutzt werden kann.&amp;quot;&lt;br /&gt;
Meiner Meinung nach passt in diesem Kontext die Attacke DoS nicht ganz. Falls die nachfolgende Funktionalität wegen der langen Ausführungszeit der Filterkomponente übersprungen wird bzw. ein Fehler auftritt würde dies meiner Ansicht in die Thematik Anwendungslogik passen. Eine DoS-Attacke kann hingegen anhand jeder Funktion durchgeführt werden.&lt;br /&gt;
&lt;br /&gt;
([[User:Mrohr|Matthias]]) Jo stimmt, aber ich stimme mit der Aussage eigentlich schon ueberein, auch wenn diese zugegeben etwas ungluecklich formuliert ist. Es geht hier ja darum, rechenintensive Pruefungen/Filterung moeglichst zu vermeiden bzw. zu reduzieren. Aus diesem Grund machen wir ja auch bei der AV-Pruefung zunaechst Blacklist-Checks und erst am Ende rechenintensive statistische oder verhaltensbezogene Pruefungen.&lt;br /&gt;
&lt;br /&gt;
== &amp;quot;G 5.WA11 Umgehung clientseitig umgesetzter Sicherheitsfunktionen von Web-Anwendungen&amp;quot; (Dennis) ==&lt;br /&gt;
; 1. &amp;quot;Ein Angreifer kann diese ausnutzen, um beispielsweise unbefugt Befehle an Hintergrundsysteme der Web-Anwendung zu übermittlen (z.B. in Form von Datenbankanfragen bei einer SQL-Injection).&amp;quot;&lt;br /&gt;
Umformulierung des Inhalts der Klammer. Hatte beim ersten Lesen für mich den Anschein, als ob ein Formular genutzt werden könnte welches den Nutzer aufforder eine SQLI einzugeben. Ich denke &amp;quot;Datenbankanfrage zwecks Ausführung einer SQL-Injection&amp;quot; würde besser passen.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== G 2.WA02 Mängel bei der Entwicklung und der Erweiterung von Web-Anwendungen (Matthias) ==&lt;br /&gt;
&lt;br /&gt;
Allgemein ist de obere Teil ok, die aufgezählten &amp;quot;Auswirkungen von fehlenden Vorgaben&amp;quot; verstehe ich jedoch nicht. Wo ist etwa der Bezug von Barrierefreiheit auf die Anwendungssicherheit?&lt;br /&gt;
&lt;br /&gt;
Mein Vorschlag, um diese Punkte etwa sinnvoll umzubauen:&lt;br /&gt;
* &amp;quot;Fehlendes Vorgehensmodell&amp;quot;: Bezug auf fehlende Berücksichtigung von Sicherheit im SDLC. Statt eines SDLCs selbst sollte hier besser auf die Notwendigkeit eines Secure Development Lifecycle (SDL) hingewiesen werden&lt;br /&gt;
* &amp;quot;Fehlende Programmierrichtlinien&amp;quot; =&amp;gt; Besser wäre hier &amp;quot;Fehlende Sicherheitsrichtlinien in der Programmierung&amp;quot; also &amp;quot;Secure Coding Guidelines&amp;quot;&lt;br /&gt;
* &amp;quot;Testfälle&amp;quot; =&amp;gt; &amp;quot;Sicherheitsrelevante Testfälle&amp;quot; (z.B. Security Unit Tests). &lt;br /&gt;
* &amp;quot;Barrierefreiheit&amp;quot;: Warum nicht an dieser Stelle die Auswirkungen von Sicherheitsfunktionen auf die Bedienbarkeit, etwa anhand von CAPTCHAS erläutern?&lt;br /&gt;
&lt;br /&gt;
== G 2.WA03 Unzureichender Schutz personenbezogener Daten bei Web-Anwendungen (Matthias) ==&lt;br /&gt;
&lt;br /&gt;
Der Titel dieses Bausteines heißt &amp;quot;Schutz personenbezogener Daten&amp;quot;, die genannten Beispiele beziehen sich bis auf den letzten jedoch auf die missbräuchliche (oder zumindest problematische) Nutzung aus Sicht des Datenschutzes. &lt;br /&gt;
&lt;br /&gt;
Die Punkt 1-3 sollten daher besser entfallen und z.B. durch die Folgenden ersetzt werden:&lt;br /&gt;
* Unsichere Einbindung von sozialen Netzwerken (Bezug nehmen auf den Like-Button bei Facebook)&lt;br /&gt;
* Unsichere Einbindung von Werbeinhalten&lt;br /&gt;
* Unsichere Übertragung und Caching&lt;br /&gt;
* Unsichere Protokollierung&lt;br /&gt;
* Ungenügender Zugriffsschutz&lt;br /&gt;
* Verstoß des Minimalprinzips bzw. der Zweckgebundenheit (welche Daten werden wirklich benötigt)&lt;br /&gt;
&lt;br /&gt;
Auch wäre es ggf. zumindest einen Verweis auf das BDSG zu machen.&lt;br /&gt;
&lt;br /&gt;
== G 4.33 Unzureichende oder fehlende Authentisierung (Matthias) ==&lt;br /&gt;
&lt;br /&gt;
; 1. Erster Absatz: &amp;quot;Wenn Authentisierungsmechanismen fehlen oder zu schlecht sind&amp;quot;&lt;br /&gt;
&lt;br /&gt;
&amp;quot;schlecht&amp;quot; sollte vlt besser durch &amp;quot;unzureichend&amp;quot; ersetzt werden.&lt;br /&gt;
&lt;br /&gt;
; 2. &amp;quot;Sicherheitslücken entstehen bei... der Benutzerauthentisierung&amp;quot;&lt;br /&gt;
&lt;br /&gt;
Hier findet nur ein Bezug auf &amp;quot;Passwörter&amp;quot; statt. Der Bezug auf die fehlerhaft implementierte oder dem Schutzbedarf ungenügende Schutzmechanismen (z.B. keine 2-Faktor-Authentisierung bei hochsensiblen Daten) fehlt. Auch auf das komplette fehlen von Authentisierungs-Controls wird hier nicht  eingegangen&lt;br /&gt;
&lt;br /&gt;
; 3. &amp;quot;Sicherheitslücken entstehen bei... der Komponentenauthentisierung&amp;quot;&lt;br /&gt;
&lt;br /&gt;
Wie bei 2., wird auch hier wieder nur auf Passwörter, nicht jedoch auf das fehlen von Controls selbst eingegangen. An dieser Stelle fehlt auch ein Hinweis auf die Notwendigkeit dedizierter Benutzeraccounts.&lt;br /&gt;
&lt;br /&gt;
; 4. &amp;quot;Sicherheitslücken entstehen bei... der Wahl des Verfahrens&amp;quot;&lt;br /&gt;
&lt;br /&gt;
Statt untauglich würde ich auch hier von &amp;quot;dem Schutzbedarf der Daten nicht angemessen&amp;quot; sprechen, eigentlich gehört das für mich aber in die obigen Punkte.&lt;br /&gt;
&lt;br /&gt;
; 5. Serverseitige Authentisierung fehlt&lt;br /&gt;
&lt;br /&gt;
Auch der Server (bzw. die Anwendung selbst) kann sich fehlerhaft oder ungenügend beim Benutzer authentsieren, etwa über DNS, SSL-Zertifikate, etc.&lt;br /&gt;
&lt;br /&gt;
== G 4.WA04 Unzureichende Validierung von Ein- und Ausgabedaten bei Web-Anwendungen (Matthias) ==&lt;br /&gt;
&lt;br /&gt;
; 1. &amp;quot;Unzureichende Validierung von Eingabedaten&amp;quot;&lt;br /&gt;
&lt;br /&gt;
Die genannten Beispiele sind genau keine korrekten Beispiele für diesen Fall, sondern betreffen die Ausgabevalidierung bzw. Enkodierung. Typische Fehler der Eingabevalidierung ist eine Manipulierbarkeit der Business Logik.&lt;br /&gt;
&lt;br /&gt;
; 2. &amp;quot;Unzureichende Validierung von Ausgabedaten&amp;quot;&lt;br /&gt;
&lt;br /&gt;
Hier geht es zentral um die Verhinderung von Interpreter Injection, also serverseitig (z.B. SQL oder LDAP Injection) oder clientseitig (XSS, JSON Injection, etc.). Statt &amp;quot;können die Ausgaben Schadcode&amp;quot; enthalten würde ich hier eher davon Sprechen, dass ein solcher Interpreteraufruf manipuliert werden kann (was dann z.B. zur Einschleusung von Schadcode genutzt werden kann).&lt;br /&gt;
&lt;br /&gt;
; 3. &amp;quot;Die Suchfunktion der Web-Anwendung verwendet die Eingaben der Benutzer ungefiltert&amp;quot;&lt;br /&gt;
&lt;br /&gt;
Mit ungenügender &amp;quot;Filterung&amp;quot; hat SQL Injection nichts zu tun,  eigentlich geht es hierbei darum, dass SQL-Anfragen dynamisch mit unvalidierten Eingebedaten zusammengebaut (konkateniert) werden.&lt;br /&gt;
&lt;br /&gt;
; 4. &amp;quot;Ungefilterter HTML-Code in Kommentar-Funktion&amp;quot;&lt;br /&gt;
&lt;br /&gt;
Hier fehlt der Bezug auf persistentes XSS, das hier sicherlich zentral ist.&lt;br /&gt;
&lt;br /&gt;
== G 4.WA05 Fehlende oder mangelhafte Fehlerbehandlung durch Web-Anwendungen (Tobias, Matthias) ==&lt;br /&gt;
; Abschnitt &amp;quot;Unsichere Fehlerbehandlung&amp;quot;&lt;br /&gt;
Die G adressiert &amp;quot;Unsichere Fehlerbehandlung&amp;quot;, der Abschnitt die &amp;quot;Unsichere Fehlerbehandlung in Sicherheitskomponenten&amp;quot;. Entsprechend sollte der fettgedruckte Teil angepasst werden.&lt;br /&gt;
&lt;br /&gt;
; &amp;quot;fehlende SQL-Parameter,&amp;quot;&lt;br /&gt;
Sollte besser &amp;quot;Fehlermeldungen bei ungültigen SQL-Abfragen&amp;quot; lauten.&lt;br /&gt;
&lt;br /&gt;
; &amp;quot;Auch scheinbar unkritische Informationen, wie die Meldung ob (..)&amp;quot;&lt;br /&gt;
Korrekt, allerdings nicht nachvollziehbar, wenn das Problem der Leser nicht schon bekannt ist. Daher erweitern nach &amp;quot; Rahmen von Brute-Force-Angriffen ausgenutzt werden.&amp;quot; mit &amp;quot;. Bei Brute-Force-Angriffen wäre in diesem Fall klar, dass der Benutzername gültig ist.&amp;quot;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[User:Mrohr|Matthias]]): Stimme dem Obigen auch zu, ausserdem:&lt;br /&gt;
&lt;br /&gt;
; Sprachlich: &amp;quot;kann dies unvorhersehbare Auswirkungen haben und den Betrieb der Web-Anwendung bis zur Unerreichbarkeit einschränken.&amp;quot;&lt;br /&gt;
&lt;br /&gt;
&amp;quot;Unerreichbarkeit&amp;quot; ist etas merkwuerdig ausgedrueckt, besser ware hier von der &amp;quot;Verfuegbarkeit&amp;quot; zu sprechen. Im Uebrigen fehlt vollstaendig der Bezug auf die Verfuegbarkeit als Primaeres Schutzziel der Informationssicherheit.&lt;br /&gt;
&lt;br /&gt;
; &amp;quot;Clientseitige Fehlerbehandlung&amp;quot;&lt;br /&gt;
Das stimmt soweit, das generelle Problem ist jedoch genereller, naehmlich die clientseitige Abbildung sicherheitsrelaventer Logik (in diesem Fall die Fehlerbehandlung)&lt;br /&gt;
&lt;br /&gt;
== G 4.WA06 Unzureichende Nachvollziehbarkeit von sicherheitsrelevanten Ereignissen bei Web-Anwendungen (Matthias) ==&lt;br /&gt;
&lt;br /&gt;
; 1. Erster Absatz: &amp;quot;Die Behebung einer Schwachstelle ist dann nicht oder nur unter erschwerten Bedingungen möglich.&amp;quot;&lt;br /&gt;
&lt;br /&gt;
Hier würde ich ergänzen: &amp;quot;...und Angriffe auf die Anwendungen können ggf. nicht erkannt oder nachvollzogen werden&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
; 2. &amp;quot;Beispiele&amp;quot;: Kommulierbarkeit&lt;br /&gt;
&lt;br /&gt;
Hier fehlt auch ein Bezug auf die Kommulierbarkeit von SIcherheitsereignissen, dass diese also auch von solchen anderer Systeme in Verbindung gesetzt werden können&lt;br /&gt;
&lt;br /&gt;
; 3. &amp;quot;Beispiele&amp;quot;: Gerichtsverwertbarkeit&lt;br /&gt;
&lt;br /&gt;
Auch die Möglichkeit zur Gerichtsverwertbarkeit (etwa durch eindeutigen Zeitstempel) und manipulationssicherer Speicherung, würde ich an dieser Stelle unbedingt erwähnen.&lt;br /&gt;
&lt;br /&gt;
== G 4.WA07 Offenlegung von Informationen bei Web-Anwendungen (Matthias) ==&lt;br /&gt;
&lt;br /&gt;
; 1. Titel&lt;br /&gt;
&lt;br /&gt;
Hier würde ggf. &amp;quot;Offenlegung vertraulicher Informationen&amp;quot; sicher besser passen als &amp;quot;Offenlegung von Informationen&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
; 2. Beispiellink&lt;br /&gt;
&lt;br /&gt;
Ein Beispiellink (mit und ohne Token) würde sicher die Verständlichkeit dieser Schwachstelle verbessern.&lt;br /&gt;
&lt;br /&gt;
; 3. Erster Absatz: &amp;quot;Wenn demzufolge Informationen unnötig offengelegt werden, steigt die Wahrscheinlichkeit eines erfolgreichen Angriffs.&amp;quot;&lt;br /&gt;
&lt;br /&gt;
Interne Informationen auszublenden ist eine Härtungsmaßnahme, deren Anzeige erhöht aber nicht zwangsläufig die Wahrscheinlichkeit eines erfolgreichen Angriffs. Ich würde diesen Satz weglassen.&lt;br /&gt;
&lt;br /&gt;
 ; 4. Fehlende Punkte&lt;br /&gt;
&lt;br /&gt;
* Ein Hinweis auf HTTP Header wäre hier sicher erwähnenswert.&lt;br /&gt;
* Weiterhin bzgl. der Anzeige von Traces und ein Verweis auf den Entsprechenden Baustein zur Fehlerbehandlung&lt;br /&gt;
&lt;br /&gt;
== G 5.WA14 Cross-Site Request Forgery (CSRF, XSRF) (Matthias) ==&lt;br /&gt;
&lt;br /&gt;
; 1. Erster Absatz: &amp;quot;Können Funktionen einer Web-Anwendung ohne weitere Überprüfung der Authentizität des HTTP-Requests (z.B. durch Tokens in versteckten Formularfeldern) genutzt werden&amp;quot;&lt;br /&gt;
&lt;br /&gt;
Statt &amp;quot;Funktionen&amp;quot; würde ich besser von &amp;quot;schreibenden Aktionen&amp;quot; sprechen, dann macht der Satz mehr Sinn.&lt;br /&gt;
&lt;br /&gt;
; 2. Dritter Absatz: &amp;quot;Im Gegensatz zu XSS (siehe ...￼ ) ist das Angriffsziel nicht die Information auf dem Client (z. B. in Cookies),&amp;quot;&lt;br /&gt;
&lt;br /&gt;
Dieser (Halb-)Satz macht keinen Sinn, auch weil es bei XSS nicht nur im Informationen auf dem Cient geht. Vorschlag: &amp;quot;ist das Angriffsziel nicht die Ausführung von Skriptcode, sondern von unbefugten, schreibenden Aktionen im Kontext des angemeldeten Benutzers.&amp;quot;&lt;br /&gt;
&lt;br /&gt;
; 3. Session Riding&lt;br /&gt;
&lt;br /&gt;
Session Riding ist quasi nur ein anderer Begriff für CSRF. Die einzige Form von CSRF die mir bekannt ist, sind Angriffe mit Standard-Passwörtern auf HTTP-Basic-Auth geschützten Ressourcen.&lt;br /&gt;
&lt;br /&gt;
Im Grunde ist Session Riding aber nur ein Synonym für CSRF. Der Absatz ist daher auch nur eine Wiederholung der obigen Beschreibung.&lt;br /&gt;
&lt;br /&gt;
; 4. Zum Beispiel: &amp;quot;Durch einen präparierten Link auf einer Webseite wird die Änderung des Zugangspasswortes des Routers eingeleitet.&amp;quot;&lt;br /&gt;
&lt;br /&gt;
Etwas ungüngstig ausgedrückt. Besser wäre: &amp;quot;wird eine Anfrage zur Änderung des Zugangspasswortes an den Router gesendet. Hierbei sendet der Browser automatisch den Session Cookie mit, worüber die Webanwendung die Authentizität der Anfrage verifiziert und die Änderung durchführt.&amp;quot;&lt;br /&gt;
&lt;br /&gt;
== G 5.WA18 Clickjacking (Matthias) ==&lt;br /&gt;
&lt;br /&gt;
Hier stellt sich mir nur die allgemeine Frage, ob Clickjacking, bzw. der Schutz davor tatsächlich einem Grundschutz zuzurechnen ist. Persönlich würde ich dies nicht tun.&lt;br /&gt;
&lt;br /&gt;
== M 2.WA02 Dokumentation der Architektur von Web-Anwendungen (Matthias) ==&lt;br /&gt;
&lt;br /&gt;
; Verantwortlich für die Umsetzung&lt;br /&gt;
Hier wäre auch die Nennung des &amp;quot;Architekten&amp;quot; sinnvoll&lt;br /&gt;
 &lt;br /&gt;
; Fehlende Bestandteile der Dokumentation:&lt;br /&gt;
* Schutzbedarf des Systems sowie der verarbeiteten Daten&lt;br /&gt;
* Schützenswerte Daten und Funktionen (Assets)&lt;br /&gt;
* Betriebliche Anforderungen an die Sicherheit bzw. eingesetzte Plattform&lt;br /&gt;
* Dokumentierte Konfigurationseinstellungen &lt;br /&gt;
* BIA (RTO, RPO)&lt;br /&gt;
* Schnittstellen&lt;br /&gt;
* Trust Boundaries&lt;br /&gt;
* Akteure (bzw. Trust Level)&lt;br /&gt;
* Sicherheitsannahmen&lt;br /&gt;
* Geltende Compliance-Anforderungen (BDSG, PCI DSS, etc.)&lt;br /&gt;
&lt;br /&gt;
; Benutzermanagement&lt;br /&gt;
&lt;br /&gt;
Wenn damit das Identity Management gemeint ist, gehört das Dokumentiert, ist aber keine Sicherheitsfunktion. Oder ist hiermit das Rollen- und Berechtigungskonzept gemeint? Grenzt sich aus meiner Sicht schwer mit dem Thema Authentisierung ab. &lt;br /&gt;
&lt;br /&gt;
; Prüffragen&lt;br /&gt;
&lt;br /&gt;
Hier fehlt etwas in Bezug auf Sicherheitsanforderungen. Beispiel: &amp;quot;Werden Sicherheitsanforderungen an den Betrieb während der Entwicklung abgestimmt und dokumentiert&amp;quot;&lt;br /&gt;
&lt;br /&gt;
== M 2.WA12 Entwicklung und Erweiterung von Anwendungen (Markus) ==&lt;br /&gt;
; &amp;quot;Es sollte darauf geachtet werden, dass Sicherheitsanforderungen&lt;br /&gt;
vollständig durch Sicherheitsmechanismen erfüllt und zur Erstellung von&lt;br /&gt;
Testfällen festgehalten werden.&amp;quot; --&amp;gt; Bessere Formulierung würde aussagen, dass die Sicherheitsanforderungen durch Testfälle verifiziert werden.&lt;br /&gt;
&amp;quot;(z. B. durch Kommentare im&lt;br /&gt;
Quelltext). Somit ist der Quelltext zu einem&amp;quot; --&amp;gt; Das ist kein empfehlenswerter Programmierstiel! Raus mit diesem Kommentar&lt;br /&gt;
;&amp;quot;Zum Schutz vor dem Verlust bereits entwickelter und verworfener&lt;br /&gt;
Lösungen sowie zu Dokumentationszwecken sollte die Historie der&lt;br /&gt;
Änderungen festgehalten werden (z. B. durch ein Revisionssystem).&amp;quot; --&amp;gt; Auch diesen Absatz können wir streichen - Kein professioneller Programmierer arbeitet ohne Versionierugssystem.&lt;br /&gt;
;&amp;quot;Bei Web-Anwendung sollten die Webseiten auf Konformität zu dem&lt;br /&gt;
verwendeten Standard (z. B. HTML-Standard) getestet werden. Dadurch&lt;br /&gt;
können unvorgesehene Seiteneffekte aufgrund einer Fehlinterpretation&lt;br /&gt;
seitens der Browser vermieden werden.&amp;quot; --&amp;gt; Könnte man noch um &amp;quot;Die Software ist in möglichst vielen Browsern zu testen&amp;quot; erweitern.&lt;br /&gt;
;Generell geht der Autor leider nicht auf die Rollen &amp;amp; Rechte Verteilung ein. Mir fehlt der Hinweis, das es eine personelle Trennung zwischen Entwicklung, Test und Betrieb geben muss.&lt;br /&gt;
;Zum Thema Wartung / Betrieb --&amp;gt; Hier wird keine Aussage getroffen bezüglich Log_Files. Dieses Thema kann kritische Auswirkungen haben, Bsp.: logging ganzer HTTP-Requests im LogLevel=Debug.&lt;br /&gt;
; &amp;quot;Produktspezifische Sicherheitsfunkionalität&amp;quot; - Dieser Absatz ist gefährlich - der Angreifer ist nicht zur Verwendung dies Zielbrowsers gezwungen. Deshalb können Browser-spez. Sicherheitsfunktionen nur als Add-ON gewertet werden.&lt;br /&gt;
; &amp;quot;Festlegung der Entwicklungsumgebung&amp;quot; - Dieser Absatz geht nicht auf die zu verwendenden Testdaten ein. Der Hinweis, dass Live-Daten / Kundendaten nichts in Test- &amp;amp; Entwicklungsumgebungen zu suchen haben fehlt!!!&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== M 2.WA24 Web-Tracking (Matthias) ==&lt;br /&gt;
&lt;br /&gt;
; Letzter Absatz: &amp;quot;Falls eine Auswertung von Nutzerdaten, insbesondere personenbezogener Daten, .. &amp;quot;&lt;br /&gt;
&lt;br /&gt;
Hier sollte denke ich besser von personenbeziehbaren Daten gesprochen Werten. Dies betrifft etwa die Zuordnung von Surfverhalten zu einer bestimmten Person. Dies sollte stets nach den Prinzipien Datensparsamkeit und Datenvermeidung, Erforderlichkeit, sowie Zweckbindung erfolgen. Ist Webtracking nicht personenbeziehbar ist dies kein Thema für den Datenschutz.&lt;br /&gt;
&lt;br /&gt;
== M 4.WA04 Authentisierung bei Web- Anwendungen (Matthias) ==&lt;br /&gt;
&lt;br /&gt;
: Verantwortlich fuer Umsetzung &lt;br /&gt;
sollte in erster Linie beim Architekturen und in zweiter beim Entwickler liegen&lt;br /&gt;
; Vermischung von Authentisierung und Session Management &lt;br /&gt;
&lt;br /&gt;
Bei diesem Baustein findet eine ziemlich große Vermischung von Anforderung an die Authentisierung und das erst in &amp;quot;M 4.WA06 Session-Management bei Web- Anwendungen&amp;quot; behandelte Session Management statt (Beispiel: &amp;quot;Remember-Me-Funktion&amp;quot;). Beide Themen sollten sinnvollerweise getrennt voneinander zu betrachten und aufeinander zu beziehen.&lt;br /&gt;
&lt;br /&gt;
; Verwendung von Frameworks&lt;br /&gt;
&lt;br /&gt;
Die Anforderung ist schon ein wenig eingeschränkt. Besser passt hier denke ich die &amp;quot;Abbildung der Authentisierung über Standardkomponenten (Bibliotheken oder Frameworks)&amp;quot;. &lt;br /&gt;
&lt;br /&gt;
; Remember-Me-Funktion&lt;br /&gt;
&lt;br /&gt;
Siehe oben, gehört zum Session Management. Das ließt sich im übrigen so, als ob eine Webanwendung Credentials auf dem Client abhängt. &lt;br /&gt;
&lt;br /&gt;
; Grenzwerte für gescheiterte Anmeldeversuche&lt;br /&gt;
&lt;br /&gt;
Diese Empfehlung ist allgemein falsch, da sie sehr von der betrachteten Anwendung abhängt. Besser wäre hier allgemein von Mechanismen zur Verhinderung von automatisierten Angriffen zu sprechen (Anti-Automatisierung). &lt;br /&gt;
&lt;br /&gt;
Etwa umsetzbar durch&lt;br /&gt;
* Sperrung nach x Anmeldeversuchen&lt;br /&gt;
* Throttling&lt;br /&gt;
* Captchas&lt;br /&gt;
* Sicherheitsfragen&lt;br /&gt;
&lt;br /&gt;
Das allgemeine Sperren kann leicht für das gezielte Aussperren von Benutzern (User Lockout) verwendet werden. Was etwa bei Trading-Anwendungen nicht funktioniert.&lt;br /&gt;
&lt;br /&gt;
; Automatisiertes Zurücksetzen von Authentisierungsdaten&lt;br /&gt;
&lt;br /&gt;
Würde ich besser als &amp;quot;Passwort-Reset&amp;quot; bezeichnen.&lt;br /&gt;
&lt;br /&gt;
Weiterhin fehlt hier der Hinweis, dass statt ein automatisiertes Zurücksetzen, ein Mechanismus zu empfehlen ist, bei dem über ein hinterlegtes Sicherheitsmerkmal (Handy-Nummer oder E-Mail-Adresse) vom Benutzer zunächst eine Verifikation durchgeführt wird. Beispielsweise durch einen erhaltenen Link. Erst dann darf eine Änderung des Passwortes durch den Benutzer erfolgen.&lt;br /&gt;
&lt;br /&gt;
; Registrierung nicht behandelt&lt;br /&gt;
&lt;br /&gt;
Es existiert hier kein Punkt, der die sichere Implementierung von Benutzerregistrierungen behandelt.&lt;br /&gt;
&lt;br /&gt;
; Verweis auf Externalisierung fehlt.&lt;br /&gt;
&lt;br /&gt;
Statt die Authentisierung selbst durchzuführen kann eine Anwendung hierzu auf eine externe Komponente (Beispiel: SiteMinder oder Kerberos) zurückgreifen.&lt;br /&gt;
&lt;br /&gt;
; Verweis auf Behandlung von Credentials fehlt&lt;br /&gt;
&lt;br /&gt;
Auch wenn das  in &amp;quot;M 4.WA15 Schutz vertraulicher Daten bei Web- Anwendungen&amp;quot; ausführlich behandelt wird, sollte in diesem Baustein bereits auf den angemessenen Schutz von Authentisierungsdaten bei Übertragung und Speicherung hingewiesen werden.&lt;br /&gt;
&lt;br /&gt;
== M 4.WA05Umfassende Ein- und Ausgabevalidierung bei Web-Anwedungen (Markus) ==&lt;br /&gt;
; &amp;quot;Ablehnung der Daten im&lt;br /&gt;
Fehlerfall&amp;quot; --&amp;gt; Hier könnte man noch auf Tar-Pits eingehen - nur ein Vorschlag.&lt;br /&gt;
&lt;br /&gt;
== M 4.WA06Session-Management bei Web-Anwendungen (Markus, Matthias) ==&lt;br /&gt;
; &amp;quot;Übertragung der SessionID mittels GETRequest&amp;quot; --&amp;gt; Hier fehlt der Hinweis, dass die Lebensdauer dieser SessionIds kurz/kürzer sein muss, als im Falle der Speicherung im Cookie.&lt;br /&gt;
&lt;br /&gt;
([[User:Mrohr|Matthias]]) Die Anmerkung verstehe ich ehrlich gesagt ueberhaupt nicht, zumal das SM haeufig transparent zwischen Cookies und URL Rewriting wechselt. Wozu soll das gut sein? Wie soll das geschehen? Idealerweise sollte die Session ID niemals in die URL geschrieben werden, das sollte eigentlich genuegen.&lt;br /&gt;
&lt;br /&gt;
; &amp;quot;Verschlüsselte Übertragung von SessionIDs&amp;quot; --&amp;gt; Hier fehlt der Hinweis auf den Beast-Exploit. TLS Version &amp;gt; 1.0 verwenden!&lt;br /&gt;
&lt;br /&gt;
([[User:Mrohr|Matthias]]) Solange hier nicht auf eine explizite TLS Version eingegangen wird, sollte meiner grossen Ueberzeugung nach hier auch auf keine Exploits etc. eingagen werden, das gehoert an andere Stelle.&lt;br /&gt;
&lt;br /&gt;
; ([[User:Mrohr|Matthias]]) Weiterhin:&lt;br /&gt;
&lt;br /&gt;
 Es dürfen keine extern bekannten oder erratbaren Daten (z. B. IP-Adresse, Uhrzeit) in die Berechnung der SessionID einfließen.&lt;br /&gt;
&lt;br /&gt;
Die Aussage finde ich etwas problematisch, wichtiger ist, dass die Entropie ausreichend hoch ist. Haeufig werden etwa IPs von Load Balancern in die Session ID hineingeschrieben.&lt;br /&gt;
&lt;br /&gt;
 - Domain (z. B. webapp.domain.tld),&lt;br /&gt;
 - Path (z. B. /webapp/),&lt;br /&gt;
 - Secure und&lt;br /&gt;
 - HttpOnly.Beschränkte Sitzungsdauer&lt;br /&gt;
&lt;br /&gt;
Das sieht so aus, als ob es empfehlenswert ist, das Domain-Tag zu verwenden, das ist es sicherlich nicht. Was macht hier der Hinweis &amp;quot;Beschraenke Sizuungsdauer&amp;quot;?&lt;br /&gt;
&lt;br /&gt;
== M 4.WA07Fehlerbehandlung durch Web-Anwendungen (Markus) ==&lt;br /&gt;
; Konsistenter / Inkonsistener Zustand einer Webanwendung und der daraus resultierende Datenverlust: Hier fehlen mir die Punkte: DOS, Priv.Escalation, CodeExecution.&lt;br /&gt;
; Vermeidung vertraulicher Informationen in Fehlermeldungen --&amp;gt; Fehlermeldungen sollten ebenfalls eine Systeminformationen preisgeben (Softwareversion, Patchlevel, etc.)&lt;br /&gt;
; Abbruch des Vorgangs nach Auftreten eines Fehlers --&amp;gt; TarPits scheinen dem Autor umbekannt zu sein :)&lt;br /&gt;
; &amp;quot;Werden Fehler möglichst von der gleichen Komponente behandelt, in der&lt;br /&gt;
der Fehler aufgetreten ist?&amp;quot; --&amp;gt; Das &amp;quot;möglichst&amp;quot; sollten wir streichen.&lt;br /&gt;
&lt;br /&gt;
== M 4.WA08Schutz vor automatisierter Nutzung von Web-Anwendungen (Markus) ==&lt;br /&gt;
; &amp;quot;Brute-Force-&lt;br /&gt;
Angriffe (z. B. Erraten von Zugangsdaten) und Enumeration-Angriffe (z. B.&lt;br /&gt;
automatisiertes Ermitteln von gültigen Login-Namen)&amp;quot; -- die Beispiele sind identisch - besser Beispiele suchen, z.b. URL-Enumeration&lt;br /&gt;
&lt;br /&gt;
([[User:Mrohr|Matthias]]) Das sehe ich anders. Brute-Forcing bezieht auf Passwoerter und Enumeration auf Benutzernamen, etwa durchs hochzaehlen. Auch wenn ich zustimmen muss, dass die nicht ganz gluecklich gewaehlt wurden. Stann &amp;quot;Erraten von Zugangsdaten&amp;quot; wuerde ich besser von &amp;quot;Erraten von Passwoertern&amp;quot; sprechen. Oder wie gesagt gleich auch auf andere Beispiele (etwa Object ID Enumeration) beziehen.&lt;br /&gt;
&lt;br /&gt;
== M 4.WA11Sichere Konfiguration von Web-Anwendungen (Markus) ==&lt;br /&gt;
; &amp;quot;Sicherer Umgang mit TLS/SSL&amp;quot; -- Hier fehlt der Hinweis, dass TLS-1.0 gebrochen ist&lt;br /&gt;
; &amp;quot;Zeichenkodierungskonfiguration&amp;quot; -- Ein Whitelisting abhängig von der Encodierung wäre ein weiterer Vorschlag&lt;br /&gt;
; &amp;quot;Restriktive Dateisystemberechtigungen&amp;quot; -- auch wenn es ein klassiker ist - der AS sollte ebenfalls mit von einem eingeschränkten Nutzer gestartet werden und nicht als root&lt;br /&gt;
; Administration Consolen:zur Ergänzen: Wenn diese nicht benötigit, sollten derartige Applikationen nicht deployed werden, unabhängig von möglichen Zugangsbeschränkungen.&lt;br /&gt;
&lt;br /&gt;
([[User:Mrohr|Matthias]]) Sorry, meiner Meinung nach hat die Bewertung von Kryptoverfahren hier abslut nichts zu suchen.Stattdessen sollte hier auf den entsprechenden [https://www.bsi.bund.de/ContentBSI/Publikationen/TechnischeRichtlinien/tr02102/index_htm.html Empfehlung des BSI] verwiesen werden, auch wenn dieses Dokument derzeit noch etwas outdated zu sein scheint.&lt;br /&gt;
&lt;br /&gt;
== M 4.WA13Kontrolliertes Einbinden von Daten und Inhalten bei Web-Anwendungen (Markus) ==&lt;br /&gt;
; Datei-Upload: Bei einem Upload werden Dateien durchaus in TEMP-Verzeichnissen gesammelt und danach weiterverarbeitet. Diese TEMP-Verzeichnisse sind im Rahmen einer Sicherheitsanalyse zu betrachten -&amp;gt; Möglicher (unbefugter) Zugriff auf weitere Uploads&lt;br /&gt;
; Upload komprimierter Dateien / großer Dateien birgt die Gefahr von DOS Angriffen&lt;br /&gt;
; Upload von Dateien kann bei weiterem Parsing zu Speicherengpässen führen --&amp;gt; DOS-Angriffe auf Thread-Local etc.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== M 4.WA14Restriktive Herausgabe sicherheitsrelevanter Informationen bei Web-Anwendungen (Markus, Matthias) ==&lt;br /&gt;
OK - Keine Anmerkungen von mir.&lt;br /&gt;
&lt;br /&gt;
([[User:Mrohr|Matthias]]) Von mir schon;)&lt;br /&gt;
&lt;br /&gt;
; ([[User:Mrohr|Matthias]]) Vermeidung von Kommentaren in ausgelieferten Webseiten&lt;br /&gt;
&lt;br /&gt;
Das ist leider total falsch, wir brauchen haeufig Komentare, aus Kompatibilitaetsgruenden. So wird etwa der JavaScript-Block haeufig auskommentiert.&lt;br /&gt;
&lt;br /&gt;
Wurde stattessen besser von sicherheitsrelevanten Kommentaren sprechen und als Massnahme generell Entwicklerkommentare ueber Sprachkonstruktre (etwa JSP) durchzufuehren.&lt;br /&gt;
&lt;br /&gt;
; ([[User:Mrohr|Matthias]]) Löschen nicht benötigter Dateien&lt;br /&gt;
&lt;br /&gt;
Hier wurde ich ggf. Dateien von Versionisierungstools (etwa Subversion) erwaehnen, das sehen wir schon recht haeufig.&lt;br /&gt;
&lt;br /&gt;
Statt Dateien einfach nur zu loeschen (was in der Praxis haeufig nicht so einfach ist) bietet es sich zudem an, den Zugriff auf bestimmte Dateien oder Dateitypen generell zu sperren, etwa mittels ACL im Apache.&lt;br /&gt;
&lt;br /&gt;
; ([[User:Mrohr|Matthias]]) Gibt die Web-Anwendung ausschließlich neutrale Fehlermeldungen aus und sind diese im Quelltext identisch? {E: C}&lt;br /&gt;
&lt;br /&gt;
Persoenlich verstehe ich das nicht. Wieseo neutrale Fehlermeldung? Das macht fuer mich nur beim Login Sin. Hierzu existiert in dem Text auch keinerlei Bezug. Ich wuerde das daher besser entfernen und im Rahmen der Fehlerbehandlung diskutieren. Mindestens sollte hier jedoch besser von &amp;quot;sicherheitsunbedentlichen Fehlermeldungen&amp;quot; oder so gesprochen werden.&lt;br /&gt;
&lt;br /&gt;
; ([[User:Mrohr|Matthias]]) Wird der Referrer bei Verlassen der Web-Anwendung (z. B. durch einen Link auf eine externe Seite) gefiltert?&lt;br /&gt;
&lt;br /&gt;
Diesen Punkt sehe ich als sehr Fallabhengig an. Es kann fuer seiten durchaus wuenschenswert sein, dass der Referer weitergegeben wird. Der Referer sollte natuerlich keine sensiblen Informationen enthalten, was ja an anderer Stelle (etwa Session Management) vorgegeben wird bzw. gegeben werden sollte.&lt;br /&gt;
&lt;br /&gt;
== M 4.WA15Schutz vertraulicher Daten bei Web-Anwendungen (Markus, Matthias) ==&lt;br /&gt;
; Sichere kryptographische Algorithmen:&lt;br /&gt;
 Hier fehlt mir eine Liste der aktuelle als sicher geltenden Verfahren.&lt;br /&gt;
([[User:Mrohr|Matthias]]) Am Besten Referenz auf [https://www.bsi.bund.de/ContentBSI/Publikationen/TechnischeRichtlinien/tr02102/index_htm.html https://www.bsi.bund.de/ContentBSI/Publikationen/TechnischeRichtlinien/tr02102/index_htm.html]&lt;br /&gt;
&lt;br /&gt;
; Schlüssel&lt;br /&gt;
 Das die Schlüssel bestimmten Formaten entsprechen müssen ist ok - aber das Schlüsselmanagement wird gar nicht besprochen?&lt;br /&gt;
; Schutz der Daten im Browsercache&lt;br /&gt;
 Skripte und Browserplugins können ebenfalls auf den Browsercache zugreifen - diese werden hier nicht erwähnt.&lt;br /&gt;
&lt;br /&gt;
([[User:Mrohr|Matthias]]) Weiterhin entsprechen die vorgeschlagenen HTTP Headern nicht dem Best Practice:&lt;br /&gt;
&lt;br /&gt;
 Cache-control: no-cache, no-store&lt;br /&gt;
 Pragma: no-cache&lt;br /&gt;
 Expires: -1&lt;br /&gt;
&lt;br /&gt;
([[User:Mrohr|Matthias]]) Die Empfehlung hinsichtlich des manuellen Leerens des Browsercaches sollte wenn dann nur bei Anwendungen mit sehr hohem Schutzbedarf in Erwaegung gezogen werden. Wichtiger waere da schon eher die richtigen Cache-Header zu verwenden. Solche Empfehlungen ihm Rahmen des Grundschutzes aber wirklich nichts zu suchen. &lt;br /&gt;
&lt;br /&gt;
; Maskierung von Passwörtern &lt;br /&gt;
 Dies schützt bei der Eingabe nur vor ShoulderSurfing nicht vor Skripten oder Plugins die diese an andere Server posten.&lt;br /&gt;
&lt;br /&gt;
([[User:Mrohr|Matthias]]) Das ist voellig korrekt. Aber inwieweit ist die Aussage Passwort-Felder zu verwenden fehlerhaft bzw. hier unzureichend beschrieben?&lt;br /&gt;
&lt;br /&gt;
; Sicherung von Zugangsdaten:&lt;br /&gt;
 Zugangsdaten in einer Datei abzulegen - wenn auch ausserhalb des WebRoots ist keine gute Idee.&lt;br /&gt;
([[User:Mrohr|Matthias]]) Es ist sicher nicht die schoenste Variante, es laesst sich aber nunmal in vielen Faellen nicht vermeiden. Deshalb fordert der [http://code.google.com/p/owasp-asvs/wiki/Verification_V2 ASVS] hier etwa auch nicht mehr. Fuer den hier angestreben Grundschutz sollte das meiner Meinung nach ausreichen.&lt;br /&gt;
; Schutz von Quelltexten:&lt;br /&gt;
 Hier würde ich property files mit aufnehmen. der hinweis auf web-inf/classes fehlt - warum?&lt;br /&gt;
 Bei include-befehlen sind die pfadangaben zu überdenken.&lt;br /&gt;
([[User:Mrohr|Matthias]]) Wuerde property Dateien allgemein den Konfigurationsdateien zuordnen. Der Begriff &amp;quot;Einzubindende Dateien&amp;quot; ist mir allrdings Neu&lt;br /&gt;
&lt;br /&gt;
([[User:Mrohr|Matthias]]) Weiterhin, fehlt ein genereller Bezug auf HTML 5 WebStorage, LSOs etc. Zumindest in abstrakter Form, so dass diese dadurch indirekt addresiert werden. Egal, in dem relevanten Punkt will der Autor meiner Meinung nach nur einige Beispiele nennen, das sollte keinen Anspruch auf Vollsteandigkeit haben muessen.&lt;br /&gt;
&lt;br /&gt;
; ([[User:Mrohr|Matthias]]) - Durch dieses Attribut wird die Gültigkeit des Cookies auf die Domäne der Web-Anwendung beschränkt.&lt;br /&gt;
Nein, das ist leider total falsch. Das Domain-Attribut stellt eine Aufweichung der Cookie-Gueltigkeit dar und nicht anders herum. Gewoehlich sind Cookies immer Host-Cockies und das sollte auch so bleiben. Die Empfehlung sollte entfernt werden.&lt;br /&gt;
&lt;br /&gt;
== M 4.WA16Zugriffskontrolle bei Web-Anwendungen (Markus) ==&lt;br /&gt;
; Zugriffskontrolle via Frameworks:&lt;br /&gt;
 Dieser Punkt (Frameworks) wird nur in einem Satz erwähnt. Es werden keine Bespiele gegeben - Das ist zu wenig.&lt;br /&gt;
 Es müssen alle Zugriffe geschützt werden. Eine Protokollierung aller Zugriffe mit den nötigen Informationen ist ebenfalls empfehlenswert.&lt;br /&gt;
; Datei Upload:&lt;br /&gt;
 Die Gefahr eines DOS wird hier nicht erwähnt.&lt;br /&gt;
&lt;br /&gt;
== M 4.WA19Verhinderung von Cross-Site Request Forgery (CSRF, XSRF) (Markus, Matthias) ==&lt;br /&gt;
; Verantwortliche: &lt;br /&gt;
 Entwickler und Admins!&lt;br /&gt;
([[User:Mrohr|Matthias]]) Korrekt, wobei auch in der Reihenfolge&lt;br /&gt;
&lt;br /&gt;
; Anti-CSRF-Token in hidden fields:&lt;br /&gt;
 Das ist keine gute Idee. Ich würde das streichen!&lt;br /&gt;
&lt;br /&gt;
([[User:Mrohr|Matthias]]) Watt? Anti-CSRF-Tokens in Hidden Fields sind die Standard-Massnahme. Wie denn sonst? Bitte nicht streichen!!! &lt;br /&gt;
&lt;br /&gt;
([[User:Mrohr|Matthias]]) Die Technik bei der die Session ID als Anti-CSRF-Token verwendet wird, wird als Double-Cookie Submit bezeichnet, das sollte hier referenziert werden.&lt;br /&gt;
&lt;br /&gt;
; Umgehung von Schutzmechanismen:&lt;br /&gt;
 Man in the middle hat keinen direkten Bezug zu CSRF! Das würde ich streichen.&lt;br /&gt;
([[User:Mrohr|Matthias]]) Der Hinweis ist korrekt. Wovon der Autor hier spricht ist Session Replay nicht CSRF.&lt;br /&gt;
&lt;br /&gt;
; Frameworks:&lt;br /&gt;
 Gute Idee - aber es gibt auch Features in den ApplicationServern die CSRF unterbinden - warum wird das nicht besprochen?&lt;br /&gt;
&lt;br /&gt;
([[User:Mrohr|Matthias]]) Sehe ich persoenlich nicht so, da CSRF primaer ein Applikations-Fehler ist, und auch in der Applikation und nicht im Environment (AppServer) geloest werden sollte. Auch wenn das manchmal ggf. die einzig machbare Loesung darstellt.&lt;br /&gt;
&lt;br /&gt;
([[User:Mrohr|Matthias]]) Was generell fehlt, ist ein Hinweis darauf, dass schreibende Requests generell per HTTP Post abgewickelt werden sollten, da HTTP Get keine &amp;quot;Safe Method&amp;quot;  (siehe HTTP 1.1, RFC 2616) ist.&lt;br /&gt;
&lt;br /&gt;
== M 4.WA20Sicherer Entwurf der Logik von Web-Anwendungen (Markus, Matthias) ==&lt;br /&gt;
; Rollbacks:&lt;br /&gt;
 Tritt ein Fehler auf muss die Applikation einen konsistenten Datenstand zurück lassen. Das wird hier nicht erwähnt.&lt;br /&gt;
; RaceConditions:&lt;br /&gt;
 Fehler in der Geschäftslogik können auch durch zwei gleichzeitige Sessions auf einer Webapplikation auftreten - das wird hier nicht besprochen.&lt;br /&gt;
&lt;br /&gt;
([[User:Mrohr|Matthias]]) Ehrlich gesagt kann ich nicht ganz nachvollziehen, was der Sichere Entwurf der Logik von Web-Anwendungen mit dem Verzicht auf aktive Inhalte zu tun hat. Unabhaengig davon sollte man solche unsinnigen Aussagen im Jahre 2012 nicht mehr treffen, damit macht man sicht nur laecherlich.&lt;br /&gt;
&lt;br /&gt;
Nichts desto trotz, was hier als &amp;quot;echte&amp;quot; Massnahmen erwaehnt werden sollte sind:&lt;br /&gt;
* Verhinderung von Race Conditions, aber nicht nur durch Concurrent Sessions sondern auch durch Singletons (TOCTOU)&lt;br /&gt;
* Enforcements von Workflows, etwa durch die Verwendung von State Machines oder Request Tokens (auch bekannt als Site Usage Enforcement)&lt;br /&gt;
* Fail Securely (bzw. Verweis)&lt;br /&gt;
* Serverseitige Abbildung der Anwendungslogik, zumindest wenn diese sicherheitsrelevant sit&lt;br /&gt;
&lt;br /&gt;
== M 4.WA22Verhinderung der Blockade von Ressourcen (DoS) bei Web-Anwendungen (Markus, Matthias) ==&lt;br /&gt;
; Datenspeicher:&lt;br /&gt;
 Neben dem Datenspeicher sollte auch der RAM-Verbrauch pro Thread der Applikation limitiert werden.&lt;br /&gt;
([[User:Mrohr|Matthias]]) Stimmt, ich wuerde hier sogar allgemein von Ressourcenverbrauch am Beispiel RAM und Datenspeicher, sprechen&lt;br /&gt;
&lt;br /&gt;
; Voraggregation von Daten / Caching&lt;br /&gt;
 Dieser Punkt fehlt: Stark ressourcen belastende Anfragen können auch in Lastarmen Zeiten vorberechnet werden.&lt;br /&gt;
([[User:Mrohr|Matthias]]) Stimmt, koennte noch als Anmerkung bei &amp;quot;Cachen von Anfragen&amp;quot; hinzugefuegt werden&lt;br /&gt;
&lt;br /&gt;
; ([[User:Mrohr|Matthias]]) Prueffrage: &amp;quot;Wird ein möglicher Überlauf von Protokolldaten... verhindert&amp;quot;&lt;br /&gt;
&lt;br /&gt;
Ist eine etwas eingeschrankte Sicht. Wurde hier eher von Ueberlauf von Speicherplaz zu Beispiel im Rahmen der Protokollierung sprechen&lt;br /&gt;
&lt;br /&gt;
; ([[User:Mrohr|Matthias]]) Durchfuehrung von Lasttests zur Identifikation ressourcenintensiver Operationen&lt;br /&gt;
&lt;br /&gt;
Der Hinweis waere ggf. erwahnenswert&lt;br /&gt;
&lt;br /&gt;
; ([[User:Mrohr|Matthias]]) Hinweis auf nicht-angemeldeten Bereich&lt;br /&gt;
&lt;br /&gt;
Das Risiko durch rechenintensive Operationen durch einen DoS betroffen zu sein ist natuerlich fuer gewoehlich um so groesser, wenn diese im anonymen Bereich angeboten wird. Der Hinweis ware ggf. ebenfalls hilfreich.&lt;br /&gt;
&lt;br /&gt;
== M 4.WA25Verhinderung von Clickjacking (Markus) ==&lt;br /&gt;
Ok - das passt soweit.&lt;br /&gt;
&lt;br /&gt;
([[User:Mrohr|Matthias]]) Stimmt, auch wenn ich &amp;quot;Angreifer&amp;quot; in dem Beispiel eher als &amp;quot;Webseitenbetreiber&amp;quot; beschreiebn wuerde, da er nicht wirklich aktiv einen Angriff durchfuehrt, oder? Bitte nochmal ueber meinen Hinweis aus G 5.WA18 nachdenken: Ist Clickjacking-Schutz tatsaechlich Grundschutz? Ich bin mir da selber nicht so wirklich sicher.&lt;br /&gt;
&lt;br /&gt;
== M 5.WA21Sichere Anbindung von Hintergrundsystemen an Web-Anwendungen (Markus) ==&lt;br /&gt;
; Verantwortliche:&lt;br /&gt;
 Architekten fehlen. Entwickler müssen die Views umsetzen und die Datasource entsprechend einbinden - die fehlen hier ebenfalls.&lt;br /&gt;
; DirectorySystem Beispiel:&lt;br /&gt;
 Das DirectorySystem wird in dem angegeben Beispiel zum Single Point of Failure - das wird verschwiegen.&lt;br /&gt;
; Firewalls:&lt;br /&gt;
 Das sind fachlich-blinde Systeme. Was ist mit WAFs / IDS / IPS etc.?&lt;br /&gt;
([[User:Mrohr|Matthias]]) Stimmt, das hat in diesem Baustein nichts zu suchen&lt;br /&gt;
&lt;br /&gt;
; ([[User:Mrohr|Matthias]]) Typische Hintergrundsysteme&lt;br /&gt;
Hier fehlt irgendwie &amp;quot;Middleware&amp;quot;, die ist denke ich nicht immer Legacy&lt;br /&gt;
&lt;br /&gt;
== M 5.WA23Systemarchitektur einer Web-Anwendung (Markus) ==&lt;br /&gt;
; Verantwortliche:&lt;br /&gt;
Auch hier fehlend wieder die Architekten. &lt;br /&gt;
; Virtualisierung:&lt;br /&gt;
Virtualisierung bietet weitere Angriffsvektoren (z.B.: Hypervisor) die eine &amp;quot;Blech&amp;quot;Farm nicht bietet.&lt;/div&gt;</summary>
		<author><name>Mrohr</name></author>	</entry>

	<entry>
		<id>https://wiki.owasp.org/index.php?title=Talk:OWASP_Review_BSI_IT-Grundschutz_Baustein_Webanwendungen&amp;diff=130188</id>
		<title>Talk:OWASP Review BSI IT-Grundschutz Baustein Webanwendungen</title>
		<link rel="alternate" type="text/html" href="https://wiki.owasp.org/index.php?title=Talk:OWASP_Review_BSI_IT-Grundschutz_Baustein_Webanwendungen&amp;diff=130188"/>
				<updated>2012-05-21T13:24:36Z</updated>
		
		<summary type="html">&lt;p&gt;Mrohr: /* M 5.WA21Sichere Anbindung von Hintergrundsystemen an Web-Anwendungen (Markus) */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Since it's about a review of a document in German, all the discussions will be done in German :-)&lt;br /&gt;
&lt;br /&gt;
Diskussionen rund um den Review des &amp;quot;IT-Grundschutzbausteins Webanwendungen&amp;quot; finden hier statt, sinnvollerweise auf Deutsch :-)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Vorschlag für Kriterien, die an unser Review angelegt werden sollten (.kai) ==&lt;br /&gt;
&lt;br /&gt;
* Der Baustein soll alle wichtigen Themen der Entwicklung sicherer&lt;br /&gt;
Webanwendungen enthalten.&lt;br /&gt;
&lt;br /&gt;
* Der Baustein soll die verschiedenen Phasen der Software-Entwicklung&lt;br /&gt;
vollständig abdecken.&lt;br /&gt;
&lt;br /&gt;
* Der Baustein soll zwischen verbindlichen, prüfbaren Vorgaben und&lt;br /&gt;
unverbindlichen Empfehlungen sprachlich sauber unterscheiden (hier&lt;br /&gt;
spielt mein Auditorenblick eine Rolle). Vor allem soll der Baustein&lt;br /&gt;
verbindliche Anforderungen auch tatsächlich stellen. Alle&lt;br /&gt;
verbindlichen Anforderungen müssen unabhängig von der jeweiligen&lt;br /&gt;
Umgebung auch umsetzbar sein, d.h. sie müssen entsprechend generisch&lt;br /&gt;
sein.&lt;br /&gt;
&lt;br /&gt;
* Die Maßnahmen sollen nur in (begründbaren) Ausnahmen zu Empfehlungen&lt;br /&gt;
von OWASP im Widerspruch stehen.&lt;br /&gt;
&lt;br /&gt;
* Die Maßnahmen sollen verständlich und anwendbar sein.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== &amp;quot;Hilfsmittel&amp;quot; (Markus) ==&lt;br /&gt;
Ich würde das Script zur Vermeidung von Clickjacking wrappen und nicht als losen Skript-block in den Text einbinden - einfach schlechter Programmierstiel diese losen Blöcke.&lt;br /&gt;
Der Zugriff auf das Body-Element mit byTagName-Array[0] ist auch nicht wirklich gut. Ich halte Zugriffe über das DOM (klassisch), bei ID bzw. XPATH für besser. &lt;br /&gt;
&lt;br /&gt;
SQL-Injection Characters:&lt;br /&gt;
die Pipe fehlt hier zur Textkonatenierung&lt;br /&gt;
+ / - haben auch eine Bedeutung bei JOINs.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== &amp;quot;Goldene Regeln&amp;quot; (Matthias) ==&lt;br /&gt;
&lt;br /&gt;
Hier meine Anmerkungen zu diesem Dokument:&lt;br /&gt;
&lt;br /&gt;
; 1. Für mich fehlende Punkte&lt;br /&gt;
* Korrektur der Ursache (Root Cause) von Schwachstellen statt  Verhinderung deren Ausnutzung&lt;br /&gt;
* Bezug auf Minimierung der Angriffsfläche und Least-Privilege-Prinzip&lt;br /&gt;
* Bezug auf Defense-in-Depth-Prinzip&lt;br /&gt;
* Verwendung von getesteten Security APIs (z.B. OWASP ESAPI) statt selbstentwickelter Funktionen&lt;br /&gt;
* Bezug auf Externalisierung von Sicherheitsfunktionen, sowie deklerative vor programmatischer Sicherheit.&lt;br /&gt;
&lt;br /&gt;
; 2. Begriff &amp;quot;Web-Anwendung&amp;quot;&lt;br /&gt;
Würde ich generell durch &amp;quot;Webanwendung&amp;quot; ersetzen.&lt;br /&gt;
&lt;br /&gt;
; 3. Einleitung (&amp;quot;Web-Anwendungen stellen Funktionalität zur Verfügung, ...&amp;quot;)&lt;br /&gt;
&lt;br /&gt;
Wozu dient dieser Satz?&lt;br /&gt;
&lt;br /&gt;
; 4. &amp;quot;Die Architektur der Web-Anwendung ist im Sicherheitskonzept zu  dokumentieren.....&amp;quot; &lt;br /&gt;
&lt;br /&gt;
Ich fände es sinnvoller, wenn hier von der &amp;quot;Sicherheitsarchitektur&amp;quot; gesprochen wird, welche etwa neben den sicherheitsrelevanten Datenflüssen, sensible Komponenten, Entry Points, Akteure architekturelle Security Controls wie Authentisierung, Kryptographie und natürlich die Trust Boundaries beinhaltet.&lt;br /&gt;
&lt;br /&gt;
; 5. &amp;quot;Bei Web-Anwendungen handelt es sich häufig um spezielle Eigenentwicklungen....&amp;quot;&lt;br /&gt;
&lt;br /&gt;
Erstens würde ich hier den geläufigen Begriff &amp;quot;Individualsoftware&amp;quot; verwenden. Zweitens würde ich statt bestimmte SDLC-Phasen vorzugeben (die Begriffe &amp;quot;Softwareverteilung&amp;quot; und &amp;quot;Integration&amp;quot; sind mir bei Webanwendungen bisher noch nicht so häufig untergekommen), besser von der Notwendigkeit sprechen, Sicherheit in allen Entwicklungsphasen zu berücksichtigen, also eines SDLs.&lt;br /&gt;
&lt;br /&gt;
; 6. &amp;quot;Alle Ein- und Ausgaben der Web-Anwendung müssen in eine normalisierte Form überführt werden....&amp;quot;&lt;br /&gt;
&lt;br /&gt;
Normalisierung ist für mich nicht gleich Kanonsierung, auch wenn beide Begriffe häufig als synonym verwendet werden.  Der Unterschied wird in der [http://owasp-esapi-java.googlecode.com/svn/trunk_doc/2.0-rc4/org/owasp/esapi/Encoder.html API-Beschreibung der ESAPI] erklärt. Die Normalisierungs-Funktion ist allerdings schon vor einiger Zeit aus der ESAPI [https://lists.owasp.org/pipermail/esapi-dev/2010-January/000266.html rausgeflogen]. Die generelle Kanonisierung von Ausgaben halte ich dazu für nicht sinnvoll.&lt;br /&gt;
&lt;br /&gt;
Zweitens, finde ich den weiteren Text zwar grundsätzlich formal korrekt, aber so allgemein, dass dieser glaube ich niemandem so richtig etwas bringt.  &lt;br /&gt;
&lt;br /&gt;
Besser fände ich hier Ein- von Ausgabevalidierung grundsätzlich voneinander abzugrenzen. Etwa was ich per Eingabevalidierung (Längenprüfung, Casting, etc. per Whitelisting) und was mit Ausgebavalidierung (Enkodierung, Escaping, Parametrisierung) machen muss und kann.&lt;br /&gt;
&lt;br /&gt;
Eingabedaten können technisch zudem auch Werte eingelesener Property-Dateien sein. Muss ich die auch validieren? Ist das dann noch Grundschutz? &lt;br /&gt;
&lt;br /&gt;
; 7. &amp;quot;Für den Zugriff auf sensitive Funktionen oder Informationen muss die Web-Anwendung eine wirksame Authentisierung und Sitzungsverwaltung unterstützen. Die Eigenschaften der Sitzungs-ID müssen so gewählt werden, dass die Sitzung ausreichend geschützt ist. ....&amp;quot;&lt;br /&gt;
&lt;br /&gt;
Besser fände ich &amp;quot;eine Authentisierung, die über eine dem Schutzbedarf der Anwendung angemessene Stärke verfügt.&amp;quot; &lt;br /&gt;
&lt;br /&gt;
Eigentlich geht es doch mehr um den Schutz der Sitzungs-ID, da diese gewöhnlich im Verlauf einer Sitzung den Client authentisiert. Oder den Schutz des Zugriffs auf eine Sitzung. &lt;br /&gt;
&lt;br /&gt;
Zudem fehlt hier meiner Meinung nach der Hinweis auf die bevorzugte Verwendung getesteter Standardkomponenten.&lt;br /&gt;
&lt;br /&gt;
; 8. &amp;quot;Die Web-Anwendung sollte die zu übermittelnden Daten schützen.&amp;quot;&lt;br /&gt;
&lt;br /&gt;
Dies würde ich nur auf sensible Daten beziehen. Zusätzlich zu HTTPS würde ich hier schreiben, dass sensible Daten generell nicht in der URL übertragen werden dürfen.&lt;br /&gt;
&lt;br /&gt;
; 9. &amp;quot;Die Preisgabe interner Informationen (z.B. Kommentare, Fehlermeldungen)&amp;quot;&lt;br /&gt;
&lt;br /&gt;
Hier würde ich eher schreiben &amp;quot;(IN Kommentaren, Fehlermeldungen, HTTP Headern, etc.)&amp;quot;&lt;br /&gt;
&lt;br /&gt;
; 10. &amp;quot;Fehler müssen so behandelt werden, ... müssen Fehler bei der Autorisierung zu einer Verweigerung beim Zugriff auf die angeforderte Ressource führen.&amp;quot;&lt;br /&gt;
&lt;br /&gt;
Sprachlich: &amp;quot;Die Webanwendung muss sich stets in einem sicheren Zustand befinden. Beispielsweise müssen Fehler bei der Autorisierung zu einer Verweigerung des Zugriffs führen (Default-Deny-Strategie).&amp;quot;&lt;br /&gt;
&lt;br /&gt;
; 11. &amp;quot;Die Logging-Funktionen der Web-Anwendung müssen aufgetretene Ereignisse derart protokollieren, dass sicherheitskritische Vorfälle nachvollzogen werden können.&amp;quot;&lt;br /&gt;
&lt;br /&gt;
Hier würde hier eher von &amp;quot;allen sicherheitsrelevanten Ereignissen&amp;quot; sprechen.&lt;br /&gt;
&lt;br /&gt;
Weiterhin sollten insbesondere beim Logging der Datenschutz berücksichtigt werden, personenbezogene Daten also nach Möglichkeit nicht oder nur anonymisiert in technischen Logdateien protokolliert werden.&lt;br /&gt;
&lt;br /&gt;
; 12. &amp;quot;Alle Sicherheitsmechanismen (z.B. Authentisierung und Zugriffskontrolle) sind serverseitig zu implementieren und können nicht durch clientseitige Mechanismen ersetzt werden.&amp;quot;&lt;br /&gt;
&lt;br /&gt;
Die Aussage ist so nicht korrekt. Darüber hatten wir bereits bei der ASVS mehrfach diskutiert. &lt;br /&gt;
&lt;br /&gt;
Überall dort wo der Client angegriffen wird, also etwa bei RIAs (Stichwort DOM-Based XSS) müssen wir Security Controls clientseitig implementieren. Es gibt mittlerweile deshalb auch eine Portierung der ESAPI auf Javascript. Überall dort wo der Server oder Hintegrundsysteme angegriffen werden, ist die Aussage aber natürlich zutreffend.&lt;br /&gt;
&lt;br /&gt;
== &amp;quot;Gefährdungen&amp;quot; (Markus, Dennis, .... &amp;lt;Dein Name&amp;gt;) ==&lt;br /&gt;
; Generell:&lt;br /&gt;
Reference auf RFCs fehlen.&lt;br /&gt;
&lt;br /&gt;
==B.5.XX Web-Anwendungen ==&lt;br /&gt;
; 1. Erster Absatz - Letzter Satz: --Wieso werden hier nur HTML/XML Doks und Oberflächen angesprochen? Was ist der Unterschied zwischen einem HTML-Dok und einer Oberfläche? Was ist mit  Flash, etc.? Was ist mit WebSockets?&lt;br /&gt;
; 2. Stichpunkt &amp;quot;Protokollierung&amp;quot;: Sicherheits relevant ist ein sehr dehnbarer Begriff - Eine bessere Formulierung könnte sein: Zur Rekonstruktion von Nutzerhandlungen nötige Ereignisse (positve &amp;amp; negative) müssen protokolliert werden . . . &lt;br /&gt;
; 3. Absatz: &amp;quot;Abgrenzung des Bausteins&amp;quot;: &amp;quot;Die spez. Sicherheitsanforderungen an Web-Services werden in diesem Baustein nicht betrachtet&amp;quot; --&amp;gt; Wie so nicht? Was ist das Backend von einer Rest / AJAX-basierenden Webanwendung denn anderes als ein Web-Service? Diesen Satz würde ich entfernen.&lt;br /&gt;
; 4.Vorsätzliche Handlungen -&amp;gt; Web-Spoofing (G.5.87) -- Missverständliche Bezeichnung / Nomenklatur&lt;br /&gt;
; 5. Seite 4 : erste Zeile &amp;quot;Umsetzung&amp;quot;: &amp;quot;dafür umzusetztende Komponenten müssen die Webanwendung schützen...&amp;quot; - Hier fehlt mir der Hinweis, dass dieser Schutz verifiziert werden muss.&lt;br /&gt;
; 6 Seite 5: &amp;quot;Umsetzung&amp;quot; - Wir haben CSRF, D(D)os und SQL-Injection aber wo ist XSS?&lt;br /&gt;
; 7 Seite 7: &amp;quot;Die Sicherheitsfunktion wird ausschließlich clientseitig...&amp;quot; --&amp;gt; Warum muss der Angreifer überhaupt einen Browser umkonfigurieren? Was ist mit Proxies, Scripts, etc.? Ich würde das reduzieren darauf, dass rein Webbrowser-basierende Schutzfunktionen einfach umgangen werden können.&lt;br /&gt;
; 8 Seite 8: Die angesprochenen Punkte hinterlassen den Eindruck nicht vollständig zu sein: Mir fehlen Punkte wie &amp;quot;Outsourcing&amp;quot;, &amp;quot;KnowHow der Entwickler&amp;quot;, Tooling, Framework-Auswahl, etc.&lt;br /&gt;
; 9 Seite 9: Eigentlich möchte der Autor hier über Datenschutz sprechen. Abgesehen von den letzten drei Zeilen geht es aber nur um &amp;quot;User tracking&amp;quot; - Wo ist der Rest der Datenschutzproblematik? Warum der Fokuss auf Tracking? Mir ist das zu einseitig.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
tbd.&lt;br /&gt;
&lt;br /&gt;
; Wortwahl:&lt;br /&gt;
Ich stosse innerhalb der Texte immer wieder an die Worten '''Hintergrundsystem''' und '''Sicherheitskontext'''.&lt;br /&gt;
'''Hintergrundsystem:''' besseres Synonym?&lt;br /&gt;
'''Sicherheitskontext:''' nur weil es in den Texten um Sicherheit geht muss nicht an jeder Stelle immer wieder das Wort _Sicherheits_kontext eingebaut werden.&lt;br /&gt;
Bsp: &amp;quot;Erlangt ein Angreifer Kenntnis von einer solchen gültigen, aber nicht mehr genutzten SessionID, so kann er die Web-Anwendung im Sicherheitskontext des nicht abgemeldeten Benutzers weiter verwenden.&amp;quot; (G 5,WA12 Unzureichendes Session-Management von Web-Anwendungen)&lt;br /&gt;
Verbesserungsansansatz: ... so kann er die Web-Anwendung anstelle des eigentlichen Besitzers weiterhin verwenden.&lt;br /&gt;
&lt;br /&gt;
== &amp;quot;G 2.WA01 Mangelhafte Auswahl oder Konzeption von Web-Anwendungen&amp;quot; (Matthias) ==&lt;br /&gt;
&lt;br /&gt;
Nachdem ich mir diese Gefährdung durchgelesen hatte, fehlten mir ehrlich gesagt etwas die Worte. Nicht nur, dass hier fast jeder zweite Satz entweder falsch ist bzw. massive Fehler enthält oder ich diesen schlicht nicht verstehe, ist der ganze Text sprachlich wirklich enorm verbesserungsfähig. &lt;br /&gt;
&lt;br /&gt;
Na gut, ich konzentriere mich mal auf die fachlichen Punkte:&lt;br /&gt;
&lt;br /&gt;
; 1. Security Controls&lt;br /&gt;
Werden mal mit &amp;quot;Schutzmechanismen&amp;quot;, mal mit &amp;quot;Sicherheitskomponenten&amp;quot; und dann wieder als &amp;quot;Sicherheitsfunktionen&amp;quot; bezeichnet. Hier macht eine einheitliche Benennung sicherlich Sinn und ist weniger verwirrend.&lt;br /&gt;
&lt;br /&gt;
; 2. &amp;quot;Eine Web-Anwendung ist in der Regel ein verteiltes, komplexes System bestehend aus unterschiedlichen Komponenten (z. B. Webserver, Applikationsserver, Hintergrundsysteme)&amp;quot;&lt;br /&gt;
&lt;br /&gt;
Eine Webanwendung besteht sicher nicht aus einem Webserver- oder anderer infrastruktureller Komponenten, sondern ist Software welches diese nutzt.&lt;br /&gt;
&lt;br /&gt;
; 3. &amp;quot;Bei individuell entwickelten Web-Anwendungen sind im Allgemeinen die Frameworks, Komponenten und Schnittstellen im Rahmen der Konzeption auszuwählen und deren Einbindung und Absicherung zu betrachten....Im Gegensatz dazu ist bei der Konzeption von Web-Anwendungen auf Basis von Standardsoftware insbesondere auf die Auswahl der Software und die Konfiguration der Teilkomponenten zu achten&amp;quot;&lt;br /&gt;
&lt;br /&gt;
Wir unterscheiden im Rahmen von Webanwendungen eigentlich Free or Opensource Software (FOSS bzw. FLOSS), Standardsoftware und Individualsoftware voneinander. Wir unterscheiden nicht Frameworks von Standardsoftware. Frameworks können Teil von Standardsoftware sein, wie etwa bei SharePoint, SAP, etc, oder aber FOSS, wie etwa Spring. Die ganzen Absätze machen für mich daher keinen Sinn.&lt;br /&gt;
&lt;br /&gt;
; 4. &amp;quot;Eine Sicherheitsfunktion (z. B. Authentisierung, Autorisierung) wird nicht an einer Stelle umgesetzt und verwendet, sondern ist mehrfach in der Web- Anwendung realisiert. Wird diese Sicherheitsfunktion an den verschiedenen Stellen unterschiedlich umgesetzt, führt dies zu einem uneinheitlichen Sicherheitsniveau.&amp;quot;&lt;br /&gt;
&lt;br /&gt;
Natürlich ist die mehrfache Verwendung bestimmter Security Controls, beispielsweise von Zugriffskontrollen (Complete-Mediation) oder Validierung (Robustheit) erstrebenswert. Was der Autor hier wahrscheinlich meinte, war die Notwendigkeit diese zu Kapseln bzw. zu Externalisieren. Das bezieht sich im übrigen nicht nur auf die Controls selbst, sondern auch auf ihre Parametrisierung (etwa. über Konfigdateien / XACML).&lt;br /&gt;
&lt;br /&gt;
Wichtiger wäre in diesem Zusammenhang zudem die fehlende Berücksichtigung bestimmter Security Controls.&lt;br /&gt;
&lt;br /&gt;
; 5. &amp;quot;Auswahl von Web-Anwendungen auf Basis von Standardsoftware&amp;quot;&lt;br /&gt;
Was will der Satz sagen? Ich wähle Standardsoftware aus, aber doch keine Webanwendungen. Oder heißt das, ich kaufe eine existierende Anwendung ein (Webanwendung!=Indivudualsoftware)? &lt;br /&gt;
&lt;br /&gt;
; 6. &amp;quot;Das ausgewählte Produkt verfügt nicht über die ausreichende Sicherheitsfunktionalität, ... Daher müssen die notwendigen Schutzmechanismen nachträglich hinzugefügt werden, wodurch zusätzliche Aufwände entstehen.&amp;quot;&lt;br /&gt;
Das ist etwas sehr positiv formuliert. Tatsächlich können fehlende Security Controls in zugekaufter Software (insb. Standardsoftware) in der Realität häufig gar nicht hinzugefügt werden oder nur perimetrisch (z.B. per WAF oder Access Gateway).&lt;br /&gt;
&lt;br /&gt;
; 7. &amp;quot;Die Hintergrundsysteme werden unzureichend abgesichert und dadurch ist die Datenbank der Web-Anwendung aus dem Internet erreichbar.&amp;quot;&lt;br /&gt;
Gehören fehlende Netzwerksegmentierung bzw. Firewallregeln wirklich in diesen Kontext? Das ist doch eigentlich Grundschutz der Infrastruktur, oder?&lt;br /&gt;
&lt;br /&gt;
; 8. &amp;quot;Aufgrund schwacher Parameter in der Konfiguration des Frameworks zum Session-Management werden unsichere SessionIDs erzeugt.&amp;quot;&lt;br /&gt;
Was sind &amp;quot;schwache&amp;quot; Parameter?&lt;br /&gt;
&lt;br /&gt;
Welches Framework erlaubt unsichere SessionIDs durch eine &amp;quot;schwache&amp;quot; Konfiguration zu erzeugen?&lt;br /&gt;
&lt;br /&gt;
; 9. &amp;quot;Wird die Konfiguration des Web-Browsers durch einen Angreifer manipuliert, können die clientseitig umgesetzten&amp;quot;&lt;br /&gt;
&lt;br /&gt;
Manipuliert ein Angreifer die Konfguration seines Webbroswers, wenn er einen MITM-Proxy konfiguriert?&lt;br /&gt;
&lt;br /&gt;
Wie bereits bei den &amp;quot;Goldenen Regeln&amp;quot; angemerkt, gilt auch hier, das manche Security Controls auch clientseitig umgesetzt werden dürfen (etwa. zur Verhinderung von Dom-Based XSS).&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== &amp;quot;G 5.WA10 Fehler in der Web-Anwendungslogik&amp;quot; (Dennis) ==&lt;br /&gt;
; 1. &amp;quot;Damit kann aufgrund der Prüfreihenfolge ein hoher Ressourcenverbrauch provoziert werden, der für Denial-of-Service-Angriffe ausgenutzt werden kann.&amp;quot;&lt;br /&gt;
Meiner Meinung nach passt in diesem Kontext die Attacke DoS nicht ganz. Falls die nachfolgende Funktionalität wegen der langen Ausführungszeit der Filterkomponente übersprungen wird bzw. ein Fehler auftritt würde dies meiner Ansicht in die Thematik Anwendungslogik passen. Eine DoS-Attacke kann hingegen anhand jeder Funktion durchgeführt werden.&lt;br /&gt;
&lt;br /&gt;
== &amp;quot;G 5.WA11 Umgehung clientseitig umgesetzter Sicherheitsfunktionen von Web-Anwendungen&amp;quot; (Dennis) ==&lt;br /&gt;
; 1. &amp;quot;Ein Angreifer kann diese ausnutzen, um beispielsweise unbefugt Befehle an Hintergrundsysteme der Web-Anwendung zu übermittlen (z.B. in Form von Datenbankanfragen bei einer SQL-Injection).&amp;quot;&lt;br /&gt;
Umformulierung des Inhalts der Klammer. Hatte beim ersten Lesen für mich den Anschein, als ob ein Formular genutzt werden könnte welches den Nutzer aufforder eine SQLI einzugeben. Ich denke &amp;quot;Datenbankanfrage zwecks Ausführung einer SQL-Injection&amp;quot; würde besser passen.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== G 2.WA02 Mängel bei der Entwicklung und der Erweiterung von Web-Anwendungen (Matthias) ==&lt;br /&gt;
&lt;br /&gt;
Allgemein ist de obere Teil ok, die aufgezählten &amp;quot;Auswirkungen von fehlenden Vorgaben&amp;quot; verstehe ich jedoch nicht. Wo ist etwa der Bezug von Barrierefreiheit auf die Anwendungssicherheit?&lt;br /&gt;
&lt;br /&gt;
Mein Vorschlag, um diese Punkte etwa sinnvoll umzubauen:&lt;br /&gt;
* &amp;quot;Fehlendes Vorgehensmodell&amp;quot;: Bezug auf fehlende Berücksichtigung von Sicherheit im SDLC. Statt eines SDLCs selbst sollte hier besser auf die Notwendigkeit eines Secure Development Lifecycle (SDL) hingewiesen werden&lt;br /&gt;
* &amp;quot;Fehlende Programmierrichtlinien&amp;quot; =&amp;gt; Besser wäre hier &amp;quot;Fehlende Sicherheitsrichtlinien in der Programmierung&amp;quot; also &amp;quot;Secure Coding Guidelines&amp;quot;&lt;br /&gt;
* &amp;quot;Testfälle&amp;quot; =&amp;gt; &amp;quot;Sicherheitsrelevante Testfälle&amp;quot; (z.B. Security Unit Tests). &lt;br /&gt;
* &amp;quot;Barrierefreiheit&amp;quot;: Warum nicht an dieser Stelle die Auswirkungen von Sicherheitsfunktionen auf die Bedienbarkeit, etwa anhand von CAPTCHAS erläutern?&lt;br /&gt;
&lt;br /&gt;
== G 2.WA03 Unzureichender Schutz personenbezogener Daten bei Web-Anwendungen (Matthias) ==&lt;br /&gt;
&lt;br /&gt;
Der Titel dieses Bausteines heißt &amp;quot;Schutz personenbezogener Daten&amp;quot;, die genannten Beispiele beziehen sich bis auf den letzten jedoch auf die missbräuchliche (oder zumindest problematische) Nutzung aus Sicht des Datenschutzes. &lt;br /&gt;
&lt;br /&gt;
Die Punkt 1-3 sollten daher besser entfallen und z.B. durch die Folgenden ersetzt werden:&lt;br /&gt;
* Unsichere Einbindung von sozialen Netzwerken (Bezug nehmen auf den Like-Button bei Facebook)&lt;br /&gt;
* Unsichere Einbindung von Werbeinhalten&lt;br /&gt;
* Unsichere Übertragung und Caching&lt;br /&gt;
* Unsichere Protokollierung&lt;br /&gt;
* Ungenügender Zugriffsschutz&lt;br /&gt;
* Verstoß des Minimalprinzips bzw. der Zweckgebundenheit (welche Daten werden wirklich benötigt)&lt;br /&gt;
&lt;br /&gt;
Auch wäre es ggf. zumindest einen Verweis auf das BDSG zu machen.&lt;br /&gt;
&lt;br /&gt;
== G 4.33 Unzureichende oder fehlende Authentisierung (Matthias) ==&lt;br /&gt;
&lt;br /&gt;
; 1. Erster Absatz: &amp;quot;Wenn Authentisierungsmechanismen fehlen oder zu schlecht sind&amp;quot;&lt;br /&gt;
&lt;br /&gt;
&amp;quot;schlecht&amp;quot; sollte vlt besser durch &amp;quot;unzureichend&amp;quot; ersetzt werden.&lt;br /&gt;
&lt;br /&gt;
; 2. &amp;quot;Sicherheitslücken entstehen bei... der Benutzerauthentisierung&amp;quot;&lt;br /&gt;
&lt;br /&gt;
Hier findet nur ein Bezug auf &amp;quot;Passwörter&amp;quot; statt. Der Bezug auf die fehlerhaft implementierte oder dem Schutzbedarf ungenügende Schutzmechanismen (z.B. keine 2-Faktor-Authentisierung bei hochsensiblen Daten) fehlt. Auch auf das komplette fehlen von Authentisierungs-Controls wird hier nicht  eingegangen&lt;br /&gt;
&lt;br /&gt;
; 3. &amp;quot;Sicherheitslücken entstehen bei... der Komponentenauthentisierung&amp;quot;&lt;br /&gt;
&lt;br /&gt;
Wie bei 2., wird auch hier wieder nur auf Passwörter, nicht jedoch auf das fehlen von Controls selbst eingegangen. An dieser Stelle fehlt auch ein Hinweis auf die Notwendigkeit dedizierter Benutzeraccounts.&lt;br /&gt;
&lt;br /&gt;
; 4. &amp;quot;Sicherheitslücken entstehen bei... der Wahl des Verfahrens&amp;quot;&lt;br /&gt;
&lt;br /&gt;
Statt untauglich würde ich auch hier von &amp;quot;dem Schutzbedarf der Daten nicht angemessen&amp;quot; sprechen, eigentlich gehört das für mich aber in die obigen Punkte.&lt;br /&gt;
&lt;br /&gt;
; 5. Serverseitige Authentisierung fehlt&lt;br /&gt;
&lt;br /&gt;
Auch der Server (bzw. die Anwendung selbst) kann sich fehlerhaft oder ungenügend beim Benutzer authentsieren, etwa über DNS, SSL-Zertifikate, etc.&lt;br /&gt;
&lt;br /&gt;
== G 4.WA04 Unzureichende Validierung von Ein- und Ausgabedaten bei Web-Anwendungen (Matthias) ==&lt;br /&gt;
&lt;br /&gt;
; 1. &amp;quot;Unzureichende Validierung von Eingabedaten&amp;quot;&lt;br /&gt;
&lt;br /&gt;
Die genannten Beispiele sind genau keine korrekten Beispiele für diesen Fall, sondern betreffen die Ausgabevalidierung bzw. Enkodierung. Typische Fehler der Eingabevalidierung ist eine Manipulierbarkeit der Business Logik.&lt;br /&gt;
&lt;br /&gt;
; 2. &amp;quot;Unzureichende Validierung von Ausgabedaten&amp;quot;&lt;br /&gt;
&lt;br /&gt;
Hier geht es zentral um die Verhinderung von Interpreter Injection, also serverseitig (z.B. SQL oder LDAP Injection) oder clientseitig (XSS, JSON Injection, etc.). Statt &amp;quot;können die Ausgaben Schadcode&amp;quot; enthalten würde ich hier eher davon Sprechen, dass ein solcher Interpreteraufruf manipuliert werden kann (was dann z.B. zur Einschleusung von Schadcode genutzt werden kann).&lt;br /&gt;
&lt;br /&gt;
; 3. &amp;quot;Die Suchfunktion der Web-Anwendung verwendet die Eingaben der Benutzer ungefiltert&amp;quot;&lt;br /&gt;
&lt;br /&gt;
Mit ungenügender &amp;quot;Filterung&amp;quot; hat SQL Injection nichts zu tun,  eigentlich geht es hierbei darum, dass SQL-Anfragen dynamisch mit unvalidierten Eingebedaten zusammengebaut (konkateniert) werden.&lt;br /&gt;
&lt;br /&gt;
; 4. &amp;quot;Ungefilterter HTML-Code in Kommentar-Funktion&amp;quot;&lt;br /&gt;
&lt;br /&gt;
Hier fehlt der Bezug auf persistentes XSS, das hier sicherlich zentral ist.&lt;br /&gt;
&lt;br /&gt;
== G 4.WA05 Fehlende oder mangelhafte Fehlerbehandlung durch Web-Anwendungen (Tobias, Matthias) ==&lt;br /&gt;
; Abschnitt &amp;quot;Unsichere Fehlerbehandlung&amp;quot;&lt;br /&gt;
Die G adressiert &amp;quot;Unsichere Fehlerbehandlung&amp;quot;, der Abschnitt die &amp;quot;Unsichere Fehlerbehandlung in Sicherheitskomponenten&amp;quot;. Entsprechend sollte der fettgedruckte Teil angepasst werden.&lt;br /&gt;
&lt;br /&gt;
; &amp;quot;fehlende SQL-Parameter,&amp;quot;&lt;br /&gt;
Sollte besser &amp;quot;Fehlermeldungen bei ungültigen SQL-Abfragen&amp;quot; lauten.&lt;br /&gt;
&lt;br /&gt;
; &amp;quot;Auch scheinbar unkritische Informationen, wie die Meldung ob (..)&amp;quot;&lt;br /&gt;
Korrekt, allerdings nicht nachvollziehbar, wenn das Problem der Leser nicht schon bekannt ist. Daher erweitern nach &amp;quot; Rahmen von Brute-Force-Angriffen ausgenutzt werden.&amp;quot; mit &amp;quot;. Bei Brute-Force-Angriffen wäre in diesem Fall klar, dass der Benutzername gültig ist.&amp;quot;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[User:Mrohr|Matthias]]): Stimme dem Obigen auch zu, ausserdem:&lt;br /&gt;
&lt;br /&gt;
; Sprachlich: &amp;quot;kann dies unvorhersehbare Auswirkungen haben und den Betrieb der Web-Anwendung bis zur Unerreichbarkeit einschränken.&amp;quot;&lt;br /&gt;
&lt;br /&gt;
&amp;quot;Unerreichbarkeit&amp;quot; ist etas merkwuerdig ausgedrueckt, besser ware hier von der &amp;quot;Verfuegbarkeit&amp;quot; zu sprechen. Im Uebrigen fehlt vollstaendig der Bezug auf die Verfuegbarkeit als Primaeres Schutzziel der Informationssicherheit.&lt;br /&gt;
&lt;br /&gt;
; &amp;quot;Clientseitige Fehlerbehandlung&amp;quot;&lt;br /&gt;
Das stimmt soweit, das generelle Problem ist jedoch genereller, naehmlich die clientseitige Abbildung sicherheitsrelaventer Logik (in diesem Fall die Fehlerbehandlung)&lt;br /&gt;
&lt;br /&gt;
== G 4.WA06 Unzureichende Nachvollziehbarkeit von sicherheitsrelevanten Ereignissen bei Web-Anwendungen (Matthias) ==&lt;br /&gt;
&lt;br /&gt;
; 1. Erster Absatz: &amp;quot;Die Behebung einer Schwachstelle ist dann nicht oder nur unter erschwerten Bedingungen möglich.&amp;quot;&lt;br /&gt;
&lt;br /&gt;
Hier würde ich ergänzen: &amp;quot;...und Angriffe auf die Anwendungen können ggf. nicht erkannt oder nachvollzogen werden&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
; 2. &amp;quot;Beispiele&amp;quot;: Kommulierbarkeit&lt;br /&gt;
&lt;br /&gt;
Hier fehlt auch ein Bezug auf die Kommulierbarkeit von SIcherheitsereignissen, dass diese also auch von solchen anderer Systeme in Verbindung gesetzt werden können&lt;br /&gt;
&lt;br /&gt;
; 3. &amp;quot;Beispiele&amp;quot;: Gerichtsverwertbarkeit&lt;br /&gt;
&lt;br /&gt;
Auch die Möglichkeit zur Gerichtsverwertbarkeit (etwa durch eindeutigen Zeitstempel) und manipulationssicherer Speicherung, würde ich an dieser Stelle unbedingt erwähnen.&lt;br /&gt;
&lt;br /&gt;
== G 4.WA07 Offenlegung von Informationen bei Web-Anwendungen (Matthias) ==&lt;br /&gt;
&lt;br /&gt;
; 1. Titel&lt;br /&gt;
&lt;br /&gt;
Hier würde ggf. &amp;quot;Offenlegung vertraulicher Informationen&amp;quot; sicher besser passen als &amp;quot;Offenlegung von Informationen&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
; 2. Beispiellink&lt;br /&gt;
&lt;br /&gt;
Ein Beispiellink (mit und ohne Token) würde sicher die Verständlichkeit dieser Schwachstelle verbessern.&lt;br /&gt;
&lt;br /&gt;
; 3. Erster Absatz: &amp;quot;Wenn demzufolge Informationen unnötig offengelegt werden, steigt die Wahrscheinlichkeit eines erfolgreichen Angriffs.&amp;quot;&lt;br /&gt;
&lt;br /&gt;
Interne Informationen auszublenden ist eine Härtungsmaßnahme, deren Anzeige erhöht aber nicht zwangsläufig die Wahrscheinlichkeit eines erfolgreichen Angriffs. Ich würde diesen Satz weglassen.&lt;br /&gt;
&lt;br /&gt;
 ; 4. Fehlende Punkte&lt;br /&gt;
&lt;br /&gt;
* Ein Hinweis auf HTTP Header wäre hier sicher erwähnenswert.&lt;br /&gt;
* Weiterhin bzgl. der Anzeige von Traces und ein Verweis auf den Entsprechenden Baustein zur Fehlerbehandlung&lt;br /&gt;
&lt;br /&gt;
== G 5.WA14 Cross-Site Request Forgery (CSRF, XSRF) (Matthias) ==&lt;br /&gt;
&lt;br /&gt;
; 1. Erster Absatz: &amp;quot;Können Funktionen einer Web-Anwendung ohne weitere Überprüfung der Authentizität des HTTP-Requests (z.B. durch Tokens in versteckten Formularfeldern) genutzt werden&amp;quot;&lt;br /&gt;
&lt;br /&gt;
Statt &amp;quot;Funktionen&amp;quot; würde ich besser von &amp;quot;schreibenden Aktionen&amp;quot; sprechen, dann macht der Satz mehr Sinn.&lt;br /&gt;
&lt;br /&gt;
; 2. Dritter Absatz: &amp;quot;Im Gegensatz zu XSS (siehe ...￼ ) ist das Angriffsziel nicht die Information auf dem Client (z. B. in Cookies),&amp;quot;&lt;br /&gt;
&lt;br /&gt;
Dieser (Halb-)Satz macht keinen Sinn, auch weil es bei XSS nicht nur im Informationen auf dem Cient geht. Vorschlag: &amp;quot;ist das Angriffsziel nicht die Ausführung von Skriptcode, sondern von unbefugten, schreibenden Aktionen im Kontext des angemeldeten Benutzers.&amp;quot;&lt;br /&gt;
&lt;br /&gt;
; 3. Session Riding&lt;br /&gt;
&lt;br /&gt;
Session Riding ist quasi nur ein anderer Begriff für CSRF. Die einzige Form von CSRF die mir bekannt ist, sind Angriffe mit Standard-Passwörtern auf HTTP-Basic-Auth geschützten Ressourcen.&lt;br /&gt;
&lt;br /&gt;
Im Grunde ist Session Riding aber nur ein Synonym für CSRF. Der Absatz ist daher auch nur eine Wiederholung der obigen Beschreibung.&lt;br /&gt;
&lt;br /&gt;
; 4. Zum Beispiel: &amp;quot;Durch einen präparierten Link auf einer Webseite wird die Änderung des Zugangspasswortes des Routers eingeleitet.&amp;quot;&lt;br /&gt;
&lt;br /&gt;
Etwas ungüngstig ausgedrückt. Besser wäre: &amp;quot;wird eine Anfrage zur Änderung des Zugangspasswortes an den Router gesendet. Hierbei sendet der Browser automatisch den Session Cookie mit, worüber die Webanwendung die Authentizität der Anfrage verifiziert und die Änderung durchführt.&amp;quot;&lt;br /&gt;
&lt;br /&gt;
== G 5.WA18 Clickjacking (Matthias) ==&lt;br /&gt;
&lt;br /&gt;
Hier stellt sich mir nur die allgemeine Frage, ob Clickjacking, bzw. der Schutz davor tatsächlich einem Grundschutz zuzurechnen ist. Persönlich würde ich dies nicht tun.&lt;br /&gt;
&lt;br /&gt;
== M 2.WA02 Dokumentation der Architektur von Web-Anwendungen (Matthias) ==&lt;br /&gt;
&lt;br /&gt;
; Verantwortlich für die Umsetzung&lt;br /&gt;
Hier wäre auch die Nennung des &amp;quot;Architekten&amp;quot; sinnvoll&lt;br /&gt;
 &lt;br /&gt;
; Fehlende Bestandteile der Dokumentation:&lt;br /&gt;
* Schutzbedarf des Systems sowie der verarbeiteten Daten&lt;br /&gt;
* Schützenswerte Daten und Funktionen (Assets)&lt;br /&gt;
* Betriebliche Anforderungen an die Sicherheit bzw. eingesetzte Plattform&lt;br /&gt;
* Dokumentierte Konfigurationseinstellungen &lt;br /&gt;
* BIA (RTO, RPO)&lt;br /&gt;
* Schnittstellen&lt;br /&gt;
* Trust Boundaries&lt;br /&gt;
* Akteure (bzw. Trust Level)&lt;br /&gt;
* Sicherheitsannahmen&lt;br /&gt;
* Geltende Compliance-Anforderungen (BDSG, PCI DSS, etc.)&lt;br /&gt;
&lt;br /&gt;
; Benutzermanagement&lt;br /&gt;
&lt;br /&gt;
Wenn damit das Identity Management gemeint ist, gehört das Dokumentiert, ist aber keine Sicherheitsfunktion. Oder ist hiermit das Rollen- und Berechtigungskonzept gemeint? Grenzt sich aus meiner Sicht schwer mit dem Thema Authentisierung ab. &lt;br /&gt;
&lt;br /&gt;
; Prüffragen&lt;br /&gt;
&lt;br /&gt;
Hier fehlt etwas in Bezug auf Sicherheitsanforderungen. Beispiel: &amp;quot;Werden Sicherheitsanforderungen an den Betrieb während der Entwicklung abgestimmt und dokumentiert&amp;quot;&lt;br /&gt;
&lt;br /&gt;
== M 2.WA12 Entwicklung und Erweiterung von Anwendungen (Markus) ==&lt;br /&gt;
; &amp;quot;Es sollte darauf geachtet werden, dass Sicherheitsanforderungen&lt;br /&gt;
vollständig durch Sicherheitsmechanismen erfüllt und zur Erstellung von&lt;br /&gt;
Testfällen festgehalten werden.&amp;quot; --&amp;gt; Bessere Formulierung würde aussagen, dass die Sicherheitsanforderungen durch Testfälle verifiziert werden.&lt;br /&gt;
&amp;quot;(z. B. durch Kommentare im&lt;br /&gt;
Quelltext). Somit ist der Quelltext zu einem&amp;quot; --&amp;gt; Das ist kein empfehlenswerter Programmierstiel! Raus mit diesem Kommentar&lt;br /&gt;
;&amp;quot;Zum Schutz vor dem Verlust bereits entwickelter und verworfener&lt;br /&gt;
Lösungen sowie zu Dokumentationszwecken sollte die Historie der&lt;br /&gt;
Änderungen festgehalten werden (z. B. durch ein Revisionssystem).&amp;quot; --&amp;gt; Auch diesen Absatz können wir streichen - Kein professioneller Programmierer arbeitet ohne Versionierugssystem.&lt;br /&gt;
;&amp;quot;Bei Web-Anwendung sollten die Webseiten auf Konformität zu dem&lt;br /&gt;
verwendeten Standard (z. B. HTML-Standard) getestet werden. Dadurch&lt;br /&gt;
können unvorgesehene Seiteneffekte aufgrund einer Fehlinterpretation&lt;br /&gt;
seitens der Browser vermieden werden.&amp;quot; --&amp;gt; Könnte man noch um &amp;quot;Die Software ist in möglichst vielen Browsern zu testen&amp;quot; erweitern.&lt;br /&gt;
;Generell geht der Autor leider nicht auf die Rollen &amp;amp; Rechte Verteilung ein. Mir fehlt der Hinweis, das es eine personelle Trennung zwischen Entwicklung, Test und Betrieb geben muss.&lt;br /&gt;
;Zum Thema Wartung / Betrieb --&amp;gt; Hier wird keine Aussage getroffen bezüglich Log_Files. Dieses Thema kann kritische Auswirkungen haben, Bsp.: logging ganzer HTTP-Requests im LogLevel=Debug.&lt;br /&gt;
; &amp;quot;Produktspezifische Sicherheitsfunkionalität&amp;quot; - Dieser Absatz ist gefährlich - der Angreifer ist nicht zur Verwendung dies Zielbrowsers gezwungen. Deshalb können Browser-spez. Sicherheitsfunktionen nur als Add-ON gewertet werden.&lt;br /&gt;
; &amp;quot;Festlegung der Entwicklungsumgebung&amp;quot; - Dieser Absatz geht nicht auf die zu verwendenden Testdaten ein. Der Hinweis, dass Live-Daten / Kundendaten nichts in Test- &amp;amp; Entwicklungsumgebungen zu suchen haben fehlt!!!&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== M 2.WA24 Web-Tracking (Matthias) ==&lt;br /&gt;
&lt;br /&gt;
; Letzter Absatz: &amp;quot;Falls eine Auswertung von Nutzerdaten, insbesondere personenbezogener Daten, .. &amp;quot;&lt;br /&gt;
&lt;br /&gt;
Hier sollte denke ich besser von personenbeziehbaren Daten gesprochen Werten. Dies betrifft etwa die Zuordnung von Surfverhalten zu einer bestimmten Person. Dies sollte stets nach den Prinzipien Datensparsamkeit und Datenvermeidung, Erforderlichkeit, sowie Zweckbindung erfolgen. Ist Webtracking nicht personenbeziehbar ist dies kein Thema für den Datenschutz.&lt;br /&gt;
&lt;br /&gt;
== M 4.WA04 Authentisierung bei Web- Anwendungen (Matthias) ==&lt;br /&gt;
&lt;br /&gt;
: Verantwortlich fuer Umsetzung &lt;br /&gt;
sollte in erster Linie beim Architekturen und in zweiter beim Entwickler liegen&lt;br /&gt;
; Vermischung von Authentisierung und Session Management &lt;br /&gt;
&lt;br /&gt;
Bei diesem Baustein findet eine ziemlich große Vermischung von Anforderung an die Authentisierung und das erst in &amp;quot;M 4.WA06 Session-Management bei Web- Anwendungen&amp;quot; behandelte Session Management statt (Beispiel: &amp;quot;Remember-Me-Funktion&amp;quot;). Beide Themen sollten sinnvollerweise getrennt voneinander zu betrachten und aufeinander zu beziehen.&lt;br /&gt;
&lt;br /&gt;
; Verwendung von Frameworks&lt;br /&gt;
&lt;br /&gt;
Die Anforderung ist schon ein wenig eingeschränkt. Besser passt hier denke ich die &amp;quot;Abbildung der Authentisierung über Standardkomponenten (Bibliotheken oder Frameworks)&amp;quot;. &lt;br /&gt;
&lt;br /&gt;
; Remember-Me-Funktion&lt;br /&gt;
&lt;br /&gt;
Siehe oben, gehört zum Session Management. Das ließt sich im übrigen so, als ob eine Webanwendung Credentials auf dem Client abhängt. &lt;br /&gt;
&lt;br /&gt;
; Grenzwerte für gescheiterte Anmeldeversuche&lt;br /&gt;
&lt;br /&gt;
Diese Empfehlung ist allgemein falsch, da sie sehr von der betrachteten Anwendung abhängt. Besser wäre hier allgemein von Mechanismen zur Verhinderung von automatisierten Angriffen zu sprechen (Anti-Automatisierung). &lt;br /&gt;
&lt;br /&gt;
Etwa umsetzbar durch&lt;br /&gt;
* Sperrung nach x Anmeldeversuchen&lt;br /&gt;
* Throttling&lt;br /&gt;
* Captchas&lt;br /&gt;
* Sicherheitsfragen&lt;br /&gt;
&lt;br /&gt;
Das allgemeine Sperren kann leicht für das gezielte Aussperren von Benutzern (User Lockout) verwendet werden. Was etwa bei Trading-Anwendungen nicht funktioniert.&lt;br /&gt;
&lt;br /&gt;
; Automatisiertes Zurücksetzen von Authentisierungsdaten&lt;br /&gt;
&lt;br /&gt;
Würde ich besser als &amp;quot;Passwort-Reset&amp;quot; bezeichnen.&lt;br /&gt;
&lt;br /&gt;
Weiterhin fehlt hier der Hinweis, dass statt ein automatisiertes Zurücksetzen, ein Mechanismus zu empfehlen ist, bei dem über ein hinterlegtes Sicherheitsmerkmal (Handy-Nummer oder E-Mail-Adresse) vom Benutzer zunächst eine Verifikation durchgeführt wird. Beispielsweise durch einen erhaltenen Link. Erst dann darf eine Änderung des Passwortes durch den Benutzer erfolgen.&lt;br /&gt;
&lt;br /&gt;
; Registrierung nicht behandelt&lt;br /&gt;
&lt;br /&gt;
Es existiert hier kein Punkt, der die sichere Implementierung von Benutzerregistrierungen behandelt.&lt;br /&gt;
&lt;br /&gt;
; Verweis auf Externalisierung fehlt.&lt;br /&gt;
&lt;br /&gt;
Statt die Authentisierung selbst durchzuführen kann eine Anwendung hierzu auf eine externe Komponente (Beispiel: SiteMinder oder Kerberos) zurückgreifen.&lt;br /&gt;
&lt;br /&gt;
; Verweis auf Behandlung von Credentials fehlt&lt;br /&gt;
&lt;br /&gt;
Auch wenn das  in &amp;quot;M 4.WA15 Schutz vertraulicher Daten bei Web- Anwendungen&amp;quot; ausführlich behandelt wird, sollte in diesem Baustein bereits auf den angemessenen Schutz von Authentisierungsdaten bei Übertragung und Speicherung hingewiesen werden.&lt;br /&gt;
&lt;br /&gt;
== M 4.WA05Umfassende Ein- und Ausgabevalidierung bei Web-Anwedungen (Markus) ==&lt;br /&gt;
; &amp;quot;Ablehnung der Daten im&lt;br /&gt;
Fehlerfall&amp;quot; --&amp;gt; Hier könnte man noch auf Tar-Pits eingehen - nur ein Vorschlag.&lt;br /&gt;
&lt;br /&gt;
== M 4.WA06Session-Management bei Web-Anwendungen (Markus, Matthias) ==&lt;br /&gt;
; &amp;quot;Übertragung der SessionID mittels GETRequest&amp;quot; --&amp;gt; Hier fehlt der Hinweis, dass die Lebensdauer dieser SessionIds kurz/kürzer sein muss, als im Falle der Speicherung im Cookie.&lt;br /&gt;
&lt;br /&gt;
([[User:Mrohr|Matthias]]) Die Anmerkung verstehe ich ehrlich gesagt ueberhaupt nicht, zumal das SM haeufig transparent zwischen Cookies und URL Rewriting wechselt. Wozu soll das gut sein? Wie soll das geschehen? Idealerweise sollte die Session ID niemals in die URL geschrieben werden, das sollte eigentlich genuegen.&lt;br /&gt;
&lt;br /&gt;
; &amp;quot;Verschlüsselte Übertragung von SessionIDs&amp;quot; --&amp;gt; Hier fehlt der Hinweis auf den Beast-Exploit. TLS Version &amp;gt; 1.0 verwenden!&lt;br /&gt;
&lt;br /&gt;
([[User:Mrohr|Matthias]]) Solange hier nicht auf eine explizite TLS Version eingegangen wird, sollte meiner grossen Ueberzeugung nach hier auch auf keine Exploits etc. eingagen werden, das gehoert an andere Stelle.&lt;br /&gt;
&lt;br /&gt;
; ([[User:Mrohr|Matthias]]) Weiterhin:&lt;br /&gt;
&lt;br /&gt;
 Es dürfen keine extern bekannten oder erratbaren Daten (z. B. IP-Adresse, Uhrzeit) in die Berechnung der SessionID einfließen.&lt;br /&gt;
&lt;br /&gt;
Die Aussage finde ich etwas problematisch, wichtiger ist, dass die Entropie ausreichend hoch ist. Haeufig werden etwa IPs von Load Balancern in die Session ID hineingeschrieben.&lt;br /&gt;
&lt;br /&gt;
 - Domain (z. B. webapp.domain.tld),&lt;br /&gt;
 - Path (z. B. /webapp/),&lt;br /&gt;
 - Secure und&lt;br /&gt;
 - HttpOnly.Beschränkte Sitzungsdauer&lt;br /&gt;
&lt;br /&gt;
Das sieht so aus, als ob es empfehlenswert ist, das Domain-Tag zu verwenden, das ist es sicherlich nicht. Was macht hier der Hinweis &amp;quot;Beschraenke Sizuungsdauer&amp;quot;?&lt;br /&gt;
&lt;br /&gt;
== M 4.WA07Fehlerbehandlung durch Web-Anwendungen (Markus) ==&lt;br /&gt;
; Konsistenter / Inkonsistener Zustand einer Webanwendung und der daraus resultierende Datenverlust: Hier fehlen mir die Punkte: DOS, Priv.Escalation, CodeExecution.&lt;br /&gt;
; Vermeidung vertraulicher Informationen in Fehlermeldungen --&amp;gt; Fehlermeldungen sollten ebenfalls eine Systeminformationen preisgeben (Softwareversion, Patchlevel, etc.)&lt;br /&gt;
; Abbruch des Vorgangs nach Auftreten eines Fehlers --&amp;gt; TarPits scheinen dem Autor umbekannt zu sein :)&lt;br /&gt;
; &amp;quot;Werden Fehler möglichst von der gleichen Komponente behandelt, in der&lt;br /&gt;
der Fehler aufgetreten ist?&amp;quot; --&amp;gt; Das &amp;quot;möglichst&amp;quot; sollten wir streichen.&lt;br /&gt;
&lt;br /&gt;
== M 4.WA08Schutz vor automatisierter Nutzung von Web-Anwendungen (Markus) ==&lt;br /&gt;
; &amp;quot;Brute-Force-&lt;br /&gt;
Angriffe (z. B. Erraten von Zugangsdaten) und Enumeration-Angriffe (z. B.&lt;br /&gt;
automatisiertes Ermitteln von gültigen Login-Namen)&amp;quot; -- die Beispiele sind identisch - besser Beispiele suchen, z.b. URL-Enumeration&lt;br /&gt;
&lt;br /&gt;
([[User:Mrohr|Matthias]]) Das sehe ich anders. Brute-Forcing bezieht auf Passwoerter und Enumeration auf Benutzernamen, etwa durchs hochzaehlen. Auch wenn ich zustimmen muss, dass die nicht ganz gluecklich gewaehlt wurden. Stann &amp;quot;Erraten von Zugangsdaten&amp;quot; wuerde ich besser von &amp;quot;Erraten von Passwoertern&amp;quot; sprechen. Oder wie gesagt gleich auch auf andere Beispiele (etwa Object ID Enumeration) beziehen.&lt;br /&gt;
&lt;br /&gt;
== M 4.WA11Sichere Konfiguration von Web-Anwendungen (Markus) ==&lt;br /&gt;
; &amp;quot;Sicherer Umgang mit TLS/SSL&amp;quot; -- Hier fehlt der Hinweis, dass TLS-1.0 gebrochen ist&lt;br /&gt;
; &amp;quot;Zeichenkodierungskonfiguration&amp;quot; -- Ein Whitelisting abhängig von der Encodierung wäre ein weiterer Vorschlag&lt;br /&gt;
; &amp;quot;Restriktive Dateisystemberechtigungen&amp;quot; -- auch wenn es ein klassiker ist - der AS sollte ebenfalls mit von einem eingeschränkten Nutzer gestartet werden und nicht als root&lt;br /&gt;
; Administration Consolen:zur Ergänzen: Wenn diese nicht benötigit, sollten derartige Applikationen nicht deployed werden, unabhängig von möglichen Zugangsbeschränkungen.&lt;br /&gt;
&lt;br /&gt;
([[User:Mrohr|Matthias]]) Sorry, meiner Meinung nach hat die Bewertung von Kryptoverfahren hier abslut nichts zu suchen.Stattdessen sollte hier auf den entsprechenden [https://www.bsi.bund.de/ContentBSI/Publikationen/TechnischeRichtlinien/tr02102/index_htm.html Empfehlung des BSI] verwiesen werden, auch wenn dieses Dokument derzeit noch etwas outdated zu sein scheint.&lt;br /&gt;
&lt;br /&gt;
== M 4.WA13Kontrolliertes Einbinden von Daten und Inhalten bei Web-Anwendungen (Markus) ==&lt;br /&gt;
; Datei-Upload: Bei einem Upload werden Dateien durchaus in TEMP-Verzeichnissen gesammelt und danach weiterverarbeitet. Diese TEMP-Verzeichnisse sind im Rahmen einer Sicherheitsanalyse zu betrachten -&amp;gt; Möglicher (unbefugter) Zugriff auf weitere Uploads&lt;br /&gt;
; Upload komprimierter Dateien / großer Dateien birgt die Gefahr von DOS Angriffen&lt;br /&gt;
; Upload von Dateien kann bei weiterem Parsing zu Speicherengpässen führen --&amp;gt; DOS-Angriffe auf Thread-Local etc.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== M 4.WA14Restriktive Herausgabe sicherheitsrelevanter Informationen bei Web-Anwendungen (Markus, Matthias) ==&lt;br /&gt;
OK - Keine Anmerkungen von mir.&lt;br /&gt;
&lt;br /&gt;
([[User:Mrohr|Matthias]]) Von mir schon;)&lt;br /&gt;
&lt;br /&gt;
; ([[User:Mrohr|Matthias]]) Vermeidung von Kommentaren in ausgelieferten Webseiten&lt;br /&gt;
&lt;br /&gt;
Das ist leider total falsch, wir brauchen haeufig Komentare, aus Kompatibilitaetsgruenden. So wird etwa der JavaScript-Block haeufig auskommentiert.&lt;br /&gt;
&lt;br /&gt;
Wurde stattessen besser von sicherheitsrelevanten Kommentaren sprechen und als Massnahme generell Entwicklerkommentare ueber Sprachkonstruktre (etwa JSP) durchzufuehren.&lt;br /&gt;
&lt;br /&gt;
; ([[User:Mrohr|Matthias]]) Löschen nicht benötigter Dateien&lt;br /&gt;
&lt;br /&gt;
Hier wurde ich ggf. Dateien von Versionisierungstools (etwa Subversion) erwaehnen, das sehen wir schon recht haeufig.&lt;br /&gt;
&lt;br /&gt;
Statt Dateien einfach nur zu loeschen (was in der Praxis haeufig nicht so einfach ist) bietet es sich zudem an, den Zugriff auf bestimmte Dateien oder Dateitypen generell zu sperren, etwa mittels ACL im Apache.&lt;br /&gt;
&lt;br /&gt;
; ([[User:Mrohr|Matthias]]) Gibt die Web-Anwendung ausschließlich neutrale Fehlermeldungen aus und sind diese im Quelltext identisch? {E: C}&lt;br /&gt;
&lt;br /&gt;
Persoenlich verstehe ich das nicht. Wieseo neutrale Fehlermeldung? Das macht fuer mich nur beim Login Sin. Hierzu existiert in dem Text auch keinerlei Bezug. Ich wuerde das daher besser entfernen und im Rahmen der Fehlerbehandlung diskutieren. Mindestens sollte hier jedoch besser von &amp;quot;sicherheitsunbedentlichen Fehlermeldungen&amp;quot; oder so gesprochen werden.&lt;br /&gt;
&lt;br /&gt;
; ([[User:Mrohr|Matthias]]) Wird der Referrer bei Verlassen der Web-Anwendung (z. B. durch einen Link auf eine externe Seite) gefiltert?&lt;br /&gt;
&lt;br /&gt;
Diesen Punkt sehe ich als sehr Fallabhengig an. Es kann fuer seiten durchaus wuenschenswert sein, dass der Referer weitergegeben wird. Der Referer sollte natuerlich keine sensiblen Informationen enthalten, was ja an anderer Stelle (etwa Session Management) vorgegeben wird bzw. gegeben werden sollte.&lt;br /&gt;
&lt;br /&gt;
== M 4.WA15Schutz vertraulicher Daten bei Web-Anwendungen (Markus, Matthias) ==&lt;br /&gt;
; Sichere kryptographische Algorithmen:&lt;br /&gt;
 Hier fehlt mir eine Liste der aktuelle als sicher geltenden Verfahren.&lt;br /&gt;
([[User:Mrohr|Matthias]]) Am Besten Referenz auf [https://www.bsi.bund.de/ContentBSI/Publikationen/TechnischeRichtlinien/tr02102/index_htm.html https://www.bsi.bund.de/ContentBSI/Publikationen/TechnischeRichtlinien/tr02102/index_htm.html]&lt;br /&gt;
&lt;br /&gt;
; Schlüssel&lt;br /&gt;
 Das die Schlüssel bestimmten Formaten entsprechen müssen ist ok - aber das Schlüsselmanagement wird gar nicht besprochen?&lt;br /&gt;
; Schutz der Daten im Browsercache&lt;br /&gt;
 Skripte und Browserplugins können ebenfalls auf den Browsercache zugreifen - diese werden hier nicht erwähnt.&lt;br /&gt;
&lt;br /&gt;
([[User:Mrohr|Matthias]]) Weiterhin entsprechen die vorgeschlagenen HTTP Headern nicht dem Best Practice:&lt;br /&gt;
&lt;br /&gt;
 Cache-control: no-cache, no-store&lt;br /&gt;
 Pragma: no-cache&lt;br /&gt;
 Expires: -1&lt;br /&gt;
&lt;br /&gt;
([[User:Mrohr|Matthias]]) Die Empfehlung hinsichtlich des manuellen Leerens des Browsercaches sollte wenn dann nur bei Anwendungen mit sehr hohem Schutzbedarf in Erwaegung gezogen werden. Wichtiger waere da schon eher die richtigen Cache-Header zu verwenden. Solche Empfehlungen ihm Rahmen des Grundschutzes aber wirklich nichts zu suchen. &lt;br /&gt;
&lt;br /&gt;
; Maskierung von Passwörtern &lt;br /&gt;
 Dies schützt bei der Eingabe nur vor ShoulderSurfing nicht vor Skripten oder Plugins die diese an andere Server posten.&lt;br /&gt;
&lt;br /&gt;
([[User:Mrohr|Matthias]]) Das ist voellig korrekt. Aber inwieweit ist die Aussage Passwort-Felder zu verwenden fehlerhaft bzw. hier unzureichend beschrieben?&lt;br /&gt;
&lt;br /&gt;
; Sicherung von Zugangsdaten:&lt;br /&gt;
 Zugangsdaten in einer Datei abzulegen - wenn auch ausserhalb des WebRoots ist keine gute Idee.&lt;br /&gt;
([[User:Mrohr|Matthias]]) Es ist sicher nicht die schoenste Variante, es laesst sich aber nunmal in vielen Faellen nicht vermeiden. Deshalb fordert der [http://code.google.com/p/owasp-asvs/wiki/Verification_V2 ASVS] hier etwa auch nicht mehr. Fuer den hier angestreben Grundschutz sollte das meiner Meinung nach ausreichen.&lt;br /&gt;
; Schutz von Quelltexten:&lt;br /&gt;
 Hier würde ich property files mit aufnehmen. der hinweis auf web-inf/classes fehlt - warum?&lt;br /&gt;
 Bei include-befehlen sind die pfadangaben zu überdenken.&lt;br /&gt;
([[User:Mrohr|Matthias]]) Wuerde property Dateien allgemein den Konfigurationsdateien zuordnen. Der Begriff &amp;quot;Einzubindende Dateien&amp;quot; ist mir allrdings Neu&lt;br /&gt;
&lt;br /&gt;
([[User:Mrohr|Matthias]]) Weiterhin, fehlt ein genereller Bezug auf HTML 5 WebStorage, LSOs etc. Zumindest in abstrakter Form, so dass diese dadurch indirekt addresiert werden. Egal, in dem relevanten Punkt will der Autor meiner Meinung nach nur einige Beispiele nennen, das sollte keinen Anspruch auf Vollsteandigkeit haben muessen.&lt;br /&gt;
&lt;br /&gt;
; ([[User:Mrohr|Matthias]]) - Durch dieses Attribut wird die Gültigkeit des Cookies auf die Domäne der Web-Anwendung beschränkt.&lt;br /&gt;
Nein, das ist leider total falsch. Das Domain-Attribut stellt eine Aufweichung der Cookie-Gueltigkeit dar und nicht anders herum. Gewoehlich sind Cookies immer Host-Cockies und das sollte auch so bleiben. Die Empfehlung sollte entfernt werden.&lt;br /&gt;
&lt;br /&gt;
== M 4.WA16Zugriffskontrolle bei Web-Anwendungen (Markus) ==&lt;br /&gt;
; Zugriffskontrolle via Frameworks:&lt;br /&gt;
 Dieser Punkt (Frameworks) wird nur in einem Satz erwähnt. Es werden keine Bespiele gegeben - Das ist zu wenig.&lt;br /&gt;
 Es müssen alle Zugriffe geschützt werden. Eine Protokollierung aller Zugriffe mit den nötigen Informationen ist ebenfalls empfehlenswert.&lt;br /&gt;
; Datei Upload:&lt;br /&gt;
 Die Gefahr eines DOS wird hier nicht erwähnt.&lt;br /&gt;
&lt;br /&gt;
== M 4.WA19Verhinderung von Cross-Site Request Forgery (CSRF, XSRF) (Markus, Matthias) ==&lt;br /&gt;
; Verantwortliche: &lt;br /&gt;
 Entwickler und Admins!&lt;br /&gt;
([[User:Mrohr|Matthias]]) Korrekt, wobei auch in der Reihenfolge&lt;br /&gt;
&lt;br /&gt;
; Anti-CSRF-Token in hidden fields:&lt;br /&gt;
 Das ist keine gute Idee. Ich würde das streichen!&lt;br /&gt;
&lt;br /&gt;
([[User:Mrohr|Matthias]]) Watt? Anti-CSRF-Tokens in Hidden Fields sind die Standard-Massnahme. Wie denn sonst? Bitte nicht streichen!!! &lt;br /&gt;
&lt;br /&gt;
([[User:Mrohr|Matthias]]) Die Technik bei der die Session ID als Anti-CSRF-Token verwendet wird, wird als Double-Cookie Submit bezeichnet, das sollte hier referenziert werden.&lt;br /&gt;
&lt;br /&gt;
; Umgehung von Schutzmechanismen:&lt;br /&gt;
 Man in the middle hat keinen direkten Bezug zu CSRF! Das würde ich streichen.&lt;br /&gt;
([[User:Mrohr|Matthias]]) Der Hinweis ist korrekt. Wovon der Autor hier spricht ist Session Replay nicht CSRF.&lt;br /&gt;
&lt;br /&gt;
; Frameworks:&lt;br /&gt;
 Gute Idee - aber es gibt auch Features in den ApplicationServern die CSRF unterbinden - warum wird das nicht besprochen?&lt;br /&gt;
&lt;br /&gt;
([[User:Mrohr|Matthias]]) Sehe ich persoenlich nicht so, da CSRF primaer ein Applikations-Fehler ist, und auch in der Applikation und nicht im Environment (AppServer) geloest werden sollte. Auch wenn das manchmal ggf. die einzig machbare Loesung darstellt.&lt;br /&gt;
&lt;br /&gt;
([[User:Mrohr|Matthias]]) Was generell fehlt, ist ein Hinweis darauf, dass schreibende Requests generell per HTTP Post abgewickelt werden sollten, da HTTP Get keine &amp;quot;Safe Method&amp;quot;  (siehe HTTP 1.1, RFC 2616) ist.&lt;br /&gt;
&lt;br /&gt;
== M 4.WA20Sicherer Entwurf der Logik von Web-Anwendungen (Markus, Matthias) ==&lt;br /&gt;
; Rollbacks:&lt;br /&gt;
 Tritt ein Fehler auf muss die Applikation einen konsistenten Datenstand zurück lassen. Das wird hier nicht erwähnt.&lt;br /&gt;
; RaceConditions:&lt;br /&gt;
 Fehler in der Geschäftslogik können auch durch zwei gleichzeitige Sessions auf einer Webapplikation auftreten - das wird hier nicht besprochen.&lt;br /&gt;
&lt;br /&gt;
([[User:Mrohr|Matthias]]) Ehrlich gesagt kann ich nicht ganz nachvollziehen, was der Sichere Entwurf der Logik von Web-Anwendungen mit dem Verzicht auf aktive Inhalte zu tun hat. Unabhaengig davon sollte man solche unsinnigen Aussagen im Jahre 2012 nicht mehr treffen, damit macht man sicht nur laecherlich.&lt;br /&gt;
&lt;br /&gt;
Nichts desto trotz, was hier als &amp;quot;echte&amp;quot; Massnahmen erwaehnt werden sollte sind:&lt;br /&gt;
* Verhinderung von Race Conditions, aber nicht nur durch Concurrent Sessions sondern auch durch Singletons (TOCTOU)&lt;br /&gt;
* Enforcements von Workflows, etwa durch die Verwendung von State Machines oder Request Tokens (auch bekannt als Site Usage Enforcement)&lt;br /&gt;
* Fail Securely (bzw. Verweis)&lt;br /&gt;
* Serverseitige Abbildung der Anwendungslogik, zumindest wenn diese sicherheitsrelevant sit&lt;br /&gt;
&lt;br /&gt;
== M 4.WA22Verhinderung der Blockade von Ressourcen (DoS) bei Web-Anwendungen (Markus, Matthias) ==&lt;br /&gt;
; Datenspeicher:&lt;br /&gt;
 Neben dem Datenspeicher sollte auch der RAM-Verbrauch pro Thread der Applikation limitiert werden.&lt;br /&gt;
([[User:Mrohr|Matthias]]) Stimmt, ich wuerde hier sogar allgemein von Ressourcenverbrauch am Beispiel RAM und Datenspeicher, sprechen&lt;br /&gt;
&lt;br /&gt;
; Voraggregation von Daten / Caching&lt;br /&gt;
 Dieser Punkt fehlt: Stark ressourcen belastende Anfragen können auch in Lastarmen Zeiten vorberechnet werden.&lt;br /&gt;
([[User:Mrohr|Matthias]]) Stimmt, koennte noch als Anmerkung bei &amp;quot;Cachen von Anfragen&amp;quot; hinzugefuegt werden&lt;br /&gt;
&lt;br /&gt;
; ([[User:Mrohr|Matthias]]) Prueffrage: &amp;quot;Wird ein möglicher Überlauf von Protokolldaten... verhindert&amp;quot;&lt;br /&gt;
&lt;br /&gt;
Ist eine etwas eingeschrankte Sicht. Wurde hier eher von Ueberlauf von Speicherplaz zu Beispiel im Rahmen der Protokollierung sprechen&lt;br /&gt;
&lt;br /&gt;
; ([[User:Mrohr|Matthias]]) Durchfuehrung von Lasttests zur Identifikation ressourcenintensiver Operationen&lt;br /&gt;
&lt;br /&gt;
Der Hinweis waere ggf. erwahnenswert&lt;br /&gt;
&lt;br /&gt;
; ([[User:Mrohr|Matthias]]) Hinweis auf nicht-angemeldeten Bereich&lt;br /&gt;
&lt;br /&gt;
Das Risiko durch rechenintensive Operationen durch einen DoS betroffen zu sein ist natuerlich fuer gewoehlich um so groesser, wenn diese im anonymen Bereich angeboten wird. Der Hinweis ware ggf. ebenfalls hilfreich.&lt;br /&gt;
&lt;br /&gt;
== M 4.WA25Verhinderung von Clickjacking (Markus) ==&lt;br /&gt;
Ok - das passt soweit.&lt;br /&gt;
&lt;br /&gt;
([[User:Mrohr|Matthias]]) Stimmt, auch wenn ich &amp;quot;Angreifer&amp;quot; in dem Beispiel eher als &amp;quot;Webseitenbetreiber&amp;quot; beschreiebn wuerde, da er nicht wirklich aktiv einen Angriff durchfuehrt, oder? Bitte nochmal ueber meinen Hinweis aus G 5.WA18 nachdenken: Ist Clickjacking-Schutz tatsaechlich Grundschutz? Ich bin mir da selber nicht so wirklich sicher.&lt;br /&gt;
&lt;br /&gt;
== M 5.WA21Sichere Anbindung von Hintergrundsystemen an Web-Anwendungen (Markus) ==&lt;br /&gt;
; Verantwortliche:&lt;br /&gt;
 Architekten fehlen. Entwickler müssen die Views umsetzen und die Datasource entsprechend einbinden - die fehlen hier ebenfalls.&lt;br /&gt;
; DirectorySystem Beispiel:&lt;br /&gt;
 Das DirectorySystem wird in dem angegeben Beispiel zum Single Point of Failure - das wird verschwiegen.&lt;br /&gt;
; Firewalls:&lt;br /&gt;
 Das sind fachlich-blinde Systeme. Was ist mit WAFs / IDS / IPS etc.?&lt;br /&gt;
([[User:Mrohr|Matthias]]) Stimmt, das hat in diesem Baustein nichts zu suchen&lt;br /&gt;
&lt;br /&gt;
; ([[User:Mrohr|Matthias]]) Typische Hintergrundsysteme&lt;br /&gt;
Hier fehlt irgendwie &amp;quot;Middleware&amp;quot;, die ist denke ich nicht immer Legacy&lt;br /&gt;
&lt;br /&gt;
== M 5.WA23Systemarchitektur einer Web-Anwendung (Markus) ==&lt;br /&gt;
; Verantwortliche:&lt;br /&gt;
Auch hier fehlend wieder die Architekten. &lt;br /&gt;
; Virtualisierung:&lt;br /&gt;
Virtualisierung bietet weitere Angriffsvektoren (z.B.: Hypervisor) die eine &amp;quot;Blech&amp;quot;Farm nicht bietet.&lt;/div&gt;</summary>
		<author><name>Mrohr</name></author>	</entry>

	<entry>
		<id>https://wiki.owasp.org/index.php?title=Talk:OWASP_Review_BSI_IT-Grundschutz_Baustein_Webanwendungen&amp;diff=130187</id>
		<title>Talk:OWASP Review BSI IT-Grundschutz Baustein Webanwendungen</title>
		<link rel="alternate" type="text/html" href="https://wiki.owasp.org/index.php?title=Talk:OWASP_Review_BSI_IT-Grundschutz_Baustein_Webanwendungen&amp;diff=130187"/>
				<updated>2012-05-21T13:24:20Z</updated>
		
		<summary type="html">&lt;p&gt;Mrohr: /* M 4.WA22Verhinderung der Blockade von Ressourcen (DoS) bei Web-Anwendungen (Markus, Matthias) */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Since it's about a review of a document in German, all the discussions will be done in German :-)&lt;br /&gt;
&lt;br /&gt;
Diskussionen rund um den Review des &amp;quot;IT-Grundschutzbausteins Webanwendungen&amp;quot; finden hier statt, sinnvollerweise auf Deutsch :-)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Vorschlag für Kriterien, die an unser Review angelegt werden sollten (.kai) ==&lt;br /&gt;
&lt;br /&gt;
* Der Baustein soll alle wichtigen Themen der Entwicklung sicherer&lt;br /&gt;
Webanwendungen enthalten.&lt;br /&gt;
&lt;br /&gt;
* Der Baustein soll die verschiedenen Phasen der Software-Entwicklung&lt;br /&gt;
vollständig abdecken.&lt;br /&gt;
&lt;br /&gt;
* Der Baustein soll zwischen verbindlichen, prüfbaren Vorgaben und&lt;br /&gt;
unverbindlichen Empfehlungen sprachlich sauber unterscheiden (hier&lt;br /&gt;
spielt mein Auditorenblick eine Rolle). Vor allem soll der Baustein&lt;br /&gt;
verbindliche Anforderungen auch tatsächlich stellen. Alle&lt;br /&gt;
verbindlichen Anforderungen müssen unabhängig von der jeweiligen&lt;br /&gt;
Umgebung auch umsetzbar sein, d.h. sie müssen entsprechend generisch&lt;br /&gt;
sein.&lt;br /&gt;
&lt;br /&gt;
* Die Maßnahmen sollen nur in (begründbaren) Ausnahmen zu Empfehlungen&lt;br /&gt;
von OWASP im Widerspruch stehen.&lt;br /&gt;
&lt;br /&gt;
* Die Maßnahmen sollen verständlich und anwendbar sein.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== &amp;quot;Hilfsmittel&amp;quot; (Markus) ==&lt;br /&gt;
Ich würde das Script zur Vermeidung von Clickjacking wrappen und nicht als losen Skript-block in den Text einbinden - einfach schlechter Programmierstiel diese losen Blöcke.&lt;br /&gt;
Der Zugriff auf das Body-Element mit byTagName-Array[0] ist auch nicht wirklich gut. Ich halte Zugriffe über das DOM (klassisch), bei ID bzw. XPATH für besser. &lt;br /&gt;
&lt;br /&gt;
SQL-Injection Characters:&lt;br /&gt;
die Pipe fehlt hier zur Textkonatenierung&lt;br /&gt;
+ / - haben auch eine Bedeutung bei JOINs.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== &amp;quot;Goldene Regeln&amp;quot; (Matthias) ==&lt;br /&gt;
&lt;br /&gt;
Hier meine Anmerkungen zu diesem Dokument:&lt;br /&gt;
&lt;br /&gt;
; 1. Für mich fehlende Punkte&lt;br /&gt;
* Korrektur der Ursache (Root Cause) von Schwachstellen statt  Verhinderung deren Ausnutzung&lt;br /&gt;
* Bezug auf Minimierung der Angriffsfläche und Least-Privilege-Prinzip&lt;br /&gt;
* Bezug auf Defense-in-Depth-Prinzip&lt;br /&gt;
* Verwendung von getesteten Security APIs (z.B. OWASP ESAPI) statt selbstentwickelter Funktionen&lt;br /&gt;
* Bezug auf Externalisierung von Sicherheitsfunktionen, sowie deklerative vor programmatischer Sicherheit.&lt;br /&gt;
&lt;br /&gt;
; 2. Begriff &amp;quot;Web-Anwendung&amp;quot;&lt;br /&gt;
Würde ich generell durch &amp;quot;Webanwendung&amp;quot; ersetzen.&lt;br /&gt;
&lt;br /&gt;
; 3. Einleitung (&amp;quot;Web-Anwendungen stellen Funktionalität zur Verfügung, ...&amp;quot;)&lt;br /&gt;
&lt;br /&gt;
Wozu dient dieser Satz?&lt;br /&gt;
&lt;br /&gt;
; 4. &amp;quot;Die Architektur der Web-Anwendung ist im Sicherheitskonzept zu  dokumentieren.....&amp;quot; &lt;br /&gt;
&lt;br /&gt;
Ich fände es sinnvoller, wenn hier von der &amp;quot;Sicherheitsarchitektur&amp;quot; gesprochen wird, welche etwa neben den sicherheitsrelevanten Datenflüssen, sensible Komponenten, Entry Points, Akteure architekturelle Security Controls wie Authentisierung, Kryptographie und natürlich die Trust Boundaries beinhaltet.&lt;br /&gt;
&lt;br /&gt;
; 5. &amp;quot;Bei Web-Anwendungen handelt es sich häufig um spezielle Eigenentwicklungen....&amp;quot;&lt;br /&gt;
&lt;br /&gt;
Erstens würde ich hier den geläufigen Begriff &amp;quot;Individualsoftware&amp;quot; verwenden. Zweitens würde ich statt bestimmte SDLC-Phasen vorzugeben (die Begriffe &amp;quot;Softwareverteilung&amp;quot; und &amp;quot;Integration&amp;quot; sind mir bei Webanwendungen bisher noch nicht so häufig untergekommen), besser von der Notwendigkeit sprechen, Sicherheit in allen Entwicklungsphasen zu berücksichtigen, also eines SDLs.&lt;br /&gt;
&lt;br /&gt;
; 6. &amp;quot;Alle Ein- und Ausgaben der Web-Anwendung müssen in eine normalisierte Form überführt werden....&amp;quot;&lt;br /&gt;
&lt;br /&gt;
Normalisierung ist für mich nicht gleich Kanonsierung, auch wenn beide Begriffe häufig als synonym verwendet werden.  Der Unterschied wird in der [http://owasp-esapi-java.googlecode.com/svn/trunk_doc/2.0-rc4/org/owasp/esapi/Encoder.html API-Beschreibung der ESAPI] erklärt. Die Normalisierungs-Funktion ist allerdings schon vor einiger Zeit aus der ESAPI [https://lists.owasp.org/pipermail/esapi-dev/2010-January/000266.html rausgeflogen]. Die generelle Kanonisierung von Ausgaben halte ich dazu für nicht sinnvoll.&lt;br /&gt;
&lt;br /&gt;
Zweitens, finde ich den weiteren Text zwar grundsätzlich formal korrekt, aber so allgemein, dass dieser glaube ich niemandem so richtig etwas bringt.  &lt;br /&gt;
&lt;br /&gt;
Besser fände ich hier Ein- von Ausgabevalidierung grundsätzlich voneinander abzugrenzen. Etwa was ich per Eingabevalidierung (Längenprüfung, Casting, etc. per Whitelisting) und was mit Ausgebavalidierung (Enkodierung, Escaping, Parametrisierung) machen muss und kann.&lt;br /&gt;
&lt;br /&gt;
Eingabedaten können technisch zudem auch Werte eingelesener Property-Dateien sein. Muss ich die auch validieren? Ist das dann noch Grundschutz? &lt;br /&gt;
&lt;br /&gt;
; 7. &amp;quot;Für den Zugriff auf sensitive Funktionen oder Informationen muss die Web-Anwendung eine wirksame Authentisierung und Sitzungsverwaltung unterstützen. Die Eigenschaften der Sitzungs-ID müssen so gewählt werden, dass die Sitzung ausreichend geschützt ist. ....&amp;quot;&lt;br /&gt;
&lt;br /&gt;
Besser fände ich &amp;quot;eine Authentisierung, die über eine dem Schutzbedarf der Anwendung angemessene Stärke verfügt.&amp;quot; &lt;br /&gt;
&lt;br /&gt;
Eigentlich geht es doch mehr um den Schutz der Sitzungs-ID, da diese gewöhnlich im Verlauf einer Sitzung den Client authentisiert. Oder den Schutz des Zugriffs auf eine Sitzung. &lt;br /&gt;
&lt;br /&gt;
Zudem fehlt hier meiner Meinung nach der Hinweis auf die bevorzugte Verwendung getesteter Standardkomponenten.&lt;br /&gt;
&lt;br /&gt;
; 8. &amp;quot;Die Web-Anwendung sollte die zu übermittelnden Daten schützen.&amp;quot;&lt;br /&gt;
&lt;br /&gt;
Dies würde ich nur auf sensible Daten beziehen. Zusätzlich zu HTTPS würde ich hier schreiben, dass sensible Daten generell nicht in der URL übertragen werden dürfen.&lt;br /&gt;
&lt;br /&gt;
; 9. &amp;quot;Die Preisgabe interner Informationen (z.B. Kommentare, Fehlermeldungen)&amp;quot;&lt;br /&gt;
&lt;br /&gt;
Hier würde ich eher schreiben &amp;quot;(IN Kommentaren, Fehlermeldungen, HTTP Headern, etc.)&amp;quot;&lt;br /&gt;
&lt;br /&gt;
; 10. &amp;quot;Fehler müssen so behandelt werden, ... müssen Fehler bei der Autorisierung zu einer Verweigerung beim Zugriff auf die angeforderte Ressource führen.&amp;quot;&lt;br /&gt;
&lt;br /&gt;
Sprachlich: &amp;quot;Die Webanwendung muss sich stets in einem sicheren Zustand befinden. Beispielsweise müssen Fehler bei der Autorisierung zu einer Verweigerung des Zugriffs führen (Default-Deny-Strategie).&amp;quot;&lt;br /&gt;
&lt;br /&gt;
; 11. &amp;quot;Die Logging-Funktionen der Web-Anwendung müssen aufgetretene Ereignisse derart protokollieren, dass sicherheitskritische Vorfälle nachvollzogen werden können.&amp;quot;&lt;br /&gt;
&lt;br /&gt;
Hier würde hier eher von &amp;quot;allen sicherheitsrelevanten Ereignissen&amp;quot; sprechen.&lt;br /&gt;
&lt;br /&gt;
Weiterhin sollten insbesondere beim Logging der Datenschutz berücksichtigt werden, personenbezogene Daten also nach Möglichkeit nicht oder nur anonymisiert in technischen Logdateien protokolliert werden.&lt;br /&gt;
&lt;br /&gt;
; 12. &amp;quot;Alle Sicherheitsmechanismen (z.B. Authentisierung und Zugriffskontrolle) sind serverseitig zu implementieren und können nicht durch clientseitige Mechanismen ersetzt werden.&amp;quot;&lt;br /&gt;
&lt;br /&gt;
Die Aussage ist so nicht korrekt. Darüber hatten wir bereits bei der ASVS mehrfach diskutiert. &lt;br /&gt;
&lt;br /&gt;
Überall dort wo der Client angegriffen wird, also etwa bei RIAs (Stichwort DOM-Based XSS) müssen wir Security Controls clientseitig implementieren. Es gibt mittlerweile deshalb auch eine Portierung der ESAPI auf Javascript. Überall dort wo der Server oder Hintegrundsysteme angegriffen werden, ist die Aussage aber natürlich zutreffend.&lt;br /&gt;
&lt;br /&gt;
== &amp;quot;Gefährdungen&amp;quot; (Markus, Dennis, .... &amp;lt;Dein Name&amp;gt;) ==&lt;br /&gt;
; Generell:&lt;br /&gt;
Reference auf RFCs fehlen.&lt;br /&gt;
&lt;br /&gt;
==B.5.XX Web-Anwendungen ==&lt;br /&gt;
; 1. Erster Absatz - Letzter Satz: --Wieso werden hier nur HTML/XML Doks und Oberflächen angesprochen? Was ist der Unterschied zwischen einem HTML-Dok und einer Oberfläche? Was ist mit  Flash, etc.? Was ist mit WebSockets?&lt;br /&gt;
; 2. Stichpunkt &amp;quot;Protokollierung&amp;quot;: Sicherheits relevant ist ein sehr dehnbarer Begriff - Eine bessere Formulierung könnte sein: Zur Rekonstruktion von Nutzerhandlungen nötige Ereignisse (positve &amp;amp; negative) müssen protokolliert werden . . . &lt;br /&gt;
; 3. Absatz: &amp;quot;Abgrenzung des Bausteins&amp;quot;: &amp;quot;Die spez. Sicherheitsanforderungen an Web-Services werden in diesem Baustein nicht betrachtet&amp;quot; --&amp;gt; Wie so nicht? Was ist das Backend von einer Rest / AJAX-basierenden Webanwendung denn anderes als ein Web-Service? Diesen Satz würde ich entfernen.&lt;br /&gt;
; 4.Vorsätzliche Handlungen -&amp;gt; Web-Spoofing (G.5.87) -- Missverständliche Bezeichnung / Nomenklatur&lt;br /&gt;
; 5. Seite 4 : erste Zeile &amp;quot;Umsetzung&amp;quot;: &amp;quot;dafür umzusetztende Komponenten müssen die Webanwendung schützen...&amp;quot; - Hier fehlt mir der Hinweis, dass dieser Schutz verifiziert werden muss.&lt;br /&gt;
; 6 Seite 5: &amp;quot;Umsetzung&amp;quot; - Wir haben CSRF, D(D)os und SQL-Injection aber wo ist XSS?&lt;br /&gt;
; 7 Seite 7: &amp;quot;Die Sicherheitsfunktion wird ausschließlich clientseitig...&amp;quot; --&amp;gt; Warum muss der Angreifer überhaupt einen Browser umkonfigurieren? Was ist mit Proxies, Scripts, etc.? Ich würde das reduzieren darauf, dass rein Webbrowser-basierende Schutzfunktionen einfach umgangen werden können.&lt;br /&gt;
; 8 Seite 8: Die angesprochenen Punkte hinterlassen den Eindruck nicht vollständig zu sein: Mir fehlen Punkte wie &amp;quot;Outsourcing&amp;quot;, &amp;quot;KnowHow der Entwickler&amp;quot;, Tooling, Framework-Auswahl, etc.&lt;br /&gt;
; 9 Seite 9: Eigentlich möchte der Autor hier über Datenschutz sprechen. Abgesehen von den letzten drei Zeilen geht es aber nur um &amp;quot;User tracking&amp;quot; - Wo ist der Rest der Datenschutzproblematik? Warum der Fokuss auf Tracking? Mir ist das zu einseitig.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
tbd.&lt;br /&gt;
&lt;br /&gt;
; Wortwahl:&lt;br /&gt;
Ich stosse innerhalb der Texte immer wieder an die Worten '''Hintergrundsystem''' und '''Sicherheitskontext'''.&lt;br /&gt;
'''Hintergrundsystem:''' besseres Synonym?&lt;br /&gt;
'''Sicherheitskontext:''' nur weil es in den Texten um Sicherheit geht muss nicht an jeder Stelle immer wieder das Wort _Sicherheits_kontext eingebaut werden.&lt;br /&gt;
Bsp: &amp;quot;Erlangt ein Angreifer Kenntnis von einer solchen gültigen, aber nicht mehr genutzten SessionID, so kann er die Web-Anwendung im Sicherheitskontext des nicht abgemeldeten Benutzers weiter verwenden.&amp;quot; (G 5,WA12 Unzureichendes Session-Management von Web-Anwendungen)&lt;br /&gt;
Verbesserungsansansatz: ... so kann er die Web-Anwendung anstelle des eigentlichen Besitzers weiterhin verwenden.&lt;br /&gt;
&lt;br /&gt;
== &amp;quot;G 2.WA01 Mangelhafte Auswahl oder Konzeption von Web-Anwendungen&amp;quot; (Matthias) ==&lt;br /&gt;
&lt;br /&gt;
Nachdem ich mir diese Gefährdung durchgelesen hatte, fehlten mir ehrlich gesagt etwas die Worte. Nicht nur, dass hier fast jeder zweite Satz entweder falsch ist bzw. massive Fehler enthält oder ich diesen schlicht nicht verstehe, ist der ganze Text sprachlich wirklich enorm verbesserungsfähig. &lt;br /&gt;
&lt;br /&gt;
Na gut, ich konzentriere mich mal auf die fachlichen Punkte:&lt;br /&gt;
&lt;br /&gt;
; 1. Security Controls&lt;br /&gt;
Werden mal mit &amp;quot;Schutzmechanismen&amp;quot;, mal mit &amp;quot;Sicherheitskomponenten&amp;quot; und dann wieder als &amp;quot;Sicherheitsfunktionen&amp;quot; bezeichnet. Hier macht eine einheitliche Benennung sicherlich Sinn und ist weniger verwirrend.&lt;br /&gt;
&lt;br /&gt;
; 2. &amp;quot;Eine Web-Anwendung ist in der Regel ein verteiltes, komplexes System bestehend aus unterschiedlichen Komponenten (z. B. Webserver, Applikationsserver, Hintergrundsysteme)&amp;quot;&lt;br /&gt;
&lt;br /&gt;
Eine Webanwendung besteht sicher nicht aus einem Webserver- oder anderer infrastruktureller Komponenten, sondern ist Software welches diese nutzt.&lt;br /&gt;
&lt;br /&gt;
; 3. &amp;quot;Bei individuell entwickelten Web-Anwendungen sind im Allgemeinen die Frameworks, Komponenten und Schnittstellen im Rahmen der Konzeption auszuwählen und deren Einbindung und Absicherung zu betrachten....Im Gegensatz dazu ist bei der Konzeption von Web-Anwendungen auf Basis von Standardsoftware insbesondere auf die Auswahl der Software und die Konfiguration der Teilkomponenten zu achten&amp;quot;&lt;br /&gt;
&lt;br /&gt;
Wir unterscheiden im Rahmen von Webanwendungen eigentlich Free or Opensource Software (FOSS bzw. FLOSS), Standardsoftware und Individualsoftware voneinander. Wir unterscheiden nicht Frameworks von Standardsoftware. Frameworks können Teil von Standardsoftware sein, wie etwa bei SharePoint, SAP, etc, oder aber FOSS, wie etwa Spring. Die ganzen Absätze machen für mich daher keinen Sinn.&lt;br /&gt;
&lt;br /&gt;
; 4. &amp;quot;Eine Sicherheitsfunktion (z. B. Authentisierung, Autorisierung) wird nicht an einer Stelle umgesetzt und verwendet, sondern ist mehrfach in der Web- Anwendung realisiert. Wird diese Sicherheitsfunktion an den verschiedenen Stellen unterschiedlich umgesetzt, führt dies zu einem uneinheitlichen Sicherheitsniveau.&amp;quot;&lt;br /&gt;
&lt;br /&gt;
Natürlich ist die mehrfache Verwendung bestimmter Security Controls, beispielsweise von Zugriffskontrollen (Complete-Mediation) oder Validierung (Robustheit) erstrebenswert. Was der Autor hier wahrscheinlich meinte, war die Notwendigkeit diese zu Kapseln bzw. zu Externalisieren. Das bezieht sich im übrigen nicht nur auf die Controls selbst, sondern auch auf ihre Parametrisierung (etwa. über Konfigdateien / XACML).&lt;br /&gt;
&lt;br /&gt;
Wichtiger wäre in diesem Zusammenhang zudem die fehlende Berücksichtigung bestimmter Security Controls.&lt;br /&gt;
&lt;br /&gt;
; 5. &amp;quot;Auswahl von Web-Anwendungen auf Basis von Standardsoftware&amp;quot;&lt;br /&gt;
Was will der Satz sagen? Ich wähle Standardsoftware aus, aber doch keine Webanwendungen. Oder heißt das, ich kaufe eine existierende Anwendung ein (Webanwendung!=Indivudualsoftware)? &lt;br /&gt;
&lt;br /&gt;
; 6. &amp;quot;Das ausgewählte Produkt verfügt nicht über die ausreichende Sicherheitsfunktionalität, ... Daher müssen die notwendigen Schutzmechanismen nachträglich hinzugefügt werden, wodurch zusätzliche Aufwände entstehen.&amp;quot;&lt;br /&gt;
Das ist etwas sehr positiv formuliert. Tatsächlich können fehlende Security Controls in zugekaufter Software (insb. Standardsoftware) in der Realität häufig gar nicht hinzugefügt werden oder nur perimetrisch (z.B. per WAF oder Access Gateway).&lt;br /&gt;
&lt;br /&gt;
; 7. &amp;quot;Die Hintergrundsysteme werden unzureichend abgesichert und dadurch ist die Datenbank der Web-Anwendung aus dem Internet erreichbar.&amp;quot;&lt;br /&gt;
Gehören fehlende Netzwerksegmentierung bzw. Firewallregeln wirklich in diesen Kontext? Das ist doch eigentlich Grundschutz der Infrastruktur, oder?&lt;br /&gt;
&lt;br /&gt;
; 8. &amp;quot;Aufgrund schwacher Parameter in der Konfiguration des Frameworks zum Session-Management werden unsichere SessionIDs erzeugt.&amp;quot;&lt;br /&gt;
Was sind &amp;quot;schwache&amp;quot; Parameter?&lt;br /&gt;
&lt;br /&gt;
Welches Framework erlaubt unsichere SessionIDs durch eine &amp;quot;schwache&amp;quot; Konfiguration zu erzeugen?&lt;br /&gt;
&lt;br /&gt;
; 9. &amp;quot;Wird die Konfiguration des Web-Browsers durch einen Angreifer manipuliert, können die clientseitig umgesetzten&amp;quot;&lt;br /&gt;
&lt;br /&gt;
Manipuliert ein Angreifer die Konfguration seines Webbroswers, wenn er einen MITM-Proxy konfiguriert?&lt;br /&gt;
&lt;br /&gt;
Wie bereits bei den &amp;quot;Goldenen Regeln&amp;quot; angemerkt, gilt auch hier, das manche Security Controls auch clientseitig umgesetzt werden dürfen (etwa. zur Verhinderung von Dom-Based XSS).&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== &amp;quot;G 5.WA10 Fehler in der Web-Anwendungslogik&amp;quot; (Dennis) ==&lt;br /&gt;
; 1. &amp;quot;Damit kann aufgrund der Prüfreihenfolge ein hoher Ressourcenverbrauch provoziert werden, der für Denial-of-Service-Angriffe ausgenutzt werden kann.&amp;quot;&lt;br /&gt;
Meiner Meinung nach passt in diesem Kontext die Attacke DoS nicht ganz. Falls die nachfolgende Funktionalität wegen der langen Ausführungszeit der Filterkomponente übersprungen wird bzw. ein Fehler auftritt würde dies meiner Ansicht in die Thematik Anwendungslogik passen. Eine DoS-Attacke kann hingegen anhand jeder Funktion durchgeführt werden.&lt;br /&gt;
&lt;br /&gt;
== &amp;quot;G 5.WA11 Umgehung clientseitig umgesetzter Sicherheitsfunktionen von Web-Anwendungen&amp;quot; (Dennis) ==&lt;br /&gt;
; 1. &amp;quot;Ein Angreifer kann diese ausnutzen, um beispielsweise unbefugt Befehle an Hintergrundsysteme der Web-Anwendung zu übermittlen (z.B. in Form von Datenbankanfragen bei einer SQL-Injection).&amp;quot;&lt;br /&gt;
Umformulierung des Inhalts der Klammer. Hatte beim ersten Lesen für mich den Anschein, als ob ein Formular genutzt werden könnte welches den Nutzer aufforder eine SQLI einzugeben. Ich denke &amp;quot;Datenbankanfrage zwecks Ausführung einer SQL-Injection&amp;quot; würde besser passen.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== G 2.WA02 Mängel bei der Entwicklung und der Erweiterung von Web-Anwendungen (Matthias) ==&lt;br /&gt;
&lt;br /&gt;
Allgemein ist de obere Teil ok, die aufgezählten &amp;quot;Auswirkungen von fehlenden Vorgaben&amp;quot; verstehe ich jedoch nicht. Wo ist etwa der Bezug von Barrierefreiheit auf die Anwendungssicherheit?&lt;br /&gt;
&lt;br /&gt;
Mein Vorschlag, um diese Punkte etwa sinnvoll umzubauen:&lt;br /&gt;
* &amp;quot;Fehlendes Vorgehensmodell&amp;quot;: Bezug auf fehlende Berücksichtigung von Sicherheit im SDLC. Statt eines SDLCs selbst sollte hier besser auf die Notwendigkeit eines Secure Development Lifecycle (SDL) hingewiesen werden&lt;br /&gt;
* &amp;quot;Fehlende Programmierrichtlinien&amp;quot; =&amp;gt; Besser wäre hier &amp;quot;Fehlende Sicherheitsrichtlinien in der Programmierung&amp;quot; also &amp;quot;Secure Coding Guidelines&amp;quot;&lt;br /&gt;
* &amp;quot;Testfälle&amp;quot; =&amp;gt; &amp;quot;Sicherheitsrelevante Testfälle&amp;quot; (z.B. Security Unit Tests). &lt;br /&gt;
* &amp;quot;Barrierefreiheit&amp;quot;: Warum nicht an dieser Stelle die Auswirkungen von Sicherheitsfunktionen auf die Bedienbarkeit, etwa anhand von CAPTCHAS erläutern?&lt;br /&gt;
&lt;br /&gt;
== G 2.WA03 Unzureichender Schutz personenbezogener Daten bei Web-Anwendungen (Matthias) ==&lt;br /&gt;
&lt;br /&gt;
Der Titel dieses Bausteines heißt &amp;quot;Schutz personenbezogener Daten&amp;quot;, die genannten Beispiele beziehen sich bis auf den letzten jedoch auf die missbräuchliche (oder zumindest problematische) Nutzung aus Sicht des Datenschutzes. &lt;br /&gt;
&lt;br /&gt;
Die Punkt 1-3 sollten daher besser entfallen und z.B. durch die Folgenden ersetzt werden:&lt;br /&gt;
* Unsichere Einbindung von sozialen Netzwerken (Bezug nehmen auf den Like-Button bei Facebook)&lt;br /&gt;
* Unsichere Einbindung von Werbeinhalten&lt;br /&gt;
* Unsichere Übertragung und Caching&lt;br /&gt;
* Unsichere Protokollierung&lt;br /&gt;
* Ungenügender Zugriffsschutz&lt;br /&gt;
* Verstoß des Minimalprinzips bzw. der Zweckgebundenheit (welche Daten werden wirklich benötigt)&lt;br /&gt;
&lt;br /&gt;
Auch wäre es ggf. zumindest einen Verweis auf das BDSG zu machen.&lt;br /&gt;
&lt;br /&gt;
== G 4.33 Unzureichende oder fehlende Authentisierung (Matthias) ==&lt;br /&gt;
&lt;br /&gt;
; 1. Erster Absatz: &amp;quot;Wenn Authentisierungsmechanismen fehlen oder zu schlecht sind&amp;quot;&lt;br /&gt;
&lt;br /&gt;
&amp;quot;schlecht&amp;quot; sollte vlt besser durch &amp;quot;unzureichend&amp;quot; ersetzt werden.&lt;br /&gt;
&lt;br /&gt;
; 2. &amp;quot;Sicherheitslücken entstehen bei... der Benutzerauthentisierung&amp;quot;&lt;br /&gt;
&lt;br /&gt;
Hier findet nur ein Bezug auf &amp;quot;Passwörter&amp;quot; statt. Der Bezug auf die fehlerhaft implementierte oder dem Schutzbedarf ungenügende Schutzmechanismen (z.B. keine 2-Faktor-Authentisierung bei hochsensiblen Daten) fehlt. Auch auf das komplette fehlen von Authentisierungs-Controls wird hier nicht  eingegangen&lt;br /&gt;
&lt;br /&gt;
; 3. &amp;quot;Sicherheitslücken entstehen bei... der Komponentenauthentisierung&amp;quot;&lt;br /&gt;
&lt;br /&gt;
Wie bei 2., wird auch hier wieder nur auf Passwörter, nicht jedoch auf das fehlen von Controls selbst eingegangen. An dieser Stelle fehlt auch ein Hinweis auf die Notwendigkeit dedizierter Benutzeraccounts.&lt;br /&gt;
&lt;br /&gt;
; 4. &amp;quot;Sicherheitslücken entstehen bei... der Wahl des Verfahrens&amp;quot;&lt;br /&gt;
&lt;br /&gt;
Statt untauglich würde ich auch hier von &amp;quot;dem Schutzbedarf der Daten nicht angemessen&amp;quot; sprechen, eigentlich gehört das für mich aber in die obigen Punkte.&lt;br /&gt;
&lt;br /&gt;
; 5. Serverseitige Authentisierung fehlt&lt;br /&gt;
&lt;br /&gt;
Auch der Server (bzw. die Anwendung selbst) kann sich fehlerhaft oder ungenügend beim Benutzer authentsieren, etwa über DNS, SSL-Zertifikate, etc.&lt;br /&gt;
&lt;br /&gt;
== G 4.WA04 Unzureichende Validierung von Ein- und Ausgabedaten bei Web-Anwendungen (Matthias) ==&lt;br /&gt;
&lt;br /&gt;
; 1. &amp;quot;Unzureichende Validierung von Eingabedaten&amp;quot;&lt;br /&gt;
&lt;br /&gt;
Die genannten Beispiele sind genau keine korrekten Beispiele für diesen Fall, sondern betreffen die Ausgabevalidierung bzw. Enkodierung. Typische Fehler der Eingabevalidierung ist eine Manipulierbarkeit der Business Logik.&lt;br /&gt;
&lt;br /&gt;
; 2. &amp;quot;Unzureichende Validierung von Ausgabedaten&amp;quot;&lt;br /&gt;
&lt;br /&gt;
Hier geht es zentral um die Verhinderung von Interpreter Injection, also serverseitig (z.B. SQL oder LDAP Injection) oder clientseitig (XSS, JSON Injection, etc.). Statt &amp;quot;können die Ausgaben Schadcode&amp;quot; enthalten würde ich hier eher davon Sprechen, dass ein solcher Interpreteraufruf manipuliert werden kann (was dann z.B. zur Einschleusung von Schadcode genutzt werden kann).&lt;br /&gt;
&lt;br /&gt;
; 3. &amp;quot;Die Suchfunktion der Web-Anwendung verwendet die Eingaben der Benutzer ungefiltert&amp;quot;&lt;br /&gt;
&lt;br /&gt;
Mit ungenügender &amp;quot;Filterung&amp;quot; hat SQL Injection nichts zu tun,  eigentlich geht es hierbei darum, dass SQL-Anfragen dynamisch mit unvalidierten Eingebedaten zusammengebaut (konkateniert) werden.&lt;br /&gt;
&lt;br /&gt;
; 4. &amp;quot;Ungefilterter HTML-Code in Kommentar-Funktion&amp;quot;&lt;br /&gt;
&lt;br /&gt;
Hier fehlt der Bezug auf persistentes XSS, das hier sicherlich zentral ist.&lt;br /&gt;
&lt;br /&gt;
== G 4.WA05 Fehlende oder mangelhafte Fehlerbehandlung durch Web-Anwendungen (Tobias, Matthias) ==&lt;br /&gt;
; Abschnitt &amp;quot;Unsichere Fehlerbehandlung&amp;quot;&lt;br /&gt;
Die G adressiert &amp;quot;Unsichere Fehlerbehandlung&amp;quot;, der Abschnitt die &amp;quot;Unsichere Fehlerbehandlung in Sicherheitskomponenten&amp;quot;. Entsprechend sollte der fettgedruckte Teil angepasst werden.&lt;br /&gt;
&lt;br /&gt;
; &amp;quot;fehlende SQL-Parameter,&amp;quot;&lt;br /&gt;
Sollte besser &amp;quot;Fehlermeldungen bei ungültigen SQL-Abfragen&amp;quot; lauten.&lt;br /&gt;
&lt;br /&gt;
; &amp;quot;Auch scheinbar unkritische Informationen, wie die Meldung ob (..)&amp;quot;&lt;br /&gt;
Korrekt, allerdings nicht nachvollziehbar, wenn das Problem der Leser nicht schon bekannt ist. Daher erweitern nach &amp;quot; Rahmen von Brute-Force-Angriffen ausgenutzt werden.&amp;quot; mit &amp;quot;. Bei Brute-Force-Angriffen wäre in diesem Fall klar, dass der Benutzername gültig ist.&amp;quot;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[User:Mrohr|Matthias]]): Stimme dem Obigen auch zu, ausserdem:&lt;br /&gt;
&lt;br /&gt;
; Sprachlich: &amp;quot;kann dies unvorhersehbare Auswirkungen haben und den Betrieb der Web-Anwendung bis zur Unerreichbarkeit einschränken.&amp;quot;&lt;br /&gt;
&lt;br /&gt;
&amp;quot;Unerreichbarkeit&amp;quot; ist etas merkwuerdig ausgedrueckt, besser ware hier von der &amp;quot;Verfuegbarkeit&amp;quot; zu sprechen. Im Uebrigen fehlt vollstaendig der Bezug auf die Verfuegbarkeit als Primaeres Schutzziel der Informationssicherheit.&lt;br /&gt;
&lt;br /&gt;
; &amp;quot;Clientseitige Fehlerbehandlung&amp;quot;&lt;br /&gt;
Das stimmt soweit, das generelle Problem ist jedoch genereller, naehmlich die clientseitige Abbildung sicherheitsrelaventer Logik (in diesem Fall die Fehlerbehandlung)&lt;br /&gt;
&lt;br /&gt;
== G 4.WA06 Unzureichende Nachvollziehbarkeit von sicherheitsrelevanten Ereignissen bei Web-Anwendungen (Matthias) ==&lt;br /&gt;
&lt;br /&gt;
; 1. Erster Absatz: &amp;quot;Die Behebung einer Schwachstelle ist dann nicht oder nur unter erschwerten Bedingungen möglich.&amp;quot;&lt;br /&gt;
&lt;br /&gt;
Hier würde ich ergänzen: &amp;quot;...und Angriffe auf die Anwendungen können ggf. nicht erkannt oder nachvollzogen werden&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
; 2. &amp;quot;Beispiele&amp;quot;: Kommulierbarkeit&lt;br /&gt;
&lt;br /&gt;
Hier fehlt auch ein Bezug auf die Kommulierbarkeit von SIcherheitsereignissen, dass diese also auch von solchen anderer Systeme in Verbindung gesetzt werden können&lt;br /&gt;
&lt;br /&gt;
; 3. &amp;quot;Beispiele&amp;quot;: Gerichtsverwertbarkeit&lt;br /&gt;
&lt;br /&gt;
Auch die Möglichkeit zur Gerichtsverwertbarkeit (etwa durch eindeutigen Zeitstempel) und manipulationssicherer Speicherung, würde ich an dieser Stelle unbedingt erwähnen.&lt;br /&gt;
&lt;br /&gt;
== G 4.WA07 Offenlegung von Informationen bei Web-Anwendungen (Matthias) ==&lt;br /&gt;
&lt;br /&gt;
; 1. Titel&lt;br /&gt;
&lt;br /&gt;
Hier würde ggf. &amp;quot;Offenlegung vertraulicher Informationen&amp;quot; sicher besser passen als &amp;quot;Offenlegung von Informationen&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
; 2. Beispiellink&lt;br /&gt;
&lt;br /&gt;
Ein Beispiellink (mit und ohne Token) würde sicher die Verständlichkeit dieser Schwachstelle verbessern.&lt;br /&gt;
&lt;br /&gt;
; 3. Erster Absatz: &amp;quot;Wenn demzufolge Informationen unnötig offengelegt werden, steigt die Wahrscheinlichkeit eines erfolgreichen Angriffs.&amp;quot;&lt;br /&gt;
&lt;br /&gt;
Interne Informationen auszublenden ist eine Härtungsmaßnahme, deren Anzeige erhöht aber nicht zwangsläufig die Wahrscheinlichkeit eines erfolgreichen Angriffs. Ich würde diesen Satz weglassen.&lt;br /&gt;
&lt;br /&gt;
 ; 4. Fehlende Punkte&lt;br /&gt;
&lt;br /&gt;
* Ein Hinweis auf HTTP Header wäre hier sicher erwähnenswert.&lt;br /&gt;
* Weiterhin bzgl. der Anzeige von Traces und ein Verweis auf den Entsprechenden Baustein zur Fehlerbehandlung&lt;br /&gt;
&lt;br /&gt;
== G 5.WA14 Cross-Site Request Forgery (CSRF, XSRF) (Matthias) ==&lt;br /&gt;
&lt;br /&gt;
; 1. Erster Absatz: &amp;quot;Können Funktionen einer Web-Anwendung ohne weitere Überprüfung der Authentizität des HTTP-Requests (z.B. durch Tokens in versteckten Formularfeldern) genutzt werden&amp;quot;&lt;br /&gt;
&lt;br /&gt;
Statt &amp;quot;Funktionen&amp;quot; würde ich besser von &amp;quot;schreibenden Aktionen&amp;quot; sprechen, dann macht der Satz mehr Sinn.&lt;br /&gt;
&lt;br /&gt;
; 2. Dritter Absatz: &amp;quot;Im Gegensatz zu XSS (siehe ...￼ ) ist das Angriffsziel nicht die Information auf dem Client (z. B. in Cookies),&amp;quot;&lt;br /&gt;
&lt;br /&gt;
Dieser (Halb-)Satz macht keinen Sinn, auch weil es bei XSS nicht nur im Informationen auf dem Cient geht. Vorschlag: &amp;quot;ist das Angriffsziel nicht die Ausführung von Skriptcode, sondern von unbefugten, schreibenden Aktionen im Kontext des angemeldeten Benutzers.&amp;quot;&lt;br /&gt;
&lt;br /&gt;
; 3. Session Riding&lt;br /&gt;
&lt;br /&gt;
Session Riding ist quasi nur ein anderer Begriff für CSRF. Die einzige Form von CSRF die mir bekannt ist, sind Angriffe mit Standard-Passwörtern auf HTTP-Basic-Auth geschützten Ressourcen.&lt;br /&gt;
&lt;br /&gt;
Im Grunde ist Session Riding aber nur ein Synonym für CSRF. Der Absatz ist daher auch nur eine Wiederholung der obigen Beschreibung.&lt;br /&gt;
&lt;br /&gt;
; 4. Zum Beispiel: &amp;quot;Durch einen präparierten Link auf einer Webseite wird die Änderung des Zugangspasswortes des Routers eingeleitet.&amp;quot;&lt;br /&gt;
&lt;br /&gt;
Etwas ungüngstig ausgedrückt. Besser wäre: &amp;quot;wird eine Anfrage zur Änderung des Zugangspasswortes an den Router gesendet. Hierbei sendet der Browser automatisch den Session Cookie mit, worüber die Webanwendung die Authentizität der Anfrage verifiziert und die Änderung durchführt.&amp;quot;&lt;br /&gt;
&lt;br /&gt;
== G 5.WA18 Clickjacking (Matthias) ==&lt;br /&gt;
&lt;br /&gt;
Hier stellt sich mir nur die allgemeine Frage, ob Clickjacking, bzw. der Schutz davor tatsächlich einem Grundschutz zuzurechnen ist. Persönlich würde ich dies nicht tun.&lt;br /&gt;
&lt;br /&gt;
== M 2.WA02 Dokumentation der Architektur von Web-Anwendungen (Matthias) ==&lt;br /&gt;
&lt;br /&gt;
; Verantwortlich für die Umsetzung&lt;br /&gt;
Hier wäre auch die Nennung des &amp;quot;Architekten&amp;quot; sinnvoll&lt;br /&gt;
 &lt;br /&gt;
; Fehlende Bestandteile der Dokumentation:&lt;br /&gt;
* Schutzbedarf des Systems sowie der verarbeiteten Daten&lt;br /&gt;
* Schützenswerte Daten und Funktionen (Assets)&lt;br /&gt;
* Betriebliche Anforderungen an die Sicherheit bzw. eingesetzte Plattform&lt;br /&gt;
* Dokumentierte Konfigurationseinstellungen &lt;br /&gt;
* BIA (RTO, RPO)&lt;br /&gt;
* Schnittstellen&lt;br /&gt;
* Trust Boundaries&lt;br /&gt;
* Akteure (bzw. Trust Level)&lt;br /&gt;
* Sicherheitsannahmen&lt;br /&gt;
* Geltende Compliance-Anforderungen (BDSG, PCI DSS, etc.)&lt;br /&gt;
&lt;br /&gt;
; Benutzermanagement&lt;br /&gt;
&lt;br /&gt;
Wenn damit das Identity Management gemeint ist, gehört das Dokumentiert, ist aber keine Sicherheitsfunktion. Oder ist hiermit das Rollen- und Berechtigungskonzept gemeint? Grenzt sich aus meiner Sicht schwer mit dem Thema Authentisierung ab. &lt;br /&gt;
&lt;br /&gt;
; Prüffragen&lt;br /&gt;
&lt;br /&gt;
Hier fehlt etwas in Bezug auf Sicherheitsanforderungen. Beispiel: &amp;quot;Werden Sicherheitsanforderungen an den Betrieb während der Entwicklung abgestimmt und dokumentiert&amp;quot;&lt;br /&gt;
&lt;br /&gt;
== M 2.WA12 Entwicklung und Erweiterung von Anwendungen (Markus) ==&lt;br /&gt;
; &amp;quot;Es sollte darauf geachtet werden, dass Sicherheitsanforderungen&lt;br /&gt;
vollständig durch Sicherheitsmechanismen erfüllt und zur Erstellung von&lt;br /&gt;
Testfällen festgehalten werden.&amp;quot; --&amp;gt; Bessere Formulierung würde aussagen, dass die Sicherheitsanforderungen durch Testfälle verifiziert werden.&lt;br /&gt;
&amp;quot;(z. B. durch Kommentare im&lt;br /&gt;
Quelltext). Somit ist der Quelltext zu einem&amp;quot; --&amp;gt; Das ist kein empfehlenswerter Programmierstiel! Raus mit diesem Kommentar&lt;br /&gt;
;&amp;quot;Zum Schutz vor dem Verlust bereits entwickelter und verworfener&lt;br /&gt;
Lösungen sowie zu Dokumentationszwecken sollte die Historie der&lt;br /&gt;
Änderungen festgehalten werden (z. B. durch ein Revisionssystem).&amp;quot; --&amp;gt; Auch diesen Absatz können wir streichen - Kein professioneller Programmierer arbeitet ohne Versionierugssystem.&lt;br /&gt;
;&amp;quot;Bei Web-Anwendung sollten die Webseiten auf Konformität zu dem&lt;br /&gt;
verwendeten Standard (z. B. HTML-Standard) getestet werden. Dadurch&lt;br /&gt;
können unvorgesehene Seiteneffekte aufgrund einer Fehlinterpretation&lt;br /&gt;
seitens der Browser vermieden werden.&amp;quot; --&amp;gt; Könnte man noch um &amp;quot;Die Software ist in möglichst vielen Browsern zu testen&amp;quot; erweitern.&lt;br /&gt;
;Generell geht der Autor leider nicht auf die Rollen &amp;amp; Rechte Verteilung ein. Mir fehlt der Hinweis, das es eine personelle Trennung zwischen Entwicklung, Test und Betrieb geben muss.&lt;br /&gt;
;Zum Thema Wartung / Betrieb --&amp;gt; Hier wird keine Aussage getroffen bezüglich Log_Files. Dieses Thema kann kritische Auswirkungen haben, Bsp.: logging ganzer HTTP-Requests im LogLevel=Debug.&lt;br /&gt;
; &amp;quot;Produktspezifische Sicherheitsfunkionalität&amp;quot; - Dieser Absatz ist gefährlich - der Angreifer ist nicht zur Verwendung dies Zielbrowsers gezwungen. Deshalb können Browser-spez. Sicherheitsfunktionen nur als Add-ON gewertet werden.&lt;br /&gt;
; &amp;quot;Festlegung der Entwicklungsumgebung&amp;quot; - Dieser Absatz geht nicht auf die zu verwendenden Testdaten ein. Der Hinweis, dass Live-Daten / Kundendaten nichts in Test- &amp;amp; Entwicklungsumgebungen zu suchen haben fehlt!!!&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== M 2.WA24 Web-Tracking (Matthias) ==&lt;br /&gt;
&lt;br /&gt;
; Letzter Absatz: &amp;quot;Falls eine Auswertung von Nutzerdaten, insbesondere personenbezogener Daten, .. &amp;quot;&lt;br /&gt;
&lt;br /&gt;
Hier sollte denke ich besser von personenbeziehbaren Daten gesprochen Werten. Dies betrifft etwa die Zuordnung von Surfverhalten zu einer bestimmten Person. Dies sollte stets nach den Prinzipien Datensparsamkeit und Datenvermeidung, Erforderlichkeit, sowie Zweckbindung erfolgen. Ist Webtracking nicht personenbeziehbar ist dies kein Thema für den Datenschutz.&lt;br /&gt;
&lt;br /&gt;
== M 4.WA04 Authentisierung bei Web- Anwendungen (Matthias) ==&lt;br /&gt;
&lt;br /&gt;
: Verantwortlich fuer Umsetzung &lt;br /&gt;
sollte in erster Linie beim Architekturen und in zweiter beim Entwickler liegen&lt;br /&gt;
; Vermischung von Authentisierung und Session Management &lt;br /&gt;
&lt;br /&gt;
Bei diesem Baustein findet eine ziemlich große Vermischung von Anforderung an die Authentisierung und das erst in &amp;quot;M 4.WA06 Session-Management bei Web- Anwendungen&amp;quot; behandelte Session Management statt (Beispiel: &amp;quot;Remember-Me-Funktion&amp;quot;). Beide Themen sollten sinnvollerweise getrennt voneinander zu betrachten und aufeinander zu beziehen.&lt;br /&gt;
&lt;br /&gt;
; Verwendung von Frameworks&lt;br /&gt;
&lt;br /&gt;
Die Anforderung ist schon ein wenig eingeschränkt. Besser passt hier denke ich die &amp;quot;Abbildung der Authentisierung über Standardkomponenten (Bibliotheken oder Frameworks)&amp;quot;. &lt;br /&gt;
&lt;br /&gt;
; Remember-Me-Funktion&lt;br /&gt;
&lt;br /&gt;
Siehe oben, gehört zum Session Management. Das ließt sich im übrigen so, als ob eine Webanwendung Credentials auf dem Client abhängt. &lt;br /&gt;
&lt;br /&gt;
; Grenzwerte für gescheiterte Anmeldeversuche&lt;br /&gt;
&lt;br /&gt;
Diese Empfehlung ist allgemein falsch, da sie sehr von der betrachteten Anwendung abhängt. Besser wäre hier allgemein von Mechanismen zur Verhinderung von automatisierten Angriffen zu sprechen (Anti-Automatisierung). &lt;br /&gt;
&lt;br /&gt;
Etwa umsetzbar durch&lt;br /&gt;
* Sperrung nach x Anmeldeversuchen&lt;br /&gt;
* Throttling&lt;br /&gt;
* Captchas&lt;br /&gt;
* Sicherheitsfragen&lt;br /&gt;
&lt;br /&gt;
Das allgemeine Sperren kann leicht für das gezielte Aussperren von Benutzern (User Lockout) verwendet werden. Was etwa bei Trading-Anwendungen nicht funktioniert.&lt;br /&gt;
&lt;br /&gt;
; Automatisiertes Zurücksetzen von Authentisierungsdaten&lt;br /&gt;
&lt;br /&gt;
Würde ich besser als &amp;quot;Passwort-Reset&amp;quot; bezeichnen.&lt;br /&gt;
&lt;br /&gt;
Weiterhin fehlt hier der Hinweis, dass statt ein automatisiertes Zurücksetzen, ein Mechanismus zu empfehlen ist, bei dem über ein hinterlegtes Sicherheitsmerkmal (Handy-Nummer oder E-Mail-Adresse) vom Benutzer zunächst eine Verifikation durchgeführt wird. Beispielsweise durch einen erhaltenen Link. Erst dann darf eine Änderung des Passwortes durch den Benutzer erfolgen.&lt;br /&gt;
&lt;br /&gt;
; Registrierung nicht behandelt&lt;br /&gt;
&lt;br /&gt;
Es existiert hier kein Punkt, der die sichere Implementierung von Benutzerregistrierungen behandelt.&lt;br /&gt;
&lt;br /&gt;
; Verweis auf Externalisierung fehlt.&lt;br /&gt;
&lt;br /&gt;
Statt die Authentisierung selbst durchzuführen kann eine Anwendung hierzu auf eine externe Komponente (Beispiel: SiteMinder oder Kerberos) zurückgreifen.&lt;br /&gt;
&lt;br /&gt;
; Verweis auf Behandlung von Credentials fehlt&lt;br /&gt;
&lt;br /&gt;
Auch wenn das  in &amp;quot;M 4.WA15 Schutz vertraulicher Daten bei Web- Anwendungen&amp;quot; ausführlich behandelt wird, sollte in diesem Baustein bereits auf den angemessenen Schutz von Authentisierungsdaten bei Übertragung und Speicherung hingewiesen werden.&lt;br /&gt;
&lt;br /&gt;
== M 4.WA05Umfassende Ein- und Ausgabevalidierung bei Web-Anwedungen (Markus) ==&lt;br /&gt;
; &amp;quot;Ablehnung der Daten im&lt;br /&gt;
Fehlerfall&amp;quot; --&amp;gt; Hier könnte man noch auf Tar-Pits eingehen - nur ein Vorschlag.&lt;br /&gt;
&lt;br /&gt;
== M 4.WA06Session-Management bei Web-Anwendungen (Markus, Matthias) ==&lt;br /&gt;
; &amp;quot;Übertragung der SessionID mittels GETRequest&amp;quot; --&amp;gt; Hier fehlt der Hinweis, dass die Lebensdauer dieser SessionIds kurz/kürzer sein muss, als im Falle der Speicherung im Cookie.&lt;br /&gt;
&lt;br /&gt;
([[User:Mrohr|Matthias]]) Die Anmerkung verstehe ich ehrlich gesagt ueberhaupt nicht, zumal das SM haeufig transparent zwischen Cookies und URL Rewriting wechselt. Wozu soll das gut sein? Wie soll das geschehen? Idealerweise sollte die Session ID niemals in die URL geschrieben werden, das sollte eigentlich genuegen.&lt;br /&gt;
&lt;br /&gt;
; &amp;quot;Verschlüsselte Übertragung von SessionIDs&amp;quot; --&amp;gt; Hier fehlt der Hinweis auf den Beast-Exploit. TLS Version &amp;gt; 1.0 verwenden!&lt;br /&gt;
&lt;br /&gt;
([[User:Mrohr|Matthias]]) Solange hier nicht auf eine explizite TLS Version eingegangen wird, sollte meiner grossen Ueberzeugung nach hier auch auf keine Exploits etc. eingagen werden, das gehoert an andere Stelle.&lt;br /&gt;
&lt;br /&gt;
; ([[User:Mrohr|Matthias]]) Weiterhin:&lt;br /&gt;
&lt;br /&gt;
 Es dürfen keine extern bekannten oder erratbaren Daten (z. B. IP-Adresse, Uhrzeit) in die Berechnung der SessionID einfließen.&lt;br /&gt;
&lt;br /&gt;
Die Aussage finde ich etwas problematisch, wichtiger ist, dass die Entropie ausreichend hoch ist. Haeufig werden etwa IPs von Load Balancern in die Session ID hineingeschrieben.&lt;br /&gt;
&lt;br /&gt;
 - Domain (z. B. webapp.domain.tld),&lt;br /&gt;
 - Path (z. B. /webapp/),&lt;br /&gt;
 - Secure und&lt;br /&gt;
 - HttpOnly.Beschränkte Sitzungsdauer&lt;br /&gt;
&lt;br /&gt;
Das sieht so aus, als ob es empfehlenswert ist, das Domain-Tag zu verwenden, das ist es sicherlich nicht. Was macht hier der Hinweis &amp;quot;Beschraenke Sizuungsdauer&amp;quot;?&lt;br /&gt;
&lt;br /&gt;
== M 4.WA07Fehlerbehandlung durch Web-Anwendungen (Markus) ==&lt;br /&gt;
; Konsistenter / Inkonsistener Zustand einer Webanwendung und der daraus resultierende Datenverlust: Hier fehlen mir die Punkte: DOS, Priv.Escalation, CodeExecution.&lt;br /&gt;
; Vermeidung vertraulicher Informationen in Fehlermeldungen --&amp;gt; Fehlermeldungen sollten ebenfalls eine Systeminformationen preisgeben (Softwareversion, Patchlevel, etc.)&lt;br /&gt;
; Abbruch des Vorgangs nach Auftreten eines Fehlers --&amp;gt; TarPits scheinen dem Autor umbekannt zu sein :)&lt;br /&gt;
; &amp;quot;Werden Fehler möglichst von der gleichen Komponente behandelt, in der&lt;br /&gt;
der Fehler aufgetreten ist?&amp;quot; --&amp;gt; Das &amp;quot;möglichst&amp;quot; sollten wir streichen.&lt;br /&gt;
&lt;br /&gt;
== M 4.WA08Schutz vor automatisierter Nutzung von Web-Anwendungen (Markus) ==&lt;br /&gt;
; &amp;quot;Brute-Force-&lt;br /&gt;
Angriffe (z. B. Erraten von Zugangsdaten) und Enumeration-Angriffe (z. B.&lt;br /&gt;
automatisiertes Ermitteln von gültigen Login-Namen)&amp;quot; -- die Beispiele sind identisch - besser Beispiele suchen, z.b. URL-Enumeration&lt;br /&gt;
&lt;br /&gt;
([[User:Mrohr|Matthias]]) Das sehe ich anders. Brute-Forcing bezieht auf Passwoerter und Enumeration auf Benutzernamen, etwa durchs hochzaehlen. Auch wenn ich zustimmen muss, dass die nicht ganz gluecklich gewaehlt wurden. Stann &amp;quot;Erraten von Zugangsdaten&amp;quot; wuerde ich besser von &amp;quot;Erraten von Passwoertern&amp;quot; sprechen. Oder wie gesagt gleich auch auf andere Beispiele (etwa Object ID Enumeration) beziehen.&lt;br /&gt;
&lt;br /&gt;
== M 4.WA11Sichere Konfiguration von Web-Anwendungen (Markus) ==&lt;br /&gt;
; &amp;quot;Sicherer Umgang mit TLS/SSL&amp;quot; -- Hier fehlt der Hinweis, dass TLS-1.0 gebrochen ist&lt;br /&gt;
; &amp;quot;Zeichenkodierungskonfiguration&amp;quot; -- Ein Whitelisting abhängig von der Encodierung wäre ein weiterer Vorschlag&lt;br /&gt;
; &amp;quot;Restriktive Dateisystemberechtigungen&amp;quot; -- auch wenn es ein klassiker ist - der AS sollte ebenfalls mit von einem eingeschränkten Nutzer gestartet werden und nicht als root&lt;br /&gt;
; Administration Consolen:zur Ergänzen: Wenn diese nicht benötigit, sollten derartige Applikationen nicht deployed werden, unabhängig von möglichen Zugangsbeschränkungen.&lt;br /&gt;
&lt;br /&gt;
([[User:Mrohr|Matthias]]) Sorry, meiner Meinung nach hat die Bewertung von Kryptoverfahren hier abslut nichts zu suchen.Stattdessen sollte hier auf den entsprechenden [https://www.bsi.bund.de/ContentBSI/Publikationen/TechnischeRichtlinien/tr02102/index_htm.html Empfehlung des BSI] verwiesen werden, auch wenn dieses Dokument derzeit noch etwas outdated zu sein scheint.&lt;br /&gt;
&lt;br /&gt;
== M 4.WA13Kontrolliertes Einbinden von Daten und Inhalten bei Web-Anwendungen (Markus) ==&lt;br /&gt;
; Datei-Upload: Bei einem Upload werden Dateien durchaus in TEMP-Verzeichnissen gesammelt und danach weiterverarbeitet. Diese TEMP-Verzeichnisse sind im Rahmen einer Sicherheitsanalyse zu betrachten -&amp;gt; Möglicher (unbefugter) Zugriff auf weitere Uploads&lt;br /&gt;
; Upload komprimierter Dateien / großer Dateien birgt die Gefahr von DOS Angriffen&lt;br /&gt;
; Upload von Dateien kann bei weiterem Parsing zu Speicherengpässen führen --&amp;gt; DOS-Angriffe auf Thread-Local etc.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== M 4.WA14Restriktive Herausgabe sicherheitsrelevanter Informationen bei Web-Anwendungen (Markus, Matthias) ==&lt;br /&gt;
OK - Keine Anmerkungen von mir.&lt;br /&gt;
&lt;br /&gt;
([[User:Mrohr|Matthias]]) Von mir schon;)&lt;br /&gt;
&lt;br /&gt;
; ([[User:Mrohr|Matthias]]) Vermeidung von Kommentaren in ausgelieferten Webseiten&lt;br /&gt;
&lt;br /&gt;
Das ist leider total falsch, wir brauchen haeufig Komentare, aus Kompatibilitaetsgruenden. So wird etwa der JavaScript-Block haeufig auskommentiert.&lt;br /&gt;
&lt;br /&gt;
Wurde stattessen besser von sicherheitsrelevanten Kommentaren sprechen und als Massnahme generell Entwicklerkommentare ueber Sprachkonstruktre (etwa JSP) durchzufuehren.&lt;br /&gt;
&lt;br /&gt;
; ([[User:Mrohr|Matthias]]) Löschen nicht benötigter Dateien&lt;br /&gt;
&lt;br /&gt;
Hier wurde ich ggf. Dateien von Versionisierungstools (etwa Subversion) erwaehnen, das sehen wir schon recht haeufig.&lt;br /&gt;
&lt;br /&gt;
Statt Dateien einfach nur zu loeschen (was in der Praxis haeufig nicht so einfach ist) bietet es sich zudem an, den Zugriff auf bestimmte Dateien oder Dateitypen generell zu sperren, etwa mittels ACL im Apache.&lt;br /&gt;
&lt;br /&gt;
; ([[User:Mrohr|Matthias]]) Gibt die Web-Anwendung ausschließlich neutrale Fehlermeldungen aus und sind diese im Quelltext identisch? {E: C}&lt;br /&gt;
&lt;br /&gt;
Persoenlich verstehe ich das nicht. Wieseo neutrale Fehlermeldung? Das macht fuer mich nur beim Login Sin. Hierzu existiert in dem Text auch keinerlei Bezug. Ich wuerde das daher besser entfernen und im Rahmen der Fehlerbehandlung diskutieren. Mindestens sollte hier jedoch besser von &amp;quot;sicherheitsunbedentlichen Fehlermeldungen&amp;quot; oder so gesprochen werden.&lt;br /&gt;
&lt;br /&gt;
; ([[User:Mrohr|Matthias]]) Wird der Referrer bei Verlassen der Web-Anwendung (z. B. durch einen Link auf eine externe Seite) gefiltert?&lt;br /&gt;
&lt;br /&gt;
Diesen Punkt sehe ich als sehr Fallabhengig an. Es kann fuer seiten durchaus wuenschenswert sein, dass der Referer weitergegeben wird. Der Referer sollte natuerlich keine sensiblen Informationen enthalten, was ja an anderer Stelle (etwa Session Management) vorgegeben wird bzw. gegeben werden sollte.&lt;br /&gt;
&lt;br /&gt;
== M 4.WA15Schutz vertraulicher Daten bei Web-Anwendungen (Markus, Matthias) ==&lt;br /&gt;
; Sichere kryptographische Algorithmen:&lt;br /&gt;
 Hier fehlt mir eine Liste der aktuelle als sicher geltenden Verfahren.&lt;br /&gt;
([[User:Mrohr|Matthias]]) Am Besten Referenz auf [https://www.bsi.bund.de/ContentBSI/Publikationen/TechnischeRichtlinien/tr02102/index_htm.html https://www.bsi.bund.de/ContentBSI/Publikationen/TechnischeRichtlinien/tr02102/index_htm.html]&lt;br /&gt;
&lt;br /&gt;
; Schlüssel&lt;br /&gt;
 Das die Schlüssel bestimmten Formaten entsprechen müssen ist ok - aber das Schlüsselmanagement wird gar nicht besprochen?&lt;br /&gt;
; Schutz der Daten im Browsercache&lt;br /&gt;
 Skripte und Browserplugins können ebenfalls auf den Browsercache zugreifen - diese werden hier nicht erwähnt.&lt;br /&gt;
&lt;br /&gt;
([[User:Mrohr|Matthias]]) Weiterhin entsprechen die vorgeschlagenen HTTP Headern nicht dem Best Practice:&lt;br /&gt;
&lt;br /&gt;
 Cache-control: no-cache, no-store&lt;br /&gt;
 Pragma: no-cache&lt;br /&gt;
 Expires: -1&lt;br /&gt;
&lt;br /&gt;
([[User:Mrohr|Matthias]]) Die Empfehlung hinsichtlich des manuellen Leerens des Browsercaches sollte wenn dann nur bei Anwendungen mit sehr hohem Schutzbedarf in Erwaegung gezogen werden. Wichtiger waere da schon eher die richtigen Cache-Header zu verwenden. Solche Empfehlungen ihm Rahmen des Grundschutzes aber wirklich nichts zu suchen. &lt;br /&gt;
&lt;br /&gt;
; Maskierung von Passwörtern &lt;br /&gt;
 Dies schützt bei der Eingabe nur vor ShoulderSurfing nicht vor Skripten oder Plugins die diese an andere Server posten.&lt;br /&gt;
&lt;br /&gt;
([[User:Mrohr|Matthias]]) Das ist voellig korrekt. Aber inwieweit ist die Aussage Passwort-Felder zu verwenden fehlerhaft bzw. hier unzureichend beschrieben?&lt;br /&gt;
&lt;br /&gt;
; Sicherung von Zugangsdaten:&lt;br /&gt;
 Zugangsdaten in einer Datei abzulegen - wenn auch ausserhalb des WebRoots ist keine gute Idee.&lt;br /&gt;
([[User:Mrohr|Matthias]]) Es ist sicher nicht die schoenste Variante, es laesst sich aber nunmal in vielen Faellen nicht vermeiden. Deshalb fordert der [http://code.google.com/p/owasp-asvs/wiki/Verification_V2 ASVS] hier etwa auch nicht mehr. Fuer den hier angestreben Grundschutz sollte das meiner Meinung nach ausreichen.&lt;br /&gt;
; Schutz von Quelltexten:&lt;br /&gt;
 Hier würde ich property files mit aufnehmen. der hinweis auf web-inf/classes fehlt - warum?&lt;br /&gt;
 Bei include-befehlen sind die pfadangaben zu überdenken.&lt;br /&gt;
([[User:Mrohr|Matthias]]) Wuerde property Dateien allgemein den Konfigurationsdateien zuordnen. Der Begriff &amp;quot;Einzubindende Dateien&amp;quot; ist mir allrdings Neu&lt;br /&gt;
&lt;br /&gt;
([[User:Mrohr|Matthias]]) Weiterhin, fehlt ein genereller Bezug auf HTML 5 WebStorage, LSOs etc. Zumindest in abstrakter Form, so dass diese dadurch indirekt addresiert werden. Egal, in dem relevanten Punkt will der Autor meiner Meinung nach nur einige Beispiele nennen, das sollte keinen Anspruch auf Vollsteandigkeit haben muessen.&lt;br /&gt;
&lt;br /&gt;
; ([[User:Mrohr|Matthias]]) - Durch dieses Attribut wird die Gültigkeit des Cookies auf die Domäne der Web-Anwendung beschränkt.&lt;br /&gt;
Nein, das ist leider total falsch. Das Domain-Attribut stellt eine Aufweichung der Cookie-Gueltigkeit dar und nicht anders herum. Gewoehlich sind Cookies immer Host-Cockies und das sollte auch so bleiben. Die Empfehlung sollte entfernt werden.&lt;br /&gt;
&lt;br /&gt;
== M 4.WA16Zugriffskontrolle bei Web-Anwendungen (Markus) ==&lt;br /&gt;
; Zugriffskontrolle via Frameworks:&lt;br /&gt;
 Dieser Punkt (Frameworks) wird nur in einem Satz erwähnt. Es werden keine Bespiele gegeben - Das ist zu wenig.&lt;br /&gt;
 Es müssen alle Zugriffe geschützt werden. Eine Protokollierung aller Zugriffe mit den nötigen Informationen ist ebenfalls empfehlenswert.&lt;br /&gt;
; Datei Upload:&lt;br /&gt;
 Die Gefahr eines DOS wird hier nicht erwähnt.&lt;br /&gt;
&lt;br /&gt;
== M 4.WA19Verhinderung von Cross-Site Request Forgery (CSRF, XSRF) (Markus, Matthias) ==&lt;br /&gt;
; Verantwortliche: &lt;br /&gt;
 Entwickler und Admins!&lt;br /&gt;
([[User:Mrohr|Matthias]]) Korrekt, wobei auch in der Reihenfolge&lt;br /&gt;
&lt;br /&gt;
; Anti-CSRF-Token in hidden fields:&lt;br /&gt;
 Das ist keine gute Idee. Ich würde das streichen!&lt;br /&gt;
&lt;br /&gt;
([[User:Mrohr|Matthias]]) Watt? Anti-CSRF-Tokens in Hidden Fields sind die Standard-Massnahme. Wie denn sonst? Bitte nicht streichen!!! &lt;br /&gt;
&lt;br /&gt;
([[User:Mrohr|Matthias]]) Die Technik bei der die Session ID als Anti-CSRF-Token verwendet wird, wird als Double-Cookie Submit bezeichnet, das sollte hier referenziert werden.&lt;br /&gt;
&lt;br /&gt;
; Umgehung von Schutzmechanismen:&lt;br /&gt;
 Man in the middle hat keinen direkten Bezug zu CSRF! Das würde ich streichen.&lt;br /&gt;
([[User:Mrohr|Matthias]]) Der Hinweis ist korrekt. Wovon der Autor hier spricht ist Session Replay nicht CSRF.&lt;br /&gt;
&lt;br /&gt;
; Frameworks:&lt;br /&gt;
 Gute Idee - aber es gibt auch Features in den ApplicationServern die CSRF unterbinden - warum wird das nicht besprochen?&lt;br /&gt;
&lt;br /&gt;
([[User:Mrohr|Matthias]]) Sehe ich persoenlich nicht so, da CSRF primaer ein Applikations-Fehler ist, und auch in der Applikation und nicht im Environment (AppServer) geloest werden sollte. Auch wenn das manchmal ggf. die einzig machbare Loesung darstellt.&lt;br /&gt;
&lt;br /&gt;
([[User:Mrohr|Matthias]]) Was generell fehlt, ist ein Hinweis darauf, dass schreibende Requests generell per HTTP Post abgewickelt werden sollten, da HTTP Get keine &amp;quot;Safe Method&amp;quot;  (siehe HTTP 1.1, RFC 2616) ist.&lt;br /&gt;
&lt;br /&gt;
== M 4.WA20Sicherer Entwurf der Logik von Web-Anwendungen (Markus, Matthias) ==&lt;br /&gt;
; Rollbacks:&lt;br /&gt;
 Tritt ein Fehler auf muss die Applikation einen konsistenten Datenstand zurück lassen. Das wird hier nicht erwähnt.&lt;br /&gt;
; RaceConditions:&lt;br /&gt;
 Fehler in der Geschäftslogik können auch durch zwei gleichzeitige Sessions auf einer Webapplikation auftreten - das wird hier nicht besprochen.&lt;br /&gt;
&lt;br /&gt;
([[User:Mrohr|Matthias]]) Ehrlich gesagt kann ich nicht ganz nachvollziehen, was der Sichere Entwurf der Logik von Web-Anwendungen mit dem Verzicht auf aktive Inhalte zu tun hat. Unabhaengig davon sollte man solche unsinnigen Aussagen im Jahre 2012 nicht mehr treffen, damit macht man sicht nur laecherlich.&lt;br /&gt;
&lt;br /&gt;
Nichts desto trotz, was hier als &amp;quot;echte&amp;quot; Massnahmen erwaehnt werden sollte sind:&lt;br /&gt;
* Verhinderung von Race Conditions, aber nicht nur durch Concurrent Sessions sondern auch durch Singletons (TOCTOU)&lt;br /&gt;
* Enforcements von Workflows, etwa durch die Verwendung von State Machines oder Request Tokens (auch bekannt als Site Usage Enforcement)&lt;br /&gt;
* Fail Securely (bzw. Verweis)&lt;br /&gt;
* Serverseitige Abbildung der Anwendungslogik, zumindest wenn diese sicherheitsrelevant sit&lt;br /&gt;
&lt;br /&gt;
== M 4.WA22Verhinderung der Blockade von Ressourcen (DoS) bei Web-Anwendungen (Markus, Matthias) ==&lt;br /&gt;
; Datenspeicher:&lt;br /&gt;
 Neben dem Datenspeicher sollte auch der RAM-Verbrauch pro Thread der Applikation limitiert werden.&lt;br /&gt;
([[User:Mrohr|Matthias]]) Stimmt, ich wuerde hier sogar allgemein von Ressourcenverbrauch am Beispiel RAM und Datenspeicher, sprechen&lt;br /&gt;
&lt;br /&gt;
; Voraggregation von Daten / Caching&lt;br /&gt;
 Dieser Punkt fehlt: Stark ressourcen belastende Anfragen können auch in Lastarmen Zeiten vorberechnet werden.&lt;br /&gt;
([[User:Mrohr|Matthias]]) Stimmt, koennte noch als Anmerkung bei &amp;quot;Cachen von Anfragen&amp;quot; hinzugefuegt werden&lt;br /&gt;
&lt;br /&gt;
; ([[User:Mrohr|Matthias]]) Prueffrage: &amp;quot;Wird ein möglicher Überlauf von Protokolldaten... verhindert&amp;quot;&lt;br /&gt;
&lt;br /&gt;
Ist eine etwas eingeschrankte Sicht. Wurde hier eher von Ueberlauf von Speicherplaz zu Beispiel im Rahmen der Protokollierung sprechen&lt;br /&gt;
&lt;br /&gt;
; ([[User:Mrohr|Matthias]]) Durchfuehrung von Lasttests zur Identifikation ressourcenintensiver Operationen&lt;br /&gt;
&lt;br /&gt;
Der Hinweis waere ggf. erwahnenswert&lt;br /&gt;
&lt;br /&gt;
; ([[User:Mrohr|Matthias]]) Hinweis auf nicht-angemeldeten Bereich&lt;br /&gt;
&lt;br /&gt;
Das Risiko durch rechenintensive Operationen durch einen DoS betroffen zu sein ist natuerlich fuer gewoehlich um so groesser, wenn diese im anonymen Bereich angeboten wird. Der Hinweis ware ggf. ebenfalls hilfreich.&lt;br /&gt;
&lt;br /&gt;
== M 4.WA25Verhinderung von Clickjacking (Markus) ==&lt;br /&gt;
Ok - das passt soweit.&lt;br /&gt;
&lt;br /&gt;
([[User:Mrohr|Matthias]]) Stimmt, auch wenn ich &amp;quot;Angreifer&amp;quot; in dem Beispiel eher als &amp;quot;Webseitenbetreiber&amp;quot; beschreiebn wuerde, da er nicht wirklich aktiv einen Angriff durchfuehrt, oder? Bitte nochmal ueber meinen Hinweis aus G 5.WA18 nachdenken: Ist Clickjacking-Schutz tatsaechlich Grundschutz? Ich bin mir da selber nicht so wirklich sicher.&lt;br /&gt;
&lt;br /&gt;
== M 5.WA21Sichere Anbindung von Hintergrundsystemen an Web-Anwendungen (Markus) ==&lt;br /&gt;
; Verantwortliche:&lt;br /&gt;
 Architekten fehlen. Entwickler müssen die Views umsetzen und die Datasource entsprechend einbinden - die fehlen hier ebenfalls.&lt;br /&gt;
; DirectorySystem Beispiel:&lt;br /&gt;
 Das DirectorySystem wird in dem angegeben Beispiel zum Single Point of Failure - das wird verschwiegen.&lt;br /&gt;
; Firewalls:&lt;br /&gt;
 Das sind fachlich-blinde Systeme. Was ist mit WAFs / IDS / IPS etc.?&lt;br /&gt;
([[User:Mrohr|Matthias]]) Stimmt, das hat in diesem Baustein nichts zu suchen&lt;br /&gt;
&lt;br /&gt;
([[User:Mrohr|Matthias]]) Noch ein weiterer Punkt von mir&lt;br /&gt;
&lt;br /&gt;
; Typische Hintergrundsysteme&lt;br /&gt;
Hier fehlt irgendwie &amp;quot;Middleware&amp;quot;, die ist denke ich nicht immer Legacy&lt;br /&gt;
&lt;br /&gt;
== M 5.WA23Systemarchitektur einer Web-Anwendung (Markus) ==&lt;br /&gt;
; Verantwortliche:&lt;br /&gt;
Auch hier fehlend wieder die Architekten. &lt;br /&gt;
; Virtualisierung:&lt;br /&gt;
Virtualisierung bietet weitere Angriffsvektoren (z.B.: Hypervisor) die eine &amp;quot;Blech&amp;quot;Farm nicht bietet.&lt;/div&gt;</summary>
		<author><name>Mrohr</name></author>	</entry>

	<entry>
		<id>https://wiki.owasp.org/index.php?title=Talk:OWASP_Review_BSI_IT-Grundschutz_Baustein_Webanwendungen&amp;diff=130186</id>
		<title>Talk:OWASP Review BSI IT-Grundschutz Baustein Webanwendungen</title>
		<link rel="alternate" type="text/html" href="https://wiki.owasp.org/index.php?title=Talk:OWASP_Review_BSI_IT-Grundschutz_Baustein_Webanwendungen&amp;diff=130186"/>
				<updated>2012-05-21T13:24:05Z</updated>
		
		<summary type="html">&lt;p&gt;Mrohr: /* M 4.WA22Verhinderung der Blockade von Ressourcen (DoS) bei Web-Anwendungen (Markus, Matthias) */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Since it's about a review of a document in German, all the discussions will be done in German :-)&lt;br /&gt;
&lt;br /&gt;
Diskussionen rund um den Review des &amp;quot;IT-Grundschutzbausteins Webanwendungen&amp;quot; finden hier statt, sinnvollerweise auf Deutsch :-)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Vorschlag für Kriterien, die an unser Review angelegt werden sollten (.kai) ==&lt;br /&gt;
&lt;br /&gt;
* Der Baustein soll alle wichtigen Themen der Entwicklung sicherer&lt;br /&gt;
Webanwendungen enthalten.&lt;br /&gt;
&lt;br /&gt;
* Der Baustein soll die verschiedenen Phasen der Software-Entwicklung&lt;br /&gt;
vollständig abdecken.&lt;br /&gt;
&lt;br /&gt;
* Der Baustein soll zwischen verbindlichen, prüfbaren Vorgaben und&lt;br /&gt;
unverbindlichen Empfehlungen sprachlich sauber unterscheiden (hier&lt;br /&gt;
spielt mein Auditorenblick eine Rolle). Vor allem soll der Baustein&lt;br /&gt;
verbindliche Anforderungen auch tatsächlich stellen. Alle&lt;br /&gt;
verbindlichen Anforderungen müssen unabhängig von der jeweiligen&lt;br /&gt;
Umgebung auch umsetzbar sein, d.h. sie müssen entsprechend generisch&lt;br /&gt;
sein.&lt;br /&gt;
&lt;br /&gt;
* Die Maßnahmen sollen nur in (begründbaren) Ausnahmen zu Empfehlungen&lt;br /&gt;
von OWASP im Widerspruch stehen.&lt;br /&gt;
&lt;br /&gt;
* Die Maßnahmen sollen verständlich und anwendbar sein.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== &amp;quot;Hilfsmittel&amp;quot; (Markus) ==&lt;br /&gt;
Ich würde das Script zur Vermeidung von Clickjacking wrappen und nicht als losen Skript-block in den Text einbinden - einfach schlechter Programmierstiel diese losen Blöcke.&lt;br /&gt;
Der Zugriff auf das Body-Element mit byTagName-Array[0] ist auch nicht wirklich gut. Ich halte Zugriffe über das DOM (klassisch), bei ID bzw. XPATH für besser. &lt;br /&gt;
&lt;br /&gt;
SQL-Injection Characters:&lt;br /&gt;
die Pipe fehlt hier zur Textkonatenierung&lt;br /&gt;
+ / - haben auch eine Bedeutung bei JOINs.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== &amp;quot;Goldene Regeln&amp;quot; (Matthias) ==&lt;br /&gt;
&lt;br /&gt;
Hier meine Anmerkungen zu diesem Dokument:&lt;br /&gt;
&lt;br /&gt;
; 1. Für mich fehlende Punkte&lt;br /&gt;
* Korrektur der Ursache (Root Cause) von Schwachstellen statt  Verhinderung deren Ausnutzung&lt;br /&gt;
* Bezug auf Minimierung der Angriffsfläche und Least-Privilege-Prinzip&lt;br /&gt;
* Bezug auf Defense-in-Depth-Prinzip&lt;br /&gt;
* Verwendung von getesteten Security APIs (z.B. OWASP ESAPI) statt selbstentwickelter Funktionen&lt;br /&gt;
* Bezug auf Externalisierung von Sicherheitsfunktionen, sowie deklerative vor programmatischer Sicherheit.&lt;br /&gt;
&lt;br /&gt;
; 2. Begriff &amp;quot;Web-Anwendung&amp;quot;&lt;br /&gt;
Würde ich generell durch &amp;quot;Webanwendung&amp;quot; ersetzen.&lt;br /&gt;
&lt;br /&gt;
; 3. Einleitung (&amp;quot;Web-Anwendungen stellen Funktionalität zur Verfügung, ...&amp;quot;)&lt;br /&gt;
&lt;br /&gt;
Wozu dient dieser Satz?&lt;br /&gt;
&lt;br /&gt;
; 4. &amp;quot;Die Architektur der Web-Anwendung ist im Sicherheitskonzept zu  dokumentieren.....&amp;quot; &lt;br /&gt;
&lt;br /&gt;
Ich fände es sinnvoller, wenn hier von der &amp;quot;Sicherheitsarchitektur&amp;quot; gesprochen wird, welche etwa neben den sicherheitsrelevanten Datenflüssen, sensible Komponenten, Entry Points, Akteure architekturelle Security Controls wie Authentisierung, Kryptographie und natürlich die Trust Boundaries beinhaltet.&lt;br /&gt;
&lt;br /&gt;
; 5. &amp;quot;Bei Web-Anwendungen handelt es sich häufig um spezielle Eigenentwicklungen....&amp;quot;&lt;br /&gt;
&lt;br /&gt;
Erstens würde ich hier den geläufigen Begriff &amp;quot;Individualsoftware&amp;quot; verwenden. Zweitens würde ich statt bestimmte SDLC-Phasen vorzugeben (die Begriffe &amp;quot;Softwareverteilung&amp;quot; und &amp;quot;Integration&amp;quot; sind mir bei Webanwendungen bisher noch nicht so häufig untergekommen), besser von der Notwendigkeit sprechen, Sicherheit in allen Entwicklungsphasen zu berücksichtigen, also eines SDLs.&lt;br /&gt;
&lt;br /&gt;
; 6. &amp;quot;Alle Ein- und Ausgaben der Web-Anwendung müssen in eine normalisierte Form überführt werden....&amp;quot;&lt;br /&gt;
&lt;br /&gt;
Normalisierung ist für mich nicht gleich Kanonsierung, auch wenn beide Begriffe häufig als synonym verwendet werden.  Der Unterschied wird in der [http://owasp-esapi-java.googlecode.com/svn/trunk_doc/2.0-rc4/org/owasp/esapi/Encoder.html API-Beschreibung der ESAPI] erklärt. Die Normalisierungs-Funktion ist allerdings schon vor einiger Zeit aus der ESAPI [https://lists.owasp.org/pipermail/esapi-dev/2010-January/000266.html rausgeflogen]. Die generelle Kanonisierung von Ausgaben halte ich dazu für nicht sinnvoll.&lt;br /&gt;
&lt;br /&gt;
Zweitens, finde ich den weiteren Text zwar grundsätzlich formal korrekt, aber so allgemein, dass dieser glaube ich niemandem so richtig etwas bringt.  &lt;br /&gt;
&lt;br /&gt;
Besser fände ich hier Ein- von Ausgabevalidierung grundsätzlich voneinander abzugrenzen. Etwa was ich per Eingabevalidierung (Längenprüfung, Casting, etc. per Whitelisting) und was mit Ausgebavalidierung (Enkodierung, Escaping, Parametrisierung) machen muss und kann.&lt;br /&gt;
&lt;br /&gt;
Eingabedaten können technisch zudem auch Werte eingelesener Property-Dateien sein. Muss ich die auch validieren? Ist das dann noch Grundschutz? &lt;br /&gt;
&lt;br /&gt;
; 7. &amp;quot;Für den Zugriff auf sensitive Funktionen oder Informationen muss die Web-Anwendung eine wirksame Authentisierung und Sitzungsverwaltung unterstützen. Die Eigenschaften der Sitzungs-ID müssen so gewählt werden, dass die Sitzung ausreichend geschützt ist. ....&amp;quot;&lt;br /&gt;
&lt;br /&gt;
Besser fände ich &amp;quot;eine Authentisierung, die über eine dem Schutzbedarf der Anwendung angemessene Stärke verfügt.&amp;quot; &lt;br /&gt;
&lt;br /&gt;
Eigentlich geht es doch mehr um den Schutz der Sitzungs-ID, da diese gewöhnlich im Verlauf einer Sitzung den Client authentisiert. Oder den Schutz des Zugriffs auf eine Sitzung. &lt;br /&gt;
&lt;br /&gt;
Zudem fehlt hier meiner Meinung nach der Hinweis auf die bevorzugte Verwendung getesteter Standardkomponenten.&lt;br /&gt;
&lt;br /&gt;
; 8. &amp;quot;Die Web-Anwendung sollte die zu übermittelnden Daten schützen.&amp;quot;&lt;br /&gt;
&lt;br /&gt;
Dies würde ich nur auf sensible Daten beziehen. Zusätzlich zu HTTPS würde ich hier schreiben, dass sensible Daten generell nicht in der URL übertragen werden dürfen.&lt;br /&gt;
&lt;br /&gt;
; 9. &amp;quot;Die Preisgabe interner Informationen (z.B. Kommentare, Fehlermeldungen)&amp;quot;&lt;br /&gt;
&lt;br /&gt;
Hier würde ich eher schreiben &amp;quot;(IN Kommentaren, Fehlermeldungen, HTTP Headern, etc.)&amp;quot;&lt;br /&gt;
&lt;br /&gt;
; 10. &amp;quot;Fehler müssen so behandelt werden, ... müssen Fehler bei der Autorisierung zu einer Verweigerung beim Zugriff auf die angeforderte Ressource führen.&amp;quot;&lt;br /&gt;
&lt;br /&gt;
Sprachlich: &amp;quot;Die Webanwendung muss sich stets in einem sicheren Zustand befinden. Beispielsweise müssen Fehler bei der Autorisierung zu einer Verweigerung des Zugriffs führen (Default-Deny-Strategie).&amp;quot;&lt;br /&gt;
&lt;br /&gt;
; 11. &amp;quot;Die Logging-Funktionen der Web-Anwendung müssen aufgetretene Ereignisse derart protokollieren, dass sicherheitskritische Vorfälle nachvollzogen werden können.&amp;quot;&lt;br /&gt;
&lt;br /&gt;
Hier würde hier eher von &amp;quot;allen sicherheitsrelevanten Ereignissen&amp;quot; sprechen.&lt;br /&gt;
&lt;br /&gt;
Weiterhin sollten insbesondere beim Logging der Datenschutz berücksichtigt werden, personenbezogene Daten also nach Möglichkeit nicht oder nur anonymisiert in technischen Logdateien protokolliert werden.&lt;br /&gt;
&lt;br /&gt;
; 12. &amp;quot;Alle Sicherheitsmechanismen (z.B. Authentisierung und Zugriffskontrolle) sind serverseitig zu implementieren und können nicht durch clientseitige Mechanismen ersetzt werden.&amp;quot;&lt;br /&gt;
&lt;br /&gt;
Die Aussage ist so nicht korrekt. Darüber hatten wir bereits bei der ASVS mehrfach diskutiert. &lt;br /&gt;
&lt;br /&gt;
Überall dort wo der Client angegriffen wird, also etwa bei RIAs (Stichwort DOM-Based XSS) müssen wir Security Controls clientseitig implementieren. Es gibt mittlerweile deshalb auch eine Portierung der ESAPI auf Javascript. Überall dort wo der Server oder Hintegrundsysteme angegriffen werden, ist die Aussage aber natürlich zutreffend.&lt;br /&gt;
&lt;br /&gt;
== &amp;quot;Gefährdungen&amp;quot; (Markus, Dennis, .... &amp;lt;Dein Name&amp;gt;) ==&lt;br /&gt;
; Generell:&lt;br /&gt;
Reference auf RFCs fehlen.&lt;br /&gt;
&lt;br /&gt;
==B.5.XX Web-Anwendungen ==&lt;br /&gt;
; 1. Erster Absatz - Letzter Satz: --Wieso werden hier nur HTML/XML Doks und Oberflächen angesprochen? Was ist der Unterschied zwischen einem HTML-Dok und einer Oberfläche? Was ist mit  Flash, etc.? Was ist mit WebSockets?&lt;br /&gt;
; 2. Stichpunkt &amp;quot;Protokollierung&amp;quot;: Sicherheits relevant ist ein sehr dehnbarer Begriff - Eine bessere Formulierung könnte sein: Zur Rekonstruktion von Nutzerhandlungen nötige Ereignisse (positve &amp;amp; negative) müssen protokolliert werden . . . &lt;br /&gt;
; 3. Absatz: &amp;quot;Abgrenzung des Bausteins&amp;quot;: &amp;quot;Die spez. Sicherheitsanforderungen an Web-Services werden in diesem Baustein nicht betrachtet&amp;quot; --&amp;gt; Wie so nicht? Was ist das Backend von einer Rest / AJAX-basierenden Webanwendung denn anderes als ein Web-Service? Diesen Satz würde ich entfernen.&lt;br /&gt;
; 4.Vorsätzliche Handlungen -&amp;gt; Web-Spoofing (G.5.87) -- Missverständliche Bezeichnung / Nomenklatur&lt;br /&gt;
; 5. Seite 4 : erste Zeile &amp;quot;Umsetzung&amp;quot;: &amp;quot;dafür umzusetztende Komponenten müssen die Webanwendung schützen...&amp;quot; - Hier fehlt mir der Hinweis, dass dieser Schutz verifiziert werden muss.&lt;br /&gt;
; 6 Seite 5: &amp;quot;Umsetzung&amp;quot; - Wir haben CSRF, D(D)os und SQL-Injection aber wo ist XSS?&lt;br /&gt;
; 7 Seite 7: &amp;quot;Die Sicherheitsfunktion wird ausschließlich clientseitig...&amp;quot; --&amp;gt; Warum muss der Angreifer überhaupt einen Browser umkonfigurieren? Was ist mit Proxies, Scripts, etc.? Ich würde das reduzieren darauf, dass rein Webbrowser-basierende Schutzfunktionen einfach umgangen werden können.&lt;br /&gt;
; 8 Seite 8: Die angesprochenen Punkte hinterlassen den Eindruck nicht vollständig zu sein: Mir fehlen Punkte wie &amp;quot;Outsourcing&amp;quot;, &amp;quot;KnowHow der Entwickler&amp;quot;, Tooling, Framework-Auswahl, etc.&lt;br /&gt;
; 9 Seite 9: Eigentlich möchte der Autor hier über Datenschutz sprechen. Abgesehen von den letzten drei Zeilen geht es aber nur um &amp;quot;User tracking&amp;quot; - Wo ist der Rest der Datenschutzproblematik? Warum der Fokuss auf Tracking? Mir ist das zu einseitig.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
tbd.&lt;br /&gt;
&lt;br /&gt;
; Wortwahl:&lt;br /&gt;
Ich stosse innerhalb der Texte immer wieder an die Worten '''Hintergrundsystem''' und '''Sicherheitskontext'''.&lt;br /&gt;
'''Hintergrundsystem:''' besseres Synonym?&lt;br /&gt;
'''Sicherheitskontext:''' nur weil es in den Texten um Sicherheit geht muss nicht an jeder Stelle immer wieder das Wort _Sicherheits_kontext eingebaut werden.&lt;br /&gt;
Bsp: &amp;quot;Erlangt ein Angreifer Kenntnis von einer solchen gültigen, aber nicht mehr genutzten SessionID, so kann er die Web-Anwendung im Sicherheitskontext des nicht abgemeldeten Benutzers weiter verwenden.&amp;quot; (G 5,WA12 Unzureichendes Session-Management von Web-Anwendungen)&lt;br /&gt;
Verbesserungsansansatz: ... so kann er die Web-Anwendung anstelle des eigentlichen Besitzers weiterhin verwenden.&lt;br /&gt;
&lt;br /&gt;
== &amp;quot;G 2.WA01 Mangelhafte Auswahl oder Konzeption von Web-Anwendungen&amp;quot; (Matthias) ==&lt;br /&gt;
&lt;br /&gt;
Nachdem ich mir diese Gefährdung durchgelesen hatte, fehlten mir ehrlich gesagt etwas die Worte. Nicht nur, dass hier fast jeder zweite Satz entweder falsch ist bzw. massive Fehler enthält oder ich diesen schlicht nicht verstehe, ist der ganze Text sprachlich wirklich enorm verbesserungsfähig. &lt;br /&gt;
&lt;br /&gt;
Na gut, ich konzentriere mich mal auf die fachlichen Punkte:&lt;br /&gt;
&lt;br /&gt;
; 1. Security Controls&lt;br /&gt;
Werden mal mit &amp;quot;Schutzmechanismen&amp;quot;, mal mit &amp;quot;Sicherheitskomponenten&amp;quot; und dann wieder als &amp;quot;Sicherheitsfunktionen&amp;quot; bezeichnet. Hier macht eine einheitliche Benennung sicherlich Sinn und ist weniger verwirrend.&lt;br /&gt;
&lt;br /&gt;
; 2. &amp;quot;Eine Web-Anwendung ist in der Regel ein verteiltes, komplexes System bestehend aus unterschiedlichen Komponenten (z. B. Webserver, Applikationsserver, Hintergrundsysteme)&amp;quot;&lt;br /&gt;
&lt;br /&gt;
Eine Webanwendung besteht sicher nicht aus einem Webserver- oder anderer infrastruktureller Komponenten, sondern ist Software welches diese nutzt.&lt;br /&gt;
&lt;br /&gt;
; 3. &amp;quot;Bei individuell entwickelten Web-Anwendungen sind im Allgemeinen die Frameworks, Komponenten und Schnittstellen im Rahmen der Konzeption auszuwählen und deren Einbindung und Absicherung zu betrachten....Im Gegensatz dazu ist bei der Konzeption von Web-Anwendungen auf Basis von Standardsoftware insbesondere auf die Auswahl der Software und die Konfiguration der Teilkomponenten zu achten&amp;quot;&lt;br /&gt;
&lt;br /&gt;
Wir unterscheiden im Rahmen von Webanwendungen eigentlich Free or Opensource Software (FOSS bzw. FLOSS), Standardsoftware und Individualsoftware voneinander. Wir unterscheiden nicht Frameworks von Standardsoftware. Frameworks können Teil von Standardsoftware sein, wie etwa bei SharePoint, SAP, etc, oder aber FOSS, wie etwa Spring. Die ganzen Absätze machen für mich daher keinen Sinn.&lt;br /&gt;
&lt;br /&gt;
; 4. &amp;quot;Eine Sicherheitsfunktion (z. B. Authentisierung, Autorisierung) wird nicht an einer Stelle umgesetzt und verwendet, sondern ist mehrfach in der Web- Anwendung realisiert. Wird diese Sicherheitsfunktion an den verschiedenen Stellen unterschiedlich umgesetzt, führt dies zu einem uneinheitlichen Sicherheitsniveau.&amp;quot;&lt;br /&gt;
&lt;br /&gt;
Natürlich ist die mehrfache Verwendung bestimmter Security Controls, beispielsweise von Zugriffskontrollen (Complete-Mediation) oder Validierung (Robustheit) erstrebenswert. Was der Autor hier wahrscheinlich meinte, war die Notwendigkeit diese zu Kapseln bzw. zu Externalisieren. Das bezieht sich im übrigen nicht nur auf die Controls selbst, sondern auch auf ihre Parametrisierung (etwa. über Konfigdateien / XACML).&lt;br /&gt;
&lt;br /&gt;
Wichtiger wäre in diesem Zusammenhang zudem die fehlende Berücksichtigung bestimmter Security Controls.&lt;br /&gt;
&lt;br /&gt;
; 5. &amp;quot;Auswahl von Web-Anwendungen auf Basis von Standardsoftware&amp;quot;&lt;br /&gt;
Was will der Satz sagen? Ich wähle Standardsoftware aus, aber doch keine Webanwendungen. Oder heißt das, ich kaufe eine existierende Anwendung ein (Webanwendung!=Indivudualsoftware)? &lt;br /&gt;
&lt;br /&gt;
; 6. &amp;quot;Das ausgewählte Produkt verfügt nicht über die ausreichende Sicherheitsfunktionalität, ... Daher müssen die notwendigen Schutzmechanismen nachträglich hinzugefügt werden, wodurch zusätzliche Aufwände entstehen.&amp;quot;&lt;br /&gt;
Das ist etwas sehr positiv formuliert. Tatsächlich können fehlende Security Controls in zugekaufter Software (insb. Standardsoftware) in der Realität häufig gar nicht hinzugefügt werden oder nur perimetrisch (z.B. per WAF oder Access Gateway).&lt;br /&gt;
&lt;br /&gt;
; 7. &amp;quot;Die Hintergrundsysteme werden unzureichend abgesichert und dadurch ist die Datenbank der Web-Anwendung aus dem Internet erreichbar.&amp;quot;&lt;br /&gt;
Gehören fehlende Netzwerksegmentierung bzw. Firewallregeln wirklich in diesen Kontext? Das ist doch eigentlich Grundschutz der Infrastruktur, oder?&lt;br /&gt;
&lt;br /&gt;
; 8. &amp;quot;Aufgrund schwacher Parameter in der Konfiguration des Frameworks zum Session-Management werden unsichere SessionIDs erzeugt.&amp;quot;&lt;br /&gt;
Was sind &amp;quot;schwache&amp;quot; Parameter?&lt;br /&gt;
&lt;br /&gt;
Welches Framework erlaubt unsichere SessionIDs durch eine &amp;quot;schwache&amp;quot; Konfiguration zu erzeugen?&lt;br /&gt;
&lt;br /&gt;
; 9. &amp;quot;Wird die Konfiguration des Web-Browsers durch einen Angreifer manipuliert, können die clientseitig umgesetzten&amp;quot;&lt;br /&gt;
&lt;br /&gt;
Manipuliert ein Angreifer die Konfguration seines Webbroswers, wenn er einen MITM-Proxy konfiguriert?&lt;br /&gt;
&lt;br /&gt;
Wie bereits bei den &amp;quot;Goldenen Regeln&amp;quot; angemerkt, gilt auch hier, das manche Security Controls auch clientseitig umgesetzt werden dürfen (etwa. zur Verhinderung von Dom-Based XSS).&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== &amp;quot;G 5.WA10 Fehler in der Web-Anwendungslogik&amp;quot; (Dennis) ==&lt;br /&gt;
; 1. &amp;quot;Damit kann aufgrund der Prüfreihenfolge ein hoher Ressourcenverbrauch provoziert werden, der für Denial-of-Service-Angriffe ausgenutzt werden kann.&amp;quot;&lt;br /&gt;
Meiner Meinung nach passt in diesem Kontext die Attacke DoS nicht ganz. Falls die nachfolgende Funktionalität wegen der langen Ausführungszeit der Filterkomponente übersprungen wird bzw. ein Fehler auftritt würde dies meiner Ansicht in die Thematik Anwendungslogik passen. Eine DoS-Attacke kann hingegen anhand jeder Funktion durchgeführt werden.&lt;br /&gt;
&lt;br /&gt;
== &amp;quot;G 5.WA11 Umgehung clientseitig umgesetzter Sicherheitsfunktionen von Web-Anwendungen&amp;quot; (Dennis) ==&lt;br /&gt;
; 1. &amp;quot;Ein Angreifer kann diese ausnutzen, um beispielsweise unbefugt Befehle an Hintergrundsysteme der Web-Anwendung zu übermittlen (z.B. in Form von Datenbankanfragen bei einer SQL-Injection).&amp;quot;&lt;br /&gt;
Umformulierung des Inhalts der Klammer. Hatte beim ersten Lesen für mich den Anschein, als ob ein Formular genutzt werden könnte welches den Nutzer aufforder eine SQLI einzugeben. Ich denke &amp;quot;Datenbankanfrage zwecks Ausführung einer SQL-Injection&amp;quot; würde besser passen.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== G 2.WA02 Mängel bei der Entwicklung und der Erweiterung von Web-Anwendungen (Matthias) ==&lt;br /&gt;
&lt;br /&gt;
Allgemein ist de obere Teil ok, die aufgezählten &amp;quot;Auswirkungen von fehlenden Vorgaben&amp;quot; verstehe ich jedoch nicht. Wo ist etwa der Bezug von Barrierefreiheit auf die Anwendungssicherheit?&lt;br /&gt;
&lt;br /&gt;
Mein Vorschlag, um diese Punkte etwa sinnvoll umzubauen:&lt;br /&gt;
* &amp;quot;Fehlendes Vorgehensmodell&amp;quot;: Bezug auf fehlende Berücksichtigung von Sicherheit im SDLC. Statt eines SDLCs selbst sollte hier besser auf die Notwendigkeit eines Secure Development Lifecycle (SDL) hingewiesen werden&lt;br /&gt;
* &amp;quot;Fehlende Programmierrichtlinien&amp;quot; =&amp;gt; Besser wäre hier &amp;quot;Fehlende Sicherheitsrichtlinien in der Programmierung&amp;quot; also &amp;quot;Secure Coding Guidelines&amp;quot;&lt;br /&gt;
* &amp;quot;Testfälle&amp;quot; =&amp;gt; &amp;quot;Sicherheitsrelevante Testfälle&amp;quot; (z.B. Security Unit Tests). &lt;br /&gt;
* &amp;quot;Barrierefreiheit&amp;quot;: Warum nicht an dieser Stelle die Auswirkungen von Sicherheitsfunktionen auf die Bedienbarkeit, etwa anhand von CAPTCHAS erläutern?&lt;br /&gt;
&lt;br /&gt;
== G 2.WA03 Unzureichender Schutz personenbezogener Daten bei Web-Anwendungen (Matthias) ==&lt;br /&gt;
&lt;br /&gt;
Der Titel dieses Bausteines heißt &amp;quot;Schutz personenbezogener Daten&amp;quot;, die genannten Beispiele beziehen sich bis auf den letzten jedoch auf die missbräuchliche (oder zumindest problematische) Nutzung aus Sicht des Datenschutzes. &lt;br /&gt;
&lt;br /&gt;
Die Punkt 1-3 sollten daher besser entfallen und z.B. durch die Folgenden ersetzt werden:&lt;br /&gt;
* Unsichere Einbindung von sozialen Netzwerken (Bezug nehmen auf den Like-Button bei Facebook)&lt;br /&gt;
* Unsichere Einbindung von Werbeinhalten&lt;br /&gt;
* Unsichere Übertragung und Caching&lt;br /&gt;
* Unsichere Protokollierung&lt;br /&gt;
* Ungenügender Zugriffsschutz&lt;br /&gt;
* Verstoß des Minimalprinzips bzw. der Zweckgebundenheit (welche Daten werden wirklich benötigt)&lt;br /&gt;
&lt;br /&gt;
Auch wäre es ggf. zumindest einen Verweis auf das BDSG zu machen.&lt;br /&gt;
&lt;br /&gt;
== G 4.33 Unzureichende oder fehlende Authentisierung (Matthias) ==&lt;br /&gt;
&lt;br /&gt;
; 1. Erster Absatz: &amp;quot;Wenn Authentisierungsmechanismen fehlen oder zu schlecht sind&amp;quot;&lt;br /&gt;
&lt;br /&gt;
&amp;quot;schlecht&amp;quot; sollte vlt besser durch &amp;quot;unzureichend&amp;quot; ersetzt werden.&lt;br /&gt;
&lt;br /&gt;
; 2. &amp;quot;Sicherheitslücken entstehen bei... der Benutzerauthentisierung&amp;quot;&lt;br /&gt;
&lt;br /&gt;
Hier findet nur ein Bezug auf &amp;quot;Passwörter&amp;quot; statt. Der Bezug auf die fehlerhaft implementierte oder dem Schutzbedarf ungenügende Schutzmechanismen (z.B. keine 2-Faktor-Authentisierung bei hochsensiblen Daten) fehlt. Auch auf das komplette fehlen von Authentisierungs-Controls wird hier nicht  eingegangen&lt;br /&gt;
&lt;br /&gt;
; 3. &amp;quot;Sicherheitslücken entstehen bei... der Komponentenauthentisierung&amp;quot;&lt;br /&gt;
&lt;br /&gt;
Wie bei 2., wird auch hier wieder nur auf Passwörter, nicht jedoch auf das fehlen von Controls selbst eingegangen. An dieser Stelle fehlt auch ein Hinweis auf die Notwendigkeit dedizierter Benutzeraccounts.&lt;br /&gt;
&lt;br /&gt;
; 4. &amp;quot;Sicherheitslücken entstehen bei... der Wahl des Verfahrens&amp;quot;&lt;br /&gt;
&lt;br /&gt;
Statt untauglich würde ich auch hier von &amp;quot;dem Schutzbedarf der Daten nicht angemessen&amp;quot; sprechen, eigentlich gehört das für mich aber in die obigen Punkte.&lt;br /&gt;
&lt;br /&gt;
; 5. Serverseitige Authentisierung fehlt&lt;br /&gt;
&lt;br /&gt;
Auch der Server (bzw. die Anwendung selbst) kann sich fehlerhaft oder ungenügend beim Benutzer authentsieren, etwa über DNS, SSL-Zertifikate, etc.&lt;br /&gt;
&lt;br /&gt;
== G 4.WA04 Unzureichende Validierung von Ein- und Ausgabedaten bei Web-Anwendungen (Matthias) ==&lt;br /&gt;
&lt;br /&gt;
; 1. &amp;quot;Unzureichende Validierung von Eingabedaten&amp;quot;&lt;br /&gt;
&lt;br /&gt;
Die genannten Beispiele sind genau keine korrekten Beispiele für diesen Fall, sondern betreffen die Ausgabevalidierung bzw. Enkodierung. Typische Fehler der Eingabevalidierung ist eine Manipulierbarkeit der Business Logik.&lt;br /&gt;
&lt;br /&gt;
; 2. &amp;quot;Unzureichende Validierung von Ausgabedaten&amp;quot;&lt;br /&gt;
&lt;br /&gt;
Hier geht es zentral um die Verhinderung von Interpreter Injection, also serverseitig (z.B. SQL oder LDAP Injection) oder clientseitig (XSS, JSON Injection, etc.). Statt &amp;quot;können die Ausgaben Schadcode&amp;quot; enthalten würde ich hier eher davon Sprechen, dass ein solcher Interpreteraufruf manipuliert werden kann (was dann z.B. zur Einschleusung von Schadcode genutzt werden kann).&lt;br /&gt;
&lt;br /&gt;
; 3. &amp;quot;Die Suchfunktion der Web-Anwendung verwendet die Eingaben der Benutzer ungefiltert&amp;quot;&lt;br /&gt;
&lt;br /&gt;
Mit ungenügender &amp;quot;Filterung&amp;quot; hat SQL Injection nichts zu tun,  eigentlich geht es hierbei darum, dass SQL-Anfragen dynamisch mit unvalidierten Eingebedaten zusammengebaut (konkateniert) werden.&lt;br /&gt;
&lt;br /&gt;
; 4. &amp;quot;Ungefilterter HTML-Code in Kommentar-Funktion&amp;quot;&lt;br /&gt;
&lt;br /&gt;
Hier fehlt der Bezug auf persistentes XSS, das hier sicherlich zentral ist.&lt;br /&gt;
&lt;br /&gt;
== G 4.WA05 Fehlende oder mangelhafte Fehlerbehandlung durch Web-Anwendungen (Tobias, Matthias) ==&lt;br /&gt;
; Abschnitt &amp;quot;Unsichere Fehlerbehandlung&amp;quot;&lt;br /&gt;
Die G adressiert &amp;quot;Unsichere Fehlerbehandlung&amp;quot;, der Abschnitt die &amp;quot;Unsichere Fehlerbehandlung in Sicherheitskomponenten&amp;quot;. Entsprechend sollte der fettgedruckte Teil angepasst werden.&lt;br /&gt;
&lt;br /&gt;
; &amp;quot;fehlende SQL-Parameter,&amp;quot;&lt;br /&gt;
Sollte besser &amp;quot;Fehlermeldungen bei ungültigen SQL-Abfragen&amp;quot; lauten.&lt;br /&gt;
&lt;br /&gt;
; &amp;quot;Auch scheinbar unkritische Informationen, wie die Meldung ob (..)&amp;quot;&lt;br /&gt;
Korrekt, allerdings nicht nachvollziehbar, wenn das Problem der Leser nicht schon bekannt ist. Daher erweitern nach &amp;quot; Rahmen von Brute-Force-Angriffen ausgenutzt werden.&amp;quot; mit &amp;quot;. Bei Brute-Force-Angriffen wäre in diesem Fall klar, dass der Benutzername gültig ist.&amp;quot;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[User:Mrohr|Matthias]]): Stimme dem Obigen auch zu, ausserdem:&lt;br /&gt;
&lt;br /&gt;
; Sprachlich: &amp;quot;kann dies unvorhersehbare Auswirkungen haben und den Betrieb der Web-Anwendung bis zur Unerreichbarkeit einschränken.&amp;quot;&lt;br /&gt;
&lt;br /&gt;
&amp;quot;Unerreichbarkeit&amp;quot; ist etas merkwuerdig ausgedrueckt, besser ware hier von der &amp;quot;Verfuegbarkeit&amp;quot; zu sprechen. Im Uebrigen fehlt vollstaendig der Bezug auf die Verfuegbarkeit als Primaeres Schutzziel der Informationssicherheit.&lt;br /&gt;
&lt;br /&gt;
; &amp;quot;Clientseitige Fehlerbehandlung&amp;quot;&lt;br /&gt;
Das stimmt soweit, das generelle Problem ist jedoch genereller, naehmlich die clientseitige Abbildung sicherheitsrelaventer Logik (in diesem Fall die Fehlerbehandlung)&lt;br /&gt;
&lt;br /&gt;
== G 4.WA06 Unzureichende Nachvollziehbarkeit von sicherheitsrelevanten Ereignissen bei Web-Anwendungen (Matthias) ==&lt;br /&gt;
&lt;br /&gt;
; 1. Erster Absatz: &amp;quot;Die Behebung einer Schwachstelle ist dann nicht oder nur unter erschwerten Bedingungen möglich.&amp;quot;&lt;br /&gt;
&lt;br /&gt;
Hier würde ich ergänzen: &amp;quot;...und Angriffe auf die Anwendungen können ggf. nicht erkannt oder nachvollzogen werden&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
; 2. &amp;quot;Beispiele&amp;quot;: Kommulierbarkeit&lt;br /&gt;
&lt;br /&gt;
Hier fehlt auch ein Bezug auf die Kommulierbarkeit von SIcherheitsereignissen, dass diese also auch von solchen anderer Systeme in Verbindung gesetzt werden können&lt;br /&gt;
&lt;br /&gt;
; 3. &amp;quot;Beispiele&amp;quot;: Gerichtsverwertbarkeit&lt;br /&gt;
&lt;br /&gt;
Auch die Möglichkeit zur Gerichtsverwertbarkeit (etwa durch eindeutigen Zeitstempel) und manipulationssicherer Speicherung, würde ich an dieser Stelle unbedingt erwähnen.&lt;br /&gt;
&lt;br /&gt;
== G 4.WA07 Offenlegung von Informationen bei Web-Anwendungen (Matthias) ==&lt;br /&gt;
&lt;br /&gt;
; 1. Titel&lt;br /&gt;
&lt;br /&gt;
Hier würde ggf. &amp;quot;Offenlegung vertraulicher Informationen&amp;quot; sicher besser passen als &amp;quot;Offenlegung von Informationen&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
; 2. Beispiellink&lt;br /&gt;
&lt;br /&gt;
Ein Beispiellink (mit und ohne Token) würde sicher die Verständlichkeit dieser Schwachstelle verbessern.&lt;br /&gt;
&lt;br /&gt;
; 3. Erster Absatz: &amp;quot;Wenn demzufolge Informationen unnötig offengelegt werden, steigt die Wahrscheinlichkeit eines erfolgreichen Angriffs.&amp;quot;&lt;br /&gt;
&lt;br /&gt;
Interne Informationen auszublenden ist eine Härtungsmaßnahme, deren Anzeige erhöht aber nicht zwangsläufig die Wahrscheinlichkeit eines erfolgreichen Angriffs. Ich würde diesen Satz weglassen.&lt;br /&gt;
&lt;br /&gt;
 ; 4. Fehlende Punkte&lt;br /&gt;
&lt;br /&gt;
* Ein Hinweis auf HTTP Header wäre hier sicher erwähnenswert.&lt;br /&gt;
* Weiterhin bzgl. der Anzeige von Traces und ein Verweis auf den Entsprechenden Baustein zur Fehlerbehandlung&lt;br /&gt;
&lt;br /&gt;
== G 5.WA14 Cross-Site Request Forgery (CSRF, XSRF) (Matthias) ==&lt;br /&gt;
&lt;br /&gt;
; 1. Erster Absatz: &amp;quot;Können Funktionen einer Web-Anwendung ohne weitere Überprüfung der Authentizität des HTTP-Requests (z.B. durch Tokens in versteckten Formularfeldern) genutzt werden&amp;quot;&lt;br /&gt;
&lt;br /&gt;
Statt &amp;quot;Funktionen&amp;quot; würde ich besser von &amp;quot;schreibenden Aktionen&amp;quot; sprechen, dann macht der Satz mehr Sinn.&lt;br /&gt;
&lt;br /&gt;
; 2. Dritter Absatz: &amp;quot;Im Gegensatz zu XSS (siehe ...￼ ) ist das Angriffsziel nicht die Information auf dem Client (z. B. in Cookies),&amp;quot;&lt;br /&gt;
&lt;br /&gt;
Dieser (Halb-)Satz macht keinen Sinn, auch weil es bei XSS nicht nur im Informationen auf dem Cient geht. Vorschlag: &amp;quot;ist das Angriffsziel nicht die Ausführung von Skriptcode, sondern von unbefugten, schreibenden Aktionen im Kontext des angemeldeten Benutzers.&amp;quot;&lt;br /&gt;
&lt;br /&gt;
; 3. Session Riding&lt;br /&gt;
&lt;br /&gt;
Session Riding ist quasi nur ein anderer Begriff für CSRF. Die einzige Form von CSRF die mir bekannt ist, sind Angriffe mit Standard-Passwörtern auf HTTP-Basic-Auth geschützten Ressourcen.&lt;br /&gt;
&lt;br /&gt;
Im Grunde ist Session Riding aber nur ein Synonym für CSRF. Der Absatz ist daher auch nur eine Wiederholung der obigen Beschreibung.&lt;br /&gt;
&lt;br /&gt;
; 4. Zum Beispiel: &amp;quot;Durch einen präparierten Link auf einer Webseite wird die Änderung des Zugangspasswortes des Routers eingeleitet.&amp;quot;&lt;br /&gt;
&lt;br /&gt;
Etwas ungüngstig ausgedrückt. Besser wäre: &amp;quot;wird eine Anfrage zur Änderung des Zugangspasswortes an den Router gesendet. Hierbei sendet der Browser automatisch den Session Cookie mit, worüber die Webanwendung die Authentizität der Anfrage verifiziert und die Änderung durchführt.&amp;quot;&lt;br /&gt;
&lt;br /&gt;
== G 5.WA18 Clickjacking (Matthias) ==&lt;br /&gt;
&lt;br /&gt;
Hier stellt sich mir nur die allgemeine Frage, ob Clickjacking, bzw. der Schutz davor tatsächlich einem Grundschutz zuzurechnen ist. Persönlich würde ich dies nicht tun.&lt;br /&gt;
&lt;br /&gt;
== M 2.WA02 Dokumentation der Architektur von Web-Anwendungen (Matthias) ==&lt;br /&gt;
&lt;br /&gt;
; Verantwortlich für die Umsetzung&lt;br /&gt;
Hier wäre auch die Nennung des &amp;quot;Architekten&amp;quot; sinnvoll&lt;br /&gt;
 &lt;br /&gt;
; Fehlende Bestandteile der Dokumentation:&lt;br /&gt;
* Schutzbedarf des Systems sowie der verarbeiteten Daten&lt;br /&gt;
* Schützenswerte Daten und Funktionen (Assets)&lt;br /&gt;
* Betriebliche Anforderungen an die Sicherheit bzw. eingesetzte Plattform&lt;br /&gt;
* Dokumentierte Konfigurationseinstellungen &lt;br /&gt;
* BIA (RTO, RPO)&lt;br /&gt;
* Schnittstellen&lt;br /&gt;
* Trust Boundaries&lt;br /&gt;
* Akteure (bzw. Trust Level)&lt;br /&gt;
* Sicherheitsannahmen&lt;br /&gt;
* Geltende Compliance-Anforderungen (BDSG, PCI DSS, etc.)&lt;br /&gt;
&lt;br /&gt;
; Benutzermanagement&lt;br /&gt;
&lt;br /&gt;
Wenn damit das Identity Management gemeint ist, gehört das Dokumentiert, ist aber keine Sicherheitsfunktion. Oder ist hiermit das Rollen- und Berechtigungskonzept gemeint? Grenzt sich aus meiner Sicht schwer mit dem Thema Authentisierung ab. &lt;br /&gt;
&lt;br /&gt;
; Prüffragen&lt;br /&gt;
&lt;br /&gt;
Hier fehlt etwas in Bezug auf Sicherheitsanforderungen. Beispiel: &amp;quot;Werden Sicherheitsanforderungen an den Betrieb während der Entwicklung abgestimmt und dokumentiert&amp;quot;&lt;br /&gt;
&lt;br /&gt;
== M 2.WA12 Entwicklung und Erweiterung von Anwendungen (Markus) ==&lt;br /&gt;
; &amp;quot;Es sollte darauf geachtet werden, dass Sicherheitsanforderungen&lt;br /&gt;
vollständig durch Sicherheitsmechanismen erfüllt und zur Erstellung von&lt;br /&gt;
Testfällen festgehalten werden.&amp;quot; --&amp;gt; Bessere Formulierung würde aussagen, dass die Sicherheitsanforderungen durch Testfälle verifiziert werden.&lt;br /&gt;
&amp;quot;(z. B. durch Kommentare im&lt;br /&gt;
Quelltext). Somit ist der Quelltext zu einem&amp;quot; --&amp;gt; Das ist kein empfehlenswerter Programmierstiel! Raus mit diesem Kommentar&lt;br /&gt;
;&amp;quot;Zum Schutz vor dem Verlust bereits entwickelter und verworfener&lt;br /&gt;
Lösungen sowie zu Dokumentationszwecken sollte die Historie der&lt;br /&gt;
Änderungen festgehalten werden (z. B. durch ein Revisionssystem).&amp;quot; --&amp;gt; Auch diesen Absatz können wir streichen - Kein professioneller Programmierer arbeitet ohne Versionierugssystem.&lt;br /&gt;
;&amp;quot;Bei Web-Anwendung sollten die Webseiten auf Konformität zu dem&lt;br /&gt;
verwendeten Standard (z. B. HTML-Standard) getestet werden. Dadurch&lt;br /&gt;
können unvorgesehene Seiteneffekte aufgrund einer Fehlinterpretation&lt;br /&gt;
seitens der Browser vermieden werden.&amp;quot; --&amp;gt; Könnte man noch um &amp;quot;Die Software ist in möglichst vielen Browsern zu testen&amp;quot; erweitern.&lt;br /&gt;
;Generell geht der Autor leider nicht auf die Rollen &amp;amp; Rechte Verteilung ein. Mir fehlt der Hinweis, das es eine personelle Trennung zwischen Entwicklung, Test und Betrieb geben muss.&lt;br /&gt;
;Zum Thema Wartung / Betrieb --&amp;gt; Hier wird keine Aussage getroffen bezüglich Log_Files. Dieses Thema kann kritische Auswirkungen haben, Bsp.: logging ganzer HTTP-Requests im LogLevel=Debug.&lt;br /&gt;
; &amp;quot;Produktspezifische Sicherheitsfunkionalität&amp;quot; - Dieser Absatz ist gefährlich - der Angreifer ist nicht zur Verwendung dies Zielbrowsers gezwungen. Deshalb können Browser-spez. Sicherheitsfunktionen nur als Add-ON gewertet werden.&lt;br /&gt;
; &amp;quot;Festlegung der Entwicklungsumgebung&amp;quot; - Dieser Absatz geht nicht auf die zu verwendenden Testdaten ein. Der Hinweis, dass Live-Daten / Kundendaten nichts in Test- &amp;amp; Entwicklungsumgebungen zu suchen haben fehlt!!!&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== M 2.WA24 Web-Tracking (Matthias) ==&lt;br /&gt;
&lt;br /&gt;
; Letzter Absatz: &amp;quot;Falls eine Auswertung von Nutzerdaten, insbesondere personenbezogener Daten, .. &amp;quot;&lt;br /&gt;
&lt;br /&gt;
Hier sollte denke ich besser von personenbeziehbaren Daten gesprochen Werten. Dies betrifft etwa die Zuordnung von Surfverhalten zu einer bestimmten Person. Dies sollte stets nach den Prinzipien Datensparsamkeit und Datenvermeidung, Erforderlichkeit, sowie Zweckbindung erfolgen. Ist Webtracking nicht personenbeziehbar ist dies kein Thema für den Datenschutz.&lt;br /&gt;
&lt;br /&gt;
== M 4.WA04 Authentisierung bei Web- Anwendungen (Matthias) ==&lt;br /&gt;
&lt;br /&gt;
: Verantwortlich fuer Umsetzung &lt;br /&gt;
sollte in erster Linie beim Architekturen und in zweiter beim Entwickler liegen&lt;br /&gt;
; Vermischung von Authentisierung und Session Management &lt;br /&gt;
&lt;br /&gt;
Bei diesem Baustein findet eine ziemlich große Vermischung von Anforderung an die Authentisierung und das erst in &amp;quot;M 4.WA06 Session-Management bei Web- Anwendungen&amp;quot; behandelte Session Management statt (Beispiel: &amp;quot;Remember-Me-Funktion&amp;quot;). Beide Themen sollten sinnvollerweise getrennt voneinander zu betrachten und aufeinander zu beziehen.&lt;br /&gt;
&lt;br /&gt;
; Verwendung von Frameworks&lt;br /&gt;
&lt;br /&gt;
Die Anforderung ist schon ein wenig eingeschränkt. Besser passt hier denke ich die &amp;quot;Abbildung der Authentisierung über Standardkomponenten (Bibliotheken oder Frameworks)&amp;quot;. &lt;br /&gt;
&lt;br /&gt;
; Remember-Me-Funktion&lt;br /&gt;
&lt;br /&gt;
Siehe oben, gehört zum Session Management. Das ließt sich im übrigen so, als ob eine Webanwendung Credentials auf dem Client abhängt. &lt;br /&gt;
&lt;br /&gt;
; Grenzwerte für gescheiterte Anmeldeversuche&lt;br /&gt;
&lt;br /&gt;
Diese Empfehlung ist allgemein falsch, da sie sehr von der betrachteten Anwendung abhängt. Besser wäre hier allgemein von Mechanismen zur Verhinderung von automatisierten Angriffen zu sprechen (Anti-Automatisierung). &lt;br /&gt;
&lt;br /&gt;
Etwa umsetzbar durch&lt;br /&gt;
* Sperrung nach x Anmeldeversuchen&lt;br /&gt;
* Throttling&lt;br /&gt;
* Captchas&lt;br /&gt;
* Sicherheitsfragen&lt;br /&gt;
&lt;br /&gt;
Das allgemeine Sperren kann leicht für das gezielte Aussperren von Benutzern (User Lockout) verwendet werden. Was etwa bei Trading-Anwendungen nicht funktioniert.&lt;br /&gt;
&lt;br /&gt;
; Automatisiertes Zurücksetzen von Authentisierungsdaten&lt;br /&gt;
&lt;br /&gt;
Würde ich besser als &amp;quot;Passwort-Reset&amp;quot; bezeichnen.&lt;br /&gt;
&lt;br /&gt;
Weiterhin fehlt hier der Hinweis, dass statt ein automatisiertes Zurücksetzen, ein Mechanismus zu empfehlen ist, bei dem über ein hinterlegtes Sicherheitsmerkmal (Handy-Nummer oder E-Mail-Adresse) vom Benutzer zunächst eine Verifikation durchgeführt wird. Beispielsweise durch einen erhaltenen Link. Erst dann darf eine Änderung des Passwortes durch den Benutzer erfolgen.&lt;br /&gt;
&lt;br /&gt;
; Registrierung nicht behandelt&lt;br /&gt;
&lt;br /&gt;
Es existiert hier kein Punkt, der die sichere Implementierung von Benutzerregistrierungen behandelt.&lt;br /&gt;
&lt;br /&gt;
; Verweis auf Externalisierung fehlt.&lt;br /&gt;
&lt;br /&gt;
Statt die Authentisierung selbst durchzuführen kann eine Anwendung hierzu auf eine externe Komponente (Beispiel: SiteMinder oder Kerberos) zurückgreifen.&lt;br /&gt;
&lt;br /&gt;
; Verweis auf Behandlung von Credentials fehlt&lt;br /&gt;
&lt;br /&gt;
Auch wenn das  in &amp;quot;M 4.WA15 Schutz vertraulicher Daten bei Web- Anwendungen&amp;quot; ausführlich behandelt wird, sollte in diesem Baustein bereits auf den angemessenen Schutz von Authentisierungsdaten bei Übertragung und Speicherung hingewiesen werden.&lt;br /&gt;
&lt;br /&gt;
== M 4.WA05Umfassende Ein- und Ausgabevalidierung bei Web-Anwedungen (Markus) ==&lt;br /&gt;
; &amp;quot;Ablehnung der Daten im&lt;br /&gt;
Fehlerfall&amp;quot; --&amp;gt; Hier könnte man noch auf Tar-Pits eingehen - nur ein Vorschlag.&lt;br /&gt;
&lt;br /&gt;
== M 4.WA06Session-Management bei Web-Anwendungen (Markus, Matthias) ==&lt;br /&gt;
; &amp;quot;Übertragung der SessionID mittels GETRequest&amp;quot; --&amp;gt; Hier fehlt der Hinweis, dass die Lebensdauer dieser SessionIds kurz/kürzer sein muss, als im Falle der Speicherung im Cookie.&lt;br /&gt;
&lt;br /&gt;
([[User:Mrohr|Matthias]]) Die Anmerkung verstehe ich ehrlich gesagt ueberhaupt nicht, zumal das SM haeufig transparent zwischen Cookies und URL Rewriting wechselt. Wozu soll das gut sein? Wie soll das geschehen? Idealerweise sollte die Session ID niemals in die URL geschrieben werden, das sollte eigentlich genuegen.&lt;br /&gt;
&lt;br /&gt;
; &amp;quot;Verschlüsselte Übertragung von SessionIDs&amp;quot; --&amp;gt; Hier fehlt der Hinweis auf den Beast-Exploit. TLS Version &amp;gt; 1.0 verwenden!&lt;br /&gt;
&lt;br /&gt;
([[User:Mrohr|Matthias]]) Solange hier nicht auf eine explizite TLS Version eingegangen wird, sollte meiner grossen Ueberzeugung nach hier auch auf keine Exploits etc. eingagen werden, das gehoert an andere Stelle.&lt;br /&gt;
&lt;br /&gt;
; ([[User:Mrohr|Matthias]]) Weiterhin:&lt;br /&gt;
&lt;br /&gt;
 Es dürfen keine extern bekannten oder erratbaren Daten (z. B. IP-Adresse, Uhrzeit) in die Berechnung der SessionID einfließen.&lt;br /&gt;
&lt;br /&gt;
Die Aussage finde ich etwas problematisch, wichtiger ist, dass die Entropie ausreichend hoch ist. Haeufig werden etwa IPs von Load Balancern in die Session ID hineingeschrieben.&lt;br /&gt;
&lt;br /&gt;
 - Domain (z. B. webapp.domain.tld),&lt;br /&gt;
 - Path (z. B. /webapp/),&lt;br /&gt;
 - Secure und&lt;br /&gt;
 - HttpOnly.Beschränkte Sitzungsdauer&lt;br /&gt;
&lt;br /&gt;
Das sieht so aus, als ob es empfehlenswert ist, das Domain-Tag zu verwenden, das ist es sicherlich nicht. Was macht hier der Hinweis &amp;quot;Beschraenke Sizuungsdauer&amp;quot;?&lt;br /&gt;
&lt;br /&gt;
== M 4.WA07Fehlerbehandlung durch Web-Anwendungen (Markus) ==&lt;br /&gt;
; Konsistenter / Inkonsistener Zustand einer Webanwendung und der daraus resultierende Datenverlust: Hier fehlen mir die Punkte: DOS, Priv.Escalation, CodeExecution.&lt;br /&gt;
; Vermeidung vertraulicher Informationen in Fehlermeldungen --&amp;gt; Fehlermeldungen sollten ebenfalls eine Systeminformationen preisgeben (Softwareversion, Patchlevel, etc.)&lt;br /&gt;
; Abbruch des Vorgangs nach Auftreten eines Fehlers --&amp;gt; TarPits scheinen dem Autor umbekannt zu sein :)&lt;br /&gt;
; &amp;quot;Werden Fehler möglichst von der gleichen Komponente behandelt, in der&lt;br /&gt;
der Fehler aufgetreten ist?&amp;quot; --&amp;gt; Das &amp;quot;möglichst&amp;quot; sollten wir streichen.&lt;br /&gt;
&lt;br /&gt;
== M 4.WA08Schutz vor automatisierter Nutzung von Web-Anwendungen (Markus) ==&lt;br /&gt;
; &amp;quot;Brute-Force-&lt;br /&gt;
Angriffe (z. B. Erraten von Zugangsdaten) und Enumeration-Angriffe (z. B.&lt;br /&gt;
automatisiertes Ermitteln von gültigen Login-Namen)&amp;quot; -- die Beispiele sind identisch - besser Beispiele suchen, z.b. URL-Enumeration&lt;br /&gt;
&lt;br /&gt;
([[User:Mrohr|Matthias]]) Das sehe ich anders. Brute-Forcing bezieht auf Passwoerter und Enumeration auf Benutzernamen, etwa durchs hochzaehlen. Auch wenn ich zustimmen muss, dass die nicht ganz gluecklich gewaehlt wurden. Stann &amp;quot;Erraten von Zugangsdaten&amp;quot; wuerde ich besser von &amp;quot;Erraten von Passwoertern&amp;quot; sprechen. Oder wie gesagt gleich auch auf andere Beispiele (etwa Object ID Enumeration) beziehen.&lt;br /&gt;
&lt;br /&gt;
== M 4.WA11Sichere Konfiguration von Web-Anwendungen (Markus) ==&lt;br /&gt;
; &amp;quot;Sicherer Umgang mit TLS/SSL&amp;quot; -- Hier fehlt der Hinweis, dass TLS-1.0 gebrochen ist&lt;br /&gt;
; &amp;quot;Zeichenkodierungskonfiguration&amp;quot; -- Ein Whitelisting abhängig von der Encodierung wäre ein weiterer Vorschlag&lt;br /&gt;
; &amp;quot;Restriktive Dateisystemberechtigungen&amp;quot; -- auch wenn es ein klassiker ist - der AS sollte ebenfalls mit von einem eingeschränkten Nutzer gestartet werden und nicht als root&lt;br /&gt;
; Administration Consolen:zur Ergänzen: Wenn diese nicht benötigit, sollten derartige Applikationen nicht deployed werden, unabhängig von möglichen Zugangsbeschränkungen.&lt;br /&gt;
&lt;br /&gt;
([[User:Mrohr|Matthias]]) Sorry, meiner Meinung nach hat die Bewertung von Kryptoverfahren hier abslut nichts zu suchen.Stattdessen sollte hier auf den entsprechenden [https://www.bsi.bund.de/ContentBSI/Publikationen/TechnischeRichtlinien/tr02102/index_htm.html Empfehlung des BSI] verwiesen werden, auch wenn dieses Dokument derzeit noch etwas outdated zu sein scheint.&lt;br /&gt;
&lt;br /&gt;
== M 4.WA13Kontrolliertes Einbinden von Daten und Inhalten bei Web-Anwendungen (Markus) ==&lt;br /&gt;
; Datei-Upload: Bei einem Upload werden Dateien durchaus in TEMP-Verzeichnissen gesammelt und danach weiterverarbeitet. Diese TEMP-Verzeichnisse sind im Rahmen einer Sicherheitsanalyse zu betrachten -&amp;gt; Möglicher (unbefugter) Zugriff auf weitere Uploads&lt;br /&gt;
; Upload komprimierter Dateien / großer Dateien birgt die Gefahr von DOS Angriffen&lt;br /&gt;
; Upload von Dateien kann bei weiterem Parsing zu Speicherengpässen führen --&amp;gt; DOS-Angriffe auf Thread-Local etc.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== M 4.WA14Restriktive Herausgabe sicherheitsrelevanter Informationen bei Web-Anwendungen (Markus, Matthias) ==&lt;br /&gt;
OK - Keine Anmerkungen von mir.&lt;br /&gt;
&lt;br /&gt;
([[User:Mrohr|Matthias]]) Von mir schon;)&lt;br /&gt;
&lt;br /&gt;
; ([[User:Mrohr|Matthias]]) Vermeidung von Kommentaren in ausgelieferten Webseiten&lt;br /&gt;
&lt;br /&gt;
Das ist leider total falsch, wir brauchen haeufig Komentare, aus Kompatibilitaetsgruenden. So wird etwa der JavaScript-Block haeufig auskommentiert.&lt;br /&gt;
&lt;br /&gt;
Wurde stattessen besser von sicherheitsrelevanten Kommentaren sprechen und als Massnahme generell Entwicklerkommentare ueber Sprachkonstruktre (etwa JSP) durchzufuehren.&lt;br /&gt;
&lt;br /&gt;
; ([[User:Mrohr|Matthias]]) Löschen nicht benötigter Dateien&lt;br /&gt;
&lt;br /&gt;
Hier wurde ich ggf. Dateien von Versionisierungstools (etwa Subversion) erwaehnen, das sehen wir schon recht haeufig.&lt;br /&gt;
&lt;br /&gt;
Statt Dateien einfach nur zu loeschen (was in der Praxis haeufig nicht so einfach ist) bietet es sich zudem an, den Zugriff auf bestimmte Dateien oder Dateitypen generell zu sperren, etwa mittels ACL im Apache.&lt;br /&gt;
&lt;br /&gt;
; ([[User:Mrohr|Matthias]]) Gibt die Web-Anwendung ausschließlich neutrale Fehlermeldungen aus und sind diese im Quelltext identisch? {E: C}&lt;br /&gt;
&lt;br /&gt;
Persoenlich verstehe ich das nicht. Wieseo neutrale Fehlermeldung? Das macht fuer mich nur beim Login Sin. Hierzu existiert in dem Text auch keinerlei Bezug. Ich wuerde das daher besser entfernen und im Rahmen der Fehlerbehandlung diskutieren. Mindestens sollte hier jedoch besser von &amp;quot;sicherheitsunbedentlichen Fehlermeldungen&amp;quot; oder so gesprochen werden.&lt;br /&gt;
&lt;br /&gt;
; ([[User:Mrohr|Matthias]]) Wird der Referrer bei Verlassen der Web-Anwendung (z. B. durch einen Link auf eine externe Seite) gefiltert?&lt;br /&gt;
&lt;br /&gt;
Diesen Punkt sehe ich als sehr Fallabhengig an. Es kann fuer seiten durchaus wuenschenswert sein, dass der Referer weitergegeben wird. Der Referer sollte natuerlich keine sensiblen Informationen enthalten, was ja an anderer Stelle (etwa Session Management) vorgegeben wird bzw. gegeben werden sollte.&lt;br /&gt;
&lt;br /&gt;
== M 4.WA15Schutz vertraulicher Daten bei Web-Anwendungen (Markus, Matthias) ==&lt;br /&gt;
; Sichere kryptographische Algorithmen:&lt;br /&gt;
 Hier fehlt mir eine Liste der aktuelle als sicher geltenden Verfahren.&lt;br /&gt;
([[User:Mrohr|Matthias]]) Am Besten Referenz auf [https://www.bsi.bund.de/ContentBSI/Publikationen/TechnischeRichtlinien/tr02102/index_htm.html https://www.bsi.bund.de/ContentBSI/Publikationen/TechnischeRichtlinien/tr02102/index_htm.html]&lt;br /&gt;
&lt;br /&gt;
; Schlüssel&lt;br /&gt;
 Das die Schlüssel bestimmten Formaten entsprechen müssen ist ok - aber das Schlüsselmanagement wird gar nicht besprochen?&lt;br /&gt;
; Schutz der Daten im Browsercache&lt;br /&gt;
 Skripte und Browserplugins können ebenfalls auf den Browsercache zugreifen - diese werden hier nicht erwähnt.&lt;br /&gt;
&lt;br /&gt;
([[User:Mrohr|Matthias]]) Weiterhin entsprechen die vorgeschlagenen HTTP Headern nicht dem Best Practice:&lt;br /&gt;
&lt;br /&gt;
 Cache-control: no-cache, no-store&lt;br /&gt;
 Pragma: no-cache&lt;br /&gt;
 Expires: -1&lt;br /&gt;
&lt;br /&gt;
([[User:Mrohr|Matthias]]) Die Empfehlung hinsichtlich des manuellen Leerens des Browsercaches sollte wenn dann nur bei Anwendungen mit sehr hohem Schutzbedarf in Erwaegung gezogen werden. Wichtiger waere da schon eher die richtigen Cache-Header zu verwenden. Solche Empfehlungen ihm Rahmen des Grundschutzes aber wirklich nichts zu suchen. &lt;br /&gt;
&lt;br /&gt;
; Maskierung von Passwörtern &lt;br /&gt;
 Dies schützt bei der Eingabe nur vor ShoulderSurfing nicht vor Skripten oder Plugins die diese an andere Server posten.&lt;br /&gt;
&lt;br /&gt;
([[User:Mrohr|Matthias]]) Das ist voellig korrekt. Aber inwieweit ist die Aussage Passwort-Felder zu verwenden fehlerhaft bzw. hier unzureichend beschrieben?&lt;br /&gt;
&lt;br /&gt;
; Sicherung von Zugangsdaten:&lt;br /&gt;
 Zugangsdaten in einer Datei abzulegen - wenn auch ausserhalb des WebRoots ist keine gute Idee.&lt;br /&gt;
([[User:Mrohr|Matthias]]) Es ist sicher nicht die schoenste Variante, es laesst sich aber nunmal in vielen Faellen nicht vermeiden. Deshalb fordert der [http://code.google.com/p/owasp-asvs/wiki/Verification_V2 ASVS] hier etwa auch nicht mehr. Fuer den hier angestreben Grundschutz sollte das meiner Meinung nach ausreichen.&lt;br /&gt;
; Schutz von Quelltexten:&lt;br /&gt;
 Hier würde ich property files mit aufnehmen. der hinweis auf web-inf/classes fehlt - warum?&lt;br /&gt;
 Bei include-befehlen sind die pfadangaben zu überdenken.&lt;br /&gt;
([[User:Mrohr|Matthias]]) Wuerde property Dateien allgemein den Konfigurationsdateien zuordnen. Der Begriff &amp;quot;Einzubindende Dateien&amp;quot; ist mir allrdings Neu&lt;br /&gt;
&lt;br /&gt;
([[User:Mrohr|Matthias]]) Weiterhin, fehlt ein genereller Bezug auf HTML 5 WebStorage, LSOs etc. Zumindest in abstrakter Form, so dass diese dadurch indirekt addresiert werden. Egal, in dem relevanten Punkt will der Autor meiner Meinung nach nur einige Beispiele nennen, das sollte keinen Anspruch auf Vollsteandigkeit haben muessen.&lt;br /&gt;
&lt;br /&gt;
; ([[User:Mrohr|Matthias]]) - Durch dieses Attribut wird die Gültigkeit des Cookies auf die Domäne der Web-Anwendung beschränkt.&lt;br /&gt;
Nein, das ist leider total falsch. Das Domain-Attribut stellt eine Aufweichung der Cookie-Gueltigkeit dar und nicht anders herum. Gewoehlich sind Cookies immer Host-Cockies und das sollte auch so bleiben. Die Empfehlung sollte entfernt werden.&lt;br /&gt;
&lt;br /&gt;
== M 4.WA16Zugriffskontrolle bei Web-Anwendungen (Markus) ==&lt;br /&gt;
; Zugriffskontrolle via Frameworks:&lt;br /&gt;
 Dieser Punkt (Frameworks) wird nur in einem Satz erwähnt. Es werden keine Bespiele gegeben - Das ist zu wenig.&lt;br /&gt;
 Es müssen alle Zugriffe geschützt werden. Eine Protokollierung aller Zugriffe mit den nötigen Informationen ist ebenfalls empfehlenswert.&lt;br /&gt;
; Datei Upload:&lt;br /&gt;
 Die Gefahr eines DOS wird hier nicht erwähnt.&lt;br /&gt;
&lt;br /&gt;
== M 4.WA19Verhinderung von Cross-Site Request Forgery (CSRF, XSRF) (Markus, Matthias) ==&lt;br /&gt;
; Verantwortliche: &lt;br /&gt;
 Entwickler und Admins!&lt;br /&gt;
([[User:Mrohr|Matthias]]) Korrekt, wobei auch in der Reihenfolge&lt;br /&gt;
&lt;br /&gt;
; Anti-CSRF-Token in hidden fields:&lt;br /&gt;
 Das ist keine gute Idee. Ich würde das streichen!&lt;br /&gt;
&lt;br /&gt;
([[User:Mrohr|Matthias]]) Watt? Anti-CSRF-Tokens in Hidden Fields sind die Standard-Massnahme. Wie denn sonst? Bitte nicht streichen!!! &lt;br /&gt;
&lt;br /&gt;
([[User:Mrohr|Matthias]]) Die Technik bei der die Session ID als Anti-CSRF-Token verwendet wird, wird als Double-Cookie Submit bezeichnet, das sollte hier referenziert werden.&lt;br /&gt;
&lt;br /&gt;
; Umgehung von Schutzmechanismen:&lt;br /&gt;
 Man in the middle hat keinen direkten Bezug zu CSRF! Das würde ich streichen.&lt;br /&gt;
([[User:Mrohr|Matthias]]) Der Hinweis ist korrekt. Wovon der Autor hier spricht ist Session Replay nicht CSRF.&lt;br /&gt;
&lt;br /&gt;
; Frameworks:&lt;br /&gt;
 Gute Idee - aber es gibt auch Features in den ApplicationServern die CSRF unterbinden - warum wird das nicht besprochen?&lt;br /&gt;
&lt;br /&gt;
([[User:Mrohr|Matthias]]) Sehe ich persoenlich nicht so, da CSRF primaer ein Applikations-Fehler ist, und auch in der Applikation und nicht im Environment (AppServer) geloest werden sollte. Auch wenn das manchmal ggf. die einzig machbare Loesung darstellt.&lt;br /&gt;
&lt;br /&gt;
([[User:Mrohr|Matthias]]) Was generell fehlt, ist ein Hinweis darauf, dass schreibende Requests generell per HTTP Post abgewickelt werden sollten, da HTTP Get keine &amp;quot;Safe Method&amp;quot;  (siehe HTTP 1.1, RFC 2616) ist.&lt;br /&gt;
&lt;br /&gt;
== M 4.WA20Sicherer Entwurf der Logik von Web-Anwendungen (Markus, Matthias) ==&lt;br /&gt;
; Rollbacks:&lt;br /&gt;
 Tritt ein Fehler auf muss die Applikation einen konsistenten Datenstand zurück lassen. Das wird hier nicht erwähnt.&lt;br /&gt;
; RaceConditions:&lt;br /&gt;
 Fehler in der Geschäftslogik können auch durch zwei gleichzeitige Sessions auf einer Webapplikation auftreten - das wird hier nicht besprochen.&lt;br /&gt;
&lt;br /&gt;
([[User:Mrohr|Matthias]]) Ehrlich gesagt kann ich nicht ganz nachvollziehen, was der Sichere Entwurf der Logik von Web-Anwendungen mit dem Verzicht auf aktive Inhalte zu tun hat. Unabhaengig davon sollte man solche unsinnigen Aussagen im Jahre 2012 nicht mehr treffen, damit macht man sicht nur laecherlich.&lt;br /&gt;
&lt;br /&gt;
Nichts desto trotz, was hier als &amp;quot;echte&amp;quot; Massnahmen erwaehnt werden sollte sind:&lt;br /&gt;
* Verhinderung von Race Conditions, aber nicht nur durch Concurrent Sessions sondern auch durch Singletons (TOCTOU)&lt;br /&gt;
* Enforcements von Workflows, etwa durch die Verwendung von State Machines oder Request Tokens (auch bekannt als Site Usage Enforcement)&lt;br /&gt;
* Fail Securely (bzw. Verweis)&lt;br /&gt;
* Serverseitige Abbildung der Anwendungslogik, zumindest wenn diese sicherheitsrelevant sit&lt;br /&gt;
&lt;br /&gt;
== M 4.WA22Verhinderung der Blockade von Ressourcen (DoS) bei Web-Anwendungen (Markus, Matthias) ==&lt;br /&gt;
; Datenspeicher:&lt;br /&gt;
 Neben dem Datenspeicher sollte auch der RAM-Verbrauch pro Thread der Applikation limitiert werden.&lt;br /&gt;
([[User:Mrohr|Matthias]]) Stimmt, ich wuerde hier sogar allgemein von Ressourcenverbrauch am Beispiel RAM und Datenspeicher, sprechen&lt;br /&gt;
&lt;br /&gt;
; Voraggregation von Daten / Caching&lt;br /&gt;
 Dieser Punkt fehlt: Stark ressourcen belastende Anfragen können auch in Lastarmen Zeiten vorberechnet werden.&lt;br /&gt;
([[User:Mrohr|Matthias]]) Stimmt, koennte noch als Anmerkung bei &amp;quot;Cachen von Anfragen&amp;quot; hinzugefuegt werden&lt;br /&gt;
&lt;br /&gt;
([[User:Mrohr|Matthias]]) Noch drei Anmerkugnen&lt;br /&gt;
&lt;br /&gt;
; ([[User:Mrohr|Matthias]]) Prueffrage: &amp;quot;Wird ein möglicher Überlauf von Protokolldaten... verhindert&amp;quot;&lt;br /&gt;
&lt;br /&gt;
Ist eine etwas eingeschrankte Sicht. Wurde hier eher von Ueberlauf von Speicherplaz zu Beispiel im Rahmen der Protokollierung sprechen&lt;br /&gt;
&lt;br /&gt;
; ([[User:Mrohr|Matthias]]) Durchfuehrung von Lasttests zur Identifikation ressourcenintensiver Operationen&lt;br /&gt;
&lt;br /&gt;
Der Hinweis waere ggf. erwahnenswert&lt;br /&gt;
&lt;br /&gt;
; ([[User:Mrohr|Matthias]]) Hinweis auf nicht-angemeldeten Bereich&lt;br /&gt;
&lt;br /&gt;
Das Risiko durch rechenintensive Operationen durch einen DoS betroffen zu sein ist natuerlich fuer gewoehlich um so groesser, wenn diese im anonymen Bereich angeboten wird. Der Hinweis ware ggf. ebenfalls hilfreich.&lt;br /&gt;
&lt;br /&gt;
== M 4.WA25Verhinderung von Clickjacking (Markus) ==&lt;br /&gt;
Ok - das passt soweit.&lt;br /&gt;
&lt;br /&gt;
([[User:Mrohr|Matthias]]) Stimmt, auch wenn ich &amp;quot;Angreifer&amp;quot; in dem Beispiel eher als &amp;quot;Webseitenbetreiber&amp;quot; beschreiebn wuerde, da er nicht wirklich aktiv einen Angriff durchfuehrt, oder? Bitte nochmal ueber meinen Hinweis aus G 5.WA18 nachdenken: Ist Clickjacking-Schutz tatsaechlich Grundschutz? Ich bin mir da selber nicht so wirklich sicher.&lt;br /&gt;
&lt;br /&gt;
== M 5.WA21Sichere Anbindung von Hintergrundsystemen an Web-Anwendungen (Markus) ==&lt;br /&gt;
; Verantwortliche:&lt;br /&gt;
 Architekten fehlen. Entwickler müssen die Views umsetzen und die Datasource entsprechend einbinden - die fehlen hier ebenfalls.&lt;br /&gt;
; DirectorySystem Beispiel:&lt;br /&gt;
 Das DirectorySystem wird in dem angegeben Beispiel zum Single Point of Failure - das wird verschwiegen.&lt;br /&gt;
; Firewalls:&lt;br /&gt;
 Das sind fachlich-blinde Systeme. Was ist mit WAFs / IDS / IPS etc.?&lt;br /&gt;
([[User:Mrohr|Matthias]]) Stimmt, das hat in diesem Baustein nichts zu suchen&lt;br /&gt;
&lt;br /&gt;
([[User:Mrohr|Matthias]]) Noch ein weiterer Punkt von mir&lt;br /&gt;
&lt;br /&gt;
; Typische Hintergrundsysteme&lt;br /&gt;
Hier fehlt irgendwie &amp;quot;Middleware&amp;quot;, die ist denke ich nicht immer Legacy&lt;br /&gt;
&lt;br /&gt;
== M 5.WA23Systemarchitektur einer Web-Anwendung (Markus) ==&lt;br /&gt;
; Verantwortliche:&lt;br /&gt;
Auch hier fehlend wieder die Architekten. &lt;br /&gt;
; Virtualisierung:&lt;br /&gt;
Virtualisierung bietet weitere Angriffsvektoren (z.B.: Hypervisor) die eine &amp;quot;Blech&amp;quot;Farm nicht bietet.&lt;/div&gt;</summary>
		<author><name>Mrohr</name></author>	</entry>

	<entry>
		<id>https://wiki.owasp.org/index.php?title=Talk:OWASP_Review_BSI_IT-Grundschutz_Baustein_Webanwendungen&amp;diff=130185</id>
		<title>Talk:OWASP Review BSI IT-Grundschutz Baustein Webanwendungen</title>
		<link rel="alternate" type="text/html" href="https://wiki.owasp.org/index.php?title=Talk:OWASP_Review_BSI_IT-Grundschutz_Baustein_Webanwendungen&amp;diff=130185"/>
				<updated>2012-05-21T13:22:34Z</updated>
		
		<summary type="html">&lt;p&gt;Mrohr: /* M 4.WA14Restriktive Herausgabe sicherheitsrelevanter Informationen bei Web-Anwendungen (Markus, Matthias) */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Since it's about a review of a document in German, all the discussions will be done in German :-)&lt;br /&gt;
&lt;br /&gt;
Diskussionen rund um den Review des &amp;quot;IT-Grundschutzbausteins Webanwendungen&amp;quot; finden hier statt, sinnvollerweise auf Deutsch :-)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Vorschlag für Kriterien, die an unser Review angelegt werden sollten (.kai) ==&lt;br /&gt;
&lt;br /&gt;
* Der Baustein soll alle wichtigen Themen der Entwicklung sicherer&lt;br /&gt;
Webanwendungen enthalten.&lt;br /&gt;
&lt;br /&gt;
* Der Baustein soll die verschiedenen Phasen der Software-Entwicklung&lt;br /&gt;
vollständig abdecken.&lt;br /&gt;
&lt;br /&gt;
* Der Baustein soll zwischen verbindlichen, prüfbaren Vorgaben und&lt;br /&gt;
unverbindlichen Empfehlungen sprachlich sauber unterscheiden (hier&lt;br /&gt;
spielt mein Auditorenblick eine Rolle). Vor allem soll der Baustein&lt;br /&gt;
verbindliche Anforderungen auch tatsächlich stellen. Alle&lt;br /&gt;
verbindlichen Anforderungen müssen unabhängig von der jeweiligen&lt;br /&gt;
Umgebung auch umsetzbar sein, d.h. sie müssen entsprechend generisch&lt;br /&gt;
sein.&lt;br /&gt;
&lt;br /&gt;
* Die Maßnahmen sollen nur in (begründbaren) Ausnahmen zu Empfehlungen&lt;br /&gt;
von OWASP im Widerspruch stehen.&lt;br /&gt;
&lt;br /&gt;
* Die Maßnahmen sollen verständlich und anwendbar sein.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== &amp;quot;Hilfsmittel&amp;quot; (Markus) ==&lt;br /&gt;
Ich würde das Script zur Vermeidung von Clickjacking wrappen und nicht als losen Skript-block in den Text einbinden - einfach schlechter Programmierstiel diese losen Blöcke.&lt;br /&gt;
Der Zugriff auf das Body-Element mit byTagName-Array[0] ist auch nicht wirklich gut. Ich halte Zugriffe über das DOM (klassisch), bei ID bzw. XPATH für besser. &lt;br /&gt;
&lt;br /&gt;
SQL-Injection Characters:&lt;br /&gt;
die Pipe fehlt hier zur Textkonatenierung&lt;br /&gt;
+ / - haben auch eine Bedeutung bei JOINs.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== &amp;quot;Goldene Regeln&amp;quot; (Matthias) ==&lt;br /&gt;
&lt;br /&gt;
Hier meine Anmerkungen zu diesem Dokument:&lt;br /&gt;
&lt;br /&gt;
; 1. Für mich fehlende Punkte&lt;br /&gt;
* Korrektur der Ursache (Root Cause) von Schwachstellen statt  Verhinderung deren Ausnutzung&lt;br /&gt;
* Bezug auf Minimierung der Angriffsfläche und Least-Privilege-Prinzip&lt;br /&gt;
* Bezug auf Defense-in-Depth-Prinzip&lt;br /&gt;
* Verwendung von getesteten Security APIs (z.B. OWASP ESAPI) statt selbstentwickelter Funktionen&lt;br /&gt;
* Bezug auf Externalisierung von Sicherheitsfunktionen, sowie deklerative vor programmatischer Sicherheit.&lt;br /&gt;
&lt;br /&gt;
; 2. Begriff &amp;quot;Web-Anwendung&amp;quot;&lt;br /&gt;
Würde ich generell durch &amp;quot;Webanwendung&amp;quot; ersetzen.&lt;br /&gt;
&lt;br /&gt;
; 3. Einleitung (&amp;quot;Web-Anwendungen stellen Funktionalität zur Verfügung, ...&amp;quot;)&lt;br /&gt;
&lt;br /&gt;
Wozu dient dieser Satz?&lt;br /&gt;
&lt;br /&gt;
; 4. &amp;quot;Die Architektur der Web-Anwendung ist im Sicherheitskonzept zu  dokumentieren.....&amp;quot; &lt;br /&gt;
&lt;br /&gt;
Ich fände es sinnvoller, wenn hier von der &amp;quot;Sicherheitsarchitektur&amp;quot; gesprochen wird, welche etwa neben den sicherheitsrelevanten Datenflüssen, sensible Komponenten, Entry Points, Akteure architekturelle Security Controls wie Authentisierung, Kryptographie und natürlich die Trust Boundaries beinhaltet.&lt;br /&gt;
&lt;br /&gt;
; 5. &amp;quot;Bei Web-Anwendungen handelt es sich häufig um spezielle Eigenentwicklungen....&amp;quot;&lt;br /&gt;
&lt;br /&gt;
Erstens würde ich hier den geläufigen Begriff &amp;quot;Individualsoftware&amp;quot; verwenden. Zweitens würde ich statt bestimmte SDLC-Phasen vorzugeben (die Begriffe &amp;quot;Softwareverteilung&amp;quot; und &amp;quot;Integration&amp;quot; sind mir bei Webanwendungen bisher noch nicht so häufig untergekommen), besser von der Notwendigkeit sprechen, Sicherheit in allen Entwicklungsphasen zu berücksichtigen, also eines SDLs.&lt;br /&gt;
&lt;br /&gt;
; 6. &amp;quot;Alle Ein- und Ausgaben der Web-Anwendung müssen in eine normalisierte Form überführt werden....&amp;quot;&lt;br /&gt;
&lt;br /&gt;
Normalisierung ist für mich nicht gleich Kanonsierung, auch wenn beide Begriffe häufig als synonym verwendet werden.  Der Unterschied wird in der [http://owasp-esapi-java.googlecode.com/svn/trunk_doc/2.0-rc4/org/owasp/esapi/Encoder.html API-Beschreibung der ESAPI] erklärt. Die Normalisierungs-Funktion ist allerdings schon vor einiger Zeit aus der ESAPI [https://lists.owasp.org/pipermail/esapi-dev/2010-January/000266.html rausgeflogen]. Die generelle Kanonisierung von Ausgaben halte ich dazu für nicht sinnvoll.&lt;br /&gt;
&lt;br /&gt;
Zweitens, finde ich den weiteren Text zwar grundsätzlich formal korrekt, aber so allgemein, dass dieser glaube ich niemandem so richtig etwas bringt.  &lt;br /&gt;
&lt;br /&gt;
Besser fände ich hier Ein- von Ausgabevalidierung grundsätzlich voneinander abzugrenzen. Etwa was ich per Eingabevalidierung (Längenprüfung, Casting, etc. per Whitelisting) und was mit Ausgebavalidierung (Enkodierung, Escaping, Parametrisierung) machen muss und kann.&lt;br /&gt;
&lt;br /&gt;
Eingabedaten können technisch zudem auch Werte eingelesener Property-Dateien sein. Muss ich die auch validieren? Ist das dann noch Grundschutz? &lt;br /&gt;
&lt;br /&gt;
; 7. &amp;quot;Für den Zugriff auf sensitive Funktionen oder Informationen muss die Web-Anwendung eine wirksame Authentisierung und Sitzungsverwaltung unterstützen. Die Eigenschaften der Sitzungs-ID müssen so gewählt werden, dass die Sitzung ausreichend geschützt ist. ....&amp;quot;&lt;br /&gt;
&lt;br /&gt;
Besser fände ich &amp;quot;eine Authentisierung, die über eine dem Schutzbedarf der Anwendung angemessene Stärke verfügt.&amp;quot; &lt;br /&gt;
&lt;br /&gt;
Eigentlich geht es doch mehr um den Schutz der Sitzungs-ID, da diese gewöhnlich im Verlauf einer Sitzung den Client authentisiert. Oder den Schutz des Zugriffs auf eine Sitzung. &lt;br /&gt;
&lt;br /&gt;
Zudem fehlt hier meiner Meinung nach der Hinweis auf die bevorzugte Verwendung getesteter Standardkomponenten.&lt;br /&gt;
&lt;br /&gt;
; 8. &amp;quot;Die Web-Anwendung sollte die zu übermittelnden Daten schützen.&amp;quot;&lt;br /&gt;
&lt;br /&gt;
Dies würde ich nur auf sensible Daten beziehen. Zusätzlich zu HTTPS würde ich hier schreiben, dass sensible Daten generell nicht in der URL übertragen werden dürfen.&lt;br /&gt;
&lt;br /&gt;
; 9. &amp;quot;Die Preisgabe interner Informationen (z.B. Kommentare, Fehlermeldungen)&amp;quot;&lt;br /&gt;
&lt;br /&gt;
Hier würde ich eher schreiben &amp;quot;(IN Kommentaren, Fehlermeldungen, HTTP Headern, etc.)&amp;quot;&lt;br /&gt;
&lt;br /&gt;
; 10. &amp;quot;Fehler müssen so behandelt werden, ... müssen Fehler bei der Autorisierung zu einer Verweigerung beim Zugriff auf die angeforderte Ressource führen.&amp;quot;&lt;br /&gt;
&lt;br /&gt;
Sprachlich: &amp;quot;Die Webanwendung muss sich stets in einem sicheren Zustand befinden. Beispielsweise müssen Fehler bei der Autorisierung zu einer Verweigerung des Zugriffs führen (Default-Deny-Strategie).&amp;quot;&lt;br /&gt;
&lt;br /&gt;
; 11. &amp;quot;Die Logging-Funktionen der Web-Anwendung müssen aufgetretene Ereignisse derart protokollieren, dass sicherheitskritische Vorfälle nachvollzogen werden können.&amp;quot;&lt;br /&gt;
&lt;br /&gt;
Hier würde hier eher von &amp;quot;allen sicherheitsrelevanten Ereignissen&amp;quot; sprechen.&lt;br /&gt;
&lt;br /&gt;
Weiterhin sollten insbesondere beim Logging der Datenschutz berücksichtigt werden, personenbezogene Daten also nach Möglichkeit nicht oder nur anonymisiert in technischen Logdateien protokolliert werden.&lt;br /&gt;
&lt;br /&gt;
; 12. &amp;quot;Alle Sicherheitsmechanismen (z.B. Authentisierung und Zugriffskontrolle) sind serverseitig zu implementieren und können nicht durch clientseitige Mechanismen ersetzt werden.&amp;quot;&lt;br /&gt;
&lt;br /&gt;
Die Aussage ist so nicht korrekt. Darüber hatten wir bereits bei der ASVS mehrfach diskutiert. &lt;br /&gt;
&lt;br /&gt;
Überall dort wo der Client angegriffen wird, also etwa bei RIAs (Stichwort DOM-Based XSS) müssen wir Security Controls clientseitig implementieren. Es gibt mittlerweile deshalb auch eine Portierung der ESAPI auf Javascript. Überall dort wo der Server oder Hintegrundsysteme angegriffen werden, ist die Aussage aber natürlich zutreffend.&lt;br /&gt;
&lt;br /&gt;
== &amp;quot;Gefährdungen&amp;quot; (Markus, Dennis, .... &amp;lt;Dein Name&amp;gt;) ==&lt;br /&gt;
; Generell:&lt;br /&gt;
Reference auf RFCs fehlen.&lt;br /&gt;
&lt;br /&gt;
==B.5.XX Web-Anwendungen ==&lt;br /&gt;
; 1. Erster Absatz - Letzter Satz: --Wieso werden hier nur HTML/XML Doks und Oberflächen angesprochen? Was ist der Unterschied zwischen einem HTML-Dok und einer Oberfläche? Was ist mit  Flash, etc.? Was ist mit WebSockets?&lt;br /&gt;
; 2. Stichpunkt &amp;quot;Protokollierung&amp;quot;: Sicherheits relevant ist ein sehr dehnbarer Begriff - Eine bessere Formulierung könnte sein: Zur Rekonstruktion von Nutzerhandlungen nötige Ereignisse (positve &amp;amp; negative) müssen protokolliert werden . . . &lt;br /&gt;
; 3. Absatz: &amp;quot;Abgrenzung des Bausteins&amp;quot;: &amp;quot;Die spez. Sicherheitsanforderungen an Web-Services werden in diesem Baustein nicht betrachtet&amp;quot; --&amp;gt; Wie so nicht? Was ist das Backend von einer Rest / AJAX-basierenden Webanwendung denn anderes als ein Web-Service? Diesen Satz würde ich entfernen.&lt;br /&gt;
; 4.Vorsätzliche Handlungen -&amp;gt; Web-Spoofing (G.5.87) -- Missverständliche Bezeichnung / Nomenklatur&lt;br /&gt;
; 5. Seite 4 : erste Zeile &amp;quot;Umsetzung&amp;quot;: &amp;quot;dafür umzusetztende Komponenten müssen die Webanwendung schützen...&amp;quot; - Hier fehlt mir der Hinweis, dass dieser Schutz verifiziert werden muss.&lt;br /&gt;
; 6 Seite 5: &amp;quot;Umsetzung&amp;quot; - Wir haben CSRF, D(D)os und SQL-Injection aber wo ist XSS?&lt;br /&gt;
; 7 Seite 7: &amp;quot;Die Sicherheitsfunktion wird ausschließlich clientseitig...&amp;quot; --&amp;gt; Warum muss der Angreifer überhaupt einen Browser umkonfigurieren? Was ist mit Proxies, Scripts, etc.? Ich würde das reduzieren darauf, dass rein Webbrowser-basierende Schutzfunktionen einfach umgangen werden können.&lt;br /&gt;
; 8 Seite 8: Die angesprochenen Punkte hinterlassen den Eindruck nicht vollständig zu sein: Mir fehlen Punkte wie &amp;quot;Outsourcing&amp;quot;, &amp;quot;KnowHow der Entwickler&amp;quot;, Tooling, Framework-Auswahl, etc.&lt;br /&gt;
; 9 Seite 9: Eigentlich möchte der Autor hier über Datenschutz sprechen. Abgesehen von den letzten drei Zeilen geht es aber nur um &amp;quot;User tracking&amp;quot; - Wo ist der Rest der Datenschutzproblematik? Warum der Fokuss auf Tracking? Mir ist das zu einseitig.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
tbd.&lt;br /&gt;
&lt;br /&gt;
; Wortwahl:&lt;br /&gt;
Ich stosse innerhalb der Texte immer wieder an die Worten '''Hintergrundsystem''' und '''Sicherheitskontext'''.&lt;br /&gt;
'''Hintergrundsystem:''' besseres Synonym?&lt;br /&gt;
'''Sicherheitskontext:''' nur weil es in den Texten um Sicherheit geht muss nicht an jeder Stelle immer wieder das Wort _Sicherheits_kontext eingebaut werden.&lt;br /&gt;
Bsp: &amp;quot;Erlangt ein Angreifer Kenntnis von einer solchen gültigen, aber nicht mehr genutzten SessionID, so kann er die Web-Anwendung im Sicherheitskontext des nicht abgemeldeten Benutzers weiter verwenden.&amp;quot; (G 5,WA12 Unzureichendes Session-Management von Web-Anwendungen)&lt;br /&gt;
Verbesserungsansansatz: ... so kann er die Web-Anwendung anstelle des eigentlichen Besitzers weiterhin verwenden.&lt;br /&gt;
&lt;br /&gt;
== &amp;quot;G 2.WA01 Mangelhafte Auswahl oder Konzeption von Web-Anwendungen&amp;quot; (Matthias) ==&lt;br /&gt;
&lt;br /&gt;
Nachdem ich mir diese Gefährdung durchgelesen hatte, fehlten mir ehrlich gesagt etwas die Worte. Nicht nur, dass hier fast jeder zweite Satz entweder falsch ist bzw. massive Fehler enthält oder ich diesen schlicht nicht verstehe, ist der ganze Text sprachlich wirklich enorm verbesserungsfähig. &lt;br /&gt;
&lt;br /&gt;
Na gut, ich konzentriere mich mal auf die fachlichen Punkte:&lt;br /&gt;
&lt;br /&gt;
; 1. Security Controls&lt;br /&gt;
Werden mal mit &amp;quot;Schutzmechanismen&amp;quot;, mal mit &amp;quot;Sicherheitskomponenten&amp;quot; und dann wieder als &amp;quot;Sicherheitsfunktionen&amp;quot; bezeichnet. Hier macht eine einheitliche Benennung sicherlich Sinn und ist weniger verwirrend.&lt;br /&gt;
&lt;br /&gt;
; 2. &amp;quot;Eine Web-Anwendung ist in der Regel ein verteiltes, komplexes System bestehend aus unterschiedlichen Komponenten (z. B. Webserver, Applikationsserver, Hintergrundsysteme)&amp;quot;&lt;br /&gt;
&lt;br /&gt;
Eine Webanwendung besteht sicher nicht aus einem Webserver- oder anderer infrastruktureller Komponenten, sondern ist Software welches diese nutzt.&lt;br /&gt;
&lt;br /&gt;
; 3. &amp;quot;Bei individuell entwickelten Web-Anwendungen sind im Allgemeinen die Frameworks, Komponenten und Schnittstellen im Rahmen der Konzeption auszuwählen und deren Einbindung und Absicherung zu betrachten....Im Gegensatz dazu ist bei der Konzeption von Web-Anwendungen auf Basis von Standardsoftware insbesondere auf die Auswahl der Software und die Konfiguration der Teilkomponenten zu achten&amp;quot;&lt;br /&gt;
&lt;br /&gt;
Wir unterscheiden im Rahmen von Webanwendungen eigentlich Free or Opensource Software (FOSS bzw. FLOSS), Standardsoftware und Individualsoftware voneinander. Wir unterscheiden nicht Frameworks von Standardsoftware. Frameworks können Teil von Standardsoftware sein, wie etwa bei SharePoint, SAP, etc, oder aber FOSS, wie etwa Spring. Die ganzen Absätze machen für mich daher keinen Sinn.&lt;br /&gt;
&lt;br /&gt;
; 4. &amp;quot;Eine Sicherheitsfunktion (z. B. Authentisierung, Autorisierung) wird nicht an einer Stelle umgesetzt und verwendet, sondern ist mehrfach in der Web- Anwendung realisiert. Wird diese Sicherheitsfunktion an den verschiedenen Stellen unterschiedlich umgesetzt, führt dies zu einem uneinheitlichen Sicherheitsniveau.&amp;quot;&lt;br /&gt;
&lt;br /&gt;
Natürlich ist die mehrfache Verwendung bestimmter Security Controls, beispielsweise von Zugriffskontrollen (Complete-Mediation) oder Validierung (Robustheit) erstrebenswert. Was der Autor hier wahrscheinlich meinte, war die Notwendigkeit diese zu Kapseln bzw. zu Externalisieren. Das bezieht sich im übrigen nicht nur auf die Controls selbst, sondern auch auf ihre Parametrisierung (etwa. über Konfigdateien / XACML).&lt;br /&gt;
&lt;br /&gt;
Wichtiger wäre in diesem Zusammenhang zudem die fehlende Berücksichtigung bestimmter Security Controls.&lt;br /&gt;
&lt;br /&gt;
; 5. &amp;quot;Auswahl von Web-Anwendungen auf Basis von Standardsoftware&amp;quot;&lt;br /&gt;
Was will der Satz sagen? Ich wähle Standardsoftware aus, aber doch keine Webanwendungen. Oder heißt das, ich kaufe eine existierende Anwendung ein (Webanwendung!=Indivudualsoftware)? &lt;br /&gt;
&lt;br /&gt;
; 6. &amp;quot;Das ausgewählte Produkt verfügt nicht über die ausreichende Sicherheitsfunktionalität, ... Daher müssen die notwendigen Schutzmechanismen nachträglich hinzugefügt werden, wodurch zusätzliche Aufwände entstehen.&amp;quot;&lt;br /&gt;
Das ist etwas sehr positiv formuliert. Tatsächlich können fehlende Security Controls in zugekaufter Software (insb. Standardsoftware) in der Realität häufig gar nicht hinzugefügt werden oder nur perimetrisch (z.B. per WAF oder Access Gateway).&lt;br /&gt;
&lt;br /&gt;
; 7. &amp;quot;Die Hintergrundsysteme werden unzureichend abgesichert und dadurch ist die Datenbank der Web-Anwendung aus dem Internet erreichbar.&amp;quot;&lt;br /&gt;
Gehören fehlende Netzwerksegmentierung bzw. Firewallregeln wirklich in diesen Kontext? Das ist doch eigentlich Grundschutz der Infrastruktur, oder?&lt;br /&gt;
&lt;br /&gt;
; 8. &amp;quot;Aufgrund schwacher Parameter in der Konfiguration des Frameworks zum Session-Management werden unsichere SessionIDs erzeugt.&amp;quot;&lt;br /&gt;
Was sind &amp;quot;schwache&amp;quot; Parameter?&lt;br /&gt;
&lt;br /&gt;
Welches Framework erlaubt unsichere SessionIDs durch eine &amp;quot;schwache&amp;quot; Konfiguration zu erzeugen?&lt;br /&gt;
&lt;br /&gt;
; 9. &amp;quot;Wird die Konfiguration des Web-Browsers durch einen Angreifer manipuliert, können die clientseitig umgesetzten&amp;quot;&lt;br /&gt;
&lt;br /&gt;
Manipuliert ein Angreifer die Konfguration seines Webbroswers, wenn er einen MITM-Proxy konfiguriert?&lt;br /&gt;
&lt;br /&gt;
Wie bereits bei den &amp;quot;Goldenen Regeln&amp;quot; angemerkt, gilt auch hier, das manche Security Controls auch clientseitig umgesetzt werden dürfen (etwa. zur Verhinderung von Dom-Based XSS).&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== &amp;quot;G 5.WA10 Fehler in der Web-Anwendungslogik&amp;quot; (Dennis) ==&lt;br /&gt;
; 1. &amp;quot;Damit kann aufgrund der Prüfreihenfolge ein hoher Ressourcenverbrauch provoziert werden, der für Denial-of-Service-Angriffe ausgenutzt werden kann.&amp;quot;&lt;br /&gt;
Meiner Meinung nach passt in diesem Kontext die Attacke DoS nicht ganz. Falls die nachfolgende Funktionalität wegen der langen Ausführungszeit der Filterkomponente übersprungen wird bzw. ein Fehler auftritt würde dies meiner Ansicht in die Thematik Anwendungslogik passen. Eine DoS-Attacke kann hingegen anhand jeder Funktion durchgeführt werden.&lt;br /&gt;
&lt;br /&gt;
== &amp;quot;G 5.WA11 Umgehung clientseitig umgesetzter Sicherheitsfunktionen von Web-Anwendungen&amp;quot; (Dennis) ==&lt;br /&gt;
; 1. &amp;quot;Ein Angreifer kann diese ausnutzen, um beispielsweise unbefugt Befehle an Hintergrundsysteme der Web-Anwendung zu übermittlen (z.B. in Form von Datenbankanfragen bei einer SQL-Injection).&amp;quot;&lt;br /&gt;
Umformulierung des Inhalts der Klammer. Hatte beim ersten Lesen für mich den Anschein, als ob ein Formular genutzt werden könnte welches den Nutzer aufforder eine SQLI einzugeben. Ich denke &amp;quot;Datenbankanfrage zwecks Ausführung einer SQL-Injection&amp;quot; würde besser passen.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== G 2.WA02 Mängel bei der Entwicklung und der Erweiterung von Web-Anwendungen (Matthias) ==&lt;br /&gt;
&lt;br /&gt;
Allgemein ist de obere Teil ok, die aufgezählten &amp;quot;Auswirkungen von fehlenden Vorgaben&amp;quot; verstehe ich jedoch nicht. Wo ist etwa der Bezug von Barrierefreiheit auf die Anwendungssicherheit?&lt;br /&gt;
&lt;br /&gt;
Mein Vorschlag, um diese Punkte etwa sinnvoll umzubauen:&lt;br /&gt;
* &amp;quot;Fehlendes Vorgehensmodell&amp;quot;: Bezug auf fehlende Berücksichtigung von Sicherheit im SDLC. Statt eines SDLCs selbst sollte hier besser auf die Notwendigkeit eines Secure Development Lifecycle (SDL) hingewiesen werden&lt;br /&gt;
* &amp;quot;Fehlende Programmierrichtlinien&amp;quot; =&amp;gt; Besser wäre hier &amp;quot;Fehlende Sicherheitsrichtlinien in der Programmierung&amp;quot; also &amp;quot;Secure Coding Guidelines&amp;quot;&lt;br /&gt;
* &amp;quot;Testfälle&amp;quot; =&amp;gt; &amp;quot;Sicherheitsrelevante Testfälle&amp;quot; (z.B. Security Unit Tests). &lt;br /&gt;
* &amp;quot;Barrierefreiheit&amp;quot;: Warum nicht an dieser Stelle die Auswirkungen von Sicherheitsfunktionen auf die Bedienbarkeit, etwa anhand von CAPTCHAS erläutern?&lt;br /&gt;
&lt;br /&gt;
== G 2.WA03 Unzureichender Schutz personenbezogener Daten bei Web-Anwendungen (Matthias) ==&lt;br /&gt;
&lt;br /&gt;
Der Titel dieses Bausteines heißt &amp;quot;Schutz personenbezogener Daten&amp;quot;, die genannten Beispiele beziehen sich bis auf den letzten jedoch auf die missbräuchliche (oder zumindest problematische) Nutzung aus Sicht des Datenschutzes. &lt;br /&gt;
&lt;br /&gt;
Die Punkt 1-3 sollten daher besser entfallen und z.B. durch die Folgenden ersetzt werden:&lt;br /&gt;
* Unsichere Einbindung von sozialen Netzwerken (Bezug nehmen auf den Like-Button bei Facebook)&lt;br /&gt;
* Unsichere Einbindung von Werbeinhalten&lt;br /&gt;
* Unsichere Übertragung und Caching&lt;br /&gt;
* Unsichere Protokollierung&lt;br /&gt;
* Ungenügender Zugriffsschutz&lt;br /&gt;
* Verstoß des Minimalprinzips bzw. der Zweckgebundenheit (welche Daten werden wirklich benötigt)&lt;br /&gt;
&lt;br /&gt;
Auch wäre es ggf. zumindest einen Verweis auf das BDSG zu machen.&lt;br /&gt;
&lt;br /&gt;
== G 4.33 Unzureichende oder fehlende Authentisierung (Matthias) ==&lt;br /&gt;
&lt;br /&gt;
; 1. Erster Absatz: &amp;quot;Wenn Authentisierungsmechanismen fehlen oder zu schlecht sind&amp;quot;&lt;br /&gt;
&lt;br /&gt;
&amp;quot;schlecht&amp;quot; sollte vlt besser durch &amp;quot;unzureichend&amp;quot; ersetzt werden.&lt;br /&gt;
&lt;br /&gt;
; 2. &amp;quot;Sicherheitslücken entstehen bei... der Benutzerauthentisierung&amp;quot;&lt;br /&gt;
&lt;br /&gt;
Hier findet nur ein Bezug auf &amp;quot;Passwörter&amp;quot; statt. Der Bezug auf die fehlerhaft implementierte oder dem Schutzbedarf ungenügende Schutzmechanismen (z.B. keine 2-Faktor-Authentisierung bei hochsensiblen Daten) fehlt. Auch auf das komplette fehlen von Authentisierungs-Controls wird hier nicht  eingegangen&lt;br /&gt;
&lt;br /&gt;
; 3. &amp;quot;Sicherheitslücken entstehen bei... der Komponentenauthentisierung&amp;quot;&lt;br /&gt;
&lt;br /&gt;
Wie bei 2., wird auch hier wieder nur auf Passwörter, nicht jedoch auf das fehlen von Controls selbst eingegangen. An dieser Stelle fehlt auch ein Hinweis auf die Notwendigkeit dedizierter Benutzeraccounts.&lt;br /&gt;
&lt;br /&gt;
; 4. &amp;quot;Sicherheitslücken entstehen bei... der Wahl des Verfahrens&amp;quot;&lt;br /&gt;
&lt;br /&gt;
Statt untauglich würde ich auch hier von &amp;quot;dem Schutzbedarf der Daten nicht angemessen&amp;quot; sprechen, eigentlich gehört das für mich aber in die obigen Punkte.&lt;br /&gt;
&lt;br /&gt;
; 5. Serverseitige Authentisierung fehlt&lt;br /&gt;
&lt;br /&gt;
Auch der Server (bzw. die Anwendung selbst) kann sich fehlerhaft oder ungenügend beim Benutzer authentsieren, etwa über DNS, SSL-Zertifikate, etc.&lt;br /&gt;
&lt;br /&gt;
== G 4.WA04 Unzureichende Validierung von Ein- und Ausgabedaten bei Web-Anwendungen (Matthias) ==&lt;br /&gt;
&lt;br /&gt;
; 1. &amp;quot;Unzureichende Validierung von Eingabedaten&amp;quot;&lt;br /&gt;
&lt;br /&gt;
Die genannten Beispiele sind genau keine korrekten Beispiele für diesen Fall, sondern betreffen die Ausgabevalidierung bzw. Enkodierung. Typische Fehler der Eingabevalidierung ist eine Manipulierbarkeit der Business Logik.&lt;br /&gt;
&lt;br /&gt;
; 2. &amp;quot;Unzureichende Validierung von Ausgabedaten&amp;quot;&lt;br /&gt;
&lt;br /&gt;
Hier geht es zentral um die Verhinderung von Interpreter Injection, also serverseitig (z.B. SQL oder LDAP Injection) oder clientseitig (XSS, JSON Injection, etc.). Statt &amp;quot;können die Ausgaben Schadcode&amp;quot; enthalten würde ich hier eher davon Sprechen, dass ein solcher Interpreteraufruf manipuliert werden kann (was dann z.B. zur Einschleusung von Schadcode genutzt werden kann).&lt;br /&gt;
&lt;br /&gt;
; 3. &amp;quot;Die Suchfunktion der Web-Anwendung verwendet die Eingaben der Benutzer ungefiltert&amp;quot;&lt;br /&gt;
&lt;br /&gt;
Mit ungenügender &amp;quot;Filterung&amp;quot; hat SQL Injection nichts zu tun,  eigentlich geht es hierbei darum, dass SQL-Anfragen dynamisch mit unvalidierten Eingebedaten zusammengebaut (konkateniert) werden.&lt;br /&gt;
&lt;br /&gt;
; 4. &amp;quot;Ungefilterter HTML-Code in Kommentar-Funktion&amp;quot;&lt;br /&gt;
&lt;br /&gt;
Hier fehlt der Bezug auf persistentes XSS, das hier sicherlich zentral ist.&lt;br /&gt;
&lt;br /&gt;
== G 4.WA05 Fehlende oder mangelhafte Fehlerbehandlung durch Web-Anwendungen (Tobias, Matthias) ==&lt;br /&gt;
; Abschnitt &amp;quot;Unsichere Fehlerbehandlung&amp;quot;&lt;br /&gt;
Die G adressiert &amp;quot;Unsichere Fehlerbehandlung&amp;quot;, der Abschnitt die &amp;quot;Unsichere Fehlerbehandlung in Sicherheitskomponenten&amp;quot;. Entsprechend sollte der fettgedruckte Teil angepasst werden.&lt;br /&gt;
&lt;br /&gt;
; &amp;quot;fehlende SQL-Parameter,&amp;quot;&lt;br /&gt;
Sollte besser &amp;quot;Fehlermeldungen bei ungültigen SQL-Abfragen&amp;quot; lauten.&lt;br /&gt;
&lt;br /&gt;
; &amp;quot;Auch scheinbar unkritische Informationen, wie die Meldung ob (..)&amp;quot;&lt;br /&gt;
Korrekt, allerdings nicht nachvollziehbar, wenn das Problem der Leser nicht schon bekannt ist. Daher erweitern nach &amp;quot; Rahmen von Brute-Force-Angriffen ausgenutzt werden.&amp;quot; mit &amp;quot;. Bei Brute-Force-Angriffen wäre in diesem Fall klar, dass der Benutzername gültig ist.&amp;quot;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[User:Mrohr|Matthias]]): Stimme dem Obigen auch zu, ausserdem:&lt;br /&gt;
&lt;br /&gt;
; Sprachlich: &amp;quot;kann dies unvorhersehbare Auswirkungen haben und den Betrieb der Web-Anwendung bis zur Unerreichbarkeit einschränken.&amp;quot;&lt;br /&gt;
&lt;br /&gt;
&amp;quot;Unerreichbarkeit&amp;quot; ist etas merkwuerdig ausgedrueckt, besser ware hier von der &amp;quot;Verfuegbarkeit&amp;quot; zu sprechen. Im Uebrigen fehlt vollstaendig der Bezug auf die Verfuegbarkeit als Primaeres Schutzziel der Informationssicherheit.&lt;br /&gt;
&lt;br /&gt;
; &amp;quot;Clientseitige Fehlerbehandlung&amp;quot;&lt;br /&gt;
Das stimmt soweit, das generelle Problem ist jedoch genereller, naehmlich die clientseitige Abbildung sicherheitsrelaventer Logik (in diesem Fall die Fehlerbehandlung)&lt;br /&gt;
&lt;br /&gt;
== G 4.WA06 Unzureichende Nachvollziehbarkeit von sicherheitsrelevanten Ereignissen bei Web-Anwendungen (Matthias) ==&lt;br /&gt;
&lt;br /&gt;
; 1. Erster Absatz: &amp;quot;Die Behebung einer Schwachstelle ist dann nicht oder nur unter erschwerten Bedingungen möglich.&amp;quot;&lt;br /&gt;
&lt;br /&gt;
Hier würde ich ergänzen: &amp;quot;...und Angriffe auf die Anwendungen können ggf. nicht erkannt oder nachvollzogen werden&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
; 2. &amp;quot;Beispiele&amp;quot;: Kommulierbarkeit&lt;br /&gt;
&lt;br /&gt;
Hier fehlt auch ein Bezug auf die Kommulierbarkeit von SIcherheitsereignissen, dass diese also auch von solchen anderer Systeme in Verbindung gesetzt werden können&lt;br /&gt;
&lt;br /&gt;
; 3. &amp;quot;Beispiele&amp;quot;: Gerichtsverwertbarkeit&lt;br /&gt;
&lt;br /&gt;
Auch die Möglichkeit zur Gerichtsverwertbarkeit (etwa durch eindeutigen Zeitstempel) und manipulationssicherer Speicherung, würde ich an dieser Stelle unbedingt erwähnen.&lt;br /&gt;
&lt;br /&gt;
== G 4.WA07 Offenlegung von Informationen bei Web-Anwendungen (Matthias) ==&lt;br /&gt;
&lt;br /&gt;
; 1. Titel&lt;br /&gt;
&lt;br /&gt;
Hier würde ggf. &amp;quot;Offenlegung vertraulicher Informationen&amp;quot; sicher besser passen als &amp;quot;Offenlegung von Informationen&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
; 2. Beispiellink&lt;br /&gt;
&lt;br /&gt;
Ein Beispiellink (mit und ohne Token) würde sicher die Verständlichkeit dieser Schwachstelle verbessern.&lt;br /&gt;
&lt;br /&gt;
; 3. Erster Absatz: &amp;quot;Wenn demzufolge Informationen unnötig offengelegt werden, steigt die Wahrscheinlichkeit eines erfolgreichen Angriffs.&amp;quot;&lt;br /&gt;
&lt;br /&gt;
Interne Informationen auszublenden ist eine Härtungsmaßnahme, deren Anzeige erhöht aber nicht zwangsläufig die Wahrscheinlichkeit eines erfolgreichen Angriffs. Ich würde diesen Satz weglassen.&lt;br /&gt;
&lt;br /&gt;
 ; 4. Fehlende Punkte&lt;br /&gt;
&lt;br /&gt;
* Ein Hinweis auf HTTP Header wäre hier sicher erwähnenswert.&lt;br /&gt;
* Weiterhin bzgl. der Anzeige von Traces und ein Verweis auf den Entsprechenden Baustein zur Fehlerbehandlung&lt;br /&gt;
&lt;br /&gt;
== G 5.WA14 Cross-Site Request Forgery (CSRF, XSRF) (Matthias) ==&lt;br /&gt;
&lt;br /&gt;
; 1. Erster Absatz: &amp;quot;Können Funktionen einer Web-Anwendung ohne weitere Überprüfung der Authentizität des HTTP-Requests (z.B. durch Tokens in versteckten Formularfeldern) genutzt werden&amp;quot;&lt;br /&gt;
&lt;br /&gt;
Statt &amp;quot;Funktionen&amp;quot; würde ich besser von &amp;quot;schreibenden Aktionen&amp;quot; sprechen, dann macht der Satz mehr Sinn.&lt;br /&gt;
&lt;br /&gt;
; 2. Dritter Absatz: &amp;quot;Im Gegensatz zu XSS (siehe ...￼ ) ist das Angriffsziel nicht die Information auf dem Client (z. B. in Cookies),&amp;quot;&lt;br /&gt;
&lt;br /&gt;
Dieser (Halb-)Satz macht keinen Sinn, auch weil es bei XSS nicht nur im Informationen auf dem Cient geht. Vorschlag: &amp;quot;ist das Angriffsziel nicht die Ausführung von Skriptcode, sondern von unbefugten, schreibenden Aktionen im Kontext des angemeldeten Benutzers.&amp;quot;&lt;br /&gt;
&lt;br /&gt;
; 3. Session Riding&lt;br /&gt;
&lt;br /&gt;
Session Riding ist quasi nur ein anderer Begriff für CSRF. Die einzige Form von CSRF die mir bekannt ist, sind Angriffe mit Standard-Passwörtern auf HTTP-Basic-Auth geschützten Ressourcen.&lt;br /&gt;
&lt;br /&gt;
Im Grunde ist Session Riding aber nur ein Synonym für CSRF. Der Absatz ist daher auch nur eine Wiederholung der obigen Beschreibung.&lt;br /&gt;
&lt;br /&gt;
; 4. Zum Beispiel: &amp;quot;Durch einen präparierten Link auf einer Webseite wird die Änderung des Zugangspasswortes des Routers eingeleitet.&amp;quot;&lt;br /&gt;
&lt;br /&gt;
Etwas ungüngstig ausgedrückt. Besser wäre: &amp;quot;wird eine Anfrage zur Änderung des Zugangspasswortes an den Router gesendet. Hierbei sendet der Browser automatisch den Session Cookie mit, worüber die Webanwendung die Authentizität der Anfrage verifiziert und die Änderung durchführt.&amp;quot;&lt;br /&gt;
&lt;br /&gt;
== G 5.WA18 Clickjacking (Matthias) ==&lt;br /&gt;
&lt;br /&gt;
Hier stellt sich mir nur die allgemeine Frage, ob Clickjacking, bzw. der Schutz davor tatsächlich einem Grundschutz zuzurechnen ist. Persönlich würde ich dies nicht tun.&lt;br /&gt;
&lt;br /&gt;
== M 2.WA02 Dokumentation der Architektur von Web-Anwendungen (Matthias) ==&lt;br /&gt;
&lt;br /&gt;
; Verantwortlich für die Umsetzung&lt;br /&gt;
Hier wäre auch die Nennung des &amp;quot;Architekten&amp;quot; sinnvoll&lt;br /&gt;
 &lt;br /&gt;
; Fehlende Bestandteile der Dokumentation:&lt;br /&gt;
* Schutzbedarf des Systems sowie der verarbeiteten Daten&lt;br /&gt;
* Schützenswerte Daten und Funktionen (Assets)&lt;br /&gt;
* Betriebliche Anforderungen an die Sicherheit bzw. eingesetzte Plattform&lt;br /&gt;
* Dokumentierte Konfigurationseinstellungen &lt;br /&gt;
* BIA (RTO, RPO)&lt;br /&gt;
* Schnittstellen&lt;br /&gt;
* Trust Boundaries&lt;br /&gt;
* Akteure (bzw. Trust Level)&lt;br /&gt;
* Sicherheitsannahmen&lt;br /&gt;
* Geltende Compliance-Anforderungen (BDSG, PCI DSS, etc.)&lt;br /&gt;
&lt;br /&gt;
; Benutzermanagement&lt;br /&gt;
&lt;br /&gt;
Wenn damit das Identity Management gemeint ist, gehört das Dokumentiert, ist aber keine Sicherheitsfunktion. Oder ist hiermit das Rollen- und Berechtigungskonzept gemeint? Grenzt sich aus meiner Sicht schwer mit dem Thema Authentisierung ab. &lt;br /&gt;
&lt;br /&gt;
; Prüffragen&lt;br /&gt;
&lt;br /&gt;
Hier fehlt etwas in Bezug auf Sicherheitsanforderungen. Beispiel: &amp;quot;Werden Sicherheitsanforderungen an den Betrieb während der Entwicklung abgestimmt und dokumentiert&amp;quot;&lt;br /&gt;
&lt;br /&gt;
== M 2.WA12 Entwicklung und Erweiterung von Anwendungen (Markus) ==&lt;br /&gt;
; &amp;quot;Es sollte darauf geachtet werden, dass Sicherheitsanforderungen&lt;br /&gt;
vollständig durch Sicherheitsmechanismen erfüllt und zur Erstellung von&lt;br /&gt;
Testfällen festgehalten werden.&amp;quot; --&amp;gt; Bessere Formulierung würde aussagen, dass die Sicherheitsanforderungen durch Testfälle verifiziert werden.&lt;br /&gt;
&amp;quot;(z. B. durch Kommentare im&lt;br /&gt;
Quelltext). Somit ist der Quelltext zu einem&amp;quot; --&amp;gt; Das ist kein empfehlenswerter Programmierstiel! Raus mit diesem Kommentar&lt;br /&gt;
;&amp;quot;Zum Schutz vor dem Verlust bereits entwickelter und verworfener&lt;br /&gt;
Lösungen sowie zu Dokumentationszwecken sollte die Historie der&lt;br /&gt;
Änderungen festgehalten werden (z. B. durch ein Revisionssystem).&amp;quot; --&amp;gt; Auch diesen Absatz können wir streichen - Kein professioneller Programmierer arbeitet ohne Versionierugssystem.&lt;br /&gt;
;&amp;quot;Bei Web-Anwendung sollten die Webseiten auf Konformität zu dem&lt;br /&gt;
verwendeten Standard (z. B. HTML-Standard) getestet werden. Dadurch&lt;br /&gt;
können unvorgesehene Seiteneffekte aufgrund einer Fehlinterpretation&lt;br /&gt;
seitens der Browser vermieden werden.&amp;quot; --&amp;gt; Könnte man noch um &amp;quot;Die Software ist in möglichst vielen Browsern zu testen&amp;quot; erweitern.&lt;br /&gt;
;Generell geht der Autor leider nicht auf die Rollen &amp;amp; Rechte Verteilung ein. Mir fehlt der Hinweis, das es eine personelle Trennung zwischen Entwicklung, Test und Betrieb geben muss.&lt;br /&gt;
;Zum Thema Wartung / Betrieb --&amp;gt; Hier wird keine Aussage getroffen bezüglich Log_Files. Dieses Thema kann kritische Auswirkungen haben, Bsp.: logging ganzer HTTP-Requests im LogLevel=Debug.&lt;br /&gt;
; &amp;quot;Produktspezifische Sicherheitsfunkionalität&amp;quot; - Dieser Absatz ist gefährlich - der Angreifer ist nicht zur Verwendung dies Zielbrowsers gezwungen. Deshalb können Browser-spez. Sicherheitsfunktionen nur als Add-ON gewertet werden.&lt;br /&gt;
; &amp;quot;Festlegung der Entwicklungsumgebung&amp;quot; - Dieser Absatz geht nicht auf die zu verwendenden Testdaten ein. Der Hinweis, dass Live-Daten / Kundendaten nichts in Test- &amp;amp; Entwicklungsumgebungen zu suchen haben fehlt!!!&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== M 2.WA24 Web-Tracking (Matthias) ==&lt;br /&gt;
&lt;br /&gt;
; Letzter Absatz: &amp;quot;Falls eine Auswertung von Nutzerdaten, insbesondere personenbezogener Daten, .. &amp;quot;&lt;br /&gt;
&lt;br /&gt;
Hier sollte denke ich besser von personenbeziehbaren Daten gesprochen Werten. Dies betrifft etwa die Zuordnung von Surfverhalten zu einer bestimmten Person. Dies sollte stets nach den Prinzipien Datensparsamkeit und Datenvermeidung, Erforderlichkeit, sowie Zweckbindung erfolgen. Ist Webtracking nicht personenbeziehbar ist dies kein Thema für den Datenschutz.&lt;br /&gt;
&lt;br /&gt;
== M 4.WA04 Authentisierung bei Web- Anwendungen (Matthias) ==&lt;br /&gt;
&lt;br /&gt;
: Verantwortlich fuer Umsetzung &lt;br /&gt;
sollte in erster Linie beim Architekturen und in zweiter beim Entwickler liegen&lt;br /&gt;
; Vermischung von Authentisierung und Session Management &lt;br /&gt;
&lt;br /&gt;
Bei diesem Baustein findet eine ziemlich große Vermischung von Anforderung an die Authentisierung und das erst in &amp;quot;M 4.WA06 Session-Management bei Web- Anwendungen&amp;quot; behandelte Session Management statt (Beispiel: &amp;quot;Remember-Me-Funktion&amp;quot;). Beide Themen sollten sinnvollerweise getrennt voneinander zu betrachten und aufeinander zu beziehen.&lt;br /&gt;
&lt;br /&gt;
; Verwendung von Frameworks&lt;br /&gt;
&lt;br /&gt;
Die Anforderung ist schon ein wenig eingeschränkt. Besser passt hier denke ich die &amp;quot;Abbildung der Authentisierung über Standardkomponenten (Bibliotheken oder Frameworks)&amp;quot;. &lt;br /&gt;
&lt;br /&gt;
; Remember-Me-Funktion&lt;br /&gt;
&lt;br /&gt;
Siehe oben, gehört zum Session Management. Das ließt sich im übrigen so, als ob eine Webanwendung Credentials auf dem Client abhängt. &lt;br /&gt;
&lt;br /&gt;
; Grenzwerte für gescheiterte Anmeldeversuche&lt;br /&gt;
&lt;br /&gt;
Diese Empfehlung ist allgemein falsch, da sie sehr von der betrachteten Anwendung abhängt. Besser wäre hier allgemein von Mechanismen zur Verhinderung von automatisierten Angriffen zu sprechen (Anti-Automatisierung). &lt;br /&gt;
&lt;br /&gt;
Etwa umsetzbar durch&lt;br /&gt;
* Sperrung nach x Anmeldeversuchen&lt;br /&gt;
* Throttling&lt;br /&gt;
* Captchas&lt;br /&gt;
* Sicherheitsfragen&lt;br /&gt;
&lt;br /&gt;
Das allgemeine Sperren kann leicht für das gezielte Aussperren von Benutzern (User Lockout) verwendet werden. Was etwa bei Trading-Anwendungen nicht funktioniert.&lt;br /&gt;
&lt;br /&gt;
; Automatisiertes Zurücksetzen von Authentisierungsdaten&lt;br /&gt;
&lt;br /&gt;
Würde ich besser als &amp;quot;Passwort-Reset&amp;quot; bezeichnen.&lt;br /&gt;
&lt;br /&gt;
Weiterhin fehlt hier der Hinweis, dass statt ein automatisiertes Zurücksetzen, ein Mechanismus zu empfehlen ist, bei dem über ein hinterlegtes Sicherheitsmerkmal (Handy-Nummer oder E-Mail-Adresse) vom Benutzer zunächst eine Verifikation durchgeführt wird. Beispielsweise durch einen erhaltenen Link. Erst dann darf eine Änderung des Passwortes durch den Benutzer erfolgen.&lt;br /&gt;
&lt;br /&gt;
; Registrierung nicht behandelt&lt;br /&gt;
&lt;br /&gt;
Es existiert hier kein Punkt, der die sichere Implementierung von Benutzerregistrierungen behandelt.&lt;br /&gt;
&lt;br /&gt;
; Verweis auf Externalisierung fehlt.&lt;br /&gt;
&lt;br /&gt;
Statt die Authentisierung selbst durchzuführen kann eine Anwendung hierzu auf eine externe Komponente (Beispiel: SiteMinder oder Kerberos) zurückgreifen.&lt;br /&gt;
&lt;br /&gt;
; Verweis auf Behandlung von Credentials fehlt&lt;br /&gt;
&lt;br /&gt;
Auch wenn das  in &amp;quot;M 4.WA15 Schutz vertraulicher Daten bei Web- Anwendungen&amp;quot; ausführlich behandelt wird, sollte in diesem Baustein bereits auf den angemessenen Schutz von Authentisierungsdaten bei Übertragung und Speicherung hingewiesen werden.&lt;br /&gt;
&lt;br /&gt;
== M 4.WA05Umfassende Ein- und Ausgabevalidierung bei Web-Anwedungen (Markus) ==&lt;br /&gt;
; &amp;quot;Ablehnung der Daten im&lt;br /&gt;
Fehlerfall&amp;quot; --&amp;gt; Hier könnte man noch auf Tar-Pits eingehen - nur ein Vorschlag.&lt;br /&gt;
&lt;br /&gt;
== M 4.WA06Session-Management bei Web-Anwendungen (Markus, Matthias) ==&lt;br /&gt;
; &amp;quot;Übertragung der SessionID mittels GETRequest&amp;quot; --&amp;gt; Hier fehlt der Hinweis, dass die Lebensdauer dieser SessionIds kurz/kürzer sein muss, als im Falle der Speicherung im Cookie.&lt;br /&gt;
&lt;br /&gt;
([[User:Mrohr|Matthias]]) Die Anmerkung verstehe ich ehrlich gesagt ueberhaupt nicht, zumal das SM haeufig transparent zwischen Cookies und URL Rewriting wechselt. Wozu soll das gut sein? Wie soll das geschehen? Idealerweise sollte die Session ID niemals in die URL geschrieben werden, das sollte eigentlich genuegen.&lt;br /&gt;
&lt;br /&gt;
; &amp;quot;Verschlüsselte Übertragung von SessionIDs&amp;quot; --&amp;gt; Hier fehlt der Hinweis auf den Beast-Exploit. TLS Version &amp;gt; 1.0 verwenden!&lt;br /&gt;
&lt;br /&gt;
([[User:Mrohr|Matthias]]) Solange hier nicht auf eine explizite TLS Version eingegangen wird, sollte meiner grossen Ueberzeugung nach hier auch auf keine Exploits etc. eingagen werden, das gehoert an andere Stelle.&lt;br /&gt;
&lt;br /&gt;
; ([[User:Mrohr|Matthias]]) Weiterhin:&lt;br /&gt;
&lt;br /&gt;
 Es dürfen keine extern bekannten oder erratbaren Daten (z. B. IP-Adresse, Uhrzeit) in die Berechnung der SessionID einfließen.&lt;br /&gt;
&lt;br /&gt;
Die Aussage finde ich etwas problematisch, wichtiger ist, dass die Entropie ausreichend hoch ist. Haeufig werden etwa IPs von Load Balancern in die Session ID hineingeschrieben.&lt;br /&gt;
&lt;br /&gt;
 - Domain (z. B. webapp.domain.tld),&lt;br /&gt;
 - Path (z. B. /webapp/),&lt;br /&gt;
 - Secure und&lt;br /&gt;
 - HttpOnly.Beschränkte Sitzungsdauer&lt;br /&gt;
&lt;br /&gt;
Das sieht so aus, als ob es empfehlenswert ist, das Domain-Tag zu verwenden, das ist es sicherlich nicht. Was macht hier der Hinweis &amp;quot;Beschraenke Sizuungsdauer&amp;quot;?&lt;br /&gt;
&lt;br /&gt;
== M 4.WA07Fehlerbehandlung durch Web-Anwendungen (Markus) ==&lt;br /&gt;
; Konsistenter / Inkonsistener Zustand einer Webanwendung und der daraus resultierende Datenverlust: Hier fehlen mir die Punkte: DOS, Priv.Escalation, CodeExecution.&lt;br /&gt;
; Vermeidung vertraulicher Informationen in Fehlermeldungen --&amp;gt; Fehlermeldungen sollten ebenfalls eine Systeminformationen preisgeben (Softwareversion, Patchlevel, etc.)&lt;br /&gt;
; Abbruch des Vorgangs nach Auftreten eines Fehlers --&amp;gt; TarPits scheinen dem Autor umbekannt zu sein :)&lt;br /&gt;
; &amp;quot;Werden Fehler möglichst von der gleichen Komponente behandelt, in der&lt;br /&gt;
der Fehler aufgetreten ist?&amp;quot; --&amp;gt; Das &amp;quot;möglichst&amp;quot; sollten wir streichen.&lt;br /&gt;
&lt;br /&gt;
== M 4.WA08Schutz vor automatisierter Nutzung von Web-Anwendungen (Markus) ==&lt;br /&gt;
; &amp;quot;Brute-Force-&lt;br /&gt;
Angriffe (z. B. Erraten von Zugangsdaten) und Enumeration-Angriffe (z. B.&lt;br /&gt;
automatisiertes Ermitteln von gültigen Login-Namen)&amp;quot; -- die Beispiele sind identisch - besser Beispiele suchen, z.b. URL-Enumeration&lt;br /&gt;
&lt;br /&gt;
([[User:Mrohr|Matthias]]) Das sehe ich anders. Brute-Forcing bezieht auf Passwoerter und Enumeration auf Benutzernamen, etwa durchs hochzaehlen. Auch wenn ich zustimmen muss, dass die nicht ganz gluecklich gewaehlt wurden. Stann &amp;quot;Erraten von Zugangsdaten&amp;quot; wuerde ich besser von &amp;quot;Erraten von Passwoertern&amp;quot; sprechen. Oder wie gesagt gleich auch auf andere Beispiele (etwa Object ID Enumeration) beziehen.&lt;br /&gt;
&lt;br /&gt;
== M 4.WA11Sichere Konfiguration von Web-Anwendungen (Markus) ==&lt;br /&gt;
; &amp;quot;Sicherer Umgang mit TLS/SSL&amp;quot; -- Hier fehlt der Hinweis, dass TLS-1.0 gebrochen ist&lt;br /&gt;
; &amp;quot;Zeichenkodierungskonfiguration&amp;quot; -- Ein Whitelisting abhängig von der Encodierung wäre ein weiterer Vorschlag&lt;br /&gt;
; &amp;quot;Restriktive Dateisystemberechtigungen&amp;quot; -- auch wenn es ein klassiker ist - der AS sollte ebenfalls mit von einem eingeschränkten Nutzer gestartet werden und nicht als root&lt;br /&gt;
; Administration Consolen:zur Ergänzen: Wenn diese nicht benötigit, sollten derartige Applikationen nicht deployed werden, unabhängig von möglichen Zugangsbeschränkungen.&lt;br /&gt;
&lt;br /&gt;
([[User:Mrohr|Matthias]]) Sorry, meiner Meinung nach hat die Bewertung von Kryptoverfahren hier abslut nichts zu suchen.Stattdessen sollte hier auf den entsprechenden [https://www.bsi.bund.de/ContentBSI/Publikationen/TechnischeRichtlinien/tr02102/index_htm.html Empfehlung des BSI] verwiesen werden, auch wenn dieses Dokument derzeit noch etwas outdated zu sein scheint.&lt;br /&gt;
&lt;br /&gt;
== M 4.WA13Kontrolliertes Einbinden von Daten und Inhalten bei Web-Anwendungen (Markus) ==&lt;br /&gt;
; Datei-Upload: Bei einem Upload werden Dateien durchaus in TEMP-Verzeichnissen gesammelt und danach weiterverarbeitet. Diese TEMP-Verzeichnisse sind im Rahmen einer Sicherheitsanalyse zu betrachten -&amp;gt; Möglicher (unbefugter) Zugriff auf weitere Uploads&lt;br /&gt;
; Upload komprimierter Dateien / großer Dateien birgt die Gefahr von DOS Angriffen&lt;br /&gt;
; Upload von Dateien kann bei weiterem Parsing zu Speicherengpässen führen --&amp;gt; DOS-Angriffe auf Thread-Local etc.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== M 4.WA14Restriktive Herausgabe sicherheitsrelevanter Informationen bei Web-Anwendungen (Markus, Matthias) ==&lt;br /&gt;
OK - Keine Anmerkungen von mir.&lt;br /&gt;
&lt;br /&gt;
([[User:Mrohr|Matthias]]) Von mir schon;)&lt;br /&gt;
&lt;br /&gt;
; ([[User:Mrohr|Matthias]]) Vermeidung von Kommentaren in ausgelieferten Webseiten&lt;br /&gt;
&lt;br /&gt;
Das ist leider total falsch, wir brauchen haeufig Komentare, aus Kompatibilitaetsgruenden. So wird etwa der JavaScript-Block haeufig auskommentiert.&lt;br /&gt;
&lt;br /&gt;
Wurde stattessen besser von sicherheitsrelevanten Kommentaren sprechen und als Massnahme generell Entwicklerkommentare ueber Sprachkonstruktre (etwa JSP) durchzufuehren.&lt;br /&gt;
&lt;br /&gt;
; ([[User:Mrohr|Matthias]]) Löschen nicht benötigter Dateien&lt;br /&gt;
&lt;br /&gt;
Hier wurde ich ggf. Dateien von Versionisierungstools (etwa Subversion) erwaehnen, das sehen wir schon recht haeufig.&lt;br /&gt;
&lt;br /&gt;
Statt Dateien einfach nur zu loeschen (was in der Praxis haeufig nicht so einfach ist) bietet es sich zudem an, den Zugriff auf bestimmte Dateien oder Dateitypen generell zu sperren, etwa mittels ACL im Apache.&lt;br /&gt;
&lt;br /&gt;
; ([[User:Mrohr|Matthias]]) Gibt die Web-Anwendung ausschließlich neutrale Fehlermeldungen aus und sind diese im Quelltext identisch? {E: C}&lt;br /&gt;
&lt;br /&gt;
Persoenlich verstehe ich das nicht. Wieseo neutrale Fehlermeldung? Das macht fuer mich nur beim Login Sin. Hierzu existiert in dem Text auch keinerlei Bezug. Ich wuerde das daher besser entfernen und im Rahmen der Fehlerbehandlung diskutieren. Mindestens sollte hier jedoch besser von &amp;quot;sicherheitsunbedentlichen Fehlermeldungen&amp;quot; oder so gesprochen werden.&lt;br /&gt;
&lt;br /&gt;
; ([[User:Mrohr|Matthias]]) Wird der Referrer bei Verlassen der Web-Anwendung (z. B. durch einen Link auf eine externe Seite) gefiltert?&lt;br /&gt;
&lt;br /&gt;
Diesen Punkt sehe ich als sehr Fallabhengig an. Es kann fuer seiten durchaus wuenschenswert sein, dass der Referer weitergegeben wird. Der Referer sollte natuerlich keine sensiblen Informationen enthalten, was ja an anderer Stelle (etwa Session Management) vorgegeben wird bzw. gegeben werden sollte.&lt;br /&gt;
&lt;br /&gt;
== M 4.WA15Schutz vertraulicher Daten bei Web-Anwendungen (Markus, Matthias) ==&lt;br /&gt;
; Sichere kryptographische Algorithmen:&lt;br /&gt;
 Hier fehlt mir eine Liste der aktuelle als sicher geltenden Verfahren.&lt;br /&gt;
([[User:Mrohr|Matthias]]) Am Besten Referenz auf [https://www.bsi.bund.de/ContentBSI/Publikationen/TechnischeRichtlinien/tr02102/index_htm.html https://www.bsi.bund.de/ContentBSI/Publikationen/TechnischeRichtlinien/tr02102/index_htm.html]&lt;br /&gt;
&lt;br /&gt;
; Schlüssel&lt;br /&gt;
 Das die Schlüssel bestimmten Formaten entsprechen müssen ist ok - aber das Schlüsselmanagement wird gar nicht besprochen?&lt;br /&gt;
; Schutz der Daten im Browsercache&lt;br /&gt;
 Skripte und Browserplugins können ebenfalls auf den Browsercache zugreifen - diese werden hier nicht erwähnt.&lt;br /&gt;
&lt;br /&gt;
([[User:Mrohr|Matthias]]) Weiterhin entsprechen die vorgeschlagenen HTTP Headern nicht dem Best Practice:&lt;br /&gt;
&lt;br /&gt;
 Cache-control: no-cache, no-store&lt;br /&gt;
 Pragma: no-cache&lt;br /&gt;
 Expires: -1&lt;br /&gt;
&lt;br /&gt;
([[User:Mrohr|Matthias]]) Die Empfehlung hinsichtlich des manuellen Leerens des Browsercaches sollte wenn dann nur bei Anwendungen mit sehr hohem Schutzbedarf in Erwaegung gezogen werden. Wichtiger waere da schon eher die richtigen Cache-Header zu verwenden. Solche Empfehlungen ihm Rahmen des Grundschutzes aber wirklich nichts zu suchen. &lt;br /&gt;
&lt;br /&gt;
; Maskierung von Passwörtern &lt;br /&gt;
 Dies schützt bei der Eingabe nur vor ShoulderSurfing nicht vor Skripten oder Plugins die diese an andere Server posten.&lt;br /&gt;
&lt;br /&gt;
([[User:Mrohr|Matthias]]) Das ist voellig korrekt. Aber inwieweit ist die Aussage Passwort-Felder zu verwenden fehlerhaft bzw. hier unzureichend beschrieben?&lt;br /&gt;
&lt;br /&gt;
; Sicherung von Zugangsdaten:&lt;br /&gt;
 Zugangsdaten in einer Datei abzulegen - wenn auch ausserhalb des WebRoots ist keine gute Idee.&lt;br /&gt;
([[User:Mrohr|Matthias]]) Es ist sicher nicht die schoenste Variante, es laesst sich aber nunmal in vielen Faellen nicht vermeiden. Deshalb fordert der [http://code.google.com/p/owasp-asvs/wiki/Verification_V2 ASVS] hier etwa auch nicht mehr. Fuer den hier angestreben Grundschutz sollte das meiner Meinung nach ausreichen.&lt;br /&gt;
; Schutz von Quelltexten:&lt;br /&gt;
 Hier würde ich property files mit aufnehmen. der hinweis auf web-inf/classes fehlt - warum?&lt;br /&gt;
 Bei include-befehlen sind die pfadangaben zu überdenken.&lt;br /&gt;
([[User:Mrohr|Matthias]]) Wuerde property Dateien allgemein den Konfigurationsdateien zuordnen. Der Begriff &amp;quot;Einzubindende Dateien&amp;quot; ist mir allrdings Neu&lt;br /&gt;
&lt;br /&gt;
([[User:Mrohr|Matthias]]) Weiterhin, fehlt ein genereller Bezug auf HTML 5 WebStorage, LSOs etc. Zumindest in abstrakter Form, so dass diese dadurch indirekt addresiert werden. Egal, in dem relevanten Punkt will der Autor meiner Meinung nach nur einige Beispiele nennen, das sollte keinen Anspruch auf Vollsteandigkeit haben muessen.&lt;br /&gt;
&lt;br /&gt;
; ([[User:Mrohr|Matthias]]) - Durch dieses Attribut wird die Gültigkeit des Cookies auf die Domäne der Web-Anwendung beschränkt.&lt;br /&gt;
Nein, das ist leider total falsch. Das Domain-Attribut stellt eine Aufweichung der Cookie-Gueltigkeit dar und nicht anders herum. Gewoehlich sind Cookies immer Host-Cockies und das sollte auch so bleiben. Die Empfehlung sollte entfernt werden.&lt;br /&gt;
&lt;br /&gt;
== M 4.WA16Zugriffskontrolle bei Web-Anwendungen (Markus) ==&lt;br /&gt;
; Zugriffskontrolle via Frameworks:&lt;br /&gt;
 Dieser Punkt (Frameworks) wird nur in einem Satz erwähnt. Es werden keine Bespiele gegeben - Das ist zu wenig.&lt;br /&gt;
 Es müssen alle Zugriffe geschützt werden. Eine Protokollierung aller Zugriffe mit den nötigen Informationen ist ebenfalls empfehlenswert.&lt;br /&gt;
; Datei Upload:&lt;br /&gt;
 Die Gefahr eines DOS wird hier nicht erwähnt.&lt;br /&gt;
&lt;br /&gt;
== M 4.WA19Verhinderung von Cross-Site Request Forgery (CSRF, XSRF) (Markus, Matthias) ==&lt;br /&gt;
; Verantwortliche: &lt;br /&gt;
 Entwickler und Admins!&lt;br /&gt;
([[User:Mrohr|Matthias]]) Korrekt, wobei auch in der Reihenfolge&lt;br /&gt;
&lt;br /&gt;
; Anti-CSRF-Token in hidden fields:&lt;br /&gt;
 Das ist keine gute Idee. Ich würde das streichen!&lt;br /&gt;
&lt;br /&gt;
([[User:Mrohr|Matthias]]) Watt? Anti-CSRF-Tokens in Hidden Fields sind die Standard-Massnahme. Wie denn sonst? Bitte nicht streichen!!! &lt;br /&gt;
&lt;br /&gt;
([[User:Mrohr|Matthias]]) Die Technik bei der die Session ID als Anti-CSRF-Token verwendet wird, wird als Double-Cookie Submit bezeichnet, das sollte hier referenziert werden.&lt;br /&gt;
&lt;br /&gt;
; Umgehung von Schutzmechanismen:&lt;br /&gt;
 Man in the middle hat keinen direkten Bezug zu CSRF! Das würde ich streichen.&lt;br /&gt;
([[User:Mrohr|Matthias]]) Der Hinweis ist korrekt. Wovon der Autor hier spricht ist Session Replay nicht CSRF.&lt;br /&gt;
&lt;br /&gt;
; Frameworks:&lt;br /&gt;
 Gute Idee - aber es gibt auch Features in den ApplicationServern die CSRF unterbinden - warum wird das nicht besprochen?&lt;br /&gt;
&lt;br /&gt;
([[User:Mrohr|Matthias]]) Sehe ich persoenlich nicht so, da CSRF primaer ein Applikations-Fehler ist, und auch in der Applikation und nicht im Environment (AppServer) geloest werden sollte. Auch wenn das manchmal ggf. die einzig machbare Loesung darstellt.&lt;br /&gt;
&lt;br /&gt;
([[User:Mrohr|Matthias]]) Was generell fehlt, ist ein Hinweis darauf, dass schreibende Requests generell per HTTP Post abgewickelt werden sollten, da HTTP Get keine &amp;quot;Safe Method&amp;quot;  (siehe HTTP 1.1, RFC 2616) ist.&lt;br /&gt;
&lt;br /&gt;
== M 4.WA20Sicherer Entwurf der Logik von Web-Anwendungen (Markus, Matthias) ==&lt;br /&gt;
; Rollbacks:&lt;br /&gt;
 Tritt ein Fehler auf muss die Applikation einen konsistenten Datenstand zurück lassen. Das wird hier nicht erwähnt.&lt;br /&gt;
; RaceConditions:&lt;br /&gt;
 Fehler in der Geschäftslogik können auch durch zwei gleichzeitige Sessions auf einer Webapplikation auftreten - das wird hier nicht besprochen.&lt;br /&gt;
&lt;br /&gt;
([[User:Mrohr|Matthias]]) Ehrlich gesagt kann ich nicht ganz nachvollziehen, was der Sichere Entwurf der Logik von Web-Anwendungen mit dem Verzicht auf aktive Inhalte zu tun hat. Unabhaengig davon sollte man solche unsinnigen Aussagen im Jahre 2012 nicht mehr treffen, damit macht man sicht nur laecherlich.&lt;br /&gt;
&lt;br /&gt;
Nichts desto trotz, was hier als &amp;quot;echte&amp;quot; Massnahmen erwaehnt werden sollte sind:&lt;br /&gt;
* Verhinderung von Race Conditions, aber nicht nur durch Concurrent Sessions sondern auch durch Singletons (TOCTOU)&lt;br /&gt;
* Enforcements von Workflows, etwa durch die Verwendung von State Machines oder Request Tokens (auch bekannt als Site Usage Enforcement)&lt;br /&gt;
* Fail Securely (bzw. Verweis)&lt;br /&gt;
* Serverseitige Abbildung der Anwendungslogik, zumindest wenn diese sicherheitsrelevant sit&lt;br /&gt;
&lt;br /&gt;
== M 4.WA22Verhinderung der Blockade von Ressourcen (DoS) bei Web-Anwendungen (Markus, Matthias) ==&lt;br /&gt;
; Datenspeicher:&lt;br /&gt;
 Neben dem Datenspeicher sollte auch der RAM-Verbrauch pro Thread der Applikation limitiert werden.&lt;br /&gt;
([[User:Mrohr|Matthias]]) Stimmt, ich wuerde hier sogar allgemein von Ressourcenverbrauch am Beispiel RAM und Datenspeicher, sprechen&lt;br /&gt;
&lt;br /&gt;
; Voraggregation von Daten / Caching&lt;br /&gt;
 Dieser Punkt fehlt: Stark ressourcen belastende Anfragen können auch in Lastarmen Zeiten vorberechnet werden.&lt;br /&gt;
([[User:Mrohr|Matthias]]) Stimmt, koennte noch als Anmerkung bei &amp;quot;Cachen von Anfragen&amp;quot; hinzugefuegt werden&lt;br /&gt;
&lt;br /&gt;
([[User:Mrohr|Matthias]]) Noch drei Anmerkugnen&lt;br /&gt;
&lt;br /&gt;
; Prueffrage: &amp;quot;Wird ein möglicher Überlauf von Protokolldaten... verhindert&amp;quot;&lt;br /&gt;
&lt;br /&gt;
Ist eine etwas eingeschrankte Sicht. Wurde hier eher von Ueberlauf von Speicherplaz zu Beispiel im Rahmen der Protokollierung sprechen&lt;br /&gt;
&lt;br /&gt;
; Durchfuehrung von Lasttests zur Identifikation ressourcenintensiver Operationen&lt;br /&gt;
&lt;br /&gt;
Der Hinweis waere ggf. erwahnenswert&lt;br /&gt;
&lt;br /&gt;
; Hinweis auf nicht-angemeldeten Bereich&lt;br /&gt;
&lt;br /&gt;
Das Risiko durch rechenintensive Operationen durch einen DoS betroffen zu sein ist natuerlich fuer gewoehlich um so groesser, wenn diese im anonymen Bereich angeboten wird. Der Hinweis ware ggf. ebenfalls hilfreich.&lt;br /&gt;
&lt;br /&gt;
== M 4.WA25Verhinderung von Clickjacking (Markus) ==&lt;br /&gt;
Ok - das passt soweit.&lt;br /&gt;
&lt;br /&gt;
([[User:Mrohr|Matthias]]) Stimmt, auch wenn ich &amp;quot;Angreifer&amp;quot; in dem Beispiel eher als &amp;quot;Webseitenbetreiber&amp;quot; beschreiebn wuerde, da er nicht wirklich aktiv einen Angriff durchfuehrt, oder? Bitte nochmal ueber meinen Hinweis aus G 5.WA18 nachdenken: Ist Clickjacking-Schutz tatsaechlich Grundschutz? Ich bin mir da selber nicht so wirklich sicher.&lt;br /&gt;
&lt;br /&gt;
== M 5.WA21Sichere Anbindung von Hintergrundsystemen an Web-Anwendungen (Markus) ==&lt;br /&gt;
; Verantwortliche:&lt;br /&gt;
 Architekten fehlen. Entwickler müssen die Views umsetzen und die Datasource entsprechend einbinden - die fehlen hier ebenfalls.&lt;br /&gt;
; DirectorySystem Beispiel:&lt;br /&gt;
 Das DirectorySystem wird in dem angegeben Beispiel zum Single Point of Failure - das wird verschwiegen.&lt;br /&gt;
; Firewalls:&lt;br /&gt;
 Das sind fachlich-blinde Systeme. Was ist mit WAFs / IDS / IPS etc.?&lt;br /&gt;
([[User:Mrohr|Matthias]]) Stimmt, das hat in diesem Baustein nichts zu suchen&lt;br /&gt;
&lt;br /&gt;
([[User:Mrohr|Matthias]]) Noch ein weiterer Punkt von mir&lt;br /&gt;
&lt;br /&gt;
; Typische Hintergrundsysteme&lt;br /&gt;
Hier fehlt irgendwie &amp;quot;Middleware&amp;quot;, die ist denke ich nicht immer Legacy&lt;br /&gt;
&lt;br /&gt;
== M 5.WA23Systemarchitektur einer Web-Anwendung (Markus) ==&lt;br /&gt;
; Verantwortliche:&lt;br /&gt;
Auch hier fehlend wieder die Architekten. &lt;br /&gt;
; Virtualisierung:&lt;br /&gt;
Virtualisierung bietet weitere Angriffsvektoren (z.B.: Hypervisor) die eine &amp;quot;Blech&amp;quot;Farm nicht bietet.&lt;/div&gt;</summary>
		<author><name>Mrohr</name></author>	</entry>

	<entry>
		<id>https://wiki.owasp.org/index.php?title=Talk:OWASP_Review_BSI_IT-Grundschutz_Baustein_Webanwendungen&amp;diff=130184</id>
		<title>Talk:OWASP Review BSI IT-Grundschutz Baustein Webanwendungen</title>
		<link rel="alternate" type="text/html" href="https://wiki.owasp.org/index.php?title=Talk:OWASP_Review_BSI_IT-Grundschutz_Baustein_Webanwendungen&amp;diff=130184"/>
				<updated>2012-05-21T13:21:30Z</updated>
		
		<summary type="html">&lt;p&gt;Mrohr: /* M 4.WA15Schutz vertraulicher Daten bei Web-Anwendungen (Markus, Matthias) */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Since it's about a review of a document in German, all the discussions will be done in German :-)&lt;br /&gt;
&lt;br /&gt;
Diskussionen rund um den Review des &amp;quot;IT-Grundschutzbausteins Webanwendungen&amp;quot; finden hier statt, sinnvollerweise auf Deutsch :-)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Vorschlag für Kriterien, die an unser Review angelegt werden sollten (.kai) ==&lt;br /&gt;
&lt;br /&gt;
* Der Baustein soll alle wichtigen Themen der Entwicklung sicherer&lt;br /&gt;
Webanwendungen enthalten.&lt;br /&gt;
&lt;br /&gt;
* Der Baustein soll die verschiedenen Phasen der Software-Entwicklung&lt;br /&gt;
vollständig abdecken.&lt;br /&gt;
&lt;br /&gt;
* Der Baustein soll zwischen verbindlichen, prüfbaren Vorgaben und&lt;br /&gt;
unverbindlichen Empfehlungen sprachlich sauber unterscheiden (hier&lt;br /&gt;
spielt mein Auditorenblick eine Rolle). Vor allem soll der Baustein&lt;br /&gt;
verbindliche Anforderungen auch tatsächlich stellen. Alle&lt;br /&gt;
verbindlichen Anforderungen müssen unabhängig von der jeweiligen&lt;br /&gt;
Umgebung auch umsetzbar sein, d.h. sie müssen entsprechend generisch&lt;br /&gt;
sein.&lt;br /&gt;
&lt;br /&gt;
* Die Maßnahmen sollen nur in (begründbaren) Ausnahmen zu Empfehlungen&lt;br /&gt;
von OWASP im Widerspruch stehen.&lt;br /&gt;
&lt;br /&gt;
* Die Maßnahmen sollen verständlich und anwendbar sein.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== &amp;quot;Hilfsmittel&amp;quot; (Markus) ==&lt;br /&gt;
Ich würde das Script zur Vermeidung von Clickjacking wrappen und nicht als losen Skript-block in den Text einbinden - einfach schlechter Programmierstiel diese losen Blöcke.&lt;br /&gt;
Der Zugriff auf das Body-Element mit byTagName-Array[0] ist auch nicht wirklich gut. Ich halte Zugriffe über das DOM (klassisch), bei ID bzw. XPATH für besser. &lt;br /&gt;
&lt;br /&gt;
SQL-Injection Characters:&lt;br /&gt;
die Pipe fehlt hier zur Textkonatenierung&lt;br /&gt;
+ / - haben auch eine Bedeutung bei JOINs.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== &amp;quot;Goldene Regeln&amp;quot; (Matthias) ==&lt;br /&gt;
&lt;br /&gt;
Hier meine Anmerkungen zu diesem Dokument:&lt;br /&gt;
&lt;br /&gt;
; 1. Für mich fehlende Punkte&lt;br /&gt;
* Korrektur der Ursache (Root Cause) von Schwachstellen statt  Verhinderung deren Ausnutzung&lt;br /&gt;
* Bezug auf Minimierung der Angriffsfläche und Least-Privilege-Prinzip&lt;br /&gt;
* Bezug auf Defense-in-Depth-Prinzip&lt;br /&gt;
* Verwendung von getesteten Security APIs (z.B. OWASP ESAPI) statt selbstentwickelter Funktionen&lt;br /&gt;
* Bezug auf Externalisierung von Sicherheitsfunktionen, sowie deklerative vor programmatischer Sicherheit.&lt;br /&gt;
&lt;br /&gt;
; 2. Begriff &amp;quot;Web-Anwendung&amp;quot;&lt;br /&gt;
Würde ich generell durch &amp;quot;Webanwendung&amp;quot; ersetzen.&lt;br /&gt;
&lt;br /&gt;
; 3. Einleitung (&amp;quot;Web-Anwendungen stellen Funktionalität zur Verfügung, ...&amp;quot;)&lt;br /&gt;
&lt;br /&gt;
Wozu dient dieser Satz?&lt;br /&gt;
&lt;br /&gt;
; 4. &amp;quot;Die Architektur der Web-Anwendung ist im Sicherheitskonzept zu  dokumentieren.....&amp;quot; &lt;br /&gt;
&lt;br /&gt;
Ich fände es sinnvoller, wenn hier von der &amp;quot;Sicherheitsarchitektur&amp;quot; gesprochen wird, welche etwa neben den sicherheitsrelevanten Datenflüssen, sensible Komponenten, Entry Points, Akteure architekturelle Security Controls wie Authentisierung, Kryptographie und natürlich die Trust Boundaries beinhaltet.&lt;br /&gt;
&lt;br /&gt;
; 5. &amp;quot;Bei Web-Anwendungen handelt es sich häufig um spezielle Eigenentwicklungen....&amp;quot;&lt;br /&gt;
&lt;br /&gt;
Erstens würde ich hier den geläufigen Begriff &amp;quot;Individualsoftware&amp;quot; verwenden. Zweitens würde ich statt bestimmte SDLC-Phasen vorzugeben (die Begriffe &amp;quot;Softwareverteilung&amp;quot; und &amp;quot;Integration&amp;quot; sind mir bei Webanwendungen bisher noch nicht so häufig untergekommen), besser von der Notwendigkeit sprechen, Sicherheit in allen Entwicklungsphasen zu berücksichtigen, also eines SDLs.&lt;br /&gt;
&lt;br /&gt;
; 6. &amp;quot;Alle Ein- und Ausgaben der Web-Anwendung müssen in eine normalisierte Form überführt werden....&amp;quot;&lt;br /&gt;
&lt;br /&gt;
Normalisierung ist für mich nicht gleich Kanonsierung, auch wenn beide Begriffe häufig als synonym verwendet werden.  Der Unterschied wird in der [http://owasp-esapi-java.googlecode.com/svn/trunk_doc/2.0-rc4/org/owasp/esapi/Encoder.html API-Beschreibung der ESAPI] erklärt. Die Normalisierungs-Funktion ist allerdings schon vor einiger Zeit aus der ESAPI [https://lists.owasp.org/pipermail/esapi-dev/2010-January/000266.html rausgeflogen]. Die generelle Kanonisierung von Ausgaben halte ich dazu für nicht sinnvoll.&lt;br /&gt;
&lt;br /&gt;
Zweitens, finde ich den weiteren Text zwar grundsätzlich formal korrekt, aber so allgemein, dass dieser glaube ich niemandem so richtig etwas bringt.  &lt;br /&gt;
&lt;br /&gt;
Besser fände ich hier Ein- von Ausgabevalidierung grundsätzlich voneinander abzugrenzen. Etwa was ich per Eingabevalidierung (Längenprüfung, Casting, etc. per Whitelisting) und was mit Ausgebavalidierung (Enkodierung, Escaping, Parametrisierung) machen muss und kann.&lt;br /&gt;
&lt;br /&gt;
Eingabedaten können technisch zudem auch Werte eingelesener Property-Dateien sein. Muss ich die auch validieren? Ist das dann noch Grundschutz? &lt;br /&gt;
&lt;br /&gt;
; 7. &amp;quot;Für den Zugriff auf sensitive Funktionen oder Informationen muss die Web-Anwendung eine wirksame Authentisierung und Sitzungsverwaltung unterstützen. Die Eigenschaften der Sitzungs-ID müssen so gewählt werden, dass die Sitzung ausreichend geschützt ist. ....&amp;quot;&lt;br /&gt;
&lt;br /&gt;
Besser fände ich &amp;quot;eine Authentisierung, die über eine dem Schutzbedarf der Anwendung angemessene Stärke verfügt.&amp;quot; &lt;br /&gt;
&lt;br /&gt;
Eigentlich geht es doch mehr um den Schutz der Sitzungs-ID, da diese gewöhnlich im Verlauf einer Sitzung den Client authentisiert. Oder den Schutz des Zugriffs auf eine Sitzung. &lt;br /&gt;
&lt;br /&gt;
Zudem fehlt hier meiner Meinung nach der Hinweis auf die bevorzugte Verwendung getesteter Standardkomponenten.&lt;br /&gt;
&lt;br /&gt;
; 8. &amp;quot;Die Web-Anwendung sollte die zu übermittelnden Daten schützen.&amp;quot;&lt;br /&gt;
&lt;br /&gt;
Dies würde ich nur auf sensible Daten beziehen. Zusätzlich zu HTTPS würde ich hier schreiben, dass sensible Daten generell nicht in der URL übertragen werden dürfen.&lt;br /&gt;
&lt;br /&gt;
; 9. &amp;quot;Die Preisgabe interner Informationen (z.B. Kommentare, Fehlermeldungen)&amp;quot;&lt;br /&gt;
&lt;br /&gt;
Hier würde ich eher schreiben &amp;quot;(IN Kommentaren, Fehlermeldungen, HTTP Headern, etc.)&amp;quot;&lt;br /&gt;
&lt;br /&gt;
; 10. &amp;quot;Fehler müssen so behandelt werden, ... müssen Fehler bei der Autorisierung zu einer Verweigerung beim Zugriff auf die angeforderte Ressource führen.&amp;quot;&lt;br /&gt;
&lt;br /&gt;
Sprachlich: &amp;quot;Die Webanwendung muss sich stets in einem sicheren Zustand befinden. Beispielsweise müssen Fehler bei der Autorisierung zu einer Verweigerung des Zugriffs führen (Default-Deny-Strategie).&amp;quot;&lt;br /&gt;
&lt;br /&gt;
; 11. &amp;quot;Die Logging-Funktionen der Web-Anwendung müssen aufgetretene Ereignisse derart protokollieren, dass sicherheitskritische Vorfälle nachvollzogen werden können.&amp;quot;&lt;br /&gt;
&lt;br /&gt;
Hier würde hier eher von &amp;quot;allen sicherheitsrelevanten Ereignissen&amp;quot; sprechen.&lt;br /&gt;
&lt;br /&gt;
Weiterhin sollten insbesondere beim Logging der Datenschutz berücksichtigt werden, personenbezogene Daten also nach Möglichkeit nicht oder nur anonymisiert in technischen Logdateien protokolliert werden.&lt;br /&gt;
&lt;br /&gt;
; 12. &amp;quot;Alle Sicherheitsmechanismen (z.B. Authentisierung und Zugriffskontrolle) sind serverseitig zu implementieren und können nicht durch clientseitige Mechanismen ersetzt werden.&amp;quot;&lt;br /&gt;
&lt;br /&gt;
Die Aussage ist so nicht korrekt. Darüber hatten wir bereits bei der ASVS mehrfach diskutiert. &lt;br /&gt;
&lt;br /&gt;
Überall dort wo der Client angegriffen wird, also etwa bei RIAs (Stichwort DOM-Based XSS) müssen wir Security Controls clientseitig implementieren. Es gibt mittlerweile deshalb auch eine Portierung der ESAPI auf Javascript. Überall dort wo der Server oder Hintegrundsysteme angegriffen werden, ist die Aussage aber natürlich zutreffend.&lt;br /&gt;
&lt;br /&gt;
== &amp;quot;Gefährdungen&amp;quot; (Markus, Dennis, .... &amp;lt;Dein Name&amp;gt;) ==&lt;br /&gt;
; Generell:&lt;br /&gt;
Reference auf RFCs fehlen.&lt;br /&gt;
&lt;br /&gt;
==B.5.XX Web-Anwendungen ==&lt;br /&gt;
; 1. Erster Absatz - Letzter Satz: --Wieso werden hier nur HTML/XML Doks und Oberflächen angesprochen? Was ist der Unterschied zwischen einem HTML-Dok und einer Oberfläche? Was ist mit  Flash, etc.? Was ist mit WebSockets?&lt;br /&gt;
; 2. Stichpunkt &amp;quot;Protokollierung&amp;quot;: Sicherheits relevant ist ein sehr dehnbarer Begriff - Eine bessere Formulierung könnte sein: Zur Rekonstruktion von Nutzerhandlungen nötige Ereignisse (positve &amp;amp; negative) müssen protokolliert werden . . . &lt;br /&gt;
; 3. Absatz: &amp;quot;Abgrenzung des Bausteins&amp;quot;: &amp;quot;Die spez. Sicherheitsanforderungen an Web-Services werden in diesem Baustein nicht betrachtet&amp;quot; --&amp;gt; Wie so nicht? Was ist das Backend von einer Rest / AJAX-basierenden Webanwendung denn anderes als ein Web-Service? Diesen Satz würde ich entfernen.&lt;br /&gt;
; 4.Vorsätzliche Handlungen -&amp;gt; Web-Spoofing (G.5.87) -- Missverständliche Bezeichnung / Nomenklatur&lt;br /&gt;
; 5. Seite 4 : erste Zeile &amp;quot;Umsetzung&amp;quot;: &amp;quot;dafür umzusetztende Komponenten müssen die Webanwendung schützen...&amp;quot; - Hier fehlt mir der Hinweis, dass dieser Schutz verifiziert werden muss.&lt;br /&gt;
; 6 Seite 5: &amp;quot;Umsetzung&amp;quot; - Wir haben CSRF, D(D)os und SQL-Injection aber wo ist XSS?&lt;br /&gt;
; 7 Seite 7: &amp;quot;Die Sicherheitsfunktion wird ausschließlich clientseitig...&amp;quot; --&amp;gt; Warum muss der Angreifer überhaupt einen Browser umkonfigurieren? Was ist mit Proxies, Scripts, etc.? Ich würde das reduzieren darauf, dass rein Webbrowser-basierende Schutzfunktionen einfach umgangen werden können.&lt;br /&gt;
; 8 Seite 8: Die angesprochenen Punkte hinterlassen den Eindruck nicht vollständig zu sein: Mir fehlen Punkte wie &amp;quot;Outsourcing&amp;quot;, &amp;quot;KnowHow der Entwickler&amp;quot;, Tooling, Framework-Auswahl, etc.&lt;br /&gt;
; 9 Seite 9: Eigentlich möchte der Autor hier über Datenschutz sprechen. Abgesehen von den letzten drei Zeilen geht es aber nur um &amp;quot;User tracking&amp;quot; - Wo ist der Rest der Datenschutzproblematik? Warum der Fokuss auf Tracking? Mir ist das zu einseitig.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
tbd.&lt;br /&gt;
&lt;br /&gt;
; Wortwahl:&lt;br /&gt;
Ich stosse innerhalb der Texte immer wieder an die Worten '''Hintergrundsystem''' und '''Sicherheitskontext'''.&lt;br /&gt;
'''Hintergrundsystem:''' besseres Synonym?&lt;br /&gt;
'''Sicherheitskontext:''' nur weil es in den Texten um Sicherheit geht muss nicht an jeder Stelle immer wieder das Wort _Sicherheits_kontext eingebaut werden.&lt;br /&gt;
Bsp: &amp;quot;Erlangt ein Angreifer Kenntnis von einer solchen gültigen, aber nicht mehr genutzten SessionID, so kann er die Web-Anwendung im Sicherheitskontext des nicht abgemeldeten Benutzers weiter verwenden.&amp;quot; (G 5,WA12 Unzureichendes Session-Management von Web-Anwendungen)&lt;br /&gt;
Verbesserungsansansatz: ... so kann er die Web-Anwendung anstelle des eigentlichen Besitzers weiterhin verwenden.&lt;br /&gt;
&lt;br /&gt;
== &amp;quot;G 2.WA01 Mangelhafte Auswahl oder Konzeption von Web-Anwendungen&amp;quot; (Matthias) ==&lt;br /&gt;
&lt;br /&gt;
Nachdem ich mir diese Gefährdung durchgelesen hatte, fehlten mir ehrlich gesagt etwas die Worte. Nicht nur, dass hier fast jeder zweite Satz entweder falsch ist bzw. massive Fehler enthält oder ich diesen schlicht nicht verstehe, ist der ganze Text sprachlich wirklich enorm verbesserungsfähig. &lt;br /&gt;
&lt;br /&gt;
Na gut, ich konzentriere mich mal auf die fachlichen Punkte:&lt;br /&gt;
&lt;br /&gt;
; 1. Security Controls&lt;br /&gt;
Werden mal mit &amp;quot;Schutzmechanismen&amp;quot;, mal mit &amp;quot;Sicherheitskomponenten&amp;quot; und dann wieder als &amp;quot;Sicherheitsfunktionen&amp;quot; bezeichnet. Hier macht eine einheitliche Benennung sicherlich Sinn und ist weniger verwirrend.&lt;br /&gt;
&lt;br /&gt;
; 2. &amp;quot;Eine Web-Anwendung ist in der Regel ein verteiltes, komplexes System bestehend aus unterschiedlichen Komponenten (z. B. Webserver, Applikationsserver, Hintergrundsysteme)&amp;quot;&lt;br /&gt;
&lt;br /&gt;
Eine Webanwendung besteht sicher nicht aus einem Webserver- oder anderer infrastruktureller Komponenten, sondern ist Software welches diese nutzt.&lt;br /&gt;
&lt;br /&gt;
; 3. &amp;quot;Bei individuell entwickelten Web-Anwendungen sind im Allgemeinen die Frameworks, Komponenten und Schnittstellen im Rahmen der Konzeption auszuwählen und deren Einbindung und Absicherung zu betrachten....Im Gegensatz dazu ist bei der Konzeption von Web-Anwendungen auf Basis von Standardsoftware insbesondere auf die Auswahl der Software und die Konfiguration der Teilkomponenten zu achten&amp;quot;&lt;br /&gt;
&lt;br /&gt;
Wir unterscheiden im Rahmen von Webanwendungen eigentlich Free or Opensource Software (FOSS bzw. FLOSS), Standardsoftware und Individualsoftware voneinander. Wir unterscheiden nicht Frameworks von Standardsoftware. Frameworks können Teil von Standardsoftware sein, wie etwa bei SharePoint, SAP, etc, oder aber FOSS, wie etwa Spring. Die ganzen Absätze machen für mich daher keinen Sinn.&lt;br /&gt;
&lt;br /&gt;
; 4. &amp;quot;Eine Sicherheitsfunktion (z. B. Authentisierung, Autorisierung) wird nicht an einer Stelle umgesetzt und verwendet, sondern ist mehrfach in der Web- Anwendung realisiert. Wird diese Sicherheitsfunktion an den verschiedenen Stellen unterschiedlich umgesetzt, führt dies zu einem uneinheitlichen Sicherheitsniveau.&amp;quot;&lt;br /&gt;
&lt;br /&gt;
Natürlich ist die mehrfache Verwendung bestimmter Security Controls, beispielsweise von Zugriffskontrollen (Complete-Mediation) oder Validierung (Robustheit) erstrebenswert. Was der Autor hier wahrscheinlich meinte, war die Notwendigkeit diese zu Kapseln bzw. zu Externalisieren. Das bezieht sich im übrigen nicht nur auf die Controls selbst, sondern auch auf ihre Parametrisierung (etwa. über Konfigdateien / XACML).&lt;br /&gt;
&lt;br /&gt;
Wichtiger wäre in diesem Zusammenhang zudem die fehlende Berücksichtigung bestimmter Security Controls.&lt;br /&gt;
&lt;br /&gt;
; 5. &amp;quot;Auswahl von Web-Anwendungen auf Basis von Standardsoftware&amp;quot;&lt;br /&gt;
Was will der Satz sagen? Ich wähle Standardsoftware aus, aber doch keine Webanwendungen. Oder heißt das, ich kaufe eine existierende Anwendung ein (Webanwendung!=Indivudualsoftware)? &lt;br /&gt;
&lt;br /&gt;
; 6. &amp;quot;Das ausgewählte Produkt verfügt nicht über die ausreichende Sicherheitsfunktionalität, ... Daher müssen die notwendigen Schutzmechanismen nachträglich hinzugefügt werden, wodurch zusätzliche Aufwände entstehen.&amp;quot;&lt;br /&gt;
Das ist etwas sehr positiv formuliert. Tatsächlich können fehlende Security Controls in zugekaufter Software (insb. Standardsoftware) in der Realität häufig gar nicht hinzugefügt werden oder nur perimetrisch (z.B. per WAF oder Access Gateway).&lt;br /&gt;
&lt;br /&gt;
; 7. &amp;quot;Die Hintergrundsysteme werden unzureichend abgesichert und dadurch ist die Datenbank der Web-Anwendung aus dem Internet erreichbar.&amp;quot;&lt;br /&gt;
Gehören fehlende Netzwerksegmentierung bzw. Firewallregeln wirklich in diesen Kontext? Das ist doch eigentlich Grundschutz der Infrastruktur, oder?&lt;br /&gt;
&lt;br /&gt;
; 8. &amp;quot;Aufgrund schwacher Parameter in der Konfiguration des Frameworks zum Session-Management werden unsichere SessionIDs erzeugt.&amp;quot;&lt;br /&gt;
Was sind &amp;quot;schwache&amp;quot; Parameter?&lt;br /&gt;
&lt;br /&gt;
Welches Framework erlaubt unsichere SessionIDs durch eine &amp;quot;schwache&amp;quot; Konfiguration zu erzeugen?&lt;br /&gt;
&lt;br /&gt;
; 9. &amp;quot;Wird die Konfiguration des Web-Browsers durch einen Angreifer manipuliert, können die clientseitig umgesetzten&amp;quot;&lt;br /&gt;
&lt;br /&gt;
Manipuliert ein Angreifer die Konfguration seines Webbroswers, wenn er einen MITM-Proxy konfiguriert?&lt;br /&gt;
&lt;br /&gt;
Wie bereits bei den &amp;quot;Goldenen Regeln&amp;quot; angemerkt, gilt auch hier, das manche Security Controls auch clientseitig umgesetzt werden dürfen (etwa. zur Verhinderung von Dom-Based XSS).&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== &amp;quot;G 5.WA10 Fehler in der Web-Anwendungslogik&amp;quot; (Dennis) ==&lt;br /&gt;
; 1. &amp;quot;Damit kann aufgrund der Prüfreihenfolge ein hoher Ressourcenverbrauch provoziert werden, der für Denial-of-Service-Angriffe ausgenutzt werden kann.&amp;quot;&lt;br /&gt;
Meiner Meinung nach passt in diesem Kontext die Attacke DoS nicht ganz. Falls die nachfolgende Funktionalität wegen der langen Ausführungszeit der Filterkomponente übersprungen wird bzw. ein Fehler auftritt würde dies meiner Ansicht in die Thematik Anwendungslogik passen. Eine DoS-Attacke kann hingegen anhand jeder Funktion durchgeführt werden.&lt;br /&gt;
&lt;br /&gt;
== &amp;quot;G 5.WA11 Umgehung clientseitig umgesetzter Sicherheitsfunktionen von Web-Anwendungen&amp;quot; (Dennis) ==&lt;br /&gt;
; 1. &amp;quot;Ein Angreifer kann diese ausnutzen, um beispielsweise unbefugt Befehle an Hintergrundsysteme der Web-Anwendung zu übermittlen (z.B. in Form von Datenbankanfragen bei einer SQL-Injection).&amp;quot;&lt;br /&gt;
Umformulierung des Inhalts der Klammer. Hatte beim ersten Lesen für mich den Anschein, als ob ein Formular genutzt werden könnte welches den Nutzer aufforder eine SQLI einzugeben. Ich denke &amp;quot;Datenbankanfrage zwecks Ausführung einer SQL-Injection&amp;quot; würde besser passen.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== G 2.WA02 Mängel bei der Entwicklung und der Erweiterung von Web-Anwendungen (Matthias) ==&lt;br /&gt;
&lt;br /&gt;
Allgemein ist de obere Teil ok, die aufgezählten &amp;quot;Auswirkungen von fehlenden Vorgaben&amp;quot; verstehe ich jedoch nicht. Wo ist etwa der Bezug von Barrierefreiheit auf die Anwendungssicherheit?&lt;br /&gt;
&lt;br /&gt;
Mein Vorschlag, um diese Punkte etwa sinnvoll umzubauen:&lt;br /&gt;
* &amp;quot;Fehlendes Vorgehensmodell&amp;quot;: Bezug auf fehlende Berücksichtigung von Sicherheit im SDLC. Statt eines SDLCs selbst sollte hier besser auf die Notwendigkeit eines Secure Development Lifecycle (SDL) hingewiesen werden&lt;br /&gt;
* &amp;quot;Fehlende Programmierrichtlinien&amp;quot; =&amp;gt; Besser wäre hier &amp;quot;Fehlende Sicherheitsrichtlinien in der Programmierung&amp;quot; also &amp;quot;Secure Coding Guidelines&amp;quot;&lt;br /&gt;
* &amp;quot;Testfälle&amp;quot; =&amp;gt; &amp;quot;Sicherheitsrelevante Testfälle&amp;quot; (z.B. Security Unit Tests). &lt;br /&gt;
* &amp;quot;Barrierefreiheit&amp;quot;: Warum nicht an dieser Stelle die Auswirkungen von Sicherheitsfunktionen auf die Bedienbarkeit, etwa anhand von CAPTCHAS erläutern?&lt;br /&gt;
&lt;br /&gt;
== G 2.WA03 Unzureichender Schutz personenbezogener Daten bei Web-Anwendungen (Matthias) ==&lt;br /&gt;
&lt;br /&gt;
Der Titel dieses Bausteines heißt &amp;quot;Schutz personenbezogener Daten&amp;quot;, die genannten Beispiele beziehen sich bis auf den letzten jedoch auf die missbräuchliche (oder zumindest problematische) Nutzung aus Sicht des Datenschutzes. &lt;br /&gt;
&lt;br /&gt;
Die Punkt 1-3 sollten daher besser entfallen und z.B. durch die Folgenden ersetzt werden:&lt;br /&gt;
* Unsichere Einbindung von sozialen Netzwerken (Bezug nehmen auf den Like-Button bei Facebook)&lt;br /&gt;
* Unsichere Einbindung von Werbeinhalten&lt;br /&gt;
* Unsichere Übertragung und Caching&lt;br /&gt;
* Unsichere Protokollierung&lt;br /&gt;
* Ungenügender Zugriffsschutz&lt;br /&gt;
* Verstoß des Minimalprinzips bzw. der Zweckgebundenheit (welche Daten werden wirklich benötigt)&lt;br /&gt;
&lt;br /&gt;
Auch wäre es ggf. zumindest einen Verweis auf das BDSG zu machen.&lt;br /&gt;
&lt;br /&gt;
== G 4.33 Unzureichende oder fehlende Authentisierung (Matthias) ==&lt;br /&gt;
&lt;br /&gt;
; 1. Erster Absatz: &amp;quot;Wenn Authentisierungsmechanismen fehlen oder zu schlecht sind&amp;quot;&lt;br /&gt;
&lt;br /&gt;
&amp;quot;schlecht&amp;quot; sollte vlt besser durch &amp;quot;unzureichend&amp;quot; ersetzt werden.&lt;br /&gt;
&lt;br /&gt;
; 2. &amp;quot;Sicherheitslücken entstehen bei... der Benutzerauthentisierung&amp;quot;&lt;br /&gt;
&lt;br /&gt;
Hier findet nur ein Bezug auf &amp;quot;Passwörter&amp;quot; statt. Der Bezug auf die fehlerhaft implementierte oder dem Schutzbedarf ungenügende Schutzmechanismen (z.B. keine 2-Faktor-Authentisierung bei hochsensiblen Daten) fehlt. Auch auf das komplette fehlen von Authentisierungs-Controls wird hier nicht  eingegangen&lt;br /&gt;
&lt;br /&gt;
; 3. &amp;quot;Sicherheitslücken entstehen bei... der Komponentenauthentisierung&amp;quot;&lt;br /&gt;
&lt;br /&gt;
Wie bei 2., wird auch hier wieder nur auf Passwörter, nicht jedoch auf das fehlen von Controls selbst eingegangen. An dieser Stelle fehlt auch ein Hinweis auf die Notwendigkeit dedizierter Benutzeraccounts.&lt;br /&gt;
&lt;br /&gt;
; 4. &amp;quot;Sicherheitslücken entstehen bei... der Wahl des Verfahrens&amp;quot;&lt;br /&gt;
&lt;br /&gt;
Statt untauglich würde ich auch hier von &amp;quot;dem Schutzbedarf der Daten nicht angemessen&amp;quot; sprechen, eigentlich gehört das für mich aber in die obigen Punkte.&lt;br /&gt;
&lt;br /&gt;
; 5. Serverseitige Authentisierung fehlt&lt;br /&gt;
&lt;br /&gt;
Auch der Server (bzw. die Anwendung selbst) kann sich fehlerhaft oder ungenügend beim Benutzer authentsieren, etwa über DNS, SSL-Zertifikate, etc.&lt;br /&gt;
&lt;br /&gt;
== G 4.WA04 Unzureichende Validierung von Ein- und Ausgabedaten bei Web-Anwendungen (Matthias) ==&lt;br /&gt;
&lt;br /&gt;
; 1. &amp;quot;Unzureichende Validierung von Eingabedaten&amp;quot;&lt;br /&gt;
&lt;br /&gt;
Die genannten Beispiele sind genau keine korrekten Beispiele für diesen Fall, sondern betreffen die Ausgabevalidierung bzw. Enkodierung. Typische Fehler der Eingabevalidierung ist eine Manipulierbarkeit der Business Logik.&lt;br /&gt;
&lt;br /&gt;
; 2. &amp;quot;Unzureichende Validierung von Ausgabedaten&amp;quot;&lt;br /&gt;
&lt;br /&gt;
Hier geht es zentral um die Verhinderung von Interpreter Injection, also serverseitig (z.B. SQL oder LDAP Injection) oder clientseitig (XSS, JSON Injection, etc.). Statt &amp;quot;können die Ausgaben Schadcode&amp;quot; enthalten würde ich hier eher davon Sprechen, dass ein solcher Interpreteraufruf manipuliert werden kann (was dann z.B. zur Einschleusung von Schadcode genutzt werden kann).&lt;br /&gt;
&lt;br /&gt;
; 3. &amp;quot;Die Suchfunktion der Web-Anwendung verwendet die Eingaben der Benutzer ungefiltert&amp;quot;&lt;br /&gt;
&lt;br /&gt;
Mit ungenügender &amp;quot;Filterung&amp;quot; hat SQL Injection nichts zu tun,  eigentlich geht es hierbei darum, dass SQL-Anfragen dynamisch mit unvalidierten Eingebedaten zusammengebaut (konkateniert) werden.&lt;br /&gt;
&lt;br /&gt;
; 4. &amp;quot;Ungefilterter HTML-Code in Kommentar-Funktion&amp;quot;&lt;br /&gt;
&lt;br /&gt;
Hier fehlt der Bezug auf persistentes XSS, das hier sicherlich zentral ist.&lt;br /&gt;
&lt;br /&gt;
== G 4.WA05 Fehlende oder mangelhafte Fehlerbehandlung durch Web-Anwendungen (Tobias, Matthias) ==&lt;br /&gt;
; Abschnitt &amp;quot;Unsichere Fehlerbehandlung&amp;quot;&lt;br /&gt;
Die G adressiert &amp;quot;Unsichere Fehlerbehandlung&amp;quot;, der Abschnitt die &amp;quot;Unsichere Fehlerbehandlung in Sicherheitskomponenten&amp;quot;. Entsprechend sollte der fettgedruckte Teil angepasst werden.&lt;br /&gt;
&lt;br /&gt;
; &amp;quot;fehlende SQL-Parameter,&amp;quot;&lt;br /&gt;
Sollte besser &amp;quot;Fehlermeldungen bei ungültigen SQL-Abfragen&amp;quot; lauten.&lt;br /&gt;
&lt;br /&gt;
; &amp;quot;Auch scheinbar unkritische Informationen, wie die Meldung ob (..)&amp;quot;&lt;br /&gt;
Korrekt, allerdings nicht nachvollziehbar, wenn das Problem der Leser nicht schon bekannt ist. Daher erweitern nach &amp;quot; Rahmen von Brute-Force-Angriffen ausgenutzt werden.&amp;quot; mit &amp;quot;. Bei Brute-Force-Angriffen wäre in diesem Fall klar, dass der Benutzername gültig ist.&amp;quot;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[User:Mrohr|Matthias]]): Stimme dem Obigen auch zu, ausserdem:&lt;br /&gt;
&lt;br /&gt;
; Sprachlich: &amp;quot;kann dies unvorhersehbare Auswirkungen haben und den Betrieb der Web-Anwendung bis zur Unerreichbarkeit einschränken.&amp;quot;&lt;br /&gt;
&lt;br /&gt;
&amp;quot;Unerreichbarkeit&amp;quot; ist etas merkwuerdig ausgedrueckt, besser ware hier von der &amp;quot;Verfuegbarkeit&amp;quot; zu sprechen. Im Uebrigen fehlt vollstaendig der Bezug auf die Verfuegbarkeit als Primaeres Schutzziel der Informationssicherheit.&lt;br /&gt;
&lt;br /&gt;
; &amp;quot;Clientseitige Fehlerbehandlung&amp;quot;&lt;br /&gt;
Das stimmt soweit, das generelle Problem ist jedoch genereller, naehmlich die clientseitige Abbildung sicherheitsrelaventer Logik (in diesem Fall die Fehlerbehandlung)&lt;br /&gt;
&lt;br /&gt;
== G 4.WA06 Unzureichende Nachvollziehbarkeit von sicherheitsrelevanten Ereignissen bei Web-Anwendungen (Matthias) ==&lt;br /&gt;
&lt;br /&gt;
; 1. Erster Absatz: &amp;quot;Die Behebung einer Schwachstelle ist dann nicht oder nur unter erschwerten Bedingungen möglich.&amp;quot;&lt;br /&gt;
&lt;br /&gt;
Hier würde ich ergänzen: &amp;quot;...und Angriffe auf die Anwendungen können ggf. nicht erkannt oder nachvollzogen werden&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
; 2. &amp;quot;Beispiele&amp;quot;: Kommulierbarkeit&lt;br /&gt;
&lt;br /&gt;
Hier fehlt auch ein Bezug auf die Kommulierbarkeit von SIcherheitsereignissen, dass diese also auch von solchen anderer Systeme in Verbindung gesetzt werden können&lt;br /&gt;
&lt;br /&gt;
; 3. &amp;quot;Beispiele&amp;quot;: Gerichtsverwertbarkeit&lt;br /&gt;
&lt;br /&gt;
Auch die Möglichkeit zur Gerichtsverwertbarkeit (etwa durch eindeutigen Zeitstempel) und manipulationssicherer Speicherung, würde ich an dieser Stelle unbedingt erwähnen.&lt;br /&gt;
&lt;br /&gt;
== G 4.WA07 Offenlegung von Informationen bei Web-Anwendungen (Matthias) ==&lt;br /&gt;
&lt;br /&gt;
; 1. Titel&lt;br /&gt;
&lt;br /&gt;
Hier würde ggf. &amp;quot;Offenlegung vertraulicher Informationen&amp;quot; sicher besser passen als &amp;quot;Offenlegung von Informationen&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
; 2. Beispiellink&lt;br /&gt;
&lt;br /&gt;
Ein Beispiellink (mit und ohne Token) würde sicher die Verständlichkeit dieser Schwachstelle verbessern.&lt;br /&gt;
&lt;br /&gt;
; 3. Erster Absatz: &amp;quot;Wenn demzufolge Informationen unnötig offengelegt werden, steigt die Wahrscheinlichkeit eines erfolgreichen Angriffs.&amp;quot;&lt;br /&gt;
&lt;br /&gt;
Interne Informationen auszublenden ist eine Härtungsmaßnahme, deren Anzeige erhöht aber nicht zwangsläufig die Wahrscheinlichkeit eines erfolgreichen Angriffs. Ich würde diesen Satz weglassen.&lt;br /&gt;
&lt;br /&gt;
 ; 4. Fehlende Punkte&lt;br /&gt;
&lt;br /&gt;
* Ein Hinweis auf HTTP Header wäre hier sicher erwähnenswert.&lt;br /&gt;
* Weiterhin bzgl. der Anzeige von Traces und ein Verweis auf den Entsprechenden Baustein zur Fehlerbehandlung&lt;br /&gt;
&lt;br /&gt;
== G 5.WA14 Cross-Site Request Forgery (CSRF, XSRF) (Matthias) ==&lt;br /&gt;
&lt;br /&gt;
; 1. Erster Absatz: &amp;quot;Können Funktionen einer Web-Anwendung ohne weitere Überprüfung der Authentizität des HTTP-Requests (z.B. durch Tokens in versteckten Formularfeldern) genutzt werden&amp;quot;&lt;br /&gt;
&lt;br /&gt;
Statt &amp;quot;Funktionen&amp;quot; würde ich besser von &amp;quot;schreibenden Aktionen&amp;quot; sprechen, dann macht der Satz mehr Sinn.&lt;br /&gt;
&lt;br /&gt;
; 2. Dritter Absatz: &amp;quot;Im Gegensatz zu XSS (siehe ...￼ ) ist das Angriffsziel nicht die Information auf dem Client (z. B. in Cookies),&amp;quot;&lt;br /&gt;
&lt;br /&gt;
Dieser (Halb-)Satz macht keinen Sinn, auch weil es bei XSS nicht nur im Informationen auf dem Cient geht. Vorschlag: &amp;quot;ist das Angriffsziel nicht die Ausführung von Skriptcode, sondern von unbefugten, schreibenden Aktionen im Kontext des angemeldeten Benutzers.&amp;quot;&lt;br /&gt;
&lt;br /&gt;
; 3. Session Riding&lt;br /&gt;
&lt;br /&gt;
Session Riding ist quasi nur ein anderer Begriff für CSRF. Die einzige Form von CSRF die mir bekannt ist, sind Angriffe mit Standard-Passwörtern auf HTTP-Basic-Auth geschützten Ressourcen.&lt;br /&gt;
&lt;br /&gt;
Im Grunde ist Session Riding aber nur ein Synonym für CSRF. Der Absatz ist daher auch nur eine Wiederholung der obigen Beschreibung.&lt;br /&gt;
&lt;br /&gt;
; 4. Zum Beispiel: &amp;quot;Durch einen präparierten Link auf einer Webseite wird die Änderung des Zugangspasswortes des Routers eingeleitet.&amp;quot;&lt;br /&gt;
&lt;br /&gt;
Etwas ungüngstig ausgedrückt. Besser wäre: &amp;quot;wird eine Anfrage zur Änderung des Zugangspasswortes an den Router gesendet. Hierbei sendet der Browser automatisch den Session Cookie mit, worüber die Webanwendung die Authentizität der Anfrage verifiziert und die Änderung durchführt.&amp;quot;&lt;br /&gt;
&lt;br /&gt;
== G 5.WA18 Clickjacking (Matthias) ==&lt;br /&gt;
&lt;br /&gt;
Hier stellt sich mir nur die allgemeine Frage, ob Clickjacking, bzw. der Schutz davor tatsächlich einem Grundschutz zuzurechnen ist. Persönlich würde ich dies nicht tun.&lt;br /&gt;
&lt;br /&gt;
== M 2.WA02 Dokumentation der Architektur von Web-Anwendungen (Matthias) ==&lt;br /&gt;
&lt;br /&gt;
; Verantwortlich für die Umsetzung&lt;br /&gt;
Hier wäre auch die Nennung des &amp;quot;Architekten&amp;quot; sinnvoll&lt;br /&gt;
 &lt;br /&gt;
; Fehlende Bestandteile der Dokumentation:&lt;br /&gt;
* Schutzbedarf des Systems sowie der verarbeiteten Daten&lt;br /&gt;
* Schützenswerte Daten und Funktionen (Assets)&lt;br /&gt;
* Betriebliche Anforderungen an die Sicherheit bzw. eingesetzte Plattform&lt;br /&gt;
* Dokumentierte Konfigurationseinstellungen &lt;br /&gt;
* BIA (RTO, RPO)&lt;br /&gt;
* Schnittstellen&lt;br /&gt;
* Trust Boundaries&lt;br /&gt;
* Akteure (bzw. Trust Level)&lt;br /&gt;
* Sicherheitsannahmen&lt;br /&gt;
* Geltende Compliance-Anforderungen (BDSG, PCI DSS, etc.)&lt;br /&gt;
&lt;br /&gt;
; Benutzermanagement&lt;br /&gt;
&lt;br /&gt;
Wenn damit das Identity Management gemeint ist, gehört das Dokumentiert, ist aber keine Sicherheitsfunktion. Oder ist hiermit das Rollen- und Berechtigungskonzept gemeint? Grenzt sich aus meiner Sicht schwer mit dem Thema Authentisierung ab. &lt;br /&gt;
&lt;br /&gt;
; Prüffragen&lt;br /&gt;
&lt;br /&gt;
Hier fehlt etwas in Bezug auf Sicherheitsanforderungen. Beispiel: &amp;quot;Werden Sicherheitsanforderungen an den Betrieb während der Entwicklung abgestimmt und dokumentiert&amp;quot;&lt;br /&gt;
&lt;br /&gt;
== M 2.WA12 Entwicklung und Erweiterung von Anwendungen (Markus) ==&lt;br /&gt;
; &amp;quot;Es sollte darauf geachtet werden, dass Sicherheitsanforderungen&lt;br /&gt;
vollständig durch Sicherheitsmechanismen erfüllt und zur Erstellung von&lt;br /&gt;
Testfällen festgehalten werden.&amp;quot; --&amp;gt; Bessere Formulierung würde aussagen, dass die Sicherheitsanforderungen durch Testfälle verifiziert werden.&lt;br /&gt;
&amp;quot;(z. B. durch Kommentare im&lt;br /&gt;
Quelltext). Somit ist der Quelltext zu einem&amp;quot; --&amp;gt; Das ist kein empfehlenswerter Programmierstiel! Raus mit diesem Kommentar&lt;br /&gt;
;&amp;quot;Zum Schutz vor dem Verlust bereits entwickelter und verworfener&lt;br /&gt;
Lösungen sowie zu Dokumentationszwecken sollte die Historie der&lt;br /&gt;
Änderungen festgehalten werden (z. B. durch ein Revisionssystem).&amp;quot; --&amp;gt; Auch diesen Absatz können wir streichen - Kein professioneller Programmierer arbeitet ohne Versionierugssystem.&lt;br /&gt;
;&amp;quot;Bei Web-Anwendung sollten die Webseiten auf Konformität zu dem&lt;br /&gt;
verwendeten Standard (z. B. HTML-Standard) getestet werden. Dadurch&lt;br /&gt;
können unvorgesehene Seiteneffekte aufgrund einer Fehlinterpretation&lt;br /&gt;
seitens der Browser vermieden werden.&amp;quot; --&amp;gt; Könnte man noch um &amp;quot;Die Software ist in möglichst vielen Browsern zu testen&amp;quot; erweitern.&lt;br /&gt;
;Generell geht der Autor leider nicht auf die Rollen &amp;amp; Rechte Verteilung ein. Mir fehlt der Hinweis, das es eine personelle Trennung zwischen Entwicklung, Test und Betrieb geben muss.&lt;br /&gt;
;Zum Thema Wartung / Betrieb --&amp;gt; Hier wird keine Aussage getroffen bezüglich Log_Files. Dieses Thema kann kritische Auswirkungen haben, Bsp.: logging ganzer HTTP-Requests im LogLevel=Debug.&lt;br /&gt;
; &amp;quot;Produktspezifische Sicherheitsfunkionalität&amp;quot; - Dieser Absatz ist gefährlich - der Angreifer ist nicht zur Verwendung dies Zielbrowsers gezwungen. Deshalb können Browser-spez. Sicherheitsfunktionen nur als Add-ON gewertet werden.&lt;br /&gt;
; &amp;quot;Festlegung der Entwicklungsumgebung&amp;quot; - Dieser Absatz geht nicht auf die zu verwendenden Testdaten ein. Der Hinweis, dass Live-Daten / Kundendaten nichts in Test- &amp;amp; Entwicklungsumgebungen zu suchen haben fehlt!!!&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== M 2.WA24 Web-Tracking (Matthias) ==&lt;br /&gt;
&lt;br /&gt;
; Letzter Absatz: &amp;quot;Falls eine Auswertung von Nutzerdaten, insbesondere personenbezogener Daten, .. &amp;quot;&lt;br /&gt;
&lt;br /&gt;
Hier sollte denke ich besser von personenbeziehbaren Daten gesprochen Werten. Dies betrifft etwa die Zuordnung von Surfverhalten zu einer bestimmten Person. Dies sollte stets nach den Prinzipien Datensparsamkeit und Datenvermeidung, Erforderlichkeit, sowie Zweckbindung erfolgen. Ist Webtracking nicht personenbeziehbar ist dies kein Thema für den Datenschutz.&lt;br /&gt;
&lt;br /&gt;
== M 4.WA04 Authentisierung bei Web- Anwendungen (Matthias) ==&lt;br /&gt;
&lt;br /&gt;
: Verantwortlich fuer Umsetzung &lt;br /&gt;
sollte in erster Linie beim Architekturen und in zweiter beim Entwickler liegen&lt;br /&gt;
; Vermischung von Authentisierung und Session Management &lt;br /&gt;
&lt;br /&gt;
Bei diesem Baustein findet eine ziemlich große Vermischung von Anforderung an die Authentisierung und das erst in &amp;quot;M 4.WA06 Session-Management bei Web- Anwendungen&amp;quot; behandelte Session Management statt (Beispiel: &amp;quot;Remember-Me-Funktion&amp;quot;). Beide Themen sollten sinnvollerweise getrennt voneinander zu betrachten und aufeinander zu beziehen.&lt;br /&gt;
&lt;br /&gt;
; Verwendung von Frameworks&lt;br /&gt;
&lt;br /&gt;
Die Anforderung ist schon ein wenig eingeschränkt. Besser passt hier denke ich die &amp;quot;Abbildung der Authentisierung über Standardkomponenten (Bibliotheken oder Frameworks)&amp;quot;. &lt;br /&gt;
&lt;br /&gt;
; Remember-Me-Funktion&lt;br /&gt;
&lt;br /&gt;
Siehe oben, gehört zum Session Management. Das ließt sich im übrigen so, als ob eine Webanwendung Credentials auf dem Client abhängt. &lt;br /&gt;
&lt;br /&gt;
; Grenzwerte für gescheiterte Anmeldeversuche&lt;br /&gt;
&lt;br /&gt;
Diese Empfehlung ist allgemein falsch, da sie sehr von der betrachteten Anwendung abhängt. Besser wäre hier allgemein von Mechanismen zur Verhinderung von automatisierten Angriffen zu sprechen (Anti-Automatisierung). &lt;br /&gt;
&lt;br /&gt;
Etwa umsetzbar durch&lt;br /&gt;
* Sperrung nach x Anmeldeversuchen&lt;br /&gt;
* Throttling&lt;br /&gt;
* Captchas&lt;br /&gt;
* Sicherheitsfragen&lt;br /&gt;
&lt;br /&gt;
Das allgemeine Sperren kann leicht für das gezielte Aussperren von Benutzern (User Lockout) verwendet werden. Was etwa bei Trading-Anwendungen nicht funktioniert.&lt;br /&gt;
&lt;br /&gt;
; Automatisiertes Zurücksetzen von Authentisierungsdaten&lt;br /&gt;
&lt;br /&gt;
Würde ich besser als &amp;quot;Passwort-Reset&amp;quot; bezeichnen.&lt;br /&gt;
&lt;br /&gt;
Weiterhin fehlt hier der Hinweis, dass statt ein automatisiertes Zurücksetzen, ein Mechanismus zu empfehlen ist, bei dem über ein hinterlegtes Sicherheitsmerkmal (Handy-Nummer oder E-Mail-Adresse) vom Benutzer zunächst eine Verifikation durchgeführt wird. Beispielsweise durch einen erhaltenen Link. Erst dann darf eine Änderung des Passwortes durch den Benutzer erfolgen.&lt;br /&gt;
&lt;br /&gt;
; Registrierung nicht behandelt&lt;br /&gt;
&lt;br /&gt;
Es existiert hier kein Punkt, der die sichere Implementierung von Benutzerregistrierungen behandelt.&lt;br /&gt;
&lt;br /&gt;
; Verweis auf Externalisierung fehlt.&lt;br /&gt;
&lt;br /&gt;
Statt die Authentisierung selbst durchzuführen kann eine Anwendung hierzu auf eine externe Komponente (Beispiel: SiteMinder oder Kerberos) zurückgreifen.&lt;br /&gt;
&lt;br /&gt;
; Verweis auf Behandlung von Credentials fehlt&lt;br /&gt;
&lt;br /&gt;
Auch wenn das  in &amp;quot;M 4.WA15 Schutz vertraulicher Daten bei Web- Anwendungen&amp;quot; ausführlich behandelt wird, sollte in diesem Baustein bereits auf den angemessenen Schutz von Authentisierungsdaten bei Übertragung und Speicherung hingewiesen werden.&lt;br /&gt;
&lt;br /&gt;
== M 4.WA05Umfassende Ein- und Ausgabevalidierung bei Web-Anwedungen (Markus) ==&lt;br /&gt;
; &amp;quot;Ablehnung der Daten im&lt;br /&gt;
Fehlerfall&amp;quot; --&amp;gt; Hier könnte man noch auf Tar-Pits eingehen - nur ein Vorschlag.&lt;br /&gt;
&lt;br /&gt;
== M 4.WA06Session-Management bei Web-Anwendungen (Markus, Matthias) ==&lt;br /&gt;
; &amp;quot;Übertragung der SessionID mittels GETRequest&amp;quot; --&amp;gt; Hier fehlt der Hinweis, dass die Lebensdauer dieser SessionIds kurz/kürzer sein muss, als im Falle der Speicherung im Cookie.&lt;br /&gt;
&lt;br /&gt;
([[User:Mrohr|Matthias]]) Die Anmerkung verstehe ich ehrlich gesagt ueberhaupt nicht, zumal das SM haeufig transparent zwischen Cookies und URL Rewriting wechselt. Wozu soll das gut sein? Wie soll das geschehen? Idealerweise sollte die Session ID niemals in die URL geschrieben werden, das sollte eigentlich genuegen.&lt;br /&gt;
&lt;br /&gt;
; &amp;quot;Verschlüsselte Übertragung von SessionIDs&amp;quot; --&amp;gt; Hier fehlt der Hinweis auf den Beast-Exploit. TLS Version &amp;gt; 1.0 verwenden!&lt;br /&gt;
&lt;br /&gt;
([[User:Mrohr|Matthias]]) Solange hier nicht auf eine explizite TLS Version eingegangen wird, sollte meiner grossen Ueberzeugung nach hier auch auf keine Exploits etc. eingagen werden, das gehoert an andere Stelle.&lt;br /&gt;
&lt;br /&gt;
; ([[User:Mrohr|Matthias]]) Weiterhin:&lt;br /&gt;
&lt;br /&gt;
 Es dürfen keine extern bekannten oder erratbaren Daten (z. B. IP-Adresse, Uhrzeit) in die Berechnung der SessionID einfließen.&lt;br /&gt;
&lt;br /&gt;
Die Aussage finde ich etwas problematisch, wichtiger ist, dass die Entropie ausreichend hoch ist. Haeufig werden etwa IPs von Load Balancern in die Session ID hineingeschrieben.&lt;br /&gt;
&lt;br /&gt;
 - Domain (z. B. webapp.domain.tld),&lt;br /&gt;
 - Path (z. B. /webapp/),&lt;br /&gt;
 - Secure und&lt;br /&gt;
 - HttpOnly.Beschränkte Sitzungsdauer&lt;br /&gt;
&lt;br /&gt;
Das sieht so aus, als ob es empfehlenswert ist, das Domain-Tag zu verwenden, das ist es sicherlich nicht. Was macht hier der Hinweis &amp;quot;Beschraenke Sizuungsdauer&amp;quot;?&lt;br /&gt;
&lt;br /&gt;
== M 4.WA07Fehlerbehandlung durch Web-Anwendungen (Markus) ==&lt;br /&gt;
; Konsistenter / Inkonsistener Zustand einer Webanwendung und der daraus resultierende Datenverlust: Hier fehlen mir die Punkte: DOS, Priv.Escalation, CodeExecution.&lt;br /&gt;
; Vermeidung vertraulicher Informationen in Fehlermeldungen --&amp;gt; Fehlermeldungen sollten ebenfalls eine Systeminformationen preisgeben (Softwareversion, Patchlevel, etc.)&lt;br /&gt;
; Abbruch des Vorgangs nach Auftreten eines Fehlers --&amp;gt; TarPits scheinen dem Autor umbekannt zu sein :)&lt;br /&gt;
; &amp;quot;Werden Fehler möglichst von der gleichen Komponente behandelt, in der&lt;br /&gt;
der Fehler aufgetreten ist?&amp;quot; --&amp;gt; Das &amp;quot;möglichst&amp;quot; sollten wir streichen.&lt;br /&gt;
&lt;br /&gt;
== M 4.WA08Schutz vor automatisierter Nutzung von Web-Anwendungen (Markus) ==&lt;br /&gt;
; &amp;quot;Brute-Force-&lt;br /&gt;
Angriffe (z. B. Erraten von Zugangsdaten) und Enumeration-Angriffe (z. B.&lt;br /&gt;
automatisiertes Ermitteln von gültigen Login-Namen)&amp;quot; -- die Beispiele sind identisch - besser Beispiele suchen, z.b. URL-Enumeration&lt;br /&gt;
&lt;br /&gt;
([[User:Mrohr|Matthias]]) Das sehe ich anders. Brute-Forcing bezieht auf Passwoerter und Enumeration auf Benutzernamen, etwa durchs hochzaehlen. Auch wenn ich zustimmen muss, dass die nicht ganz gluecklich gewaehlt wurden. Stann &amp;quot;Erraten von Zugangsdaten&amp;quot; wuerde ich besser von &amp;quot;Erraten von Passwoertern&amp;quot; sprechen. Oder wie gesagt gleich auch auf andere Beispiele (etwa Object ID Enumeration) beziehen.&lt;br /&gt;
&lt;br /&gt;
== M 4.WA11Sichere Konfiguration von Web-Anwendungen (Markus) ==&lt;br /&gt;
; &amp;quot;Sicherer Umgang mit TLS/SSL&amp;quot; -- Hier fehlt der Hinweis, dass TLS-1.0 gebrochen ist&lt;br /&gt;
; &amp;quot;Zeichenkodierungskonfiguration&amp;quot; -- Ein Whitelisting abhängig von der Encodierung wäre ein weiterer Vorschlag&lt;br /&gt;
; &amp;quot;Restriktive Dateisystemberechtigungen&amp;quot; -- auch wenn es ein klassiker ist - der AS sollte ebenfalls mit von einem eingeschränkten Nutzer gestartet werden und nicht als root&lt;br /&gt;
; Administration Consolen:zur Ergänzen: Wenn diese nicht benötigit, sollten derartige Applikationen nicht deployed werden, unabhängig von möglichen Zugangsbeschränkungen.&lt;br /&gt;
&lt;br /&gt;
([[User:Mrohr|Matthias]]) Sorry, meiner Meinung nach hat die Bewertung von Kryptoverfahren hier abslut nichts zu suchen.Stattdessen sollte hier auf den entsprechenden [https://www.bsi.bund.de/ContentBSI/Publikationen/TechnischeRichtlinien/tr02102/index_htm.html Empfehlung des BSI] verwiesen werden, auch wenn dieses Dokument derzeit noch etwas outdated zu sein scheint.&lt;br /&gt;
&lt;br /&gt;
== M 4.WA13Kontrolliertes Einbinden von Daten und Inhalten bei Web-Anwendungen (Markus) ==&lt;br /&gt;
; Datei-Upload: Bei einem Upload werden Dateien durchaus in TEMP-Verzeichnissen gesammelt und danach weiterverarbeitet. Diese TEMP-Verzeichnisse sind im Rahmen einer Sicherheitsanalyse zu betrachten -&amp;gt; Möglicher (unbefugter) Zugriff auf weitere Uploads&lt;br /&gt;
; Upload komprimierter Dateien / großer Dateien birgt die Gefahr von DOS Angriffen&lt;br /&gt;
; Upload von Dateien kann bei weiterem Parsing zu Speicherengpässen führen --&amp;gt; DOS-Angriffe auf Thread-Local etc.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== M 4.WA14Restriktive Herausgabe sicherheitsrelevanter Informationen bei Web-Anwendungen (Markus, Matthias) ==&lt;br /&gt;
OK - Keine Anmerkungen von mir.&lt;br /&gt;
&lt;br /&gt;
[[User:Mrohr|Matthias]]) Von mir schon;)&lt;br /&gt;
&lt;br /&gt;
; Vermeidung von Kommentaren in ausgelieferten Webseiten&lt;br /&gt;
&lt;br /&gt;
Das ist leider total falsch, wir brauchen haeufig Komentare, aus Kompatibilitaetsgruenden. So wird etwa der JavaScript-Block haeufig auskommentiert.&lt;br /&gt;
&lt;br /&gt;
Wurde stattessen besser von sicherheitsrelevanten Kommentaren sprechen und als Massnahme generell Entwicklerkommentare ueber Sprachkonstruktre (etwa JSP) durchzufuehren.&lt;br /&gt;
&lt;br /&gt;
; Löschen nicht benötigter Dateien&lt;br /&gt;
&lt;br /&gt;
Hier wurde ich ggf. Dateien von Versionisierungstools (etwa Subversion) erwaehnen, das sehen wir schon recht haeufig.&lt;br /&gt;
&lt;br /&gt;
Statt Dateien einfach nur zu loeschen (was in der Praxis haeufig nicht so einfach ist) bietet es sich zudem an, den Zugriff auf bestimmte Dateien oder Dateitypen generell zu sperren, etwa mittels ACL im Apache.&lt;br /&gt;
&lt;br /&gt;
; Gibt die Web-Anwendung ausschließlich neutrale Fehlermeldungen aus und sind diese im Quelltext identisch? {E: C}&lt;br /&gt;
&lt;br /&gt;
Persoenlich verstehe ich das nicht. Wieseo neutrale Fehlermeldung? Das macht fuer mich nur beim Login Sin. Hierzu existiert in dem Text auch keinerlei Bezug. Ich wuerde das daher besser entfernen und im Rahmen der Fehlerbehandlung diskutieren. Mindestens sollte hier jedoch besser von &amp;quot;sicherheitsunbedentlichen Fehlermeldungen&amp;quot; oder so gesprochen werden.&lt;br /&gt;
&lt;br /&gt;
; Wird der Referrer bei Verlassen der Web-Anwendung (z. B. durch einen Link auf eine externe Seite) gefiltert?&lt;br /&gt;
&lt;br /&gt;
Diesen Punkt sehe ich als sehr Fallabhengig an. Es kann fuer seiten durchaus wuenschenswert sein, dass der Referer weitergegeben wird. Der Referer sollte natuerlich keine sensiblen Informationen enthalten, was ja an anderer Stelle (etwa Session Management) vorgegeben wird bzw. gegeben werden sollte.&lt;br /&gt;
&lt;br /&gt;
== M 4.WA15Schutz vertraulicher Daten bei Web-Anwendungen (Markus, Matthias) ==&lt;br /&gt;
; Sichere kryptographische Algorithmen:&lt;br /&gt;
 Hier fehlt mir eine Liste der aktuelle als sicher geltenden Verfahren.&lt;br /&gt;
([[User:Mrohr|Matthias]]) Am Besten Referenz auf [https://www.bsi.bund.de/ContentBSI/Publikationen/TechnischeRichtlinien/tr02102/index_htm.html https://www.bsi.bund.de/ContentBSI/Publikationen/TechnischeRichtlinien/tr02102/index_htm.html]&lt;br /&gt;
&lt;br /&gt;
; Schlüssel&lt;br /&gt;
 Das die Schlüssel bestimmten Formaten entsprechen müssen ist ok - aber das Schlüsselmanagement wird gar nicht besprochen?&lt;br /&gt;
; Schutz der Daten im Browsercache&lt;br /&gt;
 Skripte und Browserplugins können ebenfalls auf den Browsercache zugreifen - diese werden hier nicht erwähnt.&lt;br /&gt;
&lt;br /&gt;
([[User:Mrohr|Matthias]]) Weiterhin entsprechen die vorgeschlagenen HTTP Headern nicht dem Best Practice:&lt;br /&gt;
&lt;br /&gt;
 Cache-control: no-cache, no-store&lt;br /&gt;
 Pragma: no-cache&lt;br /&gt;
 Expires: -1&lt;br /&gt;
&lt;br /&gt;
([[User:Mrohr|Matthias]]) Die Empfehlung hinsichtlich des manuellen Leerens des Browsercaches sollte wenn dann nur bei Anwendungen mit sehr hohem Schutzbedarf in Erwaegung gezogen werden. Wichtiger waere da schon eher die richtigen Cache-Header zu verwenden. Solche Empfehlungen ihm Rahmen des Grundschutzes aber wirklich nichts zu suchen. &lt;br /&gt;
&lt;br /&gt;
; Maskierung von Passwörtern &lt;br /&gt;
 Dies schützt bei der Eingabe nur vor ShoulderSurfing nicht vor Skripten oder Plugins die diese an andere Server posten.&lt;br /&gt;
&lt;br /&gt;
([[User:Mrohr|Matthias]]) Das ist voellig korrekt. Aber inwieweit ist die Aussage Passwort-Felder zu verwenden fehlerhaft bzw. hier unzureichend beschrieben?&lt;br /&gt;
&lt;br /&gt;
; Sicherung von Zugangsdaten:&lt;br /&gt;
 Zugangsdaten in einer Datei abzulegen - wenn auch ausserhalb des WebRoots ist keine gute Idee.&lt;br /&gt;
([[User:Mrohr|Matthias]]) Es ist sicher nicht die schoenste Variante, es laesst sich aber nunmal in vielen Faellen nicht vermeiden. Deshalb fordert der [http://code.google.com/p/owasp-asvs/wiki/Verification_V2 ASVS] hier etwa auch nicht mehr. Fuer den hier angestreben Grundschutz sollte das meiner Meinung nach ausreichen.&lt;br /&gt;
; Schutz von Quelltexten:&lt;br /&gt;
 Hier würde ich property files mit aufnehmen. der hinweis auf web-inf/classes fehlt - warum?&lt;br /&gt;
 Bei include-befehlen sind die pfadangaben zu überdenken.&lt;br /&gt;
([[User:Mrohr|Matthias]]) Wuerde property Dateien allgemein den Konfigurationsdateien zuordnen. Der Begriff &amp;quot;Einzubindende Dateien&amp;quot; ist mir allrdings Neu&lt;br /&gt;
&lt;br /&gt;
([[User:Mrohr|Matthias]]) Weiterhin, fehlt ein genereller Bezug auf HTML 5 WebStorage, LSOs etc. Zumindest in abstrakter Form, so dass diese dadurch indirekt addresiert werden. Egal, in dem relevanten Punkt will der Autor meiner Meinung nach nur einige Beispiele nennen, das sollte keinen Anspruch auf Vollsteandigkeit haben muessen.&lt;br /&gt;
&lt;br /&gt;
; ([[User:Mrohr|Matthias]]) - Durch dieses Attribut wird die Gültigkeit des Cookies auf die Domäne der Web-Anwendung beschränkt.&lt;br /&gt;
Nein, das ist leider total falsch. Das Domain-Attribut stellt eine Aufweichung der Cookie-Gueltigkeit dar und nicht anders herum. Gewoehlich sind Cookies immer Host-Cockies und das sollte auch so bleiben. Die Empfehlung sollte entfernt werden.&lt;br /&gt;
&lt;br /&gt;
== M 4.WA16Zugriffskontrolle bei Web-Anwendungen (Markus) ==&lt;br /&gt;
; Zugriffskontrolle via Frameworks:&lt;br /&gt;
 Dieser Punkt (Frameworks) wird nur in einem Satz erwähnt. Es werden keine Bespiele gegeben - Das ist zu wenig.&lt;br /&gt;
 Es müssen alle Zugriffe geschützt werden. Eine Protokollierung aller Zugriffe mit den nötigen Informationen ist ebenfalls empfehlenswert.&lt;br /&gt;
; Datei Upload:&lt;br /&gt;
 Die Gefahr eines DOS wird hier nicht erwähnt.&lt;br /&gt;
&lt;br /&gt;
== M 4.WA19Verhinderung von Cross-Site Request Forgery (CSRF, XSRF) (Markus, Matthias) ==&lt;br /&gt;
; Verantwortliche: &lt;br /&gt;
 Entwickler und Admins!&lt;br /&gt;
([[User:Mrohr|Matthias]]) Korrekt, wobei auch in der Reihenfolge&lt;br /&gt;
&lt;br /&gt;
; Anti-CSRF-Token in hidden fields:&lt;br /&gt;
 Das ist keine gute Idee. Ich würde das streichen!&lt;br /&gt;
&lt;br /&gt;
([[User:Mrohr|Matthias]]) Watt? Anti-CSRF-Tokens in Hidden Fields sind die Standard-Massnahme. Wie denn sonst? Bitte nicht streichen!!! &lt;br /&gt;
&lt;br /&gt;
([[User:Mrohr|Matthias]]) Die Technik bei der die Session ID als Anti-CSRF-Token verwendet wird, wird als Double-Cookie Submit bezeichnet, das sollte hier referenziert werden.&lt;br /&gt;
&lt;br /&gt;
; Umgehung von Schutzmechanismen:&lt;br /&gt;
 Man in the middle hat keinen direkten Bezug zu CSRF! Das würde ich streichen.&lt;br /&gt;
([[User:Mrohr|Matthias]]) Der Hinweis ist korrekt. Wovon der Autor hier spricht ist Session Replay nicht CSRF.&lt;br /&gt;
&lt;br /&gt;
; Frameworks:&lt;br /&gt;
 Gute Idee - aber es gibt auch Features in den ApplicationServern die CSRF unterbinden - warum wird das nicht besprochen?&lt;br /&gt;
&lt;br /&gt;
([[User:Mrohr|Matthias]]) Sehe ich persoenlich nicht so, da CSRF primaer ein Applikations-Fehler ist, und auch in der Applikation und nicht im Environment (AppServer) geloest werden sollte. Auch wenn das manchmal ggf. die einzig machbare Loesung darstellt.&lt;br /&gt;
&lt;br /&gt;
([[User:Mrohr|Matthias]]) Was generell fehlt, ist ein Hinweis darauf, dass schreibende Requests generell per HTTP Post abgewickelt werden sollten, da HTTP Get keine &amp;quot;Safe Method&amp;quot;  (siehe HTTP 1.1, RFC 2616) ist.&lt;br /&gt;
&lt;br /&gt;
== M 4.WA20Sicherer Entwurf der Logik von Web-Anwendungen (Markus, Matthias) ==&lt;br /&gt;
; Rollbacks:&lt;br /&gt;
 Tritt ein Fehler auf muss die Applikation einen konsistenten Datenstand zurück lassen. Das wird hier nicht erwähnt.&lt;br /&gt;
; RaceConditions:&lt;br /&gt;
 Fehler in der Geschäftslogik können auch durch zwei gleichzeitige Sessions auf einer Webapplikation auftreten - das wird hier nicht besprochen.&lt;br /&gt;
&lt;br /&gt;
([[User:Mrohr|Matthias]]) Ehrlich gesagt kann ich nicht ganz nachvollziehen, was der Sichere Entwurf der Logik von Web-Anwendungen mit dem Verzicht auf aktive Inhalte zu tun hat. Unabhaengig davon sollte man solche unsinnigen Aussagen im Jahre 2012 nicht mehr treffen, damit macht man sicht nur laecherlich.&lt;br /&gt;
&lt;br /&gt;
Nichts desto trotz, was hier als &amp;quot;echte&amp;quot; Massnahmen erwaehnt werden sollte sind:&lt;br /&gt;
* Verhinderung von Race Conditions, aber nicht nur durch Concurrent Sessions sondern auch durch Singletons (TOCTOU)&lt;br /&gt;
* Enforcements von Workflows, etwa durch die Verwendung von State Machines oder Request Tokens (auch bekannt als Site Usage Enforcement)&lt;br /&gt;
* Fail Securely (bzw. Verweis)&lt;br /&gt;
* Serverseitige Abbildung der Anwendungslogik, zumindest wenn diese sicherheitsrelevant sit&lt;br /&gt;
&lt;br /&gt;
== M 4.WA22Verhinderung der Blockade von Ressourcen (DoS) bei Web-Anwendungen (Markus, Matthias) ==&lt;br /&gt;
; Datenspeicher:&lt;br /&gt;
 Neben dem Datenspeicher sollte auch der RAM-Verbrauch pro Thread der Applikation limitiert werden.&lt;br /&gt;
([[User:Mrohr|Matthias]]) Stimmt, ich wuerde hier sogar allgemein von Ressourcenverbrauch am Beispiel RAM und Datenspeicher, sprechen&lt;br /&gt;
&lt;br /&gt;
; Voraggregation von Daten / Caching&lt;br /&gt;
 Dieser Punkt fehlt: Stark ressourcen belastende Anfragen können auch in Lastarmen Zeiten vorberechnet werden.&lt;br /&gt;
([[User:Mrohr|Matthias]]) Stimmt, koennte noch als Anmerkung bei &amp;quot;Cachen von Anfragen&amp;quot; hinzugefuegt werden&lt;br /&gt;
&lt;br /&gt;
([[User:Mrohr|Matthias]]) Noch drei Anmerkugnen&lt;br /&gt;
&lt;br /&gt;
; Prueffrage: &amp;quot;Wird ein möglicher Überlauf von Protokolldaten... verhindert&amp;quot;&lt;br /&gt;
&lt;br /&gt;
Ist eine etwas eingeschrankte Sicht. Wurde hier eher von Ueberlauf von Speicherplaz zu Beispiel im Rahmen der Protokollierung sprechen&lt;br /&gt;
&lt;br /&gt;
; Durchfuehrung von Lasttests zur Identifikation ressourcenintensiver Operationen&lt;br /&gt;
&lt;br /&gt;
Der Hinweis waere ggf. erwahnenswert&lt;br /&gt;
&lt;br /&gt;
; Hinweis auf nicht-angemeldeten Bereich&lt;br /&gt;
&lt;br /&gt;
Das Risiko durch rechenintensive Operationen durch einen DoS betroffen zu sein ist natuerlich fuer gewoehlich um so groesser, wenn diese im anonymen Bereich angeboten wird. Der Hinweis ware ggf. ebenfalls hilfreich.&lt;br /&gt;
&lt;br /&gt;
== M 4.WA25Verhinderung von Clickjacking (Markus) ==&lt;br /&gt;
Ok - das passt soweit.&lt;br /&gt;
&lt;br /&gt;
([[User:Mrohr|Matthias]]) Stimmt, auch wenn ich &amp;quot;Angreifer&amp;quot; in dem Beispiel eher als &amp;quot;Webseitenbetreiber&amp;quot; beschreiebn wuerde, da er nicht wirklich aktiv einen Angriff durchfuehrt, oder? Bitte nochmal ueber meinen Hinweis aus G 5.WA18 nachdenken: Ist Clickjacking-Schutz tatsaechlich Grundschutz? Ich bin mir da selber nicht so wirklich sicher.&lt;br /&gt;
&lt;br /&gt;
== M 5.WA21Sichere Anbindung von Hintergrundsystemen an Web-Anwendungen (Markus) ==&lt;br /&gt;
; Verantwortliche:&lt;br /&gt;
 Architekten fehlen. Entwickler müssen die Views umsetzen und die Datasource entsprechend einbinden - die fehlen hier ebenfalls.&lt;br /&gt;
; DirectorySystem Beispiel:&lt;br /&gt;
 Das DirectorySystem wird in dem angegeben Beispiel zum Single Point of Failure - das wird verschwiegen.&lt;br /&gt;
; Firewalls:&lt;br /&gt;
 Das sind fachlich-blinde Systeme. Was ist mit WAFs / IDS / IPS etc.?&lt;br /&gt;
([[User:Mrohr|Matthias]]) Stimmt, das hat in diesem Baustein nichts zu suchen&lt;br /&gt;
&lt;br /&gt;
([[User:Mrohr|Matthias]]) Noch ein weiterer Punkt von mir&lt;br /&gt;
&lt;br /&gt;
; Typische Hintergrundsysteme&lt;br /&gt;
Hier fehlt irgendwie &amp;quot;Middleware&amp;quot;, die ist denke ich nicht immer Legacy&lt;br /&gt;
&lt;br /&gt;
== M 5.WA23Systemarchitektur einer Web-Anwendung (Markus) ==&lt;br /&gt;
; Verantwortliche:&lt;br /&gt;
Auch hier fehlend wieder die Architekten. &lt;br /&gt;
; Virtualisierung:&lt;br /&gt;
Virtualisierung bietet weitere Angriffsvektoren (z.B.: Hypervisor) die eine &amp;quot;Blech&amp;quot;Farm nicht bietet.&lt;/div&gt;</summary>
		<author><name>Mrohr</name></author>	</entry>

	<entry>
		<id>https://wiki.owasp.org/index.php?title=Talk:OWASP_Review_BSI_IT-Grundschutz_Baustein_Webanwendungen&amp;diff=130183</id>
		<title>Talk:OWASP Review BSI IT-Grundschutz Baustein Webanwendungen</title>
		<link rel="alternate" type="text/html" href="https://wiki.owasp.org/index.php?title=Talk:OWASP_Review_BSI_IT-Grundschutz_Baustein_Webanwendungen&amp;diff=130183"/>
				<updated>2012-05-21T13:21:13Z</updated>
		
		<summary type="html">&lt;p&gt;Mrohr: /* M 4.WA15Schutz vertraulicher Daten bei Web-Anwendungen (Markus, Matthias) */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Since it's about a review of a document in German, all the discussions will be done in German :-)&lt;br /&gt;
&lt;br /&gt;
Diskussionen rund um den Review des &amp;quot;IT-Grundschutzbausteins Webanwendungen&amp;quot; finden hier statt, sinnvollerweise auf Deutsch :-)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Vorschlag für Kriterien, die an unser Review angelegt werden sollten (.kai) ==&lt;br /&gt;
&lt;br /&gt;
* Der Baustein soll alle wichtigen Themen der Entwicklung sicherer&lt;br /&gt;
Webanwendungen enthalten.&lt;br /&gt;
&lt;br /&gt;
* Der Baustein soll die verschiedenen Phasen der Software-Entwicklung&lt;br /&gt;
vollständig abdecken.&lt;br /&gt;
&lt;br /&gt;
* Der Baustein soll zwischen verbindlichen, prüfbaren Vorgaben und&lt;br /&gt;
unverbindlichen Empfehlungen sprachlich sauber unterscheiden (hier&lt;br /&gt;
spielt mein Auditorenblick eine Rolle). Vor allem soll der Baustein&lt;br /&gt;
verbindliche Anforderungen auch tatsächlich stellen. Alle&lt;br /&gt;
verbindlichen Anforderungen müssen unabhängig von der jeweiligen&lt;br /&gt;
Umgebung auch umsetzbar sein, d.h. sie müssen entsprechend generisch&lt;br /&gt;
sein.&lt;br /&gt;
&lt;br /&gt;
* Die Maßnahmen sollen nur in (begründbaren) Ausnahmen zu Empfehlungen&lt;br /&gt;
von OWASP im Widerspruch stehen.&lt;br /&gt;
&lt;br /&gt;
* Die Maßnahmen sollen verständlich und anwendbar sein.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== &amp;quot;Hilfsmittel&amp;quot; (Markus) ==&lt;br /&gt;
Ich würde das Script zur Vermeidung von Clickjacking wrappen und nicht als losen Skript-block in den Text einbinden - einfach schlechter Programmierstiel diese losen Blöcke.&lt;br /&gt;
Der Zugriff auf das Body-Element mit byTagName-Array[0] ist auch nicht wirklich gut. Ich halte Zugriffe über das DOM (klassisch), bei ID bzw. XPATH für besser. &lt;br /&gt;
&lt;br /&gt;
SQL-Injection Characters:&lt;br /&gt;
die Pipe fehlt hier zur Textkonatenierung&lt;br /&gt;
+ / - haben auch eine Bedeutung bei JOINs.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== &amp;quot;Goldene Regeln&amp;quot; (Matthias) ==&lt;br /&gt;
&lt;br /&gt;
Hier meine Anmerkungen zu diesem Dokument:&lt;br /&gt;
&lt;br /&gt;
; 1. Für mich fehlende Punkte&lt;br /&gt;
* Korrektur der Ursache (Root Cause) von Schwachstellen statt  Verhinderung deren Ausnutzung&lt;br /&gt;
* Bezug auf Minimierung der Angriffsfläche und Least-Privilege-Prinzip&lt;br /&gt;
* Bezug auf Defense-in-Depth-Prinzip&lt;br /&gt;
* Verwendung von getesteten Security APIs (z.B. OWASP ESAPI) statt selbstentwickelter Funktionen&lt;br /&gt;
* Bezug auf Externalisierung von Sicherheitsfunktionen, sowie deklerative vor programmatischer Sicherheit.&lt;br /&gt;
&lt;br /&gt;
; 2. Begriff &amp;quot;Web-Anwendung&amp;quot;&lt;br /&gt;
Würde ich generell durch &amp;quot;Webanwendung&amp;quot; ersetzen.&lt;br /&gt;
&lt;br /&gt;
; 3. Einleitung (&amp;quot;Web-Anwendungen stellen Funktionalität zur Verfügung, ...&amp;quot;)&lt;br /&gt;
&lt;br /&gt;
Wozu dient dieser Satz?&lt;br /&gt;
&lt;br /&gt;
; 4. &amp;quot;Die Architektur der Web-Anwendung ist im Sicherheitskonzept zu  dokumentieren.....&amp;quot; &lt;br /&gt;
&lt;br /&gt;
Ich fände es sinnvoller, wenn hier von der &amp;quot;Sicherheitsarchitektur&amp;quot; gesprochen wird, welche etwa neben den sicherheitsrelevanten Datenflüssen, sensible Komponenten, Entry Points, Akteure architekturelle Security Controls wie Authentisierung, Kryptographie und natürlich die Trust Boundaries beinhaltet.&lt;br /&gt;
&lt;br /&gt;
; 5. &amp;quot;Bei Web-Anwendungen handelt es sich häufig um spezielle Eigenentwicklungen....&amp;quot;&lt;br /&gt;
&lt;br /&gt;
Erstens würde ich hier den geläufigen Begriff &amp;quot;Individualsoftware&amp;quot; verwenden. Zweitens würde ich statt bestimmte SDLC-Phasen vorzugeben (die Begriffe &amp;quot;Softwareverteilung&amp;quot; und &amp;quot;Integration&amp;quot; sind mir bei Webanwendungen bisher noch nicht so häufig untergekommen), besser von der Notwendigkeit sprechen, Sicherheit in allen Entwicklungsphasen zu berücksichtigen, also eines SDLs.&lt;br /&gt;
&lt;br /&gt;
; 6. &amp;quot;Alle Ein- und Ausgaben der Web-Anwendung müssen in eine normalisierte Form überführt werden....&amp;quot;&lt;br /&gt;
&lt;br /&gt;
Normalisierung ist für mich nicht gleich Kanonsierung, auch wenn beide Begriffe häufig als synonym verwendet werden.  Der Unterschied wird in der [http://owasp-esapi-java.googlecode.com/svn/trunk_doc/2.0-rc4/org/owasp/esapi/Encoder.html API-Beschreibung der ESAPI] erklärt. Die Normalisierungs-Funktion ist allerdings schon vor einiger Zeit aus der ESAPI [https://lists.owasp.org/pipermail/esapi-dev/2010-January/000266.html rausgeflogen]. Die generelle Kanonisierung von Ausgaben halte ich dazu für nicht sinnvoll.&lt;br /&gt;
&lt;br /&gt;
Zweitens, finde ich den weiteren Text zwar grundsätzlich formal korrekt, aber so allgemein, dass dieser glaube ich niemandem so richtig etwas bringt.  &lt;br /&gt;
&lt;br /&gt;
Besser fände ich hier Ein- von Ausgabevalidierung grundsätzlich voneinander abzugrenzen. Etwa was ich per Eingabevalidierung (Längenprüfung, Casting, etc. per Whitelisting) und was mit Ausgebavalidierung (Enkodierung, Escaping, Parametrisierung) machen muss und kann.&lt;br /&gt;
&lt;br /&gt;
Eingabedaten können technisch zudem auch Werte eingelesener Property-Dateien sein. Muss ich die auch validieren? Ist das dann noch Grundschutz? &lt;br /&gt;
&lt;br /&gt;
; 7. &amp;quot;Für den Zugriff auf sensitive Funktionen oder Informationen muss die Web-Anwendung eine wirksame Authentisierung und Sitzungsverwaltung unterstützen. Die Eigenschaften der Sitzungs-ID müssen so gewählt werden, dass die Sitzung ausreichend geschützt ist. ....&amp;quot;&lt;br /&gt;
&lt;br /&gt;
Besser fände ich &amp;quot;eine Authentisierung, die über eine dem Schutzbedarf der Anwendung angemessene Stärke verfügt.&amp;quot; &lt;br /&gt;
&lt;br /&gt;
Eigentlich geht es doch mehr um den Schutz der Sitzungs-ID, da diese gewöhnlich im Verlauf einer Sitzung den Client authentisiert. Oder den Schutz des Zugriffs auf eine Sitzung. &lt;br /&gt;
&lt;br /&gt;
Zudem fehlt hier meiner Meinung nach der Hinweis auf die bevorzugte Verwendung getesteter Standardkomponenten.&lt;br /&gt;
&lt;br /&gt;
; 8. &amp;quot;Die Web-Anwendung sollte die zu übermittelnden Daten schützen.&amp;quot;&lt;br /&gt;
&lt;br /&gt;
Dies würde ich nur auf sensible Daten beziehen. Zusätzlich zu HTTPS würde ich hier schreiben, dass sensible Daten generell nicht in der URL übertragen werden dürfen.&lt;br /&gt;
&lt;br /&gt;
; 9. &amp;quot;Die Preisgabe interner Informationen (z.B. Kommentare, Fehlermeldungen)&amp;quot;&lt;br /&gt;
&lt;br /&gt;
Hier würde ich eher schreiben &amp;quot;(IN Kommentaren, Fehlermeldungen, HTTP Headern, etc.)&amp;quot;&lt;br /&gt;
&lt;br /&gt;
; 10. &amp;quot;Fehler müssen so behandelt werden, ... müssen Fehler bei der Autorisierung zu einer Verweigerung beim Zugriff auf die angeforderte Ressource führen.&amp;quot;&lt;br /&gt;
&lt;br /&gt;
Sprachlich: &amp;quot;Die Webanwendung muss sich stets in einem sicheren Zustand befinden. Beispielsweise müssen Fehler bei der Autorisierung zu einer Verweigerung des Zugriffs führen (Default-Deny-Strategie).&amp;quot;&lt;br /&gt;
&lt;br /&gt;
; 11. &amp;quot;Die Logging-Funktionen der Web-Anwendung müssen aufgetretene Ereignisse derart protokollieren, dass sicherheitskritische Vorfälle nachvollzogen werden können.&amp;quot;&lt;br /&gt;
&lt;br /&gt;
Hier würde hier eher von &amp;quot;allen sicherheitsrelevanten Ereignissen&amp;quot; sprechen.&lt;br /&gt;
&lt;br /&gt;
Weiterhin sollten insbesondere beim Logging der Datenschutz berücksichtigt werden, personenbezogene Daten also nach Möglichkeit nicht oder nur anonymisiert in technischen Logdateien protokolliert werden.&lt;br /&gt;
&lt;br /&gt;
; 12. &amp;quot;Alle Sicherheitsmechanismen (z.B. Authentisierung und Zugriffskontrolle) sind serverseitig zu implementieren und können nicht durch clientseitige Mechanismen ersetzt werden.&amp;quot;&lt;br /&gt;
&lt;br /&gt;
Die Aussage ist so nicht korrekt. Darüber hatten wir bereits bei der ASVS mehrfach diskutiert. &lt;br /&gt;
&lt;br /&gt;
Überall dort wo der Client angegriffen wird, also etwa bei RIAs (Stichwort DOM-Based XSS) müssen wir Security Controls clientseitig implementieren. Es gibt mittlerweile deshalb auch eine Portierung der ESAPI auf Javascript. Überall dort wo der Server oder Hintegrundsysteme angegriffen werden, ist die Aussage aber natürlich zutreffend.&lt;br /&gt;
&lt;br /&gt;
== &amp;quot;Gefährdungen&amp;quot; (Markus, Dennis, .... &amp;lt;Dein Name&amp;gt;) ==&lt;br /&gt;
; Generell:&lt;br /&gt;
Reference auf RFCs fehlen.&lt;br /&gt;
&lt;br /&gt;
==B.5.XX Web-Anwendungen ==&lt;br /&gt;
; 1. Erster Absatz - Letzter Satz: --Wieso werden hier nur HTML/XML Doks und Oberflächen angesprochen? Was ist der Unterschied zwischen einem HTML-Dok und einer Oberfläche? Was ist mit  Flash, etc.? Was ist mit WebSockets?&lt;br /&gt;
; 2. Stichpunkt &amp;quot;Protokollierung&amp;quot;: Sicherheits relevant ist ein sehr dehnbarer Begriff - Eine bessere Formulierung könnte sein: Zur Rekonstruktion von Nutzerhandlungen nötige Ereignisse (positve &amp;amp; negative) müssen protokolliert werden . . . &lt;br /&gt;
; 3. Absatz: &amp;quot;Abgrenzung des Bausteins&amp;quot;: &amp;quot;Die spez. Sicherheitsanforderungen an Web-Services werden in diesem Baustein nicht betrachtet&amp;quot; --&amp;gt; Wie so nicht? Was ist das Backend von einer Rest / AJAX-basierenden Webanwendung denn anderes als ein Web-Service? Diesen Satz würde ich entfernen.&lt;br /&gt;
; 4.Vorsätzliche Handlungen -&amp;gt; Web-Spoofing (G.5.87) -- Missverständliche Bezeichnung / Nomenklatur&lt;br /&gt;
; 5. Seite 4 : erste Zeile &amp;quot;Umsetzung&amp;quot;: &amp;quot;dafür umzusetztende Komponenten müssen die Webanwendung schützen...&amp;quot; - Hier fehlt mir der Hinweis, dass dieser Schutz verifiziert werden muss.&lt;br /&gt;
; 6 Seite 5: &amp;quot;Umsetzung&amp;quot; - Wir haben CSRF, D(D)os und SQL-Injection aber wo ist XSS?&lt;br /&gt;
; 7 Seite 7: &amp;quot;Die Sicherheitsfunktion wird ausschließlich clientseitig...&amp;quot; --&amp;gt; Warum muss der Angreifer überhaupt einen Browser umkonfigurieren? Was ist mit Proxies, Scripts, etc.? Ich würde das reduzieren darauf, dass rein Webbrowser-basierende Schutzfunktionen einfach umgangen werden können.&lt;br /&gt;
; 8 Seite 8: Die angesprochenen Punkte hinterlassen den Eindruck nicht vollständig zu sein: Mir fehlen Punkte wie &amp;quot;Outsourcing&amp;quot;, &amp;quot;KnowHow der Entwickler&amp;quot;, Tooling, Framework-Auswahl, etc.&lt;br /&gt;
; 9 Seite 9: Eigentlich möchte der Autor hier über Datenschutz sprechen. Abgesehen von den letzten drei Zeilen geht es aber nur um &amp;quot;User tracking&amp;quot; - Wo ist der Rest der Datenschutzproblematik? Warum der Fokuss auf Tracking? Mir ist das zu einseitig.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
tbd.&lt;br /&gt;
&lt;br /&gt;
; Wortwahl:&lt;br /&gt;
Ich stosse innerhalb der Texte immer wieder an die Worten '''Hintergrundsystem''' und '''Sicherheitskontext'''.&lt;br /&gt;
'''Hintergrundsystem:''' besseres Synonym?&lt;br /&gt;
'''Sicherheitskontext:''' nur weil es in den Texten um Sicherheit geht muss nicht an jeder Stelle immer wieder das Wort _Sicherheits_kontext eingebaut werden.&lt;br /&gt;
Bsp: &amp;quot;Erlangt ein Angreifer Kenntnis von einer solchen gültigen, aber nicht mehr genutzten SessionID, so kann er die Web-Anwendung im Sicherheitskontext des nicht abgemeldeten Benutzers weiter verwenden.&amp;quot; (G 5,WA12 Unzureichendes Session-Management von Web-Anwendungen)&lt;br /&gt;
Verbesserungsansansatz: ... so kann er die Web-Anwendung anstelle des eigentlichen Besitzers weiterhin verwenden.&lt;br /&gt;
&lt;br /&gt;
== &amp;quot;G 2.WA01 Mangelhafte Auswahl oder Konzeption von Web-Anwendungen&amp;quot; (Matthias) ==&lt;br /&gt;
&lt;br /&gt;
Nachdem ich mir diese Gefährdung durchgelesen hatte, fehlten mir ehrlich gesagt etwas die Worte. Nicht nur, dass hier fast jeder zweite Satz entweder falsch ist bzw. massive Fehler enthält oder ich diesen schlicht nicht verstehe, ist der ganze Text sprachlich wirklich enorm verbesserungsfähig. &lt;br /&gt;
&lt;br /&gt;
Na gut, ich konzentriere mich mal auf die fachlichen Punkte:&lt;br /&gt;
&lt;br /&gt;
; 1. Security Controls&lt;br /&gt;
Werden mal mit &amp;quot;Schutzmechanismen&amp;quot;, mal mit &amp;quot;Sicherheitskomponenten&amp;quot; und dann wieder als &amp;quot;Sicherheitsfunktionen&amp;quot; bezeichnet. Hier macht eine einheitliche Benennung sicherlich Sinn und ist weniger verwirrend.&lt;br /&gt;
&lt;br /&gt;
; 2. &amp;quot;Eine Web-Anwendung ist in der Regel ein verteiltes, komplexes System bestehend aus unterschiedlichen Komponenten (z. B. Webserver, Applikationsserver, Hintergrundsysteme)&amp;quot;&lt;br /&gt;
&lt;br /&gt;
Eine Webanwendung besteht sicher nicht aus einem Webserver- oder anderer infrastruktureller Komponenten, sondern ist Software welches diese nutzt.&lt;br /&gt;
&lt;br /&gt;
; 3. &amp;quot;Bei individuell entwickelten Web-Anwendungen sind im Allgemeinen die Frameworks, Komponenten und Schnittstellen im Rahmen der Konzeption auszuwählen und deren Einbindung und Absicherung zu betrachten....Im Gegensatz dazu ist bei der Konzeption von Web-Anwendungen auf Basis von Standardsoftware insbesondere auf die Auswahl der Software und die Konfiguration der Teilkomponenten zu achten&amp;quot;&lt;br /&gt;
&lt;br /&gt;
Wir unterscheiden im Rahmen von Webanwendungen eigentlich Free or Opensource Software (FOSS bzw. FLOSS), Standardsoftware und Individualsoftware voneinander. Wir unterscheiden nicht Frameworks von Standardsoftware. Frameworks können Teil von Standardsoftware sein, wie etwa bei SharePoint, SAP, etc, oder aber FOSS, wie etwa Spring. Die ganzen Absätze machen für mich daher keinen Sinn.&lt;br /&gt;
&lt;br /&gt;
; 4. &amp;quot;Eine Sicherheitsfunktion (z. B. Authentisierung, Autorisierung) wird nicht an einer Stelle umgesetzt und verwendet, sondern ist mehrfach in der Web- Anwendung realisiert. Wird diese Sicherheitsfunktion an den verschiedenen Stellen unterschiedlich umgesetzt, führt dies zu einem uneinheitlichen Sicherheitsniveau.&amp;quot;&lt;br /&gt;
&lt;br /&gt;
Natürlich ist die mehrfache Verwendung bestimmter Security Controls, beispielsweise von Zugriffskontrollen (Complete-Mediation) oder Validierung (Robustheit) erstrebenswert. Was der Autor hier wahrscheinlich meinte, war die Notwendigkeit diese zu Kapseln bzw. zu Externalisieren. Das bezieht sich im übrigen nicht nur auf die Controls selbst, sondern auch auf ihre Parametrisierung (etwa. über Konfigdateien / XACML).&lt;br /&gt;
&lt;br /&gt;
Wichtiger wäre in diesem Zusammenhang zudem die fehlende Berücksichtigung bestimmter Security Controls.&lt;br /&gt;
&lt;br /&gt;
; 5. &amp;quot;Auswahl von Web-Anwendungen auf Basis von Standardsoftware&amp;quot;&lt;br /&gt;
Was will der Satz sagen? Ich wähle Standardsoftware aus, aber doch keine Webanwendungen. Oder heißt das, ich kaufe eine existierende Anwendung ein (Webanwendung!=Indivudualsoftware)? &lt;br /&gt;
&lt;br /&gt;
; 6. &amp;quot;Das ausgewählte Produkt verfügt nicht über die ausreichende Sicherheitsfunktionalität, ... Daher müssen die notwendigen Schutzmechanismen nachträglich hinzugefügt werden, wodurch zusätzliche Aufwände entstehen.&amp;quot;&lt;br /&gt;
Das ist etwas sehr positiv formuliert. Tatsächlich können fehlende Security Controls in zugekaufter Software (insb. Standardsoftware) in der Realität häufig gar nicht hinzugefügt werden oder nur perimetrisch (z.B. per WAF oder Access Gateway).&lt;br /&gt;
&lt;br /&gt;
; 7. &amp;quot;Die Hintergrundsysteme werden unzureichend abgesichert und dadurch ist die Datenbank der Web-Anwendung aus dem Internet erreichbar.&amp;quot;&lt;br /&gt;
Gehören fehlende Netzwerksegmentierung bzw. Firewallregeln wirklich in diesen Kontext? Das ist doch eigentlich Grundschutz der Infrastruktur, oder?&lt;br /&gt;
&lt;br /&gt;
; 8. &amp;quot;Aufgrund schwacher Parameter in der Konfiguration des Frameworks zum Session-Management werden unsichere SessionIDs erzeugt.&amp;quot;&lt;br /&gt;
Was sind &amp;quot;schwache&amp;quot; Parameter?&lt;br /&gt;
&lt;br /&gt;
Welches Framework erlaubt unsichere SessionIDs durch eine &amp;quot;schwache&amp;quot; Konfiguration zu erzeugen?&lt;br /&gt;
&lt;br /&gt;
; 9. &amp;quot;Wird die Konfiguration des Web-Browsers durch einen Angreifer manipuliert, können die clientseitig umgesetzten&amp;quot;&lt;br /&gt;
&lt;br /&gt;
Manipuliert ein Angreifer die Konfguration seines Webbroswers, wenn er einen MITM-Proxy konfiguriert?&lt;br /&gt;
&lt;br /&gt;
Wie bereits bei den &amp;quot;Goldenen Regeln&amp;quot; angemerkt, gilt auch hier, das manche Security Controls auch clientseitig umgesetzt werden dürfen (etwa. zur Verhinderung von Dom-Based XSS).&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== &amp;quot;G 5.WA10 Fehler in der Web-Anwendungslogik&amp;quot; (Dennis) ==&lt;br /&gt;
; 1. &amp;quot;Damit kann aufgrund der Prüfreihenfolge ein hoher Ressourcenverbrauch provoziert werden, der für Denial-of-Service-Angriffe ausgenutzt werden kann.&amp;quot;&lt;br /&gt;
Meiner Meinung nach passt in diesem Kontext die Attacke DoS nicht ganz. Falls die nachfolgende Funktionalität wegen der langen Ausführungszeit der Filterkomponente übersprungen wird bzw. ein Fehler auftritt würde dies meiner Ansicht in die Thematik Anwendungslogik passen. Eine DoS-Attacke kann hingegen anhand jeder Funktion durchgeführt werden.&lt;br /&gt;
&lt;br /&gt;
== &amp;quot;G 5.WA11 Umgehung clientseitig umgesetzter Sicherheitsfunktionen von Web-Anwendungen&amp;quot; (Dennis) ==&lt;br /&gt;
; 1. &amp;quot;Ein Angreifer kann diese ausnutzen, um beispielsweise unbefugt Befehle an Hintergrundsysteme der Web-Anwendung zu übermittlen (z.B. in Form von Datenbankanfragen bei einer SQL-Injection).&amp;quot;&lt;br /&gt;
Umformulierung des Inhalts der Klammer. Hatte beim ersten Lesen für mich den Anschein, als ob ein Formular genutzt werden könnte welches den Nutzer aufforder eine SQLI einzugeben. Ich denke &amp;quot;Datenbankanfrage zwecks Ausführung einer SQL-Injection&amp;quot; würde besser passen.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== G 2.WA02 Mängel bei der Entwicklung und der Erweiterung von Web-Anwendungen (Matthias) ==&lt;br /&gt;
&lt;br /&gt;
Allgemein ist de obere Teil ok, die aufgezählten &amp;quot;Auswirkungen von fehlenden Vorgaben&amp;quot; verstehe ich jedoch nicht. Wo ist etwa der Bezug von Barrierefreiheit auf die Anwendungssicherheit?&lt;br /&gt;
&lt;br /&gt;
Mein Vorschlag, um diese Punkte etwa sinnvoll umzubauen:&lt;br /&gt;
* &amp;quot;Fehlendes Vorgehensmodell&amp;quot;: Bezug auf fehlende Berücksichtigung von Sicherheit im SDLC. Statt eines SDLCs selbst sollte hier besser auf die Notwendigkeit eines Secure Development Lifecycle (SDL) hingewiesen werden&lt;br /&gt;
* &amp;quot;Fehlende Programmierrichtlinien&amp;quot; =&amp;gt; Besser wäre hier &amp;quot;Fehlende Sicherheitsrichtlinien in der Programmierung&amp;quot; also &amp;quot;Secure Coding Guidelines&amp;quot;&lt;br /&gt;
* &amp;quot;Testfälle&amp;quot; =&amp;gt; &amp;quot;Sicherheitsrelevante Testfälle&amp;quot; (z.B. Security Unit Tests). &lt;br /&gt;
* &amp;quot;Barrierefreiheit&amp;quot;: Warum nicht an dieser Stelle die Auswirkungen von Sicherheitsfunktionen auf die Bedienbarkeit, etwa anhand von CAPTCHAS erläutern?&lt;br /&gt;
&lt;br /&gt;
== G 2.WA03 Unzureichender Schutz personenbezogener Daten bei Web-Anwendungen (Matthias) ==&lt;br /&gt;
&lt;br /&gt;
Der Titel dieses Bausteines heißt &amp;quot;Schutz personenbezogener Daten&amp;quot;, die genannten Beispiele beziehen sich bis auf den letzten jedoch auf die missbräuchliche (oder zumindest problematische) Nutzung aus Sicht des Datenschutzes. &lt;br /&gt;
&lt;br /&gt;
Die Punkt 1-3 sollten daher besser entfallen und z.B. durch die Folgenden ersetzt werden:&lt;br /&gt;
* Unsichere Einbindung von sozialen Netzwerken (Bezug nehmen auf den Like-Button bei Facebook)&lt;br /&gt;
* Unsichere Einbindung von Werbeinhalten&lt;br /&gt;
* Unsichere Übertragung und Caching&lt;br /&gt;
* Unsichere Protokollierung&lt;br /&gt;
* Ungenügender Zugriffsschutz&lt;br /&gt;
* Verstoß des Minimalprinzips bzw. der Zweckgebundenheit (welche Daten werden wirklich benötigt)&lt;br /&gt;
&lt;br /&gt;
Auch wäre es ggf. zumindest einen Verweis auf das BDSG zu machen.&lt;br /&gt;
&lt;br /&gt;
== G 4.33 Unzureichende oder fehlende Authentisierung (Matthias) ==&lt;br /&gt;
&lt;br /&gt;
; 1. Erster Absatz: &amp;quot;Wenn Authentisierungsmechanismen fehlen oder zu schlecht sind&amp;quot;&lt;br /&gt;
&lt;br /&gt;
&amp;quot;schlecht&amp;quot; sollte vlt besser durch &amp;quot;unzureichend&amp;quot; ersetzt werden.&lt;br /&gt;
&lt;br /&gt;
; 2. &amp;quot;Sicherheitslücken entstehen bei... der Benutzerauthentisierung&amp;quot;&lt;br /&gt;
&lt;br /&gt;
Hier findet nur ein Bezug auf &amp;quot;Passwörter&amp;quot; statt. Der Bezug auf die fehlerhaft implementierte oder dem Schutzbedarf ungenügende Schutzmechanismen (z.B. keine 2-Faktor-Authentisierung bei hochsensiblen Daten) fehlt. Auch auf das komplette fehlen von Authentisierungs-Controls wird hier nicht  eingegangen&lt;br /&gt;
&lt;br /&gt;
; 3. &amp;quot;Sicherheitslücken entstehen bei... der Komponentenauthentisierung&amp;quot;&lt;br /&gt;
&lt;br /&gt;
Wie bei 2., wird auch hier wieder nur auf Passwörter, nicht jedoch auf das fehlen von Controls selbst eingegangen. An dieser Stelle fehlt auch ein Hinweis auf die Notwendigkeit dedizierter Benutzeraccounts.&lt;br /&gt;
&lt;br /&gt;
; 4. &amp;quot;Sicherheitslücken entstehen bei... der Wahl des Verfahrens&amp;quot;&lt;br /&gt;
&lt;br /&gt;
Statt untauglich würde ich auch hier von &amp;quot;dem Schutzbedarf der Daten nicht angemessen&amp;quot; sprechen, eigentlich gehört das für mich aber in die obigen Punkte.&lt;br /&gt;
&lt;br /&gt;
; 5. Serverseitige Authentisierung fehlt&lt;br /&gt;
&lt;br /&gt;
Auch der Server (bzw. die Anwendung selbst) kann sich fehlerhaft oder ungenügend beim Benutzer authentsieren, etwa über DNS, SSL-Zertifikate, etc.&lt;br /&gt;
&lt;br /&gt;
== G 4.WA04 Unzureichende Validierung von Ein- und Ausgabedaten bei Web-Anwendungen (Matthias) ==&lt;br /&gt;
&lt;br /&gt;
; 1. &amp;quot;Unzureichende Validierung von Eingabedaten&amp;quot;&lt;br /&gt;
&lt;br /&gt;
Die genannten Beispiele sind genau keine korrekten Beispiele für diesen Fall, sondern betreffen die Ausgabevalidierung bzw. Enkodierung. Typische Fehler der Eingabevalidierung ist eine Manipulierbarkeit der Business Logik.&lt;br /&gt;
&lt;br /&gt;
; 2. &amp;quot;Unzureichende Validierung von Ausgabedaten&amp;quot;&lt;br /&gt;
&lt;br /&gt;
Hier geht es zentral um die Verhinderung von Interpreter Injection, also serverseitig (z.B. SQL oder LDAP Injection) oder clientseitig (XSS, JSON Injection, etc.). Statt &amp;quot;können die Ausgaben Schadcode&amp;quot; enthalten würde ich hier eher davon Sprechen, dass ein solcher Interpreteraufruf manipuliert werden kann (was dann z.B. zur Einschleusung von Schadcode genutzt werden kann).&lt;br /&gt;
&lt;br /&gt;
; 3. &amp;quot;Die Suchfunktion der Web-Anwendung verwendet die Eingaben der Benutzer ungefiltert&amp;quot;&lt;br /&gt;
&lt;br /&gt;
Mit ungenügender &amp;quot;Filterung&amp;quot; hat SQL Injection nichts zu tun,  eigentlich geht es hierbei darum, dass SQL-Anfragen dynamisch mit unvalidierten Eingebedaten zusammengebaut (konkateniert) werden.&lt;br /&gt;
&lt;br /&gt;
; 4. &amp;quot;Ungefilterter HTML-Code in Kommentar-Funktion&amp;quot;&lt;br /&gt;
&lt;br /&gt;
Hier fehlt der Bezug auf persistentes XSS, das hier sicherlich zentral ist.&lt;br /&gt;
&lt;br /&gt;
== G 4.WA05 Fehlende oder mangelhafte Fehlerbehandlung durch Web-Anwendungen (Tobias, Matthias) ==&lt;br /&gt;
; Abschnitt &amp;quot;Unsichere Fehlerbehandlung&amp;quot;&lt;br /&gt;
Die G adressiert &amp;quot;Unsichere Fehlerbehandlung&amp;quot;, der Abschnitt die &amp;quot;Unsichere Fehlerbehandlung in Sicherheitskomponenten&amp;quot;. Entsprechend sollte der fettgedruckte Teil angepasst werden.&lt;br /&gt;
&lt;br /&gt;
; &amp;quot;fehlende SQL-Parameter,&amp;quot;&lt;br /&gt;
Sollte besser &amp;quot;Fehlermeldungen bei ungültigen SQL-Abfragen&amp;quot; lauten.&lt;br /&gt;
&lt;br /&gt;
; &amp;quot;Auch scheinbar unkritische Informationen, wie die Meldung ob (..)&amp;quot;&lt;br /&gt;
Korrekt, allerdings nicht nachvollziehbar, wenn das Problem der Leser nicht schon bekannt ist. Daher erweitern nach &amp;quot; Rahmen von Brute-Force-Angriffen ausgenutzt werden.&amp;quot; mit &amp;quot;. Bei Brute-Force-Angriffen wäre in diesem Fall klar, dass der Benutzername gültig ist.&amp;quot;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[User:Mrohr|Matthias]]): Stimme dem Obigen auch zu, ausserdem:&lt;br /&gt;
&lt;br /&gt;
; Sprachlich: &amp;quot;kann dies unvorhersehbare Auswirkungen haben und den Betrieb der Web-Anwendung bis zur Unerreichbarkeit einschränken.&amp;quot;&lt;br /&gt;
&lt;br /&gt;
&amp;quot;Unerreichbarkeit&amp;quot; ist etas merkwuerdig ausgedrueckt, besser ware hier von der &amp;quot;Verfuegbarkeit&amp;quot; zu sprechen. Im Uebrigen fehlt vollstaendig der Bezug auf die Verfuegbarkeit als Primaeres Schutzziel der Informationssicherheit.&lt;br /&gt;
&lt;br /&gt;
; &amp;quot;Clientseitige Fehlerbehandlung&amp;quot;&lt;br /&gt;
Das stimmt soweit, das generelle Problem ist jedoch genereller, naehmlich die clientseitige Abbildung sicherheitsrelaventer Logik (in diesem Fall die Fehlerbehandlung)&lt;br /&gt;
&lt;br /&gt;
== G 4.WA06 Unzureichende Nachvollziehbarkeit von sicherheitsrelevanten Ereignissen bei Web-Anwendungen (Matthias) ==&lt;br /&gt;
&lt;br /&gt;
; 1. Erster Absatz: &amp;quot;Die Behebung einer Schwachstelle ist dann nicht oder nur unter erschwerten Bedingungen möglich.&amp;quot;&lt;br /&gt;
&lt;br /&gt;
Hier würde ich ergänzen: &amp;quot;...und Angriffe auf die Anwendungen können ggf. nicht erkannt oder nachvollzogen werden&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
; 2. &amp;quot;Beispiele&amp;quot;: Kommulierbarkeit&lt;br /&gt;
&lt;br /&gt;
Hier fehlt auch ein Bezug auf die Kommulierbarkeit von SIcherheitsereignissen, dass diese also auch von solchen anderer Systeme in Verbindung gesetzt werden können&lt;br /&gt;
&lt;br /&gt;
; 3. &amp;quot;Beispiele&amp;quot;: Gerichtsverwertbarkeit&lt;br /&gt;
&lt;br /&gt;
Auch die Möglichkeit zur Gerichtsverwertbarkeit (etwa durch eindeutigen Zeitstempel) und manipulationssicherer Speicherung, würde ich an dieser Stelle unbedingt erwähnen.&lt;br /&gt;
&lt;br /&gt;
== G 4.WA07 Offenlegung von Informationen bei Web-Anwendungen (Matthias) ==&lt;br /&gt;
&lt;br /&gt;
; 1. Titel&lt;br /&gt;
&lt;br /&gt;
Hier würde ggf. &amp;quot;Offenlegung vertraulicher Informationen&amp;quot; sicher besser passen als &amp;quot;Offenlegung von Informationen&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
; 2. Beispiellink&lt;br /&gt;
&lt;br /&gt;
Ein Beispiellink (mit und ohne Token) würde sicher die Verständlichkeit dieser Schwachstelle verbessern.&lt;br /&gt;
&lt;br /&gt;
; 3. Erster Absatz: &amp;quot;Wenn demzufolge Informationen unnötig offengelegt werden, steigt die Wahrscheinlichkeit eines erfolgreichen Angriffs.&amp;quot;&lt;br /&gt;
&lt;br /&gt;
Interne Informationen auszublenden ist eine Härtungsmaßnahme, deren Anzeige erhöht aber nicht zwangsläufig die Wahrscheinlichkeit eines erfolgreichen Angriffs. Ich würde diesen Satz weglassen.&lt;br /&gt;
&lt;br /&gt;
 ; 4. Fehlende Punkte&lt;br /&gt;
&lt;br /&gt;
* Ein Hinweis auf HTTP Header wäre hier sicher erwähnenswert.&lt;br /&gt;
* Weiterhin bzgl. der Anzeige von Traces und ein Verweis auf den Entsprechenden Baustein zur Fehlerbehandlung&lt;br /&gt;
&lt;br /&gt;
== G 5.WA14 Cross-Site Request Forgery (CSRF, XSRF) (Matthias) ==&lt;br /&gt;
&lt;br /&gt;
; 1. Erster Absatz: &amp;quot;Können Funktionen einer Web-Anwendung ohne weitere Überprüfung der Authentizität des HTTP-Requests (z.B. durch Tokens in versteckten Formularfeldern) genutzt werden&amp;quot;&lt;br /&gt;
&lt;br /&gt;
Statt &amp;quot;Funktionen&amp;quot; würde ich besser von &amp;quot;schreibenden Aktionen&amp;quot; sprechen, dann macht der Satz mehr Sinn.&lt;br /&gt;
&lt;br /&gt;
; 2. Dritter Absatz: &amp;quot;Im Gegensatz zu XSS (siehe ...￼ ) ist das Angriffsziel nicht die Information auf dem Client (z. B. in Cookies),&amp;quot;&lt;br /&gt;
&lt;br /&gt;
Dieser (Halb-)Satz macht keinen Sinn, auch weil es bei XSS nicht nur im Informationen auf dem Cient geht. Vorschlag: &amp;quot;ist das Angriffsziel nicht die Ausführung von Skriptcode, sondern von unbefugten, schreibenden Aktionen im Kontext des angemeldeten Benutzers.&amp;quot;&lt;br /&gt;
&lt;br /&gt;
; 3. Session Riding&lt;br /&gt;
&lt;br /&gt;
Session Riding ist quasi nur ein anderer Begriff für CSRF. Die einzige Form von CSRF die mir bekannt ist, sind Angriffe mit Standard-Passwörtern auf HTTP-Basic-Auth geschützten Ressourcen.&lt;br /&gt;
&lt;br /&gt;
Im Grunde ist Session Riding aber nur ein Synonym für CSRF. Der Absatz ist daher auch nur eine Wiederholung der obigen Beschreibung.&lt;br /&gt;
&lt;br /&gt;
; 4. Zum Beispiel: &amp;quot;Durch einen präparierten Link auf einer Webseite wird die Änderung des Zugangspasswortes des Routers eingeleitet.&amp;quot;&lt;br /&gt;
&lt;br /&gt;
Etwas ungüngstig ausgedrückt. Besser wäre: &amp;quot;wird eine Anfrage zur Änderung des Zugangspasswortes an den Router gesendet. Hierbei sendet der Browser automatisch den Session Cookie mit, worüber die Webanwendung die Authentizität der Anfrage verifiziert und die Änderung durchführt.&amp;quot;&lt;br /&gt;
&lt;br /&gt;
== G 5.WA18 Clickjacking (Matthias) ==&lt;br /&gt;
&lt;br /&gt;
Hier stellt sich mir nur die allgemeine Frage, ob Clickjacking, bzw. der Schutz davor tatsächlich einem Grundschutz zuzurechnen ist. Persönlich würde ich dies nicht tun.&lt;br /&gt;
&lt;br /&gt;
== M 2.WA02 Dokumentation der Architektur von Web-Anwendungen (Matthias) ==&lt;br /&gt;
&lt;br /&gt;
; Verantwortlich für die Umsetzung&lt;br /&gt;
Hier wäre auch die Nennung des &amp;quot;Architekten&amp;quot; sinnvoll&lt;br /&gt;
 &lt;br /&gt;
; Fehlende Bestandteile der Dokumentation:&lt;br /&gt;
* Schutzbedarf des Systems sowie der verarbeiteten Daten&lt;br /&gt;
* Schützenswerte Daten und Funktionen (Assets)&lt;br /&gt;
* Betriebliche Anforderungen an die Sicherheit bzw. eingesetzte Plattform&lt;br /&gt;
* Dokumentierte Konfigurationseinstellungen &lt;br /&gt;
* BIA (RTO, RPO)&lt;br /&gt;
* Schnittstellen&lt;br /&gt;
* Trust Boundaries&lt;br /&gt;
* Akteure (bzw. Trust Level)&lt;br /&gt;
* Sicherheitsannahmen&lt;br /&gt;
* Geltende Compliance-Anforderungen (BDSG, PCI DSS, etc.)&lt;br /&gt;
&lt;br /&gt;
; Benutzermanagement&lt;br /&gt;
&lt;br /&gt;
Wenn damit das Identity Management gemeint ist, gehört das Dokumentiert, ist aber keine Sicherheitsfunktion. Oder ist hiermit das Rollen- und Berechtigungskonzept gemeint? Grenzt sich aus meiner Sicht schwer mit dem Thema Authentisierung ab. &lt;br /&gt;
&lt;br /&gt;
; Prüffragen&lt;br /&gt;
&lt;br /&gt;
Hier fehlt etwas in Bezug auf Sicherheitsanforderungen. Beispiel: &amp;quot;Werden Sicherheitsanforderungen an den Betrieb während der Entwicklung abgestimmt und dokumentiert&amp;quot;&lt;br /&gt;
&lt;br /&gt;
== M 2.WA12 Entwicklung und Erweiterung von Anwendungen (Markus) ==&lt;br /&gt;
; &amp;quot;Es sollte darauf geachtet werden, dass Sicherheitsanforderungen&lt;br /&gt;
vollständig durch Sicherheitsmechanismen erfüllt und zur Erstellung von&lt;br /&gt;
Testfällen festgehalten werden.&amp;quot; --&amp;gt; Bessere Formulierung würde aussagen, dass die Sicherheitsanforderungen durch Testfälle verifiziert werden.&lt;br /&gt;
&amp;quot;(z. B. durch Kommentare im&lt;br /&gt;
Quelltext). Somit ist der Quelltext zu einem&amp;quot; --&amp;gt; Das ist kein empfehlenswerter Programmierstiel! Raus mit diesem Kommentar&lt;br /&gt;
;&amp;quot;Zum Schutz vor dem Verlust bereits entwickelter und verworfener&lt;br /&gt;
Lösungen sowie zu Dokumentationszwecken sollte die Historie der&lt;br /&gt;
Änderungen festgehalten werden (z. B. durch ein Revisionssystem).&amp;quot; --&amp;gt; Auch diesen Absatz können wir streichen - Kein professioneller Programmierer arbeitet ohne Versionierugssystem.&lt;br /&gt;
;&amp;quot;Bei Web-Anwendung sollten die Webseiten auf Konformität zu dem&lt;br /&gt;
verwendeten Standard (z. B. HTML-Standard) getestet werden. Dadurch&lt;br /&gt;
können unvorgesehene Seiteneffekte aufgrund einer Fehlinterpretation&lt;br /&gt;
seitens der Browser vermieden werden.&amp;quot; --&amp;gt; Könnte man noch um &amp;quot;Die Software ist in möglichst vielen Browsern zu testen&amp;quot; erweitern.&lt;br /&gt;
;Generell geht der Autor leider nicht auf die Rollen &amp;amp; Rechte Verteilung ein. Mir fehlt der Hinweis, das es eine personelle Trennung zwischen Entwicklung, Test und Betrieb geben muss.&lt;br /&gt;
;Zum Thema Wartung / Betrieb --&amp;gt; Hier wird keine Aussage getroffen bezüglich Log_Files. Dieses Thema kann kritische Auswirkungen haben, Bsp.: logging ganzer HTTP-Requests im LogLevel=Debug.&lt;br /&gt;
; &amp;quot;Produktspezifische Sicherheitsfunkionalität&amp;quot; - Dieser Absatz ist gefährlich - der Angreifer ist nicht zur Verwendung dies Zielbrowsers gezwungen. Deshalb können Browser-spez. Sicherheitsfunktionen nur als Add-ON gewertet werden.&lt;br /&gt;
; &amp;quot;Festlegung der Entwicklungsumgebung&amp;quot; - Dieser Absatz geht nicht auf die zu verwendenden Testdaten ein. Der Hinweis, dass Live-Daten / Kundendaten nichts in Test- &amp;amp; Entwicklungsumgebungen zu suchen haben fehlt!!!&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== M 2.WA24 Web-Tracking (Matthias) ==&lt;br /&gt;
&lt;br /&gt;
; Letzter Absatz: &amp;quot;Falls eine Auswertung von Nutzerdaten, insbesondere personenbezogener Daten, .. &amp;quot;&lt;br /&gt;
&lt;br /&gt;
Hier sollte denke ich besser von personenbeziehbaren Daten gesprochen Werten. Dies betrifft etwa die Zuordnung von Surfverhalten zu einer bestimmten Person. Dies sollte stets nach den Prinzipien Datensparsamkeit und Datenvermeidung, Erforderlichkeit, sowie Zweckbindung erfolgen. Ist Webtracking nicht personenbeziehbar ist dies kein Thema für den Datenschutz.&lt;br /&gt;
&lt;br /&gt;
== M 4.WA04 Authentisierung bei Web- Anwendungen (Matthias) ==&lt;br /&gt;
&lt;br /&gt;
: Verantwortlich fuer Umsetzung &lt;br /&gt;
sollte in erster Linie beim Architekturen und in zweiter beim Entwickler liegen&lt;br /&gt;
; Vermischung von Authentisierung und Session Management &lt;br /&gt;
&lt;br /&gt;
Bei diesem Baustein findet eine ziemlich große Vermischung von Anforderung an die Authentisierung und das erst in &amp;quot;M 4.WA06 Session-Management bei Web- Anwendungen&amp;quot; behandelte Session Management statt (Beispiel: &amp;quot;Remember-Me-Funktion&amp;quot;). Beide Themen sollten sinnvollerweise getrennt voneinander zu betrachten und aufeinander zu beziehen.&lt;br /&gt;
&lt;br /&gt;
; Verwendung von Frameworks&lt;br /&gt;
&lt;br /&gt;
Die Anforderung ist schon ein wenig eingeschränkt. Besser passt hier denke ich die &amp;quot;Abbildung der Authentisierung über Standardkomponenten (Bibliotheken oder Frameworks)&amp;quot;. &lt;br /&gt;
&lt;br /&gt;
; Remember-Me-Funktion&lt;br /&gt;
&lt;br /&gt;
Siehe oben, gehört zum Session Management. Das ließt sich im übrigen so, als ob eine Webanwendung Credentials auf dem Client abhängt. &lt;br /&gt;
&lt;br /&gt;
; Grenzwerte für gescheiterte Anmeldeversuche&lt;br /&gt;
&lt;br /&gt;
Diese Empfehlung ist allgemein falsch, da sie sehr von der betrachteten Anwendung abhängt. Besser wäre hier allgemein von Mechanismen zur Verhinderung von automatisierten Angriffen zu sprechen (Anti-Automatisierung). &lt;br /&gt;
&lt;br /&gt;
Etwa umsetzbar durch&lt;br /&gt;
* Sperrung nach x Anmeldeversuchen&lt;br /&gt;
* Throttling&lt;br /&gt;
* Captchas&lt;br /&gt;
* Sicherheitsfragen&lt;br /&gt;
&lt;br /&gt;
Das allgemeine Sperren kann leicht für das gezielte Aussperren von Benutzern (User Lockout) verwendet werden. Was etwa bei Trading-Anwendungen nicht funktioniert.&lt;br /&gt;
&lt;br /&gt;
; Automatisiertes Zurücksetzen von Authentisierungsdaten&lt;br /&gt;
&lt;br /&gt;
Würde ich besser als &amp;quot;Passwort-Reset&amp;quot; bezeichnen.&lt;br /&gt;
&lt;br /&gt;
Weiterhin fehlt hier der Hinweis, dass statt ein automatisiertes Zurücksetzen, ein Mechanismus zu empfehlen ist, bei dem über ein hinterlegtes Sicherheitsmerkmal (Handy-Nummer oder E-Mail-Adresse) vom Benutzer zunächst eine Verifikation durchgeführt wird. Beispielsweise durch einen erhaltenen Link. Erst dann darf eine Änderung des Passwortes durch den Benutzer erfolgen.&lt;br /&gt;
&lt;br /&gt;
; Registrierung nicht behandelt&lt;br /&gt;
&lt;br /&gt;
Es existiert hier kein Punkt, der die sichere Implementierung von Benutzerregistrierungen behandelt.&lt;br /&gt;
&lt;br /&gt;
; Verweis auf Externalisierung fehlt.&lt;br /&gt;
&lt;br /&gt;
Statt die Authentisierung selbst durchzuführen kann eine Anwendung hierzu auf eine externe Komponente (Beispiel: SiteMinder oder Kerberos) zurückgreifen.&lt;br /&gt;
&lt;br /&gt;
; Verweis auf Behandlung von Credentials fehlt&lt;br /&gt;
&lt;br /&gt;
Auch wenn das  in &amp;quot;M 4.WA15 Schutz vertraulicher Daten bei Web- Anwendungen&amp;quot; ausführlich behandelt wird, sollte in diesem Baustein bereits auf den angemessenen Schutz von Authentisierungsdaten bei Übertragung und Speicherung hingewiesen werden.&lt;br /&gt;
&lt;br /&gt;
== M 4.WA05Umfassende Ein- und Ausgabevalidierung bei Web-Anwedungen (Markus) ==&lt;br /&gt;
; &amp;quot;Ablehnung der Daten im&lt;br /&gt;
Fehlerfall&amp;quot; --&amp;gt; Hier könnte man noch auf Tar-Pits eingehen - nur ein Vorschlag.&lt;br /&gt;
&lt;br /&gt;
== M 4.WA06Session-Management bei Web-Anwendungen (Markus, Matthias) ==&lt;br /&gt;
; &amp;quot;Übertragung der SessionID mittels GETRequest&amp;quot; --&amp;gt; Hier fehlt der Hinweis, dass die Lebensdauer dieser SessionIds kurz/kürzer sein muss, als im Falle der Speicherung im Cookie.&lt;br /&gt;
&lt;br /&gt;
([[User:Mrohr|Matthias]]) Die Anmerkung verstehe ich ehrlich gesagt ueberhaupt nicht, zumal das SM haeufig transparent zwischen Cookies und URL Rewriting wechselt. Wozu soll das gut sein? Wie soll das geschehen? Idealerweise sollte die Session ID niemals in die URL geschrieben werden, das sollte eigentlich genuegen.&lt;br /&gt;
&lt;br /&gt;
; &amp;quot;Verschlüsselte Übertragung von SessionIDs&amp;quot; --&amp;gt; Hier fehlt der Hinweis auf den Beast-Exploit. TLS Version &amp;gt; 1.0 verwenden!&lt;br /&gt;
&lt;br /&gt;
([[User:Mrohr|Matthias]]) Solange hier nicht auf eine explizite TLS Version eingegangen wird, sollte meiner grossen Ueberzeugung nach hier auch auf keine Exploits etc. eingagen werden, das gehoert an andere Stelle.&lt;br /&gt;
&lt;br /&gt;
; ([[User:Mrohr|Matthias]]) Weiterhin:&lt;br /&gt;
&lt;br /&gt;
 Es dürfen keine extern bekannten oder erratbaren Daten (z. B. IP-Adresse, Uhrzeit) in die Berechnung der SessionID einfließen.&lt;br /&gt;
&lt;br /&gt;
Die Aussage finde ich etwas problematisch, wichtiger ist, dass die Entropie ausreichend hoch ist. Haeufig werden etwa IPs von Load Balancern in die Session ID hineingeschrieben.&lt;br /&gt;
&lt;br /&gt;
 - Domain (z. B. webapp.domain.tld),&lt;br /&gt;
 - Path (z. B. /webapp/),&lt;br /&gt;
 - Secure und&lt;br /&gt;
 - HttpOnly.Beschränkte Sitzungsdauer&lt;br /&gt;
&lt;br /&gt;
Das sieht so aus, als ob es empfehlenswert ist, das Domain-Tag zu verwenden, das ist es sicherlich nicht. Was macht hier der Hinweis &amp;quot;Beschraenke Sizuungsdauer&amp;quot;?&lt;br /&gt;
&lt;br /&gt;
== M 4.WA07Fehlerbehandlung durch Web-Anwendungen (Markus) ==&lt;br /&gt;
; Konsistenter / Inkonsistener Zustand einer Webanwendung und der daraus resultierende Datenverlust: Hier fehlen mir die Punkte: DOS, Priv.Escalation, CodeExecution.&lt;br /&gt;
; Vermeidung vertraulicher Informationen in Fehlermeldungen --&amp;gt; Fehlermeldungen sollten ebenfalls eine Systeminformationen preisgeben (Softwareversion, Patchlevel, etc.)&lt;br /&gt;
; Abbruch des Vorgangs nach Auftreten eines Fehlers --&amp;gt; TarPits scheinen dem Autor umbekannt zu sein :)&lt;br /&gt;
; &amp;quot;Werden Fehler möglichst von der gleichen Komponente behandelt, in der&lt;br /&gt;
der Fehler aufgetreten ist?&amp;quot; --&amp;gt; Das &amp;quot;möglichst&amp;quot; sollten wir streichen.&lt;br /&gt;
&lt;br /&gt;
== M 4.WA08Schutz vor automatisierter Nutzung von Web-Anwendungen (Markus) ==&lt;br /&gt;
; &amp;quot;Brute-Force-&lt;br /&gt;
Angriffe (z. B. Erraten von Zugangsdaten) und Enumeration-Angriffe (z. B.&lt;br /&gt;
automatisiertes Ermitteln von gültigen Login-Namen)&amp;quot; -- die Beispiele sind identisch - besser Beispiele suchen, z.b. URL-Enumeration&lt;br /&gt;
&lt;br /&gt;
([[User:Mrohr|Matthias]]) Das sehe ich anders. Brute-Forcing bezieht auf Passwoerter und Enumeration auf Benutzernamen, etwa durchs hochzaehlen. Auch wenn ich zustimmen muss, dass die nicht ganz gluecklich gewaehlt wurden. Stann &amp;quot;Erraten von Zugangsdaten&amp;quot; wuerde ich besser von &amp;quot;Erraten von Passwoertern&amp;quot; sprechen. Oder wie gesagt gleich auch auf andere Beispiele (etwa Object ID Enumeration) beziehen.&lt;br /&gt;
&lt;br /&gt;
== M 4.WA11Sichere Konfiguration von Web-Anwendungen (Markus) ==&lt;br /&gt;
; &amp;quot;Sicherer Umgang mit TLS/SSL&amp;quot; -- Hier fehlt der Hinweis, dass TLS-1.0 gebrochen ist&lt;br /&gt;
; &amp;quot;Zeichenkodierungskonfiguration&amp;quot; -- Ein Whitelisting abhängig von der Encodierung wäre ein weiterer Vorschlag&lt;br /&gt;
; &amp;quot;Restriktive Dateisystemberechtigungen&amp;quot; -- auch wenn es ein klassiker ist - der AS sollte ebenfalls mit von einem eingeschränkten Nutzer gestartet werden und nicht als root&lt;br /&gt;
; Administration Consolen:zur Ergänzen: Wenn diese nicht benötigit, sollten derartige Applikationen nicht deployed werden, unabhängig von möglichen Zugangsbeschränkungen.&lt;br /&gt;
&lt;br /&gt;
([[User:Mrohr|Matthias]]) Sorry, meiner Meinung nach hat die Bewertung von Kryptoverfahren hier abslut nichts zu suchen.Stattdessen sollte hier auf den entsprechenden [https://www.bsi.bund.de/ContentBSI/Publikationen/TechnischeRichtlinien/tr02102/index_htm.html Empfehlung des BSI] verwiesen werden, auch wenn dieses Dokument derzeit noch etwas outdated zu sein scheint.&lt;br /&gt;
&lt;br /&gt;
== M 4.WA13Kontrolliertes Einbinden von Daten und Inhalten bei Web-Anwendungen (Markus) ==&lt;br /&gt;
; Datei-Upload: Bei einem Upload werden Dateien durchaus in TEMP-Verzeichnissen gesammelt und danach weiterverarbeitet. Diese TEMP-Verzeichnisse sind im Rahmen einer Sicherheitsanalyse zu betrachten -&amp;gt; Möglicher (unbefugter) Zugriff auf weitere Uploads&lt;br /&gt;
; Upload komprimierter Dateien / großer Dateien birgt die Gefahr von DOS Angriffen&lt;br /&gt;
; Upload von Dateien kann bei weiterem Parsing zu Speicherengpässen führen --&amp;gt; DOS-Angriffe auf Thread-Local etc.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== M 4.WA14Restriktive Herausgabe sicherheitsrelevanter Informationen bei Web-Anwendungen (Markus, Matthias) ==&lt;br /&gt;
OK - Keine Anmerkungen von mir.&lt;br /&gt;
&lt;br /&gt;
[[User:Mrohr|Matthias]]) Von mir schon;)&lt;br /&gt;
&lt;br /&gt;
; Vermeidung von Kommentaren in ausgelieferten Webseiten&lt;br /&gt;
&lt;br /&gt;
Das ist leider total falsch, wir brauchen haeufig Komentare, aus Kompatibilitaetsgruenden. So wird etwa der JavaScript-Block haeufig auskommentiert.&lt;br /&gt;
&lt;br /&gt;
Wurde stattessen besser von sicherheitsrelevanten Kommentaren sprechen und als Massnahme generell Entwicklerkommentare ueber Sprachkonstruktre (etwa JSP) durchzufuehren.&lt;br /&gt;
&lt;br /&gt;
; Löschen nicht benötigter Dateien&lt;br /&gt;
&lt;br /&gt;
Hier wurde ich ggf. Dateien von Versionisierungstools (etwa Subversion) erwaehnen, das sehen wir schon recht haeufig.&lt;br /&gt;
&lt;br /&gt;
Statt Dateien einfach nur zu loeschen (was in der Praxis haeufig nicht so einfach ist) bietet es sich zudem an, den Zugriff auf bestimmte Dateien oder Dateitypen generell zu sperren, etwa mittels ACL im Apache.&lt;br /&gt;
&lt;br /&gt;
; Gibt die Web-Anwendung ausschließlich neutrale Fehlermeldungen aus und sind diese im Quelltext identisch? {E: C}&lt;br /&gt;
&lt;br /&gt;
Persoenlich verstehe ich das nicht. Wieseo neutrale Fehlermeldung? Das macht fuer mich nur beim Login Sin. Hierzu existiert in dem Text auch keinerlei Bezug. Ich wuerde das daher besser entfernen und im Rahmen der Fehlerbehandlung diskutieren. Mindestens sollte hier jedoch besser von &amp;quot;sicherheitsunbedentlichen Fehlermeldungen&amp;quot; oder so gesprochen werden.&lt;br /&gt;
&lt;br /&gt;
; Wird der Referrer bei Verlassen der Web-Anwendung (z. B. durch einen Link auf eine externe Seite) gefiltert?&lt;br /&gt;
&lt;br /&gt;
Diesen Punkt sehe ich als sehr Fallabhengig an. Es kann fuer seiten durchaus wuenschenswert sein, dass der Referer weitergegeben wird. Der Referer sollte natuerlich keine sensiblen Informationen enthalten, was ja an anderer Stelle (etwa Session Management) vorgegeben wird bzw. gegeben werden sollte.&lt;br /&gt;
&lt;br /&gt;
== M 4.WA15Schutz vertraulicher Daten bei Web-Anwendungen (Markus, Matthias) ==&lt;br /&gt;
; Sichere kryptographische Algorithmen:&lt;br /&gt;
 Hier fehlt mir eine Liste der aktuelle als sicher geltenden Verfahren.&lt;br /&gt;
([[User:Mrohr|Matthias]]) Am Besten Referenz auf [https://www.bsi.bund.de/ContentBSI/Publikationen/TechnischeRichtlinien/tr02102/index_htm.html https://www.bsi.bund.de/ContentBSI/Publikationen/TechnischeRichtlinien/tr02102/index_htm.html]&lt;br /&gt;
&lt;br /&gt;
; Schlüssel&lt;br /&gt;
 Das die Schlüssel bestimmten Formaten entsprechen müssen ist ok - aber das Schlüsselmanagement wird gar nicht besprochen?&lt;br /&gt;
; Schutz der Daten im Browsercache&lt;br /&gt;
 Skripte und Browserplugins können ebenfalls auf den Browsercache zugreifen - diese werden hier nicht erwähnt.&lt;br /&gt;
&lt;br /&gt;
([[User:Mrohr|Matthias]]) Weiterhin entsprechen die vorgeschlagenen HTTP Headern nicht dem Best Practice:&lt;br /&gt;
&lt;br /&gt;
Cache-control: no-cache, no-store&lt;br /&gt;
Pragma: no-cache&lt;br /&gt;
Expires: -1&lt;br /&gt;
&lt;br /&gt;
([[User:Mrohr|Matthias]]) Die Empfehlung hinsichtlich des manuellen Leerens des Browsercaches sollte wenn dann nur bei Anwendungen mit sehr hohem Schutzbedarf in Erwaegung gezogen werden. Wichtiger waere da schon eher die richtigen Cache-Header zu verwenden. Solche Empfehlungen ihm Rahmen des Grundschutzes aber wirklich nichts zu suchen. &lt;br /&gt;
&lt;br /&gt;
; Maskierung von Passwörtern &lt;br /&gt;
 Dies schützt bei der Eingabe nur vor ShoulderSurfing nicht vor Skripten oder Plugins die diese an andere Server posten.&lt;br /&gt;
&lt;br /&gt;
([[User:Mrohr|Matthias]]) Das ist voellig korrekt. Aber inwieweit ist die Aussage Passwort-Felder zu verwenden fehlerhaft bzw. hier unzureichend beschrieben?&lt;br /&gt;
&lt;br /&gt;
; Sicherung von Zugangsdaten:&lt;br /&gt;
 Zugangsdaten in einer Datei abzulegen - wenn auch ausserhalb des WebRoots ist keine gute Idee.&lt;br /&gt;
([[User:Mrohr|Matthias]]) Es ist sicher nicht die schoenste Variante, es laesst sich aber nunmal in vielen Faellen nicht vermeiden. Deshalb fordert der [http://code.google.com/p/owasp-asvs/wiki/Verification_V2 ASVS] hier etwa auch nicht mehr. Fuer den hier angestreben Grundschutz sollte das meiner Meinung nach ausreichen.&lt;br /&gt;
; Schutz von Quelltexten:&lt;br /&gt;
 Hier würde ich property files mit aufnehmen. der hinweis auf web-inf/classes fehlt - warum?&lt;br /&gt;
 Bei include-befehlen sind die pfadangaben zu überdenken.&lt;br /&gt;
([[User:Mrohr|Matthias]]) Wuerde property Dateien allgemein den Konfigurationsdateien zuordnen. Der Begriff &amp;quot;Einzubindende Dateien&amp;quot; ist mir allrdings Neu&lt;br /&gt;
&lt;br /&gt;
([[User:Mrohr|Matthias]]) Weiterhin, fehlt ein genereller Bezug auf HTML 5 WebStorage, LSOs etc. Zumindest in abstrakter Form, so dass diese dadurch indirekt addresiert werden. Egal, in dem relevanten Punkt will der Autor meiner Meinung nach nur einige Beispiele nennen, das sollte keinen Anspruch auf Vollsteandigkeit haben muessen.&lt;br /&gt;
&lt;br /&gt;
; ([[User:Mrohr|Matthias]]) - Durch dieses Attribut wird die Gültigkeit des Cookies auf die Domäne der Web-Anwendung beschränkt.&lt;br /&gt;
Nein, das ist leider total falsch. Das Domain-Attribut stellt eine Aufweichung der Cookie-Gueltigkeit dar und nicht anders herum. Gewoehlich sind Cookies immer Host-Cockies und das sollte auch so bleiben. Die Empfehlung sollte entfernt werden.&lt;br /&gt;
&lt;br /&gt;
== M 4.WA16Zugriffskontrolle bei Web-Anwendungen (Markus) ==&lt;br /&gt;
; Zugriffskontrolle via Frameworks:&lt;br /&gt;
 Dieser Punkt (Frameworks) wird nur in einem Satz erwähnt. Es werden keine Bespiele gegeben - Das ist zu wenig.&lt;br /&gt;
 Es müssen alle Zugriffe geschützt werden. Eine Protokollierung aller Zugriffe mit den nötigen Informationen ist ebenfalls empfehlenswert.&lt;br /&gt;
; Datei Upload:&lt;br /&gt;
 Die Gefahr eines DOS wird hier nicht erwähnt.&lt;br /&gt;
&lt;br /&gt;
== M 4.WA19Verhinderung von Cross-Site Request Forgery (CSRF, XSRF) (Markus, Matthias) ==&lt;br /&gt;
; Verantwortliche: &lt;br /&gt;
 Entwickler und Admins!&lt;br /&gt;
([[User:Mrohr|Matthias]]) Korrekt, wobei auch in der Reihenfolge&lt;br /&gt;
&lt;br /&gt;
; Anti-CSRF-Token in hidden fields:&lt;br /&gt;
 Das ist keine gute Idee. Ich würde das streichen!&lt;br /&gt;
&lt;br /&gt;
([[User:Mrohr|Matthias]]) Watt? Anti-CSRF-Tokens in Hidden Fields sind die Standard-Massnahme. Wie denn sonst? Bitte nicht streichen!!! &lt;br /&gt;
&lt;br /&gt;
([[User:Mrohr|Matthias]]) Die Technik bei der die Session ID als Anti-CSRF-Token verwendet wird, wird als Double-Cookie Submit bezeichnet, das sollte hier referenziert werden.&lt;br /&gt;
&lt;br /&gt;
; Umgehung von Schutzmechanismen:&lt;br /&gt;
 Man in the middle hat keinen direkten Bezug zu CSRF! Das würde ich streichen.&lt;br /&gt;
([[User:Mrohr|Matthias]]) Der Hinweis ist korrekt. Wovon der Autor hier spricht ist Session Replay nicht CSRF.&lt;br /&gt;
&lt;br /&gt;
; Frameworks:&lt;br /&gt;
 Gute Idee - aber es gibt auch Features in den ApplicationServern die CSRF unterbinden - warum wird das nicht besprochen?&lt;br /&gt;
&lt;br /&gt;
([[User:Mrohr|Matthias]]) Sehe ich persoenlich nicht so, da CSRF primaer ein Applikations-Fehler ist, und auch in der Applikation und nicht im Environment (AppServer) geloest werden sollte. Auch wenn das manchmal ggf. die einzig machbare Loesung darstellt.&lt;br /&gt;
&lt;br /&gt;
([[User:Mrohr|Matthias]]) Was generell fehlt, ist ein Hinweis darauf, dass schreibende Requests generell per HTTP Post abgewickelt werden sollten, da HTTP Get keine &amp;quot;Safe Method&amp;quot;  (siehe HTTP 1.1, RFC 2616) ist.&lt;br /&gt;
&lt;br /&gt;
== M 4.WA20Sicherer Entwurf der Logik von Web-Anwendungen (Markus, Matthias) ==&lt;br /&gt;
; Rollbacks:&lt;br /&gt;
 Tritt ein Fehler auf muss die Applikation einen konsistenten Datenstand zurück lassen. Das wird hier nicht erwähnt.&lt;br /&gt;
; RaceConditions:&lt;br /&gt;
 Fehler in der Geschäftslogik können auch durch zwei gleichzeitige Sessions auf einer Webapplikation auftreten - das wird hier nicht besprochen.&lt;br /&gt;
&lt;br /&gt;
([[User:Mrohr|Matthias]]) Ehrlich gesagt kann ich nicht ganz nachvollziehen, was der Sichere Entwurf der Logik von Web-Anwendungen mit dem Verzicht auf aktive Inhalte zu tun hat. Unabhaengig davon sollte man solche unsinnigen Aussagen im Jahre 2012 nicht mehr treffen, damit macht man sicht nur laecherlich.&lt;br /&gt;
&lt;br /&gt;
Nichts desto trotz, was hier als &amp;quot;echte&amp;quot; Massnahmen erwaehnt werden sollte sind:&lt;br /&gt;
* Verhinderung von Race Conditions, aber nicht nur durch Concurrent Sessions sondern auch durch Singletons (TOCTOU)&lt;br /&gt;
* Enforcements von Workflows, etwa durch die Verwendung von State Machines oder Request Tokens (auch bekannt als Site Usage Enforcement)&lt;br /&gt;
* Fail Securely (bzw. Verweis)&lt;br /&gt;
* Serverseitige Abbildung der Anwendungslogik, zumindest wenn diese sicherheitsrelevant sit&lt;br /&gt;
&lt;br /&gt;
== M 4.WA22Verhinderung der Blockade von Ressourcen (DoS) bei Web-Anwendungen (Markus, Matthias) ==&lt;br /&gt;
; Datenspeicher:&lt;br /&gt;
 Neben dem Datenspeicher sollte auch der RAM-Verbrauch pro Thread der Applikation limitiert werden.&lt;br /&gt;
([[User:Mrohr|Matthias]]) Stimmt, ich wuerde hier sogar allgemein von Ressourcenverbrauch am Beispiel RAM und Datenspeicher, sprechen&lt;br /&gt;
&lt;br /&gt;
; Voraggregation von Daten / Caching&lt;br /&gt;
 Dieser Punkt fehlt: Stark ressourcen belastende Anfragen können auch in Lastarmen Zeiten vorberechnet werden.&lt;br /&gt;
([[User:Mrohr|Matthias]]) Stimmt, koennte noch als Anmerkung bei &amp;quot;Cachen von Anfragen&amp;quot; hinzugefuegt werden&lt;br /&gt;
&lt;br /&gt;
([[User:Mrohr|Matthias]]) Noch drei Anmerkugnen&lt;br /&gt;
&lt;br /&gt;
; Prueffrage: &amp;quot;Wird ein möglicher Überlauf von Protokolldaten... verhindert&amp;quot;&lt;br /&gt;
&lt;br /&gt;
Ist eine etwas eingeschrankte Sicht. Wurde hier eher von Ueberlauf von Speicherplaz zu Beispiel im Rahmen der Protokollierung sprechen&lt;br /&gt;
&lt;br /&gt;
; Durchfuehrung von Lasttests zur Identifikation ressourcenintensiver Operationen&lt;br /&gt;
&lt;br /&gt;
Der Hinweis waere ggf. erwahnenswert&lt;br /&gt;
&lt;br /&gt;
; Hinweis auf nicht-angemeldeten Bereich&lt;br /&gt;
&lt;br /&gt;
Das Risiko durch rechenintensive Operationen durch einen DoS betroffen zu sein ist natuerlich fuer gewoehlich um so groesser, wenn diese im anonymen Bereich angeboten wird. Der Hinweis ware ggf. ebenfalls hilfreich.&lt;br /&gt;
&lt;br /&gt;
== M 4.WA25Verhinderung von Clickjacking (Markus) ==&lt;br /&gt;
Ok - das passt soweit.&lt;br /&gt;
&lt;br /&gt;
([[User:Mrohr|Matthias]]) Stimmt, auch wenn ich &amp;quot;Angreifer&amp;quot; in dem Beispiel eher als &amp;quot;Webseitenbetreiber&amp;quot; beschreiebn wuerde, da er nicht wirklich aktiv einen Angriff durchfuehrt, oder? Bitte nochmal ueber meinen Hinweis aus G 5.WA18 nachdenken: Ist Clickjacking-Schutz tatsaechlich Grundschutz? Ich bin mir da selber nicht so wirklich sicher.&lt;br /&gt;
&lt;br /&gt;
== M 5.WA21Sichere Anbindung von Hintergrundsystemen an Web-Anwendungen (Markus) ==&lt;br /&gt;
; Verantwortliche:&lt;br /&gt;
 Architekten fehlen. Entwickler müssen die Views umsetzen und die Datasource entsprechend einbinden - die fehlen hier ebenfalls.&lt;br /&gt;
; DirectorySystem Beispiel:&lt;br /&gt;
 Das DirectorySystem wird in dem angegeben Beispiel zum Single Point of Failure - das wird verschwiegen.&lt;br /&gt;
; Firewalls:&lt;br /&gt;
 Das sind fachlich-blinde Systeme. Was ist mit WAFs / IDS / IPS etc.?&lt;br /&gt;
([[User:Mrohr|Matthias]]) Stimmt, das hat in diesem Baustein nichts zu suchen&lt;br /&gt;
&lt;br /&gt;
([[User:Mrohr|Matthias]]) Noch ein weiterer Punkt von mir&lt;br /&gt;
&lt;br /&gt;
; Typische Hintergrundsysteme&lt;br /&gt;
Hier fehlt irgendwie &amp;quot;Middleware&amp;quot;, die ist denke ich nicht immer Legacy&lt;br /&gt;
&lt;br /&gt;
== M 5.WA23Systemarchitektur einer Web-Anwendung (Markus) ==&lt;br /&gt;
; Verantwortliche:&lt;br /&gt;
Auch hier fehlend wieder die Architekten. &lt;br /&gt;
; Virtualisierung:&lt;br /&gt;
Virtualisierung bietet weitere Angriffsvektoren (z.B.: Hypervisor) die eine &amp;quot;Blech&amp;quot;Farm nicht bietet.&lt;/div&gt;</summary>
		<author><name>Mrohr</name></author>	</entry>

	<entry>
		<id>https://wiki.owasp.org/index.php?title=Talk:OWASP_Review_BSI_IT-Grundschutz_Baustein_Webanwendungen&amp;diff=130181</id>
		<title>Talk:OWASP Review BSI IT-Grundschutz Baustein Webanwendungen</title>
		<link rel="alternate" type="text/html" href="https://wiki.owasp.org/index.php?title=Talk:OWASP_Review_BSI_IT-Grundschutz_Baustein_Webanwendungen&amp;diff=130181"/>
				<updated>2012-05-21T13:13:07Z</updated>
		
		<summary type="html">&lt;p&gt;Mrohr: /* M 4.WA15Schutz vertraulicher Daten bei Web-Anwendungen (Markus, Matthias) */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Since it's about a review of a document in German, all the discussions will be done in German :-)&lt;br /&gt;
&lt;br /&gt;
Diskussionen rund um den Review des &amp;quot;IT-Grundschutzbausteins Webanwendungen&amp;quot; finden hier statt, sinnvollerweise auf Deutsch :-)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Vorschlag für Kriterien, die an unser Review angelegt werden sollten (.kai) ==&lt;br /&gt;
&lt;br /&gt;
* Der Baustein soll alle wichtigen Themen der Entwicklung sicherer&lt;br /&gt;
Webanwendungen enthalten.&lt;br /&gt;
&lt;br /&gt;
* Der Baustein soll die verschiedenen Phasen der Software-Entwicklung&lt;br /&gt;
vollständig abdecken.&lt;br /&gt;
&lt;br /&gt;
* Der Baustein soll zwischen verbindlichen, prüfbaren Vorgaben und&lt;br /&gt;
unverbindlichen Empfehlungen sprachlich sauber unterscheiden (hier&lt;br /&gt;
spielt mein Auditorenblick eine Rolle). Vor allem soll der Baustein&lt;br /&gt;
verbindliche Anforderungen auch tatsächlich stellen. Alle&lt;br /&gt;
verbindlichen Anforderungen müssen unabhängig von der jeweiligen&lt;br /&gt;
Umgebung auch umsetzbar sein, d.h. sie müssen entsprechend generisch&lt;br /&gt;
sein.&lt;br /&gt;
&lt;br /&gt;
* Die Maßnahmen sollen nur in (begründbaren) Ausnahmen zu Empfehlungen&lt;br /&gt;
von OWASP im Widerspruch stehen.&lt;br /&gt;
&lt;br /&gt;
* Die Maßnahmen sollen verständlich und anwendbar sein.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== &amp;quot;Hilfsmittel&amp;quot; (Markus) ==&lt;br /&gt;
Ich würde das Script zur Vermeidung von Clickjacking wrappen und nicht als losen Skript-block in den Text einbinden - einfach schlechter Programmierstiel diese losen Blöcke.&lt;br /&gt;
Der Zugriff auf das Body-Element mit byTagName-Array[0] ist auch nicht wirklich gut. Ich halte Zugriffe über das DOM (klassisch), bei ID bzw. XPATH für besser. &lt;br /&gt;
&lt;br /&gt;
SQL-Injection Characters:&lt;br /&gt;
die Pipe fehlt hier zur Textkonatenierung&lt;br /&gt;
+ / - haben auch eine Bedeutung bei JOINs.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== &amp;quot;Goldene Regeln&amp;quot; (Matthias) ==&lt;br /&gt;
&lt;br /&gt;
Hier meine Anmerkungen zu diesem Dokument:&lt;br /&gt;
&lt;br /&gt;
; 1. Für mich fehlende Punkte&lt;br /&gt;
* Korrektur der Ursache (Root Cause) von Schwachstellen statt  Verhinderung deren Ausnutzung&lt;br /&gt;
* Bezug auf Minimierung der Angriffsfläche und Least-Privilege-Prinzip&lt;br /&gt;
* Bezug auf Defense-in-Depth-Prinzip&lt;br /&gt;
* Verwendung von getesteten Security APIs (z.B. OWASP ESAPI) statt selbstentwickelter Funktionen&lt;br /&gt;
* Bezug auf Externalisierung von Sicherheitsfunktionen, sowie deklerative vor programmatischer Sicherheit.&lt;br /&gt;
&lt;br /&gt;
; 2. Begriff &amp;quot;Web-Anwendung&amp;quot;&lt;br /&gt;
Würde ich generell durch &amp;quot;Webanwendung&amp;quot; ersetzen.&lt;br /&gt;
&lt;br /&gt;
; 3. Einleitung (&amp;quot;Web-Anwendungen stellen Funktionalität zur Verfügung, ...&amp;quot;)&lt;br /&gt;
&lt;br /&gt;
Wozu dient dieser Satz?&lt;br /&gt;
&lt;br /&gt;
; 4. &amp;quot;Die Architektur der Web-Anwendung ist im Sicherheitskonzept zu  dokumentieren.....&amp;quot; &lt;br /&gt;
&lt;br /&gt;
Ich fände es sinnvoller, wenn hier von der &amp;quot;Sicherheitsarchitektur&amp;quot; gesprochen wird, welche etwa neben den sicherheitsrelevanten Datenflüssen, sensible Komponenten, Entry Points, Akteure architekturelle Security Controls wie Authentisierung, Kryptographie und natürlich die Trust Boundaries beinhaltet.&lt;br /&gt;
&lt;br /&gt;
; 5. &amp;quot;Bei Web-Anwendungen handelt es sich häufig um spezielle Eigenentwicklungen....&amp;quot;&lt;br /&gt;
&lt;br /&gt;
Erstens würde ich hier den geläufigen Begriff &amp;quot;Individualsoftware&amp;quot; verwenden. Zweitens würde ich statt bestimmte SDLC-Phasen vorzugeben (die Begriffe &amp;quot;Softwareverteilung&amp;quot; und &amp;quot;Integration&amp;quot; sind mir bei Webanwendungen bisher noch nicht so häufig untergekommen), besser von der Notwendigkeit sprechen, Sicherheit in allen Entwicklungsphasen zu berücksichtigen, also eines SDLs.&lt;br /&gt;
&lt;br /&gt;
; 6. &amp;quot;Alle Ein- und Ausgaben der Web-Anwendung müssen in eine normalisierte Form überführt werden....&amp;quot;&lt;br /&gt;
&lt;br /&gt;
Normalisierung ist für mich nicht gleich Kanonsierung, auch wenn beide Begriffe häufig als synonym verwendet werden.  Der Unterschied wird in der [http://owasp-esapi-java.googlecode.com/svn/trunk_doc/2.0-rc4/org/owasp/esapi/Encoder.html API-Beschreibung der ESAPI] erklärt. Die Normalisierungs-Funktion ist allerdings schon vor einiger Zeit aus der ESAPI [https://lists.owasp.org/pipermail/esapi-dev/2010-January/000266.html rausgeflogen]. Die generelle Kanonisierung von Ausgaben halte ich dazu für nicht sinnvoll.&lt;br /&gt;
&lt;br /&gt;
Zweitens, finde ich den weiteren Text zwar grundsätzlich formal korrekt, aber so allgemein, dass dieser glaube ich niemandem so richtig etwas bringt.  &lt;br /&gt;
&lt;br /&gt;
Besser fände ich hier Ein- von Ausgabevalidierung grundsätzlich voneinander abzugrenzen. Etwa was ich per Eingabevalidierung (Längenprüfung, Casting, etc. per Whitelisting) und was mit Ausgebavalidierung (Enkodierung, Escaping, Parametrisierung) machen muss und kann.&lt;br /&gt;
&lt;br /&gt;
Eingabedaten können technisch zudem auch Werte eingelesener Property-Dateien sein. Muss ich die auch validieren? Ist das dann noch Grundschutz? &lt;br /&gt;
&lt;br /&gt;
; 7. &amp;quot;Für den Zugriff auf sensitive Funktionen oder Informationen muss die Web-Anwendung eine wirksame Authentisierung und Sitzungsverwaltung unterstützen. Die Eigenschaften der Sitzungs-ID müssen so gewählt werden, dass die Sitzung ausreichend geschützt ist. ....&amp;quot;&lt;br /&gt;
&lt;br /&gt;
Besser fände ich &amp;quot;eine Authentisierung, die über eine dem Schutzbedarf der Anwendung angemessene Stärke verfügt.&amp;quot; &lt;br /&gt;
&lt;br /&gt;
Eigentlich geht es doch mehr um den Schutz der Sitzungs-ID, da diese gewöhnlich im Verlauf einer Sitzung den Client authentisiert. Oder den Schutz des Zugriffs auf eine Sitzung. &lt;br /&gt;
&lt;br /&gt;
Zudem fehlt hier meiner Meinung nach der Hinweis auf die bevorzugte Verwendung getesteter Standardkomponenten.&lt;br /&gt;
&lt;br /&gt;
; 8. &amp;quot;Die Web-Anwendung sollte die zu übermittelnden Daten schützen.&amp;quot;&lt;br /&gt;
&lt;br /&gt;
Dies würde ich nur auf sensible Daten beziehen. Zusätzlich zu HTTPS würde ich hier schreiben, dass sensible Daten generell nicht in der URL übertragen werden dürfen.&lt;br /&gt;
&lt;br /&gt;
; 9. &amp;quot;Die Preisgabe interner Informationen (z.B. Kommentare, Fehlermeldungen)&amp;quot;&lt;br /&gt;
&lt;br /&gt;
Hier würde ich eher schreiben &amp;quot;(IN Kommentaren, Fehlermeldungen, HTTP Headern, etc.)&amp;quot;&lt;br /&gt;
&lt;br /&gt;
; 10. &amp;quot;Fehler müssen so behandelt werden, ... müssen Fehler bei der Autorisierung zu einer Verweigerung beim Zugriff auf die angeforderte Ressource führen.&amp;quot;&lt;br /&gt;
&lt;br /&gt;
Sprachlich: &amp;quot;Die Webanwendung muss sich stets in einem sicheren Zustand befinden. Beispielsweise müssen Fehler bei der Autorisierung zu einer Verweigerung des Zugriffs führen (Default-Deny-Strategie).&amp;quot;&lt;br /&gt;
&lt;br /&gt;
; 11. &amp;quot;Die Logging-Funktionen der Web-Anwendung müssen aufgetretene Ereignisse derart protokollieren, dass sicherheitskritische Vorfälle nachvollzogen werden können.&amp;quot;&lt;br /&gt;
&lt;br /&gt;
Hier würde hier eher von &amp;quot;allen sicherheitsrelevanten Ereignissen&amp;quot; sprechen.&lt;br /&gt;
&lt;br /&gt;
Weiterhin sollten insbesondere beim Logging der Datenschutz berücksichtigt werden, personenbezogene Daten also nach Möglichkeit nicht oder nur anonymisiert in technischen Logdateien protokolliert werden.&lt;br /&gt;
&lt;br /&gt;
; 12. &amp;quot;Alle Sicherheitsmechanismen (z.B. Authentisierung und Zugriffskontrolle) sind serverseitig zu implementieren und können nicht durch clientseitige Mechanismen ersetzt werden.&amp;quot;&lt;br /&gt;
&lt;br /&gt;
Die Aussage ist so nicht korrekt. Darüber hatten wir bereits bei der ASVS mehrfach diskutiert. &lt;br /&gt;
&lt;br /&gt;
Überall dort wo der Client angegriffen wird, also etwa bei RIAs (Stichwort DOM-Based XSS) müssen wir Security Controls clientseitig implementieren. Es gibt mittlerweile deshalb auch eine Portierung der ESAPI auf Javascript. Überall dort wo der Server oder Hintegrundsysteme angegriffen werden, ist die Aussage aber natürlich zutreffend.&lt;br /&gt;
&lt;br /&gt;
== &amp;quot;Gefährdungen&amp;quot; (Markus, Dennis, .... &amp;lt;Dein Name&amp;gt;) ==&lt;br /&gt;
; Generell:&lt;br /&gt;
Reference auf RFCs fehlen.&lt;br /&gt;
&lt;br /&gt;
==B.5.XX Web-Anwendungen ==&lt;br /&gt;
; 1. Erster Absatz - Letzter Satz: --Wieso werden hier nur HTML/XML Doks und Oberflächen angesprochen? Was ist der Unterschied zwischen einem HTML-Dok und einer Oberfläche? Was ist mit  Flash, etc.? Was ist mit WebSockets?&lt;br /&gt;
; 2. Stichpunkt &amp;quot;Protokollierung&amp;quot;: Sicherheits relevant ist ein sehr dehnbarer Begriff - Eine bessere Formulierung könnte sein: Zur Rekonstruktion von Nutzerhandlungen nötige Ereignisse (positve &amp;amp; negative) müssen protokolliert werden . . . &lt;br /&gt;
; 3. Absatz: &amp;quot;Abgrenzung des Bausteins&amp;quot;: &amp;quot;Die spez. Sicherheitsanforderungen an Web-Services werden in diesem Baustein nicht betrachtet&amp;quot; --&amp;gt; Wie so nicht? Was ist das Backend von einer Rest / AJAX-basierenden Webanwendung denn anderes als ein Web-Service? Diesen Satz würde ich entfernen.&lt;br /&gt;
; 4.Vorsätzliche Handlungen -&amp;gt; Web-Spoofing (G.5.87) -- Missverständliche Bezeichnung / Nomenklatur&lt;br /&gt;
; 5. Seite 4 : erste Zeile &amp;quot;Umsetzung&amp;quot;: &amp;quot;dafür umzusetztende Komponenten müssen die Webanwendung schützen...&amp;quot; - Hier fehlt mir der Hinweis, dass dieser Schutz verifiziert werden muss.&lt;br /&gt;
; 6 Seite 5: &amp;quot;Umsetzung&amp;quot; - Wir haben CSRF, D(D)os und SQL-Injection aber wo ist XSS?&lt;br /&gt;
; 7 Seite 7: &amp;quot;Die Sicherheitsfunktion wird ausschließlich clientseitig...&amp;quot; --&amp;gt; Warum muss der Angreifer überhaupt einen Browser umkonfigurieren? Was ist mit Proxies, Scripts, etc.? Ich würde das reduzieren darauf, dass rein Webbrowser-basierende Schutzfunktionen einfach umgangen werden können.&lt;br /&gt;
; 8 Seite 8: Die angesprochenen Punkte hinterlassen den Eindruck nicht vollständig zu sein: Mir fehlen Punkte wie &amp;quot;Outsourcing&amp;quot;, &amp;quot;KnowHow der Entwickler&amp;quot;, Tooling, Framework-Auswahl, etc.&lt;br /&gt;
; 9 Seite 9: Eigentlich möchte der Autor hier über Datenschutz sprechen. Abgesehen von den letzten drei Zeilen geht es aber nur um &amp;quot;User tracking&amp;quot; - Wo ist der Rest der Datenschutzproblematik? Warum der Fokuss auf Tracking? Mir ist das zu einseitig.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
tbd.&lt;br /&gt;
&lt;br /&gt;
; Wortwahl:&lt;br /&gt;
Ich stosse innerhalb der Texte immer wieder an die Worten '''Hintergrundsystem''' und '''Sicherheitskontext'''.&lt;br /&gt;
'''Hintergrundsystem:''' besseres Synonym?&lt;br /&gt;
'''Sicherheitskontext:''' nur weil es in den Texten um Sicherheit geht muss nicht an jeder Stelle immer wieder das Wort _Sicherheits_kontext eingebaut werden.&lt;br /&gt;
Bsp: &amp;quot;Erlangt ein Angreifer Kenntnis von einer solchen gültigen, aber nicht mehr genutzten SessionID, so kann er die Web-Anwendung im Sicherheitskontext des nicht abgemeldeten Benutzers weiter verwenden.&amp;quot; (G 5,WA12 Unzureichendes Session-Management von Web-Anwendungen)&lt;br /&gt;
Verbesserungsansansatz: ... so kann er die Web-Anwendung anstelle des eigentlichen Besitzers weiterhin verwenden.&lt;br /&gt;
&lt;br /&gt;
== &amp;quot;G 2.WA01 Mangelhafte Auswahl oder Konzeption von Web-Anwendungen&amp;quot; (Matthias) ==&lt;br /&gt;
&lt;br /&gt;
Nachdem ich mir diese Gefährdung durchgelesen hatte, fehlten mir ehrlich gesagt etwas die Worte. Nicht nur, dass hier fast jeder zweite Satz entweder falsch ist bzw. massive Fehler enthält oder ich diesen schlicht nicht verstehe, ist der ganze Text sprachlich wirklich enorm verbesserungsfähig. &lt;br /&gt;
&lt;br /&gt;
Na gut, ich konzentriere mich mal auf die fachlichen Punkte:&lt;br /&gt;
&lt;br /&gt;
; 1. Security Controls&lt;br /&gt;
Werden mal mit &amp;quot;Schutzmechanismen&amp;quot;, mal mit &amp;quot;Sicherheitskomponenten&amp;quot; und dann wieder als &amp;quot;Sicherheitsfunktionen&amp;quot; bezeichnet. Hier macht eine einheitliche Benennung sicherlich Sinn und ist weniger verwirrend.&lt;br /&gt;
&lt;br /&gt;
; 2. &amp;quot;Eine Web-Anwendung ist in der Regel ein verteiltes, komplexes System bestehend aus unterschiedlichen Komponenten (z. B. Webserver, Applikationsserver, Hintergrundsysteme)&amp;quot;&lt;br /&gt;
&lt;br /&gt;
Eine Webanwendung besteht sicher nicht aus einem Webserver- oder anderer infrastruktureller Komponenten, sondern ist Software welches diese nutzt.&lt;br /&gt;
&lt;br /&gt;
; 3. &amp;quot;Bei individuell entwickelten Web-Anwendungen sind im Allgemeinen die Frameworks, Komponenten und Schnittstellen im Rahmen der Konzeption auszuwählen und deren Einbindung und Absicherung zu betrachten....Im Gegensatz dazu ist bei der Konzeption von Web-Anwendungen auf Basis von Standardsoftware insbesondere auf die Auswahl der Software und die Konfiguration der Teilkomponenten zu achten&amp;quot;&lt;br /&gt;
&lt;br /&gt;
Wir unterscheiden im Rahmen von Webanwendungen eigentlich Free or Opensource Software (FOSS bzw. FLOSS), Standardsoftware und Individualsoftware voneinander. Wir unterscheiden nicht Frameworks von Standardsoftware. Frameworks können Teil von Standardsoftware sein, wie etwa bei SharePoint, SAP, etc, oder aber FOSS, wie etwa Spring. Die ganzen Absätze machen für mich daher keinen Sinn.&lt;br /&gt;
&lt;br /&gt;
; 4. &amp;quot;Eine Sicherheitsfunktion (z. B. Authentisierung, Autorisierung) wird nicht an einer Stelle umgesetzt und verwendet, sondern ist mehrfach in der Web- Anwendung realisiert. Wird diese Sicherheitsfunktion an den verschiedenen Stellen unterschiedlich umgesetzt, führt dies zu einem uneinheitlichen Sicherheitsniveau.&amp;quot;&lt;br /&gt;
&lt;br /&gt;
Natürlich ist die mehrfache Verwendung bestimmter Security Controls, beispielsweise von Zugriffskontrollen (Complete-Mediation) oder Validierung (Robustheit) erstrebenswert. Was der Autor hier wahrscheinlich meinte, war die Notwendigkeit diese zu Kapseln bzw. zu Externalisieren. Das bezieht sich im übrigen nicht nur auf die Controls selbst, sondern auch auf ihre Parametrisierung (etwa. über Konfigdateien / XACML).&lt;br /&gt;
&lt;br /&gt;
Wichtiger wäre in diesem Zusammenhang zudem die fehlende Berücksichtigung bestimmter Security Controls.&lt;br /&gt;
&lt;br /&gt;
; 5. &amp;quot;Auswahl von Web-Anwendungen auf Basis von Standardsoftware&amp;quot;&lt;br /&gt;
Was will der Satz sagen? Ich wähle Standardsoftware aus, aber doch keine Webanwendungen. Oder heißt das, ich kaufe eine existierende Anwendung ein (Webanwendung!=Indivudualsoftware)? &lt;br /&gt;
&lt;br /&gt;
; 6. &amp;quot;Das ausgewählte Produkt verfügt nicht über die ausreichende Sicherheitsfunktionalität, ... Daher müssen die notwendigen Schutzmechanismen nachträglich hinzugefügt werden, wodurch zusätzliche Aufwände entstehen.&amp;quot;&lt;br /&gt;
Das ist etwas sehr positiv formuliert. Tatsächlich können fehlende Security Controls in zugekaufter Software (insb. Standardsoftware) in der Realität häufig gar nicht hinzugefügt werden oder nur perimetrisch (z.B. per WAF oder Access Gateway).&lt;br /&gt;
&lt;br /&gt;
; 7. &amp;quot;Die Hintergrundsysteme werden unzureichend abgesichert und dadurch ist die Datenbank der Web-Anwendung aus dem Internet erreichbar.&amp;quot;&lt;br /&gt;
Gehören fehlende Netzwerksegmentierung bzw. Firewallregeln wirklich in diesen Kontext? Das ist doch eigentlich Grundschutz der Infrastruktur, oder?&lt;br /&gt;
&lt;br /&gt;
; 8. &amp;quot;Aufgrund schwacher Parameter in der Konfiguration des Frameworks zum Session-Management werden unsichere SessionIDs erzeugt.&amp;quot;&lt;br /&gt;
Was sind &amp;quot;schwache&amp;quot; Parameter?&lt;br /&gt;
&lt;br /&gt;
Welches Framework erlaubt unsichere SessionIDs durch eine &amp;quot;schwache&amp;quot; Konfiguration zu erzeugen?&lt;br /&gt;
&lt;br /&gt;
; 9. &amp;quot;Wird die Konfiguration des Web-Browsers durch einen Angreifer manipuliert, können die clientseitig umgesetzten&amp;quot;&lt;br /&gt;
&lt;br /&gt;
Manipuliert ein Angreifer die Konfguration seines Webbroswers, wenn er einen MITM-Proxy konfiguriert?&lt;br /&gt;
&lt;br /&gt;
Wie bereits bei den &amp;quot;Goldenen Regeln&amp;quot; angemerkt, gilt auch hier, das manche Security Controls auch clientseitig umgesetzt werden dürfen (etwa. zur Verhinderung von Dom-Based XSS).&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== &amp;quot;G 5.WA10 Fehler in der Web-Anwendungslogik&amp;quot; (Dennis) ==&lt;br /&gt;
; 1. &amp;quot;Damit kann aufgrund der Prüfreihenfolge ein hoher Ressourcenverbrauch provoziert werden, der für Denial-of-Service-Angriffe ausgenutzt werden kann.&amp;quot;&lt;br /&gt;
Meiner Meinung nach passt in diesem Kontext die Attacke DoS nicht ganz. Falls die nachfolgende Funktionalität wegen der langen Ausführungszeit der Filterkomponente übersprungen wird bzw. ein Fehler auftritt würde dies meiner Ansicht in die Thematik Anwendungslogik passen. Eine DoS-Attacke kann hingegen anhand jeder Funktion durchgeführt werden.&lt;br /&gt;
&lt;br /&gt;
== &amp;quot;G 5.WA11 Umgehung clientseitig umgesetzter Sicherheitsfunktionen von Web-Anwendungen&amp;quot; (Dennis) ==&lt;br /&gt;
; 1. &amp;quot;Ein Angreifer kann diese ausnutzen, um beispielsweise unbefugt Befehle an Hintergrundsysteme der Web-Anwendung zu übermittlen (z.B. in Form von Datenbankanfragen bei einer SQL-Injection).&amp;quot;&lt;br /&gt;
Umformulierung des Inhalts der Klammer. Hatte beim ersten Lesen für mich den Anschein, als ob ein Formular genutzt werden könnte welches den Nutzer aufforder eine SQLI einzugeben. Ich denke &amp;quot;Datenbankanfrage zwecks Ausführung einer SQL-Injection&amp;quot; würde besser passen.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== G 2.WA02 Mängel bei der Entwicklung und der Erweiterung von Web-Anwendungen (Matthias) ==&lt;br /&gt;
&lt;br /&gt;
Allgemein ist de obere Teil ok, die aufgezählten &amp;quot;Auswirkungen von fehlenden Vorgaben&amp;quot; verstehe ich jedoch nicht. Wo ist etwa der Bezug von Barrierefreiheit auf die Anwendungssicherheit?&lt;br /&gt;
&lt;br /&gt;
Mein Vorschlag, um diese Punkte etwa sinnvoll umzubauen:&lt;br /&gt;
* &amp;quot;Fehlendes Vorgehensmodell&amp;quot;: Bezug auf fehlende Berücksichtigung von Sicherheit im SDLC. Statt eines SDLCs selbst sollte hier besser auf die Notwendigkeit eines Secure Development Lifecycle (SDL) hingewiesen werden&lt;br /&gt;
* &amp;quot;Fehlende Programmierrichtlinien&amp;quot; =&amp;gt; Besser wäre hier &amp;quot;Fehlende Sicherheitsrichtlinien in der Programmierung&amp;quot; also &amp;quot;Secure Coding Guidelines&amp;quot;&lt;br /&gt;
* &amp;quot;Testfälle&amp;quot; =&amp;gt; &amp;quot;Sicherheitsrelevante Testfälle&amp;quot; (z.B. Security Unit Tests). &lt;br /&gt;
* &amp;quot;Barrierefreiheit&amp;quot;: Warum nicht an dieser Stelle die Auswirkungen von Sicherheitsfunktionen auf die Bedienbarkeit, etwa anhand von CAPTCHAS erläutern?&lt;br /&gt;
&lt;br /&gt;
== G 2.WA03 Unzureichender Schutz personenbezogener Daten bei Web-Anwendungen (Matthias) ==&lt;br /&gt;
&lt;br /&gt;
Der Titel dieses Bausteines heißt &amp;quot;Schutz personenbezogener Daten&amp;quot;, die genannten Beispiele beziehen sich bis auf den letzten jedoch auf die missbräuchliche (oder zumindest problematische) Nutzung aus Sicht des Datenschutzes. &lt;br /&gt;
&lt;br /&gt;
Die Punkt 1-3 sollten daher besser entfallen und z.B. durch die Folgenden ersetzt werden:&lt;br /&gt;
* Unsichere Einbindung von sozialen Netzwerken (Bezug nehmen auf den Like-Button bei Facebook)&lt;br /&gt;
* Unsichere Einbindung von Werbeinhalten&lt;br /&gt;
* Unsichere Übertragung und Caching&lt;br /&gt;
* Unsichere Protokollierung&lt;br /&gt;
* Ungenügender Zugriffsschutz&lt;br /&gt;
* Verstoß des Minimalprinzips bzw. der Zweckgebundenheit (welche Daten werden wirklich benötigt)&lt;br /&gt;
&lt;br /&gt;
Auch wäre es ggf. zumindest einen Verweis auf das BDSG zu machen.&lt;br /&gt;
&lt;br /&gt;
== G 4.33 Unzureichende oder fehlende Authentisierung (Matthias) ==&lt;br /&gt;
&lt;br /&gt;
; 1. Erster Absatz: &amp;quot;Wenn Authentisierungsmechanismen fehlen oder zu schlecht sind&amp;quot;&lt;br /&gt;
&lt;br /&gt;
&amp;quot;schlecht&amp;quot; sollte vlt besser durch &amp;quot;unzureichend&amp;quot; ersetzt werden.&lt;br /&gt;
&lt;br /&gt;
; 2. &amp;quot;Sicherheitslücken entstehen bei... der Benutzerauthentisierung&amp;quot;&lt;br /&gt;
&lt;br /&gt;
Hier findet nur ein Bezug auf &amp;quot;Passwörter&amp;quot; statt. Der Bezug auf die fehlerhaft implementierte oder dem Schutzbedarf ungenügende Schutzmechanismen (z.B. keine 2-Faktor-Authentisierung bei hochsensiblen Daten) fehlt. Auch auf das komplette fehlen von Authentisierungs-Controls wird hier nicht  eingegangen&lt;br /&gt;
&lt;br /&gt;
; 3. &amp;quot;Sicherheitslücken entstehen bei... der Komponentenauthentisierung&amp;quot;&lt;br /&gt;
&lt;br /&gt;
Wie bei 2., wird auch hier wieder nur auf Passwörter, nicht jedoch auf das fehlen von Controls selbst eingegangen. An dieser Stelle fehlt auch ein Hinweis auf die Notwendigkeit dedizierter Benutzeraccounts.&lt;br /&gt;
&lt;br /&gt;
; 4. &amp;quot;Sicherheitslücken entstehen bei... der Wahl des Verfahrens&amp;quot;&lt;br /&gt;
&lt;br /&gt;
Statt untauglich würde ich auch hier von &amp;quot;dem Schutzbedarf der Daten nicht angemessen&amp;quot; sprechen, eigentlich gehört das für mich aber in die obigen Punkte.&lt;br /&gt;
&lt;br /&gt;
; 5. Serverseitige Authentisierung fehlt&lt;br /&gt;
&lt;br /&gt;
Auch der Server (bzw. die Anwendung selbst) kann sich fehlerhaft oder ungenügend beim Benutzer authentsieren, etwa über DNS, SSL-Zertifikate, etc.&lt;br /&gt;
&lt;br /&gt;
== G 4.WA04 Unzureichende Validierung von Ein- und Ausgabedaten bei Web-Anwendungen (Matthias) ==&lt;br /&gt;
&lt;br /&gt;
; 1. &amp;quot;Unzureichende Validierung von Eingabedaten&amp;quot;&lt;br /&gt;
&lt;br /&gt;
Die genannten Beispiele sind genau keine korrekten Beispiele für diesen Fall, sondern betreffen die Ausgabevalidierung bzw. Enkodierung. Typische Fehler der Eingabevalidierung ist eine Manipulierbarkeit der Business Logik.&lt;br /&gt;
&lt;br /&gt;
; 2. &amp;quot;Unzureichende Validierung von Ausgabedaten&amp;quot;&lt;br /&gt;
&lt;br /&gt;
Hier geht es zentral um die Verhinderung von Interpreter Injection, also serverseitig (z.B. SQL oder LDAP Injection) oder clientseitig (XSS, JSON Injection, etc.). Statt &amp;quot;können die Ausgaben Schadcode&amp;quot; enthalten würde ich hier eher davon Sprechen, dass ein solcher Interpreteraufruf manipuliert werden kann (was dann z.B. zur Einschleusung von Schadcode genutzt werden kann).&lt;br /&gt;
&lt;br /&gt;
; 3. &amp;quot;Die Suchfunktion der Web-Anwendung verwendet die Eingaben der Benutzer ungefiltert&amp;quot;&lt;br /&gt;
&lt;br /&gt;
Mit ungenügender &amp;quot;Filterung&amp;quot; hat SQL Injection nichts zu tun,  eigentlich geht es hierbei darum, dass SQL-Anfragen dynamisch mit unvalidierten Eingebedaten zusammengebaut (konkateniert) werden.&lt;br /&gt;
&lt;br /&gt;
; 4. &amp;quot;Ungefilterter HTML-Code in Kommentar-Funktion&amp;quot;&lt;br /&gt;
&lt;br /&gt;
Hier fehlt der Bezug auf persistentes XSS, das hier sicherlich zentral ist.&lt;br /&gt;
&lt;br /&gt;
== G 4.WA05 Fehlende oder mangelhafte Fehlerbehandlung durch Web-Anwendungen (Tobias, Matthias) ==&lt;br /&gt;
; Abschnitt &amp;quot;Unsichere Fehlerbehandlung&amp;quot;&lt;br /&gt;
Die G adressiert &amp;quot;Unsichere Fehlerbehandlung&amp;quot;, der Abschnitt die &amp;quot;Unsichere Fehlerbehandlung in Sicherheitskomponenten&amp;quot;. Entsprechend sollte der fettgedruckte Teil angepasst werden.&lt;br /&gt;
&lt;br /&gt;
; &amp;quot;fehlende SQL-Parameter,&amp;quot;&lt;br /&gt;
Sollte besser &amp;quot;Fehlermeldungen bei ungültigen SQL-Abfragen&amp;quot; lauten.&lt;br /&gt;
&lt;br /&gt;
; &amp;quot;Auch scheinbar unkritische Informationen, wie die Meldung ob (..)&amp;quot;&lt;br /&gt;
Korrekt, allerdings nicht nachvollziehbar, wenn das Problem der Leser nicht schon bekannt ist. Daher erweitern nach &amp;quot; Rahmen von Brute-Force-Angriffen ausgenutzt werden.&amp;quot; mit &amp;quot;. Bei Brute-Force-Angriffen wäre in diesem Fall klar, dass der Benutzername gültig ist.&amp;quot;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[User:Mrohr|Matthias]]): Stimme dem Obigen auch zu, ausserdem:&lt;br /&gt;
&lt;br /&gt;
; Sprachlich: &amp;quot;kann dies unvorhersehbare Auswirkungen haben und den Betrieb der Web-Anwendung bis zur Unerreichbarkeit einschränken.&amp;quot;&lt;br /&gt;
&lt;br /&gt;
&amp;quot;Unerreichbarkeit&amp;quot; ist etas merkwuerdig ausgedrueckt, besser ware hier von der &amp;quot;Verfuegbarkeit&amp;quot; zu sprechen. Im Uebrigen fehlt vollstaendig der Bezug auf die Verfuegbarkeit als Primaeres Schutzziel der Informationssicherheit.&lt;br /&gt;
&lt;br /&gt;
; &amp;quot;Clientseitige Fehlerbehandlung&amp;quot;&lt;br /&gt;
Das stimmt soweit, das generelle Problem ist jedoch genereller, naehmlich die clientseitige Abbildung sicherheitsrelaventer Logik (in diesem Fall die Fehlerbehandlung)&lt;br /&gt;
&lt;br /&gt;
== G 4.WA06 Unzureichende Nachvollziehbarkeit von sicherheitsrelevanten Ereignissen bei Web-Anwendungen (Matthias) ==&lt;br /&gt;
&lt;br /&gt;
; 1. Erster Absatz: &amp;quot;Die Behebung einer Schwachstelle ist dann nicht oder nur unter erschwerten Bedingungen möglich.&amp;quot;&lt;br /&gt;
&lt;br /&gt;
Hier würde ich ergänzen: &amp;quot;...und Angriffe auf die Anwendungen können ggf. nicht erkannt oder nachvollzogen werden&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
; 2. &amp;quot;Beispiele&amp;quot;: Kommulierbarkeit&lt;br /&gt;
&lt;br /&gt;
Hier fehlt auch ein Bezug auf die Kommulierbarkeit von SIcherheitsereignissen, dass diese also auch von solchen anderer Systeme in Verbindung gesetzt werden können&lt;br /&gt;
&lt;br /&gt;
; 3. &amp;quot;Beispiele&amp;quot;: Gerichtsverwertbarkeit&lt;br /&gt;
&lt;br /&gt;
Auch die Möglichkeit zur Gerichtsverwertbarkeit (etwa durch eindeutigen Zeitstempel) und manipulationssicherer Speicherung, würde ich an dieser Stelle unbedingt erwähnen.&lt;br /&gt;
&lt;br /&gt;
== G 4.WA07 Offenlegung von Informationen bei Web-Anwendungen (Matthias) ==&lt;br /&gt;
&lt;br /&gt;
; 1. Titel&lt;br /&gt;
&lt;br /&gt;
Hier würde ggf. &amp;quot;Offenlegung vertraulicher Informationen&amp;quot; sicher besser passen als &amp;quot;Offenlegung von Informationen&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
; 2. Beispiellink&lt;br /&gt;
&lt;br /&gt;
Ein Beispiellink (mit und ohne Token) würde sicher die Verständlichkeit dieser Schwachstelle verbessern.&lt;br /&gt;
&lt;br /&gt;
; 3. Erster Absatz: &amp;quot;Wenn demzufolge Informationen unnötig offengelegt werden, steigt die Wahrscheinlichkeit eines erfolgreichen Angriffs.&amp;quot;&lt;br /&gt;
&lt;br /&gt;
Interne Informationen auszublenden ist eine Härtungsmaßnahme, deren Anzeige erhöht aber nicht zwangsläufig die Wahrscheinlichkeit eines erfolgreichen Angriffs. Ich würde diesen Satz weglassen.&lt;br /&gt;
&lt;br /&gt;
 ; 4. Fehlende Punkte&lt;br /&gt;
&lt;br /&gt;
* Ein Hinweis auf HTTP Header wäre hier sicher erwähnenswert.&lt;br /&gt;
* Weiterhin bzgl. der Anzeige von Traces und ein Verweis auf den Entsprechenden Baustein zur Fehlerbehandlung&lt;br /&gt;
&lt;br /&gt;
== G 5.WA14 Cross-Site Request Forgery (CSRF, XSRF) (Matthias) ==&lt;br /&gt;
&lt;br /&gt;
; 1. Erster Absatz: &amp;quot;Können Funktionen einer Web-Anwendung ohne weitere Überprüfung der Authentizität des HTTP-Requests (z.B. durch Tokens in versteckten Formularfeldern) genutzt werden&amp;quot;&lt;br /&gt;
&lt;br /&gt;
Statt &amp;quot;Funktionen&amp;quot; würde ich besser von &amp;quot;schreibenden Aktionen&amp;quot; sprechen, dann macht der Satz mehr Sinn.&lt;br /&gt;
&lt;br /&gt;
; 2. Dritter Absatz: &amp;quot;Im Gegensatz zu XSS (siehe ...￼ ) ist das Angriffsziel nicht die Information auf dem Client (z. B. in Cookies),&amp;quot;&lt;br /&gt;
&lt;br /&gt;
Dieser (Halb-)Satz macht keinen Sinn, auch weil es bei XSS nicht nur im Informationen auf dem Cient geht. Vorschlag: &amp;quot;ist das Angriffsziel nicht die Ausführung von Skriptcode, sondern von unbefugten, schreibenden Aktionen im Kontext des angemeldeten Benutzers.&amp;quot;&lt;br /&gt;
&lt;br /&gt;
; 3. Session Riding&lt;br /&gt;
&lt;br /&gt;
Session Riding ist quasi nur ein anderer Begriff für CSRF. Die einzige Form von CSRF die mir bekannt ist, sind Angriffe mit Standard-Passwörtern auf HTTP-Basic-Auth geschützten Ressourcen.&lt;br /&gt;
&lt;br /&gt;
Im Grunde ist Session Riding aber nur ein Synonym für CSRF. Der Absatz ist daher auch nur eine Wiederholung der obigen Beschreibung.&lt;br /&gt;
&lt;br /&gt;
; 4. Zum Beispiel: &amp;quot;Durch einen präparierten Link auf einer Webseite wird die Änderung des Zugangspasswortes des Routers eingeleitet.&amp;quot;&lt;br /&gt;
&lt;br /&gt;
Etwas ungüngstig ausgedrückt. Besser wäre: &amp;quot;wird eine Anfrage zur Änderung des Zugangspasswortes an den Router gesendet. Hierbei sendet der Browser automatisch den Session Cookie mit, worüber die Webanwendung die Authentizität der Anfrage verifiziert und die Änderung durchführt.&amp;quot;&lt;br /&gt;
&lt;br /&gt;
== G 5.WA18 Clickjacking (Matthias) ==&lt;br /&gt;
&lt;br /&gt;
Hier stellt sich mir nur die allgemeine Frage, ob Clickjacking, bzw. der Schutz davor tatsächlich einem Grundschutz zuzurechnen ist. Persönlich würde ich dies nicht tun.&lt;br /&gt;
&lt;br /&gt;
== M 2.WA02 Dokumentation der Architektur von Web-Anwendungen (Matthias) ==&lt;br /&gt;
&lt;br /&gt;
; Verantwortlich für die Umsetzung&lt;br /&gt;
Hier wäre auch die Nennung des &amp;quot;Architekten&amp;quot; sinnvoll&lt;br /&gt;
 &lt;br /&gt;
; Fehlende Bestandteile der Dokumentation:&lt;br /&gt;
* Schutzbedarf des Systems sowie der verarbeiteten Daten&lt;br /&gt;
* Schützenswerte Daten und Funktionen (Assets)&lt;br /&gt;
* Betriebliche Anforderungen an die Sicherheit bzw. eingesetzte Plattform&lt;br /&gt;
* Dokumentierte Konfigurationseinstellungen &lt;br /&gt;
* BIA (RTO, RPO)&lt;br /&gt;
* Schnittstellen&lt;br /&gt;
* Trust Boundaries&lt;br /&gt;
* Akteure (bzw. Trust Level)&lt;br /&gt;
* Sicherheitsannahmen&lt;br /&gt;
* Geltende Compliance-Anforderungen (BDSG, PCI DSS, etc.)&lt;br /&gt;
&lt;br /&gt;
; Benutzermanagement&lt;br /&gt;
&lt;br /&gt;
Wenn damit das Identity Management gemeint ist, gehört das Dokumentiert, ist aber keine Sicherheitsfunktion. Oder ist hiermit das Rollen- und Berechtigungskonzept gemeint? Grenzt sich aus meiner Sicht schwer mit dem Thema Authentisierung ab. &lt;br /&gt;
&lt;br /&gt;
; Prüffragen&lt;br /&gt;
&lt;br /&gt;
Hier fehlt etwas in Bezug auf Sicherheitsanforderungen. Beispiel: &amp;quot;Werden Sicherheitsanforderungen an den Betrieb während der Entwicklung abgestimmt und dokumentiert&amp;quot;&lt;br /&gt;
&lt;br /&gt;
== M 2.WA12 Entwicklung und Erweiterung von Anwendungen (Markus) ==&lt;br /&gt;
; &amp;quot;Es sollte darauf geachtet werden, dass Sicherheitsanforderungen&lt;br /&gt;
vollständig durch Sicherheitsmechanismen erfüllt und zur Erstellung von&lt;br /&gt;
Testfällen festgehalten werden.&amp;quot; --&amp;gt; Bessere Formulierung würde aussagen, dass die Sicherheitsanforderungen durch Testfälle verifiziert werden.&lt;br /&gt;
&amp;quot;(z. B. durch Kommentare im&lt;br /&gt;
Quelltext). Somit ist der Quelltext zu einem&amp;quot; --&amp;gt; Das ist kein empfehlenswerter Programmierstiel! Raus mit diesem Kommentar&lt;br /&gt;
;&amp;quot;Zum Schutz vor dem Verlust bereits entwickelter und verworfener&lt;br /&gt;
Lösungen sowie zu Dokumentationszwecken sollte die Historie der&lt;br /&gt;
Änderungen festgehalten werden (z. B. durch ein Revisionssystem).&amp;quot; --&amp;gt; Auch diesen Absatz können wir streichen - Kein professioneller Programmierer arbeitet ohne Versionierugssystem.&lt;br /&gt;
;&amp;quot;Bei Web-Anwendung sollten die Webseiten auf Konformität zu dem&lt;br /&gt;
verwendeten Standard (z. B. HTML-Standard) getestet werden. Dadurch&lt;br /&gt;
können unvorgesehene Seiteneffekte aufgrund einer Fehlinterpretation&lt;br /&gt;
seitens der Browser vermieden werden.&amp;quot; --&amp;gt; Könnte man noch um &amp;quot;Die Software ist in möglichst vielen Browsern zu testen&amp;quot; erweitern.&lt;br /&gt;
;Generell geht der Autor leider nicht auf die Rollen &amp;amp; Rechte Verteilung ein. Mir fehlt der Hinweis, das es eine personelle Trennung zwischen Entwicklung, Test und Betrieb geben muss.&lt;br /&gt;
;Zum Thema Wartung / Betrieb --&amp;gt; Hier wird keine Aussage getroffen bezüglich Log_Files. Dieses Thema kann kritische Auswirkungen haben, Bsp.: logging ganzer HTTP-Requests im LogLevel=Debug.&lt;br /&gt;
; &amp;quot;Produktspezifische Sicherheitsfunkionalität&amp;quot; - Dieser Absatz ist gefährlich - der Angreifer ist nicht zur Verwendung dies Zielbrowsers gezwungen. Deshalb können Browser-spez. Sicherheitsfunktionen nur als Add-ON gewertet werden.&lt;br /&gt;
; &amp;quot;Festlegung der Entwicklungsumgebung&amp;quot; - Dieser Absatz geht nicht auf die zu verwendenden Testdaten ein. Der Hinweis, dass Live-Daten / Kundendaten nichts in Test- &amp;amp; Entwicklungsumgebungen zu suchen haben fehlt!!!&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== M 2.WA24 Web-Tracking (Matthias) ==&lt;br /&gt;
&lt;br /&gt;
; Letzter Absatz: &amp;quot;Falls eine Auswertung von Nutzerdaten, insbesondere personenbezogener Daten, .. &amp;quot;&lt;br /&gt;
&lt;br /&gt;
Hier sollte denke ich besser von personenbeziehbaren Daten gesprochen Werten. Dies betrifft etwa die Zuordnung von Surfverhalten zu einer bestimmten Person. Dies sollte stets nach den Prinzipien Datensparsamkeit und Datenvermeidung, Erforderlichkeit, sowie Zweckbindung erfolgen. Ist Webtracking nicht personenbeziehbar ist dies kein Thema für den Datenschutz.&lt;br /&gt;
&lt;br /&gt;
== M 4.WA04 Authentisierung bei Web- Anwendungen (Matthias) ==&lt;br /&gt;
&lt;br /&gt;
: Verantwortlich fuer Umsetzung &lt;br /&gt;
sollte in erster Linie beim Architekturen und in zweiter beim Entwickler liegen&lt;br /&gt;
; Vermischung von Authentisierung und Session Management &lt;br /&gt;
&lt;br /&gt;
Bei diesem Baustein findet eine ziemlich große Vermischung von Anforderung an die Authentisierung und das erst in &amp;quot;M 4.WA06 Session-Management bei Web- Anwendungen&amp;quot; behandelte Session Management statt (Beispiel: &amp;quot;Remember-Me-Funktion&amp;quot;). Beide Themen sollten sinnvollerweise getrennt voneinander zu betrachten und aufeinander zu beziehen.&lt;br /&gt;
&lt;br /&gt;
; Verwendung von Frameworks&lt;br /&gt;
&lt;br /&gt;
Die Anforderung ist schon ein wenig eingeschränkt. Besser passt hier denke ich die &amp;quot;Abbildung der Authentisierung über Standardkomponenten (Bibliotheken oder Frameworks)&amp;quot;. &lt;br /&gt;
&lt;br /&gt;
; Remember-Me-Funktion&lt;br /&gt;
&lt;br /&gt;
Siehe oben, gehört zum Session Management. Das ließt sich im übrigen so, als ob eine Webanwendung Credentials auf dem Client abhängt. &lt;br /&gt;
&lt;br /&gt;
; Grenzwerte für gescheiterte Anmeldeversuche&lt;br /&gt;
&lt;br /&gt;
Diese Empfehlung ist allgemein falsch, da sie sehr von der betrachteten Anwendung abhängt. Besser wäre hier allgemein von Mechanismen zur Verhinderung von automatisierten Angriffen zu sprechen (Anti-Automatisierung). &lt;br /&gt;
&lt;br /&gt;
Etwa umsetzbar durch&lt;br /&gt;
* Sperrung nach x Anmeldeversuchen&lt;br /&gt;
* Throttling&lt;br /&gt;
* Captchas&lt;br /&gt;
* Sicherheitsfragen&lt;br /&gt;
&lt;br /&gt;
Das allgemeine Sperren kann leicht für das gezielte Aussperren von Benutzern (User Lockout) verwendet werden. Was etwa bei Trading-Anwendungen nicht funktioniert.&lt;br /&gt;
&lt;br /&gt;
; Automatisiertes Zurücksetzen von Authentisierungsdaten&lt;br /&gt;
&lt;br /&gt;
Würde ich besser als &amp;quot;Passwort-Reset&amp;quot; bezeichnen.&lt;br /&gt;
&lt;br /&gt;
Weiterhin fehlt hier der Hinweis, dass statt ein automatisiertes Zurücksetzen, ein Mechanismus zu empfehlen ist, bei dem über ein hinterlegtes Sicherheitsmerkmal (Handy-Nummer oder E-Mail-Adresse) vom Benutzer zunächst eine Verifikation durchgeführt wird. Beispielsweise durch einen erhaltenen Link. Erst dann darf eine Änderung des Passwortes durch den Benutzer erfolgen.&lt;br /&gt;
&lt;br /&gt;
; Registrierung nicht behandelt&lt;br /&gt;
&lt;br /&gt;
Es existiert hier kein Punkt, der die sichere Implementierung von Benutzerregistrierungen behandelt.&lt;br /&gt;
&lt;br /&gt;
; Verweis auf Externalisierung fehlt.&lt;br /&gt;
&lt;br /&gt;
Statt die Authentisierung selbst durchzuführen kann eine Anwendung hierzu auf eine externe Komponente (Beispiel: SiteMinder oder Kerberos) zurückgreifen.&lt;br /&gt;
&lt;br /&gt;
; Verweis auf Behandlung von Credentials fehlt&lt;br /&gt;
&lt;br /&gt;
Auch wenn das  in &amp;quot;M 4.WA15 Schutz vertraulicher Daten bei Web- Anwendungen&amp;quot; ausführlich behandelt wird, sollte in diesem Baustein bereits auf den angemessenen Schutz von Authentisierungsdaten bei Übertragung und Speicherung hingewiesen werden.&lt;br /&gt;
&lt;br /&gt;
== M 4.WA05Umfassende Ein- und Ausgabevalidierung bei Web-Anwedungen (Markus) ==&lt;br /&gt;
; &amp;quot;Ablehnung der Daten im&lt;br /&gt;
Fehlerfall&amp;quot; --&amp;gt; Hier könnte man noch auf Tar-Pits eingehen - nur ein Vorschlag.&lt;br /&gt;
&lt;br /&gt;
== M 4.WA06Session-Management bei Web-Anwendungen (Markus, Matthias) ==&lt;br /&gt;
; &amp;quot;Übertragung der SessionID mittels GETRequest&amp;quot; --&amp;gt; Hier fehlt der Hinweis, dass die Lebensdauer dieser SessionIds kurz/kürzer sein muss, als im Falle der Speicherung im Cookie.&lt;br /&gt;
&lt;br /&gt;
([[User:Mrohr|Matthias]]) Die Anmerkung verstehe ich ehrlich gesagt ueberhaupt nicht, zumal das SM haeufig transparent zwischen Cookies und URL Rewriting wechselt. Wozu soll das gut sein? Wie soll das geschehen? Idealerweise sollte die Session ID niemals in die URL geschrieben werden, das sollte eigentlich genuegen.&lt;br /&gt;
&lt;br /&gt;
; &amp;quot;Verschlüsselte Übertragung von SessionIDs&amp;quot; --&amp;gt; Hier fehlt der Hinweis auf den Beast-Exploit. TLS Version &amp;gt; 1.0 verwenden!&lt;br /&gt;
&lt;br /&gt;
([[User:Mrohr|Matthias]]) Solange hier nicht auf eine explizite TLS Version eingegangen wird, sollte meiner grossen Ueberzeugung nach hier auch auf keine Exploits etc. eingagen werden, das gehoert an andere Stelle.&lt;br /&gt;
&lt;br /&gt;
; ([[User:Mrohr|Matthias]]) Weiterhin:&lt;br /&gt;
&lt;br /&gt;
 Es dürfen keine extern bekannten oder erratbaren Daten (z. B. IP-Adresse, Uhrzeit) in die Berechnung der SessionID einfließen.&lt;br /&gt;
&lt;br /&gt;
Die Aussage finde ich etwas problematisch, wichtiger ist, dass die Entropie ausreichend hoch ist. Haeufig werden etwa IPs von Load Balancern in die Session ID hineingeschrieben.&lt;br /&gt;
&lt;br /&gt;
 - Domain (z. B. webapp.domain.tld),&lt;br /&gt;
 - Path (z. B. /webapp/),&lt;br /&gt;
 - Secure und&lt;br /&gt;
 - HttpOnly.Beschränkte Sitzungsdauer&lt;br /&gt;
&lt;br /&gt;
Das sieht so aus, als ob es empfehlenswert ist, das Domain-Tag zu verwenden, das ist es sicherlich nicht. Was macht hier der Hinweis &amp;quot;Beschraenke Sizuungsdauer&amp;quot;?&lt;br /&gt;
&lt;br /&gt;
== M 4.WA07Fehlerbehandlung durch Web-Anwendungen (Markus) ==&lt;br /&gt;
; Konsistenter / Inkonsistener Zustand einer Webanwendung und der daraus resultierende Datenverlust: Hier fehlen mir die Punkte: DOS, Priv.Escalation, CodeExecution.&lt;br /&gt;
; Vermeidung vertraulicher Informationen in Fehlermeldungen --&amp;gt; Fehlermeldungen sollten ebenfalls eine Systeminformationen preisgeben (Softwareversion, Patchlevel, etc.)&lt;br /&gt;
; Abbruch des Vorgangs nach Auftreten eines Fehlers --&amp;gt; TarPits scheinen dem Autor umbekannt zu sein :)&lt;br /&gt;
; &amp;quot;Werden Fehler möglichst von der gleichen Komponente behandelt, in der&lt;br /&gt;
der Fehler aufgetreten ist?&amp;quot; --&amp;gt; Das &amp;quot;möglichst&amp;quot; sollten wir streichen.&lt;br /&gt;
&lt;br /&gt;
== M 4.WA08Schutz vor automatisierter Nutzung von Web-Anwendungen (Markus) ==&lt;br /&gt;
; &amp;quot;Brute-Force-&lt;br /&gt;
Angriffe (z. B. Erraten von Zugangsdaten) und Enumeration-Angriffe (z. B.&lt;br /&gt;
automatisiertes Ermitteln von gültigen Login-Namen)&amp;quot; -- die Beispiele sind identisch - besser Beispiele suchen, z.b. URL-Enumeration&lt;br /&gt;
&lt;br /&gt;
([[User:Mrohr|Matthias]]) Das sehe ich anders. Brute-Forcing bezieht auf Passwoerter und Enumeration auf Benutzernamen, etwa durchs hochzaehlen. Auch wenn ich zustimmen muss, dass die nicht ganz gluecklich gewaehlt wurden. Stann &amp;quot;Erraten von Zugangsdaten&amp;quot; wuerde ich besser von &amp;quot;Erraten von Passwoertern&amp;quot; sprechen. Oder wie gesagt gleich auch auf andere Beispiele (etwa Object ID Enumeration) beziehen.&lt;br /&gt;
&lt;br /&gt;
== M 4.WA11Sichere Konfiguration von Web-Anwendungen (Markus) ==&lt;br /&gt;
; &amp;quot;Sicherer Umgang mit TLS/SSL&amp;quot; -- Hier fehlt der Hinweis, dass TLS-1.0 gebrochen ist&lt;br /&gt;
; &amp;quot;Zeichenkodierungskonfiguration&amp;quot; -- Ein Whitelisting abhängig von der Encodierung wäre ein weiterer Vorschlag&lt;br /&gt;
; &amp;quot;Restriktive Dateisystemberechtigungen&amp;quot; -- auch wenn es ein klassiker ist - der AS sollte ebenfalls mit von einem eingeschränkten Nutzer gestartet werden und nicht als root&lt;br /&gt;
; Administration Consolen:zur Ergänzen: Wenn diese nicht benötigit, sollten derartige Applikationen nicht deployed werden, unabhängig von möglichen Zugangsbeschränkungen.&lt;br /&gt;
&lt;br /&gt;
([[User:Mrohr|Matthias]]) Sorry, meiner Meinung nach hat die Bewertung von Kryptoverfahren hier abslut nichts zu suchen.Stattdessen sollte hier auf den entsprechenden [https://www.bsi.bund.de/ContentBSI/Publikationen/TechnischeRichtlinien/tr02102/index_htm.html Empfehlung des BSI] verwiesen werden, auch wenn dieses Dokument derzeit noch etwas outdated zu sein scheint.&lt;br /&gt;
&lt;br /&gt;
== M 4.WA13Kontrolliertes Einbinden von Daten und Inhalten bei Web-Anwendungen (Markus) ==&lt;br /&gt;
; Datei-Upload: Bei einem Upload werden Dateien durchaus in TEMP-Verzeichnissen gesammelt und danach weiterverarbeitet. Diese TEMP-Verzeichnisse sind im Rahmen einer Sicherheitsanalyse zu betrachten -&amp;gt; Möglicher (unbefugter) Zugriff auf weitere Uploads&lt;br /&gt;
; Upload komprimierter Dateien / großer Dateien birgt die Gefahr von DOS Angriffen&lt;br /&gt;
; Upload von Dateien kann bei weiterem Parsing zu Speicherengpässen führen --&amp;gt; DOS-Angriffe auf Thread-Local etc.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== M 4.WA14Restriktive Herausgabe sicherheitsrelevanter Informationen bei Web-Anwendungen (Markus, Matthias) ==&lt;br /&gt;
OK - Keine Anmerkungen von mir.&lt;br /&gt;
&lt;br /&gt;
[[User:Mrohr|Matthias]]) Von mir schon;)&lt;br /&gt;
&lt;br /&gt;
; Vermeidung von Kommentaren in ausgelieferten Webseiten&lt;br /&gt;
&lt;br /&gt;
Das ist leider total falsch, wir brauchen haeufig Komentare, aus Kompatibilitaetsgruenden. So wird etwa der JavaScript-Block haeufig auskommentiert.&lt;br /&gt;
&lt;br /&gt;
Wurde stattessen besser von sicherheitsrelevanten Kommentaren sprechen und als Massnahme generell Entwicklerkommentare ueber Sprachkonstruktre (etwa JSP) durchzufuehren.&lt;br /&gt;
&lt;br /&gt;
; Löschen nicht benötigter Dateien&lt;br /&gt;
&lt;br /&gt;
Hier wurde ich ggf. Dateien von Versionisierungstools (etwa Subversion) erwaehnen, das sehen wir schon recht haeufig.&lt;br /&gt;
&lt;br /&gt;
Statt Dateien einfach nur zu loeschen (was in der Praxis haeufig nicht so einfach ist) bietet es sich zudem an, den Zugriff auf bestimmte Dateien oder Dateitypen generell zu sperren, etwa mittels ACL im Apache.&lt;br /&gt;
&lt;br /&gt;
; Gibt die Web-Anwendung ausschließlich neutrale Fehlermeldungen aus und sind diese im Quelltext identisch? {E: C}&lt;br /&gt;
&lt;br /&gt;
Persoenlich verstehe ich das nicht. Wieseo neutrale Fehlermeldung? Das macht fuer mich nur beim Login Sin. Hierzu existiert in dem Text auch keinerlei Bezug. Ich wuerde das daher besser entfernen und im Rahmen der Fehlerbehandlung diskutieren. Mindestens sollte hier jedoch besser von &amp;quot;sicherheitsunbedentlichen Fehlermeldungen&amp;quot; oder so gesprochen werden.&lt;br /&gt;
&lt;br /&gt;
; Wird der Referrer bei Verlassen der Web-Anwendung (z. B. durch einen Link auf eine externe Seite) gefiltert?&lt;br /&gt;
&lt;br /&gt;
Diesen Punkt sehe ich als sehr Fallabhengig an. Es kann fuer seiten durchaus wuenschenswert sein, dass der Referer weitergegeben wird. Der Referer sollte natuerlich keine sensiblen Informationen enthalten, was ja an anderer Stelle (etwa Session Management) vorgegeben wird bzw. gegeben werden sollte.&lt;br /&gt;
&lt;br /&gt;
== M 4.WA15Schutz vertraulicher Daten bei Web-Anwendungen (Markus, Matthias) ==&lt;br /&gt;
; Sichere kryptographische Algorithmen:&lt;br /&gt;
 Hier fehlt mir eine Liste der aktuelle als sicher geltenden Verfahren.&lt;br /&gt;
([[User:Mrohr|Matthias]]) Am Besten Referenz auf [https://www.bsi.bund.de/ContentBSI/Publikationen/TechnischeRichtlinien/tr02102/index_htm.html https://www.bsi.bund.de/ContentBSI/Publikationen/TechnischeRichtlinien/tr02102/index_htm.html]&lt;br /&gt;
&lt;br /&gt;
; Schlüssel&lt;br /&gt;
 Das die Schlüssel bestimmten Formaten entsprechen müssen ist ok - aber das Schlüsselmanagement wird gar nicht besprochen?&lt;br /&gt;
; Schutz der Daten im Browsercache&lt;br /&gt;
 Skripte und Browserplugins können ebenfalls auf den Browsercache zugreifen - diese werden hier nicht erwähnt.&lt;br /&gt;
; Maskierung von Passwörtern &lt;br /&gt;
 Dies schützt bei der Eingabe nur vor ShoulderSurfing nicht vor Skripten oder Plugins die diese an andere Server posten.&lt;br /&gt;
&lt;br /&gt;
([[User:Mrohr|Matthias]]) Das ist voellig korrekt. Aber inwieweit ist die Aussage Passwort-Felder zu verwenden fehlerhaft bzw. hier unzureichend beschrieben?&lt;br /&gt;
&lt;br /&gt;
; Sicherung von Zugangsdaten:&lt;br /&gt;
 Zugangsdaten in einer Datei abzulegen - wenn auch ausserhalb des WebRoots ist keine gute Idee.&lt;br /&gt;
([[User:Mrohr|Matthias]]) Es ist sicher nicht die schoenste Variante, es laesst sich aber nunmal in vielen Faellen nicht vermeiden. Deshalb fordert der [http://code.google.com/p/owasp-asvs/wiki/Verification_V2 ASVS] hier etwa auch nicht mehr. Fuer den hier angestreben Grundschutz sollte das meiner Meinung nach ausreichen.&lt;br /&gt;
; Schutz von Quelltexten:&lt;br /&gt;
 Hier würde ich property files mit aufnehmen. der hinweis auf web-inf/classes fehlt - warum?&lt;br /&gt;
 Bei include-befehlen sind die pfadangaben zu überdenken.&lt;br /&gt;
([[User:Mrohr|Matthias]]) Wuerde property Dateien allgemein den Konfigurationsdateien zuordnen. Der Begriff &amp;quot;Einzubindende Dateien&amp;quot; ist mir allrdings Neu&lt;br /&gt;
&lt;br /&gt;
([[User:Mrohr|Matthias]]) Weiterhin, fehlt ein genereller Bezug auf HTML 5 WebStorage, LSOs etc. Zumindest in abstrakter Form, so dass diese dadurch indirekt addresiert werden. Egal, in dem relevanten Punkt will der Autor meiner Meinung nach nur einige Beispiele nennen, das sollte keinen Anspruch auf Vollsteandigkeit haben muessen.&lt;br /&gt;
&lt;br /&gt;
; ([[User:Mrohr|Matthias]]) - Durch dieses Attribut wird die Gültigkeit des Cookies auf die Domäne der Web-Anwendung beschränkt.&lt;br /&gt;
Nein, das ist leider total falsch. Das Domain-Attribut stellt eine Aufweichung der Cookie-Gueltigkeit dar und nicht anders herum. Gewoehlich sind Cookies immer Host-Cockies und das sollte auch so bleiben. Die Empfehlung sollte entfernt werden.&lt;br /&gt;
&lt;br /&gt;
== M 4.WA16Zugriffskontrolle bei Web-Anwendungen (Markus) ==&lt;br /&gt;
; Zugriffskontrolle via Frameworks:&lt;br /&gt;
 Dieser Punkt (Frameworks) wird nur in einem Satz erwähnt. Es werden keine Bespiele gegeben - Das ist zu wenig.&lt;br /&gt;
 Es müssen alle Zugriffe geschützt werden. Eine Protokollierung aller Zugriffe mit den nötigen Informationen ist ebenfalls empfehlenswert.&lt;br /&gt;
; Datei Upload:&lt;br /&gt;
 Die Gefahr eines DOS wird hier nicht erwähnt.&lt;br /&gt;
&lt;br /&gt;
== M 4.WA19Verhinderung von Cross-Site Request Forgery (CSRF, XSRF) (Markus, Matthias) ==&lt;br /&gt;
; Verantwortliche: &lt;br /&gt;
 Entwickler und Admins!&lt;br /&gt;
([[User:Mrohr|Matthias]]) Korrekt, wobei auch in der Reihenfolge&lt;br /&gt;
&lt;br /&gt;
; Anti-CSRF-Token in hidden fields:&lt;br /&gt;
 Das ist keine gute Idee. Ich würde das streichen!&lt;br /&gt;
&lt;br /&gt;
([[User:Mrohr|Matthias]]) Watt? Anti-CSRF-Tokens in Hidden Fields sind die Standard-Massnahme. Wie denn sonst? Bitte nicht streichen!!! &lt;br /&gt;
&lt;br /&gt;
([[User:Mrohr|Matthias]]) Die Technik bei der die Session ID als Anti-CSRF-Token verwendet wird, wird als Double-Cookie Submit bezeichnet, das sollte hier referenziert werden.&lt;br /&gt;
&lt;br /&gt;
; Umgehung von Schutzmechanismen:&lt;br /&gt;
 Man in the middle hat keinen direkten Bezug zu CSRF! Das würde ich streichen.&lt;br /&gt;
([[User:Mrohr|Matthias]]) Der Hinweis ist korrekt. Wovon der Autor hier spricht ist Session Replay nicht CSRF.&lt;br /&gt;
&lt;br /&gt;
; Frameworks:&lt;br /&gt;
 Gute Idee - aber es gibt auch Features in den ApplicationServern die CSRF unterbinden - warum wird das nicht besprochen?&lt;br /&gt;
&lt;br /&gt;
([[User:Mrohr|Matthias]]) Sehe ich persoenlich nicht so, da CSRF primaer ein Applikations-Fehler ist, und auch in der Applikation und nicht im Environment (AppServer) geloest werden sollte. Auch wenn das manchmal ggf. die einzig machbare Loesung darstellt.&lt;br /&gt;
&lt;br /&gt;
([[User:Mrohr|Matthias]]) Was generell fehlt, ist ein Hinweis darauf, dass schreibende Requests generell per HTTP Post abgewickelt werden sollten, da HTTP Get keine &amp;quot;Safe Method&amp;quot;  (siehe HTTP 1.1, RFC 2616) ist.&lt;br /&gt;
&lt;br /&gt;
== M 4.WA20Sicherer Entwurf der Logik von Web-Anwendungen (Markus, Matthias) ==&lt;br /&gt;
; Rollbacks:&lt;br /&gt;
 Tritt ein Fehler auf muss die Applikation einen konsistenten Datenstand zurück lassen. Das wird hier nicht erwähnt.&lt;br /&gt;
; RaceConditions:&lt;br /&gt;
 Fehler in der Geschäftslogik können auch durch zwei gleichzeitige Sessions auf einer Webapplikation auftreten - das wird hier nicht besprochen.&lt;br /&gt;
&lt;br /&gt;
([[User:Mrohr|Matthias]]) Ehrlich gesagt kann ich nicht ganz nachvollziehen, was der Sichere Entwurf der Logik von Web-Anwendungen mit dem Verzicht auf aktive Inhalte zu tun hat. Unabhaengig davon sollte man solche unsinnigen Aussagen im Jahre 2012 nicht mehr treffen, damit macht man sicht nur laecherlich.&lt;br /&gt;
&lt;br /&gt;
Nichts desto trotz, was hier als &amp;quot;echte&amp;quot; Massnahmen erwaehnt werden sollte sind:&lt;br /&gt;
* Verhinderung von Race Conditions, aber nicht nur durch Concurrent Sessions sondern auch durch Singletons (TOCTOU)&lt;br /&gt;
* Enforcements von Workflows, etwa durch die Verwendung von State Machines oder Request Tokens (auch bekannt als Site Usage Enforcement)&lt;br /&gt;
* Fail Securely (bzw. Verweis)&lt;br /&gt;
* Serverseitige Abbildung der Anwendungslogik, zumindest wenn diese sicherheitsrelevant sit&lt;br /&gt;
&lt;br /&gt;
== M 4.WA22Verhinderung der Blockade von Ressourcen (DoS) bei Web-Anwendungen (Markus, Matthias) ==&lt;br /&gt;
; Datenspeicher:&lt;br /&gt;
 Neben dem Datenspeicher sollte auch der RAM-Verbrauch pro Thread der Applikation limitiert werden.&lt;br /&gt;
([[User:Mrohr|Matthias]]) Stimmt, ich wuerde hier sogar allgemein von Ressourcenverbrauch am Beispiel RAM und Datenspeicher, sprechen&lt;br /&gt;
&lt;br /&gt;
; Voraggregation von Daten / Caching&lt;br /&gt;
 Dieser Punkt fehlt: Stark ressourcen belastende Anfragen können auch in Lastarmen Zeiten vorberechnet werden.&lt;br /&gt;
([[User:Mrohr|Matthias]]) Stimmt, koennte noch als Anmerkung bei &amp;quot;Cachen von Anfragen&amp;quot; hinzugefuegt werden&lt;br /&gt;
&lt;br /&gt;
([[User:Mrohr|Matthias]]) Noch drei Anmerkugnen&lt;br /&gt;
&lt;br /&gt;
; Prueffrage: &amp;quot;Wird ein möglicher Überlauf von Protokolldaten... verhindert&amp;quot;&lt;br /&gt;
&lt;br /&gt;
Ist eine etwas eingeschrankte Sicht. Wurde hier eher von Ueberlauf von Speicherplaz zu Beispiel im Rahmen der Protokollierung sprechen&lt;br /&gt;
&lt;br /&gt;
; Durchfuehrung von Lasttests zur Identifikation ressourcenintensiver Operationen&lt;br /&gt;
&lt;br /&gt;
Der Hinweis waere ggf. erwahnenswert&lt;br /&gt;
&lt;br /&gt;
; Hinweis auf nicht-angemeldeten Bereich&lt;br /&gt;
&lt;br /&gt;
Das Risiko durch rechenintensive Operationen durch einen DoS betroffen zu sein ist natuerlich fuer gewoehlich um so groesser, wenn diese im anonymen Bereich angeboten wird. Der Hinweis ware ggf. ebenfalls hilfreich.&lt;br /&gt;
&lt;br /&gt;
== M 4.WA25Verhinderung von Clickjacking (Markus) ==&lt;br /&gt;
Ok - das passt soweit.&lt;br /&gt;
&lt;br /&gt;
([[User:Mrohr|Matthias]]) Stimmt, auch wenn ich &amp;quot;Angreifer&amp;quot; in dem Beispiel eher als &amp;quot;Webseitenbetreiber&amp;quot; beschreiebn wuerde, da er nicht wirklich aktiv einen Angriff durchfuehrt, oder? Bitte nochmal ueber meinen Hinweis aus G 5.WA18 nachdenken: Ist Clickjacking-Schutz tatsaechlich Grundschutz? Ich bin mir da selber nicht so wirklich sicher.&lt;br /&gt;
&lt;br /&gt;
== M 5.WA21Sichere Anbindung von Hintergrundsystemen an Web-Anwendungen (Markus) ==&lt;br /&gt;
; Verantwortliche:&lt;br /&gt;
 Architekten fehlen. Entwickler müssen die Views umsetzen und die Datasource entsprechend einbinden - die fehlen hier ebenfalls.&lt;br /&gt;
; DirectorySystem Beispiel:&lt;br /&gt;
 Das DirectorySystem wird in dem angegeben Beispiel zum Single Point of Failure - das wird verschwiegen.&lt;br /&gt;
; Firewalls:&lt;br /&gt;
 Das sind fachlich-blinde Systeme. Was ist mit WAFs / IDS / IPS etc.?&lt;br /&gt;
([[User:Mrohr|Matthias]]) Stimmt, das hat in diesem Baustein nichts zu suchen&lt;br /&gt;
&lt;br /&gt;
([[User:Mrohr|Matthias]]) Noch ein weiterer Punkt von mir&lt;br /&gt;
&lt;br /&gt;
; Typische Hintergrundsysteme&lt;br /&gt;
Hier fehlt irgendwie &amp;quot;Middleware&amp;quot;, die ist denke ich nicht immer Legacy&lt;br /&gt;
&lt;br /&gt;
== M 5.WA23Systemarchitektur einer Web-Anwendung (Markus) ==&lt;br /&gt;
; Verantwortliche:&lt;br /&gt;
Auch hier fehlend wieder die Architekten. &lt;br /&gt;
; Virtualisierung:&lt;br /&gt;
Virtualisierung bietet weitere Angriffsvektoren (z.B.: Hypervisor) die eine &amp;quot;Blech&amp;quot;Farm nicht bietet.&lt;/div&gt;</summary>
		<author><name>Mrohr</name></author>	</entry>

	<entry>
		<id>https://wiki.owasp.org/index.php?title=Talk:OWASP_Review_BSI_IT-Grundschutz_Baustein_Webanwendungen&amp;diff=130156</id>
		<title>Talk:OWASP Review BSI IT-Grundschutz Baustein Webanwendungen</title>
		<link rel="alternate" type="text/html" href="https://wiki.owasp.org/index.php?title=Talk:OWASP_Review_BSI_IT-Grundschutz_Baustein_Webanwendungen&amp;diff=130156"/>
				<updated>2012-05-21T11:41:25Z</updated>
		
		<summary type="html">&lt;p&gt;Mrohr: /* M 4.WA15Schutz vertraulicher Daten bei Web-Anwendungen (Markus) */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Since it's about a review of a document in German, all the discussions will be done in German :-)&lt;br /&gt;
&lt;br /&gt;
Diskussionen rund um den Review des &amp;quot;IT-Grundschutzbausteins Webanwendungen&amp;quot; finden hier statt, sinnvollerweise auf Deutsch :-)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Vorschlag für Kriterien, die an unser Review angelegt werden sollten (.kai) ==&lt;br /&gt;
&lt;br /&gt;
* Der Baustein soll alle wichtigen Themen der Entwicklung sicherer&lt;br /&gt;
Webanwendungen enthalten.&lt;br /&gt;
&lt;br /&gt;
* Der Baustein soll die verschiedenen Phasen der Software-Entwicklung&lt;br /&gt;
vollständig abdecken.&lt;br /&gt;
&lt;br /&gt;
* Der Baustein soll zwischen verbindlichen, prüfbaren Vorgaben und&lt;br /&gt;
unverbindlichen Empfehlungen sprachlich sauber unterscheiden (hier&lt;br /&gt;
spielt mein Auditorenblick eine Rolle). Vor allem soll der Baustein&lt;br /&gt;
verbindliche Anforderungen auch tatsächlich stellen. Alle&lt;br /&gt;
verbindlichen Anforderungen müssen unabhängig von der jeweiligen&lt;br /&gt;
Umgebung auch umsetzbar sein, d.h. sie müssen entsprechend generisch&lt;br /&gt;
sein.&lt;br /&gt;
&lt;br /&gt;
* Die Maßnahmen sollen nur in (begründbaren) Ausnahmen zu Empfehlungen&lt;br /&gt;
von OWASP im Widerspruch stehen.&lt;br /&gt;
&lt;br /&gt;
* Die Maßnahmen sollen verständlich und anwendbar sein.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== &amp;quot;Hilfsmittel&amp;quot; (Markus) ==&lt;br /&gt;
Ich würde das Script zur Vermeidung von Clickjacking wrappen und nicht als losen Skript-block in den Text einbinden - einfach schlechter Programmierstiel diese losen Blöcke.&lt;br /&gt;
Der Zugriff auf das Body-Element mit byTagName-Array[0] ist auch nicht wirklich gut. Ich halte Zugriffe über das DOM (klassisch), bei ID bzw. XPATH für besser. &lt;br /&gt;
&lt;br /&gt;
SQL-Injection Characters:&lt;br /&gt;
die Pipe fehlt hier zur Textkonatenierung&lt;br /&gt;
+ / - haben auch eine Bedeutung bei JOINs.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== &amp;quot;Goldene Regeln&amp;quot; (Matthias) ==&lt;br /&gt;
&lt;br /&gt;
Hier meine Anmerkungen zu diesem Dokument:&lt;br /&gt;
&lt;br /&gt;
; 1. Für mich fehlende Punkte&lt;br /&gt;
* Korrektur der Ursache (Root Cause) von Schwachstellen statt  Verhinderung deren Ausnutzung&lt;br /&gt;
* Bezug auf Minimierung der Angriffsfläche und Least-Privilege-Prinzip&lt;br /&gt;
* Bezug auf Defense-in-Depth-Prinzip&lt;br /&gt;
* Verwendung von getesteten Security APIs (z.B. OWASP ESAPI) statt selbstentwickelter Funktionen&lt;br /&gt;
* Bezug auf Externalisierung von Sicherheitsfunktionen, sowie deklerative vor programmatischer Sicherheit.&lt;br /&gt;
&lt;br /&gt;
; 2. Begriff &amp;quot;Web-Anwendung&amp;quot;&lt;br /&gt;
Würde ich generell durch &amp;quot;Webanwendung&amp;quot; ersetzen.&lt;br /&gt;
&lt;br /&gt;
; 3. Einleitung (&amp;quot;Web-Anwendungen stellen Funktionalität zur Verfügung, ...&amp;quot;)&lt;br /&gt;
&lt;br /&gt;
Wozu dient dieser Satz?&lt;br /&gt;
&lt;br /&gt;
; 4. &amp;quot;Die Architektur der Web-Anwendung ist im Sicherheitskonzept zu  dokumentieren.....&amp;quot; &lt;br /&gt;
&lt;br /&gt;
Ich fände es sinnvoller, wenn hier von der &amp;quot;Sicherheitsarchitektur&amp;quot; gesprochen wird, welche etwa neben den sicherheitsrelevanten Datenflüssen, sensible Komponenten, Entry Points, Akteure architekturelle Security Controls wie Authentisierung, Kryptographie und natürlich die Trust Boundaries beinhaltet.&lt;br /&gt;
&lt;br /&gt;
; 5. &amp;quot;Bei Web-Anwendungen handelt es sich häufig um spezielle Eigenentwicklungen....&amp;quot;&lt;br /&gt;
&lt;br /&gt;
Erstens würde ich hier den geläufigen Begriff &amp;quot;Individualsoftware&amp;quot; verwenden. Zweitens würde ich statt bestimmte SDLC-Phasen vorzugeben (die Begriffe &amp;quot;Softwareverteilung&amp;quot; und &amp;quot;Integration&amp;quot; sind mir bei Webanwendungen bisher noch nicht so häufig untergekommen), besser von der Notwendigkeit sprechen, Sicherheit in allen Entwicklungsphasen zu berücksichtigen, also eines SDLs.&lt;br /&gt;
&lt;br /&gt;
; 6. &amp;quot;Alle Ein- und Ausgaben der Web-Anwendung müssen in eine normalisierte Form überführt werden....&amp;quot;&lt;br /&gt;
&lt;br /&gt;
Normalisierung ist für mich nicht gleich Kanonsierung, auch wenn beide Begriffe häufig als synonym verwendet werden.  Der Unterschied wird in der [http://owasp-esapi-java.googlecode.com/svn/trunk_doc/2.0-rc4/org/owasp/esapi/Encoder.html API-Beschreibung der ESAPI] erklärt. Die Normalisierungs-Funktion ist allerdings schon vor einiger Zeit aus der ESAPI [https://lists.owasp.org/pipermail/esapi-dev/2010-January/000266.html rausgeflogen]. Die generelle Kanonisierung von Ausgaben halte ich dazu für nicht sinnvoll.&lt;br /&gt;
&lt;br /&gt;
Zweitens, finde ich den weiteren Text zwar grundsätzlich formal korrekt, aber so allgemein, dass dieser glaube ich niemandem so richtig etwas bringt.  &lt;br /&gt;
&lt;br /&gt;
Besser fände ich hier Ein- von Ausgabevalidierung grundsätzlich voneinander abzugrenzen. Etwa was ich per Eingabevalidierung (Längenprüfung, Casting, etc. per Whitelisting) und was mit Ausgebavalidierung (Enkodierung, Escaping, Parametrisierung) machen muss und kann.&lt;br /&gt;
&lt;br /&gt;
Eingabedaten können technisch zudem auch Werte eingelesener Property-Dateien sein. Muss ich die auch validieren? Ist das dann noch Grundschutz? &lt;br /&gt;
&lt;br /&gt;
; 7. &amp;quot;Für den Zugriff auf sensitive Funktionen oder Informationen muss die Web-Anwendung eine wirksame Authentisierung und Sitzungsverwaltung unterstützen. Die Eigenschaften der Sitzungs-ID müssen so gewählt werden, dass die Sitzung ausreichend geschützt ist. ....&amp;quot;&lt;br /&gt;
&lt;br /&gt;
Besser fände ich &amp;quot;eine Authentisierung, die über eine dem Schutzbedarf der Anwendung angemessene Stärke verfügt.&amp;quot; &lt;br /&gt;
&lt;br /&gt;
Eigentlich geht es doch mehr um den Schutz der Sitzungs-ID, da diese gewöhnlich im Verlauf einer Sitzung den Client authentisiert. Oder den Schutz des Zugriffs auf eine Sitzung. &lt;br /&gt;
&lt;br /&gt;
Zudem fehlt hier meiner Meinung nach der Hinweis auf die bevorzugte Verwendung getesteter Standardkomponenten.&lt;br /&gt;
&lt;br /&gt;
; 8. &amp;quot;Die Web-Anwendung sollte die zu übermittelnden Daten schützen.&amp;quot;&lt;br /&gt;
&lt;br /&gt;
Dies würde ich nur auf sensible Daten beziehen. Zusätzlich zu HTTPS würde ich hier schreiben, dass sensible Daten generell nicht in der URL übertragen werden dürfen.&lt;br /&gt;
&lt;br /&gt;
; 9. &amp;quot;Die Preisgabe interner Informationen (z.B. Kommentare, Fehlermeldungen)&amp;quot;&lt;br /&gt;
&lt;br /&gt;
Hier würde ich eher schreiben &amp;quot;(IN Kommentaren, Fehlermeldungen, HTTP Headern, etc.)&amp;quot;&lt;br /&gt;
&lt;br /&gt;
; 10. &amp;quot;Fehler müssen so behandelt werden, ... müssen Fehler bei der Autorisierung zu einer Verweigerung beim Zugriff auf die angeforderte Ressource führen.&amp;quot;&lt;br /&gt;
&lt;br /&gt;
Sprachlich: &amp;quot;Die Webanwendung muss sich stets in einem sicheren Zustand befinden. Beispielsweise müssen Fehler bei der Autorisierung zu einer Verweigerung des Zugriffs führen (Default-Deny-Strategie).&amp;quot;&lt;br /&gt;
&lt;br /&gt;
; 11. &amp;quot;Die Logging-Funktionen der Web-Anwendung müssen aufgetretene Ereignisse derart protokollieren, dass sicherheitskritische Vorfälle nachvollzogen werden können.&amp;quot;&lt;br /&gt;
&lt;br /&gt;
Hier würde hier eher von &amp;quot;allen sicherheitsrelevanten Ereignissen&amp;quot; sprechen.&lt;br /&gt;
&lt;br /&gt;
Weiterhin sollten insbesondere beim Logging der Datenschutz berücksichtigt werden, personenbezogene Daten also nach Möglichkeit nicht oder nur anonymisiert in technischen Logdateien protokolliert werden.&lt;br /&gt;
&lt;br /&gt;
; 12. &amp;quot;Alle Sicherheitsmechanismen (z.B. Authentisierung und Zugriffskontrolle) sind serverseitig zu implementieren und können nicht durch clientseitige Mechanismen ersetzt werden.&amp;quot;&lt;br /&gt;
&lt;br /&gt;
Die Aussage ist so nicht korrekt. Darüber hatten wir bereits bei der ASVS mehrfach diskutiert. &lt;br /&gt;
&lt;br /&gt;
Überall dort wo der Client angegriffen wird, also etwa bei RIAs (Stichwort DOM-Based XSS) müssen wir Security Controls clientseitig implementieren. Es gibt mittlerweile deshalb auch eine Portierung der ESAPI auf Javascript. Überall dort wo der Server oder Hintegrundsysteme angegriffen werden, ist die Aussage aber natürlich zutreffend.&lt;br /&gt;
&lt;br /&gt;
== &amp;quot;Gefährdungen&amp;quot; (Markus, Dennis, .... &amp;lt;Dein Name&amp;gt;) ==&lt;br /&gt;
; Generell:&lt;br /&gt;
Reference auf RFCs fehlen.&lt;br /&gt;
&lt;br /&gt;
==B.5.XX Web-Anwendungen ==&lt;br /&gt;
; 1. Erster Absatz - Letzter Satz: --Wieso werden hier nur HTML/XML Doks und Oberflächen angesprochen? Was ist der Unterschied zwischen einem HTML-Dok und einer Oberfläche? Was ist mit  Flash, etc.? Was ist mit WebSockets?&lt;br /&gt;
; 2. Stichpunkt &amp;quot;Protokollierung&amp;quot;: Sicherheits relevant ist ein sehr dehnbarer Begriff - Eine bessere Formulierung könnte sein: Zur Rekonstruktion von Nutzerhandlungen nötige Ereignisse (positve &amp;amp; negative) müssen protokolliert werden . . . &lt;br /&gt;
; 3. Absatz: &amp;quot;Abgrenzung des Bausteins&amp;quot;: &amp;quot;Die spez. Sicherheitsanforderungen an Web-Services werden in diesem Baustein nicht betrachtet&amp;quot; --&amp;gt; Wie so nicht? Was ist das Backend von einer Rest / AJAX-basierenden Webanwendung denn anderes als ein Web-Service? Diesen Satz würde ich entfernen.&lt;br /&gt;
; 4.Vorsätzliche Handlungen -&amp;gt; Web-Spoofing (G.5.87) -- Missverständliche Bezeichnung / Nomenklatur&lt;br /&gt;
; 5. Seite 4 : erste Zeile &amp;quot;Umsetzung&amp;quot;: &amp;quot;dafür umzusetztende Komponenten müssen die Webanwendung schützen...&amp;quot; - Hier fehlt mir der Hinweis, dass dieser Schutz verifiziert werden muss.&lt;br /&gt;
; 6 Seite 5: &amp;quot;Umsetzung&amp;quot; - Wir haben CSRF, D(D)os und SQL-Injection aber wo ist XSS?&lt;br /&gt;
; 7 Seite 7: &amp;quot;Die Sicherheitsfunktion wird ausschließlich clientseitig...&amp;quot; --&amp;gt; Warum muss der Angreifer überhaupt einen Browser umkonfigurieren? Was ist mit Proxies, Scripts, etc.? Ich würde das reduzieren darauf, dass rein Webbrowser-basierende Schutzfunktionen einfach umgangen werden können.&lt;br /&gt;
; 8 Seite 8: Die angesprochenen Punkte hinterlassen den Eindruck nicht vollständig zu sein: Mir fehlen Punkte wie &amp;quot;Outsourcing&amp;quot;, &amp;quot;KnowHow der Entwickler&amp;quot;, Tooling, Framework-Auswahl, etc.&lt;br /&gt;
; 9 Seite 9: Eigentlich möchte der Autor hier über Datenschutz sprechen. Abgesehen von den letzten drei Zeilen geht es aber nur um &amp;quot;User tracking&amp;quot; - Wo ist der Rest der Datenschutzproblematik? Warum der Fokuss auf Tracking? Mir ist das zu einseitig.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
tbd.&lt;br /&gt;
&lt;br /&gt;
; Wortwahl:&lt;br /&gt;
Ich stosse innerhalb der Texte immer wieder an die Worten '''Hintergrundsystem''' und '''Sicherheitskontext'''.&lt;br /&gt;
'''Hintergrundsystem:''' besseres Synonym?&lt;br /&gt;
'''Sicherheitskontext:''' nur weil es in den Texten um Sicherheit geht muss nicht an jeder Stelle immer wieder das Wort _Sicherheits_kontext eingebaut werden.&lt;br /&gt;
Bsp: &amp;quot;Erlangt ein Angreifer Kenntnis von einer solchen gültigen, aber nicht mehr genutzten SessionID, so kann er die Web-Anwendung im Sicherheitskontext des nicht abgemeldeten Benutzers weiter verwenden.&amp;quot; (G 5,WA12 Unzureichendes Session-Management von Web-Anwendungen)&lt;br /&gt;
Verbesserungsansansatz: ... so kann er die Web-Anwendung anstelle des eigentlichen Besitzers weiterhin verwenden.&lt;br /&gt;
&lt;br /&gt;
== &amp;quot;G 2.WA01 Mangelhafte Auswahl oder Konzeption von Web-Anwendungen&amp;quot; (Matthias) ==&lt;br /&gt;
&lt;br /&gt;
Nachdem ich mir diese Gefährdung durchgelesen hatte, fehlten mir ehrlich gesagt etwas die Worte. Nicht nur, dass hier fast jeder zweite Satz entweder falsch ist bzw. massive Fehler enthält oder ich diesen schlicht nicht verstehe, ist der ganze Text sprachlich wirklich enorm verbesserungsfähig. &lt;br /&gt;
&lt;br /&gt;
Na gut, ich konzentriere mich mal auf die fachlichen Punkte:&lt;br /&gt;
&lt;br /&gt;
; 1. Security Controls&lt;br /&gt;
Werden mal mit &amp;quot;Schutzmechanismen&amp;quot;, mal mit &amp;quot;Sicherheitskomponenten&amp;quot; und dann wieder als &amp;quot;Sicherheitsfunktionen&amp;quot; bezeichnet. Hier macht eine einheitliche Benennung sicherlich Sinn und ist weniger verwirrend.&lt;br /&gt;
&lt;br /&gt;
; 2. &amp;quot;Eine Web-Anwendung ist in der Regel ein verteiltes, komplexes System bestehend aus unterschiedlichen Komponenten (z. B. Webserver, Applikationsserver, Hintergrundsysteme)&amp;quot;&lt;br /&gt;
&lt;br /&gt;
Eine Webanwendung besteht sicher nicht aus einem Webserver- oder anderer infrastruktureller Komponenten, sondern ist Software welches diese nutzt.&lt;br /&gt;
&lt;br /&gt;
; 3. &amp;quot;Bei individuell entwickelten Web-Anwendungen sind im Allgemeinen die Frameworks, Komponenten und Schnittstellen im Rahmen der Konzeption auszuwählen und deren Einbindung und Absicherung zu betrachten....Im Gegensatz dazu ist bei der Konzeption von Web-Anwendungen auf Basis von Standardsoftware insbesondere auf die Auswahl der Software und die Konfiguration der Teilkomponenten zu achten&amp;quot;&lt;br /&gt;
&lt;br /&gt;
Wir unterscheiden im Rahmen von Webanwendungen eigentlich Free or Opensource Software (FOSS bzw. FLOSS), Standardsoftware und Individualsoftware voneinander. Wir unterscheiden nicht Frameworks von Standardsoftware. Frameworks können Teil von Standardsoftware sein, wie etwa bei SharePoint, SAP, etc, oder aber FOSS, wie etwa Spring. Die ganzen Absätze machen für mich daher keinen Sinn.&lt;br /&gt;
&lt;br /&gt;
; 4. &amp;quot;Eine Sicherheitsfunktion (z. B. Authentisierung, Autorisierung) wird nicht an einer Stelle umgesetzt und verwendet, sondern ist mehrfach in der Web- Anwendung realisiert. Wird diese Sicherheitsfunktion an den verschiedenen Stellen unterschiedlich umgesetzt, führt dies zu einem uneinheitlichen Sicherheitsniveau.&amp;quot;&lt;br /&gt;
&lt;br /&gt;
Natürlich ist die mehrfache Verwendung bestimmter Security Controls, beispielsweise von Zugriffskontrollen (Complete-Mediation) oder Validierung (Robustheit) erstrebenswert. Was der Autor hier wahrscheinlich meinte, war die Notwendigkeit diese zu Kapseln bzw. zu Externalisieren. Das bezieht sich im übrigen nicht nur auf die Controls selbst, sondern auch auf ihre Parametrisierung (etwa. über Konfigdateien / XACML).&lt;br /&gt;
&lt;br /&gt;
Wichtiger wäre in diesem Zusammenhang zudem die fehlende Berücksichtigung bestimmter Security Controls.&lt;br /&gt;
&lt;br /&gt;
; 5. &amp;quot;Auswahl von Web-Anwendungen auf Basis von Standardsoftware&amp;quot;&lt;br /&gt;
Was will der Satz sagen? Ich wähle Standardsoftware aus, aber doch keine Webanwendungen. Oder heißt das, ich kaufe eine existierende Anwendung ein (Webanwendung!=Indivudualsoftware)? &lt;br /&gt;
&lt;br /&gt;
; 6. &amp;quot;Das ausgewählte Produkt verfügt nicht über die ausreichende Sicherheitsfunktionalität, ... Daher müssen die notwendigen Schutzmechanismen nachträglich hinzugefügt werden, wodurch zusätzliche Aufwände entstehen.&amp;quot;&lt;br /&gt;
Das ist etwas sehr positiv formuliert. Tatsächlich können fehlende Security Controls in zugekaufter Software (insb. Standardsoftware) in der Realität häufig gar nicht hinzugefügt werden oder nur perimetrisch (z.B. per WAF oder Access Gateway).&lt;br /&gt;
&lt;br /&gt;
; 7. &amp;quot;Die Hintergrundsysteme werden unzureichend abgesichert und dadurch ist die Datenbank der Web-Anwendung aus dem Internet erreichbar.&amp;quot;&lt;br /&gt;
Gehören fehlende Netzwerksegmentierung bzw. Firewallregeln wirklich in diesen Kontext? Das ist doch eigentlich Grundschutz der Infrastruktur, oder?&lt;br /&gt;
&lt;br /&gt;
; 8. &amp;quot;Aufgrund schwacher Parameter in der Konfiguration des Frameworks zum Session-Management werden unsichere SessionIDs erzeugt.&amp;quot;&lt;br /&gt;
Was sind &amp;quot;schwache&amp;quot; Parameter?&lt;br /&gt;
&lt;br /&gt;
Welches Framework erlaubt unsichere SessionIDs durch eine &amp;quot;schwache&amp;quot; Konfiguration zu erzeugen?&lt;br /&gt;
&lt;br /&gt;
; 9. &amp;quot;Wird die Konfiguration des Web-Browsers durch einen Angreifer manipuliert, können die clientseitig umgesetzten&amp;quot;&lt;br /&gt;
&lt;br /&gt;
Manipuliert ein Angreifer die Konfguration seines Webbroswers, wenn er einen MITM-Proxy konfiguriert?&lt;br /&gt;
&lt;br /&gt;
Wie bereits bei den &amp;quot;Goldenen Regeln&amp;quot; angemerkt, gilt auch hier, das manche Security Controls auch clientseitig umgesetzt werden dürfen (etwa. zur Verhinderung von Dom-Based XSS).&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== &amp;quot;G 5.WA10 Fehler in der Web-Anwendungslogik&amp;quot; (Dennis) ==&lt;br /&gt;
; 1. &amp;quot;Damit kann aufgrund der Prüfreihenfolge ein hoher Ressourcenverbrauch provoziert werden, der für Denial-of-Service-Angriffe ausgenutzt werden kann.&amp;quot;&lt;br /&gt;
Meiner Meinung nach passt in diesem Kontext die Attacke DoS nicht ganz. Falls die nachfolgende Funktionalität wegen der langen Ausführungszeit der Filterkomponente übersprungen wird bzw. ein Fehler auftritt würde dies meiner Ansicht in die Thematik Anwendungslogik passen. Eine DoS-Attacke kann hingegen anhand jeder Funktion durchgeführt werden.&lt;br /&gt;
&lt;br /&gt;
== &amp;quot;G 5.WA11 Umgehung clientseitig umgesetzter Sicherheitsfunktionen von Web-Anwendungen&amp;quot; (Dennis) ==&lt;br /&gt;
; 1. &amp;quot;Ein Angreifer kann diese ausnutzen, um beispielsweise unbefugt Befehle an Hintergrundsysteme der Web-Anwendung zu übermittlen (z.B. in Form von Datenbankanfragen bei einer SQL-Injection).&amp;quot;&lt;br /&gt;
Umformulierung des Inhalts der Klammer. Hatte beim ersten Lesen für mich den Anschein, als ob ein Formular genutzt werden könnte welches den Nutzer aufforder eine SQLI einzugeben. Ich denke &amp;quot;Datenbankanfrage zwecks Ausführung einer SQL-Injection&amp;quot; würde besser passen.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== G 2.WA02 Mängel bei der Entwicklung und der Erweiterung von Web-Anwendungen (Matthias) ==&lt;br /&gt;
&lt;br /&gt;
Allgemein ist de obere Teil ok, die aufgezählten &amp;quot;Auswirkungen von fehlenden Vorgaben&amp;quot; verstehe ich jedoch nicht. Wo ist etwa der Bezug von Barrierefreiheit auf die Anwendungssicherheit?&lt;br /&gt;
&lt;br /&gt;
Mein Vorschlag, um diese Punkte etwa sinnvoll umzubauen:&lt;br /&gt;
* &amp;quot;Fehlendes Vorgehensmodell&amp;quot;: Bezug auf fehlende Berücksichtigung von Sicherheit im SDLC. Statt eines SDLCs selbst sollte hier besser auf die Notwendigkeit eines Secure Development Lifecycle (SDL) hingewiesen werden&lt;br /&gt;
* &amp;quot;Fehlende Programmierrichtlinien&amp;quot; =&amp;gt; Besser wäre hier &amp;quot;Fehlende Sicherheitsrichtlinien in der Programmierung&amp;quot; also &amp;quot;Secure Coding Guidelines&amp;quot;&lt;br /&gt;
* &amp;quot;Testfälle&amp;quot; =&amp;gt; &amp;quot;Sicherheitsrelevante Testfälle&amp;quot; (z.B. Security Unit Tests). &lt;br /&gt;
* &amp;quot;Barrierefreiheit&amp;quot;: Warum nicht an dieser Stelle die Auswirkungen von Sicherheitsfunktionen auf die Bedienbarkeit, etwa anhand von CAPTCHAS erläutern?&lt;br /&gt;
&lt;br /&gt;
== G 2.WA03 Unzureichender Schutz personenbezogener Daten bei Web-Anwendungen (Matthias) ==&lt;br /&gt;
&lt;br /&gt;
Der Titel dieses Bausteines heißt &amp;quot;Schutz personenbezogener Daten&amp;quot;, die genannten Beispiele beziehen sich bis auf den letzten jedoch auf die missbräuchliche (oder zumindest problematische) Nutzung aus Sicht des Datenschutzes. &lt;br /&gt;
&lt;br /&gt;
Die Punkt 1-3 sollten daher besser entfallen und z.B. durch die Folgenden ersetzt werden:&lt;br /&gt;
* Unsichere Einbindung von sozialen Netzwerken (Bezug nehmen auf den Like-Button bei Facebook)&lt;br /&gt;
* Unsichere Einbindung von Werbeinhalten&lt;br /&gt;
* Unsichere Übertragung und Caching&lt;br /&gt;
* Unsichere Protokollierung&lt;br /&gt;
* Ungenügender Zugriffsschutz&lt;br /&gt;
* Verstoß des Minimalprinzips bzw. der Zweckgebundenheit (welche Daten werden wirklich benötigt)&lt;br /&gt;
&lt;br /&gt;
Auch wäre es ggf. zumindest einen Verweis auf das BDSG zu machen.&lt;br /&gt;
&lt;br /&gt;
== G 4.33 Unzureichende oder fehlende Authentisierung (Matthias) ==&lt;br /&gt;
&lt;br /&gt;
; 1. Erster Absatz: &amp;quot;Wenn Authentisierungsmechanismen fehlen oder zu schlecht sind&amp;quot;&lt;br /&gt;
&lt;br /&gt;
&amp;quot;schlecht&amp;quot; sollte vlt besser durch &amp;quot;unzureichend&amp;quot; ersetzt werden.&lt;br /&gt;
&lt;br /&gt;
; 2. &amp;quot;Sicherheitslücken entstehen bei... der Benutzerauthentisierung&amp;quot;&lt;br /&gt;
&lt;br /&gt;
Hier findet nur ein Bezug auf &amp;quot;Passwörter&amp;quot; statt. Der Bezug auf die fehlerhaft implementierte oder dem Schutzbedarf ungenügende Schutzmechanismen (z.B. keine 2-Faktor-Authentisierung bei hochsensiblen Daten) fehlt. Auch auf das komplette fehlen von Authentisierungs-Controls wird hier nicht  eingegangen&lt;br /&gt;
&lt;br /&gt;
; 3. &amp;quot;Sicherheitslücken entstehen bei... der Komponentenauthentisierung&amp;quot;&lt;br /&gt;
&lt;br /&gt;
Wie bei 2., wird auch hier wieder nur auf Passwörter, nicht jedoch auf das fehlen von Controls selbst eingegangen. An dieser Stelle fehlt auch ein Hinweis auf die Notwendigkeit dedizierter Benutzeraccounts.&lt;br /&gt;
&lt;br /&gt;
; 4. &amp;quot;Sicherheitslücken entstehen bei... der Wahl des Verfahrens&amp;quot;&lt;br /&gt;
&lt;br /&gt;
Statt untauglich würde ich auch hier von &amp;quot;dem Schutzbedarf der Daten nicht angemessen&amp;quot; sprechen, eigentlich gehört das für mich aber in die obigen Punkte.&lt;br /&gt;
&lt;br /&gt;
; 5. Serverseitige Authentisierung fehlt&lt;br /&gt;
&lt;br /&gt;
Auch der Server (bzw. die Anwendung selbst) kann sich fehlerhaft oder ungenügend beim Benutzer authentsieren, etwa über DNS, SSL-Zertifikate, etc.&lt;br /&gt;
&lt;br /&gt;
== G 4.WA04 Unzureichende Validierung von Ein- und Ausgabedaten bei Web-Anwendungen (Matthias) ==&lt;br /&gt;
&lt;br /&gt;
; 1. &amp;quot;Unzureichende Validierung von Eingabedaten&amp;quot;&lt;br /&gt;
&lt;br /&gt;
Die genannten Beispiele sind genau keine korrekten Beispiele für diesen Fall, sondern betreffen die Ausgabevalidierung bzw. Enkodierung. Typische Fehler der Eingabevalidierung ist eine Manipulierbarkeit der Business Logik.&lt;br /&gt;
&lt;br /&gt;
; 2. &amp;quot;Unzureichende Validierung von Ausgabedaten&amp;quot;&lt;br /&gt;
&lt;br /&gt;
Hier geht es zentral um die Verhinderung von Interpreter Injection, also serverseitig (z.B. SQL oder LDAP Injection) oder clientseitig (XSS, JSON Injection, etc.). Statt &amp;quot;können die Ausgaben Schadcode&amp;quot; enthalten würde ich hier eher davon Sprechen, dass ein solcher Interpreteraufruf manipuliert werden kann (was dann z.B. zur Einschleusung von Schadcode genutzt werden kann).&lt;br /&gt;
&lt;br /&gt;
; 3. &amp;quot;Die Suchfunktion der Web-Anwendung verwendet die Eingaben der Benutzer ungefiltert&amp;quot;&lt;br /&gt;
&lt;br /&gt;
Mit ungenügender &amp;quot;Filterung&amp;quot; hat SQL Injection nichts zu tun,  eigentlich geht es hierbei darum, dass SQL-Anfragen dynamisch mit unvalidierten Eingebedaten zusammengebaut (konkateniert) werden.&lt;br /&gt;
&lt;br /&gt;
; 4. &amp;quot;Ungefilterter HTML-Code in Kommentar-Funktion&amp;quot;&lt;br /&gt;
&lt;br /&gt;
Hier fehlt der Bezug auf persistentes XSS, das hier sicherlich zentral ist.&lt;br /&gt;
&lt;br /&gt;
== G 4.WA05 Fehlende oder mangelhafte Fehlerbehandlung durch Web-Anwendungen (Tobias, Matthias) ==&lt;br /&gt;
; Abschnitt &amp;quot;Unsichere Fehlerbehandlung&amp;quot;&lt;br /&gt;
Die G adressiert &amp;quot;Unsichere Fehlerbehandlung&amp;quot;, der Abschnitt die &amp;quot;Unsichere Fehlerbehandlung in Sicherheitskomponenten&amp;quot;. Entsprechend sollte der fettgedruckte Teil angepasst werden.&lt;br /&gt;
&lt;br /&gt;
; &amp;quot;fehlende SQL-Parameter,&amp;quot;&lt;br /&gt;
Sollte besser &amp;quot;Fehlermeldungen bei ungültigen SQL-Abfragen&amp;quot; lauten.&lt;br /&gt;
&lt;br /&gt;
; &amp;quot;Auch scheinbar unkritische Informationen, wie die Meldung ob (..)&amp;quot;&lt;br /&gt;
Korrekt, allerdings nicht nachvollziehbar, wenn das Problem der Leser nicht schon bekannt ist. Daher erweitern nach &amp;quot; Rahmen von Brute-Force-Angriffen ausgenutzt werden.&amp;quot; mit &amp;quot;. Bei Brute-Force-Angriffen wäre in diesem Fall klar, dass der Benutzername gültig ist.&amp;quot;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[User:Mrohr|Matthias]]): Stimme dem Obigen auch zu, ausserdem:&lt;br /&gt;
&lt;br /&gt;
; Sprachlich: &amp;quot;kann dies unvorhersehbare Auswirkungen haben und den Betrieb der Web-Anwendung bis zur Unerreichbarkeit einschränken.&amp;quot;&lt;br /&gt;
&lt;br /&gt;
&amp;quot;Unerreichbarkeit&amp;quot; ist etas merkwuerdig ausgedrueckt, besser ware hier von der &amp;quot;Verfuegbarkeit&amp;quot; zu sprechen. Im Uebrigen fehlt vollstaendig der Bezug auf die Verfuegbarkeit als Primaeres Schutzziel der Informationssicherheit.&lt;br /&gt;
&lt;br /&gt;
; &amp;quot;Clientseitige Fehlerbehandlung&amp;quot;&lt;br /&gt;
Das stimmt soweit, das generelle Problem ist jedoch genereller, naehmlich die clientseitige Abbildung sicherheitsrelaventer Logik (in diesem Fall die Fehlerbehandlung)&lt;br /&gt;
&lt;br /&gt;
== G 4.WA06 Unzureichende Nachvollziehbarkeit von sicherheitsrelevanten Ereignissen bei Web-Anwendungen (Matthias) ==&lt;br /&gt;
&lt;br /&gt;
; 1. Erster Absatz: &amp;quot;Die Behebung einer Schwachstelle ist dann nicht oder nur unter erschwerten Bedingungen möglich.&amp;quot;&lt;br /&gt;
&lt;br /&gt;
Hier würde ich ergänzen: &amp;quot;...und Angriffe auf die Anwendungen können ggf. nicht erkannt oder nachvollzogen werden&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
; 2. &amp;quot;Beispiele&amp;quot;: Kommulierbarkeit&lt;br /&gt;
&lt;br /&gt;
Hier fehlt auch ein Bezug auf die Kommulierbarkeit von SIcherheitsereignissen, dass diese also auch von solchen anderer Systeme in Verbindung gesetzt werden können&lt;br /&gt;
&lt;br /&gt;
; 3. &amp;quot;Beispiele&amp;quot;: Gerichtsverwertbarkeit&lt;br /&gt;
&lt;br /&gt;
Auch die Möglichkeit zur Gerichtsverwertbarkeit (etwa durch eindeutigen Zeitstempel) und manipulationssicherer Speicherung, würde ich an dieser Stelle unbedingt erwähnen.&lt;br /&gt;
&lt;br /&gt;
== G 4.WA07 Offenlegung von Informationen bei Web-Anwendungen (Matthias) ==&lt;br /&gt;
&lt;br /&gt;
; 1. Titel&lt;br /&gt;
&lt;br /&gt;
Hier würde ggf. &amp;quot;Offenlegung vertraulicher Informationen&amp;quot; sicher besser passen als &amp;quot;Offenlegung von Informationen&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
; 2. Beispiellink&lt;br /&gt;
&lt;br /&gt;
Ein Beispiellink (mit und ohne Token) würde sicher die Verständlichkeit dieser Schwachstelle verbessern.&lt;br /&gt;
&lt;br /&gt;
; 3. Erster Absatz: &amp;quot;Wenn demzufolge Informationen unnötig offengelegt werden, steigt die Wahrscheinlichkeit eines erfolgreichen Angriffs.&amp;quot;&lt;br /&gt;
&lt;br /&gt;
Interne Informationen auszublenden ist eine Härtungsmaßnahme, deren Anzeige erhöht aber nicht zwangsläufig die Wahrscheinlichkeit eines erfolgreichen Angriffs. Ich würde diesen Satz weglassen.&lt;br /&gt;
&lt;br /&gt;
 ; 4. Fehlende Punkte&lt;br /&gt;
&lt;br /&gt;
* Ein Hinweis auf HTTP Header wäre hier sicher erwähnenswert.&lt;br /&gt;
* Weiterhin bzgl. der Anzeige von Traces und ein Verweis auf den Entsprechenden Baustein zur Fehlerbehandlung&lt;br /&gt;
&lt;br /&gt;
== G 5.WA14 Cross-Site Request Forgery (CSRF, XSRF) (Matthias) ==&lt;br /&gt;
&lt;br /&gt;
; 1. Erster Absatz: &amp;quot;Können Funktionen einer Web-Anwendung ohne weitere Überprüfung der Authentizität des HTTP-Requests (z.B. durch Tokens in versteckten Formularfeldern) genutzt werden&amp;quot;&lt;br /&gt;
&lt;br /&gt;
Statt &amp;quot;Funktionen&amp;quot; würde ich besser von &amp;quot;schreibenden Aktionen&amp;quot; sprechen, dann macht der Satz mehr Sinn.&lt;br /&gt;
&lt;br /&gt;
; 2. Dritter Absatz: &amp;quot;Im Gegensatz zu XSS (siehe ...￼ ) ist das Angriffsziel nicht die Information auf dem Client (z. B. in Cookies),&amp;quot;&lt;br /&gt;
&lt;br /&gt;
Dieser (Halb-)Satz macht keinen Sinn, auch weil es bei XSS nicht nur im Informationen auf dem Cient geht. Vorschlag: &amp;quot;ist das Angriffsziel nicht die Ausführung von Skriptcode, sondern von unbefugten, schreibenden Aktionen im Kontext des angemeldeten Benutzers.&amp;quot;&lt;br /&gt;
&lt;br /&gt;
; 3. Session Riding&lt;br /&gt;
&lt;br /&gt;
Session Riding ist quasi nur ein anderer Begriff für CSRF. Die einzige Form von CSRF die mir bekannt ist, sind Angriffe mit Standard-Passwörtern auf HTTP-Basic-Auth geschützten Ressourcen.&lt;br /&gt;
&lt;br /&gt;
Im Grunde ist Session Riding aber nur ein Synonym für CSRF. Der Absatz ist daher auch nur eine Wiederholung der obigen Beschreibung.&lt;br /&gt;
&lt;br /&gt;
; 4. Zum Beispiel: &amp;quot;Durch einen präparierten Link auf einer Webseite wird die Änderung des Zugangspasswortes des Routers eingeleitet.&amp;quot;&lt;br /&gt;
&lt;br /&gt;
Etwas ungüngstig ausgedrückt. Besser wäre: &amp;quot;wird eine Anfrage zur Änderung des Zugangspasswortes an den Router gesendet. Hierbei sendet der Browser automatisch den Session Cookie mit, worüber die Webanwendung die Authentizität der Anfrage verifiziert und die Änderung durchführt.&amp;quot;&lt;br /&gt;
&lt;br /&gt;
== G 5.WA18 Clickjacking (Matthias) ==&lt;br /&gt;
&lt;br /&gt;
Hier stellt sich mir nur die allgemeine Frage, ob Clickjacking, bzw. der Schutz davor tatsächlich einem Grundschutz zuzurechnen ist. Persönlich würde ich dies nicht tun.&lt;br /&gt;
&lt;br /&gt;
== M 2.WA02 Dokumentation der Architektur von Web-Anwendungen (Matthias) ==&lt;br /&gt;
&lt;br /&gt;
; Verantwortlich für die Umsetzung&lt;br /&gt;
Hier wäre auch die Nennung des &amp;quot;Architekten&amp;quot; sinnvoll&lt;br /&gt;
 &lt;br /&gt;
; Fehlende Bestandteile der Dokumentation:&lt;br /&gt;
* Schutzbedarf des Systems sowie der verarbeiteten Daten&lt;br /&gt;
* Schützenswerte Daten und Funktionen (Assets)&lt;br /&gt;
* Betriebliche Anforderungen an die Sicherheit bzw. eingesetzte Plattform&lt;br /&gt;
* Dokumentierte Konfigurationseinstellungen &lt;br /&gt;
* BIA (RTO, RPO)&lt;br /&gt;
* Schnittstellen&lt;br /&gt;
* Trust Boundaries&lt;br /&gt;
* Akteure (bzw. Trust Level)&lt;br /&gt;
* Sicherheitsannahmen&lt;br /&gt;
* Geltende Compliance-Anforderungen (BDSG, PCI DSS, etc.)&lt;br /&gt;
&lt;br /&gt;
; Benutzermanagement&lt;br /&gt;
&lt;br /&gt;
Wenn damit das Identity Management gemeint ist, gehört das Dokumentiert, ist aber keine Sicherheitsfunktion. Oder ist hiermit das Rollen- und Berechtigungskonzept gemeint? Grenzt sich aus meiner Sicht schwer mit dem Thema Authentisierung ab. &lt;br /&gt;
&lt;br /&gt;
; Prüffragen&lt;br /&gt;
&lt;br /&gt;
Hier fehlt etwas in Bezug auf Sicherheitsanforderungen. Beispiel: &amp;quot;Werden Sicherheitsanforderungen an den Betrieb während der Entwicklung abgestimmt und dokumentiert&amp;quot;&lt;br /&gt;
&lt;br /&gt;
== M 2.WA12 Entwicklung und Erweiterung von Anwendungen (Markus) ==&lt;br /&gt;
; &amp;quot;Es sollte darauf geachtet werden, dass Sicherheitsanforderungen&lt;br /&gt;
vollständig durch Sicherheitsmechanismen erfüllt und zur Erstellung von&lt;br /&gt;
Testfällen festgehalten werden.&amp;quot; --&amp;gt; Bessere Formulierung würde aussagen, dass die Sicherheitsanforderungen durch Testfälle verifiziert werden.&lt;br /&gt;
&amp;quot;(z. B. durch Kommentare im&lt;br /&gt;
Quelltext). Somit ist der Quelltext zu einem&amp;quot; --&amp;gt; Das ist kein empfehlenswerter Programmierstiel! Raus mit diesem Kommentar&lt;br /&gt;
;&amp;quot;Zum Schutz vor dem Verlust bereits entwickelter und verworfener&lt;br /&gt;
Lösungen sowie zu Dokumentationszwecken sollte die Historie der&lt;br /&gt;
Änderungen festgehalten werden (z. B. durch ein Revisionssystem).&amp;quot; --&amp;gt; Auch diesen Absatz können wir streichen - Kein professioneller Programmierer arbeitet ohne Versionierugssystem.&lt;br /&gt;
;&amp;quot;Bei Web-Anwendung sollten die Webseiten auf Konformität zu dem&lt;br /&gt;
verwendeten Standard (z. B. HTML-Standard) getestet werden. Dadurch&lt;br /&gt;
können unvorgesehene Seiteneffekte aufgrund einer Fehlinterpretation&lt;br /&gt;
seitens der Browser vermieden werden.&amp;quot; --&amp;gt; Könnte man noch um &amp;quot;Die Software ist in möglichst vielen Browsern zu testen&amp;quot; erweitern.&lt;br /&gt;
;Generell geht der Autor leider nicht auf die Rollen &amp;amp; Rechte Verteilung ein. Mir fehlt der Hinweis, das es eine personelle Trennung zwischen Entwicklung, Test und Betrieb geben muss.&lt;br /&gt;
;Zum Thema Wartung / Betrieb --&amp;gt; Hier wird keine Aussage getroffen bezüglich Log_Files. Dieses Thema kann kritische Auswirkungen haben, Bsp.: logging ganzer HTTP-Requests im LogLevel=Debug.&lt;br /&gt;
; &amp;quot;Produktspezifische Sicherheitsfunkionalität&amp;quot; - Dieser Absatz ist gefährlich - der Angreifer ist nicht zur Verwendung dies Zielbrowsers gezwungen. Deshalb können Browser-spez. Sicherheitsfunktionen nur als Add-ON gewertet werden.&lt;br /&gt;
; &amp;quot;Festlegung der Entwicklungsumgebung&amp;quot; - Dieser Absatz geht nicht auf die zu verwendenden Testdaten ein. Der Hinweis, dass Live-Daten / Kundendaten nichts in Test- &amp;amp; Entwicklungsumgebungen zu suchen haben fehlt!!!&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== M 2.WA24 Web-Tracking (Matthias) ==&lt;br /&gt;
&lt;br /&gt;
; Letzter Absatz: &amp;quot;Falls eine Auswertung von Nutzerdaten, insbesondere personenbezogener Daten, .. &amp;quot;&lt;br /&gt;
&lt;br /&gt;
Hier sollte denke ich besser von personenbeziehbaren Daten gesprochen Werten. Dies betrifft etwa die Zuordnung von Surfverhalten zu einer bestimmten Person. Dies sollte stets nach den Prinzipien Datensparsamkeit und Datenvermeidung, Erforderlichkeit, sowie Zweckbindung erfolgen. Ist Webtracking nicht personenbeziehbar ist dies kein Thema für den Datenschutz.&lt;br /&gt;
&lt;br /&gt;
== M 4.WA04 Authentisierung bei Web- Anwendungen (Matthias) ==&lt;br /&gt;
&lt;br /&gt;
: Verantwortlich fuer Umsetzung &lt;br /&gt;
sollte in erster Linie beim Architekturen und in zweiter beim Entwickler liegen&lt;br /&gt;
; Vermischung von Authentisierung und Session Management &lt;br /&gt;
&lt;br /&gt;
Bei diesem Baustein findet eine ziemlich große Vermischung von Anforderung an die Authentisierung und das erst in &amp;quot;M 4.WA06 Session-Management bei Web- Anwendungen&amp;quot; behandelte Session Management statt (Beispiel: &amp;quot;Remember-Me-Funktion&amp;quot;). Beide Themen sollten sinnvollerweise getrennt voneinander zu betrachten und aufeinander zu beziehen.&lt;br /&gt;
&lt;br /&gt;
; Verwendung von Frameworks&lt;br /&gt;
&lt;br /&gt;
Die Anforderung ist schon ein wenig eingeschränkt. Besser passt hier denke ich die &amp;quot;Abbildung der Authentisierung über Standardkomponenten (Bibliotheken oder Frameworks)&amp;quot;. &lt;br /&gt;
&lt;br /&gt;
; Remember-Me-Funktion&lt;br /&gt;
&lt;br /&gt;
Siehe oben, gehört zum Session Management. Das ließt sich im übrigen so, als ob eine Webanwendung Credentials auf dem Client abhängt. &lt;br /&gt;
&lt;br /&gt;
; Grenzwerte für gescheiterte Anmeldeversuche&lt;br /&gt;
&lt;br /&gt;
Diese Empfehlung ist allgemein falsch, da sie sehr von der betrachteten Anwendung abhängt. Besser wäre hier allgemein von Mechanismen zur Verhinderung von automatisierten Angriffen zu sprechen (Anti-Automatisierung). &lt;br /&gt;
&lt;br /&gt;
Etwa umsetzbar durch&lt;br /&gt;
* Sperrung nach x Anmeldeversuchen&lt;br /&gt;
* Throttling&lt;br /&gt;
* Captchas&lt;br /&gt;
* Sicherheitsfragen&lt;br /&gt;
&lt;br /&gt;
Das allgemeine Sperren kann leicht für das gezielte Aussperren von Benutzern (User Lockout) verwendet werden. Was etwa bei Trading-Anwendungen nicht funktioniert.&lt;br /&gt;
&lt;br /&gt;
; Automatisiertes Zurücksetzen von Authentisierungsdaten&lt;br /&gt;
&lt;br /&gt;
Würde ich besser als &amp;quot;Passwort-Reset&amp;quot; bezeichnen.&lt;br /&gt;
&lt;br /&gt;
Weiterhin fehlt hier der Hinweis, dass statt ein automatisiertes Zurücksetzen, ein Mechanismus zu empfehlen ist, bei dem über ein hinterlegtes Sicherheitsmerkmal (Handy-Nummer oder E-Mail-Adresse) vom Benutzer zunächst eine Verifikation durchgeführt wird. Beispielsweise durch einen erhaltenen Link. Erst dann darf eine Änderung des Passwortes durch den Benutzer erfolgen.&lt;br /&gt;
&lt;br /&gt;
; Registrierung nicht behandelt&lt;br /&gt;
&lt;br /&gt;
Es existiert hier kein Punkt, der die sichere Implementierung von Benutzerregistrierungen behandelt.&lt;br /&gt;
&lt;br /&gt;
; Verweis auf Externalisierung fehlt.&lt;br /&gt;
&lt;br /&gt;
Statt die Authentisierung selbst durchzuführen kann eine Anwendung hierzu auf eine externe Komponente (Beispiel: SiteMinder oder Kerberos) zurückgreifen.&lt;br /&gt;
&lt;br /&gt;
; Verweis auf Behandlung von Credentials fehlt&lt;br /&gt;
&lt;br /&gt;
Auch wenn das  in &amp;quot;M 4.WA15 Schutz vertraulicher Daten bei Web- Anwendungen&amp;quot; ausführlich behandelt wird, sollte in diesem Baustein bereits auf den angemessenen Schutz von Authentisierungsdaten bei Übertragung und Speicherung hingewiesen werden.&lt;br /&gt;
&lt;br /&gt;
== M 4.WA05Umfassende Ein- und Ausgabevalidierung bei Web-Anwedungen (Markus) ==&lt;br /&gt;
; &amp;quot;Ablehnung der Daten im&lt;br /&gt;
Fehlerfall&amp;quot; --&amp;gt; Hier könnte man noch auf Tar-Pits eingehen - nur ein Vorschlag.&lt;br /&gt;
&lt;br /&gt;
== M 4.WA06Session-Management bei Web-Anwendungen (Markus, Matthias) ==&lt;br /&gt;
; &amp;quot;Übertragung der SessionID mittels GETRequest&amp;quot; --&amp;gt; Hier fehlt der Hinweis, dass die Lebensdauer dieser SessionIds kurz/kürzer sein muss, als im Falle der Speicherung im Cookie.&lt;br /&gt;
&lt;br /&gt;
([[User:Mrohr|Matthias]]) Die Anmerkung verstehe ich ehrlich gesagt ueberhaupt nicht, zumal das SM haeufig transparent zwischen Cookies und URL Rewriting wechselt. Wozu soll das gut sein? Wie soll das geschehen? Idealerweise sollte die Session ID niemals in die URL geschrieben werden, das sollte eigentlich genuegen.&lt;br /&gt;
&lt;br /&gt;
; &amp;quot;Verschlüsselte Übertragung von SessionIDs&amp;quot; --&amp;gt; Hier fehlt der Hinweis auf den Beast-Exploit. TLS Version &amp;gt; 1.0 verwenden!&lt;br /&gt;
&lt;br /&gt;
([[User:Mrohr|Matthias]]) Solange hier nicht auf eine explizite TLS Version eingegangen wird, sollte meiner grossen Ueberzeugung nach hier auch auf keine Exploits etc. eingagen werden, das gehoert an andere Stelle.&lt;br /&gt;
&lt;br /&gt;
; ([[User:Mrohr|Matthias]]) Weiterhin:&lt;br /&gt;
&lt;br /&gt;
 Es dürfen keine extern bekannten oder erratbaren Daten (z. B. IP-Adresse, Uhrzeit) in die Berechnung der SessionID einfließen.&lt;br /&gt;
&lt;br /&gt;
Die Aussage finde ich etwas problematisch, wichtiger ist, dass die Entropie ausreichend hoch ist. Haeufig werden etwa IPs von Load Balancern in die Session ID hineingeschrieben.&lt;br /&gt;
&lt;br /&gt;
 - Domain (z. B. webapp.domain.tld),&lt;br /&gt;
 - Path (z. B. /webapp/),&lt;br /&gt;
 - Secure und&lt;br /&gt;
 - HttpOnly.Beschränkte Sitzungsdauer&lt;br /&gt;
&lt;br /&gt;
Das sieht so aus, als ob es empfehlenswert ist, das Domain-Tag zu verwenden, das ist es sicherlich nicht. Was macht hier der Hinweis &amp;quot;Beschraenke Sizuungsdauer&amp;quot;?&lt;br /&gt;
&lt;br /&gt;
== M 4.WA07Fehlerbehandlung durch Web-Anwendungen (Markus) ==&lt;br /&gt;
; Konsistenter / Inkonsistener Zustand einer Webanwendung und der daraus resultierende Datenverlust: Hier fehlen mir die Punkte: DOS, Priv.Escalation, CodeExecution.&lt;br /&gt;
; Vermeidung vertraulicher Informationen in Fehlermeldungen --&amp;gt; Fehlermeldungen sollten ebenfalls eine Systeminformationen preisgeben (Softwareversion, Patchlevel, etc.)&lt;br /&gt;
; Abbruch des Vorgangs nach Auftreten eines Fehlers --&amp;gt; TarPits scheinen dem Autor umbekannt zu sein :)&lt;br /&gt;
; &amp;quot;Werden Fehler möglichst von der gleichen Komponente behandelt, in der&lt;br /&gt;
der Fehler aufgetreten ist?&amp;quot; --&amp;gt; Das &amp;quot;möglichst&amp;quot; sollten wir streichen.&lt;br /&gt;
&lt;br /&gt;
== M 4.WA08Schutz vor automatisierter Nutzung von Web-Anwendungen (Markus) ==&lt;br /&gt;
; &amp;quot;Brute-Force-&lt;br /&gt;
Angriffe (z. B. Erraten von Zugangsdaten) und Enumeration-Angriffe (z. B.&lt;br /&gt;
automatisiertes Ermitteln von gültigen Login-Namen)&amp;quot; -- die Beispiele sind identisch - besser Beispiele suchen, z.b. URL-Enumeration&lt;br /&gt;
&lt;br /&gt;
([[User:Mrohr|Matthias]]) Das sehe ich anders. Brute-Forcing bezieht auf Passwoerter und Enumeration auf Benutzernamen, etwa durchs hochzaehlen. Auch wenn ich zustimmen muss, dass die nicht ganz gluecklich gewaehlt wurden. Stann &amp;quot;Erraten von Zugangsdaten&amp;quot; wuerde ich besser von &amp;quot;Erraten von Passwoertern&amp;quot; sprechen. Oder wie gesagt gleich auch auf andere Beispiele (etwa Object ID Enumeration) beziehen.&lt;br /&gt;
&lt;br /&gt;
== M 4.WA11Sichere Konfiguration von Web-Anwendungen (Markus) ==&lt;br /&gt;
; &amp;quot;Sicherer Umgang mit TLS/SSL&amp;quot; -- Hier fehlt der Hinweis, dass TLS-1.0 gebrochen ist&lt;br /&gt;
; &amp;quot;Zeichenkodierungskonfiguration&amp;quot; -- Ein Whitelisting abhängig von der Encodierung wäre ein weiterer Vorschlag&lt;br /&gt;
; &amp;quot;Restriktive Dateisystemberechtigungen&amp;quot; -- auch wenn es ein klassiker ist - der AS sollte ebenfalls mit von einem eingeschränkten Nutzer gestartet werden und nicht als root&lt;br /&gt;
; Administration Consolen:zur Ergänzen: Wenn diese nicht benötigit, sollten derartige Applikationen nicht deployed werden, unabhängig von möglichen Zugangsbeschränkungen.&lt;br /&gt;
&lt;br /&gt;
([[User:Mrohr|Matthias]]) Sorry, meiner Meinung nach hat die Bewertung von Kryptoverfahren hier abslut nichts zu suchen.Stattdessen sollte hier auf den entsprechenden [https://www.bsi.bund.de/ContentBSI/Publikationen/TechnischeRichtlinien/tr02102/index_htm.html Empfehlung des BSI] verwiesen werden, auch wenn dieses Dokument derzeit noch etwas outdated zu sein scheint.&lt;br /&gt;
&lt;br /&gt;
== M 4.WA13Kontrolliertes Einbinden von Daten und Inhalten bei Web-Anwendungen (Markus) ==&lt;br /&gt;
; Datei-Upload: Bei einem Upload werden Dateien durchaus in TEMP-Verzeichnissen gesammelt und danach weiterverarbeitet. Diese TEMP-Verzeichnisse sind im Rahmen einer Sicherheitsanalyse zu betrachten -&amp;gt; Möglicher (unbefugter) Zugriff auf weitere Uploads&lt;br /&gt;
; Upload komprimierter Dateien / großer Dateien birgt die Gefahr von DOS Angriffen&lt;br /&gt;
; Upload von Dateien kann bei weiterem Parsing zu Speicherengpässen führen --&amp;gt; DOS-Angriffe auf Thread-Local etc.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== M 4.WA14Restriktive Herausgabe sicherheitsrelevanter Informationen bei Web-Anwendungen (Markus, Matthias) ==&lt;br /&gt;
OK - Keine Anmerkungen von mir.&lt;br /&gt;
&lt;br /&gt;
[[User:Mrohr|Matthias]]) Von mir schon;)&lt;br /&gt;
&lt;br /&gt;
; Vermeidung von Kommentaren in ausgelieferten Webseiten&lt;br /&gt;
&lt;br /&gt;
Das ist leider total falsch, wir brauchen haeufig Komentare, aus Kompatibilitaetsgruenden. So wird etwa der JavaScript-Block haeufig auskommentiert.&lt;br /&gt;
&lt;br /&gt;
Wurde stattessen besser von sicherheitsrelevanten Kommentaren sprechen und als Massnahme generell Entwicklerkommentare ueber Sprachkonstruktre (etwa JSP) durchzufuehren.&lt;br /&gt;
&lt;br /&gt;
; Löschen nicht benötigter Dateien&lt;br /&gt;
&lt;br /&gt;
Hier wurde ich ggf. Dateien von Versionisierungstools (etwa Subversion) erwaehnen, das sehen wir schon recht haeufig.&lt;br /&gt;
&lt;br /&gt;
Statt Dateien einfach nur zu loeschen (was in der Praxis haeufig nicht so einfach ist) bietet es sich zudem an, den Zugriff auf bestimmte Dateien oder Dateitypen generell zu sperren, etwa mittels ACL im Apache.&lt;br /&gt;
&lt;br /&gt;
; Gibt die Web-Anwendung ausschließlich neutrale Fehlermeldungen aus und sind diese im Quelltext identisch? {E: C}&lt;br /&gt;
&lt;br /&gt;
Persoenlich verstehe ich das nicht. Wieseo neutrale Fehlermeldung? Das macht fuer mich nur beim Login Sin. Hierzu existiert in dem Text auch keinerlei Bezug. Ich wuerde das daher besser entfernen und im Rahmen der Fehlerbehandlung diskutieren. Mindestens sollte hier jedoch besser von &amp;quot;sicherheitsunbedentlichen Fehlermeldungen&amp;quot; oder so gesprochen werden.&lt;br /&gt;
&lt;br /&gt;
; Wird der Referrer bei Verlassen der Web-Anwendung (z. B. durch einen Link auf eine externe Seite) gefiltert?&lt;br /&gt;
&lt;br /&gt;
Diesen Punkt sehe ich als sehr Fallabhengig an. Es kann fuer seiten durchaus wuenschenswert sein, dass der Referer weitergegeben wird. Der Referer sollte natuerlich keine sensiblen Informationen enthalten, was ja an anderer Stelle (etwa Session Management) vorgegeben wird bzw. gegeben werden sollte.&lt;br /&gt;
&lt;br /&gt;
== M 4.WA15Schutz vertraulicher Daten bei Web-Anwendungen (Markus, Matthias) ==&lt;br /&gt;
; Sichere kryptographische Algorithmen:&lt;br /&gt;
 Hier fehlt mir eine Liste der aktuelle als sicher geltenden Verfahren.&lt;br /&gt;
([[User:Mrohr|Matthias]]) Am Besten Referenz auf [https://www.bsi.bund.de/ContentBSI/Publikationen/TechnischeRichtlinien/tr02102/index_htm.html https://www.bsi.bund.de/ContentBSI/Publikationen/TechnischeRichtlinien/tr02102/index_htm.html]&lt;br /&gt;
&lt;br /&gt;
; Schlüssel&lt;br /&gt;
 Das die Schlüssel bestimmten Formaten entsprechen müssen ist ok - aber das Schlüsselmanagement wird gar nicht besprochen?&lt;br /&gt;
; Schutz der Daten im Browsercache&lt;br /&gt;
 Skripte und Browserplugins können ebenfalls auf den Browsercache zugreifen - diese werden hier nicht erwähnt.&lt;br /&gt;
; Maskierung von Passwörtern &lt;br /&gt;
 Dies schützt bei der Eingabe nur vor ShoulderSurfing nicht vor Skripten oder Plugins die diese an andere Server posten.&lt;br /&gt;
; Sicherung von Zugangsdaten:&lt;br /&gt;
 Zugangsdaten in einer Datei abzulegen - wenn auch ausserhalb des WebRoots ist keine gute Idee.&lt;br /&gt;
([[User:Mrohr|Matthias]]) Es ist sicher nicht die schoenste Variante, es laesst sich aber nunmal in vielen Faellen nicht vermeiden. Deshalb fordert der [http://code.google.com/p/owasp-asvs/wiki/Verification_V2 ASVS] hier etwa auch nicht mehr. Fuer den hier angestreben Grundschutz sollte das meiner Meinung nach ausreichen.&lt;br /&gt;
; Schutz von Quelltexten:&lt;br /&gt;
 Hier würde ich property files mit aufnehmen. der hinweis auf web-inf/classes fehlt - warum?&lt;br /&gt;
 Bei include-befehlen sind die pfadangaben zu überdenken.&lt;br /&gt;
([[User:Mrohr|Matthias]]) Wuerde property Dateien allgemein den Konfigurationsdateien zuordnen. Der Begriff &amp;quot;Einzubindende Dateien&amp;quot; ist mir allrdings Neu&lt;br /&gt;
&lt;br /&gt;
([[User:Mrohr|Matthias]]) Weiterhin, fehlt ein genereller Bezug auf HTML 5 WebStorage, LSOs etc. Zumindest in abstrakter Form, so dass diese dadurch indirekt addresiert werden. Egal, in dem relevanten Punkt will der Autor meiner Meinung nach nur einige Beispiele nennen, das sollte keinen Anspruch auf Vollsteandigkeit haben muessen.&lt;br /&gt;
&lt;br /&gt;
== M 4.WA16Zugriffskontrolle bei Web-Anwendungen (Markus) ==&lt;br /&gt;
; Zugriffskontrolle via Frameworks:&lt;br /&gt;
 Dieser Punkt (Frameworks) wird nur in einem Satz erwähnt. Es werden keine Bespiele gegeben - Das ist zu wenig.&lt;br /&gt;
 Es müssen alle Zugriffe geschützt werden. Eine Protokollierung aller Zugriffe mit den nötigen Informationen ist ebenfalls empfehlenswert.&lt;br /&gt;
; Datei Upload:&lt;br /&gt;
 Die Gefahr eines DOS wird hier nicht erwähnt.&lt;br /&gt;
&lt;br /&gt;
== M 4.WA19Verhinderung von Cross-Site Request Forgery (CSRF, XSRF) (Markus, Matthias) ==&lt;br /&gt;
; Verantwortliche: &lt;br /&gt;
 Entwickler und Admins!&lt;br /&gt;
([[User:Mrohr|Matthias]]) Korrekt, wobei auch in der Reihenfolge&lt;br /&gt;
&lt;br /&gt;
; Anti-CSRF-Token in hidden fields:&lt;br /&gt;
 Das ist keine gute Idee. Ich würde das streichen!&lt;br /&gt;
&lt;br /&gt;
([[User:Mrohr|Matthias]]) Watt? Anti-CSRF-Tokens in Hidden Fields sind die Standard-Massnahme. Wie denn sonst? Bitte nicht streichen!!! &lt;br /&gt;
&lt;br /&gt;
([[User:Mrohr|Matthias]]) Die Technik bei der die Session ID als Anti-CSRF-Token verwendet wird, wird als Double-Cookie Submit bezeichnet, das sollte hier referenziert werden.&lt;br /&gt;
&lt;br /&gt;
; Umgehung von Schutzmechanismen:&lt;br /&gt;
 Man in the middle hat keinen direkten Bezug zu CSRF! Das würde ich streichen.&lt;br /&gt;
([[User:Mrohr|Matthias]]) Der Hinweis ist korrekt. Wovon der Autor hier spricht ist Session Replay nicht CSRF.&lt;br /&gt;
&lt;br /&gt;
; Frameworks:&lt;br /&gt;
 Gute Idee - aber es gibt auch Features in den ApplicationServern die CSRF unterbinden - warum wird das nicht besprochen?&lt;br /&gt;
&lt;br /&gt;
([[User:Mrohr|Matthias]]) Sehe ich persoenlich nicht so, da CSRF primaer ein Applikations-Fehler ist, und auch in der Applikation und nicht im Environment (AppServer) geloest werden sollte. Auch wenn das manchmal ggf. die einzig machbare Loesung darstellt.&lt;br /&gt;
&lt;br /&gt;
([[User:Mrohr|Matthias]]) Was generell fehlt, ist ein Hinweis darauf, dass schreibende Requests generell per HTTP Post abgewickelt werden sollten, da HTTP Get keine &amp;quot;Safe Method&amp;quot;  (siehe HTTP 1.1, RFC 2616) ist.&lt;br /&gt;
&lt;br /&gt;
== M 4.WA20Sicherer Entwurf der Logik von Web-Anwendungen (Markus, Matthias) ==&lt;br /&gt;
; Rollbacks:&lt;br /&gt;
 Tritt ein Fehler auf muss die Applikation einen konsistenten Datenstand zurück lassen. Das wird hier nicht erwähnt.&lt;br /&gt;
; RaceConditions:&lt;br /&gt;
 Fehler in der Geschäftslogik können auch durch zwei gleichzeitige Sessions auf einer Webapplikation auftreten - das wird hier nicht besprochen.&lt;br /&gt;
&lt;br /&gt;
([[User:Mrohr|Matthias]]) Ehrlich gesagt kann ich nicht ganz nachvollziehen, was der Sichere Entwurf der Logik von Web-Anwendungen mit dem Verzicht auf aktive Inhalte zu tun hat. Unabhaengig davon sollte man solche unsinnigen Aussagen im Jahre 2012 nicht mehr treffen, damit macht man sicht nur laecherlich.&lt;br /&gt;
&lt;br /&gt;
Nichts desto trotz, was hier als &amp;quot;echte&amp;quot; Massnahmen erwaehnt werden sollte sind:&lt;br /&gt;
* Verhinderung von Race Conditions, aber nicht nur durch Concurrent Sessions sondern auch durch Singletons (TOCTOU)&lt;br /&gt;
* Enforcements von Workflows, etwa durch die Verwendung von State Machines oder Request Tokens (auch bekannt als Site Usage Enforcement)&lt;br /&gt;
* Fail Securely (bzw. Verweis)&lt;br /&gt;
* Serverseitige Abbildung der Anwendungslogik, zumindest wenn diese sicherheitsrelevant sit&lt;br /&gt;
&lt;br /&gt;
== M 4.WA22Verhinderung der Blockade von Ressourcen (DoS) bei Web-Anwendungen (Markus, Matthias) ==&lt;br /&gt;
; Datenspeicher:&lt;br /&gt;
 Neben dem Datenspeicher sollte auch der RAM-Verbrauch pro Thread der Applikation limitiert werden.&lt;br /&gt;
([[User:Mrohr|Matthias]]) Stimmt, ich wuerde hier sogar allgemein von Ressourcenverbrauch am Beispiel RAM und Datenspeicher, sprechen&lt;br /&gt;
&lt;br /&gt;
; Voraggregation von Daten / Caching&lt;br /&gt;
 Dieser Punkt fehlt: Stark ressourcen belastende Anfragen können auch in Lastarmen Zeiten vorberechnet werden.&lt;br /&gt;
([[User:Mrohr|Matthias]]) Stimmt, koennte noch als Anmerkung bei &amp;quot;Cachen von Anfragen&amp;quot; hinzugefuegt werden&lt;br /&gt;
&lt;br /&gt;
([[User:Mrohr|Matthias]]) Noch drei Anmerkugnen&lt;br /&gt;
&lt;br /&gt;
; Prueffrage: &amp;quot;Wird ein möglicher Überlauf von Protokolldaten... verhindert&amp;quot;&lt;br /&gt;
&lt;br /&gt;
Ist eine etwas eingeschrankte Sicht. Wurde hier eher von Ueberlauf von Speicherplaz zu Beispiel im Rahmen der Protokollierung sprechen&lt;br /&gt;
&lt;br /&gt;
; Durchfuehrung von Lasttests zur Identifikation ressourcenintensiver Operationen&lt;br /&gt;
&lt;br /&gt;
Der Hinweis waere ggf. erwahnenswert&lt;br /&gt;
&lt;br /&gt;
; Hinweis auf nicht-angemeldeten Bereich&lt;br /&gt;
&lt;br /&gt;
Das Risiko durch rechenintensive Operationen durch einen DoS betroffen zu sein ist natuerlich fuer gewoehlich um so groesser, wenn diese im anonymen Bereich angeboten wird. Der Hinweis ware ggf. ebenfalls hilfreich.&lt;br /&gt;
&lt;br /&gt;
== M 4.WA25Verhinderung von Clickjacking (Markus) ==&lt;br /&gt;
Ok - das passt soweit.&lt;br /&gt;
&lt;br /&gt;
([[User:Mrohr|Matthias]]) Stimmt, auch wenn ich &amp;quot;Angreifer&amp;quot; in dem Beispiel eher als &amp;quot;Webseitenbetreiber&amp;quot; beschreiebn wuerde, da er nicht wirklich aktiv einen Angriff durchfuehrt, oder? Bitte nochmal ueber meinen Hinweis aus G 5.WA18 nachdenken: Ist Clickjacking-Schutz tatsaechlich Grundschutz? Ich bin mir da selber nicht so wirklich sicher.&lt;br /&gt;
&lt;br /&gt;
== M 5.WA21Sichere Anbindung von Hintergrundsystemen an Web-Anwendungen (Markus) ==&lt;br /&gt;
; Verantwortliche:&lt;br /&gt;
 Architekten fehlen. Entwickler müssen die Views umsetzen und die Datasource entsprechend einbinden - die fehlen hier ebenfalls.&lt;br /&gt;
; DirectorySystem Beispiel:&lt;br /&gt;
 Das DirectorySystem wird in dem angegeben Beispiel zum Single Point of Failure - das wird verschwiegen.&lt;br /&gt;
; Firewalls:&lt;br /&gt;
 Das sind fachlich-blinde Systeme. Was ist mit WAFs / IDS / IPS etc.?&lt;br /&gt;
([[User:Mrohr|Matthias]]) Stimmt, das hat in diesem Baustein nichts zu suchen&lt;br /&gt;
&lt;br /&gt;
([[User:Mrohr|Matthias]]) Noch ein weiterer Punkt von mir&lt;br /&gt;
&lt;br /&gt;
; Typische Hintergrundsysteme&lt;br /&gt;
Hier fehlt irgendwie &amp;quot;Middleware&amp;quot;, die ist denke ich nicht immer Legacy&lt;br /&gt;
&lt;br /&gt;
== M 5.WA23Systemarchitektur einer Web-Anwendung (Markus) ==&lt;br /&gt;
; Verantwortliche:&lt;br /&gt;
Auch hier fehlend wieder die Architekten. &lt;br /&gt;
; Virtualisierung:&lt;br /&gt;
Virtualisierung bietet weitere Angriffsvektoren (z.B.: Hypervisor) die eine &amp;quot;Blech&amp;quot;Farm nicht bietet.&lt;/div&gt;</summary>
		<author><name>Mrohr</name></author>	</entry>

	<entry>
		<id>https://wiki.owasp.org/index.php?title=OWASP_Review_BSI_IT-Grundschutz_Baustein_Webanwendungen&amp;diff=130155</id>
		<title>OWASP Review BSI IT-Grundschutz Baustein Webanwendungen</title>
		<link rel="alternate" type="text/html" href="https://wiki.owasp.org/index.php?title=OWASP_Review_BSI_IT-Grundschutz_Baustein_Webanwendungen&amp;diff=130155"/>
				<updated>2012-05-21T11:21:14Z</updated>
		
		<summary type="html">&lt;p&gt;Mrohr: /* Kapitel-Review */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Category:OWASP_Project|OWASP Review BSI IT-Grundschutz Baustein Webanwendungen]]&lt;br /&gt;
==Mailing-List, Coordination and Contact==&lt;br /&gt;
If you want to become a part of the OWASP review team, please subscribe to the mailing list [https://lists.owasp.org/mailman/listinfo/bsi-webbaustein-review https://lists.owasp.org/mailman/listinfo/bsi-webbaustein-review]. It is not necessary to be a member to volunteer, of course :-)&lt;br /&gt;
&lt;br /&gt;
The contact the coordinating team please mail to [mailto:bsi-webbaustein@owasp.de bsi-webbaustein@owasp.de] or contact the project leader  [mailto:ralf.reinhardt@owasp.org Ralf] [[User:Ralf Reinhardt|Reinhardt]]&lt;br /&gt;
&lt;br /&gt;
This is a project of the [[Germany | OWASP German Chapter]].&lt;br /&gt;
&lt;br /&gt;
==Abstract==&lt;br /&gt;
Technical review of the module web application&lt;br /&gt;
(&amp;quot;Baustein Webanwendungen&amp;quot;) of the IT-baseline protection catalog (&amp;quot;IT&lt;br /&gt;
Grundschutz Katalog&amp;quot;) of the German Federal Office for Information&lt;br /&gt;
Security (&amp;quot;BSI&amp;quot;) from the OWASP's point of view.&lt;br /&gt;
&lt;br /&gt;
==Introduction==&lt;br /&gt;
The German &amp;quot;Federal Office for Information Security&amp;quot; (BSI), which is&lt;br /&gt;
comparable to departments focused on security in organizations like NIST&lt;br /&gt;
or CCTA, offers the IT Baseline Protection (&amp;quot;IT-Grundschutz&amp;quot;) for public&lt;br /&gt;
usage, which is based on ISO/IEC 27001. The IT Baseline Protection&lt;br /&gt;
include a catalog of approx. 80 &amp;quot;Bausteine&amp;quot; (building blocks). Those&lt;br /&gt;
blocks are dealing with one particular subject of IT security. They are&lt;br /&gt;
usually written in the German language and later translated to English.&lt;br /&gt;
They become the de facto standard for IT security and related&lt;br /&gt;
certifications in Germany after they are finally released.&lt;br /&gt;
&lt;br /&gt;
In January 2012 the draft of the block &amp;quot;Webanwendungen&amp;quot; (web&lt;br /&gt;
applications) was released with a request for comments. Since this is&lt;br /&gt;
the core expertise of OWASP we invited a delegate of the BSI to attend&lt;br /&gt;
the last chapter meeting of the German Chapter which took place in&lt;br /&gt;
Frankfurt / Main on the 3rd of February. The meeting's outcome was the&lt;br /&gt;
strong wish to perform a review of that very web application block as an&lt;br /&gt;
OWASP project. This project will help to expand the visibility of OWASP&lt;br /&gt;
in the German IT security landscape broadly.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Roadmap==&lt;br /&gt;
* Time is running out, so it's just: &amp;lt;b&amp;gt;Review!&amp;lt;/b&amp;gt;&lt;br /&gt;
* Details  [[Talk:OWASP_Review_BSI_IT-Grundschutz_Baustein_Webanwendungen| see &amp;quot;Discussion&amp;quot;]]&lt;br /&gt;
&amp;lt;!--&lt;br /&gt;
* Building a coordinating team&lt;br /&gt;
* &amp;lt;b&amp;gt;Defining the review rules&amp;lt;/b&amp;gt; [[Talk:OWASP_Review_BSI_IT-Grundschutz_Baustein_Webanwendungen| see &amp;quot;Discussion&amp;quot;]]   &lt;br /&gt;
* Reading the BSI documents&lt;br /&gt;
* Collecting comments from the community familiar with the BSI documents&lt;br /&gt;
* Creating a common understanding&lt;br /&gt;
* Writing a review with OWASP glasses &lt;br /&gt;
* Review of OWASP's review itself&lt;br /&gt;
* Releasing the result(s)&lt;br /&gt;
--&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Deadline==&lt;br /&gt;
06/01/2012, in German: '''01.06.2012'''&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Relevant links and general information==&lt;br /&gt;
==== Document download ====&lt;br /&gt;
&amp;quot;Entwurf Baustein Webanwendungen&amp;quot; of the BSI (in German language) directly: &lt;br /&gt;
[https://www.bsi.bund.de/SharedDocs/Downloads/DE/BSI/Grundschutz/Download/Vorabversionen/Baustein_Webanwendungen_Entwurf.zip https://www.bsi.bund.de/SharedDocs/Downloads/DE/BSI/Grundschutz/Download/Vorabversionen/Baustein_Webanwendungen_Entwurf.zip]&lt;br /&gt;
&lt;br /&gt;
General download section of the BSI:&lt;br /&gt;
[https://www.bsi.bund.de/ContentBSI/grundschutz/kataloge/download/download.html https://www.bsi.bund.de/ContentBSI/grundschutz/kataloge/download/download.html]&lt;br /&gt;
&lt;br /&gt;
==== Some further information about &amp;quot;BSI&amp;quot; and &amp;quot;Grundschutz&amp;quot;====&lt;br /&gt;
The BSI about itself: [https://www.bsi.bund.de/EN/Home/home_node.html https://www.bsi.bund.de/EN/Home/home_node.html ]&lt;br /&gt;
&lt;br /&gt;
Wikipedia about BSI: [http://en.wikipedia.org/wiki/Bundesamt_f%C3%BCr_Sicherheit_in_der_Informationstechnik http://en.wikipedia.org/wiki/Bundesamt_f%C3%BCr_Sicherheit_in_der_Informationstechnik]&lt;br /&gt;
&lt;br /&gt;
Wikipedia about &amp;quot;IT-Grundschutz Katalog&amp;quot;: [http://en.wikipedia.org/wiki/IT_Baseline_Protection_Catalogs http://en.wikipedia.org/wiki/IT_Baseline_Protection_Catalogs]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Actual Work in Progress==&lt;br /&gt;
&lt;br /&gt;
===Allgemeine Punkte===&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;text-decoration: underline&amp;quot;&amp;gt;[[OWASP_Review_BSI_IT-Grundschutz_Baustein_Webanwendungen/Allgemeine_Punkte|Allgemeine Punkte]]&amp;lt;/span&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
===Kapitel-Review===&lt;br /&gt;
&lt;br /&gt;
Hier eine &amp;lt;u&amp;gt;Auflistung der einzelnen Kapitel / Teile / Review-TODOs&amp;lt;/u&amp;gt; - wer einen Teil übernehmen möchte schreibt sich bitte einfach ein (im Feld &amp;lt;u&amp;gt;Person&amp;lt;/u&amp;gt;).&lt;br /&gt;
&lt;br /&gt;
Im &amp;lt;u&amp;gt;Kommentarfeld&amp;lt;/u&amp;gt; bitte angeben, bis wann ihr plant, den Punkt fertig bearbeitet zu haben (und natürlich sonstige notwendigen Kommentare). Das Kommentarfeld eignet sich auch, um anzugeben, wer den peer review für diesen Teil macht (vgl. Status &amp;quot;in Diskussion&amp;quot;).  &lt;br /&gt;
&lt;br /&gt;
Unter &amp;lt;u&amp;gt;Status&amp;lt;/u&amp;gt; könnt Ihr das folgende angeben:&lt;br /&gt;
* &amp;lt;b&amp;gt;offen&amp;lt;/b&amp;gt; (dieser Teil ist noch unbearbeitet)&lt;br /&gt;
* &amp;lt;b&amp;gt;in Arbeit&amp;lt;/b&amp;gt; (dieser Teil wird aktuell bearbeitet)&lt;br /&gt;
* &amp;lt;b&amp;gt;in Diskussion&amp;lt;/b&amp;gt; (Arbeit des initialen Reviewers abgeschlossen; Kommentierung / peer review durch andere wird durchgeführt)&lt;br /&gt;
* &amp;lt;b&amp;gt;geschlossen&amp;lt;/b&amp;gt; (die Kommentierung dieses Teils ist abgeschlossen)&lt;br /&gt;
* &amp;lt;b&amp;gt;übernommen&amp;lt;/b&amp;gt; (dieser Teil wurde in das finale Word-Dokument übernommen)&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Kapitel / Teil&lt;br /&gt;
! Person&lt;br /&gt;
! Status&lt;br /&gt;
! Kommentar&lt;br /&gt;
|-&lt;br /&gt;
| B 5.XX Web-Anwendungen, Beschreibung und Abgrenzung (inkl. Seite 5)&lt;br /&gt;
| Markus&lt;br /&gt;
| in Diskussion&lt;br /&gt;
| keiner&lt;br /&gt;
|-&lt;br /&gt;
&amp;lt;!--| G 2.1 Fehlende oder unzureichende Regelungen&lt;br /&gt;
| unbekannt&lt;br /&gt;
| offen&lt;br /&gt;
| keiner&lt;br /&gt;
|- &lt;br /&gt;
| G 2.4 Unzureichende Kontrolle der Sicherheitsmaßnahmen&lt;br /&gt;
| unbekannt&lt;br /&gt;
| offen&lt;br /&gt;
| keiner&lt;br /&gt;
|-&lt;br /&gt;
| G 2.7 Unerlaubte Ausübung von Rechten&lt;br /&gt;
| unbekannt&lt;br /&gt;
| offen&lt;br /&gt;
| keiner&lt;br /&gt;
|-&lt;br /&gt;
| G 2.22 Fehlende Auswertung von Protokolldaten&lt;br /&gt;
| unbekannt&lt;br /&gt;
| offen&lt;br /&gt;
| keiner&lt;br /&gt;
|-&lt;br /&gt;
| G 2.27 Fehlende oder unzureichende Dokumentation&lt;br /&gt;
| unbekannt&lt;br /&gt;
| offen&lt;br /&gt;
| keiner&lt;br /&gt;
|-&lt;br /&gt;
| G 2.67 Ungeeignete Verwaltung von Zugangs- und Zugriffsrechten&lt;br /&gt;
| unbekannt&lt;br /&gt;
| offen&lt;br /&gt;
| keiner&lt;br /&gt;
|-&lt;br /&gt;
| G 2.87 Verwendung unsicherer Protokolle in öffentlichen Netzen&lt;br /&gt;
| unbekannt&lt;br /&gt;
| offen&lt;br /&gt;
| keiner&lt;br /&gt;
|-&lt;br /&gt;
| G 2.103 Unzureichende Schulung der Mitarbeiter&lt;br /&gt;
| Matthias&lt;br /&gt;
| offen&lt;br /&gt;
| keiner&lt;br /&gt;
|- --&amp;gt;&lt;br /&gt;
| G 2.WA01 Mangelhafte Auswahl oder Konzeption von Web-Anwendungen&lt;br /&gt;
| Matthias&lt;br /&gt;
| In Diskussion&lt;br /&gt;
| keiner&lt;br /&gt;
|-&lt;br /&gt;
| G 2.WA02 Mängel bei der Entwicklung und der Erweiterung von Web-Anwendungen&lt;br /&gt;
| Matthias&lt;br /&gt;
| In Diskussion&lt;br /&gt;
| keiner&lt;br /&gt;
|-&lt;br /&gt;
| G 2.WA03 Unzureichender Schutz personenbezogener Daten bei Web-Anwendungen&lt;br /&gt;
| Matthias&lt;br /&gt;
| In Diskussion&lt;br /&gt;
| keiner&lt;br /&gt;
|-&lt;br /&gt;
&amp;lt;!-- | G 3.16 Fehlerhafte Administration von Zugangs- und Zugriffsrechten&lt;br /&gt;
| unbekannt&lt;br /&gt;
| offen&lt;br /&gt;
| keiner&lt;br /&gt;
|-&lt;br /&gt;
| G 3.38 Konfigurations- und Bedienungsfehler&lt;br /&gt;
| unbekannt&lt;br /&gt;
| offen&lt;br /&gt;
| keiner&lt;br /&gt;
|-&lt;br /&gt;
| G 3.43 Ungeeigneter Umgang mit Passwörtern&lt;br /&gt;
| unbekannt&lt;br /&gt;
| offen&lt;br /&gt;
| keiner&lt;br /&gt;
|-&lt;br /&gt;
| G 4.22 Software-Schwachstellen oder -Fehler&lt;br /&gt;
| unbekannt&lt;br /&gt;
| offen&lt;br /&gt;
| keiner&lt;br /&gt;
|- --&amp;gt;&lt;br /&gt;
| G 4.33 Unzureichende oder fehlende Authentisierung&lt;br /&gt;
| Matthias&lt;br /&gt;
| In Diskussion&lt;br /&gt;
| keiner&lt;br /&gt;
|-&lt;br /&gt;
&amp;lt;!-- | G 4.35 Unsichere kryptographische Algorithmen&lt;br /&gt;
| unbekannt&lt;br /&gt;
| offen&lt;br /&gt;
| keiner&lt;br /&gt;
|- --&amp;gt;&lt;br /&gt;
| G 4.WA04 Unzureichende Validierung von Ein- und Ausgabedaten bei Web-Anwendungen&lt;br /&gt;
| Matthias&lt;br /&gt;
| In Diskussion&lt;br /&gt;
| keiner&lt;br /&gt;
|-&lt;br /&gt;
| G 4.WA05 Fehlende oder mangelhafte Fehlerbehandlung durch Web-Anwendungen&lt;br /&gt;
| Tobias&lt;br /&gt;
| In Diskussion&lt;br /&gt;
| keiner&lt;br /&gt;
|-&lt;br /&gt;
| G 4.WA06 Unzureichende Nachvollziehbarkeit von sicherheitsrelevanten Ereignissen bei Web-Anwendungen&lt;br /&gt;
| Matthias&lt;br /&gt;
| In Diskussion&lt;br /&gt;
| keiner&lt;br /&gt;
|-&lt;br /&gt;
| G 4.WA07 Offenlegung von Informationen bei Web-Anwendungen&lt;br /&gt;
| Matthias&lt;br /&gt;
| in Diskussion&lt;br /&gt;
| keiner&lt;br /&gt;
|-&lt;br /&gt;
&amp;lt;!-- | G 5.18 Systematisches Ausprobieren von Passwörtern&lt;br /&gt;
| unbekannt&lt;br /&gt;
| offen&lt;br /&gt;
| keiner&lt;br /&gt;
|-&lt;br /&gt;
| G 5.19 Missbrauch von Benutzerrechten&lt;br /&gt;
| unbekannt&lt;br /&gt;
| offen&lt;br /&gt;
| keiner&lt;br /&gt;
|-&lt;br /&gt;
| G 5.20 Missbrauch von Administratorrechten&lt;br /&gt;
| unbekannt&lt;br /&gt;
| offen&lt;br /&gt;
| keiner&lt;br /&gt;
|-&lt;br /&gt;
| G 5.28 Verhinderung von Diensten&lt;br /&gt;
| unbekannt&lt;br /&gt;
| offen&lt;br /&gt;
| keiner&lt;br /&gt;
|-&lt;br /&gt;
| G 5.87 Web-Spoofing&lt;br /&gt;
| unbekannt&lt;br /&gt;
| offen&lt;br /&gt;
| keiner&lt;br /&gt;
|- --&amp;gt;&lt;br /&gt;
| G 5.131 SQL-Injection&lt;br /&gt;
| Ralf&lt;br /&gt;
| in Arbeit&lt;br /&gt;
| keiner&lt;br /&gt;
|-&lt;br /&gt;
| G 5.WA08 Unberechtigter Zugriff auf oder Manipulation von Daten bei Web-Anwendungen&lt;br /&gt;
| unbekannt&lt;br /&gt;
| &amp;lt;b&amp;gt;offen&amp;lt;/b&amp;gt;&lt;br /&gt;
| keiner, Seite 17&lt;br /&gt;
|-&lt;br /&gt;
| G 5.WA09 Missbrauch einer Web-Anwendung durch automatisierte Nutzung&lt;br /&gt;
| unbekannt&lt;br /&gt;
| &amp;lt;b&amp;gt;offen&amp;lt;/b&amp;gt;&lt;br /&gt;
| keiner, Seite 18&lt;br /&gt;
|-&lt;br /&gt;
| G 5.WA10 Fehler in der Logik von Web-Anwendungen&lt;br /&gt;
| Ralf&lt;br /&gt;
| in Arbeit&lt;br /&gt;
| keiner&lt;br /&gt;
|-&lt;br /&gt;
| G 5.WA11 Umgehung clientseitig umgesetzter Sicherheitsfunktionen von Web-Anwendungen&lt;br /&gt;
| Ralf&lt;br /&gt;
| in Arbeit&lt;br /&gt;
| keiner&lt;br /&gt;
|-&lt;br /&gt;
| G 5.WA12 Unzureichendes Session-Management von Web-Anwendungen&lt;br /&gt;
| unbekannt&lt;br /&gt;
| &amp;lt;b&amp;gt;offen&amp;lt;/b&amp;gt;&lt;br /&gt;
| keiner, Seite 21&lt;br /&gt;
|-&lt;br /&gt;
| G 5.WA13 Cross-Site Scripting (XSS)&lt;br /&gt;
| Ralf&lt;br /&gt;
| in Arbeit&lt;br /&gt;
| keiner&lt;br /&gt;
|-&lt;br /&gt;
| G 5.WA14 Cross-Site Request Forgery (CSRF, XSRF)&lt;br /&gt;
| Matthias&lt;br /&gt;
| in Diskussion&lt;br /&gt;
| keiner&lt;br /&gt;
|-&lt;br /&gt;
| G 5.WA15 Umgehung der Autorisierung bei Web-Anwendungen&lt;br /&gt;
| unbekannt&lt;br /&gt;
| &amp;lt;b&amp;gt;offen&amp;lt;/b&amp;gt;&lt;br /&gt;
| keiner, Seite 25&lt;br /&gt;
|-&lt;br /&gt;
| G 5.WA16 Einbindung von fremden Daten und Schadcode bei Web-Anwendungen&lt;br /&gt;
| unbekannt&lt;br /&gt;
| &amp;lt;b&amp;gt;offen&amp;lt;/b&amp;gt;&lt;br /&gt;
| keiner, Seite 26 u. 27&lt;br /&gt;
|-&lt;br /&gt;
| G 5.WA17 Injection-Angriffe&lt;br /&gt;
| Ralf&lt;br /&gt;
| in Arbeit&lt;br /&gt;
| keiner&lt;br /&gt;
|-&lt;br /&gt;
| G 5.WA18 Clickjacking&lt;br /&gt;
| unbekannt&lt;br /&gt;
| &amp;lt;b&amp;gt;offen&amp;lt;/b&amp;gt;&lt;br /&gt;
| keiner, Seite 29&lt;br /&gt;
|-&lt;br /&gt;
&amp;lt;!--| M 2.1 (A) Festlegung von Verantwortlichkeiten und Regelungen&lt;br /&gt;
| unbekannt&lt;br /&gt;
| offen&lt;br /&gt;
| keiner&lt;br /&gt;
|-&lt;br /&gt;
| M 2.31 (C) Dokumentation der zugelassenen Benutzer und Rechteprofile&lt;br /&gt;
| unbekannt&lt;br /&gt;
| offen&lt;br /&gt;
| keiner&lt;br /&gt;
|-&lt;br /&gt;
| M 2.34 (A) Dokumentation der Veränderungen an einem bestehenden System&lt;br /&gt;
| unbekannt&lt;br /&gt;
| offen&lt;br /&gt;
| keiner&lt;br /&gt;
|-&lt;br /&gt;
| M 2.63 (A) Einrichten der Zugriffsrechte&lt;br /&gt;
| unbekannt&lt;br /&gt;
| offen&lt;br /&gt;
| keiner&lt;br /&gt;
|-&lt;br /&gt;
| M 2.64 (A) Kontrolle der Protokolldateien&lt;br /&gt;
| unbekannt&lt;br /&gt;
| offen&lt;br /&gt;
| keiner&lt;br /&gt;
|-&lt;br /&gt;
| M 2.110 (B) Datenschutzaspekte bei der Protokollierung&lt;br /&gt;
| unbekannt&lt;br /&gt;
| offen&lt;br /&gt;
| keiner&lt;br /&gt;
|-&lt;br /&gt;
| M 5.66 (Z) Verwendung von TLS/SSL&lt;br /&gt;
| unbekannt&lt;br /&gt;
| offen&lt;br /&gt;
| keiner&lt;br /&gt;
|- --&amp;gt;&lt;br /&gt;
| M 2.WA02 (B) Dokumentation der Architektur von Web-Anwendungen&lt;br /&gt;
| Matthias&lt;br /&gt;
| in Diskussion&lt;br /&gt;
| keiner&lt;br /&gt;
|-&lt;br /&gt;
| M 4.WA20 (A) Sicherer Entwurf der Logik von Web-Anwendungen&lt;br /&gt;
| Markus&lt;br /&gt;
| in Diskussion&lt;br /&gt;
| keiner&lt;br /&gt;
|-&lt;br /&gt;
| M 2.WA12 (B) Entwicklung und Erweiterung von Anwendungen&lt;br /&gt;
| Markus&lt;br /&gt;
| in Diskussion&lt;br /&gt;
| keiner&lt;br /&gt;
|-&lt;br /&gt;
| M 5.WA21 (A) Sichere Anbindung von Hintergrundsystemen an Web-Anwendungen&lt;br /&gt;
| Markus&lt;br /&gt;
| in Diskussion&lt;br /&gt;
| keiner&lt;br /&gt;
|-&lt;br /&gt;
| M 5.WA23 (A) Systemarchitektur einer Web-Anwendung&lt;br /&gt;
| Makrus&lt;br /&gt;
| in Diskussion&lt;br /&gt;
| keiner&lt;br /&gt;
|-&lt;br /&gt;
| M 2.WA24 (W) Web-Tracking&lt;br /&gt;
| Matthias&lt;br /&gt;
| in Diskussion&lt;br /&gt;
| keiner&lt;br /&gt;
|-&lt;br /&gt;
&amp;lt;!-- | M 4.176 (A) Auswahl einer Authentisierungsmethode für Webangebote&lt;br /&gt;
| unbekannt&lt;br /&gt;
| offen&lt;br /&gt;
| keiner&lt;br /&gt;
|-&lt;br /&gt;
| M 2.80 (A) Erstellung eines Anforderungskatalogs für Standardsoftware&lt;br /&gt;
| unbekannt&lt;br /&gt;
| offen&lt;br /&gt;
| keiner&lt;br /&gt;
|-&lt;br /&gt;
| M 2.62 (A) Software-Abnahme- und Freigabe-Verfahren&lt;br /&gt;
| Matthias&lt;br /&gt;
| offen&lt;br /&gt;
| keiner&lt;br /&gt;
|-&lt;br /&gt;
| M 2.363 (A) Schutz gegen SQL-Injection&lt;br /&gt;
| unbekannt&lt;br /&gt;
| offen&lt;br /&gt;
| keiner&lt;br /&gt;
|-&lt;br /&gt;
| M 3.5 (B) Schulung zu Sicherheitsmaßnahmen&lt;br /&gt;
| Matthias&lt;br /&gt;
| offen&lt;br /&gt;
| keiner&lt;br /&gt;
|- --&amp;gt;&lt;br /&gt;
| M 4.WA04 (A) Authentisierung bei Web-Anwendungen&lt;br /&gt;
| Matthias&lt;br /&gt;
| In Diskussion&lt;br /&gt;
| keiner&lt;br /&gt;
|-&lt;br /&gt;
| M 4.WA05 (A) Umfassende Ein- und Ausgabevalidierung bei Web-Anwendungen&lt;br /&gt;
| Markus&lt;br /&gt;
| in Diskussion&lt;br /&gt;
| keiner&lt;br /&gt;
|-&lt;br /&gt;
| M 4.WA06 (A) Session-Management bei Web-Anwendungen&lt;br /&gt;
| Markus&lt;br /&gt;
| in Diskussion&lt;br /&gt;
| keiner&lt;br /&gt;
|-&lt;br /&gt;
| M 4.WA07 (A) Fehlerbehandlung durch Web-Anwendungen&lt;br /&gt;
| Markus&lt;br /&gt;
| in Diskussion&lt;br /&gt;
| keiner&lt;br /&gt;
|-&lt;br /&gt;
| M 4.WA08 (B) Schutz vor automatisierter Nutzung von Web-Anwendungen&lt;br /&gt;
| Markus&lt;br /&gt;
| in Diskussion&lt;br /&gt;
| keiner&lt;br /&gt;
|-&lt;br /&gt;
| M 4.WA11 (A) Sichere Konfiguration von Web-Anwendungen&lt;br /&gt;
| Markus&lt;br /&gt;
| in Diskussion&lt;br /&gt;
| keiner&lt;br /&gt;
|-&lt;br /&gt;
| M 4.WA13 (A) Kontrolliertes Einbinden von Daten und Inhalten bei Web-Anwendungen&lt;br /&gt;
| Markus&lt;br /&gt;
| in Diskussion&lt;br /&gt;
| keiner&lt;br /&gt;
|-&lt;br /&gt;
| M 4.WA15 (A) Schutz vertraulicher Daten bei Web-Anwendungen&lt;br /&gt;
| Markus&lt;br /&gt;
| in Diskussion&lt;br /&gt;
| keiner&lt;br /&gt;
|-&lt;br /&gt;
| M 4.WA16 (A) Zugriffskontrolle bei Web-Anwendungen&lt;br /&gt;
| Markus&lt;br /&gt;
| in Diskussion&lt;br /&gt;
| keiner&lt;br /&gt;
|-&lt;br /&gt;
| M 4.WA19 (B) Verhinderung von Cross-Site Request Forgery (CSRF, XSRF)&lt;br /&gt;
| Markus&lt;br /&gt;
| in Diskussion&lt;br /&gt;
| keiner&lt;br /&gt;
|-&lt;br /&gt;
| M 4.WA22 (B) Verhinderung der Blockade von Ressourcen (DoS) bei Web-Anwendungen&lt;br /&gt;
| Markus&lt;br /&gt;
| In Diskussion&lt;br /&gt;
| keiner&lt;br /&gt;
|-&lt;br /&gt;
| M 4.WA25 (C) Verhinderung von Clickjacking&lt;br /&gt;
| Markus&lt;br /&gt;
| in Diskussion&lt;br /&gt;
| keiner&lt;br /&gt;
|-&lt;br /&gt;
&amp;lt;!-- | M 2.8 (A) Vergabe von Zugriffsrechten&lt;br /&gt;
| unbekannt&lt;br /&gt;
| offen&lt;br /&gt;
| keiner&lt;br /&gt;
|-&lt;br /&gt;
| M 2.35 (A) Informationsbeschaffung über Sicherheitslücken des Systems&lt;br /&gt;
| unbekannt&lt;br /&gt;
| offen&lt;br /&gt;
| keiner&lt;br /&gt;
|-&lt;br /&gt;
| M 2.273 (A) Zeitnahes Einspielen sicherheitsrelevanter Patches und Updates&lt;br /&gt;
| unbekannt&lt;br /&gt;
| offen&lt;br /&gt;
| keiner&lt;br /&gt;
|-&lt;br /&gt;
| M 4.78 (B) Sorgfältige Durchführung von Konfigurationsänderungen&lt;br /&gt;
| unbekannt&lt;br /&gt;
| offen&lt;br /&gt;
| keiner&lt;br /&gt;
|- --&amp;gt;&lt;br /&gt;
| M 4.WA09 (C) Protokollierung sicherheitsrelevanter Ereignisse von Web-Anwendungen&lt;br /&gt;
| unbekannt&lt;br /&gt;
| &amp;lt;b&amp;gt;offen&amp;lt;/b&amp;gt;&lt;br /&gt;
| keiner, Seite 56 u. 57 u. 58&lt;br /&gt;
|-&lt;br /&gt;
| M 4.WA14 (A) Restriktive Herausgabe sicherheitsrelevanter Informationen bei Web-Anwendungen&lt;br /&gt;
| Markus&lt;br /&gt;
| in Diskussion&lt;br /&gt;
| keiner&lt;br /&gt;
|-&lt;br /&gt;
| Dokument &amp;quot;Webanwendungen_Goldene Regeln.pdf&amp;quot;&lt;br /&gt;
| Matthias&lt;br /&gt;
| In Diskussion&lt;br /&gt;
| keiner&lt;br /&gt;
|-&lt;br /&gt;
| Dokument &amp;quot;Webanwendungen_Hilfsmittel.pdf&amp;quot;&lt;br /&gt;
| unbekannt&lt;br /&gt;
| &amp;lt;b&amp;gt;offen&amp;lt;/b&amp;gt;&lt;br /&gt;
| keiner, 3 Seiten&lt;br /&gt;
|-&lt;br /&gt;
| Dokument &amp;quot;Webanwendungen_Kreuzreferenztabelle.pdf&amp;quot;&lt;br /&gt;
| unbekannt&lt;br /&gt;
| &amp;lt;b&amp;gt;offen&amp;lt;/b&amp;gt;&lt;br /&gt;
| keiner, 2 Seiten&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
Weitere Informationen und die aktuellen Arbeitsstände gibt es unter [[Talk:OWASP_Review_BSI_IT-Grundschutz_Baustein_Webanwendungen| &amp;quot;Discussion&amp;quot;]].&lt;br /&gt;
&lt;br /&gt;
==Coordinating Team==&lt;br /&gt;
* Tobias Glemser&lt;br /&gt;
* Boris Hemkemeier&lt;br /&gt;
* Kai Jendrian&lt;br /&gt;
* Ralf Reinhardt&lt;br /&gt;
* Dirk Wetter&lt;br /&gt;
&lt;br /&gt;
==Project Contributors==&lt;br /&gt;
* Dennis Moers&lt;br /&gt;
* Markus Miedaner&lt;br /&gt;
* [[User:Mrohr|Matthias Rohr]]&lt;br /&gt;
* ''Your name here''&lt;br /&gt;
&lt;br /&gt;
==Project Licence==&lt;br /&gt;
Creative Commons Attribution ShareAlike 3.0&lt;/div&gt;</summary>
		<author><name>Mrohr</name></author>	</entry>

	<entry>
		<id>https://wiki.owasp.org/index.php?title=Talk:OWASP_Review_BSI_IT-Grundschutz_Baustein_Webanwendungen&amp;diff=130154</id>
		<title>Talk:OWASP Review BSI IT-Grundschutz Baustein Webanwendungen</title>
		<link rel="alternate" type="text/html" href="https://wiki.owasp.org/index.php?title=Talk:OWASP_Review_BSI_IT-Grundschutz_Baustein_Webanwendungen&amp;diff=130154"/>
				<updated>2012-05-21T11:20:34Z</updated>
		
		<summary type="html">&lt;p&gt;Mrohr: /* M 4.WA04 Authentisierung bei Web- Anwendungen (Matthias) */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Since it's about a review of a document in German, all the discussions will be done in German :-)&lt;br /&gt;
&lt;br /&gt;
Diskussionen rund um den Review des &amp;quot;IT-Grundschutzbausteins Webanwendungen&amp;quot; finden hier statt, sinnvollerweise auf Deutsch :-)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Vorschlag für Kriterien, die an unser Review angelegt werden sollten (.kai) ==&lt;br /&gt;
&lt;br /&gt;
* Der Baustein soll alle wichtigen Themen der Entwicklung sicherer&lt;br /&gt;
Webanwendungen enthalten.&lt;br /&gt;
&lt;br /&gt;
* Der Baustein soll die verschiedenen Phasen der Software-Entwicklung&lt;br /&gt;
vollständig abdecken.&lt;br /&gt;
&lt;br /&gt;
* Der Baustein soll zwischen verbindlichen, prüfbaren Vorgaben und&lt;br /&gt;
unverbindlichen Empfehlungen sprachlich sauber unterscheiden (hier&lt;br /&gt;
spielt mein Auditorenblick eine Rolle). Vor allem soll der Baustein&lt;br /&gt;
verbindliche Anforderungen auch tatsächlich stellen. Alle&lt;br /&gt;
verbindlichen Anforderungen müssen unabhängig von der jeweiligen&lt;br /&gt;
Umgebung auch umsetzbar sein, d.h. sie müssen entsprechend generisch&lt;br /&gt;
sein.&lt;br /&gt;
&lt;br /&gt;
* Die Maßnahmen sollen nur in (begründbaren) Ausnahmen zu Empfehlungen&lt;br /&gt;
von OWASP im Widerspruch stehen.&lt;br /&gt;
&lt;br /&gt;
* Die Maßnahmen sollen verständlich und anwendbar sein.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== &amp;quot;Hilfsmittel&amp;quot; (Markus) ==&lt;br /&gt;
Ich würde das Script zur Vermeidung von Clickjacking wrappen und nicht als losen Skript-block in den Text einbinden - einfach schlechter Programmierstiel diese losen Blöcke.&lt;br /&gt;
Der Zugriff auf das Body-Element mit byTagName-Array[0] ist auch nicht wirklich gut. Ich halte Zugriffe über das DOM (klassisch), bei ID bzw. XPATH für besser. &lt;br /&gt;
&lt;br /&gt;
SQL-Injection Characters:&lt;br /&gt;
die Pipe fehlt hier zur Textkonatenierung&lt;br /&gt;
+ / - haben auch eine Bedeutung bei JOINs.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== &amp;quot;Goldene Regeln&amp;quot; (Matthias) ==&lt;br /&gt;
&lt;br /&gt;
Hier meine Anmerkungen zu diesem Dokument:&lt;br /&gt;
&lt;br /&gt;
; 1. Für mich fehlende Punkte&lt;br /&gt;
* Korrektur der Ursache (Root Cause) von Schwachstellen statt  Verhinderung deren Ausnutzung&lt;br /&gt;
* Bezug auf Minimierung der Angriffsfläche und Least-Privilege-Prinzip&lt;br /&gt;
* Bezug auf Defense-in-Depth-Prinzip&lt;br /&gt;
* Verwendung von getesteten Security APIs (z.B. OWASP ESAPI) statt selbstentwickelter Funktionen&lt;br /&gt;
* Bezug auf Externalisierung von Sicherheitsfunktionen, sowie deklerative vor programmatischer Sicherheit.&lt;br /&gt;
&lt;br /&gt;
; 2. Begriff &amp;quot;Web-Anwendung&amp;quot;&lt;br /&gt;
Würde ich generell durch &amp;quot;Webanwendung&amp;quot; ersetzen.&lt;br /&gt;
&lt;br /&gt;
; 3. Einleitung (&amp;quot;Web-Anwendungen stellen Funktionalität zur Verfügung, ...&amp;quot;)&lt;br /&gt;
&lt;br /&gt;
Wozu dient dieser Satz?&lt;br /&gt;
&lt;br /&gt;
; 4. &amp;quot;Die Architektur der Web-Anwendung ist im Sicherheitskonzept zu  dokumentieren.....&amp;quot; &lt;br /&gt;
&lt;br /&gt;
Ich fände es sinnvoller, wenn hier von der &amp;quot;Sicherheitsarchitektur&amp;quot; gesprochen wird, welche etwa neben den sicherheitsrelevanten Datenflüssen, sensible Komponenten, Entry Points, Akteure architekturelle Security Controls wie Authentisierung, Kryptographie und natürlich die Trust Boundaries beinhaltet.&lt;br /&gt;
&lt;br /&gt;
; 5. &amp;quot;Bei Web-Anwendungen handelt es sich häufig um spezielle Eigenentwicklungen....&amp;quot;&lt;br /&gt;
&lt;br /&gt;
Erstens würde ich hier den geläufigen Begriff &amp;quot;Individualsoftware&amp;quot; verwenden. Zweitens würde ich statt bestimmte SDLC-Phasen vorzugeben (die Begriffe &amp;quot;Softwareverteilung&amp;quot; und &amp;quot;Integration&amp;quot; sind mir bei Webanwendungen bisher noch nicht so häufig untergekommen), besser von der Notwendigkeit sprechen, Sicherheit in allen Entwicklungsphasen zu berücksichtigen, also eines SDLs.&lt;br /&gt;
&lt;br /&gt;
; 6. &amp;quot;Alle Ein- und Ausgaben der Web-Anwendung müssen in eine normalisierte Form überführt werden....&amp;quot;&lt;br /&gt;
&lt;br /&gt;
Normalisierung ist für mich nicht gleich Kanonsierung, auch wenn beide Begriffe häufig als synonym verwendet werden.  Der Unterschied wird in der [http://owasp-esapi-java.googlecode.com/svn/trunk_doc/2.0-rc4/org/owasp/esapi/Encoder.html API-Beschreibung der ESAPI] erklärt. Die Normalisierungs-Funktion ist allerdings schon vor einiger Zeit aus der ESAPI [https://lists.owasp.org/pipermail/esapi-dev/2010-January/000266.html rausgeflogen]. Die generelle Kanonisierung von Ausgaben halte ich dazu für nicht sinnvoll.&lt;br /&gt;
&lt;br /&gt;
Zweitens, finde ich den weiteren Text zwar grundsätzlich formal korrekt, aber so allgemein, dass dieser glaube ich niemandem so richtig etwas bringt.  &lt;br /&gt;
&lt;br /&gt;
Besser fände ich hier Ein- von Ausgabevalidierung grundsätzlich voneinander abzugrenzen. Etwa was ich per Eingabevalidierung (Längenprüfung, Casting, etc. per Whitelisting) und was mit Ausgebavalidierung (Enkodierung, Escaping, Parametrisierung) machen muss und kann.&lt;br /&gt;
&lt;br /&gt;
Eingabedaten können technisch zudem auch Werte eingelesener Property-Dateien sein. Muss ich die auch validieren? Ist das dann noch Grundschutz? &lt;br /&gt;
&lt;br /&gt;
; 7. &amp;quot;Für den Zugriff auf sensitive Funktionen oder Informationen muss die Web-Anwendung eine wirksame Authentisierung und Sitzungsverwaltung unterstützen. Die Eigenschaften der Sitzungs-ID müssen so gewählt werden, dass die Sitzung ausreichend geschützt ist. ....&amp;quot;&lt;br /&gt;
&lt;br /&gt;
Besser fände ich &amp;quot;eine Authentisierung, die über eine dem Schutzbedarf der Anwendung angemessene Stärke verfügt.&amp;quot; &lt;br /&gt;
&lt;br /&gt;
Eigentlich geht es doch mehr um den Schutz der Sitzungs-ID, da diese gewöhnlich im Verlauf einer Sitzung den Client authentisiert. Oder den Schutz des Zugriffs auf eine Sitzung. &lt;br /&gt;
&lt;br /&gt;
Zudem fehlt hier meiner Meinung nach der Hinweis auf die bevorzugte Verwendung getesteter Standardkomponenten.&lt;br /&gt;
&lt;br /&gt;
; 8. &amp;quot;Die Web-Anwendung sollte die zu übermittelnden Daten schützen.&amp;quot;&lt;br /&gt;
&lt;br /&gt;
Dies würde ich nur auf sensible Daten beziehen. Zusätzlich zu HTTPS würde ich hier schreiben, dass sensible Daten generell nicht in der URL übertragen werden dürfen.&lt;br /&gt;
&lt;br /&gt;
; 9. &amp;quot;Die Preisgabe interner Informationen (z.B. Kommentare, Fehlermeldungen)&amp;quot;&lt;br /&gt;
&lt;br /&gt;
Hier würde ich eher schreiben &amp;quot;(IN Kommentaren, Fehlermeldungen, HTTP Headern, etc.)&amp;quot;&lt;br /&gt;
&lt;br /&gt;
; 10. &amp;quot;Fehler müssen so behandelt werden, ... müssen Fehler bei der Autorisierung zu einer Verweigerung beim Zugriff auf die angeforderte Ressource führen.&amp;quot;&lt;br /&gt;
&lt;br /&gt;
Sprachlich: &amp;quot;Die Webanwendung muss sich stets in einem sicheren Zustand befinden. Beispielsweise müssen Fehler bei der Autorisierung zu einer Verweigerung des Zugriffs führen (Default-Deny-Strategie).&amp;quot;&lt;br /&gt;
&lt;br /&gt;
; 11. &amp;quot;Die Logging-Funktionen der Web-Anwendung müssen aufgetretene Ereignisse derart protokollieren, dass sicherheitskritische Vorfälle nachvollzogen werden können.&amp;quot;&lt;br /&gt;
&lt;br /&gt;
Hier würde hier eher von &amp;quot;allen sicherheitsrelevanten Ereignissen&amp;quot; sprechen.&lt;br /&gt;
&lt;br /&gt;
Weiterhin sollten insbesondere beim Logging der Datenschutz berücksichtigt werden, personenbezogene Daten also nach Möglichkeit nicht oder nur anonymisiert in technischen Logdateien protokolliert werden.&lt;br /&gt;
&lt;br /&gt;
; 12. &amp;quot;Alle Sicherheitsmechanismen (z.B. Authentisierung und Zugriffskontrolle) sind serverseitig zu implementieren und können nicht durch clientseitige Mechanismen ersetzt werden.&amp;quot;&lt;br /&gt;
&lt;br /&gt;
Die Aussage ist so nicht korrekt. Darüber hatten wir bereits bei der ASVS mehrfach diskutiert. &lt;br /&gt;
&lt;br /&gt;
Überall dort wo der Client angegriffen wird, also etwa bei RIAs (Stichwort DOM-Based XSS) müssen wir Security Controls clientseitig implementieren. Es gibt mittlerweile deshalb auch eine Portierung der ESAPI auf Javascript. Überall dort wo der Server oder Hintegrundsysteme angegriffen werden, ist die Aussage aber natürlich zutreffend.&lt;br /&gt;
&lt;br /&gt;
== &amp;quot;Gefährdungen&amp;quot; (Markus, Dennis, .... &amp;lt;Dein Name&amp;gt;) ==&lt;br /&gt;
; Generell:&lt;br /&gt;
Reference auf RFCs fehlen.&lt;br /&gt;
&lt;br /&gt;
==B.5.XX Web-Anwendungen ==&lt;br /&gt;
; 1. Erster Absatz - Letzter Satz: --Wieso werden hier nur HTML/XML Doks und Oberflächen angesprochen? Was ist der Unterschied zwischen einem HTML-Dok und einer Oberfläche? Was ist mit  Flash, etc.? Was ist mit WebSockets?&lt;br /&gt;
; 2. Stichpunkt &amp;quot;Protokollierung&amp;quot;: Sicherheits relevant ist ein sehr dehnbarer Begriff - Eine bessere Formulierung könnte sein: Zur Rekonstruktion von Nutzerhandlungen nötige Ereignisse (positve &amp;amp; negative) müssen protokolliert werden . . . &lt;br /&gt;
; 3. Absatz: &amp;quot;Abgrenzung des Bausteins&amp;quot;: &amp;quot;Die spez. Sicherheitsanforderungen an Web-Services werden in diesem Baustein nicht betrachtet&amp;quot; --&amp;gt; Wie so nicht? Was ist das Backend von einer Rest / AJAX-basierenden Webanwendung denn anderes als ein Web-Service? Diesen Satz würde ich entfernen.&lt;br /&gt;
; 4.Vorsätzliche Handlungen -&amp;gt; Web-Spoofing (G.5.87) -- Missverständliche Bezeichnung / Nomenklatur&lt;br /&gt;
; 5. Seite 4 : erste Zeile &amp;quot;Umsetzung&amp;quot;: &amp;quot;dafür umzusetztende Komponenten müssen die Webanwendung schützen...&amp;quot; - Hier fehlt mir der Hinweis, dass dieser Schutz verifiziert werden muss.&lt;br /&gt;
; 6 Seite 5: &amp;quot;Umsetzung&amp;quot; - Wir haben CSRF, D(D)os und SQL-Injection aber wo ist XSS?&lt;br /&gt;
; 7 Seite 7: &amp;quot;Die Sicherheitsfunktion wird ausschließlich clientseitig...&amp;quot; --&amp;gt; Warum muss der Angreifer überhaupt einen Browser umkonfigurieren? Was ist mit Proxies, Scripts, etc.? Ich würde das reduzieren darauf, dass rein Webbrowser-basierende Schutzfunktionen einfach umgangen werden können.&lt;br /&gt;
; 8 Seite 8: Die angesprochenen Punkte hinterlassen den Eindruck nicht vollständig zu sein: Mir fehlen Punkte wie &amp;quot;Outsourcing&amp;quot;, &amp;quot;KnowHow der Entwickler&amp;quot;, Tooling, Framework-Auswahl, etc.&lt;br /&gt;
; 9 Seite 9: Eigentlich möchte der Autor hier über Datenschutz sprechen. Abgesehen von den letzten drei Zeilen geht es aber nur um &amp;quot;User tracking&amp;quot; - Wo ist der Rest der Datenschutzproblematik? Warum der Fokuss auf Tracking? Mir ist das zu einseitig.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
tbd.&lt;br /&gt;
&lt;br /&gt;
; Wortwahl:&lt;br /&gt;
Ich stosse innerhalb der Texte immer wieder an die Worten '''Hintergrundsystem''' und '''Sicherheitskontext'''.&lt;br /&gt;
'''Hintergrundsystem:''' besseres Synonym?&lt;br /&gt;
'''Sicherheitskontext:''' nur weil es in den Texten um Sicherheit geht muss nicht an jeder Stelle immer wieder das Wort _Sicherheits_kontext eingebaut werden.&lt;br /&gt;
Bsp: &amp;quot;Erlangt ein Angreifer Kenntnis von einer solchen gültigen, aber nicht mehr genutzten SessionID, so kann er die Web-Anwendung im Sicherheitskontext des nicht abgemeldeten Benutzers weiter verwenden.&amp;quot; (G 5,WA12 Unzureichendes Session-Management von Web-Anwendungen)&lt;br /&gt;
Verbesserungsansansatz: ... so kann er die Web-Anwendung anstelle des eigentlichen Besitzers weiterhin verwenden.&lt;br /&gt;
&lt;br /&gt;
== &amp;quot;G 2.WA01 Mangelhafte Auswahl oder Konzeption von Web-Anwendungen&amp;quot; (Matthias) ==&lt;br /&gt;
&lt;br /&gt;
Nachdem ich mir diese Gefährdung durchgelesen hatte, fehlten mir ehrlich gesagt etwas die Worte. Nicht nur, dass hier fast jeder zweite Satz entweder falsch ist bzw. massive Fehler enthält oder ich diesen schlicht nicht verstehe, ist der ganze Text sprachlich wirklich enorm verbesserungsfähig. &lt;br /&gt;
&lt;br /&gt;
Na gut, ich konzentriere mich mal auf die fachlichen Punkte:&lt;br /&gt;
&lt;br /&gt;
; 1. Security Controls&lt;br /&gt;
Werden mal mit &amp;quot;Schutzmechanismen&amp;quot;, mal mit &amp;quot;Sicherheitskomponenten&amp;quot; und dann wieder als &amp;quot;Sicherheitsfunktionen&amp;quot; bezeichnet. Hier macht eine einheitliche Benennung sicherlich Sinn und ist weniger verwirrend.&lt;br /&gt;
&lt;br /&gt;
; 2. &amp;quot;Eine Web-Anwendung ist in der Regel ein verteiltes, komplexes System bestehend aus unterschiedlichen Komponenten (z. B. Webserver, Applikationsserver, Hintergrundsysteme)&amp;quot;&lt;br /&gt;
&lt;br /&gt;
Eine Webanwendung besteht sicher nicht aus einem Webserver- oder anderer infrastruktureller Komponenten, sondern ist Software welches diese nutzt.&lt;br /&gt;
&lt;br /&gt;
; 3. &amp;quot;Bei individuell entwickelten Web-Anwendungen sind im Allgemeinen die Frameworks, Komponenten und Schnittstellen im Rahmen der Konzeption auszuwählen und deren Einbindung und Absicherung zu betrachten....Im Gegensatz dazu ist bei der Konzeption von Web-Anwendungen auf Basis von Standardsoftware insbesondere auf die Auswahl der Software und die Konfiguration der Teilkomponenten zu achten&amp;quot;&lt;br /&gt;
&lt;br /&gt;
Wir unterscheiden im Rahmen von Webanwendungen eigentlich Free or Opensource Software (FOSS bzw. FLOSS), Standardsoftware und Individualsoftware voneinander. Wir unterscheiden nicht Frameworks von Standardsoftware. Frameworks können Teil von Standardsoftware sein, wie etwa bei SharePoint, SAP, etc, oder aber FOSS, wie etwa Spring. Die ganzen Absätze machen für mich daher keinen Sinn.&lt;br /&gt;
&lt;br /&gt;
; 4. &amp;quot;Eine Sicherheitsfunktion (z. B. Authentisierung, Autorisierung) wird nicht an einer Stelle umgesetzt und verwendet, sondern ist mehrfach in der Web- Anwendung realisiert. Wird diese Sicherheitsfunktion an den verschiedenen Stellen unterschiedlich umgesetzt, führt dies zu einem uneinheitlichen Sicherheitsniveau.&amp;quot;&lt;br /&gt;
&lt;br /&gt;
Natürlich ist die mehrfache Verwendung bestimmter Security Controls, beispielsweise von Zugriffskontrollen (Complete-Mediation) oder Validierung (Robustheit) erstrebenswert. Was der Autor hier wahrscheinlich meinte, war die Notwendigkeit diese zu Kapseln bzw. zu Externalisieren. Das bezieht sich im übrigen nicht nur auf die Controls selbst, sondern auch auf ihre Parametrisierung (etwa. über Konfigdateien / XACML).&lt;br /&gt;
&lt;br /&gt;
Wichtiger wäre in diesem Zusammenhang zudem die fehlende Berücksichtigung bestimmter Security Controls.&lt;br /&gt;
&lt;br /&gt;
; 5. &amp;quot;Auswahl von Web-Anwendungen auf Basis von Standardsoftware&amp;quot;&lt;br /&gt;
Was will der Satz sagen? Ich wähle Standardsoftware aus, aber doch keine Webanwendungen. Oder heißt das, ich kaufe eine existierende Anwendung ein (Webanwendung!=Indivudualsoftware)? &lt;br /&gt;
&lt;br /&gt;
; 6. &amp;quot;Das ausgewählte Produkt verfügt nicht über die ausreichende Sicherheitsfunktionalität, ... Daher müssen die notwendigen Schutzmechanismen nachträglich hinzugefügt werden, wodurch zusätzliche Aufwände entstehen.&amp;quot;&lt;br /&gt;
Das ist etwas sehr positiv formuliert. Tatsächlich können fehlende Security Controls in zugekaufter Software (insb. Standardsoftware) in der Realität häufig gar nicht hinzugefügt werden oder nur perimetrisch (z.B. per WAF oder Access Gateway).&lt;br /&gt;
&lt;br /&gt;
; 7. &amp;quot;Die Hintergrundsysteme werden unzureichend abgesichert und dadurch ist die Datenbank der Web-Anwendung aus dem Internet erreichbar.&amp;quot;&lt;br /&gt;
Gehören fehlende Netzwerksegmentierung bzw. Firewallregeln wirklich in diesen Kontext? Das ist doch eigentlich Grundschutz der Infrastruktur, oder?&lt;br /&gt;
&lt;br /&gt;
; 8. &amp;quot;Aufgrund schwacher Parameter in der Konfiguration des Frameworks zum Session-Management werden unsichere SessionIDs erzeugt.&amp;quot;&lt;br /&gt;
Was sind &amp;quot;schwache&amp;quot; Parameter?&lt;br /&gt;
&lt;br /&gt;
Welches Framework erlaubt unsichere SessionIDs durch eine &amp;quot;schwache&amp;quot; Konfiguration zu erzeugen?&lt;br /&gt;
&lt;br /&gt;
; 9. &amp;quot;Wird die Konfiguration des Web-Browsers durch einen Angreifer manipuliert, können die clientseitig umgesetzten&amp;quot;&lt;br /&gt;
&lt;br /&gt;
Manipuliert ein Angreifer die Konfguration seines Webbroswers, wenn er einen MITM-Proxy konfiguriert?&lt;br /&gt;
&lt;br /&gt;
Wie bereits bei den &amp;quot;Goldenen Regeln&amp;quot; angemerkt, gilt auch hier, das manche Security Controls auch clientseitig umgesetzt werden dürfen (etwa. zur Verhinderung von Dom-Based XSS).&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== &amp;quot;G 5.WA10 Fehler in der Web-Anwendungslogik&amp;quot; (Dennis) ==&lt;br /&gt;
; 1. &amp;quot;Damit kann aufgrund der Prüfreihenfolge ein hoher Ressourcenverbrauch provoziert werden, der für Denial-of-Service-Angriffe ausgenutzt werden kann.&amp;quot;&lt;br /&gt;
Meiner Meinung nach passt in diesem Kontext die Attacke DoS nicht ganz. Falls die nachfolgende Funktionalität wegen der langen Ausführungszeit der Filterkomponente übersprungen wird bzw. ein Fehler auftritt würde dies meiner Ansicht in die Thematik Anwendungslogik passen. Eine DoS-Attacke kann hingegen anhand jeder Funktion durchgeführt werden.&lt;br /&gt;
&lt;br /&gt;
== &amp;quot;G 5.WA11 Umgehung clientseitig umgesetzter Sicherheitsfunktionen von Web-Anwendungen&amp;quot; (Dennis) ==&lt;br /&gt;
; 1. &amp;quot;Ein Angreifer kann diese ausnutzen, um beispielsweise unbefugt Befehle an Hintergrundsysteme der Web-Anwendung zu übermittlen (z.B. in Form von Datenbankanfragen bei einer SQL-Injection).&amp;quot;&lt;br /&gt;
Umformulierung des Inhalts der Klammer. Hatte beim ersten Lesen für mich den Anschein, als ob ein Formular genutzt werden könnte welches den Nutzer aufforder eine SQLI einzugeben. Ich denke &amp;quot;Datenbankanfrage zwecks Ausführung einer SQL-Injection&amp;quot; würde besser passen.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== G 2.WA02 Mängel bei der Entwicklung und der Erweiterung von Web-Anwendungen (Matthias) ==&lt;br /&gt;
&lt;br /&gt;
Allgemein ist de obere Teil ok, die aufgezählten &amp;quot;Auswirkungen von fehlenden Vorgaben&amp;quot; verstehe ich jedoch nicht. Wo ist etwa der Bezug von Barrierefreiheit auf die Anwendungssicherheit?&lt;br /&gt;
&lt;br /&gt;
Mein Vorschlag, um diese Punkte etwa sinnvoll umzubauen:&lt;br /&gt;
* &amp;quot;Fehlendes Vorgehensmodell&amp;quot;: Bezug auf fehlende Berücksichtigung von Sicherheit im SDLC. Statt eines SDLCs selbst sollte hier besser auf die Notwendigkeit eines Secure Development Lifecycle (SDL) hingewiesen werden&lt;br /&gt;
* &amp;quot;Fehlende Programmierrichtlinien&amp;quot; =&amp;gt; Besser wäre hier &amp;quot;Fehlende Sicherheitsrichtlinien in der Programmierung&amp;quot; also &amp;quot;Secure Coding Guidelines&amp;quot;&lt;br /&gt;
* &amp;quot;Testfälle&amp;quot; =&amp;gt; &amp;quot;Sicherheitsrelevante Testfälle&amp;quot; (z.B. Security Unit Tests). &lt;br /&gt;
* &amp;quot;Barrierefreiheit&amp;quot;: Warum nicht an dieser Stelle die Auswirkungen von Sicherheitsfunktionen auf die Bedienbarkeit, etwa anhand von CAPTCHAS erläutern?&lt;br /&gt;
&lt;br /&gt;
== G 2.WA03 Unzureichender Schutz personenbezogener Daten bei Web-Anwendungen (Matthias) ==&lt;br /&gt;
&lt;br /&gt;
Der Titel dieses Bausteines heißt &amp;quot;Schutz personenbezogener Daten&amp;quot;, die genannten Beispiele beziehen sich bis auf den letzten jedoch auf die missbräuchliche (oder zumindest problematische) Nutzung aus Sicht des Datenschutzes. &lt;br /&gt;
&lt;br /&gt;
Die Punkt 1-3 sollten daher besser entfallen und z.B. durch die Folgenden ersetzt werden:&lt;br /&gt;
* Unsichere Einbindung von sozialen Netzwerken (Bezug nehmen auf den Like-Button bei Facebook)&lt;br /&gt;
* Unsichere Einbindung von Werbeinhalten&lt;br /&gt;
* Unsichere Übertragung und Caching&lt;br /&gt;
* Unsichere Protokollierung&lt;br /&gt;
* Ungenügender Zugriffsschutz&lt;br /&gt;
* Verstoß des Minimalprinzips bzw. der Zweckgebundenheit (welche Daten werden wirklich benötigt)&lt;br /&gt;
&lt;br /&gt;
Auch wäre es ggf. zumindest einen Verweis auf das BDSG zu machen.&lt;br /&gt;
&lt;br /&gt;
== G 4.33 Unzureichende oder fehlende Authentisierung (Matthias) ==&lt;br /&gt;
&lt;br /&gt;
; 1. Erster Absatz: &amp;quot;Wenn Authentisierungsmechanismen fehlen oder zu schlecht sind&amp;quot;&lt;br /&gt;
&lt;br /&gt;
&amp;quot;schlecht&amp;quot; sollte vlt besser durch &amp;quot;unzureichend&amp;quot; ersetzt werden.&lt;br /&gt;
&lt;br /&gt;
; 2. &amp;quot;Sicherheitslücken entstehen bei... der Benutzerauthentisierung&amp;quot;&lt;br /&gt;
&lt;br /&gt;
Hier findet nur ein Bezug auf &amp;quot;Passwörter&amp;quot; statt. Der Bezug auf die fehlerhaft implementierte oder dem Schutzbedarf ungenügende Schutzmechanismen (z.B. keine 2-Faktor-Authentisierung bei hochsensiblen Daten) fehlt. Auch auf das komplette fehlen von Authentisierungs-Controls wird hier nicht  eingegangen&lt;br /&gt;
&lt;br /&gt;
; 3. &amp;quot;Sicherheitslücken entstehen bei... der Komponentenauthentisierung&amp;quot;&lt;br /&gt;
&lt;br /&gt;
Wie bei 2., wird auch hier wieder nur auf Passwörter, nicht jedoch auf das fehlen von Controls selbst eingegangen. An dieser Stelle fehlt auch ein Hinweis auf die Notwendigkeit dedizierter Benutzeraccounts.&lt;br /&gt;
&lt;br /&gt;
; 4. &amp;quot;Sicherheitslücken entstehen bei... der Wahl des Verfahrens&amp;quot;&lt;br /&gt;
&lt;br /&gt;
Statt untauglich würde ich auch hier von &amp;quot;dem Schutzbedarf der Daten nicht angemessen&amp;quot; sprechen, eigentlich gehört das für mich aber in die obigen Punkte.&lt;br /&gt;
&lt;br /&gt;
; 5. Serverseitige Authentisierung fehlt&lt;br /&gt;
&lt;br /&gt;
Auch der Server (bzw. die Anwendung selbst) kann sich fehlerhaft oder ungenügend beim Benutzer authentsieren, etwa über DNS, SSL-Zertifikate, etc.&lt;br /&gt;
&lt;br /&gt;
== G 4.WA04 Unzureichende Validierung von Ein- und Ausgabedaten bei Web-Anwendungen (Matthias) ==&lt;br /&gt;
&lt;br /&gt;
; 1. &amp;quot;Unzureichende Validierung von Eingabedaten&amp;quot;&lt;br /&gt;
&lt;br /&gt;
Die genannten Beispiele sind genau keine korrekten Beispiele für diesen Fall, sondern betreffen die Ausgabevalidierung bzw. Enkodierung. Typische Fehler der Eingabevalidierung ist eine Manipulierbarkeit der Business Logik.&lt;br /&gt;
&lt;br /&gt;
; 2. &amp;quot;Unzureichende Validierung von Ausgabedaten&amp;quot;&lt;br /&gt;
&lt;br /&gt;
Hier geht es zentral um die Verhinderung von Interpreter Injection, also serverseitig (z.B. SQL oder LDAP Injection) oder clientseitig (XSS, JSON Injection, etc.). Statt &amp;quot;können die Ausgaben Schadcode&amp;quot; enthalten würde ich hier eher davon Sprechen, dass ein solcher Interpreteraufruf manipuliert werden kann (was dann z.B. zur Einschleusung von Schadcode genutzt werden kann).&lt;br /&gt;
&lt;br /&gt;
; 3. &amp;quot;Die Suchfunktion der Web-Anwendung verwendet die Eingaben der Benutzer ungefiltert&amp;quot;&lt;br /&gt;
&lt;br /&gt;
Mit ungenügender &amp;quot;Filterung&amp;quot; hat SQL Injection nichts zu tun,  eigentlich geht es hierbei darum, dass SQL-Anfragen dynamisch mit unvalidierten Eingebedaten zusammengebaut (konkateniert) werden.&lt;br /&gt;
&lt;br /&gt;
; 4. &amp;quot;Ungefilterter HTML-Code in Kommentar-Funktion&amp;quot;&lt;br /&gt;
&lt;br /&gt;
Hier fehlt der Bezug auf persistentes XSS, das hier sicherlich zentral ist.&lt;br /&gt;
&lt;br /&gt;
== G 4.WA05 Fehlende oder mangelhafte Fehlerbehandlung durch Web-Anwendungen (Tobias, Matthias) ==&lt;br /&gt;
; Abschnitt &amp;quot;Unsichere Fehlerbehandlung&amp;quot;&lt;br /&gt;
Die G adressiert &amp;quot;Unsichere Fehlerbehandlung&amp;quot;, der Abschnitt die &amp;quot;Unsichere Fehlerbehandlung in Sicherheitskomponenten&amp;quot;. Entsprechend sollte der fettgedruckte Teil angepasst werden.&lt;br /&gt;
&lt;br /&gt;
; &amp;quot;fehlende SQL-Parameter,&amp;quot;&lt;br /&gt;
Sollte besser &amp;quot;Fehlermeldungen bei ungültigen SQL-Abfragen&amp;quot; lauten.&lt;br /&gt;
&lt;br /&gt;
; &amp;quot;Auch scheinbar unkritische Informationen, wie die Meldung ob (..)&amp;quot;&lt;br /&gt;
Korrekt, allerdings nicht nachvollziehbar, wenn das Problem der Leser nicht schon bekannt ist. Daher erweitern nach &amp;quot; Rahmen von Brute-Force-Angriffen ausgenutzt werden.&amp;quot; mit &amp;quot;. Bei Brute-Force-Angriffen wäre in diesem Fall klar, dass der Benutzername gültig ist.&amp;quot;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[User:Mrohr|Matthias]]): Stimme dem Obigen auch zu, ausserdem:&lt;br /&gt;
&lt;br /&gt;
; Sprachlich: &amp;quot;kann dies unvorhersehbare Auswirkungen haben und den Betrieb der Web-Anwendung bis zur Unerreichbarkeit einschränken.&amp;quot;&lt;br /&gt;
&lt;br /&gt;
&amp;quot;Unerreichbarkeit&amp;quot; ist etas merkwuerdig ausgedrueckt, besser ware hier von der &amp;quot;Verfuegbarkeit&amp;quot; zu sprechen. Im Uebrigen fehlt vollstaendig der Bezug auf die Verfuegbarkeit als Primaeres Schutzziel der Informationssicherheit.&lt;br /&gt;
&lt;br /&gt;
; &amp;quot;Clientseitige Fehlerbehandlung&amp;quot;&lt;br /&gt;
Das stimmt soweit, das generelle Problem ist jedoch genereller, naehmlich die clientseitige Abbildung sicherheitsrelaventer Logik (in diesem Fall die Fehlerbehandlung)&lt;br /&gt;
&lt;br /&gt;
== G 4.WA06 Unzureichende Nachvollziehbarkeit von sicherheitsrelevanten Ereignissen bei Web-Anwendungen (Matthias) ==&lt;br /&gt;
&lt;br /&gt;
; 1. Erster Absatz: &amp;quot;Die Behebung einer Schwachstelle ist dann nicht oder nur unter erschwerten Bedingungen möglich.&amp;quot;&lt;br /&gt;
&lt;br /&gt;
Hier würde ich ergänzen: &amp;quot;...und Angriffe auf die Anwendungen können ggf. nicht erkannt oder nachvollzogen werden&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
; 2. &amp;quot;Beispiele&amp;quot;: Kommulierbarkeit&lt;br /&gt;
&lt;br /&gt;
Hier fehlt auch ein Bezug auf die Kommulierbarkeit von SIcherheitsereignissen, dass diese also auch von solchen anderer Systeme in Verbindung gesetzt werden können&lt;br /&gt;
&lt;br /&gt;
; 3. &amp;quot;Beispiele&amp;quot;: Gerichtsverwertbarkeit&lt;br /&gt;
&lt;br /&gt;
Auch die Möglichkeit zur Gerichtsverwertbarkeit (etwa durch eindeutigen Zeitstempel) und manipulationssicherer Speicherung, würde ich an dieser Stelle unbedingt erwähnen.&lt;br /&gt;
&lt;br /&gt;
== G 4.WA07 Offenlegung von Informationen bei Web-Anwendungen (Matthias) ==&lt;br /&gt;
&lt;br /&gt;
; 1. Titel&lt;br /&gt;
&lt;br /&gt;
Hier würde ggf. &amp;quot;Offenlegung vertraulicher Informationen&amp;quot; sicher besser passen als &amp;quot;Offenlegung von Informationen&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
; 2. Beispiellink&lt;br /&gt;
&lt;br /&gt;
Ein Beispiellink (mit und ohne Token) würde sicher die Verständlichkeit dieser Schwachstelle verbessern.&lt;br /&gt;
&lt;br /&gt;
; 3. Erster Absatz: &amp;quot;Wenn demzufolge Informationen unnötig offengelegt werden, steigt die Wahrscheinlichkeit eines erfolgreichen Angriffs.&amp;quot;&lt;br /&gt;
&lt;br /&gt;
Interne Informationen auszublenden ist eine Härtungsmaßnahme, deren Anzeige erhöht aber nicht zwangsläufig die Wahrscheinlichkeit eines erfolgreichen Angriffs. Ich würde diesen Satz weglassen.&lt;br /&gt;
&lt;br /&gt;
 ; 4. Fehlende Punkte&lt;br /&gt;
&lt;br /&gt;
* Ein Hinweis auf HTTP Header wäre hier sicher erwähnenswert.&lt;br /&gt;
* Weiterhin bzgl. der Anzeige von Traces und ein Verweis auf den Entsprechenden Baustein zur Fehlerbehandlung&lt;br /&gt;
&lt;br /&gt;
== G 5.WA14 Cross-Site Request Forgery (CSRF, XSRF) (Matthias) ==&lt;br /&gt;
&lt;br /&gt;
; 1. Erster Absatz: &amp;quot;Können Funktionen einer Web-Anwendung ohne weitere Überprüfung der Authentizität des HTTP-Requests (z.B. durch Tokens in versteckten Formularfeldern) genutzt werden&amp;quot;&lt;br /&gt;
&lt;br /&gt;
Statt &amp;quot;Funktionen&amp;quot; würde ich besser von &amp;quot;schreibenden Aktionen&amp;quot; sprechen, dann macht der Satz mehr Sinn.&lt;br /&gt;
&lt;br /&gt;
; 2. Dritter Absatz: &amp;quot;Im Gegensatz zu XSS (siehe ...￼ ) ist das Angriffsziel nicht die Information auf dem Client (z. B. in Cookies),&amp;quot;&lt;br /&gt;
&lt;br /&gt;
Dieser (Halb-)Satz macht keinen Sinn, auch weil es bei XSS nicht nur im Informationen auf dem Cient geht. Vorschlag: &amp;quot;ist das Angriffsziel nicht die Ausführung von Skriptcode, sondern von unbefugten, schreibenden Aktionen im Kontext des angemeldeten Benutzers.&amp;quot;&lt;br /&gt;
&lt;br /&gt;
; 3. Session Riding&lt;br /&gt;
&lt;br /&gt;
Session Riding ist quasi nur ein anderer Begriff für CSRF. Die einzige Form von CSRF die mir bekannt ist, sind Angriffe mit Standard-Passwörtern auf HTTP-Basic-Auth geschützten Ressourcen.&lt;br /&gt;
&lt;br /&gt;
Im Grunde ist Session Riding aber nur ein Synonym für CSRF. Der Absatz ist daher auch nur eine Wiederholung der obigen Beschreibung.&lt;br /&gt;
&lt;br /&gt;
; 4. Zum Beispiel: &amp;quot;Durch einen präparierten Link auf einer Webseite wird die Änderung des Zugangspasswortes des Routers eingeleitet.&amp;quot;&lt;br /&gt;
&lt;br /&gt;
Etwas ungüngstig ausgedrückt. Besser wäre: &amp;quot;wird eine Anfrage zur Änderung des Zugangspasswortes an den Router gesendet. Hierbei sendet der Browser automatisch den Session Cookie mit, worüber die Webanwendung die Authentizität der Anfrage verifiziert und die Änderung durchführt.&amp;quot;&lt;br /&gt;
&lt;br /&gt;
== G 5.WA18 Clickjacking (Matthias) ==&lt;br /&gt;
&lt;br /&gt;
Hier stellt sich mir nur die allgemeine Frage, ob Clickjacking, bzw. der Schutz davor tatsächlich einem Grundschutz zuzurechnen ist. Persönlich würde ich dies nicht tun.&lt;br /&gt;
&lt;br /&gt;
== M 2.WA02 Dokumentation der Architektur von Web-Anwendungen (Matthias) ==&lt;br /&gt;
&lt;br /&gt;
; Verantwortlich für die Umsetzung&lt;br /&gt;
Hier wäre auch die Nennung des &amp;quot;Architekten&amp;quot; sinnvoll&lt;br /&gt;
 &lt;br /&gt;
; Fehlende Bestandteile der Dokumentation:&lt;br /&gt;
* Schutzbedarf des Systems sowie der verarbeiteten Daten&lt;br /&gt;
* Schützenswerte Daten und Funktionen (Assets)&lt;br /&gt;
* Betriebliche Anforderungen an die Sicherheit bzw. eingesetzte Plattform&lt;br /&gt;
* Dokumentierte Konfigurationseinstellungen &lt;br /&gt;
* BIA (RTO, RPO)&lt;br /&gt;
* Schnittstellen&lt;br /&gt;
* Trust Boundaries&lt;br /&gt;
* Akteure (bzw. Trust Level)&lt;br /&gt;
* Sicherheitsannahmen&lt;br /&gt;
* Geltende Compliance-Anforderungen (BDSG, PCI DSS, etc.)&lt;br /&gt;
&lt;br /&gt;
; Benutzermanagement&lt;br /&gt;
&lt;br /&gt;
Wenn damit das Identity Management gemeint ist, gehört das Dokumentiert, ist aber keine Sicherheitsfunktion. Oder ist hiermit das Rollen- und Berechtigungskonzept gemeint? Grenzt sich aus meiner Sicht schwer mit dem Thema Authentisierung ab. &lt;br /&gt;
&lt;br /&gt;
; Prüffragen&lt;br /&gt;
&lt;br /&gt;
Hier fehlt etwas in Bezug auf Sicherheitsanforderungen. Beispiel: &amp;quot;Werden Sicherheitsanforderungen an den Betrieb während der Entwicklung abgestimmt und dokumentiert&amp;quot;&lt;br /&gt;
&lt;br /&gt;
== M 2.WA12 Entwicklung und Erweiterung von Anwendungen (Markus) ==&lt;br /&gt;
; &amp;quot;Es sollte darauf geachtet werden, dass Sicherheitsanforderungen&lt;br /&gt;
vollständig durch Sicherheitsmechanismen erfüllt und zur Erstellung von&lt;br /&gt;
Testfällen festgehalten werden.&amp;quot; --&amp;gt; Bessere Formulierung würde aussagen, dass die Sicherheitsanforderungen durch Testfälle verifiziert werden.&lt;br /&gt;
&amp;quot;(z. B. durch Kommentare im&lt;br /&gt;
Quelltext). Somit ist der Quelltext zu einem&amp;quot; --&amp;gt; Das ist kein empfehlenswerter Programmierstiel! Raus mit diesem Kommentar&lt;br /&gt;
;&amp;quot;Zum Schutz vor dem Verlust bereits entwickelter und verworfener&lt;br /&gt;
Lösungen sowie zu Dokumentationszwecken sollte die Historie der&lt;br /&gt;
Änderungen festgehalten werden (z. B. durch ein Revisionssystem).&amp;quot; --&amp;gt; Auch diesen Absatz können wir streichen - Kein professioneller Programmierer arbeitet ohne Versionierugssystem.&lt;br /&gt;
;&amp;quot;Bei Web-Anwendung sollten die Webseiten auf Konformität zu dem&lt;br /&gt;
verwendeten Standard (z. B. HTML-Standard) getestet werden. Dadurch&lt;br /&gt;
können unvorgesehene Seiteneffekte aufgrund einer Fehlinterpretation&lt;br /&gt;
seitens der Browser vermieden werden.&amp;quot; --&amp;gt; Könnte man noch um &amp;quot;Die Software ist in möglichst vielen Browsern zu testen&amp;quot; erweitern.&lt;br /&gt;
;Generell geht der Autor leider nicht auf die Rollen &amp;amp; Rechte Verteilung ein. Mir fehlt der Hinweis, das es eine personelle Trennung zwischen Entwicklung, Test und Betrieb geben muss.&lt;br /&gt;
;Zum Thema Wartung / Betrieb --&amp;gt; Hier wird keine Aussage getroffen bezüglich Log_Files. Dieses Thema kann kritische Auswirkungen haben, Bsp.: logging ganzer HTTP-Requests im LogLevel=Debug.&lt;br /&gt;
; &amp;quot;Produktspezifische Sicherheitsfunkionalität&amp;quot; - Dieser Absatz ist gefährlich - der Angreifer ist nicht zur Verwendung dies Zielbrowsers gezwungen. Deshalb können Browser-spez. Sicherheitsfunktionen nur als Add-ON gewertet werden.&lt;br /&gt;
; &amp;quot;Festlegung der Entwicklungsumgebung&amp;quot; - Dieser Absatz geht nicht auf die zu verwendenden Testdaten ein. Der Hinweis, dass Live-Daten / Kundendaten nichts in Test- &amp;amp; Entwicklungsumgebungen zu suchen haben fehlt!!!&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== M 2.WA24 Web-Tracking (Matthias) ==&lt;br /&gt;
&lt;br /&gt;
; Letzter Absatz: &amp;quot;Falls eine Auswertung von Nutzerdaten, insbesondere personenbezogener Daten, .. &amp;quot;&lt;br /&gt;
&lt;br /&gt;
Hier sollte denke ich besser von personenbeziehbaren Daten gesprochen Werten. Dies betrifft etwa die Zuordnung von Surfverhalten zu einer bestimmten Person. Dies sollte stets nach den Prinzipien Datensparsamkeit und Datenvermeidung, Erforderlichkeit, sowie Zweckbindung erfolgen. Ist Webtracking nicht personenbeziehbar ist dies kein Thema für den Datenschutz.&lt;br /&gt;
&lt;br /&gt;
== M 4.WA04 Authentisierung bei Web- Anwendungen (Matthias) ==&lt;br /&gt;
&lt;br /&gt;
: Verantwortlich fuer Umsetzung &lt;br /&gt;
sollte in erster Linie beim Architekturen und in zweiter beim Entwickler liegen&lt;br /&gt;
; Vermischung von Authentisierung und Session Management &lt;br /&gt;
&lt;br /&gt;
Bei diesem Baustein findet eine ziemlich große Vermischung von Anforderung an die Authentisierung und das erst in &amp;quot;M 4.WA06 Session-Management bei Web- Anwendungen&amp;quot; behandelte Session Management statt (Beispiel: &amp;quot;Remember-Me-Funktion&amp;quot;). Beide Themen sollten sinnvollerweise getrennt voneinander zu betrachten und aufeinander zu beziehen.&lt;br /&gt;
&lt;br /&gt;
; Verwendung von Frameworks&lt;br /&gt;
&lt;br /&gt;
Die Anforderung ist schon ein wenig eingeschränkt. Besser passt hier denke ich die &amp;quot;Abbildung der Authentisierung über Standardkomponenten (Bibliotheken oder Frameworks)&amp;quot;. &lt;br /&gt;
&lt;br /&gt;
; Remember-Me-Funktion&lt;br /&gt;
&lt;br /&gt;
Siehe oben, gehört zum Session Management. Das ließt sich im übrigen so, als ob eine Webanwendung Credentials auf dem Client abhängt. &lt;br /&gt;
&lt;br /&gt;
; Grenzwerte für gescheiterte Anmeldeversuche&lt;br /&gt;
&lt;br /&gt;
Diese Empfehlung ist allgemein falsch, da sie sehr von der betrachteten Anwendung abhängt. Besser wäre hier allgemein von Mechanismen zur Verhinderung von automatisierten Angriffen zu sprechen (Anti-Automatisierung). &lt;br /&gt;
&lt;br /&gt;
Etwa umsetzbar durch&lt;br /&gt;
* Sperrung nach x Anmeldeversuchen&lt;br /&gt;
* Throttling&lt;br /&gt;
* Captchas&lt;br /&gt;
* Sicherheitsfragen&lt;br /&gt;
&lt;br /&gt;
Das allgemeine Sperren kann leicht für das gezielte Aussperren von Benutzern (User Lockout) verwendet werden. Was etwa bei Trading-Anwendungen nicht funktioniert.&lt;br /&gt;
&lt;br /&gt;
; Automatisiertes Zurücksetzen von Authentisierungsdaten&lt;br /&gt;
&lt;br /&gt;
Würde ich besser als &amp;quot;Passwort-Reset&amp;quot; bezeichnen.&lt;br /&gt;
&lt;br /&gt;
Weiterhin fehlt hier der Hinweis, dass statt ein automatisiertes Zurücksetzen, ein Mechanismus zu empfehlen ist, bei dem über ein hinterlegtes Sicherheitsmerkmal (Handy-Nummer oder E-Mail-Adresse) vom Benutzer zunächst eine Verifikation durchgeführt wird. Beispielsweise durch einen erhaltenen Link. Erst dann darf eine Änderung des Passwortes durch den Benutzer erfolgen.&lt;br /&gt;
&lt;br /&gt;
; Registrierung nicht behandelt&lt;br /&gt;
&lt;br /&gt;
Es existiert hier kein Punkt, der die sichere Implementierung von Benutzerregistrierungen behandelt.&lt;br /&gt;
&lt;br /&gt;
; Verweis auf Externalisierung fehlt.&lt;br /&gt;
&lt;br /&gt;
Statt die Authentisierung selbst durchzuführen kann eine Anwendung hierzu auf eine externe Komponente (Beispiel: SiteMinder oder Kerberos) zurückgreifen.&lt;br /&gt;
&lt;br /&gt;
; Verweis auf Behandlung von Credentials fehlt&lt;br /&gt;
&lt;br /&gt;
Auch wenn das  in &amp;quot;M 4.WA15 Schutz vertraulicher Daten bei Web- Anwendungen&amp;quot; ausführlich behandelt wird, sollte in diesem Baustein bereits auf den angemessenen Schutz von Authentisierungsdaten bei Übertragung und Speicherung hingewiesen werden.&lt;br /&gt;
&lt;br /&gt;
== M 4.WA05Umfassende Ein- und Ausgabevalidierung bei Web-Anwedungen (Markus) ==&lt;br /&gt;
; &amp;quot;Ablehnung der Daten im&lt;br /&gt;
Fehlerfall&amp;quot; --&amp;gt; Hier könnte man noch auf Tar-Pits eingehen - nur ein Vorschlag.&lt;br /&gt;
&lt;br /&gt;
== M 4.WA06Session-Management bei Web-Anwendungen (Markus, Matthias) ==&lt;br /&gt;
; &amp;quot;Übertragung der SessionID mittels GETRequest&amp;quot; --&amp;gt; Hier fehlt der Hinweis, dass die Lebensdauer dieser SessionIds kurz/kürzer sein muss, als im Falle der Speicherung im Cookie.&lt;br /&gt;
&lt;br /&gt;
([[User:Mrohr|Matthias]]) Die Anmerkung verstehe ich ehrlich gesagt ueberhaupt nicht, zumal das SM haeufig transparent zwischen Cookies und URL Rewriting wechselt. Wozu soll das gut sein? Wie soll das geschehen? Idealerweise sollte die Session ID niemals in die URL geschrieben werden, das sollte eigentlich genuegen.&lt;br /&gt;
&lt;br /&gt;
; &amp;quot;Verschlüsselte Übertragung von SessionIDs&amp;quot; --&amp;gt; Hier fehlt der Hinweis auf den Beast-Exploit. TLS Version &amp;gt; 1.0 verwenden!&lt;br /&gt;
&lt;br /&gt;
([[User:Mrohr|Matthias]]) Solange hier nicht auf eine explizite TLS Version eingegangen wird, sollte meiner grossen Ueberzeugung nach hier auch auf keine Exploits etc. eingagen werden, das gehoert an andere Stelle.&lt;br /&gt;
&lt;br /&gt;
; ([[User:Mrohr|Matthias]]) Weiterhin:&lt;br /&gt;
&lt;br /&gt;
 Es dürfen keine extern bekannten oder erratbaren Daten (z. B. IP-Adresse, Uhrzeit) in die Berechnung der SessionID einfließen.&lt;br /&gt;
&lt;br /&gt;
Die Aussage finde ich etwas problematisch, wichtiger ist, dass die Entropie ausreichend hoch ist. Haeufig werden etwa IPs von Load Balancern in die Session ID hineingeschrieben.&lt;br /&gt;
&lt;br /&gt;
 - Domain (z. B. webapp.domain.tld),&lt;br /&gt;
 - Path (z. B. /webapp/),&lt;br /&gt;
 - Secure und&lt;br /&gt;
 - HttpOnly.Beschränkte Sitzungsdauer&lt;br /&gt;
&lt;br /&gt;
Das sieht so aus, als ob es empfehlenswert ist, das Domain-Tag zu verwenden, das ist es sicherlich nicht. Was macht hier der Hinweis &amp;quot;Beschraenke Sizuungsdauer&amp;quot;?&lt;br /&gt;
&lt;br /&gt;
== M 4.WA07Fehlerbehandlung durch Web-Anwendungen (Markus) ==&lt;br /&gt;
; Konsistenter / Inkonsistener Zustand einer Webanwendung und der daraus resultierende Datenverlust: Hier fehlen mir die Punkte: DOS, Priv.Escalation, CodeExecution.&lt;br /&gt;
; Vermeidung vertraulicher Informationen in Fehlermeldungen --&amp;gt; Fehlermeldungen sollten ebenfalls eine Systeminformationen preisgeben (Softwareversion, Patchlevel, etc.)&lt;br /&gt;
; Abbruch des Vorgangs nach Auftreten eines Fehlers --&amp;gt; TarPits scheinen dem Autor umbekannt zu sein :)&lt;br /&gt;
; &amp;quot;Werden Fehler möglichst von der gleichen Komponente behandelt, in der&lt;br /&gt;
der Fehler aufgetreten ist?&amp;quot; --&amp;gt; Das &amp;quot;möglichst&amp;quot; sollten wir streichen.&lt;br /&gt;
&lt;br /&gt;
== M 4.WA08Schutz vor automatisierter Nutzung von Web-Anwendungen (Markus) ==&lt;br /&gt;
; &amp;quot;Brute-Force-&lt;br /&gt;
Angriffe (z. B. Erraten von Zugangsdaten) und Enumeration-Angriffe (z. B.&lt;br /&gt;
automatisiertes Ermitteln von gültigen Login-Namen)&amp;quot; -- die Beispiele sind identisch - besser Beispiele suchen, z.b. URL-Enumeration&lt;br /&gt;
&lt;br /&gt;
([[User:Mrohr|Matthias]]) Das sehe ich anders. Brute-Forcing bezieht auf Passwoerter und Enumeration auf Benutzernamen, etwa durchs hochzaehlen. Auch wenn ich zustimmen muss, dass die nicht ganz gluecklich gewaehlt wurden. Stann &amp;quot;Erraten von Zugangsdaten&amp;quot; wuerde ich besser von &amp;quot;Erraten von Passwoertern&amp;quot; sprechen. Oder wie gesagt gleich auch auf andere Beispiele (etwa Object ID Enumeration) beziehen.&lt;br /&gt;
&lt;br /&gt;
== M 4.WA11Sichere Konfiguration von Web-Anwendungen (Markus) ==&lt;br /&gt;
; &amp;quot;Sicherer Umgang mit TLS/SSL&amp;quot; -- Hier fehlt der Hinweis, dass TLS-1.0 gebrochen ist&lt;br /&gt;
; &amp;quot;Zeichenkodierungskonfiguration&amp;quot; -- Ein Whitelisting abhängig von der Encodierung wäre ein weiterer Vorschlag&lt;br /&gt;
; &amp;quot;Restriktive Dateisystemberechtigungen&amp;quot; -- auch wenn es ein klassiker ist - der AS sollte ebenfalls mit von einem eingeschränkten Nutzer gestartet werden und nicht als root&lt;br /&gt;
; Administration Consolen:zur Ergänzen: Wenn diese nicht benötigit, sollten derartige Applikationen nicht deployed werden, unabhängig von möglichen Zugangsbeschränkungen.&lt;br /&gt;
&lt;br /&gt;
([[User:Mrohr|Matthias]]) Sorry, meiner Meinung nach hat die Bewertung von Kryptoverfahren hier abslut nichts zu suchen.Stattdessen sollte hier auf den entsprechenden [https://www.bsi.bund.de/ContentBSI/Publikationen/TechnischeRichtlinien/tr02102/index_htm.html Empfehlung des BSI] verwiesen werden, auch wenn dieses Dokument derzeit noch etwas outdated zu sein scheint.&lt;br /&gt;
&lt;br /&gt;
== M 4.WA13Kontrolliertes Einbinden von Daten und Inhalten bei Web-Anwendungen (Markus) ==&lt;br /&gt;
; Datei-Upload: Bei einem Upload werden Dateien durchaus in TEMP-Verzeichnissen gesammelt und danach weiterverarbeitet. Diese TEMP-Verzeichnisse sind im Rahmen einer Sicherheitsanalyse zu betrachten -&amp;gt; Möglicher (unbefugter) Zugriff auf weitere Uploads&lt;br /&gt;
; Upload komprimierter Dateien / großer Dateien birgt die Gefahr von DOS Angriffen&lt;br /&gt;
; Upload von Dateien kann bei weiterem Parsing zu Speicherengpässen führen --&amp;gt; DOS-Angriffe auf Thread-Local etc.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== M 4.WA14Restriktive Herausgabe sicherheitsrelevanter Informationen bei Web-Anwendungen (Markus, Matthias) ==&lt;br /&gt;
OK - Keine Anmerkungen von mir.&lt;br /&gt;
&lt;br /&gt;
[[User:Mrohr|Matthias]]) Von mir schon;)&lt;br /&gt;
&lt;br /&gt;
; Vermeidung von Kommentaren in ausgelieferten Webseiten&lt;br /&gt;
&lt;br /&gt;
Das ist leider total falsch, wir brauchen haeufig Komentare, aus Kompatibilitaetsgruenden. So wird etwa der JavaScript-Block haeufig auskommentiert.&lt;br /&gt;
&lt;br /&gt;
Wurde stattessen besser von sicherheitsrelevanten Kommentaren sprechen und als Massnahme generell Entwicklerkommentare ueber Sprachkonstruktre (etwa JSP) durchzufuehren.&lt;br /&gt;
&lt;br /&gt;
; Löschen nicht benötigter Dateien&lt;br /&gt;
&lt;br /&gt;
Hier wurde ich ggf. Dateien von Versionisierungstools (etwa Subversion) erwaehnen, das sehen wir schon recht haeufig.&lt;br /&gt;
&lt;br /&gt;
Statt Dateien einfach nur zu loeschen (was in der Praxis haeufig nicht so einfach ist) bietet es sich zudem an, den Zugriff auf bestimmte Dateien oder Dateitypen generell zu sperren, etwa mittels ACL im Apache.&lt;br /&gt;
&lt;br /&gt;
; Gibt die Web-Anwendung ausschließlich neutrale Fehlermeldungen aus und sind diese im Quelltext identisch? {E: C}&lt;br /&gt;
&lt;br /&gt;
Persoenlich verstehe ich das nicht. Wieseo neutrale Fehlermeldung? Das macht fuer mich nur beim Login Sin. Hierzu existiert in dem Text auch keinerlei Bezug. Ich wuerde das daher besser entfernen und im Rahmen der Fehlerbehandlung diskutieren. Mindestens sollte hier jedoch besser von &amp;quot;sicherheitsunbedentlichen Fehlermeldungen&amp;quot; oder so gesprochen werden.&lt;br /&gt;
&lt;br /&gt;
; Wird der Referrer bei Verlassen der Web-Anwendung (z. B. durch einen Link auf eine externe Seite) gefiltert?&lt;br /&gt;
&lt;br /&gt;
Diesen Punkt sehe ich als sehr Fallabhengig an. Es kann fuer seiten durchaus wuenschenswert sein, dass der Referer weitergegeben wird. Der Referer sollte natuerlich keine sensiblen Informationen enthalten, was ja an anderer Stelle (etwa Session Management) vorgegeben wird bzw. gegeben werden sollte.&lt;br /&gt;
&lt;br /&gt;
== M 4.WA15Schutz vertraulicher Daten bei Web-Anwendungen (Markus) ==&lt;br /&gt;
; Sichere kryptographische Algorithmen:&lt;br /&gt;
 Hier fehlt mir eine Liste der aktuelle als sicher geltenden Verfahren.&lt;br /&gt;
; Schlüssel&lt;br /&gt;
 Das die Schlüssel bestimmten Formaten entsprechen müssen ist ok - aber das Schlüsselmanagement wird gar nicht besprochen?&lt;br /&gt;
; Schutz der Daten im Browsercache&lt;br /&gt;
 Skripte und Browserplugins können ebenfalls auf den Browsercache zugreifen - diese werden hier nicht erwähnt.&lt;br /&gt;
; Maskierung von Passwörtern &lt;br /&gt;
 Dies schützt bei der Eingabe nur vor ShoulderSurfing nicht vor Skripten oder Plugins die diese an andere Server posten.&lt;br /&gt;
; Sicherung von Zugangsdaten:&lt;br /&gt;
 Zugangsdaten in einer Datei abzulegen - wenn auch ausserhalb des WebRoots ist keine gute Idee.&lt;br /&gt;
; Schutz von Quelltexten:&lt;br /&gt;
 Hier würde ich property files mit aufnehmen. der hinweis auf web-inf/classes fehlt - warum?&lt;br /&gt;
 Bei include-befehlen sind die pfadangaben zu überdenken.&lt;br /&gt;
&lt;br /&gt;
== M 4.WA16Zugriffskontrolle bei Web-Anwendungen (Markus) ==&lt;br /&gt;
; Zugriffskontrolle via Frameworks:&lt;br /&gt;
 Dieser Punkt (Frameworks) wird nur in einem Satz erwähnt. Es werden keine Bespiele gegeben - Das ist zu wenig.&lt;br /&gt;
 Es müssen alle Zugriffe geschützt werden. Eine Protokollierung aller Zugriffe mit den nötigen Informationen ist ebenfalls empfehlenswert.&lt;br /&gt;
; Datei Upload:&lt;br /&gt;
 Die Gefahr eines DOS wird hier nicht erwähnt.&lt;br /&gt;
&lt;br /&gt;
== M 4.WA19Verhinderung von Cross-Site Request Forgery (CSRF, XSRF) (Markus, Matthias) ==&lt;br /&gt;
; Verantwortliche: &lt;br /&gt;
 Entwickler und Admins!&lt;br /&gt;
([[User:Mrohr|Matthias]]) Korrekt, wobei auch in der Reihenfolge&lt;br /&gt;
&lt;br /&gt;
; Anti-CSRF-Token in hidden fields:&lt;br /&gt;
 Das ist keine gute Idee. Ich würde das streichen!&lt;br /&gt;
&lt;br /&gt;
([[User:Mrohr|Matthias]]) Watt? Anti-CSRF-Tokens in Hidden Fields sind die Standard-Massnahme. Wie denn sonst? Bitte nicht streichen!!! &lt;br /&gt;
&lt;br /&gt;
([[User:Mrohr|Matthias]]) Die Technik bei der die Session ID als Anti-CSRF-Token verwendet wird, wird als Double-Cookie Submit bezeichnet, das sollte hier referenziert werden.&lt;br /&gt;
&lt;br /&gt;
; Umgehung von Schutzmechanismen:&lt;br /&gt;
 Man in the middle hat keinen direkten Bezug zu CSRF! Das würde ich streichen.&lt;br /&gt;
([[User:Mrohr|Matthias]]) Der Hinweis ist korrekt. Wovon der Autor hier spricht ist Session Replay nicht CSRF.&lt;br /&gt;
&lt;br /&gt;
; Frameworks:&lt;br /&gt;
 Gute Idee - aber es gibt auch Features in den ApplicationServern die CSRF unterbinden - warum wird das nicht besprochen?&lt;br /&gt;
&lt;br /&gt;
([[User:Mrohr|Matthias]]) Sehe ich persoenlich nicht so, da CSRF primaer ein Applikations-Fehler ist, und auch in der Applikation und nicht im Environment (AppServer) geloest werden sollte. Auch wenn das manchmal ggf. die einzig machbare Loesung darstellt.&lt;br /&gt;
&lt;br /&gt;
([[User:Mrohr|Matthias]]) Was generell fehlt, ist ein Hinweis darauf, dass schreibende Requests generell per HTTP Post abgewickelt werden sollten, da HTTP Get keine &amp;quot;Safe Method&amp;quot;  (siehe HTTP 1.1, RFC 2616) ist.&lt;br /&gt;
&lt;br /&gt;
== M 4.WA20Sicherer Entwurf der Logik von Web-Anwendungen (Markus, Matthias) ==&lt;br /&gt;
; Rollbacks:&lt;br /&gt;
 Tritt ein Fehler auf muss die Applikation einen konsistenten Datenstand zurück lassen. Das wird hier nicht erwähnt.&lt;br /&gt;
; RaceConditions:&lt;br /&gt;
 Fehler in der Geschäftslogik können auch durch zwei gleichzeitige Sessions auf einer Webapplikation auftreten - das wird hier nicht besprochen.&lt;br /&gt;
&lt;br /&gt;
([[User:Mrohr|Matthias]]) Ehrlich gesagt kann ich nicht ganz nachvollziehen, was der Sichere Entwurf der Logik von Web-Anwendungen mit dem Verzicht auf aktive Inhalte zu tun hat. Unabhaengig davon sollte man solche unsinnigen Aussagen im Jahre 2012 nicht mehr treffen, damit macht man sicht nur laecherlich.&lt;br /&gt;
&lt;br /&gt;
Nichts desto trotz, was hier als &amp;quot;echte&amp;quot; Massnahmen erwaehnt werden sollte sind:&lt;br /&gt;
* Verhinderung von Race Conditions, aber nicht nur durch Concurrent Sessions sondern auch durch Singletons (TOCTOU)&lt;br /&gt;
* Enforcements von Workflows, etwa durch die Verwendung von State Machines oder Request Tokens (auch bekannt als Site Usage Enforcement)&lt;br /&gt;
* Fail Securely (bzw. Verweis)&lt;br /&gt;
* Serverseitige Abbildung der Anwendungslogik, zumindest wenn diese sicherheitsrelevant sit&lt;br /&gt;
&lt;br /&gt;
== M 4.WA22Verhinderung der Blockade von Ressourcen (DoS) bei Web-Anwendungen (Markus, Matthias) ==&lt;br /&gt;
; Datenspeicher:&lt;br /&gt;
 Neben dem Datenspeicher sollte auch der RAM-Verbrauch pro Thread der Applikation limitiert werden.&lt;br /&gt;
([[User:Mrohr|Matthias]]) Stimmt, ich wuerde hier sogar allgemein von Ressourcenverbrauch am Beispiel RAM und Datenspeicher, sprechen&lt;br /&gt;
&lt;br /&gt;
; Voraggregation von Daten / Caching&lt;br /&gt;
 Dieser Punkt fehlt: Stark ressourcen belastende Anfragen können auch in Lastarmen Zeiten vorberechnet werden.&lt;br /&gt;
([[User:Mrohr|Matthias]]) Stimmt, koennte noch als Anmerkung bei &amp;quot;Cachen von Anfragen&amp;quot; hinzugefuegt werden&lt;br /&gt;
&lt;br /&gt;
([[User:Mrohr|Matthias]]) Noch drei Anmerkugnen&lt;br /&gt;
&lt;br /&gt;
; Prueffrage: &amp;quot;Wird ein möglicher Überlauf von Protokolldaten... verhindert&amp;quot;&lt;br /&gt;
&lt;br /&gt;
Ist eine etwas eingeschrankte Sicht. Wurde hier eher von Ueberlauf von Speicherplaz zu Beispiel im Rahmen der Protokollierung sprechen&lt;br /&gt;
&lt;br /&gt;
; Durchfuehrung von Lasttests zur Identifikation ressourcenintensiver Operationen&lt;br /&gt;
&lt;br /&gt;
Der Hinweis waere ggf. erwahnenswert&lt;br /&gt;
&lt;br /&gt;
; Hinweis auf nicht-angemeldeten Bereich&lt;br /&gt;
&lt;br /&gt;
Das Risiko durch rechenintensive Operationen durch einen DoS betroffen zu sein ist natuerlich fuer gewoehlich um so groesser, wenn diese im anonymen Bereich angeboten wird. Der Hinweis ware ggf. ebenfalls hilfreich.&lt;br /&gt;
&lt;br /&gt;
== M 4.WA25Verhinderung von Clickjacking (Markus) ==&lt;br /&gt;
Ok - das passt soweit.&lt;br /&gt;
&lt;br /&gt;
([[User:Mrohr|Matthias]]) Stimmt, auch wenn ich &amp;quot;Angreifer&amp;quot; in dem Beispiel eher als &amp;quot;Webseitenbetreiber&amp;quot; beschreiebn wuerde, da er nicht wirklich aktiv einen Angriff durchfuehrt, oder? Bitte nochmal ueber meinen Hinweis aus G 5.WA18 nachdenken: Ist Clickjacking-Schutz tatsaechlich Grundschutz? Ich bin mir da selber nicht so wirklich sicher.&lt;br /&gt;
&lt;br /&gt;
== M 5.WA21Sichere Anbindung von Hintergrundsystemen an Web-Anwendungen (Markus) ==&lt;br /&gt;
; Verantwortliche:&lt;br /&gt;
 Architekten fehlen. Entwickler müssen die Views umsetzen und die Datasource entsprechend einbinden - die fehlen hier ebenfalls.&lt;br /&gt;
; DirectorySystem Beispiel:&lt;br /&gt;
 Das DirectorySystem wird in dem angegeben Beispiel zum Single Point of Failure - das wird verschwiegen.&lt;br /&gt;
; Firewalls:&lt;br /&gt;
 Das sind fachlich-blinde Systeme. Was ist mit WAFs / IDS / IPS etc.?&lt;br /&gt;
([[User:Mrohr|Matthias]]) Stimmt, das hat in diesem Baustein nichts zu suchen&lt;br /&gt;
&lt;br /&gt;
([[User:Mrohr|Matthias]]) Noch ein weiterer Punkt von mir&lt;br /&gt;
&lt;br /&gt;
; Typische Hintergrundsysteme&lt;br /&gt;
Hier fehlt irgendwie &amp;quot;Middleware&amp;quot;, die ist denke ich nicht immer Legacy&lt;br /&gt;
&lt;br /&gt;
== M 5.WA23Systemarchitektur einer Web-Anwendung (Markus) ==&lt;br /&gt;
; Verantwortliche:&lt;br /&gt;
Auch hier fehlend wieder die Architekten. &lt;br /&gt;
; Virtualisierung:&lt;br /&gt;
Virtualisierung bietet weitere Angriffsvektoren (z.B.: Hypervisor) die eine &amp;quot;Blech&amp;quot;Farm nicht bietet.&lt;/div&gt;</summary>
		<author><name>Mrohr</name></author>	</entry>

	<entry>
		<id>https://wiki.owasp.org/index.php?title=User:Mrohr&amp;diff=130153</id>
		<title>User:Mrohr</title>
		<link rel="alternate" type="text/html" href="https://wiki.owasp.org/index.php?title=User:Mrohr&amp;diff=130153"/>
				<updated>2012-05-21T11:16:57Z</updated>
		
		<summary type="html">&lt;p&gt;Mrohr: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Matthias Rohr's [profile], [mailto:mail@matthiasrohr.de email address] and and [[:Special:Contributions/Mrohr|wiki contributions]].&lt;br /&gt;
&lt;br /&gt;
=== Experience  ===&lt;br /&gt;
* 11 years of experience developing Java‐based and PHP-based enterprise web applications&lt;br /&gt;
* over 8 years of experience as an application security consultant, engineer, trainer and tester&lt;br /&gt;
&lt;br /&gt;
=== Day Job  ===&lt;br /&gt;
* Freelance Application Security Consultant &lt;br /&gt;
* Main Focus: Software Security Assurance (SSA), SCA and secure software development&lt;br /&gt;
* Based in London (UK)&lt;br /&gt;
&lt;br /&gt;
=== OWASP Contributions and Activities ===&lt;br /&gt;
* Project Leader of OWASP German Language Project - http://www.owasp.org/index.php/OWASP_German_Language_Project&lt;br /&gt;
* Project Leader of OWASP Java Project - http://www.owasp.org/index.php/OWASP_Java_Project&lt;br /&gt;
* Project Leader of OWASP Skavenger Project  - http://www.owasp.org/index.php/Category:OWASP_Skavenger_Project&lt;br /&gt;
* OWASP ASVS German Translation - http://www.owasp.org/index.php/Category:OWASP_Application_Security_Verification_Standard_Project&lt;br /&gt;
* ASVS Presentation at OWASP AppSec Germany 2010 - http://www.owasp.org/index.php/OWASP_AppSec_Germany_2010_Conference&lt;br /&gt;
* OWASP Summit 2011 - http://www.owasp.org/index.php/Category:OWASP_AppSec_Conference&lt;br /&gt;
* OWASP EU Summit 2008 - http://www.owasp.org/index.php/OWASP_EU_Summit_2008&lt;br /&gt;
* OWASP Summer of Code 2008 (OWASP Skavenger Project) - http://www.owasp.org/index.php/OWASP_Summer_of_Code_2008&lt;br /&gt;
* Co-Author of OWASP paper &amp;quot;Use of Web Application Firewalls&amp;quot;  - http://www.owasp.org/index.php/Category:OWASP_Best_Practices:_Use_of_Web_Application_Firewalls&lt;br /&gt;
&lt;br /&gt;
last revised 5/5/2012&lt;/div&gt;</summary>
		<author><name>Mrohr</name></author>	</entry>

	<entry>
		<id>https://wiki.owasp.org/index.php?title=User:Mrohr&amp;diff=130152</id>
		<title>User:Mrohr</title>
		<link rel="alternate" type="text/html" href="https://wiki.owasp.org/index.php?title=User:Mrohr&amp;diff=130152"/>
				<updated>2012-05-21T11:16:02Z</updated>
		
		<summary type="html">&lt;p&gt;Mrohr: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Matthias Rohr's [profile], [mailto:mail@matthiasrohr.de email address] and and [[:Special:Contributions/Mrohr|wiki contributions]].&lt;br /&gt;
&lt;br /&gt;
=== Experience  ===&lt;br /&gt;
* 11 years of experience developing Java‐based and PHP-based enterprise web applications&lt;br /&gt;
* over 8 years of experience as security consultant, trainer and tester&lt;br /&gt;
&lt;br /&gt;
=== Day Job  ===&lt;br /&gt;
* Freelance Application Security Consultant &lt;br /&gt;
* Main Focus: Software Security Assurance (SSA), SCA and secure software development&lt;br /&gt;
* Based in London (UK)&lt;br /&gt;
&lt;br /&gt;
=== OWASP Contributions and Activities ===&lt;br /&gt;
* Project Leader of OWASP German Language Project - http://www.owasp.org/index.php/OWASP_German_Language_Project&lt;br /&gt;
* Project Leader of OWASP Java Project - http://www.owasp.org/index.php/OWASP_Java_Project&lt;br /&gt;
* Project Leader of OWASP Skavenger Project  - http://www.owasp.org/index.php/Category:OWASP_Skavenger_Project&lt;br /&gt;
* OWASP ASVS German Translation - http://www.owasp.org/index.php/Category:OWASP_Application_Security_Verification_Standard_Project&lt;br /&gt;
* ASVS Presentation at OWASP AppSec Germany 2010 - http://www.owasp.org/index.php/OWASP_AppSec_Germany_2010_Conference&lt;br /&gt;
* OWASP Summit 2011 - http://www.owasp.org/index.php/Category:OWASP_AppSec_Conference&lt;br /&gt;
* OWASP EU Summit 2008 - http://www.owasp.org/index.php/OWASP_EU_Summit_2008&lt;br /&gt;
* OWASP Summer of Code 2008 (OWASP Skavenger Project) - http://www.owasp.org/index.php/OWASP_Summer_of_Code_2008&lt;br /&gt;
* Co-Author of OWASP paper &amp;quot;Use of Web Application Firewalls&amp;quot;  - http://www.owasp.org/index.php/Category:OWASP_Best_Practices:_Use_of_Web_Application_Firewalls&lt;br /&gt;
&lt;br /&gt;
last revised 5/5/2012&lt;/div&gt;</summary>
		<author><name>Mrohr</name></author>	</entry>

	<entry>
		<id>https://wiki.owasp.org/index.php?title=OWASP_Review_BSI_IT-Grundschutz_Baustein_Webanwendungen&amp;diff=130151</id>
		<title>OWASP Review BSI IT-Grundschutz Baustein Webanwendungen</title>
		<link rel="alternate" type="text/html" href="https://wiki.owasp.org/index.php?title=OWASP_Review_BSI_IT-Grundschutz_Baustein_Webanwendungen&amp;diff=130151"/>
				<updated>2012-05-21T11:15:07Z</updated>
		
		<summary type="html">&lt;p&gt;Mrohr: /* Project Contributors */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Category:OWASP_Project|OWASP Review BSI IT-Grundschutz Baustein Webanwendungen]]&lt;br /&gt;
==Mailing-List, Coordination and Contact==&lt;br /&gt;
If you want to become a part of the OWASP review team, please subscribe to the mailing list [https://lists.owasp.org/mailman/listinfo/bsi-webbaustein-review https://lists.owasp.org/mailman/listinfo/bsi-webbaustein-review]. It is not necessary to be a member to volunteer, of course :-)&lt;br /&gt;
&lt;br /&gt;
The contact the coordinating team please mail to [mailto:bsi-webbaustein@owasp.de bsi-webbaustein@owasp.de] or contact the project leader  [mailto:ralf.reinhardt@owasp.org Ralf] [[User:Ralf Reinhardt|Reinhardt]]&lt;br /&gt;
&lt;br /&gt;
This is a project of the [[Germany | OWASP German Chapter]].&lt;br /&gt;
&lt;br /&gt;
==Abstract==&lt;br /&gt;
Technical review of the module web application&lt;br /&gt;
(&amp;quot;Baustein Webanwendungen&amp;quot;) of the IT-baseline protection catalog (&amp;quot;IT&lt;br /&gt;
Grundschutz Katalog&amp;quot;) of the German Federal Office for Information&lt;br /&gt;
Security (&amp;quot;BSI&amp;quot;) from the OWASP's point of view.&lt;br /&gt;
&lt;br /&gt;
==Introduction==&lt;br /&gt;
The German &amp;quot;Federal Office for Information Security&amp;quot; (BSI), which is&lt;br /&gt;
comparable to departments focused on security in organizations like NIST&lt;br /&gt;
or CCTA, offers the IT Baseline Protection (&amp;quot;IT-Grundschutz&amp;quot;) for public&lt;br /&gt;
usage, which is based on ISO/IEC 27001. The IT Baseline Protection&lt;br /&gt;
include a catalog of approx. 80 &amp;quot;Bausteine&amp;quot; (building blocks). Those&lt;br /&gt;
blocks are dealing with one particular subject of IT security. They are&lt;br /&gt;
usually written in the German language and later translated to English.&lt;br /&gt;
They become the de facto standard for IT security and related&lt;br /&gt;
certifications in Germany after they are finally released.&lt;br /&gt;
&lt;br /&gt;
In January 2012 the draft of the block &amp;quot;Webanwendungen&amp;quot; (web&lt;br /&gt;
applications) was released with a request for comments. Since this is&lt;br /&gt;
the core expertise of OWASP we invited a delegate of the BSI to attend&lt;br /&gt;
the last chapter meeting of the German Chapter which took place in&lt;br /&gt;
Frankfurt / Main on the 3rd of February. The meeting's outcome was the&lt;br /&gt;
strong wish to perform a review of that very web application block as an&lt;br /&gt;
OWASP project. This project will help to expand the visibility of OWASP&lt;br /&gt;
in the German IT security landscape broadly.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Roadmap==&lt;br /&gt;
* Time is running out, so it's just: &amp;lt;b&amp;gt;Review!&amp;lt;/b&amp;gt;&lt;br /&gt;
* Details  [[Talk:OWASP_Review_BSI_IT-Grundschutz_Baustein_Webanwendungen| see &amp;quot;Discussion&amp;quot;]]&lt;br /&gt;
&amp;lt;!--&lt;br /&gt;
* Building a coordinating team&lt;br /&gt;
* &amp;lt;b&amp;gt;Defining the review rules&amp;lt;/b&amp;gt; [[Talk:OWASP_Review_BSI_IT-Grundschutz_Baustein_Webanwendungen| see &amp;quot;Discussion&amp;quot;]]   &lt;br /&gt;
* Reading the BSI documents&lt;br /&gt;
* Collecting comments from the community familiar with the BSI documents&lt;br /&gt;
* Creating a common understanding&lt;br /&gt;
* Writing a review with OWASP glasses &lt;br /&gt;
* Review of OWASP's review itself&lt;br /&gt;
* Releasing the result(s)&lt;br /&gt;
--&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Deadline==&lt;br /&gt;
06/01/2012, in German: '''01.06.2012'''&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Relevant links and general information==&lt;br /&gt;
==== Document download ====&lt;br /&gt;
&amp;quot;Entwurf Baustein Webanwendungen&amp;quot; of the BSI (in German language) directly: &lt;br /&gt;
[https://www.bsi.bund.de/SharedDocs/Downloads/DE/BSI/Grundschutz/Download/Vorabversionen/Baustein_Webanwendungen_Entwurf.zip https://www.bsi.bund.de/SharedDocs/Downloads/DE/BSI/Grundschutz/Download/Vorabversionen/Baustein_Webanwendungen_Entwurf.zip]&lt;br /&gt;
&lt;br /&gt;
General download section of the BSI:&lt;br /&gt;
[https://www.bsi.bund.de/ContentBSI/grundschutz/kataloge/download/download.html https://www.bsi.bund.de/ContentBSI/grundschutz/kataloge/download/download.html]&lt;br /&gt;
&lt;br /&gt;
==== Some further information about &amp;quot;BSI&amp;quot; and &amp;quot;Grundschutz&amp;quot;====&lt;br /&gt;
The BSI about itself: [https://www.bsi.bund.de/EN/Home/home_node.html https://www.bsi.bund.de/EN/Home/home_node.html ]&lt;br /&gt;
&lt;br /&gt;
Wikipedia about BSI: [http://en.wikipedia.org/wiki/Bundesamt_f%C3%BCr_Sicherheit_in_der_Informationstechnik http://en.wikipedia.org/wiki/Bundesamt_f%C3%BCr_Sicherheit_in_der_Informationstechnik]&lt;br /&gt;
&lt;br /&gt;
Wikipedia about &amp;quot;IT-Grundschutz Katalog&amp;quot;: [http://en.wikipedia.org/wiki/IT_Baseline_Protection_Catalogs http://en.wikipedia.org/wiki/IT_Baseline_Protection_Catalogs]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Actual Work in Progress==&lt;br /&gt;
&lt;br /&gt;
===Allgemeine Punkte===&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;text-decoration: underline&amp;quot;&amp;gt;[[OWASP_Review_BSI_IT-Grundschutz_Baustein_Webanwendungen/Allgemeine_Punkte|Allgemeine Punkte]]&amp;lt;/span&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
===Kapitel-Review===&lt;br /&gt;
&lt;br /&gt;
Hier eine &amp;lt;u&amp;gt;Auflistung der einzelnen Kapitel / Teile / Review-TODOs&amp;lt;/u&amp;gt; - wer einen Teil übernehmen möchte schreibt sich bitte einfach ein (im Feld &amp;lt;u&amp;gt;Person&amp;lt;/u&amp;gt;).&lt;br /&gt;
&lt;br /&gt;
Im &amp;lt;u&amp;gt;Kommentarfeld&amp;lt;/u&amp;gt; bitte angeben, bis wann ihr plant, den Punkt fertig bearbeitet zu haben (und natürlich sonstige notwendigen Kommentare). Das Kommentarfeld eignet sich auch, um anzugeben, wer den peer review für diesen Teil macht (vgl. Status &amp;quot;in Diskussion&amp;quot;).  &lt;br /&gt;
&lt;br /&gt;
Unter &amp;lt;u&amp;gt;Status&amp;lt;/u&amp;gt; könnt Ihr das folgende angeben:&lt;br /&gt;
* &amp;lt;b&amp;gt;offen&amp;lt;/b&amp;gt; (dieser Teil ist noch unbearbeitet)&lt;br /&gt;
* &amp;lt;b&amp;gt;in Arbeit&amp;lt;/b&amp;gt; (dieser Teil wird aktuell bearbeitet)&lt;br /&gt;
* &amp;lt;b&amp;gt;in Diskussion&amp;lt;/b&amp;gt; (Arbeit des initialen Reviewers abgeschlossen; Kommentierung / peer review durch andere wird durchgeführt)&lt;br /&gt;
* &amp;lt;b&amp;gt;geschlossen&amp;lt;/b&amp;gt; (die Kommentierung dieses Teils ist abgeschlossen)&lt;br /&gt;
* &amp;lt;b&amp;gt;übernommen&amp;lt;/b&amp;gt; (dieser Teil wurde in das finale Word-Dokument übernommen)&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Kapitel / Teil&lt;br /&gt;
! Person&lt;br /&gt;
! Status&lt;br /&gt;
! Kommentar&lt;br /&gt;
|-&lt;br /&gt;
| B 5.XX Web-Anwendungen, Beschreibung und Abgrenzung (inkl. Seite 5)&lt;br /&gt;
| Markus&lt;br /&gt;
| in Diskussion&lt;br /&gt;
| keiner&lt;br /&gt;
|-&lt;br /&gt;
&amp;lt;!--| G 2.1 Fehlende oder unzureichende Regelungen&lt;br /&gt;
| unbekannt&lt;br /&gt;
| offen&lt;br /&gt;
| keiner&lt;br /&gt;
|- &lt;br /&gt;
| G 2.4 Unzureichende Kontrolle der Sicherheitsmaßnahmen&lt;br /&gt;
| unbekannt&lt;br /&gt;
| offen&lt;br /&gt;
| keiner&lt;br /&gt;
|-&lt;br /&gt;
| G 2.7 Unerlaubte Ausübung von Rechten&lt;br /&gt;
| unbekannt&lt;br /&gt;
| offen&lt;br /&gt;
| keiner&lt;br /&gt;
|-&lt;br /&gt;
| G 2.22 Fehlende Auswertung von Protokolldaten&lt;br /&gt;
| unbekannt&lt;br /&gt;
| offen&lt;br /&gt;
| keiner&lt;br /&gt;
|-&lt;br /&gt;
| G 2.27 Fehlende oder unzureichende Dokumentation&lt;br /&gt;
| unbekannt&lt;br /&gt;
| offen&lt;br /&gt;
| keiner&lt;br /&gt;
|-&lt;br /&gt;
| G 2.67 Ungeeignete Verwaltung von Zugangs- und Zugriffsrechten&lt;br /&gt;
| unbekannt&lt;br /&gt;
| offen&lt;br /&gt;
| keiner&lt;br /&gt;
|-&lt;br /&gt;
| G 2.87 Verwendung unsicherer Protokolle in öffentlichen Netzen&lt;br /&gt;
| unbekannt&lt;br /&gt;
| offen&lt;br /&gt;
| keiner&lt;br /&gt;
|-&lt;br /&gt;
| G 2.103 Unzureichende Schulung der Mitarbeiter&lt;br /&gt;
| Matthias&lt;br /&gt;
| offen&lt;br /&gt;
| keiner&lt;br /&gt;
|- --&amp;gt;&lt;br /&gt;
| G 2.WA01 Mangelhafte Auswahl oder Konzeption von Web-Anwendungen&lt;br /&gt;
| Matthias&lt;br /&gt;
| In Diskussion&lt;br /&gt;
| keiner&lt;br /&gt;
|-&lt;br /&gt;
| G 2.WA02 Mängel bei der Entwicklung und der Erweiterung von Web-Anwendungen&lt;br /&gt;
| Matthias&lt;br /&gt;
| In Diskussion&lt;br /&gt;
| keiner&lt;br /&gt;
|-&lt;br /&gt;
| G 2.WA03 Unzureichender Schutz personenbezogener Daten bei Web-Anwendungen&lt;br /&gt;
| Matthias&lt;br /&gt;
| In Diskussion&lt;br /&gt;
| keiner&lt;br /&gt;
|-&lt;br /&gt;
&amp;lt;!-- | G 3.16 Fehlerhafte Administration von Zugangs- und Zugriffsrechten&lt;br /&gt;
| unbekannt&lt;br /&gt;
| offen&lt;br /&gt;
| keiner&lt;br /&gt;
|-&lt;br /&gt;
| G 3.38 Konfigurations- und Bedienungsfehler&lt;br /&gt;
| unbekannt&lt;br /&gt;
| offen&lt;br /&gt;
| keiner&lt;br /&gt;
|-&lt;br /&gt;
| G 3.43 Ungeeigneter Umgang mit Passwörtern&lt;br /&gt;
| unbekannt&lt;br /&gt;
| offen&lt;br /&gt;
| keiner&lt;br /&gt;
|-&lt;br /&gt;
| G 4.22 Software-Schwachstellen oder -Fehler&lt;br /&gt;
| unbekannt&lt;br /&gt;
| offen&lt;br /&gt;
| keiner&lt;br /&gt;
|- --&amp;gt;&lt;br /&gt;
| G 4.33 Unzureichende oder fehlende Authentisierung&lt;br /&gt;
| Matthias&lt;br /&gt;
| In Diskussion&lt;br /&gt;
| keiner&lt;br /&gt;
|-&lt;br /&gt;
&amp;lt;!-- | G 4.35 Unsichere kryptographische Algorithmen&lt;br /&gt;
| unbekannt&lt;br /&gt;
| offen&lt;br /&gt;
| keiner&lt;br /&gt;
|- --&amp;gt;&lt;br /&gt;
| G 4.WA04 Unzureichende Validierung von Ein- und Ausgabedaten bei Web-Anwendungen&lt;br /&gt;
| Matthias&lt;br /&gt;
| In Diskussion&lt;br /&gt;
| keiner&lt;br /&gt;
|-&lt;br /&gt;
| G 4.WA05 Fehlende oder mangelhafte Fehlerbehandlung durch Web-Anwendungen&lt;br /&gt;
| Tobias&lt;br /&gt;
| In Diskussion&lt;br /&gt;
| keiner&lt;br /&gt;
|-&lt;br /&gt;
| G 4.WA06 Unzureichende Nachvollziehbarkeit von sicherheitsrelevanten Ereignissen bei Web-Anwendungen&lt;br /&gt;
| Matthias&lt;br /&gt;
| In Diskussion&lt;br /&gt;
| keiner&lt;br /&gt;
|-&lt;br /&gt;
| G 4.WA07 Offenlegung von Informationen bei Web-Anwendungen&lt;br /&gt;
| Matthias&lt;br /&gt;
| in Diskussion&lt;br /&gt;
| keiner&lt;br /&gt;
|-&lt;br /&gt;
&amp;lt;!-- | G 5.18 Systematisches Ausprobieren von Passwörtern&lt;br /&gt;
| unbekannt&lt;br /&gt;
| offen&lt;br /&gt;
| keiner&lt;br /&gt;
|-&lt;br /&gt;
| G 5.19 Missbrauch von Benutzerrechten&lt;br /&gt;
| unbekannt&lt;br /&gt;
| offen&lt;br /&gt;
| keiner&lt;br /&gt;
|-&lt;br /&gt;
| G 5.20 Missbrauch von Administratorrechten&lt;br /&gt;
| unbekannt&lt;br /&gt;
| offen&lt;br /&gt;
| keiner&lt;br /&gt;
|-&lt;br /&gt;
| G 5.28 Verhinderung von Diensten&lt;br /&gt;
| unbekannt&lt;br /&gt;
| offen&lt;br /&gt;
| keiner&lt;br /&gt;
|-&lt;br /&gt;
| G 5.87 Web-Spoofing&lt;br /&gt;
| unbekannt&lt;br /&gt;
| offen&lt;br /&gt;
| keiner&lt;br /&gt;
|- --&amp;gt;&lt;br /&gt;
| G 5.131 SQL-Injection&lt;br /&gt;
| Ralf&lt;br /&gt;
| in Arbeit&lt;br /&gt;
| keiner&lt;br /&gt;
|-&lt;br /&gt;
| G 5.WA08 Unberechtigter Zugriff auf oder Manipulation von Daten bei Web-Anwendungen&lt;br /&gt;
| unbekannt&lt;br /&gt;
| &amp;lt;b&amp;gt;offen&amp;lt;/b&amp;gt;&lt;br /&gt;
| keiner, Seite 17&lt;br /&gt;
|-&lt;br /&gt;
| G 5.WA09 Missbrauch einer Web-Anwendung durch automatisierte Nutzung&lt;br /&gt;
| unbekannt&lt;br /&gt;
| &amp;lt;b&amp;gt;offen&amp;lt;/b&amp;gt;&lt;br /&gt;
| keiner, Seite 18&lt;br /&gt;
|-&lt;br /&gt;
| G 5.WA10 Fehler in der Logik von Web-Anwendungen&lt;br /&gt;
| Ralf&lt;br /&gt;
| in Arbeit&lt;br /&gt;
| keiner&lt;br /&gt;
|-&lt;br /&gt;
| G 5.WA11 Umgehung clientseitig umgesetzter Sicherheitsfunktionen von Web-Anwendungen&lt;br /&gt;
| Ralf&lt;br /&gt;
| in Arbeit&lt;br /&gt;
| keiner&lt;br /&gt;
|-&lt;br /&gt;
| G 5.WA12 Unzureichendes Session-Management von Web-Anwendungen&lt;br /&gt;
| unbekannt&lt;br /&gt;
| &amp;lt;b&amp;gt;offen&amp;lt;/b&amp;gt;&lt;br /&gt;
| keiner, Seite 21&lt;br /&gt;
|-&lt;br /&gt;
| G 5.WA13 Cross-Site Scripting (XSS)&lt;br /&gt;
| Ralf&lt;br /&gt;
| in Arbeit&lt;br /&gt;
| keiner&lt;br /&gt;
|-&lt;br /&gt;
| G 5.WA14 Cross-Site Request Forgery (CSRF, XSRF)&lt;br /&gt;
| Matthias&lt;br /&gt;
| in Diskussion&lt;br /&gt;
| keiner&lt;br /&gt;
|-&lt;br /&gt;
| G 5.WA15 Umgehung der Autorisierung bei Web-Anwendungen&lt;br /&gt;
| unbekannt&lt;br /&gt;
| &amp;lt;b&amp;gt;offen&amp;lt;/b&amp;gt;&lt;br /&gt;
| keiner, Seite 25&lt;br /&gt;
|-&lt;br /&gt;
| G 5.WA16 Einbindung von fremden Daten und Schadcode bei Web-Anwendungen&lt;br /&gt;
| unbekannt&lt;br /&gt;
| &amp;lt;b&amp;gt;offen&amp;lt;/b&amp;gt;&lt;br /&gt;
| keiner, Seite 26 u. 27&lt;br /&gt;
|-&lt;br /&gt;
| G 5.WA17 Injection-Angriffe&lt;br /&gt;
| Ralf&lt;br /&gt;
| in Arbeit&lt;br /&gt;
| keiner&lt;br /&gt;
|-&lt;br /&gt;
| G 5.WA18 Clickjacking&lt;br /&gt;
| unbekannt&lt;br /&gt;
| &amp;lt;b&amp;gt;offen&amp;lt;/b&amp;gt;&lt;br /&gt;
| keiner, Seite 29&lt;br /&gt;
|-&lt;br /&gt;
&amp;lt;!--| M 2.1 (A) Festlegung von Verantwortlichkeiten und Regelungen&lt;br /&gt;
| unbekannt&lt;br /&gt;
| offen&lt;br /&gt;
| keiner&lt;br /&gt;
|-&lt;br /&gt;
| M 2.31 (C) Dokumentation der zugelassenen Benutzer und Rechteprofile&lt;br /&gt;
| unbekannt&lt;br /&gt;
| offen&lt;br /&gt;
| keiner&lt;br /&gt;
|-&lt;br /&gt;
| M 2.34 (A) Dokumentation der Veränderungen an einem bestehenden System&lt;br /&gt;
| unbekannt&lt;br /&gt;
| offen&lt;br /&gt;
| keiner&lt;br /&gt;
|-&lt;br /&gt;
| M 2.63 (A) Einrichten der Zugriffsrechte&lt;br /&gt;
| unbekannt&lt;br /&gt;
| offen&lt;br /&gt;
| keiner&lt;br /&gt;
|-&lt;br /&gt;
| M 2.64 (A) Kontrolle der Protokolldateien&lt;br /&gt;
| unbekannt&lt;br /&gt;
| offen&lt;br /&gt;
| keiner&lt;br /&gt;
|-&lt;br /&gt;
| M 2.110 (B) Datenschutzaspekte bei der Protokollierung&lt;br /&gt;
| unbekannt&lt;br /&gt;
| offen&lt;br /&gt;
| keiner&lt;br /&gt;
|-&lt;br /&gt;
| M 5.66 (Z) Verwendung von TLS/SSL&lt;br /&gt;
| unbekannt&lt;br /&gt;
| offen&lt;br /&gt;
| keiner&lt;br /&gt;
|- --&amp;gt;&lt;br /&gt;
| M 2.WA02 (B) Dokumentation der Architektur von Web-Anwendungen&lt;br /&gt;
| Matthias&lt;br /&gt;
| in Diskussion&lt;br /&gt;
| keiner&lt;br /&gt;
|-&lt;br /&gt;
| M 4.WA20 (A) Sicherer Entwurf der Logik von Web-Anwendungen&lt;br /&gt;
| Markus&lt;br /&gt;
| in Diskussion&lt;br /&gt;
| keiner&lt;br /&gt;
|-&lt;br /&gt;
| M 2.WA12 (B) Entwicklung und Erweiterung von Anwendungen&lt;br /&gt;
| Markus&lt;br /&gt;
| in Diskussion&lt;br /&gt;
| keiner&lt;br /&gt;
|-&lt;br /&gt;
| M 5.WA21 (A) Sichere Anbindung von Hintergrundsystemen an Web-Anwendungen&lt;br /&gt;
| Markus&lt;br /&gt;
| in Diskussion&lt;br /&gt;
| keiner&lt;br /&gt;
|-&lt;br /&gt;
| M 5.WA23 (A) Systemarchitektur einer Web-Anwendung&lt;br /&gt;
| Makrus&lt;br /&gt;
| in Diskussion&lt;br /&gt;
| keiner&lt;br /&gt;
|-&lt;br /&gt;
| M 2.WA24 (W) Web-Tracking&lt;br /&gt;
| Matthias&lt;br /&gt;
| in Diskussion&lt;br /&gt;
| keiner&lt;br /&gt;
|-&lt;br /&gt;
&amp;lt;!-- | M 4.176 (A) Auswahl einer Authentisierungsmethode für Webangebote&lt;br /&gt;
| unbekannt&lt;br /&gt;
| offen&lt;br /&gt;
| keiner&lt;br /&gt;
|-&lt;br /&gt;
| M 2.80 (A) Erstellung eines Anforderungskatalogs für Standardsoftware&lt;br /&gt;
| unbekannt&lt;br /&gt;
| offen&lt;br /&gt;
| keiner&lt;br /&gt;
|-&lt;br /&gt;
| M 2.62 (A) Software-Abnahme- und Freigabe-Verfahren&lt;br /&gt;
| Matthias&lt;br /&gt;
| offen&lt;br /&gt;
| keiner&lt;br /&gt;
|-&lt;br /&gt;
| M 2.363 (A) Schutz gegen SQL-Injection&lt;br /&gt;
| unbekannt&lt;br /&gt;
| offen&lt;br /&gt;
| keiner&lt;br /&gt;
|-&lt;br /&gt;
| M 3.5 (B) Schulung zu Sicherheitsmaßnahmen&lt;br /&gt;
| Matthias&lt;br /&gt;
| offen&lt;br /&gt;
| keiner&lt;br /&gt;
|- --&amp;gt;&lt;br /&gt;
| M 4.WA04 (A) Authentisierung bei Web-Anwendungen&lt;br /&gt;
| Matthias&lt;br /&gt;
| in Arbeit&lt;br /&gt;
| keiner&lt;br /&gt;
|-&lt;br /&gt;
| M 4.WA05 (A) Umfassende Ein- und Ausgabevalidierung bei Web-Anwendungen&lt;br /&gt;
| Markus&lt;br /&gt;
| in Diskussion&lt;br /&gt;
| keiner&lt;br /&gt;
|-&lt;br /&gt;
| M 4.WA06 (A) Session-Management bei Web-Anwendungen&lt;br /&gt;
| Markus&lt;br /&gt;
| in Diskussion&lt;br /&gt;
| keiner&lt;br /&gt;
|-&lt;br /&gt;
| M 4.WA07 (A) Fehlerbehandlung durch Web-Anwendungen&lt;br /&gt;
| Markus&lt;br /&gt;
| in Diskussion&lt;br /&gt;
| keiner&lt;br /&gt;
|-&lt;br /&gt;
| M 4.WA08 (B) Schutz vor automatisierter Nutzung von Web-Anwendungen&lt;br /&gt;
| Markus&lt;br /&gt;
| in Diskussion&lt;br /&gt;
| keiner&lt;br /&gt;
|-&lt;br /&gt;
| M 4.WA11 (A) Sichere Konfiguration von Web-Anwendungen&lt;br /&gt;
| Markus&lt;br /&gt;
| in Diskussion&lt;br /&gt;
| keiner&lt;br /&gt;
|-&lt;br /&gt;
| M 4.WA13 (A) Kontrolliertes Einbinden von Daten und Inhalten bei Web-Anwendungen&lt;br /&gt;
| Markus&lt;br /&gt;
| in Diskussion&lt;br /&gt;
| keiner&lt;br /&gt;
|-&lt;br /&gt;
| M 4.WA15 (A) Schutz vertraulicher Daten bei Web-Anwendungen&lt;br /&gt;
| Markus&lt;br /&gt;
| in Diskussion&lt;br /&gt;
| keiner&lt;br /&gt;
|-&lt;br /&gt;
| M 4.WA16 (A) Zugriffskontrolle bei Web-Anwendungen&lt;br /&gt;
| Markus&lt;br /&gt;
| in Diskussion&lt;br /&gt;
| keiner&lt;br /&gt;
|-&lt;br /&gt;
| M 4.WA19 (B) Verhinderung von Cross-Site Request Forgery (CSRF, XSRF)&lt;br /&gt;
| Markus&lt;br /&gt;
| in Diskussion&lt;br /&gt;
| keiner&lt;br /&gt;
|-&lt;br /&gt;
| M 4.WA22 (B) Verhinderung der Blockade von Ressourcen (DoS) bei Web-Anwendungen&lt;br /&gt;
| Markus&lt;br /&gt;
| In Diskussion&lt;br /&gt;
| keiner&lt;br /&gt;
|-&lt;br /&gt;
| M 4.WA25 (C) Verhinderung von Clickjacking&lt;br /&gt;
| Markus&lt;br /&gt;
| in Diskussion&lt;br /&gt;
| keiner&lt;br /&gt;
|-&lt;br /&gt;
&amp;lt;!-- | M 2.8 (A) Vergabe von Zugriffsrechten&lt;br /&gt;
| unbekannt&lt;br /&gt;
| offen&lt;br /&gt;
| keiner&lt;br /&gt;
|-&lt;br /&gt;
| M 2.35 (A) Informationsbeschaffung über Sicherheitslücken des Systems&lt;br /&gt;
| unbekannt&lt;br /&gt;
| offen&lt;br /&gt;
| keiner&lt;br /&gt;
|-&lt;br /&gt;
| M 2.273 (A) Zeitnahes Einspielen sicherheitsrelevanter Patches und Updates&lt;br /&gt;
| unbekannt&lt;br /&gt;
| offen&lt;br /&gt;
| keiner&lt;br /&gt;
|-&lt;br /&gt;
| M 4.78 (B) Sorgfältige Durchführung von Konfigurationsänderungen&lt;br /&gt;
| unbekannt&lt;br /&gt;
| offen&lt;br /&gt;
| keiner&lt;br /&gt;
|- --&amp;gt;&lt;br /&gt;
| M 4.WA09 (C) Protokollierung sicherheitsrelevanter Ereignisse von Web-Anwendungen&lt;br /&gt;
| unbekannt&lt;br /&gt;
| &amp;lt;b&amp;gt;offen&amp;lt;/b&amp;gt;&lt;br /&gt;
| keiner, Seite 56 u. 57 u. 58&lt;br /&gt;
|-&lt;br /&gt;
| M 4.WA14 (A) Restriktive Herausgabe sicherheitsrelevanter Informationen bei Web-Anwendungen&lt;br /&gt;
| Markus&lt;br /&gt;
| in Diskussion&lt;br /&gt;
| keiner&lt;br /&gt;
|-&lt;br /&gt;
| Dokument &amp;quot;Webanwendungen_Goldene Regeln.pdf&amp;quot;&lt;br /&gt;
| Matthias&lt;br /&gt;
| In Diskussion&lt;br /&gt;
| keiner&lt;br /&gt;
|-&lt;br /&gt;
| Dokument &amp;quot;Webanwendungen_Hilfsmittel.pdf&amp;quot;&lt;br /&gt;
| unbekannt&lt;br /&gt;
| &amp;lt;b&amp;gt;offen&amp;lt;/b&amp;gt;&lt;br /&gt;
| keiner, 3 Seiten&lt;br /&gt;
|-&lt;br /&gt;
| Dokument &amp;quot;Webanwendungen_Kreuzreferenztabelle.pdf&amp;quot;&lt;br /&gt;
| unbekannt&lt;br /&gt;
| &amp;lt;b&amp;gt;offen&amp;lt;/b&amp;gt;&lt;br /&gt;
| keiner, 2 Seiten&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
Weitere Informationen und die aktuellen Arbeitsstände gibt es unter [[Talk:OWASP_Review_BSI_IT-Grundschutz_Baustein_Webanwendungen| &amp;quot;Discussion&amp;quot;]].&lt;br /&gt;
&lt;br /&gt;
==Coordinating Team==&lt;br /&gt;
* Tobias Glemser&lt;br /&gt;
* Boris Hemkemeier&lt;br /&gt;
* Kai Jendrian&lt;br /&gt;
* Ralf Reinhardt&lt;br /&gt;
* Dirk Wetter&lt;br /&gt;
&lt;br /&gt;
==Project Contributors==&lt;br /&gt;
* Dennis Moers&lt;br /&gt;
* Markus Miedaner&lt;br /&gt;
* [[User:Mrohr|Matthias Rohr]]&lt;br /&gt;
* ''Your name here''&lt;br /&gt;
&lt;br /&gt;
==Project Licence==&lt;br /&gt;
Creative Commons Attribution ShareAlike 3.0&lt;/div&gt;</summary>
		<author><name>Mrohr</name></author>	</entry>

	<entry>
		<id>https://wiki.owasp.org/index.php?title=Talk:OWASP_Review_BSI_IT-Grundschutz_Baustein_Webanwendungen&amp;diff=130147</id>
		<title>Talk:OWASP Review BSI IT-Grundschutz Baustein Webanwendungen</title>
		<link rel="alternate" type="text/html" href="https://wiki.owasp.org/index.php?title=Talk:OWASP_Review_BSI_IT-Grundschutz_Baustein_Webanwendungen&amp;diff=130147"/>
				<updated>2012-05-21T08:30:56Z</updated>
		
		<summary type="html">&lt;p&gt;Mrohr: /* M 4.WA20Sicherer Entwurf der Logik von Web-Anwendungen (Markus, Matthias) */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Since it's about a review of a document in German, all the discussions will be done in German :-)&lt;br /&gt;
&lt;br /&gt;
Diskussionen rund um den Review des &amp;quot;IT-Grundschutzbausteins Webanwendungen&amp;quot; finden hier statt, sinnvollerweise auf Deutsch :-)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Vorschlag für Kriterien, die an unser Review angelegt werden sollten (.kai) ==&lt;br /&gt;
&lt;br /&gt;
* Der Baustein soll alle wichtigen Themen der Entwicklung sicherer&lt;br /&gt;
Webanwendungen enthalten.&lt;br /&gt;
&lt;br /&gt;
* Der Baustein soll die verschiedenen Phasen der Software-Entwicklung&lt;br /&gt;
vollständig abdecken.&lt;br /&gt;
&lt;br /&gt;
* Der Baustein soll zwischen verbindlichen, prüfbaren Vorgaben und&lt;br /&gt;
unverbindlichen Empfehlungen sprachlich sauber unterscheiden (hier&lt;br /&gt;
spielt mein Auditorenblick eine Rolle). Vor allem soll der Baustein&lt;br /&gt;
verbindliche Anforderungen auch tatsächlich stellen. Alle&lt;br /&gt;
verbindlichen Anforderungen müssen unabhängig von der jeweiligen&lt;br /&gt;
Umgebung auch umsetzbar sein, d.h. sie müssen entsprechend generisch&lt;br /&gt;
sein.&lt;br /&gt;
&lt;br /&gt;
* Die Maßnahmen sollen nur in (begründbaren) Ausnahmen zu Empfehlungen&lt;br /&gt;
von OWASP im Widerspruch stehen.&lt;br /&gt;
&lt;br /&gt;
* Die Maßnahmen sollen verständlich und anwendbar sein.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== &amp;quot;Hilfsmittel&amp;quot; (Markus) ==&lt;br /&gt;
Ich würde das Script zur Vermeidung von Clickjacking wrappen und nicht als losen Skript-block in den Text einbinden - einfach schlechter Programmierstiel diese losen Blöcke.&lt;br /&gt;
Der Zugriff auf das Body-Element mit byTagName-Array[0] ist auch nicht wirklich gut. Ich halte Zugriffe über das DOM (klassisch), bei ID bzw. XPATH für besser. &lt;br /&gt;
&lt;br /&gt;
SQL-Injection Characters:&lt;br /&gt;
die Pipe fehlt hier zur Textkonatenierung&lt;br /&gt;
+ / - haben auch eine Bedeutung bei JOINs.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== &amp;quot;Goldene Regeln&amp;quot; (Matthias) ==&lt;br /&gt;
&lt;br /&gt;
Hier meine Anmerkungen zu diesem Dokument:&lt;br /&gt;
&lt;br /&gt;
; 1. Für mich fehlende Punkte&lt;br /&gt;
* Korrektur der Ursache (Root Cause) von Schwachstellen statt  Verhinderung deren Ausnutzung&lt;br /&gt;
* Bezug auf Minimierung der Angriffsfläche und Least-Privilege-Prinzip&lt;br /&gt;
* Bezug auf Defense-in-Depth-Prinzip&lt;br /&gt;
* Verwendung von getesteten Security APIs (z.B. OWASP ESAPI) statt selbstentwickelter Funktionen&lt;br /&gt;
* Bezug auf Externalisierung von Sicherheitsfunktionen, sowie deklerative vor programmatischer Sicherheit.&lt;br /&gt;
&lt;br /&gt;
; 2. Begriff &amp;quot;Web-Anwendung&amp;quot;&lt;br /&gt;
Würde ich generell durch &amp;quot;Webanwendung&amp;quot; ersetzen.&lt;br /&gt;
&lt;br /&gt;
; 3. Einleitung (&amp;quot;Web-Anwendungen stellen Funktionalität zur Verfügung, ...&amp;quot;)&lt;br /&gt;
&lt;br /&gt;
Wozu dient dieser Satz?&lt;br /&gt;
&lt;br /&gt;
; 4. &amp;quot;Die Architektur der Web-Anwendung ist im Sicherheitskonzept zu  dokumentieren.....&amp;quot; &lt;br /&gt;
&lt;br /&gt;
Ich fände es sinnvoller, wenn hier von der &amp;quot;Sicherheitsarchitektur&amp;quot; gesprochen wird, welche etwa neben den sicherheitsrelevanten Datenflüssen, sensible Komponenten, Entry Points, Akteure architekturelle Security Controls wie Authentisierung, Kryptographie und natürlich die Trust Boundaries beinhaltet.&lt;br /&gt;
&lt;br /&gt;
; 5. &amp;quot;Bei Web-Anwendungen handelt es sich häufig um spezielle Eigenentwicklungen....&amp;quot;&lt;br /&gt;
&lt;br /&gt;
Erstens würde ich hier den geläufigen Begriff &amp;quot;Individualsoftware&amp;quot; verwenden. Zweitens würde ich statt bestimmte SDLC-Phasen vorzugeben (die Begriffe &amp;quot;Softwareverteilung&amp;quot; und &amp;quot;Integration&amp;quot; sind mir bei Webanwendungen bisher noch nicht so häufig untergekommen), besser von der Notwendigkeit sprechen, Sicherheit in allen Entwicklungsphasen zu berücksichtigen, also eines SDLs.&lt;br /&gt;
&lt;br /&gt;
; 6. &amp;quot;Alle Ein- und Ausgaben der Web-Anwendung müssen in eine normalisierte Form überführt werden....&amp;quot;&lt;br /&gt;
&lt;br /&gt;
Normalisierung ist für mich nicht gleich Kanonsierung, auch wenn beide Begriffe häufig als synonym verwendet werden.  Der Unterschied wird in der [http://owasp-esapi-java.googlecode.com/svn/trunk_doc/2.0-rc4/org/owasp/esapi/Encoder.html API-Beschreibung der ESAPI] erklärt. Die Normalisierungs-Funktion ist allerdings schon vor einiger Zeit aus der ESAPI [https://lists.owasp.org/pipermail/esapi-dev/2010-January/000266.html rausgeflogen]. Die generelle Kanonisierung von Ausgaben halte ich dazu für nicht sinnvoll.&lt;br /&gt;
&lt;br /&gt;
Zweitens, finde ich den weiteren Text zwar grundsätzlich formal korrekt, aber so allgemein, dass dieser glaube ich niemandem so richtig etwas bringt.  &lt;br /&gt;
&lt;br /&gt;
Besser fände ich hier Ein- von Ausgabevalidierung grundsätzlich voneinander abzugrenzen. Etwa was ich per Eingabevalidierung (Längenprüfung, Casting, etc. per Whitelisting) und was mit Ausgebavalidierung (Enkodierung, Escaping, Parametrisierung) machen muss und kann.&lt;br /&gt;
&lt;br /&gt;
Eingabedaten können technisch zudem auch Werte eingelesener Property-Dateien sein. Muss ich die auch validieren? Ist das dann noch Grundschutz? &lt;br /&gt;
&lt;br /&gt;
; 7. &amp;quot;Für den Zugriff auf sensitive Funktionen oder Informationen muss die Web-Anwendung eine wirksame Authentisierung und Sitzungsverwaltung unterstützen. Die Eigenschaften der Sitzungs-ID müssen so gewählt werden, dass die Sitzung ausreichend geschützt ist. ....&amp;quot;&lt;br /&gt;
&lt;br /&gt;
Besser fände ich &amp;quot;eine Authentisierung, die über eine dem Schutzbedarf der Anwendung angemessene Stärke verfügt.&amp;quot; &lt;br /&gt;
&lt;br /&gt;
Eigentlich geht es doch mehr um den Schutz der Sitzungs-ID, da diese gewöhnlich im Verlauf einer Sitzung den Client authentisiert. Oder den Schutz des Zugriffs auf eine Sitzung. &lt;br /&gt;
&lt;br /&gt;
Zudem fehlt hier meiner Meinung nach der Hinweis auf die bevorzugte Verwendung getesteter Standardkomponenten.&lt;br /&gt;
&lt;br /&gt;
; 8. &amp;quot;Die Web-Anwendung sollte die zu übermittelnden Daten schützen.&amp;quot;&lt;br /&gt;
&lt;br /&gt;
Dies würde ich nur auf sensible Daten beziehen. Zusätzlich zu HTTPS würde ich hier schreiben, dass sensible Daten generell nicht in der URL übertragen werden dürfen.&lt;br /&gt;
&lt;br /&gt;
; 9. &amp;quot;Die Preisgabe interner Informationen (z.B. Kommentare, Fehlermeldungen)&amp;quot;&lt;br /&gt;
&lt;br /&gt;
Hier würde ich eher schreiben &amp;quot;(IN Kommentaren, Fehlermeldungen, HTTP Headern, etc.)&amp;quot;&lt;br /&gt;
&lt;br /&gt;
; 10. &amp;quot;Fehler müssen so behandelt werden, ... müssen Fehler bei der Autorisierung zu einer Verweigerung beim Zugriff auf die angeforderte Ressource führen.&amp;quot;&lt;br /&gt;
&lt;br /&gt;
Sprachlich: &amp;quot;Die Webanwendung muss sich stets in einem sicheren Zustand befinden. Beispielsweise müssen Fehler bei der Autorisierung zu einer Verweigerung des Zugriffs führen (Default-Deny-Strategie).&amp;quot;&lt;br /&gt;
&lt;br /&gt;
; 11. &amp;quot;Die Logging-Funktionen der Web-Anwendung müssen aufgetretene Ereignisse derart protokollieren, dass sicherheitskritische Vorfälle nachvollzogen werden können.&amp;quot;&lt;br /&gt;
&lt;br /&gt;
Hier würde hier eher von &amp;quot;allen sicherheitsrelevanten Ereignissen&amp;quot; sprechen.&lt;br /&gt;
&lt;br /&gt;
Weiterhin sollten insbesondere beim Logging der Datenschutz berücksichtigt werden, personenbezogene Daten also nach Möglichkeit nicht oder nur anonymisiert in technischen Logdateien protokolliert werden.&lt;br /&gt;
&lt;br /&gt;
; 12. &amp;quot;Alle Sicherheitsmechanismen (z.B. Authentisierung und Zugriffskontrolle) sind serverseitig zu implementieren und können nicht durch clientseitige Mechanismen ersetzt werden.&amp;quot;&lt;br /&gt;
&lt;br /&gt;
Die Aussage ist so nicht korrekt. Darüber hatten wir bereits bei der ASVS mehrfach diskutiert. &lt;br /&gt;
&lt;br /&gt;
Überall dort wo der Client angegriffen wird, also etwa bei RIAs (Stichwort DOM-Based XSS) müssen wir Security Controls clientseitig implementieren. Es gibt mittlerweile deshalb auch eine Portierung der ESAPI auf Javascript. Überall dort wo der Server oder Hintegrundsysteme angegriffen werden, ist die Aussage aber natürlich zutreffend.&lt;br /&gt;
&lt;br /&gt;
== &amp;quot;Gefährdungen&amp;quot; (Markus, Dennis, .... &amp;lt;Dein Name&amp;gt;) ==&lt;br /&gt;
; Generell:&lt;br /&gt;
Reference auf RFCs fehlen.&lt;br /&gt;
&lt;br /&gt;
==B.5.XX Web-Anwendungen ==&lt;br /&gt;
; 1. Erster Absatz - Letzter Satz: --Wieso werden hier nur HTML/XML Doks und Oberflächen angesprochen? Was ist der Unterschied zwischen einem HTML-Dok und einer Oberfläche? Was ist mit  Flash, etc.? Was ist mit WebSockets?&lt;br /&gt;
; 2. Stichpunkt &amp;quot;Protokollierung&amp;quot;: Sicherheits relevant ist ein sehr dehnbarer Begriff - Eine bessere Formulierung könnte sein: Zur Rekonstruktion von Nutzerhandlungen nötige Ereignisse (positve &amp;amp; negative) müssen protokolliert werden . . . &lt;br /&gt;
; 3. Absatz: &amp;quot;Abgrenzung des Bausteins&amp;quot;: &amp;quot;Die spez. Sicherheitsanforderungen an Web-Services werden in diesem Baustein nicht betrachtet&amp;quot; --&amp;gt; Wie so nicht? Was ist das Backend von einer Rest / AJAX-basierenden Webanwendung denn anderes als ein Web-Service? Diesen Satz würde ich entfernen.&lt;br /&gt;
; 4.Vorsätzliche Handlungen -&amp;gt; Web-Spoofing (G.5.87) -- Missverständliche Bezeichnung / Nomenklatur&lt;br /&gt;
; 5. Seite 4 : erste Zeile &amp;quot;Umsetzung&amp;quot;: &amp;quot;dafür umzusetztende Komponenten müssen die Webanwendung schützen...&amp;quot; - Hier fehlt mir der Hinweis, dass dieser Schutz verifiziert werden muss.&lt;br /&gt;
; 6 Seite 5: &amp;quot;Umsetzung&amp;quot; - Wir haben CSRF, D(D)os und SQL-Injection aber wo ist XSS?&lt;br /&gt;
; 7 Seite 7: &amp;quot;Die Sicherheitsfunktion wird ausschließlich clientseitig...&amp;quot; --&amp;gt; Warum muss der Angreifer überhaupt einen Browser umkonfigurieren? Was ist mit Proxies, Scripts, etc.? Ich würde das reduzieren darauf, dass rein Webbrowser-basierende Schutzfunktionen einfach umgangen werden können.&lt;br /&gt;
; 8 Seite 8: Die angesprochenen Punkte hinterlassen den Eindruck nicht vollständig zu sein: Mir fehlen Punkte wie &amp;quot;Outsourcing&amp;quot;, &amp;quot;KnowHow der Entwickler&amp;quot;, Tooling, Framework-Auswahl, etc.&lt;br /&gt;
; 9 Seite 9: Eigentlich möchte der Autor hier über Datenschutz sprechen. Abgesehen von den letzten drei Zeilen geht es aber nur um &amp;quot;User tracking&amp;quot; - Wo ist der Rest der Datenschutzproblematik? Warum der Fokuss auf Tracking? Mir ist das zu einseitig.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
tbd.&lt;br /&gt;
&lt;br /&gt;
; Wortwahl:&lt;br /&gt;
Ich stosse innerhalb der Texte immer wieder an die Worten '''Hintergrundsystem''' und '''Sicherheitskontext'''.&lt;br /&gt;
'''Hintergrundsystem:''' besseres Synonym?&lt;br /&gt;
'''Sicherheitskontext:''' nur weil es in den Texten um Sicherheit geht muss nicht an jeder Stelle immer wieder das Wort _Sicherheits_kontext eingebaut werden.&lt;br /&gt;
Bsp: &amp;quot;Erlangt ein Angreifer Kenntnis von einer solchen gültigen, aber nicht mehr genutzten SessionID, so kann er die Web-Anwendung im Sicherheitskontext des nicht abgemeldeten Benutzers weiter verwenden.&amp;quot; (G 5,WA12 Unzureichendes Session-Management von Web-Anwendungen)&lt;br /&gt;
Verbesserungsansansatz: ... so kann er die Web-Anwendung anstelle des eigentlichen Besitzers weiterhin verwenden.&lt;br /&gt;
&lt;br /&gt;
== &amp;quot;G 2.WA01 Mangelhafte Auswahl oder Konzeption von Web-Anwendungen&amp;quot; (Matthias) ==&lt;br /&gt;
&lt;br /&gt;
Nachdem ich mir diese Gefährdung durchgelesen hatte, fehlten mir ehrlich gesagt etwas die Worte. Nicht nur, dass hier fast jeder zweite Satz entweder falsch ist bzw. massive Fehler enthält oder ich diesen schlicht nicht verstehe, ist der ganze Text sprachlich wirklich enorm verbesserungsfähig. &lt;br /&gt;
&lt;br /&gt;
Na gut, ich konzentriere mich mal auf die fachlichen Punkte:&lt;br /&gt;
&lt;br /&gt;
; 1. Security Controls&lt;br /&gt;
Werden mal mit &amp;quot;Schutzmechanismen&amp;quot;, mal mit &amp;quot;Sicherheitskomponenten&amp;quot; und dann wieder als &amp;quot;Sicherheitsfunktionen&amp;quot; bezeichnet. Hier macht eine einheitliche Benennung sicherlich Sinn und ist weniger verwirrend.&lt;br /&gt;
&lt;br /&gt;
; 2. &amp;quot;Eine Web-Anwendung ist in der Regel ein verteiltes, komplexes System bestehend aus unterschiedlichen Komponenten (z. B. Webserver, Applikationsserver, Hintergrundsysteme)&amp;quot;&lt;br /&gt;
&lt;br /&gt;
Eine Webanwendung besteht sicher nicht aus einem Webserver- oder anderer infrastruktureller Komponenten, sondern ist Software welches diese nutzt.&lt;br /&gt;
&lt;br /&gt;
; 3. &amp;quot;Bei individuell entwickelten Web-Anwendungen sind im Allgemeinen die Frameworks, Komponenten und Schnittstellen im Rahmen der Konzeption auszuwählen und deren Einbindung und Absicherung zu betrachten....Im Gegensatz dazu ist bei der Konzeption von Web-Anwendungen auf Basis von Standardsoftware insbesondere auf die Auswahl der Software und die Konfiguration der Teilkomponenten zu achten&amp;quot;&lt;br /&gt;
&lt;br /&gt;
Wir unterscheiden im Rahmen von Webanwendungen eigentlich Free or Opensource Software (FOSS bzw. FLOSS), Standardsoftware und Individualsoftware voneinander. Wir unterscheiden nicht Frameworks von Standardsoftware. Frameworks können Teil von Standardsoftware sein, wie etwa bei SharePoint, SAP, etc, oder aber FOSS, wie etwa Spring. Die ganzen Absätze machen für mich daher keinen Sinn.&lt;br /&gt;
&lt;br /&gt;
; 4. &amp;quot;Eine Sicherheitsfunktion (z. B. Authentisierung, Autorisierung) wird nicht an einer Stelle umgesetzt und verwendet, sondern ist mehrfach in der Web- Anwendung realisiert. Wird diese Sicherheitsfunktion an den verschiedenen Stellen unterschiedlich umgesetzt, führt dies zu einem uneinheitlichen Sicherheitsniveau.&amp;quot;&lt;br /&gt;
&lt;br /&gt;
Natürlich ist die mehrfache Verwendung bestimmter Security Controls, beispielsweise von Zugriffskontrollen (Complete-Mediation) oder Validierung (Robustheit) erstrebenswert. Was der Autor hier wahrscheinlich meinte, war die Notwendigkeit diese zu Kapseln bzw. zu Externalisieren. Das bezieht sich im übrigen nicht nur auf die Controls selbst, sondern auch auf ihre Parametrisierung (etwa. über Konfigdateien / XACML).&lt;br /&gt;
&lt;br /&gt;
Wichtiger wäre in diesem Zusammenhang zudem die fehlende Berücksichtigung bestimmter Security Controls.&lt;br /&gt;
&lt;br /&gt;
; 5. &amp;quot;Auswahl von Web-Anwendungen auf Basis von Standardsoftware&amp;quot;&lt;br /&gt;
Was will der Satz sagen? Ich wähle Standardsoftware aus, aber doch keine Webanwendungen. Oder heißt das, ich kaufe eine existierende Anwendung ein (Webanwendung!=Indivudualsoftware)? &lt;br /&gt;
&lt;br /&gt;
; 6. &amp;quot;Das ausgewählte Produkt verfügt nicht über die ausreichende Sicherheitsfunktionalität, ... Daher müssen die notwendigen Schutzmechanismen nachträglich hinzugefügt werden, wodurch zusätzliche Aufwände entstehen.&amp;quot;&lt;br /&gt;
Das ist etwas sehr positiv formuliert. Tatsächlich können fehlende Security Controls in zugekaufter Software (insb. Standardsoftware) in der Realität häufig gar nicht hinzugefügt werden oder nur perimetrisch (z.B. per WAF oder Access Gateway).&lt;br /&gt;
&lt;br /&gt;
; 7. &amp;quot;Die Hintergrundsysteme werden unzureichend abgesichert und dadurch ist die Datenbank der Web-Anwendung aus dem Internet erreichbar.&amp;quot;&lt;br /&gt;
Gehören fehlende Netzwerksegmentierung bzw. Firewallregeln wirklich in diesen Kontext? Das ist doch eigentlich Grundschutz der Infrastruktur, oder?&lt;br /&gt;
&lt;br /&gt;
; 8. &amp;quot;Aufgrund schwacher Parameter in der Konfiguration des Frameworks zum Session-Management werden unsichere SessionIDs erzeugt.&amp;quot;&lt;br /&gt;
Was sind &amp;quot;schwache&amp;quot; Parameter?&lt;br /&gt;
&lt;br /&gt;
Welches Framework erlaubt unsichere SessionIDs durch eine &amp;quot;schwache&amp;quot; Konfiguration zu erzeugen?&lt;br /&gt;
&lt;br /&gt;
; 9. &amp;quot;Wird die Konfiguration des Web-Browsers durch einen Angreifer manipuliert, können die clientseitig umgesetzten&amp;quot;&lt;br /&gt;
&lt;br /&gt;
Manipuliert ein Angreifer die Konfguration seines Webbroswers, wenn er einen MITM-Proxy konfiguriert?&lt;br /&gt;
&lt;br /&gt;
Wie bereits bei den &amp;quot;Goldenen Regeln&amp;quot; angemerkt, gilt auch hier, das manche Security Controls auch clientseitig umgesetzt werden dürfen (etwa. zur Verhinderung von Dom-Based XSS).&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== &amp;quot;G 5.WA10 Fehler in der Web-Anwendungslogik&amp;quot; (Dennis) ==&lt;br /&gt;
; 1. &amp;quot;Damit kann aufgrund der Prüfreihenfolge ein hoher Ressourcenverbrauch provoziert werden, der für Denial-of-Service-Angriffe ausgenutzt werden kann.&amp;quot;&lt;br /&gt;
Meiner Meinung nach passt in diesem Kontext die Attacke DoS nicht ganz. Falls die nachfolgende Funktionalität wegen der langen Ausführungszeit der Filterkomponente übersprungen wird bzw. ein Fehler auftritt würde dies meiner Ansicht in die Thematik Anwendungslogik passen. Eine DoS-Attacke kann hingegen anhand jeder Funktion durchgeführt werden.&lt;br /&gt;
&lt;br /&gt;
== &amp;quot;G 5.WA11 Umgehung clientseitig umgesetzter Sicherheitsfunktionen von Web-Anwendungen&amp;quot; (Dennis) ==&lt;br /&gt;
; 1. &amp;quot;Ein Angreifer kann diese ausnutzen, um beispielsweise unbefugt Befehle an Hintergrundsysteme der Web-Anwendung zu übermittlen (z.B. in Form von Datenbankanfragen bei einer SQL-Injection).&amp;quot;&lt;br /&gt;
Umformulierung des Inhalts der Klammer. Hatte beim ersten Lesen für mich den Anschein, als ob ein Formular genutzt werden könnte welches den Nutzer aufforder eine SQLI einzugeben. Ich denke &amp;quot;Datenbankanfrage zwecks Ausführung einer SQL-Injection&amp;quot; würde besser passen.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== G 2.WA02 Mängel bei der Entwicklung und der Erweiterung von Web-Anwendungen (Matthias) ==&lt;br /&gt;
&lt;br /&gt;
Allgemein ist de obere Teil ok, die aufgezählten &amp;quot;Auswirkungen von fehlenden Vorgaben&amp;quot; verstehe ich jedoch nicht. Wo ist etwa der Bezug von Barrierefreiheit auf die Anwendungssicherheit?&lt;br /&gt;
&lt;br /&gt;
Mein Vorschlag, um diese Punkte etwa sinnvoll umzubauen:&lt;br /&gt;
* &amp;quot;Fehlendes Vorgehensmodell&amp;quot;: Bezug auf fehlende Berücksichtigung von Sicherheit im SDLC. Statt eines SDLCs selbst sollte hier besser auf die Notwendigkeit eines Secure Development Lifecycle (SDL) hingewiesen werden&lt;br /&gt;
* &amp;quot;Fehlende Programmierrichtlinien&amp;quot; =&amp;gt; Besser wäre hier &amp;quot;Fehlende Sicherheitsrichtlinien in der Programmierung&amp;quot; also &amp;quot;Secure Coding Guidelines&amp;quot;&lt;br /&gt;
* &amp;quot;Testfälle&amp;quot; =&amp;gt; &amp;quot;Sicherheitsrelevante Testfälle&amp;quot; (z.B. Security Unit Tests). &lt;br /&gt;
* &amp;quot;Barrierefreiheit&amp;quot;: Warum nicht an dieser Stelle die Auswirkungen von Sicherheitsfunktionen auf die Bedienbarkeit, etwa anhand von CAPTCHAS erläutern?&lt;br /&gt;
&lt;br /&gt;
== G 2.WA03 Unzureichender Schutz personenbezogener Daten bei Web-Anwendungen (Matthias) ==&lt;br /&gt;
&lt;br /&gt;
Der Titel dieses Bausteines heißt &amp;quot;Schutz personenbezogener Daten&amp;quot;, die genannten Beispiele beziehen sich bis auf den letzten jedoch auf die missbräuchliche (oder zumindest problematische) Nutzung aus Sicht des Datenschutzes. &lt;br /&gt;
&lt;br /&gt;
Die Punkt 1-3 sollten daher besser entfallen und z.B. durch die Folgenden ersetzt werden:&lt;br /&gt;
* Unsichere Einbindung von sozialen Netzwerken (Bezug nehmen auf den Like-Button bei Facebook)&lt;br /&gt;
* Unsichere Einbindung von Werbeinhalten&lt;br /&gt;
* Unsichere Übertragung und Caching&lt;br /&gt;
* Unsichere Protokollierung&lt;br /&gt;
* Ungenügender Zugriffsschutz&lt;br /&gt;
* Verstoß des Minimalprinzips bzw. der Zweckgebundenheit (welche Daten werden wirklich benötigt)&lt;br /&gt;
&lt;br /&gt;
Auch wäre es ggf. zumindest einen Verweis auf das BDSG zu machen.&lt;br /&gt;
&lt;br /&gt;
== G 4.33 Unzureichende oder fehlende Authentisierung (Matthias) ==&lt;br /&gt;
&lt;br /&gt;
; 1. Erster Absatz: &amp;quot;Wenn Authentisierungsmechanismen fehlen oder zu schlecht sind&amp;quot;&lt;br /&gt;
&lt;br /&gt;
&amp;quot;schlecht&amp;quot; sollte vlt besser durch &amp;quot;unzureichend&amp;quot; ersetzt werden.&lt;br /&gt;
&lt;br /&gt;
; 2. &amp;quot;Sicherheitslücken entstehen bei... der Benutzerauthentisierung&amp;quot;&lt;br /&gt;
&lt;br /&gt;
Hier findet nur ein Bezug auf &amp;quot;Passwörter&amp;quot; statt. Der Bezug auf die fehlerhaft implementierte oder dem Schutzbedarf ungenügende Schutzmechanismen (z.B. keine 2-Faktor-Authentisierung bei hochsensiblen Daten) fehlt. Auch auf das komplette fehlen von Authentisierungs-Controls wird hier nicht  eingegangen&lt;br /&gt;
&lt;br /&gt;
; 3. &amp;quot;Sicherheitslücken entstehen bei... der Komponentenauthentisierung&amp;quot;&lt;br /&gt;
&lt;br /&gt;
Wie bei 2., wird auch hier wieder nur auf Passwörter, nicht jedoch auf das fehlen von Controls selbst eingegangen. An dieser Stelle fehlt auch ein Hinweis auf die Notwendigkeit dedizierter Benutzeraccounts.&lt;br /&gt;
&lt;br /&gt;
; 4. &amp;quot;Sicherheitslücken entstehen bei... der Wahl des Verfahrens&amp;quot;&lt;br /&gt;
&lt;br /&gt;
Statt untauglich würde ich auch hier von &amp;quot;dem Schutzbedarf der Daten nicht angemessen&amp;quot; sprechen, eigentlich gehört das für mich aber in die obigen Punkte.&lt;br /&gt;
&lt;br /&gt;
; 5. Serverseitige Authentisierung fehlt&lt;br /&gt;
&lt;br /&gt;
Auch der Server (bzw. die Anwendung selbst) kann sich fehlerhaft oder ungenügend beim Benutzer authentsieren, etwa über DNS, SSL-Zertifikate, etc.&lt;br /&gt;
&lt;br /&gt;
== G 4.WA04 Unzureichende Validierung von Ein- und Ausgabedaten bei Web-Anwendungen (Matthias) ==&lt;br /&gt;
&lt;br /&gt;
; 1. &amp;quot;Unzureichende Validierung von Eingabedaten&amp;quot;&lt;br /&gt;
&lt;br /&gt;
Die genannten Beispiele sind genau keine korrekten Beispiele für diesen Fall, sondern betreffen die Ausgabevalidierung bzw. Enkodierung. Typische Fehler der Eingabevalidierung ist eine Manipulierbarkeit der Business Logik.&lt;br /&gt;
&lt;br /&gt;
; 2. &amp;quot;Unzureichende Validierung von Ausgabedaten&amp;quot;&lt;br /&gt;
&lt;br /&gt;
Hier geht es zentral um die Verhinderung von Interpreter Injection, also serverseitig (z.B. SQL oder LDAP Injection) oder clientseitig (XSS, JSON Injection, etc.). Statt &amp;quot;können die Ausgaben Schadcode&amp;quot; enthalten würde ich hier eher davon Sprechen, dass ein solcher Interpreteraufruf manipuliert werden kann (was dann z.B. zur Einschleusung von Schadcode genutzt werden kann).&lt;br /&gt;
&lt;br /&gt;
; 3. &amp;quot;Die Suchfunktion der Web-Anwendung verwendet die Eingaben der Benutzer ungefiltert&amp;quot;&lt;br /&gt;
&lt;br /&gt;
Mit ungenügender &amp;quot;Filterung&amp;quot; hat SQL Injection nichts zu tun,  eigentlich geht es hierbei darum, dass SQL-Anfragen dynamisch mit unvalidierten Eingebedaten zusammengebaut (konkateniert) werden.&lt;br /&gt;
&lt;br /&gt;
; 4. &amp;quot;Ungefilterter HTML-Code in Kommentar-Funktion&amp;quot;&lt;br /&gt;
&lt;br /&gt;
Hier fehlt der Bezug auf persistentes XSS, das hier sicherlich zentral ist.&lt;br /&gt;
&lt;br /&gt;
== G 4.WA05 Fehlende oder mangelhafte Fehlerbehandlung durch Web-Anwendungen (Tobias, Matthias) ==&lt;br /&gt;
; Abschnitt &amp;quot;Unsichere Fehlerbehandlung&amp;quot;&lt;br /&gt;
Die G adressiert &amp;quot;Unsichere Fehlerbehandlung&amp;quot;, der Abschnitt die &amp;quot;Unsichere Fehlerbehandlung in Sicherheitskomponenten&amp;quot;. Entsprechend sollte der fettgedruckte Teil angepasst werden.&lt;br /&gt;
&lt;br /&gt;
; &amp;quot;fehlende SQL-Parameter,&amp;quot;&lt;br /&gt;
Sollte besser &amp;quot;Fehlermeldungen bei ungültigen SQL-Abfragen&amp;quot; lauten.&lt;br /&gt;
&lt;br /&gt;
; &amp;quot;Auch scheinbar unkritische Informationen, wie die Meldung ob (..)&amp;quot;&lt;br /&gt;
Korrekt, allerdings nicht nachvollziehbar, wenn das Problem der Leser nicht schon bekannt ist. Daher erweitern nach &amp;quot; Rahmen von Brute-Force-Angriffen ausgenutzt werden.&amp;quot; mit &amp;quot;. Bei Brute-Force-Angriffen wäre in diesem Fall klar, dass der Benutzername gültig ist.&amp;quot;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[User:Mrohr|Matthias]]): Stimme dem Obigen auch zu, ausserdem:&lt;br /&gt;
&lt;br /&gt;
; Sprachlich: &amp;quot;kann dies unvorhersehbare Auswirkungen haben und den Betrieb der Web-Anwendung bis zur Unerreichbarkeit einschränken.&amp;quot;&lt;br /&gt;
&lt;br /&gt;
&amp;quot;Unerreichbarkeit&amp;quot; ist etas merkwuerdig ausgedrueckt, besser ware hier von der &amp;quot;Verfuegbarkeit&amp;quot; zu sprechen. Im Uebrigen fehlt vollstaendig der Bezug auf die Verfuegbarkeit als Primaeres Schutzziel der Informationssicherheit.&lt;br /&gt;
&lt;br /&gt;
; &amp;quot;Clientseitige Fehlerbehandlung&amp;quot;&lt;br /&gt;
Das stimmt soweit, das generelle Problem ist jedoch genereller, naehmlich die clientseitige Abbildung sicherheitsrelaventer Logik (in diesem Fall die Fehlerbehandlung)&lt;br /&gt;
&lt;br /&gt;
== G 4.WA06 Unzureichende Nachvollziehbarkeit von sicherheitsrelevanten Ereignissen bei Web-Anwendungen (Matthias) ==&lt;br /&gt;
&lt;br /&gt;
; 1. Erster Absatz: &amp;quot;Die Behebung einer Schwachstelle ist dann nicht oder nur unter erschwerten Bedingungen möglich.&amp;quot;&lt;br /&gt;
&lt;br /&gt;
Hier würde ich ergänzen: &amp;quot;...und Angriffe auf die Anwendungen können ggf. nicht erkannt oder nachvollzogen werden&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
; 2. &amp;quot;Beispiele&amp;quot;: Kommulierbarkeit&lt;br /&gt;
&lt;br /&gt;
Hier fehlt auch ein Bezug auf die Kommulierbarkeit von SIcherheitsereignissen, dass diese also auch von solchen anderer Systeme in Verbindung gesetzt werden können&lt;br /&gt;
&lt;br /&gt;
; 3. &amp;quot;Beispiele&amp;quot;: Gerichtsverwertbarkeit&lt;br /&gt;
&lt;br /&gt;
Auch die Möglichkeit zur Gerichtsverwertbarkeit (etwa durch eindeutigen Zeitstempel) und manipulationssicherer Speicherung, würde ich an dieser Stelle unbedingt erwähnen.&lt;br /&gt;
&lt;br /&gt;
== G 4.WA07 Offenlegung von Informationen bei Web-Anwendungen (Matthias) ==&lt;br /&gt;
&lt;br /&gt;
; 1. Titel&lt;br /&gt;
&lt;br /&gt;
Hier würde ggf. &amp;quot;Offenlegung vertraulicher Informationen&amp;quot; sicher besser passen als &amp;quot;Offenlegung von Informationen&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
; 2. Beispiellink&lt;br /&gt;
&lt;br /&gt;
Ein Beispiellink (mit und ohne Token) würde sicher die Verständlichkeit dieser Schwachstelle verbessern.&lt;br /&gt;
&lt;br /&gt;
; 3. Erster Absatz: &amp;quot;Wenn demzufolge Informationen unnötig offengelegt werden, steigt die Wahrscheinlichkeit eines erfolgreichen Angriffs.&amp;quot;&lt;br /&gt;
&lt;br /&gt;
Interne Informationen auszublenden ist eine Härtungsmaßnahme, deren Anzeige erhöht aber nicht zwangsläufig die Wahrscheinlichkeit eines erfolgreichen Angriffs. Ich würde diesen Satz weglassen.&lt;br /&gt;
&lt;br /&gt;
 ; 4. Fehlende Punkte&lt;br /&gt;
&lt;br /&gt;
* Ein Hinweis auf HTTP Header wäre hier sicher erwähnenswert.&lt;br /&gt;
* Weiterhin bzgl. der Anzeige von Traces und ein Verweis auf den Entsprechenden Baustein zur Fehlerbehandlung&lt;br /&gt;
&lt;br /&gt;
== G 5.WA14 Cross-Site Request Forgery (CSRF, XSRF) (Matthias) ==&lt;br /&gt;
&lt;br /&gt;
; 1. Erster Absatz: &amp;quot;Können Funktionen einer Web-Anwendung ohne weitere Überprüfung der Authentizität des HTTP-Requests (z.B. durch Tokens in versteckten Formularfeldern) genutzt werden&amp;quot;&lt;br /&gt;
&lt;br /&gt;
Statt &amp;quot;Funktionen&amp;quot; würde ich besser von &amp;quot;schreibenden Aktionen&amp;quot; sprechen, dann macht der Satz mehr Sinn.&lt;br /&gt;
&lt;br /&gt;
; 2. Dritter Absatz: &amp;quot;Im Gegensatz zu XSS (siehe ...￼ ) ist das Angriffsziel nicht die Information auf dem Client (z. B. in Cookies),&amp;quot;&lt;br /&gt;
&lt;br /&gt;
Dieser (Halb-)Satz macht keinen Sinn, auch weil es bei XSS nicht nur im Informationen auf dem Cient geht. Vorschlag: &amp;quot;ist das Angriffsziel nicht die Ausführung von Skriptcode, sondern von unbefugten, schreibenden Aktionen im Kontext des angemeldeten Benutzers.&amp;quot;&lt;br /&gt;
&lt;br /&gt;
; 3. Session Riding&lt;br /&gt;
&lt;br /&gt;
Session Riding ist quasi nur ein anderer Begriff für CSRF. Die einzige Form von CSRF die mir bekannt ist, sind Angriffe mit Standard-Passwörtern auf HTTP-Basic-Auth geschützten Ressourcen.&lt;br /&gt;
&lt;br /&gt;
Im Grunde ist Session Riding aber nur ein Synonym für CSRF. Der Absatz ist daher auch nur eine Wiederholung der obigen Beschreibung.&lt;br /&gt;
&lt;br /&gt;
; 4. Zum Beispiel: &amp;quot;Durch einen präparierten Link auf einer Webseite wird die Änderung des Zugangspasswortes des Routers eingeleitet.&amp;quot;&lt;br /&gt;
&lt;br /&gt;
Etwas ungüngstig ausgedrückt. Besser wäre: &amp;quot;wird eine Anfrage zur Änderung des Zugangspasswortes an den Router gesendet. Hierbei sendet der Browser automatisch den Session Cookie mit, worüber die Webanwendung die Authentizität der Anfrage verifiziert und die Änderung durchführt.&amp;quot;&lt;br /&gt;
&lt;br /&gt;
== G 5.WA18 Clickjacking (Matthias) ==&lt;br /&gt;
&lt;br /&gt;
Hier stellt sich mir nur die allgemeine Frage, ob Clickjacking, bzw. der Schutz davor tatsächlich einem Grundschutz zuzurechnen ist. Persönlich würde ich dies nicht tun.&lt;br /&gt;
&lt;br /&gt;
== M 2.WA02 Dokumentation der Architektur von Web-Anwendungen (Matthias) ==&lt;br /&gt;
&lt;br /&gt;
; Verantwortlich für die Umsetzung&lt;br /&gt;
Hier wäre auch die Nennung des &amp;quot;Architekten&amp;quot; sinnvoll&lt;br /&gt;
 &lt;br /&gt;
; Fehlende Bestandteile der Dokumentation:&lt;br /&gt;
* Schutzbedarf des Systems sowie der verarbeiteten Daten&lt;br /&gt;
* Schützenswerte Daten und Funktionen (Assets)&lt;br /&gt;
* Betriebliche Anforderungen an die Sicherheit bzw. eingesetzte Plattform&lt;br /&gt;
* Dokumentierte Konfigurationseinstellungen &lt;br /&gt;
* BIA (RTO, RPO)&lt;br /&gt;
* Schnittstellen&lt;br /&gt;
* Trust Boundaries&lt;br /&gt;
* Akteure (bzw. Trust Level)&lt;br /&gt;
* Sicherheitsannahmen&lt;br /&gt;
* Geltende Compliance-Anforderungen (BDSG, PCI DSS, etc.)&lt;br /&gt;
&lt;br /&gt;
; Benutzermanagement&lt;br /&gt;
&lt;br /&gt;
Wenn damit das Identity Management gemeint ist, gehört das Dokumentiert, ist aber keine Sicherheitsfunktion. Oder ist hiermit das Rollen- und Berechtigungskonzept gemeint? Grenzt sich aus meiner Sicht schwer mit dem Thema Authentisierung ab. &lt;br /&gt;
&lt;br /&gt;
; Prüffragen&lt;br /&gt;
&lt;br /&gt;
Hier fehlt etwas in Bezug auf Sicherheitsanforderungen. Beispiel: &amp;quot;Werden Sicherheitsanforderungen an den Betrieb während der Entwicklung abgestimmt und dokumentiert&amp;quot;&lt;br /&gt;
&lt;br /&gt;
== M 2.WA12 Entwicklung und Erweiterung von Anwendungen (Markus) ==&lt;br /&gt;
; &amp;quot;Es sollte darauf geachtet werden, dass Sicherheitsanforderungen&lt;br /&gt;
vollständig durch Sicherheitsmechanismen erfüllt und zur Erstellung von&lt;br /&gt;
Testfällen festgehalten werden.&amp;quot; --&amp;gt; Bessere Formulierung würde aussagen, dass die Sicherheitsanforderungen durch Testfälle verifiziert werden.&lt;br /&gt;
&amp;quot;(z. B. durch Kommentare im&lt;br /&gt;
Quelltext). Somit ist der Quelltext zu einem&amp;quot; --&amp;gt; Das ist kein empfehlenswerter Programmierstiel! Raus mit diesem Kommentar&lt;br /&gt;
;&amp;quot;Zum Schutz vor dem Verlust bereits entwickelter und verworfener&lt;br /&gt;
Lösungen sowie zu Dokumentationszwecken sollte die Historie der&lt;br /&gt;
Änderungen festgehalten werden (z. B. durch ein Revisionssystem).&amp;quot; --&amp;gt; Auch diesen Absatz können wir streichen - Kein professioneller Programmierer arbeitet ohne Versionierugssystem.&lt;br /&gt;
;&amp;quot;Bei Web-Anwendung sollten die Webseiten auf Konformität zu dem&lt;br /&gt;
verwendeten Standard (z. B. HTML-Standard) getestet werden. Dadurch&lt;br /&gt;
können unvorgesehene Seiteneffekte aufgrund einer Fehlinterpretation&lt;br /&gt;
seitens der Browser vermieden werden.&amp;quot; --&amp;gt; Könnte man noch um &amp;quot;Die Software ist in möglichst vielen Browsern zu testen&amp;quot; erweitern.&lt;br /&gt;
;Generell geht der Autor leider nicht auf die Rollen &amp;amp; Rechte Verteilung ein. Mir fehlt der Hinweis, das es eine personelle Trennung zwischen Entwicklung, Test und Betrieb geben muss.&lt;br /&gt;
;Zum Thema Wartung / Betrieb --&amp;gt; Hier wird keine Aussage getroffen bezüglich Log_Files. Dieses Thema kann kritische Auswirkungen haben, Bsp.: logging ganzer HTTP-Requests im LogLevel=Debug.&lt;br /&gt;
; &amp;quot;Produktspezifische Sicherheitsfunkionalität&amp;quot; - Dieser Absatz ist gefährlich - der Angreifer ist nicht zur Verwendung dies Zielbrowsers gezwungen. Deshalb können Browser-spez. Sicherheitsfunktionen nur als Add-ON gewertet werden.&lt;br /&gt;
; &amp;quot;Festlegung der Entwicklungsumgebung&amp;quot; - Dieser Absatz geht nicht auf die zu verwendenden Testdaten ein. Der Hinweis, dass Live-Daten / Kundendaten nichts in Test- &amp;amp; Entwicklungsumgebungen zu suchen haben fehlt!!!&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== M 2.WA24 Web-Tracking (Matthias) ==&lt;br /&gt;
&lt;br /&gt;
; Letzter Absatz: &amp;quot;Falls eine Auswertung von Nutzerdaten, insbesondere personenbezogener Daten, .. &amp;quot;&lt;br /&gt;
&lt;br /&gt;
Hier sollte denke ich besser von personenbeziehbaren Daten gesprochen Werten. Dies betrifft etwa die Zuordnung von Surfverhalten zu einer bestimmten Person. Dies sollte stets nach den Prinzipien Datensparsamkeit und Datenvermeidung, Erforderlichkeit, sowie Zweckbindung erfolgen. Ist Webtracking nicht personenbeziehbar ist dies kein Thema für den Datenschutz.&lt;br /&gt;
&lt;br /&gt;
== M 4.WA04 Authentisierung bei Web- Anwendungen (Matthias) ==&lt;br /&gt;
&lt;br /&gt;
; Vermischung von Authentisierung und Session Management &lt;br /&gt;
&lt;br /&gt;
Bei diesem Baustein findet eine ziemlich große Vermischung von Anforderung an die Authentisierung und das erst in &amp;quot;M 4.WA06 Session-Management bei Web- Anwendungen&amp;quot; behandelte Session Management statt (Beispiel: &amp;quot;Remember-Me-Funktion&amp;quot;). Beide Themen sollten sinnvollerweise getrennt voneinander zu betrachten und aufeinander zu beziehen.&lt;br /&gt;
&lt;br /&gt;
; Verwendung von Frameworks&lt;br /&gt;
&lt;br /&gt;
Die Anforderung ist schon ein wenig eingeschränkt. Besser passt hier denke ich die &amp;quot;Abbildung der Authentisierung über Standardkomponenten (Bibliotheken oder Frameworks)&amp;quot;. &lt;br /&gt;
&lt;br /&gt;
; Remember-Me-Funktion&lt;br /&gt;
&lt;br /&gt;
Siehe oben, gehört zum Session Management. Das ließt sich im übrigen so, als ob eine Webanwendung Credentials auf dem Client abhängt. &lt;br /&gt;
&lt;br /&gt;
; Grenzwerte für gescheiterte Anmeldeversuche&lt;br /&gt;
&lt;br /&gt;
Diese Empfehlung ist allgemein falsch, da sie sehr von der betrachteten Anwendung abhängt. Besser wäre hier allgemein von Mechanismen zur Verhinderung von automatisierten Angriffen zu sprechen (Anti-Automatisierung). &lt;br /&gt;
&lt;br /&gt;
Etwa umsetzbar durch&lt;br /&gt;
* Sperrung nach x Anmeldeversuchen&lt;br /&gt;
* Throttling&lt;br /&gt;
* Captchas&lt;br /&gt;
* Sicherheitsfragen&lt;br /&gt;
&lt;br /&gt;
Das allgemeine Sperren kann leicht für das gezielte Aussperren von Benutzern (User Lockout) verwendet werden. Was etwa bei Trading-Anwendungen nicht funktioniert.&lt;br /&gt;
&lt;br /&gt;
; Automatisiertes Zurücksetzen von Authentisierungsdaten&lt;br /&gt;
&lt;br /&gt;
Würde ich besser als &amp;quot;Passwort-Reset&amp;quot; bezeichnen.&lt;br /&gt;
&lt;br /&gt;
Weiterhin fehlt hier der Hinweis, dass statt ein automatisiertes Zurücksetzen, ein Mechanismus zu empfehlen ist, bei dem über ein hinterlegtes Sicherheitsmerkmal (Handy-Nummer oder E-Mail-Adresse) vom Benutzer zunächst eine Verifikation durchgeführt wird. Beispielsweise durch einen erhaltenen Link. Erst dann darf eine Änderung des Passwortes durch den Benutzer erfolgen.&lt;br /&gt;
&lt;br /&gt;
; Registrierung nicht behandelt&lt;br /&gt;
&lt;br /&gt;
Es existiert hier kein Punkt, der die sichere Implementierung von Benutzerregistrierungen behandelt.&lt;br /&gt;
&lt;br /&gt;
; Verweis auf Externalisierung fehlt.&lt;br /&gt;
&lt;br /&gt;
Statt die Authentisierung selbst durchzuführen kann eine Anwendung hierzu auf eine externe Komponente (Beispiel: SiteMinder oder Kerberos) zurückgreifen.&lt;br /&gt;
&lt;br /&gt;
; Verweis auf Behandlung von Credentials fehlt&lt;br /&gt;
&lt;br /&gt;
Auch wenn das  in &amp;quot;M 4.WA15 Schutz vertraulicher Daten bei Web- Anwendungen&amp;quot; ausführlich behandelt wird, sollte in diesem Baustein bereits auf den angemessenen Schutz von Authentisierungsdaten bei Übertragung und Speicherung hingewiesen werden.&lt;br /&gt;
&lt;br /&gt;
== M 4.WA05Umfassende Ein- und Ausgabevalidierung bei Web-Anwedungen (Markus) ==&lt;br /&gt;
; &amp;quot;Ablehnung der Daten im&lt;br /&gt;
Fehlerfall&amp;quot; --&amp;gt; Hier könnte man noch auf Tar-Pits eingehen - nur ein Vorschlag.&lt;br /&gt;
&lt;br /&gt;
== M 4.WA06Session-Management bei Web-Anwendungen (Markus, Matthias) ==&lt;br /&gt;
; &amp;quot;Übertragung der SessionID mittels GETRequest&amp;quot; --&amp;gt; Hier fehlt der Hinweis, dass die Lebensdauer dieser SessionIds kurz/kürzer sein muss, als im Falle der Speicherung im Cookie.&lt;br /&gt;
&lt;br /&gt;
([[User:Mrohr|Matthias]]) Die Anmerkung verstehe ich ehrlich gesagt ueberhaupt nicht, zumal das SM haeufig transparent zwischen Cookies und URL Rewriting wechselt. Wozu soll das gut sein? Wie soll das geschehen? Idealerweise sollte die Session ID niemals in die URL geschrieben werden, das sollte eigentlich genuegen.&lt;br /&gt;
&lt;br /&gt;
; &amp;quot;Verschlüsselte Übertragung von SessionIDs&amp;quot; --&amp;gt; Hier fehlt der Hinweis auf den Beast-Exploit. TLS Version &amp;gt; 1.0 verwenden!&lt;br /&gt;
&lt;br /&gt;
([[User:Mrohr|Matthias]]) Solange hier nicht auf eine explizite TLS Version eingegangen wird, sollte meiner grossen Ueberzeugung nach hier auch auf keine Exploits etc. eingagen werden, das gehoert an andere Stelle.&lt;br /&gt;
&lt;br /&gt;
; ([[User:Mrohr|Matthias]]) Weiterhin:&lt;br /&gt;
&lt;br /&gt;
 Es dürfen keine extern bekannten oder erratbaren Daten (z. B. IP-Adresse, Uhrzeit) in die Berechnung der SessionID einfließen.&lt;br /&gt;
&lt;br /&gt;
Die Aussage finde ich etwas problematisch, wichtiger ist, dass die Entropie ausreichend hoch ist. Haeufig werden etwa IPs von Load Balancern in die Session ID hineingeschrieben.&lt;br /&gt;
&lt;br /&gt;
 - Domain (z. B. webapp.domain.tld),&lt;br /&gt;
 - Path (z. B. /webapp/),&lt;br /&gt;
 - Secure und&lt;br /&gt;
 - HttpOnly.Beschränkte Sitzungsdauer&lt;br /&gt;
&lt;br /&gt;
Das sieht so aus, als ob es empfehlenswert ist, das Domain-Tag zu verwenden, das ist es sicherlich nicht. Was macht hier der Hinweis &amp;quot;Beschraenke Sizuungsdauer&amp;quot;?&lt;br /&gt;
&lt;br /&gt;
== M 4.WA07Fehlerbehandlung durch Web-Anwendungen (Markus) ==&lt;br /&gt;
; Konsistenter / Inkonsistener Zustand einer Webanwendung und der daraus resultierende Datenverlust: Hier fehlen mir die Punkte: DOS, Priv.Escalation, CodeExecution.&lt;br /&gt;
; Vermeidung vertraulicher Informationen in Fehlermeldungen --&amp;gt; Fehlermeldungen sollten ebenfalls eine Systeminformationen preisgeben (Softwareversion, Patchlevel, etc.)&lt;br /&gt;
; Abbruch des Vorgangs nach Auftreten eines Fehlers --&amp;gt; TarPits scheinen dem Autor umbekannt zu sein :)&lt;br /&gt;
; &amp;quot;Werden Fehler möglichst von der gleichen Komponente behandelt, in der&lt;br /&gt;
der Fehler aufgetreten ist?&amp;quot; --&amp;gt; Das &amp;quot;möglichst&amp;quot; sollten wir streichen.&lt;br /&gt;
&lt;br /&gt;
== M 4.WA08Schutz vor automatisierter Nutzung von Web-Anwendungen (Markus) ==&lt;br /&gt;
; &amp;quot;Brute-Force-&lt;br /&gt;
Angriffe (z. B. Erraten von Zugangsdaten) und Enumeration-Angriffe (z. B.&lt;br /&gt;
automatisiertes Ermitteln von gültigen Login-Namen)&amp;quot; -- die Beispiele sind identisch - besser Beispiele suchen, z.b. URL-Enumeration&lt;br /&gt;
&lt;br /&gt;
([[User:Mrohr|Matthias]]) Das sehe ich anders. Brute-Forcing bezieht auf Passwoerter und Enumeration auf Benutzernamen, etwa durchs hochzaehlen. Auch wenn ich zustimmen muss, dass die nicht ganz gluecklich gewaehlt wurden. Stann &amp;quot;Erraten von Zugangsdaten&amp;quot; wuerde ich besser von &amp;quot;Erraten von Passwoertern&amp;quot; sprechen. Oder wie gesagt gleich auch auf andere Beispiele (etwa Object ID Enumeration) beziehen.&lt;br /&gt;
&lt;br /&gt;
== M 4.WA11Sichere Konfiguration von Web-Anwendungen (Markus) ==&lt;br /&gt;
; &amp;quot;Sicherer Umgang mit TLS/SSL&amp;quot; -- Hier fehlt der Hinweis, dass TLS-1.0 gebrochen ist&lt;br /&gt;
; &amp;quot;Zeichenkodierungskonfiguration&amp;quot; -- Ein Whitelisting abhängig von der Encodierung wäre ein weiterer Vorschlag&lt;br /&gt;
; &amp;quot;Restriktive Dateisystemberechtigungen&amp;quot; -- auch wenn es ein klassiker ist - der AS sollte ebenfalls mit von einem eingeschränkten Nutzer gestartet werden und nicht als root&lt;br /&gt;
; Administration Consolen:zur Ergänzen: Wenn diese nicht benötigit, sollten derartige Applikationen nicht deployed werden, unabhängig von möglichen Zugangsbeschränkungen.&lt;br /&gt;
&lt;br /&gt;
([[User:Mrohr|Matthias]]) Sorry, meiner Meinung nach hat die Bewertung von Kryptoverfahren hier abslut nichts zu suchen.Stattdessen sollte hier auf den entsprechenden [https://www.bsi.bund.de/ContentBSI/Publikationen/TechnischeRichtlinien/tr02102/index_htm.html Empfehlung des BSI] verwiesen werden, auch wenn dieses Dokument derzeit noch etwas outdated zu sein scheint.&lt;br /&gt;
&lt;br /&gt;
== M 4.WA13Kontrolliertes Einbinden von Daten und Inhalten bei Web-Anwendungen (Markus) ==&lt;br /&gt;
; Datei-Upload: Bei einem Upload werden Dateien durchaus in TEMP-Verzeichnissen gesammelt und danach weiterverarbeitet. Diese TEMP-Verzeichnisse sind im Rahmen einer Sicherheitsanalyse zu betrachten -&amp;gt; Möglicher (unbefugter) Zugriff auf weitere Uploads&lt;br /&gt;
; Upload komprimierter Dateien / großer Dateien birgt die Gefahr von DOS Angriffen&lt;br /&gt;
; Upload von Dateien kann bei weiterem Parsing zu Speicherengpässen führen --&amp;gt; DOS-Angriffe auf Thread-Local etc.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== M 4.WA14Restriktive Herausgabe sicherheitsrelevanter Informationen bei Web-Anwendungen (Markus, Matthias) ==&lt;br /&gt;
OK - Keine Anmerkungen von mir.&lt;br /&gt;
&lt;br /&gt;
[[User:Mrohr|Matthias]]) Von mir schon;)&lt;br /&gt;
&lt;br /&gt;
; Vermeidung von Kommentaren in ausgelieferten Webseiten&lt;br /&gt;
&lt;br /&gt;
Das ist leider total falsch, wir brauchen haeufig Komentare, aus Kompatibilitaetsgruenden. So wird etwa der JavaScript-Block haeufig auskommentiert.&lt;br /&gt;
&lt;br /&gt;
Wurde stattessen besser von sicherheitsrelevanten Kommentaren sprechen und als Massnahme generell Entwicklerkommentare ueber Sprachkonstruktre (etwa JSP) durchzufuehren.&lt;br /&gt;
&lt;br /&gt;
; Löschen nicht benötigter Dateien&lt;br /&gt;
&lt;br /&gt;
Hier wurde ich ggf. Dateien von Versionisierungstools (etwa Subversion) erwaehnen, das sehen wir schon recht haeufig.&lt;br /&gt;
&lt;br /&gt;
Statt Dateien einfach nur zu loeschen (was in der Praxis haeufig nicht so einfach ist) bietet es sich zudem an, den Zugriff auf bestimmte Dateien oder Dateitypen generell zu sperren, etwa mittels ACL im Apache.&lt;br /&gt;
&lt;br /&gt;
; Gibt die Web-Anwendung ausschließlich neutrale Fehlermeldungen aus und sind diese im Quelltext identisch? {E: C}&lt;br /&gt;
&lt;br /&gt;
Persoenlich verstehe ich das nicht. Wieseo neutrale Fehlermeldung? Das macht fuer mich nur beim Login Sin. Hierzu existiert in dem Text auch keinerlei Bezug. Ich wuerde das daher besser entfernen und im Rahmen der Fehlerbehandlung diskutieren. Mindestens sollte hier jedoch besser von &amp;quot;sicherheitsunbedentlichen Fehlermeldungen&amp;quot; oder so gesprochen werden.&lt;br /&gt;
&lt;br /&gt;
; Wird der Referrer bei Verlassen der Web-Anwendung (z. B. durch einen Link auf eine externe Seite) gefiltert?&lt;br /&gt;
&lt;br /&gt;
Diesen Punkt sehe ich als sehr Fallabhengig an. Es kann fuer seiten durchaus wuenschenswert sein, dass der Referer weitergegeben wird. Der Referer sollte natuerlich keine sensiblen Informationen enthalten, was ja an anderer Stelle (etwa Session Management) vorgegeben wird bzw. gegeben werden sollte.&lt;br /&gt;
&lt;br /&gt;
== M 4.WA15Schutz vertraulicher Daten bei Web-Anwendungen (Markus) ==&lt;br /&gt;
; Sichere kryptographische Algorithmen:&lt;br /&gt;
 Hier fehlt mir eine Liste der aktuelle als sicher geltenden Verfahren.&lt;br /&gt;
; Schlüssel&lt;br /&gt;
 Das die Schlüssel bestimmten Formaten entsprechen müssen ist ok - aber das Schlüsselmanagement wird gar nicht besprochen?&lt;br /&gt;
; Schutz der Daten im Browsercache&lt;br /&gt;
 Skripte und Browserplugins können ebenfalls auf den Browsercache zugreifen - diese werden hier nicht erwähnt.&lt;br /&gt;
; Maskierung von Passwörtern &lt;br /&gt;
 Dies schützt bei der Eingabe nur vor ShoulderSurfing nicht vor Skripten oder Plugins die diese an andere Server posten.&lt;br /&gt;
; Sicherung von Zugangsdaten:&lt;br /&gt;
 Zugangsdaten in einer Datei abzulegen - wenn auch ausserhalb des WebRoots ist keine gute Idee.&lt;br /&gt;
; Schutz von Quelltexten:&lt;br /&gt;
 Hier würde ich property files mit aufnehmen. der hinweis auf web-inf/classes fehlt - warum?&lt;br /&gt;
 Bei include-befehlen sind die pfadangaben zu überdenken.&lt;br /&gt;
&lt;br /&gt;
== M 4.WA16Zugriffskontrolle bei Web-Anwendungen (Markus) ==&lt;br /&gt;
; Zugriffskontrolle via Frameworks:&lt;br /&gt;
 Dieser Punkt (Frameworks) wird nur in einem Satz erwähnt. Es werden keine Bespiele gegeben - Das ist zu wenig.&lt;br /&gt;
 Es müssen alle Zugriffe geschützt werden. Eine Protokollierung aller Zugriffe mit den nötigen Informationen ist ebenfalls empfehlenswert.&lt;br /&gt;
; Datei Upload:&lt;br /&gt;
 Die Gefahr eines DOS wird hier nicht erwähnt.&lt;br /&gt;
&lt;br /&gt;
== M 4.WA19Verhinderung von Cross-Site Request Forgery (CSRF, XSRF) (Markus, Matthias) ==&lt;br /&gt;
; Verantwortliche: &lt;br /&gt;
 Entwickler und Admins!&lt;br /&gt;
([[User:Mrohr|Matthias]]) Korrekt, wobei auch in der Reihenfolge&lt;br /&gt;
&lt;br /&gt;
; Anti-CSRF-Token in hidden fields:&lt;br /&gt;
 Das ist keine gute Idee. Ich würde das streichen!&lt;br /&gt;
&lt;br /&gt;
([[User:Mrohr|Matthias]]) Watt? Anti-CSRF-Tokens in Hidden Fields sind die Standard-Massnahme. Wie denn sonst? Bitte nicht streichen!!! &lt;br /&gt;
&lt;br /&gt;
([[User:Mrohr|Matthias]]) Die Technik bei der die Session ID als Anti-CSRF-Token verwendet wird, wird als Double-Cookie Submit bezeichnet, das sollte hier referenziert werden.&lt;br /&gt;
&lt;br /&gt;
; Umgehung von Schutzmechanismen:&lt;br /&gt;
 Man in the middle hat keinen direkten Bezug zu CSRF! Das würde ich streichen.&lt;br /&gt;
([[User:Mrohr|Matthias]]) Der Hinweis ist korrekt. Wovon der Autor hier spricht ist Session Replay nicht CSRF.&lt;br /&gt;
&lt;br /&gt;
; Frameworks:&lt;br /&gt;
 Gute Idee - aber es gibt auch Features in den ApplicationServern die CSRF unterbinden - warum wird das nicht besprochen?&lt;br /&gt;
&lt;br /&gt;
([[User:Mrohr|Matthias]]) Sehe ich persoenlich nicht so, da CSRF primaer ein Applikations-Fehler ist, und auch in der Applikation und nicht im Environment (AppServer) geloest werden sollte. Auch wenn das manchmal ggf. die einzig machbare Loesung darstellt.&lt;br /&gt;
&lt;br /&gt;
([[User:Mrohr|Matthias]]) Was generell fehlt, ist ein Hinweis darauf, dass schreibende Requests generell per HTTP Post abgewickelt werden sollten, da HTTP Get keine &amp;quot;Safe Method&amp;quot;  (siehe HTTP 1.1, RFC 2616) ist.&lt;br /&gt;
&lt;br /&gt;
== M 4.WA20Sicherer Entwurf der Logik von Web-Anwendungen (Markus, Matthias) ==&lt;br /&gt;
; Rollbacks:&lt;br /&gt;
 Tritt ein Fehler auf muss die Applikation einen konsistenten Datenstand zurück lassen. Das wird hier nicht erwähnt.&lt;br /&gt;
; RaceConditions:&lt;br /&gt;
 Fehler in der Geschäftslogik können auch durch zwei gleichzeitige Sessions auf einer Webapplikation auftreten - das wird hier nicht besprochen.&lt;br /&gt;
&lt;br /&gt;
([[User:Mrohr|Matthias]]) Ehrlich gesagt kann ich nicht ganz nachvollziehen, was der Sichere Entwurf der Logik von Web-Anwendungen mit dem Verzicht auf aktive Inhalte zu tun hat. Unabhaengig davon sollte man solche unsinnigen Aussagen im Jahre 2012 nicht mehr treffen, damit macht man sicht nur laecherlich.&lt;br /&gt;
&lt;br /&gt;
Nichts desto trotz, was hier als &amp;quot;echte&amp;quot; Massnahmen erwaehnt werden sollte sind:&lt;br /&gt;
* Verhinderung von Race Conditions, aber nicht nur durch Concurrent Sessions sondern auch durch Singletons (TOCTOU)&lt;br /&gt;
* Enforcements von Workflows, etwa durch die Verwendung von State Machines oder Request Tokens (auch bekannt als Site Usage Enforcement)&lt;br /&gt;
* Fail Securely (bzw. Verweis)&lt;br /&gt;
* Serverseitige Abbildung der Anwendungslogik, zumindest wenn diese sicherheitsrelevant sit&lt;br /&gt;
&lt;br /&gt;
== M 4.WA22Verhinderung der Blockade von Ressourcen (DoS) bei Web-Anwendungen (Markus, Matthias) ==&lt;br /&gt;
; Datenspeicher:&lt;br /&gt;
 Neben dem Datenspeicher sollte auch der RAM-Verbrauch pro Thread der Applikation limitiert werden.&lt;br /&gt;
([[User:Mrohr|Matthias]]) Stimmt, ich wuerde hier sogar allgemein von Ressourcenverbrauch am Beispiel RAM und Datenspeicher, sprechen&lt;br /&gt;
&lt;br /&gt;
; Voraggregation von Daten / Caching&lt;br /&gt;
 Dieser Punkt fehlt: Stark ressourcen belastende Anfragen können auch in Lastarmen Zeiten vorberechnet werden.&lt;br /&gt;
([[User:Mrohr|Matthias]]) Stimmt, koennte noch als Anmerkung bei &amp;quot;Cachen von Anfragen&amp;quot; hinzugefuegt werden&lt;br /&gt;
&lt;br /&gt;
([[User:Mrohr|Matthias]]) Noch drei Anmerkugnen&lt;br /&gt;
&lt;br /&gt;
; Prueffrage: &amp;quot;Wird ein möglicher Überlauf von Protokolldaten... verhindert&amp;quot;&lt;br /&gt;
&lt;br /&gt;
Ist eine etwas eingeschrankte Sicht. Wurde hier eher von Ueberlauf von Speicherplaz zu Beispiel im Rahmen der Protokollierung sprechen&lt;br /&gt;
&lt;br /&gt;
; Durchfuehrung von Lasttests zur Identifikation ressourcenintensiver Operationen&lt;br /&gt;
&lt;br /&gt;
Der Hinweis waere ggf. erwahnenswert&lt;br /&gt;
&lt;br /&gt;
; Hinweis auf nicht-angemeldeten Bereich&lt;br /&gt;
&lt;br /&gt;
Das Risiko durch rechenintensive Operationen durch einen DoS betroffen zu sein ist natuerlich fuer gewoehlich um so groesser, wenn diese im anonymen Bereich angeboten wird. Der Hinweis ware ggf. ebenfalls hilfreich.&lt;br /&gt;
&lt;br /&gt;
== M 4.WA25Verhinderung von Clickjacking (Markus) ==&lt;br /&gt;
Ok - das passt soweit.&lt;br /&gt;
&lt;br /&gt;
([[User:Mrohr|Matthias]]) Stimmt, auch wenn ich &amp;quot;Angreifer&amp;quot; in dem Beispiel eher als &amp;quot;Webseitenbetreiber&amp;quot; beschreiebn wuerde, da er nicht wirklich aktiv einen Angriff durchfuehrt, oder? Bitte nochmal ueber meinen Hinweis aus G 5.WA18 nachdenken: Ist Clickjacking-Schutz tatsaechlich Grundschutz? Ich bin mir da selber nicht so wirklich sicher.&lt;br /&gt;
&lt;br /&gt;
== M 5.WA21Sichere Anbindung von Hintergrundsystemen an Web-Anwendungen (Markus) ==&lt;br /&gt;
; Verantwortliche:&lt;br /&gt;
 Architekten fehlen. Entwickler müssen die Views umsetzen und die Datasource entsprechend einbinden - die fehlen hier ebenfalls.&lt;br /&gt;
; DirectorySystem Beispiel:&lt;br /&gt;
 Das DirectorySystem wird in dem angegeben Beispiel zum Single Point of Failure - das wird verschwiegen.&lt;br /&gt;
; Firewalls:&lt;br /&gt;
 Das sind fachlich-blinde Systeme. Was ist mit WAFs / IDS / IPS etc.?&lt;br /&gt;
([[User:Mrohr|Matthias]]) Stimmt, das hat in diesem Baustein nichts zu suchen&lt;br /&gt;
&lt;br /&gt;
([[User:Mrohr|Matthias]]) Noch ein weiterer Punkt von mir&lt;br /&gt;
&lt;br /&gt;
; Typische Hintergrundsysteme&lt;br /&gt;
Hier fehlt irgendwie &amp;quot;Middleware&amp;quot;, die ist denke ich nicht immer Legacy&lt;br /&gt;
&lt;br /&gt;
== M 5.WA23Systemarchitektur einer Web-Anwendung (Markus) ==&lt;br /&gt;
; Verantwortliche:&lt;br /&gt;
Auch hier fehlend wieder die Architekten. &lt;br /&gt;
; Virtualisierung:&lt;br /&gt;
Virtualisierung bietet weitere Angriffsvektoren (z.B.: Hypervisor) die eine &amp;quot;Blech&amp;quot;Farm nicht bietet.&lt;/div&gt;</summary>
		<author><name>Mrohr</name></author>	</entry>

	<entry>
		<id>https://wiki.owasp.org/index.php?title=Talk:OWASP_Review_BSI_IT-Grundschutz_Baustein_Webanwendungen&amp;diff=130146</id>
		<title>Talk:OWASP Review BSI IT-Grundschutz Baustein Webanwendungen</title>
		<link rel="alternate" type="text/html" href="https://wiki.owasp.org/index.php?title=Talk:OWASP_Review_BSI_IT-Grundschutz_Baustein_Webanwendungen&amp;diff=130146"/>
				<updated>2012-05-21T08:26:11Z</updated>
		
		<summary type="html">&lt;p&gt;Mrohr: /* M 5.WA21Sichere Anbindung von Hintergrundsystemen an Web-Anwendungen (Markus) */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Since it's about a review of a document in German, all the discussions will be done in German :-)&lt;br /&gt;
&lt;br /&gt;
Diskussionen rund um den Review des &amp;quot;IT-Grundschutzbausteins Webanwendungen&amp;quot; finden hier statt, sinnvollerweise auf Deutsch :-)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Vorschlag für Kriterien, die an unser Review angelegt werden sollten (.kai) ==&lt;br /&gt;
&lt;br /&gt;
* Der Baustein soll alle wichtigen Themen der Entwicklung sicherer&lt;br /&gt;
Webanwendungen enthalten.&lt;br /&gt;
&lt;br /&gt;
* Der Baustein soll die verschiedenen Phasen der Software-Entwicklung&lt;br /&gt;
vollständig abdecken.&lt;br /&gt;
&lt;br /&gt;
* Der Baustein soll zwischen verbindlichen, prüfbaren Vorgaben und&lt;br /&gt;
unverbindlichen Empfehlungen sprachlich sauber unterscheiden (hier&lt;br /&gt;
spielt mein Auditorenblick eine Rolle). Vor allem soll der Baustein&lt;br /&gt;
verbindliche Anforderungen auch tatsächlich stellen. Alle&lt;br /&gt;
verbindlichen Anforderungen müssen unabhängig von der jeweiligen&lt;br /&gt;
Umgebung auch umsetzbar sein, d.h. sie müssen entsprechend generisch&lt;br /&gt;
sein.&lt;br /&gt;
&lt;br /&gt;
* Die Maßnahmen sollen nur in (begründbaren) Ausnahmen zu Empfehlungen&lt;br /&gt;
von OWASP im Widerspruch stehen.&lt;br /&gt;
&lt;br /&gt;
* Die Maßnahmen sollen verständlich und anwendbar sein.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== &amp;quot;Hilfsmittel&amp;quot; (Markus) ==&lt;br /&gt;
Ich würde das Script zur Vermeidung von Clickjacking wrappen und nicht als losen Skript-block in den Text einbinden - einfach schlechter Programmierstiel diese losen Blöcke.&lt;br /&gt;
Der Zugriff auf das Body-Element mit byTagName-Array[0] ist auch nicht wirklich gut. Ich halte Zugriffe über das DOM (klassisch), bei ID bzw. XPATH für besser. &lt;br /&gt;
&lt;br /&gt;
SQL-Injection Characters:&lt;br /&gt;
die Pipe fehlt hier zur Textkonatenierung&lt;br /&gt;
+ / - haben auch eine Bedeutung bei JOINs.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== &amp;quot;Goldene Regeln&amp;quot; (Matthias) ==&lt;br /&gt;
&lt;br /&gt;
Hier meine Anmerkungen zu diesem Dokument:&lt;br /&gt;
&lt;br /&gt;
; 1. Für mich fehlende Punkte&lt;br /&gt;
* Korrektur der Ursache (Root Cause) von Schwachstellen statt  Verhinderung deren Ausnutzung&lt;br /&gt;
* Bezug auf Minimierung der Angriffsfläche und Least-Privilege-Prinzip&lt;br /&gt;
* Bezug auf Defense-in-Depth-Prinzip&lt;br /&gt;
* Verwendung von getesteten Security APIs (z.B. OWASP ESAPI) statt selbstentwickelter Funktionen&lt;br /&gt;
* Bezug auf Externalisierung von Sicherheitsfunktionen, sowie deklerative vor programmatischer Sicherheit.&lt;br /&gt;
&lt;br /&gt;
; 2. Begriff &amp;quot;Web-Anwendung&amp;quot;&lt;br /&gt;
Würde ich generell durch &amp;quot;Webanwendung&amp;quot; ersetzen.&lt;br /&gt;
&lt;br /&gt;
; 3. Einleitung (&amp;quot;Web-Anwendungen stellen Funktionalität zur Verfügung, ...&amp;quot;)&lt;br /&gt;
&lt;br /&gt;
Wozu dient dieser Satz?&lt;br /&gt;
&lt;br /&gt;
; 4. &amp;quot;Die Architektur der Web-Anwendung ist im Sicherheitskonzept zu  dokumentieren.....&amp;quot; &lt;br /&gt;
&lt;br /&gt;
Ich fände es sinnvoller, wenn hier von der &amp;quot;Sicherheitsarchitektur&amp;quot; gesprochen wird, welche etwa neben den sicherheitsrelevanten Datenflüssen, sensible Komponenten, Entry Points, Akteure architekturelle Security Controls wie Authentisierung, Kryptographie und natürlich die Trust Boundaries beinhaltet.&lt;br /&gt;
&lt;br /&gt;
; 5. &amp;quot;Bei Web-Anwendungen handelt es sich häufig um spezielle Eigenentwicklungen....&amp;quot;&lt;br /&gt;
&lt;br /&gt;
Erstens würde ich hier den geläufigen Begriff &amp;quot;Individualsoftware&amp;quot; verwenden. Zweitens würde ich statt bestimmte SDLC-Phasen vorzugeben (die Begriffe &amp;quot;Softwareverteilung&amp;quot; und &amp;quot;Integration&amp;quot; sind mir bei Webanwendungen bisher noch nicht so häufig untergekommen), besser von der Notwendigkeit sprechen, Sicherheit in allen Entwicklungsphasen zu berücksichtigen, also eines SDLs.&lt;br /&gt;
&lt;br /&gt;
; 6. &amp;quot;Alle Ein- und Ausgaben der Web-Anwendung müssen in eine normalisierte Form überführt werden....&amp;quot;&lt;br /&gt;
&lt;br /&gt;
Normalisierung ist für mich nicht gleich Kanonsierung, auch wenn beide Begriffe häufig als synonym verwendet werden.  Der Unterschied wird in der [http://owasp-esapi-java.googlecode.com/svn/trunk_doc/2.0-rc4/org/owasp/esapi/Encoder.html API-Beschreibung der ESAPI] erklärt. Die Normalisierungs-Funktion ist allerdings schon vor einiger Zeit aus der ESAPI [https://lists.owasp.org/pipermail/esapi-dev/2010-January/000266.html rausgeflogen]. Die generelle Kanonisierung von Ausgaben halte ich dazu für nicht sinnvoll.&lt;br /&gt;
&lt;br /&gt;
Zweitens, finde ich den weiteren Text zwar grundsätzlich formal korrekt, aber so allgemein, dass dieser glaube ich niemandem so richtig etwas bringt.  &lt;br /&gt;
&lt;br /&gt;
Besser fände ich hier Ein- von Ausgabevalidierung grundsätzlich voneinander abzugrenzen. Etwa was ich per Eingabevalidierung (Längenprüfung, Casting, etc. per Whitelisting) und was mit Ausgebavalidierung (Enkodierung, Escaping, Parametrisierung) machen muss und kann.&lt;br /&gt;
&lt;br /&gt;
Eingabedaten können technisch zudem auch Werte eingelesener Property-Dateien sein. Muss ich die auch validieren? Ist das dann noch Grundschutz? &lt;br /&gt;
&lt;br /&gt;
; 7. &amp;quot;Für den Zugriff auf sensitive Funktionen oder Informationen muss die Web-Anwendung eine wirksame Authentisierung und Sitzungsverwaltung unterstützen. Die Eigenschaften der Sitzungs-ID müssen so gewählt werden, dass die Sitzung ausreichend geschützt ist. ....&amp;quot;&lt;br /&gt;
&lt;br /&gt;
Besser fände ich &amp;quot;eine Authentisierung, die über eine dem Schutzbedarf der Anwendung angemessene Stärke verfügt.&amp;quot; &lt;br /&gt;
&lt;br /&gt;
Eigentlich geht es doch mehr um den Schutz der Sitzungs-ID, da diese gewöhnlich im Verlauf einer Sitzung den Client authentisiert. Oder den Schutz des Zugriffs auf eine Sitzung. &lt;br /&gt;
&lt;br /&gt;
Zudem fehlt hier meiner Meinung nach der Hinweis auf die bevorzugte Verwendung getesteter Standardkomponenten.&lt;br /&gt;
&lt;br /&gt;
; 8. &amp;quot;Die Web-Anwendung sollte die zu übermittelnden Daten schützen.&amp;quot;&lt;br /&gt;
&lt;br /&gt;
Dies würde ich nur auf sensible Daten beziehen. Zusätzlich zu HTTPS würde ich hier schreiben, dass sensible Daten generell nicht in der URL übertragen werden dürfen.&lt;br /&gt;
&lt;br /&gt;
; 9. &amp;quot;Die Preisgabe interner Informationen (z.B. Kommentare, Fehlermeldungen)&amp;quot;&lt;br /&gt;
&lt;br /&gt;
Hier würde ich eher schreiben &amp;quot;(IN Kommentaren, Fehlermeldungen, HTTP Headern, etc.)&amp;quot;&lt;br /&gt;
&lt;br /&gt;
; 10. &amp;quot;Fehler müssen so behandelt werden, ... müssen Fehler bei der Autorisierung zu einer Verweigerung beim Zugriff auf die angeforderte Ressource führen.&amp;quot;&lt;br /&gt;
&lt;br /&gt;
Sprachlich: &amp;quot;Die Webanwendung muss sich stets in einem sicheren Zustand befinden. Beispielsweise müssen Fehler bei der Autorisierung zu einer Verweigerung des Zugriffs führen (Default-Deny-Strategie).&amp;quot;&lt;br /&gt;
&lt;br /&gt;
; 11. &amp;quot;Die Logging-Funktionen der Web-Anwendung müssen aufgetretene Ereignisse derart protokollieren, dass sicherheitskritische Vorfälle nachvollzogen werden können.&amp;quot;&lt;br /&gt;
&lt;br /&gt;
Hier würde hier eher von &amp;quot;allen sicherheitsrelevanten Ereignissen&amp;quot; sprechen.&lt;br /&gt;
&lt;br /&gt;
Weiterhin sollten insbesondere beim Logging der Datenschutz berücksichtigt werden, personenbezogene Daten also nach Möglichkeit nicht oder nur anonymisiert in technischen Logdateien protokolliert werden.&lt;br /&gt;
&lt;br /&gt;
; 12. &amp;quot;Alle Sicherheitsmechanismen (z.B. Authentisierung und Zugriffskontrolle) sind serverseitig zu implementieren und können nicht durch clientseitige Mechanismen ersetzt werden.&amp;quot;&lt;br /&gt;
&lt;br /&gt;
Die Aussage ist so nicht korrekt. Darüber hatten wir bereits bei der ASVS mehrfach diskutiert. &lt;br /&gt;
&lt;br /&gt;
Überall dort wo der Client angegriffen wird, also etwa bei RIAs (Stichwort DOM-Based XSS) müssen wir Security Controls clientseitig implementieren. Es gibt mittlerweile deshalb auch eine Portierung der ESAPI auf Javascript. Überall dort wo der Server oder Hintegrundsysteme angegriffen werden, ist die Aussage aber natürlich zutreffend.&lt;br /&gt;
&lt;br /&gt;
== &amp;quot;Gefährdungen&amp;quot; (Markus, Dennis, .... &amp;lt;Dein Name&amp;gt;) ==&lt;br /&gt;
; Generell:&lt;br /&gt;
Reference auf RFCs fehlen.&lt;br /&gt;
&lt;br /&gt;
==B.5.XX Web-Anwendungen ==&lt;br /&gt;
; 1. Erster Absatz - Letzter Satz: --Wieso werden hier nur HTML/XML Doks und Oberflächen angesprochen? Was ist der Unterschied zwischen einem HTML-Dok und einer Oberfläche? Was ist mit  Flash, etc.? Was ist mit WebSockets?&lt;br /&gt;
; 2. Stichpunkt &amp;quot;Protokollierung&amp;quot;: Sicherheits relevant ist ein sehr dehnbarer Begriff - Eine bessere Formulierung könnte sein: Zur Rekonstruktion von Nutzerhandlungen nötige Ereignisse (positve &amp;amp; negative) müssen protokolliert werden . . . &lt;br /&gt;
; 3. Absatz: &amp;quot;Abgrenzung des Bausteins&amp;quot;: &amp;quot;Die spez. Sicherheitsanforderungen an Web-Services werden in diesem Baustein nicht betrachtet&amp;quot; --&amp;gt; Wie so nicht? Was ist das Backend von einer Rest / AJAX-basierenden Webanwendung denn anderes als ein Web-Service? Diesen Satz würde ich entfernen.&lt;br /&gt;
; 4.Vorsätzliche Handlungen -&amp;gt; Web-Spoofing (G.5.87) -- Missverständliche Bezeichnung / Nomenklatur&lt;br /&gt;
; 5. Seite 4 : erste Zeile &amp;quot;Umsetzung&amp;quot;: &amp;quot;dafür umzusetztende Komponenten müssen die Webanwendung schützen...&amp;quot; - Hier fehlt mir der Hinweis, dass dieser Schutz verifiziert werden muss.&lt;br /&gt;
; 6 Seite 5: &amp;quot;Umsetzung&amp;quot; - Wir haben CSRF, D(D)os und SQL-Injection aber wo ist XSS?&lt;br /&gt;
; 7 Seite 7: &amp;quot;Die Sicherheitsfunktion wird ausschließlich clientseitig...&amp;quot; --&amp;gt; Warum muss der Angreifer überhaupt einen Browser umkonfigurieren? Was ist mit Proxies, Scripts, etc.? Ich würde das reduzieren darauf, dass rein Webbrowser-basierende Schutzfunktionen einfach umgangen werden können.&lt;br /&gt;
; 8 Seite 8: Die angesprochenen Punkte hinterlassen den Eindruck nicht vollständig zu sein: Mir fehlen Punkte wie &amp;quot;Outsourcing&amp;quot;, &amp;quot;KnowHow der Entwickler&amp;quot;, Tooling, Framework-Auswahl, etc.&lt;br /&gt;
; 9 Seite 9: Eigentlich möchte der Autor hier über Datenschutz sprechen. Abgesehen von den letzten drei Zeilen geht es aber nur um &amp;quot;User tracking&amp;quot; - Wo ist der Rest der Datenschutzproblematik? Warum der Fokuss auf Tracking? Mir ist das zu einseitig.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
tbd.&lt;br /&gt;
&lt;br /&gt;
; Wortwahl:&lt;br /&gt;
Ich stosse innerhalb der Texte immer wieder an die Worten '''Hintergrundsystem''' und '''Sicherheitskontext'''.&lt;br /&gt;
'''Hintergrundsystem:''' besseres Synonym?&lt;br /&gt;
'''Sicherheitskontext:''' nur weil es in den Texten um Sicherheit geht muss nicht an jeder Stelle immer wieder das Wort _Sicherheits_kontext eingebaut werden.&lt;br /&gt;
Bsp: &amp;quot;Erlangt ein Angreifer Kenntnis von einer solchen gültigen, aber nicht mehr genutzten SessionID, so kann er die Web-Anwendung im Sicherheitskontext des nicht abgemeldeten Benutzers weiter verwenden.&amp;quot; (G 5,WA12 Unzureichendes Session-Management von Web-Anwendungen)&lt;br /&gt;
Verbesserungsansansatz: ... so kann er die Web-Anwendung anstelle des eigentlichen Besitzers weiterhin verwenden.&lt;br /&gt;
&lt;br /&gt;
== &amp;quot;G 2.WA01 Mangelhafte Auswahl oder Konzeption von Web-Anwendungen&amp;quot; (Matthias) ==&lt;br /&gt;
&lt;br /&gt;
Nachdem ich mir diese Gefährdung durchgelesen hatte, fehlten mir ehrlich gesagt etwas die Worte. Nicht nur, dass hier fast jeder zweite Satz entweder falsch ist bzw. massive Fehler enthält oder ich diesen schlicht nicht verstehe, ist der ganze Text sprachlich wirklich enorm verbesserungsfähig. &lt;br /&gt;
&lt;br /&gt;
Na gut, ich konzentriere mich mal auf die fachlichen Punkte:&lt;br /&gt;
&lt;br /&gt;
; 1. Security Controls&lt;br /&gt;
Werden mal mit &amp;quot;Schutzmechanismen&amp;quot;, mal mit &amp;quot;Sicherheitskomponenten&amp;quot; und dann wieder als &amp;quot;Sicherheitsfunktionen&amp;quot; bezeichnet. Hier macht eine einheitliche Benennung sicherlich Sinn und ist weniger verwirrend.&lt;br /&gt;
&lt;br /&gt;
; 2. &amp;quot;Eine Web-Anwendung ist in der Regel ein verteiltes, komplexes System bestehend aus unterschiedlichen Komponenten (z. B. Webserver, Applikationsserver, Hintergrundsysteme)&amp;quot;&lt;br /&gt;
&lt;br /&gt;
Eine Webanwendung besteht sicher nicht aus einem Webserver- oder anderer infrastruktureller Komponenten, sondern ist Software welches diese nutzt.&lt;br /&gt;
&lt;br /&gt;
; 3. &amp;quot;Bei individuell entwickelten Web-Anwendungen sind im Allgemeinen die Frameworks, Komponenten und Schnittstellen im Rahmen der Konzeption auszuwählen und deren Einbindung und Absicherung zu betrachten....Im Gegensatz dazu ist bei der Konzeption von Web-Anwendungen auf Basis von Standardsoftware insbesondere auf die Auswahl der Software und die Konfiguration der Teilkomponenten zu achten&amp;quot;&lt;br /&gt;
&lt;br /&gt;
Wir unterscheiden im Rahmen von Webanwendungen eigentlich Free or Opensource Software (FOSS bzw. FLOSS), Standardsoftware und Individualsoftware voneinander. Wir unterscheiden nicht Frameworks von Standardsoftware. Frameworks können Teil von Standardsoftware sein, wie etwa bei SharePoint, SAP, etc, oder aber FOSS, wie etwa Spring. Die ganzen Absätze machen für mich daher keinen Sinn.&lt;br /&gt;
&lt;br /&gt;
; 4. &amp;quot;Eine Sicherheitsfunktion (z. B. Authentisierung, Autorisierung) wird nicht an einer Stelle umgesetzt und verwendet, sondern ist mehrfach in der Web- Anwendung realisiert. Wird diese Sicherheitsfunktion an den verschiedenen Stellen unterschiedlich umgesetzt, führt dies zu einem uneinheitlichen Sicherheitsniveau.&amp;quot;&lt;br /&gt;
&lt;br /&gt;
Natürlich ist die mehrfache Verwendung bestimmter Security Controls, beispielsweise von Zugriffskontrollen (Complete-Mediation) oder Validierung (Robustheit) erstrebenswert. Was der Autor hier wahrscheinlich meinte, war die Notwendigkeit diese zu Kapseln bzw. zu Externalisieren. Das bezieht sich im übrigen nicht nur auf die Controls selbst, sondern auch auf ihre Parametrisierung (etwa. über Konfigdateien / XACML).&lt;br /&gt;
&lt;br /&gt;
Wichtiger wäre in diesem Zusammenhang zudem die fehlende Berücksichtigung bestimmter Security Controls.&lt;br /&gt;
&lt;br /&gt;
; 5. &amp;quot;Auswahl von Web-Anwendungen auf Basis von Standardsoftware&amp;quot;&lt;br /&gt;
Was will der Satz sagen? Ich wähle Standardsoftware aus, aber doch keine Webanwendungen. Oder heißt das, ich kaufe eine existierende Anwendung ein (Webanwendung!=Indivudualsoftware)? &lt;br /&gt;
&lt;br /&gt;
; 6. &amp;quot;Das ausgewählte Produkt verfügt nicht über die ausreichende Sicherheitsfunktionalität, ... Daher müssen die notwendigen Schutzmechanismen nachträglich hinzugefügt werden, wodurch zusätzliche Aufwände entstehen.&amp;quot;&lt;br /&gt;
Das ist etwas sehr positiv formuliert. Tatsächlich können fehlende Security Controls in zugekaufter Software (insb. Standardsoftware) in der Realität häufig gar nicht hinzugefügt werden oder nur perimetrisch (z.B. per WAF oder Access Gateway).&lt;br /&gt;
&lt;br /&gt;
; 7. &amp;quot;Die Hintergrundsysteme werden unzureichend abgesichert und dadurch ist die Datenbank der Web-Anwendung aus dem Internet erreichbar.&amp;quot;&lt;br /&gt;
Gehören fehlende Netzwerksegmentierung bzw. Firewallregeln wirklich in diesen Kontext? Das ist doch eigentlich Grundschutz der Infrastruktur, oder?&lt;br /&gt;
&lt;br /&gt;
; 8. &amp;quot;Aufgrund schwacher Parameter in der Konfiguration des Frameworks zum Session-Management werden unsichere SessionIDs erzeugt.&amp;quot;&lt;br /&gt;
Was sind &amp;quot;schwache&amp;quot; Parameter?&lt;br /&gt;
&lt;br /&gt;
Welches Framework erlaubt unsichere SessionIDs durch eine &amp;quot;schwache&amp;quot; Konfiguration zu erzeugen?&lt;br /&gt;
&lt;br /&gt;
; 9. &amp;quot;Wird die Konfiguration des Web-Browsers durch einen Angreifer manipuliert, können die clientseitig umgesetzten&amp;quot;&lt;br /&gt;
&lt;br /&gt;
Manipuliert ein Angreifer die Konfguration seines Webbroswers, wenn er einen MITM-Proxy konfiguriert?&lt;br /&gt;
&lt;br /&gt;
Wie bereits bei den &amp;quot;Goldenen Regeln&amp;quot; angemerkt, gilt auch hier, das manche Security Controls auch clientseitig umgesetzt werden dürfen (etwa. zur Verhinderung von Dom-Based XSS).&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== &amp;quot;G 5.WA10 Fehler in der Web-Anwendungslogik&amp;quot; (Dennis) ==&lt;br /&gt;
; 1. &amp;quot;Damit kann aufgrund der Prüfreihenfolge ein hoher Ressourcenverbrauch provoziert werden, der für Denial-of-Service-Angriffe ausgenutzt werden kann.&amp;quot;&lt;br /&gt;
Meiner Meinung nach passt in diesem Kontext die Attacke DoS nicht ganz. Falls die nachfolgende Funktionalität wegen der langen Ausführungszeit der Filterkomponente übersprungen wird bzw. ein Fehler auftritt würde dies meiner Ansicht in die Thematik Anwendungslogik passen. Eine DoS-Attacke kann hingegen anhand jeder Funktion durchgeführt werden.&lt;br /&gt;
&lt;br /&gt;
== &amp;quot;G 5.WA11 Umgehung clientseitig umgesetzter Sicherheitsfunktionen von Web-Anwendungen&amp;quot; (Dennis) ==&lt;br /&gt;
; 1. &amp;quot;Ein Angreifer kann diese ausnutzen, um beispielsweise unbefugt Befehle an Hintergrundsysteme der Web-Anwendung zu übermittlen (z.B. in Form von Datenbankanfragen bei einer SQL-Injection).&amp;quot;&lt;br /&gt;
Umformulierung des Inhalts der Klammer. Hatte beim ersten Lesen für mich den Anschein, als ob ein Formular genutzt werden könnte welches den Nutzer aufforder eine SQLI einzugeben. Ich denke &amp;quot;Datenbankanfrage zwecks Ausführung einer SQL-Injection&amp;quot; würde besser passen.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== G 2.WA02 Mängel bei der Entwicklung und der Erweiterung von Web-Anwendungen (Matthias) ==&lt;br /&gt;
&lt;br /&gt;
Allgemein ist de obere Teil ok, die aufgezählten &amp;quot;Auswirkungen von fehlenden Vorgaben&amp;quot; verstehe ich jedoch nicht. Wo ist etwa der Bezug von Barrierefreiheit auf die Anwendungssicherheit?&lt;br /&gt;
&lt;br /&gt;
Mein Vorschlag, um diese Punkte etwa sinnvoll umzubauen:&lt;br /&gt;
* &amp;quot;Fehlendes Vorgehensmodell&amp;quot;: Bezug auf fehlende Berücksichtigung von Sicherheit im SDLC. Statt eines SDLCs selbst sollte hier besser auf die Notwendigkeit eines Secure Development Lifecycle (SDL) hingewiesen werden&lt;br /&gt;
* &amp;quot;Fehlende Programmierrichtlinien&amp;quot; =&amp;gt; Besser wäre hier &amp;quot;Fehlende Sicherheitsrichtlinien in der Programmierung&amp;quot; also &amp;quot;Secure Coding Guidelines&amp;quot;&lt;br /&gt;
* &amp;quot;Testfälle&amp;quot; =&amp;gt; &amp;quot;Sicherheitsrelevante Testfälle&amp;quot; (z.B. Security Unit Tests). &lt;br /&gt;
* &amp;quot;Barrierefreiheit&amp;quot;: Warum nicht an dieser Stelle die Auswirkungen von Sicherheitsfunktionen auf die Bedienbarkeit, etwa anhand von CAPTCHAS erläutern?&lt;br /&gt;
&lt;br /&gt;
== G 2.WA03 Unzureichender Schutz personenbezogener Daten bei Web-Anwendungen (Matthias) ==&lt;br /&gt;
&lt;br /&gt;
Der Titel dieses Bausteines heißt &amp;quot;Schutz personenbezogener Daten&amp;quot;, die genannten Beispiele beziehen sich bis auf den letzten jedoch auf die missbräuchliche (oder zumindest problematische) Nutzung aus Sicht des Datenschutzes. &lt;br /&gt;
&lt;br /&gt;
Die Punkt 1-3 sollten daher besser entfallen und z.B. durch die Folgenden ersetzt werden:&lt;br /&gt;
* Unsichere Einbindung von sozialen Netzwerken (Bezug nehmen auf den Like-Button bei Facebook)&lt;br /&gt;
* Unsichere Einbindung von Werbeinhalten&lt;br /&gt;
* Unsichere Übertragung und Caching&lt;br /&gt;
* Unsichere Protokollierung&lt;br /&gt;
* Ungenügender Zugriffsschutz&lt;br /&gt;
* Verstoß des Minimalprinzips bzw. der Zweckgebundenheit (welche Daten werden wirklich benötigt)&lt;br /&gt;
&lt;br /&gt;
Auch wäre es ggf. zumindest einen Verweis auf das BDSG zu machen.&lt;br /&gt;
&lt;br /&gt;
== G 4.33 Unzureichende oder fehlende Authentisierung (Matthias) ==&lt;br /&gt;
&lt;br /&gt;
; 1. Erster Absatz: &amp;quot;Wenn Authentisierungsmechanismen fehlen oder zu schlecht sind&amp;quot;&lt;br /&gt;
&lt;br /&gt;
&amp;quot;schlecht&amp;quot; sollte vlt besser durch &amp;quot;unzureichend&amp;quot; ersetzt werden.&lt;br /&gt;
&lt;br /&gt;
; 2. &amp;quot;Sicherheitslücken entstehen bei... der Benutzerauthentisierung&amp;quot;&lt;br /&gt;
&lt;br /&gt;
Hier findet nur ein Bezug auf &amp;quot;Passwörter&amp;quot; statt. Der Bezug auf die fehlerhaft implementierte oder dem Schutzbedarf ungenügende Schutzmechanismen (z.B. keine 2-Faktor-Authentisierung bei hochsensiblen Daten) fehlt. Auch auf das komplette fehlen von Authentisierungs-Controls wird hier nicht  eingegangen&lt;br /&gt;
&lt;br /&gt;
; 3. &amp;quot;Sicherheitslücken entstehen bei... der Komponentenauthentisierung&amp;quot;&lt;br /&gt;
&lt;br /&gt;
Wie bei 2., wird auch hier wieder nur auf Passwörter, nicht jedoch auf das fehlen von Controls selbst eingegangen. An dieser Stelle fehlt auch ein Hinweis auf die Notwendigkeit dedizierter Benutzeraccounts.&lt;br /&gt;
&lt;br /&gt;
; 4. &amp;quot;Sicherheitslücken entstehen bei... der Wahl des Verfahrens&amp;quot;&lt;br /&gt;
&lt;br /&gt;
Statt untauglich würde ich auch hier von &amp;quot;dem Schutzbedarf der Daten nicht angemessen&amp;quot; sprechen, eigentlich gehört das für mich aber in die obigen Punkte.&lt;br /&gt;
&lt;br /&gt;
; 5. Serverseitige Authentisierung fehlt&lt;br /&gt;
&lt;br /&gt;
Auch der Server (bzw. die Anwendung selbst) kann sich fehlerhaft oder ungenügend beim Benutzer authentsieren, etwa über DNS, SSL-Zertifikate, etc.&lt;br /&gt;
&lt;br /&gt;
== G 4.WA04 Unzureichende Validierung von Ein- und Ausgabedaten bei Web-Anwendungen (Matthias) ==&lt;br /&gt;
&lt;br /&gt;
; 1. &amp;quot;Unzureichende Validierung von Eingabedaten&amp;quot;&lt;br /&gt;
&lt;br /&gt;
Die genannten Beispiele sind genau keine korrekten Beispiele für diesen Fall, sondern betreffen die Ausgabevalidierung bzw. Enkodierung. Typische Fehler der Eingabevalidierung ist eine Manipulierbarkeit der Business Logik.&lt;br /&gt;
&lt;br /&gt;
; 2. &amp;quot;Unzureichende Validierung von Ausgabedaten&amp;quot;&lt;br /&gt;
&lt;br /&gt;
Hier geht es zentral um die Verhinderung von Interpreter Injection, also serverseitig (z.B. SQL oder LDAP Injection) oder clientseitig (XSS, JSON Injection, etc.). Statt &amp;quot;können die Ausgaben Schadcode&amp;quot; enthalten würde ich hier eher davon Sprechen, dass ein solcher Interpreteraufruf manipuliert werden kann (was dann z.B. zur Einschleusung von Schadcode genutzt werden kann).&lt;br /&gt;
&lt;br /&gt;
; 3. &amp;quot;Die Suchfunktion der Web-Anwendung verwendet die Eingaben der Benutzer ungefiltert&amp;quot;&lt;br /&gt;
&lt;br /&gt;
Mit ungenügender &amp;quot;Filterung&amp;quot; hat SQL Injection nichts zu tun,  eigentlich geht es hierbei darum, dass SQL-Anfragen dynamisch mit unvalidierten Eingebedaten zusammengebaut (konkateniert) werden.&lt;br /&gt;
&lt;br /&gt;
; 4. &amp;quot;Ungefilterter HTML-Code in Kommentar-Funktion&amp;quot;&lt;br /&gt;
&lt;br /&gt;
Hier fehlt der Bezug auf persistentes XSS, das hier sicherlich zentral ist.&lt;br /&gt;
&lt;br /&gt;
== G 4.WA05 Fehlende oder mangelhafte Fehlerbehandlung durch Web-Anwendungen (Tobias, Matthias) ==&lt;br /&gt;
; Abschnitt &amp;quot;Unsichere Fehlerbehandlung&amp;quot;&lt;br /&gt;
Die G adressiert &amp;quot;Unsichere Fehlerbehandlung&amp;quot;, der Abschnitt die &amp;quot;Unsichere Fehlerbehandlung in Sicherheitskomponenten&amp;quot;. Entsprechend sollte der fettgedruckte Teil angepasst werden.&lt;br /&gt;
&lt;br /&gt;
; &amp;quot;fehlende SQL-Parameter,&amp;quot;&lt;br /&gt;
Sollte besser &amp;quot;Fehlermeldungen bei ungültigen SQL-Abfragen&amp;quot; lauten.&lt;br /&gt;
&lt;br /&gt;
; &amp;quot;Auch scheinbar unkritische Informationen, wie die Meldung ob (..)&amp;quot;&lt;br /&gt;
Korrekt, allerdings nicht nachvollziehbar, wenn das Problem der Leser nicht schon bekannt ist. Daher erweitern nach &amp;quot; Rahmen von Brute-Force-Angriffen ausgenutzt werden.&amp;quot; mit &amp;quot;. Bei Brute-Force-Angriffen wäre in diesem Fall klar, dass der Benutzername gültig ist.&amp;quot;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[User:Mrohr|Matthias]]): Stimme dem Obigen auch zu, ausserdem:&lt;br /&gt;
&lt;br /&gt;
; Sprachlich: &amp;quot;kann dies unvorhersehbare Auswirkungen haben und den Betrieb der Web-Anwendung bis zur Unerreichbarkeit einschränken.&amp;quot;&lt;br /&gt;
&lt;br /&gt;
&amp;quot;Unerreichbarkeit&amp;quot; ist etas merkwuerdig ausgedrueckt, besser ware hier von der &amp;quot;Verfuegbarkeit&amp;quot; zu sprechen. Im Uebrigen fehlt vollstaendig der Bezug auf die Verfuegbarkeit als Primaeres Schutzziel der Informationssicherheit.&lt;br /&gt;
&lt;br /&gt;
; &amp;quot;Clientseitige Fehlerbehandlung&amp;quot;&lt;br /&gt;
Das stimmt soweit, das generelle Problem ist jedoch genereller, naehmlich die clientseitige Abbildung sicherheitsrelaventer Logik (in diesem Fall die Fehlerbehandlung)&lt;br /&gt;
&lt;br /&gt;
== G 4.WA06 Unzureichende Nachvollziehbarkeit von sicherheitsrelevanten Ereignissen bei Web-Anwendungen (Matthias) ==&lt;br /&gt;
&lt;br /&gt;
; 1. Erster Absatz: &amp;quot;Die Behebung einer Schwachstelle ist dann nicht oder nur unter erschwerten Bedingungen möglich.&amp;quot;&lt;br /&gt;
&lt;br /&gt;
Hier würde ich ergänzen: &amp;quot;...und Angriffe auf die Anwendungen können ggf. nicht erkannt oder nachvollzogen werden&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
; 2. &amp;quot;Beispiele&amp;quot;: Kommulierbarkeit&lt;br /&gt;
&lt;br /&gt;
Hier fehlt auch ein Bezug auf die Kommulierbarkeit von SIcherheitsereignissen, dass diese also auch von solchen anderer Systeme in Verbindung gesetzt werden können&lt;br /&gt;
&lt;br /&gt;
; 3. &amp;quot;Beispiele&amp;quot;: Gerichtsverwertbarkeit&lt;br /&gt;
&lt;br /&gt;
Auch die Möglichkeit zur Gerichtsverwertbarkeit (etwa durch eindeutigen Zeitstempel) und manipulationssicherer Speicherung, würde ich an dieser Stelle unbedingt erwähnen.&lt;br /&gt;
&lt;br /&gt;
== G 4.WA07 Offenlegung von Informationen bei Web-Anwendungen (Matthias) ==&lt;br /&gt;
&lt;br /&gt;
; 1. Titel&lt;br /&gt;
&lt;br /&gt;
Hier würde ggf. &amp;quot;Offenlegung vertraulicher Informationen&amp;quot; sicher besser passen als &amp;quot;Offenlegung von Informationen&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
; 2. Beispiellink&lt;br /&gt;
&lt;br /&gt;
Ein Beispiellink (mit und ohne Token) würde sicher die Verständlichkeit dieser Schwachstelle verbessern.&lt;br /&gt;
&lt;br /&gt;
; 3. Erster Absatz: &amp;quot;Wenn demzufolge Informationen unnötig offengelegt werden, steigt die Wahrscheinlichkeit eines erfolgreichen Angriffs.&amp;quot;&lt;br /&gt;
&lt;br /&gt;
Interne Informationen auszublenden ist eine Härtungsmaßnahme, deren Anzeige erhöht aber nicht zwangsläufig die Wahrscheinlichkeit eines erfolgreichen Angriffs. Ich würde diesen Satz weglassen.&lt;br /&gt;
&lt;br /&gt;
 ; 4. Fehlende Punkte&lt;br /&gt;
&lt;br /&gt;
* Ein Hinweis auf HTTP Header wäre hier sicher erwähnenswert.&lt;br /&gt;
* Weiterhin bzgl. der Anzeige von Traces und ein Verweis auf den Entsprechenden Baustein zur Fehlerbehandlung&lt;br /&gt;
&lt;br /&gt;
== G 5.WA14 Cross-Site Request Forgery (CSRF, XSRF) (Matthias) ==&lt;br /&gt;
&lt;br /&gt;
; 1. Erster Absatz: &amp;quot;Können Funktionen einer Web-Anwendung ohne weitere Überprüfung der Authentizität des HTTP-Requests (z.B. durch Tokens in versteckten Formularfeldern) genutzt werden&amp;quot;&lt;br /&gt;
&lt;br /&gt;
Statt &amp;quot;Funktionen&amp;quot; würde ich besser von &amp;quot;schreibenden Aktionen&amp;quot; sprechen, dann macht der Satz mehr Sinn.&lt;br /&gt;
&lt;br /&gt;
; 2. Dritter Absatz: &amp;quot;Im Gegensatz zu XSS (siehe ...￼ ) ist das Angriffsziel nicht die Information auf dem Client (z. B. in Cookies),&amp;quot;&lt;br /&gt;
&lt;br /&gt;
Dieser (Halb-)Satz macht keinen Sinn, auch weil es bei XSS nicht nur im Informationen auf dem Cient geht. Vorschlag: &amp;quot;ist das Angriffsziel nicht die Ausführung von Skriptcode, sondern von unbefugten, schreibenden Aktionen im Kontext des angemeldeten Benutzers.&amp;quot;&lt;br /&gt;
&lt;br /&gt;
; 3. Session Riding&lt;br /&gt;
&lt;br /&gt;
Session Riding ist quasi nur ein anderer Begriff für CSRF. Die einzige Form von CSRF die mir bekannt ist, sind Angriffe mit Standard-Passwörtern auf HTTP-Basic-Auth geschützten Ressourcen.&lt;br /&gt;
&lt;br /&gt;
Im Grunde ist Session Riding aber nur ein Synonym für CSRF. Der Absatz ist daher auch nur eine Wiederholung der obigen Beschreibung.&lt;br /&gt;
&lt;br /&gt;
; 4. Zum Beispiel: &amp;quot;Durch einen präparierten Link auf einer Webseite wird die Änderung des Zugangspasswortes des Routers eingeleitet.&amp;quot;&lt;br /&gt;
&lt;br /&gt;
Etwas ungüngstig ausgedrückt. Besser wäre: &amp;quot;wird eine Anfrage zur Änderung des Zugangspasswortes an den Router gesendet. Hierbei sendet der Browser automatisch den Session Cookie mit, worüber die Webanwendung die Authentizität der Anfrage verifiziert und die Änderung durchführt.&amp;quot;&lt;br /&gt;
&lt;br /&gt;
== G 5.WA18 Clickjacking (Matthias) ==&lt;br /&gt;
&lt;br /&gt;
Hier stellt sich mir nur die allgemeine Frage, ob Clickjacking, bzw. der Schutz davor tatsächlich einem Grundschutz zuzurechnen ist. Persönlich würde ich dies nicht tun.&lt;br /&gt;
&lt;br /&gt;
== M 2.WA02 Dokumentation der Architektur von Web-Anwendungen (Matthias) ==&lt;br /&gt;
&lt;br /&gt;
; Verantwortlich für die Umsetzung&lt;br /&gt;
Hier wäre auch die Nennung des &amp;quot;Architekten&amp;quot; sinnvoll&lt;br /&gt;
 &lt;br /&gt;
; Fehlende Bestandteile der Dokumentation:&lt;br /&gt;
* Schutzbedarf des Systems sowie der verarbeiteten Daten&lt;br /&gt;
* Schützenswerte Daten und Funktionen (Assets)&lt;br /&gt;
* Betriebliche Anforderungen an die Sicherheit bzw. eingesetzte Plattform&lt;br /&gt;
* Dokumentierte Konfigurationseinstellungen &lt;br /&gt;
* BIA (RTO, RPO)&lt;br /&gt;
* Schnittstellen&lt;br /&gt;
* Trust Boundaries&lt;br /&gt;
* Akteure (bzw. Trust Level)&lt;br /&gt;
* Sicherheitsannahmen&lt;br /&gt;
* Geltende Compliance-Anforderungen (BDSG, PCI DSS, etc.)&lt;br /&gt;
&lt;br /&gt;
; Benutzermanagement&lt;br /&gt;
&lt;br /&gt;
Wenn damit das Identity Management gemeint ist, gehört das Dokumentiert, ist aber keine Sicherheitsfunktion. Oder ist hiermit das Rollen- und Berechtigungskonzept gemeint? Grenzt sich aus meiner Sicht schwer mit dem Thema Authentisierung ab. &lt;br /&gt;
&lt;br /&gt;
; Prüffragen&lt;br /&gt;
&lt;br /&gt;
Hier fehlt etwas in Bezug auf Sicherheitsanforderungen. Beispiel: &amp;quot;Werden Sicherheitsanforderungen an den Betrieb während der Entwicklung abgestimmt und dokumentiert&amp;quot;&lt;br /&gt;
&lt;br /&gt;
== M 2.WA12 Entwicklung und Erweiterung von Anwendungen (Markus) ==&lt;br /&gt;
; &amp;quot;Es sollte darauf geachtet werden, dass Sicherheitsanforderungen&lt;br /&gt;
vollständig durch Sicherheitsmechanismen erfüllt und zur Erstellung von&lt;br /&gt;
Testfällen festgehalten werden.&amp;quot; --&amp;gt; Bessere Formulierung würde aussagen, dass die Sicherheitsanforderungen durch Testfälle verifiziert werden.&lt;br /&gt;
&amp;quot;(z. B. durch Kommentare im&lt;br /&gt;
Quelltext). Somit ist der Quelltext zu einem&amp;quot; --&amp;gt; Das ist kein empfehlenswerter Programmierstiel! Raus mit diesem Kommentar&lt;br /&gt;
;&amp;quot;Zum Schutz vor dem Verlust bereits entwickelter und verworfener&lt;br /&gt;
Lösungen sowie zu Dokumentationszwecken sollte die Historie der&lt;br /&gt;
Änderungen festgehalten werden (z. B. durch ein Revisionssystem).&amp;quot; --&amp;gt; Auch diesen Absatz können wir streichen - Kein professioneller Programmierer arbeitet ohne Versionierugssystem.&lt;br /&gt;
;&amp;quot;Bei Web-Anwendung sollten die Webseiten auf Konformität zu dem&lt;br /&gt;
verwendeten Standard (z. B. HTML-Standard) getestet werden. Dadurch&lt;br /&gt;
können unvorgesehene Seiteneffekte aufgrund einer Fehlinterpretation&lt;br /&gt;
seitens der Browser vermieden werden.&amp;quot; --&amp;gt; Könnte man noch um &amp;quot;Die Software ist in möglichst vielen Browsern zu testen&amp;quot; erweitern.&lt;br /&gt;
;Generell geht der Autor leider nicht auf die Rollen &amp;amp; Rechte Verteilung ein. Mir fehlt der Hinweis, das es eine personelle Trennung zwischen Entwicklung, Test und Betrieb geben muss.&lt;br /&gt;
;Zum Thema Wartung / Betrieb --&amp;gt; Hier wird keine Aussage getroffen bezüglich Log_Files. Dieses Thema kann kritische Auswirkungen haben, Bsp.: logging ganzer HTTP-Requests im LogLevel=Debug.&lt;br /&gt;
; &amp;quot;Produktspezifische Sicherheitsfunkionalität&amp;quot; - Dieser Absatz ist gefährlich - der Angreifer ist nicht zur Verwendung dies Zielbrowsers gezwungen. Deshalb können Browser-spez. Sicherheitsfunktionen nur als Add-ON gewertet werden.&lt;br /&gt;
; &amp;quot;Festlegung der Entwicklungsumgebung&amp;quot; - Dieser Absatz geht nicht auf die zu verwendenden Testdaten ein. Der Hinweis, dass Live-Daten / Kundendaten nichts in Test- &amp;amp; Entwicklungsumgebungen zu suchen haben fehlt!!!&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== M 2.WA24 Web-Tracking (Matthias) ==&lt;br /&gt;
&lt;br /&gt;
; Letzter Absatz: &amp;quot;Falls eine Auswertung von Nutzerdaten, insbesondere personenbezogener Daten, .. &amp;quot;&lt;br /&gt;
&lt;br /&gt;
Hier sollte denke ich besser von personenbeziehbaren Daten gesprochen Werten. Dies betrifft etwa die Zuordnung von Surfverhalten zu einer bestimmten Person. Dies sollte stets nach den Prinzipien Datensparsamkeit und Datenvermeidung, Erforderlichkeit, sowie Zweckbindung erfolgen. Ist Webtracking nicht personenbeziehbar ist dies kein Thema für den Datenschutz.&lt;br /&gt;
&lt;br /&gt;
== M 4.WA04 Authentisierung bei Web- Anwendungen (Matthias) ==&lt;br /&gt;
&lt;br /&gt;
; Vermischung von Authentisierung und Session Management &lt;br /&gt;
&lt;br /&gt;
Bei diesem Baustein findet eine ziemlich große Vermischung von Anforderung an die Authentisierung und das erst in &amp;quot;M 4.WA06 Session-Management bei Web- Anwendungen&amp;quot; behandelte Session Management statt (Beispiel: &amp;quot;Remember-Me-Funktion&amp;quot;). Beide Themen sollten sinnvollerweise getrennt voneinander zu betrachten und aufeinander zu beziehen.&lt;br /&gt;
&lt;br /&gt;
; Verwendung von Frameworks&lt;br /&gt;
&lt;br /&gt;
Die Anforderung ist schon ein wenig eingeschränkt. Besser passt hier denke ich die &amp;quot;Abbildung der Authentisierung über Standardkomponenten (Bibliotheken oder Frameworks)&amp;quot;. &lt;br /&gt;
&lt;br /&gt;
; Remember-Me-Funktion&lt;br /&gt;
&lt;br /&gt;
Siehe oben, gehört zum Session Management. Das ließt sich im übrigen so, als ob eine Webanwendung Credentials auf dem Client abhängt. &lt;br /&gt;
&lt;br /&gt;
; Grenzwerte für gescheiterte Anmeldeversuche&lt;br /&gt;
&lt;br /&gt;
Diese Empfehlung ist allgemein falsch, da sie sehr von der betrachteten Anwendung abhängt. Besser wäre hier allgemein von Mechanismen zur Verhinderung von automatisierten Angriffen zu sprechen (Anti-Automatisierung). &lt;br /&gt;
&lt;br /&gt;
Etwa umsetzbar durch&lt;br /&gt;
* Sperrung nach x Anmeldeversuchen&lt;br /&gt;
* Throttling&lt;br /&gt;
* Captchas&lt;br /&gt;
* Sicherheitsfragen&lt;br /&gt;
&lt;br /&gt;
Das allgemeine Sperren kann leicht für das gezielte Aussperren von Benutzern (User Lockout) verwendet werden. Was etwa bei Trading-Anwendungen nicht funktioniert.&lt;br /&gt;
&lt;br /&gt;
; Automatisiertes Zurücksetzen von Authentisierungsdaten&lt;br /&gt;
&lt;br /&gt;
Würde ich besser als &amp;quot;Passwort-Reset&amp;quot; bezeichnen.&lt;br /&gt;
&lt;br /&gt;
Weiterhin fehlt hier der Hinweis, dass statt ein automatisiertes Zurücksetzen, ein Mechanismus zu empfehlen ist, bei dem über ein hinterlegtes Sicherheitsmerkmal (Handy-Nummer oder E-Mail-Adresse) vom Benutzer zunächst eine Verifikation durchgeführt wird. Beispielsweise durch einen erhaltenen Link. Erst dann darf eine Änderung des Passwortes durch den Benutzer erfolgen.&lt;br /&gt;
&lt;br /&gt;
; Registrierung nicht behandelt&lt;br /&gt;
&lt;br /&gt;
Es existiert hier kein Punkt, der die sichere Implementierung von Benutzerregistrierungen behandelt.&lt;br /&gt;
&lt;br /&gt;
; Verweis auf Externalisierung fehlt.&lt;br /&gt;
&lt;br /&gt;
Statt die Authentisierung selbst durchzuführen kann eine Anwendung hierzu auf eine externe Komponente (Beispiel: SiteMinder oder Kerberos) zurückgreifen.&lt;br /&gt;
&lt;br /&gt;
; Verweis auf Behandlung von Credentials fehlt&lt;br /&gt;
&lt;br /&gt;
Auch wenn das  in &amp;quot;M 4.WA15 Schutz vertraulicher Daten bei Web- Anwendungen&amp;quot; ausführlich behandelt wird, sollte in diesem Baustein bereits auf den angemessenen Schutz von Authentisierungsdaten bei Übertragung und Speicherung hingewiesen werden.&lt;br /&gt;
&lt;br /&gt;
== M 4.WA05Umfassende Ein- und Ausgabevalidierung bei Web-Anwedungen (Markus) ==&lt;br /&gt;
; &amp;quot;Ablehnung der Daten im&lt;br /&gt;
Fehlerfall&amp;quot; --&amp;gt; Hier könnte man noch auf Tar-Pits eingehen - nur ein Vorschlag.&lt;br /&gt;
&lt;br /&gt;
== M 4.WA06Session-Management bei Web-Anwendungen (Markus, Matthias) ==&lt;br /&gt;
; &amp;quot;Übertragung der SessionID mittels GETRequest&amp;quot; --&amp;gt; Hier fehlt der Hinweis, dass die Lebensdauer dieser SessionIds kurz/kürzer sein muss, als im Falle der Speicherung im Cookie.&lt;br /&gt;
&lt;br /&gt;
([[User:Mrohr|Matthias]]) Die Anmerkung verstehe ich ehrlich gesagt ueberhaupt nicht, zumal das SM haeufig transparent zwischen Cookies und URL Rewriting wechselt. Wozu soll das gut sein? Wie soll das geschehen? Idealerweise sollte die Session ID niemals in die URL geschrieben werden, das sollte eigentlich genuegen.&lt;br /&gt;
&lt;br /&gt;
; &amp;quot;Verschlüsselte Übertragung von SessionIDs&amp;quot; --&amp;gt; Hier fehlt der Hinweis auf den Beast-Exploit. TLS Version &amp;gt; 1.0 verwenden!&lt;br /&gt;
&lt;br /&gt;
([[User:Mrohr|Matthias]]) Solange hier nicht auf eine explizite TLS Version eingegangen wird, sollte meiner grossen Ueberzeugung nach hier auch auf keine Exploits etc. eingagen werden, das gehoert an andere Stelle.&lt;br /&gt;
&lt;br /&gt;
; ([[User:Mrohr|Matthias]]) Weiterhin:&lt;br /&gt;
&lt;br /&gt;
 Es dürfen keine extern bekannten oder erratbaren Daten (z. B. IP-Adresse, Uhrzeit) in die Berechnung der SessionID einfließen.&lt;br /&gt;
&lt;br /&gt;
Die Aussage finde ich etwas problematisch, wichtiger ist, dass die Entropie ausreichend hoch ist. Haeufig werden etwa IPs von Load Balancern in die Session ID hineingeschrieben.&lt;br /&gt;
&lt;br /&gt;
 - Domain (z. B. webapp.domain.tld),&lt;br /&gt;
 - Path (z. B. /webapp/),&lt;br /&gt;
 - Secure und&lt;br /&gt;
 - HttpOnly.Beschränkte Sitzungsdauer&lt;br /&gt;
&lt;br /&gt;
Das sieht so aus, als ob es empfehlenswert ist, das Domain-Tag zu verwenden, das ist es sicherlich nicht. Was macht hier der Hinweis &amp;quot;Beschraenke Sizuungsdauer&amp;quot;?&lt;br /&gt;
&lt;br /&gt;
== M 4.WA07Fehlerbehandlung durch Web-Anwendungen (Markus) ==&lt;br /&gt;
; Konsistenter / Inkonsistener Zustand einer Webanwendung und der daraus resultierende Datenverlust: Hier fehlen mir die Punkte: DOS, Priv.Escalation, CodeExecution.&lt;br /&gt;
; Vermeidung vertraulicher Informationen in Fehlermeldungen --&amp;gt; Fehlermeldungen sollten ebenfalls eine Systeminformationen preisgeben (Softwareversion, Patchlevel, etc.)&lt;br /&gt;
; Abbruch des Vorgangs nach Auftreten eines Fehlers --&amp;gt; TarPits scheinen dem Autor umbekannt zu sein :)&lt;br /&gt;
; &amp;quot;Werden Fehler möglichst von der gleichen Komponente behandelt, in der&lt;br /&gt;
der Fehler aufgetreten ist?&amp;quot; --&amp;gt; Das &amp;quot;möglichst&amp;quot; sollten wir streichen.&lt;br /&gt;
&lt;br /&gt;
== M 4.WA08Schutz vor automatisierter Nutzung von Web-Anwendungen (Markus) ==&lt;br /&gt;
; &amp;quot;Brute-Force-&lt;br /&gt;
Angriffe (z. B. Erraten von Zugangsdaten) und Enumeration-Angriffe (z. B.&lt;br /&gt;
automatisiertes Ermitteln von gültigen Login-Namen)&amp;quot; -- die Beispiele sind identisch - besser Beispiele suchen, z.b. URL-Enumeration&lt;br /&gt;
&lt;br /&gt;
([[User:Mrohr|Matthias]]) Das sehe ich anders. Brute-Forcing bezieht auf Passwoerter und Enumeration auf Benutzernamen, etwa durchs hochzaehlen. Auch wenn ich zustimmen muss, dass die nicht ganz gluecklich gewaehlt wurden. Stann &amp;quot;Erraten von Zugangsdaten&amp;quot; wuerde ich besser von &amp;quot;Erraten von Passwoertern&amp;quot; sprechen. Oder wie gesagt gleich auch auf andere Beispiele (etwa Object ID Enumeration) beziehen.&lt;br /&gt;
&lt;br /&gt;
== M 4.WA11Sichere Konfiguration von Web-Anwendungen (Markus) ==&lt;br /&gt;
; &amp;quot;Sicherer Umgang mit TLS/SSL&amp;quot; -- Hier fehlt der Hinweis, dass TLS-1.0 gebrochen ist&lt;br /&gt;
; &amp;quot;Zeichenkodierungskonfiguration&amp;quot; -- Ein Whitelisting abhängig von der Encodierung wäre ein weiterer Vorschlag&lt;br /&gt;
; &amp;quot;Restriktive Dateisystemberechtigungen&amp;quot; -- auch wenn es ein klassiker ist - der AS sollte ebenfalls mit von einem eingeschränkten Nutzer gestartet werden und nicht als root&lt;br /&gt;
; Administration Consolen:zur Ergänzen: Wenn diese nicht benötigit, sollten derartige Applikationen nicht deployed werden, unabhängig von möglichen Zugangsbeschränkungen.&lt;br /&gt;
&lt;br /&gt;
([[User:Mrohr|Matthias]]) Sorry, meiner Meinung nach hat die Bewertung von Kryptoverfahren hier abslut nichts zu suchen.Stattdessen sollte hier auf den entsprechenden [https://www.bsi.bund.de/ContentBSI/Publikationen/TechnischeRichtlinien/tr02102/index_htm.html Empfehlung des BSI] verwiesen werden, auch wenn dieses Dokument derzeit noch etwas outdated zu sein scheint.&lt;br /&gt;
&lt;br /&gt;
== M 4.WA13Kontrolliertes Einbinden von Daten und Inhalten bei Web-Anwendungen (Markus) ==&lt;br /&gt;
; Datei-Upload: Bei einem Upload werden Dateien durchaus in TEMP-Verzeichnissen gesammelt und danach weiterverarbeitet. Diese TEMP-Verzeichnisse sind im Rahmen einer Sicherheitsanalyse zu betrachten -&amp;gt; Möglicher (unbefugter) Zugriff auf weitere Uploads&lt;br /&gt;
; Upload komprimierter Dateien / großer Dateien birgt die Gefahr von DOS Angriffen&lt;br /&gt;
; Upload von Dateien kann bei weiterem Parsing zu Speicherengpässen führen --&amp;gt; DOS-Angriffe auf Thread-Local etc.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== M 4.WA14Restriktive Herausgabe sicherheitsrelevanter Informationen bei Web-Anwendungen (Markus, Matthias) ==&lt;br /&gt;
OK - Keine Anmerkungen von mir.&lt;br /&gt;
&lt;br /&gt;
[[User:Mrohr|Matthias]]) Von mir schon;)&lt;br /&gt;
&lt;br /&gt;
; Vermeidung von Kommentaren in ausgelieferten Webseiten&lt;br /&gt;
&lt;br /&gt;
Das ist leider total falsch, wir brauchen haeufig Komentare, aus Kompatibilitaetsgruenden. So wird etwa der JavaScript-Block haeufig auskommentiert.&lt;br /&gt;
&lt;br /&gt;
Wurde stattessen besser von sicherheitsrelevanten Kommentaren sprechen und als Massnahme generell Entwicklerkommentare ueber Sprachkonstruktre (etwa JSP) durchzufuehren.&lt;br /&gt;
&lt;br /&gt;
; Löschen nicht benötigter Dateien&lt;br /&gt;
&lt;br /&gt;
Hier wurde ich ggf. Dateien von Versionisierungstools (etwa Subversion) erwaehnen, das sehen wir schon recht haeufig.&lt;br /&gt;
&lt;br /&gt;
Statt Dateien einfach nur zu loeschen (was in der Praxis haeufig nicht so einfach ist) bietet es sich zudem an, den Zugriff auf bestimmte Dateien oder Dateitypen generell zu sperren, etwa mittels ACL im Apache.&lt;br /&gt;
&lt;br /&gt;
; Gibt die Web-Anwendung ausschließlich neutrale Fehlermeldungen aus und sind diese im Quelltext identisch? {E: C}&lt;br /&gt;
&lt;br /&gt;
Persoenlich verstehe ich das nicht. Wieseo neutrale Fehlermeldung? Das macht fuer mich nur beim Login Sin. Hierzu existiert in dem Text auch keinerlei Bezug. Ich wuerde das daher besser entfernen und im Rahmen der Fehlerbehandlung diskutieren. Mindestens sollte hier jedoch besser von &amp;quot;sicherheitsunbedentlichen Fehlermeldungen&amp;quot; oder so gesprochen werden.&lt;br /&gt;
&lt;br /&gt;
; Wird der Referrer bei Verlassen der Web-Anwendung (z. B. durch einen Link auf eine externe Seite) gefiltert?&lt;br /&gt;
&lt;br /&gt;
Diesen Punkt sehe ich als sehr Fallabhengig an. Es kann fuer seiten durchaus wuenschenswert sein, dass der Referer weitergegeben wird. Der Referer sollte natuerlich keine sensiblen Informationen enthalten, was ja an anderer Stelle (etwa Session Management) vorgegeben wird bzw. gegeben werden sollte.&lt;br /&gt;
&lt;br /&gt;
== M 4.WA15Schutz vertraulicher Daten bei Web-Anwendungen (Markus) ==&lt;br /&gt;
; Sichere kryptographische Algorithmen:&lt;br /&gt;
 Hier fehlt mir eine Liste der aktuelle als sicher geltenden Verfahren.&lt;br /&gt;
; Schlüssel&lt;br /&gt;
 Das die Schlüssel bestimmten Formaten entsprechen müssen ist ok - aber das Schlüsselmanagement wird gar nicht besprochen?&lt;br /&gt;
; Schutz der Daten im Browsercache&lt;br /&gt;
 Skripte und Browserplugins können ebenfalls auf den Browsercache zugreifen - diese werden hier nicht erwähnt.&lt;br /&gt;
; Maskierung von Passwörtern &lt;br /&gt;
 Dies schützt bei der Eingabe nur vor ShoulderSurfing nicht vor Skripten oder Plugins die diese an andere Server posten.&lt;br /&gt;
; Sicherung von Zugangsdaten:&lt;br /&gt;
 Zugangsdaten in einer Datei abzulegen - wenn auch ausserhalb des WebRoots ist keine gute Idee.&lt;br /&gt;
; Schutz von Quelltexten:&lt;br /&gt;
 Hier würde ich property files mit aufnehmen. der hinweis auf web-inf/classes fehlt - warum?&lt;br /&gt;
 Bei include-befehlen sind die pfadangaben zu überdenken.&lt;br /&gt;
&lt;br /&gt;
== M 4.WA16Zugriffskontrolle bei Web-Anwendungen (Markus) ==&lt;br /&gt;
; Zugriffskontrolle via Frameworks:&lt;br /&gt;
 Dieser Punkt (Frameworks) wird nur in einem Satz erwähnt. Es werden keine Bespiele gegeben - Das ist zu wenig.&lt;br /&gt;
 Es müssen alle Zugriffe geschützt werden. Eine Protokollierung aller Zugriffe mit den nötigen Informationen ist ebenfalls empfehlenswert.&lt;br /&gt;
; Datei Upload:&lt;br /&gt;
 Die Gefahr eines DOS wird hier nicht erwähnt.&lt;br /&gt;
&lt;br /&gt;
== M 4.WA19Verhinderung von Cross-Site Request Forgery (CSRF, XSRF) (Markus, Matthias) ==&lt;br /&gt;
; Verantwortliche: &lt;br /&gt;
 Entwickler und Admins!&lt;br /&gt;
([[User:Mrohr|Matthias]]) Korrekt, wobei auch in der Reihenfolge&lt;br /&gt;
&lt;br /&gt;
; Anti-CSRF-Token in hidden fields:&lt;br /&gt;
 Das ist keine gute Idee. Ich würde das streichen!&lt;br /&gt;
&lt;br /&gt;
([[User:Mrohr|Matthias]]) Watt? Anti-CSRF-Tokens in Hidden Fields sind die Standard-Massnahme. Wie denn sonst? Bitte nicht streichen!!! &lt;br /&gt;
&lt;br /&gt;
([[User:Mrohr|Matthias]]) Die Technik bei der die Session ID als Anti-CSRF-Token verwendet wird, wird als Double-Cookie Submit bezeichnet, das sollte hier referenziert werden.&lt;br /&gt;
&lt;br /&gt;
; Umgehung von Schutzmechanismen:&lt;br /&gt;
 Man in the middle hat keinen direkten Bezug zu CSRF! Das würde ich streichen.&lt;br /&gt;
([[User:Mrohr|Matthias]]) Der Hinweis ist korrekt. Wovon der Autor hier spricht ist Session Replay nicht CSRF.&lt;br /&gt;
&lt;br /&gt;
; Frameworks:&lt;br /&gt;
 Gute Idee - aber es gibt auch Features in den ApplicationServern die CSRF unterbinden - warum wird das nicht besprochen?&lt;br /&gt;
&lt;br /&gt;
([[User:Mrohr|Matthias]]) Sehe ich persoenlich nicht so, da CSRF primaer ein Applikations-Fehler ist, und auch in der Applikation und nicht im Environment (AppServer) geloest werden sollte. Auch wenn das manchmal ggf. die einzig machbare Loesung darstellt.&lt;br /&gt;
&lt;br /&gt;
([[User:Mrohr|Matthias]]) Was generell fehlt, ist ein Hinweis darauf, dass schreibende Requests generell per HTTP Post abgewickelt werden sollten, da HTTP Get keine &amp;quot;Safe Method&amp;quot;  (siehe HTTP 1.1, RFC 2616) ist.&lt;br /&gt;
&lt;br /&gt;
== M 4.WA20Sicherer Entwurf der Logik von Web-Anwendungen (Markus, Matthias) ==&lt;br /&gt;
; Rollbacks:&lt;br /&gt;
 Tritt ein Fehler auf muss die Applikation einen konsistenten Datenstand zurück lassen. Das wird hier nicht erwähnt.&lt;br /&gt;
; RaceConditions:&lt;br /&gt;
 Fehler in der Geschäftslogik können auch durch zwei gleichzeitige Sessions auf einer Webapplikation auftreten - das wird hier nicht besprochen.&lt;br /&gt;
&lt;br /&gt;
([[User:Mrohr|Matthias]]) Ehrlich gesagt kann ich nicht ganz nachvollziehen, was der Sichere Entwurf der Logik von Web-Anwendungen mit dem Verzicht auf aktive Inhalte zu tun hat. Unabhaengig davon sollte man solche unsinnigen Aussagen im Jahre 2012 nicht mehr treffen, damit macht man sicht nur laecherlich.&lt;br /&gt;
&lt;br /&gt;
Nichts desto trotz, was hier als &amp;quot;echte&amp;quot; Massnahmen erwaehnt werden sollte sind:&lt;br /&gt;
* Verhinderung von Race Conditions, aber nicht nur durch Concurrent Sessions sondern auch durch Singletons (TOCTOU)&lt;br /&gt;
* Haertung von Workflows, etwa durch die Verwendung von State Machines&lt;br /&gt;
* Fail Securely (bzw. Verweis)&lt;br /&gt;
* Serverseitige Abbildung der Anwendungslogik, zumindest wenn diese sicherheitsrelevant sit&lt;br /&gt;
&lt;br /&gt;
== M 4.WA22Verhinderung der Blockade von Ressourcen (DoS) bei Web-Anwendungen (Markus, Matthias) ==&lt;br /&gt;
; Datenspeicher:&lt;br /&gt;
 Neben dem Datenspeicher sollte auch der RAM-Verbrauch pro Thread der Applikation limitiert werden.&lt;br /&gt;
([[User:Mrohr|Matthias]]) Stimmt, ich wuerde hier sogar allgemein von Ressourcenverbrauch am Beispiel RAM und Datenspeicher, sprechen&lt;br /&gt;
&lt;br /&gt;
; Voraggregation von Daten / Caching&lt;br /&gt;
 Dieser Punkt fehlt: Stark ressourcen belastende Anfragen können auch in Lastarmen Zeiten vorberechnet werden.&lt;br /&gt;
([[User:Mrohr|Matthias]]) Stimmt, koennte noch als Anmerkung bei &amp;quot;Cachen von Anfragen&amp;quot; hinzugefuegt werden&lt;br /&gt;
&lt;br /&gt;
([[User:Mrohr|Matthias]]) Noch drei Anmerkugnen&lt;br /&gt;
&lt;br /&gt;
; Prueffrage: &amp;quot;Wird ein möglicher Überlauf von Protokolldaten... verhindert&amp;quot;&lt;br /&gt;
&lt;br /&gt;
Ist eine etwas eingeschrankte Sicht. Wurde hier eher von Ueberlauf von Speicherplaz zu Beispiel im Rahmen der Protokollierung sprechen&lt;br /&gt;
&lt;br /&gt;
; Durchfuehrung von Lasttests zur Identifikation ressourcenintensiver Operationen&lt;br /&gt;
&lt;br /&gt;
Der Hinweis waere ggf. erwahnenswert&lt;br /&gt;
&lt;br /&gt;
; Hinweis auf nicht-angemeldeten Bereich&lt;br /&gt;
&lt;br /&gt;
Das Risiko durch rechenintensive Operationen durch einen DoS betroffen zu sein ist natuerlich fuer gewoehlich um so groesser, wenn diese im anonymen Bereich angeboten wird. Der Hinweis ware ggf. ebenfalls hilfreich.&lt;br /&gt;
&lt;br /&gt;
== M 4.WA25Verhinderung von Clickjacking (Markus) ==&lt;br /&gt;
Ok - das passt soweit.&lt;br /&gt;
&lt;br /&gt;
([[User:Mrohr|Matthias]]) Stimmt, auch wenn ich &amp;quot;Angreifer&amp;quot; in dem Beispiel eher als &amp;quot;Webseitenbetreiber&amp;quot; beschreiebn wuerde, da er nicht wirklich aktiv einen Angriff durchfuehrt, oder? Bitte nochmal ueber meinen Hinweis aus G 5.WA18 nachdenken: Ist Clickjacking-Schutz tatsaechlich Grundschutz? Ich bin mir da selber nicht so wirklich sicher.&lt;br /&gt;
&lt;br /&gt;
== M 5.WA21Sichere Anbindung von Hintergrundsystemen an Web-Anwendungen (Markus) ==&lt;br /&gt;
; Verantwortliche:&lt;br /&gt;
 Architekten fehlen. Entwickler müssen die Views umsetzen und die Datasource entsprechend einbinden - die fehlen hier ebenfalls.&lt;br /&gt;
; DirectorySystem Beispiel:&lt;br /&gt;
 Das DirectorySystem wird in dem angegeben Beispiel zum Single Point of Failure - das wird verschwiegen.&lt;br /&gt;
; Firewalls:&lt;br /&gt;
 Das sind fachlich-blinde Systeme. Was ist mit WAFs / IDS / IPS etc.?&lt;br /&gt;
([[User:Mrohr|Matthias]]) Stimmt, das hat in diesem Baustein nichts zu suchen&lt;br /&gt;
&lt;br /&gt;
([[User:Mrohr|Matthias]]) Noch ein weiterer Punkt von mir&lt;br /&gt;
&lt;br /&gt;
; Typische Hintergrundsysteme&lt;br /&gt;
Hier fehlt irgendwie &amp;quot;Middleware&amp;quot;, die ist denke ich nicht immer Legacy&lt;br /&gt;
&lt;br /&gt;
== M 5.WA23Systemarchitektur einer Web-Anwendung (Markus) ==&lt;br /&gt;
; Verantwortliche:&lt;br /&gt;
Auch hier fehlend wieder die Architekten. &lt;br /&gt;
; Virtualisierung:&lt;br /&gt;
Virtualisierung bietet weitere Angriffsvektoren (z.B.: Hypervisor) die eine &amp;quot;Blech&amp;quot;Farm nicht bietet.&lt;/div&gt;</summary>
		<author><name>Mrohr</name></author>	</entry>

	<entry>
		<id>https://wiki.owasp.org/index.php?title=Talk:OWASP_Review_BSI_IT-Grundschutz_Baustein_Webanwendungen&amp;diff=130145</id>
		<title>Talk:OWASP Review BSI IT-Grundschutz Baustein Webanwendungen</title>
		<link rel="alternate" type="text/html" href="https://wiki.owasp.org/index.php?title=Talk:OWASP_Review_BSI_IT-Grundschutz_Baustein_Webanwendungen&amp;diff=130145"/>
				<updated>2012-05-21T08:25:26Z</updated>
		
		<summary type="html">&lt;p&gt;Mrohr: /* M 4.WA20Sicherer Entwurf der Logik von Web-Anwendungen (Markus) */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Since it's about a review of a document in German, all the discussions will be done in German :-)&lt;br /&gt;
&lt;br /&gt;
Diskussionen rund um den Review des &amp;quot;IT-Grundschutzbausteins Webanwendungen&amp;quot; finden hier statt, sinnvollerweise auf Deutsch :-)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Vorschlag für Kriterien, die an unser Review angelegt werden sollten (.kai) ==&lt;br /&gt;
&lt;br /&gt;
* Der Baustein soll alle wichtigen Themen der Entwicklung sicherer&lt;br /&gt;
Webanwendungen enthalten.&lt;br /&gt;
&lt;br /&gt;
* Der Baustein soll die verschiedenen Phasen der Software-Entwicklung&lt;br /&gt;
vollständig abdecken.&lt;br /&gt;
&lt;br /&gt;
* Der Baustein soll zwischen verbindlichen, prüfbaren Vorgaben und&lt;br /&gt;
unverbindlichen Empfehlungen sprachlich sauber unterscheiden (hier&lt;br /&gt;
spielt mein Auditorenblick eine Rolle). Vor allem soll der Baustein&lt;br /&gt;
verbindliche Anforderungen auch tatsächlich stellen. Alle&lt;br /&gt;
verbindlichen Anforderungen müssen unabhängig von der jeweiligen&lt;br /&gt;
Umgebung auch umsetzbar sein, d.h. sie müssen entsprechend generisch&lt;br /&gt;
sein.&lt;br /&gt;
&lt;br /&gt;
* Die Maßnahmen sollen nur in (begründbaren) Ausnahmen zu Empfehlungen&lt;br /&gt;
von OWASP im Widerspruch stehen.&lt;br /&gt;
&lt;br /&gt;
* Die Maßnahmen sollen verständlich und anwendbar sein.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== &amp;quot;Hilfsmittel&amp;quot; (Markus) ==&lt;br /&gt;
Ich würde das Script zur Vermeidung von Clickjacking wrappen und nicht als losen Skript-block in den Text einbinden - einfach schlechter Programmierstiel diese losen Blöcke.&lt;br /&gt;
Der Zugriff auf das Body-Element mit byTagName-Array[0] ist auch nicht wirklich gut. Ich halte Zugriffe über das DOM (klassisch), bei ID bzw. XPATH für besser. &lt;br /&gt;
&lt;br /&gt;
SQL-Injection Characters:&lt;br /&gt;
die Pipe fehlt hier zur Textkonatenierung&lt;br /&gt;
+ / - haben auch eine Bedeutung bei JOINs.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== &amp;quot;Goldene Regeln&amp;quot; (Matthias) ==&lt;br /&gt;
&lt;br /&gt;
Hier meine Anmerkungen zu diesem Dokument:&lt;br /&gt;
&lt;br /&gt;
; 1. Für mich fehlende Punkte&lt;br /&gt;
* Korrektur der Ursache (Root Cause) von Schwachstellen statt  Verhinderung deren Ausnutzung&lt;br /&gt;
* Bezug auf Minimierung der Angriffsfläche und Least-Privilege-Prinzip&lt;br /&gt;
* Bezug auf Defense-in-Depth-Prinzip&lt;br /&gt;
* Verwendung von getesteten Security APIs (z.B. OWASP ESAPI) statt selbstentwickelter Funktionen&lt;br /&gt;
* Bezug auf Externalisierung von Sicherheitsfunktionen, sowie deklerative vor programmatischer Sicherheit.&lt;br /&gt;
&lt;br /&gt;
; 2. Begriff &amp;quot;Web-Anwendung&amp;quot;&lt;br /&gt;
Würde ich generell durch &amp;quot;Webanwendung&amp;quot; ersetzen.&lt;br /&gt;
&lt;br /&gt;
; 3. Einleitung (&amp;quot;Web-Anwendungen stellen Funktionalität zur Verfügung, ...&amp;quot;)&lt;br /&gt;
&lt;br /&gt;
Wozu dient dieser Satz?&lt;br /&gt;
&lt;br /&gt;
; 4. &amp;quot;Die Architektur der Web-Anwendung ist im Sicherheitskonzept zu  dokumentieren.....&amp;quot; &lt;br /&gt;
&lt;br /&gt;
Ich fände es sinnvoller, wenn hier von der &amp;quot;Sicherheitsarchitektur&amp;quot; gesprochen wird, welche etwa neben den sicherheitsrelevanten Datenflüssen, sensible Komponenten, Entry Points, Akteure architekturelle Security Controls wie Authentisierung, Kryptographie und natürlich die Trust Boundaries beinhaltet.&lt;br /&gt;
&lt;br /&gt;
; 5. &amp;quot;Bei Web-Anwendungen handelt es sich häufig um spezielle Eigenentwicklungen....&amp;quot;&lt;br /&gt;
&lt;br /&gt;
Erstens würde ich hier den geläufigen Begriff &amp;quot;Individualsoftware&amp;quot; verwenden. Zweitens würde ich statt bestimmte SDLC-Phasen vorzugeben (die Begriffe &amp;quot;Softwareverteilung&amp;quot; und &amp;quot;Integration&amp;quot; sind mir bei Webanwendungen bisher noch nicht so häufig untergekommen), besser von der Notwendigkeit sprechen, Sicherheit in allen Entwicklungsphasen zu berücksichtigen, also eines SDLs.&lt;br /&gt;
&lt;br /&gt;
; 6. &amp;quot;Alle Ein- und Ausgaben der Web-Anwendung müssen in eine normalisierte Form überführt werden....&amp;quot;&lt;br /&gt;
&lt;br /&gt;
Normalisierung ist für mich nicht gleich Kanonsierung, auch wenn beide Begriffe häufig als synonym verwendet werden.  Der Unterschied wird in der [http://owasp-esapi-java.googlecode.com/svn/trunk_doc/2.0-rc4/org/owasp/esapi/Encoder.html API-Beschreibung der ESAPI] erklärt. Die Normalisierungs-Funktion ist allerdings schon vor einiger Zeit aus der ESAPI [https://lists.owasp.org/pipermail/esapi-dev/2010-January/000266.html rausgeflogen]. Die generelle Kanonisierung von Ausgaben halte ich dazu für nicht sinnvoll.&lt;br /&gt;
&lt;br /&gt;
Zweitens, finde ich den weiteren Text zwar grundsätzlich formal korrekt, aber so allgemein, dass dieser glaube ich niemandem so richtig etwas bringt.  &lt;br /&gt;
&lt;br /&gt;
Besser fände ich hier Ein- von Ausgabevalidierung grundsätzlich voneinander abzugrenzen. Etwa was ich per Eingabevalidierung (Längenprüfung, Casting, etc. per Whitelisting) und was mit Ausgebavalidierung (Enkodierung, Escaping, Parametrisierung) machen muss und kann.&lt;br /&gt;
&lt;br /&gt;
Eingabedaten können technisch zudem auch Werte eingelesener Property-Dateien sein. Muss ich die auch validieren? Ist das dann noch Grundschutz? &lt;br /&gt;
&lt;br /&gt;
; 7. &amp;quot;Für den Zugriff auf sensitive Funktionen oder Informationen muss die Web-Anwendung eine wirksame Authentisierung und Sitzungsverwaltung unterstützen. Die Eigenschaften der Sitzungs-ID müssen so gewählt werden, dass die Sitzung ausreichend geschützt ist. ....&amp;quot;&lt;br /&gt;
&lt;br /&gt;
Besser fände ich &amp;quot;eine Authentisierung, die über eine dem Schutzbedarf der Anwendung angemessene Stärke verfügt.&amp;quot; &lt;br /&gt;
&lt;br /&gt;
Eigentlich geht es doch mehr um den Schutz der Sitzungs-ID, da diese gewöhnlich im Verlauf einer Sitzung den Client authentisiert. Oder den Schutz des Zugriffs auf eine Sitzung. &lt;br /&gt;
&lt;br /&gt;
Zudem fehlt hier meiner Meinung nach der Hinweis auf die bevorzugte Verwendung getesteter Standardkomponenten.&lt;br /&gt;
&lt;br /&gt;
; 8. &amp;quot;Die Web-Anwendung sollte die zu übermittelnden Daten schützen.&amp;quot;&lt;br /&gt;
&lt;br /&gt;
Dies würde ich nur auf sensible Daten beziehen. Zusätzlich zu HTTPS würde ich hier schreiben, dass sensible Daten generell nicht in der URL übertragen werden dürfen.&lt;br /&gt;
&lt;br /&gt;
; 9. &amp;quot;Die Preisgabe interner Informationen (z.B. Kommentare, Fehlermeldungen)&amp;quot;&lt;br /&gt;
&lt;br /&gt;
Hier würde ich eher schreiben &amp;quot;(IN Kommentaren, Fehlermeldungen, HTTP Headern, etc.)&amp;quot;&lt;br /&gt;
&lt;br /&gt;
; 10. &amp;quot;Fehler müssen so behandelt werden, ... müssen Fehler bei der Autorisierung zu einer Verweigerung beim Zugriff auf die angeforderte Ressource führen.&amp;quot;&lt;br /&gt;
&lt;br /&gt;
Sprachlich: &amp;quot;Die Webanwendung muss sich stets in einem sicheren Zustand befinden. Beispielsweise müssen Fehler bei der Autorisierung zu einer Verweigerung des Zugriffs führen (Default-Deny-Strategie).&amp;quot;&lt;br /&gt;
&lt;br /&gt;
; 11. &amp;quot;Die Logging-Funktionen der Web-Anwendung müssen aufgetretene Ereignisse derart protokollieren, dass sicherheitskritische Vorfälle nachvollzogen werden können.&amp;quot;&lt;br /&gt;
&lt;br /&gt;
Hier würde hier eher von &amp;quot;allen sicherheitsrelevanten Ereignissen&amp;quot; sprechen.&lt;br /&gt;
&lt;br /&gt;
Weiterhin sollten insbesondere beim Logging der Datenschutz berücksichtigt werden, personenbezogene Daten also nach Möglichkeit nicht oder nur anonymisiert in technischen Logdateien protokolliert werden.&lt;br /&gt;
&lt;br /&gt;
; 12. &amp;quot;Alle Sicherheitsmechanismen (z.B. Authentisierung und Zugriffskontrolle) sind serverseitig zu implementieren und können nicht durch clientseitige Mechanismen ersetzt werden.&amp;quot;&lt;br /&gt;
&lt;br /&gt;
Die Aussage ist so nicht korrekt. Darüber hatten wir bereits bei der ASVS mehrfach diskutiert. &lt;br /&gt;
&lt;br /&gt;
Überall dort wo der Client angegriffen wird, also etwa bei RIAs (Stichwort DOM-Based XSS) müssen wir Security Controls clientseitig implementieren. Es gibt mittlerweile deshalb auch eine Portierung der ESAPI auf Javascript. Überall dort wo der Server oder Hintegrundsysteme angegriffen werden, ist die Aussage aber natürlich zutreffend.&lt;br /&gt;
&lt;br /&gt;
== &amp;quot;Gefährdungen&amp;quot; (Markus, Dennis, .... &amp;lt;Dein Name&amp;gt;) ==&lt;br /&gt;
; Generell:&lt;br /&gt;
Reference auf RFCs fehlen.&lt;br /&gt;
&lt;br /&gt;
==B.5.XX Web-Anwendungen ==&lt;br /&gt;
; 1. Erster Absatz - Letzter Satz: --Wieso werden hier nur HTML/XML Doks und Oberflächen angesprochen? Was ist der Unterschied zwischen einem HTML-Dok und einer Oberfläche? Was ist mit  Flash, etc.? Was ist mit WebSockets?&lt;br /&gt;
; 2. Stichpunkt &amp;quot;Protokollierung&amp;quot;: Sicherheits relevant ist ein sehr dehnbarer Begriff - Eine bessere Formulierung könnte sein: Zur Rekonstruktion von Nutzerhandlungen nötige Ereignisse (positve &amp;amp; negative) müssen protokolliert werden . . . &lt;br /&gt;
; 3. Absatz: &amp;quot;Abgrenzung des Bausteins&amp;quot;: &amp;quot;Die spez. Sicherheitsanforderungen an Web-Services werden in diesem Baustein nicht betrachtet&amp;quot; --&amp;gt; Wie so nicht? Was ist das Backend von einer Rest / AJAX-basierenden Webanwendung denn anderes als ein Web-Service? Diesen Satz würde ich entfernen.&lt;br /&gt;
; 4.Vorsätzliche Handlungen -&amp;gt; Web-Spoofing (G.5.87) -- Missverständliche Bezeichnung / Nomenklatur&lt;br /&gt;
; 5. Seite 4 : erste Zeile &amp;quot;Umsetzung&amp;quot;: &amp;quot;dafür umzusetztende Komponenten müssen die Webanwendung schützen...&amp;quot; - Hier fehlt mir der Hinweis, dass dieser Schutz verifiziert werden muss.&lt;br /&gt;
; 6 Seite 5: &amp;quot;Umsetzung&amp;quot; - Wir haben CSRF, D(D)os und SQL-Injection aber wo ist XSS?&lt;br /&gt;
; 7 Seite 7: &amp;quot;Die Sicherheitsfunktion wird ausschließlich clientseitig...&amp;quot; --&amp;gt; Warum muss der Angreifer überhaupt einen Browser umkonfigurieren? Was ist mit Proxies, Scripts, etc.? Ich würde das reduzieren darauf, dass rein Webbrowser-basierende Schutzfunktionen einfach umgangen werden können.&lt;br /&gt;
; 8 Seite 8: Die angesprochenen Punkte hinterlassen den Eindruck nicht vollständig zu sein: Mir fehlen Punkte wie &amp;quot;Outsourcing&amp;quot;, &amp;quot;KnowHow der Entwickler&amp;quot;, Tooling, Framework-Auswahl, etc.&lt;br /&gt;
; 9 Seite 9: Eigentlich möchte der Autor hier über Datenschutz sprechen. Abgesehen von den letzten drei Zeilen geht es aber nur um &amp;quot;User tracking&amp;quot; - Wo ist der Rest der Datenschutzproblematik? Warum der Fokuss auf Tracking? Mir ist das zu einseitig.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
tbd.&lt;br /&gt;
&lt;br /&gt;
; Wortwahl:&lt;br /&gt;
Ich stosse innerhalb der Texte immer wieder an die Worten '''Hintergrundsystem''' und '''Sicherheitskontext'''.&lt;br /&gt;
'''Hintergrundsystem:''' besseres Synonym?&lt;br /&gt;
'''Sicherheitskontext:''' nur weil es in den Texten um Sicherheit geht muss nicht an jeder Stelle immer wieder das Wort _Sicherheits_kontext eingebaut werden.&lt;br /&gt;
Bsp: &amp;quot;Erlangt ein Angreifer Kenntnis von einer solchen gültigen, aber nicht mehr genutzten SessionID, so kann er die Web-Anwendung im Sicherheitskontext des nicht abgemeldeten Benutzers weiter verwenden.&amp;quot; (G 5,WA12 Unzureichendes Session-Management von Web-Anwendungen)&lt;br /&gt;
Verbesserungsansansatz: ... so kann er die Web-Anwendung anstelle des eigentlichen Besitzers weiterhin verwenden.&lt;br /&gt;
&lt;br /&gt;
== &amp;quot;G 2.WA01 Mangelhafte Auswahl oder Konzeption von Web-Anwendungen&amp;quot; (Matthias) ==&lt;br /&gt;
&lt;br /&gt;
Nachdem ich mir diese Gefährdung durchgelesen hatte, fehlten mir ehrlich gesagt etwas die Worte. Nicht nur, dass hier fast jeder zweite Satz entweder falsch ist bzw. massive Fehler enthält oder ich diesen schlicht nicht verstehe, ist der ganze Text sprachlich wirklich enorm verbesserungsfähig. &lt;br /&gt;
&lt;br /&gt;
Na gut, ich konzentriere mich mal auf die fachlichen Punkte:&lt;br /&gt;
&lt;br /&gt;
; 1. Security Controls&lt;br /&gt;
Werden mal mit &amp;quot;Schutzmechanismen&amp;quot;, mal mit &amp;quot;Sicherheitskomponenten&amp;quot; und dann wieder als &amp;quot;Sicherheitsfunktionen&amp;quot; bezeichnet. Hier macht eine einheitliche Benennung sicherlich Sinn und ist weniger verwirrend.&lt;br /&gt;
&lt;br /&gt;
; 2. &amp;quot;Eine Web-Anwendung ist in der Regel ein verteiltes, komplexes System bestehend aus unterschiedlichen Komponenten (z. B. Webserver, Applikationsserver, Hintergrundsysteme)&amp;quot;&lt;br /&gt;
&lt;br /&gt;
Eine Webanwendung besteht sicher nicht aus einem Webserver- oder anderer infrastruktureller Komponenten, sondern ist Software welches diese nutzt.&lt;br /&gt;
&lt;br /&gt;
; 3. &amp;quot;Bei individuell entwickelten Web-Anwendungen sind im Allgemeinen die Frameworks, Komponenten und Schnittstellen im Rahmen der Konzeption auszuwählen und deren Einbindung und Absicherung zu betrachten....Im Gegensatz dazu ist bei der Konzeption von Web-Anwendungen auf Basis von Standardsoftware insbesondere auf die Auswahl der Software und die Konfiguration der Teilkomponenten zu achten&amp;quot;&lt;br /&gt;
&lt;br /&gt;
Wir unterscheiden im Rahmen von Webanwendungen eigentlich Free or Opensource Software (FOSS bzw. FLOSS), Standardsoftware und Individualsoftware voneinander. Wir unterscheiden nicht Frameworks von Standardsoftware. Frameworks können Teil von Standardsoftware sein, wie etwa bei SharePoint, SAP, etc, oder aber FOSS, wie etwa Spring. Die ganzen Absätze machen für mich daher keinen Sinn.&lt;br /&gt;
&lt;br /&gt;
; 4. &amp;quot;Eine Sicherheitsfunktion (z. B. Authentisierung, Autorisierung) wird nicht an einer Stelle umgesetzt und verwendet, sondern ist mehrfach in der Web- Anwendung realisiert. Wird diese Sicherheitsfunktion an den verschiedenen Stellen unterschiedlich umgesetzt, führt dies zu einem uneinheitlichen Sicherheitsniveau.&amp;quot;&lt;br /&gt;
&lt;br /&gt;
Natürlich ist die mehrfache Verwendung bestimmter Security Controls, beispielsweise von Zugriffskontrollen (Complete-Mediation) oder Validierung (Robustheit) erstrebenswert. Was der Autor hier wahrscheinlich meinte, war die Notwendigkeit diese zu Kapseln bzw. zu Externalisieren. Das bezieht sich im übrigen nicht nur auf die Controls selbst, sondern auch auf ihre Parametrisierung (etwa. über Konfigdateien / XACML).&lt;br /&gt;
&lt;br /&gt;
Wichtiger wäre in diesem Zusammenhang zudem die fehlende Berücksichtigung bestimmter Security Controls.&lt;br /&gt;
&lt;br /&gt;
; 5. &amp;quot;Auswahl von Web-Anwendungen auf Basis von Standardsoftware&amp;quot;&lt;br /&gt;
Was will der Satz sagen? Ich wähle Standardsoftware aus, aber doch keine Webanwendungen. Oder heißt das, ich kaufe eine existierende Anwendung ein (Webanwendung!=Indivudualsoftware)? &lt;br /&gt;
&lt;br /&gt;
; 6. &amp;quot;Das ausgewählte Produkt verfügt nicht über die ausreichende Sicherheitsfunktionalität, ... Daher müssen die notwendigen Schutzmechanismen nachträglich hinzugefügt werden, wodurch zusätzliche Aufwände entstehen.&amp;quot;&lt;br /&gt;
Das ist etwas sehr positiv formuliert. Tatsächlich können fehlende Security Controls in zugekaufter Software (insb. Standardsoftware) in der Realität häufig gar nicht hinzugefügt werden oder nur perimetrisch (z.B. per WAF oder Access Gateway).&lt;br /&gt;
&lt;br /&gt;
; 7. &amp;quot;Die Hintergrundsysteme werden unzureichend abgesichert und dadurch ist die Datenbank der Web-Anwendung aus dem Internet erreichbar.&amp;quot;&lt;br /&gt;
Gehören fehlende Netzwerksegmentierung bzw. Firewallregeln wirklich in diesen Kontext? Das ist doch eigentlich Grundschutz der Infrastruktur, oder?&lt;br /&gt;
&lt;br /&gt;
; 8. &amp;quot;Aufgrund schwacher Parameter in der Konfiguration des Frameworks zum Session-Management werden unsichere SessionIDs erzeugt.&amp;quot;&lt;br /&gt;
Was sind &amp;quot;schwache&amp;quot; Parameter?&lt;br /&gt;
&lt;br /&gt;
Welches Framework erlaubt unsichere SessionIDs durch eine &amp;quot;schwache&amp;quot; Konfiguration zu erzeugen?&lt;br /&gt;
&lt;br /&gt;
; 9. &amp;quot;Wird die Konfiguration des Web-Browsers durch einen Angreifer manipuliert, können die clientseitig umgesetzten&amp;quot;&lt;br /&gt;
&lt;br /&gt;
Manipuliert ein Angreifer die Konfguration seines Webbroswers, wenn er einen MITM-Proxy konfiguriert?&lt;br /&gt;
&lt;br /&gt;
Wie bereits bei den &amp;quot;Goldenen Regeln&amp;quot; angemerkt, gilt auch hier, das manche Security Controls auch clientseitig umgesetzt werden dürfen (etwa. zur Verhinderung von Dom-Based XSS).&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== &amp;quot;G 5.WA10 Fehler in der Web-Anwendungslogik&amp;quot; (Dennis) ==&lt;br /&gt;
; 1. &amp;quot;Damit kann aufgrund der Prüfreihenfolge ein hoher Ressourcenverbrauch provoziert werden, der für Denial-of-Service-Angriffe ausgenutzt werden kann.&amp;quot;&lt;br /&gt;
Meiner Meinung nach passt in diesem Kontext die Attacke DoS nicht ganz. Falls die nachfolgende Funktionalität wegen der langen Ausführungszeit der Filterkomponente übersprungen wird bzw. ein Fehler auftritt würde dies meiner Ansicht in die Thematik Anwendungslogik passen. Eine DoS-Attacke kann hingegen anhand jeder Funktion durchgeführt werden.&lt;br /&gt;
&lt;br /&gt;
== &amp;quot;G 5.WA11 Umgehung clientseitig umgesetzter Sicherheitsfunktionen von Web-Anwendungen&amp;quot; (Dennis) ==&lt;br /&gt;
; 1. &amp;quot;Ein Angreifer kann diese ausnutzen, um beispielsweise unbefugt Befehle an Hintergrundsysteme der Web-Anwendung zu übermittlen (z.B. in Form von Datenbankanfragen bei einer SQL-Injection).&amp;quot;&lt;br /&gt;
Umformulierung des Inhalts der Klammer. Hatte beim ersten Lesen für mich den Anschein, als ob ein Formular genutzt werden könnte welches den Nutzer aufforder eine SQLI einzugeben. Ich denke &amp;quot;Datenbankanfrage zwecks Ausführung einer SQL-Injection&amp;quot; würde besser passen.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== G 2.WA02 Mängel bei der Entwicklung und der Erweiterung von Web-Anwendungen (Matthias) ==&lt;br /&gt;
&lt;br /&gt;
Allgemein ist de obere Teil ok, die aufgezählten &amp;quot;Auswirkungen von fehlenden Vorgaben&amp;quot; verstehe ich jedoch nicht. Wo ist etwa der Bezug von Barrierefreiheit auf die Anwendungssicherheit?&lt;br /&gt;
&lt;br /&gt;
Mein Vorschlag, um diese Punkte etwa sinnvoll umzubauen:&lt;br /&gt;
* &amp;quot;Fehlendes Vorgehensmodell&amp;quot;: Bezug auf fehlende Berücksichtigung von Sicherheit im SDLC. Statt eines SDLCs selbst sollte hier besser auf die Notwendigkeit eines Secure Development Lifecycle (SDL) hingewiesen werden&lt;br /&gt;
* &amp;quot;Fehlende Programmierrichtlinien&amp;quot; =&amp;gt; Besser wäre hier &amp;quot;Fehlende Sicherheitsrichtlinien in der Programmierung&amp;quot; also &amp;quot;Secure Coding Guidelines&amp;quot;&lt;br /&gt;
* &amp;quot;Testfälle&amp;quot; =&amp;gt; &amp;quot;Sicherheitsrelevante Testfälle&amp;quot; (z.B. Security Unit Tests). &lt;br /&gt;
* &amp;quot;Barrierefreiheit&amp;quot;: Warum nicht an dieser Stelle die Auswirkungen von Sicherheitsfunktionen auf die Bedienbarkeit, etwa anhand von CAPTCHAS erläutern?&lt;br /&gt;
&lt;br /&gt;
== G 2.WA03 Unzureichender Schutz personenbezogener Daten bei Web-Anwendungen (Matthias) ==&lt;br /&gt;
&lt;br /&gt;
Der Titel dieses Bausteines heißt &amp;quot;Schutz personenbezogener Daten&amp;quot;, die genannten Beispiele beziehen sich bis auf den letzten jedoch auf die missbräuchliche (oder zumindest problematische) Nutzung aus Sicht des Datenschutzes. &lt;br /&gt;
&lt;br /&gt;
Die Punkt 1-3 sollten daher besser entfallen und z.B. durch die Folgenden ersetzt werden:&lt;br /&gt;
* Unsichere Einbindung von sozialen Netzwerken (Bezug nehmen auf den Like-Button bei Facebook)&lt;br /&gt;
* Unsichere Einbindung von Werbeinhalten&lt;br /&gt;
* Unsichere Übertragung und Caching&lt;br /&gt;
* Unsichere Protokollierung&lt;br /&gt;
* Ungenügender Zugriffsschutz&lt;br /&gt;
* Verstoß des Minimalprinzips bzw. der Zweckgebundenheit (welche Daten werden wirklich benötigt)&lt;br /&gt;
&lt;br /&gt;
Auch wäre es ggf. zumindest einen Verweis auf das BDSG zu machen.&lt;br /&gt;
&lt;br /&gt;
== G 4.33 Unzureichende oder fehlende Authentisierung (Matthias) ==&lt;br /&gt;
&lt;br /&gt;
; 1. Erster Absatz: &amp;quot;Wenn Authentisierungsmechanismen fehlen oder zu schlecht sind&amp;quot;&lt;br /&gt;
&lt;br /&gt;
&amp;quot;schlecht&amp;quot; sollte vlt besser durch &amp;quot;unzureichend&amp;quot; ersetzt werden.&lt;br /&gt;
&lt;br /&gt;
; 2. &amp;quot;Sicherheitslücken entstehen bei... der Benutzerauthentisierung&amp;quot;&lt;br /&gt;
&lt;br /&gt;
Hier findet nur ein Bezug auf &amp;quot;Passwörter&amp;quot; statt. Der Bezug auf die fehlerhaft implementierte oder dem Schutzbedarf ungenügende Schutzmechanismen (z.B. keine 2-Faktor-Authentisierung bei hochsensiblen Daten) fehlt. Auch auf das komplette fehlen von Authentisierungs-Controls wird hier nicht  eingegangen&lt;br /&gt;
&lt;br /&gt;
; 3. &amp;quot;Sicherheitslücken entstehen bei... der Komponentenauthentisierung&amp;quot;&lt;br /&gt;
&lt;br /&gt;
Wie bei 2., wird auch hier wieder nur auf Passwörter, nicht jedoch auf das fehlen von Controls selbst eingegangen. An dieser Stelle fehlt auch ein Hinweis auf die Notwendigkeit dedizierter Benutzeraccounts.&lt;br /&gt;
&lt;br /&gt;
; 4. &amp;quot;Sicherheitslücken entstehen bei... der Wahl des Verfahrens&amp;quot;&lt;br /&gt;
&lt;br /&gt;
Statt untauglich würde ich auch hier von &amp;quot;dem Schutzbedarf der Daten nicht angemessen&amp;quot; sprechen, eigentlich gehört das für mich aber in die obigen Punkte.&lt;br /&gt;
&lt;br /&gt;
; 5. Serverseitige Authentisierung fehlt&lt;br /&gt;
&lt;br /&gt;
Auch der Server (bzw. die Anwendung selbst) kann sich fehlerhaft oder ungenügend beim Benutzer authentsieren, etwa über DNS, SSL-Zertifikate, etc.&lt;br /&gt;
&lt;br /&gt;
== G 4.WA04 Unzureichende Validierung von Ein- und Ausgabedaten bei Web-Anwendungen (Matthias) ==&lt;br /&gt;
&lt;br /&gt;
; 1. &amp;quot;Unzureichende Validierung von Eingabedaten&amp;quot;&lt;br /&gt;
&lt;br /&gt;
Die genannten Beispiele sind genau keine korrekten Beispiele für diesen Fall, sondern betreffen die Ausgabevalidierung bzw. Enkodierung. Typische Fehler der Eingabevalidierung ist eine Manipulierbarkeit der Business Logik.&lt;br /&gt;
&lt;br /&gt;
; 2. &amp;quot;Unzureichende Validierung von Ausgabedaten&amp;quot;&lt;br /&gt;
&lt;br /&gt;
Hier geht es zentral um die Verhinderung von Interpreter Injection, also serverseitig (z.B. SQL oder LDAP Injection) oder clientseitig (XSS, JSON Injection, etc.). Statt &amp;quot;können die Ausgaben Schadcode&amp;quot; enthalten würde ich hier eher davon Sprechen, dass ein solcher Interpreteraufruf manipuliert werden kann (was dann z.B. zur Einschleusung von Schadcode genutzt werden kann).&lt;br /&gt;
&lt;br /&gt;
; 3. &amp;quot;Die Suchfunktion der Web-Anwendung verwendet die Eingaben der Benutzer ungefiltert&amp;quot;&lt;br /&gt;
&lt;br /&gt;
Mit ungenügender &amp;quot;Filterung&amp;quot; hat SQL Injection nichts zu tun,  eigentlich geht es hierbei darum, dass SQL-Anfragen dynamisch mit unvalidierten Eingebedaten zusammengebaut (konkateniert) werden.&lt;br /&gt;
&lt;br /&gt;
; 4. &amp;quot;Ungefilterter HTML-Code in Kommentar-Funktion&amp;quot;&lt;br /&gt;
&lt;br /&gt;
Hier fehlt der Bezug auf persistentes XSS, das hier sicherlich zentral ist.&lt;br /&gt;
&lt;br /&gt;
== G 4.WA05 Fehlende oder mangelhafte Fehlerbehandlung durch Web-Anwendungen (Tobias, Matthias) ==&lt;br /&gt;
; Abschnitt &amp;quot;Unsichere Fehlerbehandlung&amp;quot;&lt;br /&gt;
Die G adressiert &amp;quot;Unsichere Fehlerbehandlung&amp;quot;, der Abschnitt die &amp;quot;Unsichere Fehlerbehandlung in Sicherheitskomponenten&amp;quot;. Entsprechend sollte der fettgedruckte Teil angepasst werden.&lt;br /&gt;
&lt;br /&gt;
; &amp;quot;fehlende SQL-Parameter,&amp;quot;&lt;br /&gt;
Sollte besser &amp;quot;Fehlermeldungen bei ungültigen SQL-Abfragen&amp;quot; lauten.&lt;br /&gt;
&lt;br /&gt;
; &amp;quot;Auch scheinbar unkritische Informationen, wie die Meldung ob (..)&amp;quot;&lt;br /&gt;
Korrekt, allerdings nicht nachvollziehbar, wenn das Problem der Leser nicht schon bekannt ist. Daher erweitern nach &amp;quot; Rahmen von Brute-Force-Angriffen ausgenutzt werden.&amp;quot; mit &amp;quot;. Bei Brute-Force-Angriffen wäre in diesem Fall klar, dass der Benutzername gültig ist.&amp;quot;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[User:Mrohr|Matthias]]): Stimme dem Obigen auch zu, ausserdem:&lt;br /&gt;
&lt;br /&gt;
; Sprachlich: &amp;quot;kann dies unvorhersehbare Auswirkungen haben und den Betrieb der Web-Anwendung bis zur Unerreichbarkeit einschränken.&amp;quot;&lt;br /&gt;
&lt;br /&gt;
&amp;quot;Unerreichbarkeit&amp;quot; ist etas merkwuerdig ausgedrueckt, besser ware hier von der &amp;quot;Verfuegbarkeit&amp;quot; zu sprechen. Im Uebrigen fehlt vollstaendig der Bezug auf die Verfuegbarkeit als Primaeres Schutzziel der Informationssicherheit.&lt;br /&gt;
&lt;br /&gt;
; &amp;quot;Clientseitige Fehlerbehandlung&amp;quot;&lt;br /&gt;
Das stimmt soweit, das generelle Problem ist jedoch genereller, naehmlich die clientseitige Abbildung sicherheitsrelaventer Logik (in diesem Fall die Fehlerbehandlung)&lt;br /&gt;
&lt;br /&gt;
== G 4.WA06 Unzureichende Nachvollziehbarkeit von sicherheitsrelevanten Ereignissen bei Web-Anwendungen (Matthias) ==&lt;br /&gt;
&lt;br /&gt;
; 1. Erster Absatz: &amp;quot;Die Behebung einer Schwachstelle ist dann nicht oder nur unter erschwerten Bedingungen möglich.&amp;quot;&lt;br /&gt;
&lt;br /&gt;
Hier würde ich ergänzen: &amp;quot;...und Angriffe auf die Anwendungen können ggf. nicht erkannt oder nachvollzogen werden&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
; 2. &amp;quot;Beispiele&amp;quot;: Kommulierbarkeit&lt;br /&gt;
&lt;br /&gt;
Hier fehlt auch ein Bezug auf die Kommulierbarkeit von SIcherheitsereignissen, dass diese also auch von solchen anderer Systeme in Verbindung gesetzt werden können&lt;br /&gt;
&lt;br /&gt;
; 3. &amp;quot;Beispiele&amp;quot;: Gerichtsverwertbarkeit&lt;br /&gt;
&lt;br /&gt;
Auch die Möglichkeit zur Gerichtsverwertbarkeit (etwa durch eindeutigen Zeitstempel) und manipulationssicherer Speicherung, würde ich an dieser Stelle unbedingt erwähnen.&lt;br /&gt;
&lt;br /&gt;
== G 4.WA07 Offenlegung von Informationen bei Web-Anwendungen (Matthias) ==&lt;br /&gt;
&lt;br /&gt;
; 1. Titel&lt;br /&gt;
&lt;br /&gt;
Hier würde ggf. &amp;quot;Offenlegung vertraulicher Informationen&amp;quot; sicher besser passen als &amp;quot;Offenlegung von Informationen&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
; 2. Beispiellink&lt;br /&gt;
&lt;br /&gt;
Ein Beispiellink (mit und ohne Token) würde sicher die Verständlichkeit dieser Schwachstelle verbessern.&lt;br /&gt;
&lt;br /&gt;
; 3. Erster Absatz: &amp;quot;Wenn demzufolge Informationen unnötig offengelegt werden, steigt die Wahrscheinlichkeit eines erfolgreichen Angriffs.&amp;quot;&lt;br /&gt;
&lt;br /&gt;
Interne Informationen auszublenden ist eine Härtungsmaßnahme, deren Anzeige erhöht aber nicht zwangsläufig die Wahrscheinlichkeit eines erfolgreichen Angriffs. Ich würde diesen Satz weglassen.&lt;br /&gt;
&lt;br /&gt;
 ; 4. Fehlende Punkte&lt;br /&gt;
&lt;br /&gt;
* Ein Hinweis auf HTTP Header wäre hier sicher erwähnenswert.&lt;br /&gt;
* Weiterhin bzgl. der Anzeige von Traces und ein Verweis auf den Entsprechenden Baustein zur Fehlerbehandlung&lt;br /&gt;
&lt;br /&gt;
== G 5.WA14 Cross-Site Request Forgery (CSRF, XSRF) (Matthias) ==&lt;br /&gt;
&lt;br /&gt;
; 1. Erster Absatz: &amp;quot;Können Funktionen einer Web-Anwendung ohne weitere Überprüfung der Authentizität des HTTP-Requests (z.B. durch Tokens in versteckten Formularfeldern) genutzt werden&amp;quot;&lt;br /&gt;
&lt;br /&gt;
Statt &amp;quot;Funktionen&amp;quot; würde ich besser von &amp;quot;schreibenden Aktionen&amp;quot; sprechen, dann macht der Satz mehr Sinn.&lt;br /&gt;
&lt;br /&gt;
; 2. Dritter Absatz: &amp;quot;Im Gegensatz zu XSS (siehe ...￼ ) ist das Angriffsziel nicht die Information auf dem Client (z. B. in Cookies),&amp;quot;&lt;br /&gt;
&lt;br /&gt;
Dieser (Halb-)Satz macht keinen Sinn, auch weil es bei XSS nicht nur im Informationen auf dem Cient geht. Vorschlag: &amp;quot;ist das Angriffsziel nicht die Ausführung von Skriptcode, sondern von unbefugten, schreibenden Aktionen im Kontext des angemeldeten Benutzers.&amp;quot;&lt;br /&gt;
&lt;br /&gt;
; 3. Session Riding&lt;br /&gt;
&lt;br /&gt;
Session Riding ist quasi nur ein anderer Begriff für CSRF. Die einzige Form von CSRF die mir bekannt ist, sind Angriffe mit Standard-Passwörtern auf HTTP-Basic-Auth geschützten Ressourcen.&lt;br /&gt;
&lt;br /&gt;
Im Grunde ist Session Riding aber nur ein Synonym für CSRF. Der Absatz ist daher auch nur eine Wiederholung der obigen Beschreibung.&lt;br /&gt;
&lt;br /&gt;
; 4. Zum Beispiel: &amp;quot;Durch einen präparierten Link auf einer Webseite wird die Änderung des Zugangspasswortes des Routers eingeleitet.&amp;quot;&lt;br /&gt;
&lt;br /&gt;
Etwas ungüngstig ausgedrückt. Besser wäre: &amp;quot;wird eine Anfrage zur Änderung des Zugangspasswortes an den Router gesendet. Hierbei sendet der Browser automatisch den Session Cookie mit, worüber die Webanwendung die Authentizität der Anfrage verifiziert und die Änderung durchführt.&amp;quot;&lt;br /&gt;
&lt;br /&gt;
== G 5.WA18 Clickjacking (Matthias) ==&lt;br /&gt;
&lt;br /&gt;
Hier stellt sich mir nur die allgemeine Frage, ob Clickjacking, bzw. der Schutz davor tatsächlich einem Grundschutz zuzurechnen ist. Persönlich würde ich dies nicht tun.&lt;br /&gt;
&lt;br /&gt;
== M 2.WA02 Dokumentation der Architektur von Web-Anwendungen (Matthias) ==&lt;br /&gt;
&lt;br /&gt;
; Verantwortlich für die Umsetzung&lt;br /&gt;
Hier wäre auch die Nennung des &amp;quot;Architekten&amp;quot; sinnvoll&lt;br /&gt;
 &lt;br /&gt;
; Fehlende Bestandteile der Dokumentation:&lt;br /&gt;
* Schutzbedarf des Systems sowie der verarbeiteten Daten&lt;br /&gt;
* Schützenswerte Daten und Funktionen (Assets)&lt;br /&gt;
* Betriebliche Anforderungen an die Sicherheit bzw. eingesetzte Plattform&lt;br /&gt;
* Dokumentierte Konfigurationseinstellungen &lt;br /&gt;
* BIA (RTO, RPO)&lt;br /&gt;
* Schnittstellen&lt;br /&gt;
* Trust Boundaries&lt;br /&gt;
* Akteure (bzw. Trust Level)&lt;br /&gt;
* Sicherheitsannahmen&lt;br /&gt;
* Geltende Compliance-Anforderungen (BDSG, PCI DSS, etc.)&lt;br /&gt;
&lt;br /&gt;
; Benutzermanagement&lt;br /&gt;
&lt;br /&gt;
Wenn damit das Identity Management gemeint ist, gehört das Dokumentiert, ist aber keine Sicherheitsfunktion. Oder ist hiermit das Rollen- und Berechtigungskonzept gemeint? Grenzt sich aus meiner Sicht schwer mit dem Thema Authentisierung ab. &lt;br /&gt;
&lt;br /&gt;
; Prüffragen&lt;br /&gt;
&lt;br /&gt;
Hier fehlt etwas in Bezug auf Sicherheitsanforderungen. Beispiel: &amp;quot;Werden Sicherheitsanforderungen an den Betrieb während der Entwicklung abgestimmt und dokumentiert&amp;quot;&lt;br /&gt;
&lt;br /&gt;
== M 2.WA12 Entwicklung und Erweiterung von Anwendungen (Markus) ==&lt;br /&gt;
; &amp;quot;Es sollte darauf geachtet werden, dass Sicherheitsanforderungen&lt;br /&gt;
vollständig durch Sicherheitsmechanismen erfüllt und zur Erstellung von&lt;br /&gt;
Testfällen festgehalten werden.&amp;quot; --&amp;gt; Bessere Formulierung würde aussagen, dass die Sicherheitsanforderungen durch Testfälle verifiziert werden.&lt;br /&gt;
&amp;quot;(z. B. durch Kommentare im&lt;br /&gt;
Quelltext). Somit ist der Quelltext zu einem&amp;quot; --&amp;gt; Das ist kein empfehlenswerter Programmierstiel! Raus mit diesem Kommentar&lt;br /&gt;
;&amp;quot;Zum Schutz vor dem Verlust bereits entwickelter und verworfener&lt;br /&gt;
Lösungen sowie zu Dokumentationszwecken sollte die Historie der&lt;br /&gt;
Änderungen festgehalten werden (z. B. durch ein Revisionssystem).&amp;quot; --&amp;gt; Auch diesen Absatz können wir streichen - Kein professioneller Programmierer arbeitet ohne Versionierugssystem.&lt;br /&gt;
;&amp;quot;Bei Web-Anwendung sollten die Webseiten auf Konformität zu dem&lt;br /&gt;
verwendeten Standard (z. B. HTML-Standard) getestet werden. Dadurch&lt;br /&gt;
können unvorgesehene Seiteneffekte aufgrund einer Fehlinterpretation&lt;br /&gt;
seitens der Browser vermieden werden.&amp;quot; --&amp;gt; Könnte man noch um &amp;quot;Die Software ist in möglichst vielen Browsern zu testen&amp;quot; erweitern.&lt;br /&gt;
;Generell geht der Autor leider nicht auf die Rollen &amp;amp; Rechte Verteilung ein. Mir fehlt der Hinweis, das es eine personelle Trennung zwischen Entwicklung, Test und Betrieb geben muss.&lt;br /&gt;
;Zum Thema Wartung / Betrieb --&amp;gt; Hier wird keine Aussage getroffen bezüglich Log_Files. Dieses Thema kann kritische Auswirkungen haben, Bsp.: logging ganzer HTTP-Requests im LogLevel=Debug.&lt;br /&gt;
; &amp;quot;Produktspezifische Sicherheitsfunkionalität&amp;quot; - Dieser Absatz ist gefährlich - der Angreifer ist nicht zur Verwendung dies Zielbrowsers gezwungen. Deshalb können Browser-spez. Sicherheitsfunktionen nur als Add-ON gewertet werden.&lt;br /&gt;
; &amp;quot;Festlegung der Entwicklungsumgebung&amp;quot; - Dieser Absatz geht nicht auf die zu verwendenden Testdaten ein. Der Hinweis, dass Live-Daten / Kundendaten nichts in Test- &amp;amp; Entwicklungsumgebungen zu suchen haben fehlt!!!&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== M 2.WA24 Web-Tracking (Matthias) ==&lt;br /&gt;
&lt;br /&gt;
; Letzter Absatz: &amp;quot;Falls eine Auswertung von Nutzerdaten, insbesondere personenbezogener Daten, .. &amp;quot;&lt;br /&gt;
&lt;br /&gt;
Hier sollte denke ich besser von personenbeziehbaren Daten gesprochen Werten. Dies betrifft etwa die Zuordnung von Surfverhalten zu einer bestimmten Person. Dies sollte stets nach den Prinzipien Datensparsamkeit und Datenvermeidung, Erforderlichkeit, sowie Zweckbindung erfolgen. Ist Webtracking nicht personenbeziehbar ist dies kein Thema für den Datenschutz.&lt;br /&gt;
&lt;br /&gt;
== M 4.WA04 Authentisierung bei Web- Anwendungen (Matthias) ==&lt;br /&gt;
&lt;br /&gt;
; Vermischung von Authentisierung und Session Management &lt;br /&gt;
&lt;br /&gt;
Bei diesem Baustein findet eine ziemlich große Vermischung von Anforderung an die Authentisierung und das erst in &amp;quot;M 4.WA06 Session-Management bei Web- Anwendungen&amp;quot; behandelte Session Management statt (Beispiel: &amp;quot;Remember-Me-Funktion&amp;quot;). Beide Themen sollten sinnvollerweise getrennt voneinander zu betrachten und aufeinander zu beziehen.&lt;br /&gt;
&lt;br /&gt;
; Verwendung von Frameworks&lt;br /&gt;
&lt;br /&gt;
Die Anforderung ist schon ein wenig eingeschränkt. Besser passt hier denke ich die &amp;quot;Abbildung der Authentisierung über Standardkomponenten (Bibliotheken oder Frameworks)&amp;quot;. &lt;br /&gt;
&lt;br /&gt;
; Remember-Me-Funktion&lt;br /&gt;
&lt;br /&gt;
Siehe oben, gehört zum Session Management. Das ließt sich im übrigen so, als ob eine Webanwendung Credentials auf dem Client abhängt. &lt;br /&gt;
&lt;br /&gt;
; Grenzwerte für gescheiterte Anmeldeversuche&lt;br /&gt;
&lt;br /&gt;
Diese Empfehlung ist allgemein falsch, da sie sehr von der betrachteten Anwendung abhängt. Besser wäre hier allgemein von Mechanismen zur Verhinderung von automatisierten Angriffen zu sprechen (Anti-Automatisierung). &lt;br /&gt;
&lt;br /&gt;
Etwa umsetzbar durch&lt;br /&gt;
* Sperrung nach x Anmeldeversuchen&lt;br /&gt;
* Throttling&lt;br /&gt;
* Captchas&lt;br /&gt;
* Sicherheitsfragen&lt;br /&gt;
&lt;br /&gt;
Das allgemeine Sperren kann leicht für das gezielte Aussperren von Benutzern (User Lockout) verwendet werden. Was etwa bei Trading-Anwendungen nicht funktioniert.&lt;br /&gt;
&lt;br /&gt;
; Automatisiertes Zurücksetzen von Authentisierungsdaten&lt;br /&gt;
&lt;br /&gt;
Würde ich besser als &amp;quot;Passwort-Reset&amp;quot; bezeichnen.&lt;br /&gt;
&lt;br /&gt;
Weiterhin fehlt hier der Hinweis, dass statt ein automatisiertes Zurücksetzen, ein Mechanismus zu empfehlen ist, bei dem über ein hinterlegtes Sicherheitsmerkmal (Handy-Nummer oder E-Mail-Adresse) vom Benutzer zunächst eine Verifikation durchgeführt wird. Beispielsweise durch einen erhaltenen Link. Erst dann darf eine Änderung des Passwortes durch den Benutzer erfolgen.&lt;br /&gt;
&lt;br /&gt;
; Registrierung nicht behandelt&lt;br /&gt;
&lt;br /&gt;
Es existiert hier kein Punkt, der die sichere Implementierung von Benutzerregistrierungen behandelt.&lt;br /&gt;
&lt;br /&gt;
; Verweis auf Externalisierung fehlt.&lt;br /&gt;
&lt;br /&gt;
Statt die Authentisierung selbst durchzuführen kann eine Anwendung hierzu auf eine externe Komponente (Beispiel: SiteMinder oder Kerberos) zurückgreifen.&lt;br /&gt;
&lt;br /&gt;
; Verweis auf Behandlung von Credentials fehlt&lt;br /&gt;
&lt;br /&gt;
Auch wenn das  in &amp;quot;M 4.WA15 Schutz vertraulicher Daten bei Web- Anwendungen&amp;quot; ausführlich behandelt wird, sollte in diesem Baustein bereits auf den angemessenen Schutz von Authentisierungsdaten bei Übertragung und Speicherung hingewiesen werden.&lt;br /&gt;
&lt;br /&gt;
== M 4.WA05Umfassende Ein- und Ausgabevalidierung bei Web-Anwedungen (Markus) ==&lt;br /&gt;
; &amp;quot;Ablehnung der Daten im&lt;br /&gt;
Fehlerfall&amp;quot; --&amp;gt; Hier könnte man noch auf Tar-Pits eingehen - nur ein Vorschlag.&lt;br /&gt;
&lt;br /&gt;
== M 4.WA06Session-Management bei Web-Anwendungen (Markus, Matthias) ==&lt;br /&gt;
; &amp;quot;Übertragung der SessionID mittels GETRequest&amp;quot; --&amp;gt; Hier fehlt der Hinweis, dass die Lebensdauer dieser SessionIds kurz/kürzer sein muss, als im Falle der Speicherung im Cookie.&lt;br /&gt;
&lt;br /&gt;
([[User:Mrohr|Matthias]]) Die Anmerkung verstehe ich ehrlich gesagt ueberhaupt nicht, zumal das SM haeufig transparent zwischen Cookies und URL Rewriting wechselt. Wozu soll das gut sein? Wie soll das geschehen? Idealerweise sollte die Session ID niemals in die URL geschrieben werden, das sollte eigentlich genuegen.&lt;br /&gt;
&lt;br /&gt;
; &amp;quot;Verschlüsselte Übertragung von SessionIDs&amp;quot; --&amp;gt; Hier fehlt der Hinweis auf den Beast-Exploit. TLS Version &amp;gt; 1.0 verwenden!&lt;br /&gt;
&lt;br /&gt;
([[User:Mrohr|Matthias]]) Solange hier nicht auf eine explizite TLS Version eingegangen wird, sollte meiner grossen Ueberzeugung nach hier auch auf keine Exploits etc. eingagen werden, das gehoert an andere Stelle.&lt;br /&gt;
&lt;br /&gt;
; ([[User:Mrohr|Matthias]]) Weiterhin:&lt;br /&gt;
&lt;br /&gt;
 Es dürfen keine extern bekannten oder erratbaren Daten (z. B. IP-Adresse, Uhrzeit) in die Berechnung der SessionID einfließen.&lt;br /&gt;
&lt;br /&gt;
Die Aussage finde ich etwas problematisch, wichtiger ist, dass die Entropie ausreichend hoch ist. Haeufig werden etwa IPs von Load Balancern in die Session ID hineingeschrieben.&lt;br /&gt;
&lt;br /&gt;
 - Domain (z. B. webapp.domain.tld),&lt;br /&gt;
 - Path (z. B. /webapp/),&lt;br /&gt;
 - Secure und&lt;br /&gt;
 - HttpOnly.Beschränkte Sitzungsdauer&lt;br /&gt;
&lt;br /&gt;
Das sieht so aus, als ob es empfehlenswert ist, das Domain-Tag zu verwenden, das ist es sicherlich nicht. Was macht hier der Hinweis &amp;quot;Beschraenke Sizuungsdauer&amp;quot;?&lt;br /&gt;
&lt;br /&gt;
== M 4.WA07Fehlerbehandlung durch Web-Anwendungen (Markus) ==&lt;br /&gt;
; Konsistenter / Inkonsistener Zustand einer Webanwendung und der daraus resultierende Datenverlust: Hier fehlen mir die Punkte: DOS, Priv.Escalation, CodeExecution.&lt;br /&gt;
; Vermeidung vertraulicher Informationen in Fehlermeldungen --&amp;gt; Fehlermeldungen sollten ebenfalls eine Systeminformationen preisgeben (Softwareversion, Patchlevel, etc.)&lt;br /&gt;
; Abbruch des Vorgangs nach Auftreten eines Fehlers --&amp;gt; TarPits scheinen dem Autor umbekannt zu sein :)&lt;br /&gt;
; &amp;quot;Werden Fehler möglichst von der gleichen Komponente behandelt, in der&lt;br /&gt;
der Fehler aufgetreten ist?&amp;quot; --&amp;gt; Das &amp;quot;möglichst&amp;quot; sollten wir streichen.&lt;br /&gt;
&lt;br /&gt;
== M 4.WA08Schutz vor automatisierter Nutzung von Web-Anwendungen (Markus) ==&lt;br /&gt;
; &amp;quot;Brute-Force-&lt;br /&gt;
Angriffe (z. B. Erraten von Zugangsdaten) und Enumeration-Angriffe (z. B.&lt;br /&gt;
automatisiertes Ermitteln von gültigen Login-Namen)&amp;quot; -- die Beispiele sind identisch - besser Beispiele suchen, z.b. URL-Enumeration&lt;br /&gt;
&lt;br /&gt;
([[User:Mrohr|Matthias]]) Das sehe ich anders. Brute-Forcing bezieht auf Passwoerter und Enumeration auf Benutzernamen, etwa durchs hochzaehlen. Auch wenn ich zustimmen muss, dass die nicht ganz gluecklich gewaehlt wurden. Stann &amp;quot;Erraten von Zugangsdaten&amp;quot; wuerde ich besser von &amp;quot;Erraten von Passwoertern&amp;quot; sprechen. Oder wie gesagt gleich auch auf andere Beispiele (etwa Object ID Enumeration) beziehen.&lt;br /&gt;
&lt;br /&gt;
== M 4.WA11Sichere Konfiguration von Web-Anwendungen (Markus) ==&lt;br /&gt;
; &amp;quot;Sicherer Umgang mit TLS/SSL&amp;quot; -- Hier fehlt der Hinweis, dass TLS-1.0 gebrochen ist&lt;br /&gt;
; &amp;quot;Zeichenkodierungskonfiguration&amp;quot; -- Ein Whitelisting abhängig von der Encodierung wäre ein weiterer Vorschlag&lt;br /&gt;
; &amp;quot;Restriktive Dateisystemberechtigungen&amp;quot; -- auch wenn es ein klassiker ist - der AS sollte ebenfalls mit von einem eingeschränkten Nutzer gestartet werden und nicht als root&lt;br /&gt;
; Administration Consolen:zur Ergänzen: Wenn diese nicht benötigit, sollten derartige Applikationen nicht deployed werden, unabhängig von möglichen Zugangsbeschränkungen.&lt;br /&gt;
&lt;br /&gt;
([[User:Mrohr|Matthias]]) Sorry, meiner Meinung nach hat die Bewertung von Kryptoverfahren hier abslut nichts zu suchen.Stattdessen sollte hier auf den entsprechenden [https://www.bsi.bund.de/ContentBSI/Publikationen/TechnischeRichtlinien/tr02102/index_htm.html Empfehlung des BSI] verwiesen werden, auch wenn dieses Dokument derzeit noch etwas outdated zu sein scheint.&lt;br /&gt;
&lt;br /&gt;
== M 4.WA13Kontrolliertes Einbinden von Daten und Inhalten bei Web-Anwendungen (Markus) ==&lt;br /&gt;
; Datei-Upload: Bei einem Upload werden Dateien durchaus in TEMP-Verzeichnissen gesammelt und danach weiterverarbeitet. Diese TEMP-Verzeichnisse sind im Rahmen einer Sicherheitsanalyse zu betrachten -&amp;gt; Möglicher (unbefugter) Zugriff auf weitere Uploads&lt;br /&gt;
; Upload komprimierter Dateien / großer Dateien birgt die Gefahr von DOS Angriffen&lt;br /&gt;
; Upload von Dateien kann bei weiterem Parsing zu Speicherengpässen führen --&amp;gt; DOS-Angriffe auf Thread-Local etc.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== M 4.WA14Restriktive Herausgabe sicherheitsrelevanter Informationen bei Web-Anwendungen (Markus, Matthias) ==&lt;br /&gt;
OK - Keine Anmerkungen von mir.&lt;br /&gt;
&lt;br /&gt;
[[User:Mrohr|Matthias]]) Von mir schon;)&lt;br /&gt;
&lt;br /&gt;
; Vermeidung von Kommentaren in ausgelieferten Webseiten&lt;br /&gt;
&lt;br /&gt;
Das ist leider total falsch, wir brauchen haeufig Komentare, aus Kompatibilitaetsgruenden. So wird etwa der JavaScript-Block haeufig auskommentiert.&lt;br /&gt;
&lt;br /&gt;
Wurde stattessen besser von sicherheitsrelevanten Kommentaren sprechen und als Massnahme generell Entwicklerkommentare ueber Sprachkonstruktre (etwa JSP) durchzufuehren.&lt;br /&gt;
&lt;br /&gt;
; Löschen nicht benötigter Dateien&lt;br /&gt;
&lt;br /&gt;
Hier wurde ich ggf. Dateien von Versionisierungstools (etwa Subversion) erwaehnen, das sehen wir schon recht haeufig.&lt;br /&gt;
&lt;br /&gt;
Statt Dateien einfach nur zu loeschen (was in der Praxis haeufig nicht so einfach ist) bietet es sich zudem an, den Zugriff auf bestimmte Dateien oder Dateitypen generell zu sperren, etwa mittels ACL im Apache.&lt;br /&gt;
&lt;br /&gt;
; Gibt die Web-Anwendung ausschließlich neutrale Fehlermeldungen aus und sind diese im Quelltext identisch? {E: C}&lt;br /&gt;
&lt;br /&gt;
Persoenlich verstehe ich das nicht. Wieseo neutrale Fehlermeldung? Das macht fuer mich nur beim Login Sin. Hierzu existiert in dem Text auch keinerlei Bezug. Ich wuerde das daher besser entfernen und im Rahmen der Fehlerbehandlung diskutieren. Mindestens sollte hier jedoch besser von &amp;quot;sicherheitsunbedentlichen Fehlermeldungen&amp;quot; oder so gesprochen werden.&lt;br /&gt;
&lt;br /&gt;
; Wird der Referrer bei Verlassen der Web-Anwendung (z. B. durch einen Link auf eine externe Seite) gefiltert?&lt;br /&gt;
&lt;br /&gt;
Diesen Punkt sehe ich als sehr Fallabhengig an. Es kann fuer seiten durchaus wuenschenswert sein, dass der Referer weitergegeben wird. Der Referer sollte natuerlich keine sensiblen Informationen enthalten, was ja an anderer Stelle (etwa Session Management) vorgegeben wird bzw. gegeben werden sollte.&lt;br /&gt;
&lt;br /&gt;
== M 4.WA15Schutz vertraulicher Daten bei Web-Anwendungen (Markus) ==&lt;br /&gt;
; Sichere kryptographische Algorithmen:&lt;br /&gt;
 Hier fehlt mir eine Liste der aktuelle als sicher geltenden Verfahren.&lt;br /&gt;
; Schlüssel&lt;br /&gt;
 Das die Schlüssel bestimmten Formaten entsprechen müssen ist ok - aber das Schlüsselmanagement wird gar nicht besprochen?&lt;br /&gt;
; Schutz der Daten im Browsercache&lt;br /&gt;
 Skripte und Browserplugins können ebenfalls auf den Browsercache zugreifen - diese werden hier nicht erwähnt.&lt;br /&gt;
; Maskierung von Passwörtern &lt;br /&gt;
 Dies schützt bei der Eingabe nur vor ShoulderSurfing nicht vor Skripten oder Plugins die diese an andere Server posten.&lt;br /&gt;
; Sicherung von Zugangsdaten:&lt;br /&gt;
 Zugangsdaten in einer Datei abzulegen - wenn auch ausserhalb des WebRoots ist keine gute Idee.&lt;br /&gt;
; Schutz von Quelltexten:&lt;br /&gt;
 Hier würde ich property files mit aufnehmen. der hinweis auf web-inf/classes fehlt - warum?&lt;br /&gt;
 Bei include-befehlen sind die pfadangaben zu überdenken.&lt;br /&gt;
&lt;br /&gt;
== M 4.WA16Zugriffskontrolle bei Web-Anwendungen (Markus) ==&lt;br /&gt;
; Zugriffskontrolle via Frameworks:&lt;br /&gt;
 Dieser Punkt (Frameworks) wird nur in einem Satz erwähnt. Es werden keine Bespiele gegeben - Das ist zu wenig.&lt;br /&gt;
 Es müssen alle Zugriffe geschützt werden. Eine Protokollierung aller Zugriffe mit den nötigen Informationen ist ebenfalls empfehlenswert.&lt;br /&gt;
; Datei Upload:&lt;br /&gt;
 Die Gefahr eines DOS wird hier nicht erwähnt.&lt;br /&gt;
&lt;br /&gt;
== M 4.WA19Verhinderung von Cross-Site Request Forgery (CSRF, XSRF) (Markus, Matthias) ==&lt;br /&gt;
; Verantwortliche: &lt;br /&gt;
 Entwickler und Admins!&lt;br /&gt;
([[User:Mrohr|Matthias]]) Korrekt, wobei auch in der Reihenfolge&lt;br /&gt;
&lt;br /&gt;
; Anti-CSRF-Token in hidden fields:&lt;br /&gt;
 Das ist keine gute Idee. Ich würde das streichen!&lt;br /&gt;
&lt;br /&gt;
([[User:Mrohr|Matthias]]) Watt? Anti-CSRF-Tokens in Hidden Fields sind die Standard-Massnahme. Wie denn sonst? Bitte nicht streichen!!! &lt;br /&gt;
&lt;br /&gt;
([[User:Mrohr|Matthias]]) Die Technik bei der die Session ID als Anti-CSRF-Token verwendet wird, wird als Double-Cookie Submit bezeichnet, das sollte hier referenziert werden.&lt;br /&gt;
&lt;br /&gt;
; Umgehung von Schutzmechanismen:&lt;br /&gt;
 Man in the middle hat keinen direkten Bezug zu CSRF! Das würde ich streichen.&lt;br /&gt;
([[User:Mrohr|Matthias]]) Der Hinweis ist korrekt. Wovon der Autor hier spricht ist Session Replay nicht CSRF.&lt;br /&gt;
&lt;br /&gt;
; Frameworks:&lt;br /&gt;
 Gute Idee - aber es gibt auch Features in den ApplicationServern die CSRF unterbinden - warum wird das nicht besprochen?&lt;br /&gt;
&lt;br /&gt;
([[User:Mrohr|Matthias]]) Sehe ich persoenlich nicht so, da CSRF primaer ein Applikations-Fehler ist, und auch in der Applikation und nicht im Environment (AppServer) geloest werden sollte. Auch wenn das manchmal ggf. die einzig machbare Loesung darstellt.&lt;br /&gt;
&lt;br /&gt;
([[User:Mrohr|Matthias]]) Was generell fehlt, ist ein Hinweis darauf, dass schreibende Requests generell per HTTP Post abgewickelt werden sollten, da HTTP Get keine &amp;quot;Safe Method&amp;quot;  (siehe HTTP 1.1, RFC 2616) ist.&lt;br /&gt;
&lt;br /&gt;
== M 4.WA20Sicherer Entwurf der Logik von Web-Anwendungen (Markus, Matthias) ==&lt;br /&gt;
; Rollbacks:&lt;br /&gt;
 Tritt ein Fehler auf muss die Applikation einen konsistenten Datenstand zurück lassen. Das wird hier nicht erwähnt.&lt;br /&gt;
; RaceConditions:&lt;br /&gt;
 Fehler in der Geschäftslogik können auch durch zwei gleichzeitige Sessions auf einer Webapplikation auftreten - das wird hier nicht besprochen.&lt;br /&gt;
&lt;br /&gt;
([[User:Mrohr|Matthias]]) Ehrlich gesagt kann ich nicht ganz nachvollziehen, was der Sichere Entwurf der Logik von Web-Anwendungen mit dem Verzicht auf aktive Inhalte zu tun hat. Unabhaengig davon sollte man solche unsinnigen Aussagen im Jahre 2012 nicht mehr treffen, damit macht man sicht nur laecherlich.&lt;br /&gt;
&lt;br /&gt;
Nichts desto trotz, was hier als &amp;quot;echte&amp;quot; Massnahmen erwaehnt werden sollte sind:&lt;br /&gt;
* Verhinderung von Race Conditions, aber nicht nur durch Concurrent Sessions sondern auch durch Singletons (TOCTOU)&lt;br /&gt;
* Haertung von Workflows, etwa durch die Verwendung von State Machines&lt;br /&gt;
* Fail Securely (bzw. Verweis)&lt;br /&gt;
* Serverseitige Abbildung der Anwendungslogik, zumindest wenn diese sicherheitsrelevant sit&lt;br /&gt;
&lt;br /&gt;
== M 4.WA22Verhinderung der Blockade von Ressourcen (DoS) bei Web-Anwendungen (Markus, Matthias) ==&lt;br /&gt;
; Datenspeicher:&lt;br /&gt;
 Neben dem Datenspeicher sollte auch der RAM-Verbrauch pro Thread der Applikation limitiert werden.&lt;br /&gt;
([[User:Mrohr|Matthias]]) Stimmt, ich wuerde hier sogar allgemein von Ressourcenverbrauch am Beispiel RAM und Datenspeicher, sprechen&lt;br /&gt;
&lt;br /&gt;
; Voraggregation von Daten / Caching&lt;br /&gt;
 Dieser Punkt fehlt: Stark ressourcen belastende Anfragen können auch in Lastarmen Zeiten vorberechnet werden.&lt;br /&gt;
([[User:Mrohr|Matthias]]) Stimmt, koennte noch als Anmerkung bei &amp;quot;Cachen von Anfragen&amp;quot; hinzugefuegt werden&lt;br /&gt;
&lt;br /&gt;
([[User:Mrohr|Matthias]]) Noch drei Anmerkugnen&lt;br /&gt;
&lt;br /&gt;
; Prueffrage: &amp;quot;Wird ein möglicher Überlauf von Protokolldaten... verhindert&amp;quot;&lt;br /&gt;
&lt;br /&gt;
Ist eine etwas eingeschrankte Sicht. Wurde hier eher von Ueberlauf von Speicherplaz zu Beispiel im Rahmen der Protokollierung sprechen&lt;br /&gt;
&lt;br /&gt;
; Durchfuehrung von Lasttests zur Identifikation ressourcenintensiver Operationen&lt;br /&gt;
&lt;br /&gt;
Der Hinweis waere ggf. erwahnenswert&lt;br /&gt;
&lt;br /&gt;
; Hinweis auf nicht-angemeldeten Bereich&lt;br /&gt;
&lt;br /&gt;
Das Risiko durch rechenintensive Operationen durch einen DoS betroffen zu sein ist natuerlich fuer gewoehlich um so groesser, wenn diese im anonymen Bereich angeboten wird. Der Hinweis ware ggf. ebenfalls hilfreich.&lt;br /&gt;
&lt;br /&gt;
== M 4.WA25Verhinderung von Clickjacking (Markus) ==&lt;br /&gt;
Ok - das passt soweit.&lt;br /&gt;
&lt;br /&gt;
([[User:Mrohr|Matthias]]) Stimmt, auch wenn ich &amp;quot;Angreifer&amp;quot; in dem Beispiel eher als &amp;quot;Webseitenbetreiber&amp;quot; beschreiebn wuerde, da er nicht wirklich aktiv einen Angriff durchfuehrt, oder? Bitte nochmal ueber meinen Hinweis aus G 5.WA18 nachdenken: Ist Clickjacking-Schutz tatsaechlich Grundschutz? Ich bin mir da selber nicht so wirklich sicher.&lt;br /&gt;
&lt;br /&gt;
== M 5.WA21Sichere Anbindung von Hintergrundsystemen an Web-Anwendungen (Markus) ==&lt;br /&gt;
; Verantwortliche:&lt;br /&gt;
 Architekten fehlen. Entwickler müssen die Views umsetzen und die Datasource entsprechend einbinden - die fehlen hier ebenfalls.&lt;br /&gt;
; DirectorySystem Beispiel:&lt;br /&gt;
 Das DirectorySystem wird in dem angegeben Beispiel zum Single Point of Failure - das wird verschwiegen.&lt;br /&gt;
; Firewalls:&lt;br /&gt;
 Das sind fachlich-blinde Systeme. Was ist mit WAFs / IDS / IPS etc.?&lt;br /&gt;
([[User:Mrohr|Matthias]]) Stimmt, das hat in diesem Baustein nichts zu suchen&lt;br /&gt;
&lt;br /&gt;
([[User:Mrohr|Matthias]]) Noch zwei weitere Punkte von mir&lt;br /&gt;
&lt;br /&gt;
; Typische Hintergrundsysteme&lt;br /&gt;
Hier fehlt irgendwie &amp;quot;Middleware&amp;quot;, die ist denke ich nicht immer Legacy&lt;br /&gt;
&lt;br /&gt;
== M 5.WA23Systemarchitektur einer Web-Anwendung (Markus) ==&lt;br /&gt;
; Verantwortliche:&lt;br /&gt;
Auch hier fehlend wieder die Architekten. &lt;br /&gt;
; Virtualisierung:&lt;br /&gt;
Virtualisierung bietet weitere Angriffsvektoren (z.B.: Hypervisor) die eine &amp;quot;Blech&amp;quot;Farm nicht bietet.&lt;/div&gt;</summary>
		<author><name>Mrohr</name></author>	</entry>

	<entry>
		<id>https://wiki.owasp.org/index.php?title=Talk:OWASP_Review_BSI_IT-Grundschutz_Baustein_Webanwendungen&amp;diff=130144</id>
		<title>Talk:OWASP Review BSI IT-Grundschutz Baustein Webanwendungen</title>
		<link rel="alternate" type="text/html" href="https://wiki.owasp.org/index.php?title=Talk:OWASP_Review_BSI_IT-Grundschutz_Baustein_Webanwendungen&amp;diff=130144"/>
				<updated>2012-05-21T08:25:09Z</updated>
		
		<summary type="html">&lt;p&gt;Mrohr: /* M 4.WA20Sicherer Entwurf der Logik von Web-Anwendungen (Markus) */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Since it's about a review of a document in German, all the discussions will be done in German :-)&lt;br /&gt;
&lt;br /&gt;
Diskussionen rund um den Review des &amp;quot;IT-Grundschutzbausteins Webanwendungen&amp;quot; finden hier statt, sinnvollerweise auf Deutsch :-)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Vorschlag für Kriterien, die an unser Review angelegt werden sollten (.kai) ==&lt;br /&gt;
&lt;br /&gt;
* Der Baustein soll alle wichtigen Themen der Entwicklung sicherer&lt;br /&gt;
Webanwendungen enthalten.&lt;br /&gt;
&lt;br /&gt;
* Der Baustein soll die verschiedenen Phasen der Software-Entwicklung&lt;br /&gt;
vollständig abdecken.&lt;br /&gt;
&lt;br /&gt;
* Der Baustein soll zwischen verbindlichen, prüfbaren Vorgaben und&lt;br /&gt;
unverbindlichen Empfehlungen sprachlich sauber unterscheiden (hier&lt;br /&gt;
spielt mein Auditorenblick eine Rolle). Vor allem soll der Baustein&lt;br /&gt;
verbindliche Anforderungen auch tatsächlich stellen. Alle&lt;br /&gt;
verbindlichen Anforderungen müssen unabhängig von der jeweiligen&lt;br /&gt;
Umgebung auch umsetzbar sein, d.h. sie müssen entsprechend generisch&lt;br /&gt;
sein.&lt;br /&gt;
&lt;br /&gt;
* Die Maßnahmen sollen nur in (begründbaren) Ausnahmen zu Empfehlungen&lt;br /&gt;
von OWASP im Widerspruch stehen.&lt;br /&gt;
&lt;br /&gt;
* Die Maßnahmen sollen verständlich und anwendbar sein.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== &amp;quot;Hilfsmittel&amp;quot; (Markus) ==&lt;br /&gt;
Ich würde das Script zur Vermeidung von Clickjacking wrappen und nicht als losen Skript-block in den Text einbinden - einfach schlechter Programmierstiel diese losen Blöcke.&lt;br /&gt;
Der Zugriff auf das Body-Element mit byTagName-Array[0] ist auch nicht wirklich gut. Ich halte Zugriffe über das DOM (klassisch), bei ID bzw. XPATH für besser. &lt;br /&gt;
&lt;br /&gt;
SQL-Injection Characters:&lt;br /&gt;
die Pipe fehlt hier zur Textkonatenierung&lt;br /&gt;
+ / - haben auch eine Bedeutung bei JOINs.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== &amp;quot;Goldene Regeln&amp;quot; (Matthias) ==&lt;br /&gt;
&lt;br /&gt;
Hier meine Anmerkungen zu diesem Dokument:&lt;br /&gt;
&lt;br /&gt;
; 1. Für mich fehlende Punkte&lt;br /&gt;
* Korrektur der Ursache (Root Cause) von Schwachstellen statt  Verhinderung deren Ausnutzung&lt;br /&gt;
* Bezug auf Minimierung der Angriffsfläche und Least-Privilege-Prinzip&lt;br /&gt;
* Bezug auf Defense-in-Depth-Prinzip&lt;br /&gt;
* Verwendung von getesteten Security APIs (z.B. OWASP ESAPI) statt selbstentwickelter Funktionen&lt;br /&gt;
* Bezug auf Externalisierung von Sicherheitsfunktionen, sowie deklerative vor programmatischer Sicherheit.&lt;br /&gt;
&lt;br /&gt;
; 2. Begriff &amp;quot;Web-Anwendung&amp;quot;&lt;br /&gt;
Würde ich generell durch &amp;quot;Webanwendung&amp;quot; ersetzen.&lt;br /&gt;
&lt;br /&gt;
; 3. Einleitung (&amp;quot;Web-Anwendungen stellen Funktionalität zur Verfügung, ...&amp;quot;)&lt;br /&gt;
&lt;br /&gt;
Wozu dient dieser Satz?&lt;br /&gt;
&lt;br /&gt;
; 4. &amp;quot;Die Architektur der Web-Anwendung ist im Sicherheitskonzept zu  dokumentieren.....&amp;quot; &lt;br /&gt;
&lt;br /&gt;
Ich fände es sinnvoller, wenn hier von der &amp;quot;Sicherheitsarchitektur&amp;quot; gesprochen wird, welche etwa neben den sicherheitsrelevanten Datenflüssen, sensible Komponenten, Entry Points, Akteure architekturelle Security Controls wie Authentisierung, Kryptographie und natürlich die Trust Boundaries beinhaltet.&lt;br /&gt;
&lt;br /&gt;
; 5. &amp;quot;Bei Web-Anwendungen handelt es sich häufig um spezielle Eigenentwicklungen....&amp;quot;&lt;br /&gt;
&lt;br /&gt;
Erstens würde ich hier den geläufigen Begriff &amp;quot;Individualsoftware&amp;quot; verwenden. Zweitens würde ich statt bestimmte SDLC-Phasen vorzugeben (die Begriffe &amp;quot;Softwareverteilung&amp;quot; und &amp;quot;Integration&amp;quot; sind mir bei Webanwendungen bisher noch nicht so häufig untergekommen), besser von der Notwendigkeit sprechen, Sicherheit in allen Entwicklungsphasen zu berücksichtigen, also eines SDLs.&lt;br /&gt;
&lt;br /&gt;
; 6. &amp;quot;Alle Ein- und Ausgaben der Web-Anwendung müssen in eine normalisierte Form überführt werden....&amp;quot;&lt;br /&gt;
&lt;br /&gt;
Normalisierung ist für mich nicht gleich Kanonsierung, auch wenn beide Begriffe häufig als synonym verwendet werden.  Der Unterschied wird in der [http://owasp-esapi-java.googlecode.com/svn/trunk_doc/2.0-rc4/org/owasp/esapi/Encoder.html API-Beschreibung der ESAPI] erklärt. Die Normalisierungs-Funktion ist allerdings schon vor einiger Zeit aus der ESAPI [https://lists.owasp.org/pipermail/esapi-dev/2010-January/000266.html rausgeflogen]. Die generelle Kanonisierung von Ausgaben halte ich dazu für nicht sinnvoll.&lt;br /&gt;
&lt;br /&gt;
Zweitens, finde ich den weiteren Text zwar grundsätzlich formal korrekt, aber so allgemein, dass dieser glaube ich niemandem so richtig etwas bringt.  &lt;br /&gt;
&lt;br /&gt;
Besser fände ich hier Ein- von Ausgabevalidierung grundsätzlich voneinander abzugrenzen. Etwa was ich per Eingabevalidierung (Längenprüfung, Casting, etc. per Whitelisting) und was mit Ausgebavalidierung (Enkodierung, Escaping, Parametrisierung) machen muss und kann.&lt;br /&gt;
&lt;br /&gt;
Eingabedaten können technisch zudem auch Werte eingelesener Property-Dateien sein. Muss ich die auch validieren? Ist das dann noch Grundschutz? &lt;br /&gt;
&lt;br /&gt;
; 7. &amp;quot;Für den Zugriff auf sensitive Funktionen oder Informationen muss die Web-Anwendung eine wirksame Authentisierung und Sitzungsverwaltung unterstützen. Die Eigenschaften der Sitzungs-ID müssen so gewählt werden, dass die Sitzung ausreichend geschützt ist. ....&amp;quot;&lt;br /&gt;
&lt;br /&gt;
Besser fände ich &amp;quot;eine Authentisierung, die über eine dem Schutzbedarf der Anwendung angemessene Stärke verfügt.&amp;quot; &lt;br /&gt;
&lt;br /&gt;
Eigentlich geht es doch mehr um den Schutz der Sitzungs-ID, da diese gewöhnlich im Verlauf einer Sitzung den Client authentisiert. Oder den Schutz des Zugriffs auf eine Sitzung. &lt;br /&gt;
&lt;br /&gt;
Zudem fehlt hier meiner Meinung nach der Hinweis auf die bevorzugte Verwendung getesteter Standardkomponenten.&lt;br /&gt;
&lt;br /&gt;
; 8. &amp;quot;Die Web-Anwendung sollte die zu übermittelnden Daten schützen.&amp;quot;&lt;br /&gt;
&lt;br /&gt;
Dies würde ich nur auf sensible Daten beziehen. Zusätzlich zu HTTPS würde ich hier schreiben, dass sensible Daten generell nicht in der URL übertragen werden dürfen.&lt;br /&gt;
&lt;br /&gt;
; 9. &amp;quot;Die Preisgabe interner Informationen (z.B. Kommentare, Fehlermeldungen)&amp;quot;&lt;br /&gt;
&lt;br /&gt;
Hier würde ich eher schreiben &amp;quot;(IN Kommentaren, Fehlermeldungen, HTTP Headern, etc.)&amp;quot;&lt;br /&gt;
&lt;br /&gt;
; 10. &amp;quot;Fehler müssen so behandelt werden, ... müssen Fehler bei der Autorisierung zu einer Verweigerung beim Zugriff auf die angeforderte Ressource führen.&amp;quot;&lt;br /&gt;
&lt;br /&gt;
Sprachlich: &amp;quot;Die Webanwendung muss sich stets in einem sicheren Zustand befinden. Beispielsweise müssen Fehler bei der Autorisierung zu einer Verweigerung des Zugriffs führen (Default-Deny-Strategie).&amp;quot;&lt;br /&gt;
&lt;br /&gt;
; 11. &amp;quot;Die Logging-Funktionen der Web-Anwendung müssen aufgetretene Ereignisse derart protokollieren, dass sicherheitskritische Vorfälle nachvollzogen werden können.&amp;quot;&lt;br /&gt;
&lt;br /&gt;
Hier würde hier eher von &amp;quot;allen sicherheitsrelevanten Ereignissen&amp;quot; sprechen.&lt;br /&gt;
&lt;br /&gt;
Weiterhin sollten insbesondere beim Logging der Datenschutz berücksichtigt werden, personenbezogene Daten also nach Möglichkeit nicht oder nur anonymisiert in technischen Logdateien protokolliert werden.&lt;br /&gt;
&lt;br /&gt;
; 12. &amp;quot;Alle Sicherheitsmechanismen (z.B. Authentisierung und Zugriffskontrolle) sind serverseitig zu implementieren und können nicht durch clientseitige Mechanismen ersetzt werden.&amp;quot;&lt;br /&gt;
&lt;br /&gt;
Die Aussage ist so nicht korrekt. Darüber hatten wir bereits bei der ASVS mehrfach diskutiert. &lt;br /&gt;
&lt;br /&gt;
Überall dort wo der Client angegriffen wird, also etwa bei RIAs (Stichwort DOM-Based XSS) müssen wir Security Controls clientseitig implementieren. Es gibt mittlerweile deshalb auch eine Portierung der ESAPI auf Javascript. Überall dort wo der Server oder Hintegrundsysteme angegriffen werden, ist die Aussage aber natürlich zutreffend.&lt;br /&gt;
&lt;br /&gt;
== &amp;quot;Gefährdungen&amp;quot; (Markus, Dennis, .... &amp;lt;Dein Name&amp;gt;) ==&lt;br /&gt;
; Generell:&lt;br /&gt;
Reference auf RFCs fehlen.&lt;br /&gt;
&lt;br /&gt;
==B.5.XX Web-Anwendungen ==&lt;br /&gt;
; 1. Erster Absatz - Letzter Satz: --Wieso werden hier nur HTML/XML Doks und Oberflächen angesprochen? Was ist der Unterschied zwischen einem HTML-Dok und einer Oberfläche? Was ist mit  Flash, etc.? Was ist mit WebSockets?&lt;br /&gt;
; 2. Stichpunkt &amp;quot;Protokollierung&amp;quot;: Sicherheits relevant ist ein sehr dehnbarer Begriff - Eine bessere Formulierung könnte sein: Zur Rekonstruktion von Nutzerhandlungen nötige Ereignisse (positve &amp;amp; negative) müssen protokolliert werden . . . &lt;br /&gt;
; 3. Absatz: &amp;quot;Abgrenzung des Bausteins&amp;quot;: &amp;quot;Die spez. Sicherheitsanforderungen an Web-Services werden in diesem Baustein nicht betrachtet&amp;quot; --&amp;gt; Wie so nicht? Was ist das Backend von einer Rest / AJAX-basierenden Webanwendung denn anderes als ein Web-Service? Diesen Satz würde ich entfernen.&lt;br /&gt;
; 4.Vorsätzliche Handlungen -&amp;gt; Web-Spoofing (G.5.87) -- Missverständliche Bezeichnung / Nomenklatur&lt;br /&gt;
; 5. Seite 4 : erste Zeile &amp;quot;Umsetzung&amp;quot;: &amp;quot;dafür umzusetztende Komponenten müssen die Webanwendung schützen...&amp;quot; - Hier fehlt mir der Hinweis, dass dieser Schutz verifiziert werden muss.&lt;br /&gt;
; 6 Seite 5: &amp;quot;Umsetzung&amp;quot; - Wir haben CSRF, D(D)os und SQL-Injection aber wo ist XSS?&lt;br /&gt;
; 7 Seite 7: &amp;quot;Die Sicherheitsfunktion wird ausschließlich clientseitig...&amp;quot; --&amp;gt; Warum muss der Angreifer überhaupt einen Browser umkonfigurieren? Was ist mit Proxies, Scripts, etc.? Ich würde das reduzieren darauf, dass rein Webbrowser-basierende Schutzfunktionen einfach umgangen werden können.&lt;br /&gt;
; 8 Seite 8: Die angesprochenen Punkte hinterlassen den Eindruck nicht vollständig zu sein: Mir fehlen Punkte wie &amp;quot;Outsourcing&amp;quot;, &amp;quot;KnowHow der Entwickler&amp;quot;, Tooling, Framework-Auswahl, etc.&lt;br /&gt;
; 9 Seite 9: Eigentlich möchte der Autor hier über Datenschutz sprechen. Abgesehen von den letzten drei Zeilen geht es aber nur um &amp;quot;User tracking&amp;quot; - Wo ist der Rest der Datenschutzproblematik? Warum der Fokuss auf Tracking? Mir ist das zu einseitig.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
tbd.&lt;br /&gt;
&lt;br /&gt;
; Wortwahl:&lt;br /&gt;
Ich stosse innerhalb der Texte immer wieder an die Worten '''Hintergrundsystem''' und '''Sicherheitskontext'''.&lt;br /&gt;
'''Hintergrundsystem:''' besseres Synonym?&lt;br /&gt;
'''Sicherheitskontext:''' nur weil es in den Texten um Sicherheit geht muss nicht an jeder Stelle immer wieder das Wort _Sicherheits_kontext eingebaut werden.&lt;br /&gt;
Bsp: &amp;quot;Erlangt ein Angreifer Kenntnis von einer solchen gültigen, aber nicht mehr genutzten SessionID, so kann er die Web-Anwendung im Sicherheitskontext des nicht abgemeldeten Benutzers weiter verwenden.&amp;quot; (G 5,WA12 Unzureichendes Session-Management von Web-Anwendungen)&lt;br /&gt;
Verbesserungsansansatz: ... so kann er die Web-Anwendung anstelle des eigentlichen Besitzers weiterhin verwenden.&lt;br /&gt;
&lt;br /&gt;
== &amp;quot;G 2.WA01 Mangelhafte Auswahl oder Konzeption von Web-Anwendungen&amp;quot; (Matthias) ==&lt;br /&gt;
&lt;br /&gt;
Nachdem ich mir diese Gefährdung durchgelesen hatte, fehlten mir ehrlich gesagt etwas die Worte. Nicht nur, dass hier fast jeder zweite Satz entweder falsch ist bzw. massive Fehler enthält oder ich diesen schlicht nicht verstehe, ist der ganze Text sprachlich wirklich enorm verbesserungsfähig. &lt;br /&gt;
&lt;br /&gt;
Na gut, ich konzentriere mich mal auf die fachlichen Punkte:&lt;br /&gt;
&lt;br /&gt;
; 1. Security Controls&lt;br /&gt;
Werden mal mit &amp;quot;Schutzmechanismen&amp;quot;, mal mit &amp;quot;Sicherheitskomponenten&amp;quot; und dann wieder als &amp;quot;Sicherheitsfunktionen&amp;quot; bezeichnet. Hier macht eine einheitliche Benennung sicherlich Sinn und ist weniger verwirrend.&lt;br /&gt;
&lt;br /&gt;
; 2. &amp;quot;Eine Web-Anwendung ist in der Regel ein verteiltes, komplexes System bestehend aus unterschiedlichen Komponenten (z. B. Webserver, Applikationsserver, Hintergrundsysteme)&amp;quot;&lt;br /&gt;
&lt;br /&gt;
Eine Webanwendung besteht sicher nicht aus einem Webserver- oder anderer infrastruktureller Komponenten, sondern ist Software welches diese nutzt.&lt;br /&gt;
&lt;br /&gt;
; 3. &amp;quot;Bei individuell entwickelten Web-Anwendungen sind im Allgemeinen die Frameworks, Komponenten und Schnittstellen im Rahmen der Konzeption auszuwählen und deren Einbindung und Absicherung zu betrachten....Im Gegensatz dazu ist bei der Konzeption von Web-Anwendungen auf Basis von Standardsoftware insbesondere auf die Auswahl der Software und die Konfiguration der Teilkomponenten zu achten&amp;quot;&lt;br /&gt;
&lt;br /&gt;
Wir unterscheiden im Rahmen von Webanwendungen eigentlich Free or Opensource Software (FOSS bzw. FLOSS), Standardsoftware und Individualsoftware voneinander. Wir unterscheiden nicht Frameworks von Standardsoftware. Frameworks können Teil von Standardsoftware sein, wie etwa bei SharePoint, SAP, etc, oder aber FOSS, wie etwa Spring. Die ganzen Absätze machen für mich daher keinen Sinn.&lt;br /&gt;
&lt;br /&gt;
; 4. &amp;quot;Eine Sicherheitsfunktion (z. B. Authentisierung, Autorisierung) wird nicht an einer Stelle umgesetzt und verwendet, sondern ist mehrfach in der Web- Anwendung realisiert. Wird diese Sicherheitsfunktion an den verschiedenen Stellen unterschiedlich umgesetzt, führt dies zu einem uneinheitlichen Sicherheitsniveau.&amp;quot;&lt;br /&gt;
&lt;br /&gt;
Natürlich ist die mehrfache Verwendung bestimmter Security Controls, beispielsweise von Zugriffskontrollen (Complete-Mediation) oder Validierung (Robustheit) erstrebenswert. Was der Autor hier wahrscheinlich meinte, war die Notwendigkeit diese zu Kapseln bzw. zu Externalisieren. Das bezieht sich im übrigen nicht nur auf die Controls selbst, sondern auch auf ihre Parametrisierung (etwa. über Konfigdateien / XACML).&lt;br /&gt;
&lt;br /&gt;
Wichtiger wäre in diesem Zusammenhang zudem die fehlende Berücksichtigung bestimmter Security Controls.&lt;br /&gt;
&lt;br /&gt;
; 5. &amp;quot;Auswahl von Web-Anwendungen auf Basis von Standardsoftware&amp;quot;&lt;br /&gt;
Was will der Satz sagen? Ich wähle Standardsoftware aus, aber doch keine Webanwendungen. Oder heißt das, ich kaufe eine existierende Anwendung ein (Webanwendung!=Indivudualsoftware)? &lt;br /&gt;
&lt;br /&gt;
; 6. &amp;quot;Das ausgewählte Produkt verfügt nicht über die ausreichende Sicherheitsfunktionalität, ... Daher müssen die notwendigen Schutzmechanismen nachträglich hinzugefügt werden, wodurch zusätzliche Aufwände entstehen.&amp;quot;&lt;br /&gt;
Das ist etwas sehr positiv formuliert. Tatsächlich können fehlende Security Controls in zugekaufter Software (insb. Standardsoftware) in der Realität häufig gar nicht hinzugefügt werden oder nur perimetrisch (z.B. per WAF oder Access Gateway).&lt;br /&gt;
&lt;br /&gt;
; 7. &amp;quot;Die Hintergrundsysteme werden unzureichend abgesichert und dadurch ist die Datenbank der Web-Anwendung aus dem Internet erreichbar.&amp;quot;&lt;br /&gt;
Gehören fehlende Netzwerksegmentierung bzw. Firewallregeln wirklich in diesen Kontext? Das ist doch eigentlich Grundschutz der Infrastruktur, oder?&lt;br /&gt;
&lt;br /&gt;
; 8. &amp;quot;Aufgrund schwacher Parameter in der Konfiguration des Frameworks zum Session-Management werden unsichere SessionIDs erzeugt.&amp;quot;&lt;br /&gt;
Was sind &amp;quot;schwache&amp;quot; Parameter?&lt;br /&gt;
&lt;br /&gt;
Welches Framework erlaubt unsichere SessionIDs durch eine &amp;quot;schwache&amp;quot; Konfiguration zu erzeugen?&lt;br /&gt;
&lt;br /&gt;
; 9. &amp;quot;Wird die Konfiguration des Web-Browsers durch einen Angreifer manipuliert, können die clientseitig umgesetzten&amp;quot;&lt;br /&gt;
&lt;br /&gt;
Manipuliert ein Angreifer die Konfguration seines Webbroswers, wenn er einen MITM-Proxy konfiguriert?&lt;br /&gt;
&lt;br /&gt;
Wie bereits bei den &amp;quot;Goldenen Regeln&amp;quot; angemerkt, gilt auch hier, das manche Security Controls auch clientseitig umgesetzt werden dürfen (etwa. zur Verhinderung von Dom-Based XSS).&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== &amp;quot;G 5.WA10 Fehler in der Web-Anwendungslogik&amp;quot; (Dennis) ==&lt;br /&gt;
; 1. &amp;quot;Damit kann aufgrund der Prüfreihenfolge ein hoher Ressourcenverbrauch provoziert werden, der für Denial-of-Service-Angriffe ausgenutzt werden kann.&amp;quot;&lt;br /&gt;
Meiner Meinung nach passt in diesem Kontext die Attacke DoS nicht ganz. Falls die nachfolgende Funktionalität wegen der langen Ausführungszeit der Filterkomponente übersprungen wird bzw. ein Fehler auftritt würde dies meiner Ansicht in die Thematik Anwendungslogik passen. Eine DoS-Attacke kann hingegen anhand jeder Funktion durchgeführt werden.&lt;br /&gt;
&lt;br /&gt;
== &amp;quot;G 5.WA11 Umgehung clientseitig umgesetzter Sicherheitsfunktionen von Web-Anwendungen&amp;quot; (Dennis) ==&lt;br /&gt;
; 1. &amp;quot;Ein Angreifer kann diese ausnutzen, um beispielsweise unbefugt Befehle an Hintergrundsysteme der Web-Anwendung zu übermittlen (z.B. in Form von Datenbankanfragen bei einer SQL-Injection).&amp;quot;&lt;br /&gt;
Umformulierung des Inhalts der Klammer. Hatte beim ersten Lesen für mich den Anschein, als ob ein Formular genutzt werden könnte welches den Nutzer aufforder eine SQLI einzugeben. Ich denke &amp;quot;Datenbankanfrage zwecks Ausführung einer SQL-Injection&amp;quot; würde besser passen.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== G 2.WA02 Mängel bei der Entwicklung und der Erweiterung von Web-Anwendungen (Matthias) ==&lt;br /&gt;
&lt;br /&gt;
Allgemein ist de obere Teil ok, die aufgezählten &amp;quot;Auswirkungen von fehlenden Vorgaben&amp;quot; verstehe ich jedoch nicht. Wo ist etwa der Bezug von Barrierefreiheit auf die Anwendungssicherheit?&lt;br /&gt;
&lt;br /&gt;
Mein Vorschlag, um diese Punkte etwa sinnvoll umzubauen:&lt;br /&gt;
* &amp;quot;Fehlendes Vorgehensmodell&amp;quot;: Bezug auf fehlende Berücksichtigung von Sicherheit im SDLC. Statt eines SDLCs selbst sollte hier besser auf die Notwendigkeit eines Secure Development Lifecycle (SDL) hingewiesen werden&lt;br /&gt;
* &amp;quot;Fehlende Programmierrichtlinien&amp;quot; =&amp;gt; Besser wäre hier &amp;quot;Fehlende Sicherheitsrichtlinien in der Programmierung&amp;quot; also &amp;quot;Secure Coding Guidelines&amp;quot;&lt;br /&gt;
* &amp;quot;Testfälle&amp;quot; =&amp;gt; &amp;quot;Sicherheitsrelevante Testfälle&amp;quot; (z.B. Security Unit Tests). &lt;br /&gt;
* &amp;quot;Barrierefreiheit&amp;quot;: Warum nicht an dieser Stelle die Auswirkungen von Sicherheitsfunktionen auf die Bedienbarkeit, etwa anhand von CAPTCHAS erläutern?&lt;br /&gt;
&lt;br /&gt;
== G 2.WA03 Unzureichender Schutz personenbezogener Daten bei Web-Anwendungen (Matthias) ==&lt;br /&gt;
&lt;br /&gt;
Der Titel dieses Bausteines heißt &amp;quot;Schutz personenbezogener Daten&amp;quot;, die genannten Beispiele beziehen sich bis auf den letzten jedoch auf die missbräuchliche (oder zumindest problematische) Nutzung aus Sicht des Datenschutzes. &lt;br /&gt;
&lt;br /&gt;
Die Punkt 1-3 sollten daher besser entfallen und z.B. durch die Folgenden ersetzt werden:&lt;br /&gt;
* Unsichere Einbindung von sozialen Netzwerken (Bezug nehmen auf den Like-Button bei Facebook)&lt;br /&gt;
* Unsichere Einbindung von Werbeinhalten&lt;br /&gt;
* Unsichere Übertragung und Caching&lt;br /&gt;
* Unsichere Protokollierung&lt;br /&gt;
* Ungenügender Zugriffsschutz&lt;br /&gt;
* Verstoß des Minimalprinzips bzw. der Zweckgebundenheit (welche Daten werden wirklich benötigt)&lt;br /&gt;
&lt;br /&gt;
Auch wäre es ggf. zumindest einen Verweis auf das BDSG zu machen.&lt;br /&gt;
&lt;br /&gt;
== G 4.33 Unzureichende oder fehlende Authentisierung (Matthias) ==&lt;br /&gt;
&lt;br /&gt;
; 1. Erster Absatz: &amp;quot;Wenn Authentisierungsmechanismen fehlen oder zu schlecht sind&amp;quot;&lt;br /&gt;
&lt;br /&gt;
&amp;quot;schlecht&amp;quot; sollte vlt besser durch &amp;quot;unzureichend&amp;quot; ersetzt werden.&lt;br /&gt;
&lt;br /&gt;
; 2. &amp;quot;Sicherheitslücken entstehen bei... der Benutzerauthentisierung&amp;quot;&lt;br /&gt;
&lt;br /&gt;
Hier findet nur ein Bezug auf &amp;quot;Passwörter&amp;quot; statt. Der Bezug auf die fehlerhaft implementierte oder dem Schutzbedarf ungenügende Schutzmechanismen (z.B. keine 2-Faktor-Authentisierung bei hochsensiblen Daten) fehlt. Auch auf das komplette fehlen von Authentisierungs-Controls wird hier nicht  eingegangen&lt;br /&gt;
&lt;br /&gt;
; 3. &amp;quot;Sicherheitslücken entstehen bei... der Komponentenauthentisierung&amp;quot;&lt;br /&gt;
&lt;br /&gt;
Wie bei 2., wird auch hier wieder nur auf Passwörter, nicht jedoch auf das fehlen von Controls selbst eingegangen. An dieser Stelle fehlt auch ein Hinweis auf die Notwendigkeit dedizierter Benutzeraccounts.&lt;br /&gt;
&lt;br /&gt;
; 4. &amp;quot;Sicherheitslücken entstehen bei... der Wahl des Verfahrens&amp;quot;&lt;br /&gt;
&lt;br /&gt;
Statt untauglich würde ich auch hier von &amp;quot;dem Schutzbedarf der Daten nicht angemessen&amp;quot; sprechen, eigentlich gehört das für mich aber in die obigen Punkte.&lt;br /&gt;
&lt;br /&gt;
; 5. Serverseitige Authentisierung fehlt&lt;br /&gt;
&lt;br /&gt;
Auch der Server (bzw. die Anwendung selbst) kann sich fehlerhaft oder ungenügend beim Benutzer authentsieren, etwa über DNS, SSL-Zertifikate, etc.&lt;br /&gt;
&lt;br /&gt;
== G 4.WA04 Unzureichende Validierung von Ein- und Ausgabedaten bei Web-Anwendungen (Matthias) ==&lt;br /&gt;
&lt;br /&gt;
; 1. &amp;quot;Unzureichende Validierung von Eingabedaten&amp;quot;&lt;br /&gt;
&lt;br /&gt;
Die genannten Beispiele sind genau keine korrekten Beispiele für diesen Fall, sondern betreffen die Ausgabevalidierung bzw. Enkodierung. Typische Fehler der Eingabevalidierung ist eine Manipulierbarkeit der Business Logik.&lt;br /&gt;
&lt;br /&gt;
; 2. &amp;quot;Unzureichende Validierung von Ausgabedaten&amp;quot;&lt;br /&gt;
&lt;br /&gt;
Hier geht es zentral um die Verhinderung von Interpreter Injection, also serverseitig (z.B. SQL oder LDAP Injection) oder clientseitig (XSS, JSON Injection, etc.). Statt &amp;quot;können die Ausgaben Schadcode&amp;quot; enthalten würde ich hier eher davon Sprechen, dass ein solcher Interpreteraufruf manipuliert werden kann (was dann z.B. zur Einschleusung von Schadcode genutzt werden kann).&lt;br /&gt;
&lt;br /&gt;
; 3. &amp;quot;Die Suchfunktion der Web-Anwendung verwendet die Eingaben der Benutzer ungefiltert&amp;quot;&lt;br /&gt;
&lt;br /&gt;
Mit ungenügender &amp;quot;Filterung&amp;quot; hat SQL Injection nichts zu tun,  eigentlich geht es hierbei darum, dass SQL-Anfragen dynamisch mit unvalidierten Eingebedaten zusammengebaut (konkateniert) werden.&lt;br /&gt;
&lt;br /&gt;
; 4. &amp;quot;Ungefilterter HTML-Code in Kommentar-Funktion&amp;quot;&lt;br /&gt;
&lt;br /&gt;
Hier fehlt der Bezug auf persistentes XSS, das hier sicherlich zentral ist.&lt;br /&gt;
&lt;br /&gt;
== G 4.WA05 Fehlende oder mangelhafte Fehlerbehandlung durch Web-Anwendungen (Tobias, Matthias) ==&lt;br /&gt;
; Abschnitt &amp;quot;Unsichere Fehlerbehandlung&amp;quot;&lt;br /&gt;
Die G adressiert &amp;quot;Unsichere Fehlerbehandlung&amp;quot;, der Abschnitt die &amp;quot;Unsichere Fehlerbehandlung in Sicherheitskomponenten&amp;quot;. Entsprechend sollte der fettgedruckte Teil angepasst werden.&lt;br /&gt;
&lt;br /&gt;
; &amp;quot;fehlende SQL-Parameter,&amp;quot;&lt;br /&gt;
Sollte besser &amp;quot;Fehlermeldungen bei ungültigen SQL-Abfragen&amp;quot; lauten.&lt;br /&gt;
&lt;br /&gt;
; &amp;quot;Auch scheinbar unkritische Informationen, wie die Meldung ob (..)&amp;quot;&lt;br /&gt;
Korrekt, allerdings nicht nachvollziehbar, wenn das Problem der Leser nicht schon bekannt ist. Daher erweitern nach &amp;quot; Rahmen von Brute-Force-Angriffen ausgenutzt werden.&amp;quot; mit &amp;quot;. Bei Brute-Force-Angriffen wäre in diesem Fall klar, dass der Benutzername gültig ist.&amp;quot;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[User:Mrohr|Matthias]]): Stimme dem Obigen auch zu, ausserdem:&lt;br /&gt;
&lt;br /&gt;
; Sprachlich: &amp;quot;kann dies unvorhersehbare Auswirkungen haben und den Betrieb der Web-Anwendung bis zur Unerreichbarkeit einschränken.&amp;quot;&lt;br /&gt;
&lt;br /&gt;
&amp;quot;Unerreichbarkeit&amp;quot; ist etas merkwuerdig ausgedrueckt, besser ware hier von der &amp;quot;Verfuegbarkeit&amp;quot; zu sprechen. Im Uebrigen fehlt vollstaendig der Bezug auf die Verfuegbarkeit als Primaeres Schutzziel der Informationssicherheit.&lt;br /&gt;
&lt;br /&gt;
; &amp;quot;Clientseitige Fehlerbehandlung&amp;quot;&lt;br /&gt;
Das stimmt soweit, das generelle Problem ist jedoch genereller, naehmlich die clientseitige Abbildung sicherheitsrelaventer Logik (in diesem Fall die Fehlerbehandlung)&lt;br /&gt;
&lt;br /&gt;
== G 4.WA06 Unzureichende Nachvollziehbarkeit von sicherheitsrelevanten Ereignissen bei Web-Anwendungen (Matthias) ==&lt;br /&gt;
&lt;br /&gt;
; 1. Erster Absatz: &amp;quot;Die Behebung einer Schwachstelle ist dann nicht oder nur unter erschwerten Bedingungen möglich.&amp;quot;&lt;br /&gt;
&lt;br /&gt;
Hier würde ich ergänzen: &amp;quot;...und Angriffe auf die Anwendungen können ggf. nicht erkannt oder nachvollzogen werden&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
; 2. &amp;quot;Beispiele&amp;quot;: Kommulierbarkeit&lt;br /&gt;
&lt;br /&gt;
Hier fehlt auch ein Bezug auf die Kommulierbarkeit von SIcherheitsereignissen, dass diese also auch von solchen anderer Systeme in Verbindung gesetzt werden können&lt;br /&gt;
&lt;br /&gt;
; 3. &amp;quot;Beispiele&amp;quot;: Gerichtsverwertbarkeit&lt;br /&gt;
&lt;br /&gt;
Auch die Möglichkeit zur Gerichtsverwertbarkeit (etwa durch eindeutigen Zeitstempel) und manipulationssicherer Speicherung, würde ich an dieser Stelle unbedingt erwähnen.&lt;br /&gt;
&lt;br /&gt;
== G 4.WA07 Offenlegung von Informationen bei Web-Anwendungen (Matthias) ==&lt;br /&gt;
&lt;br /&gt;
; 1. Titel&lt;br /&gt;
&lt;br /&gt;
Hier würde ggf. &amp;quot;Offenlegung vertraulicher Informationen&amp;quot; sicher besser passen als &amp;quot;Offenlegung von Informationen&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
; 2. Beispiellink&lt;br /&gt;
&lt;br /&gt;
Ein Beispiellink (mit und ohne Token) würde sicher die Verständlichkeit dieser Schwachstelle verbessern.&lt;br /&gt;
&lt;br /&gt;
; 3. Erster Absatz: &amp;quot;Wenn demzufolge Informationen unnötig offengelegt werden, steigt die Wahrscheinlichkeit eines erfolgreichen Angriffs.&amp;quot;&lt;br /&gt;
&lt;br /&gt;
Interne Informationen auszublenden ist eine Härtungsmaßnahme, deren Anzeige erhöht aber nicht zwangsläufig die Wahrscheinlichkeit eines erfolgreichen Angriffs. Ich würde diesen Satz weglassen.&lt;br /&gt;
&lt;br /&gt;
 ; 4. Fehlende Punkte&lt;br /&gt;
&lt;br /&gt;
* Ein Hinweis auf HTTP Header wäre hier sicher erwähnenswert.&lt;br /&gt;
* Weiterhin bzgl. der Anzeige von Traces und ein Verweis auf den Entsprechenden Baustein zur Fehlerbehandlung&lt;br /&gt;
&lt;br /&gt;
== G 5.WA14 Cross-Site Request Forgery (CSRF, XSRF) (Matthias) ==&lt;br /&gt;
&lt;br /&gt;
; 1. Erster Absatz: &amp;quot;Können Funktionen einer Web-Anwendung ohne weitere Überprüfung der Authentizität des HTTP-Requests (z.B. durch Tokens in versteckten Formularfeldern) genutzt werden&amp;quot;&lt;br /&gt;
&lt;br /&gt;
Statt &amp;quot;Funktionen&amp;quot; würde ich besser von &amp;quot;schreibenden Aktionen&amp;quot; sprechen, dann macht der Satz mehr Sinn.&lt;br /&gt;
&lt;br /&gt;
; 2. Dritter Absatz: &amp;quot;Im Gegensatz zu XSS (siehe ...￼ ) ist das Angriffsziel nicht die Information auf dem Client (z. B. in Cookies),&amp;quot;&lt;br /&gt;
&lt;br /&gt;
Dieser (Halb-)Satz macht keinen Sinn, auch weil es bei XSS nicht nur im Informationen auf dem Cient geht. Vorschlag: &amp;quot;ist das Angriffsziel nicht die Ausführung von Skriptcode, sondern von unbefugten, schreibenden Aktionen im Kontext des angemeldeten Benutzers.&amp;quot;&lt;br /&gt;
&lt;br /&gt;
; 3. Session Riding&lt;br /&gt;
&lt;br /&gt;
Session Riding ist quasi nur ein anderer Begriff für CSRF. Die einzige Form von CSRF die mir bekannt ist, sind Angriffe mit Standard-Passwörtern auf HTTP-Basic-Auth geschützten Ressourcen.&lt;br /&gt;
&lt;br /&gt;
Im Grunde ist Session Riding aber nur ein Synonym für CSRF. Der Absatz ist daher auch nur eine Wiederholung der obigen Beschreibung.&lt;br /&gt;
&lt;br /&gt;
; 4. Zum Beispiel: &amp;quot;Durch einen präparierten Link auf einer Webseite wird die Änderung des Zugangspasswortes des Routers eingeleitet.&amp;quot;&lt;br /&gt;
&lt;br /&gt;
Etwas ungüngstig ausgedrückt. Besser wäre: &amp;quot;wird eine Anfrage zur Änderung des Zugangspasswortes an den Router gesendet. Hierbei sendet der Browser automatisch den Session Cookie mit, worüber die Webanwendung die Authentizität der Anfrage verifiziert und die Änderung durchführt.&amp;quot;&lt;br /&gt;
&lt;br /&gt;
== G 5.WA18 Clickjacking (Matthias) ==&lt;br /&gt;
&lt;br /&gt;
Hier stellt sich mir nur die allgemeine Frage, ob Clickjacking, bzw. der Schutz davor tatsächlich einem Grundschutz zuzurechnen ist. Persönlich würde ich dies nicht tun.&lt;br /&gt;
&lt;br /&gt;
== M 2.WA02 Dokumentation der Architektur von Web-Anwendungen (Matthias) ==&lt;br /&gt;
&lt;br /&gt;
; Verantwortlich für die Umsetzung&lt;br /&gt;
Hier wäre auch die Nennung des &amp;quot;Architekten&amp;quot; sinnvoll&lt;br /&gt;
 &lt;br /&gt;
; Fehlende Bestandteile der Dokumentation:&lt;br /&gt;
* Schutzbedarf des Systems sowie der verarbeiteten Daten&lt;br /&gt;
* Schützenswerte Daten und Funktionen (Assets)&lt;br /&gt;
* Betriebliche Anforderungen an die Sicherheit bzw. eingesetzte Plattform&lt;br /&gt;
* Dokumentierte Konfigurationseinstellungen &lt;br /&gt;
* BIA (RTO, RPO)&lt;br /&gt;
* Schnittstellen&lt;br /&gt;
* Trust Boundaries&lt;br /&gt;
* Akteure (bzw. Trust Level)&lt;br /&gt;
* Sicherheitsannahmen&lt;br /&gt;
* Geltende Compliance-Anforderungen (BDSG, PCI DSS, etc.)&lt;br /&gt;
&lt;br /&gt;
; Benutzermanagement&lt;br /&gt;
&lt;br /&gt;
Wenn damit das Identity Management gemeint ist, gehört das Dokumentiert, ist aber keine Sicherheitsfunktion. Oder ist hiermit das Rollen- und Berechtigungskonzept gemeint? Grenzt sich aus meiner Sicht schwer mit dem Thema Authentisierung ab. &lt;br /&gt;
&lt;br /&gt;
; Prüffragen&lt;br /&gt;
&lt;br /&gt;
Hier fehlt etwas in Bezug auf Sicherheitsanforderungen. Beispiel: &amp;quot;Werden Sicherheitsanforderungen an den Betrieb während der Entwicklung abgestimmt und dokumentiert&amp;quot;&lt;br /&gt;
&lt;br /&gt;
== M 2.WA12 Entwicklung und Erweiterung von Anwendungen (Markus) ==&lt;br /&gt;
; &amp;quot;Es sollte darauf geachtet werden, dass Sicherheitsanforderungen&lt;br /&gt;
vollständig durch Sicherheitsmechanismen erfüllt und zur Erstellung von&lt;br /&gt;
Testfällen festgehalten werden.&amp;quot; --&amp;gt; Bessere Formulierung würde aussagen, dass die Sicherheitsanforderungen durch Testfälle verifiziert werden.&lt;br /&gt;
&amp;quot;(z. B. durch Kommentare im&lt;br /&gt;
Quelltext). Somit ist der Quelltext zu einem&amp;quot; --&amp;gt; Das ist kein empfehlenswerter Programmierstiel! Raus mit diesem Kommentar&lt;br /&gt;
;&amp;quot;Zum Schutz vor dem Verlust bereits entwickelter und verworfener&lt;br /&gt;
Lösungen sowie zu Dokumentationszwecken sollte die Historie der&lt;br /&gt;
Änderungen festgehalten werden (z. B. durch ein Revisionssystem).&amp;quot; --&amp;gt; Auch diesen Absatz können wir streichen - Kein professioneller Programmierer arbeitet ohne Versionierugssystem.&lt;br /&gt;
;&amp;quot;Bei Web-Anwendung sollten die Webseiten auf Konformität zu dem&lt;br /&gt;
verwendeten Standard (z. B. HTML-Standard) getestet werden. Dadurch&lt;br /&gt;
können unvorgesehene Seiteneffekte aufgrund einer Fehlinterpretation&lt;br /&gt;
seitens der Browser vermieden werden.&amp;quot; --&amp;gt; Könnte man noch um &amp;quot;Die Software ist in möglichst vielen Browsern zu testen&amp;quot; erweitern.&lt;br /&gt;
;Generell geht der Autor leider nicht auf die Rollen &amp;amp; Rechte Verteilung ein. Mir fehlt der Hinweis, das es eine personelle Trennung zwischen Entwicklung, Test und Betrieb geben muss.&lt;br /&gt;
;Zum Thema Wartung / Betrieb --&amp;gt; Hier wird keine Aussage getroffen bezüglich Log_Files. Dieses Thema kann kritische Auswirkungen haben, Bsp.: logging ganzer HTTP-Requests im LogLevel=Debug.&lt;br /&gt;
; &amp;quot;Produktspezifische Sicherheitsfunkionalität&amp;quot; - Dieser Absatz ist gefährlich - der Angreifer ist nicht zur Verwendung dies Zielbrowsers gezwungen. Deshalb können Browser-spez. Sicherheitsfunktionen nur als Add-ON gewertet werden.&lt;br /&gt;
; &amp;quot;Festlegung der Entwicklungsumgebung&amp;quot; - Dieser Absatz geht nicht auf die zu verwendenden Testdaten ein. Der Hinweis, dass Live-Daten / Kundendaten nichts in Test- &amp;amp; Entwicklungsumgebungen zu suchen haben fehlt!!!&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== M 2.WA24 Web-Tracking (Matthias) ==&lt;br /&gt;
&lt;br /&gt;
; Letzter Absatz: &amp;quot;Falls eine Auswertung von Nutzerdaten, insbesondere personenbezogener Daten, .. &amp;quot;&lt;br /&gt;
&lt;br /&gt;
Hier sollte denke ich besser von personenbeziehbaren Daten gesprochen Werten. Dies betrifft etwa die Zuordnung von Surfverhalten zu einer bestimmten Person. Dies sollte stets nach den Prinzipien Datensparsamkeit und Datenvermeidung, Erforderlichkeit, sowie Zweckbindung erfolgen. Ist Webtracking nicht personenbeziehbar ist dies kein Thema für den Datenschutz.&lt;br /&gt;
&lt;br /&gt;
== M 4.WA04 Authentisierung bei Web- Anwendungen (Matthias) ==&lt;br /&gt;
&lt;br /&gt;
; Vermischung von Authentisierung und Session Management &lt;br /&gt;
&lt;br /&gt;
Bei diesem Baustein findet eine ziemlich große Vermischung von Anforderung an die Authentisierung und das erst in &amp;quot;M 4.WA06 Session-Management bei Web- Anwendungen&amp;quot; behandelte Session Management statt (Beispiel: &amp;quot;Remember-Me-Funktion&amp;quot;). Beide Themen sollten sinnvollerweise getrennt voneinander zu betrachten und aufeinander zu beziehen.&lt;br /&gt;
&lt;br /&gt;
; Verwendung von Frameworks&lt;br /&gt;
&lt;br /&gt;
Die Anforderung ist schon ein wenig eingeschränkt. Besser passt hier denke ich die &amp;quot;Abbildung der Authentisierung über Standardkomponenten (Bibliotheken oder Frameworks)&amp;quot;. &lt;br /&gt;
&lt;br /&gt;
; Remember-Me-Funktion&lt;br /&gt;
&lt;br /&gt;
Siehe oben, gehört zum Session Management. Das ließt sich im übrigen so, als ob eine Webanwendung Credentials auf dem Client abhängt. &lt;br /&gt;
&lt;br /&gt;
; Grenzwerte für gescheiterte Anmeldeversuche&lt;br /&gt;
&lt;br /&gt;
Diese Empfehlung ist allgemein falsch, da sie sehr von der betrachteten Anwendung abhängt. Besser wäre hier allgemein von Mechanismen zur Verhinderung von automatisierten Angriffen zu sprechen (Anti-Automatisierung). &lt;br /&gt;
&lt;br /&gt;
Etwa umsetzbar durch&lt;br /&gt;
* Sperrung nach x Anmeldeversuchen&lt;br /&gt;
* Throttling&lt;br /&gt;
* Captchas&lt;br /&gt;
* Sicherheitsfragen&lt;br /&gt;
&lt;br /&gt;
Das allgemeine Sperren kann leicht für das gezielte Aussperren von Benutzern (User Lockout) verwendet werden. Was etwa bei Trading-Anwendungen nicht funktioniert.&lt;br /&gt;
&lt;br /&gt;
; Automatisiertes Zurücksetzen von Authentisierungsdaten&lt;br /&gt;
&lt;br /&gt;
Würde ich besser als &amp;quot;Passwort-Reset&amp;quot; bezeichnen.&lt;br /&gt;
&lt;br /&gt;
Weiterhin fehlt hier der Hinweis, dass statt ein automatisiertes Zurücksetzen, ein Mechanismus zu empfehlen ist, bei dem über ein hinterlegtes Sicherheitsmerkmal (Handy-Nummer oder E-Mail-Adresse) vom Benutzer zunächst eine Verifikation durchgeführt wird. Beispielsweise durch einen erhaltenen Link. Erst dann darf eine Änderung des Passwortes durch den Benutzer erfolgen.&lt;br /&gt;
&lt;br /&gt;
; Registrierung nicht behandelt&lt;br /&gt;
&lt;br /&gt;
Es existiert hier kein Punkt, der die sichere Implementierung von Benutzerregistrierungen behandelt.&lt;br /&gt;
&lt;br /&gt;
; Verweis auf Externalisierung fehlt.&lt;br /&gt;
&lt;br /&gt;
Statt die Authentisierung selbst durchzuführen kann eine Anwendung hierzu auf eine externe Komponente (Beispiel: SiteMinder oder Kerberos) zurückgreifen.&lt;br /&gt;
&lt;br /&gt;
; Verweis auf Behandlung von Credentials fehlt&lt;br /&gt;
&lt;br /&gt;
Auch wenn das  in &amp;quot;M 4.WA15 Schutz vertraulicher Daten bei Web- Anwendungen&amp;quot; ausführlich behandelt wird, sollte in diesem Baustein bereits auf den angemessenen Schutz von Authentisierungsdaten bei Übertragung und Speicherung hingewiesen werden.&lt;br /&gt;
&lt;br /&gt;
== M 4.WA05Umfassende Ein- und Ausgabevalidierung bei Web-Anwedungen (Markus) ==&lt;br /&gt;
; &amp;quot;Ablehnung der Daten im&lt;br /&gt;
Fehlerfall&amp;quot; --&amp;gt; Hier könnte man noch auf Tar-Pits eingehen - nur ein Vorschlag.&lt;br /&gt;
&lt;br /&gt;
== M 4.WA06Session-Management bei Web-Anwendungen (Markus, Matthias) ==&lt;br /&gt;
; &amp;quot;Übertragung der SessionID mittels GETRequest&amp;quot; --&amp;gt; Hier fehlt der Hinweis, dass die Lebensdauer dieser SessionIds kurz/kürzer sein muss, als im Falle der Speicherung im Cookie.&lt;br /&gt;
&lt;br /&gt;
([[User:Mrohr|Matthias]]) Die Anmerkung verstehe ich ehrlich gesagt ueberhaupt nicht, zumal das SM haeufig transparent zwischen Cookies und URL Rewriting wechselt. Wozu soll das gut sein? Wie soll das geschehen? Idealerweise sollte die Session ID niemals in die URL geschrieben werden, das sollte eigentlich genuegen.&lt;br /&gt;
&lt;br /&gt;
; &amp;quot;Verschlüsselte Übertragung von SessionIDs&amp;quot; --&amp;gt; Hier fehlt der Hinweis auf den Beast-Exploit. TLS Version &amp;gt; 1.0 verwenden!&lt;br /&gt;
&lt;br /&gt;
([[User:Mrohr|Matthias]]) Solange hier nicht auf eine explizite TLS Version eingegangen wird, sollte meiner grossen Ueberzeugung nach hier auch auf keine Exploits etc. eingagen werden, das gehoert an andere Stelle.&lt;br /&gt;
&lt;br /&gt;
; ([[User:Mrohr|Matthias]]) Weiterhin:&lt;br /&gt;
&lt;br /&gt;
 Es dürfen keine extern bekannten oder erratbaren Daten (z. B. IP-Adresse, Uhrzeit) in die Berechnung der SessionID einfließen.&lt;br /&gt;
&lt;br /&gt;
Die Aussage finde ich etwas problematisch, wichtiger ist, dass die Entropie ausreichend hoch ist. Haeufig werden etwa IPs von Load Balancern in die Session ID hineingeschrieben.&lt;br /&gt;
&lt;br /&gt;
 - Domain (z. B. webapp.domain.tld),&lt;br /&gt;
 - Path (z. B. /webapp/),&lt;br /&gt;
 - Secure und&lt;br /&gt;
 - HttpOnly.Beschränkte Sitzungsdauer&lt;br /&gt;
&lt;br /&gt;
Das sieht so aus, als ob es empfehlenswert ist, das Domain-Tag zu verwenden, das ist es sicherlich nicht. Was macht hier der Hinweis &amp;quot;Beschraenke Sizuungsdauer&amp;quot;?&lt;br /&gt;
&lt;br /&gt;
== M 4.WA07Fehlerbehandlung durch Web-Anwendungen (Markus) ==&lt;br /&gt;
; Konsistenter / Inkonsistener Zustand einer Webanwendung und der daraus resultierende Datenverlust: Hier fehlen mir die Punkte: DOS, Priv.Escalation, CodeExecution.&lt;br /&gt;
; Vermeidung vertraulicher Informationen in Fehlermeldungen --&amp;gt; Fehlermeldungen sollten ebenfalls eine Systeminformationen preisgeben (Softwareversion, Patchlevel, etc.)&lt;br /&gt;
; Abbruch des Vorgangs nach Auftreten eines Fehlers --&amp;gt; TarPits scheinen dem Autor umbekannt zu sein :)&lt;br /&gt;
; &amp;quot;Werden Fehler möglichst von der gleichen Komponente behandelt, in der&lt;br /&gt;
der Fehler aufgetreten ist?&amp;quot; --&amp;gt; Das &amp;quot;möglichst&amp;quot; sollten wir streichen.&lt;br /&gt;
&lt;br /&gt;
== M 4.WA08Schutz vor automatisierter Nutzung von Web-Anwendungen (Markus) ==&lt;br /&gt;
; &amp;quot;Brute-Force-&lt;br /&gt;
Angriffe (z. B. Erraten von Zugangsdaten) und Enumeration-Angriffe (z. B.&lt;br /&gt;
automatisiertes Ermitteln von gültigen Login-Namen)&amp;quot; -- die Beispiele sind identisch - besser Beispiele suchen, z.b. URL-Enumeration&lt;br /&gt;
&lt;br /&gt;
([[User:Mrohr|Matthias]]) Das sehe ich anders. Brute-Forcing bezieht auf Passwoerter und Enumeration auf Benutzernamen, etwa durchs hochzaehlen. Auch wenn ich zustimmen muss, dass die nicht ganz gluecklich gewaehlt wurden. Stann &amp;quot;Erraten von Zugangsdaten&amp;quot; wuerde ich besser von &amp;quot;Erraten von Passwoertern&amp;quot; sprechen. Oder wie gesagt gleich auch auf andere Beispiele (etwa Object ID Enumeration) beziehen.&lt;br /&gt;
&lt;br /&gt;
== M 4.WA11Sichere Konfiguration von Web-Anwendungen (Markus) ==&lt;br /&gt;
; &amp;quot;Sicherer Umgang mit TLS/SSL&amp;quot; -- Hier fehlt der Hinweis, dass TLS-1.0 gebrochen ist&lt;br /&gt;
; &amp;quot;Zeichenkodierungskonfiguration&amp;quot; -- Ein Whitelisting abhängig von der Encodierung wäre ein weiterer Vorschlag&lt;br /&gt;
; &amp;quot;Restriktive Dateisystemberechtigungen&amp;quot; -- auch wenn es ein klassiker ist - der AS sollte ebenfalls mit von einem eingeschränkten Nutzer gestartet werden und nicht als root&lt;br /&gt;
; Administration Consolen:zur Ergänzen: Wenn diese nicht benötigit, sollten derartige Applikationen nicht deployed werden, unabhängig von möglichen Zugangsbeschränkungen.&lt;br /&gt;
&lt;br /&gt;
([[User:Mrohr|Matthias]]) Sorry, meiner Meinung nach hat die Bewertung von Kryptoverfahren hier abslut nichts zu suchen.Stattdessen sollte hier auf den entsprechenden [https://www.bsi.bund.de/ContentBSI/Publikationen/TechnischeRichtlinien/tr02102/index_htm.html Empfehlung des BSI] verwiesen werden, auch wenn dieses Dokument derzeit noch etwas outdated zu sein scheint.&lt;br /&gt;
&lt;br /&gt;
== M 4.WA13Kontrolliertes Einbinden von Daten und Inhalten bei Web-Anwendungen (Markus) ==&lt;br /&gt;
; Datei-Upload: Bei einem Upload werden Dateien durchaus in TEMP-Verzeichnissen gesammelt und danach weiterverarbeitet. Diese TEMP-Verzeichnisse sind im Rahmen einer Sicherheitsanalyse zu betrachten -&amp;gt; Möglicher (unbefugter) Zugriff auf weitere Uploads&lt;br /&gt;
; Upload komprimierter Dateien / großer Dateien birgt die Gefahr von DOS Angriffen&lt;br /&gt;
; Upload von Dateien kann bei weiterem Parsing zu Speicherengpässen führen --&amp;gt; DOS-Angriffe auf Thread-Local etc.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== M 4.WA14Restriktive Herausgabe sicherheitsrelevanter Informationen bei Web-Anwendungen (Markus, Matthias) ==&lt;br /&gt;
OK - Keine Anmerkungen von mir.&lt;br /&gt;
&lt;br /&gt;
[[User:Mrohr|Matthias]]) Von mir schon;)&lt;br /&gt;
&lt;br /&gt;
; Vermeidung von Kommentaren in ausgelieferten Webseiten&lt;br /&gt;
&lt;br /&gt;
Das ist leider total falsch, wir brauchen haeufig Komentare, aus Kompatibilitaetsgruenden. So wird etwa der JavaScript-Block haeufig auskommentiert.&lt;br /&gt;
&lt;br /&gt;
Wurde stattessen besser von sicherheitsrelevanten Kommentaren sprechen und als Massnahme generell Entwicklerkommentare ueber Sprachkonstruktre (etwa JSP) durchzufuehren.&lt;br /&gt;
&lt;br /&gt;
; Löschen nicht benötigter Dateien&lt;br /&gt;
&lt;br /&gt;
Hier wurde ich ggf. Dateien von Versionisierungstools (etwa Subversion) erwaehnen, das sehen wir schon recht haeufig.&lt;br /&gt;
&lt;br /&gt;
Statt Dateien einfach nur zu loeschen (was in der Praxis haeufig nicht so einfach ist) bietet es sich zudem an, den Zugriff auf bestimmte Dateien oder Dateitypen generell zu sperren, etwa mittels ACL im Apache.&lt;br /&gt;
&lt;br /&gt;
; Gibt die Web-Anwendung ausschließlich neutrale Fehlermeldungen aus und sind diese im Quelltext identisch? {E: C}&lt;br /&gt;
&lt;br /&gt;
Persoenlich verstehe ich das nicht. Wieseo neutrale Fehlermeldung? Das macht fuer mich nur beim Login Sin. Hierzu existiert in dem Text auch keinerlei Bezug. Ich wuerde das daher besser entfernen und im Rahmen der Fehlerbehandlung diskutieren. Mindestens sollte hier jedoch besser von &amp;quot;sicherheitsunbedentlichen Fehlermeldungen&amp;quot; oder so gesprochen werden.&lt;br /&gt;
&lt;br /&gt;
; Wird der Referrer bei Verlassen der Web-Anwendung (z. B. durch einen Link auf eine externe Seite) gefiltert?&lt;br /&gt;
&lt;br /&gt;
Diesen Punkt sehe ich als sehr Fallabhengig an. Es kann fuer seiten durchaus wuenschenswert sein, dass der Referer weitergegeben wird. Der Referer sollte natuerlich keine sensiblen Informationen enthalten, was ja an anderer Stelle (etwa Session Management) vorgegeben wird bzw. gegeben werden sollte.&lt;br /&gt;
&lt;br /&gt;
== M 4.WA15Schutz vertraulicher Daten bei Web-Anwendungen (Markus) ==&lt;br /&gt;
; Sichere kryptographische Algorithmen:&lt;br /&gt;
 Hier fehlt mir eine Liste der aktuelle als sicher geltenden Verfahren.&lt;br /&gt;
; Schlüssel&lt;br /&gt;
 Das die Schlüssel bestimmten Formaten entsprechen müssen ist ok - aber das Schlüsselmanagement wird gar nicht besprochen?&lt;br /&gt;
; Schutz der Daten im Browsercache&lt;br /&gt;
 Skripte und Browserplugins können ebenfalls auf den Browsercache zugreifen - diese werden hier nicht erwähnt.&lt;br /&gt;
; Maskierung von Passwörtern &lt;br /&gt;
 Dies schützt bei der Eingabe nur vor ShoulderSurfing nicht vor Skripten oder Plugins die diese an andere Server posten.&lt;br /&gt;
; Sicherung von Zugangsdaten:&lt;br /&gt;
 Zugangsdaten in einer Datei abzulegen - wenn auch ausserhalb des WebRoots ist keine gute Idee.&lt;br /&gt;
; Schutz von Quelltexten:&lt;br /&gt;
 Hier würde ich property files mit aufnehmen. der hinweis auf web-inf/classes fehlt - warum?&lt;br /&gt;
 Bei include-befehlen sind die pfadangaben zu überdenken.&lt;br /&gt;
&lt;br /&gt;
== M 4.WA16Zugriffskontrolle bei Web-Anwendungen (Markus) ==&lt;br /&gt;
; Zugriffskontrolle via Frameworks:&lt;br /&gt;
 Dieser Punkt (Frameworks) wird nur in einem Satz erwähnt. Es werden keine Bespiele gegeben - Das ist zu wenig.&lt;br /&gt;
 Es müssen alle Zugriffe geschützt werden. Eine Protokollierung aller Zugriffe mit den nötigen Informationen ist ebenfalls empfehlenswert.&lt;br /&gt;
; Datei Upload:&lt;br /&gt;
 Die Gefahr eines DOS wird hier nicht erwähnt.&lt;br /&gt;
&lt;br /&gt;
== M 4.WA19Verhinderung von Cross-Site Request Forgery (CSRF, XSRF) (Markus, Matthias) ==&lt;br /&gt;
; Verantwortliche: &lt;br /&gt;
 Entwickler und Admins!&lt;br /&gt;
([[User:Mrohr|Matthias]]) Korrekt, wobei auch in der Reihenfolge&lt;br /&gt;
&lt;br /&gt;
; Anti-CSRF-Token in hidden fields:&lt;br /&gt;
 Das ist keine gute Idee. Ich würde das streichen!&lt;br /&gt;
&lt;br /&gt;
([[User:Mrohr|Matthias]]) Watt? Anti-CSRF-Tokens in Hidden Fields sind die Standard-Massnahme. Wie denn sonst? Bitte nicht streichen!!! &lt;br /&gt;
&lt;br /&gt;
([[User:Mrohr|Matthias]]) Die Technik bei der die Session ID als Anti-CSRF-Token verwendet wird, wird als Double-Cookie Submit bezeichnet, das sollte hier referenziert werden.&lt;br /&gt;
&lt;br /&gt;
; Umgehung von Schutzmechanismen:&lt;br /&gt;
 Man in the middle hat keinen direkten Bezug zu CSRF! Das würde ich streichen.&lt;br /&gt;
([[User:Mrohr|Matthias]]) Der Hinweis ist korrekt. Wovon der Autor hier spricht ist Session Replay nicht CSRF.&lt;br /&gt;
&lt;br /&gt;
; Frameworks:&lt;br /&gt;
 Gute Idee - aber es gibt auch Features in den ApplicationServern die CSRF unterbinden - warum wird das nicht besprochen?&lt;br /&gt;
&lt;br /&gt;
([[User:Mrohr|Matthias]]) Sehe ich persoenlich nicht so, da CSRF primaer ein Applikations-Fehler ist, und auch in der Applikation und nicht im Environment (AppServer) geloest werden sollte. Auch wenn das manchmal ggf. die einzig machbare Loesung darstellt.&lt;br /&gt;
&lt;br /&gt;
([[User:Mrohr|Matthias]]) Was generell fehlt, ist ein Hinweis darauf, dass schreibende Requests generell per HTTP Post abgewickelt werden sollten, da HTTP Get keine &amp;quot;Safe Method&amp;quot;  (siehe HTTP 1.1, RFC 2616) ist.&lt;br /&gt;
&lt;br /&gt;
== M 4.WA20Sicherer Entwurf der Logik von Web-Anwendungen (Markus) ==&lt;br /&gt;
; Rollbacks:&lt;br /&gt;
 Tritt ein Fehler auf muss die Applikation einen konsistenten Datenstand zurück lassen. Das wird hier nicht erwähnt.&lt;br /&gt;
; RaceConditions:&lt;br /&gt;
 Fehler in der Geschäftslogik können auch durch zwei gleichzeitige Sessions auf einer Webapplikation auftreten - das wird hier nicht besprochen.&lt;br /&gt;
&lt;br /&gt;
([[User:Mrohr|Matthias]]) Ehrlich gesagt kann ich nicht ganz nachvollziehen, was der Sichere Entwurf der Logik von Web-Anwendungen mit dem Verzicht auf aktive Inhalte zu tun hat. Unabhaengig davon sollte man solche unsinnigen Aussagen im Jahre 2012 nicht mehr treffen, damit macht man sicht nur laecherlich.&lt;br /&gt;
&lt;br /&gt;
Nichts desto trotz, was hier als &amp;quot;echte&amp;quot; Massnahmen erwaehnt werden sollte sind:&lt;br /&gt;
* Verhinderung von Race Conditions, aber nicht nur durch Concurrent Sessions sondern auch durch Singletons (TOCTOU)&lt;br /&gt;
* Haertung von Workflows, etwa durch die Verwendung von State Machines&lt;br /&gt;
* Fail Securely (bzw. Verweis)&lt;br /&gt;
* Serverseitige Abbildung der Anwendungslogik, zumindest wenn diese sicherheitsrelevant sit&lt;br /&gt;
&lt;br /&gt;
== M 4.WA22Verhinderung der Blockade von Ressourcen (DoS) bei Web-Anwendungen (Markus, Matthias) ==&lt;br /&gt;
; Datenspeicher:&lt;br /&gt;
 Neben dem Datenspeicher sollte auch der RAM-Verbrauch pro Thread der Applikation limitiert werden.&lt;br /&gt;
([[User:Mrohr|Matthias]]) Stimmt, ich wuerde hier sogar allgemein von Ressourcenverbrauch am Beispiel RAM und Datenspeicher, sprechen&lt;br /&gt;
&lt;br /&gt;
; Voraggregation von Daten / Caching&lt;br /&gt;
 Dieser Punkt fehlt: Stark ressourcen belastende Anfragen können auch in Lastarmen Zeiten vorberechnet werden.&lt;br /&gt;
([[User:Mrohr|Matthias]]) Stimmt, koennte noch als Anmerkung bei &amp;quot;Cachen von Anfragen&amp;quot; hinzugefuegt werden&lt;br /&gt;
&lt;br /&gt;
([[User:Mrohr|Matthias]]) Noch drei Anmerkugnen&lt;br /&gt;
&lt;br /&gt;
; Prueffrage: &amp;quot;Wird ein möglicher Überlauf von Protokolldaten... verhindert&amp;quot;&lt;br /&gt;
&lt;br /&gt;
Ist eine etwas eingeschrankte Sicht. Wurde hier eher von Ueberlauf von Speicherplaz zu Beispiel im Rahmen der Protokollierung sprechen&lt;br /&gt;
&lt;br /&gt;
; Durchfuehrung von Lasttests zur Identifikation ressourcenintensiver Operationen&lt;br /&gt;
&lt;br /&gt;
Der Hinweis waere ggf. erwahnenswert&lt;br /&gt;
&lt;br /&gt;
; Hinweis auf nicht-angemeldeten Bereich&lt;br /&gt;
&lt;br /&gt;
Das Risiko durch rechenintensive Operationen durch einen DoS betroffen zu sein ist natuerlich fuer gewoehlich um so groesser, wenn diese im anonymen Bereich angeboten wird. Der Hinweis ware ggf. ebenfalls hilfreich.&lt;br /&gt;
&lt;br /&gt;
== M 4.WA25Verhinderung von Clickjacking (Markus) ==&lt;br /&gt;
Ok - das passt soweit.&lt;br /&gt;
&lt;br /&gt;
([[User:Mrohr|Matthias]]) Stimmt, auch wenn ich &amp;quot;Angreifer&amp;quot; in dem Beispiel eher als &amp;quot;Webseitenbetreiber&amp;quot; beschreiebn wuerde, da er nicht wirklich aktiv einen Angriff durchfuehrt, oder? Bitte nochmal ueber meinen Hinweis aus G 5.WA18 nachdenken: Ist Clickjacking-Schutz tatsaechlich Grundschutz? Ich bin mir da selber nicht so wirklich sicher.&lt;br /&gt;
&lt;br /&gt;
== M 5.WA21Sichere Anbindung von Hintergrundsystemen an Web-Anwendungen (Markus) ==&lt;br /&gt;
; Verantwortliche:&lt;br /&gt;
 Architekten fehlen. Entwickler müssen die Views umsetzen und die Datasource entsprechend einbinden - die fehlen hier ebenfalls.&lt;br /&gt;
; DirectorySystem Beispiel:&lt;br /&gt;
 Das DirectorySystem wird in dem angegeben Beispiel zum Single Point of Failure - das wird verschwiegen.&lt;br /&gt;
; Firewalls:&lt;br /&gt;
 Das sind fachlich-blinde Systeme. Was ist mit WAFs / IDS / IPS etc.?&lt;br /&gt;
([[User:Mrohr|Matthias]]) Stimmt, das hat in diesem Baustein nichts zu suchen&lt;br /&gt;
&lt;br /&gt;
([[User:Mrohr|Matthias]]) Noch zwei weitere Punkte von mir&lt;br /&gt;
&lt;br /&gt;
; Typische Hintergrundsysteme&lt;br /&gt;
Hier fehlt irgendwie &amp;quot;Middleware&amp;quot;, die ist denke ich nicht immer Legacy&lt;br /&gt;
&lt;br /&gt;
== M 5.WA23Systemarchitektur einer Web-Anwendung (Markus) ==&lt;br /&gt;
; Verantwortliche:&lt;br /&gt;
Auch hier fehlend wieder die Architekten. &lt;br /&gt;
; Virtualisierung:&lt;br /&gt;
Virtualisierung bietet weitere Angriffsvektoren (z.B.: Hypervisor) die eine &amp;quot;Blech&amp;quot;Farm nicht bietet.&lt;/div&gt;</summary>
		<author><name>Mrohr</name></author>	</entry>

	<entry>
		<id>https://wiki.owasp.org/index.php?title=Talk:OWASP_Review_BSI_IT-Grundschutz_Baustein_Webanwendungen&amp;diff=130143</id>
		<title>Talk:OWASP Review BSI IT-Grundschutz Baustein Webanwendungen</title>
		<link rel="alternate" type="text/html" href="https://wiki.owasp.org/index.php?title=Talk:OWASP_Review_BSI_IT-Grundschutz_Baustein_Webanwendungen&amp;diff=130143"/>
				<updated>2012-05-21T08:14:52Z</updated>
		
		<summary type="html">&lt;p&gt;Mrohr: /* M 4.WA22Verhinderung der Blockade von Ressourcen (DoS) bei Web-Anwendungen (Markus, Matthias) */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Since it's about a review of a document in German, all the discussions will be done in German :-)&lt;br /&gt;
&lt;br /&gt;
Diskussionen rund um den Review des &amp;quot;IT-Grundschutzbausteins Webanwendungen&amp;quot; finden hier statt, sinnvollerweise auf Deutsch :-)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Vorschlag für Kriterien, die an unser Review angelegt werden sollten (.kai) ==&lt;br /&gt;
&lt;br /&gt;
* Der Baustein soll alle wichtigen Themen der Entwicklung sicherer&lt;br /&gt;
Webanwendungen enthalten.&lt;br /&gt;
&lt;br /&gt;
* Der Baustein soll die verschiedenen Phasen der Software-Entwicklung&lt;br /&gt;
vollständig abdecken.&lt;br /&gt;
&lt;br /&gt;
* Der Baustein soll zwischen verbindlichen, prüfbaren Vorgaben und&lt;br /&gt;
unverbindlichen Empfehlungen sprachlich sauber unterscheiden (hier&lt;br /&gt;
spielt mein Auditorenblick eine Rolle). Vor allem soll der Baustein&lt;br /&gt;
verbindliche Anforderungen auch tatsächlich stellen. Alle&lt;br /&gt;
verbindlichen Anforderungen müssen unabhängig von der jeweiligen&lt;br /&gt;
Umgebung auch umsetzbar sein, d.h. sie müssen entsprechend generisch&lt;br /&gt;
sein.&lt;br /&gt;
&lt;br /&gt;
* Die Maßnahmen sollen nur in (begründbaren) Ausnahmen zu Empfehlungen&lt;br /&gt;
von OWASP im Widerspruch stehen.&lt;br /&gt;
&lt;br /&gt;
* Die Maßnahmen sollen verständlich und anwendbar sein.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== &amp;quot;Hilfsmittel&amp;quot; (Markus) ==&lt;br /&gt;
Ich würde das Script zur Vermeidung von Clickjacking wrappen und nicht als losen Skript-block in den Text einbinden - einfach schlechter Programmierstiel diese losen Blöcke.&lt;br /&gt;
Der Zugriff auf das Body-Element mit byTagName-Array[0] ist auch nicht wirklich gut. Ich halte Zugriffe über das DOM (klassisch), bei ID bzw. XPATH für besser. &lt;br /&gt;
&lt;br /&gt;
SQL-Injection Characters:&lt;br /&gt;
die Pipe fehlt hier zur Textkonatenierung&lt;br /&gt;
+ / - haben auch eine Bedeutung bei JOINs.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== &amp;quot;Goldene Regeln&amp;quot; (Matthias) ==&lt;br /&gt;
&lt;br /&gt;
Hier meine Anmerkungen zu diesem Dokument:&lt;br /&gt;
&lt;br /&gt;
; 1. Für mich fehlende Punkte&lt;br /&gt;
* Korrektur der Ursache (Root Cause) von Schwachstellen statt  Verhinderung deren Ausnutzung&lt;br /&gt;
* Bezug auf Minimierung der Angriffsfläche und Least-Privilege-Prinzip&lt;br /&gt;
* Bezug auf Defense-in-Depth-Prinzip&lt;br /&gt;
* Verwendung von getesteten Security APIs (z.B. OWASP ESAPI) statt selbstentwickelter Funktionen&lt;br /&gt;
* Bezug auf Externalisierung von Sicherheitsfunktionen, sowie deklerative vor programmatischer Sicherheit.&lt;br /&gt;
&lt;br /&gt;
; 2. Begriff &amp;quot;Web-Anwendung&amp;quot;&lt;br /&gt;
Würde ich generell durch &amp;quot;Webanwendung&amp;quot; ersetzen.&lt;br /&gt;
&lt;br /&gt;
; 3. Einleitung (&amp;quot;Web-Anwendungen stellen Funktionalität zur Verfügung, ...&amp;quot;)&lt;br /&gt;
&lt;br /&gt;
Wozu dient dieser Satz?&lt;br /&gt;
&lt;br /&gt;
; 4. &amp;quot;Die Architektur der Web-Anwendung ist im Sicherheitskonzept zu  dokumentieren.....&amp;quot; &lt;br /&gt;
&lt;br /&gt;
Ich fände es sinnvoller, wenn hier von der &amp;quot;Sicherheitsarchitektur&amp;quot; gesprochen wird, welche etwa neben den sicherheitsrelevanten Datenflüssen, sensible Komponenten, Entry Points, Akteure architekturelle Security Controls wie Authentisierung, Kryptographie und natürlich die Trust Boundaries beinhaltet.&lt;br /&gt;
&lt;br /&gt;
; 5. &amp;quot;Bei Web-Anwendungen handelt es sich häufig um spezielle Eigenentwicklungen....&amp;quot;&lt;br /&gt;
&lt;br /&gt;
Erstens würde ich hier den geläufigen Begriff &amp;quot;Individualsoftware&amp;quot; verwenden. Zweitens würde ich statt bestimmte SDLC-Phasen vorzugeben (die Begriffe &amp;quot;Softwareverteilung&amp;quot; und &amp;quot;Integration&amp;quot; sind mir bei Webanwendungen bisher noch nicht so häufig untergekommen), besser von der Notwendigkeit sprechen, Sicherheit in allen Entwicklungsphasen zu berücksichtigen, also eines SDLs.&lt;br /&gt;
&lt;br /&gt;
; 6. &amp;quot;Alle Ein- und Ausgaben der Web-Anwendung müssen in eine normalisierte Form überführt werden....&amp;quot;&lt;br /&gt;
&lt;br /&gt;
Normalisierung ist für mich nicht gleich Kanonsierung, auch wenn beide Begriffe häufig als synonym verwendet werden.  Der Unterschied wird in der [http://owasp-esapi-java.googlecode.com/svn/trunk_doc/2.0-rc4/org/owasp/esapi/Encoder.html API-Beschreibung der ESAPI] erklärt. Die Normalisierungs-Funktion ist allerdings schon vor einiger Zeit aus der ESAPI [https://lists.owasp.org/pipermail/esapi-dev/2010-January/000266.html rausgeflogen]. Die generelle Kanonisierung von Ausgaben halte ich dazu für nicht sinnvoll.&lt;br /&gt;
&lt;br /&gt;
Zweitens, finde ich den weiteren Text zwar grundsätzlich formal korrekt, aber so allgemein, dass dieser glaube ich niemandem so richtig etwas bringt.  &lt;br /&gt;
&lt;br /&gt;
Besser fände ich hier Ein- von Ausgabevalidierung grundsätzlich voneinander abzugrenzen. Etwa was ich per Eingabevalidierung (Längenprüfung, Casting, etc. per Whitelisting) und was mit Ausgebavalidierung (Enkodierung, Escaping, Parametrisierung) machen muss und kann.&lt;br /&gt;
&lt;br /&gt;
Eingabedaten können technisch zudem auch Werte eingelesener Property-Dateien sein. Muss ich die auch validieren? Ist das dann noch Grundschutz? &lt;br /&gt;
&lt;br /&gt;
; 7. &amp;quot;Für den Zugriff auf sensitive Funktionen oder Informationen muss die Web-Anwendung eine wirksame Authentisierung und Sitzungsverwaltung unterstützen. Die Eigenschaften der Sitzungs-ID müssen so gewählt werden, dass die Sitzung ausreichend geschützt ist. ....&amp;quot;&lt;br /&gt;
&lt;br /&gt;
Besser fände ich &amp;quot;eine Authentisierung, die über eine dem Schutzbedarf der Anwendung angemessene Stärke verfügt.&amp;quot; &lt;br /&gt;
&lt;br /&gt;
Eigentlich geht es doch mehr um den Schutz der Sitzungs-ID, da diese gewöhnlich im Verlauf einer Sitzung den Client authentisiert. Oder den Schutz des Zugriffs auf eine Sitzung. &lt;br /&gt;
&lt;br /&gt;
Zudem fehlt hier meiner Meinung nach der Hinweis auf die bevorzugte Verwendung getesteter Standardkomponenten.&lt;br /&gt;
&lt;br /&gt;
; 8. &amp;quot;Die Web-Anwendung sollte die zu übermittelnden Daten schützen.&amp;quot;&lt;br /&gt;
&lt;br /&gt;
Dies würde ich nur auf sensible Daten beziehen. Zusätzlich zu HTTPS würde ich hier schreiben, dass sensible Daten generell nicht in der URL übertragen werden dürfen.&lt;br /&gt;
&lt;br /&gt;
; 9. &amp;quot;Die Preisgabe interner Informationen (z.B. Kommentare, Fehlermeldungen)&amp;quot;&lt;br /&gt;
&lt;br /&gt;
Hier würde ich eher schreiben &amp;quot;(IN Kommentaren, Fehlermeldungen, HTTP Headern, etc.)&amp;quot;&lt;br /&gt;
&lt;br /&gt;
; 10. &amp;quot;Fehler müssen so behandelt werden, ... müssen Fehler bei der Autorisierung zu einer Verweigerung beim Zugriff auf die angeforderte Ressource führen.&amp;quot;&lt;br /&gt;
&lt;br /&gt;
Sprachlich: &amp;quot;Die Webanwendung muss sich stets in einem sicheren Zustand befinden. Beispielsweise müssen Fehler bei der Autorisierung zu einer Verweigerung des Zugriffs führen (Default-Deny-Strategie).&amp;quot;&lt;br /&gt;
&lt;br /&gt;
; 11. &amp;quot;Die Logging-Funktionen der Web-Anwendung müssen aufgetretene Ereignisse derart protokollieren, dass sicherheitskritische Vorfälle nachvollzogen werden können.&amp;quot;&lt;br /&gt;
&lt;br /&gt;
Hier würde hier eher von &amp;quot;allen sicherheitsrelevanten Ereignissen&amp;quot; sprechen.&lt;br /&gt;
&lt;br /&gt;
Weiterhin sollten insbesondere beim Logging der Datenschutz berücksichtigt werden, personenbezogene Daten also nach Möglichkeit nicht oder nur anonymisiert in technischen Logdateien protokolliert werden.&lt;br /&gt;
&lt;br /&gt;
; 12. &amp;quot;Alle Sicherheitsmechanismen (z.B. Authentisierung und Zugriffskontrolle) sind serverseitig zu implementieren und können nicht durch clientseitige Mechanismen ersetzt werden.&amp;quot;&lt;br /&gt;
&lt;br /&gt;
Die Aussage ist so nicht korrekt. Darüber hatten wir bereits bei der ASVS mehrfach diskutiert. &lt;br /&gt;
&lt;br /&gt;
Überall dort wo der Client angegriffen wird, also etwa bei RIAs (Stichwort DOM-Based XSS) müssen wir Security Controls clientseitig implementieren. Es gibt mittlerweile deshalb auch eine Portierung der ESAPI auf Javascript. Überall dort wo der Server oder Hintegrundsysteme angegriffen werden, ist die Aussage aber natürlich zutreffend.&lt;br /&gt;
&lt;br /&gt;
== &amp;quot;Gefährdungen&amp;quot; (Markus, Dennis, .... &amp;lt;Dein Name&amp;gt;) ==&lt;br /&gt;
; Generell:&lt;br /&gt;
Reference auf RFCs fehlen.&lt;br /&gt;
&lt;br /&gt;
==B.5.XX Web-Anwendungen ==&lt;br /&gt;
; 1. Erster Absatz - Letzter Satz: --Wieso werden hier nur HTML/XML Doks und Oberflächen angesprochen? Was ist der Unterschied zwischen einem HTML-Dok und einer Oberfläche? Was ist mit  Flash, etc.? Was ist mit WebSockets?&lt;br /&gt;
; 2. Stichpunkt &amp;quot;Protokollierung&amp;quot;: Sicherheits relevant ist ein sehr dehnbarer Begriff - Eine bessere Formulierung könnte sein: Zur Rekonstruktion von Nutzerhandlungen nötige Ereignisse (positve &amp;amp; negative) müssen protokolliert werden . . . &lt;br /&gt;
; 3. Absatz: &amp;quot;Abgrenzung des Bausteins&amp;quot;: &amp;quot;Die spez. Sicherheitsanforderungen an Web-Services werden in diesem Baustein nicht betrachtet&amp;quot; --&amp;gt; Wie so nicht? Was ist das Backend von einer Rest / AJAX-basierenden Webanwendung denn anderes als ein Web-Service? Diesen Satz würde ich entfernen.&lt;br /&gt;
; 4.Vorsätzliche Handlungen -&amp;gt; Web-Spoofing (G.5.87) -- Missverständliche Bezeichnung / Nomenklatur&lt;br /&gt;
; 5. Seite 4 : erste Zeile &amp;quot;Umsetzung&amp;quot;: &amp;quot;dafür umzusetztende Komponenten müssen die Webanwendung schützen...&amp;quot; - Hier fehlt mir der Hinweis, dass dieser Schutz verifiziert werden muss.&lt;br /&gt;
; 6 Seite 5: &amp;quot;Umsetzung&amp;quot; - Wir haben CSRF, D(D)os und SQL-Injection aber wo ist XSS?&lt;br /&gt;
; 7 Seite 7: &amp;quot;Die Sicherheitsfunktion wird ausschließlich clientseitig...&amp;quot; --&amp;gt; Warum muss der Angreifer überhaupt einen Browser umkonfigurieren? Was ist mit Proxies, Scripts, etc.? Ich würde das reduzieren darauf, dass rein Webbrowser-basierende Schutzfunktionen einfach umgangen werden können.&lt;br /&gt;
; 8 Seite 8: Die angesprochenen Punkte hinterlassen den Eindruck nicht vollständig zu sein: Mir fehlen Punkte wie &amp;quot;Outsourcing&amp;quot;, &amp;quot;KnowHow der Entwickler&amp;quot;, Tooling, Framework-Auswahl, etc.&lt;br /&gt;
; 9 Seite 9: Eigentlich möchte der Autor hier über Datenschutz sprechen. Abgesehen von den letzten drei Zeilen geht es aber nur um &amp;quot;User tracking&amp;quot; - Wo ist der Rest der Datenschutzproblematik? Warum der Fokuss auf Tracking? Mir ist das zu einseitig.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
tbd.&lt;br /&gt;
&lt;br /&gt;
; Wortwahl:&lt;br /&gt;
Ich stosse innerhalb der Texte immer wieder an die Worten '''Hintergrundsystem''' und '''Sicherheitskontext'''.&lt;br /&gt;
'''Hintergrundsystem:''' besseres Synonym?&lt;br /&gt;
'''Sicherheitskontext:''' nur weil es in den Texten um Sicherheit geht muss nicht an jeder Stelle immer wieder das Wort _Sicherheits_kontext eingebaut werden.&lt;br /&gt;
Bsp: &amp;quot;Erlangt ein Angreifer Kenntnis von einer solchen gültigen, aber nicht mehr genutzten SessionID, so kann er die Web-Anwendung im Sicherheitskontext des nicht abgemeldeten Benutzers weiter verwenden.&amp;quot; (G 5,WA12 Unzureichendes Session-Management von Web-Anwendungen)&lt;br /&gt;
Verbesserungsansansatz: ... so kann er die Web-Anwendung anstelle des eigentlichen Besitzers weiterhin verwenden.&lt;br /&gt;
&lt;br /&gt;
== &amp;quot;G 2.WA01 Mangelhafte Auswahl oder Konzeption von Web-Anwendungen&amp;quot; (Matthias) ==&lt;br /&gt;
&lt;br /&gt;
Nachdem ich mir diese Gefährdung durchgelesen hatte, fehlten mir ehrlich gesagt etwas die Worte. Nicht nur, dass hier fast jeder zweite Satz entweder falsch ist bzw. massive Fehler enthält oder ich diesen schlicht nicht verstehe, ist der ganze Text sprachlich wirklich enorm verbesserungsfähig. &lt;br /&gt;
&lt;br /&gt;
Na gut, ich konzentriere mich mal auf die fachlichen Punkte:&lt;br /&gt;
&lt;br /&gt;
; 1. Security Controls&lt;br /&gt;
Werden mal mit &amp;quot;Schutzmechanismen&amp;quot;, mal mit &amp;quot;Sicherheitskomponenten&amp;quot; und dann wieder als &amp;quot;Sicherheitsfunktionen&amp;quot; bezeichnet. Hier macht eine einheitliche Benennung sicherlich Sinn und ist weniger verwirrend.&lt;br /&gt;
&lt;br /&gt;
; 2. &amp;quot;Eine Web-Anwendung ist in der Regel ein verteiltes, komplexes System bestehend aus unterschiedlichen Komponenten (z. B. Webserver, Applikationsserver, Hintergrundsysteme)&amp;quot;&lt;br /&gt;
&lt;br /&gt;
Eine Webanwendung besteht sicher nicht aus einem Webserver- oder anderer infrastruktureller Komponenten, sondern ist Software welches diese nutzt.&lt;br /&gt;
&lt;br /&gt;
; 3. &amp;quot;Bei individuell entwickelten Web-Anwendungen sind im Allgemeinen die Frameworks, Komponenten und Schnittstellen im Rahmen der Konzeption auszuwählen und deren Einbindung und Absicherung zu betrachten....Im Gegensatz dazu ist bei der Konzeption von Web-Anwendungen auf Basis von Standardsoftware insbesondere auf die Auswahl der Software und die Konfiguration der Teilkomponenten zu achten&amp;quot;&lt;br /&gt;
&lt;br /&gt;
Wir unterscheiden im Rahmen von Webanwendungen eigentlich Free or Opensource Software (FOSS bzw. FLOSS), Standardsoftware und Individualsoftware voneinander. Wir unterscheiden nicht Frameworks von Standardsoftware. Frameworks können Teil von Standardsoftware sein, wie etwa bei SharePoint, SAP, etc, oder aber FOSS, wie etwa Spring. Die ganzen Absätze machen für mich daher keinen Sinn.&lt;br /&gt;
&lt;br /&gt;
; 4. &amp;quot;Eine Sicherheitsfunktion (z. B. Authentisierung, Autorisierung) wird nicht an einer Stelle umgesetzt und verwendet, sondern ist mehrfach in der Web- Anwendung realisiert. Wird diese Sicherheitsfunktion an den verschiedenen Stellen unterschiedlich umgesetzt, führt dies zu einem uneinheitlichen Sicherheitsniveau.&amp;quot;&lt;br /&gt;
&lt;br /&gt;
Natürlich ist die mehrfache Verwendung bestimmter Security Controls, beispielsweise von Zugriffskontrollen (Complete-Mediation) oder Validierung (Robustheit) erstrebenswert. Was der Autor hier wahrscheinlich meinte, war die Notwendigkeit diese zu Kapseln bzw. zu Externalisieren. Das bezieht sich im übrigen nicht nur auf die Controls selbst, sondern auch auf ihre Parametrisierung (etwa. über Konfigdateien / XACML).&lt;br /&gt;
&lt;br /&gt;
Wichtiger wäre in diesem Zusammenhang zudem die fehlende Berücksichtigung bestimmter Security Controls.&lt;br /&gt;
&lt;br /&gt;
; 5. &amp;quot;Auswahl von Web-Anwendungen auf Basis von Standardsoftware&amp;quot;&lt;br /&gt;
Was will der Satz sagen? Ich wähle Standardsoftware aus, aber doch keine Webanwendungen. Oder heißt das, ich kaufe eine existierende Anwendung ein (Webanwendung!=Indivudualsoftware)? &lt;br /&gt;
&lt;br /&gt;
; 6. &amp;quot;Das ausgewählte Produkt verfügt nicht über die ausreichende Sicherheitsfunktionalität, ... Daher müssen die notwendigen Schutzmechanismen nachträglich hinzugefügt werden, wodurch zusätzliche Aufwände entstehen.&amp;quot;&lt;br /&gt;
Das ist etwas sehr positiv formuliert. Tatsächlich können fehlende Security Controls in zugekaufter Software (insb. Standardsoftware) in der Realität häufig gar nicht hinzugefügt werden oder nur perimetrisch (z.B. per WAF oder Access Gateway).&lt;br /&gt;
&lt;br /&gt;
; 7. &amp;quot;Die Hintergrundsysteme werden unzureichend abgesichert und dadurch ist die Datenbank der Web-Anwendung aus dem Internet erreichbar.&amp;quot;&lt;br /&gt;
Gehören fehlende Netzwerksegmentierung bzw. Firewallregeln wirklich in diesen Kontext? Das ist doch eigentlich Grundschutz der Infrastruktur, oder?&lt;br /&gt;
&lt;br /&gt;
; 8. &amp;quot;Aufgrund schwacher Parameter in der Konfiguration des Frameworks zum Session-Management werden unsichere SessionIDs erzeugt.&amp;quot;&lt;br /&gt;
Was sind &amp;quot;schwache&amp;quot; Parameter?&lt;br /&gt;
&lt;br /&gt;
Welches Framework erlaubt unsichere SessionIDs durch eine &amp;quot;schwache&amp;quot; Konfiguration zu erzeugen?&lt;br /&gt;
&lt;br /&gt;
; 9. &amp;quot;Wird die Konfiguration des Web-Browsers durch einen Angreifer manipuliert, können die clientseitig umgesetzten&amp;quot;&lt;br /&gt;
&lt;br /&gt;
Manipuliert ein Angreifer die Konfguration seines Webbroswers, wenn er einen MITM-Proxy konfiguriert?&lt;br /&gt;
&lt;br /&gt;
Wie bereits bei den &amp;quot;Goldenen Regeln&amp;quot; angemerkt, gilt auch hier, das manche Security Controls auch clientseitig umgesetzt werden dürfen (etwa. zur Verhinderung von Dom-Based XSS).&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== &amp;quot;G 5.WA10 Fehler in der Web-Anwendungslogik&amp;quot; (Dennis) ==&lt;br /&gt;
; 1. &amp;quot;Damit kann aufgrund der Prüfreihenfolge ein hoher Ressourcenverbrauch provoziert werden, der für Denial-of-Service-Angriffe ausgenutzt werden kann.&amp;quot;&lt;br /&gt;
Meiner Meinung nach passt in diesem Kontext die Attacke DoS nicht ganz. Falls die nachfolgende Funktionalität wegen der langen Ausführungszeit der Filterkomponente übersprungen wird bzw. ein Fehler auftritt würde dies meiner Ansicht in die Thematik Anwendungslogik passen. Eine DoS-Attacke kann hingegen anhand jeder Funktion durchgeführt werden.&lt;br /&gt;
&lt;br /&gt;
== &amp;quot;G 5.WA11 Umgehung clientseitig umgesetzter Sicherheitsfunktionen von Web-Anwendungen&amp;quot; (Dennis) ==&lt;br /&gt;
; 1. &amp;quot;Ein Angreifer kann diese ausnutzen, um beispielsweise unbefugt Befehle an Hintergrundsysteme der Web-Anwendung zu übermittlen (z.B. in Form von Datenbankanfragen bei einer SQL-Injection).&amp;quot;&lt;br /&gt;
Umformulierung des Inhalts der Klammer. Hatte beim ersten Lesen für mich den Anschein, als ob ein Formular genutzt werden könnte welches den Nutzer aufforder eine SQLI einzugeben. Ich denke &amp;quot;Datenbankanfrage zwecks Ausführung einer SQL-Injection&amp;quot; würde besser passen.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== G 2.WA02 Mängel bei der Entwicklung und der Erweiterung von Web-Anwendungen (Matthias) ==&lt;br /&gt;
&lt;br /&gt;
Allgemein ist de obere Teil ok, die aufgezählten &amp;quot;Auswirkungen von fehlenden Vorgaben&amp;quot; verstehe ich jedoch nicht. Wo ist etwa der Bezug von Barrierefreiheit auf die Anwendungssicherheit?&lt;br /&gt;
&lt;br /&gt;
Mein Vorschlag, um diese Punkte etwa sinnvoll umzubauen:&lt;br /&gt;
* &amp;quot;Fehlendes Vorgehensmodell&amp;quot;: Bezug auf fehlende Berücksichtigung von Sicherheit im SDLC. Statt eines SDLCs selbst sollte hier besser auf die Notwendigkeit eines Secure Development Lifecycle (SDL) hingewiesen werden&lt;br /&gt;
* &amp;quot;Fehlende Programmierrichtlinien&amp;quot; =&amp;gt; Besser wäre hier &amp;quot;Fehlende Sicherheitsrichtlinien in der Programmierung&amp;quot; also &amp;quot;Secure Coding Guidelines&amp;quot;&lt;br /&gt;
* &amp;quot;Testfälle&amp;quot; =&amp;gt; &amp;quot;Sicherheitsrelevante Testfälle&amp;quot; (z.B. Security Unit Tests). &lt;br /&gt;
* &amp;quot;Barrierefreiheit&amp;quot;: Warum nicht an dieser Stelle die Auswirkungen von Sicherheitsfunktionen auf die Bedienbarkeit, etwa anhand von CAPTCHAS erläutern?&lt;br /&gt;
&lt;br /&gt;
== G 2.WA03 Unzureichender Schutz personenbezogener Daten bei Web-Anwendungen (Matthias) ==&lt;br /&gt;
&lt;br /&gt;
Der Titel dieses Bausteines heißt &amp;quot;Schutz personenbezogener Daten&amp;quot;, die genannten Beispiele beziehen sich bis auf den letzten jedoch auf die missbräuchliche (oder zumindest problematische) Nutzung aus Sicht des Datenschutzes. &lt;br /&gt;
&lt;br /&gt;
Die Punkt 1-3 sollten daher besser entfallen und z.B. durch die Folgenden ersetzt werden:&lt;br /&gt;
* Unsichere Einbindung von sozialen Netzwerken (Bezug nehmen auf den Like-Button bei Facebook)&lt;br /&gt;
* Unsichere Einbindung von Werbeinhalten&lt;br /&gt;
* Unsichere Übertragung und Caching&lt;br /&gt;
* Unsichere Protokollierung&lt;br /&gt;
* Ungenügender Zugriffsschutz&lt;br /&gt;
* Verstoß des Minimalprinzips bzw. der Zweckgebundenheit (welche Daten werden wirklich benötigt)&lt;br /&gt;
&lt;br /&gt;
Auch wäre es ggf. zumindest einen Verweis auf das BDSG zu machen.&lt;br /&gt;
&lt;br /&gt;
== G 4.33 Unzureichende oder fehlende Authentisierung (Matthias) ==&lt;br /&gt;
&lt;br /&gt;
; 1. Erster Absatz: &amp;quot;Wenn Authentisierungsmechanismen fehlen oder zu schlecht sind&amp;quot;&lt;br /&gt;
&lt;br /&gt;
&amp;quot;schlecht&amp;quot; sollte vlt besser durch &amp;quot;unzureichend&amp;quot; ersetzt werden.&lt;br /&gt;
&lt;br /&gt;
; 2. &amp;quot;Sicherheitslücken entstehen bei... der Benutzerauthentisierung&amp;quot;&lt;br /&gt;
&lt;br /&gt;
Hier findet nur ein Bezug auf &amp;quot;Passwörter&amp;quot; statt. Der Bezug auf die fehlerhaft implementierte oder dem Schutzbedarf ungenügende Schutzmechanismen (z.B. keine 2-Faktor-Authentisierung bei hochsensiblen Daten) fehlt. Auch auf das komplette fehlen von Authentisierungs-Controls wird hier nicht  eingegangen&lt;br /&gt;
&lt;br /&gt;
; 3. &amp;quot;Sicherheitslücken entstehen bei... der Komponentenauthentisierung&amp;quot;&lt;br /&gt;
&lt;br /&gt;
Wie bei 2., wird auch hier wieder nur auf Passwörter, nicht jedoch auf das fehlen von Controls selbst eingegangen. An dieser Stelle fehlt auch ein Hinweis auf die Notwendigkeit dedizierter Benutzeraccounts.&lt;br /&gt;
&lt;br /&gt;
; 4. &amp;quot;Sicherheitslücken entstehen bei... der Wahl des Verfahrens&amp;quot;&lt;br /&gt;
&lt;br /&gt;
Statt untauglich würde ich auch hier von &amp;quot;dem Schutzbedarf der Daten nicht angemessen&amp;quot; sprechen, eigentlich gehört das für mich aber in die obigen Punkte.&lt;br /&gt;
&lt;br /&gt;
; 5. Serverseitige Authentisierung fehlt&lt;br /&gt;
&lt;br /&gt;
Auch der Server (bzw. die Anwendung selbst) kann sich fehlerhaft oder ungenügend beim Benutzer authentsieren, etwa über DNS, SSL-Zertifikate, etc.&lt;br /&gt;
&lt;br /&gt;
== G 4.WA04 Unzureichende Validierung von Ein- und Ausgabedaten bei Web-Anwendungen (Matthias) ==&lt;br /&gt;
&lt;br /&gt;
; 1. &amp;quot;Unzureichende Validierung von Eingabedaten&amp;quot;&lt;br /&gt;
&lt;br /&gt;
Die genannten Beispiele sind genau keine korrekten Beispiele für diesen Fall, sondern betreffen die Ausgabevalidierung bzw. Enkodierung. Typische Fehler der Eingabevalidierung ist eine Manipulierbarkeit der Business Logik.&lt;br /&gt;
&lt;br /&gt;
; 2. &amp;quot;Unzureichende Validierung von Ausgabedaten&amp;quot;&lt;br /&gt;
&lt;br /&gt;
Hier geht es zentral um die Verhinderung von Interpreter Injection, also serverseitig (z.B. SQL oder LDAP Injection) oder clientseitig (XSS, JSON Injection, etc.). Statt &amp;quot;können die Ausgaben Schadcode&amp;quot; enthalten würde ich hier eher davon Sprechen, dass ein solcher Interpreteraufruf manipuliert werden kann (was dann z.B. zur Einschleusung von Schadcode genutzt werden kann).&lt;br /&gt;
&lt;br /&gt;
; 3. &amp;quot;Die Suchfunktion der Web-Anwendung verwendet die Eingaben der Benutzer ungefiltert&amp;quot;&lt;br /&gt;
&lt;br /&gt;
Mit ungenügender &amp;quot;Filterung&amp;quot; hat SQL Injection nichts zu tun,  eigentlich geht es hierbei darum, dass SQL-Anfragen dynamisch mit unvalidierten Eingebedaten zusammengebaut (konkateniert) werden.&lt;br /&gt;
&lt;br /&gt;
; 4. &amp;quot;Ungefilterter HTML-Code in Kommentar-Funktion&amp;quot;&lt;br /&gt;
&lt;br /&gt;
Hier fehlt der Bezug auf persistentes XSS, das hier sicherlich zentral ist.&lt;br /&gt;
&lt;br /&gt;
== G 4.WA05 Fehlende oder mangelhafte Fehlerbehandlung durch Web-Anwendungen (Tobias, Matthias) ==&lt;br /&gt;
; Abschnitt &amp;quot;Unsichere Fehlerbehandlung&amp;quot;&lt;br /&gt;
Die G adressiert &amp;quot;Unsichere Fehlerbehandlung&amp;quot;, der Abschnitt die &amp;quot;Unsichere Fehlerbehandlung in Sicherheitskomponenten&amp;quot;. Entsprechend sollte der fettgedruckte Teil angepasst werden.&lt;br /&gt;
&lt;br /&gt;
; &amp;quot;fehlende SQL-Parameter,&amp;quot;&lt;br /&gt;
Sollte besser &amp;quot;Fehlermeldungen bei ungültigen SQL-Abfragen&amp;quot; lauten.&lt;br /&gt;
&lt;br /&gt;
; &amp;quot;Auch scheinbar unkritische Informationen, wie die Meldung ob (..)&amp;quot;&lt;br /&gt;
Korrekt, allerdings nicht nachvollziehbar, wenn das Problem der Leser nicht schon bekannt ist. Daher erweitern nach &amp;quot; Rahmen von Brute-Force-Angriffen ausgenutzt werden.&amp;quot; mit &amp;quot;. Bei Brute-Force-Angriffen wäre in diesem Fall klar, dass der Benutzername gültig ist.&amp;quot;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[User:Mrohr|Matthias]]): Stimme dem Obigen auch zu, ausserdem:&lt;br /&gt;
&lt;br /&gt;
; Sprachlich: &amp;quot;kann dies unvorhersehbare Auswirkungen haben und den Betrieb der Web-Anwendung bis zur Unerreichbarkeit einschränken.&amp;quot;&lt;br /&gt;
&lt;br /&gt;
&amp;quot;Unerreichbarkeit&amp;quot; ist etas merkwuerdig ausgedrueckt, besser ware hier von der &amp;quot;Verfuegbarkeit&amp;quot; zu sprechen. Im Uebrigen fehlt vollstaendig der Bezug auf die Verfuegbarkeit als Primaeres Schutzziel der Informationssicherheit.&lt;br /&gt;
&lt;br /&gt;
; &amp;quot;Clientseitige Fehlerbehandlung&amp;quot;&lt;br /&gt;
Das stimmt soweit, das generelle Problem ist jedoch genereller, naehmlich die clientseitige Abbildung sicherheitsrelaventer Logik (in diesem Fall die Fehlerbehandlung)&lt;br /&gt;
&lt;br /&gt;
== G 4.WA06 Unzureichende Nachvollziehbarkeit von sicherheitsrelevanten Ereignissen bei Web-Anwendungen (Matthias) ==&lt;br /&gt;
&lt;br /&gt;
; 1. Erster Absatz: &amp;quot;Die Behebung einer Schwachstelle ist dann nicht oder nur unter erschwerten Bedingungen möglich.&amp;quot;&lt;br /&gt;
&lt;br /&gt;
Hier würde ich ergänzen: &amp;quot;...und Angriffe auf die Anwendungen können ggf. nicht erkannt oder nachvollzogen werden&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
; 2. &amp;quot;Beispiele&amp;quot;: Kommulierbarkeit&lt;br /&gt;
&lt;br /&gt;
Hier fehlt auch ein Bezug auf die Kommulierbarkeit von SIcherheitsereignissen, dass diese also auch von solchen anderer Systeme in Verbindung gesetzt werden können&lt;br /&gt;
&lt;br /&gt;
; 3. &amp;quot;Beispiele&amp;quot;: Gerichtsverwertbarkeit&lt;br /&gt;
&lt;br /&gt;
Auch die Möglichkeit zur Gerichtsverwertbarkeit (etwa durch eindeutigen Zeitstempel) und manipulationssicherer Speicherung, würde ich an dieser Stelle unbedingt erwähnen.&lt;br /&gt;
&lt;br /&gt;
== G 4.WA07 Offenlegung von Informationen bei Web-Anwendungen (Matthias) ==&lt;br /&gt;
&lt;br /&gt;
; 1. Titel&lt;br /&gt;
&lt;br /&gt;
Hier würde ggf. &amp;quot;Offenlegung vertraulicher Informationen&amp;quot; sicher besser passen als &amp;quot;Offenlegung von Informationen&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
; 2. Beispiellink&lt;br /&gt;
&lt;br /&gt;
Ein Beispiellink (mit und ohne Token) würde sicher die Verständlichkeit dieser Schwachstelle verbessern.&lt;br /&gt;
&lt;br /&gt;
; 3. Erster Absatz: &amp;quot;Wenn demzufolge Informationen unnötig offengelegt werden, steigt die Wahrscheinlichkeit eines erfolgreichen Angriffs.&amp;quot;&lt;br /&gt;
&lt;br /&gt;
Interne Informationen auszublenden ist eine Härtungsmaßnahme, deren Anzeige erhöht aber nicht zwangsläufig die Wahrscheinlichkeit eines erfolgreichen Angriffs. Ich würde diesen Satz weglassen.&lt;br /&gt;
&lt;br /&gt;
 ; 4. Fehlende Punkte&lt;br /&gt;
&lt;br /&gt;
* Ein Hinweis auf HTTP Header wäre hier sicher erwähnenswert.&lt;br /&gt;
* Weiterhin bzgl. der Anzeige von Traces und ein Verweis auf den Entsprechenden Baustein zur Fehlerbehandlung&lt;br /&gt;
&lt;br /&gt;
== G 5.WA14 Cross-Site Request Forgery (CSRF, XSRF) (Matthias) ==&lt;br /&gt;
&lt;br /&gt;
; 1. Erster Absatz: &amp;quot;Können Funktionen einer Web-Anwendung ohne weitere Überprüfung der Authentizität des HTTP-Requests (z.B. durch Tokens in versteckten Formularfeldern) genutzt werden&amp;quot;&lt;br /&gt;
&lt;br /&gt;
Statt &amp;quot;Funktionen&amp;quot; würde ich besser von &amp;quot;schreibenden Aktionen&amp;quot; sprechen, dann macht der Satz mehr Sinn.&lt;br /&gt;
&lt;br /&gt;
; 2. Dritter Absatz: &amp;quot;Im Gegensatz zu XSS (siehe ...￼ ) ist das Angriffsziel nicht die Information auf dem Client (z. B. in Cookies),&amp;quot;&lt;br /&gt;
&lt;br /&gt;
Dieser (Halb-)Satz macht keinen Sinn, auch weil es bei XSS nicht nur im Informationen auf dem Cient geht. Vorschlag: &amp;quot;ist das Angriffsziel nicht die Ausführung von Skriptcode, sondern von unbefugten, schreibenden Aktionen im Kontext des angemeldeten Benutzers.&amp;quot;&lt;br /&gt;
&lt;br /&gt;
; 3. Session Riding&lt;br /&gt;
&lt;br /&gt;
Session Riding ist quasi nur ein anderer Begriff für CSRF. Die einzige Form von CSRF die mir bekannt ist, sind Angriffe mit Standard-Passwörtern auf HTTP-Basic-Auth geschützten Ressourcen.&lt;br /&gt;
&lt;br /&gt;
Im Grunde ist Session Riding aber nur ein Synonym für CSRF. Der Absatz ist daher auch nur eine Wiederholung der obigen Beschreibung.&lt;br /&gt;
&lt;br /&gt;
; 4. Zum Beispiel: &amp;quot;Durch einen präparierten Link auf einer Webseite wird die Änderung des Zugangspasswortes des Routers eingeleitet.&amp;quot;&lt;br /&gt;
&lt;br /&gt;
Etwas ungüngstig ausgedrückt. Besser wäre: &amp;quot;wird eine Anfrage zur Änderung des Zugangspasswortes an den Router gesendet. Hierbei sendet der Browser automatisch den Session Cookie mit, worüber die Webanwendung die Authentizität der Anfrage verifiziert und die Änderung durchführt.&amp;quot;&lt;br /&gt;
&lt;br /&gt;
== G 5.WA18 Clickjacking (Matthias) ==&lt;br /&gt;
&lt;br /&gt;
Hier stellt sich mir nur die allgemeine Frage, ob Clickjacking, bzw. der Schutz davor tatsächlich einem Grundschutz zuzurechnen ist. Persönlich würde ich dies nicht tun.&lt;br /&gt;
&lt;br /&gt;
== M 2.WA02 Dokumentation der Architektur von Web-Anwendungen (Matthias) ==&lt;br /&gt;
&lt;br /&gt;
; Verantwortlich für die Umsetzung&lt;br /&gt;
Hier wäre auch die Nennung des &amp;quot;Architekten&amp;quot; sinnvoll&lt;br /&gt;
 &lt;br /&gt;
; Fehlende Bestandteile der Dokumentation:&lt;br /&gt;
* Schutzbedarf des Systems sowie der verarbeiteten Daten&lt;br /&gt;
* Schützenswerte Daten und Funktionen (Assets)&lt;br /&gt;
* Betriebliche Anforderungen an die Sicherheit bzw. eingesetzte Plattform&lt;br /&gt;
* Dokumentierte Konfigurationseinstellungen &lt;br /&gt;
* BIA (RTO, RPO)&lt;br /&gt;
* Schnittstellen&lt;br /&gt;
* Trust Boundaries&lt;br /&gt;
* Akteure (bzw. Trust Level)&lt;br /&gt;
* Sicherheitsannahmen&lt;br /&gt;
* Geltende Compliance-Anforderungen (BDSG, PCI DSS, etc.)&lt;br /&gt;
&lt;br /&gt;
; Benutzermanagement&lt;br /&gt;
&lt;br /&gt;
Wenn damit das Identity Management gemeint ist, gehört das Dokumentiert, ist aber keine Sicherheitsfunktion. Oder ist hiermit das Rollen- und Berechtigungskonzept gemeint? Grenzt sich aus meiner Sicht schwer mit dem Thema Authentisierung ab. &lt;br /&gt;
&lt;br /&gt;
; Prüffragen&lt;br /&gt;
&lt;br /&gt;
Hier fehlt etwas in Bezug auf Sicherheitsanforderungen. Beispiel: &amp;quot;Werden Sicherheitsanforderungen an den Betrieb während der Entwicklung abgestimmt und dokumentiert&amp;quot;&lt;br /&gt;
&lt;br /&gt;
== M 2.WA12 Entwicklung und Erweiterung von Anwendungen (Markus) ==&lt;br /&gt;
; &amp;quot;Es sollte darauf geachtet werden, dass Sicherheitsanforderungen&lt;br /&gt;
vollständig durch Sicherheitsmechanismen erfüllt und zur Erstellung von&lt;br /&gt;
Testfällen festgehalten werden.&amp;quot; --&amp;gt; Bessere Formulierung würde aussagen, dass die Sicherheitsanforderungen durch Testfälle verifiziert werden.&lt;br /&gt;
&amp;quot;(z. B. durch Kommentare im&lt;br /&gt;
Quelltext). Somit ist der Quelltext zu einem&amp;quot; --&amp;gt; Das ist kein empfehlenswerter Programmierstiel! Raus mit diesem Kommentar&lt;br /&gt;
;&amp;quot;Zum Schutz vor dem Verlust bereits entwickelter und verworfener&lt;br /&gt;
Lösungen sowie zu Dokumentationszwecken sollte die Historie der&lt;br /&gt;
Änderungen festgehalten werden (z. B. durch ein Revisionssystem).&amp;quot; --&amp;gt; Auch diesen Absatz können wir streichen - Kein professioneller Programmierer arbeitet ohne Versionierugssystem.&lt;br /&gt;
;&amp;quot;Bei Web-Anwendung sollten die Webseiten auf Konformität zu dem&lt;br /&gt;
verwendeten Standard (z. B. HTML-Standard) getestet werden. Dadurch&lt;br /&gt;
können unvorgesehene Seiteneffekte aufgrund einer Fehlinterpretation&lt;br /&gt;
seitens der Browser vermieden werden.&amp;quot; --&amp;gt; Könnte man noch um &amp;quot;Die Software ist in möglichst vielen Browsern zu testen&amp;quot; erweitern.&lt;br /&gt;
;Generell geht der Autor leider nicht auf die Rollen &amp;amp; Rechte Verteilung ein. Mir fehlt der Hinweis, das es eine personelle Trennung zwischen Entwicklung, Test und Betrieb geben muss.&lt;br /&gt;
;Zum Thema Wartung / Betrieb --&amp;gt; Hier wird keine Aussage getroffen bezüglich Log_Files. Dieses Thema kann kritische Auswirkungen haben, Bsp.: logging ganzer HTTP-Requests im LogLevel=Debug.&lt;br /&gt;
; &amp;quot;Produktspezifische Sicherheitsfunkionalität&amp;quot; - Dieser Absatz ist gefährlich - der Angreifer ist nicht zur Verwendung dies Zielbrowsers gezwungen. Deshalb können Browser-spez. Sicherheitsfunktionen nur als Add-ON gewertet werden.&lt;br /&gt;
; &amp;quot;Festlegung der Entwicklungsumgebung&amp;quot; - Dieser Absatz geht nicht auf die zu verwendenden Testdaten ein. Der Hinweis, dass Live-Daten / Kundendaten nichts in Test- &amp;amp; Entwicklungsumgebungen zu suchen haben fehlt!!!&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== M 2.WA24 Web-Tracking (Matthias) ==&lt;br /&gt;
&lt;br /&gt;
; Letzter Absatz: &amp;quot;Falls eine Auswertung von Nutzerdaten, insbesondere personenbezogener Daten, .. &amp;quot;&lt;br /&gt;
&lt;br /&gt;
Hier sollte denke ich besser von personenbeziehbaren Daten gesprochen Werten. Dies betrifft etwa die Zuordnung von Surfverhalten zu einer bestimmten Person. Dies sollte stets nach den Prinzipien Datensparsamkeit und Datenvermeidung, Erforderlichkeit, sowie Zweckbindung erfolgen. Ist Webtracking nicht personenbeziehbar ist dies kein Thema für den Datenschutz.&lt;br /&gt;
&lt;br /&gt;
== M 4.WA04 Authentisierung bei Web- Anwendungen (Matthias) ==&lt;br /&gt;
&lt;br /&gt;
; Vermischung von Authentisierung und Session Management &lt;br /&gt;
&lt;br /&gt;
Bei diesem Baustein findet eine ziemlich große Vermischung von Anforderung an die Authentisierung und das erst in &amp;quot;M 4.WA06 Session-Management bei Web- Anwendungen&amp;quot; behandelte Session Management statt (Beispiel: &amp;quot;Remember-Me-Funktion&amp;quot;). Beide Themen sollten sinnvollerweise getrennt voneinander zu betrachten und aufeinander zu beziehen.&lt;br /&gt;
&lt;br /&gt;
; Verwendung von Frameworks&lt;br /&gt;
&lt;br /&gt;
Die Anforderung ist schon ein wenig eingeschränkt. Besser passt hier denke ich die &amp;quot;Abbildung der Authentisierung über Standardkomponenten (Bibliotheken oder Frameworks)&amp;quot;. &lt;br /&gt;
&lt;br /&gt;
; Remember-Me-Funktion&lt;br /&gt;
&lt;br /&gt;
Siehe oben, gehört zum Session Management. Das ließt sich im übrigen so, als ob eine Webanwendung Credentials auf dem Client abhängt. &lt;br /&gt;
&lt;br /&gt;
; Grenzwerte für gescheiterte Anmeldeversuche&lt;br /&gt;
&lt;br /&gt;
Diese Empfehlung ist allgemein falsch, da sie sehr von der betrachteten Anwendung abhängt. Besser wäre hier allgemein von Mechanismen zur Verhinderung von automatisierten Angriffen zu sprechen (Anti-Automatisierung). &lt;br /&gt;
&lt;br /&gt;
Etwa umsetzbar durch&lt;br /&gt;
* Sperrung nach x Anmeldeversuchen&lt;br /&gt;
* Throttling&lt;br /&gt;
* Captchas&lt;br /&gt;
* Sicherheitsfragen&lt;br /&gt;
&lt;br /&gt;
Das allgemeine Sperren kann leicht für das gezielte Aussperren von Benutzern (User Lockout) verwendet werden. Was etwa bei Trading-Anwendungen nicht funktioniert.&lt;br /&gt;
&lt;br /&gt;
; Automatisiertes Zurücksetzen von Authentisierungsdaten&lt;br /&gt;
&lt;br /&gt;
Würde ich besser als &amp;quot;Passwort-Reset&amp;quot; bezeichnen.&lt;br /&gt;
&lt;br /&gt;
Weiterhin fehlt hier der Hinweis, dass statt ein automatisiertes Zurücksetzen, ein Mechanismus zu empfehlen ist, bei dem über ein hinterlegtes Sicherheitsmerkmal (Handy-Nummer oder E-Mail-Adresse) vom Benutzer zunächst eine Verifikation durchgeführt wird. Beispielsweise durch einen erhaltenen Link. Erst dann darf eine Änderung des Passwortes durch den Benutzer erfolgen.&lt;br /&gt;
&lt;br /&gt;
; Registrierung nicht behandelt&lt;br /&gt;
&lt;br /&gt;
Es existiert hier kein Punkt, der die sichere Implementierung von Benutzerregistrierungen behandelt.&lt;br /&gt;
&lt;br /&gt;
; Verweis auf Externalisierung fehlt.&lt;br /&gt;
&lt;br /&gt;
Statt die Authentisierung selbst durchzuführen kann eine Anwendung hierzu auf eine externe Komponente (Beispiel: SiteMinder oder Kerberos) zurückgreifen.&lt;br /&gt;
&lt;br /&gt;
; Verweis auf Behandlung von Credentials fehlt&lt;br /&gt;
&lt;br /&gt;
Auch wenn das  in &amp;quot;M 4.WA15 Schutz vertraulicher Daten bei Web- Anwendungen&amp;quot; ausführlich behandelt wird, sollte in diesem Baustein bereits auf den angemessenen Schutz von Authentisierungsdaten bei Übertragung und Speicherung hingewiesen werden.&lt;br /&gt;
&lt;br /&gt;
== M 4.WA05Umfassende Ein- und Ausgabevalidierung bei Web-Anwedungen (Markus) ==&lt;br /&gt;
; &amp;quot;Ablehnung der Daten im&lt;br /&gt;
Fehlerfall&amp;quot; --&amp;gt; Hier könnte man noch auf Tar-Pits eingehen - nur ein Vorschlag.&lt;br /&gt;
&lt;br /&gt;
== M 4.WA06Session-Management bei Web-Anwendungen (Markus, Matthias) ==&lt;br /&gt;
; &amp;quot;Übertragung der SessionID mittels GETRequest&amp;quot; --&amp;gt; Hier fehlt der Hinweis, dass die Lebensdauer dieser SessionIds kurz/kürzer sein muss, als im Falle der Speicherung im Cookie.&lt;br /&gt;
&lt;br /&gt;
([[User:Mrohr|Matthias]]) Die Anmerkung verstehe ich ehrlich gesagt ueberhaupt nicht, zumal das SM haeufig transparent zwischen Cookies und URL Rewriting wechselt. Wozu soll das gut sein? Wie soll das geschehen? Idealerweise sollte die Session ID niemals in die URL geschrieben werden, das sollte eigentlich genuegen.&lt;br /&gt;
&lt;br /&gt;
; &amp;quot;Verschlüsselte Übertragung von SessionIDs&amp;quot; --&amp;gt; Hier fehlt der Hinweis auf den Beast-Exploit. TLS Version &amp;gt; 1.0 verwenden!&lt;br /&gt;
&lt;br /&gt;
([[User:Mrohr|Matthias]]) Solange hier nicht auf eine explizite TLS Version eingegangen wird, sollte meiner grossen Ueberzeugung nach hier auch auf keine Exploits etc. eingagen werden, das gehoert an andere Stelle.&lt;br /&gt;
&lt;br /&gt;
; ([[User:Mrohr|Matthias]]) Weiterhin:&lt;br /&gt;
&lt;br /&gt;
 Es dürfen keine extern bekannten oder erratbaren Daten (z. B. IP-Adresse, Uhrzeit) in die Berechnung der SessionID einfließen.&lt;br /&gt;
&lt;br /&gt;
Die Aussage finde ich etwas problematisch, wichtiger ist, dass die Entropie ausreichend hoch ist. Haeufig werden etwa IPs von Load Balancern in die Session ID hineingeschrieben.&lt;br /&gt;
&lt;br /&gt;
 - Domain (z. B. webapp.domain.tld),&lt;br /&gt;
 - Path (z. B. /webapp/),&lt;br /&gt;
 - Secure und&lt;br /&gt;
 - HttpOnly.Beschränkte Sitzungsdauer&lt;br /&gt;
&lt;br /&gt;
Das sieht so aus, als ob es empfehlenswert ist, das Domain-Tag zu verwenden, das ist es sicherlich nicht. Was macht hier der Hinweis &amp;quot;Beschraenke Sizuungsdauer&amp;quot;?&lt;br /&gt;
&lt;br /&gt;
== M 4.WA07Fehlerbehandlung durch Web-Anwendungen (Markus) ==&lt;br /&gt;
; Konsistenter / Inkonsistener Zustand einer Webanwendung und der daraus resultierende Datenverlust: Hier fehlen mir die Punkte: DOS, Priv.Escalation, CodeExecution.&lt;br /&gt;
; Vermeidung vertraulicher Informationen in Fehlermeldungen --&amp;gt; Fehlermeldungen sollten ebenfalls eine Systeminformationen preisgeben (Softwareversion, Patchlevel, etc.)&lt;br /&gt;
; Abbruch des Vorgangs nach Auftreten eines Fehlers --&amp;gt; TarPits scheinen dem Autor umbekannt zu sein :)&lt;br /&gt;
; &amp;quot;Werden Fehler möglichst von der gleichen Komponente behandelt, in der&lt;br /&gt;
der Fehler aufgetreten ist?&amp;quot; --&amp;gt; Das &amp;quot;möglichst&amp;quot; sollten wir streichen.&lt;br /&gt;
&lt;br /&gt;
== M 4.WA08Schutz vor automatisierter Nutzung von Web-Anwendungen (Markus) ==&lt;br /&gt;
; &amp;quot;Brute-Force-&lt;br /&gt;
Angriffe (z. B. Erraten von Zugangsdaten) und Enumeration-Angriffe (z. B.&lt;br /&gt;
automatisiertes Ermitteln von gültigen Login-Namen)&amp;quot; -- die Beispiele sind identisch - besser Beispiele suchen, z.b. URL-Enumeration&lt;br /&gt;
&lt;br /&gt;
([[User:Mrohr|Matthias]]) Das sehe ich anders. Brute-Forcing bezieht auf Passwoerter und Enumeration auf Benutzernamen, etwa durchs hochzaehlen. Auch wenn ich zustimmen muss, dass die nicht ganz gluecklich gewaehlt wurden. Stann &amp;quot;Erraten von Zugangsdaten&amp;quot; wuerde ich besser von &amp;quot;Erraten von Passwoertern&amp;quot; sprechen. Oder wie gesagt gleich auch auf andere Beispiele (etwa Object ID Enumeration) beziehen.&lt;br /&gt;
&lt;br /&gt;
== M 4.WA11Sichere Konfiguration von Web-Anwendungen (Markus) ==&lt;br /&gt;
; &amp;quot;Sicherer Umgang mit TLS/SSL&amp;quot; -- Hier fehlt der Hinweis, dass TLS-1.0 gebrochen ist&lt;br /&gt;
; &amp;quot;Zeichenkodierungskonfiguration&amp;quot; -- Ein Whitelisting abhängig von der Encodierung wäre ein weiterer Vorschlag&lt;br /&gt;
; &amp;quot;Restriktive Dateisystemberechtigungen&amp;quot; -- auch wenn es ein klassiker ist - der AS sollte ebenfalls mit von einem eingeschränkten Nutzer gestartet werden und nicht als root&lt;br /&gt;
; Administration Consolen:zur Ergänzen: Wenn diese nicht benötigit, sollten derartige Applikationen nicht deployed werden, unabhängig von möglichen Zugangsbeschränkungen.&lt;br /&gt;
&lt;br /&gt;
([[User:Mrohr|Matthias]]) Sorry, meiner Meinung nach hat die Bewertung von Kryptoverfahren hier abslut nichts zu suchen.Stattdessen sollte hier auf den entsprechenden [https://www.bsi.bund.de/ContentBSI/Publikationen/TechnischeRichtlinien/tr02102/index_htm.html Empfehlung des BSI] verwiesen werden, auch wenn dieses Dokument derzeit noch etwas outdated zu sein scheint.&lt;br /&gt;
&lt;br /&gt;
== M 4.WA13Kontrolliertes Einbinden von Daten und Inhalten bei Web-Anwendungen (Markus) ==&lt;br /&gt;
; Datei-Upload: Bei einem Upload werden Dateien durchaus in TEMP-Verzeichnissen gesammelt und danach weiterverarbeitet. Diese TEMP-Verzeichnisse sind im Rahmen einer Sicherheitsanalyse zu betrachten -&amp;gt; Möglicher (unbefugter) Zugriff auf weitere Uploads&lt;br /&gt;
; Upload komprimierter Dateien / großer Dateien birgt die Gefahr von DOS Angriffen&lt;br /&gt;
; Upload von Dateien kann bei weiterem Parsing zu Speicherengpässen führen --&amp;gt; DOS-Angriffe auf Thread-Local etc.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== M 4.WA14Restriktive Herausgabe sicherheitsrelevanter Informationen bei Web-Anwendungen (Markus, Matthias) ==&lt;br /&gt;
OK - Keine Anmerkungen von mir.&lt;br /&gt;
&lt;br /&gt;
[[User:Mrohr|Matthias]]) Von mir schon;)&lt;br /&gt;
&lt;br /&gt;
; Vermeidung von Kommentaren in ausgelieferten Webseiten&lt;br /&gt;
&lt;br /&gt;
Das ist leider total falsch, wir brauchen haeufig Komentare, aus Kompatibilitaetsgruenden. So wird etwa der JavaScript-Block haeufig auskommentiert.&lt;br /&gt;
&lt;br /&gt;
Wurde stattessen besser von sicherheitsrelevanten Kommentaren sprechen und als Massnahme generell Entwicklerkommentare ueber Sprachkonstruktre (etwa JSP) durchzufuehren.&lt;br /&gt;
&lt;br /&gt;
; Löschen nicht benötigter Dateien&lt;br /&gt;
&lt;br /&gt;
Hier wurde ich ggf. Dateien von Versionisierungstools (etwa Subversion) erwaehnen, das sehen wir schon recht haeufig.&lt;br /&gt;
&lt;br /&gt;
Statt Dateien einfach nur zu loeschen (was in der Praxis haeufig nicht so einfach ist) bietet es sich zudem an, den Zugriff auf bestimmte Dateien oder Dateitypen generell zu sperren, etwa mittels ACL im Apache.&lt;br /&gt;
&lt;br /&gt;
; Gibt die Web-Anwendung ausschließlich neutrale Fehlermeldungen aus und sind diese im Quelltext identisch? {E: C}&lt;br /&gt;
&lt;br /&gt;
Persoenlich verstehe ich das nicht. Wieseo neutrale Fehlermeldung? Das macht fuer mich nur beim Login Sin. Hierzu existiert in dem Text auch keinerlei Bezug. Ich wuerde das daher besser entfernen und im Rahmen der Fehlerbehandlung diskutieren. Mindestens sollte hier jedoch besser von &amp;quot;sicherheitsunbedentlichen Fehlermeldungen&amp;quot; oder so gesprochen werden.&lt;br /&gt;
&lt;br /&gt;
; Wird der Referrer bei Verlassen der Web-Anwendung (z. B. durch einen Link auf eine externe Seite) gefiltert?&lt;br /&gt;
&lt;br /&gt;
Diesen Punkt sehe ich als sehr Fallabhengig an. Es kann fuer seiten durchaus wuenschenswert sein, dass der Referer weitergegeben wird. Der Referer sollte natuerlich keine sensiblen Informationen enthalten, was ja an anderer Stelle (etwa Session Management) vorgegeben wird bzw. gegeben werden sollte.&lt;br /&gt;
&lt;br /&gt;
== M 4.WA15Schutz vertraulicher Daten bei Web-Anwendungen (Markus) ==&lt;br /&gt;
; Sichere kryptographische Algorithmen:&lt;br /&gt;
 Hier fehlt mir eine Liste der aktuelle als sicher geltenden Verfahren.&lt;br /&gt;
; Schlüssel&lt;br /&gt;
 Das die Schlüssel bestimmten Formaten entsprechen müssen ist ok - aber das Schlüsselmanagement wird gar nicht besprochen?&lt;br /&gt;
; Schutz der Daten im Browsercache&lt;br /&gt;
 Skripte und Browserplugins können ebenfalls auf den Browsercache zugreifen - diese werden hier nicht erwähnt.&lt;br /&gt;
; Maskierung von Passwörtern &lt;br /&gt;
 Dies schützt bei der Eingabe nur vor ShoulderSurfing nicht vor Skripten oder Plugins die diese an andere Server posten.&lt;br /&gt;
; Sicherung von Zugangsdaten:&lt;br /&gt;
 Zugangsdaten in einer Datei abzulegen - wenn auch ausserhalb des WebRoots ist keine gute Idee.&lt;br /&gt;
; Schutz von Quelltexten:&lt;br /&gt;
 Hier würde ich property files mit aufnehmen. der hinweis auf web-inf/classes fehlt - warum?&lt;br /&gt;
 Bei include-befehlen sind die pfadangaben zu überdenken.&lt;br /&gt;
&lt;br /&gt;
== M 4.WA16Zugriffskontrolle bei Web-Anwendungen (Markus) ==&lt;br /&gt;
; Zugriffskontrolle via Frameworks:&lt;br /&gt;
 Dieser Punkt (Frameworks) wird nur in einem Satz erwähnt. Es werden keine Bespiele gegeben - Das ist zu wenig.&lt;br /&gt;
 Es müssen alle Zugriffe geschützt werden. Eine Protokollierung aller Zugriffe mit den nötigen Informationen ist ebenfalls empfehlenswert.&lt;br /&gt;
; Datei Upload:&lt;br /&gt;
 Die Gefahr eines DOS wird hier nicht erwähnt.&lt;br /&gt;
&lt;br /&gt;
== M 4.WA19Verhinderung von Cross-Site Request Forgery (CSRF, XSRF) (Markus, Matthias) ==&lt;br /&gt;
; Verantwortliche: &lt;br /&gt;
 Entwickler und Admins!&lt;br /&gt;
([[User:Mrohr|Matthias]]) Korrekt, wobei auch in der Reihenfolge&lt;br /&gt;
&lt;br /&gt;
; Anti-CSRF-Token in hidden fields:&lt;br /&gt;
 Das ist keine gute Idee. Ich würde das streichen!&lt;br /&gt;
&lt;br /&gt;
([[User:Mrohr|Matthias]]) Watt? Anti-CSRF-Tokens in Hidden Fields sind die Standard-Massnahme. Wie denn sonst? Bitte nicht streichen!!! &lt;br /&gt;
&lt;br /&gt;
([[User:Mrohr|Matthias]]) Die Technik bei der die Session ID als Anti-CSRF-Token verwendet wird, wird als Double-Cookie Submit bezeichnet, das sollte hier referenziert werden.&lt;br /&gt;
&lt;br /&gt;
; Umgehung von Schutzmechanismen:&lt;br /&gt;
 Man in the middle hat keinen direkten Bezug zu CSRF! Das würde ich streichen.&lt;br /&gt;
([[User:Mrohr|Matthias]]) Der Hinweis ist korrekt. Wovon der Autor hier spricht ist Session Replay nicht CSRF.&lt;br /&gt;
&lt;br /&gt;
; Frameworks:&lt;br /&gt;
 Gute Idee - aber es gibt auch Features in den ApplicationServern die CSRF unterbinden - warum wird das nicht besprochen?&lt;br /&gt;
&lt;br /&gt;
([[User:Mrohr|Matthias]]) Sehe ich persoenlich nicht so, da CSRF primaer ein Applikations-Fehler ist, und auch in der Applikation und nicht im Environment (AppServer) geloest werden sollte. Auch wenn das manchmal ggf. die einzig machbare Loesung darstellt.&lt;br /&gt;
&lt;br /&gt;
([[User:Mrohr|Matthias]]) Was generell fehlt, ist ein Hinweis darauf, dass schreibende Requests generell per HTTP Post abgewickelt werden sollten, da HTTP Get keine &amp;quot;Safe Method&amp;quot;  (siehe HTTP 1.1, RFC 2616) ist.&lt;br /&gt;
&lt;br /&gt;
== M 4.WA20Sicherer Entwurf der Logik von Web-Anwendungen (Markus) ==&lt;br /&gt;
; Rollbacks:&lt;br /&gt;
 Tritt ein Fehler auf muss die Applikation einen konsistenten Datenstand zurück lassen. Das wird hier nicht erwähnt.&lt;br /&gt;
; RaceConditions:&lt;br /&gt;
 Fehler in der Geschäftslogik können auch durch zwei gleichzeitige Sessions auf einer Webapplikation auftreten - das wird hier nicht besprochen.&lt;br /&gt;
&lt;br /&gt;
== M 4.WA22Verhinderung der Blockade von Ressourcen (DoS) bei Web-Anwendungen (Markus, Matthias) ==&lt;br /&gt;
; Datenspeicher:&lt;br /&gt;
 Neben dem Datenspeicher sollte auch der RAM-Verbrauch pro Thread der Applikation limitiert werden.&lt;br /&gt;
([[User:Mrohr|Matthias]]) Stimmt, ich wuerde hier sogar allgemein von Ressourcenverbrauch am Beispiel RAM und Datenspeicher, sprechen&lt;br /&gt;
&lt;br /&gt;
; Voraggregation von Daten / Caching&lt;br /&gt;
 Dieser Punkt fehlt: Stark ressourcen belastende Anfragen können auch in Lastarmen Zeiten vorberechnet werden.&lt;br /&gt;
([[User:Mrohr|Matthias]]) Stimmt, koennte noch als Anmerkung bei &amp;quot;Cachen von Anfragen&amp;quot; hinzugefuegt werden&lt;br /&gt;
&lt;br /&gt;
([[User:Mrohr|Matthias]]) Noch drei Anmerkugnen&lt;br /&gt;
&lt;br /&gt;
; Prueffrage: &amp;quot;Wird ein möglicher Überlauf von Protokolldaten... verhindert&amp;quot;&lt;br /&gt;
&lt;br /&gt;
Ist eine etwas eingeschrankte Sicht. Wurde hier eher von Ueberlauf von Speicherplaz zu Beispiel im Rahmen der Protokollierung sprechen&lt;br /&gt;
&lt;br /&gt;
; Durchfuehrung von Lasttests zur Identifikation ressourcenintensiver Operationen&lt;br /&gt;
&lt;br /&gt;
Der Hinweis waere ggf. erwahnenswert&lt;br /&gt;
&lt;br /&gt;
; Hinweis auf nicht-angemeldeten Bereich&lt;br /&gt;
&lt;br /&gt;
Das Risiko durch rechenintensive Operationen durch einen DoS betroffen zu sein ist natuerlich fuer gewoehlich um so groesser, wenn diese im anonymen Bereich angeboten wird. Der Hinweis ware ggf. ebenfalls hilfreich.&lt;br /&gt;
&lt;br /&gt;
== M 4.WA25Verhinderung von Clickjacking (Markus) ==&lt;br /&gt;
Ok - das passt soweit.&lt;br /&gt;
&lt;br /&gt;
([[User:Mrohr|Matthias]]) Stimmt, auch wenn ich &amp;quot;Angreifer&amp;quot; in dem Beispiel eher als &amp;quot;Webseitenbetreiber&amp;quot; beschreiebn wuerde, da er nicht wirklich aktiv einen Angriff durchfuehrt, oder? Bitte nochmal ueber meinen Hinweis aus G 5.WA18 nachdenken: Ist Clickjacking-Schutz tatsaechlich Grundschutz? Ich bin mir da selber nicht so wirklich sicher.&lt;br /&gt;
&lt;br /&gt;
== M 5.WA21Sichere Anbindung von Hintergrundsystemen an Web-Anwendungen (Markus) ==&lt;br /&gt;
; Verantwortliche:&lt;br /&gt;
 Architekten fehlen. Entwickler müssen die Views umsetzen und die Datasource entsprechend einbinden - die fehlen hier ebenfalls.&lt;br /&gt;
; DirectorySystem Beispiel:&lt;br /&gt;
 Das DirectorySystem wird in dem angegeben Beispiel zum Single Point of Failure - das wird verschwiegen.&lt;br /&gt;
; Firewalls:&lt;br /&gt;
 Das sind fachlich-blinde Systeme. Was ist mit WAFs / IDS / IPS etc.?&lt;br /&gt;
([[User:Mrohr|Matthias]]) Stimmt, das hat in diesem Baustein nichts zu suchen&lt;br /&gt;
&lt;br /&gt;
([[User:Mrohr|Matthias]]) Noch zwei weitere Punkte von mir&lt;br /&gt;
&lt;br /&gt;
; Typische Hintergrundsysteme&lt;br /&gt;
Hier fehlt irgendwie &amp;quot;Middleware&amp;quot;, die ist denke ich nicht immer Legacy&lt;br /&gt;
&lt;br /&gt;
== M 5.WA23Systemarchitektur einer Web-Anwendung (Markus) ==&lt;br /&gt;
; Verantwortliche:&lt;br /&gt;
Auch hier fehlend wieder die Architekten. &lt;br /&gt;
; Virtualisierung:&lt;br /&gt;
Virtualisierung bietet weitere Angriffsvektoren (z.B.: Hypervisor) die eine &amp;quot;Blech&amp;quot;Farm nicht bietet.&lt;/div&gt;</summary>
		<author><name>Mrohr</name></author>	</entry>

	<entry>
		<id>https://wiki.owasp.org/index.php?title=Talk:OWASP_Review_BSI_IT-Grundschutz_Baustein_Webanwendungen&amp;diff=130142</id>
		<title>Talk:OWASP Review BSI IT-Grundschutz Baustein Webanwendungen</title>
		<link rel="alternate" type="text/html" href="https://wiki.owasp.org/index.php?title=Talk:OWASP_Review_BSI_IT-Grundschutz_Baustein_Webanwendungen&amp;diff=130142"/>
				<updated>2012-05-21T08:14:34Z</updated>
		
		<summary type="html">&lt;p&gt;Mrohr: /* M 4.WA22Verhinderung der Blockade von Ressourcen (DoS) bei Web-Anwendungen (Markus) */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Since it's about a review of a document in German, all the discussions will be done in German :-)&lt;br /&gt;
&lt;br /&gt;
Diskussionen rund um den Review des &amp;quot;IT-Grundschutzbausteins Webanwendungen&amp;quot; finden hier statt, sinnvollerweise auf Deutsch :-)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Vorschlag für Kriterien, die an unser Review angelegt werden sollten (.kai) ==&lt;br /&gt;
&lt;br /&gt;
* Der Baustein soll alle wichtigen Themen der Entwicklung sicherer&lt;br /&gt;
Webanwendungen enthalten.&lt;br /&gt;
&lt;br /&gt;
* Der Baustein soll die verschiedenen Phasen der Software-Entwicklung&lt;br /&gt;
vollständig abdecken.&lt;br /&gt;
&lt;br /&gt;
* Der Baustein soll zwischen verbindlichen, prüfbaren Vorgaben und&lt;br /&gt;
unverbindlichen Empfehlungen sprachlich sauber unterscheiden (hier&lt;br /&gt;
spielt mein Auditorenblick eine Rolle). Vor allem soll der Baustein&lt;br /&gt;
verbindliche Anforderungen auch tatsächlich stellen. Alle&lt;br /&gt;
verbindlichen Anforderungen müssen unabhängig von der jeweiligen&lt;br /&gt;
Umgebung auch umsetzbar sein, d.h. sie müssen entsprechend generisch&lt;br /&gt;
sein.&lt;br /&gt;
&lt;br /&gt;
* Die Maßnahmen sollen nur in (begründbaren) Ausnahmen zu Empfehlungen&lt;br /&gt;
von OWASP im Widerspruch stehen.&lt;br /&gt;
&lt;br /&gt;
* Die Maßnahmen sollen verständlich und anwendbar sein.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== &amp;quot;Hilfsmittel&amp;quot; (Markus) ==&lt;br /&gt;
Ich würde das Script zur Vermeidung von Clickjacking wrappen und nicht als losen Skript-block in den Text einbinden - einfach schlechter Programmierstiel diese losen Blöcke.&lt;br /&gt;
Der Zugriff auf das Body-Element mit byTagName-Array[0] ist auch nicht wirklich gut. Ich halte Zugriffe über das DOM (klassisch), bei ID bzw. XPATH für besser. &lt;br /&gt;
&lt;br /&gt;
SQL-Injection Characters:&lt;br /&gt;
die Pipe fehlt hier zur Textkonatenierung&lt;br /&gt;
+ / - haben auch eine Bedeutung bei JOINs.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== &amp;quot;Goldene Regeln&amp;quot; (Matthias) ==&lt;br /&gt;
&lt;br /&gt;
Hier meine Anmerkungen zu diesem Dokument:&lt;br /&gt;
&lt;br /&gt;
; 1. Für mich fehlende Punkte&lt;br /&gt;
* Korrektur der Ursache (Root Cause) von Schwachstellen statt  Verhinderung deren Ausnutzung&lt;br /&gt;
* Bezug auf Minimierung der Angriffsfläche und Least-Privilege-Prinzip&lt;br /&gt;
* Bezug auf Defense-in-Depth-Prinzip&lt;br /&gt;
* Verwendung von getesteten Security APIs (z.B. OWASP ESAPI) statt selbstentwickelter Funktionen&lt;br /&gt;
* Bezug auf Externalisierung von Sicherheitsfunktionen, sowie deklerative vor programmatischer Sicherheit.&lt;br /&gt;
&lt;br /&gt;
; 2. Begriff &amp;quot;Web-Anwendung&amp;quot;&lt;br /&gt;
Würde ich generell durch &amp;quot;Webanwendung&amp;quot; ersetzen.&lt;br /&gt;
&lt;br /&gt;
; 3. Einleitung (&amp;quot;Web-Anwendungen stellen Funktionalität zur Verfügung, ...&amp;quot;)&lt;br /&gt;
&lt;br /&gt;
Wozu dient dieser Satz?&lt;br /&gt;
&lt;br /&gt;
; 4. &amp;quot;Die Architektur der Web-Anwendung ist im Sicherheitskonzept zu  dokumentieren.....&amp;quot; &lt;br /&gt;
&lt;br /&gt;
Ich fände es sinnvoller, wenn hier von der &amp;quot;Sicherheitsarchitektur&amp;quot; gesprochen wird, welche etwa neben den sicherheitsrelevanten Datenflüssen, sensible Komponenten, Entry Points, Akteure architekturelle Security Controls wie Authentisierung, Kryptographie und natürlich die Trust Boundaries beinhaltet.&lt;br /&gt;
&lt;br /&gt;
; 5. &amp;quot;Bei Web-Anwendungen handelt es sich häufig um spezielle Eigenentwicklungen....&amp;quot;&lt;br /&gt;
&lt;br /&gt;
Erstens würde ich hier den geläufigen Begriff &amp;quot;Individualsoftware&amp;quot; verwenden. Zweitens würde ich statt bestimmte SDLC-Phasen vorzugeben (die Begriffe &amp;quot;Softwareverteilung&amp;quot; und &amp;quot;Integration&amp;quot; sind mir bei Webanwendungen bisher noch nicht so häufig untergekommen), besser von der Notwendigkeit sprechen, Sicherheit in allen Entwicklungsphasen zu berücksichtigen, also eines SDLs.&lt;br /&gt;
&lt;br /&gt;
; 6. &amp;quot;Alle Ein- und Ausgaben der Web-Anwendung müssen in eine normalisierte Form überführt werden....&amp;quot;&lt;br /&gt;
&lt;br /&gt;
Normalisierung ist für mich nicht gleich Kanonsierung, auch wenn beide Begriffe häufig als synonym verwendet werden.  Der Unterschied wird in der [http://owasp-esapi-java.googlecode.com/svn/trunk_doc/2.0-rc4/org/owasp/esapi/Encoder.html API-Beschreibung der ESAPI] erklärt. Die Normalisierungs-Funktion ist allerdings schon vor einiger Zeit aus der ESAPI [https://lists.owasp.org/pipermail/esapi-dev/2010-January/000266.html rausgeflogen]. Die generelle Kanonisierung von Ausgaben halte ich dazu für nicht sinnvoll.&lt;br /&gt;
&lt;br /&gt;
Zweitens, finde ich den weiteren Text zwar grundsätzlich formal korrekt, aber so allgemein, dass dieser glaube ich niemandem so richtig etwas bringt.  &lt;br /&gt;
&lt;br /&gt;
Besser fände ich hier Ein- von Ausgabevalidierung grundsätzlich voneinander abzugrenzen. Etwa was ich per Eingabevalidierung (Längenprüfung, Casting, etc. per Whitelisting) und was mit Ausgebavalidierung (Enkodierung, Escaping, Parametrisierung) machen muss und kann.&lt;br /&gt;
&lt;br /&gt;
Eingabedaten können technisch zudem auch Werte eingelesener Property-Dateien sein. Muss ich die auch validieren? Ist das dann noch Grundschutz? &lt;br /&gt;
&lt;br /&gt;
; 7. &amp;quot;Für den Zugriff auf sensitive Funktionen oder Informationen muss die Web-Anwendung eine wirksame Authentisierung und Sitzungsverwaltung unterstützen. Die Eigenschaften der Sitzungs-ID müssen so gewählt werden, dass die Sitzung ausreichend geschützt ist. ....&amp;quot;&lt;br /&gt;
&lt;br /&gt;
Besser fände ich &amp;quot;eine Authentisierung, die über eine dem Schutzbedarf der Anwendung angemessene Stärke verfügt.&amp;quot; &lt;br /&gt;
&lt;br /&gt;
Eigentlich geht es doch mehr um den Schutz der Sitzungs-ID, da diese gewöhnlich im Verlauf einer Sitzung den Client authentisiert. Oder den Schutz des Zugriffs auf eine Sitzung. &lt;br /&gt;
&lt;br /&gt;
Zudem fehlt hier meiner Meinung nach der Hinweis auf die bevorzugte Verwendung getesteter Standardkomponenten.&lt;br /&gt;
&lt;br /&gt;
; 8. &amp;quot;Die Web-Anwendung sollte die zu übermittelnden Daten schützen.&amp;quot;&lt;br /&gt;
&lt;br /&gt;
Dies würde ich nur auf sensible Daten beziehen. Zusätzlich zu HTTPS würde ich hier schreiben, dass sensible Daten generell nicht in der URL übertragen werden dürfen.&lt;br /&gt;
&lt;br /&gt;
; 9. &amp;quot;Die Preisgabe interner Informationen (z.B. Kommentare, Fehlermeldungen)&amp;quot;&lt;br /&gt;
&lt;br /&gt;
Hier würde ich eher schreiben &amp;quot;(IN Kommentaren, Fehlermeldungen, HTTP Headern, etc.)&amp;quot;&lt;br /&gt;
&lt;br /&gt;
; 10. &amp;quot;Fehler müssen so behandelt werden, ... müssen Fehler bei der Autorisierung zu einer Verweigerung beim Zugriff auf die angeforderte Ressource führen.&amp;quot;&lt;br /&gt;
&lt;br /&gt;
Sprachlich: &amp;quot;Die Webanwendung muss sich stets in einem sicheren Zustand befinden. Beispielsweise müssen Fehler bei der Autorisierung zu einer Verweigerung des Zugriffs führen (Default-Deny-Strategie).&amp;quot;&lt;br /&gt;
&lt;br /&gt;
; 11. &amp;quot;Die Logging-Funktionen der Web-Anwendung müssen aufgetretene Ereignisse derart protokollieren, dass sicherheitskritische Vorfälle nachvollzogen werden können.&amp;quot;&lt;br /&gt;
&lt;br /&gt;
Hier würde hier eher von &amp;quot;allen sicherheitsrelevanten Ereignissen&amp;quot; sprechen.&lt;br /&gt;
&lt;br /&gt;
Weiterhin sollten insbesondere beim Logging der Datenschutz berücksichtigt werden, personenbezogene Daten also nach Möglichkeit nicht oder nur anonymisiert in technischen Logdateien protokolliert werden.&lt;br /&gt;
&lt;br /&gt;
; 12. &amp;quot;Alle Sicherheitsmechanismen (z.B. Authentisierung und Zugriffskontrolle) sind serverseitig zu implementieren und können nicht durch clientseitige Mechanismen ersetzt werden.&amp;quot;&lt;br /&gt;
&lt;br /&gt;
Die Aussage ist so nicht korrekt. Darüber hatten wir bereits bei der ASVS mehrfach diskutiert. &lt;br /&gt;
&lt;br /&gt;
Überall dort wo der Client angegriffen wird, also etwa bei RIAs (Stichwort DOM-Based XSS) müssen wir Security Controls clientseitig implementieren. Es gibt mittlerweile deshalb auch eine Portierung der ESAPI auf Javascript. Überall dort wo der Server oder Hintegrundsysteme angegriffen werden, ist die Aussage aber natürlich zutreffend.&lt;br /&gt;
&lt;br /&gt;
== &amp;quot;Gefährdungen&amp;quot; (Markus, Dennis, .... &amp;lt;Dein Name&amp;gt;) ==&lt;br /&gt;
; Generell:&lt;br /&gt;
Reference auf RFCs fehlen.&lt;br /&gt;
&lt;br /&gt;
==B.5.XX Web-Anwendungen ==&lt;br /&gt;
; 1. Erster Absatz - Letzter Satz: --Wieso werden hier nur HTML/XML Doks und Oberflächen angesprochen? Was ist der Unterschied zwischen einem HTML-Dok und einer Oberfläche? Was ist mit  Flash, etc.? Was ist mit WebSockets?&lt;br /&gt;
; 2. Stichpunkt &amp;quot;Protokollierung&amp;quot;: Sicherheits relevant ist ein sehr dehnbarer Begriff - Eine bessere Formulierung könnte sein: Zur Rekonstruktion von Nutzerhandlungen nötige Ereignisse (positve &amp;amp; negative) müssen protokolliert werden . . . &lt;br /&gt;
; 3. Absatz: &amp;quot;Abgrenzung des Bausteins&amp;quot;: &amp;quot;Die spez. Sicherheitsanforderungen an Web-Services werden in diesem Baustein nicht betrachtet&amp;quot; --&amp;gt; Wie so nicht? Was ist das Backend von einer Rest / AJAX-basierenden Webanwendung denn anderes als ein Web-Service? Diesen Satz würde ich entfernen.&lt;br /&gt;
; 4.Vorsätzliche Handlungen -&amp;gt; Web-Spoofing (G.5.87) -- Missverständliche Bezeichnung / Nomenklatur&lt;br /&gt;
; 5. Seite 4 : erste Zeile &amp;quot;Umsetzung&amp;quot;: &amp;quot;dafür umzusetztende Komponenten müssen die Webanwendung schützen...&amp;quot; - Hier fehlt mir der Hinweis, dass dieser Schutz verifiziert werden muss.&lt;br /&gt;
; 6 Seite 5: &amp;quot;Umsetzung&amp;quot; - Wir haben CSRF, D(D)os und SQL-Injection aber wo ist XSS?&lt;br /&gt;
; 7 Seite 7: &amp;quot;Die Sicherheitsfunktion wird ausschließlich clientseitig...&amp;quot; --&amp;gt; Warum muss der Angreifer überhaupt einen Browser umkonfigurieren? Was ist mit Proxies, Scripts, etc.? Ich würde das reduzieren darauf, dass rein Webbrowser-basierende Schutzfunktionen einfach umgangen werden können.&lt;br /&gt;
; 8 Seite 8: Die angesprochenen Punkte hinterlassen den Eindruck nicht vollständig zu sein: Mir fehlen Punkte wie &amp;quot;Outsourcing&amp;quot;, &amp;quot;KnowHow der Entwickler&amp;quot;, Tooling, Framework-Auswahl, etc.&lt;br /&gt;
; 9 Seite 9: Eigentlich möchte der Autor hier über Datenschutz sprechen. Abgesehen von den letzten drei Zeilen geht es aber nur um &amp;quot;User tracking&amp;quot; - Wo ist der Rest der Datenschutzproblematik? Warum der Fokuss auf Tracking? Mir ist das zu einseitig.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
tbd.&lt;br /&gt;
&lt;br /&gt;
; Wortwahl:&lt;br /&gt;
Ich stosse innerhalb der Texte immer wieder an die Worten '''Hintergrundsystem''' und '''Sicherheitskontext'''.&lt;br /&gt;
'''Hintergrundsystem:''' besseres Synonym?&lt;br /&gt;
'''Sicherheitskontext:''' nur weil es in den Texten um Sicherheit geht muss nicht an jeder Stelle immer wieder das Wort _Sicherheits_kontext eingebaut werden.&lt;br /&gt;
Bsp: &amp;quot;Erlangt ein Angreifer Kenntnis von einer solchen gültigen, aber nicht mehr genutzten SessionID, so kann er die Web-Anwendung im Sicherheitskontext des nicht abgemeldeten Benutzers weiter verwenden.&amp;quot; (G 5,WA12 Unzureichendes Session-Management von Web-Anwendungen)&lt;br /&gt;
Verbesserungsansansatz: ... so kann er die Web-Anwendung anstelle des eigentlichen Besitzers weiterhin verwenden.&lt;br /&gt;
&lt;br /&gt;
== &amp;quot;G 2.WA01 Mangelhafte Auswahl oder Konzeption von Web-Anwendungen&amp;quot; (Matthias) ==&lt;br /&gt;
&lt;br /&gt;
Nachdem ich mir diese Gefährdung durchgelesen hatte, fehlten mir ehrlich gesagt etwas die Worte. Nicht nur, dass hier fast jeder zweite Satz entweder falsch ist bzw. massive Fehler enthält oder ich diesen schlicht nicht verstehe, ist der ganze Text sprachlich wirklich enorm verbesserungsfähig. &lt;br /&gt;
&lt;br /&gt;
Na gut, ich konzentriere mich mal auf die fachlichen Punkte:&lt;br /&gt;
&lt;br /&gt;
; 1. Security Controls&lt;br /&gt;
Werden mal mit &amp;quot;Schutzmechanismen&amp;quot;, mal mit &amp;quot;Sicherheitskomponenten&amp;quot; und dann wieder als &amp;quot;Sicherheitsfunktionen&amp;quot; bezeichnet. Hier macht eine einheitliche Benennung sicherlich Sinn und ist weniger verwirrend.&lt;br /&gt;
&lt;br /&gt;
; 2. &amp;quot;Eine Web-Anwendung ist in der Regel ein verteiltes, komplexes System bestehend aus unterschiedlichen Komponenten (z. B. Webserver, Applikationsserver, Hintergrundsysteme)&amp;quot;&lt;br /&gt;
&lt;br /&gt;
Eine Webanwendung besteht sicher nicht aus einem Webserver- oder anderer infrastruktureller Komponenten, sondern ist Software welches diese nutzt.&lt;br /&gt;
&lt;br /&gt;
; 3. &amp;quot;Bei individuell entwickelten Web-Anwendungen sind im Allgemeinen die Frameworks, Komponenten und Schnittstellen im Rahmen der Konzeption auszuwählen und deren Einbindung und Absicherung zu betrachten....Im Gegensatz dazu ist bei der Konzeption von Web-Anwendungen auf Basis von Standardsoftware insbesondere auf die Auswahl der Software und die Konfiguration der Teilkomponenten zu achten&amp;quot;&lt;br /&gt;
&lt;br /&gt;
Wir unterscheiden im Rahmen von Webanwendungen eigentlich Free or Opensource Software (FOSS bzw. FLOSS), Standardsoftware und Individualsoftware voneinander. Wir unterscheiden nicht Frameworks von Standardsoftware. Frameworks können Teil von Standardsoftware sein, wie etwa bei SharePoint, SAP, etc, oder aber FOSS, wie etwa Spring. Die ganzen Absätze machen für mich daher keinen Sinn.&lt;br /&gt;
&lt;br /&gt;
; 4. &amp;quot;Eine Sicherheitsfunktion (z. B. Authentisierung, Autorisierung) wird nicht an einer Stelle umgesetzt und verwendet, sondern ist mehrfach in der Web- Anwendung realisiert. Wird diese Sicherheitsfunktion an den verschiedenen Stellen unterschiedlich umgesetzt, führt dies zu einem uneinheitlichen Sicherheitsniveau.&amp;quot;&lt;br /&gt;
&lt;br /&gt;
Natürlich ist die mehrfache Verwendung bestimmter Security Controls, beispielsweise von Zugriffskontrollen (Complete-Mediation) oder Validierung (Robustheit) erstrebenswert. Was der Autor hier wahrscheinlich meinte, war die Notwendigkeit diese zu Kapseln bzw. zu Externalisieren. Das bezieht sich im übrigen nicht nur auf die Controls selbst, sondern auch auf ihre Parametrisierung (etwa. über Konfigdateien / XACML).&lt;br /&gt;
&lt;br /&gt;
Wichtiger wäre in diesem Zusammenhang zudem die fehlende Berücksichtigung bestimmter Security Controls.&lt;br /&gt;
&lt;br /&gt;
; 5. &amp;quot;Auswahl von Web-Anwendungen auf Basis von Standardsoftware&amp;quot;&lt;br /&gt;
Was will der Satz sagen? Ich wähle Standardsoftware aus, aber doch keine Webanwendungen. Oder heißt das, ich kaufe eine existierende Anwendung ein (Webanwendung!=Indivudualsoftware)? &lt;br /&gt;
&lt;br /&gt;
; 6. &amp;quot;Das ausgewählte Produkt verfügt nicht über die ausreichende Sicherheitsfunktionalität, ... Daher müssen die notwendigen Schutzmechanismen nachträglich hinzugefügt werden, wodurch zusätzliche Aufwände entstehen.&amp;quot;&lt;br /&gt;
Das ist etwas sehr positiv formuliert. Tatsächlich können fehlende Security Controls in zugekaufter Software (insb. Standardsoftware) in der Realität häufig gar nicht hinzugefügt werden oder nur perimetrisch (z.B. per WAF oder Access Gateway).&lt;br /&gt;
&lt;br /&gt;
; 7. &amp;quot;Die Hintergrundsysteme werden unzureichend abgesichert und dadurch ist die Datenbank der Web-Anwendung aus dem Internet erreichbar.&amp;quot;&lt;br /&gt;
Gehören fehlende Netzwerksegmentierung bzw. Firewallregeln wirklich in diesen Kontext? Das ist doch eigentlich Grundschutz der Infrastruktur, oder?&lt;br /&gt;
&lt;br /&gt;
; 8. &amp;quot;Aufgrund schwacher Parameter in der Konfiguration des Frameworks zum Session-Management werden unsichere SessionIDs erzeugt.&amp;quot;&lt;br /&gt;
Was sind &amp;quot;schwache&amp;quot; Parameter?&lt;br /&gt;
&lt;br /&gt;
Welches Framework erlaubt unsichere SessionIDs durch eine &amp;quot;schwache&amp;quot; Konfiguration zu erzeugen?&lt;br /&gt;
&lt;br /&gt;
; 9. &amp;quot;Wird die Konfiguration des Web-Browsers durch einen Angreifer manipuliert, können die clientseitig umgesetzten&amp;quot;&lt;br /&gt;
&lt;br /&gt;
Manipuliert ein Angreifer die Konfguration seines Webbroswers, wenn er einen MITM-Proxy konfiguriert?&lt;br /&gt;
&lt;br /&gt;
Wie bereits bei den &amp;quot;Goldenen Regeln&amp;quot; angemerkt, gilt auch hier, das manche Security Controls auch clientseitig umgesetzt werden dürfen (etwa. zur Verhinderung von Dom-Based XSS).&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== &amp;quot;G 5.WA10 Fehler in der Web-Anwendungslogik&amp;quot; (Dennis) ==&lt;br /&gt;
; 1. &amp;quot;Damit kann aufgrund der Prüfreihenfolge ein hoher Ressourcenverbrauch provoziert werden, der für Denial-of-Service-Angriffe ausgenutzt werden kann.&amp;quot;&lt;br /&gt;
Meiner Meinung nach passt in diesem Kontext die Attacke DoS nicht ganz. Falls die nachfolgende Funktionalität wegen der langen Ausführungszeit der Filterkomponente übersprungen wird bzw. ein Fehler auftritt würde dies meiner Ansicht in die Thematik Anwendungslogik passen. Eine DoS-Attacke kann hingegen anhand jeder Funktion durchgeführt werden.&lt;br /&gt;
&lt;br /&gt;
== &amp;quot;G 5.WA11 Umgehung clientseitig umgesetzter Sicherheitsfunktionen von Web-Anwendungen&amp;quot; (Dennis) ==&lt;br /&gt;
; 1. &amp;quot;Ein Angreifer kann diese ausnutzen, um beispielsweise unbefugt Befehle an Hintergrundsysteme der Web-Anwendung zu übermittlen (z.B. in Form von Datenbankanfragen bei einer SQL-Injection).&amp;quot;&lt;br /&gt;
Umformulierung des Inhalts der Klammer. Hatte beim ersten Lesen für mich den Anschein, als ob ein Formular genutzt werden könnte welches den Nutzer aufforder eine SQLI einzugeben. Ich denke &amp;quot;Datenbankanfrage zwecks Ausführung einer SQL-Injection&amp;quot; würde besser passen.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== G 2.WA02 Mängel bei der Entwicklung und der Erweiterung von Web-Anwendungen (Matthias) ==&lt;br /&gt;
&lt;br /&gt;
Allgemein ist de obere Teil ok, die aufgezählten &amp;quot;Auswirkungen von fehlenden Vorgaben&amp;quot; verstehe ich jedoch nicht. Wo ist etwa der Bezug von Barrierefreiheit auf die Anwendungssicherheit?&lt;br /&gt;
&lt;br /&gt;
Mein Vorschlag, um diese Punkte etwa sinnvoll umzubauen:&lt;br /&gt;
* &amp;quot;Fehlendes Vorgehensmodell&amp;quot;: Bezug auf fehlende Berücksichtigung von Sicherheit im SDLC. Statt eines SDLCs selbst sollte hier besser auf die Notwendigkeit eines Secure Development Lifecycle (SDL) hingewiesen werden&lt;br /&gt;
* &amp;quot;Fehlende Programmierrichtlinien&amp;quot; =&amp;gt; Besser wäre hier &amp;quot;Fehlende Sicherheitsrichtlinien in der Programmierung&amp;quot; also &amp;quot;Secure Coding Guidelines&amp;quot;&lt;br /&gt;
* &amp;quot;Testfälle&amp;quot; =&amp;gt; &amp;quot;Sicherheitsrelevante Testfälle&amp;quot; (z.B. Security Unit Tests). &lt;br /&gt;
* &amp;quot;Barrierefreiheit&amp;quot;: Warum nicht an dieser Stelle die Auswirkungen von Sicherheitsfunktionen auf die Bedienbarkeit, etwa anhand von CAPTCHAS erläutern?&lt;br /&gt;
&lt;br /&gt;
== G 2.WA03 Unzureichender Schutz personenbezogener Daten bei Web-Anwendungen (Matthias) ==&lt;br /&gt;
&lt;br /&gt;
Der Titel dieses Bausteines heißt &amp;quot;Schutz personenbezogener Daten&amp;quot;, die genannten Beispiele beziehen sich bis auf den letzten jedoch auf die missbräuchliche (oder zumindest problematische) Nutzung aus Sicht des Datenschutzes. &lt;br /&gt;
&lt;br /&gt;
Die Punkt 1-3 sollten daher besser entfallen und z.B. durch die Folgenden ersetzt werden:&lt;br /&gt;
* Unsichere Einbindung von sozialen Netzwerken (Bezug nehmen auf den Like-Button bei Facebook)&lt;br /&gt;
* Unsichere Einbindung von Werbeinhalten&lt;br /&gt;
* Unsichere Übertragung und Caching&lt;br /&gt;
* Unsichere Protokollierung&lt;br /&gt;
* Ungenügender Zugriffsschutz&lt;br /&gt;
* Verstoß des Minimalprinzips bzw. der Zweckgebundenheit (welche Daten werden wirklich benötigt)&lt;br /&gt;
&lt;br /&gt;
Auch wäre es ggf. zumindest einen Verweis auf das BDSG zu machen.&lt;br /&gt;
&lt;br /&gt;
== G 4.33 Unzureichende oder fehlende Authentisierung (Matthias) ==&lt;br /&gt;
&lt;br /&gt;
; 1. Erster Absatz: &amp;quot;Wenn Authentisierungsmechanismen fehlen oder zu schlecht sind&amp;quot;&lt;br /&gt;
&lt;br /&gt;
&amp;quot;schlecht&amp;quot; sollte vlt besser durch &amp;quot;unzureichend&amp;quot; ersetzt werden.&lt;br /&gt;
&lt;br /&gt;
; 2. &amp;quot;Sicherheitslücken entstehen bei... der Benutzerauthentisierung&amp;quot;&lt;br /&gt;
&lt;br /&gt;
Hier findet nur ein Bezug auf &amp;quot;Passwörter&amp;quot; statt. Der Bezug auf die fehlerhaft implementierte oder dem Schutzbedarf ungenügende Schutzmechanismen (z.B. keine 2-Faktor-Authentisierung bei hochsensiblen Daten) fehlt. Auch auf das komplette fehlen von Authentisierungs-Controls wird hier nicht  eingegangen&lt;br /&gt;
&lt;br /&gt;
; 3. &amp;quot;Sicherheitslücken entstehen bei... der Komponentenauthentisierung&amp;quot;&lt;br /&gt;
&lt;br /&gt;
Wie bei 2., wird auch hier wieder nur auf Passwörter, nicht jedoch auf das fehlen von Controls selbst eingegangen. An dieser Stelle fehlt auch ein Hinweis auf die Notwendigkeit dedizierter Benutzeraccounts.&lt;br /&gt;
&lt;br /&gt;
; 4. &amp;quot;Sicherheitslücken entstehen bei... der Wahl des Verfahrens&amp;quot;&lt;br /&gt;
&lt;br /&gt;
Statt untauglich würde ich auch hier von &amp;quot;dem Schutzbedarf der Daten nicht angemessen&amp;quot; sprechen, eigentlich gehört das für mich aber in die obigen Punkte.&lt;br /&gt;
&lt;br /&gt;
; 5. Serverseitige Authentisierung fehlt&lt;br /&gt;
&lt;br /&gt;
Auch der Server (bzw. die Anwendung selbst) kann sich fehlerhaft oder ungenügend beim Benutzer authentsieren, etwa über DNS, SSL-Zertifikate, etc.&lt;br /&gt;
&lt;br /&gt;
== G 4.WA04 Unzureichende Validierung von Ein- und Ausgabedaten bei Web-Anwendungen (Matthias) ==&lt;br /&gt;
&lt;br /&gt;
; 1. &amp;quot;Unzureichende Validierung von Eingabedaten&amp;quot;&lt;br /&gt;
&lt;br /&gt;
Die genannten Beispiele sind genau keine korrekten Beispiele für diesen Fall, sondern betreffen die Ausgabevalidierung bzw. Enkodierung. Typische Fehler der Eingabevalidierung ist eine Manipulierbarkeit der Business Logik.&lt;br /&gt;
&lt;br /&gt;
; 2. &amp;quot;Unzureichende Validierung von Ausgabedaten&amp;quot;&lt;br /&gt;
&lt;br /&gt;
Hier geht es zentral um die Verhinderung von Interpreter Injection, also serverseitig (z.B. SQL oder LDAP Injection) oder clientseitig (XSS, JSON Injection, etc.). Statt &amp;quot;können die Ausgaben Schadcode&amp;quot; enthalten würde ich hier eher davon Sprechen, dass ein solcher Interpreteraufruf manipuliert werden kann (was dann z.B. zur Einschleusung von Schadcode genutzt werden kann).&lt;br /&gt;
&lt;br /&gt;
; 3. &amp;quot;Die Suchfunktion der Web-Anwendung verwendet die Eingaben der Benutzer ungefiltert&amp;quot;&lt;br /&gt;
&lt;br /&gt;
Mit ungenügender &amp;quot;Filterung&amp;quot; hat SQL Injection nichts zu tun,  eigentlich geht es hierbei darum, dass SQL-Anfragen dynamisch mit unvalidierten Eingebedaten zusammengebaut (konkateniert) werden.&lt;br /&gt;
&lt;br /&gt;
; 4. &amp;quot;Ungefilterter HTML-Code in Kommentar-Funktion&amp;quot;&lt;br /&gt;
&lt;br /&gt;
Hier fehlt der Bezug auf persistentes XSS, das hier sicherlich zentral ist.&lt;br /&gt;
&lt;br /&gt;
== G 4.WA05 Fehlende oder mangelhafte Fehlerbehandlung durch Web-Anwendungen (Tobias, Matthias) ==&lt;br /&gt;
; Abschnitt &amp;quot;Unsichere Fehlerbehandlung&amp;quot;&lt;br /&gt;
Die G adressiert &amp;quot;Unsichere Fehlerbehandlung&amp;quot;, der Abschnitt die &amp;quot;Unsichere Fehlerbehandlung in Sicherheitskomponenten&amp;quot;. Entsprechend sollte der fettgedruckte Teil angepasst werden.&lt;br /&gt;
&lt;br /&gt;
; &amp;quot;fehlende SQL-Parameter,&amp;quot;&lt;br /&gt;
Sollte besser &amp;quot;Fehlermeldungen bei ungültigen SQL-Abfragen&amp;quot; lauten.&lt;br /&gt;
&lt;br /&gt;
; &amp;quot;Auch scheinbar unkritische Informationen, wie die Meldung ob (..)&amp;quot;&lt;br /&gt;
Korrekt, allerdings nicht nachvollziehbar, wenn das Problem der Leser nicht schon bekannt ist. Daher erweitern nach &amp;quot; Rahmen von Brute-Force-Angriffen ausgenutzt werden.&amp;quot; mit &amp;quot;. Bei Brute-Force-Angriffen wäre in diesem Fall klar, dass der Benutzername gültig ist.&amp;quot;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[User:Mrohr|Matthias]]): Stimme dem Obigen auch zu, ausserdem:&lt;br /&gt;
&lt;br /&gt;
; Sprachlich: &amp;quot;kann dies unvorhersehbare Auswirkungen haben und den Betrieb der Web-Anwendung bis zur Unerreichbarkeit einschränken.&amp;quot;&lt;br /&gt;
&lt;br /&gt;
&amp;quot;Unerreichbarkeit&amp;quot; ist etas merkwuerdig ausgedrueckt, besser ware hier von der &amp;quot;Verfuegbarkeit&amp;quot; zu sprechen. Im Uebrigen fehlt vollstaendig der Bezug auf die Verfuegbarkeit als Primaeres Schutzziel der Informationssicherheit.&lt;br /&gt;
&lt;br /&gt;
; &amp;quot;Clientseitige Fehlerbehandlung&amp;quot;&lt;br /&gt;
Das stimmt soweit, das generelle Problem ist jedoch genereller, naehmlich die clientseitige Abbildung sicherheitsrelaventer Logik (in diesem Fall die Fehlerbehandlung)&lt;br /&gt;
&lt;br /&gt;
== G 4.WA06 Unzureichende Nachvollziehbarkeit von sicherheitsrelevanten Ereignissen bei Web-Anwendungen (Matthias) ==&lt;br /&gt;
&lt;br /&gt;
; 1. Erster Absatz: &amp;quot;Die Behebung einer Schwachstelle ist dann nicht oder nur unter erschwerten Bedingungen möglich.&amp;quot;&lt;br /&gt;
&lt;br /&gt;
Hier würde ich ergänzen: &amp;quot;...und Angriffe auf die Anwendungen können ggf. nicht erkannt oder nachvollzogen werden&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
; 2. &amp;quot;Beispiele&amp;quot;: Kommulierbarkeit&lt;br /&gt;
&lt;br /&gt;
Hier fehlt auch ein Bezug auf die Kommulierbarkeit von SIcherheitsereignissen, dass diese also auch von solchen anderer Systeme in Verbindung gesetzt werden können&lt;br /&gt;
&lt;br /&gt;
; 3. &amp;quot;Beispiele&amp;quot;: Gerichtsverwertbarkeit&lt;br /&gt;
&lt;br /&gt;
Auch die Möglichkeit zur Gerichtsverwertbarkeit (etwa durch eindeutigen Zeitstempel) und manipulationssicherer Speicherung, würde ich an dieser Stelle unbedingt erwähnen.&lt;br /&gt;
&lt;br /&gt;
== G 4.WA07 Offenlegung von Informationen bei Web-Anwendungen (Matthias) ==&lt;br /&gt;
&lt;br /&gt;
; 1. Titel&lt;br /&gt;
&lt;br /&gt;
Hier würde ggf. &amp;quot;Offenlegung vertraulicher Informationen&amp;quot; sicher besser passen als &amp;quot;Offenlegung von Informationen&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
; 2. Beispiellink&lt;br /&gt;
&lt;br /&gt;
Ein Beispiellink (mit und ohne Token) würde sicher die Verständlichkeit dieser Schwachstelle verbessern.&lt;br /&gt;
&lt;br /&gt;
; 3. Erster Absatz: &amp;quot;Wenn demzufolge Informationen unnötig offengelegt werden, steigt die Wahrscheinlichkeit eines erfolgreichen Angriffs.&amp;quot;&lt;br /&gt;
&lt;br /&gt;
Interne Informationen auszublenden ist eine Härtungsmaßnahme, deren Anzeige erhöht aber nicht zwangsläufig die Wahrscheinlichkeit eines erfolgreichen Angriffs. Ich würde diesen Satz weglassen.&lt;br /&gt;
&lt;br /&gt;
 ; 4. Fehlende Punkte&lt;br /&gt;
&lt;br /&gt;
* Ein Hinweis auf HTTP Header wäre hier sicher erwähnenswert.&lt;br /&gt;
* Weiterhin bzgl. der Anzeige von Traces und ein Verweis auf den Entsprechenden Baustein zur Fehlerbehandlung&lt;br /&gt;
&lt;br /&gt;
== G 5.WA14 Cross-Site Request Forgery (CSRF, XSRF) (Matthias) ==&lt;br /&gt;
&lt;br /&gt;
; 1. Erster Absatz: &amp;quot;Können Funktionen einer Web-Anwendung ohne weitere Überprüfung der Authentizität des HTTP-Requests (z.B. durch Tokens in versteckten Formularfeldern) genutzt werden&amp;quot;&lt;br /&gt;
&lt;br /&gt;
Statt &amp;quot;Funktionen&amp;quot; würde ich besser von &amp;quot;schreibenden Aktionen&amp;quot; sprechen, dann macht der Satz mehr Sinn.&lt;br /&gt;
&lt;br /&gt;
; 2. Dritter Absatz: &amp;quot;Im Gegensatz zu XSS (siehe ...￼ ) ist das Angriffsziel nicht die Information auf dem Client (z. B. in Cookies),&amp;quot;&lt;br /&gt;
&lt;br /&gt;
Dieser (Halb-)Satz macht keinen Sinn, auch weil es bei XSS nicht nur im Informationen auf dem Cient geht. Vorschlag: &amp;quot;ist das Angriffsziel nicht die Ausführung von Skriptcode, sondern von unbefugten, schreibenden Aktionen im Kontext des angemeldeten Benutzers.&amp;quot;&lt;br /&gt;
&lt;br /&gt;
; 3. Session Riding&lt;br /&gt;
&lt;br /&gt;
Session Riding ist quasi nur ein anderer Begriff für CSRF. Die einzige Form von CSRF die mir bekannt ist, sind Angriffe mit Standard-Passwörtern auf HTTP-Basic-Auth geschützten Ressourcen.&lt;br /&gt;
&lt;br /&gt;
Im Grunde ist Session Riding aber nur ein Synonym für CSRF. Der Absatz ist daher auch nur eine Wiederholung der obigen Beschreibung.&lt;br /&gt;
&lt;br /&gt;
; 4. Zum Beispiel: &amp;quot;Durch einen präparierten Link auf einer Webseite wird die Änderung des Zugangspasswortes des Routers eingeleitet.&amp;quot;&lt;br /&gt;
&lt;br /&gt;
Etwas ungüngstig ausgedrückt. Besser wäre: &amp;quot;wird eine Anfrage zur Änderung des Zugangspasswortes an den Router gesendet. Hierbei sendet der Browser automatisch den Session Cookie mit, worüber die Webanwendung die Authentizität der Anfrage verifiziert und die Änderung durchführt.&amp;quot;&lt;br /&gt;
&lt;br /&gt;
== G 5.WA18 Clickjacking (Matthias) ==&lt;br /&gt;
&lt;br /&gt;
Hier stellt sich mir nur die allgemeine Frage, ob Clickjacking, bzw. der Schutz davor tatsächlich einem Grundschutz zuzurechnen ist. Persönlich würde ich dies nicht tun.&lt;br /&gt;
&lt;br /&gt;
== M 2.WA02 Dokumentation der Architektur von Web-Anwendungen (Matthias) ==&lt;br /&gt;
&lt;br /&gt;
; Verantwortlich für die Umsetzung&lt;br /&gt;
Hier wäre auch die Nennung des &amp;quot;Architekten&amp;quot; sinnvoll&lt;br /&gt;
 &lt;br /&gt;
; Fehlende Bestandteile der Dokumentation:&lt;br /&gt;
* Schutzbedarf des Systems sowie der verarbeiteten Daten&lt;br /&gt;
* Schützenswerte Daten und Funktionen (Assets)&lt;br /&gt;
* Betriebliche Anforderungen an die Sicherheit bzw. eingesetzte Plattform&lt;br /&gt;
* Dokumentierte Konfigurationseinstellungen &lt;br /&gt;
* BIA (RTO, RPO)&lt;br /&gt;
* Schnittstellen&lt;br /&gt;
* Trust Boundaries&lt;br /&gt;
* Akteure (bzw. Trust Level)&lt;br /&gt;
* Sicherheitsannahmen&lt;br /&gt;
* Geltende Compliance-Anforderungen (BDSG, PCI DSS, etc.)&lt;br /&gt;
&lt;br /&gt;
; Benutzermanagement&lt;br /&gt;
&lt;br /&gt;
Wenn damit das Identity Management gemeint ist, gehört das Dokumentiert, ist aber keine Sicherheitsfunktion. Oder ist hiermit das Rollen- und Berechtigungskonzept gemeint? Grenzt sich aus meiner Sicht schwer mit dem Thema Authentisierung ab. &lt;br /&gt;
&lt;br /&gt;
; Prüffragen&lt;br /&gt;
&lt;br /&gt;
Hier fehlt etwas in Bezug auf Sicherheitsanforderungen. Beispiel: &amp;quot;Werden Sicherheitsanforderungen an den Betrieb während der Entwicklung abgestimmt und dokumentiert&amp;quot;&lt;br /&gt;
&lt;br /&gt;
== M 2.WA12 Entwicklung und Erweiterung von Anwendungen (Markus) ==&lt;br /&gt;
; &amp;quot;Es sollte darauf geachtet werden, dass Sicherheitsanforderungen&lt;br /&gt;
vollständig durch Sicherheitsmechanismen erfüllt und zur Erstellung von&lt;br /&gt;
Testfällen festgehalten werden.&amp;quot; --&amp;gt; Bessere Formulierung würde aussagen, dass die Sicherheitsanforderungen durch Testfälle verifiziert werden.&lt;br /&gt;
&amp;quot;(z. B. durch Kommentare im&lt;br /&gt;
Quelltext). Somit ist der Quelltext zu einem&amp;quot; --&amp;gt; Das ist kein empfehlenswerter Programmierstiel! Raus mit diesem Kommentar&lt;br /&gt;
;&amp;quot;Zum Schutz vor dem Verlust bereits entwickelter und verworfener&lt;br /&gt;
Lösungen sowie zu Dokumentationszwecken sollte die Historie der&lt;br /&gt;
Änderungen festgehalten werden (z. B. durch ein Revisionssystem).&amp;quot; --&amp;gt; Auch diesen Absatz können wir streichen - Kein professioneller Programmierer arbeitet ohne Versionierugssystem.&lt;br /&gt;
;&amp;quot;Bei Web-Anwendung sollten die Webseiten auf Konformität zu dem&lt;br /&gt;
verwendeten Standard (z. B. HTML-Standard) getestet werden. Dadurch&lt;br /&gt;
können unvorgesehene Seiteneffekte aufgrund einer Fehlinterpretation&lt;br /&gt;
seitens der Browser vermieden werden.&amp;quot; --&amp;gt; Könnte man noch um &amp;quot;Die Software ist in möglichst vielen Browsern zu testen&amp;quot; erweitern.&lt;br /&gt;
;Generell geht der Autor leider nicht auf die Rollen &amp;amp; Rechte Verteilung ein. Mir fehlt der Hinweis, das es eine personelle Trennung zwischen Entwicklung, Test und Betrieb geben muss.&lt;br /&gt;
;Zum Thema Wartung / Betrieb --&amp;gt; Hier wird keine Aussage getroffen bezüglich Log_Files. Dieses Thema kann kritische Auswirkungen haben, Bsp.: logging ganzer HTTP-Requests im LogLevel=Debug.&lt;br /&gt;
; &amp;quot;Produktspezifische Sicherheitsfunkionalität&amp;quot; - Dieser Absatz ist gefährlich - der Angreifer ist nicht zur Verwendung dies Zielbrowsers gezwungen. Deshalb können Browser-spez. Sicherheitsfunktionen nur als Add-ON gewertet werden.&lt;br /&gt;
; &amp;quot;Festlegung der Entwicklungsumgebung&amp;quot; - Dieser Absatz geht nicht auf die zu verwendenden Testdaten ein. Der Hinweis, dass Live-Daten / Kundendaten nichts in Test- &amp;amp; Entwicklungsumgebungen zu suchen haben fehlt!!!&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== M 2.WA24 Web-Tracking (Matthias) ==&lt;br /&gt;
&lt;br /&gt;
; Letzter Absatz: &amp;quot;Falls eine Auswertung von Nutzerdaten, insbesondere personenbezogener Daten, .. &amp;quot;&lt;br /&gt;
&lt;br /&gt;
Hier sollte denke ich besser von personenbeziehbaren Daten gesprochen Werten. Dies betrifft etwa die Zuordnung von Surfverhalten zu einer bestimmten Person. Dies sollte stets nach den Prinzipien Datensparsamkeit und Datenvermeidung, Erforderlichkeit, sowie Zweckbindung erfolgen. Ist Webtracking nicht personenbeziehbar ist dies kein Thema für den Datenschutz.&lt;br /&gt;
&lt;br /&gt;
== M 4.WA04 Authentisierung bei Web- Anwendungen (Matthias) ==&lt;br /&gt;
&lt;br /&gt;
; Vermischung von Authentisierung und Session Management &lt;br /&gt;
&lt;br /&gt;
Bei diesem Baustein findet eine ziemlich große Vermischung von Anforderung an die Authentisierung und das erst in &amp;quot;M 4.WA06 Session-Management bei Web- Anwendungen&amp;quot; behandelte Session Management statt (Beispiel: &amp;quot;Remember-Me-Funktion&amp;quot;). Beide Themen sollten sinnvollerweise getrennt voneinander zu betrachten und aufeinander zu beziehen.&lt;br /&gt;
&lt;br /&gt;
; Verwendung von Frameworks&lt;br /&gt;
&lt;br /&gt;
Die Anforderung ist schon ein wenig eingeschränkt. Besser passt hier denke ich die &amp;quot;Abbildung der Authentisierung über Standardkomponenten (Bibliotheken oder Frameworks)&amp;quot;. &lt;br /&gt;
&lt;br /&gt;
; Remember-Me-Funktion&lt;br /&gt;
&lt;br /&gt;
Siehe oben, gehört zum Session Management. Das ließt sich im übrigen so, als ob eine Webanwendung Credentials auf dem Client abhängt. &lt;br /&gt;
&lt;br /&gt;
; Grenzwerte für gescheiterte Anmeldeversuche&lt;br /&gt;
&lt;br /&gt;
Diese Empfehlung ist allgemein falsch, da sie sehr von der betrachteten Anwendung abhängt. Besser wäre hier allgemein von Mechanismen zur Verhinderung von automatisierten Angriffen zu sprechen (Anti-Automatisierung). &lt;br /&gt;
&lt;br /&gt;
Etwa umsetzbar durch&lt;br /&gt;
* Sperrung nach x Anmeldeversuchen&lt;br /&gt;
* Throttling&lt;br /&gt;
* Captchas&lt;br /&gt;
* Sicherheitsfragen&lt;br /&gt;
&lt;br /&gt;
Das allgemeine Sperren kann leicht für das gezielte Aussperren von Benutzern (User Lockout) verwendet werden. Was etwa bei Trading-Anwendungen nicht funktioniert.&lt;br /&gt;
&lt;br /&gt;
; Automatisiertes Zurücksetzen von Authentisierungsdaten&lt;br /&gt;
&lt;br /&gt;
Würde ich besser als &amp;quot;Passwort-Reset&amp;quot; bezeichnen.&lt;br /&gt;
&lt;br /&gt;
Weiterhin fehlt hier der Hinweis, dass statt ein automatisiertes Zurücksetzen, ein Mechanismus zu empfehlen ist, bei dem über ein hinterlegtes Sicherheitsmerkmal (Handy-Nummer oder E-Mail-Adresse) vom Benutzer zunächst eine Verifikation durchgeführt wird. Beispielsweise durch einen erhaltenen Link. Erst dann darf eine Änderung des Passwortes durch den Benutzer erfolgen.&lt;br /&gt;
&lt;br /&gt;
; Registrierung nicht behandelt&lt;br /&gt;
&lt;br /&gt;
Es existiert hier kein Punkt, der die sichere Implementierung von Benutzerregistrierungen behandelt.&lt;br /&gt;
&lt;br /&gt;
; Verweis auf Externalisierung fehlt.&lt;br /&gt;
&lt;br /&gt;
Statt die Authentisierung selbst durchzuführen kann eine Anwendung hierzu auf eine externe Komponente (Beispiel: SiteMinder oder Kerberos) zurückgreifen.&lt;br /&gt;
&lt;br /&gt;
; Verweis auf Behandlung von Credentials fehlt&lt;br /&gt;
&lt;br /&gt;
Auch wenn das  in &amp;quot;M 4.WA15 Schutz vertraulicher Daten bei Web- Anwendungen&amp;quot; ausführlich behandelt wird, sollte in diesem Baustein bereits auf den angemessenen Schutz von Authentisierungsdaten bei Übertragung und Speicherung hingewiesen werden.&lt;br /&gt;
&lt;br /&gt;
== M 4.WA05Umfassende Ein- und Ausgabevalidierung bei Web-Anwedungen (Markus) ==&lt;br /&gt;
; &amp;quot;Ablehnung der Daten im&lt;br /&gt;
Fehlerfall&amp;quot; --&amp;gt; Hier könnte man noch auf Tar-Pits eingehen - nur ein Vorschlag.&lt;br /&gt;
&lt;br /&gt;
== M 4.WA06Session-Management bei Web-Anwendungen (Markus, Matthias) ==&lt;br /&gt;
; &amp;quot;Übertragung der SessionID mittels GETRequest&amp;quot; --&amp;gt; Hier fehlt der Hinweis, dass die Lebensdauer dieser SessionIds kurz/kürzer sein muss, als im Falle der Speicherung im Cookie.&lt;br /&gt;
&lt;br /&gt;
([[User:Mrohr|Matthias]]) Die Anmerkung verstehe ich ehrlich gesagt ueberhaupt nicht, zumal das SM haeufig transparent zwischen Cookies und URL Rewriting wechselt. Wozu soll das gut sein? Wie soll das geschehen? Idealerweise sollte die Session ID niemals in die URL geschrieben werden, das sollte eigentlich genuegen.&lt;br /&gt;
&lt;br /&gt;
; &amp;quot;Verschlüsselte Übertragung von SessionIDs&amp;quot; --&amp;gt; Hier fehlt der Hinweis auf den Beast-Exploit. TLS Version &amp;gt; 1.0 verwenden!&lt;br /&gt;
&lt;br /&gt;
([[User:Mrohr|Matthias]]) Solange hier nicht auf eine explizite TLS Version eingegangen wird, sollte meiner grossen Ueberzeugung nach hier auch auf keine Exploits etc. eingagen werden, das gehoert an andere Stelle.&lt;br /&gt;
&lt;br /&gt;
; ([[User:Mrohr|Matthias]]) Weiterhin:&lt;br /&gt;
&lt;br /&gt;
 Es dürfen keine extern bekannten oder erratbaren Daten (z. B. IP-Adresse, Uhrzeit) in die Berechnung der SessionID einfließen.&lt;br /&gt;
&lt;br /&gt;
Die Aussage finde ich etwas problematisch, wichtiger ist, dass die Entropie ausreichend hoch ist. Haeufig werden etwa IPs von Load Balancern in die Session ID hineingeschrieben.&lt;br /&gt;
&lt;br /&gt;
 - Domain (z. B. webapp.domain.tld),&lt;br /&gt;
 - Path (z. B. /webapp/),&lt;br /&gt;
 - Secure und&lt;br /&gt;
 - HttpOnly.Beschränkte Sitzungsdauer&lt;br /&gt;
&lt;br /&gt;
Das sieht so aus, als ob es empfehlenswert ist, das Domain-Tag zu verwenden, das ist es sicherlich nicht. Was macht hier der Hinweis &amp;quot;Beschraenke Sizuungsdauer&amp;quot;?&lt;br /&gt;
&lt;br /&gt;
== M 4.WA07Fehlerbehandlung durch Web-Anwendungen (Markus) ==&lt;br /&gt;
; Konsistenter / Inkonsistener Zustand einer Webanwendung und der daraus resultierende Datenverlust: Hier fehlen mir die Punkte: DOS, Priv.Escalation, CodeExecution.&lt;br /&gt;
; Vermeidung vertraulicher Informationen in Fehlermeldungen --&amp;gt; Fehlermeldungen sollten ebenfalls eine Systeminformationen preisgeben (Softwareversion, Patchlevel, etc.)&lt;br /&gt;
; Abbruch des Vorgangs nach Auftreten eines Fehlers --&amp;gt; TarPits scheinen dem Autor umbekannt zu sein :)&lt;br /&gt;
; &amp;quot;Werden Fehler möglichst von der gleichen Komponente behandelt, in der&lt;br /&gt;
der Fehler aufgetreten ist?&amp;quot; --&amp;gt; Das &amp;quot;möglichst&amp;quot; sollten wir streichen.&lt;br /&gt;
&lt;br /&gt;
== M 4.WA08Schutz vor automatisierter Nutzung von Web-Anwendungen (Markus) ==&lt;br /&gt;
; &amp;quot;Brute-Force-&lt;br /&gt;
Angriffe (z. B. Erraten von Zugangsdaten) und Enumeration-Angriffe (z. B.&lt;br /&gt;
automatisiertes Ermitteln von gültigen Login-Namen)&amp;quot; -- die Beispiele sind identisch - besser Beispiele suchen, z.b. URL-Enumeration&lt;br /&gt;
&lt;br /&gt;
([[User:Mrohr|Matthias]]) Das sehe ich anders. Brute-Forcing bezieht auf Passwoerter und Enumeration auf Benutzernamen, etwa durchs hochzaehlen. Auch wenn ich zustimmen muss, dass die nicht ganz gluecklich gewaehlt wurden. Stann &amp;quot;Erraten von Zugangsdaten&amp;quot; wuerde ich besser von &amp;quot;Erraten von Passwoertern&amp;quot; sprechen. Oder wie gesagt gleich auch auf andere Beispiele (etwa Object ID Enumeration) beziehen.&lt;br /&gt;
&lt;br /&gt;
== M 4.WA11Sichere Konfiguration von Web-Anwendungen (Markus) ==&lt;br /&gt;
; &amp;quot;Sicherer Umgang mit TLS/SSL&amp;quot; -- Hier fehlt der Hinweis, dass TLS-1.0 gebrochen ist&lt;br /&gt;
; &amp;quot;Zeichenkodierungskonfiguration&amp;quot; -- Ein Whitelisting abhängig von der Encodierung wäre ein weiterer Vorschlag&lt;br /&gt;
; &amp;quot;Restriktive Dateisystemberechtigungen&amp;quot; -- auch wenn es ein klassiker ist - der AS sollte ebenfalls mit von einem eingeschränkten Nutzer gestartet werden und nicht als root&lt;br /&gt;
; Administration Consolen:zur Ergänzen: Wenn diese nicht benötigit, sollten derartige Applikationen nicht deployed werden, unabhängig von möglichen Zugangsbeschränkungen.&lt;br /&gt;
&lt;br /&gt;
([[User:Mrohr|Matthias]]) Sorry, meiner Meinung nach hat die Bewertung von Kryptoverfahren hier abslut nichts zu suchen.Stattdessen sollte hier auf den entsprechenden [https://www.bsi.bund.de/ContentBSI/Publikationen/TechnischeRichtlinien/tr02102/index_htm.html Empfehlung des BSI] verwiesen werden, auch wenn dieses Dokument derzeit noch etwas outdated zu sein scheint.&lt;br /&gt;
&lt;br /&gt;
== M 4.WA13Kontrolliertes Einbinden von Daten und Inhalten bei Web-Anwendungen (Markus) ==&lt;br /&gt;
; Datei-Upload: Bei einem Upload werden Dateien durchaus in TEMP-Verzeichnissen gesammelt und danach weiterverarbeitet. Diese TEMP-Verzeichnisse sind im Rahmen einer Sicherheitsanalyse zu betrachten -&amp;gt; Möglicher (unbefugter) Zugriff auf weitere Uploads&lt;br /&gt;
; Upload komprimierter Dateien / großer Dateien birgt die Gefahr von DOS Angriffen&lt;br /&gt;
; Upload von Dateien kann bei weiterem Parsing zu Speicherengpässen führen --&amp;gt; DOS-Angriffe auf Thread-Local etc.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== M 4.WA14Restriktive Herausgabe sicherheitsrelevanter Informationen bei Web-Anwendungen (Markus, Matthias) ==&lt;br /&gt;
OK - Keine Anmerkungen von mir.&lt;br /&gt;
&lt;br /&gt;
[[User:Mrohr|Matthias]]) Von mir schon;)&lt;br /&gt;
&lt;br /&gt;
; Vermeidung von Kommentaren in ausgelieferten Webseiten&lt;br /&gt;
&lt;br /&gt;
Das ist leider total falsch, wir brauchen haeufig Komentare, aus Kompatibilitaetsgruenden. So wird etwa der JavaScript-Block haeufig auskommentiert.&lt;br /&gt;
&lt;br /&gt;
Wurde stattessen besser von sicherheitsrelevanten Kommentaren sprechen und als Massnahme generell Entwicklerkommentare ueber Sprachkonstruktre (etwa JSP) durchzufuehren.&lt;br /&gt;
&lt;br /&gt;
; Löschen nicht benötigter Dateien&lt;br /&gt;
&lt;br /&gt;
Hier wurde ich ggf. Dateien von Versionisierungstools (etwa Subversion) erwaehnen, das sehen wir schon recht haeufig.&lt;br /&gt;
&lt;br /&gt;
Statt Dateien einfach nur zu loeschen (was in der Praxis haeufig nicht so einfach ist) bietet es sich zudem an, den Zugriff auf bestimmte Dateien oder Dateitypen generell zu sperren, etwa mittels ACL im Apache.&lt;br /&gt;
&lt;br /&gt;
; Gibt die Web-Anwendung ausschließlich neutrale Fehlermeldungen aus und sind diese im Quelltext identisch? {E: C}&lt;br /&gt;
&lt;br /&gt;
Persoenlich verstehe ich das nicht. Wieseo neutrale Fehlermeldung? Das macht fuer mich nur beim Login Sin. Hierzu existiert in dem Text auch keinerlei Bezug. Ich wuerde das daher besser entfernen und im Rahmen der Fehlerbehandlung diskutieren. Mindestens sollte hier jedoch besser von &amp;quot;sicherheitsunbedentlichen Fehlermeldungen&amp;quot; oder so gesprochen werden.&lt;br /&gt;
&lt;br /&gt;
; Wird der Referrer bei Verlassen der Web-Anwendung (z. B. durch einen Link auf eine externe Seite) gefiltert?&lt;br /&gt;
&lt;br /&gt;
Diesen Punkt sehe ich als sehr Fallabhengig an. Es kann fuer seiten durchaus wuenschenswert sein, dass der Referer weitergegeben wird. Der Referer sollte natuerlich keine sensiblen Informationen enthalten, was ja an anderer Stelle (etwa Session Management) vorgegeben wird bzw. gegeben werden sollte.&lt;br /&gt;
&lt;br /&gt;
== M 4.WA15Schutz vertraulicher Daten bei Web-Anwendungen (Markus) ==&lt;br /&gt;
; Sichere kryptographische Algorithmen:&lt;br /&gt;
 Hier fehlt mir eine Liste der aktuelle als sicher geltenden Verfahren.&lt;br /&gt;
; Schlüssel&lt;br /&gt;
 Das die Schlüssel bestimmten Formaten entsprechen müssen ist ok - aber das Schlüsselmanagement wird gar nicht besprochen?&lt;br /&gt;
; Schutz der Daten im Browsercache&lt;br /&gt;
 Skripte und Browserplugins können ebenfalls auf den Browsercache zugreifen - diese werden hier nicht erwähnt.&lt;br /&gt;
; Maskierung von Passwörtern &lt;br /&gt;
 Dies schützt bei der Eingabe nur vor ShoulderSurfing nicht vor Skripten oder Plugins die diese an andere Server posten.&lt;br /&gt;
; Sicherung von Zugangsdaten:&lt;br /&gt;
 Zugangsdaten in einer Datei abzulegen - wenn auch ausserhalb des WebRoots ist keine gute Idee.&lt;br /&gt;
; Schutz von Quelltexten:&lt;br /&gt;
 Hier würde ich property files mit aufnehmen. der hinweis auf web-inf/classes fehlt - warum?&lt;br /&gt;
 Bei include-befehlen sind die pfadangaben zu überdenken.&lt;br /&gt;
&lt;br /&gt;
== M 4.WA16Zugriffskontrolle bei Web-Anwendungen (Markus) ==&lt;br /&gt;
; Zugriffskontrolle via Frameworks:&lt;br /&gt;
 Dieser Punkt (Frameworks) wird nur in einem Satz erwähnt. Es werden keine Bespiele gegeben - Das ist zu wenig.&lt;br /&gt;
 Es müssen alle Zugriffe geschützt werden. Eine Protokollierung aller Zugriffe mit den nötigen Informationen ist ebenfalls empfehlenswert.&lt;br /&gt;
; Datei Upload:&lt;br /&gt;
 Die Gefahr eines DOS wird hier nicht erwähnt.&lt;br /&gt;
&lt;br /&gt;
== M 4.WA19Verhinderung von Cross-Site Request Forgery (CSRF, XSRF) (Markus, Matthias) ==&lt;br /&gt;
; Verantwortliche: &lt;br /&gt;
 Entwickler und Admins!&lt;br /&gt;
([[User:Mrohr|Matthias]]) Korrekt, wobei auch in der Reihenfolge&lt;br /&gt;
&lt;br /&gt;
; Anti-CSRF-Token in hidden fields:&lt;br /&gt;
 Das ist keine gute Idee. Ich würde das streichen!&lt;br /&gt;
&lt;br /&gt;
([[User:Mrohr|Matthias]]) Watt? Anti-CSRF-Tokens in Hidden Fields sind die Standard-Massnahme. Wie denn sonst? Bitte nicht streichen!!! &lt;br /&gt;
&lt;br /&gt;
([[User:Mrohr|Matthias]]) Die Technik bei der die Session ID als Anti-CSRF-Token verwendet wird, wird als Double-Cookie Submit bezeichnet, das sollte hier referenziert werden.&lt;br /&gt;
&lt;br /&gt;
; Umgehung von Schutzmechanismen:&lt;br /&gt;
 Man in the middle hat keinen direkten Bezug zu CSRF! Das würde ich streichen.&lt;br /&gt;
([[User:Mrohr|Matthias]]) Der Hinweis ist korrekt. Wovon der Autor hier spricht ist Session Replay nicht CSRF.&lt;br /&gt;
&lt;br /&gt;
; Frameworks:&lt;br /&gt;
 Gute Idee - aber es gibt auch Features in den ApplicationServern die CSRF unterbinden - warum wird das nicht besprochen?&lt;br /&gt;
&lt;br /&gt;
([[User:Mrohr|Matthias]]) Sehe ich persoenlich nicht so, da CSRF primaer ein Applikations-Fehler ist, und auch in der Applikation und nicht im Environment (AppServer) geloest werden sollte. Auch wenn das manchmal ggf. die einzig machbare Loesung darstellt.&lt;br /&gt;
&lt;br /&gt;
([[User:Mrohr|Matthias]]) Was generell fehlt, ist ein Hinweis darauf, dass schreibende Requests generell per HTTP Post abgewickelt werden sollten, da HTTP Get keine &amp;quot;Safe Method&amp;quot;  (siehe HTTP 1.1, RFC 2616) ist.&lt;br /&gt;
&lt;br /&gt;
== M 4.WA20Sicherer Entwurf der Logik von Web-Anwendungen (Markus) ==&lt;br /&gt;
; Rollbacks:&lt;br /&gt;
 Tritt ein Fehler auf muss die Applikation einen konsistenten Datenstand zurück lassen. Das wird hier nicht erwähnt.&lt;br /&gt;
; RaceConditions:&lt;br /&gt;
 Fehler in der Geschäftslogik können auch durch zwei gleichzeitige Sessions auf einer Webapplikation auftreten - das wird hier nicht besprochen.&lt;br /&gt;
&lt;br /&gt;
== M 4.WA22Verhinderung der Blockade von Ressourcen (DoS) bei Web-Anwendungen (Markus, Matthias) ==&lt;br /&gt;
; Datenspeicher:&lt;br /&gt;
 Neben dem Datenspeicher sollte auch der RAM-Verbrauch pro Thread der Applikation limitiert werden.&lt;br /&gt;
([[User:Mrohr|Matthias]]) Stimmt, ich wuerde hier sogar allgemein von Ressourcenverbrauch am Beispiel RAM und Datenspeicher, sprechen&lt;br /&gt;
&lt;br /&gt;
; Voraggregation von Daten / Caching&lt;br /&gt;
 Dieser Punkt fehlt: Stark ressourcen belastende Anfragen können auch in Lastarmen Zeiten vorberechnet werden.&lt;br /&gt;
([[User:Mrohr|Matthias]]) Stimmt, koennte noch als Anmerkung bei &amp;quot;Cachen von Anfragen&amp;quot; hinzugefuegt werden&lt;br /&gt;
&lt;br /&gt;
([[User:Mrohr|Matthias]]) Noch zwei Anmerkugnen&lt;br /&gt;
&lt;br /&gt;
; Prueffrage: &amp;quot;Wird ein möglicher Überlauf von Protokolldaten... verhindert&amp;quot;&lt;br /&gt;
&lt;br /&gt;
Ist eine etwas eingeschrankte Sicht. Wurde hier eher von Ueberlauf von Speicherplaz zu Beispiel im Rahmen der Protokollierung sprechen&lt;br /&gt;
&lt;br /&gt;
; Durchfuehrung von Lasttests zur Identifikation ressourcenintensiver Operationen&lt;br /&gt;
&lt;br /&gt;
Der Hinweis waere ggf. erwahnenswert&lt;br /&gt;
&lt;br /&gt;
; Hinweis auf nicht-angemeldeten Bereich&lt;br /&gt;
&lt;br /&gt;
Das Risiko durch rechenintensive Operationen durch einen DoS betroffen zu sein ist natuerlich fuer gewoehlich um so groesser, wenn diese im anonymen Bereich angeboten wird. Der Hinweis ware ggf. ebenfalls hilfreich.&lt;br /&gt;
&lt;br /&gt;
== M 4.WA25Verhinderung von Clickjacking (Markus) ==&lt;br /&gt;
Ok - das passt soweit.&lt;br /&gt;
&lt;br /&gt;
([[User:Mrohr|Matthias]]) Stimmt, auch wenn ich &amp;quot;Angreifer&amp;quot; in dem Beispiel eher als &amp;quot;Webseitenbetreiber&amp;quot; beschreiebn wuerde, da er nicht wirklich aktiv einen Angriff durchfuehrt, oder? Bitte nochmal ueber meinen Hinweis aus G 5.WA18 nachdenken: Ist Clickjacking-Schutz tatsaechlich Grundschutz? Ich bin mir da selber nicht so wirklich sicher.&lt;br /&gt;
&lt;br /&gt;
== M 5.WA21Sichere Anbindung von Hintergrundsystemen an Web-Anwendungen (Markus) ==&lt;br /&gt;
; Verantwortliche:&lt;br /&gt;
 Architekten fehlen. Entwickler müssen die Views umsetzen und die Datasource entsprechend einbinden - die fehlen hier ebenfalls.&lt;br /&gt;
; DirectorySystem Beispiel:&lt;br /&gt;
 Das DirectorySystem wird in dem angegeben Beispiel zum Single Point of Failure - das wird verschwiegen.&lt;br /&gt;
; Firewalls:&lt;br /&gt;
 Das sind fachlich-blinde Systeme. Was ist mit WAFs / IDS / IPS etc.?&lt;br /&gt;
([[User:Mrohr|Matthias]]) Stimmt, das hat in diesem Baustein nichts zu suchen&lt;br /&gt;
&lt;br /&gt;
([[User:Mrohr|Matthias]]) Noch zwei weitere Punkte von mir&lt;br /&gt;
&lt;br /&gt;
; Typische Hintergrundsysteme&lt;br /&gt;
Hier fehlt irgendwie &amp;quot;Middleware&amp;quot;, die ist denke ich nicht immer Legacy&lt;br /&gt;
&lt;br /&gt;
== M 5.WA23Systemarchitektur einer Web-Anwendung (Markus) ==&lt;br /&gt;
; Verantwortliche:&lt;br /&gt;
Auch hier fehlend wieder die Architekten. &lt;br /&gt;
; Virtualisierung:&lt;br /&gt;
Virtualisierung bietet weitere Angriffsvektoren (z.B.: Hypervisor) die eine &amp;quot;Blech&amp;quot;Farm nicht bietet.&lt;/div&gt;</summary>
		<author><name>Mrohr</name></author>	</entry>

	<entry>
		<id>https://wiki.owasp.org/index.php?title=Talk:OWASP_Review_BSI_IT-Grundschutz_Baustein_Webanwendungen&amp;diff=130141</id>
		<title>Talk:OWASP Review BSI IT-Grundschutz Baustein Webanwendungen</title>
		<link rel="alternate" type="text/html" href="https://wiki.owasp.org/index.php?title=Talk:OWASP_Review_BSI_IT-Grundschutz_Baustein_Webanwendungen&amp;diff=130141"/>
				<updated>2012-05-21T07:59:17Z</updated>
		
		<summary type="html">&lt;p&gt;Mrohr: /* M 5.WA21Sichere Anbindung von Hintergrundsystemen an Web-Anwendungen (Markus) */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Since it's about a review of a document in German, all the discussions will be done in German :-)&lt;br /&gt;
&lt;br /&gt;
Diskussionen rund um den Review des &amp;quot;IT-Grundschutzbausteins Webanwendungen&amp;quot; finden hier statt, sinnvollerweise auf Deutsch :-)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Vorschlag für Kriterien, die an unser Review angelegt werden sollten (.kai) ==&lt;br /&gt;
&lt;br /&gt;
* Der Baustein soll alle wichtigen Themen der Entwicklung sicherer&lt;br /&gt;
Webanwendungen enthalten.&lt;br /&gt;
&lt;br /&gt;
* Der Baustein soll die verschiedenen Phasen der Software-Entwicklung&lt;br /&gt;
vollständig abdecken.&lt;br /&gt;
&lt;br /&gt;
* Der Baustein soll zwischen verbindlichen, prüfbaren Vorgaben und&lt;br /&gt;
unverbindlichen Empfehlungen sprachlich sauber unterscheiden (hier&lt;br /&gt;
spielt mein Auditorenblick eine Rolle). Vor allem soll der Baustein&lt;br /&gt;
verbindliche Anforderungen auch tatsächlich stellen. Alle&lt;br /&gt;
verbindlichen Anforderungen müssen unabhängig von der jeweiligen&lt;br /&gt;
Umgebung auch umsetzbar sein, d.h. sie müssen entsprechend generisch&lt;br /&gt;
sein.&lt;br /&gt;
&lt;br /&gt;
* Die Maßnahmen sollen nur in (begründbaren) Ausnahmen zu Empfehlungen&lt;br /&gt;
von OWASP im Widerspruch stehen.&lt;br /&gt;
&lt;br /&gt;
* Die Maßnahmen sollen verständlich und anwendbar sein.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== &amp;quot;Hilfsmittel&amp;quot; (Markus) ==&lt;br /&gt;
Ich würde das Script zur Vermeidung von Clickjacking wrappen und nicht als losen Skript-block in den Text einbinden - einfach schlechter Programmierstiel diese losen Blöcke.&lt;br /&gt;
Der Zugriff auf das Body-Element mit byTagName-Array[0] ist auch nicht wirklich gut. Ich halte Zugriffe über das DOM (klassisch), bei ID bzw. XPATH für besser. &lt;br /&gt;
&lt;br /&gt;
SQL-Injection Characters:&lt;br /&gt;
die Pipe fehlt hier zur Textkonatenierung&lt;br /&gt;
+ / - haben auch eine Bedeutung bei JOINs.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== &amp;quot;Goldene Regeln&amp;quot; (Matthias) ==&lt;br /&gt;
&lt;br /&gt;
Hier meine Anmerkungen zu diesem Dokument:&lt;br /&gt;
&lt;br /&gt;
; 1. Für mich fehlende Punkte&lt;br /&gt;
* Korrektur der Ursache (Root Cause) von Schwachstellen statt  Verhinderung deren Ausnutzung&lt;br /&gt;
* Bezug auf Minimierung der Angriffsfläche und Least-Privilege-Prinzip&lt;br /&gt;
* Bezug auf Defense-in-Depth-Prinzip&lt;br /&gt;
* Verwendung von getesteten Security APIs (z.B. OWASP ESAPI) statt selbstentwickelter Funktionen&lt;br /&gt;
* Bezug auf Externalisierung von Sicherheitsfunktionen, sowie deklerative vor programmatischer Sicherheit.&lt;br /&gt;
&lt;br /&gt;
; 2. Begriff &amp;quot;Web-Anwendung&amp;quot;&lt;br /&gt;
Würde ich generell durch &amp;quot;Webanwendung&amp;quot; ersetzen.&lt;br /&gt;
&lt;br /&gt;
; 3. Einleitung (&amp;quot;Web-Anwendungen stellen Funktionalität zur Verfügung, ...&amp;quot;)&lt;br /&gt;
&lt;br /&gt;
Wozu dient dieser Satz?&lt;br /&gt;
&lt;br /&gt;
; 4. &amp;quot;Die Architektur der Web-Anwendung ist im Sicherheitskonzept zu  dokumentieren.....&amp;quot; &lt;br /&gt;
&lt;br /&gt;
Ich fände es sinnvoller, wenn hier von der &amp;quot;Sicherheitsarchitektur&amp;quot; gesprochen wird, welche etwa neben den sicherheitsrelevanten Datenflüssen, sensible Komponenten, Entry Points, Akteure architekturelle Security Controls wie Authentisierung, Kryptographie und natürlich die Trust Boundaries beinhaltet.&lt;br /&gt;
&lt;br /&gt;
; 5. &amp;quot;Bei Web-Anwendungen handelt es sich häufig um spezielle Eigenentwicklungen....&amp;quot;&lt;br /&gt;
&lt;br /&gt;
Erstens würde ich hier den geläufigen Begriff &amp;quot;Individualsoftware&amp;quot; verwenden. Zweitens würde ich statt bestimmte SDLC-Phasen vorzugeben (die Begriffe &amp;quot;Softwareverteilung&amp;quot; und &amp;quot;Integration&amp;quot; sind mir bei Webanwendungen bisher noch nicht so häufig untergekommen), besser von der Notwendigkeit sprechen, Sicherheit in allen Entwicklungsphasen zu berücksichtigen, also eines SDLs.&lt;br /&gt;
&lt;br /&gt;
; 6. &amp;quot;Alle Ein- und Ausgaben der Web-Anwendung müssen in eine normalisierte Form überführt werden....&amp;quot;&lt;br /&gt;
&lt;br /&gt;
Normalisierung ist für mich nicht gleich Kanonsierung, auch wenn beide Begriffe häufig als synonym verwendet werden.  Der Unterschied wird in der [http://owasp-esapi-java.googlecode.com/svn/trunk_doc/2.0-rc4/org/owasp/esapi/Encoder.html API-Beschreibung der ESAPI] erklärt. Die Normalisierungs-Funktion ist allerdings schon vor einiger Zeit aus der ESAPI [https://lists.owasp.org/pipermail/esapi-dev/2010-January/000266.html rausgeflogen]. Die generelle Kanonisierung von Ausgaben halte ich dazu für nicht sinnvoll.&lt;br /&gt;
&lt;br /&gt;
Zweitens, finde ich den weiteren Text zwar grundsätzlich formal korrekt, aber so allgemein, dass dieser glaube ich niemandem so richtig etwas bringt.  &lt;br /&gt;
&lt;br /&gt;
Besser fände ich hier Ein- von Ausgabevalidierung grundsätzlich voneinander abzugrenzen. Etwa was ich per Eingabevalidierung (Längenprüfung, Casting, etc. per Whitelisting) und was mit Ausgebavalidierung (Enkodierung, Escaping, Parametrisierung) machen muss und kann.&lt;br /&gt;
&lt;br /&gt;
Eingabedaten können technisch zudem auch Werte eingelesener Property-Dateien sein. Muss ich die auch validieren? Ist das dann noch Grundschutz? &lt;br /&gt;
&lt;br /&gt;
; 7. &amp;quot;Für den Zugriff auf sensitive Funktionen oder Informationen muss die Web-Anwendung eine wirksame Authentisierung und Sitzungsverwaltung unterstützen. Die Eigenschaften der Sitzungs-ID müssen so gewählt werden, dass die Sitzung ausreichend geschützt ist. ....&amp;quot;&lt;br /&gt;
&lt;br /&gt;
Besser fände ich &amp;quot;eine Authentisierung, die über eine dem Schutzbedarf der Anwendung angemessene Stärke verfügt.&amp;quot; &lt;br /&gt;
&lt;br /&gt;
Eigentlich geht es doch mehr um den Schutz der Sitzungs-ID, da diese gewöhnlich im Verlauf einer Sitzung den Client authentisiert. Oder den Schutz des Zugriffs auf eine Sitzung. &lt;br /&gt;
&lt;br /&gt;
Zudem fehlt hier meiner Meinung nach der Hinweis auf die bevorzugte Verwendung getesteter Standardkomponenten.&lt;br /&gt;
&lt;br /&gt;
; 8. &amp;quot;Die Web-Anwendung sollte die zu übermittelnden Daten schützen.&amp;quot;&lt;br /&gt;
&lt;br /&gt;
Dies würde ich nur auf sensible Daten beziehen. Zusätzlich zu HTTPS würde ich hier schreiben, dass sensible Daten generell nicht in der URL übertragen werden dürfen.&lt;br /&gt;
&lt;br /&gt;
; 9. &amp;quot;Die Preisgabe interner Informationen (z.B. Kommentare, Fehlermeldungen)&amp;quot;&lt;br /&gt;
&lt;br /&gt;
Hier würde ich eher schreiben &amp;quot;(IN Kommentaren, Fehlermeldungen, HTTP Headern, etc.)&amp;quot;&lt;br /&gt;
&lt;br /&gt;
; 10. &amp;quot;Fehler müssen so behandelt werden, ... müssen Fehler bei der Autorisierung zu einer Verweigerung beim Zugriff auf die angeforderte Ressource führen.&amp;quot;&lt;br /&gt;
&lt;br /&gt;
Sprachlich: &amp;quot;Die Webanwendung muss sich stets in einem sicheren Zustand befinden. Beispielsweise müssen Fehler bei der Autorisierung zu einer Verweigerung des Zugriffs führen (Default-Deny-Strategie).&amp;quot;&lt;br /&gt;
&lt;br /&gt;
; 11. &amp;quot;Die Logging-Funktionen der Web-Anwendung müssen aufgetretene Ereignisse derart protokollieren, dass sicherheitskritische Vorfälle nachvollzogen werden können.&amp;quot;&lt;br /&gt;
&lt;br /&gt;
Hier würde hier eher von &amp;quot;allen sicherheitsrelevanten Ereignissen&amp;quot; sprechen.&lt;br /&gt;
&lt;br /&gt;
Weiterhin sollten insbesondere beim Logging der Datenschutz berücksichtigt werden, personenbezogene Daten also nach Möglichkeit nicht oder nur anonymisiert in technischen Logdateien protokolliert werden.&lt;br /&gt;
&lt;br /&gt;
; 12. &amp;quot;Alle Sicherheitsmechanismen (z.B. Authentisierung und Zugriffskontrolle) sind serverseitig zu implementieren und können nicht durch clientseitige Mechanismen ersetzt werden.&amp;quot;&lt;br /&gt;
&lt;br /&gt;
Die Aussage ist so nicht korrekt. Darüber hatten wir bereits bei der ASVS mehrfach diskutiert. &lt;br /&gt;
&lt;br /&gt;
Überall dort wo der Client angegriffen wird, also etwa bei RIAs (Stichwort DOM-Based XSS) müssen wir Security Controls clientseitig implementieren. Es gibt mittlerweile deshalb auch eine Portierung der ESAPI auf Javascript. Überall dort wo der Server oder Hintegrundsysteme angegriffen werden, ist die Aussage aber natürlich zutreffend.&lt;br /&gt;
&lt;br /&gt;
== &amp;quot;Gefährdungen&amp;quot; (Markus, Dennis, .... &amp;lt;Dein Name&amp;gt;) ==&lt;br /&gt;
; Generell:&lt;br /&gt;
Reference auf RFCs fehlen.&lt;br /&gt;
&lt;br /&gt;
==B.5.XX Web-Anwendungen ==&lt;br /&gt;
; 1. Erster Absatz - Letzter Satz: --Wieso werden hier nur HTML/XML Doks und Oberflächen angesprochen? Was ist der Unterschied zwischen einem HTML-Dok und einer Oberfläche? Was ist mit  Flash, etc.? Was ist mit WebSockets?&lt;br /&gt;
; 2. Stichpunkt &amp;quot;Protokollierung&amp;quot;: Sicherheits relevant ist ein sehr dehnbarer Begriff - Eine bessere Formulierung könnte sein: Zur Rekonstruktion von Nutzerhandlungen nötige Ereignisse (positve &amp;amp; negative) müssen protokolliert werden . . . &lt;br /&gt;
; 3. Absatz: &amp;quot;Abgrenzung des Bausteins&amp;quot;: &amp;quot;Die spez. Sicherheitsanforderungen an Web-Services werden in diesem Baustein nicht betrachtet&amp;quot; --&amp;gt; Wie so nicht? Was ist das Backend von einer Rest / AJAX-basierenden Webanwendung denn anderes als ein Web-Service? Diesen Satz würde ich entfernen.&lt;br /&gt;
; 4.Vorsätzliche Handlungen -&amp;gt; Web-Spoofing (G.5.87) -- Missverständliche Bezeichnung / Nomenklatur&lt;br /&gt;
; 5. Seite 4 : erste Zeile &amp;quot;Umsetzung&amp;quot;: &amp;quot;dafür umzusetztende Komponenten müssen die Webanwendung schützen...&amp;quot; - Hier fehlt mir der Hinweis, dass dieser Schutz verifiziert werden muss.&lt;br /&gt;
; 6 Seite 5: &amp;quot;Umsetzung&amp;quot; - Wir haben CSRF, D(D)os und SQL-Injection aber wo ist XSS?&lt;br /&gt;
; 7 Seite 7: &amp;quot;Die Sicherheitsfunktion wird ausschließlich clientseitig...&amp;quot; --&amp;gt; Warum muss der Angreifer überhaupt einen Browser umkonfigurieren? Was ist mit Proxies, Scripts, etc.? Ich würde das reduzieren darauf, dass rein Webbrowser-basierende Schutzfunktionen einfach umgangen werden können.&lt;br /&gt;
; 8 Seite 8: Die angesprochenen Punkte hinterlassen den Eindruck nicht vollständig zu sein: Mir fehlen Punkte wie &amp;quot;Outsourcing&amp;quot;, &amp;quot;KnowHow der Entwickler&amp;quot;, Tooling, Framework-Auswahl, etc.&lt;br /&gt;
; 9 Seite 9: Eigentlich möchte der Autor hier über Datenschutz sprechen. Abgesehen von den letzten drei Zeilen geht es aber nur um &amp;quot;User tracking&amp;quot; - Wo ist der Rest der Datenschutzproblematik? Warum der Fokuss auf Tracking? Mir ist das zu einseitig.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
tbd.&lt;br /&gt;
&lt;br /&gt;
; Wortwahl:&lt;br /&gt;
Ich stosse innerhalb der Texte immer wieder an die Worten '''Hintergrundsystem''' und '''Sicherheitskontext'''.&lt;br /&gt;
'''Hintergrundsystem:''' besseres Synonym?&lt;br /&gt;
'''Sicherheitskontext:''' nur weil es in den Texten um Sicherheit geht muss nicht an jeder Stelle immer wieder das Wort _Sicherheits_kontext eingebaut werden.&lt;br /&gt;
Bsp: &amp;quot;Erlangt ein Angreifer Kenntnis von einer solchen gültigen, aber nicht mehr genutzten SessionID, so kann er die Web-Anwendung im Sicherheitskontext des nicht abgemeldeten Benutzers weiter verwenden.&amp;quot; (G 5,WA12 Unzureichendes Session-Management von Web-Anwendungen)&lt;br /&gt;
Verbesserungsansansatz: ... so kann er die Web-Anwendung anstelle des eigentlichen Besitzers weiterhin verwenden.&lt;br /&gt;
&lt;br /&gt;
== &amp;quot;G 2.WA01 Mangelhafte Auswahl oder Konzeption von Web-Anwendungen&amp;quot; (Matthias) ==&lt;br /&gt;
&lt;br /&gt;
Nachdem ich mir diese Gefährdung durchgelesen hatte, fehlten mir ehrlich gesagt etwas die Worte. Nicht nur, dass hier fast jeder zweite Satz entweder falsch ist bzw. massive Fehler enthält oder ich diesen schlicht nicht verstehe, ist der ganze Text sprachlich wirklich enorm verbesserungsfähig. &lt;br /&gt;
&lt;br /&gt;
Na gut, ich konzentriere mich mal auf die fachlichen Punkte:&lt;br /&gt;
&lt;br /&gt;
; 1. Security Controls&lt;br /&gt;
Werden mal mit &amp;quot;Schutzmechanismen&amp;quot;, mal mit &amp;quot;Sicherheitskomponenten&amp;quot; und dann wieder als &amp;quot;Sicherheitsfunktionen&amp;quot; bezeichnet. Hier macht eine einheitliche Benennung sicherlich Sinn und ist weniger verwirrend.&lt;br /&gt;
&lt;br /&gt;
; 2. &amp;quot;Eine Web-Anwendung ist in der Regel ein verteiltes, komplexes System bestehend aus unterschiedlichen Komponenten (z. B. Webserver, Applikationsserver, Hintergrundsysteme)&amp;quot;&lt;br /&gt;
&lt;br /&gt;
Eine Webanwendung besteht sicher nicht aus einem Webserver- oder anderer infrastruktureller Komponenten, sondern ist Software welches diese nutzt.&lt;br /&gt;
&lt;br /&gt;
; 3. &amp;quot;Bei individuell entwickelten Web-Anwendungen sind im Allgemeinen die Frameworks, Komponenten und Schnittstellen im Rahmen der Konzeption auszuwählen und deren Einbindung und Absicherung zu betrachten....Im Gegensatz dazu ist bei der Konzeption von Web-Anwendungen auf Basis von Standardsoftware insbesondere auf die Auswahl der Software und die Konfiguration der Teilkomponenten zu achten&amp;quot;&lt;br /&gt;
&lt;br /&gt;
Wir unterscheiden im Rahmen von Webanwendungen eigentlich Free or Opensource Software (FOSS bzw. FLOSS), Standardsoftware und Individualsoftware voneinander. Wir unterscheiden nicht Frameworks von Standardsoftware. Frameworks können Teil von Standardsoftware sein, wie etwa bei SharePoint, SAP, etc, oder aber FOSS, wie etwa Spring. Die ganzen Absätze machen für mich daher keinen Sinn.&lt;br /&gt;
&lt;br /&gt;
; 4. &amp;quot;Eine Sicherheitsfunktion (z. B. Authentisierung, Autorisierung) wird nicht an einer Stelle umgesetzt und verwendet, sondern ist mehrfach in der Web- Anwendung realisiert. Wird diese Sicherheitsfunktion an den verschiedenen Stellen unterschiedlich umgesetzt, führt dies zu einem uneinheitlichen Sicherheitsniveau.&amp;quot;&lt;br /&gt;
&lt;br /&gt;
Natürlich ist die mehrfache Verwendung bestimmter Security Controls, beispielsweise von Zugriffskontrollen (Complete-Mediation) oder Validierung (Robustheit) erstrebenswert. Was der Autor hier wahrscheinlich meinte, war die Notwendigkeit diese zu Kapseln bzw. zu Externalisieren. Das bezieht sich im übrigen nicht nur auf die Controls selbst, sondern auch auf ihre Parametrisierung (etwa. über Konfigdateien / XACML).&lt;br /&gt;
&lt;br /&gt;
Wichtiger wäre in diesem Zusammenhang zudem die fehlende Berücksichtigung bestimmter Security Controls.&lt;br /&gt;
&lt;br /&gt;
; 5. &amp;quot;Auswahl von Web-Anwendungen auf Basis von Standardsoftware&amp;quot;&lt;br /&gt;
Was will der Satz sagen? Ich wähle Standardsoftware aus, aber doch keine Webanwendungen. Oder heißt das, ich kaufe eine existierende Anwendung ein (Webanwendung!=Indivudualsoftware)? &lt;br /&gt;
&lt;br /&gt;
; 6. &amp;quot;Das ausgewählte Produkt verfügt nicht über die ausreichende Sicherheitsfunktionalität, ... Daher müssen die notwendigen Schutzmechanismen nachträglich hinzugefügt werden, wodurch zusätzliche Aufwände entstehen.&amp;quot;&lt;br /&gt;
Das ist etwas sehr positiv formuliert. Tatsächlich können fehlende Security Controls in zugekaufter Software (insb. Standardsoftware) in der Realität häufig gar nicht hinzugefügt werden oder nur perimetrisch (z.B. per WAF oder Access Gateway).&lt;br /&gt;
&lt;br /&gt;
; 7. &amp;quot;Die Hintergrundsysteme werden unzureichend abgesichert und dadurch ist die Datenbank der Web-Anwendung aus dem Internet erreichbar.&amp;quot;&lt;br /&gt;
Gehören fehlende Netzwerksegmentierung bzw. Firewallregeln wirklich in diesen Kontext? Das ist doch eigentlich Grundschutz der Infrastruktur, oder?&lt;br /&gt;
&lt;br /&gt;
; 8. &amp;quot;Aufgrund schwacher Parameter in der Konfiguration des Frameworks zum Session-Management werden unsichere SessionIDs erzeugt.&amp;quot;&lt;br /&gt;
Was sind &amp;quot;schwache&amp;quot; Parameter?&lt;br /&gt;
&lt;br /&gt;
Welches Framework erlaubt unsichere SessionIDs durch eine &amp;quot;schwache&amp;quot; Konfiguration zu erzeugen?&lt;br /&gt;
&lt;br /&gt;
; 9. &amp;quot;Wird die Konfiguration des Web-Browsers durch einen Angreifer manipuliert, können die clientseitig umgesetzten&amp;quot;&lt;br /&gt;
&lt;br /&gt;
Manipuliert ein Angreifer die Konfguration seines Webbroswers, wenn er einen MITM-Proxy konfiguriert?&lt;br /&gt;
&lt;br /&gt;
Wie bereits bei den &amp;quot;Goldenen Regeln&amp;quot; angemerkt, gilt auch hier, das manche Security Controls auch clientseitig umgesetzt werden dürfen (etwa. zur Verhinderung von Dom-Based XSS).&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== &amp;quot;G 5.WA10 Fehler in der Web-Anwendungslogik&amp;quot; (Dennis) ==&lt;br /&gt;
; 1. &amp;quot;Damit kann aufgrund der Prüfreihenfolge ein hoher Ressourcenverbrauch provoziert werden, der für Denial-of-Service-Angriffe ausgenutzt werden kann.&amp;quot;&lt;br /&gt;
Meiner Meinung nach passt in diesem Kontext die Attacke DoS nicht ganz. Falls die nachfolgende Funktionalität wegen der langen Ausführungszeit der Filterkomponente übersprungen wird bzw. ein Fehler auftritt würde dies meiner Ansicht in die Thematik Anwendungslogik passen. Eine DoS-Attacke kann hingegen anhand jeder Funktion durchgeführt werden.&lt;br /&gt;
&lt;br /&gt;
== &amp;quot;G 5.WA11 Umgehung clientseitig umgesetzter Sicherheitsfunktionen von Web-Anwendungen&amp;quot; (Dennis) ==&lt;br /&gt;
; 1. &amp;quot;Ein Angreifer kann diese ausnutzen, um beispielsweise unbefugt Befehle an Hintergrundsysteme der Web-Anwendung zu übermittlen (z.B. in Form von Datenbankanfragen bei einer SQL-Injection).&amp;quot;&lt;br /&gt;
Umformulierung des Inhalts der Klammer. Hatte beim ersten Lesen für mich den Anschein, als ob ein Formular genutzt werden könnte welches den Nutzer aufforder eine SQLI einzugeben. Ich denke &amp;quot;Datenbankanfrage zwecks Ausführung einer SQL-Injection&amp;quot; würde besser passen.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== G 2.WA02 Mängel bei der Entwicklung und der Erweiterung von Web-Anwendungen (Matthias) ==&lt;br /&gt;
&lt;br /&gt;
Allgemein ist de obere Teil ok, die aufgezählten &amp;quot;Auswirkungen von fehlenden Vorgaben&amp;quot; verstehe ich jedoch nicht. Wo ist etwa der Bezug von Barrierefreiheit auf die Anwendungssicherheit?&lt;br /&gt;
&lt;br /&gt;
Mein Vorschlag, um diese Punkte etwa sinnvoll umzubauen:&lt;br /&gt;
* &amp;quot;Fehlendes Vorgehensmodell&amp;quot;: Bezug auf fehlende Berücksichtigung von Sicherheit im SDLC. Statt eines SDLCs selbst sollte hier besser auf die Notwendigkeit eines Secure Development Lifecycle (SDL) hingewiesen werden&lt;br /&gt;
* &amp;quot;Fehlende Programmierrichtlinien&amp;quot; =&amp;gt; Besser wäre hier &amp;quot;Fehlende Sicherheitsrichtlinien in der Programmierung&amp;quot; also &amp;quot;Secure Coding Guidelines&amp;quot;&lt;br /&gt;
* &amp;quot;Testfälle&amp;quot; =&amp;gt; &amp;quot;Sicherheitsrelevante Testfälle&amp;quot; (z.B. Security Unit Tests). &lt;br /&gt;
* &amp;quot;Barrierefreiheit&amp;quot;: Warum nicht an dieser Stelle die Auswirkungen von Sicherheitsfunktionen auf die Bedienbarkeit, etwa anhand von CAPTCHAS erläutern?&lt;br /&gt;
&lt;br /&gt;
== G 2.WA03 Unzureichender Schutz personenbezogener Daten bei Web-Anwendungen (Matthias) ==&lt;br /&gt;
&lt;br /&gt;
Der Titel dieses Bausteines heißt &amp;quot;Schutz personenbezogener Daten&amp;quot;, die genannten Beispiele beziehen sich bis auf den letzten jedoch auf die missbräuchliche (oder zumindest problematische) Nutzung aus Sicht des Datenschutzes. &lt;br /&gt;
&lt;br /&gt;
Die Punkt 1-3 sollten daher besser entfallen und z.B. durch die Folgenden ersetzt werden:&lt;br /&gt;
* Unsichere Einbindung von sozialen Netzwerken (Bezug nehmen auf den Like-Button bei Facebook)&lt;br /&gt;
* Unsichere Einbindung von Werbeinhalten&lt;br /&gt;
* Unsichere Übertragung und Caching&lt;br /&gt;
* Unsichere Protokollierung&lt;br /&gt;
* Ungenügender Zugriffsschutz&lt;br /&gt;
* Verstoß des Minimalprinzips bzw. der Zweckgebundenheit (welche Daten werden wirklich benötigt)&lt;br /&gt;
&lt;br /&gt;
Auch wäre es ggf. zumindest einen Verweis auf das BDSG zu machen.&lt;br /&gt;
&lt;br /&gt;
== G 4.33 Unzureichende oder fehlende Authentisierung (Matthias) ==&lt;br /&gt;
&lt;br /&gt;
; 1. Erster Absatz: &amp;quot;Wenn Authentisierungsmechanismen fehlen oder zu schlecht sind&amp;quot;&lt;br /&gt;
&lt;br /&gt;
&amp;quot;schlecht&amp;quot; sollte vlt besser durch &amp;quot;unzureichend&amp;quot; ersetzt werden.&lt;br /&gt;
&lt;br /&gt;
; 2. &amp;quot;Sicherheitslücken entstehen bei... der Benutzerauthentisierung&amp;quot;&lt;br /&gt;
&lt;br /&gt;
Hier findet nur ein Bezug auf &amp;quot;Passwörter&amp;quot; statt. Der Bezug auf die fehlerhaft implementierte oder dem Schutzbedarf ungenügende Schutzmechanismen (z.B. keine 2-Faktor-Authentisierung bei hochsensiblen Daten) fehlt. Auch auf das komplette fehlen von Authentisierungs-Controls wird hier nicht  eingegangen&lt;br /&gt;
&lt;br /&gt;
; 3. &amp;quot;Sicherheitslücken entstehen bei... der Komponentenauthentisierung&amp;quot;&lt;br /&gt;
&lt;br /&gt;
Wie bei 2., wird auch hier wieder nur auf Passwörter, nicht jedoch auf das fehlen von Controls selbst eingegangen. An dieser Stelle fehlt auch ein Hinweis auf die Notwendigkeit dedizierter Benutzeraccounts.&lt;br /&gt;
&lt;br /&gt;
; 4. &amp;quot;Sicherheitslücken entstehen bei... der Wahl des Verfahrens&amp;quot;&lt;br /&gt;
&lt;br /&gt;
Statt untauglich würde ich auch hier von &amp;quot;dem Schutzbedarf der Daten nicht angemessen&amp;quot; sprechen, eigentlich gehört das für mich aber in die obigen Punkte.&lt;br /&gt;
&lt;br /&gt;
; 5. Serverseitige Authentisierung fehlt&lt;br /&gt;
&lt;br /&gt;
Auch der Server (bzw. die Anwendung selbst) kann sich fehlerhaft oder ungenügend beim Benutzer authentsieren, etwa über DNS, SSL-Zertifikate, etc.&lt;br /&gt;
&lt;br /&gt;
== G 4.WA04 Unzureichende Validierung von Ein- und Ausgabedaten bei Web-Anwendungen (Matthias) ==&lt;br /&gt;
&lt;br /&gt;
; 1. &amp;quot;Unzureichende Validierung von Eingabedaten&amp;quot;&lt;br /&gt;
&lt;br /&gt;
Die genannten Beispiele sind genau keine korrekten Beispiele für diesen Fall, sondern betreffen die Ausgabevalidierung bzw. Enkodierung. Typische Fehler der Eingabevalidierung ist eine Manipulierbarkeit der Business Logik.&lt;br /&gt;
&lt;br /&gt;
; 2. &amp;quot;Unzureichende Validierung von Ausgabedaten&amp;quot;&lt;br /&gt;
&lt;br /&gt;
Hier geht es zentral um die Verhinderung von Interpreter Injection, also serverseitig (z.B. SQL oder LDAP Injection) oder clientseitig (XSS, JSON Injection, etc.). Statt &amp;quot;können die Ausgaben Schadcode&amp;quot; enthalten würde ich hier eher davon Sprechen, dass ein solcher Interpreteraufruf manipuliert werden kann (was dann z.B. zur Einschleusung von Schadcode genutzt werden kann).&lt;br /&gt;
&lt;br /&gt;
; 3. &amp;quot;Die Suchfunktion der Web-Anwendung verwendet die Eingaben der Benutzer ungefiltert&amp;quot;&lt;br /&gt;
&lt;br /&gt;
Mit ungenügender &amp;quot;Filterung&amp;quot; hat SQL Injection nichts zu tun,  eigentlich geht es hierbei darum, dass SQL-Anfragen dynamisch mit unvalidierten Eingebedaten zusammengebaut (konkateniert) werden.&lt;br /&gt;
&lt;br /&gt;
; 4. &amp;quot;Ungefilterter HTML-Code in Kommentar-Funktion&amp;quot;&lt;br /&gt;
&lt;br /&gt;
Hier fehlt der Bezug auf persistentes XSS, das hier sicherlich zentral ist.&lt;br /&gt;
&lt;br /&gt;
== G 4.WA05 Fehlende oder mangelhafte Fehlerbehandlung durch Web-Anwendungen (Tobias, Matthias) ==&lt;br /&gt;
; Abschnitt &amp;quot;Unsichere Fehlerbehandlung&amp;quot;&lt;br /&gt;
Die G adressiert &amp;quot;Unsichere Fehlerbehandlung&amp;quot;, der Abschnitt die &amp;quot;Unsichere Fehlerbehandlung in Sicherheitskomponenten&amp;quot;. Entsprechend sollte der fettgedruckte Teil angepasst werden.&lt;br /&gt;
&lt;br /&gt;
; &amp;quot;fehlende SQL-Parameter,&amp;quot;&lt;br /&gt;
Sollte besser &amp;quot;Fehlermeldungen bei ungültigen SQL-Abfragen&amp;quot; lauten.&lt;br /&gt;
&lt;br /&gt;
; &amp;quot;Auch scheinbar unkritische Informationen, wie die Meldung ob (..)&amp;quot;&lt;br /&gt;
Korrekt, allerdings nicht nachvollziehbar, wenn das Problem der Leser nicht schon bekannt ist. Daher erweitern nach &amp;quot; Rahmen von Brute-Force-Angriffen ausgenutzt werden.&amp;quot; mit &amp;quot;. Bei Brute-Force-Angriffen wäre in diesem Fall klar, dass der Benutzername gültig ist.&amp;quot;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[User:Mrohr|Matthias]]): Stimme dem Obigen auch zu, ausserdem:&lt;br /&gt;
&lt;br /&gt;
; Sprachlich: &amp;quot;kann dies unvorhersehbare Auswirkungen haben und den Betrieb der Web-Anwendung bis zur Unerreichbarkeit einschränken.&amp;quot;&lt;br /&gt;
&lt;br /&gt;
&amp;quot;Unerreichbarkeit&amp;quot; ist etas merkwuerdig ausgedrueckt, besser ware hier von der &amp;quot;Verfuegbarkeit&amp;quot; zu sprechen. Im Uebrigen fehlt vollstaendig der Bezug auf die Verfuegbarkeit als Primaeres Schutzziel der Informationssicherheit.&lt;br /&gt;
&lt;br /&gt;
; &amp;quot;Clientseitige Fehlerbehandlung&amp;quot;&lt;br /&gt;
Das stimmt soweit, das generelle Problem ist jedoch genereller, naehmlich die clientseitige Abbildung sicherheitsrelaventer Logik (in diesem Fall die Fehlerbehandlung)&lt;br /&gt;
&lt;br /&gt;
== G 4.WA06 Unzureichende Nachvollziehbarkeit von sicherheitsrelevanten Ereignissen bei Web-Anwendungen (Matthias) ==&lt;br /&gt;
&lt;br /&gt;
; 1. Erster Absatz: &amp;quot;Die Behebung einer Schwachstelle ist dann nicht oder nur unter erschwerten Bedingungen möglich.&amp;quot;&lt;br /&gt;
&lt;br /&gt;
Hier würde ich ergänzen: &amp;quot;...und Angriffe auf die Anwendungen können ggf. nicht erkannt oder nachvollzogen werden&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
; 2. &amp;quot;Beispiele&amp;quot;: Kommulierbarkeit&lt;br /&gt;
&lt;br /&gt;
Hier fehlt auch ein Bezug auf die Kommulierbarkeit von SIcherheitsereignissen, dass diese also auch von solchen anderer Systeme in Verbindung gesetzt werden können&lt;br /&gt;
&lt;br /&gt;
; 3. &amp;quot;Beispiele&amp;quot;: Gerichtsverwertbarkeit&lt;br /&gt;
&lt;br /&gt;
Auch die Möglichkeit zur Gerichtsverwertbarkeit (etwa durch eindeutigen Zeitstempel) und manipulationssicherer Speicherung, würde ich an dieser Stelle unbedingt erwähnen.&lt;br /&gt;
&lt;br /&gt;
== G 4.WA07 Offenlegung von Informationen bei Web-Anwendungen (Matthias) ==&lt;br /&gt;
&lt;br /&gt;
; 1. Titel&lt;br /&gt;
&lt;br /&gt;
Hier würde ggf. &amp;quot;Offenlegung vertraulicher Informationen&amp;quot; sicher besser passen als &amp;quot;Offenlegung von Informationen&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
; 2. Beispiellink&lt;br /&gt;
&lt;br /&gt;
Ein Beispiellink (mit und ohne Token) würde sicher die Verständlichkeit dieser Schwachstelle verbessern.&lt;br /&gt;
&lt;br /&gt;
; 3. Erster Absatz: &amp;quot;Wenn demzufolge Informationen unnötig offengelegt werden, steigt die Wahrscheinlichkeit eines erfolgreichen Angriffs.&amp;quot;&lt;br /&gt;
&lt;br /&gt;
Interne Informationen auszublenden ist eine Härtungsmaßnahme, deren Anzeige erhöht aber nicht zwangsläufig die Wahrscheinlichkeit eines erfolgreichen Angriffs. Ich würde diesen Satz weglassen.&lt;br /&gt;
&lt;br /&gt;
 ; 4. Fehlende Punkte&lt;br /&gt;
&lt;br /&gt;
* Ein Hinweis auf HTTP Header wäre hier sicher erwähnenswert.&lt;br /&gt;
* Weiterhin bzgl. der Anzeige von Traces und ein Verweis auf den Entsprechenden Baustein zur Fehlerbehandlung&lt;br /&gt;
&lt;br /&gt;
== G 5.WA14 Cross-Site Request Forgery (CSRF, XSRF) (Matthias) ==&lt;br /&gt;
&lt;br /&gt;
; 1. Erster Absatz: &amp;quot;Können Funktionen einer Web-Anwendung ohne weitere Überprüfung der Authentizität des HTTP-Requests (z.B. durch Tokens in versteckten Formularfeldern) genutzt werden&amp;quot;&lt;br /&gt;
&lt;br /&gt;
Statt &amp;quot;Funktionen&amp;quot; würde ich besser von &amp;quot;schreibenden Aktionen&amp;quot; sprechen, dann macht der Satz mehr Sinn.&lt;br /&gt;
&lt;br /&gt;
; 2. Dritter Absatz: &amp;quot;Im Gegensatz zu XSS (siehe ...￼ ) ist das Angriffsziel nicht die Information auf dem Client (z. B. in Cookies),&amp;quot;&lt;br /&gt;
&lt;br /&gt;
Dieser (Halb-)Satz macht keinen Sinn, auch weil es bei XSS nicht nur im Informationen auf dem Cient geht. Vorschlag: &amp;quot;ist das Angriffsziel nicht die Ausführung von Skriptcode, sondern von unbefugten, schreibenden Aktionen im Kontext des angemeldeten Benutzers.&amp;quot;&lt;br /&gt;
&lt;br /&gt;
; 3. Session Riding&lt;br /&gt;
&lt;br /&gt;
Session Riding ist quasi nur ein anderer Begriff für CSRF. Die einzige Form von CSRF die mir bekannt ist, sind Angriffe mit Standard-Passwörtern auf HTTP-Basic-Auth geschützten Ressourcen.&lt;br /&gt;
&lt;br /&gt;
Im Grunde ist Session Riding aber nur ein Synonym für CSRF. Der Absatz ist daher auch nur eine Wiederholung der obigen Beschreibung.&lt;br /&gt;
&lt;br /&gt;
; 4. Zum Beispiel: &amp;quot;Durch einen präparierten Link auf einer Webseite wird die Änderung des Zugangspasswortes des Routers eingeleitet.&amp;quot;&lt;br /&gt;
&lt;br /&gt;
Etwas ungüngstig ausgedrückt. Besser wäre: &amp;quot;wird eine Anfrage zur Änderung des Zugangspasswortes an den Router gesendet. Hierbei sendet der Browser automatisch den Session Cookie mit, worüber die Webanwendung die Authentizität der Anfrage verifiziert und die Änderung durchführt.&amp;quot;&lt;br /&gt;
&lt;br /&gt;
== G 5.WA18 Clickjacking (Matthias) ==&lt;br /&gt;
&lt;br /&gt;
Hier stellt sich mir nur die allgemeine Frage, ob Clickjacking, bzw. der Schutz davor tatsächlich einem Grundschutz zuzurechnen ist. Persönlich würde ich dies nicht tun.&lt;br /&gt;
&lt;br /&gt;
== M 2.WA02 Dokumentation der Architektur von Web-Anwendungen (Matthias) ==&lt;br /&gt;
&lt;br /&gt;
; Verantwortlich für die Umsetzung&lt;br /&gt;
Hier wäre auch die Nennung des &amp;quot;Architekten&amp;quot; sinnvoll&lt;br /&gt;
 &lt;br /&gt;
; Fehlende Bestandteile der Dokumentation:&lt;br /&gt;
* Schutzbedarf des Systems sowie der verarbeiteten Daten&lt;br /&gt;
* Schützenswerte Daten und Funktionen (Assets)&lt;br /&gt;
* Betriebliche Anforderungen an die Sicherheit bzw. eingesetzte Plattform&lt;br /&gt;
* Dokumentierte Konfigurationseinstellungen &lt;br /&gt;
* BIA (RTO, RPO)&lt;br /&gt;
* Schnittstellen&lt;br /&gt;
* Trust Boundaries&lt;br /&gt;
* Akteure (bzw. Trust Level)&lt;br /&gt;
* Sicherheitsannahmen&lt;br /&gt;
* Geltende Compliance-Anforderungen (BDSG, PCI DSS, etc.)&lt;br /&gt;
&lt;br /&gt;
; Benutzermanagement&lt;br /&gt;
&lt;br /&gt;
Wenn damit das Identity Management gemeint ist, gehört das Dokumentiert, ist aber keine Sicherheitsfunktion. Oder ist hiermit das Rollen- und Berechtigungskonzept gemeint? Grenzt sich aus meiner Sicht schwer mit dem Thema Authentisierung ab. &lt;br /&gt;
&lt;br /&gt;
; Prüffragen&lt;br /&gt;
&lt;br /&gt;
Hier fehlt etwas in Bezug auf Sicherheitsanforderungen. Beispiel: &amp;quot;Werden Sicherheitsanforderungen an den Betrieb während der Entwicklung abgestimmt und dokumentiert&amp;quot;&lt;br /&gt;
&lt;br /&gt;
== M 2.WA12 Entwicklung und Erweiterung von Anwendungen (Markus) ==&lt;br /&gt;
; &amp;quot;Es sollte darauf geachtet werden, dass Sicherheitsanforderungen&lt;br /&gt;
vollständig durch Sicherheitsmechanismen erfüllt und zur Erstellung von&lt;br /&gt;
Testfällen festgehalten werden.&amp;quot; --&amp;gt; Bessere Formulierung würde aussagen, dass die Sicherheitsanforderungen durch Testfälle verifiziert werden.&lt;br /&gt;
&amp;quot;(z. B. durch Kommentare im&lt;br /&gt;
Quelltext). Somit ist der Quelltext zu einem&amp;quot; --&amp;gt; Das ist kein empfehlenswerter Programmierstiel! Raus mit diesem Kommentar&lt;br /&gt;
;&amp;quot;Zum Schutz vor dem Verlust bereits entwickelter und verworfener&lt;br /&gt;
Lösungen sowie zu Dokumentationszwecken sollte die Historie der&lt;br /&gt;
Änderungen festgehalten werden (z. B. durch ein Revisionssystem).&amp;quot; --&amp;gt; Auch diesen Absatz können wir streichen - Kein professioneller Programmierer arbeitet ohne Versionierugssystem.&lt;br /&gt;
;&amp;quot;Bei Web-Anwendung sollten die Webseiten auf Konformität zu dem&lt;br /&gt;
verwendeten Standard (z. B. HTML-Standard) getestet werden. Dadurch&lt;br /&gt;
können unvorgesehene Seiteneffekte aufgrund einer Fehlinterpretation&lt;br /&gt;
seitens der Browser vermieden werden.&amp;quot; --&amp;gt; Könnte man noch um &amp;quot;Die Software ist in möglichst vielen Browsern zu testen&amp;quot; erweitern.&lt;br /&gt;
;Generell geht der Autor leider nicht auf die Rollen &amp;amp; Rechte Verteilung ein. Mir fehlt der Hinweis, das es eine personelle Trennung zwischen Entwicklung, Test und Betrieb geben muss.&lt;br /&gt;
;Zum Thema Wartung / Betrieb --&amp;gt; Hier wird keine Aussage getroffen bezüglich Log_Files. Dieses Thema kann kritische Auswirkungen haben, Bsp.: logging ganzer HTTP-Requests im LogLevel=Debug.&lt;br /&gt;
; &amp;quot;Produktspezifische Sicherheitsfunkionalität&amp;quot; - Dieser Absatz ist gefährlich - der Angreifer ist nicht zur Verwendung dies Zielbrowsers gezwungen. Deshalb können Browser-spez. Sicherheitsfunktionen nur als Add-ON gewertet werden.&lt;br /&gt;
; &amp;quot;Festlegung der Entwicklungsumgebung&amp;quot; - Dieser Absatz geht nicht auf die zu verwendenden Testdaten ein. Der Hinweis, dass Live-Daten / Kundendaten nichts in Test- &amp;amp; Entwicklungsumgebungen zu suchen haben fehlt!!!&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== M 2.WA24 Web-Tracking (Matthias) ==&lt;br /&gt;
&lt;br /&gt;
; Letzter Absatz: &amp;quot;Falls eine Auswertung von Nutzerdaten, insbesondere personenbezogener Daten, .. &amp;quot;&lt;br /&gt;
&lt;br /&gt;
Hier sollte denke ich besser von personenbeziehbaren Daten gesprochen Werten. Dies betrifft etwa die Zuordnung von Surfverhalten zu einer bestimmten Person. Dies sollte stets nach den Prinzipien Datensparsamkeit und Datenvermeidung, Erforderlichkeit, sowie Zweckbindung erfolgen. Ist Webtracking nicht personenbeziehbar ist dies kein Thema für den Datenschutz.&lt;br /&gt;
&lt;br /&gt;
== M 4.WA04 Authentisierung bei Web- Anwendungen (Matthias) ==&lt;br /&gt;
&lt;br /&gt;
; Vermischung von Authentisierung und Session Management &lt;br /&gt;
&lt;br /&gt;
Bei diesem Baustein findet eine ziemlich große Vermischung von Anforderung an die Authentisierung und das erst in &amp;quot;M 4.WA06 Session-Management bei Web- Anwendungen&amp;quot; behandelte Session Management statt (Beispiel: &amp;quot;Remember-Me-Funktion&amp;quot;). Beide Themen sollten sinnvollerweise getrennt voneinander zu betrachten und aufeinander zu beziehen.&lt;br /&gt;
&lt;br /&gt;
; Verwendung von Frameworks&lt;br /&gt;
&lt;br /&gt;
Die Anforderung ist schon ein wenig eingeschränkt. Besser passt hier denke ich die &amp;quot;Abbildung der Authentisierung über Standardkomponenten (Bibliotheken oder Frameworks)&amp;quot;. &lt;br /&gt;
&lt;br /&gt;
; Remember-Me-Funktion&lt;br /&gt;
&lt;br /&gt;
Siehe oben, gehört zum Session Management. Das ließt sich im übrigen so, als ob eine Webanwendung Credentials auf dem Client abhängt. &lt;br /&gt;
&lt;br /&gt;
; Grenzwerte für gescheiterte Anmeldeversuche&lt;br /&gt;
&lt;br /&gt;
Diese Empfehlung ist allgemein falsch, da sie sehr von der betrachteten Anwendung abhängt. Besser wäre hier allgemein von Mechanismen zur Verhinderung von automatisierten Angriffen zu sprechen (Anti-Automatisierung). &lt;br /&gt;
&lt;br /&gt;
Etwa umsetzbar durch&lt;br /&gt;
* Sperrung nach x Anmeldeversuchen&lt;br /&gt;
* Throttling&lt;br /&gt;
* Captchas&lt;br /&gt;
* Sicherheitsfragen&lt;br /&gt;
&lt;br /&gt;
Das allgemeine Sperren kann leicht für das gezielte Aussperren von Benutzern (User Lockout) verwendet werden. Was etwa bei Trading-Anwendungen nicht funktioniert.&lt;br /&gt;
&lt;br /&gt;
; Automatisiertes Zurücksetzen von Authentisierungsdaten&lt;br /&gt;
&lt;br /&gt;
Würde ich besser als &amp;quot;Passwort-Reset&amp;quot; bezeichnen.&lt;br /&gt;
&lt;br /&gt;
Weiterhin fehlt hier der Hinweis, dass statt ein automatisiertes Zurücksetzen, ein Mechanismus zu empfehlen ist, bei dem über ein hinterlegtes Sicherheitsmerkmal (Handy-Nummer oder E-Mail-Adresse) vom Benutzer zunächst eine Verifikation durchgeführt wird. Beispielsweise durch einen erhaltenen Link. Erst dann darf eine Änderung des Passwortes durch den Benutzer erfolgen.&lt;br /&gt;
&lt;br /&gt;
; Registrierung nicht behandelt&lt;br /&gt;
&lt;br /&gt;
Es existiert hier kein Punkt, der die sichere Implementierung von Benutzerregistrierungen behandelt.&lt;br /&gt;
&lt;br /&gt;
; Verweis auf Externalisierung fehlt.&lt;br /&gt;
&lt;br /&gt;
Statt die Authentisierung selbst durchzuführen kann eine Anwendung hierzu auf eine externe Komponente (Beispiel: SiteMinder oder Kerberos) zurückgreifen.&lt;br /&gt;
&lt;br /&gt;
; Verweis auf Behandlung von Credentials fehlt&lt;br /&gt;
&lt;br /&gt;
Auch wenn das  in &amp;quot;M 4.WA15 Schutz vertraulicher Daten bei Web- Anwendungen&amp;quot; ausführlich behandelt wird, sollte in diesem Baustein bereits auf den angemessenen Schutz von Authentisierungsdaten bei Übertragung und Speicherung hingewiesen werden.&lt;br /&gt;
&lt;br /&gt;
== M 4.WA05Umfassende Ein- und Ausgabevalidierung bei Web-Anwedungen (Markus) ==&lt;br /&gt;
; &amp;quot;Ablehnung der Daten im&lt;br /&gt;
Fehlerfall&amp;quot; --&amp;gt; Hier könnte man noch auf Tar-Pits eingehen - nur ein Vorschlag.&lt;br /&gt;
&lt;br /&gt;
== M 4.WA06Session-Management bei Web-Anwendungen (Markus, Matthias) ==&lt;br /&gt;
; &amp;quot;Übertragung der SessionID mittels GETRequest&amp;quot; --&amp;gt; Hier fehlt der Hinweis, dass die Lebensdauer dieser SessionIds kurz/kürzer sein muss, als im Falle der Speicherung im Cookie.&lt;br /&gt;
&lt;br /&gt;
([[User:Mrohr|Matthias]]) Die Anmerkung verstehe ich ehrlich gesagt ueberhaupt nicht, zumal das SM haeufig transparent zwischen Cookies und URL Rewriting wechselt. Wozu soll das gut sein? Wie soll das geschehen? Idealerweise sollte die Session ID niemals in die URL geschrieben werden, das sollte eigentlich genuegen.&lt;br /&gt;
&lt;br /&gt;
; &amp;quot;Verschlüsselte Übertragung von SessionIDs&amp;quot; --&amp;gt; Hier fehlt der Hinweis auf den Beast-Exploit. TLS Version &amp;gt; 1.0 verwenden!&lt;br /&gt;
&lt;br /&gt;
([[User:Mrohr|Matthias]]) Solange hier nicht auf eine explizite TLS Version eingegangen wird, sollte meiner grossen Ueberzeugung nach hier auch auf keine Exploits etc. eingagen werden, das gehoert an andere Stelle.&lt;br /&gt;
&lt;br /&gt;
; ([[User:Mrohr|Matthias]]) Weiterhin:&lt;br /&gt;
&lt;br /&gt;
 Es dürfen keine extern bekannten oder erratbaren Daten (z. B. IP-Adresse, Uhrzeit) in die Berechnung der SessionID einfließen.&lt;br /&gt;
&lt;br /&gt;
Die Aussage finde ich etwas problematisch, wichtiger ist, dass die Entropie ausreichend hoch ist. Haeufig werden etwa IPs von Load Balancern in die Session ID hineingeschrieben.&lt;br /&gt;
&lt;br /&gt;
 - Domain (z. B. webapp.domain.tld),&lt;br /&gt;
 - Path (z. B. /webapp/),&lt;br /&gt;
 - Secure und&lt;br /&gt;
 - HttpOnly.Beschränkte Sitzungsdauer&lt;br /&gt;
&lt;br /&gt;
Das sieht so aus, als ob es empfehlenswert ist, das Domain-Tag zu verwenden, das ist es sicherlich nicht. Was macht hier der Hinweis &amp;quot;Beschraenke Sizuungsdauer&amp;quot;?&lt;br /&gt;
&lt;br /&gt;
== M 4.WA07Fehlerbehandlung durch Web-Anwendungen (Markus) ==&lt;br /&gt;
; Konsistenter / Inkonsistener Zustand einer Webanwendung und der daraus resultierende Datenverlust: Hier fehlen mir die Punkte: DOS, Priv.Escalation, CodeExecution.&lt;br /&gt;
; Vermeidung vertraulicher Informationen in Fehlermeldungen --&amp;gt; Fehlermeldungen sollten ebenfalls eine Systeminformationen preisgeben (Softwareversion, Patchlevel, etc.)&lt;br /&gt;
; Abbruch des Vorgangs nach Auftreten eines Fehlers --&amp;gt; TarPits scheinen dem Autor umbekannt zu sein :)&lt;br /&gt;
; &amp;quot;Werden Fehler möglichst von der gleichen Komponente behandelt, in der&lt;br /&gt;
der Fehler aufgetreten ist?&amp;quot; --&amp;gt; Das &amp;quot;möglichst&amp;quot; sollten wir streichen.&lt;br /&gt;
&lt;br /&gt;
== M 4.WA08Schutz vor automatisierter Nutzung von Web-Anwendungen (Markus) ==&lt;br /&gt;
; &amp;quot;Brute-Force-&lt;br /&gt;
Angriffe (z. B. Erraten von Zugangsdaten) und Enumeration-Angriffe (z. B.&lt;br /&gt;
automatisiertes Ermitteln von gültigen Login-Namen)&amp;quot; -- die Beispiele sind identisch - besser Beispiele suchen, z.b. URL-Enumeration&lt;br /&gt;
&lt;br /&gt;
([[User:Mrohr|Matthias]]) Das sehe ich anders. Brute-Forcing bezieht auf Passwoerter und Enumeration auf Benutzernamen, etwa durchs hochzaehlen. Auch wenn ich zustimmen muss, dass die nicht ganz gluecklich gewaehlt wurden. Stann &amp;quot;Erraten von Zugangsdaten&amp;quot; wuerde ich besser von &amp;quot;Erraten von Passwoertern&amp;quot; sprechen. Oder wie gesagt gleich auch auf andere Beispiele (etwa Object ID Enumeration) beziehen.&lt;br /&gt;
&lt;br /&gt;
== M 4.WA11Sichere Konfiguration von Web-Anwendungen (Markus) ==&lt;br /&gt;
; &amp;quot;Sicherer Umgang mit TLS/SSL&amp;quot; -- Hier fehlt der Hinweis, dass TLS-1.0 gebrochen ist&lt;br /&gt;
; &amp;quot;Zeichenkodierungskonfiguration&amp;quot; -- Ein Whitelisting abhängig von der Encodierung wäre ein weiterer Vorschlag&lt;br /&gt;
; &amp;quot;Restriktive Dateisystemberechtigungen&amp;quot; -- auch wenn es ein klassiker ist - der AS sollte ebenfalls mit von einem eingeschränkten Nutzer gestartet werden und nicht als root&lt;br /&gt;
; Administration Consolen:zur Ergänzen: Wenn diese nicht benötigit, sollten derartige Applikationen nicht deployed werden, unabhängig von möglichen Zugangsbeschränkungen.&lt;br /&gt;
&lt;br /&gt;
([[User:Mrohr|Matthias]]) Sorry, meiner Meinung nach hat die Bewertung von Kryptoverfahren hier abslut nichts zu suchen.Stattdessen sollte hier auf den entsprechenden [https://www.bsi.bund.de/ContentBSI/Publikationen/TechnischeRichtlinien/tr02102/index_htm.html Empfehlung des BSI] verwiesen werden, auch wenn dieses Dokument derzeit noch etwas outdated zu sein scheint.&lt;br /&gt;
&lt;br /&gt;
== M 4.WA13Kontrolliertes Einbinden von Daten und Inhalten bei Web-Anwendungen (Markus) ==&lt;br /&gt;
; Datei-Upload: Bei einem Upload werden Dateien durchaus in TEMP-Verzeichnissen gesammelt und danach weiterverarbeitet. Diese TEMP-Verzeichnisse sind im Rahmen einer Sicherheitsanalyse zu betrachten -&amp;gt; Möglicher (unbefugter) Zugriff auf weitere Uploads&lt;br /&gt;
; Upload komprimierter Dateien / großer Dateien birgt die Gefahr von DOS Angriffen&lt;br /&gt;
; Upload von Dateien kann bei weiterem Parsing zu Speicherengpässen führen --&amp;gt; DOS-Angriffe auf Thread-Local etc.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== M 4.WA14Restriktive Herausgabe sicherheitsrelevanter Informationen bei Web-Anwendungen (Markus, Matthias) ==&lt;br /&gt;
OK - Keine Anmerkungen von mir.&lt;br /&gt;
&lt;br /&gt;
[[User:Mrohr|Matthias]]) Von mir schon;)&lt;br /&gt;
&lt;br /&gt;
; Vermeidung von Kommentaren in ausgelieferten Webseiten&lt;br /&gt;
&lt;br /&gt;
Das ist leider total falsch, wir brauchen haeufig Komentare, aus Kompatibilitaetsgruenden. So wird etwa der JavaScript-Block haeufig auskommentiert.&lt;br /&gt;
&lt;br /&gt;
Wurde stattessen besser von sicherheitsrelevanten Kommentaren sprechen und als Massnahme generell Entwicklerkommentare ueber Sprachkonstruktre (etwa JSP) durchzufuehren.&lt;br /&gt;
&lt;br /&gt;
; Löschen nicht benötigter Dateien&lt;br /&gt;
&lt;br /&gt;
Hier wurde ich ggf. Dateien von Versionisierungstools (etwa Subversion) erwaehnen, das sehen wir schon recht haeufig.&lt;br /&gt;
&lt;br /&gt;
Statt Dateien einfach nur zu loeschen (was in der Praxis haeufig nicht so einfach ist) bietet es sich zudem an, den Zugriff auf bestimmte Dateien oder Dateitypen generell zu sperren, etwa mittels ACL im Apache.&lt;br /&gt;
&lt;br /&gt;
; Gibt die Web-Anwendung ausschließlich neutrale Fehlermeldungen aus und sind diese im Quelltext identisch? {E: C}&lt;br /&gt;
&lt;br /&gt;
Persoenlich verstehe ich das nicht. Wieseo neutrale Fehlermeldung? Das macht fuer mich nur beim Login Sin. Hierzu existiert in dem Text auch keinerlei Bezug. Ich wuerde das daher besser entfernen und im Rahmen der Fehlerbehandlung diskutieren. Mindestens sollte hier jedoch besser von &amp;quot;sicherheitsunbedentlichen Fehlermeldungen&amp;quot; oder so gesprochen werden.&lt;br /&gt;
&lt;br /&gt;
; Wird der Referrer bei Verlassen der Web-Anwendung (z. B. durch einen Link auf eine externe Seite) gefiltert?&lt;br /&gt;
&lt;br /&gt;
Diesen Punkt sehe ich als sehr Fallabhengig an. Es kann fuer seiten durchaus wuenschenswert sein, dass der Referer weitergegeben wird. Der Referer sollte natuerlich keine sensiblen Informationen enthalten, was ja an anderer Stelle (etwa Session Management) vorgegeben wird bzw. gegeben werden sollte.&lt;br /&gt;
&lt;br /&gt;
== M 4.WA15Schutz vertraulicher Daten bei Web-Anwendungen (Markus) ==&lt;br /&gt;
; Sichere kryptographische Algorithmen:&lt;br /&gt;
 Hier fehlt mir eine Liste der aktuelle als sicher geltenden Verfahren.&lt;br /&gt;
; Schlüssel&lt;br /&gt;
 Das die Schlüssel bestimmten Formaten entsprechen müssen ist ok - aber das Schlüsselmanagement wird gar nicht besprochen?&lt;br /&gt;
; Schutz der Daten im Browsercache&lt;br /&gt;
 Skripte und Browserplugins können ebenfalls auf den Browsercache zugreifen - diese werden hier nicht erwähnt.&lt;br /&gt;
; Maskierung von Passwörtern &lt;br /&gt;
 Dies schützt bei der Eingabe nur vor ShoulderSurfing nicht vor Skripten oder Plugins die diese an andere Server posten.&lt;br /&gt;
; Sicherung von Zugangsdaten:&lt;br /&gt;
 Zugangsdaten in einer Datei abzulegen - wenn auch ausserhalb des WebRoots ist keine gute Idee.&lt;br /&gt;
; Schutz von Quelltexten:&lt;br /&gt;
 Hier würde ich property files mit aufnehmen. der hinweis auf web-inf/classes fehlt - warum?&lt;br /&gt;
 Bei include-befehlen sind die pfadangaben zu überdenken.&lt;br /&gt;
&lt;br /&gt;
== M 4.WA16Zugriffskontrolle bei Web-Anwendungen (Markus) ==&lt;br /&gt;
; Zugriffskontrolle via Frameworks:&lt;br /&gt;
 Dieser Punkt (Frameworks) wird nur in einem Satz erwähnt. Es werden keine Bespiele gegeben - Das ist zu wenig.&lt;br /&gt;
 Es müssen alle Zugriffe geschützt werden. Eine Protokollierung aller Zugriffe mit den nötigen Informationen ist ebenfalls empfehlenswert.&lt;br /&gt;
; Datei Upload:&lt;br /&gt;
 Die Gefahr eines DOS wird hier nicht erwähnt.&lt;br /&gt;
&lt;br /&gt;
== M 4.WA19Verhinderung von Cross-Site Request Forgery (CSRF, XSRF) (Markus, Matthias) ==&lt;br /&gt;
; Verantwortliche: &lt;br /&gt;
 Entwickler und Admins!&lt;br /&gt;
([[User:Mrohr|Matthias]]) Korrekt, wobei auch in der Reihenfolge&lt;br /&gt;
&lt;br /&gt;
; Anti-CSRF-Token in hidden fields:&lt;br /&gt;
 Das ist keine gute Idee. Ich würde das streichen!&lt;br /&gt;
&lt;br /&gt;
([[User:Mrohr|Matthias]]) Watt? Anti-CSRF-Tokens in Hidden Fields sind die Standard-Massnahme. Wie denn sonst? Bitte nicht streichen!!! &lt;br /&gt;
&lt;br /&gt;
([[User:Mrohr|Matthias]]) Die Technik bei der die Session ID als Anti-CSRF-Token verwendet wird, wird als Double-Cookie Submit bezeichnet, das sollte hier referenziert werden.&lt;br /&gt;
&lt;br /&gt;
; Umgehung von Schutzmechanismen:&lt;br /&gt;
 Man in the middle hat keinen direkten Bezug zu CSRF! Das würde ich streichen.&lt;br /&gt;
([[User:Mrohr|Matthias]]) Der Hinweis ist korrekt. Wovon der Autor hier spricht ist Session Replay nicht CSRF.&lt;br /&gt;
&lt;br /&gt;
; Frameworks:&lt;br /&gt;
 Gute Idee - aber es gibt auch Features in den ApplicationServern die CSRF unterbinden - warum wird das nicht besprochen?&lt;br /&gt;
&lt;br /&gt;
([[User:Mrohr|Matthias]]) Sehe ich persoenlich nicht so, da CSRF primaer ein Applikations-Fehler ist, und auch in der Applikation und nicht im Environment (AppServer) geloest werden sollte. Auch wenn das manchmal ggf. die einzig machbare Loesung darstellt.&lt;br /&gt;
&lt;br /&gt;
([[User:Mrohr|Matthias]]) Was generell fehlt, ist ein Hinweis darauf, dass schreibende Requests generell per HTTP Post abgewickelt werden sollten, da HTTP Get keine &amp;quot;Safe Method&amp;quot;  (siehe HTTP 1.1, RFC 2616) ist.&lt;br /&gt;
&lt;br /&gt;
== M 4.WA20Sicherer Entwurf der Logik von Web-Anwendungen (Markus) ==&lt;br /&gt;
; Rollbacks:&lt;br /&gt;
 Tritt ein Fehler auf muss die Applikation einen konsistenten Datenstand zurück lassen. Das wird hier nicht erwähnt.&lt;br /&gt;
; RaceConditions:&lt;br /&gt;
 Fehler in der Geschäftslogik können auch durch zwei gleichzeitige Sessions auf einer Webapplikation auftreten - das wird hier nicht besprochen.&lt;br /&gt;
&lt;br /&gt;
== M 4.WA22Verhinderung der Blockade von Ressourcen (DoS) bei Web-Anwendungen (Markus) ==&lt;br /&gt;
; Datenspeicher:&lt;br /&gt;
 Neben dem Datenspeicher sollte auch der RAM-Verbrauch pro Thread der Applikation limitiert werden.&lt;br /&gt;
; Voraggregation von Daten / Caching&lt;br /&gt;
 Dieser Punkt fehlt: Stark ressourcen belastende Anfragen können auch in Lastarmen Zeiten vorberechnet werden.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== M 4.WA25Verhinderung von Clickjacking (Markus) ==&lt;br /&gt;
Ok - das passt soweit.&lt;br /&gt;
&lt;br /&gt;
([[User:Mrohr|Matthias]]) Stimmt, auch wenn ich &amp;quot;Angreifer&amp;quot; in dem Beispiel eher als &amp;quot;Webseitenbetreiber&amp;quot; beschreiebn wuerde, da er nicht wirklich aktiv einen Angriff durchfuehrt, oder? Bitte nochmal ueber meinen Hinweis aus G 5.WA18 nachdenken: Ist Clickjacking-Schutz tatsaechlich Grundschutz? Ich bin mir da selber nicht so wirklich sicher.&lt;br /&gt;
&lt;br /&gt;
== M 5.WA21Sichere Anbindung von Hintergrundsystemen an Web-Anwendungen (Markus) ==&lt;br /&gt;
; Verantwortliche:&lt;br /&gt;
 Architekten fehlen. Entwickler müssen die Views umsetzen und die Datasource entsprechend einbinden - die fehlen hier ebenfalls.&lt;br /&gt;
; DirectorySystem Beispiel:&lt;br /&gt;
 Das DirectorySystem wird in dem angegeben Beispiel zum Single Point of Failure - das wird verschwiegen.&lt;br /&gt;
; Firewalls:&lt;br /&gt;
 Das sind fachlich-blinde Systeme. Was ist mit WAFs / IDS / IPS etc.?&lt;br /&gt;
([[User:Mrohr|Matthias]]) Stimmt, das hat in diesem Baustein nichts zu suchen&lt;br /&gt;
&lt;br /&gt;
([[User:Mrohr|Matthias]]) Noch zwei weitere Punkte von mir&lt;br /&gt;
&lt;br /&gt;
; Typische Hintergrundsysteme&lt;br /&gt;
Hier fehlt irgendwie &amp;quot;Middleware&amp;quot;, die ist denke ich nicht immer Legacy&lt;br /&gt;
&lt;br /&gt;
== M 5.WA23Systemarchitektur einer Web-Anwendung (Markus) ==&lt;br /&gt;
; Verantwortliche:&lt;br /&gt;
Auch hier fehlend wieder die Architekten. &lt;br /&gt;
; Virtualisierung:&lt;br /&gt;
Virtualisierung bietet weitere Angriffsvektoren (z.B.: Hypervisor) die eine &amp;quot;Blech&amp;quot;Farm nicht bietet.&lt;/div&gt;</summary>
		<author><name>Mrohr</name></author>	</entry>

	<entry>
		<id>https://wiki.owasp.org/index.php?title=Talk:OWASP_Review_BSI_IT-Grundschutz_Baustein_Webanwendungen&amp;diff=130140</id>
		<title>Talk:OWASP Review BSI IT-Grundschutz Baustein Webanwendungen</title>
		<link rel="alternate" type="text/html" href="https://wiki.owasp.org/index.php?title=Talk:OWASP_Review_BSI_IT-Grundschutz_Baustein_Webanwendungen&amp;diff=130140"/>
				<updated>2012-05-21T07:37:49Z</updated>
		
		<summary type="html">&lt;p&gt;Mrohr: /* M 4.WA25Verhinderung von Clickjacking (Markus) */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Since it's about a review of a document in German, all the discussions will be done in German :-)&lt;br /&gt;
&lt;br /&gt;
Diskussionen rund um den Review des &amp;quot;IT-Grundschutzbausteins Webanwendungen&amp;quot; finden hier statt, sinnvollerweise auf Deutsch :-)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Vorschlag für Kriterien, die an unser Review angelegt werden sollten (.kai) ==&lt;br /&gt;
&lt;br /&gt;
* Der Baustein soll alle wichtigen Themen der Entwicklung sicherer&lt;br /&gt;
Webanwendungen enthalten.&lt;br /&gt;
&lt;br /&gt;
* Der Baustein soll die verschiedenen Phasen der Software-Entwicklung&lt;br /&gt;
vollständig abdecken.&lt;br /&gt;
&lt;br /&gt;
* Der Baustein soll zwischen verbindlichen, prüfbaren Vorgaben und&lt;br /&gt;
unverbindlichen Empfehlungen sprachlich sauber unterscheiden (hier&lt;br /&gt;
spielt mein Auditorenblick eine Rolle). Vor allem soll der Baustein&lt;br /&gt;
verbindliche Anforderungen auch tatsächlich stellen. Alle&lt;br /&gt;
verbindlichen Anforderungen müssen unabhängig von der jeweiligen&lt;br /&gt;
Umgebung auch umsetzbar sein, d.h. sie müssen entsprechend generisch&lt;br /&gt;
sein.&lt;br /&gt;
&lt;br /&gt;
* Die Maßnahmen sollen nur in (begründbaren) Ausnahmen zu Empfehlungen&lt;br /&gt;
von OWASP im Widerspruch stehen.&lt;br /&gt;
&lt;br /&gt;
* Die Maßnahmen sollen verständlich und anwendbar sein.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== &amp;quot;Hilfsmittel&amp;quot; (Markus) ==&lt;br /&gt;
Ich würde das Script zur Vermeidung von Clickjacking wrappen und nicht als losen Skript-block in den Text einbinden - einfach schlechter Programmierstiel diese losen Blöcke.&lt;br /&gt;
Der Zugriff auf das Body-Element mit byTagName-Array[0] ist auch nicht wirklich gut. Ich halte Zugriffe über das DOM (klassisch), bei ID bzw. XPATH für besser. &lt;br /&gt;
&lt;br /&gt;
SQL-Injection Characters:&lt;br /&gt;
die Pipe fehlt hier zur Textkonatenierung&lt;br /&gt;
+ / - haben auch eine Bedeutung bei JOINs.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== &amp;quot;Goldene Regeln&amp;quot; (Matthias) ==&lt;br /&gt;
&lt;br /&gt;
Hier meine Anmerkungen zu diesem Dokument:&lt;br /&gt;
&lt;br /&gt;
; 1. Für mich fehlende Punkte&lt;br /&gt;
* Korrektur der Ursache (Root Cause) von Schwachstellen statt  Verhinderung deren Ausnutzung&lt;br /&gt;
* Bezug auf Minimierung der Angriffsfläche und Least-Privilege-Prinzip&lt;br /&gt;
* Bezug auf Defense-in-Depth-Prinzip&lt;br /&gt;
* Verwendung von getesteten Security APIs (z.B. OWASP ESAPI) statt selbstentwickelter Funktionen&lt;br /&gt;
* Bezug auf Externalisierung von Sicherheitsfunktionen, sowie deklerative vor programmatischer Sicherheit.&lt;br /&gt;
&lt;br /&gt;
; 2. Begriff &amp;quot;Web-Anwendung&amp;quot;&lt;br /&gt;
Würde ich generell durch &amp;quot;Webanwendung&amp;quot; ersetzen.&lt;br /&gt;
&lt;br /&gt;
; 3. Einleitung (&amp;quot;Web-Anwendungen stellen Funktionalität zur Verfügung, ...&amp;quot;)&lt;br /&gt;
&lt;br /&gt;
Wozu dient dieser Satz?&lt;br /&gt;
&lt;br /&gt;
; 4. &amp;quot;Die Architektur der Web-Anwendung ist im Sicherheitskonzept zu  dokumentieren.....&amp;quot; &lt;br /&gt;
&lt;br /&gt;
Ich fände es sinnvoller, wenn hier von der &amp;quot;Sicherheitsarchitektur&amp;quot; gesprochen wird, welche etwa neben den sicherheitsrelevanten Datenflüssen, sensible Komponenten, Entry Points, Akteure architekturelle Security Controls wie Authentisierung, Kryptographie und natürlich die Trust Boundaries beinhaltet.&lt;br /&gt;
&lt;br /&gt;
; 5. &amp;quot;Bei Web-Anwendungen handelt es sich häufig um spezielle Eigenentwicklungen....&amp;quot;&lt;br /&gt;
&lt;br /&gt;
Erstens würde ich hier den geläufigen Begriff &amp;quot;Individualsoftware&amp;quot; verwenden. Zweitens würde ich statt bestimmte SDLC-Phasen vorzugeben (die Begriffe &amp;quot;Softwareverteilung&amp;quot; und &amp;quot;Integration&amp;quot; sind mir bei Webanwendungen bisher noch nicht so häufig untergekommen), besser von der Notwendigkeit sprechen, Sicherheit in allen Entwicklungsphasen zu berücksichtigen, also eines SDLs.&lt;br /&gt;
&lt;br /&gt;
; 6. &amp;quot;Alle Ein- und Ausgaben der Web-Anwendung müssen in eine normalisierte Form überführt werden....&amp;quot;&lt;br /&gt;
&lt;br /&gt;
Normalisierung ist für mich nicht gleich Kanonsierung, auch wenn beide Begriffe häufig als synonym verwendet werden.  Der Unterschied wird in der [http://owasp-esapi-java.googlecode.com/svn/trunk_doc/2.0-rc4/org/owasp/esapi/Encoder.html API-Beschreibung der ESAPI] erklärt. Die Normalisierungs-Funktion ist allerdings schon vor einiger Zeit aus der ESAPI [https://lists.owasp.org/pipermail/esapi-dev/2010-January/000266.html rausgeflogen]. Die generelle Kanonisierung von Ausgaben halte ich dazu für nicht sinnvoll.&lt;br /&gt;
&lt;br /&gt;
Zweitens, finde ich den weiteren Text zwar grundsätzlich formal korrekt, aber so allgemein, dass dieser glaube ich niemandem so richtig etwas bringt.  &lt;br /&gt;
&lt;br /&gt;
Besser fände ich hier Ein- von Ausgabevalidierung grundsätzlich voneinander abzugrenzen. Etwa was ich per Eingabevalidierung (Längenprüfung, Casting, etc. per Whitelisting) und was mit Ausgebavalidierung (Enkodierung, Escaping, Parametrisierung) machen muss und kann.&lt;br /&gt;
&lt;br /&gt;
Eingabedaten können technisch zudem auch Werte eingelesener Property-Dateien sein. Muss ich die auch validieren? Ist das dann noch Grundschutz? &lt;br /&gt;
&lt;br /&gt;
; 7. &amp;quot;Für den Zugriff auf sensitive Funktionen oder Informationen muss die Web-Anwendung eine wirksame Authentisierung und Sitzungsverwaltung unterstützen. Die Eigenschaften der Sitzungs-ID müssen so gewählt werden, dass die Sitzung ausreichend geschützt ist. ....&amp;quot;&lt;br /&gt;
&lt;br /&gt;
Besser fände ich &amp;quot;eine Authentisierung, die über eine dem Schutzbedarf der Anwendung angemessene Stärke verfügt.&amp;quot; &lt;br /&gt;
&lt;br /&gt;
Eigentlich geht es doch mehr um den Schutz der Sitzungs-ID, da diese gewöhnlich im Verlauf einer Sitzung den Client authentisiert. Oder den Schutz des Zugriffs auf eine Sitzung. &lt;br /&gt;
&lt;br /&gt;
Zudem fehlt hier meiner Meinung nach der Hinweis auf die bevorzugte Verwendung getesteter Standardkomponenten.&lt;br /&gt;
&lt;br /&gt;
; 8. &amp;quot;Die Web-Anwendung sollte die zu übermittelnden Daten schützen.&amp;quot;&lt;br /&gt;
&lt;br /&gt;
Dies würde ich nur auf sensible Daten beziehen. Zusätzlich zu HTTPS würde ich hier schreiben, dass sensible Daten generell nicht in der URL übertragen werden dürfen.&lt;br /&gt;
&lt;br /&gt;
; 9. &amp;quot;Die Preisgabe interner Informationen (z.B. Kommentare, Fehlermeldungen)&amp;quot;&lt;br /&gt;
&lt;br /&gt;
Hier würde ich eher schreiben &amp;quot;(IN Kommentaren, Fehlermeldungen, HTTP Headern, etc.)&amp;quot;&lt;br /&gt;
&lt;br /&gt;
; 10. &amp;quot;Fehler müssen so behandelt werden, ... müssen Fehler bei der Autorisierung zu einer Verweigerung beim Zugriff auf die angeforderte Ressource führen.&amp;quot;&lt;br /&gt;
&lt;br /&gt;
Sprachlich: &amp;quot;Die Webanwendung muss sich stets in einem sicheren Zustand befinden. Beispielsweise müssen Fehler bei der Autorisierung zu einer Verweigerung des Zugriffs führen (Default-Deny-Strategie).&amp;quot;&lt;br /&gt;
&lt;br /&gt;
; 11. &amp;quot;Die Logging-Funktionen der Web-Anwendung müssen aufgetretene Ereignisse derart protokollieren, dass sicherheitskritische Vorfälle nachvollzogen werden können.&amp;quot;&lt;br /&gt;
&lt;br /&gt;
Hier würde hier eher von &amp;quot;allen sicherheitsrelevanten Ereignissen&amp;quot; sprechen.&lt;br /&gt;
&lt;br /&gt;
Weiterhin sollten insbesondere beim Logging der Datenschutz berücksichtigt werden, personenbezogene Daten also nach Möglichkeit nicht oder nur anonymisiert in technischen Logdateien protokolliert werden.&lt;br /&gt;
&lt;br /&gt;
; 12. &amp;quot;Alle Sicherheitsmechanismen (z.B. Authentisierung und Zugriffskontrolle) sind serverseitig zu implementieren und können nicht durch clientseitige Mechanismen ersetzt werden.&amp;quot;&lt;br /&gt;
&lt;br /&gt;
Die Aussage ist so nicht korrekt. Darüber hatten wir bereits bei der ASVS mehrfach diskutiert. &lt;br /&gt;
&lt;br /&gt;
Überall dort wo der Client angegriffen wird, also etwa bei RIAs (Stichwort DOM-Based XSS) müssen wir Security Controls clientseitig implementieren. Es gibt mittlerweile deshalb auch eine Portierung der ESAPI auf Javascript. Überall dort wo der Server oder Hintegrundsysteme angegriffen werden, ist die Aussage aber natürlich zutreffend.&lt;br /&gt;
&lt;br /&gt;
== &amp;quot;Gefährdungen&amp;quot; (Markus, Dennis, .... &amp;lt;Dein Name&amp;gt;) ==&lt;br /&gt;
; Generell:&lt;br /&gt;
Reference auf RFCs fehlen.&lt;br /&gt;
&lt;br /&gt;
==B.5.XX Web-Anwendungen ==&lt;br /&gt;
; 1. Erster Absatz - Letzter Satz: --Wieso werden hier nur HTML/XML Doks und Oberflächen angesprochen? Was ist der Unterschied zwischen einem HTML-Dok und einer Oberfläche? Was ist mit  Flash, etc.? Was ist mit WebSockets?&lt;br /&gt;
; 2. Stichpunkt &amp;quot;Protokollierung&amp;quot;: Sicherheits relevant ist ein sehr dehnbarer Begriff - Eine bessere Formulierung könnte sein: Zur Rekonstruktion von Nutzerhandlungen nötige Ereignisse (positve &amp;amp; negative) müssen protokolliert werden . . . &lt;br /&gt;
; 3. Absatz: &amp;quot;Abgrenzung des Bausteins&amp;quot;: &amp;quot;Die spez. Sicherheitsanforderungen an Web-Services werden in diesem Baustein nicht betrachtet&amp;quot; --&amp;gt; Wie so nicht? Was ist das Backend von einer Rest / AJAX-basierenden Webanwendung denn anderes als ein Web-Service? Diesen Satz würde ich entfernen.&lt;br /&gt;
; 4.Vorsätzliche Handlungen -&amp;gt; Web-Spoofing (G.5.87) -- Missverständliche Bezeichnung / Nomenklatur&lt;br /&gt;
; 5. Seite 4 : erste Zeile &amp;quot;Umsetzung&amp;quot;: &amp;quot;dafür umzusetztende Komponenten müssen die Webanwendung schützen...&amp;quot; - Hier fehlt mir der Hinweis, dass dieser Schutz verifiziert werden muss.&lt;br /&gt;
; 6 Seite 5: &amp;quot;Umsetzung&amp;quot; - Wir haben CSRF, D(D)os und SQL-Injection aber wo ist XSS?&lt;br /&gt;
; 7 Seite 7: &amp;quot;Die Sicherheitsfunktion wird ausschließlich clientseitig...&amp;quot; --&amp;gt; Warum muss der Angreifer überhaupt einen Browser umkonfigurieren? Was ist mit Proxies, Scripts, etc.? Ich würde das reduzieren darauf, dass rein Webbrowser-basierende Schutzfunktionen einfach umgangen werden können.&lt;br /&gt;
; 8 Seite 8: Die angesprochenen Punkte hinterlassen den Eindruck nicht vollständig zu sein: Mir fehlen Punkte wie &amp;quot;Outsourcing&amp;quot;, &amp;quot;KnowHow der Entwickler&amp;quot;, Tooling, Framework-Auswahl, etc.&lt;br /&gt;
; 9 Seite 9: Eigentlich möchte der Autor hier über Datenschutz sprechen. Abgesehen von den letzten drei Zeilen geht es aber nur um &amp;quot;User tracking&amp;quot; - Wo ist der Rest der Datenschutzproblematik? Warum der Fokuss auf Tracking? Mir ist das zu einseitig.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
tbd.&lt;br /&gt;
&lt;br /&gt;
; Wortwahl:&lt;br /&gt;
Ich stosse innerhalb der Texte immer wieder an die Worten '''Hintergrundsystem''' und '''Sicherheitskontext'''.&lt;br /&gt;
'''Hintergrundsystem:''' besseres Synonym?&lt;br /&gt;
'''Sicherheitskontext:''' nur weil es in den Texten um Sicherheit geht muss nicht an jeder Stelle immer wieder das Wort _Sicherheits_kontext eingebaut werden.&lt;br /&gt;
Bsp: &amp;quot;Erlangt ein Angreifer Kenntnis von einer solchen gültigen, aber nicht mehr genutzten SessionID, so kann er die Web-Anwendung im Sicherheitskontext des nicht abgemeldeten Benutzers weiter verwenden.&amp;quot; (G 5,WA12 Unzureichendes Session-Management von Web-Anwendungen)&lt;br /&gt;
Verbesserungsansansatz: ... so kann er die Web-Anwendung anstelle des eigentlichen Besitzers weiterhin verwenden.&lt;br /&gt;
&lt;br /&gt;
== &amp;quot;G 2.WA01 Mangelhafte Auswahl oder Konzeption von Web-Anwendungen&amp;quot; (Matthias) ==&lt;br /&gt;
&lt;br /&gt;
Nachdem ich mir diese Gefährdung durchgelesen hatte, fehlten mir ehrlich gesagt etwas die Worte. Nicht nur, dass hier fast jeder zweite Satz entweder falsch ist bzw. massive Fehler enthält oder ich diesen schlicht nicht verstehe, ist der ganze Text sprachlich wirklich enorm verbesserungsfähig. &lt;br /&gt;
&lt;br /&gt;
Na gut, ich konzentriere mich mal auf die fachlichen Punkte:&lt;br /&gt;
&lt;br /&gt;
; 1. Security Controls&lt;br /&gt;
Werden mal mit &amp;quot;Schutzmechanismen&amp;quot;, mal mit &amp;quot;Sicherheitskomponenten&amp;quot; und dann wieder als &amp;quot;Sicherheitsfunktionen&amp;quot; bezeichnet. Hier macht eine einheitliche Benennung sicherlich Sinn und ist weniger verwirrend.&lt;br /&gt;
&lt;br /&gt;
; 2. &amp;quot;Eine Web-Anwendung ist in der Regel ein verteiltes, komplexes System bestehend aus unterschiedlichen Komponenten (z. B. Webserver, Applikationsserver, Hintergrundsysteme)&amp;quot;&lt;br /&gt;
&lt;br /&gt;
Eine Webanwendung besteht sicher nicht aus einem Webserver- oder anderer infrastruktureller Komponenten, sondern ist Software welches diese nutzt.&lt;br /&gt;
&lt;br /&gt;
; 3. &amp;quot;Bei individuell entwickelten Web-Anwendungen sind im Allgemeinen die Frameworks, Komponenten und Schnittstellen im Rahmen der Konzeption auszuwählen und deren Einbindung und Absicherung zu betrachten....Im Gegensatz dazu ist bei der Konzeption von Web-Anwendungen auf Basis von Standardsoftware insbesondere auf die Auswahl der Software und die Konfiguration der Teilkomponenten zu achten&amp;quot;&lt;br /&gt;
&lt;br /&gt;
Wir unterscheiden im Rahmen von Webanwendungen eigentlich Free or Opensource Software (FOSS bzw. FLOSS), Standardsoftware und Individualsoftware voneinander. Wir unterscheiden nicht Frameworks von Standardsoftware. Frameworks können Teil von Standardsoftware sein, wie etwa bei SharePoint, SAP, etc, oder aber FOSS, wie etwa Spring. Die ganzen Absätze machen für mich daher keinen Sinn.&lt;br /&gt;
&lt;br /&gt;
; 4. &amp;quot;Eine Sicherheitsfunktion (z. B. Authentisierung, Autorisierung) wird nicht an einer Stelle umgesetzt und verwendet, sondern ist mehrfach in der Web- Anwendung realisiert. Wird diese Sicherheitsfunktion an den verschiedenen Stellen unterschiedlich umgesetzt, führt dies zu einem uneinheitlichen Sicherheitsniveau.&amp;quot;&lt;br /&gt;
&lt;br /&gt;
Natürlich ist die mehrfache Verwendung bestimmter Security Controls, beispielsweise von Zugriffskontrollen (Complete-Mediation) oder Validierung (Robustheit) erstrebenswert. Was der Autor hier wahrscheinlich meinte, war die Notwendigkeit diese zu Kapseln bzw. zu Externalisieren. Das bezieht sich im übrigen nicht nur auf die Controls selbst, sondern auch auf ihre Parametrisierung (etwa. über Konfigdateien / XACML).&lt;br /&gt;
&lt;br /&gt;
Wichtiger wäre in diesem Zusammenhang zudem die fehlende Berücksichtigung bestimmter Security Controls.&lt;br /&gt;
&lt;br /&gt;
; 5. &amp;quot;Auswahl von Web-Anwendungen auf Basis von Standardsoftware&amp;quot;&lt;br /&gt;
Was will der Satz sagen? Ich wähle Standardsoftware aus, aber doch keine Webanwendungen. Oder heißt das, ich kaufe eine existierende Anwendung ein (Webanwendung!=Indivudualsoftware)? &lt;br /&gt;
&lt;br /&gt;
; 6. &amp;quot;Das ausgewählte Produkt verfügt nicht über die ausreichende Sicherheitsfunktionalität, ... Daher müssen die notwendigen Schutzmechanismen nachträglich hinzugefügt werden, wodurch zusätzliche Aufwände entstehen.&amp;quot;&lt;br /&gt;
Das ist etwas sehr positiv formuliert. Tatsächlich können fehlende Security Controls in zugekaufter Software (insb. Standardsoftware) in der Realität häufig gar nicht hinzugefügt werden oder nur perimetrisch (z.B. per WAF oder Access Gateway).&lt;br /&gt;
&lt;br /&gt;
; 7. &amp;quot;Die Hintergrundsysteme werden unzureichend abgesichert und dadurch ist die Datenbank der Web-Anwendung aus dem Internet erreichbar.&amp;quot;&lt;br /&gt;
Gehören fehlende Netzwerksegmentierung bzw. Firewallregeln wirklich in diesen Kontext? Das ist doch eigentlich Grundschutz der Infrastruktur, oder?&lt;br /&gt;
&lt;br /&gt;
; 8. &amp;quot;Aufgrund schwacher Parameter in der Konfiguration des Frameworks zum Session-Management werden unsichere SessionIDs erzeugt.&amp;quot;&lt;br /&gt;
Was sind &amp;quot;schwache&amp;quot; Parameter?&lt;br /&gt;
&lt;br /&gt;
Welches Framework erlaubt unsichere SessionIDs durch eine &amp;quot;schwache&amp;quot; Konfiguration zu erzeugen?&lt;br /&gt;
&lt;br /&gt;
; 9. &amp;quot;Wird die Konfiguration des Web-Browsers durch einen Angreifer manipuliert, können die clientseitig umgesetzten&amp;quot;&lt;br /&gt;
&lt;br /&gt;
Manipuliert ein Angreifer die Konfguration seines Webbroswers, wenn er einen MITM-Proxy konfiguriert?&lt;br /&gt;
&lt;br /&gt;
Wie bereits bei den &amp;quot;Goldenen Regeln&amp;quot; angemerkt, gilt auch hier, das manche Security Controls auch clientseitig umgesetzt werden dürfen (etwa. zur Verhinderung von Dom-Based XSS).&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== &amp;quot;G 5.WA10 Fehler in der Web-Anwendungslogik&amp;quot; (Dennis) ==&lt;br /&gt;
; 1. &amp;quot;Damit kann aufgrund der Prüfreihenfolge ein hoher Ressourcenverbrauch provoziert werden, der für Denial-of-Service-Angriffe ausgenutzt werden kann.&amp;quot;&lt;br /&gt;
Meiner Meinung nach passt in diesem Kontext die Attacke DoS nicht ganz. Falls die nachfolgende Funktionalität wegen der langen Ausführungszeit der Filterkomponente übersprungen wird bzw. ein Fehler auftritt würde dies meiner Ansicht in die Thematik Anwendungslogik passen. Eine DoS-Attacke kann hingegen anhand jeder Funktion durchgeführt werden.&lt;br /&gt;
&lt;br /&gt;
== &amp;quot;G 5.WA11 Umgehung clientseitig umgesetzter Sicherheitsfunktionen von Web-Anwendungen&amp;quot; (Dennis) ==&lt;br /&gt;
; 1. &amp;quot;Ein Angreifer kann diese ausnutzen, um beispielsweise unbefugt Befehle an Hintergrundsysteme der Web-Anwendung zu übermittlen (z.B. in Form von Datenbankanfragen bei einer SQL-Injection).&amp;quot;&lt;br /&gt;
Umformulierung des Inhalts der Klammer. Hatte beim ersten Lesen für mich den Anschein, als ob ein Formular genutzt werden könnte welches den Nutzer aufforder eine SQLI einzugeben. Ich denke &amp;quot;Datenbankanfrage zwecks Ausführung einer SQL-Injection&amp;quot; würde besser passen.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== G 2.WA02 Mängel bei der Entwicklung und der Erweiterung von Web-Anwendungen (Matthias) ==&lt;br /&gt;
&lt;br /&gt;
Allgemein ist de obere Teil ok, die aufgezählten &amp;quot;Auswirkungen von fehlenden Vorgaben&amp;quot; verstehe ich jedoch nicht. Wo ist etwa der Bezug von Barrierefreiheit auf die Anwendungssicherheit?&lt;br /&gt;
&lt;br /&gt;
Mein Vorschlag, um diese Punkte etwa sinnvoll umzubauen:&lt;br /&gt;
* &amp;quot;Fehlendes Vorgehensmodell&amp;quot;: Bezug auf fehlende Berücksichtigung von Sicherheit im SDLC. Statt eines SDLCs selbst sollte hier besser auf die Notwendigkeit eines Secure Development Lifecycle (SDL) hingewiesen werden&lt;br /&gt;
* &amp;quot;Fehlende Programmierrichtlinien&amp;quot; =&amp;gt; Besser wäre hier &amp;quot;Fehlende Sicherheitsrichtlinien in der Programmierung&amp;quot; also &amp;quot;Secure Coding Guidelines&amp;quot;&lt;br /&gt;
* &amp;quot;Testfälle&amp;quot; =&amp;gt; &amp;quot;Sicherheitsrelevante Testfälle&amp;quot; (z.B. Security Unit Tests). &lt;br /&gt;
* &amp;quot;Barrierefreiheit&amp;quot;: Warum nicht an dieser Stelle die Auswirkungen von Sicherheitsfunktionen auf die Bedienbarkeit, etwa anhand von CAPTCHAS erläutern?&lt;br /&gt;
&lt;br /&gt;
== G 2.WA03 Unzureichender Schutz personenbezogener Daten bei Web-Anwendungen (Matthias) ==&lt;br /&gt;
&lt;br /&gt;
Der Titel dieses Bausteines heißt &amp;quot;Schutz personenbezogener Daten&amp;quot;, die genannten Beispiele beziehen sich bis auf den letzten jedoch auf die missbräuchliche (oder zumindest problematische) Nutzung aus Sicht des Datenschutzes. &lt;br /&gt;
&lt;br /&gt;
Die Punkt 1-3 sollten daher besser entfallen und z.B. durch die Folgenden ersetzt werden:&lt;br /&gt;
* Unsichere Einbindung von sozialen Netzwerken (Bezug nehmen auf den Like-Button bei Facebook)&lt;br /&gt;
* Unsichere Einbindung von Werbeinhalten&lt;br /&gt;
* Unsichere Übertragung und Caching&lt;br /&gt;
* Unsichere Protokollierung&lt;br /&gt;
* Ungenügender Zugriffsschutz&lt;br /&gt;
* Verstoß des Minimalprinzips bzw. der Zweckgebundenheit (welche Daten werden wirklich benötigt)&lt;br /&gt;
&lt;br /&gt;
Auch wäre es ggf. zumindest einen Verweis auf das BDSG zu machen.&lt;br /&gt;
&lt;br /&gt;
== G 4.33 Unzureichende oder fehlende Authentisierung (Matthias) ==&lt;br /&gt;
&lt;br /&gt;
; 1. Erster Absatz: &amp;quot;Wenn Authentisierungsmechanismen fehlen oder zu schlecht sind&amp;quot;&lt;br /&gt;
&lt;br /&gt;
&amp;quot;schlecht&amp;quot; sollte vlt besser durch &amp;quot;unzureichend&amp;quot; ersetzt werden.&lt;br /&gt;
&lt;br /&gt;
; 2. &amp;quot;Sicherheitslücken entstehen bei... der Benutzerauthentisierung&amp;quot;&lt;br /&gt;
&lt;br /&gt;
Hier findet nur ein Bezug auf &amp;quot;Passwörter&amp;quot; statt. Der Bezug auf die fehlerhaft implementierte oder dem Schutzbedarf ungenügende Schutzmechanismen (z.B. keine 2-Faktor-Authentisierung bei hochsensiblen Daten) fehlt. Auch auf das komplette fehlen von Authentisierungs-Controls wird hier nicht  eingegangen&lt;br /&gt;
&lt;br /&gt;
; 3. &amp;quot;Sicherheitslücken entstehen bei... der Komponentenauthentisierung&amp;quot;&lt;br /&gt;
&lt;br /&gt;
Wie bei 2., wird auch hier wieder nur auf Passwörter, nicht jedoch auf das fehlen von Controls selbst eingegangen. An dieser Stelle fehlt auch ein Hinweis auf die Notwendigkeit dedizierter Benutzeraccounts.&lt;br /&gt;
&lt;br /&gt;
; 4. &amp;quot;Sicherheitslücken entstehen bei... der Wahl des Verfahrens&amp;quot;&lt;br /&gt;
&lt;br /&gt;
Statt untauglich würde ich auch hier von &amp;quot;dem Schutzbedarf der Daten nicht angemessen&amp;quot; sprechen, eigentlich gehört das für mich aber in die obigen Punkte.&lt;br /&gt;
&lt;br /&gt;
; 5. Serverseitige Authentisierung fehlt&lt;br /&gt;
&lt;br /&gt;
Auch der Server (bzw. die Anwendung selbst) kann sich fehlerhaft oder ungenügend beim Benutzer authentsieren, etwa über DNS, SSL-Zertifikate, etc.&lt;br /&gt;
&lt;br /&gt;
== G 4.WA04 Unzureichende Validierung von Ein- und Ausgabedaten bei Web-Anwendungen (Matthias) ==&lt;br /&gt;
&lt;br /&gt;
; 1. &amp;quot;Unzureichende Validierung von Eingabedaten&amp;quot;&lt;br /&gt;
&lt;br /&gt;
Die genannten Beispiele sind genau keine korrekten Beispiele für diesen Fall, sondern betreffen die Ausgabevalidierung bzw. Enkodierung. Typische Fehler der Eingabevalidierung ist eine Manipulierbarkeit der Business Logik.&lt;br /&gt;
&lt;br /&gt;
; 2. &amp;quot;Unzureichende Validierung von Ausgabedaten&amp;quot;&lt;br /&gt;
&lt;br /&gt;
Hier geht es zentral um die Verhinderung von Interpreter Injection, also serverseitig (z.B. SQL oder LDAP Injection) oder clientseitig (XSS, JSON Injection, etc.). Statt &amp;quot;können die Ausgaben Schadcode&amp;quot; enthalten würde ich hier eher davon Sprechen, dass ein solcher Interpreteraufruf manipuliert werden kann (was dann z.B. zur Einschleusung von Schadcode genutzt werden kann).&lt;br /&gt;
&lt;br /&gt;
; 3. &amp;quot;Die Suchfunktion der Web-Anwendung verwendet die Eingaben der Benutzer ungefiltert&amp;quot;&lt;br /&gt;
&lt;br /&gt;
Mit ungenügender &amp;quot;Filterung&amp;quot; hat SQL Injection nichts zu tun,  eigentlich geht es hierbei darum, dass SQL-Anfragen dynamisch mit unvalidierten Eingebedaten zusammengebaut (konkateniert) werden.&lt;br /&gt;
&lt;br /&gt;
; 4. &amp;quot;Ungefilterter HTML-Code in Kommentar-Funktion&amp;quot;&lt;br /&gt;
&lt;br /&gt;
Hier fehlt der Bezug auf persistentes XSS, das hier sicherlich zentral ist.&lt;br /&gt;
&lt;br /&gt;
== G 4.WA05 Fehlende oder mangelhafte Fehlerbehandlung durch Web-Anwendungen (Tobias, Matthias) ==&lt;br /&gt;
; Abschnitt &amp;quot;Unsichere Fehlerbehandlung&amp;quot;&lt;br /&gt;
Die G adressiert &amp;quot;Unsichere Fehlerbehandlung&amp;quot;, der Abschnitt die &amp;quot;Unsichere Fehlerbehandlung in Sicherheitskomponenten&amp;quot;. Entsprechend sollte der fettgedruckte Teil angepasst werden.&lt;br /&gt;
&lt;br /&gt;
; &amp;quot;fehlende SQL-Parameter,&amp;quot;&lt;br /&gt;
Sollte besser &amp;quot;Fehlermeldungen bei ungültigen SQL-Abfragen&amp;quot; lauten.&lt;br /&gt;
&lt;br /&gt;
; &amp;quot;Auch scheinbar unkritische Informationen, wie die Meldung ob (..)&amp;quot;&lt;br /&gt;
Korrekt, allerdings nicht nachvollziehbar, wenn das Problem der Leser nicht schon bekannt ist. Daher erweitern nach &amp;quot; Rahmen von Brute-Force-Angriffen ausgenutzt werden.&amp;quot; mit &amp;quot;. Bei Brute-Force-Angriffen wäre in diesem Fall klar, dass der Benutzername gültig ist.&amp;quot;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[User:Mrohr|Matthias]]): Stimme dem Obigen auch zu, ausserdem:&lt;br /&gt;
&lt;br /&gt;
; Sprachlich: &amp;quot;kann dies unvorhersehbare Auswirkungen haben und den Betrieb der Web-Anwendung bis zur Unerreichbarkeit einschränken.&amp;quot;&lt;br /&gt;
&lt;br /&gt;
&amp;quot;Unerreichbarkeit&amp;quot; ist etas merkwuerdig ausgedrueckt, besser ware hier von der &amp;quot;Verfuegbarkeit&amp;quot; zu sprechen. Im Uebrigen fehlt vollstaendig der Bezug auf die Verfuegbarkeit als Primaeres Schutzziel der Informationssicherheit.&lt;br /&gt;
&lt;br /&gt;
; &amp;quot;Clientseitige Fehlerbehandlung&amp;quot;&lt;br /&gt;
Das stimmt soweit, das generelle Problem ist jedoch genereller, naehmlich die clientseitige Abbildung sicherheitsrelaventer Logik (in diesem Fall die Fehlerbehandlung)&lt;br /&gt;
&lt;br /&gt;
== G 4.WA06 Unzureichende Nachvollziehbarkeit von sicherheitsrelevanten Ereignissen bei Web-Anwendungen (Matthias) ==&lt;br /&gt;
&lt;br /&gt;
; 1. Erster Absatz: &amp;quot;Die Behebung einer Schwachstelle ist dann nicht oder nur unter erschwerten Bedingungen möglich.&amp;quot;&lt;br /&gt;
&lt;br /&gt;
Hier würde ich ergänzen: &amp;quot;...und Angriffe auf die Anwendungen können ggf. nicht erkannt oder nachvollzogen werden&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
; 2. &amp;quot;Beispiele&amp;quot;: Kommulierbarkeit&lt;br /&gt;
&lt;br /&gt;
Hier fehlt auch ein Bezug auf die Kommulierbarkeit von SIcherheitsereignissen, dass diese also auch von solchen anderer Systeme in Verbindung gesetzt werden können&lt;br /&gt;
&lt;br /&gt;
; 3. &amp;quot;Beispiele&amp;quot;: Gerichtsverwertbarkeit&lt;br /&gt;
&lt;br /&gt;
Auch die Möglichkeit zur Gerichtsverwertbarkeit (etwa durch eindeutigen Zeitstempel) und manipulationssicherer Speicherung, würde ich an dieser Stelle unbedingt erwähnen.&lt;br /&gt;
&lt;br /&gt;
== G 4.WA07 Offenlegung von Informationen bei Web-Anwendungen (Matthias) ==&lt;br /&gt;
&lt;br /&gt;
; 1. Titel&lt;br /&gt;
&lt;br /&gt;
Hier würde ggf. &amp;quot;Offenlegung vertraulicher Informationen&amp;quot; sicher besser passen als &amp;quot;Offenlegung von Informationen&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
; 2. Beispiellink&lt;br /&gt;
&lt;br /&gt;
Ein Beispiellink (mit und ohne Token) würde sicher die Verständlichkeit dieser Schwachstelle verbessern.&lt;br /&gt;
&lt;br /&gt;
; 3. Erster Absatz: &amp;quot;Wenn demzufolge Informationen unnötig offengelegt werden, steigt die Wahrscheinlichkeit eines erfolgreichen Angriffs.&amp;quot;&lt;br /&gt;
&lt;br /&gt;
Interne Informationen auszublenden ist eine Härtungsmaßnahme, deren Anzeige erhöht aber nicht zwangsläufig die Wahrscheinlichkeit eines erfolgreichen Angriffs. Ich würde diesen Satz weglassen.&lt;br /&gt;
&lt;br /&gt;
 ; 4. Fehlende Punkte&lt;br /&gt;
&lt;br /&gt;
* Ein Hinweis auf HTTP Header wäre hier sicher erwähnenswert.&lt;br /&gt;
* Weiterhin bzgl. der Anzeige von Traces und ein Verweis auf den Entsprechenden Baustein zur Fehlerbehandlung&lt;br /&gt;
&lt;br /&gt;
== G 5.WA14 Cross-Site Request Forgery (CSRF, XSRF) (Matthias) ==&lt;br /&gt;
&lt;br /&gt;
; 1. Erster Absatz: &amp;quot;Können Funktionen einer Web-Anwendung ohne weitere Überprüfung der Authentizität des HTTP-Requests (z.B. durch Tokens in versteckten Formularfeldern) genutzt werden&amp;quot;&lt;br /&gt;
&lt;br /&gt;
Statt &amp;quot;Funktionen&amp;quot; würde ich besser von &amp;quot;schreibenden Aktionen&amp;quot; sprechen, dann macht der Satz mehr Sinn.&lt;br /&gt;
&lt;br /&gt;
; 2. Dritter Absatz: &amp;quot;Im Gegensatz zu XSS (siehe ...￼ ) ist das Angriffsziel nicht die Information auf dem Client (z. B. in Cookies),&amp;quot;&lt;br /&gt;
&lt;br /&gt;
Dieser (Halb-)Satz macht keinen Sinn, auch weil es bei XSS nicht nur im Informationen auf dem Cient geht. Vorschlag: &amp;quot;ist das Angriffsziel nicht die Ausführung von Skriptcode, sondern von unbefugten, schreibenden Aktionen im Kontext des angemeldeten Benutzers.&amp;quot;&lt;br /&gt;
&lt;br /&gt;
; 3. Session Riding&lt;br /&gt;
&lt;br /&gt;
Session Riding ist quasi nur ein anderer Begriff für CSRF. Die einzige Form von CSRF die mir bekannt ist, sind Angriffe mit Standard-Passwörtern auf HTTP-Basic-Auth geschützten Ressourcen.&lt;br /&gt;
&lt;br /&gt;
Im Grunde ist Session Riding aber nur ein Synonym für CSRF. Der Absatz ist daher auch nur eine Wiederholung der obigen Beschreibung.&lt;br /&gt;
&lt;br /&gt;
; 4. Zum Beispiel: &amp;quot;Durch einen präparierten Link auf einer Webseite wird die Änderung des Zugangspasswortes des Routers eingeleitet.&amp;quot;&lt;br /&gt;
&lt;br /&gt;
Etwas ungüngstig ausgedrückt. Besser wäre: &amp;quot;wird eine Anfrage zur Änderung des Zugangspasswortes an den Router gesendet. Hierbei sendet der Browser automatisch den Session Cookie mit, worüber die Webanwendung die Authentizität der Anfrage verifiziert und die Änderung durchführt.&amp;quot;&lt;br /&gt;
&lt;br /&gt;
== G 5.WA18 Clickjacking (Matthias) ==&lt;br /&gt;
&lt;br /&gt;
Hier stellt sich mir nur die allgemeine Frage, ob Clickjacking, bzw. der Schutz davor tatsächlich einem Grundschutz zuzurechnen ist. Persönlich würde ich dies nicht tun.&lt;br /&gt;
&lt;br /&gt;
== M 2.WA02 Dokumentation der Architektur von Web-Anwendungen (Matthias) ==&lt;br /&gt;
&lt;br /&gt;
; Verantwortlich für die Umsetzung&lt;br /&gt;
Hier wäre auch die Nennung des &amp;quot;Architekten&amp;quot; sinnvoll&lt;br /&gt;
 &lt;br /&gt;
; Fehlende Bestandteile der Dokumentation:&lt;br /&gt;
* Schutzbedarf des Systems sowie der verarbeiteten Daten&lt;br /&gt;
* Schützenswerte Daten und Funktionen (Assets)&lt;br /&gt;
* Betriebliche Anforderungen an die Sicherheit bzw. eingesetzte Plattform&lt;br /&gt;
* Dokumentierte Konfigurationseinstellungen &lt;br /&gt;
* BIA (RTO, RPO)&lt;br /&gt;
* Schnittstellen&lt;br /&gt;
* Trust Boundaries&lt;br /&gt;
* Akteure (bzw. Trust Level)&lt;br /&gt;
* Sicherheitsannahmen&lt;br /&gt;
* Geltende Compliance-Anforderungen (BDSG, PCI DSS, etc.)&lt;br /&gt;
&lt;br /&gt;
; Benutzermanagement&lt;br /&gt;
&lt;br /&gt;
Wenn damit das Identity Management gemeint ist, gehört das Dokumentiert, ist aber keine Sicherheitsfunktion. Oder ist hiermit das Rollen- und Berechtigungskonzept gemeint? Grenzt sich aus meiner Sicht schwer mit dem Thema Authentisierung ab. &lt;br /&gt;
&lt;br /&gt;
; Prüffragen&lt;br /&gt;
&lt;br /&gt;
Hier fehlt etwas in Bezug auf Sicherheitsanforderungen. Beispiel: &amp;quot;Werden Sicherheitsanforderungen an den Betrieb während der Entwicklung abgestimmt und dokumentiert&amp;quot;&lt;br /&gt;
&lt;br /&gt;
== M 2.WA12 Entwicklung und Erweiterung von Anwendungen (Markus) ==&lt;br /&gt;
; &amp;quot;Es sollte darauf geachtet werden, dass Sicherheitsanforderungen&lt;br /&gt;
vollständig durch Sicherheitsmechanismen erfüllt und zur Erstellung von&lt;br /&gt;
Testfällen festgehalten werden.&amp;quot; --&amp;gt; Bessere Formulierung würde aussagen, dass die Sicherheitsanforderungen durch Testfälle verifiziert werden.&lt;br /&gt;
&amp;quot;(z. B. durch Kommentare im&lt;br /&gt;
Quelltext). Somit ist der Quelltext zu einem&amp;quot; --&amp;gt; Das ist kein empfehlenswerter Programmierstiel! Raus mit diesem Kommentar&lt;br /&gt;
;&amp;quot;Zum Schutz vor dem Verlust bereits entwickelter und verworfener&lt;br /&gt;
Lösungen sowie zu Dokumentationszwecken sollte die Historie der&lt;br /&gt;
Änderungen festgehalten werden (z. B. durch ein Revisionssystem).&amp;quot; --&amp;gt; Auch diesen Absatz können wir streichen - Kein professioneller Programmierer arbeitet ohne Versionierugssystem.&lt;br /&gt;
;&amp;quot;Bei Web-Anwendung sollten die Webseiten auf Konformität zu dem&lt;br /&gt;
verwendeten Standard (z. B. HTML-Standard) getestet werden. Dadurch&lt;br /&gt;
können unvorgesehene Seiteneffekte aufgrund einer Fehlinterpretation&lt;br /&gt;
seitens der Browser vermieden werden.&amp;quot; --&amp;gt; Könnte man noch um &amp;quot;Die Software ist in möglichst vielen Browsern zu testen&amp;quot; erweitern.&lt;br /&gt;
;Generell geht der Autor leider nicht auf die Rollen &amp;amp; Rechte Verteilung ein. Mir fehlt der Hinweis, das es eine personelle Trennung zwischen Entwicklung, Test und Betrieb geben muss.&lt;br /&gt;
;Zum Thema Wartung / Betrieb --&amp;gt; Hier wird keine Aussage getroffen bezüglich Log_Files. Dieses Thema kann kritische Auswirkungen haben, Bsp.: logging ganzer HTTP-Requests im LogLevel=Debug.&lt;br /&gt;
; &amp;quot;Produktspezifische Sicherheitsfunkionalität&amp;quot; - Dieser Absatz ist gefährlich - der Angreifer ist nicht zur Verwendung dies Zielbrowsers gezwungen. Deshalb können Browser-spez. Sicherheitsfunktionen nur als Add-ON gewertet werden.&lt;br /&gt;
; &amp;quot;Festlegung der Entwicklungsumgebung&amp;quot; - Dieser Absatz geht nicht auf die zu verwendenden Testdaten ein. Der Hinweis, dass Live-Daten / Kundendaten nichts in Test- &amp;amp; Entwicklungsumgebungen zu suchen haben fehlt!!!&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== M 2.WA24 Web-Tracking (Matthias) ==&lt;br /&gt;
&lt;br /&gt;
; Letzter Absatz: &amp;quot;Falls eine Auswertung von Nutzerdaten, insbesondere personenbezogener Daten, .. &amp;quot;&lt;br /&gt;
&lt;br /&gt;
Hier sollte denke ich besser von personenbeziehbaren Daten gesprochen Werten. Dies betrifft etwa die Zuordnung von Surfverhalten zu einer bestimmten Person. Dies sollte stets nach den Prinzipien Datensparsamkeit und Datenvermeidung, Erforderlichkeit, sowie Zweckbindung erfolgen. Ist Webtracking nicht personenbeziehbar ist dies kein Thema für den Datenschutz.&lt;br /&gt;
&lt;br /&gt;
== M 4.WA04 Authentisierung bei Web- Anwendungen (Matthias) ==&lt;br /&gt;
&lt;br /&gt;
; Vermischung von Authentisierung und Session Management &lt;br /&gt;
&lt;br /&gt;
Bei diesem Baustein findet eine ziemlich große Vermischung von Anforderung an die Authentisierung und das erst in &amp;quot;M 4.WA06 Session-Management bei Web- Anwendungen&amp;quot; behandelte Session Management statt (Beispiel: &amp;quot;Remember-Me-Funktion&amp;quot;). Beide Themen sollten sinnvollerweise getrennt voneinander zu betrachten und aufeinander zu beziehen.&lt;br /&gt;
&lt;br /&gt;
; Verwendung von Frameworks&lt;br /&gt;
&lt;br /&gt;
Die Anforderung ist schon ein wenig eingeschränkt. Besser passt hier denke ich die &amp;quot;Abbildung der Authentisierung über Standardkomponenten (Bibliotheken oder Frameworks)&amp;quot;. &lt;br /&gt;
&lt;br /&gt;
; Remember-Me-Funktion&lt;br /&gt;
&lt;br /&gt;
Siehe oben, gehört zum Session Management. Das ließt sich im übrigen so, als ob eine Webanwendung Credentials auf dem Client abhängt. &lt;br /&gt;
&lt;br /&gt;
; Grenzwerte für gescheiterte Anmeldeversuche&lt;br /&gt;
&lt;br /&gt;
Diese Empfehlung ist allgemein falsch, da sie sehr von der betrachteten Anwendung abhängt. Besser wäre hier allgemein von Mechanismen zur Verhinderung von automatisierten Angriffen zu sprechen (Anti-Automatisierung). &lt;br /&gt;
&lt;br /&gt;
Etwa umsetzbar durch&lt;br /&gt;
* Sperrung nach x Anmeldeversuchen&lt;br /&gt;
* Throttling&lt;br /&gt;
* Captchas&lt;br /&gt;
* Sicherheitsfragen&lt;br /&gt;
&lt;br /&gt;
Das allgemeine Sperren kann leicht für das gezielte Aussperren von Benutzern (User Lockout) verwendet werden. Was etwa bei Trading-Anwendungen nicht funktioniert.&lt;br /&gt;
&lt;br /&gt;
; Automatisiertes Zurücksetzen von Authentisierungsdaten&lt;br /&gt;
&lt;br /&gt;
Würde ich besser als &amp;quot;Passwort-Reset&amp;quot; bezeichnen.&lt;br /&gt;
&lt;br /&gt;
Weiterhin fehlt hier der Hinweis, dass statt ein automatisiertes Zurücksetzen, ein Mechanismus zu empfehlen ist, bei dem über ein hinterlegtes Sicherheitsmerkmal (Handy-Nummer oder E-Mail-Adresse) vom Benutzer zunächst eine Verifikation durchgeführt wird. Beispielsweise durch einen erhaltenen Link. Erst dann darf eine Änderung des Passwortes durch den Benutzer erfolgen.&lt;br /&gt;
&lt;br /&gt;
; Registrierung nicht behandelt&lt;br /&gt;
&lt;br /&gt;
Es existiert hier kein Punkt, der die sichere Implementierung von Benutzerregistrierungen behandelt.&lt;br /&gt;
&lt;br /&gt;
; Verweis auf Externalisierung fehlt.&lt;br /&gt;
&lt;br /&gt;
Statt die Authentisierung selbst durchzuführen kann eine Anwendung hierzu auf eine externe Komponente (Beispiel: SiteMinder oder Kerberos) zurückgreifen.&lt;br /&gt;
&lt;br /&gt;
; Verweis auf Behandlung von Credentials fehlt&lt;br /&gt;
&lt;br /&gt;
Auch wenn das  in &amp;quot;M 4.WA15 Schutz vertraulicher Daten bei Web- Anwendungen&amp;quot; ausführlich behandelt wird, sollte in diesem Baustein bereits auf den angemessenen Schutz von Authentisierungsdaten bei Übertragung und Speicherung hingewiesen werden.&lt;br /&gt;
&lt;br /&gt;
== M 4.WA05Umfassende Ein- und Ausgabevalidierung bei Web-Anwedungen (Markus) ==&lt;br /&gt;
; &amp;quot;Ablehnung der Daten im&lt;br /&gt;
Fehlerfall&amp;quot; --&amp;gt; Hier könnte man noch auf Tar-Pits eingehen - nur ein Vorschlag.&lt;br /&gt;
&lt;br /&gt;
== M 4.WA06Session-Management bei Web-Anwendungen (Markus, Matthias) ==&lt;br /&gt;
; &amp;quot;Übertragung der SessionID mittels GETRequest&amp;quot; --&amp;gt; Hier fehlt der Hinweis, dass die Lebensdauer dieser SessionIds kurz/kürzer sein muss, als im Falle der Speicherung im Cookie.&lt;br /&gt;
&lt;br /&gt;
([[User:Mrohr|Matthias]]) Die Anmerkung verstehe ich ehrlich gesagt ueberhaupt nicht, zumal das SM haeufig transparent zwischen Cookies und URL Rewriting wechselt. Wozu soll das gut sein? Wie soll das geschehen? Idealerweise sollte die Session ID niemals in die URL geschrieben werden, das sollte eigentlich genuegen.&lt;br /&gt;
&lt;br /&gt;
; &amp;quot;Verschlüsselte Übertragung von SessionIDs&amp;quot; --&amp;gt; Hier fehlt der Hinweis auf den Beast-Exploit. TLS Version &amp;gt; 1.0 verwenden!&lt;br /&gt;
&lt;br /&gt;
([[User:Mrohr|Matthias]]) Solange hier nicht auf eine explizite TLS Version eingegangen wird, sollte meiner grossen Ueberzeugung nach hier auch auf keine Exploits etc. eingagen werden, das gehoert an andere Stelle.&lt;br /&gt;
&lt;br /&gt;
; ([[User:Mrohr|Matthias]]) Weiterhin:&lt;br /&gt;
&lt;br /&gt;
 Es dürfen keine extern bekannten oder erratbaren Daten (z. B. IP-Adresse, Uhrzeit) in die Berechnung der SessionID einfließen.&lt;br /&gt;
&lt;br /&gt;
Die Aussage finde ich etwas problematisch, wichtiger ist, dass die Entropie ausreichend hoch ist. Haeufig werden etwa IPs von Load Balancern in die Session ID hineingeschrieben.&lt;br /&gt;
&lt;br /&gt;
 - Domain (z. B. webapp.domain.tld),&lt;br /&gt;
 - Path (z. B. /webapp/),&lt;br /&gt;
 - Secure und&lt;br /&gt;
 - HttpOnly.Beschränkte Sitzungsdauer&lt;br /&gt;
&lt;br /&gt;
Das sieht so aus, als ob es empfehlenswert ist, das Domain-Tag zu verwenden, das ist es sicherlich nicht. Was macht hier der Hinweis &amp;quot;Beschraenke Sizuungsdauer&amp;quot;?&lt;br /&gt;
&lt;br /&gt;
== M 4.WA07Fehlerbehandlung durch Web-Anwendungen (Markus) ==&lt;br /&gt;
; Konsistenter / Inkonsistener Zustand einer Webanwendung und der daraus resultierende Datenverlust: Hier fehlen mir die Punkte: DOS, Priv.Escalation, CodeExecution.&lt;br /&gt;
; Vermeidung vertraulicher Informationen in Fehlermeldungen --&amp;gt; Fehlermeldungen sollten ebenfalls eine Systeminformationen preisgeben (Softwareversion, Patchlevel, etc.)&lt;br /&gt;
; Abbruch des Vorgangs nach Auftreten eines Fehlers --&amp;gt; TarPits scheinen dem Autor umbekannt zu sein :)&lt;br /&gt;
; &amp;quot;Werden Fehler möglichst von der gleichen Komponente behandelt, in der&lt;br /&gt;
der Fehler aufgetreten ist?&amp;quot; --&amp;gt; Das &amp;quot;möglichst&amp;quot; sollten wir streichen.&lt;br /&gt;
&lt;br /&gt;
== M 4.WA08Schutz vor automatisierter Nutzung von Web-Anwendungen (Markus) ==&lt;br /&gt;
; &amp;quot;Brute-Force-&lt;br /&gt;
Angriffe (z. B. Erraten von Zugangsdaten) und Enumeration-Angriffe (z. B.&lt;br /&gt;
automatisiertes Ermitteln von gültigen Login-Namen)&amp;quot; -- die Beispiele sind identisch - besser Beispiele suchen, z.b. URL-Enumeration&lt;br /&gt;
&lt;br /&gt;
([[User:Mrohr|Matthias]]) Das sehe ich anders. Brute-Forcing bezieht auf Passwoerter und Enumeration auf Benutzernamen, etwa durchs hochzaehlen. Auch wenn ich zustimmen muss, dass die nicht ganz gluecklich gewaehlt wurden. Stann &amp;quot;Erraten von Zugangsdaten&amp;quot; wuerde ich besser von &amp;quot;Erraten von Passwoertern&amp;quot; sprechen. Oder wie gesagt gleich auch auf andere Beispiele (etwa Object ID Enumeration) beziehen.&lt;br /&gt;
&lt;br /&gt;
== M 4.WA11Sichere Konfiguration von Web-Anwendungen (Markus) ==&lt;br /&gt;
; &amp;quot;Sicherer Umgang mit TLS/SSL&amp;quot; -- Hier fehlt der Hinweis, dass TLS-1.0 gebrochen ist&lt;br /&gt;
; &amp;quot;Zeichenkodierungskonfiguration&amp;quot; -- Ein Whitelisting abhängig von der Encodierung wäre ein weiterer Vorschlag&lt;br /&gt;
; &amp;quot;Restriktive Dateisystemberechtigungen&amp;quot; -- auch wenn es ein klassiker ist - der AS sollte ebenfalls mit von einem eingeschränkten Nutzer gestartet werden und nicht als root&lt;br /&gt;
; Administration Consolen:zur Ergänzen: Wenn diese nicht benötigit, sollten derartige Applikationen nicht deployed werden, unabhängig von möglichen Zugangsbeschränkungen.&lt;br /&gt;
&lt;br /&gt;
([[User:Mrohr|Matthias]]) Sorry, meiner Meinung nach hat die Bewertung von Kryptoverfahren hier abslut nichts zu suchen.Stattdessen sollte hier auf den entsprechenden [https://www.bsi.bund.de/ContentBSI/Publikationen/TechnischeRichtlinien/tr02102/index_htm.html Empfehlung des BSI] verwiesen werden, auch wenn dieses Dokument derzeit noch etwas outdated zu sein scheint.&lt;br /&gt;
&lt;br /&gt;
== M 4.WA13Kontrolliertes Einbinden von Daten und Inhalten bei Web-Anwendungen (Markus) ==&lt;br /&gt;
; Datei-Upload: Bei einem Upload werden Dateien durchaus in TEMP-Verzeichnissen gesammelt und danach weiterverarbeitet. Diese TEMP-Verzeichnisse sind im Rahmen einer Sicherheitsanalyse zu betrachten -&amp;gt; Möglicher (unbefugter) Zugriff auf weitere Uploads&lt;br /&gt;
; Upload komprimierter Dateien / großer Dateien birgt die Gefahr von DOS Angriffen&lt;br /&gt;
; Upload von Dateien kann bei weiterem Parsing zu Speicherengpässen führen --&amp;gt; DOS-Angriffe auf Thread-Local etc.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== M 4.WA14Restriktive Herausgabe sicherheitsrelevanter Informationen bei Web-Anwendungen (Markus, Matthias) ==&lt;br /&gt;
OK - Keine Anmerkungen von mir.&lt;br /&gt;
&lt;br /&gt;
[[User:Mrohr|Matthias]]) Von mir schon;)&lt;br /&gt;
&lt;br /&gt;
; Vermeidung von Kommentaren in ausgelieferten Webseiten&lt;br /&gt;
&lt;br /&gt;
Das ist leider total falsch, wir brauchen haeufig Komentare, aus Kompatibilitaetsgruenden. So wird etwa der JavaScript-Block haeufig auskommentiert.&lt;br /&gt;
&lt;br /&gt;
Wurde stattessen besser von sicherheitsrelevanten Kommentaren sprechen und als Massnahme generell Entwicklerkommentare ueber Sprachkonstruktre (etwa JSP) durchzufuehren.&lt;br /&gt;
&lt;br /&gt;
; Löschen nicht benötigter Dateien&lt;br /&gt;
&lt;br /&gt;
Hier wurde ich ggf. Dateien von Versionisierungstools (etwa Subversion) erwaehnen, das sehen wir schon recht haeufig.&lt;br /&gt;
&lt;br /&gt;
Statt Dateien einfach nur zu loeschen (was in der Praxis haeufig nicht so einfach ist) bietet es sich zudem an, den Zugriff auf bestimmte Dateien oder Dateitypen generell zu sperren, etwa mittels ACL im Apache.&lt;br /&gt;
&lt;br /&gt;
; Gibt die Web-Anwendung ausschließlich neutrale Fehlermeldungen aus und sind diese im Quelltext identisch? {E: C}&lt;br /&gt;
&lt;br /&gt;
Persoenlich verstehe ich das nicht. Wieseo neutrale Fehlermeldung? Das macht fuer mich nur beim Login Sin. Hierzu existiert in dem Text auch keinerlei Bezug. Ich wuerde das daher besser entfernen und im Rahmen der Fehlerbehandlung diskutieren. Mindestens sollte hier jedoch besser von &amp;quot;sicherheitsunbedentlichen Fehlermeldungen&amp;quot; oder so gesprochen werden.&lt;br /&gt;
&lt;br /&gt;
; Wird der Referrer bei Verlassen der Web-Anwendung (z. B. durch einen Link auf eine externe Seite) gefiltert?&lt;br /&gt;
&lt;br /&gt;
Diesen Punkt sehe ich als sehr Fallabhengig an. Es kann fuer seiten durchaus wuenschenswert sein, dass der Referer weitergegeben wird. Der Referer sollte natuerlich keine sensiblen Informationen enthalten, was ja an anderer Stelle (etwa Session Management) vorgegeben wird bzw. gegeben werden sollte.&lt;br /&gt;
&lt;br /&gt;
== M 4.WA15Schutz vertraulicher Daten bei Web-Anwendungen (Markus) ==&lt;br /&gt;
; Sichere kryptographische Algorithmen:&lt;br /&gt;
 Hier fehlt mir eine Liste der aktuelle als sicher geltenden Verfahren.&lt;br /&gt;
; Schlüssel&lt;br /&gt;
 Das die Schlüssel bestimmten Formaten entsprechen müssen ist ok - aber das Schlüsselmanagement wird gar nicht besprochen?&lt;br /&gt;
; Schutz der Daten im Browsercache&lt;br /&gt;
 Skripte und Browserplugins können ebenfalls auf den Browsercache zugreifen - diese werden hier nicht erwähnt.&lt;br /&gt;
; Maskierung von Passwörtern &lt;br /&gt;
 Dies schützt bei der Eingabe nur vor ShoulderSurfing nicht vor Skripten oder Plugins die diese an andere Server posten.&lt;br /&gt;
; Sicherung von Zugangsdaten:&lt;br /&gt;
 Zugangsdaten in einer Datei abzulegen - wenn auch ausserhalb des WebRoots ist keine gute Idee.&lt;br /&gt;
; Schutz von Quelltexten:&lt;br /&gt;
 Hier würde ich property files mit aufnehmen. der hinweis auf web-inf/classes fehlt - warum?&lt;br /&gt;
 Bei include-befehlen sind die pfadangaben zu überdenken.&lt;br /&gt;
&lt;br /&gt;
== M 4.WA16Zugriffskontrolle bei Web-Anwendungen (Markus) ==&lt;br /&gt;
; Zugriffskontrolle via Frameworks:&lt;br /&gt;
 Dieser Punkt (Frameworks) wird nur in einem Satz erwähnt. Es werden keine Bespiele gegeben - Das ist zu wenig.&lt;br /&gt;
 Es müssen alle Zugriffe geschützt werden. Eine Protokollierung aller Zugriffe mit den nötigen Informationen ist ebenfalls empfehlenswert.&lt;br /&gt;
; Datei Upload:&lt;br /&gt;
 Die Gefahr eines DOS wird hier nicht erwähnt.&lt;br /&gt;
&lt;br /&gt;
== M 4.WA19Verhinderung von Cross-Site Request Forgery (CSRF, XSRF) (Markus, Matthias) ==&lt;br /&gt;
; Verantwortliche: &lt;br /&gt;
 Entwickler und Admins!&lt;br /&gt;
([[User:Mrohr|Matthias]]) Korrekt, wobei auch in der Reihenfolge&lt;br /&gt;
&lt;br /&gt;
; Anti-CSRF-Token in hidden fields:&lt;br /&gt;
 Das ist keine gute Idee. Ich würde das streichen!&lt;br /&gt;
&lt;br /&gt;
([[User:Mrohr|Matthias]]) Watt? Anti-CSRF-Tokens in Hidden Fields sind die Standard-Massnahme. Wie denn sonst? Bitte nicht streichen!!! &lt;br /&gt;
&lt;br /&gt;
([[User:Mrohr|Matthias]]) Die Technik bei der die Session ID als Anti-CSRF-Token verwendet wird, wird als Double-Cookie Submit bezeichnet, das sollte hier referenziert werden.&lt;br /&gt;
&lt;br /&gt;
; Umgehung von Schutzmechanismen:&lt;br /&gt;
 Man in the middle hat keinen direkten Bezug zu CSRF! Das würde ich streichen.&lt;br /&gt;
([[User:Mrohr|Matthias]]) Der Hinweis ist korrekt. Wovon der Autor hier spricht ist Session Replay nicht CSRF.&lt;br /&gt;
&lt;br /&gt;
; Frameworks:&lt;br /&gt;
 Gute Idee - aber es gibt auch Features in den ApplicationServern die CSRF unterbinden - warum wird das nicht besprochen?&lt;br /&gt;
&lt;br /&gt;
([[User:Mrohr|Matthias]]) Sehe ich persoenlich nicht so, da CSRF primaer ein Applikations-Fehler ist, und auch in der Applikation und nicht im Environment (AppServer) geloest werden sollte. Auch wenn das manchmal ggf. die einzig machbare Loesung darstellt.&lt;br /&gt;
&lt;br /&gt;
([[User:Mrohr|Matthias]]) Was generell fehlt, ist ein Hinweis darauf, dass schreibende Requests generell per HTTP Post abgewickelt werden sollten, da HTTP Get keine &amp;quot;Safe Method&amp;quot;  (siehe HTTP 1.1, RFC 2616) ist.&lt;br /&gt;
&lt;br /&gt;
== M 4.WA20Sicherer Entwurf der Logik von Web-Anwendungen (Markus) ==&lt;br /&gt;
; Rollbacks:&lt;br /&gt;
 Tritt ein Fehler auf muss die Applikation einen konsistenten Datenstand zurück lassen. Das wird hier nicht erwähnt.&lt;br /&gt;
; RaceConditions:&lt;br /&gt;
 Fehler in der Geschäftslogik können auch durch zwei gleichzeitige Sessions auf einer Webapplikation auftreten - das wird hier nicht besprochen.&lt;br /&gt;
&lt;br /&gt;
== M 4.WA22Verhinderung der Blockade von Ressourcen (DoS) bei Web-Anwendungen (Markus) ==&lt;br /&gt;
; Datenspeicher:&lt;br /&gt;
 Neben dem Datenspeicher sollte auch der RAM-Verbrauch pro Thread der Applikation limitiert werden.&lt;br /&gt;
; Voraggregation von Daten / Caching&lt;br /&gt;
 Dieser Punkt fehlt: Stark ressourcen belastende Anfragen können auch in Lastarmen Zeiten vorberechnet werden.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== M 4.WA25Verhinderung von Clickjacking (Markus) ==&lt;br /&gt;
Ok - das passt soweit.&lt;br /&gt;
&lt;br /&gt;
([[User:Mrohr|Matthias]]) Stimmt, auch wenn ich &amp;quot;Angreifer&amp;quot; in dem Beispiel eher als &amp;quot;Webseitenbetreiber&amp;quot; beschreiebn wuerde, da er nicht wirklich aktiv einen Angriff durchfuehrt, oder? Bitte nochmal ueber meinen Hinweis aus G 5.WA18 nachdenken: Ist Clickjacking-Schutz tatsaechlich Grundschutz? Ich bin mir da selber nicht so wirklich sicher.&lt;br /&gt;
&lt;br /&gt;
== M 5.WA21Sichere Anbindung von Hintergrundsystemen an Web-Anwendungen (Markus) ==&lt;br /&gt;
; Verantwortliche:&lt;br /&gt;
 Architekten fehlen. Entwickler müssen die Views umsetzen und die Datasource entsprechend einbinden - die fehlen hier ebenfalls.&lt;br /&gt;
; DirectorySystem Beispiel:&lt;br /&gt;
 Das DirectorySystem wird in dem angegeben Beispiel zum Single Point of Failure - das wird verschwiegen.&lt;br /&gt;
; Firewalls:&lt;br /&gt;
 Das sind fachlich-blinde Systeme. Was ist mit WAFs / IDS / IPS etc.?&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== M 5.WA23Systemarchitektur einer Web-Anwendung (Markus) ==&lt;br /&gt;
; Verantwortliche:&lt;br /&gt;
Auch hier fehlend wieder die Architekten. &lt;br /&gt;
; Virtualisierung:&lt;br /&gt;
Virtualisierung bietet weitere Angriffsvektoren (z.B.: Hypervisor) die eine &amp;quot;Blech&amp;quot;Farm nicht bietet.&lt;/div&gt;</summary>
		<author><name>Mrohr</name></author>	</entry>

	<entry>
		<id>https://wiki.owasp.org/index.php?title=Talk:OWASP_Review_BSI_IT-Grundschutz_Baustein_Webanwendungen&amp;diff=130139</id>
		<title>Talk:OWASP Review BSI IT-Grundschutz Baustein Webanwendungen</title>
		<link rel="alternate" type="text/html" href="https://wiki.owasp.org/index.php?title=Talk:OWASP_Review_BSI_IT-Grundschutz_Baustein_Webanwendungen&amp;diff=130139"/>
				<updated>2012-05-21T07:37:32Z</updated>
		
		<summary type="html">&lt;p&gt;Mrohr: /* M 4.WA25Verhinderung von Clickjacking (Markus) */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Since it's about a review of a document in German, all the discussions will be done in German :-)&lt;br /&gt;
&lt;br /&gt;
Diskussionen rund um den Review des &amp;quot;IT-Grundschutzbausteins Webanwendungen&amp;quot; finden hier statt, sinnvollerweise auf Deutsch :-)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Vorschlag für Kriterien, die an unser Review angelegt werden sollten (.kai) ==&lt;br /&gt;
&lt;br /&gt;
* Der Baustein soll alle wichtigen Themen der Entwicklung sicherer&lt;br /&gt;
Webanwendungen enthalten.&lt;br /&gt;
&lt;br /&gt;
* Der Baustein soll die verschiedenen Phasen der Software-Entwicklung&lt;br /&gt;
vollständig abdecken.&lt;br /&gt;
&lt;br /&gt;
* Der Baustein soll zwischen verbindlichen, prüfbaren Vorgaben und&lt;br /&gt;
unverbindlichen Empfehlungen sprachlich sauber unterscheiden (hier&lt;br /&gt;
spielt mein Auditorenblick eine Rolle). Vor allem soll der Baustein&lt;br /&gt;
verbindliche Anforderungen auch tatsächlich stellen. Alle&lt;br /&gt;
verbindlichen Anforderungen müssen unabhängig von der jeweiligen&lt;br /&gt;
Umgebung auch umsetzbar sein, d.h. sie müssen entsprechend generisch&lt;br /&gt;
sein.&lt;br /&gt;
&lt;br /&gt;
* Die Maßnahmen sollen nur in (begründbaren) Ausnahmen zu Empfehlungen&lt;br /&gt;
von OWASP im Widerspruch stehen.&lt;br /&gt;
&lt;br /&gt;
* Die Maßnahmen sollen verständlich und anwendbar sein.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== &amp;quot;Hilfsmittel&amp;quot; (Markus) ==&lt;br /&gt;
Ich würde das Script zur Vermeidung von Clickjacking wrappen und nicht als losen Skript-block in den Text einbinden - einfach schlechter Programmierstiel diese losen Blöcke.&lt;br /&gt;
Der Zugriff auf das Body-Element mit byTagName-Array[0] ist auch nicht wirklich gut. Ich halte Zugriffe über das DOM (klassisch), bei ID bzw. XPATH für besser. &lt;br /&gt;
&lt;br /&gt;
SQL-Injection Characters:&lt;br /&gt;
die Pipe fehlt hier zur Textkonatenierung&lt;br /&gt;
+ / - haben auch eine Bedeutung bei JOINs.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== &amp;quot;Goldene Regeln&amp;quot; (Matthias) ==&lt;br /&gt;
&lt;br /&gt;
Hier meine Anmerkungen zu diesem Dokument:&lt;br /&gt;
&lt;br /&gt;
; 1. Für mich fehlende Punkte&lt;br /&gt;
* Korrektur der Ursache (Root Cause) von Schwachstellen statt  Verhinderung deren Ausnutzung&lt;br /&gt;
* Bezug auf Minimierung der Angriffsfläche und Least-Privilege-Prinzip&lt;br /&gt;
* Bezug auf Defense-in-Depth-Prinzip&lt;br /&gt;
* Verwendung von getesteten Security APIs (z.B. OWASP ESAPI) statt selbstentwickelter Funktionen&lt;br /&gt;
* Bezug auf Externalisierung von Sicherheitsfunktionen, sowie deklerative vor programmatischer Sicherheit.&lt;br /&gt;
&lt;br /&gt;
; 2. Begriff &amp;quot;Web-Anwendung&amp;quot;&lt;br /&gt;
Würde ich generell durch &amp;quot;Webanwendung&amp;quot; ersetzen.&lt;br /&gt;
&lt;br /&gt;
; 3. Einleitung (&amp;quot;Web-Anwendungen stellen Funktionalität zur Verfügung, ...&amp;quot;)&lt;br /&gt;
&lt;br /&gt;
Wozu dient dieser Satz?&lt;br /&gt;
&lt;br /&gt;
; 4. &amp;quot;Die Architektur der Web-Anwendung ist im Sicherheitskonzept zu  dokumentieren.....&amp;quot; &lt;br /&gt;
&lt;br /&gt;
Ich fände es sinnvoller, wenn hier von der &amp;quot;Sicherheitsarchitektur&amp;quot; gesprochen wird, welche etwa neben den sicherheitsrelevanten Datenflüssen, sensible Komponenten, Entry Points, Akteure architekturelle Security Controls wie Authentisierung, Kryptographie und natürlich die Trust Boundaries beinhaltet.&lt;br /&gt;
&lt;br /&gt;
; 5. &amp;quot;Bei Web-Anwendungen handelt es sich häufig um spezielle Eigenentwicklungen....&amp;quot;&lt;br /&gt;
&lt;br /&gt;
Erstens würde ich hier den geläufigen Begriff &amp;quot;Individualsoftware&amp;quot; verwenden. Zweitens würde ich statt bestimmte SDLC-Phasen vorzugeben (die Begriffe &amp;quot;Softwareverteilung&amp;quot; und &amp;quot;Integration&amp;quot; sind mir bei Webanwendungen bisher noch nicht so häufig untergekommen), besser von der Notwendigkeit sprechen, Sicherheit in allen Entwicklungsphasen zu berücksichtigen, also eines SDLs.&lt;br /&gt;
&lt;br /&gt;
; 6. &amp;quot;Alle Ein- und Ausgaben der Web-Anwendung müssen in eine normalisierte Form überführt werden....&amp;quot;&lt;br /&gt;
&lt;br /&gt;
Normalisierung ist für mich nicht gleich Kanonsierung, auch wenn beide Begriffe häufig als synonym verwendet werden.  Der Unterschied wird in der [http://owasp-esapi-java.googlecode.com/svn/trunk_doc/2.0-rc4/org/owasp/esapi/Encoder.html API-Beschreibung der ESAPI] erklärt. Die Normalisierungs-Funktion ist allerdings schon vor einiger Zeit aus der ESAPI [https://lists.owasp.org/pipermail/esapi-dev/2010-January/000266.html rausgeflogen]. Die generelle Kanonisierung von Ausgaben halte ich dazu für nicht sinnvoll.&lt;br /&gt;
&lt;br /&gt;
Zweitens, finde ich den weiteren Text zwar grundsätzlich formal korrekt, aber so allgemein, dass dieser glaube ich niemandem so richtig etwas bringt.  &lt;br /&gt;
&lt;br /&gt;
Besser fände ich hier Ein- von Ausgabevalidierung grundsätzlich voneinander abzugrenzen. Etwa was ich per Eingabevalidierung (Längenprüfung, Casting, etc. per Whitelisting) und was mit Ausgebavalidierung (Enkodierung, Escaping, Parametrisierung) machen muss und kann.&lt;br /&gt;
&lt;br /&gt;
Eingabedaten können technisch zudem auch Werte eingelesener Property-Dateien sein. Muss ich die auch validieren? Ist das dann noch Grundschutz? &lt;br /&gt;
&lt;br /&gt;
; 7. &amp;quot;Für den Zugriff auf sensitive Funktionen oder Informationen muss die Web-Anwendung eine wirksame Authentisierung und Sitzungsverwaltung unterstützen. Die Eigenschaften der Sitzungs-ID müssen so gewählt werden, dass die Sitzung ausreichend geschützt ist. ....&amp;quot;&lt;br /&gt;
&lt;br /&gt;
Besser fände ich &amp;quot;eine Authentisierung, die über eine dem Schutzbedarf der Anwendung angemessene Stärke verfügt.&amp;quot; &lt;br /&gt;
&lt;br /&gt;
Eigentlich geht es doch mehr um den Schutz der Sitzungs-ID, da diese gewöhnlich im Verlauf einer Sitzung den Client authentisiert. Oder den Schutz des Zugriffs auf eine Sitzung. &lt;br /&gt;
&lt;br /&gt;
Zudem fehlt hier meiner Meinung nach der Hinweis auf die bevorzugte Verwendung getesteter Standardkomponenten.&lt;br /&gt;
&lt;br /&gt;
; 8. &amp;quot;Die Web-Anwendung sollte die zu übermittelnden Daten schützen.&amp;quot;&lt;br /&gt;
&lt;br /&gt;
Dies würde ich nur auf sensible Daten beziehen. Zusätzlich zu HTTPS würde ich hier schreiben, dass sensible Daten generell nicht in der URL übertragen werden dürfen.&lt;br /&gt;
&lt;br /&gt;
; 9. &amp;quot;Die Preisgabe interner Informationen (z.B. Kommentare, Fehlermeldungen)&amp;quot;&lt;br /&gt;
&lt;br /&gt;
Hier würde ich eher schreiben &amp;quot;(IN Kommentaren, Fehlermeldungen, HTTP Headern, etc.)&amp;quot;&lt;br /&gt;
&lt;br /&gt;
; 10. &amp;quot;Fehler müssen so behandelt werden, ... müssen Fehler bei der Autorisierung zu einer Verweigerung beim Zugriff auf die angeforderte Ressource führen.&amp;quot;&lt;br /&gt;
&lt;br /&gt;
Sprachlich: &amp;quot;Die Webanwendung muss sich stets in einem sicheren Zustand befinden. Beispielsweise müssen Fehler bei der Autorisierung zu einer Verweigerung des Zugriffs führen (Default-Deny-Strategie).&amp;quot;&lt;br /&gt;
&lt;br /&gt;
; 11. &amp;quot;Die Logging-Funktionen der Web-Anwendung müssen aufgetretene Ereignisse derart protokollieren, dass sicherheitskritische Vorfälle nachvollzogen werden können.&amp;quot;&lt;br /&gt;
&lt;br /&gt;
Hier würde hier eher von &amp;quot;allen sicherheitsrelevanten Ereignissen&amp;quot; sprechen.&lt;br /&gt;
&lt;br /&gt;
Weiterhin sollten insbesondere beim Logging der Datenschutz berücksichtigt werden, personenbezogene Daten also nach Möglichkeit nicht oder nur anonymisiert in technischen Logdateien protokolliert werden.&lt;br /&gt;
&lt;br /&gt;
; 12. &amp;quot;Alle Sicherheitsmechanismen (z.B. Authentisierung und Zugriffskontrolle) sind serverseitig zu implementieren und können nicht durch clientseitige Mechanismen ersetzt werden.&amp;quot;&lt;br /&gt;
&lt;br /&gt;
Die Aussage ist so nicht korrekt. Darüber hatten wir bereits bei der ASVS mehrfach diskutiert. &lt;br /&gt;
&lt;br /&gt;
Überall dort wo der Client angegriffen wird, also etwa bei RIAs (Stichwort DOM-Based XSS) müssen wir Security Controls clientseitig implementieren. Es gibt mittlerweile deshalb auch eine Portierung der ESAPI auf Javascript. Überall dort wo der Server oder Hintegrundsysteme angegriffen werden, ist die Aussage aber natürlich zutreffend.&lt;br /&gt;
&lt;br /&gt;
== &amp;quot;Gefährdungen&amp;quot; (Markus, Dennis, .... &amp;lt;Dein Name&amp;gt;) ==&lt;br /&gt;
; Generell:&lt;br /&gt;
Reference auf RFCs fehlen.&lt;br /&gt;
&lt;br /&gt;
==B.5.XX Web-Anwendungen ==&lt;br /&gt;
; 1. Erster Absatz - Letzter Satz: --Wieso werden hier nur HTML/XML Doks und Oberflächen angesprochen? Was ist der Unterschied zwischen einem HTML-Dok und einer Oberfläche? Was ist mit  Flash, etc.? Was ist mit WebSockets?&lt;br /&gt;
; 2. Stichpunkt &amp;quot;Protokollierung&amp;quot;: Sicherheits relevant ist ein sehr dehnbarer Begriff - Eine bessere Formulierung könnte sein: Zur Rekonstruktion von Nutzerhandlungen nötige Ereignisse (positve &amp;amp; negative) müssen protokolliert werden . . . &lt;br /&gt;
; 3. Absatz: &amp;quot;Abgrenzung des Bausteins&amp;quot;: &amp;quot;Die spez. Sicherheitsanforderungen an Web-Services werden in diesem Baustein nicht betrachtet&amp;quot; --&amp;gt; Wie so nicht? Was ist das Backend von einer Rest / AJAX-basierenden Webanwendung denn anderes als ein Web-Service? Diesen Satz würde ich entfernen.&lt;br /&gt;
; 4.Vorsätzliche Handlungen -&amp;gt; Web-Spoofing (G.5.87) -- Missverständliche Bezeichnung / Nomenklatur&lt;br /&gt;
; 5. Seite 4 : erste Zeile &amp;quot;Umsetzung&amp;quot;: &amp;quot;dafür umzusetztende Komponenten müssen die Webanwendung schützen...&amp;quot; - Hier fehlt mir der Hinweis, dass dieser Schutz verifiziert werden muss.&lt;br /&gt;
; 6 Seite 5: &amp;quot;Umsetzung&amp;quot; - Wir haben CSRF, D(D)os und SQL-Injection aber wo ist XSS?&lt;br /&gt;
; 7 Seite 7: &amp;quot;Die Sicherheitsfunktion wird ausschließlich clientseitig...&amp;quot; --&amp;gt; Warum muss der Angreifer überhaupt einen Browser umkonfigurieren? Was ist mit Proxies, Scripts, etc.? Ich würde das reduzieren darauf, dass rein Webbrowser-basierende Schutzfunktionen einfach umgangen werden können.&lt;br /&gt;
; 8 Seite 8: Die angesprochenen Punkte hinterlassen den Eindruck nicht vollständig zu sein: Mir fehlen Punkte wie &amp;quot;Outsourcing&amp;quot;, &amp;quot;KnowHow der Entwickler&amp;quot;, Tooling, Framework-Auswahl, etc.&lt;br /&gt;
; 9 Seite 9: Eigentlich möchte der Autor hier über Datenschutz sprechen. Abgesehen von den letzten drei Zeilen geht es aber nur um &amp;quot;User tracking&amp;quot; - Wo ist der Rest der Datenschutzproblematik? Warum der Fokuss auf Tracking? Mir ist das zu einseitig.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
tbd.&lt;br /&gt;
&lt;br /&gt;
; Wortwahl:&lt;br /&gt;
Ich stosse innerhalb der Texte immer wieder an die Worten '''Hintergrundsystem''' und '''Sicherheitskontext'''.&lt;br /&gt;
'''Hintergrundsystem:''' besseres Synonym?&lt;br /&gt;
'''Sicherheitskontext:''' nur weil es in den Texten um Sicherheit geht muss nicht an jeder Stelle immer wieder das Wort _Sicherheits_kontext eingebaut werden.&lt;br /&gt;
Bsp: &amp;quot;Erlangt ein Angreifer Kenntnis von einer solchen gültigen, aber nicht mehr genutzten SessionID, so kann er die Web-Anwendung im Sicherheitskontext des nicht abgemeldeten Benutzers weiter verwenden.&amp;quot; (G 5,WA12 Unzureichendes Session-Management von Web-Anwendungen)&lt;br /&gt;
Verbesserungsansansatz: ... so kann er die Web-Anwendung anstelle des eigentlichen Besitzers weiterhin verwenden.&lt;br /&gt;
&lt;br /&gt;
== &amp;quot;G 2.WA01 Mangelhafte Auswahl oder Konzeption von Web-Anwendungen&amp;quot; (Matthias) ==&lt;br /&gt;
&lt;br /&gt;
Nachdem ich mir diese Gefährdung durchgelesen hatte, fehlten mir ehrlich gesagt etwas die Worte. Nicht nur, dass hier fast jeder zweite Satz entweder falsch ist bzw. massive Fehler enthält oder ich diesen schlicht nicht verstehe, ist der ganze Text sprachlich wirklich enorm verbesserungsfähig. &lt;br /&gt;
&lt;br /&gt;
Na gut, ich konzentriere mich mal auf die fachlichen Punkte:&lt;br /&gt;
&lt;br /&gt;
; 1. Security Controls&lt;br /&gt;
Werden mal mit &amp;quot;Schutzmechanismen&amp;quot;, mal mit &amp;quot;Sicherheitskomponenten&amp;quot; und dann wieder als &amp;quot;Sicherheitsfunktionen&amp;quot; bezeichnet. Hier macht eine einheitliche Benennung sicherlich Sinn und ist weniger verwirrend.&lt;br /&gt;
&lt;br /&gt;
; 2. &amp;quot;Eine Web-Anwendung ist in der Regel ein verteiltes, komplexes System bestehend aus unterschiedlichen Komponenten (z. B. Webserver, Applikationsserver, Hintergrundsysteme)&amp;quot;&lt;br /&gt;
&lt;br /&gt;
Eine Webanwendung besteht sicher nicht aus einem Webserver- oder anderer infrastruktureller Komponenten, sondern ist Software welches diese nutzt.&lt;br /&gt;
&lt;br /&gt;
; 3. &amp;quot;Bei individuell entwickelten Web-Anwendungen sind im Allgemeinen die Frameworks, Komponenten und Schnittstellen im Rahmen der Konzeption auszuwählen und deren Einbindung und Absicherung zu betrachten....Im Gegensatz dazu ist bei der Konzeption von Web-Anwendungen auf Basis von Standardsoftware insbesondere auf die Auswahl der Software und die Konfiguration der Teilkomponenten zu achten&amp;quot;&lt;br /&gt;
&lt;br /&gt;
Wir unterscheiden im Rahmen von Webanwendungen eigentlich Free or Opensource Software (FOSS bzw. FLOSS), Standardsoftware und Individualsoftware voneinander. Wir unterscheiden nicht Frameworks von Standardsoftware. Frameworks können Teil von Standardsoftware sein, wie etwa bei SharePoint, SAP, etc, oder aber FOSS, wie etwa Spring. Die ganzen Absätze machen für mich daher keinen Sinn.&lt;br /&gt;
&lt;br /&gt;
; 4. &amp;quot;Eine Sicherheitsfunktion (z. B. Authentisierung, Autorisierung) wird nicht an einer Stelle umgesetzt und verwendet, sondern ist mehrfach in der Web- Anwendung realisiert. Wird diese Sicherheitsfunktion an den verschiedenen Stellen unterschiedlich umgesetzt, führt dies zu einem uneinheitlichen Sicherheitsniveau.&amp;quot;&lt;br /&gt;
&lt;br /&gt;
Natürlich ist die mehrfache Verwendung bestimmter Security Controls, beispielsweise von Zugriffskontrollen (Complete-Mediation) oder Validierung (Robustheit) erstrebenswert. Was der Autor hier wahrscheinlich meinte, war die Notwendigkeit diese zu Kapseln bzw. zu Externalisieren. Das bezieht sich im übrigen nicht nur auf die Controls selbst, sondern auch auf ihre Parametrisierung (etwa. über Konfigdateien / XACML).&lt;br /&gt;
&lt;br /&gt;
Wichtiger wäre in diesem Zusammenhang zudem die fehlende Berücksichtigung bestimmter Security Controls.&lt;br /&gt;
&lt;br /&gt;
; 5. &amp;quot;Auswahl von Web-Anwendungen auf Basis von Standardsoftware&amp;quot;&lt;br /&gt;
Was will der Satz sagen? Ich wähle Standardsoftware aus, aber doch keine Webanwendungen. Oder heißt das, ich kaufe eine existierende Anwendung ein (Webanwendung!=Indivudualsoftware)? &lt;br /&gt;
&lt;br /&gt;
; 6. &amp;quot;Das ausgewählte Produkt verfügt nicht über die ausreichende Sicherheitsfunktionalität, ... Daher müssen die notwendigen Schutzmechanismen nachträglich hinzugefügt werden, wodurch zusätzliche Aufwände entstehen.&amp;quot;&lt;br /&gt;
Das ist etwas sehr positiv formuliert. Tatsächlich können fehlende Security Controls in zugekaufter Software (insb. Standardsoftware) in der Realität häufig gar nicht hinzugefügt werden oder nur perimetrisch (z.B. per WAF oder Access Gateway).&lt;br /&gt;
&lt;br /&gt;
; 7. &amp;quot;Die Hintergrundsysteme werden unzureichend abgesichert und dadurch ist die Datenbank der Web-Anwendung aus dem Internet erreichbar.&amp;quot;&lt;br /&gt;
Gehören fehlende Netzwerksegmentierung bzw. Firewallregeln wirklich in diesen Kontext? Das ist doch eigentlich Grundschutz der Infrastruktur, oder?&lt;br /&gt;
&lt;br /&gt;
; 8. &amp;quot;Aufgrund schwacher Parameter in der Konfiguration des Frameworks zum Session-Management werden unsichere SessionIDs erzeugt.&amp;quot;&lt;br /&gt;
Was sind &amp;quot;schwache&amp;quot; Parameter?&lt;br /&gt;
&lt;br /&gt;
Welches Framework erlaubt unsichere SessionIDs durch eine &amp;quot;schwache&amp;quot; Konfiguration zu erzeugen?&lt;br /&gt;
&lt;br /&gt;
; 9. &amp;quot;Wird die Konfiguration des Web-Browsers durch einen Angreifer manipuliert, können die clientseitig umgesetzten&amp;quot;&lt;br /&gt;
&lt;br /&gt;
Manipuliert ein Angreifer die Konfguration seines Webbroswers, wenn er einen MITM-Proxy konfiguriert?&lt;br /&gt;
&lt;br /&gt;
Wie bereits bei den &amp;quot;Goldenen Regeln&amp;quot; angemerkt, gilt auch hier, das manche Security Controls auch clientseitig umgesetzt werden dürfen (etwa. zur Verhinderung von Dom-Based XSS).&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== &amp;quot;G 5.WA10 Fehler in der Web-Anwendungslogik&amp;quot; (Dennis) ==&lt;br /&gt;
; 1. &amp;quot;Damit kann aufgrund der Prüfreihenfolge ein hoher Ressourcenverbrauch provoziert werden, der für Denial-of-Service-Angriffe ausgenutzt werden kann.&amp;quot;&lt;br /&gt;
Meiner Meinung nach passt in diesem Kontext die Attacke DoS nicht ganz. Falls die nachfolgende Funktionalität wegen der langen Ausführungszeit der Filterkomponente übersprungen wird bzw. ein Fehler auftritt würde dies meiner Ansicht in die Thematik Anwendungslogik passen. Eine DoS-Attacke kann hingegen anhand jeder Funktion durchgeführt werden.&lt;br /&gt;
&lt;br /&gt;
== &amp;quot;G 5.WA11 Umgehung clientseitig umgesetzter Sicherheitsfunktionen von Web-Anwendungen&amp;quot; (Dennis) ==&lt;br /&gt;
; 1. &amp;quot;Ein Angreifer kann diese ausnutzen, um beispielsweise unbefugt Befehle an Hintergrundsysteme der Web-Anwendung zu übermittlen (z.B. in Form von Datenbankanfragen bei einer SQL-Injection).&amp;quot;&lt;br /&gt;
Umformulierung des Inhalts der Klammer. Hatte beim ersten Lesen für mich den Anschein, als ob ein Formular genutzt werden könnte welches den Nutzer aufforder eine SQLI einzugeben. Ich denke &amp;quot;Datenbankanfrage zwecks Ausführung einer SQL-Injection&amp;quot; würde besser passen.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== G 2.WA02 Mängel bei der Entwicklung und der Erweiterung von Web-Anwendungen (Matthias) ==&lt;br /&gt;
&lt;br /&gt;
Allgemein ist de obere Teil ok, die aufgezählten &amp;quot;Auswirkungen von fehlenden Vorgaben&amp;quot; verstehe ich jedoch nicht. Wo ist etwa der Bezug von Barrierefreiheit auf die Anwendungssicherheit?&lt;br /&gt;
&lt;br /&gt;
Mein Vorschlag, um diese Punkte etwa sinnvoll umzubauen:&lt;br /&gt;
* &amp;quot;Fehlendes Vorgehensmodell&amp;quot;: Bezug auf fehlende Berücksichtigung von Sicherheit im SDLC. Statt eines SDLCs selbst sollte hier besser auf die Notwendigkeit eines Secure Development Lifecycle (SDL) hingewiesen werden&lt;br /&gt;
* &amp;quot;Fehlende Programmierrichtlinien&amp;quot; =&amp;gt; Besser wäre hier &amp;quot;Fehlende Sicherheitsrichtlinien in der Programmierung&amp;quot; also &amp;quot;Secure Coding Guidelines&amp;quot;&lt;br /&gt;
* &amp;quot;Testfälle&amp;quot; =&amp;gt; &amp;quot;Sicherheitsrelevante Testfälle&amp;quot; (z.B. Security Unit Tests). &lt;br /&gt;
* &amp;quot;Barrierefreiheit&amp;quot;: Warum nicht an dieser Stelle die Auswirkungen von Sicherheitsfunktionen auf die Bedienbarkeit, etwa anhand von CAPTCHAS erläutern?&lt;br /&gt;
&lt;br /&gt;
== G 2.WA03 Unzureichender Schutz personenbezogener Daten bei Web-Anwendungen (Matthias) ==&lt;br /&gt;
&lt;br /&gt;
Der Titel dieses Bausteines heißt &amp;quot;Schutz personenbezogener Daten&amp;quot;, die genannten Beispiele beziehen sich bis auf den letzten jedoch auf die missbräuchliche (oder zumindest problematische) Nutzung aus Sicht des Datenschutzes. &lt;br /&gt;
&lt;br /&gt;
Die Punkt 1-3 sollten daher besser entfallen und z.B. durch die Folgenden ersetzt werden:&lt;br /&gt;
* Unsichere Einbindung von sozialen Netzwerken (Bezug nehmen auf den Like-Button bei Facebook)&lt;br /&gt;
* Unsichere Einbindung von Werbeinhalten&lt;br /&gt;
* Unsichere Übertragung und Caching&lt;br /&gt;
* Unsichere Protokollierung&lt;br /&gt;
* Ungenügender Zugriffsschutz&lt;br /&gt;
* Verstoß des Minimalprinzips bzw. der Zweckgebundenheit (welche Daten werden wirklich benötigt)&lt;br /&gt;
&lt;br /&gt;
Auch wäre es ggf. zumindest einen Verweis auf das BDSG zu machen.&lt;br /&gt;
&lt;br /&gt;
== G 4.33 Unzureichende oder fehlende Authentisierung (Matthias) ==&lt;br /&gt;
&lt;br /&gt;
; 1. Erster Absatz: &amp;quot;Wenn Authentisierungsmechanismen fehlen oder zu schlecht sind&amp;quot;&lt;br /&gt;
&lt;br /&gt;
&amp;quot;schlecht&amp;quot; sollte vlt besser durch &amp;quot;unzureichend&amp;quot; ersetzt werden.&lt;br /&gt;
&lt;br /&gt;
; 2. &amp;quot;Sicherheitslücken entstehen bei... der Benutzerauthentisierung&amp;quot;&lt;br /&gt;
&lt;br /&gt;
Hier findet nur ein Bezug auf &amp;quot;Passwörter&amp;quot; statt. Der Bezug auf die fehlerhaft implementierte oder dem Schutzbedarf ungenügende Schutzmechanismen (z.B. keine 2-Faktor-Authentisierung bei hochsensiblen Daten) fehlt. Auch auf das komplette fehlen von Authentisierungs-Controls wird hier nicht  eingegangen&lt;br /&gt;
&lt;br /&gt;
; 3. &amp;quot;Sicherheitslücken entstehen bei... der Komponentenauthentisierung&amp;quot;&lt;br /&gt;
&lt;br /&gt;
Wie bei 2., wird auch hier wieder nur auf Passwörter, nicht jedoch auf das fehlen von Controls selbst eingegangen. An dieser Stelle fehlt auch ein Hinweis auf die Notwendigkeit dedizierter Benutzeraccounts.&lt;br /&gt;
&lt;br /&gt;
; 4. &amp;quot;Sicherheitslücken entstehen bei... der Wahl des Verfahrens&amp;quot;&lt;br /&gt;
&lt;br /&gt;
Statt untauglich würde ich auch hier von &amp;quot;dem Schutzbedarf der Daten nicht angemessen&amp;quot; sprechen, eigentlich gehört das für mich aber in die obigen Punkte.&lt;br /&gt;
&lt;br /&gt;
; 5. Serverseitige Authentisierung fehlt&lt;br /&gt;
&lt;br /&gt;
Auch der Server (bzw. die Anwendung selbst) kann sich fehlerhaft oder ungenügend beim Benutzer authentsieren, etwa über DNS, SSL-Zertifikate, etc.&lt;br /&gt;
&lt;br /&gt;
== G 4.WA04 Unzureichende Validierung von Ein- und Ausgabedaten bei Web-Anwendungen (Matthias) ==&lt;br /&gt;
&lt;br /&gt;
; 1. &amp;quot;Unzureichende Validierung von Eingabedaten&amp;quot;&lt;br /&gt;
&lt;br /&gt;
Die genannten Beispiele sind genau keine korrekten Beispiele für diesen Fall, sondern betreffen die Ausgabevalidierung bzw. Enkodierung. Typische Fehler der Eingabevalidierung ist eine Manipulierbarkeit der Business Logik.&lt;br /&gt;
&lt;br /&gt;
; 2. &amp;quot;Unzureichende Validierung von Ausgabedaten&amp;quot;&lt;br /&gt;
&lt;br /&gt;
Hier geht es zentral um die Verhinderung von Interpreter Injection, also serverseitig (z.B. SQL oder LDAP Injection) oder clientseitig (XSS, JSON Injection, etc.). Statt &amp;quot;können die Ausgaben Schadcode&amp;quot; enthalten würde ich hier eher davon Sprechen, dass ein solcher Interpreteraufruf manipuliert werden kann (was dann z.B. zur Einschleusung von Schadcode genutzt werden kann).&lt;br /&gt;
&lt;br /&gt;
; 3. &amp;quot;Die Suchfunktion der Web-Anwendung verwendet die Eingaben der Benutzer ungefiltert&amp;quot;&lt;br /&gt;
&lt;br /&gt;
Mit ungenügender &amp;quot;Filterung&amp;quot; hat SQL Injection nichts zu tun,  eigentlich geht es hierbei darum, dass SQL-Anfragen dynamisch mit unvalidierten Eingebedaten zusammengebaut (konkateniert) werden.&lt;br /&gt;
&lt;br /&gt;
; 4. &amp;quot;Ungefilterter HTML-Code in Kommentar-Funktion&amp;quot;&lt;br /&gt;
&lt;br /&gt;
Hier fehlt der Bezug auf persistentes XSS, das hier sicherlich zentral ist.&lt;br /&gt;
&lt;br /&gt;
== G 4.WA05 Fehlende oder mangelhafte Fehlerbehandlung durch Web-Anwendungen (Tobias, Matthias) ==&lt;br /&gt;
; Abschnitt &amp;quot;Unsichere Fehlerbehandlung&amp;quot;&lt;br /&gt;
Die G adressiert &amp;quot;Unsichere Fehlerbehandlung&amp;quot;, der Abschnitt die &amp;quot;Unsichere Fehlerbehandlung in Sicherheitskomponenten&amp;quot;. Entsprechend sollte der fettgedruckte Teil angepasst werden.&lt;br /&gt;
&lt;br /&gt;
; &amp;quot;fehlende SQL-Parameter,&amp;quot;&lt;br /&gt;
Sollte besser &amp;quot;Fehlermeldungen bei ungültigen SQL-Abfragen&amp;quot; lauten.&lt;br /&gt;
&lt;br /&gt;
; &amp;quot;Auch scheinbar unkritische Informationen, wie die Meldung ob (..)&amp;quot;&lt;br /&gt;
Korrekt, allerdings nicht nachvollziehbar, wenn das Problem der Leser nicht schon bekannt ist. Daher erweitern nach &amp;quot; Rahmen von Brute-Force-Angriffen ausgenutzt werden.&amp;quot; mit &amp;quot;. Bei Brute-Force-Angriffen wäre in diesem Fall klar, dass der Benutzername gültig ist.&amp;quot;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[User:Mrohr|Matthias]]): Stimme dem Obigen auch zu, ausserdem:&lt;br /&gt;
&lt;br /&gt;
; Sprachlich: &amp;quot;kann dies unvorhersehbare Auswirkungen haben und den Betrieb der Web-Anwendung bis zur Unerreichbarkeit einschränken.&amp;quot;&lt;br /&gt;
&lt;br /&gt;
&amp;quot;Unerreichbarkeit&amp;quot; ist etas merkwuerdig ausgedrueckt, besser ware hier von der &amp;quot;Verfuegbarkeit&amp;quot; zu sprechen. Im Uebrigen fehlt vollstaendig der Bezug auf die Verfuegbarkeit als Primaeres Schutzziel der Informationssicherheit.&lt;br /&gt;
&lt;br /&gt;
; &amp;quot;Clientseitige Fehlerbehandlung&amp;quot;&lt;br /&gt;
Das stimmt soweit, das generelle Problem ist jedoch genereller, naehmlich die clientseitige Abbildung sicherheitsrelaventer Logik (in diesem Fall die Fehlerbehandlung)&lt;br /&gt;
&lt;br /&gt;
== G 4.WA06 Unzureichende Nachvollziehbarkeit von sicherheitsrelevanten Ereignissen bei Web-Anwendungen (Matthias) ==&lt;br /&gt;
&lt;br /&gt;
; 1. Erster Absatz: &amp;quot;Die Behebung einer Schwachstelle ist dann nicht oder nur unter erschwerten Bedingungen möglich.&amp;quot;&lt;br /&gt;
&lt;br /&gt;
Hier würde ich ergänzen: &amp;quot;...und Angriffe auf die Anwendungen können ggf. nicht erkannt oder nachvollzogen werden&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
; 2. &amp;quot;Beispiele&amp;quot;: Kommulierbarkeit&lt;br /&gt;
&lt;br /&gt;
Hier fehlt auch ein Bezug auf die Kommulierbarkeit von SIcherheitsereignissen, dass diese also auch von solchen anderer Systeme in Verbindung gesetzt werden können&lt;br /&gt;
&lt;br /&gt;
; 3. &amp;quot;Beispiele&amp;quot;: Gerichtsverwertbarkeit&lt;br /&gt;
&lt;br /&gt;
Auch die Möglichkeit zur Gerichtsverwertbarkeit (etwa durch eindeutigen Zeitstempel) und manipulationssicherer Speicherung, würde ich an dieser Stelle unbedingt erwähnen.&lt;br /&gt;
&lt;br /&gt;
== G 4.WA07 Offenlegung von Informationen bei Web-Anwendungen (Matthias) ==&lt;br /&gt;
&lt;br /&gt;
; 1. Titel&lt;br /&gt;
&lt;br /&gt;
Hier würde ggf. &amp;quot;Offenlegung vertraulicher Informationen&amp;quot; sicher besser passen als &amp;quot;Offenlegung von Informationen&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
; 2. Beispiellink&lt;br /&gt;
&lt;br /&gt;
Ein Beispiellink (mit und ohne Token) würde sicher die Verständlichkeit dieser Schwachstelle verbessern.&lt;br /&gt;
&lt;br /&gt;
; 3. Erster Absatz: &amp;quot;Wenn demzufolge Informationen unnötig offengelegt werden, steigt die Wahrscheinlichkeit eines erfolgreichen Angriffs.&amp;quot;&lt;br /&gt;
&lt;br /&gt;
Interne Informationen auszublenden ist eine Härtungsmaßnahme, deren Anzeige erhöht aber nicht zwangsläufig die Wahrscheinlichkeit eines erfolgreichen Angriffs. Ich würde diesen Satz weglassen.&lt;br /&gt;
&lt;br /&gt;
 ; 4. Fehlende Punkte&lt;br /&gt;
&lt;br /&gt;
* Ein Hinweis auf HTTP Header wäre hier sicher erwähnenswert.&lt;br /&gt;
* Weiterhin bzgl. der Anzeige von Traces und ein Verweis auf den Entsprechenden Baustein zur Fehlerbehandlung&lt;br /&gt;
&lt;br /&gt;
== G 5.WA14 Cross-Site Request Forgery (CSRF, XSRF) (Matthias) ==&lt;br /&gt;
&lt;br /&gt;
; 1. Erster Absatz: &amp;quot;Können Funktionen einer Web-Anwendung ohne weitere Überprüfung der Authentizität des HTTP-Requests (z.B. durch Tokens in versteckten Formularfeldern) genutzt werden&amp;quot;&lt;br /&gt;
&lt;br /&gt;
Statt &amp;quot;Funktionen&amp;quot; würde ich besser von &amp;quot;schreibenden Aktionen&amp;quot; sprechen, dann macht der Satz mehr Sinn.&lt;br /&gt;
&lt;br /&gt;
; 2. Dritter Absatz: &amp;quot;Im Gegensatz zu XSS (siehe ...￼ ) ist das Angriffsziel nicht die Information auf dem Client (z. B. in Cookies),&amp;quot;&lt;br /&gt;
&lt;br /&gt;
Dieser (Halb-)Satz macht keinen Sinn, auch weil es bei XSS nicht nur im Informationen auf dem Cient geht. Vorschlag: &amp;quot;ist das Angriffsziel nicht die Ausführung von Skriptcode, sondern von unbefugten, schreibenden Aktionen im Kontext des angemeldeten Benutzers.&amp;quot;&lt;br /&gt;
&lt;br /&gt;
; 3. Session Riding&lt;br /&gt;
&lt;br /&gt;
Session Riding ist quasi nur ein anderer Begriff für CSRF. Die einzige Form von CSRF die mir bekannt ist, sind Angriffe mit Standard-Passwörtern auf HTTP-Basic-Auth geschützten Ressourcen.&lt;br /&gt;
&lt;br /&gt;
Im Grunde ist Session Riding aber nur ein Synonym für CSRF. Der Absatz ist daher auch nur eine Wiederholung der obigen Beschreibung.&lt;br /&gt;
&lt;br /&gt;
; 4. Zum Beispiel: &amp;quot;Durch einen präparierten Link auf einer Webseite wird die Änderung des Zugangspasswortes des Routers eingeleitet.&amp;quot;&lt;br /&gt;
&lt;br /&gt;
Etwas ungüngstig ausgedrückt. Besser wäre: &amp;quot;wird eine Anfrage zur Änderung des Zugangspasswortes an den Router gesendet. Hierbei sendet der Browser automatisch den Session Cookie mit, worüber die Webanwendung die Authentizität der Anfrage verifiziert und die Änderung durchführt.&amp;quot;&lt;br /&gt;
&lt;br /&gt;
== G 5.WA18 Clickjacking (Matthias) ==&lt;br /&gt;
&lt;br /&gt;
Hier stellt sich mir nur die allgemeine Frage, ob Clickjacking, bzw. der Schutz davor tatsächlich einem Grundschutz zuzurechnen ist. Persönlich würde ich dies nicht tun.&lt;br /&gt;
&lt;br /&gt;
== M 2.WA02 Dokumentation der Architektur von Web-Anwendungen (Matthias) ==&lt;br /&gt;
&lt;br /&gt;
; Verantwortlich für die Umsetzung&lt;br /&gt;
Hier wäre auch die Nennung des &amp;quot;Architekten&amp;quot; sinnvoll&lt;br /&gt;
 &lt;br /&gt;
; Fehlende Bestandteile der Dokumentation:&lt;br /&gt;
* Schutzbedarf des Systems sowie der verarbeiteten Daten&lt;br /&gt;
* Schützenswerte Daten und Funktionen (Assets)&lt;br /&gt;
* Betriebliche Anforderungen an die Sicherheit bzw. eingesetzte Plattform&lt;br /&gt;
* Dokumentierte Konfigurationseinstellungen &lt;br /&gt;
* BIA (RTO, RPO)&lt;br /&gt;
* Schnittstellen&lt;br /&gt;
* Trust Boundaries&lt;br /&gt;
* Akteure (bzw. Trust Level)&lt;br /&gt;
* Sicherheitsannahmen&lt;br /&gt;
* Geltende Compliance-Anforderungen (BDSG, PCI DSS, etc.)&lt;br /&gt;
&lt;br /&gt;
; Benutzermanagement&lt;br /&gt;
&lt;br /&gt;
Wenn damit das Identity Management gemeint ist, gehört das Dokumentiert, ist aber keine Sicherheitsfunktion. Oder ist hiermit das Rollen- und Berechtigungskonzept gemeint? Grenzt sich aus meiner Sicht schwer mit dem Thema Authentisierung ab. &lt;br /&gt;
&lt;br /&gt;
; Prüffragen&lt;br /&gt;
&lt;br /&gt;
Hier fehlt etwas in Bezug auf Sicherheitsanforderungen. Beispiel: &amp;quot;Werden Sicherheitsanforderungen an den Betrieb während der Entwicklung abgestimmt und dokumentiert&amp;quot;&lt;br /&gt;
&lt;br /&gt;
== M 2.WA12 Entwicklung und Erweiterung von Anwendungen (Markus) ==&lt;br /&gt;
; &amp;quot;Es sollte darauf geachtet werden, dass Sicherheitsanforderungen&lt;br /&gt;
vollständig durch Sicherheitsmechanismen erfüllt und zur Erstellung von&lt;br /&gt;
Testfällen festgehalten werden.&amp;quot; --&amp;gt; Bessere Formulierung würde aussagen, dass die Sicherheitsanforderungen durch Testfälle verifiziert werden.&lt;br /&gt;
&amp;quot;(z. B. durch Kommentare im&lt;br /&gt;
Quelltext). Somit ist der Quelltext zu einem&amp;quot; --&amp;gt; Das ist kein empfehlenswerter Programmierstiel! Raus mit diesem Kommentar&lt;br /&gt;
;&amp;quot;Zum Schutz vor dem Verlust bereits entwickelter und verworfener&lt;br /&gt;
Lösungen sowie zu Dokumentationszwecken sollte die Historie der&lt;br /&gt;
Änderungen festgehalten werden (z. B. durch ein Revisionssystem).&amp;quot; --&amp;gt; Auch diesen Absatz können wir streichen - Kein professioneller Programmierer arbeitet ohne Versionierugssystem.&lt;br /&gt;
;&amp;quot;Bei Web-Anwendung sollten die Webseiten auf Konformität zu dem&lt;br /&gt;
verwendeten Standard (z. B. HTML-Standard) getestet werden. Dadurch&lt;br /&gt;
können unvorgesehene Seiteneffekte aufgrund einer Fehlinterpretation&lt;br /&gt;
seitens der Browser vermieden werden.&amp;quot; --&amp;gt; Könnte man noch um &amp;quot;Die Software ist in möglichst vielen Browsern zu testen&amp;quot; erweitern.&lt;br /&gt;
;Generell geht der Autor leider nicht auf die Rollen &amp;amp; Rechte Verteilung ein. Mir fehlt der Hinweis, das es eine personelle Trennung zwischen Entwicklung, Test und Betrieb geben muss.&lt;br /&gt;
;Zum Thema Wartung / Betrieb --&amp;gt; Hier wird keine Aussage getroffen bezüglich Log_Files. Dieses Thema kann kritische Auswirkungen haben, Bsp.: logging ganzer HTTP-Requests im LogLevel=Debug.&lt;br /&gt;
; &amp;quot;Produktspezifische Sicherheitsfunkionalität&amp;quot; - Dieser Absatz ist gefährlich - der Angreifer ist nicht zur Verwendung dies Zielbrowsers gezwungen. Deshalb können Browser-spez. Sicherheitsfunktionen nur als Add-ON gewertet werden.&lt;br /&gt;
; &amp;quot;Festlegung der Entwicklungsumgebung&amp;quot; - Dieser Absatz geht nicht auf die zu verwendenden Testdaten ein. Der Hinweis, dass Live-Daten / Kundendaten nichts in Test- &amp;amp; Entwicklungsumgebungen zu suchen haben fehlt!!!&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== M 2.WA24 Web-Tracking (Matthias) ==&lt;br /&gt;
&lt;br /&gt;
; Letzter Absatz: &amp;quot;Falls eine Auswertung von Nutzerdaten, insbesondere personenbezogener Daten, .. &amp;quot;&lt;br /&gt;
&lt;br /&gt;
Hier sollte denke ich besser von personenbeziehbaren Daten gesprochen Werten. Dies betrifft etwa die Zuordnung von Surfverhalten zu einer bestimmten Person. Dies sollte stets nach den Prinzipien Datensparsamkeit und Datenvermeidung, Erforderlichkeit, sowie Zweckbindung erfolgen. Ist Webtracking nicht personenbeziehbar ist dies kein Thema für den Datenschutz.&lt;br /&gt;
&lt;br /&gt;
== M 4.WA04 Authentisierung bei Web- Anwendungen (Matthias) ==&lt;br /&gt;
&lt;br /&gt;
; Vermischung von Authentisierung und Session Management &lt;br /&gt;
&lt;br /&gt;
Bei diesem Baustein findet eine ziemlich große Vermischung von Anforderung an die Authentisierung und das erst in &amp;quot;M 4.WA06 Session-Management bei Web- Anwendungen&amp;quot; behandelte Session Management statt (Beispiel: &amp;quot;Remember-Me-Funktion&amp;quot;). Beide Themen sollten sinnvollerweise getrennt voneinander zu betrachten und aufeinander zu beziehen.&lt;br /&gt;
&lt;br /&gt;
; Verwendung von Frameworks&lt;br /&gt;
&lt;br /&gt;
Die Anforderung ist schon ein wenig eingeschränkt. Besser passt hier denke ich die &amp;quot;Abbildung der Authentisierung über Standardkomponenten (Bibliotheken oder Frameworks)&amp;quot;. &lt;br /&gt;
&lt;br /&gt;
; Remember-Me-Funktion&lt;br /&gt;
&lt;br /&gt;
Siehe oben, gehört zum Session Management. Das ließt sich im übrigen so, als ob eine Webanwendung Credentials auf dem Client abhängt. &lt;br /&gt;
&lt;br /&gt;
; Grenzwerte für gescheiterte Anmeldeversuche&lt;br /&gt;
&lt;br /&gt;
Diese Empfehlung ist allgemein falsch, da sie sehr von der betrachteten Anwendung abhängt. Besser wäre hier allgemein von Mechanismen zur Verhinderung von automatisierten Angriffen zu sprechen (Anti-Automatisierung). &lt;br /&gt;
&lt;br /&gt;
Etwa umsetzbar durch&lt;br /&gt;
* Sperrung nach x Anmeldeversuchen&lt;br /&gt;
* Throttling&lt;br /&gt;
* Captchas&lt;br /&gt;
* Sicherheitsfragen&lt;br /&gt;
&lt;br /&gt;
Das allgemeine Sperren kann leicht für das gezielte Aussperren von Benutzern (User Lockout) verwendet werden. Was etwa bei Trading-Anwendungen nicht funktioniert.&lt;br /&gt;
&lt;br /&gt;
; Automatisiertes Zurücksetzen von Authentisierungsdaten&lt;br /&gt;
&lt;br /&gt;
Würde ich besser als &amp;quot;Passwort-Reset&amp;quot; bezeichnen.&lt;br /&gt;
&lt;br /&gt;
Weiterhin fehlt hier der Hinweis, dass statt ein automatisiertes Zurücksetzen, ein Mechanismus zu empfehlen ist, bei dem über ein hinterlegtes Sicherheitsmerkmal (Handy-Nummer oder E-Mail-Adresse) vom Benutzer zunächst eine Verifikation durchgeführt wird. Beispielsweise durch einen erhaltenen Link. Erst dann darf eine Änderung des Passwortes durch den Benutzer erfolgen.&lt;br /&gt;
&lt;br /&gt;
; Registrierung nicht behandelt&lt;br /&gt;
&lt;br /&gt;
Es existiert hier kein Punkt, der die sichere Implementierung von Benutzerregistrierungen behandelt.&lt;br /&gt;
&lt;br /&gt;
; Verweis auf Externalisierung fehlt.&lt;br /&gt;
&lt;br /&gt;
Statt die Authentisierung selbst durchzuführen kann eine Anwendung hierzu auf eine externe Komponente (Beispiel: SiteMinder oder Kerberos) zurückgreifen.&lt;br /&gt;
&lt;br /&gt;
; Verweis auf Behandlung von Credentials fehlt&lt;br /&gt;
&lt;br /&gt;
Auch wenn das  in &amp;quot;M 4.WA15 Schutz vertraulicher Daten bei Web- Anwendungen&amp;quot; ausführlich behandelt wird, sollte in diesem Baustein bereits auf den angemessenen Schutz von Authentisierungsdaten bei Übertragung und Speicherung hingewiesen werden.&lt;br /&gt;
&lt;br /&gt;
== M 4.WA05Umfassende Ein- und Ausgabevalidierung bei Web-Anwedungen (Markus) ==&lt;br /&gt;
; &amp;quot;Ablehnung der Daten im&lt;br /&gt;
Fehlerfall&amp;quot; --&amp;gt; Hier könnte man noch auf Tar-Pits eingehen - nur ein Vorschlag.&lt;br /&gt;
&lt;br /&gt;
== M 4.WA06Session-Management bei Web-Anwendungen (Markus, Matthias) ==&lt;br /&gt;
; &amp;quot;Übertragung der SessionID mittels GETRequest&amp;quot; --&amp;gt; Hier fehlt der Hinweis, dass die Lebensdauer dieser SessionIds kurz/kürzer sein muss, als im Falle der Speicherung im Cookie.&lt;br /&gt;
&lt;br /&gt;
([[User:Mrohr|Matthias]]) Die Anmerkung verstehe ich ehrlich gesagt ueberhaupt nicht, zumal das SM haeufig transparent zwischen Cookies und URL Rewriting wechselt. Wozu soll das gut sein? Wie soll das geschehen? Idealerweise sollte die Session ID niemals in die URL geschrieben werden, das sollte eigentlich genuegen.&lt;br /&gt;
&lt;br /&gt;
; &amp;quot;Verschlüsselte Übertragung von SessionIDs&amp;quot; --&amp;gt; Hier fehlt der Hinweis auf den Beast-Exploit. TLS Version &amp;gt; 1.0 verwenden!&lt;br /&gt;
&lt;br /&gt;
([[User:Mrohr|Matthias]]) Solange hier nicht auf eine explizite TLS Version eingegangen wird, sollte meiner grossen Ueberzeugung nach hier auch auf keine Exploits etc. eingagen werden, das gehoert an andere Stelle.&lt;br /&gt;
&lt;br /&gt;
; ([[User:Mrohr|Matthias]]) Weiterhin:&lt;br /&gt;
&lt;br /&gt;
 Es dürfen keine extern bekannten oder erratbaren Daten (z. B. IP-Adresse, Uhrzeit) in die Berechnung der SessionID einfließen.&lt;br /&gt;
&lt;br /&gt;
Die Aussage finde ich etwas problematisch, wichtiger ist, dass die Entropie ausreichend hoch ist. Haeufig werden etwa IPs von Load Balancern in die Session ID hineingeschrieben.&lt;br /&gt;
&lt;br /&gt;
 - Domain (z. B. webapp.domain.tld),&lt;br /&gt;
 - Path (z. B. /webapp/),&lt;br /&gt;
 - Secure und&lt;br /&gt;
 - HttpOnly.Beschränkte Sitzungsdauer&lt;br /&gt;
&lt;br /&gt;
Das sieht so aus, als ob es empfehlenswert ist, das Domain-Tag zu verwenden, das ist es sicherlich nicht. Was macht hier der Hinweis &amp;quot;Beschraenke Sizuungsdauer&amp;quot;?&lt;br /&gt;
&lt;br /&gt;
== M 4.WA07Fehlerbehandlung durch Web-Anwendungen (Markus) ==&lt;br /&gt;
; Konsistenter / Inkonsistener Zustand einer Webanwendung und der daraus resultierende Datenverlust: Hier fehlen mir die Punkte: DOS, Priv.Escalation, CodeExecution.&lt;br /&gt;
; Vermeidung vertraulicher Informationen in Fehlermeldungen --&amp;gt; Fehlermeldungen sollten ebenfalls eine Systeminformationen preisgeben (Softwareversion, Patchlevel, etc.)&lt;br /&gt;
; Abbruch des Vorgangs nach Auftreten eines Fehlers --&amp;gt; TarPits scheinen dem Autor umbekannt zu sein :)&lt;br /&gt;
; &amp;quot;Werden Fehler möglichst von der gleichen Komponente behandelt, in der&lt;br /&gt;
der Fehler aufgetreten ist?&amp;quot; --&amp;gt; Das &amp;quot;möglichst&amp;quot; sollten wir streichen.&lt;br /&gt;
&lt;br /&gt;
== M 4.WA08Schutz vor automatisierter Nutzung von Web-Anwendungen (Markus) ==&lt;br /&gt;
; &amp;quot;Brute-Force-&lt;br /&gt;
Angriffe (z. B. Erraten von Zugangsdaten) und Enumeration-Angriffe (z. B.&lt;br /&gt;
automatisiertes Ermitteln von gültigen Login-Namen)&amp;quot; -- die Beispiele sind identisch - besser Beispiele suchen, z.b. URL-Enumeration&lt;br /&gt;
&lt;br /&gt;
([[User:Mrohr|Matthias]]) Das sehe ich anders. Brute-Forcing bezieht auf Passwoerter und Enumeration auf Benutzernamen, etwa durchs hochzaehlen. Auch wenn ich zustimmen muss, dass die nicht ganz gluecklich gewaehlt wurden. Stann &amp;quot;Erraten von Zugangsdaten&amp;quot; wuerde ich besser von &amp;quot;Erraten von Passwoertern&amp;quot; sprechen. Oder wie gesagt gleich auch auf andere Beispiele (etwa Object ID Enumeration) beziehen.&lt;br /&gt;
&lt;br /&gt;
== M 4.WA11Sichere Konfiguration von Web-Anwendungen (Markus) ==&lt;br /&gt;
; &amp;quot;Sicherer Umgang mit TLS/SSL&amp;quot; -- Hier fehlt der Hinweis, dass TLS-1.0 gebrochen ist&lt;br /&gt;
; &amp;quot;Zeichenkodierungskonfiguration&amp;quot; -- Ein Whitelisting abhängig von der Encodierung wäre ein weiterer Vorschlag&lt;br /&gt;
; &amp;quot;Restriktive Dateisystemberechtigungen&amp;quot; -- auch wenn es ein klassiker ist - der AS sollte ebenfalls mit von einem eingeschränkten Nutzer gestartet werden und nicht als root&lt;br /&gt;
; Administration Consolen:zur Ergänzen: Wenn diese nicht benötigit, sollten derartige Applikationen nicht deployed werden, unabhängig von möglichen Zugangsbeschränkungen.&lt;br /&gt;
&lt;br /&gt;
([[User:Mrohr|Matthias]]) Sorry, meiner Meinung nach hat die Bewertung von Kryptoverfahren hier abslut nichts zu suchen.Stattdessen sollte hier auf den entsprechenden [https://www.bsi.bund.de/ContentBSI/Publikationen/TechnischeRichtlinien/tr02102/index_htm.html Empfehlung des BSI] verwiesen werden, auch wenn dieses Dokument derzeit noch etwas outdated zu sein scheint.&lt;br /&gt;
&lt;br /&gt;
== M 4.WA13Kontrolliertes Einbinden von Daten und Inhalten bei Web-Anwendungen (Markus) ==&lt;br /&gt;
; Datei-Upload: Bei einem Upload werden Dateien durchaus in TEMP-Verzeichnissen gesammelt und danach weiterverarbeitet. Diese TEMP-Verzeichnisse sind im Rahmen einer Sicherheitsanalyse zu betrachten -&amp;gt; Möglicher (unbefugter) Zugriff auf weitere Uploads&lt;br /&gt;
; Upload komprimierter Dateien / großer Dateien birgt die Gefahr von DOS Angriffen&lt;br /&gt;
; Upload von Dateien kann bei weiterem Parsing zu Speicherengpässen führen --&amp;gt; DOS-Angriffe auf Thread-Local etc.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== M 4.WA14Restriktive Herausgabe sicherheitsrelevanter Informationen bei Web-Anwendungen (Markus, Matthias) ==&lt;br /&gt;
OK - Keine Anmerkungen von mir.&lt;br /&gt;
&lt;br /&gt;
[[User:Mrohr|Matthias]]) Von mir schon;)&lt;br /&gt;
&lt;br /&gt;
; Vermeidung von Kommentaren in ausgelieferten Webseiten&lt;br /&gt;
&lt;br /&gt;
Das ist leider total falsch, wir brauchen haeufig Komentare, aus Kompatibilitaetsgruenden. So wird etwa der JavaScript-Block haeufig auskommentiert.&lt;br /&gt;
&lt;br /&gt;
Wurde stattessen besser von sicherheitsrelevanten Kommentaren sprechen und als Massnahme generell Entwicklerkommentare ueber Sprachkonstruktre (etwa JSP) durchzufuehren.&lt;br /&gt;
&lt;br /&gt;
; Löschen nicht benötigter Dateien&lt;br /&gt;
&lt;br /&gt;
Hier wurde ich ggf. Dateien von Versionisierungstools (etwa Subversion) erwaehnen, das sehen wir schon recht haeufig.&lt;br /&gt;
&lt;br /&gt;
Statt Dateien einfach nur zu loeschen (was in der Praxis haeufig nicht so einfach ist) bietet es sich zudem an, den Zugriff auf bestimmte Dateien oder Dateitypen generell zu sperren, etwa mittels ACL im Apache.&lt;br /&gt;
&lt;br /&gt;
; Gibt die Web-Anwendung ausschließlich neutrale Fehlermeldungen aus und sind diese im Quelltext identisch? {E: C}&lt;br /&gt;
&lt;br /&gt;
Persoenlich verstehe ich das nicht. Wieseo neutrale Fehlermeldung? Das macht fuer mich nur beim Login Sin. Hierzu existiert in dem Text auch keinerlei Bezug. Ich wuerde das daher besser entfernen und im Rahmen der Fehlerbehandlung diskutieren. Mindestens sollte hier jedoch besser von &amp;quot;sicherheitsunbedentlichen Fehlermeldungen&amp;quot; oder so gesprochen werden.&lt;br /&gt;
&lt;br /&gt;
; Wird der Referrer bei Verlassen der Web-Anwendung (z. B. durch einen Link auf eine externe Seite) gefiltert?&lt;br /&gt;
&lt;br /&gt;
Diesen Punkt sehe ich als sehr Fallabhengig an. Es kann fuer seiten durchaus wuenschenswert sein, dass der Referer weitergegeben wird. Der Referer sollte natuerlich keine sensiblen Informationen enthalten, was ja an anderer Stelle (etwa Session Management) vorgegeben wird bzw. gegeben werden sollte.&lt;br /&gt;
&lt;br /&gt;
== M 4.WA15Schutz vertraulicher Daten bei Web-Anwendungen (Markus) ==&lt;br /&gt;
; Sichere kryptographische Algorithmen:&lt;br /&gt;
 Hier fehlt mir eine Liste der aktuelle als sicher geltenden Verfahren.&lt;br /&gt;
; Schlüssel&lt;br /&gt;
 Das die Schlüssel bestimmten Formaten entsprechen müssen ist ok - aber das Schlüsselmanagement wird gar nicht besprochen?&lt;br /&gt;
; Schutz der Daten im Browsercache&lt;br /&gt;
 Skripte und Browserplugins können ebenfalls auf den Browsercache zugreifen - diese werden hier nicht erwähnt.&lt;br /&gt;
; Maskierung von Passwörtern &lt;br /&gt;
 Dies schützt bei der Eingabe nur vor ShoulderSurfing nicht vor Skripten oder Plugins die diese an andere Server posten.&lt;br /&gt;
; Sicherung von Zugangsdaten:&lt;br /&gt;
 Zugangsdaten in einer Datei abzulegen - wenn auch ausserhalb des WebRoots ist keine gute Idee.&lt;br /&gt;
; Schutz von Quelltexten:&lt;br /&gt;
 Hier würde ich property files mit aufnehmen. der hinweis auf web-inf/classes fehlt - warum?&lt;br /&gt;
 Bei include-befehlen sind die pfadangaben zu überdenken.&lt;br /&gt;
&lt;br /&gt;
== M 4.WA16Zugriffskontrolle bei Web-Anwendungen (Markus) ==&lt;br /&gt;
; Zugriffskontrolle via Frameworks:&lt;br /&gt;
 Dieser Punkt (Frameworks) wird nur in einem Satz erwähnt. Es werden keine Bespiele gegeben - Das ist zu wenig.&lt;br /&gt;
 Es müssen alle Zugriffe geschützt werden. Eine Protokollierung aller Zugriffe mit den nötigen Informationen ist ebenfalls empfehlenswert.&lt;br /&gt;
; Datei Upload:&lt;br /&gt;
 Die Gefahr eines DOS wird hier nicht erwähnt.&lt;br /&gt;
&lt;br /&gt;
== M 4.WA19Verhinderung von Cross-Site Request Forgery (CSRF, XSRF) (Markus, Matthias) ==&lt;br /&gt;
; Verantwortliche: &lt;br /&gt;
 Entwickler und Admins!&lt;br /&gt;
([[User:Mrohr|Matthias]]) Korrekt, wobei auch in der Reihenfolge&lt;br /&gt;
&lt;br /&gt;
; Anti-CSRF-Token in hidden fields:&lt;br /&gt;
 Das ist keine gute Idee. Ich würde das streichen!&lt;br /&gt;
&lt;br /&gt;
([[User:Mrohr|Matthias]]) Watt? Anti-CSRF-Tokens in Hidden Fields sind die Standard-Massnahme. Wie denn sonst? Bitte nicht streichen!!! &lt;br /&gt;
&lt;br /&gt;
([[User:Mrohr|Matthias]]) Die Technik bei der die Session ID als Anti-CSRF-Token verwendet wird, wird als Double-Cookie Submit bezeichnet, das sollte hier referenziert werden.&lt;br /&gt;
&lt;br /&gt;
; Umgehung von Schutzmechanismen:&lt;br /&gt;
 Man in the middle hat keinen direkten Bezug zu CSRF! Das würde ich streichen.&lt;br /&gt;
([[User:Mrohr|Matthias]]) Der Hinweis ist korrekt. Wovon der Autor hier spricht ist Session Replay nicht CSRF.&lt;br /&gt;
&lt;br /&gt;
; Frameworks:&lt;br /&gt;
 Gute Idee - aber es gibt auch Features in den ApplicationServern die CSRF unterbinden - warum wird das nicht besprochen?&lt;br /&gt;
&lt;br /&gt;
([[User:Mrohr|Matthias]]) Sehe ich persoenlich nicht so, da CSRF primaer ein Applikations-Fehler ist, und auch in der Applikation und nicht im Environment (AppServer) geloest werden sollte. Auch wenn das manchmal ggf. die einzig machbare Loesung darstellt.&lt;br /&gt;
&lt;br /&gt;
([[User:Mrohr|Matthias]]) Was generell fehlt, ist ein Hinweis darauf, dass schreibende Requests generell per HTTP Post abgewickelt werden sollten, da HTTP Get keine &amp;quot;Safe Method&amp;quot;  (siehe HTTP 1.1, RFC 2616) ist.&lt;br /&gt;
&lt;br /&gt;
== M 4.WA20Sicherer Entwurf der Logik von Web-Anwendungen (Markus) ==&lt;br /&gt;
; Rollbacks:&lt;br /&gt;
 Tritt ein Fehler auf muss die Applikation einen konsistenten Datenstand zurück lassen. Das wird hier nicht erwähnt.&lt;br /&gt;
; RaceConditions:&lt;br /&gt;
 Fehler in der Geschäftslogik können auch durch zwei gleichzeitige Sessions auf einer Webapplikation auftreten - das wird hier nicht besprochen.&lt;br /&gt;
&lt;br /&gt;
== M 4.WA22Verhinderung der Blockade von Ressourcen (DoS) bei Web-Anwendungen (Markus) ==&lt;br /&gt;
; Datenspeicher:&lt;br /&gt;
 Neben dem Datenspeicher sollte auch der RAM-Verbrauch pro Thread der Applikation limitiert werden.&lt;br /&gt;
; Voraggregation von Daten / Caching&lt;br /&gt;
 Dieser Punkt fehlt: Stark ressourcen belastende Anfragen können auch in Lastarmen Zeiten vorberechnet werden.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== M 4.WA25Verhinderung von Clickjacking (Markus) ==&lt;br /&gt;
Ok - das passt soweit.&lt;br /&gt;
&lt;br /&gt;
[[User:Mrohr|Matthias]] Stimmt, auch wenn ich &amp;quot;Angreifer&amp;quot; in dem Beispiel eher als &amp;quot;Webseitenbetreiber&amp;quot; beschreiebn wuerde, da er nicht wirklich aktiv einen Angriff durchfuehrt, oder? Bitte nochmal ueber meinen Hinweis aus G 5.WA18 nachdenken: Ist Clickjacking-Schutz tatsaechlich Grundschutz? Ich bin mir da selber nicht so wirklich sicher.&lt;br /&gt;
&lt;br /&gt;
== M 5.WA21Sichere Anbindung von Hintergrundsystemen an Web-Anwendungen (Markus) ==&lt;br /&gt;
; Verantwortliche:&lt;br /&gt;
 Architekten fehlen. Entwickler müssen die Views umsetzen und die Datasource entsprechend einbinden - die fehlen hier ebenfalls.&lt;br /&gt;
; DirectorySystem Beispiel:&lt;br /&gt;
 Das DirectorySystem wird in dem angegeben Beispiel zum Single Point of Failure - das wird verschwiegen.&lt;br /&gt;
; Firewalls:&lt;br /&gt;
 Das sind fachlich-blinde Systeme. Was ist mit WAFs / IDS / IPS etc.?&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== M 5.WA23Systemarchitektur einer Web-Anwendung (Markus) ==&lt;br /&gt;
; Verantwortliche:&lt;br /&gt;
Auch hier fehlend wieder die Architekten. &lt;br /&gt;
; Virtualisierung:&lt;br /&gt;
Virtualisierung bietet weitere Angriffsvektoren (z.B.: Hypervisor) die eine &amp;quot;Blech&amp;quot;Farm nicht bietet.&lt;/div&gt;</summary>
		<author><name>Mrohr</name></author>	</entry>

	<entry>
		<id>https://wiki.owasp.org/index.php?title=Talk:OWASP_Review_BSI_IT-Grundschutz_Baustein_Webanwendungen&amp;diff=130138</id>
		<title>Talk:OWASP Review BSI IT-Grundschutz Baustein Webanwendungen</title>
		<link rel="alternate" type="text/html" href="https://wiki.owasp.org/index.php?title=Talk:OWASP_Review_BSI_IT-Grundschutz_Baustein_Webanwendungen&amp;diff=130138"/>
				<updated>2012-05-21T07:37:20Z</updated>
		
		<summary type="html">&lt;p&gt;Mrohr: /* M 4.WA25Verhinderung von Clickjacking (Markus) */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Since it's about a review of a document in German, all the discussions will be done in German :-)&lt;br /&gt;
&lt;br /&gt;
Diskussionen rund um den Review des &amp;quot;IT-Grundschutzbausteins Webanwendungen&amp;quot; finden hier statt, sinnvollerweise auf Deutsch :-)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Vorschlag für Kriterien, die an unser Review angelegt werden sollten (.kai) ==&lt;br /&gt;
&lt;br /&gt;
* Der Baustein soll alle wichtigen Themen der Entwicklung sicherer&lt;br /&gt;
Webanwendungen enthalten.&lt;br /&gt;
&lt;br /&gt;
* Der Baustein soll die verschiedenen Phasen der Software-Entwicklung&lt;br /&gt;
vollständig abdecken.&lt;br /&gt;
&lt;br /&gt;
* Der Baustein soll zwischen verbindlichen, prüfbaren Vorgaben und&lt;br /&gt;
unverbindlichen Empfehlungen sprachlich sauber unterscheiden (hier&lt;br /&gt;
spielt mein Auditorenblick eine Rolle). Vor allem soll der Baustein&lt;br /&gt;
verbindliche Anforderungen auch tatsächlich stellen. Alle&lt;br /&gt;
verbindlichen Anforderungen müssen unabhängig von der jeweiligen&lt;br /&gt;
Umgebung auch umsetzbar sein, d.h. sie müssen entsprechend generisch&lt;br /&gt;
sein.&lt;br /&gt;
&lt;br /&gt;
* Die Maßnahmen sollen nur in (begründbaren) Ausnahmen zu Empfehlungen&lt;br /&gt;
von OWASP im Widerspruch stehen.&lt;br /&gt;
&lt;br /&gt;
* Die Maßnahmen sollen verständlich und anwendbar sein.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== &amp;quot;Hilfsmittel&amp;quot; (Markus) ==&lt;br /&gt;
Ich würde das Script zur Vermeidung von Clickjacking wrappen und nicht als losen Skript-block in den Text einbinden - einfach schlechter Programmierstiel diese losen Blöcke.&lt;br /&gt;
Der Zugriff auf das Body-Element mit byTagName-Array[0] ist auch nicht wirklich gut. Ich halte Zugriffe über das DOM (klassisch), bei ID bzw. XPATH für besser. &lt;br /&gt;
&lt;br /&gt;
SQL-Injection Characters:&lt;br /&gt;
die Pipe fehlt hier zur Textkonatenierung&lt;br /&gt;
+ / - haben auch eine Bedeutung bei JOINs.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== &amp;quot;Goldene Regeln&amp;quot; (Matthias) ==&lt;br /&gt;
&lt;br /&gt;
Hier meine Anmerkungen zu diesem Dokument:&lt;br /&gt;
&lt;br /&gt;
; 1. Für mich fehlende Punkte&lt;br /&gt;
* Korrektur der Ursache (Root Cause) von Schwachstellen statt  Verhinderung deren Ausnutzung&lt;br /&gt;
* Bezug auf Minimierung der Angriffsfläche und Least-Privilege-Prinzip&lt;br /&gt;
* Bezug auf Defense-in-Depth-Prinzip&lt;br /&gt;
* Verwendung von getesteten Security APIs (z.B. OWASP ESAPI) statt selbstentwickelter Funktionen&lt;br /&gt;
* Bezug auf Externalisierung von Sicherheitsfunktionen, sowie deklerative vor programmatischer Sicherheit.&lt;br /&gt;
&lt;br /&gt;
; 2. Begriff &amp;quot;Web-Anwendung&amp;quot;&lt;br /&gt;
Würde ich generell durch &amp;quot;Webanwendung&amp;quot; ersetzen.&lt;br /&gt;
&lt;br /&gt;
; 3. Einleitung (&amp;quot;Web-Anwendungen stellen Funktionalität zur Verfügung, ...&amp;quot;)&lt;br /&gt;
&lt;br /&gt;
Wozu dient dieser Satz?&lt;br /&gt;
&lt;br /&gt;
; 4. &amp;quot;Die Architektur der Web-Anwendung ist im Sicherheitskonzept zu  dokumentieren.....&amp;quot; &lt;br /&gt;
&lt;br /&gt;
Ich fände es sinnvoller, wenn hier von der &amp;quot;Sicherheitsarchitektur&amp;quot; gesprochen wird, welche etwa neben den sicherheitsrelevanten Datenflüssen, sensible Komponenten, Entry Points, Akteure architekturelle Security Controls wie Authentisierung, Kryptographie und natürlich die Trust Boundaries beinhaltet.&lt;br /&gt;
&lt;br /&gt;
; 5. &amp;quot;Bei Web-Anwendungen handelt es sich häufig um spezielle Eigenentwicklungen....&amp;quot;&lt;br /&gt;
&lt;br /&gt;
Erstens würde ich hier den geläufigen Begriff &amp;quot;Individualsoftware&amp;quot; verwenden. Zweitens würde ich statt bestimmte SDLC-Phasen vorzugeben (die Begriffe &amp;quot;Softwareverteilung&amp;quot; und &amp;quot;Integration&amp;quot; sind mir bei Webanwendungen bisher noch nicht so häufig untergekommen), besser von der Notwendigkeit sprechen, Sicherheit in allen Entwicklungsphasen zu berücksichtigen, also eines SDLs.&lt;br /&gt;
&lt;br /&gt;
; 6. &amp;quot;Alle Ein- und Ausgaben der Web-Anwendung müssen in eine normalisierte Form überführt werden....&amp;quot;&lt;br /&gt;
&lt;br /&gt;
Normalisierung ist für mich nicht gleich Kanonsierung, auch wenn beide Begriffe häufig als synonym verwendet werden.  Der Unterschied wird in der [http://owasp-esapi-java.googlecode.com/svn/trunk_doc/2.0-rc4/org/owasp/esapi/Encoder.html API-Beschreibung der ESAPI] erklärt. Die Normalisierungs-Funktion ist allerdings schon vor einiger Zeit aus der ESAPI [https://lists.owasp.org/pipermail/esapi-dev/2010-January/000266.html rausgeflogen]. Die generelle Kanonisierung von Ausgaben halte ich dazu für nicht sinnvoll.&lt;br /&gt;
&lt;br /&gt;
Zweitens, finde ich den weiteren Text zwar grundsätzlich formal korrekt, aber so allgemein, dass dieser glaube ich niemandem so richtig etwas bringt.  &lt;br /&gt;
&lt;br /&gt;
Besser fände ich hier Ein- von Ausgabevalidierung grundsätzlich voneinander abzugrenzen. Etwa was ich per Eingabevalidierung (Längenprüfung, Casting, etc. per Whitelisting) und was mit Ausgebavalidierung (Enkodierung, Escaping, Parametrisierung) machen muss und kann.&lt;br /&gt;
&lt;br /&gt;
Eingabedaten können technisch zudem auch Werte eingelesener Property-Dateien sein. Muss ich die auch validieren? Ist das dann noch Grundschutz? &lt;br /&gt;
&lt;br /&gt;
; 7. &amp;quot;Für den Zugriff auf sensitive Funktionen oder Informationen muss die Web-Anwendung eine wirksame Authentisierung und Sitzungsverwaltung unterstützen. Die Eigenschaften der Sitzungs-ID müssen so gewählt werden, dass die Sitzung ausreichend geschützt ist. ....&amp;quot;&lt;br /&gt;
&lt;br /&gt;
Besser fände ich &amp;quot;eine Authentisierung, die über eine dem Schutzbedarf der Anwendung angemessene Stärke verfügt.&amp;quot; &lt;br /&gt;
&lt;br /&gt;
Eigentlich geht es doch mehr um den Schutz der Sitzungs-ID, da diese gewöhnlich im Verlauf einer Sitzung den Client authentisiert. Oder den Schutz des Zugriffs auf eine Sitzung. &lt;br /&gt;
&lt;br /&gt;
Zudem fehlt hier meiner Meinung nach der Hinweis auf die bevorzugte Verwendung getesteter Standardkomponenten.&lt;br /&gt;
&lt;br /&gt;
; 8. &amp;quot;Die Web-Anwendung sollte die zu übermittelnden Daten schützen.&amp;quot;&lt;br /&gt;
&lt;br /&gt;
Dies würde ich nur auf sensible Daten beziehen. Zusätzlich zu HTTPS würde ich hier schreiben, dass sensible Daten generell nicht in der URL übertragen werden dürfen.&lt;br /&gt;
&lt;br /&gt;
; 9. &amp;quot;Die Preisgabe interner Informationen (z.B. Kommentare, Fehlermeldungen)&amp;quot;&lt;br /&gt;
&lt;br /&gt;
Hier würde ich eher schreiben &amp;quot;(IN Kommentaren, Fehlermeldungen, HTTP Headern, etc.)&amp;quot;&lt;br /&gt;
&lt;br /&gt;
; 10. &amp;quot;Fehler müssen so behandelt werden, ... müssen Fehler bei der Autorisierung zu einer Verweigerung beim Zugriff auf die angeforderte Ressource führen.&amp;quot;&lt;br /&gt;
&lt;br /&gt;
Sprachlich: &amp;quot;Die Webanwendung muss sich stets in einem sicheren Zustand befinden. Beispielsweise müssen Fehler bei der Autorisierung zu einer Verweigerung des Zugriffs führen (Default-Deny-Strategie).&amp;quot;&lt;br /&gt;
&lt;br /&gt;
; 11. &amp;quot;Die Logging-Funktionen der Web-Anwendung müssen aufgetretene Ereignisse derart protokollieren, dass sicherheitskritische Vorfälle nachvollzogen werden können.&amp;quot;&lt;br /&gt;
&lt;br /&gt;
Hier würde hier eher von &amp;quot;allen sicherheitsrelevanten Ereignissen&amp;quot; sprechen.&lt;br /&gt;
&lt;br /&gt;
Weiterhin sollten insbesondere beim Logging der Datenschutz berücksichtigt werden, personenbezogene Daten also nach Möglichkeit nicht oder nur anonymisiert in technischen Logdateien protokolliert werden.&lt;br /&gt;
&lt;br /&gt;
; 12. &amp;quot;Alle Sicherheitsmechanismen (z.B. Authentisierung und Zugriffskontrolle) sind serverseitig zu implementieren und können nicht durch clientseitige Mechanismen ersetzt werden.&amp;quot;&lt;br /&gt;
&lt;br /&gt;
Die Aussage ist so nicht korrekt. Darüber hatten wir bereits bei der ASVS mehrfach diskutiert. &lt;br /&gt;
&lt;br /&gt;
Überall dort wo der Client angegriffen wird, also etwa bei RIAs (Stichwort DOM-Based XSS) müssen wir Security Controls clientseitig implementieren. Es gibt mittlerweile deshalb auch eine Portierung der ESAPI auf Javascript. Überall dort wo der Server oder Hintegrundsysteme angegriffen werden, ist die Aussage aber natürlich zutreffend.&lt;br /&gt;
&lt;br /&gt;
== &amp;quot;Gefährdungen&amp;quot; (Markus, Dennis, .... &amp;lt;Dein Name&amp;gt;) ==&lt;br /&gt;
; Generell:&lt;br /&gt;
Reference auf RFCs fehlen.&lt;br /&gt;
&lt;br /&gt;
==B.5.XX Web-Anwendungen ==&lt;br /&gt;
; 1. Erster Absatz - Letzter Satz: --Wieso werden hier nur HTML/XML Doks und Oberflächen angesprochen? Was ist der Unterschied zwischen einem HTML-Dok und einer Oberfläche? Was ist mit  Flash, etc.? Was ist mit WebSockets?&lt;br /&gt;
; 2. Stichpunkt &amp;quot;Protokollierung&amp;quot;: Sicherheits relevant ist ein sehr dehnbarer Begriff - Eine bessere Formulierung könnte sein: Zur Rekonstruktion von Nutzerhandlungen nötige Ereignisse (positve &amp;amp; negative) müssen protokolliert werden . . . &lt;br /&gt;
; 3. Absatz: &amp;quot;Abgrenzung des Bausteins&amp;quot;: &amp;quot;Die spez. Sicherheitsanforderungen an Web-Services werden in diesem Baustein nicht betrachtet&amp;quot; --&amp;gt; Wie so nicht? Was ist das Backend von einer Rest / AJAX-basierenden Webanwendung denn anderes als ein Web-Service? Diesen Satz würde ich entfernen.&lt;br /&gt;
; 4.Vorsätzliche Handlungen -&amp;gt; Web-Spoofing (G.5.87) -- Missverständliche Bezeichnung / Nomenklatur&lt;br /&gt;
; 5. Seite 4 : erste Zeile &amp;quot;Umsetzung&amp;quot;: &amp;quot;dafür umzusetztende Komponenten müssen die Webanwendung schützen...&amp;quot; - Hier fehlt mir der Hinweis, dass dieser Schutz verifiziert werden muss.&lt;br /&gt;
; 6 Seite 5: &amp;quot;Umsetzung&amp;quot; - Wir haben CSRF, D(D)os und SQL-Injection aber wo ist XSS?&lt;br /&gt;
; 7 Seite 7: &amp;quot;Die Sicherheitsfunktion wird ausschließlich clientseitig...&amp;quot; --&amp;gt; Warum muss der Angreifer überhaupt einen Browser umkonfigurieren? Was ist mit Proxies, Scripts, etc.? Ich würde das reduzieren darauf, dass rein Webbrowser-basierende Schutzfunktionen einfach umgangen werden können.&lt;br /&gt;
; 8 Seite 8: Die angesprochenen Punkte hinterlassen den Eindruck nicht vollständig zu sein: Mir fehlen Punkte wie &amp;quot;Outsourcing&amp;quot;, &amp;quot;KnowHow der Entwickler&amp;quot;, Tooling, Framework-Auswahl, etc.&lt;br /&gt;
; 9 Seite 9: Eigentlich möchte der Autor hier über Datenschutz sprechen. Abgesehen von den letzten drei Zeilen geht es aber nur um &amp;quot;User tracking&amp;quot; - Wo ist der Rest der Datenschutzproblematik? Warum der Fokuss auf Tracking? Mir ist das zu einseitig.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
tbd.&lt;br /&gt;
&lt;br /&gt;
; Wortwahl:&lt;br /&gt;
Ich stosse innerhalb der Texte immer wieder an die Worten '''Hintergrundsystem''' und '''Sicherheitskontext'''.&lt;br /&gt;
'''Hintergrundsystem:''' besseres Synonym?&lt;br /&gt;
'''Sicherheitskontext:''' nur weil es in den Texten um Sicherheit geht muss nicht an jeder Stelle immer wieder das Wort _Sicherheits_kontext eingebaut werden.&lt;br /&gt;
Bsp: &amp;quot;Erlangt ein Angreifer Kenntnis von einer solchen gültigen, aber nicht mehr genutzten SessionID, so kann er die Web-Anwendung im Sicherheitskontext des nicht abgemeldeten Benutzers weiter verwenden.&amp;quot; (G 5,WA12 Unzureichendes Session-Management von Web-Anwendungen)&lt;br /&gt;
Verbesserungsansansatz: ... so kann er die Web-Anwendung anstelle des eigentlichen Besitzers weiterhin verwenden.&lt;br /&gt;
&lt;br /&gt;
== &amp;quot;G 2.WA01 Mangelhafte Auswahl oder Konzeption von Web-Anwendungen&amp;quot; (Matthias) ==&lt;br /&gt;
&lt;br /&gt;
Nachdem ich mir diese Gefährdung durchgelesen hatte, fehlten mir ehrlich gesagt etwas die Worte. Nicht nur, dass hier fast jeder zweite Satz entweder falsch ist bzw. massive Fehler enthält oder ich diesen schlicht nicht verstehe, ist der ganze Text sprachlich wirklich enorm verbesserungsfähig. &lt;br /&gt;
&lt;br /&gt;
Na gut, ich konzentriere mich mal auf die fachlichen Punkte:&lt;br /&gt;
&lt;br /&gt;
; 1. Security Controls&lt;br /&gt;
Werden mal mit &amp;quot;Schutzmechanismen&amp;quot;, mal mit &amp;quot;Sicherheitskomponenten&amp;quot; und dann wieder als &amp;quot;Sicherheitsfunktionen&amp;quot; bezeichnet. Hier macht eine einheitliche Benennung sicherlich Sinn und ist weniger verwirrend.&lt;br /&gt;
&lt;br /&gt;
; 2. &amp;quot;Eine Web-Anwendung ist in der Regel ein verteiltes, komplexes System bestehend aus unterschiedlichen Komponenten (z. B. Webserver, Applikationsserver, Hintergrundsysteme)&amp;quot;&lt;br /&gt;
&lt;br /&gt;
Eine Webanwendung besteht sicher nicht aus einem Webserver- oder anderer infrastruktureller Komponenten, sondern ist Software welches diese nutzt.&lt;br /&gt;
&lt;br /&gt;
; 3. &amp;quot;Bei individuell entwickelten Web-Anwendungen sind im Allgemeinen die Frameworks, Komponenten und Schnittstellen im Rahmen der Konzeption auszuwählen und deren Einbindung und Absicherung zu betrachten....Im Gegensatz dazu ist bei der Konzeption von Web-Anwendungen auf Basis von Standardsoftware insbesondere auf die Auswahl der Software und die Konfiguration der Teilkomponenten zu achten&amp;quot;&lt;br /&gt;
&lt;br /&gt;
Wir unterscheiden im Rahmen von Webanwendungen eigentlich Free or Opensource Software (FOSS bzw. FLOSS), Standardsoftware und Individualsoftware voneinander. Wir unterscheiden nicht Frameworks von Standardsoftware. Frameworks können Teil von Standardsoftware sein, wie etwa bei SharePoint, SAP, etc, oder aber FOSS, wie etwa Spring. Die ganzen Absätze machen für mich daher keinen Sinn.&lt;br /&gt;
&lt;br /&gt;
; 4. &amp;quot;Eine Sicherheitsfunktion (z. B. Authentisierung, Autorisierung) wird nicht an einer Stelle umgesetzt und verwendet, sondern ist mehrfach in der Web- Anwendung realisiert. Wird diese Sicherheitsfunktion an den verschiedenen Stellen unterschiedlich umgesetzt, führt dies zu einem uneinheitlichen Sicherheitsniveau.&amp;quot;&lt;br /&gt;
&lt;br /&gt;
Natürlich ist die mehrfache Verwendung bestimmter Security Controls, beispielsweise von Zugriffskontrollen (Complete-Mediation) oder Validierung (Robustheit) erstrebenswert. Was der Autor hier wahrscheinlich meinte, war die Notwendigkeit diese zu Kapseln bzw. zu Externalisieren. Das bezieht sich im übrigen nicht nur auf die Controls selbst, sondern auch auf ihre Parametrisierung (etwa. über Konfigdateien / XACML).&lt;br /&gt;
&lt;br /&gt;
Wichtiger wäre in diesem Zusammenhang zudem die fehlende Berücksichtigung bestimmter Security Controls.&lt;br /&gt;
&lt;br /&gt;
; 5. &amp;quot;Auswahl von Web-Anwendungen auf Basis von Standardsoftware&amp;quot;&lt;br /&gt;
Was will der Satz sagen? Ich wähle Standardsoftware aus, aber doch keine Webanwendungen. Oder heißt das, ich kaufe eine existierende Anwendung ein (Webanwendung!=Indivudualsoftware)? &lt;br /&gt;
&lt;br /&gt;
; 6. &amp;quot;Das ausgewählte Produkt verfügt nicht über die ausreichende Sicherheitsfunktionalität, ... Daher müssen die notwendigen Schutzmechanismen nachträglich hinzugefügt werden, wodurch zusätzliche Aufwände entstehen.&amp;quot;&lt;br /&gt;
Das ist etwas sehr positiv formuliert. Tatsächlich können fehlende Security Controls in zugekaufter Software (insb. Standardsoftware) in der Realität häufig gar nicht hinzugefügt werden oder nur perimetrisch (z.B. per WAF oder Access Gateway).&lt;br /&gt;
&lt;br /&gt;
; 7. &amp;quot;Die Hintergrundsysteme werden unzureichend abgesichert und dadurch ist die Datenbank der Web-Anwendung aus dem Internet erreichbar.&amp;quot;&lt;br /&gt;
Gehören fehlende Netzwerksegmentierung bzw. Firewallregeln wirklich in diesen Kontext? Das ist doch eigentlich Grundschutz der Infrastruktur, oder?&lt;br /&gt;
&lt;br /&gt;
; 8. &amp;quot;Aufgrund schwacher Parameter in der Konfiguration des Frameworks zum Session-Management werden unsichere SessionIDs erzeugt.&amp;quot;&lt;br /&gt;
Was sind &amp;quot;schwache&amp;quot; Parameter?&lt;br /&gt;
&lt;br /&gt;
Welches Framework erlaubt unsichere SessionIDs durch eine &amp;quot;schwache&amp;quot; Konfiguration zu erzeugen?&lt;br /&gt;
&lt;br /&gt;
; 9. &amp;quot;Wird die Konfiguration des Web-Browsers durch einen Angreifer manipuliert, können die clientseitig umgesetzten&amp;quot;&lt;br /&gt;
&lt;br /&gt;
Manipuliert ein Angreifer die Konfguration seines Webbroswers, wenn er einen MITM-Proxy konfiguriert?&lt;br /&gt;
&lt;br /&gt;
Wie bereits bei den &amp;quot;Goldenen Regeln&amp;quot; angemerkt, gilt auch hier, das manche Security Controls auch clientseitig umgesetzt werden dürfen (etwa. zur Verhinderung von Dom-Based XSS).&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== &amp;quot;G 5.WA10 Fehler in der Web-Anwendungslogik&amp;quot; (Dennis) ==&lt;br /&gt;
; 1. &amp;quot;Damit kann aufgrund der Prüfreihenfolge ein hoher Ressourcenverbrauch provoziert werden, der für Denial-of-Service-Angriffe ausgenutzt werden kann.&amp;quot;&lt;br /&gt;
Meiner Meinung nach passt in diesem Kontext die Attacke DoS nicht ganz. Falls die nachfolgende Funktionalität wegen der langen Ausführungszeit der Filterkomponente übersprungen wird bzw. ein Fehler auftritt würde dies meiner Ansicht in die Thematik Anwendungslogik passen. Eine DoS-Attacke kann hingegen anhand jeder Funktion durchgeführt werden.&lt;br /&gt;
&lt;br /&gt;
== &amp;quot;G 5.WA11 Umgehung clientseitig umgesetzter Sicherheitsfunktionen von Web-Anwendungen&amp;quot; (Dennis) ==&lt;br /&gt;
; 1. &amp;quot;Ein Angreifer kann diese ausnutzen, um beispielsweise unbefugt Befehle an Hintergrundsysteme der Web-Anwendung zu übermittlen (z.B. in Form von Datenbankanfragen bei einer SQL-Injection).&amp;quot;&lt;br /&gt;
Umformulierung des Inhalts der Klammer. Hatte beim ersten Lesen für mich den Anschein, als ob ein Formular genutzt werden könnte welches den Nutzer aufforder eine SQLI einzugeben. Ich denke &amp;quot;Datenbankanfrage zwecks Ausführung einer SQL-Injection&amp;quot; würde besser passen.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== G 2.WA02 Mängel bei der Entwicklung und der Erweiterung von Web-Anwendungen (Matthias) ==&lt;br /&gt;
&lt;br /&gt;
Allgemein ist de obere Teil ok, die aufgezählten &amp;quot;Auswirkungen von fehlenden Vorgaben&amp;quot; verstehe ich jedoch nicht. Wo ist etwa der Bezug von Barrierefreiheit auf die Anwendungssicherheit?&lt;br /&gt;
&lt;br /&gt;
Mein Vorschlag, um diese Punkte etwa sinnvoll umzubauen:&lt;br /&gt;
* &amp;quot;Fehlendes Vorgehensmodell&amp;quot;: Bezug auf fehlende Berücksichtigung von Sicherheit im SDLC. Statt eines SDLCs selbst sollte hier besser auf die Notwendigkeit eines Secure Development Lifecycle (SDL) hingewiesen werden&lt;br /&gt;
* &amp;quot;Fehlende Programmierrichtlinien&amp;quot; =&amp;gt; Besser wäre hier &amp;quot;Fehlende Sicherheitsrichtlinien in der Programmierung&amp;quot; also &amp;quot;Secure Coding Guidelines&amp;quot;&lt;br /&gt;
* &amp;quot;Testfälle&amp;quot; =&amp;gt; &amp;quot;Sicherheitsrelevante Testfälle&amp;quot; (z.B. Security Unit Tests). &lt;br /&gt;
* &amp;quot;Barrierefreiheit&amp;quot;: Warum nicht an dieser Stelle die Auswirkungen von Sicherheitsfunktionen auf die Bedienbarkeit, etwa anhand von CAPTCHAS erläutern?&lt;br /&gt;
&lt;br /&gt;
== G 2.WA03 Unzureichender Schutz personenbezogener Daten bei Web-Anwendungen (Matthias) ==&lt;br /&gt;
&lt;br /&gt;
Der Titel dieses Bausteines heißt &amp;quot;Schutz personenbezogener Daten&amp;quot;, die genannten Beispiele beziehen sich bis auf den letzten jedoch auf die missbräuchliche (oder zumindest problematische) Nutzung aus Sicht des Datenschutzes. &lt;br /&gt;
&lt;br /&gt;
Die Punkt 1-3 sollten daher besser entfallen und z.B. durch die Folgenden ersetzt werden:&lt;br /&gt;
* Unsichere Einbindung von sozialen Netzwerken (Bezug nehmen auf den Like-Button bei Facebook)&lt;br /&gt;
* Unsichere Einbindung von Werbeinhalten&lt;br /&gt;
* Unsichere Übertragung und Caching&lt;br /&gt;
* Unsichere Protokollierung&lt;br /&gt;
* Ungenügender Zugriffsschutz&lt;br /&gt;
* Verstoß des Minimalprinzips bzw. der Zweckgebundenheit (welche Daten werden wirklich benötigt)&lt;br /&gt;
&lt;br /&gt;
Auch wäre es ggf. zumindest einen Verweis auf das BDSG zu machen.&lt;br /&gt;
&lt;br /&gt;
== G 4.33 Unzureichende oder fehlende Authentisierung (Matthias) ==&lt;br /&gt;
&lt;br /&gt;
; 1. Erster Absatz: &amp;quot;Wenn Authentisierungsmechanismen fehlen oder zu schlecht sind&amp;quot;&lt;br /&gt;
&lt;br /&gt;
&amp;quot;schlecht&amp;quot; sollte vlt besser durch &amp;quot;unzureichend&amp;quot; ersetzt werden.&lt;br /&gt;
&lt;br /&gt;
; 2. &amp;quot;Sicherheitslücken entstehen bei... der Benutzerauthentisierung&amp;quot;&lt;br /&gt;
&lt;br /&gt;
Hier findet nur ein Bezug auf &amp;quot;Passwörter&amp;quot; statt. Der Bezug auf die fehlerhaft implementierte oder dem Schutzbedarf ungenügende Schutzmechanismen (z.B. keine 2-Faktor-Authentisierung bei hochsensiblen Daten) fehlt. Auch auf das komplette fehlen von Authentisierungs-Controls wird hier nicht  eingegangen&lt;br /&gt;
&lt;br /&gt;
; 3. &amp;quot;Sicherheitslücken entstehen bei... der Komponentenauthentisierung&amp;quot;&lt;br /&gt;
&lt;br /&gt;
Wie bei 2., wird auch hier wieder nur auf Passwörter, nicht jedoch auf das fehlen von Controls selbst eingegangen. An dieser Stelle fehlt auch ein Hinweis auf die Notwendigkeit dedizierter Benutzeraccounts.&lt;br /&gt;
&lt;br /&gt;
; 4. &amp;quot;Sicherheitslücken entstehen bei... der Wahl des Verfahrens&amp;quot;&lt;br /&gt;
&lt;br /&gt;
Statt untauglich würde ich auch hier von &amp;quot;dem Schutzbedarf der Daten nicht angemessen&amp;quot; sprechen, eigentlich gehört das für mich aber in die obigen Punkte.&lt;br /&gt;
&lt;br /&gt;
; 5. Serverseitige Authentisierung fehlt&lt;br /&gt;
&lt;br /&gt;
Auch der Server (bzw. die Anwendung selbst) kann sich fehlerhaft oder ungenügend beim Benutzer authentsieren, etwa über DNS, SSL-Zertifikate, etc.&lt;br /&gt;
&lt;br /&gt;
== G 4.WA04 Unzureichende Validierung von Ein- und Ausgabedaten bei Web-Anwendungen (Matthias) ==&lt;br /&gt;
&lt;br /&gt;
; 1. &amp;quot;Unzureichende Validierung von Eingabedaten&amp;quot;&lt;br /&gt;
&lt;br /&gt;
Die genannten Beispiele sind genau keine korrekten Beispiele für diesen Fall, sondern betreffen die Ausgabevalidierung bzw. Enkodierung. Typische Fehler der Eingabevalidierung ist eine Manipulierbarkeit der Business Logik.&lt;br /&gt;
&lt;br /&gt;
; 2. &amp;quot;Unzureichende Validierung von Ausgabedaten&amp;quot;&lt;br /&gt;
&lt;br /&gt;
Hier geht es zentral um die Verhinderung von Interpreter Injection, also serverseitig (z.B. SQL oder LDAP Injection) oder clientseitig (XSS, JSON Injection, etc.). Statt &amp;quot;können die Ausgaben Schadcode&amp;quot; enthalten würde ich hier eher davon Sprechen, dass ein solcher Interpreteraufruf manipuliert werden kann (was dann z.B. zur Einschleusung von Schadcode genutzt werden kann).&lt;br /&gt;
&lt;br /&gt;
; 3. &amp;quot;Die Suchfunktion der Web-Anwendung verwendet die Eingaben der Benutzer ungefiltert&amp;quot;&lt;br /&gt;
&lt;br /&gt;
Mit ungenügender &amp;quot;Filterung&amp;quot; hat SQL Injection nichts zu tun,  eigentlich geht es hierbei darum, dass SQL-Anfragen dynamisch mit unvalidierten Eingebedaten zusammengebaut (konkateniert) werden.&lt;br /&gt;
&lt;br /&gt;
; 4. &amp;quot;Ungefilterter HTML-Code in Kommentar-Funktion&amp;quot;&lt;br /&gt;
&lt;br /&gt;
Hier fehlt der Bezug auf persistentes XSS, das hier sicherlich zentral ist.&lt;br /&gt;
&lt;br /&gt;
== G 4.WA05 Fehlende oder mangelhafte Fehlerbehandlung durch Web-Anwendungen (Tobias, Matthias) ==&lt;br /&gt;
; Abschnitt &amp;quot;Unsichere Fehlerbehandlung&amp;quot;&lt;br /&gt;
Die G adressiert &amp;quot;Unsichere Fehlerbehandlung&amp;quot;, der Abschnitt die &amp;quot;Unsichere Fehlerbehandlung in Sicherheitskomponenten&amp;quot;. Entsprechend sollte der fettgedruckte Teil angepasst werden.&lt;br /&gt;
&lt;br /&gt;
; &amp;quot;fehlende SQL-Parameter,&amp;quot;&lt;br /&gt;
Sollte besser &amp;quot;Fehlermeldungen bei ungültigen SQL-Abfragen&amp;quot; lauten.&lt;br /&gt;
&lt;br /&gt;
; &amp;quot;Auch scheinbar unkritische Informationen, wie die Meldung ob (..)&amp;quot;&lt;br /&gt;
Korrekt, allerdings nicht nachvollziehbar, wenn das Problem der Leser nicht schon bekannt ist. Daher erweitern nach &amp;quot; Rahmen von Brute-Force-Angriffen ausgenutzt werden.&amp;quot; mit &amp;quot;. Bei Brute-Force-Angriffen wäre in diesem Fall klar, dass der Benutzername gültig ist.&amp;quot;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[User:Mrohr|Matthias]]): Stimme dem Obigen auch zu, ausserdem:&lt;br /&gt;
&lt;br /&gt;
; Sprachlich: &amp;quot;kann dies unvorhersehbare Auswirkungen haben und den Betrieb der Web-Anwendung bis zur Unerreichbarkeit einschränken.&amp;quot;&lt;br /&gt;
&lt;br /&gt;
&amp;quot;Unerreichbarkeit&amp;quot; ist etas merkwuerdig ausgedrueckt, besser ware hier von der &amp;quot;Verfuegbarkeit&amp;quot; zu sprechen. Im Uebrigen fehlt vollstaendig der Bezug auf die Verfuegbarkeit als Primaeres Schutzziel der Informationssicherheit.&lt;br /&gt;
&lt;br /&gt;
; &amp;quot;Clientseitige Fehlerbehandlung&amp;quot;&lt;br /&gt;
Das stimmt soweit, das generelle Problem ist jedoch genereller, naehmlich die clientseitige Abbildung sicherheitsrelaventer Logik (in diesem Fall die Fehlerbehandlung)&lt;br /&gt;
&lt;br /&gt;
== G 4.WA06 Unzureichende Nachvollziehbarkeit von sicherheitsrelevanten Ereignissen bei Web-Anwendungen (Matthias) ==&lt;br /&gt;
&lt;br /&gt;
; 1. Erster Absatz: &amp;quot;Die Behebung einer Schwachstelle ist dann nicht oder nur unter erschwerten Bedingungen möglich.&amp;quot;&lt;br /&gt;
&lt;br /&gt;
Hier würde ich ergänzen: &amp;quot;...und Angriffe auf die Anwendungen können ggf. nicht erkannt oder nachvollzogen werden&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
; 2. &amp;quot;Beispiele&amp;quot;: Kommulierbarkeit&lt;br /&gt;
&lt;br /&gt;
Hier fehlt auch ein Bezug auf die Kommulierbarkeit von SIcherheitsereignissen, dass diese also auch von solchen anderer Systeme in Verbindung gesetzt werden können&lt;br /&gt;
&lt;br /&gt;
; 3. &amp;quot;Beispiele&amp;quot;: Gerichtsverwertbarkeit&lt;br /&gt;
&lt;br /&gt;
Auch die Möglichkeit zur Gerichtsverwertbarkeit (etwa durch eindeutigen Zeitstempel) und manipulationssicherer Speicherung, würde ich an dieser Stelle unbedingt erwähnen.&lt;br /&gt;
&lt;br /&gt;
== G 4.WA07 Offenlegung von Informationen bei Web-Anwendungen (Matthias) ==&lt;br /&gt;
&lt;br /&gt;
; 1. Titel&lt;br /&gt;
&lt;br /&gt;
Hier würde ggf. &amp;quot;Offenlegung vertraulicher Informationen&amp;quot; sicher besser passen als &amp;quot;Offenlegung von Informationen&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
; 2. Beispiellink&lt;br /&gt;
&lt;br /&gt;
Ein Beispiellink (mit und ohne Token) würde sicher die Verständlichkeit dieser Schwachstelle verbessern.&lt;br /&gt;
&lt;br /&gt;
; 3. Erster Absatz: &amp;quot;Wenn demzufolge Informationen unnötig offengelegt werden, steigt die Wahrscheinlichkeit eines erfolgreichen Angriffs.&amp;quot;&lt;br /&gt;
&lt;br /&gt;
Interne Informationen auszublenden ist eine Härtungsmaßnahme, deren Anzeige erhöht aber nicht zwangsläufig die Wahrscheinlichkeit eines erfolgreichen Angriffs. Ich würde diesen Satz weglassen.&lt;br /&gt;
&lt;br /&gt;
 ; 4. Fehlende Punkte&lt;br /&gt;
&lt;br /&gt;
* Ein Hinweis auf HTTP Header wäre hier sicher erwähnenswert.&lt;br /&gt;
* Weiterhin bzgl. der Anzeige von Traces und ein Verweis auf den Entsprechenden Baustein zur Fehlerbehandlung&lt;br /&gt;
&lt;br /&gt;
== G 5.WA14 Cross-Site Request Forgery (CSRF, XSRF) (Matthias) ==&lt;br /&gt;
&lt;br /&gt;
; 1. Erster Absatz: &amp;quot;Können Funktionen einer Web-Anwendung ohne weitere Überprüfung der Authentizität des HTTP-Requests (z.B. durch Tokens in versteckten Formularfeldern) genutzt werden&amp;quot;&lt;br /&gt;
&lt;br /&gt;
Statt &amp;quot;Funktionen&amp;quot; würde ich besser von &amp;quot;schreibenden Aktionen&amp;quot; sprechen, dann macht der Satz mehr Sinn.&lt;br /&gt;
&lt;br /&gt;
; 2. Dritter Absatz: &amp;quot;Im Gegensatz zu XSS (siehe ...￼ ) ist das Angriffsziel nicht die Information auf dem Client (z. B. in Cookies),&amp;quot;&lt;br /&gt;
&lt;br /&gt;
Dieser (Halb-)Satz macht keinen Sinn, auch weil es bei XSS nicht nur im Informationen auf dem Cient geht. Vorschlag: &amp;quot;ist das Angriffsziel nicht die Ausführung von Skriptcode, sondern von unbefugten, schreibenden Aktionen im Kontext des angemeldeten Benutzers.&amp;quot;&lt;br /&gt;
&lt;br /&gt;
; 3. Session Riding&lt;br /&gt;
&lt;br /&gt;
Session Riding ist quasi nur ein anderer Begriff für CSRF. Die einzige Form von CSRF die mir bekannt ist, sind Angriffe mit Standard-Passwörtern auf HTTP-Basic-Auth geschützten Ressourcen.&lt;br /&gt;
&lt;br /&gt;
Im Grunde ist Session Riding aber nur ein Synonym für CSRF. Der Absatz ist daher auch nur eine Wiederholung der obigen Beschreibung.&lt;br /&gt;
&lt;br /&gt;
; 4. Zum Beispiel: &amp;quot;Durch einen präparierten Link auf einer Webseite wird die Änderung des Zugangspasswortes des Routers eingeleitet.&amp;quot;&lt;br /&gt;
&lt;br /&gt;
Etwas ungüngstig ausgedrückt. Besser wäre: &amp;quot;wird eine Anfrage zur Änderung des Zugangspasswortes an den Router gesendet. Hierbei sendet der Browser automatisch den Session Cookie mit, worüber die Webanwendung die Authentizität der Anfrage verifiziert und die Änderung durchführt.&amp;quot;&lt;br /&gt;
&lt;br /&gt;
== G 5.WA18 Clickjacking (Matthias) ==&lt;br /&gt;
&lt;br /&gt;
Hier stellt sich mir nur die allgemeine Frage, ob Clickjacking, bzw. der Schutz davor tatsächlich einem Grundschutz zuzurechnen ist. Persönlich würde ich dies nicht tun.&lt;br /&gt;
&lt;br /&gt;
== M 2.WA02 Dokumentation der Architektur von Web-Anwendungen (Matthias) ==&lt;br /&gt;
&lt;br /&gt;
; Verantwortlich für die Umsetzung&lt;br /&gt;
Hier wäre auch die Nennung des &amp;quot;Architekten&amp;quot; sinnvoll&lt;br /&gt;
 &lt;br /&gt;
; Fehlende Bestandteile der Dokumentation:&lt;br /&gt;
* Schutzbedarf des Systems sowie der verarbeiteten Daten&lt;br /&gt;
* Schützenswerte Daten und Funktionen (Assets)&lt;br /&gt;
* Betriebliche Anforderungen an die Sicherheit bzw. eingesetzte Plattform&lt;br /&gt;
* Dokumentierte Konfigurationseinstellungen &lt;br /&gt;
* BIA (RTO, RPO)&lt;br /&gt;
* Schnittstellen&lt;br /&gt;
* Trust Boundaries&lt;br /&gt;
* Akteure (bzw. Trust Level)&lt;br /&gt;
* Sicherheitsannahmen&lt;br /&gt;
* Geltende Compliance-Anforderungen (BDSG, PCI DSS, etc.)&lt;br /&gt;
&lt;br /&gt;
; Benutzermanagement&lt;br /&gt;
&lt;br /&gt;
Wenn damit das Identity Management gemeint ist, gehört das Dokumentiert, ist aber keine Sicherheitsfunktion. Oder ist hiermit das Rollen- und Berechtigungskonzept gemeint? Grenzt sich aus meiner Sicht schwer mit dem Thema Authentisierung ab. &lt;br /&gt;
&lt;br /&gt;
; Prüffragen&lt;br /&gt;
&lt;br /&gt;
Hier fehlt etwas in Bezug auf Sicherheitsanforderungen. Beispiel: &amp;quot;Werden Sicherheitsanforderungen an den Betrieb während der Entwicklung abgestimmt und dokumentiert&amp;quot;&lt;br /&gt;
&lt;br /&gt;
== M 2.WA12 Entwicklung und Erweiterung von Anwendungen (Markus) ==&lt;br /&gt;
; &amp;quot;Es sollte darauf geachtet werden, dass Sicherheitsanforderungen&lt;br /&gt;
vollständig durch Sicherheitsmechanismen erfüllt und zur Erstellung von&lt;br /&gt;
Testfällen festgehalten werden.&amp;quot; --&amp;gt; Bessere Formulierung würde aussagen, dass die Sicherheitsanforderungen durch Testfälle verifiziert werden.&lt;br /&gt;
&amp;quot;(z. B. durch Kommentare im&lt;br /&gt;
Quelltext). Somit ist der Quelltext zu einem&amp;quot; --&amp;gt; Das ist kein empfehlenswerter Programmierstiel! Raus mit diesem Kommentar&lt;br /&gt;
;&amp;quot;Zum Schutz vor dem Verlust bereits entwickelter und verworfener&lt;br /&gt;
Lösungen sowie zu Dokumentationszwecken sollte die Historie der&lt;br /&gt;
Änderungen festgehalten werden (z. B. durch ein Revisionssystem).&amp;quot; --&amp;gt; Auch diesen Absatz können wir streichen - Kein professioneller Programmierer arbeitet ohne Versionierugssystem.&lt;br /&gt;
;&amp;quot;Bei Web-Anwendung sollten die Webseiten auf Konformität zu dem&lt;br /&gt;
verwendeten Standard (z. B. HTML-Standard) getestet werden. Dadurch&lt;br /&gt;
können unvorgesehene Seiteneffekte aufgrund einer Fehlinterpretation&lt;br /&gt;
seitens der Browser vermieden werden.&amp;quot; --&amp;gt; Könnte man noch um &amp;quot;Die Software ist in möglichst vielen Browsern zu testen&amp;quot; erweitern.&lt;br /&gt;
;Generell geht der Autor leider nicht auf die Rollen &amp;amp; Rechte Verteilung ein. Mir fehlt der Hinweis, das es eine personelle Trennung zwischen Entwicklung, Test und Betrieb geben muss.&lt;br /&gt;
;Zum Thema Wartung / Betrieb --&amp;gt; Hier wird keine Aussage getroffen bezüglich Log_Files. Dieses Thema kann kritische Auswirkungen haben, Bsp.: logging ganzer HTTP-Requests im LogLevel=Debug.&lt;br /&gt;
; &amp;quot;Produktspezifische Sicherheitsfunkionalität&amp;quot; - Dieser Absatz ist gefährlich - der Angreifer ist nicht zur Verwendung dies Zielbrowsers gezwungen. Deshalb können Browser-spez. Sicherheitsfunktionen nur als Add-ON gewertet werden.&lt;br /&gt;
; &amp;quot;Festlegung der Entwicklungsumgebung&amp;quot; - Dieser Absatz geht nicht auf die zu verwendenden Testdaten ein. Der Hinweis, dass Live-Daten / Kundendaten nichts in Test- &amp;amp; Entwicklungsumgebungen zu suchen haben fehlt!!!&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== M 2.WA24 Web-Tracking (Matthias) ==&lt;br /&gt;
&lt;br /&gt;
; Letzter Absatz: &amp;quot;Falls eine Auswertung von Nutzerdaten, insbesondere personenbezogener Daten, .. &amp;quot;&lt;br /&gt;
&lt;br /&gt;
Hier sollte denke ich besser von personenbeziehbaren Daten gesprochen Werten. Dies betrifft etwa die Zuordnung von Surfverhalten zu einer bestimmten Person. Dies sollte stets nach den Prinzipien Datensparsamkeit und Datenvermeidung, Erforderlichkeit, sowie Zweckbindung erfolgen. Ist Webtracking nicht personenbeziehbar ist dies kein Thema für den Datenschutz.&lt;br /&gt;
&lt;br /&gt;
== M 4.WA04 Authentisierung bei Web- Anwendungen (Matthias) ==&lt;br /&gt;
&lt;br /&gt;
; Vermischung von Authentisierung und Session Management &lt;br /&gt;
&lt;br /&gt;
Bei diesem Baustein findet eine ziemlich große Vermischung von Anforderung an die Authentisierung und das erst in &amp;quot;M 4.WA06 Session-Management bei Web- Anwendungen&amp;quot; behandelte Session Management statt (Beispiel: &amp;quot;Remember-Me-Funktion&amp;quot;). Beide Themen sollten sinnvollerweise getrennt voneinander zu betrachten und aufeinander zu beziehen.&lt;br /&gt;
&lt;br /&gt;
; Verwendung von Frameworks&lt;br /&gt;
&lt;br /&gt;
Die Anforderung ist schon ein wenig eingeschränkt. Besser passt hier denke ich die &amp;quot;Abbildung der Authentisierung über Standardkomponenten (Bibliotheken oder Frameworks)&amp;quot;. &lt;br /&gt;
&lt;br /&gt;
; Remember-Me-Funktion&lt;br /&gt;
&lt;br /&gt;
Siehe oben, gehört zum Session Management. Das ließt sich im übrigen so, als ob eine Webanwendung Credentials auf dem Client abhängt. &lt;br /&gt;
&lt;br /&gt;
; Grenzwerte für gescheiterte Anmeldeversuche&lt;br /&gt;
&lt;br /&gt;
Diese Empfehlung ist allgemein falsch, da sie sehr von der betrachteten Anwendung abhängt. Besser wäre hier allgemein von Mechanismen zur Verhinderung von automatisierten Angriffen zu sprechen (Anti-Automatisierung). &lt;br /&gt;
&lt;br /&gt;
Etwa umsetzbar durch&lt;br /&gt;
* Sperrung nach x Anmeldeversuchen&lt;br /&gt;
* Throttling&lt;br /&gt;
* Captchas&lt;br /&gt;
* Sicherheitsfragen&lt;br /&gt;
&lt;br /&gt;
Das allgemeine Sperren kann leicht für das gezielte Aussperren von Benutzern (User Lockout) verwendet werden. Was etwa bei Trading-Anwendungen nicht funktioniert.&lt;br /&gt;
&lt;br /&gt;
; Automatisiertes Zurücksetzen von Authentisierungsdaten&lt;br /&gt;
&lt;br /&gt;
Würde ich besser als &amp;quot;Passwort-Reset&amp;quot; bezeichnen.&lt;br /&gt;
&lt;br /&gt;
Weiterhin fehlt hier der Hinweis, dass statt ein automatisiertes Zurücksetzen, ein Mechanismus zu empfehlen ist, bei dem über ein hinterlegtes Sicherheitsmerkmal (Handy-Nummer oder E-Mail-Adresse) vom Benutzer zunächst eine Verifikation durchgeführt wird. Beispielsweise durch einen erhaltenen Link. Erst dann darf eine Änderung des Passwortes durch den Benutzer erfolgen.&lt;br /&gt;
&lt;br /&gt;
; Registrierung nicht behandelt&lt;br /&gt;
&lt;br /&gt;
Es existiert hier kein Punkt, der die sichere Implementierung von Benutzerregistrierungen behandelt.&lt;br /&gt;
&lt;br /&gt;
; Verweis auf Externalisierung fehlt.&lt;br /&gt;
&lt;br /&gt;
Statt die Authentisierung selbst durchzuführen kann eine Anwendung hierzu auf eine externe Komponente (Beispiel: SiteMinder oder Kerberos) zurückgreifen.&lt;br /&gt;
&lt;br /&gt;
; Verweis auf Behandlung von Credentials fehlt&lt;br /&gt;
&lt;br /&gt;
Auch wenn das  in &amp;quot;M 4.WA15 Schutz vertraulicher Daten bei Web- Anwendungen&amp;quot; ausführlich behandelt wird, sollte in diesem Baustein bereits auf den angemessenen Schutz von Authentisierungsdaten bei Übertragung und Speicherung hingewiesen werden.&lt;br /&gt;
&lt;br /&gt;
== M 4.WA05Umfassende Ein- und Ausgabevalidierung bei Web-Anwedungen (Markus) ==&lt;br /&gt;
; &amp;quot;Ablehnung der Daten im&lt;br /&gt;
Fehlerfall&amp;quot; --&amp;gt; Hier könnte man noch auf Tar-Pits eingehen - nur ein Vorschlag.&lt;br /&gt;
&lt;br /&gt;
== M 4.WA06Session-Management bei Web-Anwendungen (Markus, Matthias) ==&lt;br /&gt;
; &amp;quot;Übertragung der SessionID mittels GETRequest&amp;quot; --&amp;gt; Hier fehlt der Hinweis, dass die Lebensdauer dieser SessionIds kurz/kürzer sein muss, als im Falle der Speicherung im Cookie.&lt;br /&gt;
&lt;br /&gt;
([[User:Mrohr|Matthias]]) Die Anmerkung verstehe ich ehrlich gesagt ueberhaupt nicht, zumal das SM haeufig transparent zwischen Cookies und URL Rewriting wechselt. Wozu soll das gut sein? Wie soll das geschehen? Idealerweise sollte die Session ID niemals in die URL geschrieben werden, das sollte eigentlich genuegen.&lt;br /&gt;
&lt;br /&gt;
; &amp;quot;Verschlüsselte Übertragung von SessionIDs&amp;quot; --&amp;gt; Hier fehlt der Hinweis auf den Beast-Exploit. TLS Version &amp;gt; 1.0 verwenden!&lt;br /&gt;
&lt;br /&gt;
([[User:Mrohr|Matthias]]) Solange hier nicht auf eine explizite TLS Version eingegangen wird, sollte meiner grossen Ueberzeugung nach hier auch auf keine Exploits etc. eingagen werden, das gehoert an andere Stelle.&lt;br /&gt;
&lt;br /&gt;
; ([[User:Mrohr|Matthias]]) Weiterhin:&lt;br /&gt;
&lt;br /&gt;
 Es dürfen keine extern bekannten oder erratbaren Daten (z. B. IP-Adresse, Uhrzeit) in die Berechnung der SessionID einfließen.&lt;br /&gt;
&lt;br /&gt;
Die Aussage finde ich etwas problematisch, wichtiger ist, dass die Entropie ausreichend hoch ist. Haeufig werden etwa IPs von Load Balancern in die Session ID hineingeschrieben.&lt;br /&gt;
&lt;br /&gt;
 - Domain (z. B. webapp.domain.tld),&lt;br /&gt;
 - Path (z. B. /webapp/),&lt;br /&gt;
 - Secure und&lt;br /&gt;
 - HttpOnly.Beschränkte Sitzungsdauer&lt;br /&gt;
&lt;br /&gt;
Das sieht so aus, als ob es empfehlenswert ist, das Domain-Tag zu verwenden, das ist es sicherlich nicht. Was macht hier der Hinweis &amp;quot;Beschraenke Sizuungsdauer&amp;quot;?&lt;br /&gt;
&lt;br /&gt;
== M 4.WA07Fehlerbehandlung durch Web-Anwendungen (Markus) ==&lt;br /&gt;
; Konsistenter / Inkonsistener Zustand einer Webanwendung und der daraus resultierende Datenverlust: Hier fehlen mir die Punkte: DOS, Priv.Escalation, CodeExecution.&lt;br /&gt;
; Vermeidung vertraulicher Informationen in Fehlermeldungen --&amp;gt; Fehlermeldungen sollten ebenfalls eine Systeminformationen preisgeben (Softwareversion, Patchlevel, etc.)&lt;br /&gt;
; Abbruch des Vorgangs nach Auftreten eines Fehlers --&amp;gt; TarPits scheinen dem Autor umbekannt zu sein :)&lt;br /&gt;
; &amp;quot;Werden Fehler möglichst von der gleichen Komponente behandelt, in der&lt;br /&gt;
der Fehler aufgetreten ist?&amp;quot; --&amp;gt; Das &amp;quot;möglichst&amp;quot; sollten wir streichen.&lt;br /&gt;
&lt;br /&gt;
== M 4.WA08Schutz vor automatisierter Nutzung von Web-Anwendungen (Markus) ==&lt;br /&gt;
; &amp;quot;Brute-Force-&lt;br /&gt;
Angriffe (z. B. Erraten von Zugangsdaten) und Enumeration-Angriffe (z. B.&lt;br /&gt;
automatisiertes Ermitteln von gültigen Login-Namen)&amp;quot; -- die Beispiele sind identisch - besser Beispiele suchen, z.b. URL-Enumeration&lt;br /&gt;
&lt;br /&gt;
([[User:Mrohr|Matthias]]) Das sehe ich anders. Brute-Forcing bezieht auf Passwoerter und Enumeration auf Benutzernamen, etwa durchs hochzaehlen. Auch wenn ich zustimmen muss, dass die nicht ganz gluecklich gewaehlt wurden. Stann &amp;quot;Erraten von Zugangsdaten&amp;quot; wuerde ich besser von &amp;quot;Erraten von Passwoertern&amp;quot; sprechen. Oder wie gesagt gleich auch auf andere Beispiele (etwa Object ID Enumeration) beziehen.&lt;br /&gt;
&lt;br /&gt;
== M 4.WA11Sichere Konfiguration von Web-Anwendungen (Markus) ==&lt;br /&gt;
; &amp;quot;Sicherer Umgang mit TLS/SSL&amp;quot; -- Hier fehlt der Hinweis, dass TLS-1.0 gebrochen ist&lt;br /&gt;
; &amp;quot;Zeichenkodierungskonfiguration&amp;quot; -- Ein Whitelisting abhängig von der Encodierung wäre ein weiterer Vorschlag&lt;br /&gt;
; &amp;quot;Restriktive Dateisystemberechtigungen&amp;quot; -- auch wenn es ein klassiker ist - der AS sollte ebenfalls mit von einem eingeschränkten Nutzer gestartet werden und nicht als root&lt;br /&gt;
; Administration Consolen:zur Ergänzen: Wenn diese nicht benötigit, sollten derartige Applikationen nicht deployed werden, unabhängig von möglichen Zugangsbeschränkungen.&lt;br /&gt;
&lt;br /&gt;
([[User:Mrohr|Matthias]]) Sorry, meiner Meinung nach hat die Bewertung von Kryptoverfahren hier abslut nichts zu suchen.Stattdessen sollte hier auf den entsprechenden [https://www.bsi.bund.de/ContentBSI/Publikationen/TechnischeRichtlinien/tr02102/index_htm.html Empfehlung des BSI] verwiesen werden, auch wenn dieses Dokument derzeit noch etwas outdated zu sein scheint.&lt;br /&gt;
&lt;br /&gt;
== M 4.WA13Kontrolliertes Einbinden von Daten und Inhalten bei Web-Anwendungen (Markus) ==&lt;br /&gt;
; Datei-Upload: Bei einem Upload werden Dateien durchaus in TEMP-Verzeichnissen gesammelt und danach weiterverarbeitet. Diese TEMP-Verzeichnisse sind im Rahmen einer Sicherheitsanalyse zu betrachten -&amp;gt; Möglicher (unbefugter) Zugriff auf weitere Uploads&lt;br /&gt;
; Upload komprimierter Dateien / großer Dateien birgt die Gefahr von DOS Angriffen&lt;br /&gt;
; Upload von Dateien kann bei weiterem Parsing zu Speicherengpässen führen --&amp;gt; DOS-Angriffe auf Thread-Local etc.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== M 4.WA14Restriktive Herausgabe sicherheitsrelevanter Informationen bei Web-Anwendungen (Markus, Matthias) ==&lt;br /&gt;
OK - Keine Anmerkungen von mir.&lt;br /&gt;
&lt;br /&gt;
[[User:Mrohr|Matthias]]) Von mir schon;)&lt;br /&gt;
&lt;br /&gt;
; Vermeidung von Kommentaren in ausgelieferten Webseiten&lt;br /&gt;
&lt;br /&gt;
Das ist leider total falsch, wir brauchen haeufig Komentare, aus Kompatibilitaetsgruenden. So wird etwa der JavaScript-Block haeufig auskommentiert.&lt;br /&gt;
&lt;br /&gt;
Wurde stattessen besser von sicherheitsrelevanten Kommentaren sprechen und als Massnahme generell Entwicklerkommentare ueber Sprachkonstruktre (etwa JSP) durchzufuehren.&lt;br /&gt;
&lt;br /&gt;
; Löschen nicht benötigter Dateien&lt;br /&gt;
&lt;br /&gt;
Hier wurde ich ggf. Dateien von Versionisierungstools (etwa Subversion) erwaehnen, das sehen wir schon recht haeufig.&lt;br /&gt;
&lt;br /&gt;
Statt Dateien einfach nur zu loeschen (was in der Praxis haeufig nicht so einfach ist) bietet es sich zudem an, den Zugriff auf bestimmte Dateien oder Dateitypen generell zu sperren, etwa mittels ACL im Apache.&lt;br /&gt;
&lt;br /&gt;
; Gibt die Web-Anwendung ausschließlich neutrale Fehlermeldungen aus und sind diese im Quelltext identisch? {E: C}&lt;br /&gt;
&lt;br /&gt;
Persoenlich verstehe ich das nicht. Wieseo neutrale Fehlermeldung? Das macht fuer mich nur beim Login Sin. Hierzu existiert in dem Text auch keinerlei Bezug. Ich wuerde das daher besser entfernen und im Rahmen der Fehlerbehandlung diskutieren. Mindestens sollte hier jedoch besser von &amp;quot;sicherheitsunbedentlichen Fehlermeldungen&amp;quot; oder so gesprochen werden.&lt;br /&gt;
&lt;br /&gt;
; Wird der Referrer bei Verlassen der Web-Anwendung (z. B. durch einen Link auf eine externe Seite) gefiltert?&lt;br /&gt;
&lt;br /&gt;
Diesen Punkt sehe ich als sehr Fallabhengig an. Es kann fuer seiten durchaus wuenschenswert sein, dass der Referer weitergegeben wird. Der Referer sollte natuerlich keine sensiblen Informationen enthalten, was ja an anderer Stelle (etwa Session Management) vorgegeben wird bzw. gegeben werden sollte.&lt;br /&gt;
&lt;br /&gt;
== M 4.WA15Schutz vertraulicher Daten bei Web-Anwendungen (Markus) ==&lt;br /&gt;
; Sichere kryptographische Algorithmen:&lt;br /&gt;
 Hier fehlt mir eine Liste der aktuelle als sicher geltenden Verfahren.&lt;br /&gt;
; Schlüssel&lt;br /&gt;
 Das die Schlüssel bestimmten Formaten entsprechen müssen ist ok - aber das Schlüsselmanagement wird gar nicht besprochen?&lt;br /&gt;
; Schutz der Daten im Browsercache&lt;br /&gt;
 Skripte und Browserplugins können ebenfalls auf den Browsercache zugreifen - diese werden hier nicht erwähnt.&lt;br /&gt;
; Maskierung von Passwörtern &lt;br /&gt;
 Dies schützt bei der Eingabe nur vor ShoulderSurfing nicht vor Skripten oder Plugins die diese an andere Server posten.&lt;br /&gt;
; Sicherung von Zugangsdaten:&lt;br /&gt;
 Zugangsdaten in einer Datei abzulegen - wenn auch ausserhalb des WebRoots ist keine gute Idee.&lt;br /&gt;
; Schutz von Quelltexten:&lt;br /&gt;
 Hier würde ich property files mit aufnehmen. der hinweis auf web-inf/classes fehlt - warum?&lt;br /&gt;
 Bei include-befehlen sind die pfadangaben zu überdenken.&lt;br /&gt;
&lt;br /&gt;
== M 4.WA16Zugriffskontrolle bei Web-Anwendungen (Markus) ==&lt;br /&gt;
; Zugriffskontrolle via Frameworks:&lt;br /&gt;
 Dieser Punkt (Frameworks) wird nur in einem Satz erwähnt. Es werden keine Bespiele gegeben - Das ist zu wenig.&lt;br /&gt;
 Es müssen alle Zugriffe geschützt werden. Eine Protokollierung aller Zugriffe mit den nötigen Informationen ist ebenfalls empfehlenswert.&lt;br /&gt;
; Datei Upload:&lt;br /&gt;
 Die Gefahr eines DOS wird hier nicht erwähnt.&lt;br /&gt;
&lt;br /&gt;
== M 4.WA19Verhinderung von Cross-Site Request Forgery (CSRF, XSRF) (Markus, Matthias) ==&lt;br /&gt;
; Verantwortliche: &lt;br /&gt;
 Entwickler und Admins!&lt;br /&gt;
([[User:Mrohr|Matthias]]) Korrekt, wobei auch in der Reihenfolge&lt;br /&gt;
&lt;br /&gt;
; Anti-CSRF-Token in hidden fields:&lt;br /&gt;
 Das ist keine gute Idee. Ich würde das streichen!&lt;br /&gt;
&lt;br /&gt;
([[User:Mrohr|Matthias]]) Watt? Anti-CSRF-Tokens in Hidden Fields sind die Standard-Massnahme. Wie denn sonst? Bitte nicht streichen!!! &lt;br /&gt;
&lt;br /&gt;
([[User:Mrohr|Matthias]]) Die Technik bei der die Session ID als Anti-CSRF-Token verwendet wird, wird als Double-Cookie Submit bezeichnet, das sollte hier referenziert werden.&lt;br /&gt;
&lt;br /&gt;
; Umgehung von Schutzmechanismen:&lt;br /&gt;
 Man in the middle hat keinen direkten Bezug zu CSRF! Das würde ich streichen.&lt;br /&gt;
([[User:Mrohr|Matthias]]) Der Hinweis ist korrekt. Wovon der Autor hier spricht ist Session Replay nicht CSRF.&lt;br /&gt;
&lt;br /&gt;
; Frameworks:&lt;br /&gt;
 Gute Idee - aber es gibt auch Features in den ApplicationServern die CSRF unterbinden - warum wird das nicht besprochen?&lt;br /&gt;
&lt;br /&gt;
([[User:Mrohr|Matthias]]) Sehe ich persoenlich nicht so, da CSRF primaer ein Applikations-Fehler ist, und auch in der Applikation und nicht im Environment (AppServer) geloest werden sollte. Auch wenn das manchmal ggf. die einzig machbare Loesung darstellt.&lt;br /&gt;
&lt;br /&gt;
([[User:Mrohr|Matthias]]) Was generell fehlt, ist ein Hinweis darauf, dass schreibende Requests generell per HTTP Post abgewickelt werden sollten, da HTTP Get keine &amp;quot;Safe Method&amp;quot;  (siehe HTTP 1.1, RFC 2616) ist.&lt;br /&gt;
&lt;br /&gt;
== M 4.WA20Sicherer Entwurf der Logik von Web-Anwendungen (Markus) ==&lt;br /&gt;
; Rollbacks:&lt;br /&gt;
 Tritt ein Fehler auf muss die Applikation einen konsistenten Datenstand zurück lassen. Das wird hier nicht erwähnt.&lt;br /&gt;
; RaceConditions:&lt;br /&gt;
 Fehler in der Geschäftslogik können auch durch zwei gleichzeitige Sessions auf einer Webapplikation auftreten - das wird hier nicht besprochen.&lt;br /&gt;
&lt;br /&gt;
== M 4.WA22Verhinderung der Blockade von Ressourcen (DoS) bei Web-Anwendungen (Markus) ==&lt;br /&gt;
; Datenspeicher:&lt;br /&gt;
 Neben dem Datenspeicher sollte auch der RAM-Verbrauch pro Thread der Applikation limitiert werden.&lt;br /&gt;
; Voraggregation von Daten / Caching&lt;br /&gt;
 Dieser Punkt fehlt: Stark ressourcen belastende Anfragen können auch in Lastarmen Zeiten vorberechnet werden.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== M 4.WA25Verhinderung von Clickjacking (Markus) ==&lt;br /&gt;
Ok - das passt soweit.&lt;br /&gt;
&lt;br /&gt;
[[User:Mrohr|Matthias]]) Stimmt, auch wenn ich &amp;quot;Angreifer&amp;quot; in dem Beispiel eher als &amp;quot;Webseitenbetreiber&amp;quot; beschreiebn wuerde, da er nicht wirklich aktiv einen Angriff durchfuehrt, oder? Bitte nochmal ueber meinen Hinweis aus G 5.WA18 nachdenken: Ist Clickjacking-Schutz tatsaechlich Grundschutz? Ich bin mir da selber nicht so wirklich sicher.&lt;br /&gt;
&lt;br /&gt;
== M 5.WA21Sichere Anbindung von Hintergrundsystemen an Web-Anwendungen (Markus) ==&lt;br /&gt;
; Verantwortliche:&lt;br /&gt;
 Architekten fehlen. Entwickler müssen die Views umsetzen und die Datasource entsprechend einbinden - die fehlen hier ebenfalls.&lt;br /&gt;
; DirectorySystem Beispiel:&lt;br /&gt;
 Das DirectorySystem wird in dem angegeben Beispiel zum Single Point of Failure - das wird verschwiegen.&lt;br /&gt;
; Firewalls:&lt;br /&gt;
 Das sind fachlich-blinde Systeme. Was ist mit WAFs / IDS / IPS etc.?&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== M 5.WA23Systemarchitektur einer Web-Anwendung (Markus) ==&lt;br /&gt;
; Verantwortliche:&lt;br /&gt;
Auch hier fehlend wieder die Architekten. &lt;br /&gt;
; Virtualisierung:&lt;br /&gt;
Virtualisierung bietet weitere Angriffsvektoren (z.B.: Hypervisor) die eine &amp;quot;Blech&amp;quot;Farm nicht bietet.&lt;/div&gt;</summary>
		<author><name>Mrohr</name></author>	</entry>

	<entry>
		<id>https://wiki.owasp.org/index.php?title=Talk:OWASP_Review_BSI_IT-Grundschutz_Baustein_Webanwendungen&amp;diff=130137</id>
		<title>Talk:OWASP Review BSI IT-Grundschutz Baustein Webanwendungen</title>
		<link rel="alternate" type="text/html" href="https://wiki.owasp.org/index.php?title=Talk:OWASP_Review_BSI_IT-Grundschutz_Baustein_Webanwendungen&amp;diff=130137"/>
				<updated>2012-05-21T07:31:55Z</updated>
		
		<summary type="html">&lt;p&gt;Mrohr: /* G 4.WA05 Fehlende oder mangelhafte Fehlerbehandlung durch Web-Anwendungen (Tobias) */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Since it's about a review of a document in German, all the discussions will be done in German :-)&lt;br /&gt;
&lt;br /&gt;
Diskussionen rund um den Review des &amp;quot;IT-Grundschutzbausteins Webanwendungen&amp;quot; finden hier statt, sinnvollerweise auf Deutsch :-)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Vorschlag für Kriterien, die an unser Review angelegt werden sollten (.kai) ==&lt;br /&gt;
&lt;br /&gt;
* Der Baustein soll alle wichtigen Themen der Entwicklung sicherer&lt;br /&gt;
Webanwendungen enthalten.&lt;br /&gt;
&lt;br /&gt;
* Der Baustein soll die verschiedenen Phasen der Software-Entwicklung&lt;br /&gt;
vollständig abdecken.&lt;br /&gt;
&lt;br /&gt;
* Der Baustein soll zwischen verbindlichen, prüfbaren Vorgaben und&lt;br /&gt;
unverbindlichen Empfehlungen sprachlich sauber unterscheiden (hier&lt;br /&gt;
spielt mein Auditorenblick eine Rolle). Vor allem soll der Baustein&lt;br /&gt;
verbindliche Anforderungen auch tatsächlich stellen. Alle&lt;br /&gt;
verbindlichen Anforderungen müssen unabhängig von der jeweiligen&lt;br /&gt;
Umgebung auch umsetzbar sein, d.h. sie müssen entsprechend generisch&lt;br /&gt;
sein.&lt;br /&gt;
&lt;br /&gt;
* Die Maßnahmen sollen nur in (begründbaren) Ausnahmen zu Empfehlungen&lt;br /&gt;
von OWASP im Widerspruch stehen.&lt;br /&gt;
&lt;br /&gt;
* Die Maßnahmen sollen verständlich und anwendbar sein.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== &amp;quot;Hilfsmittel&amp;quot; (Markus) ==&lt;br /&gt;
Ich würde das Script zur Vermeidung von Clickjacking wrappen und nicht als losen Skript-block in den Text einbinden - einfach schlechter Programmierstiel diese losen Blöcke.&lt;br /&gt;
Der Zugriff auf das Body-Element mit byTagName-Array[0] ist auch nicht wirklich gut. Ich halte Zugriffe über das DOM (klassisch), bei ID bzw. XPATH für besser. &lt;br /&gt;
&lt;br /&gt;
SQL-Injection Characters:&lt;br /&gt;
die Pipe fehlt hier zur Textkonatenierung&lt;br /&gt;
+ / - haben auch eine Bedeutung bei JOINs.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== &amp;quot;Goldene Regeln&amp;quot; (Matthias) ==&lt;br /&gt;
&lt;br /&gt;
Hier meine Anmerkungen zu diesem Dokument:&lt;br /&gt;
&lt;br /&gt;
; 1. Für mich fehlende Punkte&lt;br /&gt;
* Korrektur der Ursache (Root Cause) von Schwachstellen statt  Verhinderung deren Ausnutzung&lt;br /&gt;
* Bezug auf Minimierung der Angriffsfläche und Least-Privilege-Prinzip&lt;br /&gt;
* Bezug auf Defense-in-Depth-Prinzip&lt;br /&gt;
* Verwendung von getesteten Security APIs (z.B. OWASP ESAPI) statt selbstentwickelter Funktionen&lt;br /&gt;
* Bezug auf Externalisierung von Sicherheitsfunktionen, sowie deklerative vor programmatischer Sicherheit.&lt;br /&gt;
&lt;br /&gt;
; 2. Begriff &amp;quot;Web-Anwendung&amp;quot;&lt;br /&gt;
Würde ich generell durch &amp;quot;Webanwendung&amp;quot; ersetzen.&lt;br /&gt;
&lt;br /&gt;
; 3. Einleitung (&amp;quot;Web-Anwendungen stellen Funktionalität zur Verfügung, ...&amp;quot;)&lt;br /&gt;
&lt;br /&gt;
Wozu dient dieser Satz?&lt;br /&gt;
&lt;br /&gt;
; 4. &amp;quot;Die Architektur der Web-Anwendung ist im Sicherheitskonzept zu  dokumentieren.....&amp;quot; &lt;br /&gt;
&lt;br /&gt;
Ich fände es sinnvoller, wenn hier von der &amp;quot;Sicherheitsarchitektur&amp;quot; gesprochen wird, welche etwa neben den sicherheitsrelevanten Datenflüssen, sensible Komponenten, Entry Points, Akteure architekturelle Security Controls wie Authentisierung, Kryptographie und natürlich die Trust Boundaries beinhaltet.&lt;br /&gt;
&lt;br /&gt;
; 5. &amp;quot;Bei Web-Anwendungen handelt es sich häufig um spezielle Eigenentwicklungen....&amp;quot;&lt;br /&gt;
&lt;br /&gt;
Erstens würde ich hier den geläufigen Begriff &amp;quot;Individualsoftware&amp;quot; verwenden. Zweitens würde ich statt bestimmte SDLC-Phasen vorzugeben (die Begriffe &amp;quot;Softwareverteilung&amp;quot; und &amp;quot;Integration&amp;quot; sind mir bei Webanwendungen bisher noch nicht so häufig untergekommen), besser von der Notwendigkeit sprechen, Sicherheit in allen Entwicklungsphasen zu berücksichtigen, also eines SDLs.&lt;br /&gt;
&lt;br /&gt;
; 6. &amp;quot;Alle Ein- und Ausgaben der Web-Anwendung müssen in eine normalisierte Form überführt werden....&amp;quot;&lt;br /&gt;
&lt;br /&gt;
Normalisierung ist für mich nicht gleich Kanonsierung, auch wenn beide Begriffe häufig als synonym verwendet werden.  Der Unterschied wird in der [http://owasp-esapi-java.googlecode.com/svn/trunk_doc/2.0-rc4/org/owasp/esapi/Encoder.html API-Beschreibung der ESAPI] erklärt. Die Normalisierungs-Funktion ist allerdings schon vor einiger Zeit aus der ESAPI [https://lists.owasp.org/pipermail/esapi-dev/2010-January/000266.html rausgeflogen]. Die generelle Kanonisierung von Ausgaben halte ich dazu für nicht sinnvoll.&lt;br /&gt;
&lt;br /&gt;
Zweitens, finde ich den weiteren Text zwar grundsätzlich formal korrekt, aber so allgemein, dass dieser glaube ich niemandem so richtig etwas bringt.  &lt;br /&gt;
&lt;br /&gt;
Besser fände ich hier Ein- von Ausgabevalidierung grundsätzlich voneinander abzugrenzen. Etwa was ich per Eingabevalidierung (Längenprüfung, Casting, etc. per Whitelisting) und was mit Ausgebavalidierung (Enkodierung, Escaping, Parametrisierung) machen muss und kann.&lt;br /&gt;
&lt;br /&gt;
Eingabedaten können technisch zudem auch Werte eingelesener Property-Dateien sein. Muss ich die auch validieren? Ist das dann noch Grundschutz? &lt;br /&gt;
&lt;br /&gt;
; 7. &amp;quot;Für den Zugriff auf sensitive Funktionen oder Informationen muss die Web-Anwendung eine wirksame Authentisierung und Sitzungsverwaltung unterstützen. Die Eigenschaften der Sitzungs-ID müssen so gewählt werden, dass die Sitzung ausreichend geschützt ist. ....&amp;quot;&lt;br /&gt;
&lt;br /&gt;
Besser fände ich &amp;quot;eine Authentisierung, die über eine dem Schutzbedarf der Anwendung angemessene Stärke verfügt.&amp;quot; &lt;br /&gt;
&lt;br /&gt;
Eigentlich geht es doch mehr um den Schutz der Sitzungs-ID, da diese gewöhnlich im Verlauf einer Sitzung den Client authentisiert. Oder den Schutz des Zugriffs auf eine Sitzung. &lt;br /&gt;
&lt;br /&gt;
Zudem fehlt hier meiner Meinung nach der Hinweis auf die bevorzugte Verwendung getesteter Standardkomponenten.&lt;br /&gt;
&lt;br /&gt;
; 8. &amp;quot;Die Web-Anwendung sollte die zu übermittelnden Daten schützen.&amp;quot;&lt;br /&gt;
&lt;br /&gt;
Dies würde ich nur auf sensible Daten beziehen. Zusätzlich zu HTTPS würde ich hier schreiben, dass sensible Daten generell nicht in der URL übertragen werden dürfen.&lt;br /&gt;
&lt;br /&gt;
; 9. &amp;quot;Die Preisgabe interner Informationen (z.B. Kommentare, Fehlermeldungen)&amp;quot;&lt;br /&gt;
&lt;br /&gt;
Hier würde ich eher schreiben &amp;quot;(IN Kommentaren, Fehlermeldungen, HTTP Headern, etc.)&amp;quot;&lt;br /&gt;
&lt;br /&gt;
; 10. &amp;quot;Fehler müssen so behandelt werden, ... müssen Fehler bei der Autorisierung zu einer Verweigerung beim Zugriff auf die angeforderte Ressource führen.&amp;quot;&lt;br /&gt;
&lt;br /&gt;
Sprachlich: &amp;quot;Die Webanwendung muss sich stets in einem sicheren Zustand befinden. Beispielsweise müssen Fehler bei der Autorisierung zu einer Verweigerung des Zugriffs führen (Default-Deny-Strategie).&amp;quot;&lt;br /&gt;
&lt;br /&gt;
; 11. &amp;quot;Die Logging-Funktionen der Web-Anwendung müssen aufgetretene Ereignisse derart protokollieren, dass sicherheitskritische Vorfälle nachvollzogen werden können.&amp;quot;&lt;br /&gt;
&lt;br /&gt;
Hier würde hier eher von &amp;quot;allen sicherheitsrelevanten Ereignissen&amp;quot; sprechen.&lt;br /&gt;
&lt;br /&gt;
Weiterhin sollten insbesondere beim Logging der Datenschutz berücksichtigt werden, personenbezogene Daten also nach Möglichkeit nicht oder nur anonymisiert in technischen Logdateien protokolliert werden.&lt;br /&gt;
&lt;br /&gt;
; 12. &amp;quot;Alle Sicherheitsmechanismen (z.B. Authentisierung und Zugriffskontrolle) sind serverseitig zu implementieren und können nicht durch clientseitige Mechanismen ersetzt werden.&amp;quot;&lt;br /&gt;
&lt;br /&gt;
Die Aussage ist so nicht korrekt. Darüber hatten wir bereits bei der ASVS mehrfach diskutiert. &lt;br /&gt;
&lt;br /&gt;
Überall dort wo der Client angegriffen wird, also etwa bei RIAs (Stichwort DOM-Based XSS) müssen wir Security Controls clientseitig implementieren. Es gibt mittlerweile deshalb auch eine Portierung der ESAPI auf Javascript. Überall dort wo der Server oder Hintegrundsysteme angegriffen werden, ist die Aussage aber natürlich zutreffend.&lt;br /&gt;
&lt;br /&gt;
== &amp;quot;Gefährdungen&amp;quot; (Markus, Dennis, .... &amp;lt;Dein Name&amp;gt;) ==&lt;br /&gt;
; Generell:&lt;br /&gt;
Reference auf RFCs fehlen.&lt;br /&gt;
&lt;br /&gt;
==B.5.XX Web-Anwendungen ==&lt;br /&gt;
; 1. Erster Absatz - Letzter Satz: --Wieso werden hier nur HTML/XML Doks und Oberflächen angesprochen? Was ist der Unterschied zwischen einem HTML-Dok und einer Oberfläche? Was ist mit  Flash, etc.? Was ist mit WebSockets?&lt;br /&gt;
; 2. Stichpunkt &amp;quot;Protokollierung&amp;quot;: Sicherheits relevant ist ein sehr dehnbarer Begriff - Eine bessere Formulierung könnte sein: Zur Rekonstruktion von Nutzerhandlungen nötige Ereignisse (positve &amp;amp; negative) müssen protokolliert werden . . . &lt;br /&gt;
; 3. Absatz: &amp;quot;Abgrenzung des Bausteins&amp;quot;: &amp;quot;Die spez. Sicherheitsanforderungen an Web-Services werden in diesem Baustein nicht betrachtet&amp;quot; --&amp;gt; Wie so nicht? Was ist das Backend von einer Rest / AJAX-basierenden Webanwendung denn anderes als ein Web-Service? Diesen Satz würde ich entfernen.&lt;br /&gt;
; 4.Vorsätzliche Handlungen -&amp;gt; Web-Spoofing (G.5.87) -- Missverständliche Bezeichnung / Nomenklatur&lt;br /&gt;
; 5. Seite 4 : erste Zeile &amp;quot;Umsetzung&amp;quot;: &amp;quot;dafür umzusetztende Komponenten müssen die Webanwendung schützen...&amp;quot; - Hier fehlt mir der Hinweis, dass dieser Schutz verifiziert werden muss.&lt;br /&gt;
; 6 Seite 5: &amp;quot;Umsetzung&amp;quot; - Wir haben CSRF, D(D)os und SQL-Injection aber wo ist XSS?&lt;br /&gt;
; 7 Seite 7: &amp;quot;Die Sicherheitsfunktion wird ausschließlich clientseitig...&amp;quot; --&amp;gt; Warum muss der Angreifer überhaupt einen Browser umkonfigurieren? Was ist mit Proxies, Scripts, etc.? Ich würde das reduzieren darauf, dass rein Webbrowser-basierende Schutzfunktionen einfach umgangen werden können.&lt;br /&gt;
; 8 Seite 8: Die angesprochenen Punkte hinterlassen den Eindruck nicht vollständig zu sein: Mir fehlen Punkte wie &amp;quot;Outsourcing&amp;quot;, &amp;quot;KnowHow der Entwickler&amp;quot;, Tooling, Framework-Auswahl, etc.&lt;br /&gt;
; 9 Seite 9: Eigentlich möchte der Autor hier über Datenschutz sprechen. Abgesehen von den letzten drei Zeilen geht es aber nur um &amp;quot;User tracking&amp;quot; - Wo ist der Rest der Datenschutzproblematik? Warum der Fokuss auf Tracking? Mir ist das zu einseitig.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
tbd.&lt;br /&gt;
&lt;br /&gt;
; Wortwahl:&lt;br /&gt;
Ich stosse innerhalb der Texte immer wieder an die Worten '''Hintergrundsystem''' und '''Sicherheitskontext'''.&lt;br /&gt;
'''Hintergrundsystem:''' besseres Synonym?&lt;br /&gt;
'''Sicherheitskontext:''' nur weil es in den Texten um Sicherheit geht muss nicht an jeder Stelle immer wieder das Wort _Sicherheits_kontext eingebaut werden.&lt;br /&gt;
Bsp: &amp;quot;Erlangt ein Angreifer Kenntnis von einer solchen gültigen, aber nicht mehr genutzten SessionID, so kann er die Web-Anwendung im Sicherheitskontext des nicht abgemeldeten Benutzers weiter verwenden.&amp;quot; (G 5,WA12 Unzureichendes Session-Management von Web-Anwendungen)&lt;br /&gt;
Verbesserungsansansatz: ... so kann er die Web-Anwendung anstelle des eigentlichen Besitzers weiterhin verwenden.&lt;br /&gt;
&lt;br /&gt;
== &amp;quot;G 2.WA01 Mangelhafte Auswahl oder Konzeption von Web-Anwendungen&amp;quot; (Matthias) ==&lt;br /&gt;
&lt;br /&gt;
Nachdem ich mir diese Gefährdung durchgelesen hatte, fehlten mir ehrlich gesagt etwas die Worte. Nicht nur, dass hier fast jeder zweite Satz entweder falsch ist bzw. massive Fehler enthält oder ich diesen schlicht nicht verstehe, ist der ganze Text sprachlich wirklich enorm verbesserungsfähig. &lt;br /&gt;
&lt;br /&gt;
Na gut, ich konzentriere mich mal auf die fachlichen Punkte:&lt;br /&gt;
&lt;br /&gt;
; 1. Security Controls&lt;br /&gt;
Werden mal mit &amp;quot;Schutzmechanismen&amp;quot;, mal mit &amp;quot;Sicherheitskomponenten&amp;quot; und dann wieder als &amp;quot;Sicherheitsfunktionen&amp;quot; bezeichnet. Hier macht eine einheitliche Benennung sicherlich Sinn und ist weniger verwirrend.&lt;br /&gt;
&lt;br /&gt;
; 2. &amp;quot;Eine Web-Anwendung ist in der Regel ein verteiltes, komplexes System bestehend aus unterschiedlichen Komponenten (z. B. Webserver, Applikationsserver, Hintergrundsysteme)&amp;quot;&lt;br /&gt;
&lt;br /&gt;
Eine Webanwendung besteht sicher nicht aus einem Webserver- oder anderer infrastruktureller Komponenten, sondern ist Software welches diese nutzt.&lt;br /&gt;
&lt;br /&gt;
; 3. &amp;quot;Bei individuell entwickelten Web-Anwendungen sind im Allgemeinen die Frameworks, Komponenten und Schnittstellen im Rahmen der Konzeption auszuwählen und deren Einbindung und Absicherung zu betrachten....Im Gegensatz dazu ist bei der Konzeption von Web-Anwendungen auf Basis von Standardsoftware insbesondere auf die Auswahl der Software und die Konfiguration der Teilkomponenten zu achten&amp;quot;&lt;br /&gt;
&lt;br /&gt;
Wir unterscheiden im Rahmen von Webanwendungen eigentlich Free or Opensource Software (FOSS bzw. FLOSS), Standardsoftware und Individualsoftware voneinander. Wir unterscheiden nicht Frameworks von Standardsoftware. Frameworks können Teil von Standardsoftware sein, wie etwa bei SharePoint, SAP, etc, oder aber FOSS, wie etwa Spring. Die ganzen Absätze machen für mich daher keinen Sinn.&lt;br /&gt;
&lt;br /&gt;
; 4. &amp;quot;Eine Sicherheitsfunktion (z. B. Authentisierung, Autorisierung) wird nicht an einer Stelle umgesetzt und verwendet, sondern ist mehrfach in der Web- Anwendung realisiert. Wird diese Sicherheitsfunktion an den verschiedenen Stellen unterschiedlich umgesetzt, führt dies zu einem uneinheitlichen Sicherheitsniveau.&amp;quot;&lt;br /&gt;
&lt;br /&gt;
Natürlich ist die mehrfache Verwendung bestimmter Security Controls, beispielsweise von Zugriffskontrollen (Complete-Mediation) oder Validierung (Robustheit) erstrebenswert. Was der Autor hier wahrscheinlich meinte, war die Notwendigkeit diese zu Kapseln bzw. zu Externalisieren. Das bezieht sich im übrigen nicht nur auf die Controls selbst, sondern auch auf ihre Parametrisierung (etwa. über Konfigdateien / XACML).&lt;br /&gt;
&lt;br /&gt;
Wichtiger wäre in diesem Zusammenhang zudem die fehlende Berücksichtigung bestimmter Security Controls.&lt;br /&gt;
&lt;br /&gt;
; 5. &amp;quot;Auswahl von Web-Anwendungen auf Basis von Standardsoftware&amp;quot;&lt;br /&gt;
Was will der Satz sagen? Ich wähle Standardsoftware aus, aber doch keine Webanwendungen. Oder heißt das, ich kaufe eine existierende Anwendung ein (Webanwendung!=Indivudualsoftware)? &lt;br /&gt;
&lt;br /&gt;
; 6. &amp;quot;Das ausgewählte Produkt verfügt nicht über die ausreichende Sicherheitsfunktionalität, ... Daher müssen die notwendigen Schutzmechanismen nachträglich hinzugefügt werden, wodurch zusätzliche Aufwände entstehen.&amp;quot;&lt;br /&gt;
Das ist etwas sehr positiv formuliert. Tatsächlich können fehlende Security Controls in zugekaufter Software (insb. Standardsoftware) in der Realität häufig gar nicht hinzugefügt werden oder nur perimetrisch (z.B. per WAF oder Access Gateway).&lt;br /&gt;
&lt;br /&gt;
; 7. &amp;quot;Die Hintergrundsysteme werden unzureichend abgesichert und dadurch ist die Datenbank der Web-Anwendung aus dem Internet erreichbar.&amp;quot;&lt;br /&gt;
Gehören fehlende Netzwerksegmentierung bzw. Firewallregeln wirklich in diesen Kontext? Das ist doch eigentlich Grundschutz der Infrastruktur, oder?&lt;br /&gt;
&lt;br /&gt;
; 8. &amp;quot;Aufgrund schwacher Parameter in der Konfiguration des Frameworks zum Session-Management werden unsichere SessionIDs erzeugt.&amp;quot;&lt;br /&gt;
Was sind &amp;quot;schwache&amp;quot; Parameter?&lt;br /&gt;
&lt;br /&gt;
Welches Framework erlaubt unsichere SessionIDs durch eine &amp;quot;schwache&amp;quot; Konfiguration zu erzeugen?&lt;br /&gt;
&lt;br /&gt;
; 9. &amp;quot;Wird die Konfiguration des Web-Browsers durch einen Angreifer manipuliert, können die clientseitig umgesetzten&amp;quot;&lt;br /&gt;
&lt;br /&gt;
Manipuliert ein Angreifer die Konfguration seines Webbroswers, wenn er einen MITM-Proxy konfiguriert?&lt;br /&gt;
&lt;br /&gt;
Wie bereits bei den &amp;quot;Goldenen Regeln&amp;quot; angemerkt, gilt auch hier, das manche Security Controls auch clientseitig umgesetzt werden dürfen (etwa. zur Verhinderung von Dom-Based XSS).&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== &amp;quot;G 5.WA10 Fehler in der Web-Anwendungslogik&amp;quot; (Dennis) ==&lt;br /&gt;
; 1. &amp;quot;Damit kann aufgrund der Prüfreihenfolge ein hoher Ressourcenverbrauch provoziert werden, der für Denial-of-Service-Angriffe ausgenutzt werden kann.&amp;quot;&lt;br /&gt;
Meiner Meinung nach passt in diesem Kontext die Attacke DoS nicht ganz. Falls die nachfolgende Funktionalität wegen der langen Ausführungszeit der Filterkomponente übersprungen wird bzw. ein Fehler auftritt würde dies meiner Ansicht in die Thematik Anwendungslogik passen. Eine DoS-Attacke kann hingegen anhand jeder Funktion durchgeführt werden.&lt;br /&gt;
&lt;br /&gt;
== &amp;quot;G 5.WA11 Umgehung clientseitig umgesetzter Sicherheitsfunktionen von Web-Anwendungen&amp;quot; (Dennis) ==&lt;br /&gt;
; 1. &amp;quot;Ein Angreifer kann diese ausnutzen, um beispielsweise unbefugt Befehle an Hintergrundsysteme der Web-Anwendung zu übermittlen (z.B. in Form von Datenbankanfragen bei einer SQL-Injection).&amp;quot;&lt;br /&gt;
Umformulierung des Inhalts der Klammer. Hatte beim ersten Lesen für mich den Anschein, als ob ein Formular genutzt werden könnte welches den Nutzer aufforder eine SQLI einzugeben. Ich denke &amp;quot;Datenbankanfrage zwecks Ausführung einer SQL-Injection&amp;quot; würde besser passen.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== G 2.WA02 Mängel bei der Entwicklung und der Erweiterung von Web-Anwendungen (Matthias) ==&lt;br /&gt;
&lt;br /&gt;
Allgemein ist de obere Teil ok, die aufgezählten &amp;quot;Auswirkungen von fehlenden Vorgaben&amp;quot; verstehe ich jedoch nicht. Wo ist etwa der Bezug von Barrierefreiheit auf die Anwendungssicherheit?&lt;br /&gt;
&lt;br /&gt;
Mein Vorschlag, um diese Punkte etwa sinnvoll umzubauen:&lt;br /&gt;
* &amp;quot;Fehlendes Vorgehensmodell&amp;quot;: Bezug auf fehlende Berücksichtigung von Sicherheit im SDLC. Statt eines SDLCs selbst sollte hier besser auf die Notwendigkeit eines Secure Development Lifecycle (SDL) hingewiesen werden&lt;br /&gt;
* &amp;quot;Fehlende Programmierrichtlinien&amp;quot; =&amp;gt; Besser wäre hier &amp;quot;Fehlende Sicherheitsrichtlinien in der Programmierung&amp;quot; also &amp;quot;Secure Coding Guidelines&amp;quot;&lt;br /&gt;
* &amp;quot;Testfälle&amp;quot; =&amp;gt; &amp;quot;Sicherheitsrelevante Testfälle&amp;quot; (z.B. Security Unit Tests). &lt;br /&gt;
* &amp;quot;Barrierefreiheit&amp;quot;: Warum nicht an dieser Stelle die Auswirkungen von Sicherheitsfunktionen auf die Bedienbarkeit, etwa anhand von CAPTCHAS erläutern?&lt;br /&gt;
&lt;br /&gt;
== G 2.WA03 Unzureichender Schutz personenbezogener Daten bei Web-Anwendungen (Matthias) ==&lt;br /&gt;
&lt;br /&gt;
Der Titel dieses Bausteines heißt &amp;quot;Schutz personenbezogener Daten&amp;quot;, die genannten Beispiele beziehen sich bis auf den letzten jedoch auf die missbräuchliche (oder zumindest problematische) Nutzung aus Sicht des Datenschutzes. &lt;br /&gt;
&lt;br /&gt;
Die Punkt 1-3 sollten daher besser entfallen und z.B. durch die Folgenden ersetzt werden:&lt;br /&gt;
* Unsichere Einbindung von sozialen Netzwerken (Bezug nehmen auf den Like-Button bei Facebook)&lt;br /&gt;
* Unsichere Einbindung von Werbeinhalten&lt;br /&gt;
* Unsichere Übertragung und Caching&lt;br /&gt;
* Unsichere Protokollierung&lt;br /&gt;
* Ungenügender Zugriffsschutz&lt;br /&gt;
* Verstoß des Minimalprinzips bzw. der Zweckgebundenheit (welche Daten werden wirklich benötigt)&lt;br /&gt;
&lt;br /&gt;
Auch wäre es ggf. zumindest einen Verweis auf das BDSG zu machen.&lt;br /&gt;
&lt;br /&gt;
== G 4.33 Unzureichende oder fehlende Authentisierung (Matthias) ==&lt;br /&gt;
&lt;br /&gt;
; 1. Erster Absatz: &amp;quot;Wenn Authentisierungsmechanismen fehlen oder zu schlecht sind&amp;quot;&lt;br /&gt;
&lt;br /&gt;
&amp;quot;schlecht&amp;quot; sollte vlt besser durch &amp;quot;unzureichend&amp;quot; ersetzt werden.&lt;br /&gt;
&lt;br /&gt;
; 2. &amp;quot;Sicherheitslücken entstehen bei... der Benutzerauthentisierung&amp;quot;&lt;br /&gt;
&lt;br /&gt;
Hier findet nur ein Bezug auf &amp;quot;Passwörter&amp;quot; statt. Der Bezug auf die fehlerhaft implementierte oder dem Schutzbedarf ungenügende Schutzmechanismen (z.B. keine 2-Faktor-Authentisierung bei hochsensiblen Daten) fehlt. Auch auf das komplette fehlen von Authentisierungs-Controls wird hier nicht  eingegangen&lt;br /&gt;
&lt;br /&gt;
; 3. &amp;quot;Sicherheitslücken entstehen bei... der Komponentenauthentisierung&amp;quot;&lt;br /&gt;
&lt;br /&gt;
Wie bei 2., wird auch hier wieder nur auf Passwörter, nicht jedoch auf das fehlen von Controls selbst eingegangen. An dieser Stelle fehlt auch ein Hinweis auf die Notwendigkeit dedizierter Benutzeraccounts.&lt;br /&gt;
&lt;br /&gt;
; 4. &amp;quot;Sicherheitslücken entstehen bei... der Wahl des Verfahrens&amp;quot;&lt;br /&gt;
&lt;br /&gt;
Statt untauglich würde ich auch hier von &amp;quot;dem Schutzbedarf der Daten nicht angemessen&amp;quot; sprechen, eigentlich gehört das für mich aber in die obigen Punkte.&lt;br /&gt;
&lt;br /&gt;
; 5. Serverseitige Authentisierung fehlt&lt;br /&gt;
&lt;br /&gt;
Auch der Server (bzw. die Anwendung selbst) kann sich fehlerhaft oder ungenügend beim Benutzer authentsieren, etwa über DNS, SSL-Zertifikate, etc.&lt;br /&gt;
&lt;br /&gt;
== G 4.WA04 Unzureichende Validierung von Ein- und Ausgabedaten bei Web-Anwendungen (Matthias) ==&lt;br /&gt;
&lt;br /&gt;
; 1. &amp;quot;Unzureichende Validierung von Eingabedaten&amp;quot;&lt;br /&gt;
&lt;br /&gt;
Die genannten Beispiele sind genau keine korrekten Beispiele für diesen Fall, sondern betreffen die Ausgabevalidierung bzw. Enkodierung. Typische Fehler der Eingabevalidierung ist eine Manipulierbarkeit der Business Logik.&lt;br /&gt;
&lt;br /&gt;
; 2. &amp;quot;Unzureichende Validierung von Ausgabedaten&amp;quot;&lt;br /&gt;
&lt;br /&gt;
Hier geht es zentral um die Verhinderung von Interpreter Injection, also serverseitig (z.B. SQL oder LDAP Injection) oder clientseitig (XSS, JSON Injection, etc.). Statt &amp;quot;können die Ausgaben Schadcode&amp;quot; enthalten würde ich hier eher davon Sprechen, dass ein solcher Interpreteraufruf manipuliert werden kann (was dann z.B. zur Einschleusung von Schadcode genutzt werden kann).&lt;br /&gt;
&lt;br /&gt;
; 3. &amp;quot;Die Suchfunktion der Web-Anwendung verwendet die Eingaben der Benutzer ungefiltert&amp;quot;&lt;br /&gt;
&lt;br /&gt;
Mit ungenügender &amp;quot;Filterung&amp;quot; hat SQL Injection nichts zu tun,  eigentlich geht es hierbei darum, dass SQL-Anfragen dynamisch mit unvalidierten Eingebedaten zusammengebaut (konkateniert) werden.&lt;br /&gt;
&lt;br /&gt;
; 4. &amp;quot;Ungefilterter HTML-Code in Kommentar-Funktion&amp;quot;&lt;br /&gt;
&lt;br /&gt;
Hier fehlt der Bezug auf persistentes XSS, das hier sicherlich zentral ist.&lt;br /&gt;
&lt;br /&gt;
== G 4.WA05 Fehlende oder mangelhafte Fehlerbehandlung durch Web-Anwendungen (Tobias, Matthias) ==&lt;br /&gt;
; Abschnitt &amp;quot;Unsichere Fehlerbehandlung&amp;quot;&lt;br /&gt;
Die G adressiert &amp;quot;Unsichere Fehlerbehandlung&amp;quot;, der Abschnitt die &amp;quot;Unsichere Fehlerbehandlung in Sicherheitskomponenten&amp;quot;. Entsprechend sollte der fettgedruckte Teil angepasst werden.&lt;br /&gt;
&lt;br /&gt;
; &amp;quot;fehlende SQL-Parameter,&amp;quot;&lt;br /&gt;
Sollte besser &amp;quot;Fehlermeldungen bei ungültigen SQL-Abfragen&amp;quot; lauten.&lt;br /&gt;
&lt;br /&gt;
; &amp;quot;Auch scheinbar unkritische Informationen, wie die Meldung ob (..)&amp;quot;&lt;br /&gt;
Korrekt, allerdings nicht nachvollziehbar, wenn das Problem der Leser nicht schon bekannt ist. Daher erweitern nach &amp;quot; Rahmen von Brute-Force-Angriffen ausgenutzt werden.&amp;quot; mit &amp;quot;. Bei Brute-Force-Angriffen wäre in diesem Fall klar, dass der Benutzername gültig ist.&amp;quot;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[User:Mrohr|Matthias]]): Stimme dem Obigen auch zu, ausserdem:&lt;br /&gt;
&lt;br /&gt;
; Sprachlich: &amp;quot;kann dies unvorhersehbare Auswirkungen haben und den Betrieb der Web-Anwendung bis zur Unerreichbarkeit einschränken.&amp;quot;&lt;br /&gt;
&lt;br /&gt;
&amp;quot;Unerreichbarkeit&amp;quot; ist etas merkwuerdig ausgedrueckt, besser ware hier von der &amp;quot;Verfuegbarkeit&amp;quot; zu sprechen. Im Uebrigen fehlt vollstaendig der Bezug auf die Verfuegbarkeit als Primaeres Schutzziel der Informationssicherheit.&lt;br /&gt;
&lt;br /&gt;
; &amp;quot;Clientseitige Fehlerbehandlung&amp;quot;&lt;br /&gt;
Das stimmt soweit, das generelle Problem ist jedoch genereller, naehmlich die clientseitige Abbildung sicherheitsrelaventer Logik (in diesem Fall die Fehlerbehandlung)&lt;br /&gt;
&lt;br /&gt;
== G 4.WA06 Unzureichende Nachvollziehbarkeit von sicherheitsrelevanten Ereignissen bei Web-Anwendungen (Matthias) ==&lt;br /&gt;
&lt;br /&gt;
; 1. Erster Absatz: &amp;quot;Die Behebung einer Schwachstelle ist dann nicht oder nur unter erschwerten Bedingungen möglich.&amp;quot;&lt;br /&gt;
&lt;br /&gt;
Hier würde ich ergänzen: &amp;quot;...und Angriffe auf die Anwendungen können ggf. nicht erkannt oder nachvollzogen werden&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
; 2. &amp;quot;Beispiele&amp;quot;: Kommulierbarkeit&lt;br /&gt;
&lt;br /&gt;
Hier fehlt auch ein Bezug auf die Kommulierbarkeit von SIcherheitsereignissen, dass diese also auch von solchen anderer Systeme in Verbindung gesetzt werden können&lt;br /&gt;
&lt;br /&gt;
; 3. &amp;quot;Beispiele&amp;quot;: Gerichtsverwertbarkeit&lt;br /&gt;
&lt;br /&gt;
Auch die Möglichkeit zur Gerichtsverwertbarkeit (etwa durch eindeutigen Zeitstempel) und manipulationssicherer Speicherung, würde ich an dieser Stelle unbedingt erwähnen.&lt;br /&gt;
&lt;br /&gt;
== G 4.WA07 Offenlegung von Informationen bei Web-Anwendungen (Matthias) ==&lt;br /&gt;
&lt;br /&gt;
; 1. Titel&lt;br /&gt;
&lt;br /&gt;
Hier würde ggf. &amp;quot;Offenlegung vertraulicher Informationen&amp;quot; sicher besser passen als &amp;quot;Offenlegung von Informationen&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
; 2. Beispiellink&lt;br /&gt;
&lt;br /&gt;
Ein Beispiellink (mit und ohne Token) würde sicher die Verständlichkeit dieser Schwachstelle verbessern.&lt;br /&gt;
&lt;br /&gt;
; 3. Erster Absatz: &amp;quot;Wenn demzufolge Informationen unnötig offengelegt werden, steigt die Wahrscheinlichkeit eines erfolgreichen Angriffs.&amp;quot;&lt;br /&gt;
&lt;br /&gt;
Interne Informationen auszublenden ist eine Härtungsmaßnahme, deren Anzeige erhöht aber nicht zwangsläufig die Wahrscheinlichkeit eines erfolgreichen Angriffs. Ich würde diesen Satz weglassen.&lt;br /&gt;
&lt;br /&gt;
 ; 4. Fehlende Punkte&lt;br /&gt;
&lt;br /&gt;
* Ein Hinweis auf HTTP Header wäre hier sicher erwähnenswert.&lt;br /&gt;
* Weiterhin bzgl. der Anzeige von Traces und ein Verweis auf den Entsprechenden Baustein zur Fehlerbehandlung&lt;br /&gt;
&lt;br /&gt;
== G 5.WA14 Cross-Site Request Forgery (CSRF, XSRF) (Matthias) ==&lt;br /&gt;
&lt;br /&gt;
; 1. Erster Absatz: &amp;quot;Können Funktionen einer Web-Anwendung ohne weitere Überprüfung der Authentizität des HTTP-Requests (z.B. durch Tokens in versteckten Formularfeldern) genutzt werden&amp;quot;&lt;br /&gt;
&lt;br /&gt;
Statt &amp;quot;Funktionen&amp;quot; würde ich besser von &amp;quot;schreibenden Aktionen&amp;quot; sprechen, dann macht der Satz mehr Sinn.&lt;br /&gt;
&lt;br /&gt;
; 2. Dritter Absatz: &amp;quot;Im Gegensatz zu XSS (siehe ...￼ ) ist das Angriffsziel nicht die Information auf dem Client (z. B. in Cookies),&amp;quot;&lt;br /&gt;
&lt;br /&gt;
Dieser (Halb-)Satz macht keinen Sinn, auch weil es bei XSS nicht nur im Informationen auf dem Cient geht. Vorschlag: &amp;quot;ist das Angriffsziel nicht die Ausführung von Skriptcode, sondern von unbefugten, schreibenden Aktionen im Kontext des angemeldeten Benutzers.&amp;quot;&lt;br /&gt;
&lt;br /&gt;
; 3. Session Riding&lt;br /&gt;
&lt;br /&gt;
Session Riding ist quasi nur ein anderer Begriff für CSRF. Die einzige Form von CSRF die mir bekannt ist, sind Angriffe mit Standard-Passwörtern auf HTTP-Basic-Auth geschützten Ressourcen.&lt;br /&gt;
&lt;br /&gt;
Im Grunde ist Session Riding aber nur ein Synonym für CSRF. Der Absatz ist daher auch nur eine Wiederholung der obigen Beschreibung.&lt;br /&gt;
&lt;br /&gt;
; 4. Zum Beispiel: &amp;quot;Durch einen präparierten Link auf einer Webseite wird die Änderung des Zugangspasswortes des Routers eingeleitet.&amp;quot;&lt;br /&gt;
&lt;br /&gt;
Etwas ungüngstig ausgedrückt. Besser wäre: &amp;quot;wird eine Anfrage zur Änderung des Zugangspasswortes an den Router gesendet. Hierbei sendet der Browser automatisch den Session Cookie mit, worüber die Webanwendung die Authentizität der Anfrage verifiziert und die Änderung durchführt.&amp;quot;&lt;br /&gt;
&lt;br /&gt;
== G 5.WA18 Clickjacking (Matthias) ==&lt;br /&gt;
&lt;br /&gt;
Hier stellt sich mir nur die allgemeine Frage, ob Clickjacking, bzw. der Schutz davor tatsächlich einem Grundschutz zuzurechnen ist. Persönlich würde ich dies nicht tun.&lt;br /&gt;
&lt;br /&gt;
== M 2.WA02 Dokumentation der Architektur von Web-Anwendungen (Matthias) ==&lt;br /&gt;
&lt;br /&gt;
; Verantwortlich für die Umsetzung&lt;br /&gt;
Hier wäre auch die Nennung des &amp;quot;Architekten&amp;quot; sinnvoll&lt;br /&gt;
 &lt;br /&gt;
; Fehlende Bestandteile der Dokumentation:&lt;br /&gt;
* Schutzbedarf des Systems sowie der verarbeiteten Daten&lt;br /&gt;
* Schützenswerte Daten und Funktionen (Assets)&lt;br /&gt;
* Betriebliche Anforderungen an die Sicherheit bzw. eingesetzte Plattform&lt;br /&gt;
* Dokumentierte Konfigurationseinstellungen &lt;br /&gt;
* BIA (RTO, RPO)&lt;br /&gt;
* Schnittstellen&lt;br /&gt;
* Trust Boundaries&lt;br /&gt;
* Akteure (bzw. Trust Level)&lt;br /&gt;
* Sicherheitsannahmen&lt;br /&gt;
* Geltende Compliance-Anforderungen (BDSG, PCI DSS, etc.)&lt;br /&gt;
&lt;br /&gt;
; Benutzermanagement&lt;br /&gt;
&lt;br /&gt;
Wenn damit das Identity Management gemeint ist, gehört das Dokumentiert, ist aber keine Sicherheitsfunktion. Oder ist hiermit das Rollen- und Berechtigungskonzept gemeint? Grenzt sich aus meiner Sicht schwer mit dem Thema Authentisierung ab. &lt;br /&gt;
&lt;br /&gt;
; Prüffragen&lt;br /&gt;
&lt;br /&gt;
Hier fehlt etwas in Bezug auf Sicherheitsanforderungen. Beispiel: &amp;quot;Werden Sicherheitsanforderungen an den Betrieb während der Entwicklung abgestimmt und dokumentiert&amp;quot;&lt;br /&gt;
&lt;br /&gt;
== M 2.WA12 Entwicklung und Erweiterung von Anwendungen (Markus) ==&lt;br /&gt;
; &amp;quot;Es sollte darauf geachtet werden, dass Sicherheitsanforderungen&lt;br /&gt;
vollständig durch Sicherheitsmechanismen erfüllt und zur Erstellung von&lt;br /&gt;
Testfällen festgehalten werden.&amp;quot; --&amp;gt; Bessere Formulierung würde aussagen, dass die Sicherheitsanforderungen durch Testfälle verifiziert werden.&lt;br /&gt;
&amp;quot;(z. B. durch Kommentare im&lt;br /&gt;
Quelltext). Somit ist der Quelltext zu einem&amp;quot; --&amp;gt; Das ist kein empfehlenswerter Programmierstiel! Raus mit diesem Kommentar&lt;br /&gt;
;&amp;quot;Zum Schutz vor dem Verlust bereits entwickelter und verworfener&lt;br /&gt;
Lösungen sowie zu Dokumentationszwecken sollte die Historie der&lt;br /&gt;
Änderungen festgehalten werden (z. B. durch ein Revisionssystem).&amp;quot; --&amp;gt; Auch diesen Absatz können wir streichen - Kein professioneller Programmierer arbeitet ohne Versionierugssystem.&lt;br /&gt;
;&amp;quot;Bei Web-Anwendung sollten die Webseiten auf Konformität zu dem&lt;br /&gt;
verwendeten Standard (z. B. HTML-Standard) getestet werden. Dadurch&lt;br /&gt;
können unvorgesehene Seiteneffekte aufgrund einer Fehlinterpretation&lt;br /&gt;
seitens der Browser vermieden werden.&amp;quot; --&amp;gt; Könnte man noch um &amp;quot;Die Software ist in möglichst vielen Browsern zu testen&amp;quot; erweitern.&lt;br /&gt;
;Generell geht der Autor leider nicht auf die Rollen &amp;amp; Rechte Verteilung ein. Mir fehlt der Hinweis, das es eine personelle Trennung zwischen Entwicklung, Test und Betrieb geben muss.&lt;br /&gt;
;Zum Thema Wartung / Betrieb --&amp;gt; Hier wird keine Aussage getroffen bezüglich Log_Files. Dieses Thema kann kritische Auswirkungen haben, Bsp.: logging ganzer HTTP-Requests im LogLevel=Debug.&lt;br /&gt;
; &amp;quot;Produktspezifische Sicherheitsfunkionalität&amp;quot; - Dieser Absatz ist gefährlich - der Angreifer ist nicht zur Verwendung dies Zielbrowsers gezwungen. Deshalb können Browser-spez. Sicherheitsfunktionen nur als Add-ON gewertet werden.&lt;br /&gt;
; &amp;quot;Festlegung der Entwicklungsumgebung&amp;quot; - Dieser Absatz geht nicht auf die zu verwendenden Testdaten ein. Der Hinweis, dass Live-Daten / Kundendaten nichts in Test- &amp;amp; Entwicklungsumgebungen zu suchen haben fehlt!!!&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== M 2.WA24 Web-Tracking (Matthias) ==&lt;br /&gt;
&lt;br /&gt;
; Letzter Absatz: &amp;quot;Falls eine Auswertung von Nutzerdaten, insbesondere personenbezogener Daten, .. &amp;quot;&lt;br /&gt;
&lt;br /&gt;
Hier sollte denke ich besser von personenbeziehbaren Daten gesprochen Werten. Dies betrifft etwa die Zuordnung von Surfverhalten zu einer bestimmten Person. Dies sollte stets nach den Prinzipien Datensparsamkeit und Datenvermeidung, Erforderlichkeit, sowie Zweckbindung erfolgen. Ist Webtracking nicht personenbeziehbar ist dies kein Thema für den Datenschutz.&lt;br /&gt;
&lt;br /&gt;
== M 4.WA04 Authentisierung bei Web- Anwendungen (Matthias) ==&lt;br /&gt;
&lt;br /&gt;
; Vermischung von Authentisierung und Session Management &lt;br /&gt;
&lt;br /&gt;
Bei diesem Baustein findet eine ziemlich große Vermischung von Anforderung an die Authentisierung und das erst in &amp;quot;M 4.WA06 Session-Management bei Web- Anwendungen&amp;quot; behandelte Session Management statt (Beispiel: &amp;quot;Remember-Me-Funktion&amp;quot;). Beide Themen sollten sinnvollerweise getrennt voneinander zu betrachten und aufeinander zu beziehen.&lt;br /&gt;
&lt;br /&gt;
; Verwendung von Frameworks&lt;br /&gt;
&lt;br /&gt;
Die Anforderung ist schon ein wenig eingeschränkt. Besser passt hier denke ich die &amp;quot;Abbildung der Authentisierung über Standardkomponenten (Bibliotheken oder Frameworks)&amp;quot;. &lt;br /&gt;
&lt;br /&gt;
; Remember-Me-Funktion&lt;br /&gt;
&lt;br /&gt;
Siehe oben, gehört zum Session Management. Das ließt sich im übrigen so, als ob eine Webanwendung Credentials auf dem Client abhängt. &lt;br /&gt;
&lt;br /&gt;
; Grenzwerte für gescheiterte Anmeldeversuche&lt;br /&gt;
&lt;br /&gt;
Diese Empfehlung ist allgemein falsch, da sie sehr von der betrachteten Anwendung abhängt. Besser wäre hier allgemein von Mechanismen zur Verhinderung von automatisierten Angriffen zu sprechen (Anti-Automatisierung). &lt;br /&gt;
&lt;br /&gt;
Etwa umsetzbar durch&lt;br /&gt;
* Sperrung nach x Anmeldeversuchen&lt;br /&gt;
* Throttling&lt;br /&gt;
* Captchas&lt;br /&gt;
* Sicherheitsfragen&lt;br /&gt;
&lt;br /&gt;
Das allgemeine Sperren kann leicht für das gezielte Aussperren von Benutzern (User Lockout) verwendet werden. Was etwa bei Trading-Anwendungen nicht funktioniert.&lt;br /&gt;
&lt;br /&gt;
; Automatisiertes Zurücksetzen von Authentisierungsdaten&lt;br /&gt;
&lt;br /&gt;
Würde ich besser als &amp;quot;Passwort-Reset&amp;quot; bezeichnen.&lt;br /&gt;
&lt;br /&gt;
Weiterhin fehlt hier der Hinweis, dass statt ein automatisiertes Zurücksetzen, ein Mechanismus zu empfehlen ist, bei dem über ein hinterlegtes Sicherheitsmerkmal (Handy-Nummer oder E-Mail-Adresse) vom Benutzer zunächst eine Verifikation durchgeführt wird. Beispielsweise durch einen erhaltenen Link. Erst dann darf eine Änderung des Passwortes durch den Benutzer erfolgen.&lt;br /&gt;
&lt;br /&gt;
; Registrierung nicht behandelt&lt;br /&gt;
&lt;br /&gt;
Es existiert hier kein Punkt, der die sichere Implementierung von Benutzerregistrierungen behandelt.&lt;br /&gt;
&lt;br /&gt;
; Verweis auf Externalisierung fehlt.&lt;br /&gt;
&lt;br /&gt;
Statt die Authentisierung selbst durchzuführen kann eine Anwendung hierzu auf eine externe Komponente (Beispiel: SiteMinder oder Kerberos) zurückgreifen.&lt;br /&gt;
&lt;br /&gt;
; Verweis auf Behandlung von Credentials fehlt&lt;br /&gt;
&lt;br /&gt;
Auch wenn das  in &amp;quot;M 4.WA15 Schutz vertraulicher Daten bei Web- Anwendungen&amp;quot; ausführlich behandelt wird, sollte in diesem Baustein bereits auf den angemessenen Schutz von Authentisierungsdaten bei Übertragung und Speicherung hingewiesen werden.&lt;br /&gt;
&lt;br /&gt;
== M 4.WA05Umfassende Ein- und Ausgabevalidierung bei Web-Anwedungen (Markus) ==&lt;br /&gt;
; &amp;quot;Ablehnung der Daten im&lt;br /&gt;
Fehlerfall&amp;quot; --&amp;gt; Hier könnte man noch auf Tar-Pits eingehen - nur ein Vorschlag.&lt;br /&gt;
&lt;br /&gt;
== M 4.WA06Session-Management bei Web-Anwendungen (Markus, Matthias) ==&lt;br /&gt;
; &amp;quot;Übertragung der SessionID mittels GETRequest&amp;quot; --&amp;gt; Hier fehlt der Hinweis, dass die Lebensdauer dieser SessionIds kurz/kürzer sein muss, als im Falle der Speicherung im Cookie.&lt;br /&gt;
&lt;br /&gt;
([[User:Mrohr|Matthias]]) Die Anmerkung verstehe ich ehrlich gesagt ueberhaupt nicht, zumal das SM haeufig transparent zwischen Cookies und URL Rewriting wechselt. Wozu soll das gut sein? Wie soll das geschehen? Idealerweise sollte die Session ID niemals in die URL geschrieben werden, das sollte eigentlich genuegen.&lt;br /&gt;
&lt;br /&gt;
; &amp;quot;Verschlüsselte Übertragung von SessionIDs&amp;quot; --&amp;gt; Hier fehlt der Hinweis auf den Beast-Exploit. TLS Version &amp;gt; 1.0 verwenden!&lt;br /&gt;
&lt;br /&gt;
([[User:Mrohr|Matthias]]) Solange hier nicht auf eine explizite TLS Version eingegangen wird, sollte meiner grossen Ueberzeugung nach hier auch auf keine Exploits etc. eingagen werden, das gehoert an andere Stelle.&lt;br /&gt;
&lt;br /&gt;
; ([[User:Mrohr|Matthias]]) Weiterhin:&lt;br /&gt;
&lt;br /&gt;
 Es dürfen keine extern bekannten oder erratbaren Daten (z. B. IP-Adresse, Uhrzeit) in die Berechnung der SessionID einfließen.&lt;br /&gt;
&lt;br /&gt;
Die Aussage finde ich etwas problematisch, wichtiger ist, dass die Entropie ausreichend hoch ist. Haeufig werden etwa IPs von Load Balancern in die Session ID hineingeschrieben.&lt;br /&gt;
&lt;br /&gt;
 - Domain (z. B. webapp.domain.tld),&lt;br /&gt;
 - Path (z. B. /webapp/),&lt;br /&gt;
 - Secure und&lt;br /&gt;
 - HttpOnly.Beschränkte Sitzungsdauer&lt;br /&gt;
&lt;br /&gt;
Das sieht so aus, als ob es empfehlenswert ist, das Domain-Tag zu verwenden, das ist es sicherlich nicht. Was macht hier der Hinweis &amp;quot;Beschraenke Sizuungsdauer&amp;quot;?&lt;br /&gt;
&lt;br /&gt;
== M 4.WA07Fehlerbehandlung durch Web-Anwendungen (Markus) ==&lt;br /&gt;
; Konsistenter / Inkonsistener Zustand einer Webanwendung und der daraus resultierende Datenverlust: Hier fehlen mir die Punkte: DOS, Priv.Escalation, CodeExecution.&lt;br /&gt;
; Vermeidung vertraulicher Informationen in Fehlermeldungen --&amp;gt; Fehlermeldungen sollten ebenfalls eine Systeminformationen preisgeben (Softwareversion, Patchlevel, etc.)&lt;br /&gt;
; Abbruch des Vorgangs nach Auftreten eines Fehlers --&amp;gt; TarPits scheinen dem Autor umbekannt zu sein :)&lt;br /&gt;
; &amp;quot;Werden Fehler möglichst von der gleichen Komponente behandelt, in der&lt;br /&gt;
der Fehler aufgetreten ist?&amp;quot; --&amp;gt; Das &amp;quot;möglichst&amp;quot; sollten wir streichen.&lt;br /&gt;
&lt;br /&gt;
== M 4.WA08Schutz vor automatisierter Nutzung von Web-Anwendungen (Markus) ==&lt;br /&gt;
; &amp;quot;Brute-Force-&lt;br /&gt;
Angriffe (z. B. Erraten von Zugangsdaten) und Enumeration-Angriffe (z. B.&lt;br /&gt;
automatisiertes Ermitteln von gültigen Login-Namen)&amp;quot; -- die Beispiele sind identisch - besser Beispiele suchen, z.b. URL-Enumeration&lt;br /&gt;
&lt;br /&gt;
([[User:Mrohr|Matthias]]) Das sehe ich anders. Brute-Forcing bezieht auf Passwoerter und Enumeration auf Benutzernamen, etwa durchs hochzaehlen. Auch wenn ich zustimmen muss, dass die nicht ganz gluecklich gewaehlt wurden. Stann &amp;quot;Erraten von Zugangsdaten&amp;quot; wuerde ich besser von &amp;quot;Erraten von Passwoertern&amp;quot; sprechen. Oder wie gesagt gleich auch auf andere Beispiele (etwa Object ID Enumeration) beziehen.&lt;br /&gt;
&lt;br /&gt;
== M 4.WA11Sichere Konfiguration von Web-Anwendungen (Markus) ==&lt;br /&gt;
; &amp;quot;Sicherer Umgang mit TLS/SSL&amp;quot; -- Hier fehlt der Hinweis, dass TLS-1.0 gebrochen ist&lt;br /&gt;
; &amp;quot;Zeichenkodierungskonfiguration&amp;quot; -- Ein Whitelisting abhängig von der Encodierung wäre ein weiterer Vorschlag&lt;br /&gt;
; &amp;quot;Restriktive Dateisystemberechtigungen&amp;quot; -- auch wenn es ein klassiker ist - der AS sollte ebenfalls mit von einem eingeschränkten Nutzer gestartet werden und nicht als root&lt;br /&gt;
; Administration Consolen:zur Ergänzen: Wenn diese nicht benötigit, sollten derartige Applikationen nicht deployed werden, unabhängig von möglichen Zugangsbeschränkungen.&lt;br /&gt;
&lt;br /&gt;
([[User:Mrohr|Matthias]]) Sorry, meiner Meinung nach hat die Bewertung von Kryptoverfahren hier abslut nichts zu suchen.Stattdessen sollte hier auf den entsprechenden [https://www.bsi.bund.de/ContentBSI/Publikationen/TechnischeRichtlinien/tr02102/index_htm.html Empfehlung des BSI] verwiesen werden, auch wenn dieses Dokument derzeit noch etwas outdated zu sein scheint.&lt;br /&gt;
&lt;br /&gt;
== M 4.WA13Kontrolliertes Einbinden von Daten und Inhalten bei Web-Anwendungen (Markus) ==&lt;br /&gt;
; Datei-Upload: Bei einem Upload werden Dateien durchaus in TEMP-Verzeichnissen gesammelt und danach weiterverarbeitet. Diese TEMP-Verzeichnisse sind im Rahmen einer Sicherheitsanalyse zu betrachten -&amp;gt; Möglicher (unbefugter) Zugriff auf weitere Uploads&lt;br /&gt;
; Upload komprimierter Dateien / großer Dateien birgt die Gefahr von DOS Angriffen&lt;br /&gt;
; Upload von Dateien kann bei weiterem Parsing zu Speicherengpässen führen --&amp;gt; DOS-Angriffe auf Thread-Local etc.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== M 4.WA14Restriktive Herausgabe sicherheitsrelevanter Informationen bei Web-Anwendungen (Markus, Matthias) ==&lt;br /&gt;
OK - Keine Anmerkungen von mir.&lt;br /&gt;
&lt;br /&gt;
[[User:Mrohr|Matthias]]) Von mir schon;)&lt;br /&gt;
&lt;br /&gt;
; Vermeidung von Kommentaren in ausgelieferten Webseiten&lt;br /&gt;
&lt;br /&gt;
Das ist leider total falsch, wir brauchen haeufig Komentare, aus Kompatibilitaetsgruenden. So wird etwa der JavaScript-Block haeufig auskommentiert.&lt;br /&gt;
&lt;br /&gt;
Wurde stattessen besser von sicherheitsrelevanten Kommentaren sprechen und als Massnahme generell Entwicklerkommentare ueber Sprachkonstruktre (etwa JSP) durchzufuehren.&lt;br /&gt;
&lt;br /&gt;
; Löschen nicht benötigter Dateien&lt;br /&gt;
&lt;br /&gt;
Hier wurde ich ggf. Dateien von Versionisierungstools (etwa Subversion) erwaehnen, das sehen wir schon recht haeufig.&lt;br /&gt;
&lt;br /&gt;
Statt Dateien einfach nur zu loeschen (was in der Praxis haeufig nicht so einfach ist) bietet es sich zudem an, den Zugriff auf bestimmte Dateien oder Dateitypen generell zu sperren, etwa mittels ACL im Apache.&lt;br /&gt;
&lt;br /&gt;
; Gibt die Web-Anwendung ausschließlich neutrale Fehlermeldungen aus und sind diese im Quelltext identisch? {E: C}&lt;br /&gt;
&lt;br /&gt;
Persoenlich verstehe ich das nicht. Wieseo neutrale Fehlermeldung? Das macht fuer mich nur beim Login Sin. Hierzu existiert in dem Text auch keinerlei Bezug. Ich wuerde das daher besser entfernen und im Rahmen der Fehlerbehandlung diskutieren. Mindestens sollte hier jedoch besser von &amp;quot;sicherheitsunbedentlichen Fehlermeldungen&amp;quot; oder so gesprochen werden.&lt;br /&gt;
&lt;br /&gt;
; Wird der Referrer bei Verlassen der Web-Anwendung (z. B. durch einen Link auf eine externe Seite) gefiltert?&lt;br /&gt;
&lt;br /&gt;
Diesen Punkt sehe ich als sehr Fallabhengig an. Es kann fuer seiten durchaus wuenschenswert sein, dass der Referer weitergegeben wird. Der Referer sollte natuerlich keine sensiblen Informationen enthalten, was ja an anderer Stelle (etwa Session Management) vorgegeben wird bzw. gegeben werden sollte.&lt;br /&gt;
&lt;br /&gt;
== M 4.WA15Schutz vertraulicher Daten bei Web-Anwendungen (Markus) ==&lt;br /&gt;
; Sichere kryptographische Algorithmen:&lt;br /&gt;
 Hier fehlt mir eine Liste der aktuelle als sicher geltenden Verfahren.&lt;br /&gt;
; Schlüssel&lt;br /&gt;
 Das die Schlüssel bestimmten Formaten entsprechen müssen ist ok - aber das Schlüsselmanagement wird gar nicht besprochen?&lt;br /&gt;
; Schutz der Daten im Browsercache&lt;br /&gt;
 Skripte und Browserplugins können ebenfalls auf den Browsercache zugreifen - diese werden hier nicht erwähnt.&lt;br /&gt;
; Maskierung von Passwörtern &lt;br /&gt;
 Dies schützt bei der Eingabe nur vor ShoulderSurfing nicht vor Skripten oder Plugins die diese an andere Server posten.&lt;br /&gt;
; Sicherung von Zugangsdaten:&lt;br /&gt;
 Zugangsdaten in einer Datei abzulegen - wenn auch ausserhalb des WebRoots ist keine gute Idee.&lt;br /&gt;
; Schutz von Quelltexten:&lt;br /&gt;
 Hier würde ich property files mit aufnehmen. der hinweis auf web-inf/classes fehlt - warum?&lt;br /&gt;
 Bei include-befehlen sind die pfadangaben zu überdenken.&lt;br /&gt;
&lt;br /&gt;
== M 4.WA16Zugriffskontrolle bei Web-Anwendungen (Markus) ==&lt;br /&gt;
; Zugriffskontrolle via Frameworks:&lt;br /&gt;
 Dieser Punkt (Frameworks) wird nur in einem Satz erwähnt. Es werden keine Bespiele gegeben - Das ist zu wenig.&lt;br /&gt;
 Es müssen alle Zugriffe geschützt werden. Eine Protokollierung aller Zugriffe mit den nötigen Informationen ist ebenfalls empfehlenswert.&lt;br /&gt;
; Datei Upload:&lt;br /&gt;
 Die Gefahr eines DOS wird hier nicht erwähnt.&lt;br /&gt;
&lt;br /&gt;
== M 4.WA19Verhinderung von Cross-Site Request Forgery (CSRF, XSRF) (Markus, Matthias) ==&lt;br /&gt;
; Verantwortliche: &lt;br /&gt;
 Entwickler und Admins!&lt;br /&gt;
([[User:Mrohr|Matthias]]) Korrekt, wobei auch in der Reihenfolge&lt;br /&gt;
&lt;br /&gt;
; Anti-CSRF-Token in hidden fields:&lt;br /&gt;
 Das ist keine gute Idee. Ich würde das streichen!&lt;br /&gt;
&lt;br /&gt;
([[User:Mrohr|Matthias]]) Watt? Anti-CSRF-Tokens in Hidden Fields sind die Standard-Massnahme. Wie denn sonst? Bitte nicht streichen!!! &lt;br /&gt;
&lt;br /&gt;
([[User:Mrohr|Matthias]]) Die Technik bei der die Session ID als Anti-CSRF-Token verwendet wird, wird als Double-Cookie Submit bezeichnet, das sollte hier referenziert werden.&lt;br /&gt;
&lt;br /&gt;
; Umgehung von Schutzmechanismen:&lt;br /&gt;
 Man in the middle hat keinen direkten Bezug zu CSRF! Das würde ich streichen.&lt;br /&gt;
([[User:Mrohr|Matthias]]) Der Hinweis ist korrekt. Wovon der Autor hier spricht ist Session Replay nicht CSRF.&lt;br /&gt;
&lt;br /&gt;
; Frameworks:&lt;br /&gt;
 Gute Idee - aber es gibt auch Features in den ApplicationServern die CSRF unterbinden - warum wird das nicht besprochen?&lt;br /&gt;
&lt;br /&gt;
([[User:Mrohr|Matthias]]) Sehe ich persoenlich nicht so, da CSRF primaer ein Applikations-Fehler ist, und auch in der Applikation und nicht im Environment (AppServer) geloest werden sollte. Auch wenn das manchmal ggf. die einzig machbare Loesung darstellt.&lt;br /&gt;
&lt;br /&gt;
([[User:Mrohr|Matthias]]) Was generell fehlt, ist ein Hinweis darauf, dass schreibende Requests generell per HTTP Post abgewickelt werden sollten, da HTTP Get keine &amp;quot;Safe Method&amp;quot;  (siehe HTTP 1.1, RFC 2616) ist.&lt;br /&gt;
&lt;br /&gt;
== M 4.WA20Sicherer Entwurf der Logik von Web-Anwendungen (Markus) ==&lt;br /&gt;
; Rollbacks:&lt;br /&gt;
 Tritt ein Fehler auf muss die Applikation einen konsistenten Datenstand zurück lassen. Das wird hier nicht erwähnt.&lt;br /&gt;
; RaceConditions:&lt;br /&gt;
 Fehler in der Geschäftslogik können auch durch zwei gleichzeitige Sessions auf einer Webapplikation auftreten - das wird hier nicht besprochen.&lt;br /&gt;
&lt;br /&gt;
== M 4.WA22Verhinderung der Blockade von Ressourcen (DoS) bei Web-Anwendungen (Markus) ==&lt;br /&gt;
; Datenspeicher:&lt;br /&gt;
 Neben dem Datenspeicher sollte auch der RAM-Verbrauch pro Thread der Applikation limitiert werden.&lt;br /&gt;
; Voraggregation von Daten / Caching&lt;br /&gt;
 Dieser Punkt fehlt: Stark ressourcen belastende Anfragen können auch in Lastarmen Zeiten vorberechnet werden.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== M 4.WA25Verhinderung von Clickjacking (Markus) ==&lt;br /&gt;
Ok - das passt soweit.&lt;br /&gt;
&lt;br /&gt;
== M 5.WA21Sichere Anbindung von Hintergrundsystemen an Web-Anwendungen (Markus) ==&lt;br /&gt;
; Verantwortliche:&lt;br /&gt;
 Architekten fehlen. Entwickler müssen die Views umsetzen und die Datasource entsprechend einbinden - die fehlen hier ebenfalls.&lt;br /&gt;
; DirectorySystem Beispiel:&lt;br /&gt;
 Das DirectorySystem wird in dem angegeben Beispiel zum Single Point of Failure - das wird verschwiegen.&lt;br /&gt;
; Firewalls:&lt;br /&gt;
 Das sind fachlich-blinde Systeme. Was ist mit WAFs / IDS / IPS etc.?&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== M 5.WA23Systemarchitektur einer Web-Anwendung (Markus) ==&lt;br /&gt;
; Verantwortliche:&lt;br /&gt;
Auch hier fehlend wieder die Architekten. &lt;br /&gt;
; Virtualisierung:&lt;br /&gt;
Virtualisierung bietet weitere Angriffsvektoren (z.B.: Hypervisor) die eine &amp;quot;Blech&amp;quot;Farm nicht bietet.&lt;/div&gt;</summary>
		<author><name>Mrohr</name></author>	</entry>

	<entry>
		<id>https://wiki.owasp.org/index.php?title=Talk:OWASP_Review_BSI_IT-Grundschutz_Baustein_Webanwendungen&amp;diff=130110</id>
		<title>Talk:OWASP Review BSI IT-Grundschutz Baustein Webanwendungen</title>
		<link rel="alternate" type="text/html" href="https://wiki.owasp.org/index.php?title=Talk:OWASP_Review_BSI_IT-Grundschutz_Baustein_Webanwendungen&amp;diff=130110"/>
				<updated>2012-05-18T16:26:50Z</updated>
		
		<summary type="html">&lt;p&gt;Mrohr: /* M 4.WA14Restriktive Herausgabe sicherheitsrelevanter Informationen bei Web-Anwendungen (Markus) */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Since it's about a review of a document in German, all the discussions will be done in German :-)&lt;br /&gt;
&lt;br /&gt;
Diskussionen rund um den Review des &amp;quot;IT-Grundschutzbausteins Webanwendungen&amp;quot; finden hier statt, sinnvollerweise auf Deutsch :-)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Vorschlag für Kriterien, die an unser Review angelegt werden sollten (.kai) ==&lt;br /&gt;
&lt;br /&gt;
* Der Baustein soll alle wichtigen Themen der Entwicklung sicherer&lt;br /&gt;
Webanwendungen enthalten.&lt;br /&gt;
&lt;br /&gt;
* Der Baustein soll die verschiedenen Phasen der Software-Entwicklung&lt;br /&gt;
vollständig abdecken.&lt;br /&gt;
&lt;br /&gt;
* Der Baustein soll zwischen verbindlichen, prüfbaren Vorgaben und&lt;br /&gt;
unverbindlichen Empfehlungen sprachlich sauber unterscheiden (hier&lt;br /&gt;
spielt mein Auditorenblick eine Rolle). Vor allem soll der Baustein&lt;br /&gt;
verbindliche Anforderungen auch tatsächlich stellen. Alle&lt;br /&gt;
verbindlichen Anforderungen müssen unabhängig von der jeweiligen&lt;br /&gt;
Umgebung auch umsetzbar sein, d.h. sie müssen entsprechend generisch&lt;br /&gt;
sein.&lt;br /&gt;
&lt;br /&gt;
* Die Maßnahmen sollen nur in (begründbaren) Ausnahmen zu Empfehlungen&lt;br /&gt;
von OWASP im Widerspruch stehen.&lt;br /&gt;
&lt;br /&gt;
* Die Maßnahmen sollen verständlich und anwendbar sein.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== &amp;quot;Hilfsmittel&amp;quot; (Markus) ==&lt;br /&gt;
Ich würde das Script zur Vermeidung von Clickjacking wrappen und nicht als losen Skript-block in den Text einbinden - einfach schlechter Programmierstiel diese losen Blöcke.&lt;br /&gt;
Der Zugriff auf das Body-Element mit byTagName-Array[0] ist auch nicht wirklich gut. Ich halte Zugriffe über das DOM (klassisch), bei ID bzw. XPATH für besser. &lt;br /&gt;
&lt;br /&gt;
SQL-Injection Characters:&lt;br /&gt;
die Pipe fehlt hier zur Textkonatenierung&lt;br /&gt;
+ / - haben auch eine Bedeutung bei JOINs.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== &amp;quot;Goldene Regeln&amp;quot; (Matthias) ==&lt;br /&gt;
&lt;br /&gt;
Hier meine Anmerkungen zu diesem Dokument:&lt;br /&gt;
&lt;br /&gt;
; 1. Für mich fehlende Punkte&lt;br /&gt;
* Korrektur der Ursache (Root Cause) von Schwachstellen statt  Verhinderung deren Ausnutzung&lt;br /&gt;
* Bezug auf Minimierung der Angriffsfläche und Least-Privilege-Prinzip&lt;br /&gt;
* Bezug auf Defense-in-Depth-Prinzip&lt;br /&gt;
* Verwendung von getesteten Security APIs (z.B. OWASP ESAPI) statt selbstentwickelter Funktionen&lt;br /&gt;
* Bezug auf Externalisierung von Sicherheitsfunktionen, sowie deklerative vor programmatischer Sicherheit.&lt;br /&gt;
&lt;br /&gt;
; 2. Begriff &amp;quot;Web-Anwendung&amp;quot;&lt;br /&gt;
Würde ich generell durch &amp;quot;Webanwendung&amp;quot; ersetzen.&lt;br /&gt;
&lt;br /&gt;
; 3. Einleitung (&amp;quot;Web-Anwendungen stellen Funktionalität zur Verfügung, ...&amp;quot;)&lt;br /&gt;
&lt;br /&gt;
Wozu dient dieser Satz?&lt;br /&gt;
&lt;br /&gt;
; 4. &amp;quot;Die Architektur der Web-Anwendung ist im Sicherheitskonzept zu  dokumentieren.....&amp;quot; &lt;br /&gt;
&lt;br /&gt;
Ich fände es sinnvoller, wenn hier von der &amp;quot;Sicherheitsarchitektur&amp;quot; gesprochen wird, welche etwa neben den sicherheitsrelevanten Datenflüssen, sensible Komponenten, Entry Points, Akteure architekturelle Security Controls wie Authentisierung, Kryptographie und natürlich die Trust Boundaries beinhaltet.&lt;br /&gt;
&lt;br /&gt;
; 5. &amp;quot;Bei Web-Anwendungen handelt es sich häufig um spezielle Eigenentwicklungen....&amp;quot;&lt;br /&gt;
&lt;br /&gt;
Erstens würde ich hier den geläufigen Begriff &amp;quot;Individualsoftware&amp;quot; verwenden. Zweitens würde ich statt bestimmte SDLC-Phasen vorzugeben (die Begriffe &amp;quot;Softwareverteilung&amp;quot; und &amp;quot;Integration&amp;quot; sind mir bei Webanwendungen bisher noch nicht so häufig untergekommen), besser von der Notwendigkeit sprechen, Sicherheit in allen Entwicklungsphasen zu berücksichtigen, also eines SDLs.&lt;br /&gt;
&lt;br /&gt;
; 6. &amp;quot;Alle Ein- und Ausgaben der Web-Anwendung müssen in eine normalisierte Form überführt werden....&amp;quot;&lt;br /&gt;
&lt;br /&gt;
Normalisierung ist für mich nicht gleich Kanonsierung, auch wenn beide Begriffe häufig als synonym verwendet werden.  Der Unterschied wird in der [http://owasp-esapi-java.googlecode.com/svn/trunk_doc/2.0-rc4/org/owasp/esapi/Encoder.html API-Beschreibung der ESAPI] erklärt. Die Normalisierungs-Funktion ist allerdings schon vor einiger Zeit aus der ESAPI [https://lists.owasp.org/pipermail/esapi-dev/2010-January/000266.html rausgeflogen]. Die generelle Kanonisierung von Ausgaben halte ich dazu für nicht sinnvoll.&lt;br /&gt;
&lt;br /&gt;
Zweitens, finde ich den weiteren Text zwar grundsätzlich formal korrekt, aber so allgemein, dass dieser glaube ich niemandem so richtig etwas bringt.  &lt;br /&gt;
&lt;br /&gt;
Besser fände ich hier Ein- von Ausgabevalidierung grundsätzlich voneinander abzugrenzen. Etwa was ich per Eingabevalidierung (Längenprüfung, Casting, etc. per Whitelisting) und was mit Ausgebavalidierung (Enkodierung, Escaping, Parametrisierung) machen muss und kann.&lt;br /&gt;
&lt;br /&gt;
Eingabedaten können technisch zudem auch Werte eingelesener Property-Dateien sein. Muss ich die auch validieren? Ist das dann noch Grundschutz? &lt;br /&gt;
&lt;br /&gt;
; 7. &amp;quot;Für den Zugriff auf sensitive Funktionen oder Informationen muss die Web-Anwendung eine wirksame Authentisierung und Sitzungsverwaltung unterstützen. Die Eigenschaften der Sitzungs-ID müssen so gewählt werden, dass die Sitzung ausreichend geschützt ist. ....&amp;quot;&lt;br /&gt;
&lt;br /&gt;
Besser fände ich &amp;quot;eine Authentisierung, die über eine dem Schutzbedarf der Anwendung angemessene Stärke verfügt.&amp;quot; &lt;br /&gt;
&lt;br /&gt;
Eigentlich geht es doch mehr um den Schutz der Sitzungs-ID, da diese gewöhnlich im Verlauf einer Sitzung den Client authentisiert. Oder den Schutz des Zugriffs auf eine Sitzung. &lt;br /&gt;
&lt;br /&gt;
Zudem fehlt hier meiner Meinung nach der Hinweis auf die bevorzugte Verwendung getesteter Standardkomponenten.&lt;br /&gt;
&lt;br /&gt;
; 8. &amp;quot;Die Web-Anwendung sollte die zu übermittelnden Daten schützen.&amp;quot;&lt;br /&gt;
&lt;br /&gt;
Dies würde ich nur auf sensible Daten beziehen. Zusätzlich zu HTTPS würde ich hier schreiben, dass sensible Daten generell nicht in der URL übertragen werden dürfen.&lt;br /&gt;
&lt;br /&gt;
; 9. &amp;quot;Die Preisgabe interner Informationen (z.B. Kommentare, Fehlermeldungen)&amp;quot;&lt;br /&gt;
&lt;br /&gt;
Hier würde ich eher schreiben &amp;quot;(IN Kommentaren, Fehlermeldungen, HTTP Headern, etc.)&amp;quot;&lt;br /&gt;
&lt;br /&gt;
; 10. &amp;quot;Fehler müssen so behandelt werden, ... müssen Fehler bei der Autorisierung zu einer Verweigerung beim Zugriff auf die angeforderte Ressource führen.&amp;quot;&lt;br /&gt;
&lt;br /&gt;
Sprachlich: &amp;quot;Die Webanwendung muss sich stets in einem sicheren Zustand befinden. Beispielsweise müssen Fehler bei der Autorisierung zu einer Verweigerung des Zugriffs führen (Default-Deny-Strategie).&amp;quot;&lt;br /&gt;
&lt;br /&gt;
; 11. &amp;quot;Die Logging-Funktionen der Web-Anwendung müssen aufgetretene Ereignisse derart protokollieren, dass sicherheitskritische Vorfälle nachvollzogen werden können.&amp;quot;&lt;br /&gt;
&lt;br /&gt;
Hier würde hier eher von &amp;quot;allen sicherheitsrelevanten Ereignissen&amp;quot; sprechen.&lt;br /&gt;
&lt;br /&gt;
Weiterhin sollten insbesondere beim Logging der Datenschutz berücksichtigt werden, personenbezogene Daten also nach Möglichkeit nicht oder nur anonymisiert in technischen Logdateien protokolliert werden.&lt;br /&gt;
&lt;br /&gt;
; 12. &amp;quot;Alle Sicherheitsmechanismen (z.B. Authentisierung und Zugriffskontrolle) sind serverseitig zu implementieren und können nicht durch clientseitige Mechanismen ersetzt werden.&amp;quot;&lt;br /&gt;
&lt;br /&gt;
Die Aussage ist so nicht korrekt. Darüber hatten wir bereits bei der ASVS mehrfach diskutiert. &lt;br /&gt;
&lt;br /&gt;
Überall dort wo der Client angegriffen wird, also etwa bei RIAs (Stichwort DOM-Based XSS) müssen wir Security Controls clientseitig implementieren. Es gibt mittlerweile deshalb auch eine Portierung der ESAPI auf Javascript. Überall dort wo der Server oder Hintegrundsysteme angegriffen werden, ist die Aussage aber natürlich zutreffend.&lt;br /&gt;
&lt;br /&gt;
== &amp;quot;Gefährdungen&amp;quot; (Markus, Dennis, .... &amp;lt;Dein Name&amp;gt;) ==&lt;br /&gt;
; Generell:&lt;br /&gt;
Reference auf RFCs fehlen.&lt;br /&gt;
&lt;br /&gt;
==B.5.XX Web-Anwendungen ==&lt;br /&gt;
; 1. Erster Absatz - Letzter Satz: --Wieso werden hier nur HTML/XML Doks und Oberflächen angesprochen? Was ist der Unterschied zwischen einem HTML-Dok und einer Oberfläche? Was ist mit  Flash, etc.? Was ist mit WebSockets?&lt;br /&gt;
; 2. Stichpunkt &amp;quot;Protokollierung&amp;quot;: Sicherheits relevant ist ein sehr dehnbarer Begriff - Eine bessere Formulierung könnte sein: Zur Rekonstruktion von Nutzerhandlungen nötige Ereignisse (positve &amp;amp; negative) müssen protokolliert werden . . . &lt;br /&gt;
; 3. Absatz: &amp;quot;Abgrenzung des Bausteins&amp;quot;: &amp;quot;Die spez. Sicherheitsanforderungen an Web-Services werden in diesem Baustein nicht betrachtet&amp;quot; --&amp;gt; Wie so nicht? Was ist das Backend von einer Rest / AJAX-basierenden Webanwendung denn anderes als ein Web-Service? Diesen Satz würde ich entfernen.&lt;br /&gt;
; 4.Vorsätzliche Handlungen -&amp;gt; Web-Spoofing (G.5.87) -- Missverständliche Bezeichnung / Nomenklatur&lt;br /&gt;
; 5. Seite 4 : erste Zeile &amp;quot;Umsetzung&amp;quot;: &amp;quot;dafür umzusetztende Komponenten müssen die Webanwendung schützen...&amp;quot; - Hier fehlt mir der Hinweis, dass dieser Schutz verifiziert werden muss.&lt;br /&gt;
; 6 Seite 5: &amp;quot;Umsetzung&amp;quot; - Wir haben CSRF, D(D)os und SQL-Injection aber wo ist XSS?&lt;br /&gt;
; 7 Seite 7: &amp;quot;Die Sicherheitsfunktion wird ausschließlich clientseitig...&amp;quot; --&amp;gt; Warum muss der Angreifer überhaupt einen Browser umkonfigurieren? Was ist mit Proxies, Scripts, etc.? Ich würde das reduzieren darauf, dass rein Webbrowser-basierende Schutzfunktionen einfach umgangen werden können.&lt;br /&gt;
; 8 Seite 8: Die angesprochenen Punkte hinterlassen den Eindruck nicht vollständig zu sein: Mir fehlen Punkte wie &amp;quot;Outsourcing&amp;quot;, &amp;quot;KnowHow der Entwickler&amp;quot;, Tooling, Framework-Auswahl, etc.&lt;br /&gt;
; 9 Seite 9: Eigentlich möchte der Autor hier über Datenschutz sprechen. Abgesehen von den letzten drei Zeilen geht es aber nur um &amp;quot;User tracking&amp;quot; - Wo ist der Rest der Datenschutzproblematik? Warum der Fokuss auf Tracking? Mir ist das zu einseitig.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
tbd.&lt;br /&gt;
&lt;br /&gt;
; Wortwahl:&lt;br /&gt;
Ich stosse innerhalb der Texte immer wieder an die Worten '''Hintergrundsystem''' und '''Sicherheitskontext'''.&lt;br /&gt;
'''Hintergrundsystem:''' besseres Synonym?&lt;br /&gt;
'''Sicherheitskontext:''' nur weil es in den Texten um Sicherheit geht muss nicht an jeder Stelle immer wieder das Wort _Sicherheits_kontext eingebaut werden.&lt;br /&gt;
Bsp: &amp;quot;Erlangt ein Angreifer Kenntnis von einer solchen gültigen, aber nicht mehr genutzten SessionID, so kann er die Web-Anwendung im Sicherheitskontext des nicht abgemeldeten Benutzers weiter verwenden.&amp;quot; (G 5,WA12 Unzureichendes Session-Management von Web-Anwendungen)&lt;br /&gt;
Verbesserungsansansatz: ... so kann er die Web-Anwendung anstelle des eigentlichen Besitzers weiterhin verwenden.&lt;br /&gt;
&lt;br /&gt;
== &amp;quot;G 2.WA01 Mangelhafte Auswahl oder Konzeption von Web-Anwendungen&amp;quot; (Matthias) ==&lt;br /&gt;
&lt;br /&gt;
Nachdem ich mir diese Gefährdung durchgelesen hatte, fehlten mir ehrlich gesagt etwas die Worte. Nicht nur, dass hier fast jeder zweite Satz entweder falsch ist bzw. massive Fehler enthält oder ich diesen schlicht nicht verstehe, ist der ganze Text sprachlich wirklich enorm verbesserungsfähig. &lt;br /&gt;
&lt;br /&gt;
Na gut, ich konzentriere mich mal auf die fachlichen Punkte:&lt;br /&gt;
&lt;br /&gt;
; 1. Security Controls&lt;br /&gt;
Werden mal mit &amp;quot;Schutzmechanismen&amp;quot;, mal mit &amp;quot;Sicherheitskomponenten&amp;quot; und dann wieder als &amp;quot;Sicherheitsfunktionen&amp;quot; bezeichnet. Hier macht eine einheitliche Benennung sicherlich Sinn und ist weniger verwirrend.&lt;br /&gt;
&lt;br /&gt;
; 2. &amp;quot;Eine Web-Anwendung ist in der Regel ein verteiltes, komplexes System bestehend aus unterschiedlichen Komponenten (z. B. Webserver, Applikationsserver, Hintergrundsysteme)&amp;quot;&lt;br /&gt;
&lt;br /&gt;
Eine Webanwendung besteht sicher nicht aus einem Webserver- oder anderer infrastruktureller Komponenten, sondern ist Software welches diese nutzt.&lt;br /&gt;
&lt;br /&gt;
; 3. &amp;quot;Bei individuell entwickelten Web-Anwendungen sind im Allgemeinen die Frameworks, Komponenten und Schnittstellen im Rahmen der Konzeption auszuwählen und deren Einbindung und Absicherung zu betrachten....Im Gegensatz dazu ist bei der Konzeption von Web-Anwendungen auf Basis von Standardsoftware insbesondere auf die Auswahl der Software und die Konfiguration der Teilkomponenten zu achten&amp;quot;&lt;br /&gt;
&lt;br /&gt;
Wir unterscheiden im Rahmen von Webanwendungen eigentlich Free or Opensource Software (FOSS bzw. FLOSS), Standardsoftware und Individualsoftware voneinander. Wir unterscheiden nicht Frameworks von Standardsoftware. Frameworks können Teil von Standardsoftware sein, wie etwa bei SharePoint, SAP, etc, oder aber FOSS, wie etwa Spring. Die ganzen Absätze machen für mich daher keinen Sinn.&lt;br /&gt;
&lt;br /&gt;
; 4. &amp;quot;Eine Sicherheitsfunktion (z. B. Authentisierung, Autorisierung) wird nicht an einer Stelle umgesetzt und verwendet, sondern ist mehrfach in der Web- Anwendung realisiert. Wird diese Sicherheitsfunktion an den verschiedenen Stellen unterschiedlich umgesetzt, führt dies zu einem uneinheitlichen Sicherheitsniveau.&amp;quot;&lt;br /&gt;
&lt;br /&gt;
Natürlich ist die mehrfache Verwendung bestimmter Security Controls, beispielsweise von Zugriffskontrollen (Complete-Mediation) oder Validierung (Robustheit) erstrebenswert. Was der Autor hier wahrscheinlich meinte, war die Notwendigkeit diese zu Kapseln bzw. zu Externalisieren. Das bezieht sich im übrigen nicht nur auf die Controls selbst, sondern auch auf ihre Parametrisierung (etwa. über Konfigdateien / XACML).&lt;br /&gt;
&lt;br /&gt;
Wichtiger wäre in diesem Zusammenhang zudem die fehlende Berücksichtigung bestimmter Security Controls.&lt;br /&gt;
&lt;br /&gt;
; 5. &amp;quot;Auswahl von Web-Anwendungen auf Basis von Standardsoftware&amp;quot;&lt;br /&gt;
Was will der Satz sagen? Ich wähle Standardsoftware aus, aber doch keine Webanwendungen. Oder heißt das, ich kaufe eine existierende Anwendung ein (Webanwendung!=Indivudualsoftware)? &lt;br /&gt;
&lt;br /&gt;
; 6. &amp;quot;Das ausgewählte Produkt verfügt nicht über die ausreichende Sicherheitsfunktionalität, ... Daher müssen die notwendigen Schutzmechanismen nachträglich hinzugefügt werden, wodurch zusätzliche Aufwände entstehen.&amp;quot;&lt;br /&gt;
Das ist etwas sehr positiv formuliert. Tatsächlich können fehlende Security Controls in zugekaufter Software (insb. Standardsoftware) in der Realität häufig gar nicht hinzugefügt werden oder nur perimetrisch (z.B. per WAF oder Access Gateway).&lt;br /&gt;
&lt;br /&gt;
; 7. &amp;quot;Die Hintergrundsysteme werden unzureichend abgesichert und dadurch ist die Datenbank der Web-Anwendung aus dem Internet erreichbar.&amp;quot;&lt;br /&gt;
Gehören fehlende Netzwerksegmentierung bzw. Firewallregeln wirklich in diesen Kontext? Das ist doch eigentlich Grundschutz der Infrastruktur, oder?&lt;br /&gt;
&lt;br /&gt;
; 8. &amp;quot;Aufgrund schwacher Parameter in der Konfiguration des Frameworks zum Session-Management werden unsichere SessionIDs erzeugt.&amp;quot;&lt;br /&gt;
Was sind &amp;quot;schwache&amp;quot; Parameter?&lt;br /&gt;
&lt;br /&gt;
Welches Framework erlaubt unsichere SessionIDs durch eine &amp;quot;schwache&amp;quot; Konfiguration zu erzeugen?&lt;br /&gt;
&lt;br /&gt;
; 9. &amp;quot;Wird die Konfiguration des Web-Browsers durch einen Angreifer manipuliert, können die clientseitig umgesetzten&amp;quot;&lt;br /&gt;
&lt;br /&gt;
Manipuliert ein Angreifer die Konfguration seines Webbroswers, wenn er einen MITM-Proxy konfiguriert?&lt;br /&gt;
&lt;br /&gt;
Wie bereits bei den &amp;quot;Goldenen Regeln&amp;quot; angemerkt, gilt auch hier, das manche Security Controls auch clientseitig umgesetzt werden dürfen (etwa. zur Verhinderung von Dom-Based XSS).&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== &amp;quot;G 5.WA10 Fehler in der Web-Anwendungslogik&amp;quot; (Dennis) ==&lt;br /&gt;
; 1. &amp;quot;Damit kann aufgrund der Prüfreihenfolge ein hoher Ressourcenverbrauch provoziert werden, der für Denial-of-Service-Angriffe ausgenutzt werden kann.&amp;quot;&lt;br /&gt;
Meiner Meinung nach passt in diesem Kontext die Attacke DoS nicht ganz. Falls die nachfolgende Funktionalität wegen der langen Ausführungszeit der Filterkomponente übersprungen wird bzw. ein Fehler auftritt würde dies meiner Ansicht in die Thematik Anwendungslogik passen. Eine DoS-Attacke kann hingegen anhand jeder Funktion durchgeführt werden.&lt;br /&gt;
&lt;br /&gt;
== &amp;quot;G 5.WA11 Umgehung clientseitig umgesetzter Sicherheitsfunktionen von Web-Anwendungen&amp;quot; (Dennis) ==&lt;br /&gt;
; 1. &amp;quot;Ein Angreifer kann diese ausnutzen, um beispielsweise unbefugt Befehle an Hintergrundsysteme der Web-Anwendung zu übermittlen (z.B. in Form von Datenbankanfragen bei einer SQL-Injection).&amp;quot;&lt;br /&gt;
Umformulierung des Inhalts der Klammer. Hatte beim ersten Lesen für mich den Anschein, als ob ein Formular genutzt werden könnte welches den Nutzer aufforder eine SQLI einzugeben. Ich denke &amp;quot;Datenbankanfrage zwecks Ausführung einer SQL-Injection&amp;quot; würde besser passen.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== G 2.WA02 Mängel bei der Entwicklung und der Erweiterung von Web-Anwendungen (Matthias) ==&lt;br /&gt;
&lt;br /&gt;
Allgemein ist de obere Teil ok, die aufgezählten &amp;quot;Auswirkungen von fehlenden Vorgaben&amp;quot; verstehe ich jedoch nicht. Wo ist etwa der Bezug von Barrierefreiheit auf die Anwendungssicherheit?&lt;br /&gt;
&lt;br /&gt;
Mein Vorschlag, um diese Punkte etwa sinnvoll umzubauen:&lt;br /&gt;
* &amp;quot;Fehlendes Vorgehensmodell&amp;quot;: Bezug auf fehlende Berücksichtigung von Sicherheit im SDLC. Statt eines SDLCs selbst sollte hier besser auf die Notwendigkeit eines Secure Development Lifecycle (SDL) hingewiesen werden&lt;br /&gt;
* &amp;quot;Fehlende Programmierrichtlinien&amp;quot; =&amp;gt; Besser wäre hier &amp;quot;Fehlende Sicherheitsrichtlinien in der Programmierung&amp;quot; also &amp;quot;Secure Coding Guidelines&amp;quot;&lt;br /&gt;
* &amp;quot;Testfälle&amp;quot; =&amp;gt; &amp;quot;Sicherheitsrelevante Testfälle&amp;quot; (z.B. Security Unit Tests). &lt;br /&gt;
* &amp;quot;Barrierefreiheit&amp;quot;: Warum nicht an dieser Stelle die Auswirkungen von Sicherheitsfunktionen auf die Bedienbarkeit, etwa anhand von CAPTCHAS erläutern?&lt;br /&gt;
&lt;br /&gt;
== G 2.WA03 Unzureichender Schutz personenbezogener Daten bei Web-Anwendungen (Matthias) ==&lt;br /&gt;
&lt;br /&gt;
Der Titel dieses Bausteines heißt &amp;quot;Schutz personenbezogener Daten&amp;quot;, die genannten Beispiele beziehen sich bis auf den letzten jedoch auf die missbräuchliche (oder zumindest problematische) Nutzung aus Sicht des Datenschutzes. &lt;br /&gt;
&lt;br /&gt;
Die Punkt 1-3 sollten daher besser entfallen und z.B. durch die Folgenden ersetzt werden:&lt;br /&gt;
* Unsichere Einbindung von sozialen Netzwerken (Bezug nehmen auf den Like-Button bei Facebook)&lt;br /&gt;
* Unsichere Einbindung von Werbeinhalten&lt;br /&gt;
* Unsichere Übertragung und Caching&lt;br /&gt;
* Unsichere Protokollierung&lt;br /&gt;
* Ungenügender Zugriffsschutz&lt;br /&gt;
* Verstoß des Minimalprinzips bzw. der Zweckgebundenheit (welche Daten werden wirklich benötigt)&lt;br /&gt;
&lt;br /&gt;
Auch wäre es ggf. zumindest einen Verweis auf das BDSG zu machen.&lt;br /&gt;
&lt;br /&gt;
== G 4.33 Unzureichende oder fehlende Authentisierung (Matthias) ==&lt;br /&gt;
&lt;br /&gt;
; 1. Erster Absatz: &amp;quot;Wenn Authentisierungsmechanismen fehlen oder zu schlecht sind&amp;quot;&lt;br /&gt;
&lt;br /&gt;
&amp;quot;schlecht&amp;quot; sollte vlt besser durch &amp;quot;unzureichend&amp;quot; ersetzt werden.&lt;br /&gt;
&lt;br /&gt;
; 2. &amp;quot;Sicherheitslücken entstehen bei... der Benutzerauthentisierung&amp;quot;&lt;br /&gt;
&lt;br /&gt;
Hier findet nur ein Bezug auf &amp;quot;Passwörter&amp;quot; statt. Der Bezug auf die fehlerhaft implementierte oder dem Schutzbedarf ungenügende Schutzmechanismen (z.B. keine 2-Faktor-Authentisierung bei hochsensiblen Daten) fehlt. Auch auf das komplette fehlen von Authentisierungs-Controls wird hier nicht  eingegangen&lt;br /&gt;
&lt;br /&gt;
; 3. &amp;quot;Sicherheitslücken entstehen bei... der Komponentenauthentisierung&amp;quot;&lt;br /&gt;
&lt;br /&gt;
Wie bei 2., wird auch hier wieder nur auf Passwörter, nicht jedoch auf das fehlen von Controls selbst eingegangen. An dieser Stelle fehlt auch ein Hinweis auf die Notwendigkeit dedizierter Benutzeraccounts.&lt;br /&gt;
&lt;br /&gt;
; 4. &amp;quot;Sicherheitslücken entstehen bei... der Wahl des Verfahrens&amp;quot;&lt;br /&gt;
&lt;br /&gt;
Statt untauglich würde ich auch hier von &amp;quot;dem Schutzbedarf der Daten nicht angemessen&amp;quot; sprechen, eigentlich gehört das für mich aber in die obigen Punkte.&lt;br /&gt;
&lt;br /&gt;
; 5. Serverseitige Authentisierung fehlt&lt;br /&gt;
&lt;br /&gt;
Auch der Server (bzw. die Anwendung selbst) kann sich fehlerhaft oder ungenügend beim Benutzer authentsieren, etwa über DNS, SSL-Zertifikate, etc.&lt;br /&gt;
&lt;br /&gt;
== G 4.WA04 Unzureichende Validierung von Ein- und Ausgabedaten bei Web-Anwendungen (Matthias) ==&lt;br /&gt;
&lt;br /&gt;
; 1. &amp;quot;Unzureichende Validierung von Eingabedaten&amp;quot;&lt;br /&gt;
&lt;br /&gt;
Die genannten Beispiele sind genau keine korrekten Beispiele für diesen Fall, sondern betreffen die Ausgabevalidierung bzw. Enkodierung. Typische Fehler der Eingabevalidierung ist eine Manipulierbarkeit der Business Logik.&lt;br /&gt;
&lt;br /&gt;
; 2. &amp;quot;Unzureichende Validierung von Ausgabedaten&amp;quot;&lt;br /&gt;
&lt;br /&gt;
Hier geht es zentral um die Verhinderung von Interpreter Injection, also serverseitig (z.B. SQL oder LDAP Injection) oder clientseitig (XSS, JSON Injection, etc.). Statt &amp;quot;können die Ausgaben Schadcode&amp;quot; enthalten würde ich hier eher davon Sprechen, dass ein solcher Interpreteraufruf manipuliert werden kann (was dann z.B. zur Einschleusung von Schadcode genutzt werden kann).&lt;br /&gt;
&lt;br /&gt;
; 3. &amp;quot;Die Suchfunktion der Web-Anwendung verwendet die Eingaben der Benutzer ungefiltert&amp;quot;&lt;br /&gt;
&lt;br /&gt;
Mit ungenügender &amp;quot;Filterung&amp;quot; hat SQL Injection nichts zu tun,  eigentlich geht es hierbei darum, dass SQL-Anfragen dynamisch mit unvalidierten Eingebedaten zusammengebaut (konkateniert) werden.&lt;br /&gt;
&lt;br /&gt;
; 4. &amp;quot;Ungefilterter HTML-Code in Kommentar-Funktion&amp;quot;&lt;br /&gt;
&lt;br /&gt;
Hier fehlt der Bezug auf persistentes XSS, das hier sicherlich zentral ist.&lt;br /&gt;
&lt;br /&gt;
== G 4.WA05 Fehlende oder mangelhafte Fehlerbehandlung durch Web-Anwendungen (Tobias) ==&lt;br /&gt;
; Abschnitt &amp;quot;Unsichere Fehlerbehandlung&amp;quot;&lt;br /&gt;
Die G adressiert &amp;quot;Unsichere Fehlerbehandlung&amp;quot;, der Abschnitt die &amp;quot;Unsichere Fehlerbehandlung in Sicherheitskomponenten&amp;quot;. Entsprechend sollte der fettgedruckte Teil angepasst werden.&lt;br /&gt;
&lt;br /&gt;
; &amp;quot;fehlende SQL-Parameter,&amp;quot;&lt;br /&gt;
Sollte besser &amp;quot;Fehlermeldungen bei ungültigen SQL-Abfragen&amp;quot; lauten.&lt;br /&gt;
&lt;br /&gt;
; &amp;quot;Auch scheinbar unkritische Informationen, wie die Meldung ob (..)&amp;quot;&lt;br /&gt;
Korrekt, allerdings nicht nachvollziehbar, wenn das Problem der Leser nicht schon bekannt ist. Daher erweitern nach &amp;quot; Rahmen von Brute-Force-Angriffen ausgenutzt werden.&amp;quot; mit &amp;quot;. Bei Brute-Force-Angriffen wäre in diesem Fall klar, dass der Benutzername gültig ist.&amp;quot; &lt;br /&gt;
&lt;br /&gt;
== G 4.WA06 Unzureichende Nachvollziehbarkeit von sicherheitsrelevanten Ereignissen bei Web-Anwendungen (Matthias) ==&lt;br /&gt;
&lt;br /&gt;
; 1. Erster Absatz: &amp;quot;Die Behebung einer Schwachstelle ist dann nicht oder nur unter erschwerten Bedingungen möglich.&amp;quot;&lt;br /&gt;
&lt;br /&gt;
Hier würde ich ergänzen: &amp;quot;...und Angriffe auf die Anwendungen können ggf. nicht erkannt oder nachvollzogen werden&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
; 2. &amp;quot;Beispiele&amp;quot;: Kommulierbarkeit&lt;br /&gt;
&lt;br /&gt;
Hier fehlt auch ein Bezug auf die Kommulierbarkeit von SIcherheitsereignissen, dass diese also auch von solchen anderer Systeme in Verbindung gesetzt werden können&lt;br /&gt;
&lt;br /&gt;
; 3. &amp;quot;Beispiele&amp;quot;: Gerichtsverwertbarkeit&lt;br /&gt;
&lt;br /&gt;
Auch die Möglichkeit zur Gerichtsverwertbarkeit (etwa durch eindeutigen Zeitstempel) und manipulationssicherer Speicherung, würde ich an dieser Stelle unbedingt erwähnen.&lt;br /&gt;
&lt;br /&gt;
== G 4.WA07 Offenlegung von Informationen bei Web-Anwendungen (Matthias) ==&lt;br /&gt;
&lt;br /&gt;
; 1. Titel&lt;br /&gt;
&lt;br /&gt;
Hier würde ggf. &amp;quot;Offenlegung vertraulicher Informationen&amp;quot; sicher besser passen als &amp;quot;Offenlegung von Informationen&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
; 2. Beispiellink&lt;br /&gt;
&lt;br /&gt;
Ein Beispiellink (mit und ohne Token) würde sicher die Verständlichkeit dieser Schwachstelle verbessern.&lt;br /&gt;
&lt;br /&gt;
; 3. Erster Absatz: &amp;quot;Wenn demzufolge Informationen unnötig offengelegt werden, steigt die Wahrscheinlichkeit eines erfolgreichen Angriffs.&amp;quot;&lt;br /&gt;
&lt;br /&gt;
Interne Informationen auszublenden ist eine Härtungsmaßnahme, deren Anzeige erhöht aber nicht zwangsläufig die Wahrscheinlichkeit eines erfolgreichen Angriffs. Ich würde diesen Satz weglassen.&lt;br /&gt;
&lt;br /&gt;
 ; 4. Fehlende Punkte&lt;br /&gt;
&lt;br /&gt;
* Ein Hinweis auf HTTP Header wäre hier sicher erwähnenswert.&lt;br /&gt;
* Weiterhin bzgl. der Anzeige von Traces und ein Verweis auf den Entsprechenden Baustein zur Fehlerbehandlung&lt;br /&gt;
&lt;br /&gt;
== G 5.WA14 Cross-Site Request Forgery (CSRF, XSRF) (Matthias) ==&lt;br /&gt;
&lt;br /&gt;
; 1. Erster Absatz: &amp;quot;Können Funktionen einer Web-Anwendung ohne weitere Überprüfung der Authentizität des HTTP-Requests (z.B. durch Tokens in versteckten Formularfeldern) genutzt werden&amp;quot;&lt;br /&gt;
&lt;br /&gt;
Statt &amp;quot;Funktionen&amp;quot; würde ich besser von &amp;quot;schreibenden Aktionen&amp;quot; sprechen, dann macht der Satz mehr Sinn.&lt;br /&gt;
&lt;br /&gt;
; 2. Dritter Absatz: &amp;quot;Im Gegensatz zu XSS (siehe ...￼ ) ist das Angriffsziel nicht die Information auf dem Client (z. B. in Cookies),&amp;quot;&lt;br /&gt;
&lt;br /&gt;
Dieser (Halb-)Satz macht keinen Sinn, auch weil es bei XSS nicht nur im Informationen auf dem Cient geht. Vorschlag: &amp;quot;ist das Angriffsziel nicht die Ausführung von Skriptcode, sondern von unbefugten, schreibenden Aktionen im Kontext des angemeldeten Benutzers.&amp;quot;&lt;br /&gt;
&lt;br /&gt;
; 3. Session Riding&lt;br /&gt;
&lt;br /&gt;
Session Riding ist quasi nur ein anderer Begriff für CSRF. Die einzige Form von CSRF die mir bekannt ist, sind Angriffe mit Standard-Passwörtern auf HTTP-Basic-Auth geschützten Ressourcen.&lt;br /&gt;
&lt;br /&gt;
Im Grunde ist Session Riding aber nur ein Synonym für CSRF. Der Absatz ist daher auch nur eine Wiederholung der obigen Beschreibung.&lt;br /&gt;
&lt;br /&gt;
; 4. Zum Beispiel: &amp;quot;Durch einen präparierten Link auf einer Webseite wird die Änderung des Zugangspasswortes des Routers eingeleitet.&amp;quot;&lt;br /&gt;
&lt;br /&gt;
Etwas ungüngstig ausgedrückt. Besser wäre: &amp;quot;wird eine Anfrage zur Änderung des Zugangspasswortes an den Router gesendet. Hierbei sendet der Browser automatisch den Session Cookie mit, worüber die Webanwendung die Authentizität der Anfrage verifiziert und die Änderung durchführt.&amp;quot;&lt;br /&gt;
&lt;br /&gt;
== G 5.WA18 Clickjacking (Matthias) ==&lt;br /&gt;
&lt;br /&gt;
Hier stellt sich mir nur die allgemeine Frage, ob Clickjacking, bzw. der Schutz davor tatsächlich einem Grundschutz zuzurechnen ist. Persönlich würde ich dies nicht tun.&lt;br /&gt;
&lt;br /&gt;
== M 2.WA02 Dokumentation der Architektur von Web-Anwendungen (Matthias) ==&lt;br /&gt;
&lt;br /&gt;
; Verantwortlich für die Umsetzung&lt;br /&gt;
Hier wäre auch die Nennung des &amp;quot;Architekten&amp;quot; sinnvoll&lt;br /&gt;
 &lt;br /&gt;
; Fehlende Bestandteile der Dokumentation:&lt;br /&gt;
* Schutzbedarf des Systems sowie der verarbeiteten Daten&lt;br /&gt;
* Schützenswerte Daten und Funktionen (Assets)&lt;br /&gt;
* Betriebliche Anforderungen an die Sicherheit bzw. eingesetzte Plattform&lt;br /&gt;
* Dokumentierte Konfigurationseinstellungen &lt;br /&gt;
* BIA (RTO, RPO)&lt;br /&gt;
* Schnittstellen&lt;br /&gt;
* Trust Boundaries&lt;br /&gt;
* Akteure (bzw. Trust Level)&lt;br /&gt;
* Sicherheitsannahmen&lt;br /&gt;
* Geltende Compliance-Anforderungen (BDSG, PCI DSS, etc.)&lt;br /&gt;
&lt;br /&gt;
; Benutzermanagement&lt;br /&gt;
&lt;br /&gt;
Wenn damit das Identity Management gemeint ist, gehört das Dokumentiert, ist aber keine Sicherheitsfunktion. Oder ist hiermit das Rollen- und Berechtigungskonzept gemeint? Grenzt sich aus meiner Sicht schwer mit dem Thema Authentisierung ab. &lt;br /&gt;
&lt;br /&gt;
; Prüffragen&lt;br /&gt;
&lt;br /&gt;
Hier fehlt etwas in Bezug auf Sicherheitsanforderungen. Beispiel: &amp;quot;Werden Sicherheitsanforderungen an den Betrieb während der Entwicklung abgestimmt und dokumentiert&amp;quot;&lt;br /&gt;
&lt;br /&gt;
== M 2.WA12 Entwicklung und Erweiterung von Anwendungen (Markus) ==&lt;br /&gt;
; &amp;quot;Es sollte darauf geachtet werden, dass Sicherheitsanforderungen&lt;br /&gt;
vollständig durch Sicherheitsmechanismen erfüllt und zur Erstellung von&lt;br /&gt;
Testfällen festgehalten werden.&amp;quot; --&amp;gt; Bessere Formulierung würde aussagen, dass die Sicherheitsanforderungen durch Testfälle verifiziert werden.&lt;br /&gt;
&amp;quot;(z. B. durch Kommentare im&lt;br /&gt;
Quelltext). Somit ist der Quelltext zu einem&amp;quot; --&amp;gt; Das ist kein empfehlenswerter Programmierstiel! Raus mit diesem Kommentar&lt;br /&gt;
;&amp;quot;Zum Schutz vor dem Verlust bereits entwickelter und verworfener&lt;br /&gt;
Lösungen sowie zu Dokumentationszwecken sollte die Historie der&lt;br /&gt;
Änderungen festgehalten werden (z. B. durch ein Revisionssystem).&amp;quot; --&amp;gt; Auch diesen Absatz können wir streichen - Kein professioneller Programmierer arbeitet ohne Versionierugssystem.&lt;br /&gt;
;&amp;quot;Bei Web-Anwendung sollten die Webseiten auf Konformität zu dem&lt;br /&gt;
verwendeten Standard (z. B. HTML-Standard) getestet werden. Dadurch&lt;br /&gt;
können unvorgesehene Seiteneffekte aufgrund einer Fehlinterpretation&lt;br /&gt;
seitens der Browser vermieden werden.&amp;quot; --&amp;gt; Könnte man noch um &amp;quot;Die Software ist in möglichst vielen Browsern zu testen&amp;quot; erweitern.&lt;br /&gt;
;Generell geht der Autor leider nicht auf die Rollen &amp;amp; Rechte Verteilung ein. Mir fehlt der Hinweis, das es eine personelle Trennung zwischen Entwicklung, Test und Betrieb geben muss.&lt;br /&gt;
;Zum Thema Wartung / Betrieb --&amp;gt; Hier wird keine Aussage getroffen bezüglich Log_Files. Dieses Thema kann kritische Auswirkungen haben, Bsp.: logging ganzer HTTP-Requests im LogLevel=Debug.&lt;br /&gt;
; &amp;quot;Produktspezifische Sicherheitsfunkionalität&amp;quot; - Dieser Absatz ist gefährlich - der Angreifer ist nicht zur Verwendung dies Zielbrowsers gezwungen. Deshalb können Browser-spez. Sicherheitsfunktionen nur als Add-ON gewertet werden.&lt;br /&gt;
; &amp;quot;Festlegung der Entwicklungsumgebung&amp;quot; - Dieser Absatz geht nicht auf die zu verwendenden Testdaten ein. Der Hinweis, dass Live-Daten / Kundendaten nichts in Test- &amp;amp; Entwicklungsumgebungen zu suchen haben fehlt!!!&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== M 2.WA24 Web-Tracking (Matthias) ==&lt;br /&gt;
&lt;br /&gt;
; Letzter Absatz: &amp;quot;Falls eine Auswertung von Nutzerdaten, insbesondere personenbezogener Daten, .. &amp;quot;&lt;br /&gt;
&lt;br /&gt;
Hier sollte denke ich besser von personenbeziehbaren Daten gesprochen Werten. Dies betrifft etwa die Zuordnung von Surfverhalten zu einer bestimmten Person. Dies sollte stets nach den Prinzipien Datensparsamkeit und Datenvermeidung, Erforderlichkeit, sowie Zweckbindung erfolgen. Ist Webtracking nicht personenbeziehbar ist dies kein Thema für den Datenschutz.&lt;br /&gt;
&lt;br /&gt;
== M 4.WA04 Authentisierung bei Web- Anwendungen (Matthias) ==&lt;br /&gt;
&lt;br /&gt;
; Vermischung von Authentisierung und Session Management &lt;br /&gt;
&lt;br /&gt;
Bei diesem Baustein findet eine ziemlich große Vermischung von Anforderung an die Authentisierung und das erst in &amp;quot;M 4.WA06 Session-Management bei Web- Anwendungen&amp;quot; behandelte Session Management statt (Beispiel: &amp;quot;Remember-Me-Funktion&amp;quot;). Beide Themen sollten sinnvollerweise getrennt voneinander zu betrachten und aufeinander zu beziehen.&lt;br /&gt;
&lt;br /&gt;
; Verwendung von Frameworks&lt;br /&gt;
&lt;br /&gt;
Die Anforderung ist schon ein wenig eingeschränkt. Besser passt hier denke ich die &amp;quot;Abbildung der Authentisierung über Standardkomponenten (Bibliotheken oder Frameworks)&amp;quot;. &lt;br /&gt;
&lt;br /&gt;
; Remember-Me-Funktion&lt;br /&gt;
&lt;br /&gt;
Siehe oben, gehört zum Session Management. Das ließt sich im übrigen so, als ob eine Webanwendung Credentials auf dem Client abhängt. &lt;br /&gt;
&lt;br /&gt;
; Grenzwerte für gescheiterte Anmeldeversuche&lt;br /&gt;
&lt;br /&gt;
Diese Empfehlung ist allgemein falsch, da sie sehr von der betrachteten Anwendung abhängt. Besser wäre hier allgemein von Mechanismen zur Verhinderung von automatisierten Angriffen zu sprechen (Anti-Automatisierung). &lt;br /&gt;
&lt;br /&gt;
Etwa umsetzbar durch&lt;br /&gt;
* Sperrung nach x Anmeldeversuchen&lt;br /&gt;
* Throttling&lt;br /&gt;
* Captchas&lt;br /&gt;
* Sicherheitsfragen&lt;br /&gt;
&lt;br /&gt;
Das allgemeine Sperren kann leicht für das gezielte Aussperren von Benutzern (User Lockout) verwendet werden. Was etwa bei Trading-Anwendungen nicht funktioniert.&lt;br /&gt;
&lt;br /&gt;
; Automatisiertes Zurücksetzen von Authentisierungsdaten&lt;br /&gt;
&lt;br /&gt;
Würde ich besser als &amp;quot;Passwort-Reset&amp;quot; bezeichnen.&lt;br /&gt;
&lt;br /&gt;
Weiterhin fehlt hier der Hinweis, dass statt ein automatisiertes Zurücksetzen, ein Mechanismus zu empfehlen ist, bei dem über ein hinterlegtes Sicherheitsmerkmal (Handy-Nummer oder E-Mail-Adresse) vom Benutzer zunächst eine Verifikation durchgeführt wird. Beispielsweise durch einen erhaltenen Link. Erst dann darf eine Änderung des Passwortes durch den Benutzer erfolgen.&lt;br /&gt;
&lt;br /&gt;
; Registrierung nicht behandelt&lt;br /&gt;
&lt;br /&gt;
Es existiert hier kein Punkt, der die sichere Implementierung von Benutzerregistrierungen behandelt.&lt;br /&gt;
&lt;br /&gt;
; Verweis auf Externalisierung fehlt.&lt;br /&gt;
&lt;br /&gt;
Statt die Authentisierung selbst durchzuführen kann eine Anwendung hierzu auf eine externe Komponente (Beispiel: SiteMinder oder Kerberos) zurückgreifen.&lt;br /&gt;
&lt;br /&gt;
; Verweis auf Behandlung von Credentials fehlt&lt;br /&gt;
&lt;br /&gt;
Auch wenn das  in &amp;quot;M 4.WA15 Schutz vertraulicher Daten bei Web- Anwendungen&amp;quot; ausführlich behandelt wird, sollte in diesem Baustein bereits auf den angemessenen Schutz von Authentisierungsdaten bei Übertragung und Speicherung hingewiesen werden.&lt;br /&gt;
&lt;br /&gt;
== M 4.WA05Umfassende Ein- und Ausgabevalidierung bei Web-Anwedungen (Markus) ==&lt;br /&gt;
; &amp;quot;Ablehnung der Daten im&lt;br /&gt;
Fehlerfall&amp;quot; --&amp;gt; Hier könnte man noch auf Tar-Pits eingehen - nur ein Vorschlag.&lt;br /&gt;
&lt;br /&gt;
== M 4.WA06Session-Management bei Web-Anwendungen (Markus, Matthias) ==&lt;br /&gt;
; &amp;quot;Übertragung der SessionID mittels GETRequest&amp;quot; --&amp;gt; Hier fehlt der Hinweis, dass die Lebensdauer dieser SessionIds kurz/kürzer sein muss, als im Falle der Speicherung im Cookie.&lt;br /&gt;
&lt;br /&gt;
([[User:Mrohr|Matthias]]) Die Anmerkung verstehe ich ehrlich gesagt ueberhaupt nicht, zumal das SM haeufig transparent zwischen Cookies und URL Rewriting wechselt. Wozu soll das gut sein? Wie soll das geschehen? Idealerweise sollte die Session ID niemals in die URL geschrieben werden, das sollte eigentlich genuegen.&lt;br /&gt;
&lt;br /&gt;
; &amp;quot;Verschlüsselte Übertragung von SessionIDs&amp;quot; --&amp;gt; Hier fehlt der Hinweis auf den Beast-Exploit. TLS Version &amp;gt; 1.0 verwenden!&lt;br /&gt;
&lt;br /&gt;
([[User:Mrohr|Matthias]]) Solange hier nicht auf eine explizite TLS Version eingegangen wird, sollte meiner grossen Ueberzeugung nach hier auch auf keine Exploits etc. eingagen werden, das gehoert an andere Stelle.&lt;br /&gt;
&lt;br /&gt;
; ([[User:Mrohr|Matthias]]) Weiterhin:&lt;br /&gt;
&lt;br /&gt;
 Es dürfen keine extern bekannten oder erratbaren Daten (z. B. IP-Adresse, Uhrzeit) in die Berechnung der SessionID einfließen.&lt;br /&gt;
&lt;br /&gt;
Die Aussage finde ich etwas problematisch, wichtiger ist, dass die Entropie ausreichend hoch ist. Haeufig werden etwa IPs von Load Balancern in die Session ID hineingeschrieben.&lt;br /&gt;
&lt;br /&gt;
 - Domain (z. B. webapp.domain.tld),&lt;br /&gt;
 - Path (z. B. /webapp/),&lt;br /&gt;
 - Secure und&lt;br /&gt;
 - HttpOnly.Beschränkte Sitzungsdauer&lt;br /&gt;
&lt;br /&gt;
Das sieht so aus, als ob es empfehlenswert ist, das Domain-Tag zu verwenden, das ist es sicherlich nicht. Was macht hier der Hinweis &amp;quot;Beschraenke Sizuungsdauer&amp;quot;?&lt;br /&gt;
&lt;br /&gt;
== M 4.WA07Fehlerbehandlung durch Web-Anwendungen (Markus) ==&lt;br /&gt;
; Konsistenter / Inkonsistener Zustand einer Webanwendung und der daraus resultierende Datenverlust: Hier fehlen mir die Punkte: DOS, Priv.Escalation, CodeExecution.&lt;br /&gt;
; Vermeidung vertraulicher Informationen in Fehlermeldungen --&amp;gt; Fehlermeldungen sollten ebenfalls eine Systeminformationen preisgeben (Softwareversion, Patchlevel, etc.)&lt;br /&gt;
; Abbruch des Vorgangs nach Auftreten eines Fehlers --&amp;gt; TarPits scheinen dem Autor umbekannt zu sein :)&lt;br /&gt;
; &amp;quot;Werden Fehler möglichst von der gleichen Komponente behandelt, in der&lt;br /&gt;
der Fehler aufgetreten ist?&amp;quot; --&amp;gt; Das &amp;quot;möglichst&amp;quot; sollten wir streichen.&lt;br /&gt;
&lt;br /&gt;
== M 4.WA08Schutz vor automatisierter Nutzung von Web-Anwendungen (Markus) ==&lt;br /&gt;
; &amp;quot;Brute-Force-&lt;br /&gt;
Angriffe (z. B. Erraten von Zugangsdaten) und Enumeration-Angriffe (z. B.&lt;br /&gt;
automatisiertes Ermitteln von gültigen Login-Namen)&amp;quot; -- die Beispiele sind identisch - besser Beispiele suchen, z.b. URL-Enumeration&lt;br /&gt;
&lt;br /&gt;
([[User:Mrohr|Matthias]]) Das sehe ich anders. Brute-Forcing bezieht auf Passwoerter und Enumeration auf Benutzernamen, etwa durchs hochzaehlen. Auch wenn ich zustimmen muss, dass die nicht ganz gluecklich gewaehlt wurden. Stann &amp;quot;Erraten von Zugangsdaten&amp;quot; wuerde ich besser von &amp;quot;Erraten von Passwoertern&amp;quot; sprechen. Oder wie gesagt gleich auch auf andere Beispiele (etwa Object ID Enumeration) beziehen.&lt;br /&gt;
&lt;br /&gt;
== M 4.WA11Sichere Konfiguration von Web-Anwendungen (Markus) ==&lt;br /&gt;
; &amp;quot;Sicherer Umgang mit TLS/SSL&amp;quot; -- Hier fehlt der Hinweis, dass TLS-1.0 gebrochen ist&lt;br /&gt;
; &amp;quot;Zeichenkodierungskonfiguration&amp;quot; -- Ein Whitelisting abhängig von der Encodierung wäre ein weiterer Vorschlag&lt;br /&gt;
; &amp;quot;Restriktive Dateisystemberechtigungen&amp;quot; -- auch wenn es ein klassiker ist - der AS sollte ebenfalls mit von einem eingeschränkten Nutzer gestartet werden und nicht als root&lt;br /&gt;
; Administration Consolen:zur Ergänzen: Wenn diese nicht benötigit, sollten derartige Applikationen nicht deployed werden, unabhängig von möglichen Zugangsbeschränkungen.&lt;br /&gt;
&lt;br /&gt;
([[User:Mrohr|Matthias]]) Sorry, meiner Meinung nach hat die Bewertung von Kryptoverfahren hier abslut nichts zu suchen.Stattdessen sollte hier auf den entsprechenden [https://www.bsi.bund.de/ContentBSI/Publikationen/TechnischeRichtlinien/tr02102/index_htm.html Empfehlung des BSI] verwiesen werden, auch wenn dieses Dokument derzeit noch etwas outdated zu sein scheint.&lt;br /&gt;
&lt;br /&gt;
== M 4.WA13Kontrolliertes Einbinden von Daten und Inhalten bei Web-Anwendungen (Markus) ==&lt;br /&gt;
; Datei-Upload: Bei einem Upload werden Dateien durchaus in TEMP-Verzeichnissen gesammelt und danach weiterverarbeitet. Diese TEMP-Verzeichnisse sind im Rahmen einer Sicherheitsanalyse zu betrachten -&amp;gt; Möglicher (unbefugter) Zugriff auf weitere Uploads&lt;br /&gt;
; Upload komprimierter Dateien / großer Dateien birgt die Gefahr von DOS Angriffen&lt;br /&gt;
; Upload von Dateien kann bei weiterem Parsing zu Speicherengpässen führen --&amp;gt; DOS-Angriffe auf Thread-Local etc.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== M 4.WA14Restriktive Herausgabe sicherheitsrelevanter Informationen bei Web-Anwendungen (Markus, Matthias) ==&lt;br /&gt;
OK - Keine Anmerkungen von mir.&lt;br /&gt;
&lt;br /&gt;
[[User:Mrohr|Matthias]]) Von mir schon;)&lt;br /&gt;
&lt;br /&gt;
; Vermeidung von Kommentaren in ausgelieferten Webseiten&lt;br /&gt;
&lt;br /&gt;
Das ist leider total falsch, wir brauchen haeufig Komentare, aus Kompatibilitaetsgruenden. So wird etwa der JavaScript-Block haeufig auskommentiert.&lt;br /&gt;
&lt;br /&gt;
Wurde stattessen besser von sicherheitsrelevanten Kommentaren sprechen und als Massnahme generell Entwicklerkommentare ueber Sprachkonstruktre (etwa JSP) durchzufuehren.&lt;br /&gt;
&lt;br /&gt;
; Löschen nicht benötigter Dateien&lt;br /&gt;
&lt;br /&gt;
Hier wurde ich ggf. Dateien von Versionisierungstools (etwa Subversion) erwaehnen, das sehen wir schon recht haeufig.&lt;br /&gt;
&lt;br /&gt;
Statt Dateien einfach nur zu loeschen (was in der Praxis haeufig nicht so einfach ist) bietet es sich zudem an, den Zugriff auf bestimmte Dateien oder Dateitypen generell zu sperren, etwa mittels ACL im Apache.&lt;br /&gt;
&lt;br /&gt;
; Gibt die Web-Anwendung ausschließlich neutrale Fehlermeldungen aus und sind diese im Quelltext identisch? {E: C}&lt;br /&gt;
&lt;br /&gt;
Persoenlich verstehe ich das nicht. Wieseo neutrale Fehlermeldung? Das macht fuer mich nur beim Login Sin. Hierzu existiert in dem Text auch keinerlei Bezug. Ich wuerde das daher besser entfernen und im Rahmen der Fehlerbehandlung diskutieren. Mindestens sollte hier jedoch besser von &amp;quot;sicherheitsunbedentlichen Fehlermeldungen&amp;quot; oder so gesprochen werden.&lt;br /&gt;
&lt;br /&gt;
; Wird der Referrer bei Verlassen der Web-Anwendung (z. B. durch einen Link auf eine externe Seite) gefiltert?&lt;br /&gt;
&lt;br /&gt;
Diesen Punkt sehe ich als sehr Fallabhengig an. Es kann fuer seiten durchaus wuenschenswert sein, dass der Referer weitergegeben wird. Der Referer sollte natuerlich keine sensiblen Informationen enthalten, was ja an anderer Stelle (etwa Session Management) vorgegeben wird bzw. gegeben werden sollte.&lt;br /&gt;
&lt;br /&gt;
== M 4.WA15Schutz vertraulicher Daten bei Web-Anwendungen (Markus) ==&lt;br /&gt;
; Sichere kryptographische Algorithmen:&lt;br /&gt;
 Hier fehlt mir eine Liste der aktuelle als sicher geltenden Verfahren.&lt;br /&gt;
; Schlüssel&lt;br /&gt;
 Das die Schlüssel bestimmten Formaten entsprechen müssen ist ok - aber das Schlüsselmanagement wird gar nicht besprochen?&lt;br /&gt;
; Schutz der Daten im Browsercache&lt;br /&gt;
 Skripte und Browserplugins können ebenfalls auf den Browsercache zugreifen - diese werden hier nicht erwähnt.&lt;br /&gt;
; Maskierung von Passwörtern &lt;br /&gt;
 Dies schützt bei der Eingabe nur vor ShoulderSurfing nicht vor Skripten oder Plugins die diese an andere Server posten.&lt;br /&gt;
; Sicherung von Zugangsdaten:&lt;br /&gt;
 Zugangsdaten in einer Datei abzulegen - wenn auch ausserhalb des WebRoots ist keine gute Idee.&lt;br /&gt;
; Schutz von Quelltexten:&lt;br /&gt;
 Hier würde ich property files mit aufnehmen. der hinweis auf web-inf/classes fehlt - warum?&lt;br /&gt;
 Bei include-befehlen sind die pfadangaben zu überdenken.&lt;br /&gt;
&lt;br /&gt;
== M 4.WA16Zugriffskontrolle bei Web-Anwendungen (Markus) ==&lt;br /&gt;
; Zugriffskontrolle via Frameworks:&lt;br /&gt;
 Dieser Punkt (Frameworks) wird nur in einem Satz erwähnt. Es werden keine Bespiele gegeben - Das ist zu wenig.&lt;br /&gt;
 Es müssen alle Zugriffe geschützt werden. Eine Protokollierung aller Zugriffe mit den nötigen Informationen ist ebenfalls empfehlenswert.&lt;br /&gt;
; Datei Upload:&lt;br /&gt;
 Die Gefahr eines DOS wird hier nicht erwähnt.&lt;br /&gt;
&lt;br /&gt;
== M 4.WA19Verhinderung von Cross-Site Request Forgery (CSRF, XSRF) (Markus, Matthias) ==&lt;br /&gt;
; Verantwortliche: &lt;br /&gt;
 Entwickler und Admins!&lt;br /&gt;
([[User:Mrohr|Matthias]]) Korrekt, wobei auch in der Reihenfolge&lt;br /&gt;
&lt;br /&gt;
; Anti-CSRF-Token in hidden fields:&lt;br /&gt;
 Das ist keine gute Idee. Ich würde das streichen!&lt;br /&gt;
&lt;br /&gt;
([[User:Mrohr|Matthias]]) Watt? Anti-CSRF-Tokens in Hidden Fields sind die Standard-Massnahme. Wie denn sonst? Bitte nicht streichen!!! &lt;br /&gt;
&lt;br /&gt;
([[User:Mrohr|Matthias]]) Die Technik bei der die Session ID als Anti-CSRF-Token verwendet wird, wird als Double-Cookie Submit bezeichnet, das sollte hier referenziert werden.&lt;br /&gt;
&lt;br /&gt;
; Umgehung von Schutzmechanismen:&lt;br /&gt;
 Man in the middle hat keinen direkten Bezug zu CSRF! Das würde ich streichen.&lt;br /&gt;
([[User:Mrohr|Matthias]]) Der Hinweis ist korrekt. Wovon der Autor hier spricht ist Session Replay nicht CSRF.&lt;br /&gt;
&lt;br /&gt;
; Frameworks:&lt;br /&gt;
 Gute Idee - aber es gibt auch Features in den ApplicationServern die CSRF unterbinden - warum wird das nicht besprochen?&lt;br /&gt;
&lt;br /&gt;
([[User:Mrohr|Matthias]]) Sehe ich persoenlich nicht so, da CSRF primaer ein Applikations-Fehler ist, und auch in der Applikation und nicht im Environment (AppServer) geloest werden sollte. Auch wenn das manchmal ggf. die einzig machbare Loesung darstellt.&lt;br /&gt;
&lt;br /&gt;
([[User:Mrohr|Matthias]]) Was generell fehlt, ist ein Hinweis darauf, dass schreibende Requests generell per HTTP Post abgewickelt werden sollten, da HTTP Get keine &amp;quot;Safe Method&amp;quot;  (siehe HTTP 1.1, RFC 2616) ist.&lt;br /&gt;
&lt;br /&gt;
== M 4.WA20Sicherer Entwurf der Logik von Web-Anwendungen (Markus) ==&lt;br /&gt;
; Rollbacks:&lt;br /&gt;
 Tritt ein Fehler auf muss die Applikation einen konsistenten Datenstand zurück lassen. Das wird hier nicht erwähnt.&lt;br /&gt;
; RaceConditions:&lt;br /&gt;
 Fehler in der Geschäftslogik können auch durch zwei gleichzeitige Sessions auf einer Webapplikation auftreten - das wird hier nicht besprochen.&lt;br /&gt;
&lt;br /&gt;
== M 4.WA22Verhinderung der Blockade von Ressourcen (DoS) bei Web-Anwendungen (Markus) ==&lt;br /&gt;
; Datenspeicher:&lt;br /&gt;
 Neben dem Datenspeicher sollte auch der RAM-Verbrauch pro Thread der Applikation limitiert werden.&lt;br /&gt;
; Voraggregation von Daten / Caching&lt;br /&gt;
 Dieser Punkt fehlt: Stark ressourcen belastende Anfragen können auch in Lastarmen Zeiten vorberechnet werden.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== M 4.WA25Verhinderung von Clickjacking (Markus) ==&lt;br /&gt;
Ok - das passt soweit.&lt;br /&gt;
&lt;br /&gt;
== M 5.WA21Sichere Anbindung von Hintergrundsystemen an Web-Anwendungen (Markus) ==&lt;br /&gt;
; Verantwortliche:&lt;br /&gt;
 Architekten fehlen. Entwickler müssen die Views umsetzen und die Datasource entsprechend einbinden - die fehlen hier ebenfalls.&lt;br /&gt;
; DirectorySystem Beispiel:&lt;br /&gt;
 Das DirectorySystem wird in dem angegeben Beispiel zum Single Point of Failure - das wird verschwiegen.&lt;br /&gt;
; Firewalls:&lt;br /&gt;
 Das sind fachlich-blinde Systeme. Was ist mit WAFs / IDS / IPS etc.?&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== M 5.WA23Systemarchitektur einer Web-Anwendung (Markus) ==&lt;br /&gt;
; Verantwortliche:&lt;br /&gt;
Auch hier fehlend wieder die Architekten. &lt;br /&gt;
; Virtualisierung:&lt;br /&gt;
Virtualisierung bietet weitere Angriffsvektoren (z.B.: Hypervisor) die eine &amp;quot;Blech&amp;quot;Farm nicht bietet.&lt;/div&gt;</summary>
		<author><name>Mrohr</name></author>	</entry>

	<entry>
		<id>https://wiki.owasp.org/index.php?title=Talk:OWASP_Review_BSI_IT-Grundschutz_Baustein_Webanwendungen&amp;diff=130109</id>
		<title>Talk:OWASP Review BSI IT-Grundschutz Baustein Webanwendungen</title>
		<link rel="alternate" type="text/html" href="https://wiki.owasp.org/index.php?title=Talk:OWASP_Review_BSI_IT-Grundschutz_Baustein_Webanwendungen&amp;diff=130109"/>
				<updated>2012-05-18T16:11:45Z</updated>
		
		<summary type="html">&lt;p&gt;Mrohr: /* M 4.WA08Schutz vor automatisierter Nutzung von Web-Anwendungen (Markus) */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Since it's about a review of a document in German, all the discussions will be done in German :-)&lt;br /&gt;
&lt;br /&gt;
Diskussionen rund um den Review des &amp;quot;IT-Grundschutzbausteins Webanwendungen&amp;quot; finden hier statt, sinnvollerweise auf Deutsch :-)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Vorschlag für Kriterien, die an unser Review angelegt werden sollten (.kai) ==&lt;br /&gt;
&lt;br /&gt;
* Der Baustein soll alle wichtigen Themen der Entwicklung sicherer&lt;br /&gt;
Webanwendungen enthalten.&lt;br /&gt;
&lt;br /&gt;
* Der Baustein soll die verschiedenen Phasen der Software-Entwicklung&lt;br /&gt;
vollständig abdecken.&lt;br /&gt;
&lt;br /&gt;
* Der Baustein soll zwischen verbindlichen, prüfbaren Vorgaben und&lt;br /&gt;
unverbindlichen Empfehlungen sprachlich sauber unterscheiden (hier&lt;br /&gt;
spielt mein Auditorenblick eine Rolle). Vor allem soll der Baustein&lt;br /&gt;
verbindliche Anforderungen auch tatsächlich stellen. Alle&lt;br /&gt;
verbindlichen Anforderungen müssen unabhängig von der jeweiligen&lt;br /&gt;
Umgebung auch umsetzbar sein, d.h. sie müssen entsprechend generisch&lt;br /&gt;
sein.&lt;br /&gt;
&lt;br /&gt;
* Die Maßnahmen sollen nur in (begründbaren) Ausnahmen zu Empfehlungen&lt;br /&gt;
von OWASP im Widerspruch stehen.&lt;br /&gt;
&lt;br /&gt;
* Die Maßnahmen sollen verständlich und anwendbar sein.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== &amp;quot;Hilfsmittel&amp;quot; (Markus) ==&lt;br /&gt;
Ich würde das Script zur Vermeidung von Clickjacking wrappen und nicht als losen Skript-block in den Text einbinden - einfach schlechter Programmierstiel diese losen Blöcke.&lt;br /&gt;
Der Zugriff auf das Body-Element mit byTagName-Array[0] ist auch nicht wirklich gut. Ich halte Zugriffe über das DOM (klassisch), bei ID bzw. XPATH für besser. &lt;br /&gt;
&lt;br /&gt;
SQL-Injection Characters:&lt;br /&gt;
die Pipe fehlt hier zur Textkonatenierung&lt;br /&gt;
+ / - haben auch eine Bedeutung bei JOINs.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== &amp;quot;Goldene Regeln&amp;quot; (Matthias) ==&lt;br /&gt;
&lt;br /&gt;
Hier meine Anmerkungen zu diesem Dokument:&lt;br /&gt;
&lt;br /&gt;
; 1. Für mich fehlende Punkte&lt;br /&gt;
* Korrektur der Ursache (Root Cause) von Schwachstellen statt  Verhinderung deren Ausnutzung&lt;br /&gt;
* Bezug auf Minimierung der Angriffsfläche und Least-Privilege-Prinzip&lt;br /&gt;
* Bezug auf Defense-in-Depth-Prinzip&lt;br /&gt;
* Verwendung von getesteten Security APIs (z.B. OWASP ESAPI) statt selbstentwickelter Funktionen&lt;br /&gt;
* Bezug auf Externalisierung von Sicherheitsfunktionen, sowie deklerative vor programmatischer Sicherheit.&lt;br /&gt;
&lt;br /&gt;
; 2. Begriff &amp;quot;Web-Anwendung&amp;quot;&lt;br /&gt;
Würde ich generell durch &amp;quot;Webanwendung&amp;quot; ersetzen.&lt;br /&gt;
&lt;br /&gt;
; 3. Einleitung (&amp;quot;Web-Anwendungen stellen Funktionalität zur Verfügung, ...&amp;quot;)&lt;br /&gt;
&lt;br /&gt;
Wozu dient dieser Satz?&lt;br /&gt;
&lt;br /&gt;
; 4. &amp;quot;Die Architektur der Web-Anwendung ist im Sicherheitskonzept zu  dokumentieren.....&amp;quot; &lt;br /&gt;
&lt;br /&gt;
Ich fände es sinnvoller, wenn hier von der &amp;quot;Sicherheitsarchitektur&amp;quot; gesprochen wird, welche etwa neben den sicherheitsrelevanten Datenflüssen, sensible Komponenten, Entry Points, Akteure architekturelle Security Controls wie Authentisierung, Kryptographie und natürlich die Trust Boundaries beinhaltet.&lt;br /&gt;
&lt;br /&gt;
; 5. &amp;quot;Bei Web-Anwendungen handelt es sich häufig um spezielle Eigenentwicklungen....&amp;quot;&lt;br /&gt;
&lt;br /&gt;
Erstens würde ich hier den geläufigen Begriff &amp;quot;Individualsoftware&amp;quot; verwenden. Zweitens würde ich statt bestimmte SDLC-Phasen vorzugeben (die Begriffe &amp;quot;Softwareverteilung&amp;quot; und &amp;quot;Integration&amp;quot; sind mir bei Webanwendungen bisher noch nicht so häufig untergekommen), besser von der Notwendigkeit sprechen, Sicherheit in allen Entwicklungsphasen zu berücksichtigen, also eines SDLs.&lt;br /&gt;
&lt;br /&gt;
; 6. &amp;quot;Alle Ein- und Ausgaben der Web-Anwendung müssen in eine normalisierte Form überführt werden....&amp;quot;&lt;br /&gt;
&lt;br /&gt;
Normalisierung ist für mich nicht gleich Kanonsierung, auch wenn beide Begriffe häufig als synonym verwendet werden.  Der Unterschied wird in der [http://owasp-esapi-java.googlecode.com/svn/trunk_doc/2.0-rc4/org/owasp/esapi/Encoder.html API-Beschreibung der ESAPI] erklärt. Die Normalisierungs-Funktion ist allerdings schon vor einiger Zeit aus der ESAPI [https://lists.owasp.org/pipermail/esapi-dev/2010-January/000266.html rausgeflogen]. Die generelle Kanonisierung von Ausgaben halte ich dazu für nicht sinnvoll.&lt;br /&gt;
&lt;br /&gt;
Zweitens, finde ich den weiteren Text zwar grundsätzlich formal korrekt, aber so allgemein, dass dieser glaube ich niemandem so richtig etwas bringt.  &lt;br /&gt;
&lt;br /&gt;
Besser fände ich hier Ein- von Ausgabevalidierung grundsätzlich voneinander abzugrenzen. Etwa was ich per Eingabevalidierung (Längenprüfung, Casting, etc. per Whitelisting) und was mit Ausgebavalidierung (Enkodierung, Escaping, Parametrisierung) machen muss und kann.&lt;br /&gt;
&lt;br /&gt;
Eingabedaten können technisch zudem auch Werte eingelesener Property-Dateien sein. Muss ich die auch validieren? Ist das dann noch Grundschutz? &lt;br /&gt;
&lt;br /&gt;
; 7. &amp;quot;Für den Zugriff auf sensitive Funktionen oder Informationen muss die Web-Anwendung eine wirksame Authentisierung und Sitzungsverwaltung unterstützen. Die Eigenschaften der Sitzungs-ID müssen so gewählt werden, dass die Sitzung ausreichend geschützt ist. ....&amp;quot;&lt;br /&gt;
&lt;br /&gt;
Besser fände ich &amp;quot;eine Authentisierung, die über eine dem Schutzbedarf der Anwendung angemessene Stärke verfügt.&amp;quot; &lt;br /&gt;
&lt;br /&gt;
Eigentlich geht es doch mehr um den Schutz der Sitzungs-ID, da diese gewöhnlich im Verlauf einer Sitzung den Client authentisiert. Oder den Schutz des Zugriffs auf eine Sitzung. &lt;br /&gt;
&lt;br /&gt;
Zudem fehlt hier meiner Meinung nach der Hinweis auf die bevorzugte Verwendung getesteter Standardkomponenten.&lt;br /&gt;
&lt;br /&gt;
; 8. &amp;quot;Die Web-Anwendung sollte die zu übermittelnden Daten schützen.&amp;quot;&lt;br /&gt;
&lt;br /&gt;
Dies würde ich nur auf sensible Daten beziehen. Zusätzlich zu HTTPS würde ich hier schreiben, dass sensible Daten generell nicht in der URL übertragen werden dürfen.&lt;br /&gt;
&lt;br /&gt;
; 9. &amp;quot;Die Preisgabe interner Informationen (z.B. Kommentare, Fehlermeldungen)&amp;quot;&lt;br /&gt;
&lt;br /&gt;
Hier würde ich eher schreiben &amp;quot;(IN Kommentaren, Fehlermeldungen, HTTP Headern, etc.)&amp;quot;&lt;br /&gt;
&lt;br /&gt;
; 10. &amp;quot;Fehler müssen so behandelt werden, ... müssen Fehler bei der Autorisierung zu einer Verweigerung beim Zugriff auf die angeforderte Ressource führen.&amp;quot;&lt;br /&gt;
&lt;br /&gt;
Sprachlich: &amp;quot;Die Webanwendung muss sich stets in einem sicheren Zustand befinden. Beispielsweise müssen Fehler bei der Autorisierung zu einer Verweigerung des Zugriffs führen (Default-Deny-Strategie).&amp;quot;&lt;br /&gt;
&lt;br /&gt;
; 11. &amp;quot;Die Logging-Funktionen der Web-Anwendung müssen aufgetretene Ereignisse derart protokollieren, dass sicherheitskritische Vorfälle nachvollzogen werden können.&amp;quot;&lt;br /&gt;
&lt;br /&gt;
Hier würde hier eher von &amp;quot;allen sicherheitsrelevanten Ereignissen&amp;quot; sprechen.&lt;br /&gt;
&lt;br /&gt;
Weiterhin sollten insbesondere beim Logging der Datenschutz berücksichtigt werden, personenbezogene Daten also nach Möglichkeit nicht oder nur anonymisiert in technischen Logdateien protokolliert werden.&lt;br /&gt;
&lt;br /&gt;
; 12. &amp;quot;Alle Sicherheitsmechanismen (z.B. Authentisierung und Zugriffskontrolle) sind serverseitig zu implementieren und können nicht durch clientseitige Mechanismen ersetzt werden.&amp;quot;&lt;br /&gt;
&lt;br /&gt;
Die Aussage ist so nicht korrekt. Darüber hatten wir bereits bei der ASVS mehrfach diskutiert. &lt;br /&gt;
&lt;br /&gt;
Überall dort wo der Client angegriffen wird, also etwa bei RIAs (Stichwort DOM-Based XSS) müssen wir Security Controls clientseitig implementieren. Es gibt mittlerweile deshalb auch eine Portierung der ESAPI auf Javascript. Überall dort wo der Server oder Hintegrundsysteme angegriffen werden, ist die Aussage aber natürlich zutreffend.&lt;br /&gt;
&lt;br /&gt;
== &amp;quot;Gefährdungen&amp;quot; (Markus, Dennis, .... &amp;lt;Dein Name&amp;gt;) ==&lt;br /&gt;
; Generell:&lt;br /&gt;
Reference auf RFCs fehlen.&lt;br /&gt;
&lt;br /&gt;
==B.5.XX Web-Anwendungen ==&lt;br /&gt;
; 1. Erster Absatz - Letzter Satz: --Wieso werden hier nur HTML/XML Doks und Oberflächen angesprochen? Was ist der Unterschied zwischen einem HTML-Dok und einer Oberfläche? Was ist mit  Flash, etc.? Was ist mit WebSockets?&lt;br /&gt;
; 2. Stichpunkt &amp;quot;Protokollierung&amp;quot;: Sicherheits relevant ist ein sehr dehnbarer Begriff - Eine bessere Formulierung könnte sein: Zur Rekonstruktion von Nutzerhandlungen nötige Ereignisse (positve &amp;amp; negative) müssen protokolliert werden . . . &lt;br /&gt;
; 3. Absatz: &amp;quot;Abgrenzung des Bausteins&amp;quot;: &amp;quot;Die spez. Sicherheitsanforderungen an Web-Services werden in diesem Baustein nicht betrachtet&amp;quot; --&amp;gt; Wie so nicht? Was ist das Backend von einer Rest / AJAX-basierenden Webanwendung denn anderes als ein Web-Service? Diesen Satz würde ich entfernen.&lt;br /&gt;
; 4.Vorsätzliche Handlungen -&amp;gt; Web-Spoofing (G.5.87) -- Missverständliche Bezeichnung / Nomenklatur&lt;br /&gt;
; 5. Seite 4 : erste Zeile &amp;quot;Umsetzung&amp;quot;: &amp;quot;dafür umzusetztende Komponenten müssen die Webanwendung schützen...&amp;quot; - Hier fehlt mir der Hinweis, dass dieser Schutz verifiziert werden muss.&lt;br /&gt;
; 6 Seite 5: &amp;quot;Umsetzung&amp;quot; - Wir haben CSRF, D(D)os und SQL-Injection aber wo ist XSS?&lt;br /&gt;
; 7 Seite 7: &amp;quot;Die Sicherheitsfunktion wird ausschließlich clientseitig...&amp;quot; --&amp;gt; Warum muss der Angreifer überhaupt einen Browser umkonfigurieren? Was ist mit Proxies, Scripts, etc.? Ich würde das reduzieren darauf, dass rein Webbrowser-basierende Schutzfunktionen einfach umgangen werden können.&lt;br /&gt;
; 8 Seite 8: Die angesprochenen Punkte hinterlassen den Eindruck nicht vollständig zu sein: Mir fehlen Punkte wie &amp;quot;Outsourcing&amp;quot;, &amp;quot;KnowHow der Entwickler&amp;quot;, Tooling, Framework-Auswahl, etc.&lt;br /&gt;
; 9 Seite 9: Eigentlich möchte der Autor hier über Datenschutz sprechen. Abgesehen von den letzten drei Zeilen geht es aber nur um &amp;quot;User tracking&amp;quot; - Wo ist der Rest der Datenschutzproblematik? Warum der Fokuss auf Tracking? Mir ist das zu einseitig.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
tbd.&lt;br /&gt;
&lt;br /&gt;
; Wortwahl:&lt;br /&gt;
Ich stosse innerhalb der Texte immer wieder an die Worten '''Hintergrundsystem''' und '''Sicherheitskontext'''.&lt;br /&gt;
'''Hintergrundsystem:''' besseres Synonym?&lt;br /&gt;
'''Sicherheitskontext:''' nur weil es in den Texten um Sicherheit geht muss nicht an jeder Stelle immer wieder das Wort _Sicherheits_kontext eingebaut werden.&lt;br /&gt;
Bsp: &amp;quot;Erlangt ein Angreifer Kenntnis von einer solchen gültigen, aber nicht mehr genutzten SessionID, so kann er die Web-Anwendung im Sicherheitskontext des nicht abgemeldeten Benutzers weiter verwenden.&amp;quot; (G 5,WA12 Unzureichendes Session-Management von Web-Anwendungen)&lt;br /&gt;
Verbesserungsansansatz: ... so kann er die Web-Anwendung anstelle des eigentlichen Besitzers weiterhin verwenden.&lt;br /&gt;
&lt;br /&gt;
== &amp;quot;G 2.WA01 Mangelhafte Auswahl oder Konzeption von Web-Anwendungen&amp;quot; (Matthias) ==&lt;br /&gt;
&lt;br /&gt;
Nachdem ich mir diese Gefährdung durchgelesen hatte, fehlten mir ehrlich gesagt etwas die Worte. Nicht nur, dass hier fast jeder zweite Satz entweder falsch ist bzw. massive Fehler enthält oder ich diesen schlicht nicht verstehe, ist der ganze Text sprachlich wirklich enorm verbesserungsfähig. &lt;br /&gt;
&lt;br /&gt;
Na gut, ich konzentriere mich mal auf die fachlichen Punkte:&lt;br /&gt;
&lt;br /&gt;
; 1. Security Controls&lt;br /&gt;
Werden mal mit &amp;quot;Schutzmechanismen&amp;quot;, mal mit &amp;quot;Sicherheitskomponenten&amp;quot; und dann wieder als &amp;quot;Sicherheitsfunktionen&amp;quot; bezeichnet. Hier macht eine einheitliche Benennung sicherlich Sinn und ist weniger verwirrend.&lt;br /&gt;
&lt;br /&gt;
; 2. &amp;quot;Eine Web-Anwendung ist in der Regel ein verteiltes, komplexes System bestehend aus unterschiedlichen Komponenten (z. B. Webserver, Applikationsserver, Hintergrundsysteme)&amp;quot;&lt;br /&gt;
&lt;br /&gt;
Eine Webanwendung besteht sicher nicht aus einem Webserver- oder anderer infrastruktureller Komponenten, sondern ist Software welches diese nutzt.&lt;br /&gt;
&lt;br /&gt;
; 3. &amp;quot;Bei individuell entwickelten Web-Anwendungen sind im Allgemeinen die Frameworks, Komponenten und Schnittstellen im Rahmen der Konzeption auszuwählen und deren Einbindung und Absicherung zu betrachten....Im Gegensatz dazu ist bei der Konzeption von Web-Anwendungen auf Basis von Standardsoftware insbesondere auf die Auswahl der Software und die Konfiguration der Teilkomponenten zu achten&amp;quot;&lt;br /&gt;
&lt;br /&gt;
Wir unterscheiden im Rahmen von Webanwendungen eigentlich Free or Opensource Software (FOSS bzw. FLOSS), Standardsoftware und Individualsoftware voneinander. Wir unterscheiden nicht Frameworks von Standardsoftware. Frameworks können Teil von Standardsoftware sein, wie etwa bei SharePoint, SAP, etc, oder aber FOSS, wie etwa Spring. Die ganzen Absätze machen für mich daher keinen Sinn.&lt;br /&gt;
&lt;br /&gt;
; 4. &amp;quot;Eine Sicherheitsfunktion (z. B. Authentisierung, Autorisierung) wird nicht an einer Stelle umgesetzt und verwendet, sondern ist mehrfach in der Web- Anwendung realisiert. Wird diese Sicherheitsfunktion an den verschiedenen Stellen unterschiedlich umgesetzt, führt dies zu einem uneinheitlichen Sicherheitsniveau.&amp;quot;&lt;br /&gt;
&lt;br /&gt;
Natürlich ist die mehrfache Verwendung bestimmter Security Controls, beispielsweise von Zugriffskontrollen (Complete-Mediation) oder Validierung (Robustheit) erstrebenswert. Was der Autor hier wahrscheinlich meinte, war die Notwendigkeit diese zu Kapseln bzw. zu Externalisieren. Das bezieht sich im übrigen nicht nur auf die Controls selbst, sondern auch auf ihre Parametrisierung (etwa. über Konfigdateien / XACML).&lt;br /&gt;
&lt;br /&gt;
Wichtiger wäre in diesem Zusammenhang zudem die fehlende Berücksichtigung bestimmter Security Controls.&lt;br /&gt;
&lt;br /&gt;
; 5. &amp;quot;Auswahl von Web-Anwendungen auf Basis von Standardsoftware&amp;quot;&lt;br /&gt;
Was will der Satz sagen? Ich wähle Standardsoftware aus, aber doch keine Webanwendungen. Oder heißt das, ich kaufe eine existierende Anwendung ein (Webanwendung!=Indivudualsoftware)? &lt;br /&gt;
&lt;br /&gt;
; 6. &amp;quot;Das ausgewählte Produkt verfügt nicht über die ausreichende Sicherheitsfunktionalität, ... Daher müssen die notwendigen Schutzmechanismen nachträglich hinzugefügt werden, wodurch zusätzliche Aufwände entstehen.&amp;quot;&lt;br /&gt;
Das ist etwas sehr positiv formuliert. Tatsächlich können fehlende Security Controls in zugekaufter Software (insb. Standardsoftware) in der Realität häufig gar nicht hinzugefügt werden oder nur perimetrisch (z.B. per WAF oder Access Gateway).&lt;br /&gt;
&lt;br /&gt;
; 7. &amp;quot;Die Hintergrundsysteme werden unzureichend abgesichert und dadurch ist die Datenbank der Web-Anwendung aus dem Internet erreichbar.&amp;quot;&lt;br /&gt;
Gehören fehlende Netzwerksegmentierung bzw. Firewallregeln wirklich in diesen Kontext? Das ist doch eigentlich Grundschutz der Infrastruktur, oder?&lt;br /&gt;
&lt;br /&gt;
; 8. &amp;quot;Aufgrund schwacher Parameter in der Konfiguration des Frameworks zum Session-Management werden unsichere SessionIDs erzeugt.&amp;quot;&lt;br /&gt;
Was sind &amp;quot;schwache&amp;quot; Parameter?&lt;br /&gt;
&lt;br /&gt;
Welches Framework erlaubt unsichere SessionIDs durch eine &amp;quot;schwache&amp;quot; Konfiguration zu erzeugen?&lt;br /&gt;
&lt;br /&gt;
; 9. &amp;quot;Wird die Konfiguration des Web-Browsers durch einen Angreifer manipuliert, können die clientseitig umgesetzten&amp;quot;&lt;br /&gt;
&lt;br /&gt;
Manipuliert ein Angreifer die Konfguration seines Webbroswers, wenn er einen MITM-Proxy konfiguriert?&lt;br /&gt;
&lt;br /&gt;
Wie bereits bei den &amp;quot;Goldenen Regeln&amp;quot; angemerkt, gilt auch hier, das manche Security Controls auch clientseitig umgesetzt werden dürfen (etwa. zur Verhinderung von Dom-Based XSS).&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== &amp;quot;G 5.WA10 Fehler in der Web-Anwendungslogik&amp;quot; (Dennis) ==&lt;br /&gt;
; 1. &amp;quot;Damit kann aufgrund der Prüfreihenfolge ein hoher Ressourcenverbrauch provoziert werden, der für Denial-of-Service-Angriffe ausgenutzt werden kann.&amp;quot;&lt;br /&gt;
Meiner Meinung nach passt in diesem Kontext die Attacke DoS nicht ganz. Falls die nachfolgende Funktionalität wegen der langen Ausführungszeit der Filterkomponente übersprungen wird bzw. ein Fehler auftritt würde dies meiner Ansicht in die Thematik Anwendungslogik passen. Eine DoS-Attacke kann hingegen anhand jeder Funktion durchgeführt werden.&lt;br /&gt;
&lt;br /&gt;
== &amp;quot;G 5.WA11 Umgehung clientseitig umgesetzter Sicherheitsfunktionen von Web-Anwendungen&amp;quot; (Dennis) ==&lt;br /&gt;
; 1. &amp;quot;Ein Angreifer kann diese ausnutzen, um beispielsweise unbefugt Befehle an Hintergrundsysteme der Web-Anwendung zu übermittlen (z.B. in Form von Datenbankanfragen bei einer SQL-Injection).&amp;quot;&lt;br /&gt;
Umformulierung des Inhalts der Klammer. Hatte beim ersten Lesen für mich den Anschein, als ob ein Formular genutzt werden könnte welches den Nutzer aufforder eine SQLI einzugeben. Ich denke &amp;quot;Datenbankanfrage zwecks Ausführung einer SQL-Injection&amp;quot; würde besser passen.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== G 2.WA02 Mängel bei der Entwicklung und der Erweiterung von Web-Anwendungen (Matthias) ==&lt;br /&gt;
&lt;br /&gt;
Allgemein ist de obere Teil ok, die aufgezählten &amp;quot;Auswirkungen von fehlenden Vorgaben&amp;quot; verstehe ich jedoch nicht. Wo ist etwa der Bezug von Barrierefreiheit auf die Anwendungssicherheit?&lt;br /&gt;
&lt;br /&gt;
Mein Vorschlag, um diese Punkte etwa sinnvoll umzubauen:&lt;br /&gt;
* &amp;quot;Fehlendes Vorgehensmodell&amp;quot;: Bezug auf fehlende Berücksichtigung von Sicherheit im SDLC. Statt eines SDLCs selbst sollte hier besser auf die Notwendigkeit eines Secure Development Lifecycle (SDL) hingewiesen werden&lt;br /&gt;
* &amp;quot;Fehlende Programmierrichtlinien&amp;quot; =&amp;gt; Besser wäre hier &amp;quot;Fehlende Sicherheitsrichtlinien in der Programmierung&amp;quot; also &amp;quot;Secure Coding Guidelines&amp;quot;&lt;br /&gt;
* &amp;quot;Testfälle&amp;quot; =&amp;gt; &amp;quot;Sicherheitsrelevante Testfälle&amp;quot; (z.B. Security Unit Tests). &lt;br /&gt;
* &amp;quot;Barrierefreiheit&amp;quot;: Warum nicht an dieser Stelle die Auswirkungen von Sicherheitsfunktionen auf die Bedienbarkeit, etwa anhand von CAPTCHAS erläutern?&lt;br /&gt;
&lt;br /&gt;
== G 2.WA03 Unzureichender Schutz personenbezogener Daten bei Web-Anwendungen (Matthias) ==&lt;br /&gt;
&lt;br /&gt;
Der Titel dieses Bausteines heißt &amp;quot;Schutz personenbezogener Daten&amp;quot;, die genannten Beispiele beziehen sich bis auf den letzten jedoch auf die missbräuchliche (oder zumindest problematische) Nutzung aus Sicht des Datenschutzes. &lt;br /&gt;
&lt;br /&gt;
Die Punkt 1-3 sollten daher besser entfallen und z.B. durch die Folgenden ersetzt werden:&lt;br /&gt;
* Unsichere Einbindung von sozialen Netzwerken (Bezug nehmen auf den Like-Button bei Facebook)&lt;br /&gt;
* Unsichere Einbindung von Werbeinhalten&lt;br /&gt;
* Unsichere Übertragung und Caching&lt;br /&gt;
* Unsichere Protokollierung&lt;br /&gt;
* Ungenügender Zugriffsschutz&lt;br /&gt;
* Verstoß des Minimalprinzips bzw. der Zweckgebundenheit (welche Daten werden wirklich benötigt)&lt;br /&gt;
&lt;br /&gt;
Auch wäre es ggf. zumindest einen Verweis auf das BDSG zu machen.&lt;br /&gt;
&lt;br /&gt;
== G 4.33 Unzureichende oder fehlende Authentisierung (Matthias) ==&lt;br /&gt;
&lt;br /&gt;
; 1. Erster Absatz: &amp;quot;Wenn Authentisierungsmechanismen fehlen oder zu schlecht sind&amp;quot;&lt;br /&gt;
&lt;br /&gt;
&amp;quot;schlecht&amp;quot; sollte vlt besser durch &amp;quot;unzureichend&amp;quot; ersetzt werden.&lt;br /&gt;
&lt;br /&gt;
; 2. &amp;quot;Sicherheitslücken entstehen bei... der Benutzerauthentisierung&amp;quot;&lt;br /&gt;
&lt;br /&gt;
Hier findet nur ein Bezug auf &amp;quot;Passwörter&amp;quot; statt. Der Bezug auf die fehlerhaft implementierte oder dem Schutzbedarf ungenügende Schutzmechanismen (z.B. keine 2-Faktor-Authentisierung bei hochsensiblen Daten) fehlt. Auch auf das komplette fehlen von Authentisierungs-Controls wird hier nicht  eingegangen&lt;br /&gt;
&lt;br /&gt;
; 3. &amp;quot;Sicherheitslücken entstehen bei... der Komponentenauthentisierung&amp;quot;&lt;br /&gt;
&lt;br /&gt;
Wie bei 2., wird auch hier wieder nur auf Passwörter, nicht jedoch auf das fehlen von Controls selbst eingegangen. An dieser Stelle fehlt auch ein Hinweis auf die Notwendigkeit dedizierter Benutzeraccounts.&lt;br /&gt;
&lt;br /&gt;
; 4. &amp;quot;Sicherheitslücken entstehen bei... der Wahl des Verfahrens&amp;quot;&lt;br /&gt;
&lt;br /&gt;
Statt untauglich würde ich auch hier von &amp;quot;dem Schutzbedarf der Daten nicht angemessen&amp;quot; sprechen, eigentlich gehört das für mich aber in die obigen Punkte.&lt;br /&gt;
&lt;br /&gt;
; 5. Serverseitige Authentisierung fehlt&lt;br /&gt;
&lt;br /&gt;
Auch der Server (bzw. die Anwendung selbst) kann sich fehlerhaft oder ungenügend beim Benutzer authentsieren, etwa über DNS, SSL-Zertifikate, etc.&lt;br /&gt;
&lt;br /&gt;
== G 4.WA04 Unzureichende Validierung von Ein- und Ausgabedaten bei Web-Anwendungen (Matthias) ==&lt;br /&gt;
&lt;br /&gt;
; 1. &amp;quot;Unzureichende Validierung von Eingabedaten&amp;quot;&lt;br /&gt;
&lt;br /&gt;
Die genannten Beispiele sind genau keine korrekten Beispiele für diesen Fall, sondern betreffen die Ausgabevalidierung bzw. Enkodierung. Typische Fehler der Eingabevalidierung ist eine Manipulierbarkeit der Business Logik.&lt;br /&gt;
&lt;br /&gt;
; 2. &amp;quot;Unzureichende Validierung von Ausgabedaten&amp;quot;&lt;br /&gt;
&lt;br /&gt;
Hier geht es zentral um die Verhinderung von Interpreter Injection, also serverseitig (z.B. SQL oder LDAP Injection) oder clientseitig (XSS, JSON Injection, etc.). Statt &amp;quot;können die Ausgaben Schadcode&amp;quot; enthalten würde ich hier eher davon Sprechen, dass ein solcher Interpreteraufruf manipuliert werden kann (was dann z.B. zur Einschleusung von Schadcode genutzt werden kann).&lt;br /&gt;
&lt;br /&gt;
; 3. &amp;quot;Die Suchfunktion der Web-Anwendung verwendet die Eingaben der Benutzer ungefiltert&amp;quot;&lt;br /&gt;
&lt;br /&gt;
Mit ungenügender &amp;quot;Filterung&amp;quot; hat SQL Injection nichts zu tun,  eigentlich geht es hierbei darum, dass SQL-Anfragen dynamisch mit unvalidierten Eingebedaten zusammengebaut (konkateniert) werden.&lt;br /&gt;
&lt;br /&gt;
; 4. &amp;quot;Ungefilterter HTML-Code in Kommentar-Funktion&amp;quot;&lt;br /&gt;
&lt;br /&gt;
Hier fehlt der Bezug auf persistentes XSS, das hier sicherlich zentral ist.&lt;br /&gt;
&lt;br /&gt;
== G 4.WA05 Fehlende oder mangelhafte Fehlerbehandlung durch Web-Anwendungen (Tobias) ==&lt;br /&gt;
; Abschnitt &amp;quot;Unsichere Fehlerbehandlung&amp;quot;&lt;br /&gt;
Die G adressiert &amp;quot;Unsichere Fehlerbehandlung&amp;quot;, der Abschnitt die &amp;quot;Unsichere Fehlerbehandlung in Sicherheitskomponenten&amp;quot;. Entsprechend sollte der fettgedruckte Teil angepasst werden.&lt;br /&gt;
&lt;br /&gt;
; &amp;quot;fehlende SQL-Parameter,&amp;quot;&lt;br /&gt;
Sollte besser &amp;quot;Fehlermeldungen bei ungültigen SQL-Abfragen&amp;quot; lauten.&lt;br /&gt;
&lt;br /&gt;
; &amp;quot;Auch scheinbar unkritische Informationen, wie die Meldung ob (..)&amp;quot;&lt;br /&gt;
Korrekt, allerdings nicht nachvollziehbar, wenn das Problem der Leser nicht schon bekannt ist. Daher erweitern nach &amp;quot; Rahmen von Brute-Force-Angriffen ausgenutzt werden.&amp;quot; mit &amp;quot;. Bei Brute-Force-Angriffen wäre in diesem Fall klar, dass der Benutzername gültig ist.&amp;quot; &lt;br /&gt;
&lt;br /&gt;
== G 4.WA06 Unzureichende Nachvollziehbarkeit von sicherheitsrelevanten Ereignissen bei Web-Anwendungen (Matthias) ==&lt;br /&gt;
&lt;br /&gt;
; 1. Erster Absatz: &amp;quot;Die Behebung einer Schwachstelle ist dann nicht oder nur unter erschwerten Bedingungen möglich.&amp;quot;&lt;br /&gt;
&lt;br /&gt;
Hier würde ich ergänzen: &amp;quot;...und Angriffe auf die Anwendungen können ggf. nicht erkannt oder nachvollzogen werden&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
; 2. &amp;quot;Beispiele&amp;quot;: Kommulierbarkeit&lt;br /&gt;
&lt;br /&gt;
Hier fehlt auch ein Bezug auf die Kommulierbarkeit von SIcherheitsereignissen, dass diese also auch von solchen anderer Systeme in Verbindung gesetzt werden können&lt;br /&gt;
&lt;br /&gt;
; 3. &amp;quot;Beispiele&amp;quot;: Gerichtsverwertbarkeit&lt;br /&gt;
&lt;br /&gt;
Auch die Möglichkeit zur Gerichtsverwertbarkeit (etwa durch eindeutigen Zeitstempel) und manipulationssicherer Speicherung, würde ich an dieser Stelle unbedingt erwähnen.&lt;br /&gt;
&lt;br /&gt;
== G 4.WA07 Offenlegung von Informationen bei Web-Anwendungen (Matthias) ==&lt;br /&gt;
&lt;br /&gt;
; 1. Titel&lt;br /&gt;
&lt;br /&gt;
Hier würde ggf. &amp;quot;Offenlegung vertraulicher Informationen&amp;quot; sicher besser passen als &amp;quot;Offenlegung von Informationen&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
; 2. Beispiellink&lt;br /&gt;
&lt;br /&gt;
Ein Beispiellink (mit und ohne Token) würde sicher die Verständlichkeit dieser Schwachstelle verbessern.&lt;br /&gt;
&lt;br /&gt;
; 3. Erster Absatz: &amp;quot;Wenn demzufolge Informationen unnötig offengelegt werden, steigt die Wahrscheinlichkeit eines erfolgreichen Angriffs.&amp;quot;&lt;br /&gt;
&lt;br /&gt;
Interne Informationen auszublenden ist eine Härtungsmaßnahme, deren Anzeige erhöht aber nicht zwangsläufig die Wahrscheinlichkeit eines erfolgreichen Angriffs. Ich würde diesen Satz weglassen.&lt;br /&gt;
&lt;br /&gt;
 ; 4. Fehlende Punkte&lt;br /&gt;
&lt;br /&gt;
* Ein Hinweis auf HTTP Header wäre hier sicher erwähnenswert.&lt;br /&gt;
* Weiterhin bzgl. der Anzeige von Traces und ein Verweis auf den Entsprechenden Baustein zur Fehlerbehandlung&lt;br /&gt;
&lt;br /&gt;
== G 5.WA14 Cross-Site Request Forgery (CSRF, XSRF) (Matthias) ==&lt;br /&gt;
&lt;br /&gt;
; 1. Erster Absatz: &amp;quot;Können Funktionen einer Web-Anwendung ohne weitere Überprüfung der Authentizität des HTTP-Requests (z.B. durch Tokens in versteckten Formularfeldern) genutzt werden&amp;quot;&lt;br /&gt;
&lt;br /&gt;
Statt &amp;quot;Funktionen&amp;quot; würde ich besser von &amp;quot;schreibenden Aktionen&amp;quot; sprechen, dann macht der Satz mehr Sinn.&lt;br /&gt;
&lt;br /&gt;
; 2. Dritter Absatz: &amp;quot;Im Gegensatz zu XSS (siehe ...￼ ) ist das Angriffsziel nicht die Information auf dem Client (z. B. in Cookies),&amp;quot;&lt;br /&gt;
&lt;br /&gt;
Dieser (Halb-)Satz macht keinen Sinn, auch weil es bei XSS nicht nur im Informationen auf dem Cient geht. Vorschlag: &amp;quot;ist das Angriffsziel nicht die Ausführung von Skriptcode, sondern von unbefugten, schreibenden Aktionen im Kontext des angemeldeten Benutzers.&amp;quot;&lt;br /&gt;
&lt;br /&gt;
; 3. Session Riding&lt;br /&gt;
&lt;br /&gt;
Session Riding ist quasi nur ein anderer Begriff für CSRF. Die einzige Form von CSRF die mir bekannt ist, sind Angriffe mit Standard-Passwörtern auf HTTP-Basic-Auth geschützten Ressourcen.&lt;br /&gt;
&lt;br /&gt;
Im Grunde ist Session Riding aber nur ein Synonym für CSRF. Der Absatz ist daher auch nur eine Wiederholung der obigen Beschreibung.&lt;br /&gt;
&lt;br /&gt;
; 4. Zum Beispiel: &amp;quot;Durch einen präparierten Link auf einer Webseite wird die Änderung des Zugangspasswortes des Routers eingeleitet.&amp;quot;&lt;br /&gt;
&lt;br /&gt;
Etwas ungüngstig ausgedrückt. Besser wäre: &amp;quot;wird eine Anfrage zur Änderung des Zugangspasswortes an den Router gesendet. Hierbei sendet der Browser automatisch den Session Cookie mit, worüber die Webanwendung die Authentizität der Anfrage verifiziert und die Änderung durchführt.&amp;quot;&lt;br /&gt;
&lt;br /&gt;
== G 5.WA18 Clickjacking (Matthias) ==&lt;br /&gt;
&lt;br /&gt;
Hier stellt sich mir nur die allgemeine Frage, ob Clickjacking, bzw. der Schutz davor tatsächlich einem Grundschutz zuzurechnen ist. Persönlich würde ich dies nicht tun.&lt;br /&gt;
&lt;br /&gt;
== M 2.WA02 Dokumentation der Architektur von Web-Anwendungen (Matthias) ==&lt;br /&gt;
&lt;br /&gt;
; Verantwortlich für die Umsetzung&lt;br /&gt;
Hier wäre auch die Nennung des &amp;quot;Architekten&amp;quot; sinnvoll&lt;br /&gt;
 &lt;br /&gt;
; Fehlende Bestandteile der Dokumentation:&lt;br /&gt;
* Schutzbedarf des Systems sowie der verarbeiteten Daten&lt;br /&gt;
* Schützenswerte Daten und Funktionen (Assets)&lt;br /&gt;
* Betriebliche Anforderungen an die Sicherheit bzw. eingesetzte Plattform&lt;br /&gt;
* Dokumentierte Konfigurationseinstellungen &lt;br /&gt;
* BIA (RTO, RPO)&lt;br /&gt;
* Schnittstellen&lt;br /&gt;
* Trust Boundaries&lt;br /&gt;
* Akteure (bzw. Trust Level)&lt;br /&gt;
* Sicherheitsannahmen&lt;br /&gt;
* Geltende Compliance-Anforderungen (BDSG, PCI DSS, etc.)&lt;br /&gt;
&lt;br /&gt;
; Benutzermanagement&lt;br /&gt;
&lt;br /&gt;
Wenn damit das Identity Management gemeint ist, gehört das Dokumentiert, ist aber keine Sicherheitsfunktion. Oder ist hiermit das Rollen- und Berechtigungskonzept gemeint? Grenzt sich aus meiner Sicht schwer mit dem Thema Authentisierung ab. &lt;br /&gt;
&lt;br /&gt;
; Prüffragen&lt;br /&gt;
&lt;br /&gt;
Hier fehlt etwas in Bezug auf Sicherheitsanforderungen. Beispiel: &amp;quot;Werden Sicherheitsanforderungen an den Betrieb während der Entwicklung abgestimmt und dokumentiert&amp;quot;&lt;br /&gt;
&lt;br /&gt;
== M 2.WA12 Entwicklung und Erweiterung von Anwendungen (Markus) ==&lt;br /&gt;
; &amp;quot;Es sollte darauf geachtet werden, dass Sicherheitsanforderungen&lt;br /&gt;
vollständig durch Sicherheitsmechanismen erfüllt und zur Erstellung von&lt;br /&gt;
Testfällen festgehalten werden.&amp;quot; --&amp;gt; Bessere Formulierung würde aussagen, dass die Sicherheitsanforderungen durch Testfälle verifiziert werden.&lt;br /&gt;
&amp;quot;(z. B. durch Kommentare im&lt;br /&gt;
Quelltext). Somit ist der Quelltext zu einem&amp;quot; --&amp;gt; Das ist kein empfehlenswerter Programmierstiel! Raus mit diesem Kommentar&lt;br /&gt;
;&amp;quot;Zum Schutz vor dem Verlust bereits entwickelter und verworfener&lt;br /&gt;
Lösungen sowie zu Dokumentationszwecken sollte die Historie der&lt;br /&gt;
Änderungen festgehalten werden (z. B. durch ein Revisionssystem).&amp;quot; --&amp;gt; Auch diesen Absatz können wir streichen - Kein professioneller Programmierer arbeitet ohne Versionierugssystem.&lt;br /&gt;
;&amp;quot;Bei Web-Anwendung sollten die Webseiten auf Konformität zu dem&lt;br /&gt;
verwendeten Standard (z. B. HTML-Standard) getestet werden. Dadurch&lt;br /&gt;
können unvorgesehene Seiteneffekte aufgrund einer Fehlinterpretation&lt;br /&gt;
seitens der Browser vermieden werden.&amp;quot; --&amp;gt; Könnte man noch um &amp;quot;Die Software ist in möglichst vielen Browsern zu testen&amp;quot; erweitern.&lt;br /&gt;
;Generell geht der Autor leider nicht auf die Rollen &amp;amp; Rechte Verteilung ein. Mir fehlt der Hinweis, das es eine personelle Trennung zwischen Entwicklung, Test und Betrieb geben muss.&lt;br /&gt;
;Zum Thema Wartung / Betrieb --&amp;gt; Hier wird keine Aussage getroffen bezüglich Log_Files. Dieses Thema kann kritische Auswirkungen haben, Bsp.: logging ganzer HTTP-Requests im LogLevel=Debug.&lt;br /&gt;
; &amp;quot;Produktspezifische Sicherheitsfunkionalität&amp;quot; - Dieser Absatz ist gefährlich - der Angreifer ist nicht zur Verwendung dies Zielbrowsers gezwungen. Deshalb können Browser-spez. Sicherheitsfunktionen nur als Add-ON gewertet werden.&lt;br /&gt;
; &amp;quot;Festlegung der Entwicklungsumgebung&amp;quot; - Dieser Absatz geht nicht auf die zu verwendenden Testdaten ein. Der Hinweis, dass Live-Daten / Kundendaten nichts in Test- &amp;amp; Entwicklungsumgebungen zu suchen haben fehlt!!!&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== M 2.WA24 Web-Tracking (Matthias) ==&lt;br /&gt;
&lt;br /&gt;
; Letzter Absatz: &amp;quot;Falls eine Auswertung von Nutzerdaten, insbesondere personenbezogener Daten, .. &amp;quot;&lt;br /&gt;
&lt;br /&gt;
Hier sollte denke ich besser von personenbeziehbaren Daten gesprochen Werten. Dies betrifft etwa die Zuordnung von Surfverhalten zu einer bestimmten Person. Dies sollte stets nach den Prinzipien Datensparsamkeit und Datenvermeidung, Erforderlichkeit, sowie Zweckbindung erfolgen. Ist Webtracking nicht personenbeziehbar ist dies kein Thema für den Datenschutz.&lt;br /&gt;
&lt;br /&gt;
== M 4.WA04 Authentisierung bei Web- Anwendungen (Matthias) ==&lt;br /&gt;
&lt;br /&gt;
; Vermischung von Authentisierung und Session Management &lt;br /&gt;
&lt;br /&gt;
Bei diesem Baustein findet eine ziemlich große Vermischung von Anforderung an die Authentisierung und das erst in &amp;quot;M 4.WA06 Session-Management bei Web- Anwendungen&amp;quot; behandelte Session Management statt (Beispiel: &amp;quot;Remember-Me-Funktion&amp;quot;). Beide Themen sollten sinnvollerweise getrennt voneinander zu betrachten und aufeinander zu beziehen.&lt;br /&gt;
&lt;br /&gt;
; Verwendung von Frameworks&lt;br /&gt;
&lt;br /&gt;
Die Anforderung ist schon ein wenig eingeschränkt. Besser passt hier denke ich die &amp;quot;Abbildung der Authentisierung über Standardkomponenten (Bibliotheken oder Frameworks)&amp;quot;. &lt;br /&gt;
&lt;br /&gt;
; Remember-Me-Funktion&lt;br /&gt;
&lt;br /&gt;
Siehe oben, gehört zum Session Management. Das ließt sich im übrigen so, als ob eine Webanwendung Credentials auf dem Client abhängt. &lt;br /&gt;
&lt;br /&gt;
; Grenzwerte für gescheiterte Anmeldeversuche&lt;br /&gt;
&lt;br /&gt;
Diese Empfehlung ist allgemein falsch, da sie sehr von der betrachteten Anwendung abhängt. Besser wäre hier allgemein von Mechanismen zur Verhinderung von automatisierten Angriffen zu sprechen (Anti-Automatisierung). &lt;br /&gt;
&lt;br /&gt;
Etwa umsetzbar durch&lt;br /&gt;
* Sperrung nach x Anmeldeversuchen&lt;br /&gt;
* Throttling&lt;br /&gt;
* Captchas&lt;br /&gt;
* Sicherheitsfragen&lt;br /&gt;
&lt;br /&gt;
Das allgemeine Sperren kann leicht für das gezielte Aussperren von Benutzern (User Lockout) verwendet werden. Was etwa bei Trading-Anwendungen nicht funktioniert.&lt;br /&gt;
&lt;br /&gt;
; Automatisiertes Zurücksetzen von Authentisierungsdaten&lt;br /&gt;
&lt;br /&gt;
Würde ich besser als &amp;quot;Passwort-Reset&amp;quot; bezeichnen.&lt;br /&gt;
&lt;br /&gt;
Weiterhin fehlt hier der Hinweis, dass statt ein automatisiertes Zurücksetzen, ein Mechanismus zu empfehlen ist, bei dem über ein hinterlegtes Sicherheitsmerkmal (Handy-Nummer oder E-Mail-Adresse) vom Benutzer zunächst eine Verifikation durchgeführt wird. Beispielsweise durch einen erhaltenen Link. Erst dann darf eine Änderung des Passwortes durch den Benutzer erfolgen.&lt;br /&gt;
&lt;br /&gt;
; Registrierung nicht behandelt&lt;br /&gt;
&lt;br /&gt;
Es existiert hier kein Punkt, der die sichere Implementierung von Benutzerregistrierungen behandelt.&lt;br /&gt;
&lt;br /&gt;
; Verweis auf Externalisierung fehlt.&lt;br /&gt;
&lt;br /&gt;
Statt die Authentisierung selbst durchzuführen kann eine Anwendung hierzu auf eine externe Komponente (Beispiel: SiteMinder oder Kerberos) zurückgreifen.&lt;br /&gt;
&lt;br /&gt;
; Verweis auf Behandlung von Credentials fehlt&lt;br /&gt;
&lt;br /&gt;
Auch wenn das  in &amp;quot;M 4.WA15 Schutz vertraulicher Daten bei Web- Anwendungen&amp;quot; ausführlich behandelt wird, sollte in diesem Baustein bereits auf den angemessenen Schutz von Authentisierungsdaten bei Übertragung und Speicherung hingewiesen werden.&lt;br /&gt;
&lt;br /&gt;
== M 4.WA05Umfassende Ein- und Ausgabevalidierung bei Web-Anwedungen (Markus) ==&lt;br /&gt;
; &amp;quot;Ablehnung der Daten im&lt;br /&gt;
Fehlerfall&amp;quot; --&amp;gt; Hier könnte man noch auf Tar-Pits eingehen - nur ein Vorschlag.&lt;br /&gt;
&lt;br /&gt;
== M 4.WA06Session-Management bei Web-Anwendungen (Markus, Matthias) ==&lt;br /&gt;
; &amp;quot;Übertragung der SessionID mittels GETRequest&amp;quot; --&amp;gt; Hier fehlt der Hinweis, dass die Lebensdauer dieser SessionIds kurz/kürzer sein muss, als im Falle der Speicherung im Cookie.&lt;br /&gt;
&lt;br /&gt;
([[User:Mrohr|Matthias]]) Die Anmerkung verstehe ich ehrlich gesagt ueberhaupt nicht, zumal das SM haeufig transparent zwischen Cookies und URL Rewriting wechselt. Wozu soll das gut sein? Wie soll das geschehen? Idealerweise sollte die Session ID niemals in die URL geschrieben werden, das sollte eigentlich genuegen.&lt;br /&gt;
&lt;br /&gt;
; &amp;quot;Verschlüsselte Übertragung von SessionIDs&amp;quot; --&amp;gt; Hier fehlt der Hinweis auf den Beast-Exploit. TLS Version &amp;gt; 1.0 verwenden!&lt;br /&gt;
&lt;br /&gt;
([[User:Mrohr|Matthias]]) Solange hier nicht auf eine explizite TLS Version eingegangen wird, sollte meiner grossen Ueberzeugung nach hier auch auf keine Exploits etc. eingagen werden, das gehoert an andere Stelle.&lt;br /&gt;
&lt;br /&gt;
; ([[User:Mrohr|Matthias]]) Weiterhin:&lt;br /&gt;
&lt;br /&gt;
 Es dürfen keine extern bekannten oder erratbaren Daten (z. B. IP-Adresse, Uhrzeit) in die Berechnung der SessionID einfließen.&lt;br /&gt;
&lt;br /&gt;
Die Aussage finde ich etwas problematisch, wichtiger ist, dass die Entropie ausreichend hoch ist. Haeufig werden etwa IPs von Load Balancern in die Session ID hineingeschrieben.&lt;br /&gt;
&lt;br /&gt;
 - Domain (z. B. webapp.domain.tld),&lt;br /&gt;
 - Path (z. B. /webapp/),&lt;br /&gt;
 - Secure und&lt;br /&gt;
 - HttpOnly.Beschränkte Sitzungsdauer&lt;br /&gt;
&lt;br /&gt;
Das sieht so aus, als ob es empfehlenswert ist, das Domain-Tag zu verwenden, das ist es sicherlich nicht. Was macht hier der Hinweis &amp;quot;Beschraenke Sizuungsdauer&amp;quot;?&lt;br /&gt;
&lt;br /&gt;
== M 4.WA07Fehlerbehandlung durch Web-Anwendungen (Markus) ==&lt;br /&gt;
; Konsistenter / Inkonsistener Zustand einer Webanwendung und der daraus resultierende Datenverlust: Hier fehlen mir die Punkte: DOS, Priv.Escalation, CodeExecution.&lt;br /&gt;
; Vermeidung vertraulicher Informationen in Fehlermeldungen --&amp;gt; Fehlermeldungen sollten ebenfalls eine Systeminformationen preisgeben (Softwareversion, Patchlevel, etc.)&lt;br /&gt;
; Abbruch des Vorgangs nach Auftreten eines Fehlers --&amp;gt; TarPits scheinen dem Autor umbekannt zu sein :)&lt;br /&gt;
; &amp;quot;Werden Fehler möglichst von der gleichen Komponente behandelt, in der&lt;br /&gt;
der Fehler aufgetreten ist?&amp;quot; --&amp;gt; Das &amp;quot;möglichst&amp;quot; sollten wir streichen.&lt;br /&gt;
&lt;br /&gt;
== M 4.WA08Schutz vor automatisierter Nutzung von Web-Anwendungen (Markus) ==&lt;br /&gt;
; &amp;quot;Brute-Force-&lt;br /&gt;
Angriffe (z. B. Erraten von Zugangsdaten) und Enumeration-Angriffe (z. B.&lt;br /&gt;
automatisiertes Ermitteln von gültigen Login-Namen)&amp;quot; -- die Beispiele sind identisch - besser Beispiele suchen, z.b. URL-Enumeration&lt;br /&gt;
&lt;br /&gt;
([[User:Mrohr|Matthias]]) Das sehe ich anders. Brute-Forcing bezieht auf Passwoerter und Enumeration auf Benutzernamen, etwa durchs hochzaehlen. Auch wenn ich zustimmen muss, dass die nicht ganz gluecklich gewaehlt wurden. Stann &amp;quot;Erraten von Zugangsdaten&amp;quot; wuerde ich besser von &amp;quot;Erraten von Passwoertern&amp;quot; sprechen. Oder wie gesagt gleich auch auf andere Beispiele (etwa Object ID Enumeration) beziehen.&lt;br /&gt;
&lt;br /&gt;
== M 4.WA11Sichere Konfiguration von Web-Anwendungen (Markus) ==&lt;br /&gt;
; &amp;quot;Sicherer Umgang mit TLS/SSL&amp;quot; -- Hier fehlt der Hinweis, dass TLS-1.0 gebrochen ist&lt;br /&gt;
; &amp;quot;Zeichenkodierungskonfiguration&amp;quot; -- Ein Whitelisting abhängig von der Encodierung wäre ein weiterer Vorschlag&lt;br /&gt;
; &amp;quot;Restriktive Dateisystemberechtigungen&amp;quot; -- auch wenn es ein klassiker ist - der AS sollte ebenfalls mit von einem eingeschränkten Nutzer gestartet werden und nicht als root&lt;br /&gt;
; Administration Consolen:zur Ergänzen: Wenn diese nicht benötigit, sollten derartige Applikationen nicht deployed werden, unabhängig von möglichen Zugangsbeschränkungen.&lt;br /&gt;
&lt;br /&gt;
([[User:Mrohr|Matthias]]) Sorry, meiner Meinung nach hat die Bewertung von Kryptoverfahren hier abslut nichts zu suchen.Stattdessen sollte hier auf den entsprechenden [https://www.bsi.bund.de/ContentBSI/Publikationen/TechnischeRichtlinien/tr02102/index_htm.html Empfehlung des BSI] verwiesen werden, auch wenn dieses Dokument derzeit noch etwas outdated zu sein scheint.&lt;br /&gt;
&lt;br /&gt;
== M 4.WA13Kontrolliertes Einbinden von Daten und Inhalten bei Web-Anwendungen (Markus) ==&lt;br /&gt;
; Datei-Upload: Bei einem Upload werden Dateien durchaus in TEMP-Verzeichnissen gesammelt und danach weiterverarbeitet. Diese TEMP-Verzeichnisse sind im Rahmen einer Sicherheitsanalyse zu betrachten -&amp;gt; Möglicher (unbefugter) Zugriff auf weitere Uploads&lt;br /&gt;
; Upload komprimierter Dateien / großer Dateien birgt die Gefahr von DOS Angriffen&lt;br /&gt;
; Upload von Dateien kann bei weiterem Parsing zu Speicherengpässen führen --&amp;gt; DOS-Angriffe auf Thread-Local etc.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== M 4.WA14Restriktive Herausgabe sicherheitsrelevanter Informationen bei Web-Anwendungen (Markus) ==&lt;br /&gt;
OK - Keine Anmerkungen von mir.&lt;br /&gt;
&lt;br /&gt;
== M 4.WA15Schutz vertraulicher Daten bei Web-Anwendungen (Markus) ==&lt;br /&gt;
; Sichere kryptographische Algorithmen:&lt;br /&gt;
 Hier fehlt mir eine Liste der aktuelle als sicher geltenden Verfahren.&lt;br /&gt;
; Schlüssel&lt;br /&gt;
 Das die Schlüssel bestimmten Formaten entsprechen müssen ist ok - aber das Schlüsselmanagement wird gar nicht besprochen?&lt;br /&gt;
; Schutz der Daten im Browsercache&lt;br /&gt;
 Skripte und Browserplugins können ebenfalls auf den Browsercache zugreifen - diese werden hier nicht erwähnt.&lt;br /&gt;
; Maskierung von Passwörtern &lt;br /&gt;
 Dies schützt bei der Eingabe nur vor ShoulderSurfing nicht vor Skripten oder Plugins die diese an andere Server posten.&lt;br /&gt;
; Sicherung von Zugangsdaten:&lt;br /&gt;
 Zugangsdaten in einer Datei abzulegen - wenn auch ausserhalb des WebRoots ist keine gute Idee.&lt;br /&gt;
; Schutz von Quelltexten:&lt;br /&gt;
 Hier würde ich property files mit aufnehmen. der hinweis auf web-inf/classes fehlt - warum?&lt;br /&gt;
 Bei include-befehlen sind die pfadangaben zu überdenken.&lt;br /&gt;
&lt;br /&gt;
== M 4.WA16Zugriffskontrolle bei Web-Anwendungen (Markus) ==&lt;br /&gt;
; Zugriffskontrolle via Frameworks:&lt;br /&gt;
 Dieser Punkt (Frameworks) wird nur in einem Satz erwähnt. Es werden keine Bespiele gegeben - Das ist zu wenig.&lt;br /&gt;
 Es müssen alle Zugriffe geschützt werden. Eine Protokollierung aller Zugriffe mit den nötigen Informationen ist ebenfalls empfehlenswert.&lt;br /&gt;
; Datei Upload:&lt;br /&gt;
 Die Gefahr eines DOS wird hier nicht erwähnt.&lt;br /&gt;
&lt;br /&gt;
== M 4.WA19Verhinderung von Cross-Site Request Forgery (CSRF, XSRF) (Markus, Matthias) ==&lt;br /&gt;
; Verantwortliche: &lt;br /&gt;
 Entwickler und Admins!&lt;br /&gt;
([[User:Mrohr|Matthias]]) Korrekt, wobei auch in der Reihenfolge&lt;br /&gt;
&lt;br /&gt;
; Anti-CSRF-Token in hidden fields:&lt;br /&gt;
 Das ist keine gute Idee. Ich würde das streichen!&lt;br /&gt;
&lt;br /&gt;
([[User:Mrohr|Matthias]]) Watt? Anti-CSRF-Tokens in Hidden Fields sind die Standard-Massnahme. Wie denn sonst? Bitte nicht streichen!!! &lt;br /&gt;
&lt;br /&gt;
([[User:Mrohr|Matthias]]) Die Technik bei der die Session ID als Anti-CSRF-Token verwendet wird, wird als Double-Cookie Submit bezeichnet, das sollte hier referenziert werden.&lt;br /&gt;
&lt;br /&gt;
; Umgehung von Schutzmechanismen:&lt;br /&gt;
 Man in the middle hat keinen direkten Bezug zu CSRF! Das würde ich streichen.&lt;br /&gt;
([[User:Mrohr|Matthias]]) Der Hinweis ist korrekt. Wovon der Autor hier spricht ist Session Replay nicht CSRF.&lt;br /&gt;
&lt;br /&gt;
; Frameworks:&lt;br /&gt;
 Gute Idee - aber es gibt auch Features in den ApplicationServern die CSRF unterbinden - warum wird das nicht besprochen?&lt;br /&gt;
&lt;br /&gt;
([[User:Mrohr|Matthias]]) Sehe ich persoenlich nicht so, da CSRF primaer ein Applikations-Fehler ist, und auch in der Applikation und nicht im Environment (AppServer) geloest werden sollte. Auch wenn das manchmal ggf. die einzig machbare Loesung darstellt.&lt;br /&gt;
&lt;br /&gt;
([[User:Mrohr|Matthias]]) Was generell fehlt, ist ein Hinweis darauf, dass schreibende Requests generell per HTTP Post abgewickelt werden sollten, da HTTP Get keine &amp;quot;Safe Method&amp;quot;  (siehe HTTP 1.1, RFC 2616) ist.&lt;br /&gt;
&lt;br /&gt;
== M 4.WA20Sicherer Entwurf der Logik von Web-Anwendungen (Markus) ==&lt;br /&gt;
; Rollbacks:&lt;br /&gt;
 Tritt ein Fehler auf muss die Applikation einen konsistenten Datenstand zurück lassen. Das wird hier nicht erwähnt.&lt;br /&gt;
; RaceConditions:&lt;br /&gt;
 Fehler in der Geschäftslogik können auch durch zwei gleichzeitige Sessions auf einer Webapplikation auftreten - das wird hier nicht besprochen.&lt;br /&gt;
&lt;br /&gt;
== M 4.WA22Verhinderung der Blockade von Ressourcen (DoS) bei Web-Anwendungen (Markus) ==&lt;br /&gt;
; Datenspeicher:&lt;br /&gt;
 Neben dem Datenspeicher sollte auch der RAM-Verbrauch pro Thread der Applikation limitiert werden.&lt;br /&gt;
; Voraggregation von Daten / Caching&lt;br /&gt;
 Dieser Punkt fehlt: Stark ressourcen belastende Anfragen können auch in Lastarmen Zeiten vorberechnet werden.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== M 4.WA25Verhinderung von Clickjacking (Markus) ==&lt;br /&gt;
Ok - das passt soweit.&lt;br /&gt;
&lt;br /&gt;
== M 5.WA21Sichere Anbindung von Hintergrundsystemen an Web-Anwendungen (Markus) ==&lt;br /&gt;
; Verantwortliche:&lt;br /&gt;
 Architekten fehlen. Entwickler müssen die Views umsetzen und die Datasource entsprechend einbinden - die fehlen hier ebenfalls.&lt;br /&gt;
; DirectorySystem Beispiel:&lt;br /&gt;
 Das DirectorySystem wird in dem angegeben Beispiel zum Single Point of Failure - das wird verschwiegen.&lt;br /&gt;
; Firewalls:&lt;br /&gt;
 Das sind fachlich-blinde Systeme. Was ist mit WAFs / IDS / IPS etc.?&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== M 5.WA23Systemarchitektur einer Web-Anwendung (Markus) ==&lt;br /&gt;
; Verantwortliche:&lt;br /&gt;
Auch hier fehlend wieder die Architekten. &lt;br /&gt;
; Virtualisierung:&lt;br /&gt;
Virtualisierung bietet weitere Angriffsvektoren (z.B.: Hypervisor) die eine &amp;quot;Blech&amp;quot;Farm nicht bietet.&lt;/div&gt;</summary>
		<author><name>Mrohr</name></author>	</entry>

	<entry>
		<id>https://wiki.owasp.org/index.php?title=Talk:OWASP_Review_BSI_IT-Grundschutz_Baustein_Webanwendungen&amp;diff=130108</id>
		<title>Talk:OWASP Review BSI IT-Grundschutz Baustein Webanwendungen</title>
		<link rel="alternate" type="text/html" href="https://wiki.owasp.org/index.php?title=Talk:OWASP_Review_BSI_IT-Grundschutz_Baustein_Webanwendungen&amp;diff=130108"/>
				<updated>2012-05-18T13:24:27Z</updated>
		
		<summary type="html">&lt;p&gt;Mrohr: /* M 4.WA11Sichere Konfiguration von Web-Anwendungen (Markus) */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Since it's about a review of a document in German, all the discussions will be done in German :-)&lt;br /&gt;
&lt;br /&gt;
Diskussionen rund um den Review des &amp;quot;IT-Grundschutzbausteins Webanwendungen&amp;quot; finden hier statt, sinnvollerweise auf Deutsch :-)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Vorschlag für Kriterien, die an unser Review angelegt werden sollten (.kai) ==&lt;br /&gt;
&lt;br /&gt;
* Der Baustein soll alle wichtigen Themen der Entwicklung sicherer&lt;br /&gt;
Webanwendungen enthalten.&lt;br /&gt;
&lt;br /&gt;
* Der Baustein soll die verschiedenen Phasen der Software-Entwicklung&lt;br /&gt;
vollständig abdecken.&lt;br /&gt;
&lt;br /&gt;
* Der Baustein soll zwischen verbindlichen, prüfbaren Vorgaben und&lt;br /&gt;
unverbindlichen Empfehlungen sprachlich sauber unterscheiden (hier&lt;br /&gt;
spielt mein Auditorenblick eine Rolle). Vor allem soll der Baustein&lt;br /&gt;
verbindliche Anforderungen auch tatsächlich stellen. Alle&lt;br /&gt;
verbindlichen Anforderungen müssen unabhängig von der jeweiligen&lt;br /&gt;
Umgebung auch umsetzbar sein, d.h. sie müssen entsprechend generisch&lt;br /&gt;
sein.&lt;br /&gt;
&lt;br /&gt;
* Die Maßnahmen sollen nur in (begründbaren) Ausnahmen zu Empfehlungen&lt;br /&gt;
von OWASP im Widerspruch stehen.&lt;br /&gt;
&lt;br /&gt;
* Die Maßnahmen sollen verständlich und anwendbar sein.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== &amp;quot;Hilfsmittel&amp;quot; (Markus) ==&lt;br /&gt;
Ich würde das Script zur Vermeidung von Clickjacking wrappen und nicht als losen Skript-block in den Text einbinden - einfach schlechter Programmierstiel diese losen Blöcke.&lt;br /&gt;
Der Zugriff auf das Body-Element mit byTagName-Array[0] ist auch nicht wirklich gut. Ich halte Zugriffe über das DOM (klassisch), bei ID bzw. XPATH für besser. &lt;br /&gt;
&lt;br /&gt;
SQL-Injection Characters:&lt;br /&gt;
die Pipe fehlt hier zur Textkonatenierung&lt;br /&gt;
+ / - haben auch eine Bedeutung bei JOINs.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== &amp;quot;Goldene Regeln&amp;quot; (Matthias) ==&lt;br /&gt;
&lt;br /&gt;
Hier meine Anmerkungen zu diesem Dokument:&lt;br /&gt;
&lt;br /&gt;
; 1. Für mich fehlende Punkte&lt;br /&gt;
* Korrektur der Ursache (Root Cause) von Schwachstellen statt  Verhinderung deren Ausnutzung&lt;br /&gt;
* Bezug auf Minimierung der Angriffsfläche und Least-Privilege-Prinzip&lt;br /&gt;
* Bezug auf Defense-in-Depth-Prinzip&lt;br /&gt;
* Verwendung von getesteten Security APIs (z.B. OWASP ESAPI) statt selbstentwickelter Funktionen&lt;br /&gt;
* Bezug auf Externalisierung von Sicherheitsfunktionen, sowie deklerative vor programmatischer Sicherheit.&lt;br /&gt;
&lt;br /&gt;
; 2. Begriff &amp;quot;Web-Anwendung&amp;quot;&lt;br /&gt;
Würde ich generell durch &amp;quot;Webanwendung&amp;quot; ersetzen.&lt;br /&gt;
&lt;br /&gt;
; 3. Einleitung (&amp;quot;Web-Anwendungen stellen Funktionalität zur Verfügung, ...&amp;quot;)&lt;br /&gt;
&lt;br /&gt;
Wozu dient dieser Satz?&lt;br /&gt;
&lt;br /&gt;
; 4. &amp;quot;Die Architektur der Web-Anwendung ist im Sicherheitskonzept zu  dokumentieren.....&amp;quot; &lt;br /&gt;
&lt;br /&gt;
Ich fände es sinnvoller, wenn hier von der &amp;quot;Sicherheitsarchitektur&amp;quot; gesprochen wird, welche etwa neben den sicherheitsrelevanten Datenflüssen, sensible Komponenten, Entry Points, Akteure architekturelle Security Controls wie Authentisierung, Kryptographie und natürlich die Trust Boundaries beinhaltet.&lt;br /&gt;
&lt;br /&gt;
; 5. &amp;quot;Bei Web-Anwendungen handelt es sich häufig um spezielle Eigenentwicklungen....&amp;quot;&lt;br /&gt;
&lt;br /&gt;
Erstens würde ich hier den geläufigen Begriff &amp;quot;Individualsoftware&amp;quot; verwenden. Zweitens würde ich statt bestimmte SDLC-Phasen vorzugeben (die Begriffe &amp;quot;Softwareverteilung&amp;quot; und &amp;quot;Integration&amp;quot; sind mir bei Webanwendungen bisher noch nicht so häufig untergekommen), besser von der Notwendigkeit sprechen, Sicherheit in allen Entwicklungsphasen zu berücksichtigen, also eines SDLs.&lt;br /&gt;
&lt;br /&gt;
; 6. &amp;quot;Alle Ein- und Ausgaben der Web-Anwendung müssen in eine normalisierte Form überführt werden....&amp;quot;&lt;br /&gt;
&lt;br /&gt;
Normalisierung ist für mich nicht gleich Kanonsierung, auch wenn beide Begriffe häufig als synonym verwendet werden.  Der Unterschied wird in der [http://owasp-esapi-java.googlecode.com/svn/trunk_doc/2.0-rc4/org/owasp/esapi/Encoder.html API-Beschreibung der ESAPI] erklärt. Die Normalisierungs-Funktion ist allerdings schon vor einiger Zeit aus der ESAPI [https://lists.owasp.org/pipermail/esapi-dev/2010-January/000266.html rausgeflogen]. Die generelle Kanonisierung von Ausgaben halte ich dazu für nicht sinnvoll.&lt;br /&gt;
&lt;br /&gt;
Zweitens, finde ich den weiteren Text zwar grundsätzlich formal korrekt, aber so allgemein, dass dieser glaube ich niemandem so richtig etwas bringt.  &lt;br /&gt;
&lt;br /&gt;
Besser fände ich hier Ein- von Ausgabevalidierung grundsätzlich voneinander abzugrenzen. Etwa was ich per Eingabevalidierung (Längenprüfung, Casting, etc. per Whitelisting) und was mit Ausgebavalidierung (Enkodierung, Escaping, Parametrisierung) machen muss und kann.&lt;br /&gt;
&lt;br /&gt;
Eingabedaten können technisch zudem auch Werte eingelesener Property-Dateien sein. Muss ich die auch validieren? Ist das dann noch Grundschutz? &lt;br /&gt;
&lt;br /&gt;
; 7. &amp;quot;Für den Zugriff auf sensitive Funktionen oder Informationen muss die Web-Anwendung eine wirksame Authentisierung und Sitzungsverwaltung unterstützen. Die Eigenschaften der Sitzungs-ID müssen so gewählt werden, dass die Sitzung ausreichend geschützt ist. ....&amp;quot;&lt;br /&gt;
&lt;br /&gt;
Besser fände ich &amp;quot;eine Authentisierung, die über eine dem Schutzbedarf der Anwendung angemessene Stärke verfügt.&amp;quot; &lt;br /&gt;
&lt;br /&gt;
Eigentlich geht es doch mehr um den Schutz der Sitzungs-ID, da diese gewöhnlich im Verlauf einer Sitzung den Client authentisiert. Oder den Schutz des Zugriffs auf eine Sitzung. &lt;br /&gt;
&lt;br /&gt;
Zudem fehlt hier meiner Meinung nach der Hinweis auf die bevorzugte Verwendung getesteter Standardkomponenten.&lt;br /&gt;
&lt;br /&gt;
; 8. &amp;quot;Die Web-Anwendung sollte die zu übermittelnden Daten schützen.&amp;quot;&lt;br /&gt;
&lt;br /&gt;
Dies würde ich nur auf sensible Daten beziehen. Zusätzlich zu HTTPS würde ich hier schreiben, dass sensible Daten generell nicht in der URL übertragen werden dürfen.&lt;br /&gt;
&lt;br /&gt;
; 9. &amp;quot;Die Preisgabe interner Informationen (z.B. Kommentare, Fehlermeldungen)&amp;quot;&lt;br /&gt;
&lt;br /&gt;
Hier würde ich eher schreiben &amp;quot;(IN Kommentaren, Fehlermeldungen, HTTP Headern, etc.)&amp;quot;&lt;br /&gt;
&lt;br /&gt;
; 10. &amp;quot;Fehler müssen so behandelt werden, ... müssen Fehler bei der Autorisierung zu einer Verweigerung beim Zugriff auf die angeforderte Ressource führen.&amp;quot;&lt;br /&gt;
&lt;br /&gt;
Sprachlich: &amp;quot;Die Webanwendung muss sich stets in einem sicheren Zustand befinden. Beispielsweise müssen Fehler bei der Autorisierung zu einer Verweigerung des Zugriffs führen (Default-Deny-Strategie).&amp;quot;&lt;br /&gt;
&lt;br /&gt;
; 11. &amp;quot;Die Logging-Funktionen der Web-Anwendung müssen aufgetretene Ereignisse derart protokollieren, dass sicherheitskritische Vorfälle nachvollzogen werden können.&amp;quot;&lt;br /&gt;
&lt;br /&gt;
Hier würde hier eher von &amp;quot;allen sicherheitsrelevanten Ereignissen&amp;quot; sprechen.&lt;br /&gt;
&lt;br /&gt;
Weiterhin sollten insbesondere beim Logging der Datenschutz berücksichtigt werden, personenbezogene Daten also nach Möglichkeit nicht oder nur anonymisiert in technischen Logdateien protokolliert werden.&lt;br /&gt;
&lt;br /&gt;
; 12. &amp;quot;Alle Sicherheitsmechanismen (z.B. Authentisierung und Zugriffskontrolle) sind serverseitig zu implementieren und können nicht durch clientseitige Mechanismen ersetzt werden.&amp;quot;&lt;br /&gt;
&lt;br /&gt;
Die Aussage ist so nicht korrekt. Darüber hatten wir bereits bei der ASVS mehrfach diskutiert. &lt;br /&gt;
&lt;br /&gt;
Überall dort wo der Client angegriffen wird, also etwa bei RIAs (Stichwort DOM-Based XSS) müssen wir Security Controls clientseitig implementieren. Es gibt mittlerweile deshalb auch eine Portierung der ESAPI auf Javascript. Überall dort wo der Server oder Hintegrundsysteme angegriffen werden, ist die Aussage aber natürlich zutreffend.&lt;br /&gt;
&lt;br /&gt;
== &amp;quot;Gefährdungen&amp;quot; (Markus, Dennis, .... &amp;lt;Dein Name&amp;gt;) ==&lt;br /&gt;
; Generell:&lt;br /&gt;
Reference auf RFCs fehlen.&lt;br /&gt;
&lt;br /&gt;
==B.5.XX Web-Anwendungen ==&lt;br /&gt;
; 1. Erster Absatz - Letzter Satz: --Wieso werden hier nur HTML/XML Doks und Oberflächen angesprochen? Was ist der Unterschied zwischen einem HTML-Dok und einer Oberfläche? Was ist mit  Flash, etc.? Was ist mit WebSockets?&lt;br /&gt;
; 2. Stichpunkt &amp;quot;Protokollierung&amp;quot;: Sicherheits relevant ist ein sehr dehnbarer Begriff - Eine bessere Formulierung könnte sein: Zur Rekonstruktion von Nutzerhandlungen nötige Ereignisse (positve &amp;amp; negative) müssen protokolliert werden . . . &lt;br /&gt;
; 3. Absatz: &amp;quot;Abgrenzung des Bausteins&amp;quot;: &amp;quot;Die spez. Sicherheitsanforderungen an Web-Services werden in diesem Baustein nicht betrachtet&amp;quot; --&amp;gt; Wie so nicht? Was ist das Backend von einer Rest / AJAX-basierenden Webanwendung denn anderes als ein Web-Service? Diesen Satz würde ich entfernen.&lt;br /&gt;
; 4.Vorsätzliche Handlungen -&amp;gt; Web-Spoofing (G.5.87) -- Missverständliche Bezeichnung / Nomenklatur&lt;br /&gt;
; 5. Seite 4 : erste Zeile &amp;quot;Umsetzung&amp;quot;: &amp;quot;dafür umzusetztende Komponenten müssen die Webanwendung schützen...&amp;quot; - Hier fehlt mir der Hinweis, dass dieser Schutz verifiziert werden muss.&lt;br /&gt;
; 6 Seite 5: &amp;quot;Umsetzung&amp;quot; - Wir haben CSRF, D(D)os und SQL-Injection aber wo ist XSS?&lt;br /&gt;
; 7 Seite 7: &amp;quot;Die Sicherheitsfunktion wird ausschließlich clientseitig...&amp;quot; --&amp;gt; Warum muss der Angreifer überhaupt einen Browser umkonfigurieren? Was ist mit Proxies, Scripts, etc.? Ich würde das reduzieren darauf, dass rein Webbrowser-basierende Schutzfunktionen einfach umgangen werden können.&lt;br /&gt;
; 8 Seite 8: Die angesprochenen Punkte hinterlassen den Eindruck nicht vollständig zu sein: Mir fehlen Punkte wie &amp;quot;Outsourcing&amp;quot;, &amp;quot;KnowHow der Entwickler&amp;quot;, Tooling, Framework-Auswahl, etc.&lt;br /&gt;
; 9 Seite 9: Eigentlich möchte der Autor hier über Datenschutz sprechen. Abgesehen von den letzten drei Zeilen geht es aber nur um &amp;quot;User tracking&amp;quot; - Wo ist der Rest der Datenschutzproblematik? Warum der Fokuss auf Tracking? Mir ist das zu einseitig.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
tbd.&lt;br /&gt;
&lt;br /&gt;
; Wortwahl:&lt;br /&gt;
Ich stosse innerhalb der Texte immer wieder an die Worten '''Hintergrundsystem''' und '''Sicherheitskontext'''.&lt;br /&gt;
'''Hintergrundsystem:''' besseres Synonym?&lt;br /&gt;
'''Sicherheitskontext:''' nur weil es in den Texten um Sicherheit geht muss nicht an jeder Stelle immer wieder das Wort _Sicherheits_kontext eingebaut werden.&lt;br /&gt;
Bsp: &amp;quot;Erlangt ein Angreifer Kenntnis von einer solchen gültigen, aber nicht mehr genutzten SessionID, so kann er die Web-Anwendung im Sicherheitskontext des nicht abgemeldeten Benutzers weiter verwenden.&amp;quot; (G 5,WA12 Unzureichendes Session-Management von Web-Anwendungen)&lt;br /&gt;
Verbesserungsansansatz: ... so kann er die Web-Anwendung anstelle des eigentlichen Besitzers weiterhin verwenden.&lt;br /&gt;
&lt;br /&gt;
== &amp;quot;G 2.WA01 Mangelhafte Auswahl oder Konzeption von Web-Anwendungen&amp;quot; (Matthias) ==&lt;br /&gt;
&lt;br /&gt;
Nachdem ich mir diese Gefährdung durchgelesen hatte, fehlten mir ehrlich gesagt etwas die Worte. Nicht nur, dass hier fast jeder zweite Satz entweder falsch ist bzw. massive Fehler enthält oder ich diesen schlicht nicht verstehe, ist der ganze Text sprachlich wirklich enorm verbesserungsfähig. &lt;br /&gt;
&lt;br /&gt;
Na gut, ich konzentriere mich mal auf die fachlichen Punkte:&lt;br /&gt;
&lt;br /&gt;
; 1. Security Controls&lt;br /&gt;
Werden mal mit &amp;quot;Schutzmechanismen&amp;quot;, mal mit &amp;quot;Sicherheitskomponenten&amp;quot; und dann wieder als &amp;quot;Sicherheitsfunktionen&amp;quot; bezeichnet. Hier macht eine einheitliche Benennung sicherlich Sinn und ist weniger verwirrend.&lt;br /&gt;
&lt;br /&gt;
; 2. &amp;quot;Eine Web-Anwendung ist in der Regel ein verteiltes, komplexes System bestehend aus unterschiedlichen Komponenten (z. B. Webserver, Applikationsserver, Hintergrundsysteme)&amp;quot;&lt;br /&gt;
&lt;br /&gt;
Eine Webanwendung besteht sicher nicht aus einem Webserver- oder anderer infrastruktureller Komponenten, sondern ist Software welches diese nutzt.&lt;br /&gt;
&lt;br /&gt;
; 3. &amp;quot;Bei individuell entwickelten Web-Anwendungen sind im Allgemeinen die Frameworks, Komponenten und Schnittstellen im Rahmen der Konzeption auszuwählen und deren Einbindung und Absicherung zu betrachten....Im Gegensatz dazu ist bei der Konzeption von Web-Anwendungen auf Basis von Standardsoftware insbesondere auf die Auswahl der Software und die Konfiguration der Teilkomponenten zu achten&amp;quot;&lt;br /&gt;
&lt;br /&gt;
Wir unterscheiden im Rahmen von Webanwendungen eigentlich Free or Opensource Software (FOSS bzw. FLOSS), Standardsoftware und Individualsoftware voneinander. Wir unterscheiden nicht Frameworks von Standardsoftware. Frameworks können Teil von Standardsoftware sein, wie etwa bei SharePoint, SAP, etc, oder aber FOSS, wie etwa Spring. Die ganzen Absätze machen für mich daher keinen Sinn.&lt;br /&gt;
&lt;br /&gt;
; 4. &amp;quot;Eine Sicherheitsfunktion (z. B. Authentisierung, Autorisierung) wird nicht an einer Stelle umgesetzt und verwendet, sondern ist mehrfach in der Web- Anwendung realisiert. Wird diese Sicherheitsfunktion an den verschiedenen Stellen unterschiedlich umgesetzt, führt dies zu einem uneinheitlichen Sicherheitsniveau.&amp;quot;&lt;br /&gt;
&lt;br /&gt;
Natürlich ist die mehrfache Verwendung bestimmter Security Controls, beispielsweise von Zugriffskontrollen (Complete-Mediation) oder Validierung (Robustheit) erstrebenswert. Was der Autor hier wahrscheinlich meinte, war die Notwendigkeit diese zu Kapseln bzw. zu Externalisieren. Das bezieht sich im übrigen nicht nur auf die Controls selbst, sondern auch auf ihre Parametrisierung (etwa. über Konfigdateien / XACML).&lt;br /&gt;
&lt;br /&gt;
Wichtiger wäre in diesem Zusammenhang zudem die fehlende Berücksichtigung bestimmter Security Controls.&lt;br /&gt;
&lt;br /&gt;
; 5. &amp;quot;Auswahl von Web-Anwendungen auf Basis von Standardsoftware&amp;quot;&lt;br /&gt;
Was will der Satz sagen? Ich wähle Standardsoftware aus, aber doch keine Webanwendungen. Oder heißt das, ich kaufe eine existierende Anwendung ein (Webanwendung!=Indivudualsoftware)? &lt;br /&gt;
&lt;br /&gt;
; 6. &amp;quot;Das ausgewählte Produkt verfügt nicht über die ausreichende Sicherheitsfunktionalität, ... Daher müssen die notwendigen Schutzmechanismen nachträglich hinzugefügt werden, wodurch zusätzliche Aufwände entstehen.&amp;quot;&lt;br /&gt;
Das ist etwas sehr positiv formuliert. Tatsächlich können fehlende Security Controls in zugekaufter Software (insb. Standardsoftware) in der Realität häufig gar nicht hinzugefügt werden oder nur perimetrisch (z.B. per WAF oder Access Gateway).&lt;br /&gt;
&lt;br /&gt;
; 7. &amp;quot;Die Hintergrundsysteme werden unzureichend abgesichert und dadurch ist die Datenbank der Web-Anwendung aus dem Internet erreichbar.&amp;quot;&lt;br /&gt;
Gehören fehlende Netzwerksegmentierung bzw. Firewallregeln wirklich in diesen Kontext? Das ist doch eigentlich Grundschutz der Infrastruktur, oder?&lt;br /&gt;
&lt;br /&gt;
; 8. &amp;quot;Aufgrund schwacher Parameter in der Konfiguration des Frameworks zum Session-Management werden unsichere SessionIDs erzeugt.&amp;quot;&lt;br /&gt;
Was sind &amp;quot;schwache&amp;quot; Parameter?&lt;br /&gt;
&lt;br /&gt;
Welches Framework erlaubt unsichere SessionIDs durch eine &amp;quot;schwache&amp;quot; Konfiguration zu erzeugen?&lt;br /&gt;
&lt;br /&gt;
; 9. &amp;quot;Wird die Konfiguration des Web-Browsers durch einen Angreifer manipuliert, können die clientseitig umgesetzten&amp;quot;&lt;br /&gt;
&lt;br /&gt;
Manipuliert ein Angreifer die Konfguration seines Webbroswers, wenn er einen MITM-Proxy konfiguriert?&lt;br /&gt;
&lt;br /&gt;
Wie bereits bei den &amp;quot;Goldenen Regeln&amp;quot; angemerkt, gilt auch hier, das manche Security Controls auch clientseitig umgesetzt werden dürfen (etwa. zur Verhinderung von Dom-Based XSS).&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== &amp;quot;G 5.WA10 Fehler in der Web-Anwendungslogik&amp;quot; (Dennis) ==&lt;br /&gt;
; 1. &amp;quot;Damit kann aufgrund der Prüfreihenfolge ein hoher Ressourcenverbrauch provoziert werden, der für Denial-of-Service-Angriffe ausgenutzt werden kann.&amp;quot;&lt;br /&gt;
Meiner Meinung nach passt in diesem Kontext die Attacke DoS nicht ganz. Falls die nachfolgende Funktionalität wegen der langen Ausführungszeit der Filterkomponente übersprungen wird bzw. ein Fehler auftritt würde dies meiner Ansicht in die Thematik Anwendungslogik passen. Eine DoS-Attacke kann hingegen anhand jeder Funktion durchgeführt werden.&lt;br /&gt;
&lt;br /&gt;
== &amp;quot;G 5.WA11 Umgehung clientseitig umgesetzter Sicherheitsfunktionen von Web-Anwendungen&amp;quot; (Dennis) ==&lt;br /&gt;
; 1. &amp;quot;Ein Angreifer kann diese ausnutzen, um beispielsweise unbefugt Befehle an Hintergrundsysteme der Web-Anwendung zu übermittlen (z.B. in Form von Datenbankanfragen bei einer SQL-Injection).&amp;quot;&lt;br /&gt;
Umformulierung des Inhalts der Klammer. Hatte beim ersten Lesen für mich den Anschein, als ob ein Formular genutzt werden könnte welches den Nutzer aufforder eine SQLI einzugeben. Ich denke &amp;quot;Datenbankanfrage zwecks Ausführung einer SQL-Injection&amp;quot; würde besser passen.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== G 2.WA02 Mängel bei der Entwicklung und der Erweiterung von Web-Anwendungen (Matthias) ==&lt;br /&gt;
&lt;br /&gt;
Allgemein ist de obere Teil ok, die aufgezählten &amp;quot;Auswirkungen von fehlenden Vorgaben&amp;quot; verstehe ich jedoch nicht. Wo ist etwa der Bezug von Barrierefreiheit auf die Anwendungssicherheit?&lt;br /&gt;
&lt;br /&gt;
Mein Vorschlag, um diese Punkte etwa sinnvoll umzubauen:&lt;br /&gt;
* &amp;quot;Fehlendes Vorgehensmodell&amp;quot;: Bezug auf fehlende Berücksichtigung von Sicherheit im SDLC. Statt eines SDLCs selbst sollte hier besser auf die Notwendigkeit eines Secure Development Lifecycle (SDL) hingewiesen werden&lt;br /&gt;
* &amp;quot;Fehlende Programmierrichtlinien&amp;quot; =&amp;gt; Besser wäre hier &amp;quot;Fehlende Sicherheitsrichtlinien in der Programmierung&amp;quot; also &amp;quot;Secure Coding Guidelines&amp;quot;&lt;br /&gt;
* &amp;quot;Testfälle&amp;quot; =&amp;gt; &amp;quot;Sicherheitsrelevante Testfälle&amp;quot; (z.B. Security Unit Tests). &lt;br /&gt;
* &amp;quot;Barrierefreiheit&amp;quot;: Warum nicht an dieser Stelle die Auswirkungen von Sicherheitsfunktionen auf die Bedienbarkeit, etwa anhand von CAPTCHAS erläutern?&lt;br /&gt;
&lt;br /&gt;
== G 2.WA03 Unzureichender Schutz personenbezogener Daten bei Web-Anwendungen (Matthias) ==&lt;br /&gt;
&lt;br /&gt;
Der Titel dieses Bausteines heißt &amp;quot;Schutz personenbezogener Daten&amp;quot;, die genannten Beispiele beziehen sich bis auf den letzten jedoch auf die missbräuchliche (oder zumindest problematische) Nutzung aus Sicht des Datenschutzes. &lt;br /&gt;
&lt;br /&gt;
Die Punkt 1-3 sollten daher besser entfallen und z.B. durch die Folgenden ersetzt werden:&lt;br /&gt;
* Unsichere Einbindung von sozialen Netzwerken (Bezug nehmen auf den Like-Button bei Facebook)&lt;br /&gt;
* Unsichere Einbindung von Werbeinhalten&lt;br /&gt;
* Unsichere Übertragung und Caching&lt;br /&gt;
* Unsichere Protokollierung&lt;br /&gt;
* Ungenügender Zugriffsschutz&lt;br /&gt;
* Verstoß des Minimalprinzips bzw. der Zweckgebundenheit (welche Daten werden wirklich benötigt)&lt;br /&gt;
&lt;br /&gt;
Auch wäre es ggf. zumindest einen Verweis auf das BDSG zu machen.&lt;br /&gt;
&lt;br /&gt;
== G 4.33 Unzureichende oder fehlende Authentisierung (Matthias) ==&lt;br /&gt;
&lt;br /&gt;
; 1. Erster Absatz: &amp;quot;Wenn Authentisierungsmechanismen fehlen oder zu schlecht sind&amp;quot;&lt;br /&gt;
&lt;br /&gt;
&amp;quot;schlecht&amp;quot; sollte vlt besser durch &amp;quot;unzureichend&amp;quot; ersetzt werden.&lt;br /&gt;
&lt;br /&gt;
; 2. &amp;quot;Sicherheitslücken entstehen bei... der Benutzerauthentisierung&amp;quot;&lt;br /&gt;
&lt;br /&gt;
Hier findet nur ein Bezug auf &amp;quot;Passwörter&amp;quot; statt. Der Bezug auf die fehlerhaft implementierte oder dem Schutzbedarf ungenügende Schutzmechanismen (z.B. keine 2-Faktor-Authentisierung bei hochsensiblen Daten) fehlt. Auch auf das komplette fehlen von Authentisierungs-Controls wird hier nicht  eingegangen&lt;br /&gt;
&lt;br /&gt;
; 3. &amp;quot;Sicherheitslücken entstehen bei... der Komponentenauthentisierung&amp;quot;&lt;br /&gt;
&lt;br /&gt;
Wie bei 2., wird auch hier wieder nur auf Passwörter, nicht jedoch auf das fehlen von Controls selbst eingegangen. An dieser Stelle fehlt auch ein Hinweis auf die Notwendigkeit dedizierter Benutzeraccounts.&lt;br /&gt;
&lt;br /&gt;
; 4. &amp;quot;Sicherheitslücken entstehen bei... der Wahl des Verfahrens&amp;quot;&lt;br /&gt;
&lt;br /&gt;
Statt untauglich würde ich auch hier von &amp;quot;dem Schutzbedarf der Daten nicht angemessen&amp;quot; sprechen, eigentlich gehört das für mich aber in die obigen Punkte.&lt;br /&gt;
&lt;br /&gt;
; 5. Serverseitige Authentisierung fehlt&lt;br /&gt;
&lt;br /&gt;
Auch der Server (bzw. die Anwendung selbst) kann sich fehlerhaft oder ungenügend beim Benutzer authentsieren, etwa über DNS, SSL-Zertifikate, etc.&lt;br /&gt;
&lt;br /&gt;
== G 4.WA04 Unzureichende Validierung von Ein- und Ausgabedaten bei Web-Anwendungen (Matthias) ==&lt;br /&gt;
&lt;br /&gt;
; 1. &amp;quot;Unzureichende Validierung von Eingabedaten&amp;quot;&lt;br /&gt;
&lt;br /&gt;
Die genannten Beispiele sind genau keine korrekten Beispiele für diesen Fall, sondern betreffen die Ausgabevalidierung bzw. Enkodierung. Typische Fehler der Eingabevalidierung ist eine Manipulierbarkeit der Business Logik.&lt;br /&gt;
&lt;br /&gt;
; 2. &amp;quot;Unzureichende Validierung von Ausgabedaten&amp;quot;&lt;br /&gt;
&lt;br /&gt;
Hier geht es zentral um die Verhinderung von Interpreter Injection, also serverseitig (z.B. SQL oder LDAP Injection) oder clientseitig (XSS, JSON Injection, etc.). Statt &amp;quot;können die Ausgaben Schadcode&amp;quot; enthalten würde ich hier eher davon Sprechen, dass ein solcher Interpreteraufruf manipuliert werden kann (was dann z.B. zur Einschleusung von Schadcode genutzt werden kann).&lt;br /&gt;
&lt;br /&gt;
; 3. &amp;quot;Die Suchfunktion der Web-Anwendung verwendet die Eingaben der Benutzer ungefiltert&amp;quot;&lt;br /&gt;
&lt;br /&gt;
Mit ungenügender &amp;quot;Filterung&amp;quot; hat SQL Injection nichts zu tun,  eigentlich geht es hierbei darum, dass SQL-Anfragen dynamisch mit unvalidierten Eingebedaten zusammengebaut (konkateniert) werden.&lt;br /&gt;
&lt;br /&gt;
; 4. &amp;quot;Ungefilterter HTML-Code in Kommentar-Funktion&amp;quot;&lt;br /&gt;
&lt;br /&gt;
Hier fehlt der Bezug auf persistentes XSS, das hier sicherlich zentral ist.&lt;br /&gt;
&lt;br /&gt;
== G 4.WA05 Fehlende oder mangelhafte Fehlerbehandlung durch Web-Anwendungen (Tobias) ==&lt;br /&gt;
; Abschnitt &amp;quot;Unsichere Fehlerbehandlung&amp;quot;&lt;br /&gt;
Die G adressiert &amp;quot;Unsichere Fehlerbehandlung&amp;quot;, der Abschnitt die &amp;quot;Unsichere Fehlerbehandlung in Sicherheitskomponenten&amp;quot;. Entsprechend sollte der fettgedruckte Teil angepasst werden.&lt;br /&gt;
&lt;br /&gt;
; &amp;quot;fehlende SQL-Parameter,&amp;quot;&lt;br /&gt;
Sollte besser &amp;quot;Fehlermeldungen bei ungültigen SQL-Abfragen&amp;quot; lauten.&lt;br /&gt;
&lt;br /&gt;
; &amp;quot;Auch scheinbar unkritische Informationen, wie die Meldung ob (..)&amp;quot;&lt;br /&gt;
Korrekt, allerdings nicht nachvollziehbar, wenn das Problem der Leser nicht schon bekannt ist. Daher erweitern nach &amp;quot; Rahmen von Brute-Force-Angriffen ausgenutzt werden.&amp;quot; mit &amp;quot;. Bei Brute-Force-Angriffen wäre in diesem Fall klar, dass der Benutzername gültig ist.&amp;quot; &lt;br /&gt;
&lt;br /&gt;
== G 4.WA06 Unzureichende Nachvollziehbarkeit von sicherheitsrelevanten Ereignissen bei Web-Anwendungen (Matthias) ==&lt;br /&gt;
&lt;br /&gt;
; 1. Erster Absatz: &amp;quot;Die Behebung einer Schwachstelle ist dann nicht oder nur unter erschwerten Bedingungen möglich.&amp;quot;&lt;br /&gt;
&lt;br /&gt;
Hier würde ich ergänzen: &amp;quot;...und Angriffe auf die Anwendungen können ggf. nicht erkannt oder nachvollzogen werden&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
; 2. &amp;quot;Beispiele&amp;quot;: Kommulierbarkeit&lt;br /&gt;
&lt;br /&gt;
Hier fehlt auch ein Bezug auf die Kommulierbarkeit von SIcherheitsereignissen, dass diese also auch von solchen anderer Systeme in Verbindung gesetzt werden können&lt;br /&gt;
&lt;br /&gt;
; 3. &amp;quot;Beispiele&amp;quot;: Gerichtsverwertbarkeit&lt;br /&gt;
&lt;br /&gt;
Auch die Möglichkeit zur Gerichtsverwertbarkeit (etwa durch eindeutigen Zeitstempel) und manipulationssicherer Speicherung, würde ich an dieser Stelle unbedingt erwähnen.&lt;br /&gt;
&lt;br /&gt;
== G 4.WA07 Offenlegung von Informationen bei Web-Anwendungen (Matthias) ==&lt;br /&gt;
&lt;br /&gt;
; 1. Titel&lt;br /&gt;
&lt;br /&gt;
Hier würde ggf. &amp;quot;Offenlegung vertraulicher Informationen&amp;quot; sicher besser passen als &amp;quot;Offenlegung von Informationen&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
; 2. Beispiellink&lt;br /&gt;
&lt;br /&gt;
Ein Beispiellink (mit und ohne Token) würde sicher die Verständlichkeit dieser Schwachstelle verbessern.&lt;br /&gt;
&lt;br /&gt;
; 3. Erster Absatz: &amp;quot;Wenn demzufolge Informationen unnötig offengelegt werden, steigt die Wahrscheinlichkeit eines erfolgreichen Angriffs.&amp;quot;&lt;br /&gt;
&lt;br /&gt;
Interne Informationen auszublenden ist eine Härtungsmaßnahme, deren Anzeige erhöht aber nicht zwangsläufig die Wahrscheinlichkeit eines erfolgreichen Angriffs. Ich würde diesen Satz weglassen.&lt;br /&gt;
&lt;br /&gt;
 ; 4. Fehlende Punkte&lt;br /&gt;
&lt;br /&gt;
* Ein Hinweis auf HTTP Header wäre hier sicher erwähnenswert.&lt;br /&gt;
* Weiterhin bzgl. der Anzeige von Traces und ein Verweis auf den Entsprechenden Baustein zur Fehlerbehandlung&lt;br /&gt;
&lt;br /&gt;
== G 5.WA14 Cross-Site Request Forgery (CSRF, XSRF) (Matthias) ==&lt;br /&gt;
&lt;br /&gt;
; 1. Erster Absatz: &amp;quot;Können Funktionen einer Web-Anwendung ohne weitere Überprüfung der Authentizität des HTTP-Requests (z.B. durch Tokens in versteckten Formularfeldern) genutzt werden&amp;quot;&lt;br /&gt;
&lt;br /&gt;
Statt &amp;quot;Funktionen&amp;quot; würde ich besser von &amp;quot;schreibenden Aktionen&amp;quot; sprechen, dann macht der Satz mehr Sinn.&lt;br /&gt;
&lt;br /&gt;
; 2. Dritter Absatz: &amp;quot;Im Gegensatz zu XSS (siehe ...￼ ) ist das Angriffsziel nicht die Information auf dem Client (z. B. in Cookies),&amp;quot;&lt;br /&gt;
&lt;br /&gt;
Dieser (Halb-)Satz macht keinen Sinn, auch weil es bei XSS nicht nur im Informationen auf dem Cient geht. Vorschlag: &amp;quot;ist das Angriffsziel nicht die Ausführung von Skriptcode, sondern von unbefugten, schreibenden Aktionen im Kontext des angemeldeten Benutzers.&amp;quot;&lt;br /&gt;
&lt;br /&gt;
; 3. Session Riding&lt;br /&gt;
&lt;br /&gt;
Session Riding ist quasi nur ein anderer Begriff für CSRF. Die einzige Form von CSRF die mir bekannt ist, sind Angriffe mit Standard-Passwörtern auf HTTP-Basic-Auth geschützten Ressourcen.&lt;br /&gt;
&lt;br /&gt;
Im Grunde ist Session Riding aber nur ein Synonym für CSRF. Der Absatz ist daher auch nur eine Wiederholung der obigen Beschreibung.&lt;br /&gt;
&lt;br /&gt;
; 4. Zum Beispiel: &amp;quot;Durch einen präparierten Link auf einer Webseite wird die Änderung des Zugangspasswortes des Routers eingeleitet.&amp;quot;&lt;br /&gt;
&lt;br /&gt;
Etwas ungüngstig ausgedrückt. Besser wäre: &amp;quot;wird eine Anfrage zur Änderung des Zugangspasswortes an den Router gesendet. Hierbei sendet der Browser automatisch den Session Cookie mit, worüber die Webanwendung die Authentizität der Anfrage verifiziert und die Änderung durchführt.&amp;quot;&lt;br /&gt;
&lt;br /&gt;
== G 5.WA18 Clickjacking (Matthias) ==&lt;br /&gt;
&lt;br /&gt;
Hier stellt sich mir nur die allgemeine Frage, ob Clickjacking, bzw. der Schutz davor tatsächlich einem Grundschutz zuzurechnen ist. Persönlich würde ich dies nicht tun.&lt;br /&gt;
&lt;br /&gt;
== M 2.WA02 Dokumentation der Architektur von Web-Anwendungen (Matthias) ==&lt;br /&gt;
&lt;br /&gt;
; Verantwortlich für die Umsetzung&lt;br /&gt;
Hier wäre auch die Nennung des &amp;quot;Architekten&amp;quot; sinnvoll&lt;br /&gt;
 &lt;br /&gt;
; Fehlende Bestandteile der Dokumentation:&lt;br /&gt;
* Schutzbedarf des Systems sowie der verarbeiteten Daten&lt;br /&gt;
* Schützenswerte Daten und Funktionen (Assets)&lt;br /&gt;
* Betriebliche Anforderungen an die Sicherheit bzw. eingesetzte Plattform&lt;br /&gt;
* Dokumentierte Konfigurationseinstellungen &lt;br /&gt;
* BIA (RTO, RPO)&lt;br /&gt;
* Schnittstellen&lt;br /&gt;
* Trust Boundaries&lt;br /&gt;
* Akteure (bzw. Trust Level)&lt;br /&gt;
* Sicherheitsannahmen&lt;br /&gt;
* Geltende Compliance-Anforderungen (BDSG, PCI DSS, etc.)&lt;br /&gt;
&lt;br /&gt;
; Benutzermanagement&lt;br /&gt;
&lt;br /&gt;
Wenn damit das Identity Management gemeint ist, gehört das Dokumentiert, ist aber keine Sicherheitsfunktion. Oder ist hiermit das Rollen- und Berechtigungskonzept gemeint? Grenzt sich aus meiner Sicht schwer mit dem Thema Authentisierung ab. &lt;br /&gt;
&lt;br /&gt;
; Prüffragen&lt;br /&gt;
&lt;br /&gt;
Hier fehlt etwas in Bezug auf Sicherheitsanforderungen. Beispiel: &amp;quot;Werden Sicherheitsanforderungen an den Betrieb während der Entwicklung abgestimmt und dokumentiert&amp;quot;&lt;br /&gt;
&lt;br /&gt;
== M 2.WA12 Entwicklung und Erweiterung von Anwendungen (Markus) ==&lt;br /&gt;
; &amp;quot;Es sollte darauf geachtet werden, dass Sicherheitsanforderungen&lt;br /&gt;
vollständig durch Sicherheitsmechanismen erfüllt und zur Erstellung von&lt;br /&gt;
Testfällen festgehalten werden.&amp;quot; --&amp;gt; Bessere Formulierung würde aussagen, dass die Sicherheitsanforderungen durch Testfälle verifiziert werden.&lt;br /&gt;
&amp;quot;(z. B. durch Kommentare im&lt;br /&gt;
Quelltext). Somit ist der Quelltext zu einem&amp;quot; --&amp;gt; Das ist kein empfehlenswerter Programmierstiel! Raus mit diesem Kommentar&lt;br /&gt;
;&amp;quot;Zum Schutz vor dem Verlust bereits entwickelter und verworfener&lt;br /&gt;
Lösungen sowie zu Dokumentationszwecken sollte die Historie der&lt;br /&gt;
Änderungen festgehalten werden (z. B. durch ein Revisionssystem).&amp;quot; --&amp;gt; Auch diesen Absatz können wir streichen - Kein professioneller Programmierer arbeitet ohne Versionierugssystem.&lt;br /&gt;
;&amp;quot;Bei Web-Anwendung sollten die Webseiten auf Konformität zu dem&lt;br /&gt;
verwendeten Standard (z. B. HTML-Standard) getestet werden. Dadurch&lt;br /&gt;
können unvorgesehene Seiteneffekte aufgrund einer Fehlinterpretation&lt;br /&gt;
seitens der Browser vermieden werden.&amp;quot; --&amp;gt; Könnte man noch um &amp;quot;Die Software ist in möglichst vielen Browsern zu testen&amp;quot; erweitern.&lt;br /&gt;
;Generell geht der Autor leider nicht auf die Rollen &amp;amp; Rechte Verteilung ein. Mir fehlt der Hinweis, das es eine personelle Trennung zwischen Entwicklung, Test und Betrieb geben muss.&lt;br /&gt;
;Zum Thema Wartung / Betrieb --&amp;gt; Hier wird keine Aussage getroffen bezüglich Log_Files. Dieses Thema kann kritische Auswirkungen haben, Bsp.: logging ganzer HTTP-Requests im LogLevel=Debug.&lt;br /&gt;
; &amp;quot;Produktspezifische Sicherheitsfunkionalität&amp;quot; - Dieser Absatz ist gefährlich - der Angreifer ist nicht zur Verwendung dies Zielbrowsers gezwungen. Deshalb können Browser-spez. Sicherheitsfunktionen nur als Add-ON gewertet werden.&lt;br /&gt;
; &amp;quot;Festlegung der Entwicklungsumgebung&amp;quot; - Dieser Absatz geht nicht auf die zu verwendenden Testdaten ein. Der Hinweis, dass Live-Daten / Kundendaten nichts in Test- &amp;amp; Entwicklungsumgebungen zu suchen haben fehlt!!!&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== M 2.WA24 Web-Tracking (Matthias) ==&lt;br /&gt;
&lt;br /&gt;
; Letzter Absatz: &amp;quot;Falls eine Auswertung von Nutzerdaten, insbesondere personenbezogener Daten, .. &amp;quot;&lt;br /&gt;
&lt;br /&gt;
Hier sollte denke ich besser von personenbeziehbaren Daten gesprochen Werten. Dies betrifft etwa die Zuordnung von Surfverhalten zu einer bestimmten Person. Dies sollte stets nach den Prinzipien Datensparsamkeit und Datenvermeidung, Erforderlichkeit, sowie Zweckbindung erfolgen. Ist Webtracking nicht personenbeziehbar ist dies kein Thema für den Datenschutz.&lt;br /&gt;
&lt;br /&gt;
== M 4.WA04 Authentisierung bei Web- Anwendungen (Matthias) ==&lt;br /&gt;
&lt;br /&gt;
; Vermischung von Authentisierung und Session Management &lt;br /&gt;
&lt;br /&gt;
Bei diesem Baustein findet eine ziemlich große Vermischung von Anforderung an die Authentisierung und das erst in &amp;quot;M 4.WA06 Session-Management bei Web- Anwendungen&amp;quot; behandelte Session Management statt (Beispiel: &amp;quot;Remember-Me-Funktion&amp;quot;). Beide Themen sollten sinnvollerweise getrennt voneinander zu betrachten und aufeinander zu beziehen.&lt;br /&gt;
&lt;br /&gt;
; Verwendung von Frameworks&lt;br /&gt;
&lt;br /&gt;
Die Anforderung ist schon ein wenig eingeschränkt. Besser passt hier denke ich die &amp;quot;Abbildung der Authentisierung über Standardkomponenten (Bibliotheken oder Frameworks)&amp;quot;. &lt;br /&gt;
&lt;br /&gt;
; Remember-Me-Funktion&lt;br /&gt;
&lt;br /&gt;
Siehe oben, gehört zum Session Management. Das ließt sich im übrigen so, als ob eine Webanwendung Credentials auf dem Client abhängt. &lt;br /&gt;
&lt;br /&gt;
; Grenzwerte für gescheiterte Anmeldeversuche&lt;br /&gt;
&lt;br /&gt;
Diese Empfehlung ist allgemein falsch, da sie sehr von der betrachteten Anwendung abhängt. Besser wäre hier allgemein von Mechanismen zur Verhinderung von automatisierten Angriffen zu sprechen (Anti-Automatisierung). &lt;br /&gt;
&lt;br /&gt;
Etwa umsetzbar durch&lt;br /&gt;
* Sperrung nach x Anmeldeversuchen&lt;br /&gt;
* Throttling&lt;br /&gt;
* Captchas&lt;br /&gt;
* Sicherheitsfragen&lt;br /&gt;
&lt;br /&gt;
Das allgemeine Sperren kann leicht für das gezielte Aussperren von Benutzern (User Lockout) verwendet werden. Was etwa bei Trading-Anwendungen nicht funktioniert.&lt;br /&gt;
&lt;br /&gt;
; Automatisiertes Zurücksetzen von Authentisierungsdaten&lt;br /&gt;
&lt;br /&gt;
Würde ich besser als &amp;quot;Passwort-Reset&amp;quot; bezeichnen.&lt;br /&gt;
&lt;br /&gt;
Weiterhin fehlt hier der Hinweis, dass statt ein automatisiertes Zurücksetzen, ein Mechanismus zu empfehlen ist, bei dem über ein hinterlegtes Sicherheitsmerkmal (Handy-Nummer oder E-Mail-Adresse) vom Benutzer zunächst eine Verifikation durchgeführt wird. Beispielsweise durch einen erhaltenen Link. Erst dann darf eine Änderung des Passwortes durch den Benutzer erfolgen.&lt;br /&gt;
&lt;br /&gt;
; Registrierung nicht behandelt&lt;br /&gt;
&lt;br /&gt;
Es existiert hier kein Punkt, der die sichere Implementierung von Benutzerregistrierungen behandelt.&lt;br /&gt;
&lt;br /&gt;
; Verweis auf Externalisierung fehlt.&lt;br /&gt;
&lt;br /&gt;
Statt die Authentisierung selbst durchzuführen kann eine Anwendung hierzu auf eine externe Komponente (Beispiel: SiteMinder oder Kerberos) zurückgreifen.&lt;br /&gt;
&lt;br /&gt;
; Verweis auf Behandlung von Credentials fehlt&lt;br /&gt;
&lt;br /&gt;
Auch wenn das  in &amp;quot;M 4.WA15 Schutz vertraulicher Daten bei Web- Anwendungen&amp;quot; ausführlich behandelt wird, sollte in diesem Baustein bereits auf den angemessenen Schutz von Authentisierungsdaten bei Übertragung und Speicherung hingewiesen werden.&lt;br /&gt;
&lt;br /&gt;
== M 4.WA05Umfassende Ein- und Ausgabevalidierung bei Web-Anwedungen (Markus) ==&lt;br /&gt;
; &amp;quot;Ablehnung der Daten im&lt;br /&gt;
Fehlerfall&amp;quot; --&amp;gt; Hier könnte man noch auf Tar-Pits eingehen - nur ein Vorschlag.&lt;br /&gt;
&lt;br /&gt;
== M 4.WA06Session-Management bei Web-Anwendungen (Markus, Matthias) ==&lt;br /&gt;
; &amp;quot;Übertragung der SessionID mittels GETRequest&amp;quot; --&amp;gt; Hier fehlt der Hinweis, dass die Lebensdauer dieser SessionIds kurz/kürzer sein muss, als im Falle der Speicherung im Cookie.&lt;br /&gt;
&lt;br /&gt;
([[User:Mrohr|Matthias]]) Die Anmerkung verstehe ich ehrlich gesagt ueberhaupt nicht, zumal das SM haeufig transparent zwischen Cookies und URL Rewriting wechselt. Wozu soll das gut sein? Wie soll das geschehen? Idealerweise sollte die Session ID niemals in die URL geschrieben werden, das sollte eigentlich genuegen.&lt;br /&gt;
&lt;br /&gt;
; &amp;quot;Verschlüsselte Übertragung von SessionIDs&amp;quot; --&amp;gt; Hier fehlt der Hinweis auf den Beast-Exploit. TLS Version &amp;gt; 1.0 verwenden!&lt;br /&gt;
&lt;br /&gt;
([[User:Mrohr|Matthias]]) Solange hier nicht auf eine explizite TLS Version eingegangen wird, sollte meiner grossen Ueberzeugung nach hier auch auf keine Exploits etc. eingagen werden, das gehoert an andere Stelle.&lt;br /&gt;
&lt;br /&gt;
; ([[User:Mrohr|Matthias]]) Weiterhin:&lt;br /&gt;
&lt;br /&gt;
 Es dürfen keine extern bekannten oder erratbaren Daten (z. B. IP-Adresse, Uhrzeit) in die Berechnung der SessionID einfließen.&lt;br /&gt;
&lt;br /&gt;
Die Aussage finde ich etwas problematisch, wichtiger ist, dass die Entropie ausreichend hoch ist. Haeufig werden etwa IPs von Load Balancern in die Session ID hineingeschrieben.&lt;br /&gt;
&lt;br /&gt;
 - Domain (z. B. webapp.domain.tld),&lt;br /&gt;
 - Path (z. B. /webapp/),&lt;br /&gt;
 - Secure und&lt;br /&gt;
 - HttpOnly.Beschränkte Sitzungsdauer&lt;br /&gt;
&lt;br /&gt;
Das sieht so aus, als ob es empfehlenswert ist, das Domain-Tag zu verwenden, das ist es sicherlich nicht. Was macht hier der Hinweis &amp;quot;Beschraenke Sizuungsdauer&amp;quot;?&lt;br /&gt;
&lt;br /&gt;
== M 4.WA07Fehlerbehandlung durch Web-Anwendungen (Markus) ==&lt;br /&gt;
; Konsistenter / Inkonsistener Zustand einer Webanwendung und der daraus resultierende Datenverlust: Hier fehlen mir die Punkte: DOS, Priv.Escalation, CodeExecution.&lt;br /&gt;
; Vermeidung vertraulicher Informationen in Fehlermeldungen --&amp;gt; Fehlermeldungen sollten ebenfalls eine Systeminformationen preisgeben (Softwareversion, Patchlevel, etc.)&lt;br /&gt;
; Abbruch des Vorgangs nach Auftreten eines Fehlers --&amp;gt; TarPits scheinen dem Autor umbekannt zu sein :)&lt;br /&gt;
; &amp;quot;Werden Fehler möglichst von der gleichen Komponente behandelt, in der&lt;br /&gt;
der Fehler aufgetreten ist?&amp;quot; --&amp;gt; Das &amp;quot;möglichst&amp;quot; sollten wir streichen.&lt;br /&gt;
&lt;br /&gt;
== M 4.WA08Schutz vor automatisierter Nutzung von Web-Anwendungen (Markus) ==&lt;br /&gt;
; &amp;quot;Brute-Force-&lt;br /&gt;
Angriffe (z. B. Erraten von Zugangsdaten) und Enumeration-Angriffe (z. B.&lt;br /&gt;
automatisiertes Ermitteln von gültigen Login-Namen)&amp;quot; -- die Beispiele sind identisch - besser Beispiele suchen, z.b. URL-Enumeration&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== M 4.WA11Sichere Konfiguration von Web-Anwendungen (Markus) ==&lt;br /&gt;
; &amp;quot;Sicherer Umgang mit TLS/SSL&amp;quot; -- Hier fehlt der Hinweis, dass TLS-1.0 gebrochen ist&lt;br /&gt;
; &amp;quot;Zeichenkodierungskonfiguration&amp;quot; -- Ein Whitelisting abhängig von der Encodierung wäre ein weiterer Vorschlag&lt;br /&gt;
; &amp;quot;Restriktive Dateisystemberechtigungen&amp;quot; -- auch wenn es ein klassiker ist - der AS sollte ebenfalls mit von einem eingeschränkten Nutzer gestartet werden und nicht als root&lt;br /&gt;
; Administration Consolen:zur Ergänzen: Wenn diese nicht benötigit, sollten derartige Applikationen nicht deployed werden, unabhängig von möglichen Zugangsbeschränkungen.&lt;br /&gt;
&lt;br /&gt;
([[User:Mrohr|Matthias]]) Sorry, meiner Meinung nach hat die Bewertung von Kryptoverfahren hier abslut nichts zu suchen.Stattdessen sollte hier auf den entsprechenden [https://www.bsi.bund.de/ContentBSI/Publikationen/TechnischeRichtlinien/tr02102/index_htm.html Empfehlung des BSI] verwiesen werden, auch wenn dieses Dokument derzeit noch etwas outdated zu sein scheint.&lt;br /&gt;
&lt;br /&gt;
== M 4.WA13Kontrolliertes Einbinden von Daten und Inhalten bei Web-Anwendungen (Markus) ==&lt;br /&gt;
; Datei-Upload: Bei einem Upload werden Dateien durchaus in TEMP-Verzeichnissen gesammelt und danach weiterverarbeitet. Diese TEMP-Verzeichnisse sind im Rahmen einer Sicherheitsanalyse zu betrachten -&amp;gt; Möglicher (unbefugter) Zugriff auf weitere Uploads&lt;br /&gt;
; Upload komprimierter Dateien / großer Dateien birgt die Gefahr von DOS Angriffen&lt;br /&gt;
; Upload von Dateien kann bei weiterem Parsing zu Speicherengpässen führen --&amp;gt; DOS-Angriffe auf Thread-Local etc.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== M 4.WA14Restriktive Herausgabe sicherheitsrelevanter Informationen bei Web-Anwendungen (Markus) ==&lt;br /&gt;
OK - Keine Anmerkungen von mir.&lt;br /&gt;
&lt;br /&gt;
== M 4.WA15Schutz vertraulicher Daten bei Web-Anwendungen (Markus) ==&lt;br /&gt;
; Sichere kryptographische Algorithmen:&lt;br /&gt;
 Hier fehlt mir eine Liste der aktuelle als sicher geltenden Verfahren.&lt;br /&gt;
; Schlüssel&lt;br /&gt;
 Das die Schlüssel bestimmten Formaten entsprechen müssen ist ok - aber das Schlüsselmanagement wird gar nicht besprochen?&lt;br /&gt;
; Schutz der Daten im Browsercache&lt;br /&gt;
 Skripte und Browserplugins können ebenfalls auf den Browsercache zugreifen - diese werden hier nicht erwähnt.&lt;br /&gt;
; Maskierung von Passwörtern &lt;br /&gt;
 Dies schützt bei der Eingabe nur vor ShoulderSurfing nicht vor Skripten oder Plugins die diese an andere Server posten.&lt;br /&gt;
; Sicherung von Zugangsdaten:&lt;br /&gt;
 Zugangsdaten in einer Datei abzulegen - wenn auch ausserhalb des WebRoots ist keine gute Idee.&lt;br /&gt;
; Schutz von Quelltexten:&lt;br /&gt;
 Hier würde ich property files mit aufnehmen. der hinweis auf web-inf/classes fehlt - warum?&lt;br /&gt;
 Bei include-befehlen sind die pfadangaben zu überdenken.&lt;br /&gt;
&lt;br /&gt;
== M 4.WA16Zugriffskontrolle bei Web-Anwendungen (Markus) ==&lt;br /&gt;
; Zugriffskontrolle via Frameworks:&lt;br /&gt;
 Dieser Punkt (Frameworks) wird nur in einem Satz erwähnt. Es werden keine Bespiele gegeben - Das ist zu wenig.&lt;br /&gt;
 Es müssen alle Zugriffe geschützt werden. Eine Protokollierung aller Zugriffe mit den nötigen Informationen ist ebenfalls empfehlenswert.&lt;br /&gt;
; Datei Upload:&lt;br /&gt;
 Die Gefahr eines DOS wird hier nicht erwähnt.&lt;br /&gt;
&lt;br /&gt;
== M 4.WA19Verhinderung von Cross-Site Request Forgery (CSRF, XSRF) (Markus, Matthias) ==&lt;br /&gt;
; Verantwortliche: &lt;br /&gt;
 Entwickler und Admins!&lt;br /&gt;
([[User:Mrohr|Matthias]]) Korrekt, wobei auch in der Reihenfolge&lt;br /&gt;
&lt;br /&gt;
; Anti-CSRF-Token in hidden fields:&lt;br /&gt;
 Das ist keine gute Idee. Ich würde das streichen!&lt;br /&gt;
&lt;br /&gt;
([[User:Mrohr|Matthias]]) Watt? Anti-CSRF-Tokens in Hidden Fields sind die Standard-Massnahme. Wie denn sonst? Bitte nicht streichen!!! &lt;br /&gt;
&lt;br /&gt;
([[User:Mrohr|Matthias]]) Die Technik bei der die Session ID als Anti-CSRF-Token verwendet wird, wird als Double-Cookie Submit bezeichnet, das sollte hier referenziert werden.&lt;br /&gt;
&lt;br /&gt;
; Umgehung von Schutzmechanismen:&lt;br /&gt;
 Man in the middle hat keinen direkten Bezug zu CSRF! Das würde ich streichen.&lt;br /&gt;
([[User:Mrohr|Matthias]]) Der Hinweis ist korrekt. Wovon der Autor hier spricht ist Session Replay nicht CSRF.&lt;br /&gt;
&lt;br /&gt;
; Frameworks:&lt;br /&gt;
 Gute Idee - aber es gibt auch Features in den ApplicationServern die CSRF unterbinden - warum wird das nicht besprochen?&lt;br /&gt;
&lt;br /&gt;
([[User:Mrohr|Matthias]]) Sehe ich persoenlich nicht so, da CSRF primaer ein Applikations-Fehler ist, und auch in der Applikation und nicht im Environment (AppServer) geloest werden sollte. Auch wenn das manchmal ggf. die einzig machbare Loesung darstellt.&lt;br /&gt;
&lt;br /&gt;
([[User:Mrohr|Matthias]]) Was generell fehlt, ist ein Hinweis darauf, dass schreibende Requests generell per HTTP Post abgewickelt werden sollten, da HTTP Get keine &amp;quot;Safe Method&amp;quot;  (siehe HTTP 1.1, RFC 2616) ist.&lt;br /&gt;
&lt;br /&gt;
== M 4.WA20Sicherer Entwurf der Logik von Web-Anwendungen (Markus) ==&lt;br /&gt;
; Rollbacks:&lt;br /&gt;
 Tritt ein Fehler auf muss die Applikation einen konsistenten Datenstand zurück lassen. Das wird hier nicht erwähnt.&lt;br /&gt;
; RaceConditions:&lt;br /&gt;
 Fehler in der Geschäftslogik können auch durch zwei gleichzeitige Sessions auf einer Webapplikation auftreten - das wird hier nicht besprochen.&lt;br /&gt;
&lt;br /&gt;
== M 4.WA22Verhinderung der Blockade von Ressourcen (DoS) bei Web-Anwendungen (Markus) ==&lt;br /&gt;
; Datenspeicher:&lt;br /&gt;
 Neben dem Datenspeicher sollte auch der RAM-Verbrauch pro Thread der Applikation limitiert werden.&lt;br /&gt;
; Voraggregation von Daten / Caching&lt;br /&gt;
 Dieser Punkt fehlt: Stark ressourcen belastende Anfragen können auch in Lastarmen Zeiten vorberechnet werden.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== M 4.WA25Verhinderung von Clickjacking (Markus) ==&lt;br /&gt;
Ok - das passt soweit.&lt;br /&gt;
&lt;br /&gt;
== M 5.WA21Sichere Anbindung von Hintergrundsystemen an Web-Anwendungen (Markus) ==&lt;br /&gt;
; Verantwortliche:&lt;br /&gt;
 Architekten fehlen. Entwickler müssen die Views umsetzen und die Datasource entsprechend einbinden - die fehlen hier ebenfalls.&lt;br /&gt;
; DirectorySystem Beispiel:&lt;br /&gt;
 Das DirectorySystem wird in dem angegeben Beispiel zum Single Point of Failure - das wird verschwiegen.&lt;br /&gt;
; Firewalls:&lt;br /&gt;
 Das sind fachlich-blinde Systeme. Was ist mit WAFs / IDS / IPS etc.?&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== M 5.WA23Systemarchitektur einer Web-Anwendung (Markus) ==&lt;br /&gt;
; Verantwortliche:&lt;br /&gt;
Auch hier fehlend wieder die Architekten. &lt;br /&gt;
; Virtualisierung:&lt;br /&gt;
Virtualisierung bietet weitere Angriffsvektoren (z.B.: Hypervisor) die eine &amp;quot;Blech&amp;quot;Farm nicht bietet.&lt;/div&gt;</summary>
		<author><name>Mrohr</name></author>	</entry>

	<entry>
		<id>https://wiki.owasp.org/index.php?title=Talk:OWASP_Review_BSI_IT-Grundschutz_Baustein_Webanwendungen&amp;diff=130107</id>
		<title>Talk:OWASP Review BSI IT-Grundschutz Baustein Webanwendungen</title>
		<link rel="alternate" type="text/html" href="https://wiki.owasp.org/index.php?title=Talk:OWASP_Review_BSI_IT-Grundschutz_Baustein_Webanwendungen&amp;diff=130107"/>
				<updated>2012-05-18T13:19:24Z</updated>
		
		<summary type="html">&lt;p&gt;Mrohr: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Since it's about a review of a document in German, all the discussions will be done in German :-)&lt;br /&gt;
&lt;br /&gt;
Diskussionen rund um den Review des &amp;quot;IT-Grundschutzbausteins Webanwendungen&amp;quot; finden hier statt, sinnvollerweise auf Deutsch :-)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Vorschlag für Kriterien, die an unser Review angelegt werden sollten (.kai) ==&lt;br /&gt;
&lt;br /&gt;
* Der Baustein soll alle wichtigen Themen der Entwicklung sicherer&lt;br /&gt;
Webanwendungen enthalten.&lt;br /&gt;
&lt;br /&gt;
* Der Baustein soll die verschiedenen Phasen der Software-Entwicklung&lt;br /&gt;
vollständig abdecken.&lt;br /&gt;
&lt;br /&gt;
* Der Baustein soll zwischen verbindlichen, prüfbaren Vorgaben und&lt;br /&gt;
unverbindlichen Empfehlungen sprachlich sauber unterscheiden (hier&lt;br /&gt;
spielt mein Auditorenblick eine Rolle). Vor allem soll der Baustein&lt;br /&gt;
verbindliche Anforderungen auch tatsächlich stellen. Alle&lt;br /&gt;
verbindlichen Anforderungen müssen unabhängig von der jeweiligen&lt;br /&gt;
Umgebung auch umsetzbar sein, d.h. sie müssen entsprechend generisch&lt;br /&gt;
sein.&lt;br /&gt;
&lt;br /&gt;
* Die Maßnahmen sollen nur in (begründbaren) Ausnahmen zu Empfehlungen&lt;br /&gt;
von OWASP im Widerspruch stehen.&lt;br /&gt;
&lt;br /&gt;
* Die Maßnahmen sollen verständlich und anwendbar sein.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== &amp;quot;Hilfsmittel&amp;quot; (Markus) ==&lt;br /&gt;
Ich würde das Script zur Vermeidung von Clickjacking wrappen und nicht als losen Skript-block in den Text einbinden - einfach schlechter Programmierstiel diese losen Blöcke.&lt;br /&gt;
Der Zugriff auf das Body-Element mit byTagName-Array[0] ist auch nicht wirklich gut. Ich halte Zugriffe über das DOM (klassisch), bei ID bzw. XPATH für besser. &lt;br /&gt;
&lt;br /&gt;
SQL-Injection Characters:&lt;br /&gt;
die Pipe fehlt hier zur Textkonatenierung&lt;br /&gt;
+ / - haben auch eine Bedeutung bei JOINs.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== &amp;quot;Goldene Regeln&amp;quot; (Matthias) ==&lt;br /&gt;
&lt;br /&gt;
Hier meine Anmerkungen zu diesem Dokument:&lt;br /&gt;
&lt;br /&gt;
; 1. Für mich fehlende Punkte&lt;br /&gt;
* Korrektur der Ursache (Root Cause) von Schwachstellen statt  Verhinderung deren Ausnutzung&lt;br /&gt;
* Bezug auf Minimierung der Angriffsfläche und Least-Privilege-Prinzip&lt;br /&gt;
* Bezug auf Defense-in-Depth-Prinzip&lt;br /&gt;
* Verwendung von getesteten Security APIs (z.B. OWASP ESAPI) statt selbstentwickelter Funktionen&lt;br /&gt;
* Bezug auf Externalisierung von Sicherheitsfunktionen, sowie deklerative vor programmatischer Sicherheit.&lt;br /&gt;
&lt;br /&gt;
; 2. Begriff &amp;quot;Web-Anwendung&amp;quot;&lt;br /&gt;
Würde ich generell durch &amp;quot;Webanwendung&amp;quot; ersetzen.&lt;br /&gt;
&lt;br /&gt;
; 3. Einleitung (&amp;quot;Web-Anwendungen stellen Funktionalität zur Verfügung, ...&amp;quot;)&lt;br /&gt;
&lt;br /&gt;
Wozu dient dieser Satz?&lt;br /&gt;
&lt;br /&gt;
; 4. &amp;quot;Die Architektur der Web-Anwendung ist im Sicherheitskonzept zu  dokumentieren.....&amp;quot; &lt;br /&gt;
&lt;br /&gt;
Ich fände es sinnvoller, wenn hier von der &amp;quot;Sicherheitsarchitektur&amp;quot; gesprochen wird, welche etwa neben den sicherheitsrelevanten Datenflüssen, sensible Komponenten, Entry Points, Akteure architekturelle Security Controls wie Authentisierung, Kryptographie und natürlich die Trust Boundaries beinhaltet.&lt;br /&gt;
&lt;br /&gt;
; 5. &amp;quot;Bei Web-Anwendungen handelt es sich häufig um spezielle Eigenentwicklungen....&amp;quot;&lt;br /&gt;
&lt;br /&gt;
Erstens würde ich hier den geläufigen Begriff &amp;quot;Individualsoftware&amp;quot; verwenden. Zweitens würde ich statt bestimmte SDLC-Phasen vorzugeben (die Begriffe &amp;quot;Softwareverteilung&amp;quot; und &amp;quot;Integration&amp;quot; sind mir bei Webanwendungen bisher noch nicht so häufig untergekommen), besser von der Notwendigkeit sprechen, Sicherheit in allen Entwicklungsphasen zu berücksichtigen, also eines SDLs.&lt;br /&gt;
&lt;br /&gt;
; 6. &amp;quot;Alle Ein- und Ausgaben der Web-Anwendung müssen in eine normalisierte Form überführt werden....&amp;quot;&lt;br /&gt;
&lt;br /&gt;
Normalisierung ist für mich nicht gleich Kanonsierung, auch wenn beide Begriffe häufig als synonym verwendet werden.  Der Unterschied wird in der [http://owasp-esapi-java.googlecode.com/svn/trunk_doc/2.0-rc4/org/owasp/esapi/Encoder.html API-Beschreibung der ESAPI] erklärt. Die Normalisierungs-Funktion ist allerdings schon vor einiger Zeit aus der ESAPI [https://lists.owasp.org/pipermail/esapi-dev/2010-January/000266.html rausgeflogen]. Die generelle Kanonisierung von Ausgaben halte ich dazu für nicht sinnvoll.&lt;br /&gt;
&lt;br /&gt;
Zweitens, finde ich den weiteren Text zwar grundsätzlich formal korrekt, aber so allgemein, dass dieser glaube ich niemandem so richtig etwas bringt.  &lt;br /&gt;
&lt;br /&gt;
Besser fände ich hier Ein- von Ausgabevalidierung grundsätzlich voneinander abzugrenzen. Etwa was ich per Eingabevalidierung (Längenprüfung, Casting, etc. per Whitelisting) und was mit Ausgebavalidierung (Enkodierung, Escaping, Parametrisierung) machen muss und kann.&lt;br /&gt;
&lt;br /&gt;
Eingabedaten können technisch zudem auch Werte eingelesener Property-Dateien sein. Muss ich die auch validieren? Ist das dann noch Grundschutz? &lt;br /&gt;
&lt;br /&gt;
; 7. &amp;quot;Für den Zugriff auf sensitive Funktionen oder Informationen muss die Web-Anwendung eine wirksame Authentisierung und Sitzungsverwaltung unterstützen. Die Eigenschaften der Sitzungs-ID müssen so gewählt werden, dass die Sitzung ausreichend geschützt ist. ....&amp;quot;&lt;br /&gt;
&lt;br /&gt;
Besser fände ich &amp;quot;eine Authentisierung, die über eine dem Schutzbedarf der Anwendung angemessene Stärke verfügt.&amp;quot; &lt;br /&gt;
&lt;br /&gt;
Eigentlich geht es doch mehr um den Schutz der Sitzungs-ID, da diese gewöhnlich im Verlauf einer Sitzung den Client authentisiert. Oder den Schutz des Zugriffs auf eine Sitzung. &lt;br /&gt;
&lt;br /&gt;
Zudem fehlt hier meiner Meinung nach der Hinweis auf die bevorzugte Verwendung getesteter Standardkomponenten.&lt;br /&gt;
&lt;br /&gt;
; 8. &amp;quot;Die Web-Anwendung sollte die zu übermittelnden Daten schützen.&amp;quot;&lt;br /&gt;
&lt;br /&gt;
Dies würde ich nur auf sensible Daten beziehen. Zusätzlich zu HTTPS würde ich hier schreiben, dass sensible Daten generell nicht in der URL übertragen werden dürfen.&lt;br /&gt;
&lt;br /&gt;
; 9. &amp;quot;Die Preisgabe interner Informationen (z.B. Kommentare, Fehlermeldungen)&amp;quot;&lt;br /&gt;
&lt;br /&gt;
Hier würde ich eher schreiben &amp;quot;(IN Kommentaren, Fehlermeldungen, HTTP Headern, etc.)&amp;quot;&lt;br /&gt;
&lt;br /&gt;
; 10. &amp;quot;Fehler müssen so behandelt werden, ... müssen Fehler bei der Autorisierung zu einer Verweigerung beim Zugriff auf die angeforderte Ressource führen.&amp;quot;&lt;br /&gt;
&lt;br /&gt;
Sprachlich: &amp;quot;Die Webanwendung muss sich stets in einem sicheren Zustand befinden. Beispielsweise müssen Fehler bei der Autorisierung zu einer Verweigerung des Zugriffs führen (Default-Deny-Strategie).&amp;quot;&lt;br /&gt;
&lt;br /&gt;
; 11. &amp;quot;Die Logging-Funktionen der Web-Anwendung müssen aufgetretene Ereignisse derart protokollieren, dass sicherheitskritische Vorfälle nachvollzogen werden können.&amp;quot;&lt;br /&gt;
&lt;br /&gt;
Hier würde hier eher von &amp;quot;allen sicherheitsrelevanten Ereignissen&amp;quot; sprechen.&lt;br /&gt;
&lt;br /&gt;
Weiterhin sollten insbesondere beim Logging der Datenschutz berücksichtigt werden, personenbezogene Daten also nach Möglichkeit nicht oder nur anonymisiert in technischen Logdateien protokolliert werden.&lt;br /&gt;
&lt;br /&gt;
; 12. &amp;quot;Alle Sicherheitsmechanismen (z.B. Authentisierung und Zugriffskontrolle) sind serverseitig zu implementieren und können nicht durch clientseitige Mechanismen ersetzt werden.&amp;quot;&lt;br /&gt;
&lt;br /&gt;
Die Aussage ist so nicht korrekt. Darüber hatten wir bereits bei der ASVS mehrfach diskutiert. &lt;br /&gt;
&lt;br /&gt;
Überall dort wo der Client angegriffen wird, also etwa bei RIAs (Stichwort DOM-Based XSS) müssen wir Security Controls clientseitig implementieren. Es gibt mittlerweile deshalb auch eine Portierung der ESAPI auf Javascript. Überall dort wo der Server oder Hintegrundsysteme angegriffen werden, ist die Aussage aber natürlich zutreffend.&lt;br /&gt;
&lt;br /&gt;
== &amp;quot;Gefährdungen&amp;quot; (Markus, Dennis, .... &amp;lt;Dein Name&amp;gt;) ==&lt;br /&gt;
; Generell:&lt;br /&gt;
Reference auf RFCs fehlen.&lt;br /&gt;
&lt;br /&gt;
==B.5.XX Web-Anwendungen ==&lt;br /&gt;
; 1. Erster Absatz - Letzter Satz: --Wieso werden hier nur HTML/XML Doks und Oberflächen angesprochen? Was ist der Unterschied zwischen einem HTML-Dok und einer Oberfläche? Was ist mit  Flash, etc.? Was ist mit WebSockets?&lt;br /&gt;
; 2. Stichpunkt &amp;quot;Protokollierung&amp;quot;: Sicherheits relevant ist ein sehr dehnbarer Begriff - Eine bessere Formulierung könnte sein: Zur Rekonstruktion von Nutzerhandlungen nötige Ereignisse (positve &amp;amp; negative) müssen protokolliert werden . . . &lt;br /&gt;
; 3. Absatz: &amp;quot;Abgrenzung des Bausteins&amp;quot;: &amp;quot;Die spez. Sicherheitsanforderungen an Web-Services werden in diesem Baustein nicht betrachtet&amp;quot; --&amp;gt; Wie so nicht? Was ist das Backend von einer Rest / AJAX-basierenden Webanwendung denn anderes als ein Web-Service? Diesen Satz würde ich entfernen.&lt;br /&gt;
; 4.Vorsätzliche Handlungen -&amp;gt; Web-Spoofing (G.5.87) -- Missverständliche Bezeichnung / Nomenklatur&lt;br /&gt;
; 5. Seite 4 : erste Zeile &amp;quot;Umsetzung&amp;quot;: &amp;quot;dafür umzusetztende Komponenten müssen die Webanwendung schützen...&amp;quot; - Hier fehlt mir der Hinweis, dass dieser Schutz verifiziert werden muss.&lt;br /&gt;
; 6 Seite 5: &amp;quot;Umsetzung&amp;quot; - Wir haben CSRF, D(D)os und SQL-Injection aber wo ist XSS?&lt;br /&gt;
; 7 Seite 7: &amp;quot;Die Sicherheitsfunktion wird ausschließlich clientseitig...&amp;quot; --&amp;gt; Warum muss der Angreifer überhaupt einen Browser umkonfigurieren? Was ist mit Proxies, Scripts, etc.? Ich würde das reduzieren darauf, dass rein Webbrowser-basierende Schutzfunktionen einfach umgangen werden können.&lt;br /&gt;
; 8 Seite 8: Die angesprochenen Punkte hinterlassen den Eindruck nicht vollständig zu sein: Mir fehlen Punkte wie &amp;quot;Outsourcing&amp;quot;, &amp;quot;KnowHow der Entwickler&amp;quot;, Tooling, Framework-Auswahl, etc.&lt;br /&gt;
; 9 Seite 9: Eigentlich möchte der Autor hier über Datenschutz sprechen. Abgesehen von den letzten drei Zeilen geht es aber nur um &amp;quot;User tracking&amp;quot; - Wo ist der Rest der Datenschutzproblematik? Warum der Fokuss auf Tracking? Mir ist das zu einseitig.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
tbd.&lt;br /&gt;
&lt;br /&gt;
; Wortwahl:&lt;br /&gt;
Ich stosse innerhalb der Texte immer wieder an die Worten '''Hintergrundsystem''' und '''Sicherheitskontext'''.&lt;br /&gt;
'''Hintergrundsystem:''' besseres Synonym?&lt;br /&gt;
'''Sicherheitskontext:''' nur weil es in den Texten um Sicherheit geht muss nicht an jeder Stelle immer wieder das Wort _Sicherheits_kontext eingebaut werden.&lt;br /&gt;
Bsp: &amp;quot;Erlangt ein Angreifer Kenntnis von einer solchen gültigen, aber nicht mehr genutzten SessionID, so kann er die Web-Anwendung im Sicherheitskontext des nicht abgemeldeten Benutzers weiter verwenden.&amp;quot; (G 5,WA12 Unzureichendes Session-Management von Web-Anwendungen)&lt;br /&gt;
Verbesserungsansansatz: ... so kann er die Web-Anwendung anstelle des eigentlichen Besitzers weiterhin verwenden.&lt;br /&gt;
&lt;br /&gt;
== &amp;quot;G 2.WA01 Mangelhafte Auswahl oder Konzeption von Web-Anwendungen&amp;quot; (Matthias) ==&lt;br /&gt;
&lt;br /&gt;
Nachdem ich mir diese Gefährdung durchgelesen hatte, fehlten mir ehrlich gesagt etwas die Worte. Nicht nur, dass hier fast jeder zweite Satz entweder falsch ist bzw. massive Fehler enthält oder ich diesen schlicht nicht verstehe, ist der ganze Text sprachlich wirklich enorm verbesserungsfähig. &lt;br /&gt;
&lt;br /&gt;
Na gut, ich konzentriere mich mal auf die fachlichen Punkte:&lt;br /&gt;
&lt;br /&gt;
; 1. Security Controls&lt;br /&gt;
Werden mal mit &amp;quot;Schutzmechanismen&amp;quot;, mal mit &amp;quot;Sicherheitskomponenten&amp;quot; und dann wieder als &amp;quot;Sicherheitsfunktionen&amp;quot; bezeichnet. Hier macht eine einheitliche Benennung sicherlich Sinn und ist weniger verwirrend.&lt;br /&gt;
&lt;br /&gt;
; 2. &amp;quot;Eine Web-Anwendung ist in der Regel ein verteiltes, komplexes System bestehend aus unterschiedlichen Komponenten (z. B. Webserver, Applikationsserver, Hintergrundsysteme)&amp;quot;&lt;br /&gt;
&lt;br /&gt;
Eine Webanwendung besteht sicher nicht aus einem Webserver- oder anderer infrastruktureller Komponenten, sondern ist Software welches diese nutzt.&lt;br /&gt;
&lt;br /&gt;
; 3. &amp;quot;Bei individuell entwickelten Web-Anwendungen sind im Allgemeinen die Frameworks, Komponenten und Schnittstellen im Rahmen der Konzeption auszuwählen und deren Einbindung und Absicherung zu betrachten....Im Gegensatz dazu ist bei der Konzeption von Web-Anwendungen auf Basis von Standardsoftware insbesondere auf die Auswahl der Software und die Konfiguration der Teilkomponenten zu achten&amp;quot;&lt;br /&gt;
&lt;br /&gt;
Wir unterscheiden im Rahmen von Webanwendungen eigentlich Free or Opensource Software (FOSS bzw. FLOSS), Standardsoftware und Individualsoftware voneinander. Wir unterscheiden nicht Frameworks von Standardsoftware. Frameworks können Teil von Standardsoftware sein, wie etwa bei SharePoint, SAP, etc, oder aber FOSS, wie etwa Spring. Die ganzen Absätze machen für mich daher keinen Sinn.&lt;br /&gt;
&lt;br /&gt;
; 4. &amp;quot;Eine Sicherheitsfunktion (z. B. Authentisierung, Autorisierung) wird nicht an einer Stelle umgesetzt und verwendet, sondern ist mehrfach in der Web- Anwendung realisiert. Wird diese Sicherheitsfunktion an den verschiedenen Stellen unterschiedlich umgesetzt, führt dies zu einem uneinheitlichen Sicherheitsniveau.&amp;quot;&lt;br /&gt;
&lt;br /&gt;
Natürlich ist die mehrfache Verwendung bestimmter Security Controls, beispielsweise von Zugriffskontrollen (Complete-Mediation) oder Validierung (Robustheit) erstrebenswert. Was der Autor hier wahrscheinlich meinte, war die Notwendigkeit diese zu Kapseln bzw. zu Externalisieren. Das bezieht sich im übrigen nicht nur auf die Controls selbst, sondern auch auf ihre Parametrisierung (etwa. über Konfigdateien / XACML).&lt;br /&gt;
&lt;br /&gt;
Wichtiger wäre in diesem Zusammenhang zudem die fehlende Berücksichtigung bestimmter Security Controls.&lt;br /&gt;
&lt;br /&gt;
; 5. &amp;quot;Auswahl von Web-Anwendungen auf Basis von Standardsoftware&amp;quot;&lt;br /&gt;
Was will der Satz sagen? Ich wähle Standardsoftware aus, aber doch keine Webanwendungen. Oder heißt das, ich kaufe eine existierende Anwendung ein (Webanwendung!=Indivudualsoftware)? &lt;br /&gt;
&lt;br /&gt;
; 6. &amp;quot;Das ausgewählte Produkt verfügt nicht über die ausreichende Sicherheitsfunktionalität, ... Daher müssen die notwendigen Schutzmechanismen nachträglich hinzugefügt werden, wodurch zusätzliche Aufwände entstehen.&amp;quot;&lt;br /&gt;
Das ist etwas sehr positiv formuliert. Tatsächlich können fehlende Security Controls in zugekaufter Software (insb. Standardsoftware) in der Realität häufig gar nicht hinzugefügt werden oder nur perimetrisch (z.B. per WAF oder Access Gateway).&lt;br /&gt;
&lt;br /&gt;
; 7. &amp;quot;Die Hintergrundsysteme werden unzureichend abgesichert und dadurch ist die Datenbank der Web-Anwendung aus dem Internet erreichbar.&amp;quot;&lt;br /&gt;
Gehören fehlende Netzwerksegmentierung bzw. Firewallregeln wirklich in diesen Kontext? Das ist doch eigentlich Grundschutz der Infrastruktur, oder?&lt;br /&gt;
&lt;br /&gt;
; 8. &amp;quot;Aufgrund schwacher Parameter in der Konfiguration des Frameworks zum Session-Management werden unsichere SessionIDs erzeugt.&amp;quot;&lt;br /&gt;
Was sind &amp;quot;schwache&amp;quot; Parameter?&lt;br /&gt;
&lt;br /&gt;
Welches Framework erlaubt unsichere SessionIDs durch eine &amp;quot;schwache&amp;quot; Konfiguration zu erzeugen?&lt;br /&gt;
&lt;br /&gt;
; 9. &amp;quot;Wird die Konfiguration des Web-Browsers durch einen Angreifer manipuliert, können die clientseitig umgesetzten&amp;quot;&lt;br /&gt;
&lt;br /&gt;
Manipuliert ein Angreifer die Konfguration seines Webbroswers, wenn er einen MITM-Proxy konfiguriert?&lt;br /&gt;
&lt;br /&gt;
Wie bereits bei den &amp;quot;Goldenen Regeln&amp;quot; angemerkt, gilt auch hier, das manche Security Controls auch clientseitig umgesetzt werden dürfen (etwa. zur Verhinderung von Dom-Based XSS).&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== &amp;quot;G 5.WA10 Fehler in der Web-Anwendungslogik&amp;quot; (Dennis) ==&lt;br /&gt;
; 1. &amp;quot;Damit kann aufgrund der Prüfreihenfolge ein hoher Ressourcenverbrauch provoziert werden, der für Denial-of-Service-Angriffe ausgenutzt werden kann.&amp;quot;&lt;br /&gt;
Meiner Meinung nach passt in diesem Kontext die Attacke DoS nicht ganz. Falls die nachfolgende Funktionalität wegen der langen Ausführungszeit der Filterkomponente übersprungen wird bzw. ein Fehler auftritt würde dies meiner Ansicht in die Thematik Anwendungslogik passen. Eine DoS-Attacke kann hingegen anhand jeder Funktion durchgeführt werden.&lt;br /&gt;
&lt;br /&gt;
== &amp;quot;G 5.WA11 Umgehung clientseitig umgesetzter Sicherheitsfunktionen von Web-Anwendungen&amp;quot; (Dennis) ==&lt;br /&gt;
; 1. &amp;quot;Ein Angreifer kann diese ausnutzen, um beispielsweise unbefugt Befehle an Hintergrundsysteme der Web-Anwendung zu übermittlen (z.B. in Form von Datenbankanfragen bei einer SQL-Injection).&amp;quot;&lt;br /&gt;
Umformulierung des Inhalts der Klammer. Hatte beim ersten Lesen für mich den Anschein, als ob ein Formular genutzt werden könnte welches den Nutzer aufforder eine SQLI einzugeben. Ich denke &amp;quot;Datenbankanfrage zwecks Ausführung einer SQL-Injection&amp;quot; würde besser passen.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== G 2.WA02 Mängel bei der Entwicklung und der Erweiterung von Web-Anwendungen (Matthias) ==&lt;br /&gt;
&lt;br /&gt;
Allgemein ist de obere Teil ok, die aufgezählten &amp;quot;Auswirkungen von fehlenden Vorgaben&amp;quot; verstehe ich jedoch nicht. Wo ist etwa der Bezug von Barrierefreiheit auf die Anwendungssicherheit?&lt;br /&gt;
&lt;br /&gt;
Mein Vorschlag, um diese Punkte etwa sinnvoll umzubauen:&lt;br /&gt;
* &amp;quot;Fehlendes Vorgehensmodell&amp;quot;: Bezug auf fehlende Berücksichtigung von Sicherheit im SDLC. Statt eines SDLCs selbst sollte hier besser auf die Notwendigkeit eines Secure Development Lifecycle (SDL) hingewiesen werden&lt;br /&gt;
* &amp;quot;Fehlende Programmierrichtlinien&amp;quot; =&amp;gt; Besser wäre hier &amp;quot;Fehlende Sicherheitsrichtlinien in der Programmierung&amp;quot; also &amp;quot;Secure Coding Guidelines&amp;quot;&lt;br /&gt;
* &amp;quot;Testfälle&amp;quot; =&amp;gt; &amp;quot;Sicherheitsrelevante Testfälle&amp;quot; (z.B. Security Unit Tests). &lt;br /&gt;
* &amp;quot;Barrierefreiheit&amp;quot;: Warum nicht an dieser Stelle die Auswirkungen von Sicherheitsfunktionen auf die Bedienbarkeit, etwa anhand von CAPTCHAS erläutern?&lt;br /&gt;
&lt;br /&gt;
== G 2.WA03 Unzureichender Schutz personenbezogener Daten bei Web-Anwendungen (Matthias) ==&lt;br /&gt;
&lt;br /&gt;
Der Titel dieses Bausteines heißt &amp;quot;Schutz personenbezogener Daten&amp;quot;, die genannten Beispiele beziehen sich bis auf den letzten jedoch auf die missbräuchliche (oder zumindest problematische) Nutzung aus Sicht des Datenschutzes. &lt;br /&gt;
&lt;br /&gt;
Die Punkt 1-3 sollten daher besser entfallen und z.B. durch die Folgenden ersetzt werden:&lt;br /&gt;
* Unsichere Einbindung von sozialen Netzwerken (Bezug nehmen auf den Like-Button bei Facebook)&lt;br /&gt;
* Unsichere Einbindung von Werbeinhalten&lt;br /&gt;
* Unsichere Übertragung und Caching&lt;br /&gt;
* Unsichere Protokollierung&lt;br /&gt;
* Ungenügender Zugriffsschutz&lt;br /&gt;
* Verstoß des Minimalprinzips bzw. der Zweckgebundenheit (welche Daten werden wirklich benötigt)&lt;br /&gt;
&lt;br /&gt;
Auch wäre es ggf. zumindest einen Verweis auf das BDSG zu machen.&lt;br /&gt;
&lt;br /&gt;
== G 4.33 Unzureichende oder fehlende Authentisierung (Matthias) ==&lt;br /&gt;
&lt;br /&gt;
; 1. Erster Absatz: &amp;quot;Wenn Authentisierungsmechanismen fehlen oder zu schlecht sind&amp;quot;&lt;br /&gt;
&lt;br /&gt;
&amp;quot;schlecht&amp;quot; sollte vlt besser durch &amp;quot;unzureichend&amp;quot; ersetzt werden.&lt;br /&gt;
&lt;br /&gt;
; 2. &amp;quot;Sicherheitslücken entstehen bei... der Benutzerauthentisierung&amp;quot;&lt;br /&gt;
&lt;br /&gt;
Hier findet nur ein Bezug auf &amp;quot;Passwörter&amp;quot; statt. Der Bezug auf die fehlerhaft implementierte oder dem Schutzbedarf ungenügende Schutzmechanismen (z.B. keine 2-Faktor-Authentisierung bei hochsensiblen Daten) fehlt. Auch auf das komplette fehlen von Authentisierungs-Controls wird hier nicht  eingegangen&lt;br /&gt;
&lt;br /&gt;
; 3. &amp;quot;Sicherheitslücken entstehen bei... der Komponentenauthentisierung&amp;quot;&lt;br /&gt;
&lt;br /&gt;
Wie bei 2., wird auch hier wieder nur auf Passwörter, nicht jedoch auf das fehlen von Controls selbst eingegangen. An dieser Stelle fehlt auch ein Hinweis auf die Notwendigkeit dedizierter Benutzeraccounts.&lt;br /&gt;
&lt;br /&gt;
; 4. &amp;quot;Sicherheitslücken entstehen bei... der Wahl des Verfahrens&amp;quot;&lt;br /&gt;
&lt;br /&gt;
Statt untauglich würde ich auch hier von &amp;quot;dem Schutzbedarf der Daten nicht angemessen&amp;quot; sprechen, eigentlich gehört das für mich aber in die obigen Punkte.&lt;br /&gt;
&lt;br /&gt;
; 5. Serverseitige Authentisierung fehlt&lt;br /&gt;
&lt;br /&gt;
Auch der Server (bzw. die Anwendung selbst) kann sich fehlerhaft oder ungenügend beim Benutzer authentsieren, etwa über DNS, SSL-Zertifikate, etc.&lt;br /&gt;
&lt;br /&gt;
== G 4.WA04 Unzureichende Validierung von Ein- und Ausgabedaten bei Web-Anwendungen (Matthias) ==&lt;br /&gt;
&lt;br /&gt;
; 1. &amp;quot;Unzureichende Validierung von Eingabedaten&amp;quot;&lt;br /&gt;
&lt;br /&gt;
Die genannten Beispiele sind genau keine korrekten Beispiele für diesen Fall, sondern betreffen die Ausgabevalidierung bzw. Enkodierung. Typische Fehler der Eingabevalidierung ist eine Manipulierbarkeit der Business Logik.&lt;br /&gt;
&lt;br /&gt;
; 2. &amp;quot;Unzureichende Validierung von Ausgabedaten&amp;quot;&lt;br /&gt;
&lt;br /&gt;
Hier geht es zentral um die Verhinderung von Interpreter Injection, also serverseitig (z.B. SQL oder LDAP Injection) oder clientseitig (XSS, JSON Injection, etc.). Statt &amp;quot;können die Ausgaben Schadcode&amp;quot; enthalten würde ich hier eher davon Sprechen, dass ein solcher Interpreteraufruf manipuliert werden kann (was dann z.B. zur Einschleusung von Schadcode genutzt werden kann).&lt;br /&gt;
&lt;br /&gt;
; 3. &amp;quot;Die Suchfunktion der Web-Anwendung verwendet die Eingaben der Benutzer ungefiltert&amp;quot;&lt;br /&gt;
&lt;br /&gt;
Mit ungenügender &amp;quot;Filterung&amp;quot; hat SQL Injection nichts zu tun,  eigentlich geht es hierbei darum, dass SQL-Anfragen dynamisch mit unvalidierten Eingebedaten zusammengebaut (konkateniert) werden.&lt;br /&gt;
&lt;br /&gt;
; 4. &amp;quot;Ungefilterter HTML-Code in Kommentar-Funktion&amp;quot;&lt;br /&gt;
&lt;br /&gt;
Hier fehlt der Bezug auf persistentes XSS, das hier sicherlich zentral ist.&lt;br /&gt;
&lt;br /&gt;
== G 4.WA05 Fehlende oder mangelhafte Fehlerbehandlung durch Web-Anwendungen (Tobias) ==&lt;br /&gt;
; Abschnitt &amp;quot;Unsichere Fehlerbehandlung&amp;quot;&lt;br /&gt;
Die G adressiert &amp;quot;Unsichere Fehlerbehandlung&amp;quot;, der Abschnitt die &amp;quot;Unsichere Fehlerbehandlung in Sicherheitskomponenten&amp;quot;. Entsprechend sollte der fettgedruckte Teil angepasst werden.&lt;br /&gt;
&lt;br /&gt;
; &amp;quot;fehlende SQL-Parameter,&amp;quot;&lt;br /&gt;
Sollte besser &amp;quot;Fehlermeldungen bei ungültigen SQL-Abfragen&amp;quot; lauten.&lt;br /&gt;
&lt;br /&gt;
; &amp;quot;Auch scheinbar unkritische Informationen, wie die Meldung ob (..)&amp;quot;&lt;br /&gt;
Korrekt, allerdings nicht nachvollziehbar, wenn das Problem der Leser nicht schon bekannt ist. Daher erweitern nach &amp;quot; Rahmen von Brute-Force-Angriffen ausgenutzt werden.&amp;quot; mit &amp;quot;. Bei Brute-Force-Angriffen wäre in diesem Fall klar, dass der Benutzername gültig ist.&amp;quot; &lt;br /&gt;
&lt;br /&gt;
== G 4.WA06 Unzureichende Nachvollziehbarkeit von sicherheitsrelevanten Ereignissen bei Web-Anwendungen (Matthias) ==&lt;br /&gt;
&lt;br /&gt;
; 1. Erster Absatz: &amp;quot;Die Behebung einer Schwachstelle ist dann nicht oder nur unter erschwerten Bedingungen möglich.&amp;quot;&lt;br /&gt;
&lt;br /&gt;
Hier würde ich ergänzen: &amp;quot;...und Angriffe auf die Anwendungen können ggf. nicht erkannt oder nachvollzogen werden&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
; 2. &amp;quot;Beispiele&amp;quot;: Kommulierbarkeit&lt;br /&gt;
&lt;br /&gt;
Hier fehlt auch ein Bezug auf die Kommulierbarkeit von SIcherheitsereignissen, dass diese also auch von solchen anderer Systeme in Verbindung gesetzt werden können&lt;br /&gt;
&lt;br /&gt;
; 3. &amp;quot;Beispiele&amp;quot;: Gerichtsverwertbarkeit&lt;br /&gt;
&lt;br /&gt;
Auch die Möglichkeit zur Gerichtsverwertbarkeit (etwa durch eindeutigen Zeitstempel) und manipulationssicherer Speicherung, würde ich an dieser Stelle unbedingt erwähnen.&lt;br /&gt;
&lt;br /&gt;
== G 4.WA07 Offenlegung von Informationen bei Web-Anwendungen (Matthias) ==&lt;br /&gt;
&lt;br /&gt;
; 1. Titel&lt;br /&gt;
&lt;br /&gt;
Hier würde ggf. &amp;quot;Offenlegung vertraulicher Informationen&amp;quot; sicher besser passen als &amp;quot;Offenlegung von Informationen&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
; 2. Beispiellink&lt;br /&gt;
&lt;br /&gt;
Ein Beispiellink (mit und ohne Token) würde sicher die Verständlichkeit dieser Schwachstelle verbessern.&lt;br /&gt;
&lt;br /&gt;
; 3. Erster Absatz: &amp;quot;Wenn demzufolge Informationen unnötig offengelegt werden, steigt die Wahrscheinlichkeit eines erfolgreichen Angriffs.&amp;quot;&lt;br /&gt;
&lt;br /&gt;
Interne Informationen auszublenden ist eine Härtungsmaßnahme, deren Anzeige erhöht aber nicht zwangsläufig die Wahrscheinlichkeit eines erfolgreichen Angriffs. Ich würde diesen Satz weglassen.&lt;br /&gt;
&lt;br /&gt;
 ; 4. Fehlende Punkte&lt;br /&gt;
&lt;br /&gt;
* Ein Hinweis auf HTTP Header wäre hier sicher erwähnenswert.&lt;br /&gt;
* Weiterhin bzgl. der Anzeige von Traces und ein Verweis auf den Entsprechenden Baustein zur Fehlerbehandlung&lt;br /&gt;
&lt;br /&gt;
== G 5.WA14 Cross-Site Request Forgery (CSRF, XSRF) (Matthias) ==&lt;br /&gt;
&lt;br /&gt;
; 1. Erster Absatz: &amp;quot;Können Funktionen einer Web-Anwendung ohne weitere Überprüfung der Authentizität des HTTP-Requests (z.B. durch Tokens in versteckten Formularfeldern) genutzt werden&amp;quot;&lt;br /&gt;
&lt;br /&gt;
Statt &amp;quot;Funktionen&amp;quot; würde ich besser von &amp;quot;schreibenden Aktionen&amp;quot; sprechen, dann macht der Satz mehr Sinn.&lt;br /&gt;
&lt;br /&gt;
; 2. Dritter Absatz: &amp;quot;Im Gegensatz zu XSS (siehe ...￼ ) ist das Angriffsziel nicht die Information auf dem Client (z. B. in Cookies),&amp;quot;&lt;br /&gt;
&lt;br /&gt;
Dieser (Halb-)Satz macht keinen Sinn, auch weil es bei XSS nicht nur im Informationen auf dem Cient geht. Vorschlag: &amp;quot;ist das Angriffsziel nicht die Ausführung von Skriptcode, sondern von unbefugten, schreibenden Aktionen im Kontext des angemeldeten Benutzers.&amp;quot;&lt;br /&gt;
&lt;br /&gt;
; 3. Session Riding&lt;br /&gt;
&lt;br /&gt;
Session Riding ist quasi nur ein anderer Begriff für CSRF. Die einzige Form von CSRF die mir bekannt ist, sind Angriffe mit Standard-Passwörtern auf HTTP-Basic-Auth geschützten Ressourcen.&lt;br /&gt;
&lt;br /&gt;
Im Grunde ist Session Riding aber nur ein Synonym für CSRF. Der Absatz ist daher auch nur eine Wiederholung der obigen Beschreibung.&lt;br /&gt;
&lt;br /&gt;
; 4. Zum Beispiel: &amp;quot;Durch einen präparierten Link auf einer Webseite wird die Änderung des Zugangspasswortes des Routers eingeleitet.&amp;quot;&lt;br /&gt;
&lt;br /&gt;
Etwas ungüngstig ausgedrückt. Besser wäre: &amp;quot;wird eine Anfrage zur Änderung des Zugangspasswortes an den Router gesendet. Hierbei sendet der Browser automatisch den Session Cookie mit, worüber die Webanwendung die Authentizität der Anfrage verifiziert und die Änderung durchführt.&amp;quot;&lt;br /&gt;
&lt;br /&gt;
== G 5.WA18 Clickjacking (Matthias) ==&lt;br /&gt;
&lt;br /&gt;
Hier stellt sich mir nur die allgemeine Frage, ob Clickjacking, bzw. der Schutz davor tatsächlich einem Grundschutz zuzurechnen ist. Persönlich würde ich dies nicht tun.&lt;br /&gt;
&lt;br /&gt;
== M 2.WA02 Dokumentation der Architektur von Web-Anwendungen (Matthias) ==&lt;br /&gt;
&lt;br /&gt;
; Verantwortlich für die Umsetzung&lt;br /&gt;
Hier wäre auch die Nennung des &amp;quot;Architekten&amp;quot; sinnvoll&lt;br /&gt;
 &lt;br /&gt;
; Fehlende Bestandteile der Dokumentation:&lt;br /&gt;
* Schutzbedarf des Systems sowie der verarbeiteten Daten&lt;br /&gt;
* Schützenswerte Daten und Funktionen (Assets)&lt;br /&gt;
* Betriebliche Anforderungen an die Sicherheit bzw. eingesetzte Plattform&lt;br /&gt;
* Dokumentierte Konfigurationseinstellungen &lt;br /&gt;
* BIA (RTO, RPO)&lt;br /&gt;
* Schnittstellen&lt;br /&gt;
* Trust Boundaries&lt;br /&gt;
* Akteure (bzw. Trust Level)&lt;br /&gt;
* Sicherheitsannahmen&lt;br /&gt;
* Geltende Compliance-Anforderungen (BDSG, PCI DSS, etc.)&lt;br /&gt;
&lt;br /&gt;
; Benutzermanagement&lt;br /&gt;
&lt;br /&gt;
Wenn damit das Identity Management gemeint ist, gehört das Dokumentiert, ist aber keine Sicherheitsfunktion. Oder ist hiermit das Rollen- und Berechtigungskonzept gemeint? Grenzt sich aus meiner Sicht schwer mit dem Thema Authentisierung ab. &lt;br /&gt;
&lt;br /&gt;
; Prüffragen&lt;br /&gt;
&lt;br /&gt;
Hier fehlt etwas in Bezug auf Sicherheitsanforderungen. Beispiel: &amp;quot;Werden Sicherheitsanforderungen an den Betrieb während der Entwicklung abgestimmt und dokumentiert&amp;quot;&lt;br /&gt;
&lt;br /&gt;
== M 2.WA12 Entwicklung und Erweiterung von Anwendungen (Markus) ==&lt;br /&gt;
; &amp;quot;Es sollte darauf geachtet werden, dass Sicherheitsanforderungen&lt;br /&gt;
vollständig durch Sicherheitsmechanismen erfüllt und zur Erstellung von&lt;br /&gt;
Testfällen festgehalten werden.&amp;quot; --&amp;gt; Bessere Formulierung würde aussagen, dass die Sicherheitsanforderungen durch Testfälle verifiziert werden.&lt;br /&gt;
&amp;quot;(z. B. durch Kommentare im&lt;br /&gt;
Quelltext). Somit ist der Quelltext zu einem&amp;quot; --&amp;gt; Das ist kein empfehlenswerter Programmierstiel! Raus mit diesem Kommentar&lt;br /&gt;
;&amp;quot;Zum Schutz vor dem Verlust bereits entwickelter und verworfener&lt;br /&gt;
Lösungen sowie zu Dokumentationszwecken sollte die Historie der&lt;br /&gt;
Änderungen festgehalten werden (z. B. durch ein Revisionssystem).&amp;quot; --&amp;gt; Auch diesen Absatz können wir streichen - Kein professioneller Programmierer arbeitet ohne Versionierugssystem.&lt;br /&gt;
;&amp;quot;Bei Web-Anwendung sollten die Webseiten auf Konformität zu dem&lt;br /&gt;
verwendeten Standard (z. B. HTML-Standard) getestet werden. Dadurch&lt;br /&gt;
können unvorgesehene Seiteneffekte aufgrund einer Fehlinterpretation&lt;br /&gt;
seitens der Browser vermieden werden.&amp;quot; --&amp;gt; Könnte man noch um &amp;quot;Die Software ist in möglichst vielen Browsern zu testen&amp;quot; erweitern.&lt;br /&gt;
;Generell geht der Autor leider nicht auf die Rollen &amp;amp; Rechte Verteilung ein. Mir fehlt der Hinweis, das es eine personelle Trennung zwischen Entwicklung, Test und Betrieb geben muss.&lt;br /&gt;
;Zum Thema Wartung / Betrieb --&amp;gt; Hier wird keine Aussage getroffen bezüglich Log_Files. Dieses Thema kann kritische Auswirkungen haben, Bsp.: logging ganzer HTTP-Requests im LogLevel=Debug.&lt;br /&gt;
; &amp;quot;Produktspezifische Sicherheitsfunkionalität&amp;quot; - Dieser Absatz ist gefährlich - der Angreifer ist nicht zur Verwendung dies Zielbrowsers gezwungen. Deshalb können Browser-spez. Sicherheitsfunktionen nur als Add-ON gewertet werden.&lt;br /&gt;
; &amp;quot;Festlegung der Entwicklungsumgebung&amp;quot; - Dieser Absatz geht nicht auf die zu verwendenden Testdaten ein. Der Hinweis, dass Live-Daten / Kundendaten nichts in Test- &amp;amp; Entwicklungsumgebungen zu suchen haben fehlt!!!&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== M 2.WA24 Web-Tracking (Matthias) ==&lt;br /&gt;
&lt;br /&gt;
; Letzter Absatz: &amp;quot;Falls eine Auswertung von Nutzerdaten, insbesondere personenbezogener Daten, .. &amp;quot;&lt;br /&gt;
&lt;br /&gt;
Hier sollte denke ich besser von personenbeziehbaren Daten gesprochen Werten. Dies betrifft etwa die Zuordnung von Surfverhalten zu einer bestimmten Person. Dies sollte stets nach den Prinzipien Datensparsamkeit und Datenvermeidung, Erforderlichkeit, sowie Zweckbindung erfolgen. Ist Webtracking nicht personenbeziehbar ist dies kein Thema für den Datenschutz.&lt;br /&gt;
&lt;br /&gt;
== M 4.WA04 Authentisierung bei Web- Anwendungen (Matthias) ==&lt;br /&gt;
&lt;br /&gt;
; Vermischung von Authentisierung und Session Management &lt;br /&gt;
&lt;br /&gt;
Bei diesem Baustein findet eine ziemlich große Vermischung von Anforderung an die Authentisierung und das erst in &amp;quot;M 4.WA06 Session-Management bei Web- Anwendungen&amp;quot; behandelte Session Management statt (Beispiel: &amp;quot;Remember-Me-Funktion&amp;quot;). Beide Themen sollten sinnvollerweise getrennt voneinander zu betrachten und aufeinander zu beziehen.&lt;br /&gt;
&lt;br /&gt;
; Verwendung von Frameworks&lt;br /&gt;
&lt;br /&gt;
Die Anforderung ist schon ein wenig eingeschränkt. Besser passt hier denke ich die &amp;quot;Abbildung der Authentisierung über Standardkomponenten (Bibliotheken oder Frameworks)&amp;quot;. &lt;br /&gt;
&lt;br /&gt;
; Remember-Me-Funktion&lt;br /&gt;
&lt;br /&gt;
Siehe oben, gehört zum Session Management. Das ließt sich im übrigen so, als ob eine Webanwendung Credentials auf dem Client abhängt. &lt;br /&gt;
&lt;br /&gt;
; Grenzwerte für gescheiterte Anmeldeversuche&lt;br /&gt;
&lt;br /&gt;
Diese Empfehlung ist allgemein falsch, da sie sehr von der betrachteten Anwendung abhängt. Besser wäre hier allgemein von Mechanismen zur Verhinderung von automatisierten Angriffen zu sprechen (Anti-Automatisierung). &lt;br /&gt;
&lt;br /&gt;
Etwa umsetzbar durch&lt;br /&gt;
* Sperrung nach x Anmeldeversuchen&lt;br /&gt;
* Throttling&lt;br /&gt;
* Captchas&lt;br /&gt;
* Sicherheitsfragen&lt;br /&gt;
&lt;br /&gt;
Das allgemeine Sperren kann leicht für das gezielte Aussperren von Benutzern (User Lockout) verwendet werden. Was etwa bei Trading-Anwendungen nicht funktioniert.&lt;br /&gt;
&lt;br /&gt;
; Automatisiertes Zurücksetzen von Authentisierungsdaten&lt;br /&gt;
&lt;br /&gt;
Würde ich besser als &amp;quot;Passwort-Reset&amp;quot; bezeichnen.&lt;br /&gt;
&lt;br /&gt;
Weiterhin fehlt hier der Hinweis, dass statt ein automatisiertes Zurücksetzen, ein Mechanismus zu empfehlen ist, bei dem über ein hinterlegtes Sicherheitsmerkmal (Handy-Nummer oder E-Mail-Adresse) vom Benutzer zunächst eine Verifikation durchgeführt wird. Beispielsweise durch einen erhaltenen Link. Erst dann darf eine Änderung des Passwortes durch den Benutzer erfolgen.&lt;br /&gt;
&lt;br /&gt;
; Registrierung nicht behandelt&lt;br /&gt;
&lt;br /&gt;
Es existiert hier kein Punkt, der die sichere Implementierung von Benutzerregistrierungen behandelt.&lt;br /&gt;
&lt;br /&gt;
; Verweis auf Externalisierung fehlt.&lt;br /&gt;
&lt;br /&gt;
Statt die Authentisierung selbst durchzuführen kann eine Anwendung hierzu auf eine externe Komponente (Beispiel: SiteMinder oder Kerberos) zurückgreifen.&lt;br /&gt;
&lt;br /&gt;
; Verweis auf Behandlung von Credentials fehlt&lt;br /&gt;
&lt;br /&gt;
Auch wenn das  in &amp;quot;M 4.WA15 Schutz vertraulicher Daten bei Web- Anwendungen&amp;quot; ausführlich behandelt wird, sollte in diesem Baustein bereits auf den angemessenen Schutz von Authentisierungsdaten bei Übertragung und Speicherung hingewiesen werden.&lt;br /&gt;
&lt;br /&gt;
== M 4.WA05Umfassende Ein- und Ausgabevalidierung bei Web-Anwedungen (Markus) ==&lt;br /&gt;
; &amp;quot;Ablehnung der Daten im&lt;br /&gt;
Fehlerfall&amp;quot; --&amp;gt; Hier könnte man noch auf Tar-Pits eingehen - nur ein Vorschlag.&lt;br /&gt;
&lt;br /&gt;
== M 4.WA06Session-Management bei Web-Anwendungen (Markus, Matthias) ==&lt;br /&gt;
; &amp;quot;Übertragung der SessionID mittels GETRequest&amp;quot; --&amp;gt; Hier fehlt der Hinweis, dass die Lebensdauer dieser SessionIds kurz/kürzer sein muss, als im Falle der Speicherung im Cookie.&lt;br /&gt;
&lt;br /&gt;
([[User:Mrohr|Matthias]]) Die Anmerkung verstehe ich ehrlich gesagt ueberhaupt nicht, zumal das SM haeufig transparent zwischen Cookies und URL Rewriting wechselt. Wozu soll das gut sein? Wie soll das geschehen? Idealerweise sollte die Session ID niemals in die URL geschrieben werden, das sollte eigentlich genuegen.&lt;br /&gt;
&lt;br /&gt;
; &amp;quot;Verschlüsselte Übertragung von SessionIDs&amp;quot; --&amp;gt; Hier fehlt der Hinweis auf den Beast-Exploit. TLS Version &amp;gt; 1.0 verwenden!&lt;br /&gt;
&lt;br /&gt;
([[User:Mrohr|Matthias]]) Solange hier nicht auf eine explizite TLS Version eingegangen wird, sollte meiner grossen Ueberzeugung nach hier auch auf keine Exploits etc. eingagen werden, das gehoert an andere Stelle.&lt;br /&gt;
&lt;br /&gt;
; ([[User:Mrohr|Matthias]]) Weiterhin:&lt;br /&gt;
&lt;br /&gt;
 Es dürfen keine extern bekannten oder erratbaren Daten (z. B. IP-Adresse, Uhrzeit) in die Berechnung der SessionID einfließen.&lt;br /&gt;
&lt;br /&gt;
Die Aussage finde ich etwas problematisch, wichtiger ist, dass die Entropie ausreichend hoch ist. Haeufig werden etwa IPs von Load Balancern in die Session ID hineingeschrieben.&lt;br /&gt;
&lt;br /&gt;
 - Domain (z. B. webapp.domain.tld),&lt;br /&gt;
 - Path (z. B. /webapp/),&lt;br /&gt;
 - Secure und&lt;br /&gt;
 - HttpOnly.Beschränkte Sitzungsdauer&lt;br /&gt;
&lt;br /&gt;
Das sieht so aus, als ob es empfehlenswert ist, das Domain-Tag zu verwenden, das ist es sicherlich nicht. Was macht hier der Hinweis &amp;quot;Beschraenke Sizuungsdauer&amp;quot;?&lt;br /&gt;
&lt;br /&gt;
== M 4.WA07Fehlerbehandlung durch Web-Anwendungen (Markus) ==&lt;br /&gt;
; Konsistenter / Inkonsistener Zustand einer Webanwendung und der daraus resultierende Datenverlust: Hier fehlen mir die Punkte: DOS, Priv.Escalation, CodeExecution.&lt;br /&gt;
; Vermeidung vertraulicher Informationen in Fehlermeldungen --&amp;gt; Fehlermeldungen sollten ebenfalls eine Systeminformationen preisgeben (Softwareversion, Patchlevel, etc.)&lt;br /&gt;
; Abbruch des Vorgangs nach Auftreten eines Fehlers --&amp;gt; TarPits scheinen dem Autor umbekannt zu sein :)&lt;br /&gt;
; &amp;quot;Werden Fehler möglichst von der gleichen Komponente behandelt, in der&lt;br /&gt;
der Fehler aufgetreten ist?&amp;quot; --&amp;gt; Das &amp;quot;möglichst&amp;quot; sollten wir streichen.&lt;br /&gt;
&lt;br /&gt;
== M 4.WA08Schutz vor automatisierter Nutzung von Web-Anwendungen (Markus) ==&lt;br /&gt;
; &amp;quot;Brute-Force-&lt;br /&gt;
Angriffe (z. B. Erraten von Zugangsdaten) und Enumeration-Angriffe (z. B.&lt;br /&gt;
automatisiertes Ermitteln von gültigen Login-Namen)&amp;quot; -- die Beispiele sind identisch - besser Beispiele suchen, z.b. URL-Enumeration&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== M 4.WA11Sichere Konfiguration von Web-Anwendungen (Markus) ==&lt;br /&gt;
; &amp;quot;Sicherer Umgang mit TLS/SSL&amp;quot; -- Hier fehlt der Hinweis, dass TLS-1.0 gebrochen ist&lt;br /&gt;
; &amp;quot;Zeichenkodierungskonfiguration&amp;quot; -- Ein Whitelisting abhängig von der Encodierung wäre ein weiterer Vorschlag&lt;br /&gt;
; &amp;quot;Restriktive Dateisystemberechtigungen&amp;quot; -- auch wenn es ein klassiker ist - der AS sollte ebenfalls mit von einem eingeschränkten Nutzer gestartet werden und nicht als root&lt;br /&gt;
; Administration Consolen:zur Ergänzen: Wenn diese nicht benötigit, sollten derartige Applikationen nicht deployed werden, unabhängig von möglichen Zugangsbeschränkungen.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== M 4.WA13Kontrolliertes Einbinden von Daten und Inhalten bei Web-Anwendungen (Markus) ==&lt;br /&gt;
; Datei-Upload: Bei einem Upload werden Dateien durchaus in TEMP-Verzeichnissen gesammelt und danach weiterverarbeitet. Diese TEMP-Verzeichnisse sind im Rahmen einer Sicherheitsanalyse zu betrachten -&amp;gt; Möglicher (unbefugter) Zugriff auf weitere Uploads&lt;br /&gt;
; Upload komprimierter Dateien / großer Dateien birgt die Gefahr von DOS Angriffen&lt;br /&gt;
; Upload von Dateien kann bei weiterem Parsing zu Speicherengpässen führen --&amp;gt; DOS-Angriffe auf Thread-Local etc.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== M 4.WA14Restriktive Herausgabe sicherheitsrelevanter Informationen bei Web-Anwendungen (Markus) ==&lt;br /&gt;
OK - Keine Anmerkungen von mir.&lt;br /&gt;
&lt;br /&gt;
== M 4.WA15Schutz vertraulicher Daten bei Web-Anwendungen (Markus) ==&lt;br /&gt;
; Sichere kryptographische Algorithmen:&lt;br /&gt;
 Hier fehlt mir eine Liste der aktuelle als sicher geltenden Verfahren.&lt;br /&gt;
; Schlüssel&lt;br /&gt;
 Das die Schlüssel bestimmten Formaten entsprechen müssen ist ok - aber das Schlüsselmanagement wird gar nicht besprochen?&lt;br /&gt;
; Schutz der Daten im Browsercache&lt;br /&gt;
 Skripte und Browserplugins können ebenfalls auf den Browsercache zugreifen - diese werden hier nicht erwähnt.&lt;br /&gt;
; Maskierung von Passwörtern &lt;br /&gt;
 Dies schützt bei der Eingabe nur vor ShoulderSurfing nicht vor Skripten oder Plugins die diese an andere Server posten.&lt;br /&gt;
; Sicherung von Zugangsdaten:&lt;br /&gt;
 Zugangsdaten in einer Datei abzulegen - wenn auch ausserhalb des WebRoots ist keine gute Idee.&lt;br /&gt;
; Schutz von Quelltexten:&lt;br /&gt;
 Hier würde ich property files mit aufnehmen. der hinweis auf web-inf/classes fehlt - warum?&lt;br /&gt;
 Bei include-befehlen sind die pfadangaben zu überdenken.&lt;br /&gt;
&lt;br /&gt;
== M 4.WA16Zugriffskontrolle bei Web-Anwendungen (Markus) ==&lt;br /&gt;
; Zugriffskontrolle via Frameworks:&lt;br /&gt;
 Dieser Punkt (Frameworks) wird nur in einem Satz erwähnt. Es werden keine Bespiele gegeben - Das ist zu wenig.&lt;br /&gt;
 Es müssen alle Zugriffe geschützt werden. Eine Protokollierung aller Zugriffe mit den nötigen Informationen ist ebenfalls empfehlenswert.&lt;br /&gt;
; Datei Upload:&lt;br /&gt;
 Die Gefahr eines DOS wird hier nicht erwähnt.&lt;br /&gt;
&lt;br /&gt;
== M 4.WA19Verhinderung von Cross-Site Request Forgery (CSRF, XSRF) (Markus, Matthias) ==&lt;br /&gt;
; Verantwortliche: &lt;br /&gt;
 Entwickler und Admins!&lt;br /&gt;
([[User:Mrohr|Matthias]]) Korrekt, wobei auch in der Reihenfolge&lt;br /&gt;
&lt;br /&gt;
; Anti-CSRF-Token in hidden fields:&lt;br /&gt;
 Das ist keine gute Idee. Ich würde das streichen!&lt;br /&gt;
&lt;br /&gt;
([[User:Mrohr|Matthias]]) Watt? Anti-CSRF-Tokens in Hidden Fields sind die Standard-Massnahme. Wie denn sonst? Bitte nicht streichen!!! &lt;br /&gt;
&lt;br /&gt;
([[User:Mrohr|Matthias]]) Die Technik bei der die Session ID als Anti-CSRF-Token verwendet wird, wird als Double-Cookie Submit bezeichnet, das sollte hier referenziert werden.&lt;br /&gt;
&lt;br /&gt;
; Umgehung von Schutzmechanismen:&lt;br /&gt;
 Man in the middle hat keinen direkten Bezug zu CSRF! Das würde ich streichen.&lt;br /&gt;
([[User:Mrohr|Matthias]]) Der Hinweis ist korrekt. Wovon der Autor hier spricht ist Session Replay nicht CSRF.&lt;br /&gt;
&lt;br /&gt;
; Frameworks:&lt;br /&gt;
 Gute Idee - aber es gibt auch Features in den ApplicationServern die CSRF unterbinden - warum wird das nicht besprochen?&lt;br /&gt;
&lt;br /&gt;
([[User:Mrohr|Matthias]]) Sehe ich persoenlich nicht so, da CSRF primaer ein Applikations-Fehler ist, und auch in der Applikation und nicht im Environment (AppServer) geloest werden sollte. Auch wenn das manchmal ggf. die einzig machbare Loesung darstellt.&lt;br /&gt;
&lt;br /&gt;
([[User:Mrohr|Matthias]]) Was generell fehlt, ist ein Hinweis darauf, dass schreibende Requests generell per HTTP Post abgewickelt werden sollten, da HTTP Get keine &amp;quot;Safe Method&amp;quot;  (siehe HTTP 1.1, RFC 2616) ist.&lt;br /&gt;
&lt;br /&gt;
== M 4.WA20Sicherer Entwurf der Logik von Web-Anwendungen (Markus) ==&lt;br /&gt;
; Rollbacks:&lt;br /&gt;
 Tritt ein Fehler auf muss die Applikation einen konsistenten Datenstand zurück lassen. Das wird hier nicht erwähnt.&lt;br /&gt;
; RaceConditions:&lt;br /&gt;
 Fehler in der Geschäftslogik können auch durch zwei gleichzeitige Sessions auf einer Webapplikation auftreten - das wird hier nicht besprochen.&lt;br /&gt;
&lt;br /&gt;
== M 4.WA22Verhinderung der Blockade von Ressourcen (DoS) bei Web-Anwendungen (Markus) ==&lt;br /&gt;
; Datenspeicher:&lt;br /&gt;
 Neben dem Datenspeicher sollte auch der RAM-Verbrauch pro Thread der Applikation limitiert werden.&lt;br /&gt;
; Voraggregation von Daten / Caching&lt;br /&gt;
 Dieser Punkt fehlt: Stark ressourcen belastende Anfragen können auch in Lastarmen Zeiten vorberechnet werden.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== M 4.WA25Verhinderung von Clickjacking (Markus) ==&lt;br /&gt;
Ok - das passt soweit.&lt;br /&gt;
&lt;br /&gt;
== M 5.WA21Sichere Anbindung von Hintergrundsystemen an Web-Anwendungen (Markus) ==&lt;br /&gt;
; Verantwortliche:&lt;br /&gt;
 Architekten fehlen. Entwickler müssen die Views umsetzen und die Datasource entsprechend einbinden - die fehlen hier ebenfalls.&lt;br /&gt;
; DirectorySystem Beispiel:&lt;br /&gt;
 Das DirectorySystem wird in dem angegeben Beispiel zum Single Point of Failure - das wird verschwiegen.&lt;br /&gt;
; Firewalls:&lt;br /&gt;
 Das sind fachlich-blinde Systeme. Was ist mit WAFs / IDS / IPS etc.?&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== M 5.WA23Systemarchitektur einer Web-Anwendung (Markus) ==&lt;br /&gt;
; Verantwortliche:&lt;br /&gt;
Auch hier fehlend wieder die Architekten. &lt;br /&gt;
; Virtualisierung:&lt;br /&gt;
Virtualisierung bietet weitere Angriffsvektoren (z.B.: Hypervisor) die eine &amp;quot;Blech&amp;quot;Farm nicht bietet.&lt;/div&gt;</summary>
		<author><name>Mrohr</name></author>	</entry>

	<entry>
		<id>https://wiki.owasp.org/index.php?title=Talk:OWASP_Review_BSI_IT-Grundschutz_Baustein_Webanwendungen&amp;diff=130106</id>
		<title>Talk:OWASP Review BSI IT-Grundschutz Baustein Webanwendungen</title>
		<link rel="alternate" type="text/html" href="https://wiki.owasp.org/index.php?title=Talk:OWASP_Review_BSI_IT-Grundschutz_Baustein_Webanwendungen&amp;diff=130106"/>
				<updated>2012-05-18T13:18:12Z</updated>
		
		<summary type="html">&lt;p&gt;Mrohr: /* M 4.WA06Session-Management bei Web-Anwendungen (Markus) */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Since it's about a review of a document in German, all the discussions will be done in German :-)&lt;br /&gt;
&lt;br /&gt;
Diskussionen rund um den Review des &amp;quot;IT-Grundschutzbausteins Webanwendungen&amp;quot; finden hier statt, sinnvollerweise auf Deutsch :-)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Vorschlag für Kriterien, die an unser Review angelegt werden sollten (.kai) ==&lt;br /&gt;
&lt;br /&gt;
* Der Baustein soll alle wichtigen Themen der Entwicklung sicherer&lt;br /&gt;
Webanwendungen enthalten.&lt;br /&gt;
&lt;br /&gt;
* Der Baustein soll die verschiedenen Phasen der Software-Entwicklung&lt;br /&gt;
vollständig abdecken.&lt;br /&gt;
&lt;br /&gt;
* Der Baustein soll zwischen verbindlichen, prüfbaren Vorgaben und&lt;br /&gt;
unverbindlichen Empfehlungen sprachlich sauber unterscheiden (hier&lt;br /&gt;
spielt mein Auditorenblick eine Rolle). Vor allem soll der Baustein&lt;br /&gt;
verbindliche Anforderungen auch tatsächlich stellen. Alle&lt;br /&gt;
verbindlichen Anforderungen müssen unabhängig von der jeweiligen&lt;br /&gt;
Umgebung auch umsetzbar sein, d.h. sie müssen entsprechend generisch&lt;br /&gt;
sein.&lt;br /&gt;
&lt;br /&gt;
* Die Maßnahmen sollen nur in (begründbaren) Ausnahmen zu Empfehlungen&lt;br /&gt;
von OWASP im Widerspruch stehen.&lt;br /&gt;
&lt;br /&gt;
* Die Maßnahmen sollen verständlich und anwendbar sein.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== &amp;quot;Hilfsmittel&amp;quot; (Markus) ==&lt;br /&gt;
Ich würde das Script zur Vermeidung von Clickjacking wrappen und nicht als losen Skript-block in den Text einbinden - einfach schlechter Programmierstiel diese losen Blöcke.&lt;br /&gt;
Der Zugriff auf das Body-Element mit byTagName-Array[0] ist auch nicht wirklich gut. Ich halte Zugriffe über das DOM (klassisch), bei ID bzw. XPATH für besser. &lt;br /&gt;
&lt;br /&gt;
SQL-Injection Characters:&lt;br /&gt;
die Pipe fehlt hier zur Textkonatenierung&lt;br /&gt;
+ / - haben auch eine Bedeutung bei JOINs.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== &amp;quot;Goldene Regeln&amp;quot; (Matthias) ==&lt;br /&gt;
&lt;br /&gt;
Hier meine Anmerkungen zu diesem Dokument:&lt;br /&gt;
&lt;br /&gt;
; 1. Für mich fehlende Punkte&lt;br /&gt;
* Korrektur der Ursache (Root Cause) von Schwachstellen statt  Verhinderung deren Ausnutzung&lt;br /&gt;
* Bezug auf Minimierung der Angriffsfläche und Least-Privilege-Prinzip&lt;br /&gt;
* Bezug auf Defense-in-Depth-Prinzip&lt;br /&gt;
* Verwendung von getesteten Security APIs (z.B. OWASP ESAPI) statt selbstentwickelter Funktionen&lt;br /&gt;
* Bezug auf Externalisierung von Sicherheitsfunktionen, sowie deklerative vor programmatischer Sicherheit.&lt;br /&gt;
&lt;br /&gt;
; 2. Begriff &amp;quot;Web-Anwendung&amp;quot;&lt;br /&gt;
Würde ich generell durch &amp;quot;Webanwendung&amp;quot; ersetzen.&lt;br /&gt;
&lt;br /&gt;
; 3. Einleitung (&amp;quot;Web-Anwendungen stellen Funktionalität zur Verfügung, ...&amp;quot;)&lt;br /&gt;
&lt;br /&gt;
Wozu dient dieser Satz?&lt;br /&gt;
&lt;br /&gt;
; 4. &amp;quot;Die Architektur der Web-Anwendung ist im Sicherheitskonzept zu  dokumentieren.....&amp;quot; &lt;br /&gt;
&lt;br /&gt;
Ich fände es sinnvoller, wenn hier von der &amp;quot;Sicherheitsarchitektur&amp;quot; gesprochen wird, welche etwa neben den sicherheitsrelevanten Datenflüssen, sensible Komponenten, Entry Points, Akteure architekturelle Security Controls wie Authentisierung, Kryptographie und natürlich die Trust Boundaries beinhaltet.&lt;br /&gt;
&lt;br /&gt;
; 5. &amp;quot;Bei Web-Anwendungen handelt es sich häufig um spezielle Eigenentwicklungen....&amp;quot;&lt;br /&gt;
&lt;br /&gt;
Erstens würde ich hier den geläufigen Begriff &amp;quot;Individualsoftware&amp;quot; verwenden. Zweitens würde ich statt bestimmte SDLC-Phasen vorzugeben (die Begriffe &amp;quot;Softwareverteilung&amp;quot; und &amp;quot;Integration&amp;quot; sind mir bei Webanwendungen bisher noch nicht so häufig untergekommen), besser von der Notwendigkeit sprechen, Sicherheit in allen Entwicklungsphasen zu berücksichtigen, also eines SDLs.&lt;br /&gt;
&lt;br /&gt;
; 6. &amp;quot;Alle Ein- und Ausgaben der Web-Anwendung müssen in eine normalisierte Form überführt werden....&amp;quot;&lt;br /&gt;
&lt;br /&gt;
Normalisierung ist für mich nicht gleich Kanonsierung, auch wenn beide Begriffe häufig als synonym verwendet werden.  Der Unterschied wird in der [http://owasp-esapi-java.googlecode.com/svn/trunk_doc/2.0-rc4/org/owasp/esapi/Encoder.html API-Beschreibung der ESAPI] erklärt. Die Normalisierungs-Funktion ist allerdings schon vor einiger Zeit aus der ESAPI [https://lists.owasp.org/pipermail/esapi-dev/2010-January/000266.html rausgeflogen]. Die generelle Kanonisierung von Ausgaben halte ich dazu für nicht sinnvoll.&lt;br /&gt;
&lt;br /&gt;
Zweitens, finde ich den weiteren Text zwar grundsätzlich formal korrekt, aber so allgemein, dass dieser glaube ich niemandem so richtig etwas bringt.  &lt;br /&gt;
&lt;br /&gt;
Besser fände ich hier Ein- von Ausgabevalidierung grundsätzlich voneinander abzugrenzen. Etwa was ich per Eingabevalidierung (Längenprüfung, Casting, etc. per Whitelisting) und was mit Ausgebavalidierung (Enkodierung, Escaping, Parametrisierung) machen muss und kann.&lt;br /&gt;
&lt;br /&gt;
Eingabedaten können technisch zudem auch Werte eingelesener Property-Dateien sein. Muss ich die auch validieren? Ist das dann noch Grundschutz? &lt;br /&gt;
&lt;br /&gt;
; 7. &amp;quot;Für den Zugriff auf sensitive Funktionen oder Informationen muss die Web-Anwendung eine wirksame Authentisierung und Sitzungsverwaltung unterstützen. Die Eigenschaften der Sitzungs-ID müssen so gewählt werden, dass die Sitzung ausreichend geschützt ist. ....&amp;quot;&lt;br /&gt;
&lt;br /&gt;
Besser fände ich &amp;quot;eine Authentisierung, die über eine dem Schutzbedarf der Anwendung angemessene Stärke verfügt.&amp;quot; &lt;br /&gt;
&lt;br /&gt;
Eigentlich geht es doch mehr um den Schutz der Sitzungs-ID, da diese gewöhnlich im Verlauf einer Sitzung den Client authentisiert. Oder den Schutz des Zugriffs auf eine Sitzung. &lt;br /&gt;
&lt;br /&gt;
Zudem fehlt hier meiner Meinung nach der Hinweis auf die bevorzugte Verwendung getesteter Standardkomponenten.&lt;br /&gt;
&lt;br /&gt;
; 8. &amp;quot;Die Web-Anwendung sollte die zu übermittelnden Daten schützen.&amp;quot;&lt;br /&gt;
&lt;br /&gt;
Dies würde ich nur auf sensible Daten beziehen. Zusätzlich zu HTTPS würde ich hier schreiben, dass sensible Daten generell nicht in der URL übertragen werden dürfen.&lt;br /&gt;
&lt;br /&gt;
; 9. &amp;quot;Die Preisgabe interner Informationen (z.B. Kommentare, Fehlermeldungen)&amp;quot;&lt;br /&gt;
&lt;br /&gt;
Hier würde ich eher schreiben &amp;quot;(IN Kommentaren, Fehlermeldungen, HTTP Headern, etc.)&amp;quot;&lt;br /&gt;
&lt;br /&gt;
; 10. &amp;quot;Fehler müssen so behandelt werden, ... müssen Fehler bei der Autorisierung zu einer Verweigerung beim Zugriff auf die angeforderte Ressource führen.&amp;quot;&lt;br /&gt;
&lt;br /&gt;
Sprachlich: &amp;quot;Die Webanwendung muss sich stets in einem sicheren Zustand befinden. Beispielsweise müssen Fehler bei der Autorisierung zu einer Verweigerung des Zugriffs führen (Default-Deny-Strategie).&amp;quot;&lt;br /&gt;
&lt;br /&gt;
; 11. &amp;quot;Die Logging-Funktionen der Web-Anwendung müssen aufgetretene Ereignisse derart protokollieren, dass sicherheitskritische Vorfälle nachvollzogen werden können.&amp;quot;&lt;br /&gt;
&lt;br /&gt;
Hier würde hier eher von &amp;quot;allen sicherheitsrelevanten Ereignissen&amp;quot; sprechen.&lt;br /&gt;
&lt;br /&gt;
Weiterhin sollten insbesondere beim Logging der Datenschutz berücksichtigt werden, personenbezogene Daten also nach Möglichkeit nicht oder nur anonymisiert in technischen Logdateien protokolliert werden.&lt;br /&gt;
&lt;br /&gt;
; 12. &amp;quot;Alle Sicherheitsmechanismen (z.B. Authentisierung und Zugriffskontrolle) sind serverseitig zu implementieren und können nicht durch clientseitige Mechanismen ersetzt werden.&amp;quot;&lt;br /&gt;
&lt;br /&gt;
Die Aussage ist so nicht korrekt. Darüber hatten wir bereits bei der ASVS mehrfach diskutiert. &lt;br /&gt;
&lt;br /&gt;
Überall dort wo der Client angegriffen wird, also etwa bei RIAs (Stichwort DOM-Based XSS) müssen wir Security Controls clientseitig implementieren. Es gibt mittlerweile deshalb auch eine Portierung der ESAPI auf Javascript. Überall dort wo der Server oder Hintegrundsysteme angegriffen werden, ist die Aussage aber natürlich zutreffend.&lt;br /&gt;
&lt;br /&gt;
== &amp;quot;Gefährdungen&amp;quot; (Markus, Dennis, .... &amp;lt;Dein Name&amp;gt;) ==&lt;br /&gt;
; Generell:&lt;br /&gt;
Reference auf RFCs fehlen.&lt;br /&gt;
&lt;br /&gt;
==B.5.XX Web-Anwendungen ==&lt;br /&gt;
; 1. Erster Absatz - Letzter Satz: --Wieso werden hier nur HTML/XML Doks und Oberflächen angesprochen? Was ist der Unterschied zwischen einem HTML-Dok und einer Oberfläche? Was ist mit  Flash, etc.? Was ist mit WebSockets?&lt;br /&gt;
; 2. Stichpunkt &amp;quot;Protokollierung&amp;quot;: Sicherheits relevant ist ein sehr dehnbarer Begriff - Eine bessere Formulierung könnte sein: Zur Rekonstruktion von Nutzerhandlungen nötige Ereignisse (positve &amp;amp; negative) müssen protokolliert werden . . . &lt;br /&gt;
; 3. Absatz: &amp;quot;Abgrenzung des Bausteins&amp;quot;: &amp;quot;Die spez. Sicherheitsanforderungen an Web-Services werden in diesem Baustein nicht betrachtet&amp;quot; --&amp;gt; Wie so nicht? Was ist das Backend von einer Rest / AJAX-basierenden Webanwendung denn anderes als ein Web-Service? Diesen Satz würde ich entfernen.&lt;br /&gt;
; 4.Vorsätzliche Handlungen -&amp;gt; Web-Spoofing (G.5.87) -- Missverständliche Bezeichnung / Nomenklatur&lt;br /&gt;
; 5. Seite 4 : erste Zeile &amp;quot;Umsetzung&amp;quot;: &amp;quot;dafür umzusetztende Komponenten müssen die Webanwendung schützen...&amp;quot; - Hier fehlt mir der Hinweis, dass dieser Schutz verifiziert werden muss.&lt;br /&gt;
; 6 Seite 5: &amp;quot;Umsetzung&amp;quot; - Wir haben CSRF, D(D)os und SQL-Injection aber wo ist XSS?&lt;br /&gt;
; 7 Seite 7: &amp;quot;Die Sicherheitsfunktion wird ausschließlich clientseitig...&amp;quot; --&amp;gt; Warum muss der Angreifer überhaupt einen Browser umkonfigurieren? Was ist mit Proxies, Scripts, etc.? Ich würde das reduzieren darauf, dass rein Webbrowser-basierende Schutzfunktionen einfach umgangen werden können.&lt;br /&gt;
; 8 Seite 8: Die angesprochenen Punkte hinterlassen den Eindruck nicht vollständig zu sein: Mir fehlen Punkte wie &amp;quot;Outsourcing&amp;quot;, &amp;quot;KnowHow der Entwickler&amp;quot;, Tooling, Framework-Auswahl, etc.&lt;br /&gt;
; 9 Seite 9: Eigentlich möchte der Autor hier über Datenschutz sprechen. Abgesehen von den letzten drei Zeilen geht es aber nur um &amp;quot;User tracking&amp;quot; - Wo ist der Rest der Datenschutzproblematik? Warum der Fokuss auf Tracking? Mir ist das zu einseitig.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
tbd.&lt;br /&gt;
&lt;br /&gt;
; Wortwahl:&lt;br /&gt;
Ich stosse innerhalb der Texte immer wieder an die Worten '''Hintergrundsystem''' und '''Sicherheitskontext'''.&lt;br /&gt;
'''Hintergrundsystem:''' besseres Synonym?&lt;br /&gt;
'''Sicherheitskontext:''' nur weil es in den Texten um Sicherheit geht muss nicht an jeder Stelle immer wieder das Wort _Sicherheits_kontext eingebaut werden.&lt;br /&gt;
Bsp: &amp;quot;Erlangt ein Angreifer Kenntnis von einer solchen gültigen, aber nicht mehr genutzten SessionID, so kann er die Web-Anwendung im Sicherheitskontext des nicht abgemeldeten Benutzers weiter verwenden.&amp;quot; (G 5,WA12 Unzureichendes Session-Management von Web-Anwendungen)&lt;br /&gt;
Verbesserungsansansatz: ... so kann er die Web-Anwendung anstelle des eigentlichen Besitzers weiterhin verwenden.&lt;br /&gt;
&lt;br /&gt;
== &amp;quot;G 2.WA01 Mangelhafte Auswahl oder Konzeption von Web-Anwendungen&amp;quot; (Matthias) ==&lt;br /&gt;
&lt;br /&gt;
Nachdem ich mir diese Gefährdung durchgelesen hatte, fehlten mir ehrlich gesagt etwas die Worte. Nicht nur, dass hier fast jeder zweite Satz entweder falsch ist bzw. massive Fehler enthält oder ich diesen schlicht nicht verstehe, ist der ganze Text sprachlich wirklich enorm verbesserungsfähig. &lt;br /&gt;
&lt;br /&gt;
Na gut, ich konzentriere mich mal auf die fachlichen Punkte:&lt;br /&gt;
&lt;br /&gt;
; 1. Security Controls&lt;br /&gt;
Werden mal mit &amp;quot;Schutzmechanismen&amp;quot;, mal mit &amp;quot;Sicherheitskomponenten&amp;quot; und dann wieder als &amp;quot;Sicherheitsfunktionen&amp;quot; bezeichnet. Hier macht eine einheitliche Benennung sicherlich Sinn und ist weniger verwirrend.&lt;br /&gt;
&lt;br /&gt;
; 2. &amp;quot;Eine Web-Anwendung ist in der Regel ein verteiltes, komplexes System bestehend aus unterschiedlichen Komponenten (z. B. Webserver, Applikationsserver, Hintergrundsysteme)&amp;quot;&lt;br /&gt;
&lt;br /&gt;
Eine Webanwendung besteht sicher nicht aus einem Webserver- oder anderer infrastruktureller Komponenten, sondern ist Software welches diese nutzt.&lt;br /&gt;
&lt;br /&gt;
; 3. &amp;quot;Bei individuell entwickelten Web-Anwendungen sind im Allgemeinen die Frameworks, Komponenten und Schnittstellen im Rahmen der Konzeption auszuwählen und deren Einbindung und Absicherung zu betrachten....Im Gegensatz dazu ist bei der Konzeption von Web-Anwendungen auf Basis von Standardsoftware insbesondere auf die Auswahl der Software und die Konfiguration der Teilkomponenten zu achten&amp;quot;&lt;br /&gt;
&lt;br /&gt;
Wir unterscheiden im Rahmen von Webanwendungen eigentlich Free or Opensource Software (FOSS bzw. FLOSS), Standardsoftware und Individualsoftware voneinander. Wir unterscheiden nicht Frameworks von Standardsoftware. Frameworks können Teil von Standardsoftware sein, wie etwa bei SharePoint, SAP, etc, oder aber FOSS, wie etwa Spring. Die ganzen Absätze machen für mich daher keinen Sinn.&lt;br /&gt;
&lt;br /&gt;
; 4. &amp;quot;Eine Sicherheitsfunktion (z. B. Authentisierung, Autorisierung) wird nicht an einer Stelle umgesetzt und verwendet, sondern ist mehrfach in der Web- Anwendung realisiert. Wird diese Sicherheitsfunktion an den verschiedenen Stellen unterschiedlich umgesetzt, führt dies zu einem uneinheitlichen Sicherheitsniveau.&amp;quot;&lt;br /&gt;
&lt;br /&gt;
Natürlich ist die mehrfache Verwendung bestimmter Security Controls, beispielsweise von Zugriffskontrollen (Complete-Mediation) oder Validierung (Robustheit) erstrebenswert. Was der Autor hier wahrscheinlich meinte, war die Notwendigkeit diese zu Kapseln bzw. zu Externalisieren. Das bezieht sich im übrigen nicht nur auf die Controls selbst, sondern auch auf ihre Parametrisierung (etwa. über Konfigdateien / XACML).&lt;br /&gt;
&lt;br /&gt;
Wichtiger wäre in diesem Zusammenhang zudem die fehlende Berücksichtigung bestimmter Security Controls.&lt;br /&gt;
&lt;br /&gt;
; 5. &amp;quot;Auswahl von Web-Anwendungen auf Basis von Standardsoftware&amp;quot;&lt;br /&gt;
Was will der Satz sagen? Ich wähle Standardsoftware aus, aber doch keine Webanwendungen. Oder heißt das, ich kaufe eine existierende Anwendung ein (Webanwendung!=Indivudualsoftware)? &lt;br /&gt;
&lt;br /&gt;
; 6. &amp;quot;Das ausgewählte Produkt verfügt nicht über die ausreichende Sicherheitsfunktionalität, ... Daher müssen die notwendigen Schutzmechanismen nachträglich hinzugefügt werden, wodurch zusätzliche Aufwände entstehen.&amp;quot;&lt;br /&gt;
Das ist etwas sehr positiv formuliert. Tatsächlich können fehlende Security Controls in zugekaufter Software (insb. Standardsoftware) in der Realität häufig gar nicht hinzugefügt werden oder nur perimetrisch (z.B. per WAF oder Access Gateway).&lt;br /&gt;
&lt;br /&gt;
; 7. &amp;quot;Die Hintergrundsysteme werden unzureichend abgesichert und dadurch ist die Datenbank der Web-Anwendung aus dem Internet erreichbar.&amp;quot;&lt;br /&gt;
Gehören fehlende Netzwerksegmentierung bzw. Firewallregeln wirklich in diesen Kontext? Das ist doch eigentlich Grundschutz der Infrastruktur, oder?&lt;br /&gt;
&lt;br /&gt;
; 8. &amp;quot;Aufgrund schwacher Parameter in der Konfiguration des Frameworks zum Session-Management werden unsichere SessionIDs erzeugt.&amp;quot;&lt;br /&gt;
Was sind &amp;quot;schwache&amp;quot; Parameter?&lt;br /&gt;
&lt;br /&gt;
Welches Framework erlaubt unsichere SessionIDs durch eine &amp;quot;schwache&amp;quot; Konfiguration zu erzeugen?&lt;br /&gt;
&lt;br /&gt;
; 9. &amp;quot;Wird die Konfiguration des Web-Browsers durch einen Angreifer manipuliert, können die clientseitig umgesetzten&amp;quot;&lt;br /&gt;
&lt;br /&gt;
Manipuliert ein Angreifer die Konfguration seines Webbroswers, wenn er einen MITM-Proxy konfiguriert?&lt;br /&gt;
&lt;br /&gt;
Wie bereits bei den &amp;quot;Goldenen Regeln&amp;quot; angemerkt, gilt auch hier, das manche Security Controls auch clientseitig umgesetzt werden dürfen (etwa. zur Verhinderung von Dom-Based XSS).&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== &amp;quot;G 5.WA10 Fehler in der Web-Anwendungslogik&amp;quot; (Dennis) ==&lt;br /&gt;
; 1. &amp;quot;Damit kann aufgrund der Prüfreihenfolge ein hoher Ressourcenverbrauch provoziert werden, der für Denial-of-Service-Angriffe ausgenutzt werden kann.&amp;quot;&lt;br /&gt;
Meiner Meinung nach passt in diesem Kontext die Attacke DoS nicht ganz. Falls die nachfolgende Funktionalität wegen der langen Ausführungszeit der Filterkomponente übersprungen wird bzw. ein Fehler auftritt würde dies meiner Ansicht in die Thematik Anwendungslogik passen. Eine DoS-Attacke kann hingegen anhand jeder Funktion durchgeführt werden.&lt;br /&gt;
&lt;br /&gt;
== &amp;quot;G 5.WA11 Umgehung clientseitig umgesetzter Sicherheitsfunktionen von Web-Anwendungen&amp;quot; (Dennis) ==&lt;br /&gt;
; 1. &amp;quot;Ein Angreifer kann diese ausnutzen, um beispielsweise unbefugt Befehle an Hintergrundsysteme der Web-Anwendung zu übermittlen (z.B. in Form von Datenbankanfragen bei einer SQL-Injection).&amp;quot;&lt;br /&gt;
Umformulierung des Inhalts der Klammer. Hatte beim ersten Lesen für mich den Anschein, als ob ein Formular genutzt werden könnte welches den Nutzer aufforder eine SQLI einzugeben. Ich denke &amp;quot;Datenbankanfrage zwecks Ausführung einer SQL-Injection&amp;quot; würde besser passen.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== G 2.WA02 Mängel bei der Entwicklung und der Erweiterung von Web-Anwendungen (Matthias) ==&lt;br /&gt;
&lt;br /&gt;
Allgemein ist de obere Teil ok, die aufgezählten &amp;quot;Auswirkungen von fehlenden Vorgaben&amp;quot; verstehe ich jedoch nicht. Wo ist etwa der Bezug von Barrierefreiheit auf die Anwendungssicherheit?&lt;br /&gt;
&lt;br /&gt;
Mein Vorschlag, um diese Punkte etwa sinnvoll umzubauen:&lt;br /&gt;
* &amp;quot;Fehlendes Vorgehensmodell&amp;quot;: Bezug auf fehlende Berücksichtigung von Sicherheit im SDLC. Statt eines SDLCs selbst sollte hier besser auf die Notwendigkeit eines Secure Development Lifecycle (SDL) hingewiesen werden&lt;br /&gt;
* &amp;quot;Fehlende Programmierrichtlinien&amp;quot; =&amp;gt; Besser wäre hier &amp;quot;Fehlende Sicherheitsrichtlinien in der Programmierung&amp;quot; also &amp;quot;Secure Coding Guidelines&amp;quot;&lt;br /&gt;
* &amp;quot;Testfälle&amp;quot; =&amp;gt; &amp;quot;Sicherheitsrelevante Testfälle&amp;quot; (z.B. Security Unit Tests). &lt;br /&gt;
* &amp;quot;Barrierefreiheit&amp;quot;: Warum nicht an dieser Stelle die Auswirkungen von Sicherheitsfunktionen auf die Bedienbarkeit, etwa anhand von CAPTCHAS erläutern?&lt;br /&gt;
&lt;br /&gt;
== G 2.WA03 Unzureichender Schutz personenbezogener Daten bei Web-Anwendungen (Matthias) ==&lt;br /&gt;
&lt;br /&gt;
Der Titel dieses Bausteines heißt &amp;quot;Schutz personenbezogener Daten&amp;quot;, die genannten Beispiele beziehen sich bis auf den letzten jedoch auf die missbräuchliche (oder zumindest problematische) Nutzung aus Sicht des Datenschutzes. &lt;br /&gt;
&lt;br /&gt;
Die Punkt 1-3 sollten daher besser entfallen und z.B. durch die Folgenden ersetzt werden:&lt;br /&gt;
* Unsichere Einbindung von sozialen Netzwerken (Bezug nehmen auf den Like-Button bei Facebook)&lt;br /&gt;
* Unsichere Einbindung von Werbeinhalten&lt;br /&gt;
* Unsichere Übertragung und Caching&lt;br /&gt;
* Unsichere Protokollierung&lt;br /&gt;
* Ungenügender Zugriffsschutz&lt;br /&gt;
* Verstoß des Minimalprinzips bzw. der Zweckgebundenheit (welche Daten werden wirklich benötigt)&lt;br /&gt;
&lt;br /&gt;
Auch wäre es ggf. zumindest einen Verweis auf das BDSG zu machen.&lt;br /&gt;
&lt;br /&gt;
== G 4.33 Unzureichende oder fehlende Authentisierung (Matthias) ==&lt;br /&gt;
&lt;br /&gt;
; 1. Erster Absatz: &amp;quot;Wenn Authentisierungsmechanismen fehlen oder zu schlecht sind&amp;quot;&lt;br /&gt;
&lt;br /&gt;
&amp;quot;schlecht&amp;quot; sollte vlt besser durch &amp;quot;unzureichend&amp;quot; ersetzt werden.&lt;br /&gt;
&lt;br /&gt;
; 2. &amp;quot;Sicherheitslücken entstehen bei... der Benutzerauthentisierung&amp;quot;&lt;br /&gt;
&lt;br /&gt;
Hier findet nur ein Bezug auf &amp;quot;Passwörter&amp;quot; statt. Der Bezug auf die fehlerhaft implementierte oder dem Schutzbedarf ungenügende Schutzmechanismen (z.B. keine 2-Faktor-Authentisierung bei hochsensiblen Daten) fehlt. Auch auf das komplette fehlen von Authentisierungs-Controls wird hier nicht  eingegangen&lt;br /&gt;
&lt;br /&gt;
; 3. &amp;quot;Sicherheitslücken entstehen bei... der Komponentenauthentisierung&amp;quot;&lt;br /&gt;
&lt;br /&gt;
Wie bei 2., wird auch hier wieder nur auf Passwörter, nicht jedoch auf das fehlen von Controls selbst eingegangen. An dieser Stelle fehlt auch ein Hinweis auf die Notwendigkeit dedizierter Benutzeraccounts.&lt;br /&gt;
&lt;br /&gt;
; 4. &amp;quot;Sicherheitslücken entstehen bei... der Wahl des Verfahrens&amp;quot;&lt;br /&gt;
&lt;br /&gt;
Statt untauglich würde ich auch hier von &amp;quot;dem Schutzbedarf der Daten nicht angemessen&amp;quot; sprechen, eigentlich gehört das für mich aber in die obigen Punkte.&lt;br /&gt;
&lt;br /&gt;
; 5. Serverseitige Authentisierung fehlt&lt;br /&gt;
&lt;br /&gt;
Auch der Server (bzw. die Anwendung selbst) kann sich fehlerhaft oder ungenügend beim Benutzer authentsieren, etwa über DNS, SSL-Zertifikate, etc.&lt;br /&gt;
&lt;br /&gt;
== G 4.WA04 Unzureichende Validierung von Ein- und Ausgabedaten bei Web-Anwendungen (Matthias) ==&lt;br /&gt;
&lt;br /&gt;
; 1. &amp;quot;Unzureichende Validierung von Eingabedaten&amp;quot;&lt;br /&gt;
&lt;br /&gt;
Die genannten Beispiele sind genau keine korrekten Beispiele für diesen Fall, sondern betreffen die Ausgabevalidierung bzw. Enkodierung. Typische Fehler der Eingabevalidierung ist eine Manipulierbarkeit der Business Logik.&lt;br /&gt;
&lt;br /&gt;
; 2. &amp;quot;Unzureichende Validierung von Ausgabedaten&amp;quot;&lt;br /&gt;
&lt;br /&gt;
Hier geht es zentral um die Verhinderung von Interpreter Injection, also serverseitig (z.B. SQL oder LDAP Injection) oder clientseitig (XSS, JSON Injection, etc.). Statt &amp;quot;können die Ausgaben Schadcode&amp;quot; enthalten würde ich hier eher davon Sprechen, dass ein solcher Interpreteraufruf manipuliert werden kann (was dann z.B. zur Einschleusung von Schadcode genutzt werden kann).&lt;br /&gt;
&lt;br /&gt;
; 3. &amp;quot;Die Suchfunktion der Web-Anwendung verwendet die Eingaben der Benutzer ungefiltert&amp;quot;&lt;br /&gt;
&lt;br /&gt;
Mit ungenügender &amp;quot;Filterung&amp;quot; hat SQL Injection nichts zu tun,  eigentlich geht es hierbei darum, dass SQL-Anfragen dynamisch mit unvalidierten Eingebedaten zusammengebaut (konkateniert) werden.&lt;br /&gt;
&lt;br /&gt;
; 4. &amp;quot;Ungefilterter HTML-Code in Kommentar-Funktion&amp;quot;&lt;br /&gt;
&lt;br /&gt;
Hier fehlt der Bezug auf persistentes XSS, das hier sicherlich zentral ist.&lt;br /&gt;
&lt;br /&gt;
== G 4.WA05 Fehlende oder mangelhafte Fehlerbehandlung durch Web-Anwendungen (Tobias) ==&lt;br /&gt;
; Abschnitt &amp;quot;Unsichere Fehlerbehandlung&amp;quot;&lt;br /&gt;
Die G adressiert &amp;quot;Unsichere Fehlerbehandlung&amp;quot;, der Abschnitt die &amp;quot;Unsichere Fehlerbehandlung in Sicherheitskomponenten&amp;quot;. Entsprechend sollte der fettgedruckte Teil angepasst werden.&lt;br /&gt;
&lt;br /&gt;
; &amp;quot;fehlende SQL-Parameter,&amp;quot;&lt;br /&gt;
Sollte besser &amp;quot;Fehlermeldungen bei ungültigen SQL-Abfragen&amp;quot; lauten.&lt;br /&gt;
&lt;br /&gt;
; &amp;quot;Auch scheinbar unkritische Informationen, wie die Meldung ob (..)&amp;quot;&lt;br /&gt;
Korrekt, allerdings nicht nachvollziehbar, wenn das Problem der Leser nicht schon bekannt ist. Daher erweitern nach &amp;quot; Rahmen von Brute-Force-Angriffen ausgenutzt werden.&amp;quot; mit &amp;quot;. Bei Brute-Force-Angriffen wäre in diesem Fall klar, dass der Benutzername gültig ist.&amp;quot; &lt;br /&gt;
&lt;br /&gt;
== G 4.WA06 Unzureichende Nachvollziehbarkeit von sicherheitsrelevanten Ereignissen bei Web-Anwendungen (Matthias) ==&lt;br /&gt;
&lt;br /&gt;
; 1. Erster Absatz: &amp;quot;Die Behebung einer Schwachstelle ist dann nicht oder nur unter erschwerten Bedingungen möglich.&amp;quot;&lt;br /&gt;
&lt;br /&gt;
Hier würde ich ergänzen: &amp;quot;...und Angriffe auf die Anwendungen können ggf. nicht erkannt oder nachvollzogen werden&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
; 2. &amp;quot;Beispiele&amp;quot;: Kommulierbarkeit&lt;br /&gt;
&lt;br /&gt;
Hier fehlt auch ein Bezug auf die Kommulierbarkeit von SIcherheitsereignissen, dass diese also auch von solchen anderer Systeme in Verbindung gesetzt werden können&lt;br /&gt;
&lt;br /&gt;
; 3. &amp;quot;Beispiele&amp;quot;: Gerichtsverwertbarkeit&lt;br /&gt;
&lt;br /&gt;
Auch die Möglichkeit zur Gerichtsverwertbarkeit (etwa durch eindeutigen Zeitstempel) und manipulationssicherer Speicherung, würde ich an dieser Stelle unbedingt erwähnen.&lt;br /&gt;
&lt;br /&gt;
== G 4.WA07 Offenlegung von Informationen bei Web-Anwendungen (Matthias) ==&lt;br /&gt;
&lt;br /&gt;
; 1. Titel&lt;br /&gt;
&lt;br /&gt;
Hier würde ggf. &amp;quot;Offenlegung vertraulicher Informationen&amp;quot; sicher besser passen als &amp;quot;Offenlegung von Informationen&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
; 2. Beispiellink&lt;br /&gt;
&lt;br /&gt;
Ein Beispiellink (mit und ohne Token) würde sicher die Verständlichkeit dieser Schwachstelle verbessern.&lt;br /&gt;
&lt;br /&gt;
; 3. Erster Absatz: &amp;quot;Wenn demzufolge Informationen unnötig offengelegt werden, steigt die Wahrscheinlichkeit eines erfolgreichen Angriffs.&amp;quot;&lt;br /&gt;
&lt;br /&gt;
Interne Informationen auszublenden ist eine Härtungsmaßnahme, deren Anzeige erhöht aber nicht zwangsläufig die Wahrscheinlichkeit eines erfolgreichen Angriffs. Ich würde diesen Satz weglassen.&lt;br /&gt;
&lt;br /&gt;
 ; 4. Fehlende Punkte&lt;br /&gt;
&lt;br /&gt;
* Ein Hinweis auf HTTP Header wäre hier sicher erwähnenswert.&lt;br /&gt;
* Weiterhin bzgl. der Anzeige von Traces und ein Verweis auf den Entsprechenden Baustein zur Fehlerbehandlung&lt;br /&gt;
&lt;br /&gt;
== G 5.WA14 Cross-Site Request Forgery (CSRF, XSRF) (Matthias) ==&lt;br /&gt;
&lt;br /&gt;
; 1. Erster Absatz: &amp;quot;Können Funktionen einer Web-Anwendung ohne weitere Überprüfung der Authentizität des HTTP-Requests (z.B. durch Tokens in versteckten Formularfeldern) genutzt werden&amp;quot;&lt;br /&gt;
&lt;br /&gt;
Statt &amp;quot;Funktionen&amp;quot; würde ich besser von &amp;quot;schreibenden Aktionen&amp;quot; sprechen, dann macht der Satz mehr Sinn.&lt;br /&gt;
&lt;br /&gt;
; 2. Dritter Absatz: &amp;quot;Im Gegensatz zu XSS (siehe ...￼ ) ist das Angriffsziel nicht die Information auf dem Client (z. B. in Cookies),&amp;quot;&lt;br /&gt;
&lt;br /&gt;
Dieser (Halb-)Satz macht keinen Sinn, auch weil es bei XSS nicht nur im Informationen auf dem Cient geht. Vorschlag: &amp;quot;ist das Angriffsziel nicht die Ausführung von Skriptcode, sondern von unbefugten, schreibenden Aktionen im Kontext des angemeldeten Benutzers.&amp;quot;&lt;br /&gt;
&lt;br /&gt;
; 3. Session Riding&lt;br /&gt;
&lt;br /&gt;
Session Riding ist quasi nur ein anderer Begriff für CSRF. Die einzige Form von CSRF die mir bekannt ist, sind Angriffe mit Standard-Passwörtern auf HTTP-Basic-Auth geschützten Ressourcen.&lt;br /&gt;
&lt;br /&gt;
Im Grunde ist Session Riding aber nur ein Synonym für CSRF. Der Absatz ist daher auch nur eine Wiederholung der obigen Beschreibung.&lt;br /&gt;
&lt;br /&gt;
; 4. Zum Beispiel: &amp;quot;Durch einen präparierten Link auf einer Webseite wird die Änderung des Zugangspasswortes des Routers eingeleitet.&amp;quot;&lt;br /&gt;
&lt;br /&gt;
Etwas ungüngstig ausgedrückt. Besser wäre: &amp;quot;wird eine Anfrage zur Änderung des Zugangspasswortes an den Router gesendet. Hierbei sendet der Browser automatisch den Session Cookie mit, worüber die Webanwendung die Authentizität der Anfrage verifiziert und die Änderung durchführt.&amp;quot;&lt;br /&gt;
&lt;br /&gt;
== G 5.WA18 Clickjacking (Matthias) ==&lt;br /&gt;
&lt;br /&gt;
Hier stellt sich mir nur die allgemeine Frage, ob Clickjacking, bzw. der Schutz davor tatsächlich einem Grundschutz zuzurechnen ist. Persönlich würde ich dies nicht tun.&lt;br /&gt;
&lt;br /&gt;
== M 2.WA02 Dokumentation der Architektur von Web-Anwendungen (Matthias) ==&lt;br /&gt;
&lt;br /&gt;
; Verantwortlich für die Umsetzung&lt;br /&gt;
Hier wäre auch die Nennung des &amp;quot;Architekten&amp;quot; sinnvoll&lt;br /&gt;
 &lt;br /&gt;
; Fehlende Bestandteile der Dokumentation:&lt;br /&gt;
* Schutzbedarf des Systems sowie der verarbeiteten Daten&lt;br /&gt;
* Schützenswerte Daten und Funktionen (Assets)&lt;br /&gt;
* Betriebliche Anforderungen an die Sicherheit bzw. eingesetzte Plattform&lt;br /&gt;
* Dokumentierte Konfigurationseinstellungen &lt;br /&gt;
* BIA (RTO, RPO)&lt;br /&gt;
* Schnittstellen&lt;br /&gt;
* Trust Boundaries&lt;br /&gt;
* Akteure (bzw. Trust Level)&lt;br /&gt;
* Sicherheitsannahmen&lt;br /&gt;
* Geltende Compliance-Anforderungen (BDSG, PCI DSS, etc.)&lt;br /&gt;
&lt;br /&gt;
; Benutzermanagement&lt;br /&gt;
&lt;br /&gt;
Wenn damit das Identity Management gemeint ist, gehört das Dokumentiert, ist aber keine Sicherheitsfunktion. Oder ist hiermit das Rollen- und Berechtigungskonzept gemeint? Grenzt sich aus meiner Sicht schwer mit dem Thema Authentisierung ab. &lt;br /&gt;
&lt;br /&gt;
; Prüffragen&lt;br /&gt;
&lt;br /&gt;
Hier fehlt etwas in Bezug auf Sicherheitsanforderungen. Beispiel: &amp;quot;Werden Sicherheitsanforderungen an den Betrieb während der Entwicklung abgestimmt und dokumentiert&amp;quot;&lt;br /&gt;
&lt;br /&gt;
== M 2.WA12 Entwicklung und Erweiterung von Anwendungen (Markus) ==&lt;br /&gt;
; &amp;quot;Es sollte darauf geachtet werden, dass Sicherheitsanforderungen&lt;br /&gt;
vollständig durch Sicherheitsmechanismen erfüllt und zur Erstellung von&lt;br /&gt;
Testfällen festgehalten werden.&amp;quot; --&amp;gt; Bessere Formulierung würde aussagen, dass die Sicherheitsanforderungen durch Testfälle verifiziert werden.&lt;br /&gt;
&amp;quot;(z. B. durch Kommentare im&lt;br /&gt;
Quelltext). Somit ist der Quelltext zu einem&amp;quot; --&amp;gt; Das ist kein empfehlenswerter Programmierstiel! Raus mit diesem Kommentar&lt;br /&gt;
;&amp;quot;Zum Schutz vor dem Verlust bereits entwickelter und verworfener&lt;br /&gt;
Lösungen sowie zu Dokumentationszwecken sollte die Historie der&lt;br /&gt;
Änderungen festgehalten werden (z. B. durch ein Revisionssystem).&amp;quot; --&amp;gt; Auch diesen Absatz können wir streichen - Kein professioneller Programmierer arbeitet ohne Versionierugssystem.&lt;br /&gt;
;&amp;quot;Bei Web-Anwendung sollten die Webseiten auf Konformität zu dem&lt;br /&gt;
verwendeten Standard (z. B. HTML-Standard) getestet werden. Dadurch&lt;br /&gt;
können unvorgesehene Seiteneffekte aufgrund einer Fehlinterpretation&lt;br /&gt;
seitens der Browser vermieden werden.&amp;quot; --&amp;gt; Könnte man noch um &amp;quot;Die Software ist in möglichst vielen Browsern zu testen&amp;quot; erweitern.&lt;br /&gt;
;Generell geht der Autor leider nicht auf die Rollen &amp;amp; Rechte Verteilung ein. Mir fehlt der Hinweis, das es eine personelle Trennung zwischen Entwicklung, Test und Betrieb geben muss.&lt;br /&gt;
;Zum Thema Wartung / Betrieb --&amp;gt; Hier wird keine Aussage getroffen bezüglich Log_Files. Dieses Thema kann kritische Auswirkungen haben, Bsp.: logging ganzer HTTP-Requests im LogLevel=Debug.&lt;br /&gt;
; &amp;quot;Produktspezifische Sicherheitsfunkionalität&amp;quot; - Dieser Absatz ist gefährlich - der Angreifer ist nicht zur Verwendung dies Zielbrowsers gezwungen. Deshalb können Browser-spez. Sicherheitsfunktionen nur als Add-ON gewertet werden.&lt;br /&gt;
; &amp;quot;Festlegung der Entwicklungsumgebung&amp;quot; - Dieser Absatz geht nicht auf die zu verwendenden Testdaten ein. Der Hinweis, dass Live-Daten / Kundendaten nichts in Test- &amp;amp; Entwicklungsumgebungen zu suchen haben fehlt!!!&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== M 2.WA24 Web-Tracking (Matthias) ==&lt;br /&gt;
&lt;br /&gt;
; Letzter Absatz: &amp;quot;Falls eine Auswertung von Nutzerdaten, insbesondere personenbezogener Daten, .. &amp;quot;&lt;br /&gt;
&lt;br /&gt;
Hier sollte denke ich besser von personenbeziehbaren Daten gesprochen Werten. Dies betrifft etwa die Zuordnung von Surfverhalten zu einer bestimmten Person. Dies sollte stets nach den Prinzipien Datensparsamkeit und Datenvermeidung, Erforderlichkeit, sowie Zweckbindung erfolgen. Ist Webtracking nicht personenbeziehbar ist dies kein Thema für den Datenschutz.&lt;br /&gt;
&lt;br /&gt;
== M 4.WA04 Authentisierung bei Web- Anwendungen (Matthias) ==&lt;br /&gt;
&lt;br /&gt;
; Vermischung von Authentisierung und Session Management &lt;br /&gt;
&lt;br /&gt;
Bei diesem Baustein findet eine ziemlich große Vermischung von Anforderung an die Authentisierung und das erst in &amp;quot;M 4.WA06 Session-Management bei Web- Anwendungen&amp;quot; behandelte Session Management statt (Beispiel: &amp;quot;Remember-Me-Funktion&amp;quot;). Beide Themen sollten sinnvollerweise getrennt voneinander zu betrachten und aufeinander zu beziehen.&lt;br /&gt;
&lt;br /&gt;
; Verwendung von Frameworks&lt;br /&gt;
&lt;br /&gt;
Die Anforderung ist schon ein wenig eingeschränkt. Besser passt hier denke ich die &amp;quot;Abbildung der Authentisierung über Standardkomponenten (Bibliotheken oder Frameworks)&amp;quot;. &lt;br /&gt;
&lt;br /&gt;
; Remember-Me-Funktion&lt;br /&gt;
&lt;br /&gt;
Siehe oben, gehört zum Session Management. Das ließt sich im übrigen so, als ob eine Webanwendung Credentials auf dem Client abhängt. &lt;br /&gt;
&lt;br /&gt;
; Grenzwerte für gescheiterte Anmeldeversuche&lt;br /&gt;
&lt;br /&gt;
Diese Empfehlung ist allgemein falsch, da sie sehr von der betrachteten Anwendung abhängt. Besser wäre hier allgemein von Mechanismen zur Verhinderung von automatisierten Angriffen zu sprechen (Anti-Automatisierung). &lt;br /&gt;
&lt;br /&gt;
Etwa umsetzbar durch&lt;br /&gt;
* Sperrung nach x Anmeldeversuchen&lt;br /&gt;
* Throttling&lt;br /&gt;
* Captchas&lt;br /&gt;
* Sicherheitsfragen&lt;br /&gt;
&lt;br /&gt;
Das allgemeine Sperren kann leicht für das gezielte Aussperren von Benutzern (User Lockout) verwendet werden. Was etwa bei Trading-Anwendungen nicht funktioniert.&lt;br /&gt;
&lt;br /&gt;
; Automatisiertes Zurücksetzen von Authentisierungsdaten&lt;br /&gt;
&lt;br /&gt;
Würde ich besser als &amp;quot;Passwort-Reset&amp;quot; bezeichnen.&lt;br /&gt;
&lt;br /&gt;
Weiterhin fehlt hier der Hinweis, dass statt ein automatisiertes Zurücksetzen, ein Mechanismus zu empfehlen ist, bei dem über ein hinterlegtes Sicherheitsmerkmal (Handy-Nummer oder E-Mail-Adresse) vom Benutzer zunächst eine Verifikation durchgeführt wird. Beispielsweise durch einen erhaltenen Link. Erst dann darf eine Änderung des Passwortes durch den Benutzer erfolgen.&lt;br /&gt;
&lt;br /&gt;
; Registrierung nicht behandelt&lt;br /&gt;
&lt;br /&gt;
Es existiert hier kein Punkt, der die sichere Implementierung von Benutzerregistrierungen behandelt.&lt;br /&gt;
&lt;br /&gt;
; Verweis auf Externalisierung fehlt.&lt;br /&gt;
&lt;br /&gt;
Statt die Authentisierung selbst durchzuführen kann eine Anwendung hierzu auf eine externe Komponente (Beispiel: SiteMinder oder Kerberos) zurückgreifen.&lt;br /&gt;
&lt;br /&gt;
; Verweis auf Behandlung von Credentials fehlt&lt;br /&gt;
&lt;br /&gt;
Auch wenn das  in &amp;quot;M 4.WA15 Schutz vertraulicher Daten bei Web- Anwendungen&amp;quot; ausführlich behandelt wird, sollte in diesem Baustein bereits auf den angemessenen Schutz von Authentisierungsdaten bei Übertragung und Speicherung hingewiesen werden.&lt;br /&gt;
&lt;br /&gt;
== M 4.WA05Umfassende Ein- und Ausgabevalidierung bei Web-Anwedungen (Markus) ==&lt;br /&gt;
; &amp;quot;Ablehnung der Daten im&lt;br /&gt;
Fehlerfall&amp;quot; --&amp;gt; Hier könnte man noch auf Tar-Pits eingehen - nur ein Vorschlag.&lt;br /&gt;
&lt;br /&gt;
== M 4.WA06Session-Management bei Web-Anwendungen (Markus) ==&lt;br /&gt;
; &amp;quot;Übertragung der SessionID mittels GETRequest&amp;quot; --&amp;gt; Hier fehlt der Hinweis, dass die Lebensdauer dieser SessionIds kurz/kürzer sein muss, als im Falle der Speicherung im Cookie.&lt;br /&gt;
&lt;br /&gt;
([[User:Mrohr|Matthias]]) Die Anmerkung verstehe ich ehrlich gesagt ueberhaupt nicht, zumal das SM haeufig transparent zwischen Cookies und URL Rewriting wechselt. Wozu soll das gut sein? Wie soll das geschehen? Idealerweise sollte die Session ID niemals in die URL geschrieben werden, das sollte eigentlich genuegen.&lt;br /&gt;
&lt;br /&gt;
; &amp;quot;Verschlüsselte Übertragung von SessionIDs&amp;quot; --&amp;gt; Hier fehlt der Hinweis auf den Beast-Exploit. TLS Version &amp;gt; 1.0 verwenden!&lt;br /&gt;
&lt;br /&gt;
([[User:Mrohr|Matthias]]) Solange hier nicht auf eine explizite TLS Version eingegangen wird, sollte meiner grossen Ueberzeugung nach hier auch auf keine Exploits etc. eingagen werden, das gehoert an andere Stelle.&lt;br /&gt;
&lt;br /&gt;
; ([[User:Mrohr|Matthias]]) Weiterhin:&lt;br /&gt;
&lt;br /&gt;
 Es dürfen keine extern bekannten oder erratbaren Daten (z. B. IP-Adresse, Uhrzeit) in die Berechnung der SessionID einfließen.&lt;br /&gt;
&lt;br /&gt;
Die Aussage finde ich etwas problematisch, wichtiger ist, dass die Entropie ausreichend hoch ist. Haeufig werden etwa IPs von Load Balancern in die Session ID hineingeschrieben.&lt;br /&gt;
&lt;br /&gt;
 - Domain (z. B. webapp.domain.tld),&lt;br /&gt;
 - Path (z. B. /webapp/),&lt;br /&gt;
 - Secure und&lt;br /&gt;
 - HttpOnly.Beschränkte Sitzungsdauer&lt;br /&gt;
&lt;br /&gt;
Das sieht so aus, als ob es empfehlenswert ist, das Domain-Tag zu verwenden, das ist es sicherlich nicht. Was macht hier der Hinweis &amp;quot;Beschraenke Sizuungsdauer&amp;quot;?&lt;br /&gt;
&lt;br /&gt;
== M 4.WA07Fehlerbehandlung durch Web-Anwendungen (Markus) ==&lt;br /&gt;
; Konsistenter / Inkonsistener Zustand einer Webanwendung und der daraus resultierende Datenverlust: Hier fehlen mir die Punkte: DOS, Priv.Escalation, CodeExecution.&lt;br /&gt;
; Vermeidung vertraulicher Informationen in Fehlermeldungen --&amp;gt; Fehlermeldungen sollten ebenfalls eine Systeminformationen preisgeben (Softwareversion, Patchlevel, etc.)&lt;br /&gt;
; Abbruch des Vorgangs nach Auftreten eines Fehlers --&amp;gt; TarPits scheinen dem Autor umbekannt zu sein :)&lt;br /&gt;
; &amp;quot;Werden Fehler möglichst von der gleichen Komponente behandelt, in der&lt;br /&gt;
der Fehler aufgetreten ist?&amp;quot; --&amp;gt; Das &amp;quot;möglichst&amp;quot; sollten wir streichen.&lt;br /&gt;
&lt;br /&gt;
== M 4.WA08Schutz vor automatisierter Nutzung von Web-Anwendungen (Markus) ==&lt;br /&gt;
; &amp;quot;Brute-Force-&lt;br /&gt;
Angriffe (z. B. Erraten von Zugangsdaten) und Enumeration-Angriffe (z. B.&lt;br /&gt;
automatisiertes Ermitteln von gültigen Login-Namen)&amp;quot; -- die Beispiele sind identisch - besser Beispiele suchen, z.b. URL-Enumeration&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== M 4.WA11Sichere Konfiguration von Web-Anwendungen (Markus) ==&lt;br /&gt;
; &amp;quot;Sicherer Umgang mit TLS/SSL&amp;quot; -- Hier fehlt der Hinweis, dass TLS-1.0 gebrochen ist&lt;br /&gt;
; &amp;quot;Zeichenkodierungskonfiguration&amp;quot; -- Ein Whitelisting abhängig von der Encodierung wäre ein weiterer Vorschlag&lt;br /&gt;
; &amp;quot;Restriktive Dateisystemberechtigungen&amp;quot; -- auch wenn es ein klassiker ist - der AS sollte ebenfalls mit von einem eingeschränkten Nutzer gestartet werden und nicht als root&lt;br /&gt;
; Administration Consolen:zur Ergänzen: Wenn diese nicht benötigit, sollten derartige Applikationen nicht deployed werden, unabhängig von möglichen Zugangsbeschränkungen.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== M 4.WA13Kontrolliertes Einbinden von Daten und Inhalten bei Web-Anwendungen (Markus) ==&lt;br /&gt;
; Datei-Upload: Bei einem Upload werden Dateien durchaus in TEMP-Verzeichnissen gesammelt und danach weiterverarbeitet. Diese TEMP-Verzeichnisse sind im Rahmen einer Sicherheitsanalyse zu betrachten -&amp;gt; Möglicher (unbefugter) Zugriff auf weitere Uploads&lt;br /&gt;
; Upload komprimierter Dateien / großer Dateien birgt die Gefahr von DOS Angriffen&lt;br /&gt;
; Upload von Dateien kann bei weiterem Parsing zu Speicherengpässen führen --&amp;gt; DOS-Angriffe auf Thread-Local etc.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== M 4.WA14Restriktive Herausgabe sicherheitsrelevanter Informationen bei Web-Anwendungen (Markus) ==&lt;br /&gt;
OK - Keine Anmerkungen von mir.&lt;br /&gt;
&lt;br /&gt;
== M 4.WA15Schutz vertraulicher Daten bei Web-Anwendungen (Markus) ==&lt;br /&gt;
; Sichere kryptographische Algorithmen:&lt;br /&gt;
 Hier fehlt mir eine Liste der aktuelle als sicher geltenden Verfahren.&lt;br /&gt;
; Schlüssel&lt;br /&gt;
 Das die Schlüssel bestimmten Formaten entsprechen müssen ist ok - aber das Schlüsselmanagement wird gar nicht besprochen?&lt;br /&gt;
; Schutz der Daten im Browsercache&lt;br /&gt;
 Skripte und Browserplugins können ebenfalls auf den Browsercache zugreifen - diese werden hier nicht erwähnt.&lt;br /&gt;
; Maskierung von Passwörtern &lt;br /&gt;
 Dies schützt bei der Eingabe nur vor ShoulderSurfing nicht vor Skripten oder Plugins die diese an andere Server posten.&lt;br /&gt;
; Sicherung von Zugangsdaten:&lt;br /&gt;
 Zugangsdaten in einer Datei abzulegen - wenn auch ausserhalb des WebRoots ist keine gute Idee.&lt;br /&gt;
; Schutz von Quelltexten:&lt;br /&gt;
 Hier würde ich property files mit aufnehmen. der hinweis auf web-inf/classes fehlt - warum?&lt;br /&gt;
 Bei include-befehlen sind die pfadangaben zu überdenken.&lt;br /&gt;
&lt;br /&gt;
== M 4.WA16Zugriffskontrolle bei Web-Anwendungen (Markus) ==&lt;br /&gt;
; Zugriffskontrolle via Frameworks:&lt;br /&gt;
 Dieser Punkt (Frameworks) wird nur in einem Satz erwähnt. Es werden keine Bespiele gegeben - Das ist zu wenig.&lt;br /&gt;
 Es müssen alle Zugriffe geschützt werden. Eine Protokollierung aller Zugriffe mit den nötigen Informationen ist ebenfalls empfehlenswert.&lt;br /&gt;
; Datei Upload:&lt;br /&gt;
 Die Gefahr eines DOS wird hier nicht erwähnt.&lt;br /&gt;
&lt;br /&gt;
== M 4.WA19Verhinderung von Cross-Site Request Forgery (CSRF, XSRF) (Markus) ==&lt;br /&gt;
; Verantwortliche: &lt;br /&gt;
 Entwickler und Admins!&lt;br /&gt;
([[User:Mrohr|Matthias]]) Korrekt, wobei auch in der Reihenfolge&lt;br /&gt;
&lt;br /&gt;
; Anti-CSRF-Token in hidden fields:&lt;br /&gt;
 Das ist keine gute Idee. Ich würde das streichen!&lt;br /&gt;
&lt;br /&gt;
([[User:Mrohr|Matthias]]) Watt? Anti-CSRF-Tokens in Hidden Fields sind die Standard-Massnahme. Wie denn sonst? Bitte nicht streichen!!! &lt;br /&gt;
&lt;br /&gt;
([[User:Mrohr|Matthias]]) Die Technik bei der die Session ID als Anti-CSRF-Token verwendet wird, wird als Double-Cookie Submit bezeichnet, das sollte hier referenziert werden.&lt;br /&gt;
&lt;br /&gt;
; Umgehung von Schutzmechanismen:&lt;br /&gt;
 Man in the middle hat keinen direkten Bezug zu CSRF! Das würde ich streichen.&lt;br /&gt;
([[User:Mrohr|Matthias]]) Der Hinweis ist korrekt. Wovon der Autor hier spricht ist Session Replay nicht CSRF.&lt;br /&gt;
&lt;br /&gt;
; Frameworks:&lt;br /&gt;
 Gute Idee - aber es gibt auch Features in den ApplicationServern die CSRF unterbinden - warum wird das nicht besprochen?&lt;br /&gt;
&lt;br /&gt;
([[User:Mrohr|Matthias]]) Sehe ich persoenlich nicht so, da CSRF primaer ein Applikations-Fehler ist, und auch in der Applikation und nicht im Environment (AppServer) geloest werden sollte. Auch wenn das manchmal ggf. die einzig machbare Loesung darstellt.&lt;br /&gt;
&lt;br /&gt;
([[User:Mrohr|Matthias]]) Was generell fehlt, ist ein Hinweis darauf, dass schreibende Requests generell per HTTP Post abgewickelt werden sollten, da HTTP Get keine &amp;quot;Safe Method&amp;quot;  (siehe HTTP 1.1, RFC 2616) ist.&lt;br /&gt;
&lt;br /&gt;
== M 4.WA20Sicherer Entwurf der Logik von Web-Anwendungen (Markus) ==&lt;br /&gt;
; Rollbacks:&lt;br /&gt;
 Tritt ein Fehler auf muss die Applikation einen konsistenten Datenstand zurück lassen. Das wird hier nicht erwähnt.&lt;br /&gt;
; RaceConditions:&lt;br /&gt;
 Fehler in der Geschäftslogik können auch durch zwei gleichzeitige Sessions auf einer Webapplikation auftreten - das wird hier nicht besprochen.&lt;br /&gt;
&lt;br /&gt;
== M 4.WA22Verhinderung der Blockade von Ressourcen (DoS) bei Web-Anwendungen (Markus) ==&lt;br /&gt;
; Datenspeicher:&lt;br /&gt;
 Neben dem Datenspeicher sollte auch der RAM-Verbrauch pro Thread der Applikation limitiert werden.&lt;br /&gt;
; Voraggregation von Daten / Caching&lt;br /&gt;
 Dieser Punkt fehlt: Stark ressourcen belastende Anfragen können auch in Lastarmen Zeiten vorberechnet werden.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== M 4.WA25Verhinderung von Clickjacking (Markus) ==&lt;br /&gt;
Ok - das passt soweit.&lt;br /&gt;
&lt;br /&gt;
== M 5.WA21Sichere Anbindung von Hintergrundsystemen an Web-Anwendungen (Markus) ==&lt;br /&gt;
; Verantwortliche:&lt;br /&gt;
 Architekten fehlen. Entwickler müssen die Views umsetzen und die Datasource entsprechend einbinden - die fehlen hier ebenfalls.&lt;br /&gt;
; DirectorySystem Beispiel:&lt;br /&gt;
 Das DirectorySystem wird in dem angegeben Beispiel zum Single Point of Failure - das wird verschwiegen.&lt;br /&gt;
; Firewalls:&lt;br /&gt;
 Das sind fachlich-blinde Systeme. Was ist mit WAFs / IDS / IPS etc.?&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== M 5.WA23Systemarchitektur einer Web-Anwendung (Markus) ==&lt;br /&gt;
; Verantwortliche:&lt;br /&gt;
Auch hier fehlend wieder die Architekten. &lt;br /&gt;
; Virtualisierung:&lt;br /&gt;
Virtualisierung bietet weitere Angriffsvektoren (z.B.: Hypervisor) die eine &amp;quot;Blech&amp;quot;Farm nicht bietet.&lt;/div&gt;</summary>
		<author><name>Mrohr</name></author>	</entry>

	<entry>
		<id>https://wiki.owasp.org/index.php?title=Talk:OWASP_Review_BSI_IT-Grundschutz_Baustein_Webanwendungen&amp;diff=130105</id>
		<title>Talk:OWASP Review BSI IT-Grundschutz Baustein Webanwendungen</title>
		<link rel="alternate" type="text/html" href="https://wiki.owasp.org/index.php?title=Talk:OWASP_Review_BSI_IT-Grundschutz_Baustein_Webanwendungen&amp;diff=130105"/>
				<updated>2012-05-18T13:17:57Z</updated>
		
		<summary type="html">&lt;p&gt;Mrohr: /* M 4.WA06Session-Management bei Web-Anwendungen (Markus) */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Since it's about a review of a document in German, all the discussions will be done in German :-)&lt;br /&gt;
&lt;br /&gt;
Diskussionen rund um den Review des &amp;quot;IT-Grundschutzbausteins Webanwendungen&amp;quot; finden hier statt, sinnvollerweise auf Deutsch :-)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Vorschlag für Kriterien, die an unser Review angelegt werden sollten (.kai) ==&lt;br /&gt;
&lt;br /&gt;
* Der Baustein soll alle wichtigen Themen der Entwicklung sicherer&lt;br /&gt;
Webanwendungen enthalten.&lt;br /&gt;
&lt;br /&gt;
* Der Baustein soll die verschiedenen Phasen der Software-Entwicklung&lt;br /&gt;
vollständig abdecken.&lt;br /&gt;
&lt;br /&gt;
* Der Baustein soll zwischen verbindlichen, prüfbaren Vorgaben und&lt;br /&gt;
unverbindlichen Empfehlungen sprachlich sauber unterscheiden (hier&lt;br /&gt;
spielt mein Auditorenblick eine Rolle). Vor allem soll der Baustein&lt;br /&gt;
verbindliche Anforderungen auch tatsächlich stellen. Alle&lt;br /&gt;
verbindlichen Anforderungen müssen unabhängig von der jeweiligen&lt;br /&gt;
Umgebung auch umsetzbar sein, d.h. sie müssen entsprechend generisch&lt;br /&gt;
sein.&lt;br /&gt;
&lt;br /&gt;
* Die Maßnahmen sollen nur in (begründbaren) Ausnahmen zu Empfehlungen&lt;br /&gt;
von OWASP im Widerspruch stehen.&lt;br /&gt;
&lt;br /&gt;
* Die Maßnahmen sollen verständlich und anwendbar sein.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== &amp;quot;Hilfsmittel&amp;quot; (Markus) ==&lt;br /&gt;
Ich würde das Script zur Vermeidung von Clickjacking wrappen und nicht als losen Skript-block in den Text einbinden - einfach schlechter Programmierstiel diese losen Blöcke.&lt;br /&gt;
Der Zugriff auf das Body-Element mit byTagName-Array[0] ist auch nicht wirklich gut. Ich halte Zugriffe über das DOM (klassisch), bei ID bzw. XPATH für besser. &lt;br /&gt;
&lt;br /&gt;
SQL-Injection Characters:&lt;br /&gt;
die Pipe fehlt hier zur Textkonatenierung&lt;br /&gt;
+ / - haben auch eine Bedeutung bei JOINs.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== &amp;quot;Goldene Regeln&amp;quot; (Matthias) ==&lt;br /&gt;
&lt;br /&gt;
Hier meine Anmerkungen zu diesem Dokument:&lt;br /&gt;
&lt;br /&gt;
; 1. Für mich fehlende Punkte&lt;br /&gt;
* Korrektur der Ursache (Root Cause) von Schwachstellen statt  Verhinderung deren Ausnutzung&lt;br /&gt;
* Bezug auf Minimierung der Angriffsfläche und Least-Privilege-Prinzip&lt;br /&gt;
* Bezug auf Defense-in-Depth-Prinzip&lt;br /&gt;
* Verwendung von getesteten Security APIs (z.B. OWASP ESAPI) statt selbstentwickelter Funktionen&lt;br /&gt;
* Bezug auf Externalisierung von Sicherheitsfunktionen, sowie deklerative vor programmatischer Sicherheit.&lt;br /&gt;
&lt;br /&gt;
; 2. Begriff &amp;quot;Web-Anwendung&amp;quot;&lt;br /&gt;
Würde ich generell durch &amp;quot;Webanwendung&amp;quot; ersetzen.&lt;br /&gt;
&lt;br /&gt;
; 3. Einleitung (&amp;quot;Web-Anwendungen stellen Funktionalität zur Verfügung, ...&amp;quot;)&lt;br /&gt;
&lt;br /&gt;
Wozu dient dieser Satz?&lt;br /&gt;
&lt;br /&gt;
; 4. &amp;quot;Die Architektur der Web-Anwendung ist im Sicherheitskonzept zu  dokumentieren.....&amp;quot; &lt;br /&gt;
&lt;br /&gt;
Ich fände es sinnvoller, wenn hier von der &amp;quot;Sicherheitsarchitektur&amp;quot; gesprochen wird, welche etwa neben den sicherheitsrelevanten Datenflüssen, sensible Komponenten, Entry Points, Akteure architekturelle Security Controls wie Authentisierung, Kryptographie und natürlich die Trust Boundaries beinhaltet.&lt;br /&gt;
&lt;br /&gt;
; 5. &amp;quot;Bei Web-Anwendungen handelt es sich häufig um spezielle Eigenentwicklungen....&amp;quot;&lt;br /&gt;
&lt;br /&gt;
Erstens würde ich hier den geläufigen Begriff &amp;quot;Individualsoftware&amp;quot; verwenden. Zweitens würde ich statt bestimmte SDLC-Phasen vorzugeben (die Begriffe &amp;quot;Softwareverteilung&amp;quot; und &amp;quot;Integration&amp;quot; sind mir bei Webanwendungen bisher noch nicht so häufig untergekommen), besser von der Notwendigkeit sprechen, Sicherheit in allen Entwicklungsphasen zu berücksichtigen, also eines SDLs.&lt;br /&gt;
&lt;br /&gt;
; 6. &amp;quot;Alle Ein- und Ausgaben der Web-Anwendung müssen in eine normalisierte Form überführt werden....&amp;quot;&lt;br /&gt;
&lt;br /&gt;
Normalisierung ist für mich nicht gleich Kanonsierung, auch wenn beide Begriffe häufig als synonym verwendet werden.  Der Unterschied wird in der [http://owasp-esapi-java.googlecode.com/svn/trunk_doc/2.0-rc4/org/owasp/esapi/Encoder.html API-Beschreibung der ESAPI] erklärt. Die Normalisierungs-Funktion ist allerdings schon vor einiger Zeit aus der ESAPI [https://lists.owasp.org/pipermail/esapi-dev/2010-January/000266.html rausgeflogen]. Die generelle Kanonisierung von Ausgaben halte ich dazu für nicht sinnvoll.&lt;br /&gt;
&lt;br /&gt;
Zweitens, finde ich den weiteren Text zwar grundsätzlich formal korrekt, aber so allgemein, dass dieser glaube ich niemandem so richtig etwas bringt.  &lt;br /&gt;
&lt;br /&gt;
Besser fände ich hier Ein- von Ausgabevalidierung grundsätzlich voneinander abzugrenzen. Etwa was ich per Eingabevalidierung (Längenprüfung, Casting, etc. per Whitelisting) und was mit Ausgebavalidierung (Enkodierung, Escaping, Parametrisierung) machen muss und kann.&lt;br /&gt;
&lt;br /&gt;
Eingabedaten können technisch zudem auch Werte eingelesener Property-Dateien sein. Muss ich die auch validieren? Ist das dann noch Grundschutz? &lt;br /&gt;
&lt;br /&gt;
; 7. &amp;quot;Für den Zugriff auf sensitive Funktionen oder Informationen muss die Web-Anwendung eine wirksame Authentisierung und Sitzungsverwaltung unterstützen. Die Eigenschaften der Sitzungs-ID müssen so gewählt werden, dass die Sitzung ausreichend geschützt ist. ....&amp;quot;&lt;br /&gt;
&lt;br /&gt;
Besser fände ich &amp;quot;eine Authentisierung, die über eine dem Schutzbedarf der Anwendung angemessene Stärke verfügt.&amp;quot; &lt;br /&gt;
&lt;br /&gt;
Eigentlich geht es doch mehr um den Schutz der Sitzungs-ID, da diese gewöhnlich im Verlauf einer Sitzung den Client authentisiert. Oder den Schutz des Zugriffs auf eine Sitzung. &lt;br /&gt;
&lt;br /&gt;
Zudem fehlt hier meiner Meinung nach der Hinweis auf die bevorzugte Verwendung getesteter Standardkomponenten.&lt;br /&gt;
&lt;br /&gt;
; 8. &amp;quot;Die Web-Anwendung sollte die zu übermittelnden Daten schützen.&amp;quot;&lt;br /&gt;
&lt;br /&gt;
Dies würde ich nur auf sensible Daten beziehen. Zusätzlich zu HTTPS würde ich hier schreiben, dass sensible Daten generell nicht in der URL übertragen werden dürfen.&lt;br /&gt;
&lt;br /&gt;
; 9. &amp;quot;Die Preisgabe interner Informationen (z.B. Kommentare, Fehlermeldungen)&amp;quot;&lt;br /&gt;
&lt;br /&gt;
Hier würde ich eher schreiben &amp;quot;(IN Kommentaren, Fehlermeldungen, HTTP Headern, etc.)&amp;quot;&lt;br /&gt;
&lt;br /&gt;
; 10. &amp;quot;Fehler müssen so behandelt werden, ... müssen Fehler bei der Autorisierung zu einer Verweigerung beim Zugriff auf die angeforderte Ressource führen.&amp;quot;&lt;br /&gt;
&lt;br /&gt;
Sprachlich: &amp;quot;Die Webanwendung muss sich stets in einem sicheren Zustand befinden. Beispielsweise müssen Fehler bei der Autorisierung zu einer Verweigerung des Zugriffs führen (Default-Deny-Strategie).&amp;quot;&lt;br /&gt;
&lt;br /&gt;
; 11. &amp;quot;Die Logging-Funktionen der Web-Anwendung müssen aufgetretene Ereignisse derart protokollieren, dass sicherheitskritische Vorfälle nachvollzogen werden können.&amp;quot;&lt;br /&gt;
&lt;br /&gt;
Hier würde hier eher von &amp;quot;allen sicherheitsrelevanten Ereignissen&amp;quot; sprechen.&lt;br /&gt;
&lt;br /&gt;
Weiterhin sollten insbesondere beim Logging der Datenschutz berücksichtigt werden, personenbezogene Daten also nach Möglichkeit nicht oder nur anonymisiert in technischen Logdateien protokolliert werden.&lt;br /&gt;
&lt;br /&gt;
; 12. &amp;quot;Alle Sicherheitsmechanismen (z.B. Authentisierung und Zugriffskontrolle) sind serverseitig zu implementieren und können nicht durch clientseitige Mechanismen ersetzt werden.&amp;quot;&lt;br /&gt;
&lt;br /&gt;
Die Aussage ist so nicht korrekt. Darüber hatten wir bereits bei der ASVS mehrfach diskutiert. &lt;br /&gt;
&lt;br /&gt;
Überall dort wo der Client angegriffen wird, also etwa bei RIAs (Stichwort DOM-Based XSS) müssen wir Security Controls clientseitig implementieren. Es gibt mittlerweile deshalb auch eine Portierung der ESAPI auf Javascript. Überall dort wo der Server oder Hintegrundsysteme angegriffen werden, ist die Aussage aber natürlich zutreffend.&lt;br /&gt;
&lt;br /&gt;
== &amp;quot;Gefährdungen&amp;quot; (Markus, Dennis, .... &amp;lt;Dein Name&amp;gt;) ==&lt;br /&gt;
; Generell:&lt;br /&gt;
Reference auf RFCs fehlen.&lt;br /&gt;
&lt;br /&gt;
==B.5.XX Web-Anwendungen ==&lt;br /&gt;
; 1. Erster Absatz - Letzter Satz: --Wieso werden hier nur HTML/XML Doks und Oberflächen angesprochen? Was ist der Unterschied zwischen einem HTML-Dok und einer Oberfläche? Was ist mit  Flash, etc.? Was ist mit WebSockets?&lt;br /&gt;
; 2. Stichpunkt &amp;quot;Protokollierung&amp;quot;: Sicherheits relevant ist ein sehr dehnbarer Begriff - Eine bessere Formulierung könnte sein: Zur Rekonstruktion von Nutzerhandlungen nötige Ereignisse (positve &amp;amp; negative) müssen protokolliert werden . . . &lt;br /&gt;
; 3. Absatz: &amp;quot;Abgrenzung des Bausteins&amp;quot;: &amp;quot;Die spez. Sicherheitsanforderungen an Web-Services werden in diesem Baustein nicht betrachtet&amp;quot; --&amp;gt; Wie so nicht? Was ist das Backend von einer Rest / AJAX-basierenden Webanwendung denn anderes als ein Web-Service? Diesen Satz würde ich entfernen.&lt;br /&gt;
; 4.Vorsätzliche Handlungen -&amp;gt; Web-Spoofing (G.5.87) -- Missverständliche Bezeichnung / Nomenklatur&lt;br /&gt;
; 5. Seite 4 : erste Zeile &amp;quot;Umsetzung&amp;quot;: &amp;quot;dafür umzusetztende Komponenten müssen die Webanwendung schützen...&amp;quot; - Hier fehlt mir der Hinweis, dass dieser Schutz verifiziert werden muss.&lt;br /&gt;
; 6 Seite 5: &amp;quot;Umsetzung&amp;quot; - Wir haben CSRF, D(D)os und SQL-Injection aber wo ist XSS?&lt;br /&gt;
; 7 Seite 7: &amp;quot;Die Sicherheitsfunktion wird ausschließlich clientseitig...&amp;quot; --&amp;gt; Warum muss der Angreifer überhaupt einen Browser umkonfigurieren? Was ist mit Proxies, Scripts, etc.? Ich würde das reduzieren darauf, dass rein Webbrowser-basierende Schutzfunktionen einfach umgangen werden können.&lt;br /&gt;
; 8 Seite 8: Die angesprochenen Punkte hinterlassen den Eindruck nicht vollständig zu sein: Mir fehlen Punkte wie &amp;quot;Outsourcing&amp;quot;, &amp;quot;KnowHow der Entwickler&amp;quot;, Tooling, Framework-Auswahl, etc.&lt;br /&gt;
; 9 Seite 9: Eigentlich möchte der Autor hier über Datenschutz sprechen. Abgesehen von den letzten drei Zeilen geht es aber nur um &amp;quot;User tracking&amp;quot; - Wo ist der Rest der Datenschutzproblematik? Warum der Fokuss auf Tracking? Mir ist das zu einseitig.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
tbd.&lt;br /&gt;
&lt;br /&gt;
; Wortwahl:&lt;br /&gt;
Ich stosse innerhalb der Texte immer wieder an die Worten '''Hintergrundsystem''' und '''Sicherheitskontext'''.&lt;br /&gt;
'''Hintergrundsystem:''' besseres Synonym?&lt;br /&gt;
'''Sicherheitskontext:''' nur weil es in den Texten um Sicherheit geht muss nicht an jeder Stelle immer wieder das Wort _Sicherheits_kontext eingebaut werden.&lt;br /&gt;
Bsp: &amp;quot;Erlangt ein Angreifer Kenntnis von einer solchen gültigen, aber nicht mehr genutzten SessionID, so kann er die Web-Anwendung im Sicherheitskontext des nicht abgemeldeten Benutzers weiter verwenden.&amp;quot; (G 5,WA12 Unzureichendes Session-Management von Web-Anwendungen)&lt;br /&gt;
Verbesserungsansansatz: ... so kann er die Web-Anwendung anstelle des eigentlichen Besitzers weiterhin verwenden.&lt;br /&gt;
&lt;br /&gt;
== &amp;quot;G 2.WA01 Mangelhafte Auswahl oder Konzeption von Web-Anwendungen&amp;quot; (Matthias) ==&lt;br /&gt;
&lt;br /&gt;
Nachdem ich mir diese Gefährdung durchgelesen hatte, fehlten mir ehrlich gesagt etwas die Worte. Nicht nur, dass hier fast jeder zweite Satz entweder falsch ist bzw. massive Fehler enthält oder ich diesen schlicht nicht verstehe, ist der ganze Text sprachlich wirklich enorm verbesserungsfähig. &lt;br /&gt;
&lt;br /&gt;
Na gut, ich konzentriere mich mal auf die fachlichen Punkte:&lt;br /&gt;
&lt;br /&gt;
; 1. Security Controls&lt;br /&gt;
Werden mal mit &amp;quot;Schutzmechanismen&amp;quot;, mal mit &amp;quot;Sicherheitskomponenten&amp;quot; und dann wieder als &amp;quot;Sicherheitsfunktionen&amp;quot; bezeichnet. Hier macht eine einheitliche Benennung sicherlich Sinn und ist weniger verwirrend.&lt;br /&gt;
&lt;br /&gt;
; 2. &amp;quot;Eine Web-Anwendung ist in der Regel ein verteiltes, komplexes System bestehend aus unterschiedlichen Komponenten (z. B. Webserver, Applikationsserver, Hintergrundsysteme)&amp;quot;&lt;br /&gt;
&lt;br /&gt;
Eine Webanwendung besteht sicher nicht aus einem Webserver- oder anderer infrastruktureller Komponenten, sondern ist Software welches diese nutzt.&lt;br /&gt;
&lt;br /&gt;
; 3. &amp;quot;Bei individuell entwickelten Web-Anwendungen sind im Allgemeinen die Frameworks, Komponenten und Schnittstellen im Rahmen der Konzeption auszuwählen und deren Einbindung und Absicherung zu betrachten....Im Gegensatz dazu ist bei der Konzeption von Web-Anwendungen auf Basis von Standardsoftware insbesondere auf die Auswahl der Software und die Konfiguration der Teilkomponenten zu achten&amp;quot;&lt;br /&gt;
&lt;br /&gt;
Wir unterscheiden im Rahmen von Webanwendungen eigentlich Free or Opensource Software (FOSS bzw. FLOSS), Standardsoftware und Individualsoftware voneinander. Wir unterscheiden nicht Frameworks von Standardsoftware. Frameworks können Teil von Standardsoftware sein, wie etwa bei SharePoint, SAP, etc, oder aber FOSS, wie etwa Spring. Die ganzen Absätze machen für mich daher keinen Sinn.&lt;br /&gt;
&lt;br /&gt;
; 4. &amp;quot;Eine Sicherheitsfunktion (z. B. Authentisierung, Autorisierung) wird nicht an einer Stelle umgesetzt und verwendet, sondern ist mehrfach in der Web- Anwendung realisiert. Wird diese Sicherheitsfunktion an den verschiedenen Stellen unterschiedlich umgesetzt, führt dies zu einem uneinheitlichen Sicherheitsniveau.&amp;quot;&lt;br /&gt;
&lt;br /&gt;
Natürlich ist die mehrfache Verwendung bestimmter Security Controls, beispielsweise von Zugriffskontrollen (Complete-Mediation) oder Validierung (Robustheit) erstrebenswert. Was der Autor hier wahrscheinlich meinte, war die Notwendigkeit diese zu Kapseln bzw. zu Externalisieren. Das bezieht sich im übrigen nicht nur auf die Controls selbst, sondern auch auf ihre Parametrisierung (etwa. über Konfigdateien / XACML).&lt;br /&gt;
&lt;br /&gt;
Wichtiger wäre in diesem Zusammenhang zudem die fehlende Berücksichtigung bestimmter Security Controls.&lt;br /&gt;
&lt;br /&gt;
; 5. &amp;quot;Auswahl von Web-Anwendungen auf Basis von Standardsoftware&amp;quot;&lt;br /&gt;
Was will der Satz sagen? Ich wähle Standardsoftware aus, aber doch keine Webanwendungen. Oder heißt das, ich kaufe eine existierende Anwendung ein (Webanwendung!=Indivudualsoftware)? &lt;br /&gt;
&lt;br /&gt;
; 6. &amp;quot;Das ausgewählte Produkt verfügt nicht über die ausreichende Sicherheitsfunktionalität, ... Daher müssen die notwendigen Schutzmechanismen nachträglich hinzugefügt werden, wodurch zusätzliche Aufwände entstehen.&amp;quot;&lt;br /&gt;
Das ist etwas sehr positiv formuliert. Tatsächlich können fehlende Security Controls in zugekaufter Software (insb. Standardsoftware) in der Realität häufig gar nicht hinzugefügt werden oder nur perimetrisch (z.B. per WAF oder Access Gateway).&lt;br /&gt;
&lt;br /&gt;
; 7. &amp;quot;Die Hintergrundsysteme werden unzureichend abgesichert und dadurch ist die Datenbank der Web-Anwendung aus dem Internet erreichbar.&amp;quot;&lt;br /&gt;
Gehören fehlende Netzwerksegmentierung bzw. Firewallregeln wirklich in diesen Kontext? Das ist doch eigentlich Grundschutz der Infrastruktur, oder?&lt;br /&gt;
&lt;br /&gt;
; 8. &amp;quot;Aufgrund schwacher Parameter in der Konfiguration des Frameworks zum Session-Management werden unsichere SessionIDs erzeugt.&amp;quot;&lt;br /&gt;
Was sind &amp;quot;schwache&amp;quot; Parameter?&lt;br /&gt;
&lt;br /&gt;
Welches Framework erlaubt unsichere SessionIDs durch eine &amp;quot;schwache&amp;quot; Konfiguration zu erzeugen?&lt;br /&gt;
&lt;br /&gt;
; 9. &amp;quot;Wird die Konfiguration des Web-Browsers durch einen Angreifer manipuliert, können die clientseitig umgesetzten&amp;quot;&lt;br /&gt;
&lt;br /&gt;
Manipuliert ein Angreifer die Konfguration seines Webbroswers, wenn er einen MITM-Proxy konfiguriert?&lt;br /&gt;
&lt;br /&gt;
Wie bereits bei den &amp;quot;Goldenen Regeln&amp;quot; angemerkt, gilt auch hier, das manche Security Controls auch clientseitig umgesetzt werden dürfen (etwa. zur Verhinderung von Dom-Based XSS).&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== &amp;quot;G 5.WA10 Fehler in der Web-Anwendungslogik&amp;quot; (Dennis) ==&lt;br /&gt;
; 1. &amp;quot;Damit kann aufgrund der Prüfreihenfolge ein hoher Ressourcenverbrauch provoziert werden, der für Denial-of-Service-Angriffe ausgenutzt werden kann.&amp;quot;&lt;br /&gt;
Meiner Meinung nach passt in diesem Kontext die Attacke DoS nicht ganz. Falls die nachfolgende Funktionalität wegen der langen Ausführungszeit der Filterkomponente übersprungen wird bzw. ein Fehler auftritt würde dies meiner Ansicht in die Thematik Anwendungslogik passen. Eine DoS-Attacke kann hingegen anhand jeder Funktion durchgeführt werden.&lt;br /&gt;
&lt;br /&gt;
== &amp;quot;G 5.WA11 Umgehung clientseitig umgesetzter Sicherheitsfunktionen von Web-Anwendungen&amp;quot; (Dennis) ==&lt;br /&gt;
; 1. &amp;quot;Ein Angreifer kann diese ausnutzen, um beispielsweise unbefugt Befehle an Hintergrundsysteme der Web-Anwendung zu übermittlen (z.B. in Form von Datenbankanfragen bei einer SQL-Injection).&amp;quot;&lt;br /&gt;
Umformulierung des Inhalts der Klammer. Hatte beim ersten Lesen für mich den Anschein, als ob ein Formular genutzt werden könnte welches den Nutzer aufforder eine SQLI einzugeben. Ich denke &amp;quot;Datenbankanfrage zwecks Ausführung einer SQL-Injection&amp;quot; würde besser passen.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== G 2.WA02 Mängel bei der Entwicklung und der Erweiterung von Web-Anwendungen (Matthias) ==&lt;br /&gt;
&lt;br /&gt;
Allgemein ist de obere Teil ok, die aufgezählten &amp;quot;Auswirkungen von fehlenden Vorgaben&amp;quot; verstehe ich jedoch nicht. Wo ist etwa der Bezug von Barrierefreiheit auf die Anwendungssicherheit?&lt;br /&gt;
&lt;br /&gt;
Mein Vorschlag, um diese Punkte etwa sinnvoll umzubauen:&lt;br /&gt;
* &amp;quot;Fehlendes Vorgehensmodell&amp;quot;: Bezug auf fehlende Berücksichtigung von Sicherheit im SDLC. Statt eines SDLCs selbst sollte hier besser auf die Notwendigkeit eines Secure Development Lifecycle (SDL) hingewiesen werden&lt;br /&gt;
* &amp;quot;Fehlende Programmierrichtlinien&amp;quot; =&amp;gt; Besser wäre hier &amp;quot;Fehlende Sicherheitsrichtlinien in der Programmierung&amp;quot; also &amp;quot;Secure Coding Guidelines&amp;quot;&lt;br /&gt;
* &amp;quot;Testfälle&amp;quot; =&amp;gt; &amp;quot;Sicherheitsrelevante Testfälle&amp;quot; (z.B. Security Unit Tests). &lt;br /&gt;
* &amp;quot;Barrierefreiheit&amp;quot;: Warum nicht an dieser Stelle die Auswirkungen von Sicherheitsfunktionen auf die Bedienbarkeit, etwa anhand von CAPTCHAS erläutern?&lt;br /&gt;
&lt;br /&gt;
== G 2.WA03 Unzureichender Schutz personenbezogener Daten bei Web-Anwendungen (Matthias) ==&lt;br /&gt;
&lt;br /&gt;
Der Titel dieses Bausteines heißt &amp;quot;Schutz personenbezogener Daten&amp;quot;, die genannten Beispiele beziehen sich bis auf den letzten jedoch auf die missbräuchliche (oder zumindest problematische) Nutzung aus Sicht des Datenschutzes. &lt;br /&gt;
&lt;br /&gt;
Die Punkt 1-3 sollten daher besser entfallen und z.B. durch die Folgenden ersetzt werden:&lt;br /&gt;
* Unsichere Einbindung von sozialen Netzwerken (Bezug nehmen auf den Like-Button bei Facebook)&lt;br /&gt;
* Unsichere Einbindung von Werbeinhalten&lt;br /&gt;
* Unsichere Übertragung und Caching&lt;br /&gt;
* Unsichere Protokollierung&lt;br /&gt;
* Ungenügender Zugriffsschutz&lt;br /&gt;
* Verstoß des Minimalprinzips bzw. der Zweckgebundenheit (welche Daten werden wirklich benötigt)&lt;br /&gt;
&lt;br /&gt;
Auch wäre es ggf. zumindest einen Verweis auf das BDSG zu machen.&lt;br /&gt;
&lt;br /&gt;
== G 4.33 Unzureichende oder fehlende Authentisierung (Matthias) ==&lt;br /&gt;
&lt;br /&gt;
; 1. Erster Absatz: &amp;quot;Wenn Authentisierungsmechanismen fehlen oder zu schlecht sind&amp;quot;&lt;br /&gt;
&lt;br /&gt;
&amp;quot;schlecht&amp;quot; sollte vlt besser durch &amp;quot;unzureichend&amp;quot; ersetzt werden.&lt;br /&gt;
&lt;br /&gt;
; 2. &amp;quot;Sicherheitslücken entstehen bei... der Benutzerauthentisierung&amp;quot;&lt;br /&gt;
&lt;br /&gt;
Hier findet nur ein Bezug auf &amp;quot;Passwörter&amp;quot; statt. Der Bezug auf die fehlerhaft implementierte oder dem Schutzbedarf ungenügende Schutzmechanismen (z.B. keine 2-Faktor-Authentisierung bei hochsensiblen Daten) fehlt. Auch auf das komplette fehlen von Authentisierungs-Controls wird hier nicht  eingegangen&lt;br /&gt;
&lt;br /&gt;
; 3. &amp;quot;Sicherheitslücken entstehen bei... der Komponentenauthentisierung&amp;quot;&lt;br /&gt;
&lt;br /&gt;
Wie bei 2., wird auch hier wieder nur auf Passwörter, nicht jedoch auf das fehlen von Controls selbst eingegangen. An dieser Stelle fehlt auch ein Hinweis auf die Notwendigkeit dedizierter Benutzeraccounts.&lt;br /&gt;
&lt;br /&gt;
; 4. &amp;quot;Sicherheitslücken entstehen bei... der Wahl des Verfahrens&amp;quot;&lt;br /&gt;
&lt;br /&gt;
Statt untauglich würde ich auch hier von &amp;quot;dem Schutzbedarf der Daten nicht angemessen&amp;quot; sprechen, eigentlich gehört das für mich aber in die obigen Punkte.&lt;br /&gt;
&lt;br /&gt;
; 5. Serverseitige Authentisierung fehlt&lt;br /&gt;
&lt;br /&gt;
Auch der Server (bzw. die Anwendung selbst) kann sich fehlerhaft oder ungenügend beim Benutzer authentsieren, etwa über DNS, SSL-Zertifikate, etc.&lt;br /&gt;
&lt;br /&gt;
== G 4.WA04 Unzureichende Validierung von Ein- und Ausgabedaten bei Web-Anwendungen (Matthias) ==&lt;br /&gt;
&lt;br /&gt;
; 1. &amp;quot;Unzureichende Validierung von Eingabedaten&amp;quot;&lt;br /&gt;
&lt;br /&gt;
Die genannten Beispiele sind genau keine korrekten Beispiele für diesen Fall, sondern betreffen die Ausgabevalidierung bzw. Enkodierung. Typische Fehler der Eingabevalidierung ist eine Manipulierbarkeit der Business Logik.&lt;br /&gt;
&lt;br /&gt;
; 2. &amp;quot;Unzureichende Validierung von Ausgabedaten&amp;quot;&lt;br /&gt;
&lt;br /&gt;
Hier geht es zentral um die Verhinderung von Interpreter Injection, also serverseitig (z.B. SQL oder LDAP Injection) oder clientseitig (XSS, JSON Injection, etc.). Statt &amp;quot;können die Ausgaben Schadcode&amp;quot; enthalten würde ich hier eher davon Sprechen, dass ein solcher Interpreteraufruf manipuliert werden kann (was dann z.B. zur Einschleusung von Schadcode genutzt werden kann).&lt;br /&gt;
&lt;br /&gt;
; 3. &amp;quot;Die Suchfunktion der Web-Anwendung verwendet die Eingaben der Benutzer ungefiltert&amp;quot;&lt;br /&gt;
&lt;br /&gt;
Mit ungenügender &amp;quot;Filterung&amp;quot; hat SQL Injection nichts zu tun,  eigentlich geht es hierbei darum, dass SQL-Anfragen dynamisch mit unvalidierten Eingebedaten zusammengebaut (konkateniert) werden.&lt;br /&gt;
&lt;br /&gt;
; 4. &amp;quot;Ungefilterter HTML-Code in Kommentar-Funktion&amp;quot;&lt;br /&gt;
&lt;br /&gt;
Hier fehlt der Bezug auf persistentes XSS, das hier sicherlich zentral ist.&lt;br /&gt;
&lt;br /&gt;
== G 4.WA05 Fehlende oder mangelhafte Fehlerbehandlung durch Web-Anwendungen (Tobias) ==&lt;br /&gt;
; Abschnitt &amp;quot;Unsichere Fehlerbehandlung&amp;quot;&lt;br /&gt;
Die G adressiert &amp;quot;Unsichere Fehlerbehandlung&amp;quot;, der Abschnitt die &amp;quot;Unsichere Fehlerbehandlung in Sicherheitskomponenten&amp;quot;. Entsprechend sollte der fettgedruckte Teil angepasst werden.&lt;br /&gt;
&lt;br /&gt;
; &amp;quot;fehlende SQL-Parameter,&amp;quot;&lt;br /&gt;
Sollte besser &amp;quot;Fehlermeldungen bei ungültigen SQL-Abfragen&amp;quot; lauten.&lt;br /&gt;
&lt;br /&gt;
; &amp;quot;Auch scheinbar unkritische Informationen, wie die Meldung ob (..)&amp;quot;&lt;br /&gt;
Korrekt, allerdings nicht nachvollziehbar, wenn das Problem der Leser nicht schon bekannt ist. Daher erweitern nach &amp;quot; Rahmen von Brute-Force-Angriffen ausgenutzt werden.&amp;quot; mit &amp;quot;. Bei Brute-Force-Angriffen wäre in diesem Fall klar, dass der Benutzername gültig ist.&amp;quot; &lt;br /&gt;
&lt;br /&gt;
== G 4.WA06 Unzureichende Nachvollziehbarkeit von sicherheitsrelevanten Ereignissen bei Web-Anwendungen (Matthias) ==&lt;br /&gt;
&lt;br /&gt;
; 1. Erster Absatz: &amp;quot;Die Behebung einer Schwachstelle ist dann nicht oder nur unter erschwerten Bedingungen möglich.&amp;quot;&lt;br /&gt;
&lt;br /&gt;
Hier würde ich ergänzen: &amp;quot;...und Angriffe auf die Anwendungen können ggf. nicht erkannt oder nachvollzogen werden&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
; 2. &amp;quot;Beispiele&amp;quot;: Kommulierbarkeit&lt;br /&gt;
&lt;br /&gt;
Hier fehlt auch ein Bezug auf die Kommulierbarkeit von SIcherheitsereignissen, dass diese also auch von solchen anderer Systeme in Verbindung gesetzt werden können&lt;br /&gt;
&lt;br /&gt;
; 3. &amp;quot;Beispiele&amp;quot;: Gerichtsverwertbarkeit&lt;br /&gt;
&lt;br /&gt;
Auch die Möglichkeit zur Gerichtsverwertbarkeit (etwa durch eindeutigen Zeitstempel) und manipulationssicherer Speicherung, würde ich an dieser Stelle unbedingt erwähnen.&lt;br /&gt;
&lt;br /&gt;
== G 4.WA07 Offenlegung von Informationen bei Web-Anwendungen (Matthias) ==&lt;br /&gt;
&lt;br /&gt;
; 1. Titel&lt;br /&gt;
&lt;br /&gt;
Hier würde ggf. &amp;quot;Offenlegung vertraulicher Informationen&amp;quot; sicher besser passen als &amp;quot;Offenlegung von Informationen&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
; 2. Beispiellink&lt;br /&gt;
&lt;br /&gt;
Ein Beispiellink (mit und ohne Token) würde sicher die Verständlichkeit dieser Schwachstelle verbessern.&lt;br /&gt;
&lt;br /&gt;
; 3. Erster Absatz: &amp;quot;Wenn demzufolge Informationen unnötig offengelegt werden, steigt die Wahrscheinlichkeit eines erfolgreichen Angriffs.&amp;quot;&lt;br /&gt;
&lt;br /&gt;
Interne Informationen auszublenden ist eine Härtungsmaßnahme, deren Anzeige erhöht aber nicht zwangsläufig die Wahrscheinlichkeit eines erfolgreichen Angriffs. Ich würde diesen Satz weglassen.&lt;br /&gt;
&lt;br /&gt;
 ; 4. Fehlende Punkte&lt;br /&gt;
&lt;br /&gt;
* Ein Hinweis auf HTTP Header wäre hier sicher erwähnenswert.&lt;br /&gt;
* Weiterhin bzgl. der Anzeige von Traces und ein Verweis auf den Entsprechenden Baustein zur Fehlerbehandlung&lt;br /&gt;
&lt;br /&gt;
== G 5.WA14 Cross-Site Request Forgery (CSRF, XSRF) (Matthias) ==&lt;br /&gt;
&lt;br /&gt;
; 1. Erster Absatz: &amp;quot;Können Funktionen einer Web-Anwendung ohne weitere Überprüfung der Authentizität des HTTP-Requests (z.B. durch Tokens in versteckten Formularfeldern) genutzt werden&amp;quot;&lt;br /&gt;
&lt;br /&gt;
Statt &amp;quot;Funktionen&amp;quot; würde ich besser von &amp;quot;schreibenden Aktionen&amp;quot; sprechen, dann macht der Satz mehr Sinn.&lt;br /&gt;
&lt;br /&gt;
; 2. Dritter Absatz: &amp;quot;Im Gegensatz zu XSS (siehe ...￼ ) ist das Angriffsziel nicht die Information auf dem Client (z. B. in Cookies),&amp;quot;&lt;br /&gt;
&lt;br /&gt;
Dieser (Halb-)Satz macht keinen Sinn, auch weil es bei XSS nicht nur im Informationen auf dem Cient geht. Vorschlag: &amp;quot;ist das Angriffsziel nicht die Ausführung von Skriptcode, sondern von unbefugten, schreibenden Aktionen im Kontext des angemeldeten Benutzers.&amp;quot;&lt;br /&gt;
&lt;br /&gt;
; 3. Session Riding&lt;br /&gt;
&lt;br /&gt;
Session Riding ist quasi nur ein anderer Begriff für CSRF. Die einzige Form von CSRF die mir bekannt ist, sind Angriffe mit Standard-Passwörtern auf HTTP-Basic-Auth geschützten Ressourcen.&lt;br /&gt;
&lt;br /&gt;
Im Grunde ist Session Riding aber nur ein Synonym für CSRF. Der Absatz ist daher auch nur eine Wiederholung der obigen Beschreibung.&lt;br /&gt;
&lt;br /&gt;
; 4. Zum Beispiel: &amp;quot;Durch einen präparierten Link auf einer Webseite wird die Änderung des Zugangspasswortes des Routers eingeleitet.&amp;quot;&lt;br /&gt;
&lt;br /&gt;
Etwas ungüngstig ausgedrückt. Besser wäre: &amp;quot;wird eine Anfrage zur Änderung des Zugangspasswortes an den Router gesendet. Hierbei sendet der Browser automatisch den Session Cookie mit, worüber die Webanwendung die Authentizität der Anfrage verifiziert und die Änderung durchführt.&amp;quot;&lt;br /&gt;
&lt;br /&gt;
== G 5.WA18 Clickjacking (Matthias) ==&lt;br /&gt;
&lt;br /&gt;
Hier stellt sich mir nur die allgemeine Frage, ob Clickjacking, bzw. der Schutz davor tatsächlich einem Grundschutz zuzurechnen ist. Persönlich würde ich dies nicht tun.&lt;br /&gt;
&lt;br /&gt;
== M 2.WA02 Dokumentation der Architektur von Web-Anwendungen (Matthias) ==&lt;br /&gt;
&lt;br /&gt;
; Verantwortlich für die Umsetzung&lt;br /&gt;
Hier wäre auch die Nennung des &amp;quot;Architekten&amp;quot; sinnvoll&lt;br /&gt;
 &lt;br /&gt;
; Fehlende Bestandteile der Dokumentation:&lt;br /&gt;
* Schutzbedarf des Systems sowie der verarbeiteten Daten&lt;br /&gt;
* Schützenswerte Daten und Funktionen (Assets)&lt;br /&gt;
* Betriebliche Anforderungen an die Sicherheit bzw. eingesetzte Plattform&lt;br /&gt;
* Dokumentierte Konfigurationseinstellungen &lt;br /&gt;
* BIA (RTO, RPO)&lt;br /&gt;
* Schnittstellen&lt;br /&gt;
* Trust Boundaries&lt;br /&gt;
* Akteure (bzw. Trust Level)&lt;br /&gt;
* Sicherheitsannahmen&lt;br /&gt;
* Geltende Compliance-Anforderungen (BDSG, PCI DSS, etc.)&lt;br /&gt;
&lt;br /&gt;
; Benutzermanagement&lt;br /&gt;
&lt;br /&gt;
Wenn damit das Identity Management gemeint ist, gehört das Dokumentiert, ist aber keine Sicherheitsfunktion. Oder ist hiermit das Rollen- und Berechtigungskonzept gemeint? Grenzt sich aus meiner Sicht schwer mit dem Thema Authentisierung ab. &lt;br /&gt;
&lt;br /&gt;
; Prüffragen&lt;br /&gt;
&lt;br /&gt;
Hier fehlt etwas in Bezug auf Sicherheitsanforderungen. Beispiel: &amp;quot;Werden Sicherheitsanforderungen an den Betrieb während der Entwicklung abgestimmt und dokumentiert&amp;quot;&lt;br /&gt;
&lt;br /&gt;
== M 2.WA12 Entwicklung und Erweiterung von Anwendungen (Markus) ==&lt;br /&gt;
; &amp;quot;Es sollte darauf geachtet werden, dass Sicherheitsanforderungen&lt;br /&gt;
vollständig durch Sicherheitsmechanismen erfüllt und zur Erstellung von&lt;br /&gt;
Testfällen festgehalten werden.&amp;quot; --&amp;gt; Bessere Formulierung würde aussagen, dass die Sicherheitsanforderungen durch Testfälle verifiziert werden.&lt;br /&gt;
&amp;quot;(z. B. durch Kommentare im&lt;br /&gt;
Quelltext). Somit ist der Quelltext zu einem&amp;quot; --&amp;gt; Das ist kein empfehlenswerter Programmierstiel! Raus mit diesem Kommentar&lt;br /&gt;
;&amp;quot;Zum Schutz vor dem Verlust bereits entwickelter und verworfener&lt;br /&gt;
Lösungen sowie zu Dokumentationszwecken sollte die Historie der&lt;br /&gt;
Änderungen festgehalten werden (z. B. durch ein Revisionssystem).&amp;quot; --&amp;gt; Auch diesen Absatz können wir streichen - Kein professioneller Programmierer arbeitet ohne Versionierugssystem.&lt;br /&gt;
;&amp;quot;Bei Web-Anwendung sollten die Webseiten auf Konformität zu dem&lt;br /&gt;
verwendeten Standard (z. B. HTML-Standard) getestet werden. Dadurch&lt;br /&gt;
können unvorgesehene Seiteneffekte aufgrund einer Fehlinterpretation&lt;br /&gt;
seitens der Browser vermieden werden.&amp;quot; --&amp;gt; Könnte man noch um &amp;quot;Die Software ist in möglichst vielen Browsern zu testen&amp;quot; erweitern.&lt;br /&gt;
;Generell geht der Autor leider nicht auf die Rollen &amp;amp; Rechte Verteilung ein. Mir fehlt der Hinweis, das es eine personelle Trennung zwischen Entwicklung, Test und Betrieb geben muss.&lt;br /&gt;
;Zum Thema Wartung / Betrieb --&amp;gt; Hier wird keine Aussage getroffen bezüglich Log_Files. Dieses Thema kann kritische Auswirkungen haben, Bsp.: logging ganzer HTTP-Requests im LogLevel=Debug.&lt;br /&gt;
; &amp;quot;Produktspezifische Sicherheitsfunkionalität&amp;quot; - Dieser Absatz ist gefährlich - der Angreifer ist nicht zur Verwendung dies Zielbrowsers gezwungen. Deshalb können Browser-spez. Sicherheitsfunktionen nur als Add-ON gewertet werden.&lt;br /&gt;
; &amp;quot;Festlegung der Entwicklungsumgebung&amp;quot; - Dieser Absatz geht nicht auf die zu verwendenden Testdaten ein. Der Hinweis, dass Live-Daten / Kundendaten nichts in Test- &amp;amp; Entwicklungsumgebungen zu suchen haben fehlt!!!&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== M 2.WA24 Web-Tracking (Matthias) ==&lt;br /&gt;
&lt;br /&gt;
; Letzter Absatz: &amp;quot;Falls eine Auswertung von Nutzerdaten, insbesondere personenbezogener Daten, .. &amp;quot;&lt;br /&gt;
&lt;br /&gt;
Hier sollte denke ich besser von personenbeziehbaren Daten gesprochen Werten. Dies betrifft etwa die Zuordnung von Surfverhalten zu einer bestimmten Person. Dies sollte stets nach den Prinzipien Datensparsamkeit und Datenvermeidung, Erforderlichkeit, sowie Zweckbindung erfolgen. Ist Webtracking nicht personenbeziehbar ist dies kein Thema für den Datenschutz.&lt;br /&gt;
&lt;br /&gt;
== M 4.WA04 Authentisierung bei Web- Anwendungen (Matthias) ==&lt;br /&gt;
&lt;br /&gt;
; Vermischung von Authentisierung und Session Management &lt;br /&gt;
&lt;br /&gt;
Bei diesem Baustein findet eine ziemlich große Vermischung von Anforderung an die Authentisierung und das erst in &amp;quot;M 4.WA06 Session-Management bei Web- Anwendungen&amp;quot; behandelte Session Management statt (Beispiel: &amp;quot;Remember-Me-Funktion&amp;quot;). Beide Themen sollten sinnvollerweise getrennt voneinander zu betrachten und aufeinander zu beziehen.&lt;br /&gt;
&lt;br /&gt;
; Verwendung von Frameworks&lt;br /&gt;
&lt;br /&gt;
Die Anforderung ist schon ein wenig eingeschränkt. Besser passt hier denke ich die &amp;quot;Abbildung der Authentisierung über Standardkomponenten (Bibliotheken oder Frameworks)&amp;quot;. &lt;br /&gt;
&lt;br /&gt;
; Remember-Me-Funktion&lt;br /&gt;
&lt;br /&gt;
Siehe oben, gehört zum Session Management. Das ließt sich im übrigen so, als ob eine Webanwendung Credentials auf dem Client abhängt. &lt;br /&gt;
&lt;br /&gt;
; Grenzwerte für gescheiterte Anmeldeversuche&lt;br /&gt;
&lt;br /&gt;
Diese Empfehlung ist allgemein falsch, da sie sehr von der betrachteten Anwendung abhängt. Besser wäre hier allgemein von Mechanismen zur Verhinderung von automatisierten Angriffen zu sprechen (Anti-Automatisierung). &lt;br /&gt;
&lt;br /&gt;
Etwa umsetzbar durch&lt;br /&gt;
* Sperrung nach x Anmeldeversuchen&lt;br /&gt;
* Throttling&lt;br /&gt;
* Captchas&lt;br /&gt;
* Sicherheitsfragen&lt;br /&gt;
&lt;br /&gt;
Das allgemeine Sperren kann leicht für das gezielte Aussperren von Benutzern (User Lockout) verwendet werden. Was etwa bei Trading-Anwendungen nicht funktioniert.&lt;br /&gt;
&lt;br /&gt;
; Automatisiertes Zurücksetzen von Authentisierungsdaten&lt;br /&gt;
&lt;br /&gt;
Würde ich besser als &amp;quot;Passwort-Reset&amp;quot; bezeichnen.&lt;br /&gt;
&lt;br /&gt;
Weiterhin fehlt hier der Hinweis, dass statt ein automatisiertes Zurücksetzen, ein Mechanismus zu empfehlen ist, bei dem über ein hinterlegtes Sicherheitsmerkmal (Handy-Nummer oder E-Mail-Adresse) vom Benutzer zunächst eine Verifikation durchgeführt wird. Beispielsweise durch einen erhaltenen Link. Erst dann darf eine Änderung des Passwortes durch den Benutzer erfolgen.&lt;br /&gt;
&lt;br /&gt;
; Registrierung nicht behandelt&lt;br /&gt;
&lt;br /&gt;
Es existiert hier kein Punkt, der die sichere Implementierung von Benutzerregistrierungen behandelt.&lt;br /&gt;
&lt;br /&gt;
; Verweis auf Externalisierung fehlt.&lt;br /&gt;
&lt;br /&gt;
Statt die Authentisierung selbst durchzuführen kann eine Anwendung hierzu auf eine externe Komponente (Beispiel: SiteMinder oder Kerberos) zurückgreifen.&lt;br /&gt;
&lt;br /&gt;
; Verweis auf Behandlung von Credentials fehlt&lt;br /&gt;
&lt;br /&gt;
Auch wenn das  in &amp;quot;M 4.WA15 Schutz vertraulicher Daten bei Web- Anwendungen&amp;quot; ausführlich behandelt wird, sollte in diesem Baustein bereits auf den angemessenen Schutz von Authentisierungsdaten bei Übertragung und Speicherung hingewiesen werden.&lt;br /&gt;
&lt;br /&gt;
== M 4.WA05Umfassende Ein- und Ausgabevalidierung bei Web-Anwedungen (Markus) ==&lt;br /&gt;
; &amp;quot;Ablehnung der Daten im&lt;br /&gt;
Fehlerfall&amp;quot; --&amp;gt; Hier könnte man noch auf Tar-Pits eingehen - nur ein Vorschlag.&lt;br /&gt;
&lt;br /&gt;
== M 4.WA06Session-Management bei Web-Anwendungen (Markus) ==&lt;br /&gt;
; &amp;quot;Übertragung der SessionID mittels GETRequest&amp;quot; --&amp;gt; Hier fehlt der Hinweis, dass die Lebensdauer dieser SessionIds kurz/kürzer sein muss, als im Falle der Speicherung im Cookie.&lt;br /&gt;
&lt;br /&gt;
([[User:Mrohr|Matthias]]) Die Anmerkung verstehe ich ehrlich gesagt ueberhaupt nicht, zumal das SM haeufig transparent zwischen Cookies und URL Rewriting wechselt. Wozu soll das gut sein? Wie soll das geschehen? Idealerweise sollte die Session ID niemals in die URL geschrieben werden, das sollte eigentlich genuegen.&lt;br /&gt;
&lt;br /&gt;
; &amp;quot;Verschlüsselte Übertragung von SessionIDs&amp;quot; --&amp;gt; Hier fehlt der Hinweis auf den Beast-Exploit. TLS Version &amp;gt; 1.0 verwenden!&lt;br /&gt;
&lt;br /&gt;
([[User:Mrohr|Matthias]]) Solange hier nicht auf eine explizite TLS Version eingegangen wird, sollte meiner grossen Ueberzeugung nach hier auch auf keine Exploits etc. eingagen werden, das gehoert an andere Stelle.&lt;br /&gt;
&lt;br /&gt;
; ([[User:Mrohr|Matthias]]) Weiterhin:&lt;br /&gt;
&lt;br /&gt;
 Es dürfen keine extern bekannten oder erratbaren Daten (z. B. IP-Adresse,&lt;br /&gt;
Uhrzeit) in die Berechnung der SessionID einfließen.&lt;br /&gt;
&lt;br /&gt;
Die Aussage finde ich etwas problematisch, wichtiger ist, dass die Entropie ausreichend hoch ist. Haeufig werden etwa IPs von Load Balancern in die Session ID hineingeschrieben.&lt;br /&gt;
&lt;br /&gt;
 - Domain (z. B. webapp.domain.tld),&lt;br /&gt;
 - Path (z. B. /webapp/),&lt;br /&gt;
 - Secure und&lt;br /&gt;
 - HttpOnly.Beschränkte Sitzungsdauer&lt;br /&gt;
&lt;br /&gt;
Das sieht so aus, als ob es empfehlenswert ist, das Domain-Tag zu verwenden, das ist es sicherlich nicht. Was macht hier der Hinweis &amp;quot;Beschraenke Sizuungsdauer&amp;quot;?&lt;br /&gt;
&lt;br /&gt;
== M 4.WA07Fehlerbehandlung durch Web-Anwendungen (Markus) ==&lt;br /&gt;
; Konsistenter / Inkonsistener Zustand einer Webanwendung und der daraus resultierende Datenverlust: Hier fehlen mir die Punkte: DOS, Priv.Escalation, CodeExecution.&lt;br /&gt;
; Vermeidung vertraulicher Informationen in Fehlermeldungen --&amp;gt; Fehlermeldungen sollten ebenfalls eine Systeminformationen preisgeben (Softwareversion, Patchlevel, etc.)&lt;br /&gt;
; Abbruch des Vorgangs nach Auftreten eines Fehlers --&amp;gt; TarPits scheinen dem Autor umbekannt zu sein :)&lt;br /&gt;
; &amp;quot;Werden Fehler möglichst von der gleichen Komponente behandelt, in der&lt;br /&gt;
der Fehler aufgetreten ist?&amp;quot; --&amp;gt; Das &amp;quot;möglichst&amp;quot; sollten wir streichen.&lt;br /&gt;
&lt;br /&gt;
== M 4.WA08Schutz vor automatisierter Nutzung von Web-Anwendungen (Markus) ==&lt;br /&gt;
; &amp;quot;Brute-Force-&lt;br /&gt;
Angriffe (z. B. Erraten von Zugangsdaten) und Enumeration-Angriffe (z. B.&lt;br /&gt;
automatisiertes Ermitteln von gültigen Login-Namen)&amp;quot; -- die Beispiele sind identisch - besser Beispiele suchen, z.b. URL-Enumeration&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== M 4.WA11Sichere Konfiguration von Web-Anwendungen (Markus) ==&lt;br /&gt;
; &amp;quot;Sicherer Umgang mit TLS/SSL&amp;quot; -- Hier fehlt der Hinweis, dass TLS-1.0 gebrochen ist&lt;br /&gt;
; &amp;quot;Zeichenkodierungskonfiguration&amp;quot; -- Ein Whitelisting abhängig von der Encodierung wäre ein weiterer Vorschlag&lt;br /&gt;
; &amp;quot;Restriktive Dateisystemberechtigungen&amp;quot; -- auch wenn es ein klassiker ist - der AS sollte ebenfalls mit von einem eingeschränkten Nutzer gestartet werden und nicht als root&lt;br /&gt;
; Administration Consolen:zur Ergänzen: Wenn diese nicht benötigit, sollten derartige Applikationen nicht deployed werden, unabhängig von möglichen Zugangsbeschränkungen.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== M 4.WA13Kontrolliertes Einbinden von Daten und Inhalten bei Web-Anwendungen (Markus) ==&lt;br /&gt;
; Datei-Upload: Bei einem Upload werden Dateien durchaus in TEMP-Verzeichnissen gesammelt und danach weiterverarbeitet. Diese TEMP-Verzeichnisse sind im Rahmen einer Sicherheitsanalyse zu betrachten -&amp;gt; Möglicher (unbefugter) Zugriff auf weitere Uploads&lt;br /&gt;
; Upload komprimierter Dateien / großer Dateien birgt die Gefahr von DOS Angriffen&lt;br /&gt;
; Upload von Dateien kann bei weiterem Parsing zu Speicherengpässen führen --&amp;gt; DOS-Angriffe auf Thread-Local etc.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== M 4.WA14Restriktive Herausgabe sicherheitsrelevanter Informationen bei Web-Anwendungen (Markus) ==&lt;br /&gt;
OK - Keine Anmerkungen von mir.&lt;br /&gt;
&lt;br /&gt;
== M 4.WA15Schutz vertraulicher Daten bei Web-Anwendungen (Markus) ==&lt;br /&gt;
; Sichere kryptographische Algorithmen:&lt;br /&gt;
 Hier fehlt mir eine Liste der aktuelle als sicher geltenden Verfahren.&lt;br /&gt;
; Schlüssel&lt;br /&gt;
 Das die Schlüssel bestimmten Formaten entsprechen müssen ist ok - aber das Schlüsselmanagement wird gar nicht besprochen?&lt;br /&gt;
; Schutz der Daten im Browsercache&lt;br /&gt;
 Skripte und Browserplugins können ebenfalls auf den Browsercache zugreifen - diese werden hier nicht erwähnt.&lt;br /&gt;
; Maskierung von Passwörtern &lt;br /&gt;
 Dies schützt bei der Eingabe nur vor ShoulderSurfing nicht vor Skripten oder Plugins die diese an andere Server posten.&lt;br /&gt;
; Sicherung von Zugangsdaten:&lt;br /&gt;
 Zugangsdaten in einer Datei abzulegen - wenn auch ausserhalb des WebRoots ist keine gute Idee.&lt;br /&gt;
; Schutz von Quelltexten:&lt;br /&gt;
 Hier würde ich property files mit aufnehmen. der hinweis auf web-inf/classes fehlt - warum?&lt;br /&gt;
 Bei include-befehlen sind die pfadangaben zu überdenken.&lt;br /&gt;
&lt;br /&gt;
== M 4.WA16Zugriffskontrolle bei Web-Anwendungen (Markus) ==&lt;br /&gt;
; Zugriffskontrolle via Frameworks:&lt;br /&gt;
 Dieser Punkt (Frameworks) wird nur in einem Satz erwähnt. Es werden keine Bespiele gegeben - Das ist zu wenig.&lt;br /&gt;
 Es müssen alle Zugriffe geschützt werden. Eine Protokollierung aller Zugriffe mit den nötigen Informationen ist ebenfalls empfehlenswert.&lt;br /&gt;
; Datei Upload:&lt;br /&gt;
 Die Gefahr eines DOS wird hier nicht erwähnt.&lt;br /&gt;
&lt;br /&gt;
== M 4.WA19Verhinderung von Cross-Site Request Forgery (CSRF, XSRF) (Markus) ==&lt;br /&gt;
; Verantwortliche: &lt;br /&gt;
 Entwickler und Admins!&lt;br /&gt;
([[User:Mrohr|Matthias]]) Korrekt, wobei auch in der Reihenfolge&lt;br /&gt;
&lt;br /&gt;
; Anti-CSRF-Token in hidden fields:&lt;br /&gt;
 Das ist keine gute Idee. Ich würde das streichen!&lt;br /&gt;
&lt;br /&gt;
([[User:Mrohr|Matthias]]) Watt? Anti-CSRF-Tokens in Hidden Fields sind die Standard-Massnahme. Wie denn sonst? Bitte nicht streichen!!! &lt;br /&gt;
&lt;br /&gt;
([[User:Mrohr|Matthias]]) Die Technik bei der die Session ID als Anti-CSRF-Token verwendet wird, wird als Double-Cookie Submit bezeichnet, das sollte hier referenziert werden.&lt;br /&gt;
&lt;br /&gt;
; Umgehung von Schutzmechanismen:&lt;br /&gt;
 Man in the middle hat keinen direkten Bezug zu CSRF! Das würde ich streichen.&lt;br /&gt;
([[User:Mrohr|Matthias]]) Der Hinweis ist korrekt. Wovon der Autor hier spricht ist Session Replay nicht CSRF.&lt;br /&gt;
&lt;br /&gt;
; Frameworks:&lt;br /&gt;
 Gute Idee - aber es gibt auch Features in den ApplicationServern die CSRF unterbinden - warum wird das nicht besprochen?&lt;br /&gt;
&lt;br /&gt;
([[User:Mrohr|Matthias]]) Sehe ich persoenlich nicht so, da CSRF primaer ein Applikations-Fehler ist, und auch in der Applikation und nicht im Environment (AppServer) geloest werden sollte. Auch wenn das manchmal ggf. die einzig machbare Loesung darstellt.&lt;br /&gt;
&lt;br /&gt;
([[User:Mrohr|Matthias]]) Was generell fehlt, ist ein Hinweis darauf, dass schreibende Requests generell per HTTP Post abgewickelt werden sollten, da HTTP Get keine &amp;quot;Safe Method&amp;quot;  (siehe HTTP 1.1, RFC 2616) ist.&lt;br /&gt;
&lt;br /&gt;
== M 4.WA20Sicherer Entwurf der Logik von Web-Anwendungen (Markus) ==&lt;br /&gt;
; Rollbacks:&lt;br /&gt;
 Tritt ein Fehler auf muss die Applikation einen konsistenten Datenstand zurück lassen. Das wird hier nicht erwähnt.&lt;br /&gt;
; RaceConditions:&lt;br /&gt;
 Fehler in der Geschäftslogik können auch durch zwei gleichzeitige Sessions auf einer Webapplikation auftreten - das wird hier nicht besprochen.&lt;br /&gt;
&lt;br /&gt;
== M 4.WA22Verhinderung der Blockade von Ressourcen (DoS) bei Web-Anwendungen (Markus) ==&lt;br /&gt;
; Datenspeicher:&lt;br /&gt;
 Neben dem Datenspeicher sollte auch der RAM-Verbrauch pro Thread der Applikation limitiert werden.&lt;br /&gt;
; Voraggregation von Daten / Caching&lt;br /&gt;
 Dieser Punkt fehlt: Stark ressourcen belastende Anfragen können auch in Lastarmen Zeiten vorberechnet werden.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== M 4.WA25Verhinderung von Clickjacking (Markus) ==&lt;br /&gt;
Ok - das passt soweit.&lt;br /&gt;
&lt;br /&gt;
== M 5.WA21Sichere Anbindung von Hintergrundsystemen an Web-Anwendungen (Markus) ==&lt;br /&gt;
; Verantwortliche:&lt;br /&gt;
 Architekten fehlen. Entwickler müssen die Views umsetzen und die Datasource entsprechend einbinden - die fehlen hier ebenfalls.&lt;br /&gt;
; DirectorySystem Beispiel:&lt;br /&gt;
 Das DirectorySystem wird in dem angegeben Beispiel zum Single Point of Failure - das wird verschwiegen.&lt;br /&gt;
; Firewalls:&lt;br /&gt;
 Das sind fachlich-blinde Systeme. Was ist mit WAFs / IDS / IPS etc.?&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== M 5.WA23Systemarchitektur einer Web-Anwendung (Markus) ==&lt;br /&gt;
; Verantwortliche:&lt;br /&gt;
Auch hier fehlend wieder die Architekten. &lt;br /&gt;
; Virtualisierung:&lt;br /&gt;
Virtualisierung bietet weitere Angriffsvektoren (z.B.: Hypervisor) die eine &amp;quot;Blech&amp;quot;Farm nicht bietet.&lt;/div&gt;</summary>
		<author><name>Mrohr</name></author>	</entry>

	<entry>
		<id>https://wiki.owasp.org/index.php?title=Talk:OWASP_Review_BSI_IT-Grundschutz_Baustein_Webanwendungen&amp;diff=130104</id>
		<title>Talk:OWASP Review BSI IT-Grundschutz Baustein Webanwendungen</title>
		<link rel="alternate" type="text/html" href="https://wiki.owasp.org/index.php?title=Talk:OWASP_Review_BSI_IT-Grundschutz_Baustein_Webanwendungen&amp;diff=130104"/>
				<updated>2012-05-18T13:16:38Z</updated>
		
		<summary type="html">&lt;p&gt;Mrohr: /* M 4.WA06Session-Management bei Web-Anwendungen (Markus) */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Since it's about a review of a document in German, all the discussions will be done in German :-)&lt;br /&gt;
&lt;br /&gt;
Diskussionen rund um den Review des &amp;quot;IT-Grundschutzbausteins Webanwendungen&amp;quot; finden hier statt, sinnvollerweise auf Deutsch :-)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Vorschlag für Kriterien, die an unser Review angelegt werden sollten (.kai) ==&lt;br /&gt;
&lt;br /&gt;
* Der Baustein soll alle wichtigen Themen der Entwicklung sicherer&lt;br /&gt;
Webanwendungen enthalten.&lt;br /&gt;
&lt;br /&gt;
* Der Baustein soll die verschiedenen Phasen der Software-Entwicklung&lt;br /&gt;
vollständig abdecken.&lt;br /&gt;
&lt;br /&gt;
* Der Baustein soll zwischen verbindlichen, prüfbaren Vorgaben und&lt;br /&gt;
unverbindlichen Empfehlungen sprachlich sauber unterscheiden (hier&lt;br /&gt;
spielt mein Auditorenblick eine Rolle). Vor allem soll der Baustein&lt;br /&gt;
verbindliche Anforderungen auch tatsächlich stellen. Alle&lt;br /&gt;
verbindlichen Anforderungen müssen unabhängig von der jeweiligen&lt;br /&gt;
Umgebung auch umsetzbar sein, d.h. sie müssen entsprechend generisch&lt;br /&gt;
sein.&lt;br /&gt;
&lt;br /&gt;
* Die Maßnahmen sollen nur in (begründbaren) Ausnahmen zu Empfehlungen&lt;br /&gt;
von OWASP im Widerspruch stehen.&lt;br /&gt;
&lt;br /&gt;
* Die Maßnahmen sollen verständlich und anwendbar sein.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== &amp;quot;Hilfsmittel&amp;quot; (Markus) ==&lt;br /&gt;
Ich würde das Script zur Vermeidung von Clickjacking wrappen und nicht als losen Skript-block in den Text einbinden - einfach schlechter Programmierstiel diese losen Blöcke.&lt;br /&gt;
Der Zugriff auf das Body-Element mit byTagName-Array[0] ist auch nicht wirklich gut. Ich halte Zugriffe über das DOM (klassisch), bei ID bzw. XPATH für besser. &lt;br /&gt;
&lt;br /&gt;
SQL-Injection Characters:&lt;br /&gt;
die Pipe fehlt hier zur Textkonatenierung&lt;br /&gt;
+ / - haben auch eine Bedeutung bei JOINs.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== &amp;quot;Goldene Regeln&amp;quot; (Matthias) ==&lt;br /&gt;
&lt;br /&gt;
Hier meine Anmerkungen zu diesem Dokument:&lt;br /&gt;
&lt;br /&gt;
; 1. Für mich fehlende Punkte&lt;br /&gt;
* Korrektur der Ursache (Root Cause) von Schwachstellen statt  Verhinderung deren Ausnutzung&lt;br /&gt;
* Bezug auf Minimierung der Angriffsfläche und Least-Privilege-Prinzip&lt;br /&gt;
* Bezug auf Defense-in-Depth-Prinzip&lt;br /&gt;
* Verwendung von getesteten Security APIs (z.B. OWASP ESAPI) statt selbstentwickelter Funktionen&lt;br /&gt;
* Bezug auf Externalisierung von Sicherheitsfunktionen, sowie deklerative vor programmatischer Sicherheit.&lt;br /&gt;
&lt;br /&gt;
; 2. Begriff &amp;quot;Web-Anwendung&amp;quot;&lt;br /&gt;
Würde ich generell durch &amp;quot;Webanwendung&amp;quot; ersetzen.&lt;br /&gt;
&lt;br /&gt;
; 3. Einleitung (&amp;quot;Web-Anwendungen stellen Funktionalität zur Verfügung, ...&amp;quot;)&lt;br /&gt;
&lt;br /&gt;
Wozu dient dieser Satz?&lt;br /&gt;
&lt;br /&gt;
; 4. &amp;quot;Die Architektur der Web-Anwendung ist im Sicherheitskonzept zu  dokumentieren.....&amp;quot; &lt;br /&gt;
&lt;br /&gt;
Ich fände es sinnvoller, wenn hier von der &amp;quot;Sicherheitsarchitektur&amp;quot; gesprochen wird, welche etwa neben den sicherheitsrelevanten Datenflüssen, sensible Komponenten, Entry Points, Akteure architekturelle Security Controls wie Authentisierung, Kryptographie und natürlich die Trust Boundaries beinhaltet.&lt;br /&gt;
&lt;br /&gt;
; 5. &amp;quot;Bei Web-Anwendungen handelt es sich häufig um spezielle Eigenentwicklungen....&amp;quot;&lt;br /&gt;
&lt;br /&gt;
Erstens würde ich hier den geläufigen Begriff &amp;quot;Individualsoftware&amp;quot; verwenden. Zweitens würde ich statt bestimmte SDLC-Phasen vorzugeben (die Begriffe &amp;quot;Softwareverteilung&amp;quot; und &amp;quot;Integration&amp;quot; sind mir bei Webanwendungen bisher noch nicht so häufig untergekommen), besser von der Notwendigkeit sprechen, Sicherheit in allen Entwicklungsphasen zu berücksichtigen, also eines SDLs.&lt;br /&gt;
&lt;br /&gt;
; 6. &amp;quot;Alle Ein- und Ausgaben der Web-Anwendung müssen in eine normalisierte Form überführt werden....&amp;quot;&lt;br /&gt;
&lt;br /&gt;
Normalisierung ist für mich nicht gleich Kanonsierung, auch wenn beide Begriffe häufig als synonym verwendet werden.  Der Unterschied wird in der [http://owasp-esapi-java.googlecode.com/svn/trunk_doc/2.0-rc4/org/owasp/esapi/Encoder.html API-Beschreibung der ESAPI] erklärt. Die Normalisierungs-Funktion ist allerdings schon vor einiger Zeit aus der ESAPI [https://lists.owasp.org/pipermail/esapi-dev/2010-January/000266.html rausgeflogen]. Die generelle Kanonisierung von Ausgaben halte ich dazu für nicht sinnvoll.&lt;br /&gt;
&lt;br /&gt;
Zweitens, finde ich den weiteren Text zwar grundsätzlich formal korrekt, aber so allgemein, dass dieser glaube ich niemandem so richtig etwas bringt.  &lt;br /&gt;
&lt;br /&gt;
Besser fände ich hier Ein- von Ausgabevalidierung grundsätzlich voneinander abzugrenzen. Etwa was ich per Eingabevalidierung (Längenprüfung, Casting, etc. per Whitelisting) und was mit Ausgebavalidierung (Enkodierung, Escaping, Parametrisierung) machen muss und kann.&lt;br /&gt;
&lt;br /&gt;
Eingabedaten können technisch zudem auch Werte eingelesener Property-Dateien sein. Muss ich die auch validieren? Ist das dann noch Grundschutz? &lt;br /&gt;
&lt;br /&gt;
; 7. &amp;quot;Für den Zugriff auf sensitive Funktionen oder Informationen muss die Web-Anwendung eine wirksame Authentisierung und Sitzungsverwaltung unterstützen. Die Eigenschaften der Sitzungs-ID müssen so gewählt werden, dass die Sitzung ausreichend geschützt ist. ....&amp;quot;&lt;br /&gt;
&lt;br /&gt;
Besser fände ich &amp;quot;eine Authentisierung, die über eine dem Schutzbedarf der Anwendung angemessene Stärke verfügt.&amp;quot; &lt;br /&gt;
&lt;br /&gt;
Eigentlich geht es doch mehr um den Schutz der Sitzungs-ID, da diese gewöhnlich im Verlauf einer Sitzung den Client authentisiert. Oder den Schutz des Zugriffs auf eine Sitzung. &lt;br /&gt;
&lt;br /&gt;
Zudem fehlt hier meiner Meinung nach der Hinweis auf die bevorzugte Verwendung getesteter Standardkomponenten.&lt;br /&gt;
&lt;br /&gt;
; 8. &amp;quot;Die Web-Anwendung sollte die zu übermittelnden Daten schützen.&amp;quot;&lt;br /&gt;
&lt;br /&gt;
Dies würde ich nur auf sensible Daten beziehen. Zusätzlich zu HTTPS würde ich hier schreiben, dass sensible Daten generell nicht in der URL übertragen werden dürfen.&lt;br /&gt;
&lt;br /&gt;
; 9. &amp;quot;Die Preisgabe interner Informationen (z.B. Kommentare, Fehlermeldungen)&amp;quot;&lt;br /&gt;
&lt;br /&gt;
Hier würde ich eher schreiben &amp;quot;(IN Kommentaren, Fehlermeldungen, HTTP Headern, etc.)&amp;quot;&lt;br /&gt;
&lt;br /&gt;
; 10. &amp;quot;Fehler müssen so behandelt werden, ... müssen Fehler bei der Autorisierung zu einer Verweigerung beim Zugriff auf die angeforderte Ressource führen.&amp;quot;&lt;br /&gt;
&lt;br /&gt;
Sprachlich: &amp;quot;Die Webanwendung muss sich stets in einem sicheren Zustand befinden. Beispielsweise müssen Fehler bei der Autorisierung zu einer Verweigerung des Zugriffs führen (Default-Deny-Strategie).&amp;quot;&lt;br /&gt;
&lt;br /&gt;
; 11. &amp;quot;Die Logging-Funktionen der Web-Anwendung müssen aufgetretene Ereignisse derart protokollieren, dass sicherheitskritische Vorfälle nachvollzogen werden können.&amp;quot;&lt;br /&gt;
&lt;br /&gt;
Hier würde hier eher von &amp;quot;allen sicherheitsrelevanten Ereignissen&amp;quot; sprechen.&lt;br /&gt;
&lt;br /&gt;
Weiterhin sollten insbesondere beim Logging der Datenschutz berücksichtigt werden, personenbezogene Daten also nach Möglichkeit nicht oder nur anonymisiert in technischen Logdateien protokolliert werden.&lt;br /&gt;
&lt;br /&gt;
; 12. &amp;quot;Alle Sicherheitsmechanismen (z.B. Authentisierung und Zugriffskontrolle) sind serverseitig zu implementieren und können nicht durch clientseitige Mechanismen ersetzt werden.&amp;quot;&lt;br /&gt;
&lt;br /&gt;
Die Aussage ist so nicht korrekt. Darüber hatten wir bereits bei der ASVS mehrfach diskutiert. &lt;br /&gt;
&lt;br /&gt;
Überall dort wo der Client angegriffen wird, also etwa bei RIAs (Stichwort DOM-Based XSS) müssen wir Security Controls clientseitig implementieren. Es gibt mittlerweile deshalb auch eine Portierung der ESAPI auf Javascript. Überall dort wo der Server oder Hintegrundsysteme angegriffen werden, ist die Aussage aber natürlich zutreffend.&lt;br /&gt;
&lt;br /&gt;
== &amp;quot;Gefährdungen&amp;quot; (Markus, Dennis, .... &amp;lt;Dein Name&amp;gt;) ==&lt;br /&gt;
; Generell:&lt;br /&gt;
Reference auf RFCs fehlen.&lt;br /&gt;
&lt;br /&gt;
==B.5.XX Web-Anwendungen ==&lt;br /&gt;
; 1. Erster Absatz - Letzter Satz: --Wieso werden hier nur HTML/XML Doks und Oberflächen angesprochen? Was ist der Unterschied zwischen einem HTML-Dok und einer Oberfläche? Was ist mit  Flash, etc.? Was ist mit WebSockets?&lt;br /&gt;
; 2. Stichpunkt &amp;quot;Protokollierung&amp;quot;: Sicherheits relevant ist ein sehr dehnbarer Begriff - Eine bessere Formulierung könnte sein: Zur Rekonstruktion von Nutzerhandlungen nötige Ereignisse (positve &amp;amp; negative) müssen protokolliert werden . . . &lt;br /&gt;
; 3. Absatz: &amp;quot;Abgrenzung des Bausteins&amp;quot;: &amp;quot;Die spez. Sicherheitsanforderungen an Web-Services werden in diesem Baustein nicht betrachtet&amp;quot; --&amp;gt; Wie so nicht? Was ist das Backend von einer Rest / AJAX-basierenden Webanwendung denn anderes als ein Web-Service? Diesen Satz würde ich entfernen.&lt;br /&gt;
; 4.Vorsätzliche Handlungen -&amp;gt; Web-Spoofing (G.5.87) -- Missverständliche Bezeichnung / Nomenklatur&lt;br /&gt;
; 5. Seite 4 : erste Zeile &amp;quot;Umsetzung&amp;quot;: &amp;quot;dafür umzusetztende Komponenten müssen die Webanwendung schützen...&amp;quot; - Hier fehlt mir der Hinweis, dass dieser Schutz verifiziert werden muss.&lt;br /&gt;
; 6 Seite 5: &amp;quot;Umsetzung&amp;quot; - Wir haben CSRF, D(D)os und SQL-Injection aber wo ist XSS?&lt;br /&gt;
; 7 Seite 7: &amp;quot;Die Sicherheitsfunktion wird ausschließlich clientseitig...&amp;quot; --&amp;gt; Warum muss der Angreifer überhaupt einen Browser umkonfigurieren? Was ist mit Proxies, Scripts, etc.? Ich würde das reduzieren darauf, dass rein Webbrowser-basierende Schutzfunktionen einfach umgangen werden können.&lt;br /&gt;
; 8 Seite 8: Die angesprochenen Punkte hinterlassen den Eindruck nicht vollständig zu sein: Mir fehlen Punkte wie &amp;quot;Outsourcing&amp;quot;, &amp;quot;KnowHow der Entwickler&amp;quot;, Tooling, Framework-Auswahl, etc.&lt;br /&gt;
; 9 Seite 9: Eigentlich möchte der Autor hier über Datenschutz sprechen. Abgesehen von den letzten drei Zeilen geht es aber nur um &amp;quot;User tracking&amp;quot; - Wo ist der Rest der Datenschutzproblematik? Warum der Fokuss auf Tracking? Mir ist das zu einseitig.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
tbd.&lt;br /&gt;
&lt;br /&gt;
; Wortwahl:&lt;br /&gt;
Ich stosse innerhalb der Texte immer wieder an die Worten '''Hintergrundsystem''' und '''Sicherheitskontext'''.&lt;br /&gt;
'''Hintergrundsystem:''' besseres Synonym?&lt;br /&gt;
'''Sicherheitskontext:''' nur weil es in den Texten um Sicherheit geht muss nicht an jeder Stelle immer wieder das Wort _Sicherheits_kontext eingebaut werden.&lt;br /&gt;
Bsp: &amp;quot;Erlangt ein Angreifer Kenntnis von einer solchen gültigen, aber nicht mehr genutzten SessionID, so kann er die Web-Anwendung im Sicherheitskontext des nicht abgemeldeten Benutzers weiter verwenden.&amp;quot; (G 5,WA12 Unzureichendes Session-Management von Web-Anwendungen)&lt;br /&gt;
Verbesserungsansansatz: ... so kann er die Web-Anwendung anstelle des eigentlichen Besitzers weiterhin verwenden.&lt;br /&gt;
&lt;br /&gt;
== &amp;quot;G 2.WA01 Mangelhafte Auswahl oder Konzeption von Web-Anwendungen&amp;quot; (Matthias) ==&lt;br /&gt;
&lt;br /&gt;
Nachdem ich mir diese Gefährdung durchgelesen hatte, fehlten mir ehrlich gesagt etwas die Worte. Nicht nur, dass hier fast jeder zweite Satz entweder falsch ist bzw. massive Fehler enthält oder ich diesen schlicht nicht verstehe, ist der ganze Text sprachlich wirklich enorm verbesserungsfähig. &lt;br /&gt;
&lt;br /&gt;
Na gut, ich konzentriere mich mal auf die fachlichen Punkte:&lt;br /&gt;
&lt;br /&gt;
; 1. Security Controls&lt;br /&gt;
Werden mal mit &amp;quot;Schutzmechanismen&amp;quot;, mal mit &amp;quot;Sicherheitskomponenten&amp;quot; und dann wieder als &amp;quot;Sicherheitsfunktionen&amp;quot; bezeichnet. Hier macht eine einheitliche Benennung sicherlich Sinn und ist weniger verwirrend.&lt;br /&gt;
&lt;br /&gt;
; 2. &amp;quot;Eine Web-Anwendung ist in der Regel ein verteiltes, komplexes System bestehend aus unterschiedlichen Komponenten (z. B. Webserver, Applikationsserver, Hintergrundsysteme)&amp;quot;&lt;br /&gt;
&lt;br /&gt;
Eine Webanwendung besteht sicher nicht aus einem Webserver- oder anderer infrastruktureller Komponenten, sondern ist Software welches diese nutzt.&lt;br /&gt;
&lt;br /&gt;
; 3. &amp;quot;Bei individuell entwickelten Web-Anwendungen sind im Allgemeinen die Frameworks, Komponenten und Schnittstellen im Rahmen der Konzeption auszuwählen und deren Einbindung und Absicherung zu betrachten....Im Gegensatz dazu ist bei der Konzeption von Web-Anwendungen auf Basis von Standardsoftware insbesondere auf die Auswahl der Software und die Konfiguration der Teilkomponenten zu achten&amp;quot;&lt;br /&gt;
&lt;br /&gt;
Wir unterscheiden im Rahmen von Webanwendungen eigentlich Free or Opensource Software (FOSS bzw. FLOSS), Standardsoftware und Individualsoftware voneinander. Wir unterscheiden nicht Frameworks von Standardsoftware. Frameworks können Teil von Standardsoftware sein, wie etwa bei SharePoint, SAP, etc, oder aber FOSS, wie etwa Spring. Die ganzen Absätze machen für mich daher keinen Sinn.&lt;br /&gt;
&lt;br /&gt;
; 4. &amp;quot;Eine Sicherheitsfunktion (z. B. Authentisierung, Autorisierung) wird nicht an einer Stelle umgesetzt und verwendet, sondern ist mehrfach in der Web- Anwendung realisiert. Wird diese Sicherheitsfunktion an den verschiedenen Stellen unterschiedlich umgesetzt, führt dies zu einem uneinheitlichen Sicherheitsniveau.&amp;quot;&lt;br /&gt;
&lt;br /&gt;
Natürlich ist die mehrfache Verwendung bestimmter Security Controls, beispielsweise von Zugriffskontrollen (Complete-Mediation) oder Validierung (Robustheit) erstrebenswert. Was der Autor hier wahrscheinlich meinte, war die Notwendigkeit diese zu Kapseln bzw. zu Externalisieren. Das bezieht sich im übrigen nicht nur auf die Controls selbst, sondern auch auf ihre Parametrisierung (etwa. über Konfigdateien / XACML).&lt;br /&gt;
&lt;br /&gt;
Wichtiger wäre in diesem Zusammenhang zudem die fehlende Berücksichtigung bestimmter Security Controls.&lt;br /&gt;
&lt;br /&gt;
; 5. &amp;quot;Auswahl von Web-Anwendungen auf Basis von Standardsoftware&amp;quot;&lt;br /&gt;
Was will der Satz sagen? Ich wähle Standardsoftware aus, aber doch keine Webanwendungen. Oder heißt das, ich kaufe eine existierende Anwendung ein (Webanwendung!=Indivudualsoftware)? &lt;br /&gt;
&lt;br /&gt;
; 6. &amp;quot;Das ausgewählte Produkt verfügt nicht über die ausreichende Sicherheitsfunktionalität, ... Daher müssen die notwendigen Schutzmechanismen nachträglich hinzugefügt werden, wodurch zusätzliche Aufwände entstehen.&amp;quot;&lt;br /&gt;
Das ist etwas sehr positiv formuliert. Tatsächlich können fehlende Security Controls in zugekaufter Software (insb. Standardsoftware) in der Realität häufig gar nicht hinzugefügt werden oder nur perimetrisch (z.B. per WAF oder Access Gateway).&lt;br /&gt;
&lt;br /&gt;
; 7. &amp;quot;Die Hintergrundsysteme werden unzureichend abgesichert und dadurch ist die Datenbank der Web-Anwendung aus dem Internet erreichbar.&amp;quot;&lt;br /&gt;
Gehören fehlende Netzwerksegmentierung bzw. Firewallregeln wirklich in diesen Kontext? Das ist doch eigentlich Grundschutz der Infrastruktur, oder?&lt;br /&gt;
&lt;br /&gt;
; 8. &amp;quot;Aufgrund schwacher Parameter in der Konfiguration des Frameworks zum Session-Management werden unsichere SessionIDs erzeugt.&amp;quot;&lt;br /&gt;
Was sind &amp;quot;schwache&amp;quot; Parameter?&lt;br /&gt;
&lt;br /&gt;
Welches Framework erlaubt unsichere SessionIDs durch eine &amp;quot;schwache&amp;quot; Konfiguration zu erzeugen?&lt;br /&gt;
&lt;br /&gt;
; 9. &amp;quot;Wird die Konfiguration des Web-Browsers durch einen Angreifer manipuliert, können die clientseitig umgesetzten&amp;quot;&lt;br /&gt;
&lt;br /&gt;
Manipuliert ein Angreifer die Konfguration seines Webbroswers, wenn er einen MITM-Proxy konfiguriert?&lt;br /&gt;
&lt;br /&gt;
Wie bereits bei den &amp;quot;Goldenen Regeln&amp;quot; angemerkt, gilt auch hier, das manche Security Controls auch clientseitig umgesetzt werden dürfen (etwa. zur Verhinderung von Dom-Based XSS).&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== &amp;quot;G 5.WA10 Fehler in der Web-Anwendungslogik&amp;quot; (Dennis) ==&lt;br /&gt;
; 1. &amp;quot;Damit kann aufgrund der Prüfreihenfolge ein hoher Ressourcenverbrauch provoziert werden, der für Denial-of-Service-Angriffe ausgenutzt werden kann.&amp;quot;&lt;br /&gt;
Meiner Meinung nach passt in diesem Kontext die Attacke DoS nicht ganz. Falls die nachfolgende Funktionalität wegen der langen Ausführungszeit der Filterkomponente übersprungen wird bzw. ein Fehler auftritt würde dies meiner Ansicht in die Thematik Anwendungslogik passen. Eine DoS-Attacke kann hingegen anhand jeder Funktion durchgeführt werden.&lt;br /&gt;
&lt;br /&gt;
== &amp;quot;G 5.WA11 Umgehung clientseitig umgesetzter Sicherheitsfunktionen von Web-Anwendungen&amp;quot; (Dennis) ==&lt;br /&gt;
; 1. &amp;quot;Ein Angreifer kann diese ausnutzen, um beispielsweise unbefugt Befehle an Hintergrundsysteme der Web-Anwendung zu übermittlen (z.B. in Form von Datenbankanfragen bei einer SQL-Injection).&amp;quot;&lt;br /&gt;
Umformulierung des Inhalts der Klammer. Hatte beim ersten Lesen für mich den Anschein, als ob ein Formular genutzt werden könnte welches den Nutzer aufforder eine SQLI einzugeben. Ich denke &amp;quot;Datenbankanfrage zwecks Ausführung einer SQL-Injection&amp;quot; würde besser passen.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== G 2.WA02 Mängel bei der Entwicklung und der Erweiterung von Web-Anwendungen (Matthias) ==&lt;br /&gt;
&lt;br /&gt;
Allgemein ist de obere Teil ok, die aufgezählten &amp;quot;Auswirkungen von fehlenden Vorgaben&amp;quot; verstehe ich jedoch nicht. Wo ist etwa der Bezug von Barrierefreiheit auf die Anwendungssicherheit?&lt;br /&gt;
&lt;br /&gt;
Mein Vorschlag, um diese Punkte etwa sinnvoll umzubauen:&lt;br /&gt;
* &amp;quot;Fehlendes Vorgehensmodell&amp;quot;: Bezug auf fehlende Berücksichtigung von Sicherheit im SDLC. Statt eines SDLCs selbst sollte hier besser auf die Notwendigkeit eines Secure Development Lifecycle (SDL) hingewiesen werden&lt;br /&gt;
* &amp;quot;Fehlende Programmierrichtlinien&amp;quot; =&amp;gt; Besser wäre hier &amp;quot;Fehlende Sicherheitsrichtlinien in der Programmierung&amp;quot; also &amp;quot;Secure Coding Guidelines&amp;quot;&lt;br /&gt;
* &amp;quot;Testfälle&amp;quot; =&amp;gt; &amp;quot;Sicherheitsrelevante Testfälle&amp;quot; (z.B. Security Unit Tests). &lt;br /&gt;
* &amp;quot;Barrierefreiheit&amp;quot;: Warum nicht an dieser Stelle die Auswirkungen von Sicherheitsfunktionen auf die Bedienbarkeit, etwa anhand von CAPTCHAS erläutern?&lt;br /&gt;
&lt;br /&gt;
== G 2.WA03 Unzureichender Schutz personenbezogener Daten bei Web-Anwendungen (Matthias) ==&lt;br /&gt;
&lt;br /&gt;
Der Titel dieses Bausteines heißt &amp;quot;Schutz personenbezogener Daten&amp;quot;, die genannten Beispiele beziehen sich bis auf den letzten jedoch auf die missbräuchliche (oder zumindest problematische) Nutzung aus Sicht des Datenschutzes. &lt;br /&gt;
&lt;br /&gt;
Die Punkt 1-3 sollten daher besser entfallen und z.B. durch die Folgenden ersetzt werden:&lt;br /&gt;
* Unsichere Einbindung von sozialen Netzwerken (Bezug nehmen auf den Like-Button bei Facebook)&lt;br /&gt;
* Unsichere Einbindung von Werbeinhalten&lt;br /&gt;
* Unsichere Übertragung und Caching&lt;br /&gt;
* Unsichere Protokollierung&lt;br /&gt;
* Ungenügender Zugriffsschutz&lt;br /&gt;
* Verstoß des Minimalprinzips bzw. der Zweckgebundenheit (welche Daten werden wirklich benötigt)&lt;br /&gt;
&lt;br /&gt;
Auch wäre es ggf. zumindest einen Verweis auf das BDSG zu machen.&lt;br /&gt;
&lt;br /&gt;
== G 4.33 Unzureichende oder fehlende Authentisierung (Matthias) ==&lt;br /&gt;
&lt;br /&gt;
; 1. Erster Absatz: &amp;quot;Wenn Authentisierungsmechanismen fehlen oder zu schlecht sind&amp;quot;&lt;br /&gt;
&lt;br /&gt;
&amp;quot;schlecht&amp;quot; sollte vlt besser durch &amp;quot;unzureichend&amp;quot; ersetzt werden.&lt;br /&gt;
&lt;br /&gt;
; 2. &amp;quot;Sicherheitslücken entstehen bei... der Benutzerauthentisierung&amp;quot;&lt;br /&gt;
&lt;br /&gt;
Hier findet nur ein Bezug auf &amp;quot;Passwörter&amp;quot; statt. Der Bezug auf die fehlerhaft implementierte oder dem Schutzbedarf ungenügende Schutzmechanismen (z.B. keine 2-Faktor-Authentisierung bei hochsensiblen Daten) fehlt. Auch auf das komplette fehlen von Authentisierungs-Controls wird hier nicht  eingegangen&lt;br /&gt;
&lt;br /&gt;
; 3. &amp;quot;Sicherheitslücken entstehen bei... der Komponentenauthentisierung&amp;quot;&lt;br /&gt;
&lt;br /&gt;
Wie bei 2., wird auch hier wieder nur auf Passwörter, nicht jedoch auf das fehlen von Controls selbst eingegangen. An dieser Stelle fehlt auch ein Hinweis auf die Notwendigkeit dedizierter Benutzeraccounts.&lt;br /&gt;
&lt;br /&gt;
; 4. &amp;quot;Sicherheitslücken entstehen bei... der Wahl des Verfahrens&amp;quot;&lt;br /&gt;
&lt;br /&gt;
Statt untauglich würde ich auch hier von &amp;quot;dem Schutzbedarf der Daten nicht angemessen&amp;quot; sprechen, eigentlich gehört das für mich aber in die obigen Punkte.&lt;br /&gt;
&lt;br /&gt;
; 5. Serverseitige Authentisierung fehlt&lt;br /&gt;
&lt;br /&gt;
Auch der Server (bzw. die Anwendung selbst) kann sich fehlerhaft oder ungenügend beim Benutzer authentsieren, etwa über DNS, SSL-Zertifikate, etc.&lt;br /&gt;
&lt;br /&gt;
== G 4.WA04 Unzureichende Validierung von Ein- und Ausgabedaten bei Web-Anwendungen (Matthias) ==&lt;br /&gt;
&lt;br /&gt;
; 1. &amp;quot;Unzureichende Validierung von Eingabedaten&amp;quot;&lt;br /&gt;
&lt;br /&gt;
Die genannten Beispiele sind genau keine korrekten Beispiele für diesen Fall, sondern betreffen die Ausgabevalidierung bzw. Enkodierung. Typische Fehler der Eingabevalidierung ist eine Manipulierbarkeit der Business Logik.&lt;br /&gt;
&lt;br /&gt;
; 2. &amp;quot;Unzureichende Validierung von Ausgabedaten&amp;quot;&lt;br /&gt;
&lt;br /&gt;
Hier geht es zentral um die Verhinderung von Interpreter Injection, also serverseitig (z.B. SQL oder LDAP Injection) oder clientseitig (XSS, JSON Injection, etc.). Statt &amp;quot;können die Ausgaben Schadcode&amp;quot; enthalten würde ich hier eher davon Sprechen, dass ein solcher Interpreteraufruf manipuliert werden kann (was dann z.B. zur Einschleusung von Schadcode genutzt werden kann).&lt;br /&gt;
&lt;br /&gt;
; 3. &amp;quot;Die Suchfunktion der Web-Anwendung verwendet die Eingaben der Benutzer ungefiltert&amp;quot;&lt;br /&gt;
&lt;br /&gt;
Mit ungenügender &amp;quot;Filterung&amp;quot; hat SQL Injection nichts zu tun,  eigentlich geht es hierbei darum, dass SQL-Anfragen dynamisch mit unvalidierten Eingebedaten zusammengebaut (konkateniert) werden.&lt;br /&gt;
&lt;br /&gt;
; 4. &amp;quot;Ungefilterter HTML-Code in Kommentar-Funktion&amp;quot;&lt;br /&gt;
&lt;br /&gt;
Hier fehlt der Bezug auf persistentes XSS, das hier sicherlich zentral ist.&lt;br /&gt;
&lt;br /&gt;
== G 4.WA05 Fehlende oder mangelhafte Fehlerbehandlung durch Web-Anwendungen (Tobias) ==&lt;br /&gt;
; Abschnitt &amp;quot;Unsichere Fehlerbehandlung&amp;quot;&lt;br /&gt;
Die G adressiert &amp;quot;Unsichere Fehlerbehandlung&amp;quot;, der Abschnitt die &amp;quot;Unsichere Fehlerbehandlung in Sicherheitskomponenten&amp;quot;. Entsprechend sollte der fettgedruckte Teil angepasst werden.&lt;br /&gt;
&lt;br /&gt;
; &amp;quot;fehlende SQL-Parameter,&amp;quot;&lt;br /&gt;
Sollte besser &amp;quot;Fehlermeldungen bei ungültigen SQL-Abfragen&amp;quot; lauten.&lt;br /&gt;
&lt;br /&gt;
; &amp;quot;Auch scheinbar unkritische Informationen, wie die Meldung ob (..)&amp;quot;&lt;br /&gt;
Korrekt, allerdings nicht nachvollziehbar, wenn das Problem der Leser nicht schon bekannt ist. Daher erweitern nach &amp;quot; Rahmen von Brute-Force-Angriffen ausgenutzt werden.&amp;quot; mit &amp;quot;. Bei Brute-Force-Angriffen wäre in diesem Fall klar, dass der Benutzername gültig ist.&amp;quot; &lt;br /&gt;
&lt;br /&gt;
== G 4.WA06 Unzureichende Nachvollziehbarkeit von sicherheitsrelevanten Ereignissen bei Web-Anwendungen (Matthias) ==&lt;br /&gt;
&lt;br /&gt;
; 1. Erster Absatz: &amp;quot;Die Behebung einer Schwachstelle ist dann nicht oder nur unter erschwerten Bedingungen möglich.&amp;quot;&lt;br /&gt;
&lt;br /&gt;
Hier würde ich ergänzen: &amp;quot;...und Angriffe auf die Anwendungen können ggf. nicht erkannt oder nachvollzogen werden&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
; 2. &amp;quot;Beispiele&amp;quot;: Kommulierbarkeit&lt;br /&gt;
&lt;br /&gt;
Hier fehlt auch ein Bezug auf die Kommulierbarkeit von SIcherheitsereignissen, dass diese also auch von solchen anderer Systeme in Verbindung gesetzt werden können&lt;br /&gt;
&lt;br /&gt;
; 3. &amp;quot;Beispiele&amp;quot;: Gerichtsverwertbarkeit&lt;br /&gt;
&lt;br /&gt;
Auch die Möglichkeit zur Gerichtsverwertbarkeit (etwa durch eindeutigen Zeitstempel) und manipulationssicherer Speicherung, würde ich an dieser Stelle unbedingt erwähnen.&lt;br /&gt;
&lt;br /&gt;
== G 4.WA07 Offenlegung von Informationen bei Web-Anwendungen (Matthias) ==&lt;br /&gt;
&lt;br /&gt;
; 1. Titel&lt;br /&gt;
&lt;br /&gt;
Hier würde ggf. &amp;quot;Offenlegung vertraulicher Informationen&amp;quot; sicher besser passen als &amp;quot;Offenlegung von Informationen&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
; 2. Beispiellink&lt;br /&gt;
&lt;br /&gt;
Ein Beispiellink (mit und ohne Token) würde sicher die Verständlichkeit dieser Schwachstelle verbessern.&lt;br /&gt;
&lt;br /&gt;
; 3. Erster Absatz: &amp;quot;Wenn demzufolge Informationen unnötig offengelegt werden, steigt die Wahrscheinlichkeit eines erfolgreichen Angriffs.&amp;quot;&lt;br /&gt;
&lt;br /&gt;
Interne Informationen auszublenden ist eine Härtungsmaßnahme, deren Anzeige erhöht aber nicht zwangsläufig die Wahrscheinlichkeit eines erfolgreichen Angriffs. Ich würde diesen Satz weglassen.&lt;br /&gt;
&lt;br /&gt;
 ; 4. Fehlende Punkte&lt;br /&gt;
&lt;br /&gt;
* Ein Hinweis auf HTTP Header wäre hier sicher erwähnenswert.&lt;br /&gt;
* Weiterhin bzgl. der Anzeige von Traces und ein Verweis auf den Entsprechenden Baustein zur Fehlerbehandlung&lt;br /&gt;
&lt;br /&gt;
== G 5.WA14 Cross-Site Request Forgery (CSRF, XSRF) (Matthias) ==&lt;br /&gt;
&lt;br /&gt;
; 1. Erster Absatz: &amp;quot;Können Funktionen einer Web-Anwendung ohne weitere Überprüfung der Authentizität des HTTP-Requests (z.B. durch Tokens in versteckten Formularfeldern) genutzt werden&amp;quot;&lt;br /&gt;
&lt;br /&gt;
Statt &amp;quot;Funktionen&amp;quot; würde ich besser von &amp;quot;schreibenden Aktionen&amp;quot; sprechen, dann macht der Satz mehr Sinn.&lt;br /&gt;
&lt;br /&gt;
; 2. Dritter Absatz: &amp;quot;Im Gegensatz zu XSS (siehe ...￼ ) ist das Angriffsziel nicht die Information auf dem Client (z. B. in Cookies),&amp;quot;&lt;br /&gt;
&lt;br /&gt;
Dieser (Halb-)Satz macht keinen Sinn, auch weil es bei XSS nicht nur im Informationen auf dem Cient geht. Vorschlag: &amp;quot;ist das Angriffsziel nicht die Ausführung von Skriptcode, sondern von unbefugten, schreibenden Aktionen im Kontext des angemeldeten Benutzers.&amp;quot;&lt;br /&gt;
&lt;br /&gt;
; 3. Session Riding&lt;br /&gt;
&lt;br /&gt;
Session Riding ist quasi nur ein anderer Begriff für CSRF. Die einzige Form von CSRF die mir bekannt ist, sind Angriffe mit Standard-Passwörtern auf HTTP-Basic-Auth geschützten Ressourcen.&lt;br /&gt;
&lt;br /&gt;
Im Grunde ist Session Riding aber nur ein Synonym für CSRF. Der Absatz ist daher auch nur eine Wiederholung der obigen Beschreibung.&lt;br /&gt;
&lt;br /&gt;
; 4. Zum Beispiel: &amp;quot;Durch einen präparierten Link auf einer Webseite wird die Änderung des Zugangspasswortes des Routers eingeleitet.&amp;quot;&lt;br /&gt;
&lt;br /&gt;
Etwas ungüngstig ausgedrückt. Besser wäre: &amp;quot;wird eine Anfrage zur Änderung des Zugangspasswortes an den Router gesendet. Hierbei sendet der Browser automatisch den Session Cookie mit, worüber die Webanwendung die Authentizität der Anfrage verifiziert und die Änderung durchführt.&amp;quot;&lt;br /&gt;
&lt;br /&gt;
== G 5.WA18 Clickjacking (Matthias) ==&lt;br /&gt;
&lt;br /&gt;
Hier stellt sich mir nur die allgemeine Frage, ob Clickjacking, bzw. der Schutz davor tatsächlich einem Grundschutz zuzurechnen ist. Persönlich würde ich dies nicht tun.&lt;br /&gt;
&lt;br /&gt;
== M 2.WA02 Dokumentation der Architektur von Web-Anwendungen (Matthias) ==&lt;br /&gt;
&lt;br /&gt;
; Verantwortlich für die Umsetzung&lt;br /&gt;
Hier wäre auch die Nennung des &amp;quot;Architekten&amp;quot; sinnvoll&lt;br /&gt;
 &lt;br /&gt;
; Fehlende Bestandteile der Dokumentation:&lt;br /&gt;
* Schutzbedarf des Systems sowie der verarbeiteten Daten&lt;br /&gt;
* Schützenswerte Daten und Funktionen (Assets)&lt;br /&gt;
* Betriebliche Anforderungen an die Sicherheit bzw. eingesetzte Plattform&lt;br /&gt;
* Dokumentierte Konfigurationseinstellungen &lt;br /&gt;
* BIA (RTO, RPO)&lt;br /&gt;
* Schnittstellen&lt;br /&gt;
* Trust Boundaries&lt;br /&gt;
* Akteure (bzw. Trust Level)&lt;br /&gt;
* Sicherheitsannahmen&lt;br /&gt;
* Geltende Compliance-Anforderungen (BDSG, PCI DSS, etc.)&lt;br /&gt;
&lt;br /&gt;
; Benutzermanagement&lt;br /&gt;
&lt;br /&gt;
Wenn damit das Identity Management gemeint ist, gehört das Dokumentiert, ist aber keine Sicherheitsfunktion. Oder ist hiermit das Rollen- und Berechtigungskonzept gemeint? Grenzt sich aus meiner Sicht schwer mit dem Thema Authentisierung ab. &lt;br /&gt;
&lt;br /&gt;
; Prüffragen&lt;br /&gt;
&lt;br /&gt;
Hier fehlt etwas in Bezug auf Sicherheitsanforderungen. Beispiel: &amp;quot;Werden Sicherheitsanforderungen an den Betrieb während der Entwicklung abgestimmt und dokumentiert&amp;quot;&lt;br /&gt;
&lt;br /&gt;
== M 2.WA12 Entwicklung und Erweiterung von Anwendungen (Markus) ==&lt;br /&gt;
; &amp;quot;Es sollte darauf geachtet werden, dass Sicherheitsanforderungen&lt;br /&gt;
vollständig durch Sicherheitsmechanismen erfüllt und zur Erstellung von&lt;br /&gt;
Testfällen festgehalten werden.&amp;quot; --&amp;gt; Bessere Formulierung würde aussagen, dass die Sicherheitsanforderungen durch Testfälle verifiziert werden.&lt;br /&gt;
&amp;quot;(z. B. durch Kommentare im&lt;br /&gt;
Quelltext). Somit ist der Quelltext zu einem&amp;quot; --&amp;gt; Das ist kein empfehlenswerter Programmierstiel! Raus mit diesem Kommentar&lt;br /&gt;
;&amp;quot;Zum Schutz vor dem Verlust bereits entwickelter und verworfener&lt;br /&gt;
Lösungen sowie zu Dokumentationszwecken sollte die Historie der&lt;br /&gt;
Änderungen festgehalten werden (z. B. durch ein Revisionssystem).&amp;quot; --&amp;gt; Auch diesen Absatz können wir streichen - Kein professioneller Programmierer arbeitet ohne Versionierugssystem.&lt;br /&gt;
;&amp;quot;Bei Web-Anwendung sollten die Webseiten auf Konformität zu dem&lt;br /&gt;
verwendeten Standard (z. B. HTML-Standard) getestet werden. Dadurch&lt;br /&gt;
können unvorgesehene Seiteneffekte aufgrund einer Fehlinterpretation&lt;br /&gt;
seitens der Browser vermieden werden.&amp;quot; --&amp;gt; Könnte man noch um &amp;quot;Die Software ist in möglichst vielen Browsern zu testen&amp;quot; erweitern.&lt;br /&gt;
;Generell geht der Autor leider nicht auf die Rollen &amp;amp; Rechte Verteilung ein. Mir fehlt der Hinweis, das es eine personelle Trennung zwischen Entwicklung, Test und Betrieb geben muss.&lt;br /&gt;
;Zum Thema Wartung / Betrieb --&amp;gt; Hier wird keine Aussage getroffen bezüglich Log_Files. Dieses Thema kann kritische Auswirkungen haben, Bsp.: logging ganzer HTTP-Requests im LogLevel=Debug.&lt;br /&gt;
; &amp;quot;Produktspezifische Sicherheitsfunkionalität&amp;quot; - Dieser Absatz ist gefährlich - der Angreifer ist nicht zur Verwendung dies Zielbrowsers gezwungen. Deshalb können Browser-spez. Sicherheitsfunktionen nur als Add-ON gewertet werden.&lt;br /&gt;
; &amp;quot;Festlegung der Entwicklungsumgebung&amp;quot; - Dieser Absatz geht nicht auf die zu verwendenden Testdaten ein. Der Hinweis, dass Live-Daten / Kundendaten nichts in Test- &amp;amp; Entwicklungsumgebungen zu suchen haben fehlt!!!&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== M 2.WA24 Web-Tracking (Matthias) ==&lt;br /&gt;
&lt;br /&gt;
; Letzter Absatz: &amp;quot;Falls eine Auswertung von Nutzerdaten, insbesondere personenbezogener Daten, .. &amp;quot;&lt;br /&gt;
&lt;br /&gt;
Hier sollte denke ich besser von personenbeziehbaren Daten gesprochen Werten. Dies betrifft etwa die Zuordnung von Surfverhalten zu einer bestimmten Person. Dies sollte stets nach den Prinzipien Datensparsamkeit und Datenvermeidung, Erforderlichkeit, sowie Zweckbindung erfolgen. Ist Webtracking nicht personenbeziehbar ist dies kein Thema für den Datenschutz.&lt;br /&gt;
&lt;br /&gt;
== M 4.WA04 Authentisierung bei Web- Anwendungen (Matthias) ==&lt;br /&gt;
&lt;br /&gt;
; Vermischung von Authentisierung und Session Management &lt;br /&gt;
&lt;br /&gt;
Bei diesem Baustein findet eine ziemlich große Vermischung von Anforderung an die Authentisierung und das erst in &amp;quot;M 4.WA06 Session-Management bei Web- Anwendungen&amp;quot; behandelte Session Management statt (Beispiel: &amp;quot;Remember-Me-Funktion&amp;quot;). Beide Themen sollten sinnvollerweise getrennt voneinander zu betrachten und aufeinander zu beziehen.&lt;br /&gt;
&lt;br /&gt;
; Verwendung von Frameworks&lt;br /&gt;
&lt;br /&gt;
Die Anforderung ist schon ein wenig eingeschränkt. Besser passt hier denke ich die &amp;quot;Abbildung der Authentisierung über Standardkomponenten (Bibliotheken oder Frameworks)&amp;quot;. &lt;br /&gt;
&lt;br /&gt;
; Remember-Me-Funktion&lt;br /&gt;
&lt;br /&gt;
Siehe oben, gehört zum Session Management. Das ließt sich im übrigen so, als ob eine Webanwendung Credentials auf dem Client abhängt. &lt;br /&gt;
&lt;br /&gt;
; Grenzwerte für gescheiterte Anmeldeversuche&lt;br /&gt;
&lt;br /&gt;
Diese Empfehlung ist allgemein falsch, da sie sehr von der betrachteten Anwendung abhängt. Besser wäre hier allgemein von Mechanismen zur Verhinderung von automatisierten Angriffen zu sprechen (Anti-Automatisierung). &lt;br /&gt;
&lt;br /&gt;
Etwa umsetzbar durch&lt;br /&gt;
* Sperrung nach x Anmeldeversuchen&lt;br /&gt;
* Throttling&lt;br /&gt;
* Captchas&lt;br /&gt;
* Sicherheitsfragen&lt;br /&gt;
&lt;br /&gt;
Das allgemeine Sperren kann leicht für das gezielte Aussperren von Benutzern (User Lockout) verwendet werden. Was etwa bei Trading-Anwendungen nicht funktioniert.&lt;br /&gt;
&lt;br /&gt;
; Automatisiertes Zurücksetzen von Authentisierungsdaten&lt;br /&gt;
&lt;br /&gt;
Würde ich besser als &amp;quot;Passwort-Reset&amp;quot; bezeichnen.&lt;br /&gt;
&lt;br /&gt;
Weiterhin fehlt hier der Hinweis, dass statt ein automatisiertes Zurücksetzen, ein Mechanismus zu empfehlen ist, bei dem über ein hinterlegtes Sicherheitsmerkmal (Handy-Nummer oder E-Mail-Adresse) vom Benutzer zunächst eine Verifikation durchgeführt wird. Beispielsweise durch einen erhaltenen Link. Erst dann darf eine Änderung des Passwortes durch den Benutzer erfolgen.&lt;br /&gt;
&lt;br /&gt;
; Registrierung nicht behandelt&lt;br /&gt;
&lt;br /&gt;
Es existiert hier kein Punkt, der die sichere Implementierung von Benutzerregistrierungen behandelt.&lt;br /&gt;
&lt;br /&gt;
; Verweis auf Externalisierung fehlt.&lt;br /&gt;
&lt;br /&gt;
Statt die Authentisierung selbst durchzuführen kann eine Anwendung hierzu auf eine externe Komponente (Beispiel: SiteMinder oder Kerberos) zurückgreifen.&lt;br /&gt;
&lt;br /&gt;
; Verweis auf Behandlung von Credentials fehlt&lt;br /&gt;
&lt;br /&gt;
Auch wenn das  in &amp;quot;M 4.WA15 Schutz vertraulicher Daten bei Web- Anwendungen&amp;quot; ausführlich behandelt wird, sollte in diesem Baustein bereits auf den angemessenen Schutz von Authentisierungsdaten bei Übertragung und Speicherung hingewiesen werden.&lt;br /&gt;
&lt;br /&gt;
== M 4.WA05Umfassende Ein- und Ausgabevalidierung bei Web-Anwedungen (Markus) ==&lt;br /&gt;
; &amp;quot;Ablehnung der Daten im&lt;br /&gt;
Fehlerfall&amp;quot; --&amp;gt; Hier könnte man noch auf Tar-Pits eingehen - nur ein Vorschlag.&lt;br /&gt;
&lt;br /&gt;
== M 4.WA06Session-Management bei Web-Anwendungen (Markus) ==&lt;br /&gt;
; &amp;quot;Übertragung der SessionID mittels GETRequest&amp;quot; --&amp;gt; Hier fehlt der Hinweis, dass die Lebensdauer dieser SessionIds kurz/kürzer sein muss, als im Falle der Speicherung im Cookie.&lt;br /&gt;
&lt;br /&gt;
([[User:Mrohr|Matthias]]) Die Anmerkung verstehe ich ehrlich gesagt ueberhaupt nicht, zumal das SM haeufig transparent zwischen Cookies und URL Rewriting wechselt. Wozu soll das gut sein? Wie soll das geschehen? Idealerweise sollte die Session ID niemals in die URL geschrieben werden, das sollte eigentlich genuegen.&lt;br /&gt;
&lt;br /&gt;
; &amp;quot;Verschlüsselte Übertragung von SessionIDs&amp;quot; --&amp;gt; Hier fehlt der Hinweis auf den Beast-Exploit. TLS Version &amp;gt; 1.0 verwenden!&lt;br /&gt;
&lt;br /&gt;
([[User:Mrohr|Matthias]]) Solange hier nicht auf eine explizite TLS Version eingegangen wird, sollte meiner grossen Ueberzeugung nach hier auch auf keine Exploits etc. eingagen werden, das gehoert an andere Stelle.&lt;br /&gt;
&lt;br /&gt;
([[User:Mrohr|Matthias]]) Weiterhin:&lt;br /&gt;
&lt;br /&gt;
; Es dürfen keine extern bekannten oder erratbaren Daten (z. B. IP-Adresse,&lt;br /&gt;
Uhrzeit) in die Berechnung der SessionID einfließen.&lt;br /&gt;
&lt;br /&gt;
Die Aussage finde ich etwas problematisch, wichtiger ist, dass die Entropie ausreichend hoch ist. Haeufig werden etwa IPs von Load Balancern in die Session ID hineingeschrieben.&lt;br /&gt;
&lt;br /&gt;
; - Domain (z. B. webapp.domain.tld),&lt;br /&gt;
; Path (z. B. /webapp/),&lt;br /&gt;
; - Secure und&lt;br /&gt;
; - HttpOnly.Beschränkte Sitzungsdauer&lt;br /&gt;
&lt;br /&gt;
Das sieht so aus, als ob es empfehlenswert ist, das Domain-Tag zu verwenden, das ist es sicherlich nicht. Was macht hier der Hinweis &amp;quot;Beschraenke Sizuungsdauer&amp;quot;?&lt;br /&gt;
&lt;br /&gt;
== M 4.WA07Fehlerbehandlung durch Web-Anwendungen (Markus) ==&lt;br /&gt;
; Konsistenter / Inkonsistener Zustand einer Webanwendung und der daraus resultierende Datenverlust: Hier fehlen mir die Punkte: DOS, Priv.Escalation, CodeExecution.&lt;br /&gt;
; Vermeidung vertraulicher Informationen in Fehlermeldungen --&amp;gt; Fehlermeldungen sollten ebenfalls eine Systeminformationen preisgeben (Softwareversion, Patchlevel, etc.)&lt;br /&gt;
; Abbruch des Vorgangs nach Auftreten eines Fehlers --&amp;gt; TarPits scheinen dem Autor umbekannt zu sein :)&lt;br /&gt;
; &amp;quot;Werden Fehler möglichst von der gleichen Komponente behandelt, in der&lt;br /&gt;
der Fehler aufgetreten ist?&amp;quot; --&amp;gt; Das &amp;quot;möglichst&amp;quot; sollten wir streichen.&lt;br /&gt;
&lt;br /&gt;
== M 4.WA08Schutz vor automatisierter Nutzung von Web-Anwendungen (Markus) ==&lt;br /&gt;
; &amp;quot;Brute-Force-&lt;br /&gt;
Angriffe (z. B. Erraten von Zugangsdaten) und Enumeration-Angriffe (z. B.&lt;br /&gt;
automatisiertes Ermitteln von gültigen Login-Namen)&amp;quot; -- die Beispiele sind identisch - besser Beispiele suchen, z.b. URL-Enumeration&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== M 4.WA11Sichere Konfiguration von Web-Anwendungen (Markus) ==&lt;br /&gt;
; &amp;quot;Sicherer Umgang mit TLS/SSL&amp;quot; -- Hier fehlt der Hinweis, dass TLS-1.0 gebrochen ist&lt;br /&gt;
; &amp;quot;Zeichenkodierungskonfiguration&amp;quot; -- Ein Whitelisting abhängig von der Encodierung wäre ein weiterer Vorschlag&lt;br /&gt;
; &amp;quot;Restriktive Dateisystemberechtigungen&amp;quot; -- auch wenn es ein klassiker ist - der AS sollte ebenfalls mit von einem eingeschränkten Nutzer gestartet werden und nicht als root&lt;br /&gt;
; Administration Consolen:zur Ergänzen: Wenn diese nicht benötigit, sollten derartige Applikationen nicht deployed werden, unabhängig von möglichen Zugangsbeschränkungen.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== M 4.WA13Kontrolliertes Einbinden von Daten und Inhalten bei Web-Anwendungen (Markus) ==&lt;br /&gt;
; Datei-Upload: Bei einem Upload werden Dateien durchaus in TEMP-Verzeichnissen gesammelt und danach weiterverarbeitet. Diese TEMP-Verzeichnisse sind im Rahmen einer Sicherheitsanalyse zu betrachten -&amp;gt; Möglicher (unbefugter) Zugriff auf weitere Uploads&lt;br /&gt;
; Upload komprimierter Dateien / großer Dateien birgt die Gefahr von DOS Angriffen&lt;br /&gt;
; Upload von Dateien kann bei weiterem Parsing zu Speicherengpässen führen --&amp;gt; DOS-Angriffe auf Thread-Local etc.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== M 4.WA14Restriktive Herausgabe sicherheitsrelevanter Informationen bei Web-Anwendungen (Markus) ==&lt;br /&gt;
OK - Keine Anmerkungen von mir.&lt;br /&gt;
&lt;br /&gt;
== M 4.WA15Schutz vertraulicher Daten bei Web-Anwendungen (Markus) ==&lt;br /&gt;
; Sichere kryptographische Algorithmen:&lt;br /&gt;
 Hier fehlt mir eine Liste der aktuelle als sicher geltenden Verfahren.&lt;br /&gt;
; Schlüssel&lt;br /&gt;
 Das die Schlüssel bestimmten Formaten entsprechen müssen ist ok - aber das Schlüsselmanagement wird gar nicht besprochen?&lt;br /&gt;
; Schutz der Daten im Browsercache&lt;br /&gt;
 Skripte und Browserplugins können ebenfalls auf den Browsercache zugreifen - diese werden hier nicht erwähnt.&lt;br /&gt;
; Maskierung von Passwörtern &lt;br /&gt;
 Dies schützt bei der Eingabe nur vor ShoulderSurfing nicht vor Skripten oder Plugins die diese an andere Server posten.&lt;br /&gt;
; Sicherung von Zugangsdaten:&lt;br /&gt;
 Zugangsdaten in einer Datei abzulegen - wenn auch ausserhalb des WebRoots ist keine gute Idee.&lt;br /&gt;
; Schutz von Quelltexten:&lt;br /&gt;
 Hier würde ich property files mit aufnehmen. der hinweis auf web-inf/classes fehlt - warum?&lt;br /&gt;
 Bei include-befehlen sind die pfadangaben zu überdenken.&lt;br /&gt;
&lt;br /&gt;
== M 4.WA16Zugriffskontrolle bei Web-Anwendungen (Markus) ==&lt;br /&gt;
; Zugriffskontrolle via Frameworks:&lt;br /&gt;
 Dieser Punkt (Frameworks) wird nur in einem Satz erwähnt. Es werden keine Bespiele gegeben - Das ist zu wenig.&lt;br /&gt;
 Es müssen alle Zugriffe geschützt werden. Eine Protokollierung aller Zugriffe mit den nötigen Informationen ist ebenfalls empfehlenswert.&lt;br /&gt;
; Datei Upload:&lt;br /&gt;
 Die Gefahr eines DOS wird hier nicht erwähnt.&lt;br /&gt;
&lt;br /&gt;
== M 4.WA19Verhinderung von Cross-Site Request Forgery (CSRF, XSRF) (Markus) ==&lt;br /&gt;
; Verantwortliche: &lt;br /&gt;
 Entwickler und Admins!&lt;br /&gt;
([[User:Mrohr|Matthias]]) Korrekt, wobei auch in der Reihenfolge&lt;br /&gt;
&lt;br /&gt;
; Anti-CSRF-Token in hidden fields:&lt;br /&gt;
 Das ist keine gute Idee. Ich würde das streichen!&lt;br /&gt;
&lt;br /&gt;
([[User:Mrohr|Matthias]]) Watt? Anti-CSRF-Tokens in Hidden Fields sind die Standard-Massnahme. Wie denn sonst? Bitte nicht streichen!!! &lt;br /&gt;
&lt;br /&gt;
([[User:Mrohr|Matthias]]) Die Technik bei der die Session ID als Anti-CSRF-Token verwendet wird, wird als Double-Cookie Submit bezeichnet, das sollte hier referenziert werden.&lt;br /&gt;
&lt;br /&gt;
; Umgehung von Schutzmechanismen:&lt;br /&gt;
 Man in the middle hat keinen direkten Bezug zu CSRF! Das würde ich streichen.&lt;br /&gt;
([[User:Mrohr|Matthias]]) Der Hinweis ist korrekt. Wovon der Autor hier spricht ist Session Replay nicht CSRF.&lt;br /&gt;
&lt;br /&gt;
; Frameworks:&lt;br /&gt;
 Gute Idee - aber es gibt auch Features in den ApplicationServern die CSRF unterbinden - warum wird das nicht besprochen?&lt;br /&gt;
&lt;br /&gt;
([[User:Mrohr|Matthias]]) Sehe ich persoenlich nicht so, da CSRF primaer ein Applikations-Fehler ist, und auch in der Applikation und nicht im Environment (AppServer) geloest werden sollte. Auch wenn das manchmal ggf. die einzig machbare Loesung darstellt.&lt;br /&gt;
&lt;br /&gt;
([[User:Mrohr|Matthias]]) Was generell fehlt, ist ein Hinweis darauf, dass schreibende Requests generell per HTTP Post abgewickelt werden sollten, da HTTP Get keine &amp;quot;Safe Method&amp;quot;  (siehe HTTP 1.1, RFC 2616) ist.&lt;br /&gt;
&lt;br /&gt;
== M 4.WA20Sicherer Entwurf der Logik von Web-Anwendungen (Markus) ==&lt;br /&gt;
; Rollbacks:&lt;br /&gt;
 Tritt ein Fehler auf muss die Applikation einen konsistenten Datenstand zurück lassen. Das wird hier nicht erwähnt.&lt;br /&gt;
; RaceConditions:&lt;br /&gt;
 Fehler in der Geschäftslogik können auch durch zwei gleichzeitige Sessions auf einer Webapplikation auftreten - das wird hier nicht besprochen.&lt;br /&gt;
&lt;br /&gt;
== M 4.WA22Verhinderung der Blockade von Ressourcen (DoS) bei Web-Anwendungen (Markus) ==&lt;br /&gt;
; Datenspeicher:&lt;br /&gt;
 Neben dem Datenspeicher sollte auch der RAM-Verbrauch pro Thread der Applikation limitiert werden.&lt;br /&gt;
; Voraggregation von Daten / Caching&lt;br /&gt;
 Dieser Punkt fehlt: Stark ressourcen belastende Anfragen können auch in Lastarmen Zeiten vorberechnet werden.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== M 4.WA25Verhinderung von Clickjacking (Markus) ==&lt;br /&gt;
Ok - das passt soweit.&lt;br /&gt;
&lt;br /&gt;
== M 5.WA21Sichere Anbindung von Hintergrundsystemen an Web-Anwendungen (Markus) ==&lt;br /&gt;
; Verantwortliche:&lt;br /&gt;
 Architekten fehlen. Entwickler müssen die Views umsetzen und die Datasource entsprechend einbinden - die fehlen hier ebenfalls.&lt;br /&gt;
; DirectorySystem Beispiel:&lt;br /&gt;
 Das DirectorySystem wird in dem angegeben Beispiel zum Single Point of Failure - das wird verschwiegen.&lt;br /&gt;
; Firewalls:&lt;br /&gt;
 Das sind fachlich-blinde Systeme. Was ist mit WAFs / IDS / IPS etc.?&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== M 5.WA23Systemarchitektur einer Web-Anwendung (Markus) ==&lt;br /&gt;
; Verantwortliche:&lt;br /&gt;
Auch hier fehlend wieder die Architekten. &lt;br /&gt;
; Virtualisierung:&lt;br /&gt;
Virtualisierung bietet weitere Angriffsvektoren (z.B.: Hypervisor) die eine &amp;quot;Blech&amp;quot;Farm nicht bietet.&lt;/div&gt;</summary>
		<author><name>Mrohr</name></author>	</entry>

	<entry>
		<id>https://wiki.owasp.org/index.php?title=Talk:OWASP_Review_BSI_IT-Grundschutz_Baustein_Webanwendungen&amp;diff=130103</id>
		<title>Talk:OWASP Review BSI IT-Grundschutz Baustein Webanwendungen</title>
		<link rel="alternate" type="text/html" href="https://wiki.owasp.org/index.php?title=Talk:OWASP_Review_BSI_IT-Grundschutz_Baustein_Webanwendungen&amp;diff=130103"/>
				<updated>2012-05-18T13:16:02Z</updated>
		
		<summary type="html">&lt;p&gt;Mrohr: /* M 4.WA06Session-Management bei Web-Anwendungen (Markus) */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Since it's about a review of a document in German, all the discussions will be done in German :-)&lt;br /&gt;
&lt;br /&gt;
Diskussionen rund um den Review des &amp;quot;IT-Grundschutzbausteins Webanwendungen&amp;quot; finden hier statt, sinnvollerweise auf Deutsch :-)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Vorschlag für Kriterien, die an unser Review angelegt werden sollten (.kai) ==&lt;br /&gt;
&lt;br /&gt;
* Der Baustein soll alle wichtigen Themen der Entwicklung sicherer&lt;br /&gt;
Webanwendungen enthalten.&lt;br /&gt;
&lt;br /&gt;
* Der Baustein soll die verschiedenen Phasen der Software-Entwicklung&lt;br /&gt;
vollständig abdecken.&lt;br /&gt;
&lt;br /&gt;
* Der Baustein soll zwischen verbindlichen, prüfbaren Vorgaben und&lt;br /&gt;
unverbindlichen Empfehlungen sprachlich sauber unterscheiden (hier&lt;br /&gt;
spielt mein Auditorenblick eine Rolle). Vor allem soll der Baustein&lt;br /&gt;
verbindliche Anforderungen auch tatsächlich stellen. Alle&lt;br /&gt;
verbindlichen Anforderungen müssen unabhängig von der jeweiligen&lt;br /&gt;
Umgebung auch umsetzbar sein, d.h. sie müssen entsprechend generisch&lt;br /&gt;
sein.&lt;br /&gt;
&lt;br /&gt;
* Die Maßnahmen sollen nur in (begründbaren) Ausnahmen zu Empfehlungen&lt;br /&gt;
von OWASP im Widerspruch stehen.&lt;br /&gt;
&lt;br /&gt;
* Die Maßnahmen sollen verständlich und anwendbar sein.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== &amp;quot;Hilfsmittel&amp;quot; (Markus) ==&lt;br /&gt;
Ich würde das Script zur Vermeidung von Clickjacking wrappen und nicht als losen Skript-block in den Text einbinden - einfach schlechter Programmierstiel diese losen Blöcke.&lt;br /&gt;
Der Zugriff auf das Body-Element mit byTagName-Array[0] ist auch nicht wirklich gut. Ich halte Zugriffe über das DOM (klassisch), bei ID bzw. XPATH für besser. &lt;br /&gt;
&lt;br /&gt;
SQL-Injection Characters:&lt;br /&gt;
die Pipe fehlt hier zur Textkonatenierung&lt;br /&gt;
+ / - haben auch eine Bedeutung bei JOINs.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== &amp;quot;Goldene Regeln&amp;quot; (Matthias) ==&lt;br /&gt;
&lt;br /&gt;
Hier meine Anmerkungen zu diesem Dokument:&lt;br /&gt;
&lt;br /&gt;
; 1. Für mich fehlende Punkte&lt;br /&gt;
* Korrektur der Ursache (Root Cause) von Schwachstellen statt  Verhinderung deren Ausnutzung&lt;br /&gt;
* Bezug auf Minimierung der Angriffsfläche und Least-Privilege-Prinzip&lt;br /&gt;
* Bezug auf Defense-in-Depth-Prinzip&lt;br /&gt;
* Verwendung von getesteten Security APIs (z.B. OWASP ESAPI) statt selbstentwickelter Funktionen&lt;br /&gt;
* Bezug auf Externalisierung von Sicherheitsfunktionen, sowie deklerative vor programmatischer Sicherheit.&lt;br /&gt;
&lt;br /&gt;
; 2. Begriff &amp;quot;Web-Anwendung&amp;quot;&lt;br /&gt;
Würde ich generell durch &amp;quot;Webanwendung&amp;quot; ersetzen.&lt;br /&gt;
&lt;br /&gt;
; 3. Einleitung (&amp;quot;Web-Anwendungen stellen Funktionalität zur Verfügung, ...&amp;quot;)&lt;br /&gt;
&lt;br /&gt;
Wozu dient dieser Satz?&lt;br /&gt;
&lt;br /&gt;
; 4. &amp;quot;Die Architektur der Web-Anwendung ist im Sicherheitskonzept zu  dokumentieren.....&amp;quot; &lt;br /&gt;
&lt;br /&gt;
Ich fände es sinnvoller, wenn hier von der &amp;quot;Sicherheitsarchitektur&amp;quot; gesprochen wird, welche etwa neben den sicherheitsrelevanten Datenflüssen, sensible Komponenten, Entry Points, Akteure architekturelle Security Controls wie Authentisierung, Kryptographie und natürlich die Trust Boundaries beinhaltet.&lt;br /&gt;
&lt;br /&gt;
; 5. &amp;quot;Bei Web-Anwendungen handelt es sich häufig um spezielle Eigenentwicklungen....&amp;quot;&lt;br /&gt;
&lt;br /&gt;
Erstens würde ich hier den geläufigen Begriff &amp;quot;Individualsoftware&amp;quot; verwenden. Zweitens würde ich statt bestimmte SDLC-Phasen vorzugeben (die Begriffe &amp;quot;Softwareverteilung&amp;quot; und &amp;quot;Integration&amp;quot; sind mir bei Webanwendungen bisher noch nicht so häufig untergekommen), besser von der Notwendigkeit sprechen, Sicherheit in allen Entwicklungsphasen zu berücksichtigen, also eines SDLs.&lt;br /&gt;
&lt;br /&gt;
; 6. &amp;quot;Alle Ein- und Ausgaben der Web-Anwendung müssen in eine normalisierte Form überführt werden....&amp;quot;&lt;br /&gt;
&lt;br /&gt;
Normalisierung ist für mich nicht gleich Kanonsierung, auch wenn beide Begriffe häufig als synonym verwendet werden.  Der Unterschied wird in der [http://owasp-esapi-java.googlecode.com/svn/trunk_doc/2.0-rc4/org/owasp/esapi/Encoder.html API-Beschreibung der ESAPI] erklärt. Die Normalisierungs-Funktion ist allerdings schon vor einiger Zeit aus der ESAPI [https://lists.owasp.org/pipermail/esapi-dev/2010-January/000266.html rausgeflogen]. Die generelle Kanonisierung von Ausgaben halte ich dazu für nicht sinnvoll.&lt;br /&gt;
&lt;br /&gt;
Zweitens, finde ich den weiteren Text zwar grundsätzlich formal korrekt, aber so allgemein, dass dieser glaube ich niemandem so richtig etwas bringt.  &lt;br /&gt;
&lt;br /&gt;
Besser fände ich hier Ein- von Ausgabevalidierung grundsätzlich voneinander abzugrenzen. Etwa was ich per Eingabevalidierung (Längenprüfung, Casting, etc. per Whitelisting) und was mit Ausgebavalidierung (Enkodierung, Escaping, Parametrisierung) machen muss und kann.&lt;br /&gt;
&lt;br /&gt;
Eingabedaten können technisch zudem auch Werte eingelesener Property-Dateien sein. Muss ich die auch validieren? Ist das dann noch Grundschutz? &lt;br /&gt;
&lt;br /&gt;
; 7. &amp;quot;Für den Zugriff auf sensitive Funktionen oder Informationen muss die Web-Anwendung eine wirksame Authentisierung und Sitzungsverwaltung unterstützen. Die Eigenschaften der Sitzungs-ID müssen so gewählt werden, dass die Sitzung ausreichend geschützt ist. ....&amp;quot;&lt;br /&gt;
&lt;br /&gt;
Besser fände ich &amp;quot;eine Authentisierung, die über eine dem Schutzbedarf der Anwendung angemessene Stärke verfügt.&amp;quot; &lt;br /&gt;
&lt;br /&gt;
Eigentlich geht es doch mehr um den Schutz der Sitzungs-ID, da diese gewöhnlich im Verlauf einer Sitzung den Client authentisiert. Oder den Schutz des Zugriffs auf eine Sitzung. &lt;br /&gt;
&lt;br /&gt;
Zudem fehlt hier meiner Meinung nach der Hinweis auf die bevorzugte Verwendung getesteter Standardkomponenten.&lt;br /&gt;
&lt;br /&gt;
; 8. &amp;quot;Die Web-Anwendung sollte die zu übermittelnden Daten schützen.&amp;quot;&lt;br /&gt;
&lt;br /&gt;
Dies würde ich nur auf sensible Daten beziehen. Zusätzlich zu HTTPS würde ich hier schreiben, dass sensible Daten generell nicht in der URL übertragen werden dürfen.&lt;br /&gt;
&lt;br /&gt;
; 9. &amp;quot;Die Preisgabe interner Informationen (z.B. Kommentare, Fehlermeldungen)&amp;quot;&lt;br /&gt;
&lt;br /&gt;
Hier würde ich eher schreiben &amp;quot;(IN Kommentaren, Fehlermeldungen, HTTP Headern, etc.)&amp;quot;&lt;br /&gt;
&lt;br /&gt;
; 10. &amp;quot;Fehler müssen so behandelt werden, ... müssen Fehler bei der Autorisierung zu einer Verweigerung beim Zugriff auf die angeforderte Ressource führen.&amp;quot;&lt;br /&gt;
&lt;br /&gt;
Sprachlich: &amp;quot;Die Webanwendung muss sich stets in einem sicheren Zustand befinden. Beispielsweise müssen Fehler bei der Autorisierung zu einer Verweigerung des Zugriffs führen (Default-Deny-Strategie).&amp;quot;&lt;br /&gt;
&lt;br /&gt;
; 11. &amp;quot;Die Logging-Funktionen der Web-Anwendung müssen aufgetretene Ereignisse derart protokollieren, dass sicherheitskritische Vorfälle nachvollzogen werden können.&amp;quot;&lt;br /&gt;
&lt;br /&gt;
Hier würde hier eher von &amp;quot;allen sicherheitsrelevanten Ereignissen&amp;quot; sprechen.&lt;br /&gt;
&lt;br /&gt;
Weiterhin sollten insbesondere beim Logging der Datenschutz berücksichtigt werden, personenbezogene Daten also nach Möglichkeit nicht oder nur anonymisiert in technischen Logdateien protokolliert werden.&lt;br /&gt;
&lt;br /&gt;
; 12. &amp;quot;Alle Sicherheitsmechanismen (z.B. Authentisierung und Zugriffskontrolle) sind serverseitig zu implementieren und können nicht durch clientseitige Mechanismen ersetzt werden.&amp;quot;&lt;br /&gt;
&lt;br /&gt;
Die Aussage ist so nicht korrekt. Darüber hatten wir bereits bei der ASVS mehrfach diskutiert. &lt;br /&gt;
&lt;br /&gt;
Überall dort wo der Client angegriffen wird, also etwa bei RIAs (Stichwort DOM-Based XSS) müssen wir Security Controls clientseitig implementieren. Es gibt mittlerweile deshalb auch eine Portierung der ESAPI auf Javascript. Überall dort wo der Server oder Hintegrundsysteme angegriffen werden, ist die Aussage aber natürlich zutreffend.&lt;br /&gt;
&lt;br /&gt;
== &amp;quot;Gefährdungen&amp;quot; (Markus, Dennis, .... &amp;lt;Dein Name&amp;gt;) ==&lt;br /&gt;
; Generell:&lt;br /&gt;
Reference auf RFCs fehlen.&lt;br /&gt;
&lt;br /&gt;
==B.5.XX Web-Anwendungen ==&lt;br /&gt;
; 1. Erster Absatz - Letzter Satz: --Wieso werden hier nur HTML/XML Doks und Oberflächen angesprochen? Was ist der Unterschied zwischen einem HTML-Dok und einer Oberfläche? Was ist mit  Flash, etc.? Was ist mit WebSockets?&lt;br /&gt;
; 2. Stichpunkt &amp;quot;Protokollierung&amp;quot;: Sicherheits relevant ist ein sehr dehnbarer Begriff - Eine bessere Formulierung könnte sein: Zur Rekonstruktion von Nutzerhandlungen nötige Ereignisse (positve &amp;amp; negative) müssen protokolliert werden . . . &lt;br /&gt;
; 3. Absatz: &amp;quot;Abgrenzung des Bausteins&amp;quot;: &amp;quot;Die spez. Sicherheitsanforderungen an Web-Services werden in diesem Baustein nicht betrachtet&amp;quot; --&amp;gt; Wie so nicht? Was ist das Backend von einer Rest / AJAX-basierenden Webanwendung denn anderes als ein Web-Service? Diesen Satz würde ich entfernen.&lt;br /&gt;
; 4.Vorsätzliche Handlungen -&amp;gt; Web-Spoofing (G.5.87) -- Missverständliche Bezeichnung / Nomenklatur&lt;br /&gt;
; 5. Seite 4 : erste Zeile &amp;quot;Umsetzung&amp;quot;: &amp;quot;dafür umzusetztende Komponenten müssen die Webanwendung schützen...&amp;quot; - Hier fehlt mir der Hinweis, dass dieser Schutz verifiziert werden muss.&lt;br /&gt;
; 6 Seite 5: &amp;quot;Umsetzung&amp;quot; - Wir haben CSRF, D(D)os und SQL-Injection aber wo ist XSS?&lt;br /&gt;
; 7 Seite 7: &amp;quot;Die Sicherheitsfunktion wird ausschließlich clientseitig...&amp;quot; --&amp;gt; Warum muss der Angreifer überhaupt einen Browser umkonfigurieren? Was ist mit Proxies, Scripts, etc.? Ich würde das reduzieren darauf, dass rein Webbrowser-basierende Schutzfunktionen einfach umgangen werden können.&lt;br /&gt;
; 8 Seite 8: Die angesprochenen Punkte hinterlassen den Eindruck nicht vollständig zu sein: Mir fehlen Punkte wie &amp;quot;Outsourcing&amp;quot;, &amp;quot;KnowHow der Entwickler&amp;quot;, Tooling, Framework-Auswahl, etc.&lt;br /&gt;
; 9 Seite 9: Eigentlich möchte der Autor hier über Datenschutz sprechen. Abgesehen von den letzten drei Zeilen geht es aber nur um &amp;quot;User tracking&amp;quot; - Wo ist der Rest der Datenschutzproblematik? Warum der Fokuss auf Tracking? Mir ist das zu einseitig.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
tbd.&lt;br /&gt;
&lt;br /&gt;
; Wortwahl:&lt;br /&gt;
Ich stosse innerhalb der Texte immer wieder an die Worten '''Hintergrundsystem''' und '''Sicherheitskontext'''.&lt;br /&gt;
'''Hintergrundsystem:''' besseres Synonym?&lt;br /&gt;
'''Sicherheitskontext:''' nur weil es in den Texten um Sicherheit geht muss nicht an jeder Stelle immer wieder das Wort _Sicherheits_kontext eingebaut werden.&lt;br /&gt;
Bsp: &amp;quot;Erlangt ein Angreifer Kenntnis von einer solchen gültigen, aber nicht mehr genutzten SessionID, so kann er die Web-Anwendung im Sicherheitskontext des nicht abgemeldeten Benutzers weiter verwenden.&amp;quot; (G 5,WA12 Unzureichendes Session-Management von Web-Anwendungen)&lt;br /&gt;
Verbesserungsansansatz: ... so kann er die Web-Anwendung anstelle des eigentlichen Besitzers weiterhin verwenden.&lt;br /&gt;
&lt;br /&gt;
== &amp;quot;G 2.WA01 Mangelhafte Auswahl oder Konzeption von Web-Anwendungen&amp;quot; (Matthias) ==&lt;br /&gt;
&lt;br /&gt;
Nachdem ich mir diese Gefährdung durchgelesen hatte, fehlten mir ehrlich gesagt etwas die Worte. Nicht nur, dass hier fast jeder zweite Satz entweder falsch ist bzw. massive Fehler enthält oder ich diesen schlicht nicht verstehe, ist der ganze Text sprachlich wirklich enorm verbesserungsfähig. &lt;br /&gt;
&lt;br /&gt;
Na gut, ich konzentriere mich mal auf die fachlichen Punkte:&lt;br /&gt;
&lt;br /&gt;
; 1. Security Controls&lt;br /&gt;
Werden mal mit &amp;quot;Schutzmechanismen&amp;quot;, mal mit &amp;quot;Sicherheitskomponenten&amp;quot; und dann wieder als &amp;quot;Sicherheitsfunktionen&amp;quot; bezeichnet. Hier macht eine einheitliche Benennung sicherlich Sinn und ist weniger verwirrend.&lt;br /&gt;
&lt;br /&gt;
; 2. &amp;quot;Eine Web-Anwendung ist in der Regel ein verteiltes, komplexes System bestehend aus unterschiedlichen Komponenten (z. B. Webserver, Applikationsserver, Hintergrundsysteme)&amp;quot;&lt;br /&gt;
&lt;br /&gt;
Eine Webanwendung besteht sicher nicht aus einem Webserver- oder anderer infrastruktureller Komponenten, sondern ist Software welches diese nutzt.&lt;br /&gt;
&lt;br /&gt;
; 3. &amp;quot;Bei individuell entwickelten Web-Anwendungen sind im Allgemeinen die Frameworks, Komponenten und Schnittstellen im Rahmen der Konzeption auszuwählen und deren Einbindung und Absicherung zu betrachten....Im Gegensatz dazu ist bei der Konzeption von Web-Anwendungen auf Basis von Standardsoftware insbesondere auf die Auswahl der Software und die Konfiguration der Teilkomponenten zu achten&amp;quot;&lt;br /&gt;
&lt;br /&gt;
Wir unterscheiden im Rahmen von Webanwendungen eigentlich Free or Opensource Software (FOSS bzw. FLOSS), Standardsoftware und Individualsoftware voneinander. Wir unterscheiden nicht Frameworks von Standardsoftware. Frameworks können Teil von Standardsoftware sein, wie etwa bei SharePoint, SAP, etc, oder aber FOSS, wie etwa Spring. Die ganzen Absätze machen für mich daher keinen Sinn.&lt;br /&gt;
&lt;br /&gt;
; 4. &amp;quot;Eine Sicherheitsfunktion (z. B. Authentisierung, Autorisierung) wird nicht an einer Stelle umgesetzt und verwendet, sondern ist mehrfach in der Web- Anwendung realisiert. Wird diese Sicherheitsfunktion an den verschiedenen Stellen unterschiedlich umgesetzt, führt dies zu einem uneinheitlichen Sicherheitsniveau.&amp;quot;&lt;br /&gt;
&lt;br /&gt;
Natürlich ist die mehrfache Verwendung bestimmter Security Controls, beispielsweise von Zugriffskontrollen (Complete-Mediation) oder Validierung (Robustheit) erstrebenswert. Was der Autor hier wahrscheinlich meinte, war die Notwendigkeit diese zu Kapseln bzw. zu Externalisieren. Das bezieht sich im übrigen nicht nur auf die Controls selbst, sondern auch auf ihre Parametrisierung (etwa. über Konfigdateien / XACML).&lt;br /&gt;
&lt;br /&gt;
Wichtiger wäre in diesem Zusammenhang zudem die fehlende Berücksichtigung bestimmter Security Controls.&lt;br /&gt;
&lt;br /&gt;
; 5. &amp;quot;Auswahl von Web-Anwendungen auf Basis von Standardsoftware&amp;quot;&lt;br /&gt;
Was will der Satz sagen? Ich wähle Standardsoftware aus, aber doch keine Webanwendungen. Oder heißt das, ich kaufe eine existierende Anwendung ein (Webanwendung!=Indivudualsoftware)? &lt;br /&gt;
&lt;br /&gt;
; 6. &amp;quot;Das ausgewählte Produkt verfügt nicht über die ausreichende Sicherheitsfunktionalität, ... Daher müssen die notwendigen Schutzmechanismen nachträglich hinzugefügt werden, wodurch zusätzliche Aufwände entstehen.&amp;quot;&lt;br /&gt;
Das ist etwas sehr positiv formuliert. Tatsächlich können fehlende Security Controls in zugekaufter Software (insb. Standardsoftware) in der Realität häufig gar nicht hinzugefügt werden oder nur perimetrisch (z.B. per WAF oder Access Gateway).&lt;br /&gt;
&lt;br /&gt;
; 7. &amp;quot;Die Hintergrundsysteme werden unzureichend abgesichert und dadurch ist die Datenbank der Web-Anwendung aus dem Internet erreichbar.&amp;quot;&lt;br /&gt;
Gehören fehlende Netzwerksegmentierung bzw. Firewallregeln wirklich in diesen Kontext? Das ist doch eigentlich Grundschutz der Infrastruktur, oder?&lt;br /&gt;
&lt;br /&gt;
; 8. &amp;quot;Aufgrund schwacher Parameter in der Konfiguration des Frameworks zum Session-Management werden unsichere SessionIDs erzeugt.&amp;quot;&lt;br /&gt;
Was sind &amp;quot;schwache&amp;quot; Parameter?&lt;br /&gt;
&lt;br /&gt;
Welches Framework erlaubt unsichere SessionIDs durch eine &amp;quot;schwache&amp;quot; Konfiguration zu erzeugen?&lt;br /&gt;
&lt;br /&gt;
; 9. &amp;quot;Wird die Konfiguration des Web-Browsers durch einen Angreifer manipuliert, können die clientseitig umgesetzten&amp;quot;&lt;br /&gt;
&lt;br /&gt;
Manipuliert ein Angreifer die Konfguration seines Webbroswers, wenn er einen MITM-Proxy konfiguriert?&lt;br /&gt;
&lt;br /&gt;
Wie bereits bei den &amp;quot;Goldenen Regeln&amp;quot; angemerkt, gilt auch hier, das manche Security Controls auch clientseitig umgesetzt werden dürfen (etwa. zur Verhinderung von Dom-Based XSS).&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== &amp;quot;G 5.WA10 Fehler in der Web-Anwendungslogik&amp;quot; (Dennis) ==&lt;br /&gt;
; 1. &amp;quot;Damit kann aufgrund der Prüfreihenfolge ein hoher Ressourcenverbrauch provoziert werden, der für Denial-of-Service-Angriffe ausgenutzt werden kann.&amp;quot;&lt;br /&gt;
Meiner Meinung nach passt in diesem Kontext die Attacke DoS nicht ganz. Falls die nachfolgende Funktionalität wegen der langen Ausführungszeit der Filterkomponente übersprungen wird bzw. ein Fehler auftritt würde dies meiner Ansicht in die Thematik Anwendungslogik passen. Eine DoS-Attacke kann hingegen anhand jeder Funktion durchgeführt werden.&lt;br /&gt;
&lt;br /&gt;
== &amp;quot;G 5.WA11 Umgehung clientseitig umgesetzter Sicherheitsfunktionen von Web-Anwendungen&amp;quot; (Dennis) ==&lt;br /&gt;
; 1. &amp;quot;Ein Angreifer kann diese ausnutzen, um beispielsweise unbefugt Befehle an Hintergrundsysteme der Web-Anwendung zu übermittlen (z.B. in Form von Datenbankanfragen bei einer SQL-Injection).&amp;quot;&lt;br /&gt;
Umformulierung des Inhalts der Klammer. Hatte beim ersten Lesen für mich den Anschein, als ob ein Formular genutzt werden könnte welches den Nutzer aufforder eine SQLI einzugeben. Ich denke &amp;quot;Datenbankanfrage zwecks Ausführung einer SQL-Injection&amp;quot; würde besser passen.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== G 2.WA02 Mängel bei der Entwicklung und der Erweiterung von Web-Anwendungen (Matthias) ==&lt;br /&gt;
&lt;br /&gt;
Allgemein ist de obere Teil ok, die aufgezählten &amp;quot;Auswirkungen von fehlenden Vorgaben&amp;quot; verstehe ich jedoch nicht. Wo ist etwa der Bezug von Barrierefreiheit auf die Anwendungssicherheit?&lt;br /&gt;
&lt;br /&gt;
Mein Vorschlag, um diese Punkte etwa sinnvoll umzubauen:&lt;br /&gt;
* &amp;quot;Fehlendes Vorgehensmodell&amp;quot;: Bezug auf fehlende Berücksichtigung von Sicherheit im SDLC. Statt eines SDLCs selbst sollte hier besser auf die Notwendigkeit eines Secure Development Lifecycle (SDL) hingewiesen werden&lt;br /&gt;
* &amp;quot;Fehlende Programmierrichtlinien&amp;quot; =&amp;gt; Besser wäre hier &amp;quot;Fehlende Sicherheitsrichtlinien in der Programmierung&amp;quot; also &amp;quot;Secure Coding Guidelines&amp;quot;&lt;br /&gt;
* &amp;quot;Testfälle&amp;quot; =&amp;gt; &amp;quot;Sicherheitsrelevante Testfälle&amp;quot; (z.B. Security Unit Tests). &lt;br /&gt;
* &amp;quot;Barrierefreiheit&amp;quot;: Warum nicht an dieser Stelle die Auswirkungen von Sicherheitsfunktionen auf die Bedienbarkeit, etwa anhand von CAPTCHAS erläutern?&lt;br /&gt;
&lt;br /&gt;
== G 2.WA03 Unzureichender Schutz personenbezogener Daten bei Web-Anwendungen (Matthias) ==&lt;br /&gt;
&lt;br /&gt;
Der Titel dieses Bausteines heißt &amp;quot;Schutz personenbezogener Daten&amp;quot;, die genannten Beispiele beziehen sich bis auf den letzten jedoch auf die missbräuchliche (oder zumindest problematische) Nutzung aus Sicht des Datenschutzes. &lt;br /&gt;
&lt;br /&gt;
Die Punkt 1-3 sollten daher besser entfallen und z.B. durch die Folgenden ersetzt werden:&lt;br /&gt;
* Unsichere Einbindung von sozialen Netzwerken (Bezug nehmen auf den Like-Button bei Facebook)&lt;br /&gt;
* Unsichere Einbindung von Werbeinhalten&lt;br /&gt;
* Unsichere Übertragung und Caching&lt;br /&gt;
* Unsichere Protokollierung&lt;br /&gt;
* Ungenügender Zugriffsschutz&lt;br /&gt;
* Verstoß des Minimalprinzips bzw. der Zweckgebundenheit (welche Daten werden wirklich benötigt)&lt;br /&gt;
&lt;br /&gt;
Auch wäre es ggf. zumindest einen Verweis auf das BDSG zu machen.&lt;br /&gt;
&lt;br /&gt;
== G 4.33 Unzureichende oder fehlende Authentisierung (Matthias) ==&lt;br /&gt;
&lt;br /&gt;
; 1. Erster Absatz: &amp;quot;Wenn Authentisierungsmechanismen fehlen oder zu schlecht sind&amp;quot;&lt;br /&gt;
&lt;br /&gt;
&amp;quot;schlecht&amp;quot; sollte vlt besser durch &amp;quot;unzureichend&amp;quot; ersetzt werden.&lt;br /&gt;
&lt;br /&gt;
; 2. &amp;quot;Sicherheitslücken entstehen bei... der Benutzerauthentisierung&amp;quot;&lt;br /&gt;
&lt;br /&gt;
Hier findet nur ein Bezug auf &amp;quot;Passwörter&amp;quot; statt. Der Bezug auf die fehlerhaft implementierte oder dem Schutzbedarf ungenügende Schutzmechanismen (z.B. keine 2-Faktor-Authentisierung bei hochsensiblen Daten) fehlt. Auch auf das komplette fehlen von Authentisierungs-Controls wird hier nicht  eingegangen&lt;br /&gt;
&lt;br /&gt;
; 3. &amp;quot;Sicherheitslücken entstehen bei... der Komponentenauthentisierung&amp;quot;&lt;br /&gt;
&lt;br /&gt;
Wie bei 2., wird auch hier wieder nur auf Passwörter, nicht jedoch auf das fehlen von Controls selbst eingegangen. An dieser Stelle fehlt auch ein Hinweis auf die Notwendigkeit dedizierter Benutzeraccounts.&lt;br /&gt;
&lt;br /&gt;
; 4. &amp;quot;Sicherheitslücken entstehen bei... der Wahl des Verfahrens&amp;quot;&lt;br /&gt;
&lt;br /&gt;
Statt untauglich würde ich auch hier von &amp;quot;dem Schutzbedarf der Daten nicht angemessen&amp;quot; sprechen, eigentlich gehört das für mich aber in die obigen Punkte.&lt;br /&gt;
&lt;br /&gt;
; 5. Serverseitige Authentisierung fehlt&lt;br /&gt;
&lt;br /&gt;
Auch der Server (bzw. die Anwendung selbst) kann sich fehlerhaft oder ungenügend beim Benutzer authentsieren, etwa über DNS, SSL-Zertifikate, etc.&lt;br /&gt;
&lt;br /&gt;
== G 4.WA04 Unzureichende Validierung von Ein- und Ausgabedaten bei Web-Anwendungen (Matthias) ==&lt;br /&gt;
&lt;br /&gt;
; 1. &amp;quot;Unzureichende Validierung von Eingabedaten&amp;quot;&lt;br /&gt;
&lt;br /&gt;
Die genannten Beispiele sind genau keine korrekten Beispiele für diesen Fall, sondern betreffen die Ausgabevalidierung bzw. Enkodierung. Typische Fehler der Eingabevalidierung ist eine Manipulierbarkeit der Business Logik.&lt;br /&gt;
&lt;br /&gt;
; 2. &amp;quot;Unzureichende Validierung von Ausgabedaten&amp;quot;&lt;br /&gt;
&lt;br /&gt;
Hier geht es zentral um die Verhinderung von Interpreter Injection, also serverseitig (z.B. SQL oder LDAP Injection) oder clientseitig (XSS, JSON Injection, etc.). Statt &amp;quot;können die Ausgaben Schadcode&amp;quot; enthalten würde ich hier eher davon Sprechen, dass ein solcher Interpreteraufruf manipuliert werden kann (was dann z.B. zur Einschleusung von Schadcode genutzt werden kann).&lt;br /&gt;
&lt;br /&gt;
; 3. &amp;quot;Die Suchfunktion der Web-Anwendung verwendet die Eingaben der Benutzer ungefiltert&amp;quot;&lt;br /&gt;
&lt;br /&gt;
Mit ungenügender &amp;quot;Filterung&amp;quot; hat SQL Injection nichts zu tun,  eigentlich geht es hierbei darum, dass SQL-Anfragen dynamisch mit unvalidierten Eingebedaten zusammengebaut (konkateniert) werden.&lt;br /&gt;
&lt;br /&gt;
; 4. &amp;quot;Ungefilterter HTML-Code in Kommentar-Funktion&amp;quot;&lt;br /&gt;
&lt;br /&gt;
Hier fehlt der Bezug auf persistentes XSS, das hier sicherlich zentral ist.&lt;br /&gt;
&lt;br /&gt;
== G 4.WA05 Fehlende oder mangelhafte Fehlerbehandlung durch Web-Anwendungen (Tobias) ==&lt;br /&gt;
; Abschnitt &amp;quot;Unsichere Fehlerbehandlung&amp;quot;&lt;br /&gt;
Die G adressiert &amp;quot;Unsichere Fehlerbehandlung&amp;quot;, der Abschnitt die &amp;quot;Unsichere Fehlerbehandlung in Sicherheitskomponenten&amp;quot;. Entsprechend sollte der fettgedruckte Teil angepasst werden.&lt;br /&gt;
&lt;br /&gt;
; &amp;quot;fehlende SQL-Parameter,&amp;quot;&lt;br /&gt;
Sollte besser &amp;quot;Fehlermeldungen bei ungültigen SQL-Abfragen&amp;quot; lauten.&lt;br /&gt;
&lt;br /&gt;
; &amp;quot;Auch scheinbar unkritische Informationen, wie die Meldung ob (..)&amp;quot;&lt;br /&gt;
Korrekt, allerdings nicht nachvollziehbar, wenn das Problem der Leser nicht schon bekannt ist. Daher erweitern nach &amp;quot; Rahmen von Brute-Force-Angriffen ausgenutzt werden.&amp;quot; mit &amp;quot;. Bei Brute-Force-Angriffen wäre in diesem Fall klar, dass der Benutzername gültig ist.&amp;quot; &lt;br /&gt;
&lt;br /&gt;
== G 4.WA06 Unzureichende Nachvollziehbarkeit von sicherheitsrelevanten Ereignissen bei Web-Anwendungen (Matthias) ==&lt;br /&gt;
&lt;br /&gt;
; 1. Erster Absatz: &amp;quot;Die Behebung einer Schwachstelle ist dann nicht oder nur unter erschwerten Bedingungen möglich.&amp;quot;&lt;br /&gt;
&lt;br /&gt;
Hier würde ich ergänzen: &amp;quot;...und Angriffe auf die Anwendungen können ggf. nicht erkannt oder nachvollzogen werden&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
; 2. &amp;quot;Beispiele&amp;quot;: Kommulierbarkeit&lt;br /&gt;
&lt;br /&gt;
Hier fehlt auch ein Bezug auf die Kommulierbarkeit von SIcherheitsereignissen, dass diese also auch von solchen anderer Systeme in Verbindung gesetzt werden können&lt;br /&gt;
&lt;br /&gt;
; 3. &amp;quot;Beispiele&amp;quot;: Gerichtsverwertbarkeit&lt;br /&gt;
&lt;br /&gt;
Auch die Möglichkeit zur Gerichtsverwertbarkeit (etwa durch eindeutigen Zeitstempel) und manipulationssicherer Speicherung, würde ich an dieser Stelle unbedingt erwähnen.&lt;br /&gt;
&lt;br /&gt;
== G 4.WA07 Offenlegung von Informationen bei Web-Anwendungen (Matthias) ==&lt;br /&gt;
&lt;br /&gt;
; 1. Titel&lt;br /&gt;
&lt;br /&gt;
Hier würde ggf. &amp;quot;Offenlegung vertraulicher Informationen&amp;quot; sicher besser passen als &amp;quot;Offenlegung von Informationen&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
; 2. Beispiellink&lt;br /&gt;
&lt;br /&gt;
Ein Beispiellink (mit und ohne Token) würde sicher die Verständlichkeit dieser Schwachstelle verbessern.&lt;br /&gt;
&lt;br /&gt;
; 3. Erster Absatz: &amp;quot;Wenn demzufolge Informationen unnötig offengelegt werden, steigt die Wahrscheinlichkeit eines erfolgreichen Angriffs.&amp;quot;&lt;br /&gt;
&lt;br /&gt;
Interne Informationen auszublenden ist eine Härtungsmaßnahme, deren Anzeige erhöht aber nicht zwangsläufig die Wahrscheinlichkeit eines erfolgreichen Angriffs. Ich würde diesen Satz weglassen.&lt;br /&gt;
&lt;br /&gt;
 ; 4. Fehlende Punkte&lt;br /&gt;
&lt;br /&gt;
* Ein Hinweis auf HTTP Header wäre hier sicher erwähnenswert.&lt;br /&gt;
* Weiterhin bzgl. der Anzeige von Traces und ein Verweis auf den Entsprechenden Baustein zur Fehlerbehandlung&lt;br /&gt;
&lt;br /&gt;
== G 5.WA14 Cross-Site Request Forgery (CSRF, XSRF) (Matthias) ==&lt;br /&gt;
&lt;br /&gt;
; 1. Erster Absatz: &amp;quot;Können Funktionen einer Web-Anwendung ohne weitere Überprüfung der Authentizität des HTTP-Requests (z.B. durch Tokens in versteckten Formularfeldern) genutzt werden&amp;quot;&lt;br /&gt;
&lt;br /&gt;
Statt &amp;quot;Funktionen&amp;quot; würde ich besser von &amp;quot;schreibenden Aktionen&amp;quot; sprechen, dann macht der Satz mehr Sinn.&lt;br /&gt;
&lt;br /&gt;
; 2. Dritter Absatz: &amp;quot;Im Gegensatz zu XSS (siehe ...￼ ) ist das Angriffsziel nicht die Information auf dem Client (z. B. in Cookies),&amp;quot;&lt;br /&gt;
&lt;br /&gt;
Dieser (Halb-)Satz macht keinen Sinn, auch weil es bei XSS nicht nur im Informationen auf dem Cient geht. Vorschlag: &amp;quot;ist das Angriffsziel nicht die Ausführung von Skriptcode, sondern von unbefugten, schreibenden Aktionen im Kontext des angemeldeten Benutzers.&amp;quot;&lt;br /&gt;
&lt;br /&gt;
; 3. Session Riding&lt;br /&gt;
&lt;br /&gt;
Session Riding ist quasi nur ein anderer Begriff für CSRF. Die einzige Form von CSRF die mir bekannt ist, sind Angriffe mit Standard-Passwörtern auf HTTP-Basic-Auth geschützten Ressourcen.&lt;br /&gt;
&lt;br /&gt;
Im Grunde ist Session Riding aber nur ein Synonym für CSRF. Der Absatz ist daher auch nur eine Wiederholung der obigen Beschreibung.&lt;br /&gt;
&lt;br /&gt;
; 4. Zum Beispiel: &amp;quot;Durch einen präparierten Link auf einer Webseite wird die Änderung des Zugangspasswortes des Routers eingeleitet.&amp;quot;&lt;br /&gt;
&lt;br /&gt;
Etwas ungüngstig ausgedrückt. Besser wäre: &amp;quot;wird eine Anfrage zur Änderung des Zugangspasswortes an den Router gesendet. Hierbei sendet der Browser automatisch den Session Cookie mit, worüber die Webanwendung die Authentizität der Anfrage verifiziert und die Änderung durchführt.&amp;quot;&lt;br /&gt;
&lt;br /&gt;
== G 5.WA18 Clickjacking (Matthias) ==&lt;br /&gt;
&lt;br /&gt;
Hier stellt sich mir nur die allgemeine Frage, ob Clickjacking, bzw. der Schutz davor tatsächlich einem Grundschutz zuzurechnen ist. Persönlich würde ich dies nicht tun.&lt;br /&gt;
&lt;br /&gt;
== M 2.WA02 Dokumentation der Architektur von Web-Anwendungen (Matthias) ==&lt;br /&gt;
&lt;br /&gt;
; Verantwortlich für die Umsetzung&lt;br /&gt;
Hier wäre auch die Nennung des &amp;quot;Architekten&amp;quot; sinnvoll&lt;br /&gt;
 &lt;br /&gt;
; Fehlende Bestandteile der Dokumentation:&lt;br /&gt;
* Schutzbedarf des Systems sowie der verarbeiteten Daten&lt;br /&gt;
* Schützenswerte Daten und Funktionen (Assets)&lt;br /&gt;
* Betriebliche Anforderungen an die Sicherheit bzw. eingesetzte Plattform&lt;br /&gt;
* Dokumentierte Konfigurationseinstellungen &lt;br /&gt;
* BIA (RTO, RPO)&lt;br /&gt;
* Schnittstellen&lt;br /&gt;
* Trust Boundaries&lt;br /&gt;
* Akteure (bzw. Trust Level)&lt;br /&gt;
* Sicherheitsannahmen&lt;br /&gt;
* Geltende Compliance-Anforderungen (BDSG, PCI DSS, etc.)&lt;br /&gt;
&lt;br /&gt;
; Benutzermanagement&lt;br /&gt;
&lt;br /&gt;
Wenn damit das Identity Management gemeint ist, gehört das Dokumentiert, ist aber keine Sicherheitsfunktion. Oder ist hiermit das Rollen- und Berechtigungskonzept gemeint? Grenzt sich aus meiner Sicht schwer mit dem Thema Authentisierung ab. &lt;br /&gt;
&lt;br /&gt;
; Prüffragen&lt;br /&gt;
&lt;br /&gt;
Hier fehlt etwas in Bezug auf Sicherheitsanforderungen. Beispiel: &amp;quot;Werden Sicherheitsanforderungen an den Betrieb während der Entwicklung abgestimmt und dokumentiert&amp;quot;&lt;br /&gt;
&lt;br /&gt;
== M 2.WA12 Entwicklung und Erweiterung von Anwendungen (Markus) ==&lt;br /&gt;
; &amp;quot;Es sollte darauf geachtet werden, dass Sicherheitsanforderungen&lt;br /&gt;
vollständig durch Sicherheitsmechanismen erfüllt und zur Erstellung von&lt;br /&gt;
Testfällen festgehalten werden.&amp;quot; --&amp;gt; Bessere Formulierung würde aussagen, dass die Sicherheitsanforderungen durch Testfälle verifiziert werden.&lt;br /&gt;
&amp;quot;(z. B. durch Kommentare im&lt;br /&gt;
Quelltext). Somit ist der Quelltext zu einem&amp;quot; --&amp;gt; Das ist kein empfehlenswerter Programmierstiel! Raus mit diesem Kommentar&lt;br /&gt;
;&amp;quot;Zum Schutz vor dem Verlust bereits entwickelter und verworfener&lt;br /&gt;
Lösungen sowie zu Dokumentationszwecken sollte die Historie der&lt;br /&gt;
Änderungen festgehalten werden (z. B. durch ein Revisionssystem).&amp;quot; --&amp;gt; Auch diesen Absatz können wir streichen - Kein professioneller Programmierer arbeitet ohne Versionierugssystem.&lt;br /&gt;
;&amp;quot;Bei Web-Anwendung sollten die Webseiten auf Konformität zu dem&lt;br /&gt;
verwendeten Standard (z. B. HTML-Standard) getestet werden. Dadurch&lt;br /&gt;
können unvorgesehene Seiteneffekte aufgrund einer Fehlinterpretation&lt;br /&gt;
seitens der Browser vermieden werden.&amp;quot; --&amp;gt; Könnte man noch um &amp;quot;Die Software ist in möglichst vielen Browsern zu testen&amp;quot; erweitern.&lt;br /&gt;
;Generell geht der Autor leider nicht auf die Rollen &amp;amp; Rechte Verteilung ein. Mir fehlt der Hinweis, das es eine personelle Trennung zwischen Entwicklung, Test und Betrieb geben muss.&lt;br /&gt;
;Zum Thema Wartung / Betrieb --&amp;gt; Hier wird keine Aussage getroffen bezüglich Log_Files. Dieses Thema kann kritische Auswirkungen haben, Bsp.: logging ganzer HTTP-Requests im LogLevel=Debug.&lt;br /&gt;
; &amp;quot;Produktspezifische Sicherheitsfunkionalität&amp;quot; - Dieser Absatz ist gefährlich - der Angreifer ist nicht zur Verwendung dies Zielbrowsers gezwungen. Deshalb können Browser-spez. Sicherheitsfunktionen nur als Add-ON gewertet werden.&lt;br /&gt;
; &amp;quot;Festlegung der Entwicklungsumgebung&amp;quot; - Dieser Absatz geht nicht auf die zu verwendenden Testdaten ein. Der Hinweis, dass Live-Daten / Kundendaten nichts in Test- &amp;amp; Entwicklungsumgebungen zu suchen haben fehlt!!!&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== M 2.WA24 Web-Tracking (Matthias) ==&lt;br /&gt;
&lt;br /&gt;
; Letzter Absatz: &amp;quot;Falls eine Auswertung von Nutzerdaten, insbesondere personenbezogener Daten, .. &amp;quot;&lt;br /&gt;
&lt;br /&gt;
Hier sollte denke ich besser von personenbeziehbaren Daten gesprochen Werten. Dies betrifft etwa die Zuordnung von Surfverhalten zu einer bestimmten Person. Dies sollte stets nach den Prinzipien Datensparsamkeit und Datenvermeidung, Erforderlichkeit, sowie Zweckbindung erfolgen. Ist Webtracking nicht personenbeziehbar ist dies kein Thema für den Datenschutz.&lt;br /&gt;
&lt;br /&gt;
== M 4.WA04 Authentisierung bei Web- Anwendungen (Matthias) ==&lt;br /&gt;
&lt;br /&gt;
; Vermischung von Authentisierung und Session Management &lt;br /&gt;
&lt;br /&gt;
Bei diesem Baustein findet eine ziemlich große Vermischung von Anforderung an die Authentisierung und das erst in &amp;quot;M 4.WA06 Session-Management bei Web- Anwendungen&amp;quot; behandelte Session Management statt (Beispiel: &amp;quot;Remember-Me-Funktion&amp;quot;). Beide Themen sollten sinnvollerweise getrennt voneinander zu betrachten und aufeinander zu beziehen.&lt;br /&gt;
&lt;br /&gt;
; Verwendung von Frameworks&lt;br /&gt;
&lt;br /&gt;
Die Anforderung ist schon ein wenig eingeschränkt. Besser passt hier denke ich die &amp;quot;Abbildung der Authentisierung über Standardkomponenten (Bibliotheken oder Frameworks)&amp;quot;. &lt;br /&gt;
&lt;br /&gt;
; Remember-Me-Funktion&lt;br /&gt;
&lt;br /&gt;
Siehe oben, gehört zum Session Management. Das ließt sich im übrigen so, als ob eine Webanwendung Credentials auf dem Client abhängt. &lt;br /&gt;
&lt;br /&gt;
; Grenzwerte für gescheiterte Anmeldeversuche&lt;br /&gt;
&lt;br /&gt;
Diese Empfehlung ist allgemein falsch, da sie sehr von der betrachteten Anwendung abhängt. Besser wäre hier allgemein von Mechanismen zur Verhinderung von automatisierten Angriffen zu sprechen (Anti-Automatisierung). &lt;br /&gt;
&lt;br /&gt;
Etwa umsetzbar durch&lt;br /&gt;
* Sperrung nach x Anmeldeversuchen&lt;br /&gt;
* Throttling&lt;br /&gt;
* Captchas&lt;br /&gt;
* Sicherheitsfragen&lt;br /&gt;
&lt;br /&gt;
Das allgemeine Sperren kann leicht für das gezielte Aussperren von Benutzern (User Lockout) verwendet werden. Was etwa bei Trading-Anwendungen nicht funktioniert.&lt;br /&gt;
&lt;br /&gt;
; Automatisiertes Zurücksetzen von Authentisierungsdaten&lt;br /&gt;
&lt;br /&gt;
Würde ich besser als &amp;quot;Passwort-Reset&amp;quot; bezeichnen.&lt;br /&gt;
&lt;br /&gt;
Weiterhin fehlt hier der Hinweis, dass statt ein automatisiertes Zurücksetzen, ein Mechanismus zu empfehlen ist, bei dem über ein hinterlegtes Sicherheitsmerkmal (Handy-Nummer oder E-Mail-Adresse) vom Benutzer zunächst eine Verifikation durchgeführt wird. Beispielsweise durch einen erhaltenen Link. Erst dann darf eine Änderung des Passwortes durch den Benutzer erfolgen.&lt;br /&gt;
&lt;br /&gt;
; Registrierung nicht behandelt&lt;br /&gt;
&lt;br /&gt;
Es existiert hier kein Punkt, der die sichere Implementierung von Benutzerregistrierungen behandelt.&lt;br /&gt;
&lt;br /&gt;
; Verweis auf Externalisierung fehlt.&lt;br /&gt;
&lt;br /&gt;
Statt die Authentisierung selbst durchzuführen kann eine Anwendung hierzu auf eine externe Komponente (Beispiel: SiteMinder oder Kerberos) zurückgreifen.&lt;br /&gt;
&lt;br /&gt;
; Verweis auf Behandlung von Credentials fehlt&lt;br /&gt;
&lt;br /&gt;
Auch wenn das  in &amp;quot;M 4.WA15 Schutz vertraulicher Daten bei Web- Anwendungen&amp;quot; ausführlich behandelt wird, sollte in diesem Baustein bereits auf den angemessenen Schutz von Authentisierungsdaten bei Übertragung und Speicherung hingewiesen werden.&lt;br /&gt;
&lt;br /&gt;
== M 4.WA05Umfassende Ein- und Ausgabevalidierung bei Web-Anwedungen (Markus) ==&lt;br /&gt;
; &amp;quot;Ablehnung der Daten im&lt;br /&gt;
Fehlerfall&amp;quot; --&amp;gt; Hier könnte man noch auf Tar-Pits eingehen - nur ein Vorschlag.&lt;br /&gt;
&lt;br /&gt;
== M 4.WA06Session-Management bei Web-Anwendungen (Markus) ==&lt;br /&gt;
; &amp;quot;Übertragung der&lt;br /&gt;
SessionID mittels GETRequest&amp;quot; --&amp;gt; Hier fehlt der Hinweis, dass die Lebensdauer dieser SessionIds kurz/kürzer sein muss, als im Falle der Speicherung im Cookie.&lt;br /&gt;
&lt;br /&gt;
([[User:Mrohr|Matthias]]) Die Anmerkung verstehe ich ehrlich gesagt ueberhaupt nicht, zumal das SM haeufig transparent zwischen Cookies und URL Rewriting wechselt. Wozu soll das gut sein? Wie soll das geschehen? Idealerweise sollte die Session ID niemals in die URL geschrieben werden, das sollte eigentlich genuegen.&lt;br /&gt;
&lt;br /&gt;
; &amp;quot;Verschlüsselte&lt;br /&gt;
Übertragung von&lt;br /&gt;
SessionIDs&amp;quot; --&amp;gt; Hier fehlt der Hinweis auf den Beast-Exploit. TLS Version &amp;gt; 1.0 verwenden!&lt;br /&gt;
&lt;br /&gt;
([[User:Mrohr|Matthias]]) Solange hier nicht auf eine explizite TLS Version eingegangen wird, sollte meiner grossen Ueberzeugung nach hier auch auf keine Exploits etc. eingagen werden, das gehoert an andere Stelle.&lt;br /&gt;
&lt;br /&gt;
([[User:Mrohr|Matthias]]) Weiterhin:&lt;br /&gt;
&lt;br /&gt;
; Es dürfen keine extern bekannten oder erratbaren Daten (z. B. IP-Adresse,&lt;br /&gt;
Uhrzeit) in die Berechnung der SessionID einfließen.&lt;br /&gt;
&lt;br /&gt;
Die Aussage finde ich etwas problematisch, wichtiger ist, dass die Entropie ausreichend hoch ist. Haeufig werden etwa IPs von Load Balancern in die Session ID hineingeschrieben.&lt;br /&gt;
&lt;br /&gt;
; - Domain (z. B. webapp.domain.tld),&lt;br /&gt;
; Path (z. B. /webapp/),&lt;br /&gt;
; - Secure und&lt;br /&gt;
; - HttpOnly.Beschränkte Sitzungsdauer&lt;br /&gt;
&lt;br /&gt;
Das sieht so aus, als ob es empfehlenswert ist, das Domain-Tag zu verwenden, das ist es sicherlich nicht. Was macht hier der Hinweis &amp;quot;Beschraenke Sizuungsdauer&amp;quot;?&lt;br /&gt;
&lt;br /&gt;
== M 4.WA07Fehlerbehandlung durch Web-Anwendungen (Markus) ==&lt;br /&gt;
; Konsistenter / Inkonsistener Zustand einer Webanwendung und der daraus resultierende Datenverlust: Hier fehlen mir die Punkte: DOS, Priv.Escalation, CodeExecution.&lt;br /&gt;
; Vermeidung vertraulicher Informationen in Fehlermeldungen --&amp;gt; Fehlermeldungen sollten ebenfalls eine Systeminformationen preisgeben (Softwareversion, Patchlevel, etc.)&lt;br /&gt;
; Abbruch des Vorgangs nach Auftreten eines Fehlers --&amp;gt; TarPits scheinen dem Autor umbekannt zu sein :)&lt;br /&gt;
; &amp;quot;Werden Fehler möglichst von der gleichen Komponente behandelt, in der&lt;br /&gt;
der Fehler aufgetreten ist?&amp;quot; --&amp;gt; Das &amp;quot;möglichst&amp;quot; sollten wir streichen.&lt;br /&gt;
&lt;br /&gt;
== M 4.WA08Schutz vor automatisierter Nutzung von Web-Anwendungen (Markus) ==&lt;br /&gt;
; &amp;quot;Brute-Force-&lt;br /&gt;
Angriffe (z. B. Erraten von Zugangsdaten) und Enumeration-Angriffe (z. B.&lt;br /&gt;
automatisiertes Ermitteln von gültigen Login-Namen)&amp;quot; -- die Beispiele sind identisch - besser Beispiele suchen, z.b. URL-Enumeration&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== M 4.WA11Sichere Konfiguration von Web-Anwendungen (Markus) ==&lt;br /&gt;
; &amp;quot;Sicherer Umgang mit TLS/SSL&amp;quot; -- Hier fehlt der Hinweis, dass TLS-1.0 gebrochen ist&lt;br /&gt;
; &amp;quot;Zeichenkodierungskonfiguration&amp;quot; -- Ein Whitelisting abhängig von der Encodierung wäre ein weiterer Vorschlag&lt;br /&gt;
; &amp;quot;Restriktive Dateisystemberechtigungen&amp;quot; -- auch wenn es ein klassiker ist - der AS sollte ebenfalls mit von einem eingeschränkten Nutzer gestartet werden und nicht als root&lt;br /&gt;
; Administration Consolen:zur Ergänzen: Wenn diese nicht benötigit, sollten derartige Applikationen nicht deployed werden, unabhängig von möglichen Zugangsbeschränkungen.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== M 4.WA13Kontrolliertes Einbinden von Daten und Inhalten bei Web-Anwendungen (Markus) ==&lt;br /&gt;
; Datei-Upload: Bei einem Upload werden Dateien durchaus in TEMP-Verzeichnissen gesammelt und danach weiterverarbeitet. Diese TEMP-Verzeichnisse sind im Rahmen einer Sicherheitsanalyse zu betrachten -&amp;gt; Möglicher (unbefugter) Zugriff auf weitere Uploads&lt;br /&gt;
; Upload komprimierter Dateien / großer Dateien birgt die Gefahr von DOS Angriffen&lt;br /&gt;
; Upload von Dateien kann bei weiterem Parsing zu Speicherengpässen führen --&amp;gt; DOS-Angriffe auf Thread-Local etc.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== M 4.WA14Restriktive Herausgabe sicherheitsrelevanter Informationen bei Web-Anwendungen (Markus) ==&lt;br /&gt;
OK - Keine Anmerkungen von mir.&lt;br /&gt;
&lt;br /&gt;
== M 4.WA15Schutz vertraulicher Daten bei Web-Anwendungen (Markus) ==&lt;br /&gt;
; Sichere kryptographische Algorithmen:&lt;br /&gt;
 Hier fehlt mir eine Liste der aktuelle als sicher geltenden Verfahren.&lt;br /&gt;
; Schlüssel&lt;br /&gt;
 Das die Schlüssel bestimmten Formaten entsprechen müssen ist ok - aber das Schlüsselmanagement wird gar nicht besprochen?&lt;br /&gt;
; Schutz der Daten im Browsercache&lt;br /&gt;
 Skripte und Browserplugins können ebenfalls auf den Browsercache zugreifen - diese werden hier nicht erwähnt.&lt;br /&gt;
; Maskierung von Passwörtern &lt;br /&gt;
 Dies schützt bei der Eingabe nur vor ShoulderSurfing nicht vor Skripten oder Plugins die diese an andere Server posten.&lt;br /&gt;
; Sicherung von Zugangsdaten:&lt;br /&gt;
 Zugangsdaten in einer Datei abzulegen - wenn auch ausserhalb des WebRoots ist keine gute Idee.&lt;br /&gt;
; Schutz von Quelltexten:&lt;br /&gt;
 Hier würde ich property files mit aufnehmen. der hinweis auf web-inf/classes fehlt - warum?&lt;br /&gt;
 Bei include-befehlen sind die pfadangaben zu überdenken.&lt;br /&gt;
&lt;br /&gt;
== M 4.WA16Zugriffskontrolle bei Web-Anwendungen (Markus) ==&lt;br /&gt;
; Zugriffskontrolle via Frameworks:&lt;br /&gt;
 Dieser Punkt (Frameworks) wird nur in einem Satz erwähnt. Es werden keine Bespiele gegeben - Das ist zu wenig.&lt;br /&gt;
 Es müssen alle Zugriffe geschützt werden. Eine Protokollierung aller Zugriffe mit den nötigen Informationen ist ebenfalls empfehlenswert.&lt;br /&gt;
; Datei Upload:&lt;br /&gt;
 Die Gefahr eines DOS wird hier nicht erwähnt.&lt;br /&gt;
&lt;br /&gt;
== M 4.WA19Verhinderung von Cross-Site Request Forgery (CSRF, XSRF) (Markus) ==&lt;br /&gt;
; Verantwortliche: &lt;br /&gt;
 Entwickler und Admins!&lt;br /&gt;
([[User:Mrohr|Matthias]]) Korrekt, wobei auch in der Reihenfolge&lt;br /&gt;
&lt;br /&gt;
; Anti-CSRF-Token in hidden fields:&lt;br /&gt;
 Das ist keine gute Idee. Ich würde das streichen!&lt;br /&gt;
&lt;br /&gt;
([[User:Mrohr|Matthias]]) Watt? Anti-CSRF-Tokens in Hidden Fields sind die Standard-Massnahme. Wie denn sonst? Bitte nicht streichen!!! &lt;br /&gt;
&lt;br /&gt;
([[User:Mrohr|Matthias]]) Die Technik bei der die Session ID als Anti-CSRF-Token verwendet wird, wird als Double-Cookie Submit bezeichnet, das sollte hier referenziert werden.&lt;br /&gt;
&lt;br /&gt;
; Umgehung von Schutzmechanismen:&lt;br /&gt;
 Man in the middle hat keinen direkten Bezug zu CSRF! Das würde ich streichen.&lt;br /&gt;
([[User:Mrohr|Matthias]]) Der Hinweis ist korrekt. Wovon der Autor hier spricht ist Session Replay nicht CSRF.&lt;br /&gt;
&lt;br /&gt;
; Frameworks:&lt;br /&gt;
 Gute Idee - aber es gibt auch Features in den ApplicationServern die CSRF unterbinden - warum wird das nicht besprochen?&lt;br /&gt;
&lt;br /&gt;
([[User:Mrohr|Matthias]]) Sehe ich persoenlich nicht so, da CSRF primaer ein Applikations-Fehler ist, und auch in der Applikation und nicht im Environment (AppServer) geloest werden sollte. Auch wenn das manchmal ggf. die einzig machbare Loesung darstellt.&lt;br /&gt;
&lt;br /&gt;
([[User:Mrohr|Matthias]]) Was generell fehlt, ist ein Hinweis darauf, dass schreibende Requests generell per HTTP Post abgewickelt werden sollten, da HTTP Get keine &amp;quot;Safe Method&amp;quot;  (siehe HTTP 1.1, RFC 2616) ist.&lt;br /&gt;
&lt;br /&gt;
== M 4.WA20Sicherer Entwurf der Logik von Web-Anwendungen (Markus) ==&lt;br /&gt;
; Rollbacks:&lt;br /&gt;
 Tritt ein Fehler auf muss die Applikation einen konsistenten Datenstand zurück lassen. Das wird hier nicht erwähnt.&lt;br /&gt;
; RaceConditions:&lt;br /&gt;
 Fehler in der Geschäftslogik können auch durch zwei gleichzeitige Sessions auf einer Webapplikation auftreten - das wird hier nicht besprochen.&lt;br /&gt;
&lt;br /&gt;
== M 4.WA22Verhinderung der Blockade von Ressourcen (DoS) bei Web-Anwendungen (Markus) ==&lt;br /&gt;
; Datenspeicher:&lt;br /&gt;
 Neben dem Datenspeicher sollte auch der RAM-Verbrauch pro Thread der Applikation limitiert werden.&lt;br /&gt;
; Voraggregation von Daten / Caching&lt;br /&gt;
 Dieser Punkt fehlt: Stark ressourcen belastende Anfragen können auch in Lastarmen Zeiten vorberechnet werden.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== M 4.WA25Verhinderung von Clickjacking (Markus) ==&lt;br /&gt;
Ok - das passt soweit.&lt;br /&gt;
&lt;br /&gt;
== M 5.WA21Sichere Anbindung von Hintergrundsystemen an Web-Anwendungen (Markus) ==&lt;br /&gt;
; Verantwortliche:&lt;br /&gt;
 Architekten fehlen. Entwickler müssen die Views umsetzen und die Datasource entsprechend einbinden - die fehlen hier ebenfalls.&lt;br /&gt;
; DirectorySystem Beispiel:&lt;br /&gt;
 Das DirectorySystem wird in dem angegeben Beispiel zum Single Point of Failure - das wird verschwiegen.&lt;br /&gt;
; Firewalls:&lt;br /&gt;
 Das sind fachlich-blinde Systeme. Was ist mit WAFs / IDS / IPS etc.?&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== M 5.WA23Systemarchitektur einer Web-Anwendung (Markus) ==&lt;br /&gt;
; Verantwortliche:&lt;br /&gt;
Auch hier fehlend wieder die Architekten. &lt;br /&gt;
; Virtualisierung:&lt;br /&gt;
Virtualisierung bietet weitere Angriffsvektoren (z.B.: Hypervisor) die eine &amp;quot;Blech&amp;quot;Farm nicht bietet.&lt;/div&gt;</summary>
		<author><name>Mrohr</name></author>	</entry>

	<entry>
		<id>https://wiki.owasp.org/index.php?title=Talk:OWASP_Review_BSI_IT-Grundschutz_Baustein_Webanwendungen&amp;diff=130085</id>
		<title>Talk:OWASP Review BSI IT-Grundschutz Baustein Webanwendungen</title>
		<link rel="alternate" type="text/html" href="https://wiki.owasp.org/index.php?title=Talk:OWASP_Review_BSI_IT-Grundschutz_Baustein_Webanwendungen&amp;diff=130085"/>
				<updated>2012-05-18T07:41:42Z</updated>
		
		<summary type="html">&lt;p&gt;Mrohr: /* M 4.WA19Verhinderung von Cross-Site Request Forgery (CSRF, XSRF) (Markus) */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Since it's about a review of a document in German, all the discussions will be done in German :-)&lt;br /&gt;
&lt;br /&gt;
Diskussionen rund um den Review des &amp;quot;IT-Grundschutzbausteins Webanwendungen&amp;quot; finden hier statt, sinnvollerweise auf Deutsch :-)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Vorschlag für Kriterien, die an unser Review angelegt werden sollten (.kai) ==&lt;br /&gt;
&lt;br /&gt;
* Der Baustein soll alle wichtigen Themen der Entwicklung sicherer&lt;br /&gt;
Webanwendungen enthalten.&lt;br /&gt;
&lt;br /&gt;
* Der Baustein soll die verschiedenen Phasen der Software-Entwicklung&lt;br /&gt;
vollständig abdecken.&lt;br /&gt;
&lt;br /&gt;
* Der Baustein soll zwischen verbindlichen, prüfbaren Vorgaben und&lt;br /&gt;
unverbindlichen Empfehlungen sprachlich sauber unterscheiden (hier&lt;br /&gt;
spielt mein Auditorenblick eine Rolle). Vor allem soll der Baustein&lt;br /&gt;
verbindliche Anforderungen auch tatsächlich stellen. Alle&lt;br /&gt;
verbindlichen Anforderungen müssen unabhängig von der jeweiligen&lt;br /&gt;
Umgebung auch umsetzbar sein, d.h. sie müssen entsprechend generisch&lt;br /&gt;
sein.&lt;br /&gt;
&lt;br /&gt;
* Die Maßnahmen sollen nur in (begründbaren) Ausnahmen zu Empfehlungen&lt;br /&gt;
von OWASP im Widerspruch stehen.&lt;br /&gt;
&lt;br /&gt;
* Die Maßnahmen sollen verständlich und anwendbar sein.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== &amp;quot;Hilfsmittel&amp;quot; (Markus) ==&lt;br /&gt;
Ich würde das Script zur Vermeidung von Clickjacking wrappen und nicht als losen Skript-block in den Text einbinden - einfach schlechter Programmierstiel diese losen Blöcke.&lt;br /&gt;
Der Zugriff auf das Body-Element mit byTagName-Array[0] ist auch nicht wirklich gut. Ich halte Zugriffe über das DOM (klassisch), bei ID bzw. XPATH für besser. &lt;br /&gt;
&lt;br /&gt;
SQL-Injection Characters:&lt;br /&gt;
die Pipe fehlt hier zur Textkonatenierung&lt;br /&gt;
+ / - haben auch eine Bedeutung bei JOINs.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== &amp;quot;Goldene Regeln&amp;quot; (Matthias) ==&lt;br /&gt;
&lt;br /&gt;
Hier meine Anmerkungen zu diesem Dokument:&lt;br /&gt;
&lt;br /&gt;
; 1. Für mich fehlende Punkte&lt;br /&gt;
* Korrektur der Ursache (Root Cause) von Schwachstellen statt  Verhinderung deren Ausnutzung&lt;br /&gt;
* Bezug auf Minimierung der Angriffsfläche und Least-Privilege-Prinzip&lt;br /&gt;
* Bezug auf Defense-in-Depth-Prinzip&lt;br /&gt;
* Verwendung von getesteten Security APIs (z.B. OWASP ESAPI) statt selbstentwickelter Funktionen&lt;br /&gt;
* Bezug auf Externalisierung von Sicherheitsfunktionen, sowie deklerative vor programmatischer Sicherheit.&lt;br /&gt;
&lt;br /&gt;
; 2. Begriff &amp;quot;Web-Anwendung&amp;quot;&lt;br /&gt;
Würde ich generell durch &amp;quot;Webanwendung&amp;quot; ersetzen.&lt;br /&gt;
&lt;br /&gt;
; 3. Einleitung (&amp;quot;Web-Anwendungen stellen Funktionalität zur Verfügung, ...&amp;quot;)&lt;br /&gt;
&lt;br /&gt;
Wozu dient dieser Satz?&lt;br /&gt;
&lt;br /&gt;
; 4. &amp;quot;Die Architektur der Web-Anwendung ist im Sicherheitskonzept zu  dokumentieren.....&amp;quot; &lt;br /&gt;
&lt;br /&gt;
Ich fände es sinnvoller, wenn hier von der &amp;quot;Sicherheitsarchitektur&amp;quot; gesprochen wird, welche etwa neben den sicherheitsrelevanten Datenflüssen, sensible Komponenten, Entry Points, Akteure architekturelle Security Controls wie Authentisierung, Kryptographie und natürlich die Trust Boundaries beinhaltet.&lt;br /&gt;
&lt;br /&gt;
; 5. &amp;quot;Bei Web-Anwendungen handelt es sich häufig um spezielle Eigenentwicklungen....&amp;quot;&lt;br /&gt;
&lt;br /&gt;
Erstens würde ich hier den geläufigen Begriff &amp;quot;Individualsoftware&amp;quot; verwenden. Zweitens würde ich statt bestimmte SDLC-Phasen vorzugeben (die Begriffe &amp;quot;Softwareverteilung&amp;quot; und &amp;quot;Integration&amp;quot; sind mir bei Webanwendungen bisher noch nicht so häufig untergekommen), besser von der Notwendigkeit sprechen, Sicherheit in allen Entwicklungsphasen zu berücksichtigen, also eines SDLs.&lt;br /&gt;
&lt;br /&gt;
; 6. &amp;quot;Alle Ein- und Ausgaben der Web-Anwendung müssen in eine normalisierte Form überführt werden....&amp;quot;&lt;br /&gt;
&lt;br /&gt;
Normalisierung ist für mich nicht gleich Kanonsierung, auch wenn beide Begriffe häufig als synonym verwendet werden.  Der Unterschied wird in der [http://owasp-esapi-java.googlecode.com/svn/trunk_doc/2.0-rc4/org/owasp/esapi/Encoder.html API-Beschreibung der ESAPI] erklärt. Die Normalisierungs-Funktion ist allerdings schon vor einiger Zeit aus der ESAPI [https://lists.owasp.org/pipermail/esapi-dev/2010-January/000266.html rausgeflogen]. Die generelle Kanonisierung von Ausgaben halte ich dazu für nicht sinnvoll.&lt;br /&gt;
&lt;br /&gt;
Zweitens, finde ich den weiteren Text zwar grundsätzlich formal korrekt, aber so allgemein, dass dieser glaube ich niemandem so richtig etwas bringt.  &lt;br /&gt;
&lt;br /&gt;
Besser fände ich hier Ein- von Ausgabevalidierung grundsätzlich voneinander abzugrenzen. Etwa was ich per Eingabevalidierung (Längenprüfung, Casting, etc. per Whitelisting) und was mit Ausgebavalidierung (Enkodierung, Escaping, Parametrisierung) machen muss und kann.&lt;br /&gt;
&lt;br /&gt;
Eingabedaten können technisch zudem auch Werte eingelesener Property-Dateien sein. Muss ich die auch validieren? Ist das dann noch Grundschutz? &lt;br /&gt;
&lt;br /&gt;
; 7. &amp;quot;Für den Zugriff auf sensitive Funktionen oder Informationen muss die Web-Anwendung eine wirksame Authentisierung und Sitzungsverwaltung unterstützen. Die Eigenschaften der Sitzungs-ID müssen so gewählt werden, dass die Sitzung ausreichend geschützt ist. ....&amp;quot;&lt;br /&gt;
&lt;br /&gt;
Besser fände ich &amp;quot;eine Authentisierung, die über eine dem Schutzbedarf der Anwendung angemessene Stärke verfügt.&amp;quot; &lt;br /&gt;
&lt;br /&gt;
Eigentlich geht es doch mehr um den Schutz der Sitzungs-ID, da diese gewöhnlich im Verlauf einer Sitzung den Client authentisiert. Oder den Schutz des Zugriffs auf eine Sitzung. &lt;br /&gt;
&lt;br /&gt;
Zudem fehlt hier meiner Meinung nach der Hinweis auf die bevorzugte Verwendung getesteter Standardkomponenten.&lt;br /&gt;
&lt;br /&gt;
; 8. &amp;quot;Die Web-Anwendung sollte die zu übermittelnden Daten schützen.&amp;quot;&lt;br /&gt;
&lt;br /&gt;
Dies würde ich nur auf sensible Daten beziehen. Zusätzlich zu HTTPS würde ich hier schreiben, dass sensible Daten generell nicht in der URL übertragen werden dürfen.&lt;br /&gt;
&lt;br /&gt;
; 9. &amp;quot;Die Preisgabe interner Informationen (z.B. Kommentare, Fehlermeldungen)&amp;quot;&lt;br /&gt;
&lt;br /&gt;
Hier würde ich eher schreiben &amp;quot;(IN Kommentaren, Fehlermeldungen, HTTP Headern, etc.)&amp;quot;&lt;br /&gt;
&lt;br /&gt;
; 10. &amp;quot;Fehler müssen so behandelt werden, ... müssen Fehler bei der Autorisierung zu einer Verweigerung beim Zugriff auf die angeforderte Ressource führen.&amp;quot;&lt;br /&gt;
&lt;br /&gt;
Sprachlich: &amp;quot;Die Webanwendung muss sich stets in einem sicheren Zustand befinden. Beispielsweise müssen Fehler bei der Autorisierung zu einer Verweigerung des Zugriffs führen (Default-Deny-Strategie).&amp;quot;&lt;br /&gt;
&lt;br /&gt;
; 11. &amp;quot;Die Logging-Funktionen der Web-Anwendung müssen aufgetretene Ereignisse derart protokollieren, dass sicherheitskritische Vorfälle nachvollzogen werden können.&amp;quot;&lt;br /&gt;
&lt;br /&gt;
Hier würde hier eher von &amp;quot;allen sicherheitsrelevanten Ereignissen&amp;quot; sprechen.&lt;br /&gt;
&lt;br /&gt;
Weiterhin sollten insbesondere beim Logging der Datenschutz berücksichtigt werden, personenbezogene Daten also nach Möglichkeit nicht oder nur anonymisiert in technischen Logdateien protokolliert werden.&lt;br /&gt;
&lt;br /&gt;
; 12. &amp;quot;Alle Sicherheitsmechanismen (z.B. Authentisierung und Zugriffskontrolle) sind serverseitig zu implementieren und können nicht durch clientseitige Mechanismen ersetzt werden.&amp;quot;&lt;br /&gt;
&lt;br /&gt;
Die Aussage ist so nicht korrekt. Darüber hatten wir bereits bei der ASVS mehrfach diskutiert. &lt;br /&gt;
&lt;br /&gt;
Überall dort wo der Client angegriffen wird, also etwa bei RIAs (Stichwort DOM-Based XSS) müssen wir Security Controls clientseitig implementieren. Es gibt mittlerweile deshalb auch eine Portierung der ESAPI auf Javascript. Überall dort wo der Server oder Hintegrundsysteme angegriffen werden, ist die Aussage aber natürlich zutreffend.&lt;br /&gt;
&lt;br /&gt;
== &amp;quot;Gefährdungen&amp;quot; (Markus, Dennis, .... &amp;lt;Dein Name&amp;gt;) ==&lt;br /&gt;
; Generell:&lt;br /&gt;
Reference auf RFCs fehlen.&lt;br /&gt;
&lt;br /&gt;
==B.5.XX Web-Anwendungen ==&lt;br /&gt;
; 1. Erster Absatz - Letzter Satz: --Wieso werden hier nur HTML/XML Doks und Oberflächen angesprochen? Was ist der Unterschied zwischen einem HTML-Dok und einer Oberfläche? Was ist mit  Flash, etc.? Was ist mit WebSockets?&lt;br /&gt;
; 2. Stichpunkt &amp;quot;Protokollierung&amp;quot;: Sicherheits relevant ist ein sehr dehnbarer Begriff - Eine bessere Formulierung könnte sein: Zur Rekonstruktion von Nutzerhandlungen nötige Ereignisse (positve &amp;amp; negative) müssen protokolliert werden . . . &lt;br /&gt;
; 3. Absatz: &amp;quot;Abgrenzung des Bausteins&amp;quot;: &amp;quot;Die spez. Sicherheitsanforderungen an Web-Services werden in diesem Baustein nicht betrachtet&amp;quot; --&amp;gt; Wie so nicht? Was ist das Backend von einer Rest / AJAX-basierenden Webanwendung denn anderes als ein Web-Service? Diesen Satz würde ich entfernen.&lt;br /&gt;
; 4.Vorsätzliche Handlungen -&amp;gt; Web-Spoofing (G.5.87) -- Missverständliche Bezeichnung / Nomenklatur&lt;br /&gt;
; 5. Seite 4 : erste Zeile &amp;quot;Umsetzung&amp;quot;: &amp;quot;dafür umzusetztende Komponenten müssen die Webanwendung schützen...&amp;quot; - Hier fehlt mir der Hinweis, dass dieser Schutz verifiziert werden muss.&lt;br /&gt;
; 6 Seite 5: &amp;quot;Umsetzung&amp;quot; - Wir haben CSRF, D(D)os und SQL-Injection aber wo ist XSS?&lt;br /&gt;
; 7 Seite 7: &amp;quot;Die Sicherheitsfunktion wird ausschließlich clientseitig...&amp;quot; --&amp;gt; Warum muss der Angreifer überhaupt einen Browser umkonfigurieren? Was ist mit Proxies, Scripts, etc.? Ich würde das reduzieren darauf, dass rein Webbrowser-basierende Schutzfunktionen einfach umgangen werden können.&lt;br /&gt;
; 8 Seite 8: Die angesprochenen Punkte hinterlassen den Eindruck nicht vollständig zu sein: Mir fehlen Punkte wie &amp;quot;Outsourcing&amp;quot;, &amp;quot;KnowHow der Entwickler&amp;quot;, Tooling, Framework-Auswahl, etc.&lt;br /&gt;
; 9 Seite 9: Eigentlich möchte der Autor hier über Datenschutz sprechen. Abgesehen von den letzten drei Zeilen geht es aber nur um &amp;quot;User tracking&amp;quot; - Wo ist der Rest der Datenschutzproblematik? Warum der Fokuss auf Tracking? Mir ist das zu einseitig.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
tbd.&lt;br /&gt;
&lt;br /&gt;
; Wortwahl:&lt;br /&gt;
Ich stosse innerhalb der Texte immer wieder an die Worten '''Hintergrundsystem''' und '''Sicherheitskontext'''.&lt;br /&gt;
'''Hintergrundsystem:''' besseres Synonym?&lt;br /&gt;
'''Sicherheitskontext:''' nur weil es in den Texten um Sicherheit geht muss nicht an jeder Stelle immer wieder das Wort _Sicherheits_kontext eingebaut werden.&lt;br /&gt;
Bsp: &amp;quot;Erlangt ein Angreifer Kenntnis von einer solchen gültigen, aber nicht mehr genutzten SessionID, so kann er die Web-Anwendung im Sicherheitskontext des nicht abgemeldeten Benutzers weiter verwenden.&amp;quot; (G 5,WA12 Unzureichendes Session-Management von Web-Anwendungen)&lt;br /&gt;
Verbesserungsansansatz: ... so kann er die Web-Anwendung anstelle des eigentlichen Besitzers weiterhin verwenden.&lt;br /&gt;
&lt;br /&gt;
== &amp;quot;G 2.WA01 Mangelhafte Auswahl oder Konzeption von Web-Anwendungen&amp;quot; (Matthias) ==&lt;br /&gt;
&lt;br /&gt;
Nachdem ich mir diese Gefährdung durchgelesen hatte, fehlten mir ehrlich gesagt etwas die Worte. Nicht nur, dass hier fast jeder zweite Satz entweder falsch ist bzw. massive Fehler enthält oder ich diesen schlicht nicht verstehe, ist der ganze Text sprachlich wirklich enorm verbesserungsfähig. &lt;br /&gt;
&lt;br /&gt;
Na gut, ich konzentriere mich mal auf die fachlichen Punkte:&lt;br /&gt;
&lt;br /&gt;
; 1. Security Controls&lt;br /&gt;
Werden mal mit &amp;quot;Schutzmechanismen&amp;quot;, mal mit &amp;quot;Sicherheitskomponenten&amp;quot; und dann wieder als &amp;quot;Sicherheitsfunktionen&amp;quot; bezeichnet. Hier macht eine einheitliche Benennung sicherlich Sinn und ist weniger verwirrend.&lt;br /&gt;
&lt;br /&gt;
; 2. &amp;quot;Eine Web-Anwendung ist in der Regel ein verteiltes, komplexes System bestehend aus unterschiedlichen Komponenten (z. B. Webserver, Applikationsserver, Hintergrundsysteme)&amp;quot;&lt;br /&gt;
&lt;br /&gt;
Eine Webanwendung besteht sicher nicht aus einem Webserver- oder anderer infrastruktureller Komponenten, sondern ist Software welches diese nutzt.&lt;br /&gt;
&lt;br /&gt;
; 3. &amp;quot;Bei individuell entwickelten Web-Anwendungen sind im Allgemeinen die Frameworks, Komponenten und Schnittstellen im Rahmen der Konzeption auszuwählen und deren Einbindung und Absicherung zu betrachten....Im Gegensatz dazu ist bei der Konzeption von Web-Anwendungen auf Basis von Standardsoftware insbesondere auf die Auswahl der Software und die Konfiguration der Teilkomponenten zu achten&amp;quot;&lt;br /&gt;
&lt;br /&gt;
Wir unterscheiden im Rahmen von Webanwendungen eigentlich Free or Opensource Software (FOSS bzw. FLOSS), Standardsoftware und Individualsoftware voneinander. Wir unterscheiden nicht Frameworks von Standardsoftware. Frameworks können Teil von Standardsoftware sein, wie etwa bei SharePoint, SAP, etc, oder aber FOSS, wie etwa Spring. Die ganzen Absätze machen für mich daher keinen Sinn.&lt;br /&gt;
&lt;br /&gt;
; 4. &amp;quot;Eine Sicherheitsfunktion (z. B. Authentisierung, Autorisierung) wird nicht an einer Stelle umgesetzt und verwendet, sondern ist mehrfach in der Web- Anwendung realisiert. Wird diese Sicherheitsfunktion an den verschiedenen Stellen unterschiedlich umgesetzt, führt dies zu einem uneinheitlichen Sicherheitsniveau.&amp;quot;&lt;br /&gt;
&lt;br /&gt;
Natürlich ist die mehrfache Verwendung bestimmter Security Controls, beispielsweise von Zugriffskontrollen (Complete-Mediation) oder Validierung (Robustheit) erstrebenswert. Was der Autor hier wahrscheinlich meinte, war die Notwendigkeit diese zu Kapseln bzw. zu Externalisieren. Das bezieht sich im übrigen nicht nur auf die Controls selbst, sondern auch auf ihre Parametrisierung (etwa. über Konfigdateien / XACML).&lt;br /&gt;
&lt;br /&gt;
Wichtiger wäre in diesem Zusammenhang zudem die fehlende Berücksichtigung bestimmter Security Controls.&lt;br /&gt;
&lt;br /&gt;
; 5. &amp;quot;Auswahl von Web-Anwendungen auf Basis von Standardsoftware&amp;quot;&lt;br /&gt;
Was will der Satz sagen? Ich wähle Standardsoftware aus, aber doch keine Webanwendungen. Oder heißt das, ich kaufe eine existierende Anwendung ein (Webanwendung!=Indivudualsoftware)? &lt;br /&gt;
&lt;br /&gt;
; 6. &amp;quot;Das ausgewählte Produkt verfügt nicht über die ausreichende Sicherheitsfunktionalität, ... Daher müssen die notwendigen Schutzmechanismen nachträglich hinzugefügt werden, wodurch zusätzliche Aufwände entstehen.&amp;quot;&lt;br /&gt;
Das ist etwas sehr positiv formuliert. Tatsächlich können fehlende Security Controls in zugekaufter Software (insb. Standardsoftware) in der Realität häufig gar nicht hinzugefügt werden oder nur perimetrisch (z.B. per WAF oder Access Gateway).&lt;br /&gt;
&lt;br /&gt;
; 7. &amp;quot;Die Hintergrundsysteme werden unzureichend abgesichert und dadurch ist die Datenbank der Web-Anwendung aus dem Internet erreichbar.&amp;quot;&lt;br /&gt;
Gehören fehlende Netzwerksegmentierung bzw. Firewallregeln wirklich in diesen Kontext? Das ist doch eigentlich Grundschutz der Infrastruktur, oder?&lt;br /&gt;
&lt;br /&gt;
; 8. &amp;quot;Aufgrund schwacher Parameter in der Konfiguration des Frameworks zum Session-Management werden unsichere SessionIDs erzeugt.&amp;quot;&lt;br /&gt;
Was sind &amp;quot;schwache&amp;quot; Parameter?&lt;br /&gt;
&lt;br /&gt;
Welches Framework erlaubt unsichere SessionIDs durch eine &amp;quot;schwache&amp;quot; Konfiguration zu erzeugen?&lt;br /&gt;
&lt;br /&gt;
; 9. &amp;quot;Wird die Konfiguration des Web-Browsers durch einen Angreifer manipuliert, können die clientseitig umgesetzten&amp;quot;&lt;br /&gt;
&lt;br /&gt;
Manipuliert ein Angreifer die Konfguration seines Webbroswers, wenn er einen MITM-Proxy konfiguriert?&lt;br /&gt;
&lt;br /&gt;
Wie bereits bei den &amp;quot;Goldenen Regeln&amp;quot; angemerkt, gilt auch hier, das manche Security Controls auch clientseitig umgesetzt werden dürfen (etwa. zur Verhinderung von Dom-Based XSS).&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== &amp;quot;G 5.WA10 Fehler in der Web-Anwendungslogik&amp;quot; (Dennis) ==&lt;br /&gt;
; 1. &amp;quot;Damit kann aufgrund der Prüfreihenfolge ein hoher Ressourcenverbrauch provoziert werden, der für Denial-of-Service-Angriffe ausgenutzt werden kann.&amp;quot;&lt;br /&gt;
Meiner Meinung nach passt in diesem Kontext die Attacke DoS nicht ganz. Falls die nachfolgende Funktionalität wegen der langen Ausführungszeit der Filterkomponente übersprungen wird bzw. ein Fehler auftritt würde dies meiner Ansicht in die Thematik Anwendungslogik passen. Eine DoS-Attacke kann hingegen anhand jeder Funktion durchgeführt werden.&lt;br /&gt;
&lt;br /&gt;
== &amp;quot;G 5.WA11 Umgehung clientseitig umgesetzter Sicherheitsfunktionen von Web-Anwendungen&amp;quot; (Dennis) ==&lt;br /&gt;
; 1. &amp;quot;Ein Angreifer kann diese ausnutzen, um beispielsweise unbefugt Befehle an Hintergrundsysteme der Web-Anwendung zu übermittlen (z.B. in Form von Datenbankanfragen bei einer SQL-Injection).&amp;quot;&lt;br /&gt;
Umformulierung des Inhalts der Klammer. Hatte beim ersten Lesen für mich den Anschein, als ob ein Formular genutzt werden könnte welches den Nutzer aufforder eine SQLI einzugeben. Ich denke &amp;quot;Datenbankanfrage zwecks Ausführung einer SQL-Injection&amp;quot; würde besser passen.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== G 2.WA02 Mängel bei der Entwicklung und der Erweiterung von Web-Anwendungen (Matthias) ==&lt;br /&gt;
&lt;br /&gt;
Allgemein ist de obere Teil ok, die aufgezählten &amp;quot;Auswirkungen von fehlenden Vorgaben&amp;quot; verstehe ich jedoch nicht. Wo ist etwa der Bezug von Barrierefreiheit auf die Anwendungssicherheit?&lt;br /&gt;
&lt;br /&gt;
Mein Vorschlag, um diese Punkte etwa sinnvoll umzubauen:&lt;br /&gt;
* &amp;quot;Fehlendes Vorgehensmodell&amp;quot;: Bezug auf fehlende Berücksichtigung von Sicherheit im SDLC. Statt eines SDLCs selbst sollte hier besser auf die Notwendigkeit eines Secure Development Lifecycle (SDL) hingewiesen werden&lt;br /&gt;
* &amp;quot;Fehlende Programmierrichtlinien&amp;quot; =&amp;gt; Besser wäre hier &amp;quot;Fehlende Sicherheitsrichtlinien in der Programmierung&amp;quot; also &amp;quot;Secure Coding Guidelines&amp;quot;&lt;br /&gt;
* &amp;quot;Testfälle&amp;quot; =&amp;gt; &amp;quot;Sicherheitsrelevante Testfälle&amp;quot; (z.B. Security Unit Tests). &lt;br /&gt;
* &amp;quot;Barrierefreiheit&amp;quot;: Warum nicht an dieser Stelle die Auswirkungen von Sicherheitsfunktionen auf die Bedienbarkeit, etwa anhand von CAPTCHAS erläutern?&lt;br /&gt;
&lt;br /&gt;
== G 2.WA03 Unzureichender Schutz personenbezogener Daten bei Web-Anwendungen (Matthias) ==&lt;br /&gt;
&lt;br /&gt;
Der Titel dieses Bausteines heißt &amp;quot;Schutz personenbezogener Daten&amp;quot;, die genannten Beispiele beziehen sich bis auf den letzten jedoch auf die missbräuchliche (oder zumindest problematische) Nutzung aus Sicht des Datenschutzes. &lt;br /&gt;
&lt;br /&gt;
Die Punkt 1-3 sollten daher besser entfallen und z.B. durch die Folgenden ersetzt werden:&lt;br /&gt;
* Unsichere Einbindung von sozialen Netzwerken (Bezug nehmen auf den Like-Button bei Facebook)&lt;br /&gt;
* Unsichere Einbindung von Werbeinhalten&lt;br /&gt;
* Unsichere Übertragung und Caching&lt;br /&gt;
* Unsichere Protokollierung&lt;br /&gt;
* Ungenügender Zugriffsschutz&lt;br /&gt;
* Verstoß des Minimalprinzips bzw. der Zweckgebundenheit (welche Daten werden wirklich benötigt)&lt;br /&gt;
&lt;br /&gt;
Auch wäre es ggf. zumindest einen Verweis auf das BDSG zu machen.&lt;br /&gt;
&lt;br /&gt;
== G 4.33 Unzureichende oder fehlende Authentisierung (Matthias) ==&lt;br /&gt;
&lt;br /&gt;
; 1. Erster Absatz: &amp;quot;Wenn Authentisierungsmechanismen fehlen oder zu schlecht sind&amp;quot;&lt;br /&gt;
&lt;br /&gt;
&amp;quot;schlecht&amp;quot; sollte vlt besser durch &amp;quot;unzureichend&amp;quot; ersetzt werden.&lt;br /&gt;
&lt;br /&gt;
; 2. &amp;quot;Sicherheitslücken entstehen bei... der Benutzerauthentisierung&amp;quot;&lt;br /&gt;
&lt;br /&gt;
Hier findet nur ein Bezug auf &amp;quot;Passwörter&amp;quot; statt. Der Bezug auf die fehlerhaft implementierte oder dem Schutzbedarf ungenügende Schutzmechanismen (z.B. keine 2-Faktor-Authentisierung bei hochsensiblen Daten) fehlt. Auch auf das komplette fehlen von Authentisierungs-Controls wird hier nicht  eingegangen&lt;br /&gt;
&lt;br /&gt;
; 3. &amp;quot;Sicherheitslücken entstehen bei... der Komponentenauthentisierung&amp;quot;&lt;br /&gt;
&lt;br /&gt;
Wie bei 2., wird auch hier wieder nur auf Passwörter, nicht jedoch auf das fehlen von Controls selbst eingegangen. An dieser Stelle fehlt auch ein Hinweis auf die Notwendigkeit dedizierter Benutzeraccounts.&lt;br /&gt;
&lt;br /&gt;
; 4. &amp;quot;Sicherheitslücken entstehen bei... der Wahl des Verfahrens&amp;quot;&lt;br /&gt;
&lt;br /&gt;
Statt untauglich würde ich auch hier von &amp;quot;dem Schutzbedarf der Daten nicht angemessen&amp;quot; sprechen, eigentlich gehört das für mich aber in die obigen Punkte.&lt;br /&gt;
&lt;br /&gt;
; 5. Serverseitige Authentisierung fehlt&lt;br /&gt;
&lt;br /&gt;
Auch der Server (bzw. die Anwendung selbst) kann sich fehlerhaft oder ungenügend beim Benutzer authentsieren, etwa über DNS, SSL-Zertifikate, etc.&lt;br /&gt;
&lt;br /&gt;
== G 4.WA04 Unzureichende Validierung von Ein- und Ausgabedaten bei Web-Anwendungen (Matthias) ==&lt;br /&gt;
&lt;br /&gt;
; 1. &amp;quot;Unzureichende Validierung von Eingabedaten&amp;quot;&lt;br /&gt;
&lt;br /&gt;
Die genannten Beispiele sind genau keine korrekten Beispiele für diesen Fall, sondern betreffen die Ausgabevalidierung bzw. Enkodierung. Typische Fehler der Eingabevalidierung ist eine Manipulierbarkeit der Business Logik.&lt;br /&gt;
&lt;br /&gt;
; 2. &amp;quot;Unzureichende Validierung von Ausgabedaten&amp;quot;&lt;br /&gt;
&lt;br /&gt;
Hier geht es zentral um die Verhinderung von Interpreter Injection, also serverseitig (z.B. SQL oder LDAP Injection) oder clientseitig (XSS, JSON Injection, etc.). Statt &amp;quot;können die Ausgaben Schadcode&amp;quot; enthalten würde ich hier eher davon Sprechen, dass ein solcher Interpreteraufruf manipuliert werden kann (was dann z.B. zur Einschleusung von Schadcode genutzt werden kann).&lt;br /&gt;
&lt;br /&gt;
; 3. &amp;quot;Die Suchfunktion der Web-Anwendung verwendet die Eingaben der Benutzer ungefiltert&amp;quot;&lt;br /&gt;
&lt;br /&gt;
Mit ungenügender &amp;quot;Filterung&amp;quot; hat SQL Injection nichts zu tun,  eigentlich geht es hierbei darum, dass SQL-Anfragen dynamisch mit unvalidierten Eingebedaten zusammengebaut (konkateniert) werden.&lt;br /&gt;
&lt;br /&gt;
; 4. &amp;quot;Ungefilterter HTML-Code in Kommentar-Funktion&amp;quot;&lt;br /&gt;
&lt;br /&gt;
Hier fehlt der Bezug auf persistentes XSS, das hier sicherlich zentral ist.&lt;br /&gt;
&lt;br /&gt;
== G 4.WA06 Unzureichende Nachvollziehbarkeit von sicherheitsrelevanten Ereignissen bei Web-Anwendungen (Matthias) ==&lt;br /&gt;
&lt;br /&gt;
; 1. Erster Absatz: &amp;quot;Die Behebung einer Schwachstelle ist dann nicht oder nur unter erschwerten Bedingungen möglich.&amp;quot;&lt;br /&gt;
&lt;br /&gt;
Hier würde ich ergänzen: &amp;quot;...und Angriffe auf die Anwendungen können ggf. nicht erkannt oder nachvollzogen werden&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
; 2. &amp;quot;Beispiele&amp;quot;: Kommulierbarkeit&lt;br /&gt;
&lt;br /&gt;
Hier fehlt auch ein Bezug auf die Kommulierbarkeit von SIcherheitsereignissen, dass diese also auch von solchen anderer Systeme in Verbindung gesetzt werden können&lt;br /&gt;
&lt;br /&gt;
; 3. &amp;quot;Beispiele&amp;quot;: Gerichtsverwertbarkeit&lt;br /&gt;
&lt;br /&gt;
Auch die Möglichkeit zur Gerichtsverwertbarkeit (etwa durch eindeutigen Zeitstempel) und manipulationssicherer Speicherung, würde ich an dieser Stelle unbedingt erwähnen.&lt;br /&gt;
&lt;br /&gt;
== G 4.WA07 Offenlegung von Informationen bei Web-Anwendungen (Matthias) ==&lt;br /&gt;
&lt;br /&gt;
; 1. Titel&lt;br /&gt;
&lt;br /&gt;
Hier würde ggf. &amp;quot;Offenlegung vertraulicher Informationen&amp;quot; sicher besser passen als &amp;quot;Offenlegung von Informationen&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
; 2. Beispiellink&lt;br /&gt;
&lt;br /&gt;
Ein Beispiellink (mit und ohne Token) würde sicher die Verständlichkeit dieser Schwachstelle verbessern.&lt;br /&gt;
&lt;br /&gt;
; 3. Erster Absatz: &amp;quot;Wenn demzufolge Informationen unnötig offengelegt werden, steigt die Wahrscheinlichkeit eines erfolgreichen Angriffs.&amp;quot;&lt;br /&gt;
&lt;br /&gt;
Interne Informationen auszublenden ist eine Härtungsmaßnahme, deren Anzeige erhöht aber nicht zwangsläufig die Wahrscheinlichkeit eines erfolgreichen Angriffs. Ich würde diesen Satz weglassen.&lt;br /&gt;
&lt;br /&gt;
 ; 4. Fehlende Punkte&lt;br /&gt;
&lt;br /&gt;
* Ein Hinweis auf HTTP Header wäre hier sicher erwähnenswert.&lt;br /&gt;
* Weiterhin bzgl. der Anzeige von Traces und ein Verweis auf den Entsprechenden Baustein zur Fehlerbehandlung&lt;br /&gt;
&lt;br /&gt;
== G 5.WA14 Cross-Site Request Forgery (CSRF, XSRF) (Matthias) ==&lt;br /&gt;
&lt;br /&gt;
; 1. Erster Absatz: &amp;quot;Können Funktionen einer Web-Anwendung ohne weitere Überprüfung der Authentizität des HTTP-Requests (z.B. durch Tokens in versteckten Formularfeldern) genutzt werden&amp;quot;&lt;br /&gt;
&lt;br /&gt;
Statt &amp;quot;Funktionen&amp;quot; würde ich besser von &amp;quot;schreibenden Aktionen&amp;quot; sprechen, dann macht der Satz mehr Sinn.&lt;br /&gt;
&lt;br /&gt;
; 2. Dritter Absatz: &amp;quot;Im Gegensatz zu XSS (siehe ...￼ ) ist das Angriffsziel nicht die Information auf dem Client (z. B. in Cookies),&amp;quot;&lt;br /&gt;
&lt;br /&gt;
Dieser (Halb-)Satz macht keinen Sinn, auch weil es bei XSS nicht nur im Informationen auf dem Cient geht. Vorschlag: &amp;quot;ist das Angriffsziel nicht die Ausführung von Skriptcode, sondern von unbefugten, schreibenden Aktionen im Kontext des angemeldeten Benutzers.&amp;quot;&lt;br /&gt;
&lt;br /&gt;
; 3. Session Riding&lt;br /&gt;
&lt;br /&gt;
Session Riding ist quasi nur ein anderer Begriff für CSRF. Die einzige Form von CSRF die mir bekannt ist, sind Angriffe mit Standard-Passwörtern auf HTTP-Basic-Auth geschützten Ressourcen.&lt;br /&gt;
&lt;br /&gt;
Im Grunde ist Session Riding aber nur ein Synonym für CSRF. Der Absatz ist daher auch nur eine Wiederholung der obigen Beschreibung.&lt;br /&gt;
&lt;br /&gt;
; 4. Zum Beispiel: &amp;quot;Durch einen präparierten Link auf einer Webseite wird die Änderung des Zugangspasswortes des Routers eingeleitet.&amp;quot;&lt;br /&gt;
&lt;br /&gt;
Etwas ungüngstig ausgedrückt. Besser wäre: &amp;quot;wird eine Anfrage zur Änderung des Zugangspasswortes an den Router gesendet. Hierbei sendet der Browser automatisch den Session Cookie mit, worüber die Webanwendung die Authentizität der Anfrage verifiziert und die Änderung durchführt.&amp;quot;&lt;br /&gt;
&lt;br /&gt;
== G 5.WA18 Clickjacking (Matthias) ==&lt;br /&gt;
&lt;br /&gt;
Hier stellt sich mir nur die allgemeine Frage, ob Clickjacking, bzw. der Schutz davor tatsächlich einem Grundschutz zuzurechnen ist. Persönlich würde ich dies nicht tun.&lt;br /&gt;
&lt;br /&gt;
== M 2.WA02 Dokumentation der Architektur von Web-Anwendungen (Matthias) ==&lt;br /&gt;
&lt;br /&gt;
; Verantwortlich für die Umsetzung&lt;br /&gt;
Hier wäre auch die Nennung des &amp;quot;Architekten&amp;quot; sinnvoll&lt;br /&gt;
 &lt;br /&gt;
; Fehlende Bestandteile der Dokumentation:&lt;br /&gt;
* Schutzbedarf des Systems sowie der verarbeiteten Daten&lt;br /&gt;
* Schützenswerte Daten und Funktionen (Assets)&lt;br /&gt;
* Betriebliche Anforderungen an die Sicherheit bzw. eingesetzte Plattform&lt;br /&gt;
* Dokumentierte Konfigurationseinstellungen &lt;br /&gt;
* BIA (RTO, RPO)&lt;br /&gt;
* Schnittstellen&lt;br /&gt;
* Trust Boundaries&lt;br /&gt;
* Akteure (bzw. Trust Level)&lt;br /&gt;
* Sicherheitsannahmen&lt;br /&gt;
* Geltende Compliance-Anforderungen (BDSG, PCI DSS, etc.)&lt;br /&gt;
&lt;br /&gt;
; Benutzermanagement&lt;br /&gt;
&lt;br /&gt;
Wenn damit das Identity Management gemeint ist, gehört das Dokumentiert, ist aber keine Sicherheitsfunktion. Oder ist hiermit das Rollen- und Berechtigungskonzept gemeint? Grenzt sich aus meiner Sicht schwer mit dem Thema Authentisierung ab. &lt;br /&gt;
&lt;br /&gt;
; Prüffragen&lt;br /&gt;
&lt;br /&gt;
Hier fehlt etwas in Bezug auf Sicherheitsanforderungen. Beispiel: &amp;quot;Werden Sicherheitsanforderungen an den Betrieb während der Entwicklung abgestimmt und dokumentiert&amp;quot;&lt;br /&gt;
&lt;br /&gt;
== M 2.WA12 Entwicklung und Erweiterung von Anwendungen (Markus) ==&lt;br /&gt;
; &amp;quot;Es sollte darauf geachtet werden, dass Sicherheitsanforderungen&lt;br /&gt;
vollständig durch Sicherheitsmechanismen erfüllt und zur Erstellung von&lt;br /&gt;
Testfällen festgehalten werden.&amp;quot; --&amp;gt; Bessere Formulierung würde aussagen, dass die Sicherheitsanforderungen durch Testfälle verifiziert werden.&lt;br /&gt;
&amp;quot;(z. B. durch Kommentare im&lt;br /&gt;
Quelltext). Somit ist der Quelltext zu einem&amp;quot; --&amp;gt; Das ist kein empfehlenswerter Programmierstiel! Raus mit diesem Kommentar&lt;br /&gt;
;&amp;quot;Zum Schutz vor dem Verlust bereits entwickelter und verworfener&lt;br /&gt;
Lösungen sowie zu Dokumentationszwecken sollte die Historie der&lt;br /&gt;
Änderungen festgehalten werden (z. B. durch ein Revisionssystem).&amp;quot; --&amp;gt; Auch diesen Absatz können wir streichen - Kein professioneller Programmierer arbeitet ohne Versionierugssystem.&lt;br /&gt;
;&amp;quot;Bei Web-Anwendung sollten die Webseiten auf Konformität zu dem&lt;br /&gt;
verwendeten Standard (z. B. HTML-Standard) getestet werden. Dadurch&lt;br /&gt;
können unvorgesehene Seiteneffekte aufgrund einer Fehlinterpretation&lt;br /&gt;
seitens der Browser vermieden werden.&amp;quot; --&amp;gt; Könnte man noch um &amp;quot;Die Software ist in möglichst vielen Browsern zu testen&amp;quot; erweitern.&lt;br /&gt;
;Generell geht der Autor leider nicht auf die Rollen &amp;amp; Rechte Verteilung ein. Mir fehlt der Hinweis, das es eine personelle Trennung zwischen Entwicklung, Test und Betrieb geben muss.&lt;br /&gt;
;Zum Thema Wartung / Betrieb --&amp;gt; Hier wird keine Aussage getroffen bezüglich Log_Files. Dieses Thema kann kritische Auswirkungen haben, Bsp.: logging ganzer HTTP-Requests im LogLevel=Debug.&lt;br /&gt;
; &amp;quot;Produktspezifische Sicherheitsfunkionalität&amp;quot; - Dieser Absatz ist gefährlich - der Angreifer ist nicht zur Verwendung dies Zielbrowsers gezwungen. Deshalb können Browser-spez. Sicherheitsfunktionen nur als Add-ON gewertet werden.&lt;br /&gt;
; &amp;quot;Festlegung der Entwicklungsumgebung&amp;quot; - Dieser Absatz geht nicht auf die zu verwendenden Testdaten ein. Der Hinweis, dass Live-Daten / Kundendaten nichts in Test- &amp;amp; Entwicklungsumgebungen zu suchen haben fehlt!!!&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== M 2.WA24 Web-Tracking (Matthias) ==&lt;br /&gt;
&lt;br /&gt;
; Letzter Absatz: &amp;quot;Falls eine Auswertung von Nutzerdaten, insbesondere personenbezogener Daten, .. &amp;quot;&lt;br /&gt;
&lt;br /&gt;
Hier sollte denke ich besser von personenbeziehbaren Daten gesprochen Werten. Dies betrifft etwa die Zuordnung von Surfverhalten zu einer bestimmten Person. Dies sollte stets nach den Prinzipien Datensparsamkeit und Datenvermeidung, Erforderlichkeit, sowie Zweckbindung erfolgen. Ist Webtracking nicht personenbeziehbar ist dies kein Thema für den Datenschutz.&lt;br /&gt;
&lt;br /&gt;
== M 4.WA04 Authentisierung bei Web- Anwendungen (Matthias) ==&lt;br /&gt;
&lt;br /&gt;
; Vermischung von Authentisierung und Session Management &lt;br /&gt;
&lt;br /&gt;
Bei diesem Baustein findet eine ziemlich große Vermischung von Anforderung an die Authentisierung und das erst in &amp;quot;M 4.WA06 Session-Management bei Web- Anwendungen&amp;quot; behandelte Session Management statt (Beispiel: &amp;quot;Remember-Me-Funktion&amp;quot;). Beide Themen sollten sinnvollerweise getrennt voneinander zu betrachten und aufeinander zu beziehen.&lt;br /&gt;
&lt;br /&gt;
; Verwendung von Frameworks&lt;br /&gt;
&lt;br /&gt;
Die Anforderung ist schon ein wenig eingeschränkt. Besser passt hier denke ich die &amp;quot;Abbildung der Authentisierung über Standardkomponenten (Bibliotheken oder Frameworks)&amp;quot;. &lt;br /&gt;
&lt;br /&gt;
; Remember-Me-Funktion&lt;br /&gt;
&lt;br /&gt;
Siehe oben, gehört zum Session Management. Das ließt sich im übrigen so, als ob eine Webanwendung Credentials auf dem Client abhängt. &lt;br /&gt;
&lt;br /&gt;
; Grenzwerte für gescheiterte Anmeldeversuche&lt;br /&gt;
&lt;br /&gt;
Diese Empfehlung ist allgemein falsch, da sie sehr von der betrachteten Anwendung abhängt. Besser wäre hier allgemein von Mechanismen zur Verhinderung von automatisierten Angriffen zu sprechen (Anti-Automatisierung). &lt;br /&gt;
&lt;br /&gt;
Etwa umsetzbar durch&lt;br /&gt;
* Sperrung nach x Anmeldeversuchen&lt;br /&gt;
* Throttling&lt;br /&gt;
* Captchas&lt;br /&gt;
* Sicherheitsfragen&lt;br /&gt;
&lt;br /&gt;
Das allgemeine Sperren kann leicht für das gezielte Aussperren von Benutzern (User Lockout) verwendet werden. Was etwa bei Trading-Anwendungen nicht funktioniert.&lt;br /&gt;
&lt;br /&gt;
; Automatisiertes Zurücksetzen von Authentisierungsdaten&lt;br /&gt;
&lt;br /&gt;
Würde ich besser als &amp;quot;Passwort-Reset&amp;quot; bezeichnen.&lt;br /&gt;
&lt;br /&gt;
Weiterhin fehlt hier der Hinweis, dass statt ein automatisiertes Zurücksetzen, ein Mechanismus zu empfehlen ist, bei dem über ein hinterlegtes Sicherheitsmerkmal (Handy-Nummer oder E-Mail-Adresse) vom Benutzer zunächst eine Verifikation durchgeführt wird. Beispielsweise durch einen erhaltenen Link. Erst dann darf eine Änderung des Passwortes durch den Benutzer erfolgen.&lt;br /&gt;
&lt;br /&gt;
; Registrierung nicht behandelt&lt;br /&gt;
&lt;br /&gt;
Es existiert hier kein Punkt, der die sichere Implementierung von Benutzerregistrierungen behandelt.&lt;br /&gt;
&lt;br /&gt;
; Verweis auf Externalisierung fehlt.&lt;br /&gt;
&lt;br /&gt;
Statt die Authentisierung selbst durchzuführen kann eine Anwendung hierzu auf eine externe Komponente (Beispiel: SiteMinder oder Kerberos) zurückgreifen.&lt;br /&gt;
&lt;br /&gt;
; Verweis auf Behandlung von Credentials fehlt&lt;br /&gt;
&lt;br /&gt;
Auch wenn das  in &amp;quot;M 4.WA15 Schutz vertraulicher Daten bei Web- Anwendungen&amp;quot; ausführlich behandelt wird, sollte in diesem Baustein bereits auf den angemessenen Schutz von Authentisierungsdaten bei Übertragung und Speicherung hingewiesen werden.&lt;br /&gt;
&lt;br /&gt;
== M 4.WA05Umfassende Ein- und Ausgabevalidierung bei Web-Anwedungen (Markus) ==&lt;br /&gt;
; &amp;quot;Ablehnung der Daten im&lt;br /&gt;
Fehlerfall&amp;quot; --&amp;gt; Hier könnte man noch auf Tar-Pits eingehen - nur ein Vorschlag.&lt;br /&gt;
&lt;br /&gt;
== M 4.WA06Session-Management bei Web-Anwendungen (Markus) ==&lt;br /&gt;
; &amp;quot;Übertragung der&lt;br /&gt;
SessionID mittels GETRequest&amp;quot; --&amp;gt; Hier fehlt der Hinweis, dass die Lebensdauer dieser SessionIds kurz/kürzer sein muss, als im Falle der Speicherung im Cookie.&lt;br /&gt;
; &amp;quot;Verschlüsselte&lt;br /&gt;
Übertragung von&lt;br /&gt;
SessionIDs&amp;quot; --&amp;gt; Hier fehlt der Hinweis auf den Beast-Exploit. TLS Version &amp;gt; 1.0 verwenden!&lt;br /&gt;
&lt;br /&gt;
== M 4.WA07Fehlerbehandlung durch Web-Anwendungen (Markus) ==&lt;br /&gt;
; Konsistenter / Inkonsistener Zustand einer Webanwendung und der daraus resultierende Datenverlust: Hier fehlen mir die Punkte: DOS, Priv.Escalation, CodeExecution.&lt;br /&gt;
; Vermeidung vertraulicher Informationen in Fehlermeldungen --&amp;gt; Fehlermeldungen sollten ebenfalls eine Systeminformationen preisgeben (Softwareversion, Patchlevel, etc.)&lt;br /&gt;
; Abbruch des Vorgangs nach Auftreten eines Fehlers --&amp;gt; TarPits scheinen dem Autor umbekannt zu sein :)&lt;br /&gt;
; &amp;quot;Werden Fehler möglichst von der gleichen Komponente behandelt, in der&lt;br /&gt;
der Fehler aufgetreten ist?&amp;quot; --&amp;gt; Das &amp;quot;möglichst&amp;quot; sollten wir streichen.&lt;br /&gt;
&lt;br /&gt;
== M 4.WA08Schutz vor automatisierter Nutzung von Web-Anwendungen (Markus) ==&lt;br /&gt;
; &amp;quot;Brute-Force-&lt;br /&gt;
Angriffe (z. B. Erraten von Zugangsdaten) und Enumeration-Angriffe (z. B.&lt;br /&gt;
automatisiertes Ermitteln von gültigen Login-Namen)&amp;quot; -- die Beispiele sind identisch - besser Beispiele suchen, z.b. URL-Enumeration&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== M 4.WA11Sichere Konfiguration von Web-Anwendungen (Markus) ==&lt;br /&gt;
; &amp;quot;Sicherer Umgang mit TLS/SSL&amp;quot; -- Hier fehlt der Hinweis, dass TLS-1.0 gebrochen ist&lt;br /&gt;
; &amp;quot;Zeichenkodierungskonfiguration&amp;quot; -- Ein Whitelisting abhängig von der Encodierung wäre ein weiterer Vorschlag&lt;br /&gt;
; &amp;quot;Restriktive Dateisystemberechtigungen&amp;quot; -- auch wenn es ein klassiker ist - der AS sollte ebenfalls mit von einem eingeschränkten Nutzer gestartet werden und nicht als root&lt;br /&gt;
; Administration Consolen:zur Ergänzen: Wenn diese nicht benötigit, sollten derartige Applikationen nicht deployed werden, unabhängig von möglichen Zugangsbeschränkungen.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== M 4.WA13Kontrolliertes Einbinden von Daten und Inhalten bei Web-Anwendungen (Markus) ==&lt;br /&gt;
; Datei-Upload: Bei einem Upload werden Dateien durchaus in TEMP-Verzeichnissen gesammelt und danach weiterverarbeitet. Diese TEMP-Verzeichnisse sind im Rahmen einer Sicherheitsanalyse zu betrachten -&amp;gt; Möglicher (unbefugter) Zugriff auf weitere Uploads&lt;br /&gt;
; Upload komprimierter Dateien / großer Dateien birgt die Gefahr von DOS Angriffen&lt;br /&gt;
; Upload von Dateien kann bei weiterem Parsing zu Speicherengpässen führen --&amp;gt; DOS-Angriffe auf Thread-Local etc.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== M 4.WA14Restriktive Herausgabe sicherheitsrelevanter Informationen bei Web-Anwendungen (Markus) ==&lt;br /&gt;
OK - Keine Anmerkungen von mir.&lt;br /&gt;
&lt;br /&gt;
== M 4.WA15Schutz vertraulicher Daten bei Web-Anwendungen (Markus) ==&lt;br /&gt;
; Sichere kryptographische Algorithmen:&lt;br /&gt;
 Hier fehlt mir eine Liste der aktuelle als sicher geltenden Verfahren.&lt;br /&gt;
; Schlüssel&lt;br /&gt;
 Das die Schlüssel bestimmten Formaten entsprechen müssen ist ok - aber das Schlüsselmanagement wird gar nicht besprochen?&lt;br /&gt;
; Schutz der Daten im Browsercache&lt;br /&gt;
 Skripte und Browserplugins können ebenfalls auf den Browsercache zugreifen - diese werden hier nicht erwähnt.&lt;br /&gt;
; Maskierung von Passwörtern &lt;br /&gt;
 Dies schützt bei der Eingabe nur vor ShoulderSurfing nicht vor Skripten oder Plugins die diese an andere Server posten.&lt;br /&gt;
; Sicherung von Zugangsdaten:&lt;br /&gt;
 Zugangsdaten in einer Datei abzulegen - wenn auch ausserhalb des WebRoots ist keine gute Idee.&lt;br /&gt;
; Schutz von Quelltexten:&lt;br /&gt;
 Hier würde ich property files mit aufnehmen. der hinweis auf web-inf/classes fehlt - warum?&lt;br /&gt;
 Bei include-befehlen sind die pfadangaben zu überdenken.&lt;br /&gt;
&lt;br /&gt;
== M 4.WA16Zugriffskontrolle bei Web-Anwendungen (Markus) ==&lt;br /&gt;
; Zugriffskontrolle via Frameworks:&lt;br /&gt;
 Dieser Punkt (Frameworks) wird nur in einem Satz erwähnt. Es werden keine Bespiele gegeben - Das ist zu wenig.&lt;br /&gt;
 Es müssen alle Zugriffe geschützt werden. Eine Protokollierung aller Zugriffe mit den nötigen Informationen ist ebenfalls empfehlenswert.&lt;br /&gt;
; Datei Upload:&lt;br /&gt;
 Die Gefahr eines DOS wird hier nicht erwähnt.&lt;br /&gt;
&lt;br /&gt;
== M 4.WA19Verhinderung von Cross-Site Request Forgery (CSRF, XSRF) (Markus) ==&lt;br /&gt;
; Verantwortliche: &lt;br /&gt;
 Entwickler und Admins!&lt;br /&gt;
([[User:Mrohr|Matthias]]) Korrekt, wobei auch in der Reihenfolge&lt;br /&gt;
&lt;br /&gt;
; Anti-CSRF-Token in hidden fields:&lt;br /&gt;
 Das ist keine gute Idee. Ich würde das streichen!&lt;br /&gt;
&lt;br /&gt;
([[User:Mrohr|Matthias]]) Watt? Anti-CSRF-Tokens in Hidden Fields sind die Standard-Massnahme. Wie denn sonst? Bitte nicht streichen!!! &lt;br /&gt;
&lt;br /&gt;
([[User:Mrohr|Matthias]]) Die Technik bei der die Session ID als Anti-CSRF-Token verwendet wird, wird als Double-Cookie Submit bezeichnet, das sollte hier referenziert werden.&lt;br /&gt;
&lt;br /&gt;
; Umgehung von Schutzmechanismen:&lt;br /&gt;
 Man in the middle hat keinen direkten Bezug zu CSRF! Das würde ich streichen.&lt;br /&gt;
([[User:Mrohr|Matthias]]) Der Hinweis ist korrekt. Wovon der Autor hier spricht ist Session Replay nicht CSRF.&lt;br /&gt;
&lt;br /&gt;
; Frameworks:&lt;br /&gt;
 Gute Idee - aber es gibt auch Features in den ApplicationServern die CSRF unterbinden - warum wird das nicht besprochen?&lt;br /&gt;
&lt;br /&gt;
([[User:Mrohr|Matthias]]) Sehe ich persoenlich nicht so, da CSRF primaer ein Applikations-Fehler ist, und auch in der Applikation und nicht im Environment (AppServer) geloest werden sollte. Auch wenn das manchmal ggf. die einzig machbare Loesung darstellt.&lt;br /&gt;
&lt;br /&gt;
([[User:Mrohr|Matthias]]) Was generell fehlt, ist ein Hinweis darauf, dass schreibende Requests generell per HTTP Post abgewickelt werden sollten, da HTTP Get keine &amp;quot;Safe Method&amp;quot;  (siehe HTTP 1.1, RFC 2616) ist.&lt;br /&gt;
&lt;br /&gt;
== M 4.WA20Sicherer Entwurf der Logik von Web-Anwendungen (Markus) ==&lt;br /&gt;
; Rollbacks:&lt;br /&gt;
 Tritt ein Fehler auf muss die Applikation einen konsistenten Datenstand zurück lassen. Das wird hier nicht erwähnt.&lt;br /&gt;
; RaceConditions:&lt;br /&gt;
 Fehler in der Geschäftslogik können auch durch zwei gleichzeitige Sessions auf einer Webapplikation auftreten - das wird hier nicht besprochen.&lt;br /&gt;
&lt;br /&gt;
== M 4.WA22Verhinderung der Blockade von Ressourcen (DoS) bei Web-Anwendungen (Markus) ==&lt;br /&gt;
; Datenspeicher:&lt;br /&gt;
 Neben dem Datenspeicher sollte auch der RAM-Verbrauch pro Thread der Applikation limitiert werden.&lt;br /&gt;
; Voraggregation von Daten / Caching&lt;br /&gt;
 Dieser Punkt fehlt: Stark ressourcen belastende Anfragen können auch in Lastarmen Zeiten vorberechnet werden.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== M 4.WA25Verhinderung von Clickjacking (Markus) ==&lt;br /&gt;
Ok - das passt soweit.&lt;br /&gt;
&lt;br /&gt;
== M 5.WA21Sichere Anbindung von Hintergrundsystemen an Web-Anwendungen (Markus) ==&lt;br /&gt;
; Verantwortliche:&lt;br /&gt;
 Architekten fehlen. Entwickler müssen die Views umsetzen und die Datasource entsprechend einbinden - die fehlen hier ebenfalls.&lt;br /&gt;
; DirectorySystem Beispiel:&lt;br /&gt;
 Das DirectorySystem wird in dem angegeben Beispiel zum Single Point of Failure - das wird verschwiegen.&lt;br /&gt;
; Firewalls:&lt;br /&gt;
 Das sind fachlich-blinde Systeme. Was ist mit WAFs / IDS / IPS etc.?&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== M 5.WA23Systemarchitektur einer Web-Anwendung (Markus) ==&lt;br /&gt;
; Verantwortliche:&lt;br /&gt;
Auch hier fehlend wieder die Architekten. &lt;br /&gt;
; Virtualisierung:&lt;br /&gt;
Virtualisierung bietet weitere Angriffsvektoren (z.B.: Hypervisor) die eine &amp;quot;Blech&amp;quot;Farm nicht bietet.&lt;/div&gt;</summary>
		<author><name>Mrohr</name></author>	</entry>

	</feed>