Struikelblokken en kwetsbaarheden bij de adoptie van same-site cookies
De toekomst van de cookies
Hand in hand met veilige same-site cookies?
Als u af en toe op het web vertoeft, dan hebt u vast wel eens van cookies gehoord. Niet de kruimelende versnaperingen die vaak aan de grondslag liggen van een gefaald dieet, wél de kleine stukjes data die op uw computer worden opgeslagen om uw surfervaring te verbeteren. Hoe zoet deze computerterm ook klinkt, men houdt er in veel gevallen een bittere nasmaak op na. Naast de surfende gebruiker, weten namelijk ook hackers dit wel te smaken. Gelukkig tracht men deze te slim af te zijn aan de hand van nieuwe veiligheidstechnieken, waarvan de same-site cookie er eentje is.
De beginjaren
Het smakelijke verhaal begint in 1994, het jaar waarin de cookie werd geïntroduceerd. Voor het eerst konden websites via de webbrowser stukjes data opslaan op de computer van de bezoeker. Eén bezoek was genoeg om enkele kilobytes aan gegevens te bewaren. Bij de daaropvolgende bezoeken zorgde de webbrowser er dan voor dat deze gegevens automatisch werden meegestuurd naar de website. Op deze manier kon de website gebruikersspecifieke informatie opslaan voor iedere bezoeker. Dit maakt het onder andere mogelijk om een geregistreerde bezoeker te herkennen en automatisch in te loggen.
Cookies werden echter pas werkelijk bekend bij het grote publiek in 1996, maar niet vanwege het gebruiksgemak. In dat jaar publiceerde Financial Times een artikel waarin het hevige kritiek uitte op dit nog jonge stukje technologie. Men vestigde de aandacht op de privacy van de internetgebruikers die te grabbel werd gegooid. Door middel van cookies kon iedere website namelijk achterhalen welke pagina’s de gebruiker het meest verkiest of hoe regelmatig hij de website bezoekt. Dit kon voordien ook al op andere wijzen, maar minder doeltreffend. Deze kritiek deed echter geen afbreuk aan het succes van de cookie, maar duidde de wereld wel op de keerzijde van de medaille.
Moderne risico’s
Nu, vele jaren later, wordt er nog altijd gretig gebruik gemaakt van cookies. Denk maar aan websites zoals Facebook en YouTube waarvoor u niet elke keer uw wachtwoord moet invullen om in te loggen. Of aan die opvallende cookie policies die u onder uw neus gedrukt krijgt bij het bezoeken van een nieuwe website. Ook al is de cookie veel veranderd sinds zijn creatie, het concept is altijd hetzelfde gebleven.
Ondertussen is ook een nieuwe groep van aanvallen ontstaan die misbruik maken van de cookie, dit zijn de cross-site aanvallen. Zo’n aanval wordt geïnitieerd wanneer u als onschuldige gebruiker een kwaadwillige website van een hacker bezoekt. De hacker kan zijn website immers zo ontwerpen dat de webbrowser als gevolg van dit bezoek automatisch een boodschap — of in vaktermen een cross-site request — verstuurt naar een andere website. Dat is op zich niet zo raar, want bijna elke website steunt op dit principe om bijvoorbeeld afbeeldingen, filmpjes en functionaliteit van andere websites te hergebruiken. Wel is het in geval van hackers gevaarlijk. Zoals we hiervoor al aanhaalden, wordt ook de cookie (indien de gebruiker er een heeft voor de website die hij bezoekt) telkens meegestuurd met de request. Zo wordt de gebruiker dus bij elke request impliciet geauthenticeerd op de doelwebsite. Met andere woorden zal de doelwebsite weten dat het gaat om een bepaalde gebruiker. Deze impliciete authenticatie vormt de basis van deze aanvallen.
Voor deze aanvalsgroep heeft de hacker meestal één van twee objectieven. Een eerste is dat hij in naam van de gebruiker een actie tracht uit te voeren op de website waarvoor deze gebruiker geregistreerd is. Dit kan gaan van het posten van een reactie op Facebook, over het reageren op een video op YouTube, tot gewoon het wijzigen van accountinstellingen op eender welke website. Het verrichten van overschrijvingen in naam van het slachtoffer is in dit geval ook niet uitgesloten. Dit soort problemen zijn in het verleden al aangetoond voor onder andere ING Direct, YouTube en The New York Times.
In tegenstelling tot het eerste objectief, zou de hacker ook geïnteresseerd kunnen zijn in het verzamelen van persoonlijke informatie. Via een cross-site aanval probeert hij dan accountspecifieke informatie tot bij hem te krijgen of zelfs gewoon te construeren. Daar bestaan verschillende technisch-complexe manieren voor, waaronder het verrichten van tijdsmetingen over verschillende cookie-dragende cross-site requests. In een notendop kan de hacker aan de hand van deze tijdsmetingen in combinatie met gepersonaliseerde Facebook-advertenties de leeftijd, het geslacht en de locatie van een Facebook-gebruiker ongevraagd achterhalen.
Same-site cookies als zoethouder?
De besproken kwetsbaarheden vormen nog steeds een groot probleem op het internet. Met als doel deze te verhelpen, werd de same-site cookie geïntroduceerd. Same-site cookies zijn eigenlijk gewone cookies met een extra attribuut. Met dit attribuut kunnen websites bepalen of de cookie meegestuurd mag worden met cross-site requests of niet. Op deze manier wordt de gebruiker beter beschermd. Hij wordt immers niet meer zomaar impliciet geauthenticeerd voor elke cross-site request.
De adoptie van same-site cookies gebeurt daarentegen traag. Enerzijds moeten de populaire webbrowsers deze nieuwe technologie ondersteunen. Dit gebeurt sinds 2016 al door Google Chrome en Opera, maar jammer genoeg laten de andere webbrowsers op zich wachten. Anderzijds moet deze technologie ook geïntegreerd worden door websites. Er is echter bijna geen enkele grote website die dit daadwerkelijk doet. Dit komt omdat het vaak niet eenvoudig is om de bestaande websitestructuren uit te breiden met same-site cookies. Het onbezonnen toepassen van same-site cookies kan immers de functionaliteit en gebruiksvriendelijkheid van een website ondermijnen.
Of de same-site cookie een grotere rol zal spelen in de strijd tegen cross-site aanvallen, of plaats zal moeten maken voor een beter geschikte technologie, zal de toekomst uitwijzen. De same-site cookie lijkt alleszins een effectief middel tegen dit probleem. Daarnaast zouden speciaal ontwikkelde tools ook kunnen helpen bij de integratie van same-site cookies in bestaande websitestructuren.
- Adam Barth. HTTP State Management Mechanism. RFC 6265. IETF Secreta- riat, apr 2011, p. 1–37. url: https://tools.ietf.org/html/rfc6265.
- Adam Barth. The Web Origin Concept. RFC 6454. IETF Secretariat, dec 2011, p. 1–20. url: https://tools.ietf.org/html/rfc6454.
- Adam Barth, Collin Jackson en John C. Mitchell. “Robust Defenses for Cross- site Request Forgery”. In: Proceedings of the 15th ACM Conference on Compu- ter and Communications Security. CCS ’08. Alexandria, Virginia, USA: ACM, 2008, p. 75–88. isbn: 978-1-59593-810-7. doi: 10.1145/1455770.1455782. url: http://doi.acm.org/10.1145/1455770.1455782.
- Andrew Bortz en Dan Boneh. “Exposing Private Information by Timing Web Applications”. In: Proceedings of the 16th International Conference on World Wide Web. WWW ’07. Banff, Alberta, Canada: ACM, 2007, p. 621– 628. isbn: 978-1-59593-654-7. doi: 10.1145/1242572.1242656. url: http://doi.acm.org/10.1145/1242572.1242656.
- DistriNet. CsFire browser extensie. url: https://distrinet.cs.kuleuven.be/software/CsFire/ (bezocht op 10-04-2017).
- Dropbox. Preventing cross-site attacks using same-site cookies. url: https://blogs.dropbox.com/tech/2017/03/preventing-cross-site-attacks-us… (bezocht op 31-05-2017).
- R. Fielding Ed. en J. Reschke Ed. Hypertext Transfer Protocol (HTTP/1.1): Semantics and Content. RFC 7231. IETF Secretariat, jun 2014, p. 1–101. url: https://tools.ietf.org/html/rfc7231.
- Jochen Eisinger en Emily Stark. Referrer Policy. Candidate Recommendation. W3C, jan 2017. url: https://www.w3.org/TR/2017/CR-referrer-policy-20170126/.
- GitHub. Yummy cookies across domains. 2013. url: https://github.com/ blog/1466-yummy-cookies-across-domains (bezocht op 24-05-2017).
- Tom Van Goethem, Wouter Joosen en Nick Nikiforakis. “The Clock is Still Ticking: Timing Attacks in the Modern Web”. In: Proceedings of the 22nd ACM SIGSAC Conference on Computer and Communications Security (2015), p. 1382–1393. doi: http://dl.acm.org/citation.cfm?doid=2810103. 2813632.
- Tom Van Goethem e.a. “Request and Conquer: Exposing Cross-Origin Resource Size”. In: 25th USENIX Security Symposium (USENIX Security 16). Austin, TX: USENIX Association, 2016, p. 447–462. isbn: 978-1-931971-32-4. url: https://www.usenix.org/conference/usenixsecurity16/technical-sessions/p….
-
Ilya Grigorik. Resource Hints. W3C Working Draft. W3C, mei 2017. url: https://www.w3.org/TR/resource-hints/.
-
Google Groups. Intent to Deprecate and Remove: Prerender. url: https://groups.google.com/a/chromium.org/forum/#%21topic/blink-dev/0nSx… (bezocht op 31-05-2017).
- Lin-Shung Huang e.a. “Clickjacking: Attacks and Defenses”. In: Presented as part of the 21st USENIX Security Symposium (USENIX Security 12). Bel- levue, WA: USENIX, 2012, p. 413–428. isbn: 978-931971-95-9. url: https://www.usenix.org/conference/usenixsecurity12/technical-sessions/ presentation/huang.
- Isatou Hydara e.a. “Current state of research on cross-site scripting (XSS) - A systematic literature review”. English. In: deel 58. Complete. 2015, p. 170–186. doi: 10.1016/j.infsof.2014.07.010.
- Martin Johns en Justus Winter. “RequestRodeo: client side protection against session riding”. In: in Proceedings of the OWASP Europe 2006 Conference, refereed papers track, Report CW448. P. 5–17.
- Anne van Kesteren. Cross-Origin Resource Sharing. W3C Recommendation. W3C, jan 2014. url: http://www.w3.org/TR/2014/REC-cors-20140116/.
- S. Lekies e.a. “The Unexpected Dangers of Dynamic JavaScript”. In: 24th USENIX Security Symposium (USENIX Security 15) (2015), p. 723–735. url: https://www.usenix.org/conference/usenixsecurity15/technical-sessions/p….
- Mozilla Developer Network. Fetch API. url: https://developer.mozilla.org/en/docs/Web/API/Fetch_API (bezocht op 30-05-2017).
- Mozilla Developer Network. HTTP access control (CORS). url: https://developer.mozilla.org/en-US/docs/Web/HTTP/Access_control_CORS (bezocht op 23-05-2017).
- Mozilla Developer Network. Inheritance and the prototype chain. url: https: //developer.mozilla.org/en/docs/Web/JavaScript/Inheritance_and_the_prototype_chain (bezocht op 23-05-2017).
- Mozilla Developer Network. Using the application cache. url: https://developer.mozilla.org/en-US/docs/Web/HTML/Using_the_application… (bezocht op 30-05-2017).
- OWASP. OWASP Top Ten Project 2013. url: https://www.owasp.org/index.php/Category:OWASP_Top_Ten_Project#OWASP_To… (bezocht op 08-04-2017).
- OWASP. OWASP Top Ten Project 2017 Release Candidate. url: https://www.owasp.org/index.php/Category:OWASP_Top_Ten_Project#tab=OWAS… (bezocht op 31-05-2017).
- Alex Russell e.a. Service Workers 1. W3C Working Draft. W3C, okt 2016. url: https://www.w3.org/TR/2016/WD-service-workers-1-20161011/.
- P. De Ryck e.a. “CsFire: Transparent client-side mitigation of malicious cross- domain requests”. In: Lecture Notes in Computer Science (2010), p. 18–34. url: https://lirias.kuleuven.be/bitstream/123456789/260893/1/ paper.pdf.
- Gustav Rydstedt e.a. “Busting frame busting: a study of clickjacking vul- nerabilities at popular sites”. In: in IEEE Oakland Web 2.0 Security and Privacy (W2SP 2010). 2010. url: https://seclab.stanford.edu/websec/framebusting/framebust.pdf.
- S. Schinzel. “An Efficient Mitigation Method for Timing Side Channels on the Web”. In: Proceedings of the 2nd International Workshop on Constructive Side-Channel Analysis and Secure Design (COSADE 2011). 2011.
- StatCounter. Browser Market Share Worldwide 2016. url: http://gs.statcounter.com/browser-market-share/all/worldwide/2016 (bezocht op 31-05-2017).
- Chrome Platform Status. ’Same-site’ cookie attribute. url: https://www.chromestatus.com/feature/4672634709082112 (bezocht op 11-04-2017).
- Takeshi Terada. “Identifier based XSSI attacks”. In: mrt 2015. url: http://www.mbsd.jp/Whitepaper/xssi.pdf.
- W3Techs. Usage of web servers for websites. Mei 2017. url: https://w3techs. com/technologies/overview/web_server/all (bezocht op 29-05-2017).
- Helen Wang e.a. The Multi-Principal OS Construction of the Gazelle Web Browser. Tech. rap. Feb 2009. url: https://www.microsoft.com/en-us/research/publication/the-multi-principa….
- Mike West. Cookie Prefixes. Internet-Draft draft-ietf-httpbis-cookie-prefixes-00. IETF Secretariat, feb 2016. url: https://tools.ietf.org/html/draft-ietf-httpbis-cookie-prefixes-00.
- Mike West. First-Party Cookies. Internet-Draft draft-west-first-party-cookies-00. IETF Secretariat, okt 2014. url: https://tools.ietf.org/html/draft-west-first-party-cookies-00.
- Mike West en Mark Goodwin. Same-Site Cookies. Internet-Draft draft-ietf-httpbis-cookie-same-site-00. IETF Secretariat, jun 2016. url: http://www.ietf.org/internet-drafts/draft-ietf-httpbis-cookie-same-site….
- WHATWG. Storage. Mei 2017. url: https://storage.spec.whatwg.org/ (bezocht op 24-05-2017).
- WHATWG. XMLHttpRequest. Mei 2017. url: https://xhr.spec.whatwg.org/ (bezocht op 06-06-2017).
- Kinuko Yasuda. Quota Management API. Tech. rap. W3C, mei 2016. url: http://www.w3.org/TR/2016/NOTE-quota-api-20160523/.
- William Zeller en Edward W. Felten. Cross-Site Request Forgeries: Exploitation and Prevention. 2008.
- Xiaofeng Zheng e.a. “Cookies Lack Integrity: Real-World Implications”. In: 24th USENIX Security Symposium (USENIX Security 15). Washington, D.C.: USENIX Association, 2015, p. 707–721. isbn: 978-1-931971-232. url: https://www.usenix.org/conference/usenixsecurity15/technical-sessions/ presentation/zheng.