This site is the archived OWASP Foundation Wiki and is no longer accepting Account Requests.
To view the new OWASP Foundation website, please visit https://owasp.org
Difference between revisions of "Germany/Projekte/Top 10 fuer Entwickler-2013/A4-Unsichere direkte Objektreferenzen"
m (Editoral Edit/redaktionelle Änderung) |
|||
(7 intermediate revisions by the same user not shown) | |||
Line 1: | Line 1: | ||
− | {{ | + | {{Top_10_2013_DeveloperEdition:TopTemplate |
− | |useprev= | + | |useprev=2013PrevLinkDeveloperEdition |
− | |usenext= | + | |usenext=2013NextLinkDeveloperEdition |
− | |prev= | + | |prev=A3-{{Top_10_2010:ByTheNumbers |
|3 | |3 | ||
− | | | + | |year=2013 |
− | | | + | |language=de}} |
− | |next= | + | |next=A5-{{Top_10_2010:ByTheNumbers |
|5 | |5 | ||
− | |language=de | + | |year=2013 |
− | |year= | + | |language=de}} |
+ | |year=2013 | ||
+ | |language=de | ||
+ | }} | ||
+ | |||
+ | {{Top_10_2010:SubsectionColoredTemplate | ||
+ | |A4 {{Top_10_2010:ByTheNumbers | ||
+ | |4 | ||
+ | |year=2013 | ||
+ | |language=de}} | ||
+ | ||year=2013 | ||
}} | }} | ||
− | |||
− | |||
{{Top_10_2010:SummaryTableHeaderBeginTemplate|type=images|year=2013|language=de}} | {{Top_10_2010:SummaryTableHeaderBeginTemplate|type=images|year=2013|language=de}} | ||
{{Top_10:SummaryTableTemplate|exploitability=1|prevalence=2|detectability=1|impact=2|language=de|year=2013}} | {{Top_10:SummaryTableTemplate|exploitability=1|prevalence=2|detectability=1|impact=2|language=de|year=2013}} | ||
− | {{Top_10_2010:SummaryTableHeaderEndTemplate}} | + | {{Top_10_2010:SummaryTableHeaderEndTemplate|year=2013|language=de}} |
<td {{Template:Top 10 2010:SummaryTableRowStyleTemplate}}>Denken Sie an verschiedene Typen von Nutzern, die auf Ihr System zugreifen. Gibt es Nutzer, die nur eingeschränkten Zugriff auf bestimmte Daten Ihres Systems haben sollen?</td> | <td {{Template:Top 10 2010:SummaryTableRowStyleTemplate}}>Denken Sie an verschiedene Typen von Nutzern, die auf Ihr System zugreifen. Gibt es Nutzer, die nur eingeschränkten Zugriff auf bestimmte Daten Ihres Systems haben sollen?</td> | ||
<td {{Template:Top 10 2010:SummaryTableRowStyleTemplate}}>Der Angreifer ist autorisiert, auf ein Systemobjekt zuzugreifen. Durch einfache Änderung eines Parameters kann er auf Objekte zugreifen, für die er nicht autorisiert ist.</td> | <td {{Template:Top 10 2010:SummaryTableRowStyleTemplate}}>Der Angreifer ist autorisiert, auf ein Systemobjekt zuzugreifen. Durch einfache Änderung eines Parameters kann er auf Objekte zugreifen, für die er nicht autorisiert ist.</td> | ||
Line 42: | Line 50: | ||
====Indirekte Objektreferenzen verwenden!==== | ====Indirekte Objektreferenzen verwenden!==== | ||
;ESAPI<br/> | ;ESAPI<br/> | ||
− | (Beispiel | + | (Beispiel mit kleineren Anpassungen aus ESAPI übernommen) |
{{Top_10_2010:ExampleBeginTemplate|year=2013}} | {{Top_10_2010:ExampleBeginTemplate|year=2013}} | ||
Set fileSet = new HashSet();<br/> | Set fileSet = new HashSet();<br/> | ||
Line 113: | Line 121: | ||
{{Top_10_2010:ExampleEndTemplate}} | {{Top_10_2010:ExampleEndTemplate}} | ||
+ | <!--------- | ||
{{Top_10_2010:SubsectionAdvancedTemplate|type={{Top_10_2010:StyleTemplate}}|subsection=defOp|position=left|title=3|risk=4|year=2013|language=de}} | {{Top_10_2010:SubsectionAdvancedTemplate|type={{Top_10_2010:StyleTemplate}}|subsection=defOp|position=left|title=3|risk=4|year=2013|language=de}} | ||
Line 118: | Line 127: | ||
{{Top_10_2010:ExampleEndTemplate}} | {{Top_10_2010:ExampleEndTemplate}} | ||
+ | ----------> | ||
+ | {{Top_10_2010:SubsectionAdvancedTemplate|type={{Top_10_2010:StyleTemplate}}|subsection=references|position=whole|risk=4|year=2013|language=de}} | ||
+ | {{Top_10_2010:SubSubsectionOWASPReferencesTemplate}} | ||
+ | * [https://www.owasp.org/index.php/Top_10_2007-Insecure_Direct_Object_Reference OWASP Top 10-2007 on Insecure Dir Object References] | ||
+ | * [http://owasp-esapi-java.googlecode.com/svn/trunk_doc/latest/org/owasp/esapi/AccessReferenceMap.html ESAPI Access Reference Map API] | ||
+ | * [http://owasp-esapi-java.googlecode.com/svn/trunk_doc/latest/org/owasp/esapi/AccessController.html ESAPI Access Control API] (siehe isAuthorizedForData(), isAuthorizedForFile(), isAuthorizedForFunction() ) | ||
+ | |||
+ | Für weitere Anforderungen an Zugangskontrollen siehe<br/> | ||
+ | : [https://www.owasp.org/index.php/ASVS ASVS requirements area for Access Control (V4)]. | ||
+ | |||
+ | {{Top_10_2010:SubSubsectionExternalReferencesTemplate|language=de}} | ||
+ | * [http://cwe.mitre.org/data/definitions/639.html CWE Entry 639 on Insecure Direct Object References] | ||
+ | * [http://cwe.mitre.org/data/definitions/22.html CWE Entry 22 on Path Traversal] (Beispiel für einen Angriff über direkte Objektreferenzen) | ||
+ | {{Top_10:SubsectionTableEndTemplate}}{{Top 10 DeveloperEdition:NavigationByHeadertab | ||
+ | |headertab=JAVA | ||
+ | |useprev=2013PrevHeaderTabDeveloperEdition | ||
+ | |usenext=2013NextHeaderTabDeveloperEdition | ||
+ | |prev=A3-{{Top_10_2010:ByTheNumbers | ||
+ | |3 | ||
+ | |year=2013 | ||
+ | |language=de}} | ||
+ | |next=A5-{{Top_10_2010:ByTheNumbers | ||
+ | |5 | ||
+ | |year=2013 | ||
+ | |language=de}} | ||
+ | |year=2013 | ||
+ | |language=de | ||
+ | }} | ||
+ | |||
+ | |||
+ | = '''PHP''' = | ||
+ | {{taggedSection | ||
+ | | type=tbd | ||
+ | | comment=Bitte senden Sie uns weitere gute Beispiele mit PHP für diesen Abschnitt. | ||
+ | }} | ||
+ | {{Top_10:SubsectionTableBeginTemplate|type=headertab}} {{Top_10_2010:SubsectionAdvancedTemplate|type={{Top_10_2010:StyleTemplate}}|subsection=defOp|position=firstLeft|title=1|risk=4|year=2013|language=de}} | ||
+ | ;(A) Teilüberschrift | ||
+ | {{Top_10_2010:ExampleBeginTemplate|year=2013}} | ||
+ | Funktion { | ||
+ | : eingerückt; | ||
+ | :: zweifach eingerückt; | ||
+ | : ... | ||
+ | } | ||
+ | {{Top_10_2010:ExampleEndTemplate}} | ||
+ | <br/> | ||
+ | {{Top_10_2010:SubsectionAdvancedTemplate|type={{Top_10_2010:StyleTemplate}}|subsection=defOp|position=right|title=2|risk=4|year=2013|language=de}} | ||
+ | {{Top_10_2010:ExampleBeginTemplate|year=2013}} | ||
+ | tbd | ||
+ | Text | ||
+ | {{Top_10_2010:ExampleEndTemplate}} | ||
+ | |||
+ | {{Top_10_2010:SubsectionAdvancedTemplate|type={{Top_10_2010:StyleTemplate}}|subsection=defOp|position=left|title=3|risk=4|year=2013|language=de}} | ||
+ | Text | ||
{{Top_10_2010:SubsectionAdvancedTemplate|type={{Top_10_2010:StyleTemplate}}|subsection=references|position=right|risk=4|year=2013|language=de}} | {{Top_10_2010:SubsectionAdvancedTemplate|type={{Top_10_2010:StyleTemplate}}|subsection=references|position=right|risk=4|year=2013|language=de}} | ||
Line 131: | Line 193: | ||
* [http://cwe.mitre.org/data/definitions/639.html CWE Entry 639 on Insecure Direct Object References] | * [http://cwe.mitre.org/data/definitions/639.html CWE Entry 639 on Insecure Direct Object References] | ||
* [http://cwe.mitre.org/data/definitions/22.html CWE Entry 22 on Path Traversal] (Beispiel für einen Angriff über direkte Objektreferenzen) | * [http://cwe.mitre.org/data/definitions/22.html CWE Entry 22 on Path Traversal] (Beispiel für einen Angriff über direkte Objektreferenzen) | ||
− | {{Top_10:SubsectionTableEndTemplate}} | + | {{Top_10:SubsectionTableEndTemplate}}{{Top 10 DeveloperEdition:NavigationByHeadertab |
+ | |headertab=PHP | ||
+ | |useprev=2013PrevHeaderTabDeveloperEdition | ||
+ | |usenext=2013NextHeaderTabDeveloperEdition | ||
+ | |prev=A3-{{Top_10_2010:ByTheNumbers | ||
+ | |3 | ||
+ | |year=2013 | ||
+ | |language=de}} | ||
+ | |next=A5-{{Top_10_2010:ByTheNumbers | ||
+ | |5 | ||
+ | |year=2013 | ||
+ | |language=de}} | ||
+ | |year=2013 | ||
+ | |language=de | ||
+ | }} | ||
+ | |||
− | = ''' | + | = '''.NET''' = |
+ | {{taggedSection | ||
+ | | type=tbd | ||
+ | | comment=Bitte senden Sie uns weitere gute Beispiele mit .NET für diesen Abschnitt. | ||
+ | }} | ||
{{Top_10:SubsectionTableBeginTemplate|type=headertab}} {{Top_10_2010:SubsectionAdvancedTemplate|type={{Top_10_2010:StyleTemplate}}|subsection=defOp|position=firstLeft|title=1|risk=4|year=2013|language=de}} | {{Top_10:SubsectionTableBeginTemplate|type=headertab}} {{Top_10_2010:SubsectionAdvancedTemplate|type={{Top_10_2010:StyleTemplate}}|subsection=defOp|position=firstLeft|title=1|risk=4|year=2013|language=de}} | ||
<br/> | <br/> | ||
Line 207: | Line 288: | ||
* [http://cwe.mitre.org/data/definitions/22.html CWE Entry 22 on Path Traversal] (Beispiel für einen Angriff über direkte Objektreferenzen) | * [http://cwe.mitre.org/data/definitions/22.html CWE Entry 22 on Path Traversal] (Beispiel für einen Angriff über direkte Objektreferenzen) | ||
* [http://asafaweb.com/OWASP%20Top%2010%20for%20.NET%20developers.pdf OWASP Top 10 for .NET developers (Troy Hunt)] | * [http://asafaweb.com/OWASP%20Top%2010%20for%20.NET%20developers.pdf OWASP Top 10 for .NET developers (Troy Hunt)] | ||
− | {{Top_10:SubsectionTableEndTemplate}} | + | {{Top_10:SubsectionTableEndTemplate}}{{Top 10 DeveloperEdition:NavigationByHeadertab |
+ | |headertab=.NET | ||
+ | |useprev=2013PrevHeaderTabDeveloperEdition | ||
+ | |usenext=2013NextHeaderTabDeveloperEdition | ||
+ | |prev=A3-{{Top_10_2010:ByTheNumbers | ||
+ | |3 | ||
+ | |year=2013 | ||
+ | |language=de}} | ||
+ | |next=A5-{{Top_10_2010:ByTheNumbers | ||
+ | |5 | ||
+ | |year=2013 | ||
+ | |language=de}} | ||
+ | |year=2013 | ||
+ | |language=de | ||
+ | }} | ||
+ | <!-- weitere Programmiersprachen oder evtl Anti-Beispiele --- > | ||
= '''Test''' = | = '''Test''' = | ||
− | |||
{{Top_10:SubsectionTableBeginTemplate|type=headertab}} {{Top_10_2010:SubsectionAdvancedTemplate|type={{Top_10_2010:StyleTemplate}}|subsection=defOp|position=firstLeft|title=1|risk=4|year=2013|language=de}} | {{Top_10:SubsectionTableBeginTemplate|type=headertab}} {{Top_10_2010:SubsectionAdvancedTemplate|type={{Top_10_2010:StyleTemplate}}|subsection=defOp|position=firstLeft|title=1|risk=4|year=2013|language=de}} | ||
{{Top_10_2010:ExampleBeginTemplate|year=2013}} | {{Top_10_2010:ExampleBeginTemplate|year=2013}} | ||
Line 232: | Line 327: | ||
{{Top_10_2010:SubsectionAdvancedTemplate|type={{Top_10_2010:StyleTemplate}}|subsection=references|position=right|risk=4|year=2013|language=de}} | {{Top_10_2010:SubsectionAdvancedTemplate|type={{Top_10_2010:StyleTemplate}}|subsection=references|position=right|risk=4|year=2013|language=de}} | ||
− | {{Top_10:SubsectionTableEndTemplate}} | + | {{Top_10:SubsectionTableEndTemplate}}{{Top 10 DeveloperEdition:NavigationByHeadertab |
+ | |headertab=Test | ||
+ | |useprev=2013PrevHeaderTabDeveloperEdition | ||
+ | |usenext=2013NextHeaderTabDeveloperEdition | ||
+ | |prev=A3-{{Top_10_2010:ByTheNumbers | ||
+ | |3 | ||
+ | |year=2013 | ||
+ | |language=de}} | ||
+ | |next=A5-{{Top_10_2010:ByTheNumbers | ||
+ | |5 | ||
+ | |year=2013 | ||
+ | |language=de}} | ||
+ | |year=2013 | ||
+ | |language=de | ||
+ | }} | ||
+ | ---------------------------------------------> | ||
<headertabs /> | <headertabs /> | ||
− | + | {{Top_10_2013_DeveloperEdition:BottomAdvancedTemplate | |
− | {{ | ||
|type=0 | |type=0 | ||
− | |useprev= | + | |useprev=2013PrevLinkDeveloperEdition |
− | |usenext= | + | |usenext=2013NextLinkDeveloperEdition |
− | |prev= | + | |prev=A3-{{Top_10_2010:ByTheNumbers |
|3 | |3 | ||
− | | | + | |year=2013 |
− | | | + | |language=de}} |
− | |next= | + | |next=A5-{{Top_10_2010:ByTheNumbers |
|5 | |5 | ||
− | |language=de | + | |year=2013 |
− | + | |language=de}} | |
+ | |year=2013 | ||
+ | |language=de | ||
}} | }} | ||
− | |||
[[Category:OWASP Top 10 fuer Entwickler]] | [[Category:OWASP Top 10 fuer Entwickler]] |
Latest revision as of 19:39, 23 March 2016
← A3-Cross-Site Scripting (XSS) | A5-Sicherheitsrelevante Fehlkonfiguration → |
Anwendungs- spezifisch |
Ausnutzbarkeit EINFACH |
Verbreitung HÄUFIG |
Auffindbarkeit EINFACH |
Auswirkung MITTEL |
Anwendungs-/ Geschäftsspezifisch |
Denken Sie an verschiedene Typen von Nutzern, die auf Ihr System zugreifen. Gibt es Nutzer, die nur eingeschränkten Zugriff auf bestimmte Daten Ihres Systems haben sollen? | Der Angreifer ist autorisiert, auf ein Systemobjekt zuzugreifen. Durch einfache Änderung eines Parameters kann er auf Objekte zugreifen, für die er nicht autorisiert ist. | Webanwendungen nutzen oft den internen Namen oder die Kennung eines Objektes, um auf dieses zu verweisen. Anwendungen prüfen dabei nicht immer, ob der Nutzer für den Zugriff auf diese autorisiert ist. Dies führt zu unsicheren direkten Objektreferenzen. Tester können Parameter ändern, um diese Schwachstellen zu entdecken. Code-Analysen zeigen schnell, ob die Autorisierung in geeigneter Weise geprüft wird. | Diese Schwachstelle gefährdet alle Daten, die via Parameter referenziert werden können. Angreifer können auf alle verfügbaren Daten dieser Art zugreifen, außer der Namensraum ist dünn besetzt. | Prüfen Sie sorgfältig den geschäftlichen Wert ungeschützt verfügbarer Daten. Berücksichtigen Sie auch die geschäftlichen Auswirkungen, die mit der Veröffentlichung der Schwachstelle verbunden sein können. |
Mögliche Angriffsszenarien
Die Anwendung nutzt ungeprüfte Daten in einem SQL-Aufruf, der Account-Informationen abfragt: String query = "SELECT * FROM accts WHERE account = ?";
PreparedStatement pstmt = connection.prepareStatement(query , ... ); pstmt.setString( 1, request.getParameter("acct")); ResultSet results = pstmt.executeQuery(); Ein Angreifer ändert den Parameter ‘acct’ im Browser, um beliebige Zugangsnummern abzufragen. Wenn keine Prüfung erfolgt, können Angreifer nicht nur auf ihren eigenen, sondern auf jeden gewünschten Account Zugriff erhalten. http://example.com/app/accountInfo?acct=notmyacct
|
Wie kann ich 'Unsichere direkte Objektreferenzen' verhindern?
Um unsichere direkte Objektreferenzen zu verhindern, muss der Schutz eines jeden Objektes (z.B. Objektnummer, Dateiname), das für Nutzer erreichbar ist, gewährleistet werden:
|
Verteidigungs-Option 1 gegen 'Unsichere direkte Objektreferenzen':
Indirekte Objektreferenzen verwenden!
(Beispiel mit kleineren Anpassungen aus ESAPI übernommen) Set fileSet = new HashSet(); |
Verteidigungs-Option 2 gegen 'Unsichere direkte Objektreferenzen':
Zugriffe prüfen!
public class InjectionChecker {
}
public class PermissionChecker {
}
// Parameter Wert aus dem Request abfragen |
Referenzen
OWASP
Für weitere Anforderungen an Zugangskontrollen siehe Andere
|
Comment: Bitte senden Sie uns weitere gute Beispiele mit PHP für diesen Abschnitt.
Verteidigungs-Option 1 gegen 'Unsichere direkte Objektreferenzen':
Funktion {
}
|
Verteidigungs-Option 2 gegen 'Unsichere direkte Objektreferenzen':
tbd Text |
Verteidigungs-Option 3 gegen 'Unsichere direkte Objektreferenzen':
Text |
Referenzen
OWASP
Für weitere Anforderungen an Zugangskontrollen siehe Andere
|
Comment: Bitte senden Sie uns weitere gute Beispiele mit .NET für diesen Abschnitt.
Verteidigungs-Option 1 gegen 'Unsichere direkte Objektreferenzen':
public static class IndirectReferenceMap {
}
service.GetCustomer('<%= IndirectReferenceMap.
public Customer GetCustomer(Guid indirectId) {
... Quelle: OWASP Top 10 for .NET developers part 4: Insecure direct object reference |
Verteidigungs-Option 2 gegen 'Unsichere direkte Objektreferenzen':
tbd Text |
Verteidigungs-Option 3 gegen 'Unsichere direkte Objektreferenzen':
tbd Text | |
Auswirkung(en) auf den Benutzer
(ganze Breite) Text |
Referenzen
OWASP
Für weitere Anforderungen an Zugangskontrollen siehe Andere
|
← A3-Cross-Site Scripting (XSS) | A5-Sicherheitsrelevante Fehlkonfiguration → |