tisdag 23 september 2008

John om säkerhet i XML och WS



På plats ...
Första dagen på OWASP-konferensen. Jag har inte haft internetaccess alls sen jag kom till staterna och det fungerade givetvis inte på konferensen heller. Förrän efter lunch när de fick tag på hotellets "it-kille" som tittade på min dator. Nu funkar det.

Jag och Mattias är på en tvådagars tutorial om "Web Services and XML Security". Det är Gunnar Peterson (härstammar från Vadstena) från Arctec som föreläser - en auktoritet inom området. Här i bloggen tänkte jag sammanfatta och peka på några av de viktigaste sakerna som togs upp.

Intro - webbtjänster och säkerhet
Under första dagen gick vi igenom förutsättningarna, sårbarheter och började nosa på ws-*-stacken. Gunnar inledde med en diskussion om hur webbtjänster utgör ny mjukvaruarktiektur vilket också kräver en ny säkerhetsarkitektur. Brandväggar, användarnamn/lösenord och rollbaserad accesskontroll fungerar dåligt med en distribuerad tjänstestruktur.

Gunnars favoritjämförelse är e-post-säkerhet. Man skickar ett meddelande (SOAP) som man kan kryptera och signera. Mottagaren filtrerar bort dåliga meddelanden (spam) och dåliga anrop (antivirus). Hans poäng med det är att anrop till webbtjänster inte är en uppkoppling mellan två servrar, det är ett meddelande som slussas mellan avsändare och mottagare med potentiellt många servrar och transportprotokoll emellan.

XML och XSD
XML har en intressant fördel när det gäller säkerhet. Det är en bra bärare av säkerhetsinformation eftersom standarder typiskt ändras över tid och plattformar. XML tillåter sådana ändringar (t.ex. storlek på hashar) utan att hårdkodade offsetter och liknande behöver ändras. Det går helt enkelt att dra och peta i markup-information.

Validering av scheman är dyrt och billigt. Dyrt för att det är resurskrävande på tjänsteservern, billigt för att det är i det närmaste gratis indatavalidering för utvecklaren. XML-gateways kan ta bort det resursonda. Då blir det bara dyrt i reda pengar.

SSL/TLS/HTTPS
Sen kom den gamla frågan om SSL och hur mycket säkrare webbtjänster blir tack var det. Gunnar gick igenom vad SSL skyddar mot utifrån Microsofts STRIDE-modell:
  • Spoofing - skyddar om vi kör klientautentisering
  • Tampering - skyddar inte (man kan ändra på krypterad info utan att det upptäcks)
  • Repudiation - skyddar inte
  • Information disclosure - skyddar så klart via kryptering
  • Denial of Service - skyddar inte
  • Elevation of Privilege - skyddar inte

En av åhörarna frågade om vilka argument som biter på kunder och beställare som tycker att "Vi utbyter bara info med folk vi känner så SSL duger för oss"? Gunnar hade inget patentsvar på den frågan. Inte jag heller. Att lita på de som anropar har att göra med ens trust boundary och är inte alltid en teknisk fråga.

Sista ordet om SSL var en positiv aspekt. Krypteringen ligger på kanalen och är implementerad av experter vilket gör att oupplysta applikationsutvecklare inte kan göra misstag med den grundläggande funktionen.

Sårbarheter
Gunnar visade några exempel på attacker mot webbtjänster. Gamla DTD-validatorer är i princip jämt sårbara för rekursiva XML-attacker (element som refererar till varann i en kombinatorisk explosion).

Denial-of-Service-attacker är möjliga dels genom att skicka en gigantisk SOAP (kolla storleken innan parse:ning) eller genom att generera upp stora minnesstrukturer via SOAP-arrayer.

WSDL
Kanske intressantast under dagen var diskussionerna om WSDL.

Behövs den? I korthet kan man konstatera att din WSDL inte behöver ligga publikt på nätet. Har dem som ska anropa dig tillgång till den så kan de generera/implementera sina klienter ändå. Och egentligen behövs den inte alls. Det går utmärkt att prata webbtjänster utan WSDL.

Är en publik WSDL en sårbarhet? Ja, det kan den vara om man där publicerar gränssnitt som inte är tänkta att vara tillgängliga. Men att inte publicera WSDL blir väl security by obscurity? Nja, det handlar mer om att inte ge attackerare information om man inte behöver. Och det behöver man ju som sagt inte när det gäller WSDL.

Prova att googla "inurl:wsdl site:.se" och se vad svenska domäner erbjuder.

WS-deathstar
Roligt nog så stämde allt Gunnar hade att säga om ws-*-stacken med det vi erfarit på Omegapoint. Upp till och med ws-security så funkar saker, hyfsat interoperativt till och med. Men ws-policy, ws-trust och liknande kommer inte mogna förrän 2010. Allt enligt en luttrad men positiv Gunnar. Ca 10 % av deltagarna hade något med ws-security produktionssatt.

Inga kommentarer: