Difference between revisions of "Germany/Projekte/Top 10 fuer Entwickler-2013/A2-Fehler in Authentisierung und Session-Management"

From OWASP
Jump to: navigation, search
m
m
(6 intermediate revisions by 2 users not shown)
Line 1: Line 1:
{{Top_10_2010_Developer_Edition_De:TopTemplate|useprev=PrevLink_Germany_Projekte|usenext=NextLink_Germany_Projekte|next=Top_10_fuer_Entwickler/A4_Unsichere direkte Objektreferenzen|prev=Top_10_fuer_Entwickler/A2_Cross-Site_Scripting_(XSS)}}
+
{{Top_10_2010_Developer_Edition_De:TopTemplate
 +
    |useprev=PrevLink_Germany_Projekte
 +
    |usenext=NextLink_Germany_Projekte
 +
    |prev=Top_10_fuer_Entwickler/A2_{{Top_10_2010_Developer_Edition_De:ByTheNumbers
 +
              |2
 +
              |language=de
 +
              |year=2010}}
 +
    |next=Top_10_fuer_Entwickler/A4_{{Top_10_2010_Developer_Edition_De:ByTheNumbers
 +
              |4
 +
              |language=de
 +
              |year=2010}}
 +
}}
 
== Seite in Bearbeitung (BAUSTELLE!!) ==
 
== Seite in Bearbeitung (BAUSTELLE!!) ==
  
Line 8: Line 19:
 
{{Top_10_2010:SummaryTableValue-2-Template|Verbreitung|HÄUFIG}}
 
{{Top_10_2010:SummaryTableValue-2-Template|Verbreitung|HÄUFIG}}
 
{{Top_10_2010:SummaryTableValue-2-Template|Auffindbarkeit|DURCHSCHNITTLICH}}
 
{{Top_10_2010:SummaryTableValue-2-Template|Auffindbarkeit|DURCHSCHNITTLICH}}
{{Top_10_2010:SummaryTableValue-1-Template|Auiswirkung|SCHWERWIEGEND}}
+
{{Top_10_2010:SummaryTableValue-1-Template|Auswirkung|SCHWERWIEGEND}}
 
{{Top_10_2010:SummaryTableHeaderEndTemplate}}
 
{{Top_10_2010:SummaryTableHeaderEndTemplate}}
 
     <td {{Template:Top 10 2010:SummaryTableRowStyleTemplate}}>Nicht authentifizierte Angreifer sowie authenti- fizierte Nutzer könnten versuchen, Zugangs- daten anderer zu stehlen. In Betracht kommen außerdem Innentäter, die ihre Handlungen verschleiern wollen.</td>
 
     <td {{Template:Top 10 2010:SummaryTableRowStyleTemplate}}>Nicht authentifizierte Angreifer sowie authenti- fizierte Nutzer könnten versuchen, Zugangs- daten anderer zu stehlen. In Betracht kommen außerdem Innentäter, die ihre Handlungen verschleiern wollen.</td>
Line 18: Line 29:
 
{{Top_10_2010:SummaryTableEndTemplate}}
 
{{Top_10_2010:SummaryTableEndTemplate}}
  
{{Top_10_2010_Developer_Edition_De:SubsectionAdvancedTemplate|type={{Top_10_2010:StyleTemplate}}|number=1|risk=1}}   
+
{{Top_10_2010_Developer_Edition_De:SubsectionAdvancedTemplate|type={{Top_10_2010:StyleTemplate}}|number=1|risk=3|year=2010|language=de}}   
 
'''<u>Szenario 1:</u>''' Eine Flugbuchungsanwendung fügt die Session ID in die URL ein:  
 
'''<u>Szenario 1:</u>''' Eine Flugbuchungsanwendung fügt die Session ID in die URL ein:  
{{Top_10_2010:ExampleBeginTemplate}}<nowiki>http://example.com/sale/saleitems</nowiki>;<span style="color:red;">jsessionid=2P0OC2JDPXM0OQSNDLPSKHCJUN2JV</span>?dest=Hawaii{{Top_10_2010:ExampleEndTemplate}} <!--- ''' ... ''' zum Hervorheben des ungeprüften Pareameters eingefügt -->
+
{{Top_10_2010:ExampleBeginTemplate}}<nowiki>http://example.com/sale/saleitems</nowiki>;<span style="color:red;">'''jsessionid=2P0OC2JDPXM0OQSNDLPSKHCJUN2JV'''</span>?dest=Hawaii{{Top_10_2010:ExampleEndTemplate}} <!--- ''' ... ''' zum Hervorheben des ungeprüften Pareameters eingefügt -->
 
Ein authentifizierter Anwender möchte dieses Angebot seinen Freunden mitteilen. Er versendet obigen Link per E-Mail, ohne zu wissen, dass er seine Session-ID preisgibt. Nutzen seine Freunde den Link, können sie seine Session sowie seine Kreditkartendaten benutzen.
 
Ein authentifizierter Anwender möchte dieses Angebot seinen Freunden mitteilen. Er versendet obigen Link per E-Mail, ohne zu wissen, dass er seine Session-ID preisgibt. Nutzen seine Freunde den Link, können sie seine Session sowie seine Kreditkartendaten benutzen.
  
Line 27: Line 38:
 
'''<u>Szenario 3:</u>''' Ein Angreifer erlangt Zugang zur unverschlüsselten Passwortdatenbank des Systems. Damit fallen alle Zugangsdaten im Klartext in die Hände des Angreifers.
 
'''<u>Szenario 3:</u>''' Ein Angreifer erlangt Zugang zur unverschlüsselten Passwortdatenbank des Systems. Damit fallen alle Zugangsdaten im Klartext in die Hände des Angreifers.
  
{{Top_10_2010_Developer_Edition_De:SubsectionAdvancedTemplate|type={{Top_10_2010:StyleTemplate}}|number=2|risk=3}}  
+
{{Top_10_2010_Developer_Edition_De:SubsectionAdvancedTemplate|type={{Top_10_2010:StyleTemplate}}|number=2|risk=3|year=2010|language=de}}  
 
Wir empfehlen Organisationen und Unternehmen, ihren Entwicklern folgende Mittel bereitzustellen:
 
Wir empfehlen Organisationen und Unternehmen, ihren Entwicklern folgende Mittel bereitzustellen:
 
# Zentrale Mechanismen für wirksame Authentifizierung und Session-Management, die folgendes leisten:
 
# Zentrale Mechanismen für wirksame Authentifizierung und Session-Management, die folgendes leisten:
Line 34: Line 45:
 
# Ressourcen zur Implementierung schweißtreibender Maßnahmen zur Vermeidung von XSS, die in Diebstahl von Session-IDs resultieren. Siehe A2.
 
# Ressourcen zur Implementierung schweißtreibender Maßnahmen zur Vermeidung von XSS, die in Diebstahl von Session-IDs resultieren. Siehe A2.
 
</td> </tr>
 
</td> </tr>
<tr><td colspan="2">
+
</table>
  
 
= '''JAVA''' =   
 
= '''JAVA''' =   
 
<!-- z.Z ohne Template --->
 
<!-- z.Z ohne Template --->
  
{{Top_10_2010_Developer_Edition_De:SubsectionAdvancedTemplate|type={{Top_10_2010:StyleTemplate}}|number=3|risk=3}}
+
{{Top_10_2010_Developer_Edition_De:SubsectionAdvancedTemplate|type={{Top_10_2010:StyleTemplate}}|number=11|risk=3|year=2010|language=de}}
 
<b>Erfinde das Sessionmanagement nicht neu!</b> Die verbreiteten Plattformen (wie Tomcat, Websphere, u.a.) liefern das alles schon mit.<br>
 
<b>Erfinde das Sessionmanagement nicht neu!</b> Die verbreiteten Plattformen (wie Tomcat, Websphere, u.a.) liefern das alles schon mit.<br>
 
Grundsätzliche Anforderungen:
 
Grundsätzliche Anforderungen:
Line 45: Line 56:
 
* Die SessionID hat in der URL nichts verloren
 
* Die SessionID hat in der URL nichts verloren
 
* Beim Logout/TimeOut wird die SessionID auf dem Server ungültig gemacht
 
* Beim Logout/TimeOut wird die SessionID auf dem Server ungültig gemacht
* Benutze grundsätzlich das Secure-Attribut für Cookies, Ausnahmen davon sollten wohlbegründet sein.
+
* Benutze grundsätzlich das Secure-Attribut für Cookies.
 
* Setze für Cookies das httponly-Attribut  
 
* Setze für Cookies das httponly-Attribut  
* Setze das Domain-Attribut in Cookies so eng wie möglich
+
* Setze Domain-und Pfad-Attribut in Cookies so eng wie möglich
 
* Verwende für die Erzeugung der SessionID einen kryptografisch sicheren Zufallszahlengeneerator (Entropy mindestens 128bit)
 
* Verwende für die Erzeugung der SessionID einen kryptografisch sicheren Zufallszahlengeneerator (Entropy mindestens 128bit)
 
