OWASP Top 8

Vi hade en diskussion häromdagen där vi gick igenom sårbarheterna (eller är det attackerna?) i OWASP Top Ten. Jag har ju vissa tvivel till den nya utgåvans inriktning men idag gäller det en nytt irritationsmoment. Vän av ordning som man är (skriver ilskna insändare o s v) så trivs jag när saker är distinkta och inte överlappar. OWASP Top Ten lider av vissa problem kring i detta avseende. OWASP Top Ten borde kanske egentligen vara OWASP Top Eight.
  1. Injection
  2. Cross-Site Scripting (XSS)
  3. Broken Authentication and Session Management
  4. Insecure Direct Object References
  5. Cross-Site Request Forgery (CSRF)
  6. Security Misconfiguration
  7. Insecure Cryptographic Storage
  8. Failure to Restrict URL Access
  9. Insufficient Transport Layer Protection
  10. Unvalidated Redirects and Forwards
Den första strykningen är enkel att förklara. Cross-site scripting (XSS) är egentligen en form av injection precis som LDAP injection, SQL injection, command injection eller Xpath injection. Vi skulle med gott samvete kunna prata om XSS som HTML injection med browsern som interpreter. Att Javascript tolkas av (förenklat sett) samma tolk förändrar ingenting. Se följande två beskrivningar från OWASP Top Ten 2010:

A1 Injection flaws
Attacker sends simple text-based attacks that exploit the syntax of the targeted interpreter. Almost any source of data can be an injection vector, including internal sources.

A2 Cross-site scripting
Attacker sends text-based attack scripts that exploit the interpreter in the browser. Almost any source of data can be an attack vector, including internal sources such as data from the database.

Den andra strykningen är lite mer subtil. Failure to restrict URL access och insecure direct object reference är båda problem med brister i authorization (vem har tillgång till vad) vilket är en del av paraplyet access control.  I första fallet (A4) avses tillgång till "objekt" och i andra fallet (A8) till "sidor". Förutsatt att sidor visar objekt, hur drar vi den gränsen? Behöver vi dra en gräns? Dessutom, är en sida ett "systemobjekt"? Är en fil ett systemobjekt? Beskrivningarna från 2010-versionen:

A4 Insecure direct object reference
Attacker, who is an authorized system user, simply changes a parameter value that directly refers to a system object to another object the user isn’t authorized for. Is access granted?

A8 Failure to restrict URL access
Attacker, who is an authorized system user, simply changes the URL to a privileged page. Is access granted? Anonymous users could access private pages that aren’t protected.

Hur en applikation gör för att visa sidor, om de lagras som objekt eller inte o s v, är till stor del upp till utvecklaren och ramverket. Oavsett om syntaxen i en sidas URL:er är

http://www.example.com/apage?object=myobject
http://www.example.com/apage?object=notmyobject


eller

http://www.example.com/mypage
http://www.example.com/notmypage


eller

http://www.example.com/show?page=mypage
http://www.example.com/show?page=notmypage


handlar det om samma problem. Vem har tillgång till vad.

Den bästa anledningen till att separera "vanlig" injection och HTML injection (XSS) i vanliga diskussioner är att den förra är en attack mot applikationen medan den senare i regel är en attack mot andra användare. Även detta resonemang haltar dock lite; att sno administratörens cookie via XSS och använda den för att autentisera sig mot applikationen, är det verkligen en attack mot administratören?

Hårklyverier kanske.

--
Stefan Pettersson


Kommentarer
Postat av: Martin da Fonseca

Bra skrivet.

Men varför tror du att OWASP har gjort som man har? Är det av pedagogiska skäl kanske?

2010-06-17 @ 16:17:34
Postat av: Stefan Pettersson

Tack!



Ingen aning men för XSS gissar jag att det är för att den kan anses vara riktad mot användare (i likhet med CSRF). En bidragande orsak är väl också att det skulle vara kontroversiellt att likställa det med SQL injection (av någon outgrundlig anledning).



I det andra fallet kan det vara så att man uppfattar det annorlunda som utvecklare medan jag ser det ur en testares synvinkel. Om jag skulle göra en uppdelning skulle det nog vara tillgång till (A8) äkta filer i filsystemet och (A4) allt annat. Denna haltar dock lite i moderna ramverk.



...sen kan det givetvis vara så att de inte är lika anala som jag är. :-)



Ytterligare en irriterande detalj i historien Top 10 är att upphovsmännen och förespråkarna alltid är tydliga med att påpeka att "det här bara är tio stycken, det finns många, många mer". Jag är inte så övertygad. Det går nog att koka ner väldigt många av våra "attackklasser" till ett fåtal i en ordentlig taxanomi.



Jag kan tänka mig att det finns någon sådan redan, den togs säkert fram för många år sen, de bakom Project Athena eller Multics var säkert inblandade och ClickJacking går säkert att placera i någon av klasserna.

2010-06-17 @ 22:28:03
URL: http://highperformance.blogg.se/
Postat av: Martin da Fonseca

Intressant. Jag kan tänka mig flera perspektiv i detta, men det första som slog mig är att det kändes lite som marknadsföring. Frasen "det finns många, många fler" känns som den vill sälja något. Att lista det tio hetaste sårbarheterna är ju en form av marknadsföring (för OWASP?). Då kanske man är noga med igenkänningsfaktorn i de namn och akronymer som hamnar på listan.

2010-06-18 @ 15:44:34

Kommentera inlägget här:

Namn:
Kom ihåg mig?

E-postadress: (publiceras ej)

URL/Bloggadress:

Kommentar:

Trackback

HPS säkerhetsblogg


High Performance Systems logo


RSS 2.0