Sårbarheter hos webbtjänster

Webbtjänster har till stor del samma sårbarhet som andra webbapplikationer. Eftersom applikationen ofta är tillgänglig över internet så finns det en hel del saker man behöver göra för att skydda sig. Jag kommer att gå igenom detta snart. Men webbtjänster har också egenskapen att andra system kommunicerar med dem, därför finns det också den vägen ett behov av att hantera säkerheten.


På webbplatsen owasp.org behandlas säkerhetsfrågor för webbapplikationer. Där finns tips och artiklar om en stor mängd olika säkerhetsrelaterade frågor. Jag kan varmt rekommendera ett besök där. Det finns artiklar om hur man skyddar sig mot intrång, det finns verktyg och rutiner för att göra egna säkerhetsgenomgångar mm. Detta är en källa både för säkerhetsexperter och för vanliga användare som börjar intressera sig för säkerhet och inse vikten av detta. De publicerar bland annat en lista över de vanligaste säkerhetsriskerna för webbapplikationer. Du ser den listan här för 2007 som är den senaste stabila versionen av listan. Den innan var för 2004.

  • Cross Site Scripting (XSS)
  • Injection Flaws
  • Malicious File Execution
  • Insecure Direct Object Reference
  • Cross Site Request Forgery (CSRF)
  • Information Leakage and Improper Error Handling
  • Broken Authentication and Session Management
  • Insecure Cryptographic Storage
  • Insecure Communications
  • Failure to Restrict URL Access



Överst hittar vi Cross site scripting, kallas också XSS,  som är den vanligaste sårbarheten. I denna attack går ut på att man ser till att tex besökaren på en webbplats får in skadlig kod i sin browser. Denna kod används sedan av angriparen för att t.ex. ta över sessionen och låtsas att angriparen är den vanliga användaren.


Injection flaws, vanligast är SQL injection, innebär att angriparen lyckas få skadlig kod att hanteras av systemet, tex ett sql anrop mot databasen. Om det inte hindras så kommer koden att bearbetas av systemet och tex svara tillbaka till angriparen med de användare som finns upplagda i databasen.

Malicious file execution innebär att systemet hanterar filer eller filnamn direkt från angriparen där filen kan användas för att angripa systemet.  Ett exempel kan vara att angriparen låter systemet läsa en DTD (XML fil) som pekar ut en fientlig DTD. När denna hanteras av XML tolken kan skadlig kod utföras.


Insecure Direct Object reference innebär att angriparen kan se en intern sökväg till tex en fil, en URL, en databas som kan utnyttjas för att angripa det interna systemet eller något annat som angriparen kan lista ut med hjälp av den ofrivilligt avslöjade informationen utan att behöva autentisera sig.


Cross site request forgery innebär att angriparen tagit kontroll över en browser som är inloggad på en webbplats. Angriparen låter sedan browsern utföra handlingar för sina syften.


Information leakage and improper error handling innebär att applikationer läcker ut information om  t.ex. sin konfiguration eller interna kopplingar. Exempel på detta är stack traces eller information om misslyckade SQL statements. Genom detta kan en angripare utnyttja information för andra attacker.


Broken authentication and session management innebär att angriparen lyckas få tag på session cookies, certifikat eller annat för att ”stjäla” offrets identitet.


Insecure Cryptographic Storage. Genom att utnyttja för svag kryptering som ska skydda lagrad data kan angriparen komma över hemliga uppgifter.


Insecure Communications - överförd data skyddas inte genom kryptering.


Failure to Restrict URL Access. Information skyddas ofta endast genom att länkarna döljs för de som inte är auktoriserade. Genom att direkt anropa URLerna kan angriparen ändå komma åt den skyddade informationen.

Det finns en speciell lista Top ten som fokuserar på enbart Java.