* Der Timeout von Cookies sollte so schnell wie möglich erfolgen (Beim Onlinebanking hat ein Wert von ca 10 Min. mittlerweile Standard)
 
* Der Timeout von Cookies sollte so schnell wie möglich erfolgen (Beim Onlinebanking hat ein Wert von ca 10 Min. mittlerweile Standard)
Line 55: Line 66:
 
{{Top_10_2010:ExampleEndTemplate}}  
 
{{Top_10_2010:ExampleEndTemplate}}  
  
{{Top_10_2010_Developer_Edition_De:SubsectionAdvancedTemplate|type={{Top_10_2010:StyleTemplate}}|number=4|risk=3}}
+
{{Top_10_2010_Developer_Edition_De:SubsectionAdvancedTemplate|type={{Top_10_2010:StyleTemplate}}|number=4|risk=3|year=2010|language=de}}
  
 
{{Top_10_2010:ExampleBeginTemplate}}
 
{{Top_10_2010:ExampleBeginTemplate}}
Line 61: Line 72:
 
{{Top_10_2010:ExampleEndTemplate}}
 
{{Top_10_2010:ExampleEndTemplate}}
  
{{Top_10_2010_Developer_Edition_De:SubsectionAdvancedTemplate|type={{Top_10_2010:StyleTemplate}}|number=5|risk=3}}
+
{{Top_10_2010_Developer_Edition_De:SubsectionAdvancedTemplate|type={{Top_10_2010:StyleTemplate}}|number=5|risk=3|year=2010|language=de}}
  
 
{{Top_10_2010:ExampleBeginTemplate}}
 
{{Top_10_2010:ExampleBeginTemplate}}
Line 67: Line 78:
 
{{Top_10_2010:ExampleEndTemplate}}
 
{{Top_10_2010:ExampleEndTemplate}}
  
{{Top_10_2010_Developer_Edition_De:SubsectionAdvancedTemplate|type={{Top_10_2010:StyleTemplate}}|number=8|risk=1}}
+
{{Top_10_2010_Developer_Edition_De:SubsectionAdvancedTemplate|type={{Top_10_2010:StyleTemplate}}|number=8|risk=3|year=2010|language=de}}
 
{{Top_10_2010:SubSubsectionOWASPReferencesTemplate}}
 
{{Top_10_2010:SubSubsectionOWASPReferencesTemplate}}
 
* [[SQL_Injection_Prevention_Cheat_Sheet | OWASP SQL Injection Prevention Cheat Sheet]]
 
* [[SQL_Injection_Prevention_Cheat_Sheet | OWASP SQL Injection Prevention Cheat Sheet]]
Line 77: Line 88:
 
* [[Reviewing_Code_for_SQL_Injection | OWASP Code Review Guide: Chapter on SQL Injection]]
 
* [[Reviewing_Code_for_SQL_Injection | OWASP Code Review Guide: Chapter on SQL Injection]]
 
* [[Reviewing_Code_for_OS_Injection | OWASP Code Review Guide: Command Injection]]
 
* [[Reviewing_Code_for_OS_Injection | OWASP Code Review Guide: Command Injection]]
{{Top_10_2010_Developer_Edition_De:SubSubsectionExternalReferencesTemplate}}
+
{{Top_10_2010_Developer_Edition_De:SubSubsectionExternalReferencesTemplate|language=de}}
 
* [http://cwe.mitre.org/data/definitions/77.html CWE Entry 77 on Command Injection]
 
* [http://cwe.mitre.org/data/definitions/77.html CWE Entry 77 on Command Injection]
 
* [http://cwe.mitre.org/data/definitions/89.html CWE Entry 89 on SQL Injection]
 
* [http://cwe.mitre.org/data/definitions/89.html CWE Entry 89 on SQL Injection]
{{Top_10_2010_Developer_Edition_De:BottomAdvancedTemplate|type={{Top_10_2010:StyleTemplate}}|usenext=NextLink_Germany_Projekte|next=Top_10_fuer_Entwickler/A2_Cross-Site_Scripting_(XSS)|useprev=PrevLink_Germany_Projekte|prev=Top_10_fuer_Entwickler}}
+
</td></tr></table>
  
 +
= '''Test''' =
 +
<!-- weitere Programmiersprachen oder evtl Anti-Beispiele --->
 +
{{Top_10_2010_Developer_Edition_De:SubsectionAdvancedTemplate|type={{Top_10_2010:StyleTemplate}}|number=11|risk=3|year=2010|language=de}}
 +
{{Top_10_2010:ExampleBeginTemplate}}
 +
tbd
 +
Text
 +
{{Top_10_2010:ExampleEndTemplate}}
 +
 +
{{Top_10_2010_Developer_Edition_De:SubsectionAdvancedTemplate|type={{Top_10_2010:StyleTemplate}}|number=4|risk=3|year=2010|language=de}}
 +
{{Top_10_2010:ExampleBeginTemplate}}
 +
tbd
 +
Text
 +
{{Top_10_2010:ExampleEndTemplate}}
 +
 +
{{Top_10_2010_Developer_Edition_De:SubsectionAdvancedTemplate|type={{Top_10_2010:StyleTemplate}}|number=6|risk=3|year=2010|language=de}}
 +
tbd
 +
Text
 +
 +
{{Top_10_2010_Developer_Edition_De:SubsectionAdvancedTemplate|type={{Top_10_2010:StyleTemplate}}|number=7|risk=3|year=2010|language=de}}
 +
(ganze Breite)
 +
Text
 +
 +
{{Top_10_2010_Developer_Edition_De:SubsectionAdvancedTemplate|type={{Top_10_2010:StyleTemplate}}|number=9|risk=3|year=2010|language=de}}
 +
</td></tr></table>
 
<headertabs />
 
<headertabs />
 +
 +
{{Top_10_2010_Developer_Edition_De:BottomAdvancedTemplate
 +
    |type=0
 +
    |useprev=PrevLink_Germany_Projekte
 +
    |usenext=NextLink_Germany_Projekte
 +
    |prev=Top_10_fuer_Entwickler/A2_{{Top_10_2010_Developer_Edition_De:ByTheNumbers
 +
              |2
 +
              |language=de
 +
              |year=2010}}
 +
    |next=Top_10_fuer_Entwickler/A4_{{Top_10_2010_Developer_Edition_De:ByTheNumbers
 +
              |4
 +
              |language=de
 +
              |year=2010}}
 +
}}
 +
  
 
[[Category:OWASP Top 10 fuer Entwickler]]
 
[[Category:OWASP Top 10 fuer Entwickler]]

Revision as of 06:02, 8 March 2013

← Top_10_fuer_Entwickler/A2_Cross-Site Scripting (XSS)
Top 10 fuer Entwickler-2013: Inhaltsverzeichnis

Die Top-10-Risiken

Top_10_fuer_Entwickler/A4_Unsichere direkte Objektreferenzen →

Seite in Bearbeitung (BAUSTELLE!!)

A3 Fehler in Authentifizierung und Session-Management

Threat Agents
Attack Vectors
Security Weakness
Technical Impacts
Business Impacts
______ Ausnutzbarkeit
DURCHSCHNITTLICH
Verbreitung
HÄUFIG
Auffindbarkeit
DURCHSCHNITTLICH
Auswirkung
SCHWERWIEGEND
Application / Business Specific
Nicht authentifizierte Angreifer sowie authenti- fizierte Nutzer könnten versuchen, Zugangs- daten anderer zu stehlen. In Betracht kommen außerdem Innentäter, die ihre Handlungen verschleiern wollen. Angreifer nutzen Lücken bei der Authentifi- zierung oder im Sessionmanagement (z.B. ungeschützte Nutzerkonten, Passwörter, Session-IDs), um sich eine fremde Identität zu verschaffen. Obwohl es sehr schwierig ist, ein sicheres Authentifizierungs- und Session-Management zu implementieren, setzen Entwickler häufig auf eigene Lösungen. Diese haben dann oft Fehler bei Abmeldung und Passwortmanagement, bei der Wiedererkennung des Benutzers, bei Timeouts, Sicherheitsabfragen usw. Das Auffinden dieser Fehler kann sehr schwierig sein, besonders wenn es sich um individuelle Implementierungen handelt. Diese Fehler führen zur Kompromittierung von Benutzerkonten. Ein erfolgreicher Angreifer hat alle Rechte des Opfers. Privilegierte Zu- gänge sind oft Ziel solcher Angriffe. Betrachten Sie den Geschäftswert der betro- ffenen Daten oder Anwendungsfunktionen. Betrachten Sie weiterhin Auswirkungen auf das Unter-nehmen beim Bekanntwerden der Schwachstelle.
Bin ich durch 'Fehler in Authentisierung und Session-Management' verwundbar?

Szenario 1: Eine Flugbuchungsanwendung fügt die Session ID in die URL ein:

http://example.com/sale/saleitems;jsessionid=2P0OC2JDPXM0OQSNDLPSKHCJUN2JV?dest=Hawaii

Ein authentifizierter Anwender möchte dieses Angebot seinen Freunden mitteilen. Er versendet obigen Link per E-Mail, ohne zu wissen, dass er seine Session-ID preisgibt. Nutzen seine Freunde den Link, können sie seine Session sowie seine Kreditkartendaten benutzen.

Szenario 2: Anwendungs-Timeouts sind falsch konfiguriert. Ein Anwender verwendet einen öffentlichen PC, um die Anwendung aufzurufen. Anstatt die „Abmelden“ Funktion zu nutzen, schließt der Anwender nur den Browser. Der Browser ist auch eine Stunde später noch authentifiziert, wenn ein potentieller Angreifer ihn öffnet.

Szenario 3: Ein Angreifer erlangt Zugang zur unverschlüsselten Passwortdatenbank des Systems. Damit fallen alle Zugangsdaten im Klartext in die Hände des Angreifers.

Wie kann ich 'Fehler in Authentisierung und Session-Management' verhindern?

Wir empfehlen Organisationen und Unternehmen, ihren Entwicklern folgende Mittel bereitzustellen:

  1. Zentrale Mechanismen für wirksame Authentifizierung und Session-Management, die folgendes leisten:
    1. Einhaltung aller Anforderungen an Authentifizierung und Session-Management aus dem OWASP Application Security Verification Standard (ASVS) V2 und V3.
    2. Eine einfache Schnittstelle für Entwickler. Als gutes Beispiel können die ESAPI Authenticator and User APIs herangezogen werden.
  2. Ressourcen zur Implementierung schweißtreibender Maßnahmen zur Vermeidung von XSS, die in Diebstahl von Session-IDs resultieren. Siehe A2.
[edit]

style="vertical-align: top; padding:5px; width: 50%;
          border: 3px solid 
  1. 4F81BD;
          background-color: 
  1. F2F2F2;">

Erfinde das Sessionmanagement nicht neu! Die verbreiteten Plattformen (wie Tomcat, Websphere, u.a.) liefern das alles schon mit.
Grundsätzliche Anforderungen:

  • Schütze die SessionID (wie alle Authentisierungsdaten)´mit TLS
  • Die SessionID hat in der URL nichts verloren
  • Beim Logout/TimeOut wird die SessionID auf dem Server ungültig gemacht
  • Benutze grundsätzlich das Secure-Attribut für Cookies.
  • Setze für Cookies das httponly-Attribut
  • Setze Domain-und Pfad-Attribut in Cookies so eng wie möglich
  • Verwende für die Erzeugung der SessionID einen kryptografisch sicheren Zufallszahlengeneerator (Entropy mindestens 128bit)
  • Der Timeout von Cookies sollte so schnell wie möglich erfolgen (Beim Onlinebanking hat ein Wert von ca 10 Min. mittlerweile Standard)
</td>
                  <td
   style="vertical-align: top; padding:5px; width: 50%;
          border: 3px solid 
  1. 4F81BD;
          background-color: 
  1. F2F2F2;">
Referenzen
style="vertical-align: top; padding:5px; width: 50%;
          border: 3px solid 
  1. 4F81BD;
          background-color: 
  1. F2F2F2;">
style="vertical-align: top; padding:5px; width: 50%;
          border: 3px solid 
  1. 4F81BD;
          background-color: 
  1. F2F2F2;">

OWASP

Andere

</td></tr></table>

style="vertical-align: top; padding:5px; width: 50%;
          border: 3px solid 
  1. 4F81BD;
          background-color: 
  1. F2F2F2;">

tbd Text

</td>
                  <td
   style="vertical-align: top; padding:5px; width: 50%;
          border: 3px solid 
  1. 4F81BD;
          background-color: 
  1. F2F2F2;">
Referenzen

tbd Text

style="vertical-align: top; padding:5px; width: 50%;
          border: 3px solid 
  1. 4F81BD;
          background-color: 
  1. F2F2F2;">

tbd Text

style="vertical-align: top; padding:5px; width: 50%;
          border: 3px solid 
  1. 4F81BD;
          background-color: 
  1. F2F2F2;">

(ganze Breite) Text

style="vertical-align: top; padding:5px; width: 50%;
          border: 3px solid 
  1. 4F81BD;
          background-color: 
  1. F2F2F2;">

</td></tr></table>


← Top_10_fuer_Entwickler/A2_Cross-Site Scripting (XSS)
Top 10 fuer Entwickler-2013: Inhaltsverzeichnis

Die Top-10-Risiken

Top_10_fuer_Entwickler/A4_Unsichere direkte Objektreferenzen →

© 2002-2013 OWASP Foundation This document is licensed under the Creative Commons Attribution-ShareAlike 3.0 license. Some rights reserved. CC-by-sa-3 0-88x31.png