15:34:55 RRSAgent has joined #webappsec 15:34:55 logging to http://www.w3.org/2016/05/17-webappsec-irc 15:34:57 RRSAgent, make logs world 15:34:57 Zakim has joined #webappsec 15:34:59 Zakim, this will be WASWG 15:34:59 ok, trackbot 15:35:00 Meeting: Web Application Security Working Group Teleconference 15:35:00 Date: 17 May 2016 15:38:29 s/Teleconference/F2F/ 15:38:34 rrsagent, this meeting spans midnight 15:38:39 rrsagent, make logs public 15:38:48 Chairs: Brad Hill, Dan Veditz 15:38:55 rrsagent, make minutes 15:38:55 I have made the request to generate http://www.w3.org/2016/05/17-webappsec-minutes.html wseltzer 15:59:41 bhill2 has joined #webappsec 15:59:42 dydz has joined #webappsec 16:03:28 ejcx__ has joined #webappsec 16:08:50 francois has joined #webappsec 16:11:48 -> https://www.w3.org/2016/05/16-webappsec-whiteboard.jpg Yesterday's whiteboard 16:12:07 Agenda: https://docs.google.com/document/d/1KQ_TWHBc1QBn4Xf2yJ7AYDQumuJioaGDfxbzwIJjxOI/edit# 16:15:07 estark has joined #webappsec 16:17:25 rrsagent, make minutes 16:17:25 I have made the request to generate http://www.w3.org/2016/05/17-webappsec-minutes.html bhill2 16:21:19 tanvi has joined #webappsec 16:23:39 who's in for dinner? maybe we should make reservations earlier today 16:24:49 +1 16:25:42 +1 16:26:18 +1 16:26:21 +1 16:26:48 jww has joined #webappsec 16:27:10 I'm in for dinner, do I need to write anything else? 16:27:20 is there a Zakim command for dinner? 16:27:35 jww: sorry, doesn't count without a "+1" 16:27:40 dinner: francois, freddyb, deian, mkwst, estark, bhill2, tanvi, jww for dinner = 8 so far. looking on open table 16:27:42 zakim, pick a dinner 16:27:42 I don't understand 'pick a dinner', wseltzer 16:33:30 I can get a reservation at La Fontine in Mountain View at 6:30 pm 16:34:34 http://www.yelp.com/biz/la-fontaine-restaurant-mountain-view 16:34:36 sound good? 16:34:45 tanvi: works for me. 16:35:32 okay done 16:35:38 parking may be tough 16:35:57 but 630 is fairly early so hopefully we will beat the crowds 16:44:12 thanks tanvi! 16:44:47 JeffH has joined #webappsec 16:45:26 present+ 16:45:28 present+ 16:45:28 present+ 16:45:29 present+ 16:45:29 present+ 16:45:32 present+ 16:45:34 present+ 16:45:34 present+ 16:45:34 present+ 16:45:35 present+ 16:45:39 TOPIC: Referrer Policy 16:45:46 devd has joined #webappsec 16:46:14 Zakim: I am here! 16:46:20 estark: a policy you can set on a page or for an element to relax the restriction on referrer being withheld e.g. on https->http navigations 16:46:26 artur_janc has joined #webappsec 16:46:30 ... or tighten policy to say never send a referrer 16:46:47 ... spec is ready to be wrapped up, don't feel there is any major work to be done 16:47:09 ... dominic denicola is working on the PRs to HTML to integrate it there and replace hand-wavey bits about that 16:47:21 ... that is the major outstanding work on the spec 16:47:33 ... in chrome there is a fair bit of implementation work to do to catch up with where the spec is 16:47:42 ... biggest work is implementing the header 16:47:46 ... moved out of CSP to new header 16:48:08 ... also added a referrer policy attribute to the link element 16:48:17 ... link tag (was already on anchor element) 16:49:01 ... this has been updated a bit to integrate better with fetch and service workers 16:49:16 dveditz: we proposed adding a couple of new states / policies 16:49:39 estark: hasn't been changed in the spec yet, don't know how strongly you feel about adding those 16:49:42 ... happy to add them to the spec 16:49:58 ... in terms of chrome implementation I can't say when we would implement them because catching up on the header is a bit of a project 16:50:01 ... that is higher priority 16:50:25 https://w3c.github.io/webappsec-referrer-policy/ 16:50:43 francois: pretty strongly. spec meets all of our needs except the three new proposed policy states 16:51:24 ... spec covers everything else, seems unlikely there will be a V2 soon 16:51:33 ... don't want to leave these behind 16:51:59 dveditz: we've had internal settings to do this in Firefox for some time, and every user of that has wanted to restrict not expand 16:52:10 estark: but that's a different audience, users not resource authors 16:52:51 dveditz: but those same people have their own sites; interesting to them even if not big commercial sites 16:53:10 francois: recently we were talking to womens shelters, they can't do a lot because they're not super technical, but they were leaking referrers 16:53:24 what is francois' affiliation? 16:53:27 ... would like to be able to protect visitors to their sites, they use analytics internally and don't want to lose that with no referrer 16:53:31 jww has joined #webappsec 16:53:38 (jeffh: Francois is with Mozilla) 16:53:59 estark: sounds like we should probably add it, I personally won't have time to implement it for a while, maybe we can find someone else to implement it 16:54:03 ... maybe that's OK 16:54:10 jww_ has joined #webappsec 16:54:17 dev: do we have data on how many have adopted it 16:54:28 mkwst: a lot... 7.3% of page views 16:55:52 francois: that's skewed by prominent sites 16:56:02 hillbrad: facebook uses origin-when-crossorigin 16:56:22 ... to protect privacy and avoid redirects 16:57:14 hillbrad: and we also user rel="noopener" 16:57:32 dveditz: is noopener being speced anywhere? 16:57:38 mkwst: yes, in the WHATWG HTML spec 16:58:13 https://html.spec.whatwg.org/#link-type-noopener 16:59:08 dveditz: would be nice if we could change so opener didn't give a ref unless explicitly wanted 16:59:38 https://html.spec.whatwg.org/#link-type-noreferrer 17:00:00 mkwst: probably very common with OAuth popups, return url navigates using that reference 17:01:11 https://github.com/w3c/webappsec-referrer-policy/pull/19 17:01:45 hillbrad: https://github.com/w3c/web-platform-tests/pull/2851 17:02:22 these are using the old CSP header, needs someone to adopt them and fix them up 17:02:46 (testsuite by @kristijanburnik) 17:03:22 mkwst: should we (is it enough) file bugs against the W3C HTML for these integration points that Dominic is doing? 17:03:34 deian has joined #webappsec 17:03:42 wseltzer: W3C normative reference policy is that they must be to things of equivalent stability and openness 17:04:00 ... goal is to have references in RECs be to W3C RECs or similar in other groups 17:04:27 mkwst: defines some hooks in to the navigation algorithm, maybe all in Fetch. there is some integration into HTML to read the attributes as input to fetch 17:04:32 ... fetch calls back into referrer policy 17:04:49 ... would be good if wseltzer can look at that and help us figure that out 17:04:59 wseltzer: this is pretty well entangled, more so than SRI was 17:06:01 ... gold standard would be to get this in a W3C doc 17:06:08 mkwst: let's add this to our agenda 17:06:47 https://fetch.spec.whatwg.org/#referrer-policies 17:07:08 dev: do other browsers have a plan to implement the header version? 17:07:27 francois: we have someone working on the spec right now 17:07:35 mkwst: don't think FF has the CSP header 17:07:37 tanvi: we may already have it 17:09:42 mkwst: are we going to publish a new WD? 17:09:46 estark: yes, on my todo list 17:10:00 estark: may publish a WD from before the HTML integration started 17:10:06 ... as it may make more sense in that state 17:10:19 wseltzer: are you set up with automatic publication? 17:10:26 estark: mike sent me instructions so I should be 17:12:06 TOPIC: CSP3 17:12:23 mkwst: CSP3 doc at the moment is relatively stable, takes care of majority of things in CSP2 as well as a couple of new things 17:12:41 [ wrt referrer policy and HTML spec: https://html.spec.whatwg.org/#referrer-policy-attributes ] 17:12:41 https://w3c.github.io/webappsec-csp/ 17:12:43 ... couple of small changes I'd like to make, basically I split CSP into a couple documents and want to pull some things back from the document features 17:12:59 ... subdocument back into the main document, sandbox attribute, base uri, things already in CSP2 17:13:14 ... not enough to justify a separate document without making it more confusing to read 17:13:23 ... at the top of CSP there is a list of changes 17:13:44 https://www.w3.org/TR/CSP3/ 17:13:50 ... frame-src and worker-src 17:14:00 ... in CSP2 we have child-src 17:14:16 ... in CSP3 we've split that out to frame-src and worker-src, which defers back to child-src 17:14:43 ... we need more granularity, the threat models may be similar, but people simply want to control them differently 17:15:03 artur: why are they similar? 17:15:10 mkwst: they have ability to execute code on an origin 17:15:22 artur: to me from a security perspective I would not normally need to restrict frame src 17:15:39 ... security effect from including an untrusted frame or untrusted worker 17:15:51 mkwst: I don't entirely disagree with you 17:15:57 ... I think they end up with very similar capabilities 17:16:50 where in https://w3c.github.io/webappsec-csp/ is the CSP3 spec ? 17:17:16 hillbrad: does child-src cover pop-ups and auxillary browsing contexts? 17:17:30 mkwst: not yet, my impression is there isn't strong support but people are interested 17:17:44 dveditz: there are lots of people who think they want to block navigation to stop exfiltration 17:18:44 hillbrad: would be nice to restrict to where e.g. ads can navigate to for e.g. "cloaking" scenarios to only accept known-good locations 17:19:04 dveditz: we would probably need UI to work on this 17:19:20 mkwst: not opposed, we just haven't done the work 17:19:35 dev: things like prerender, prefetch are also relevant 17:19:39 we haven't implemented referrer policy header yet but it is assigned and slated to happen soon 17:19:44 ... don't know if a declarative mechanism is the way to go long-term 17:19:49 ... maybe just service worker 17:20:07 mkwst: malvertising is concerned about navigations by an embedded context 17:20:17 ... want to know the landing page for an ad is the one they assessed 17:20:28 ... initial plan there was embedded enforcement 17:22:05 hillbrad: let's talk about this in the afternoon when Deian is back, this is needed for COWL, and we've talked about doing it only for iframes which covers his case and ads without so many of the UI issues associated with top level browsing contexts 17:22:19 mkwst: there were some changes to reporting that we talked briefly about 17:22:36 ... we are starting to use the new reporting API, idea is we're creating a single backend API that things like CSP can talk to 17:22:49 ... so CSP doesn't have to define this, can just refer to it 17:23:02 ... that spec is a bit in flux, issues like retries, retries across network state changes 17:23:12 ... good to have a central place to work out those issues 17:23:32 ... reporting also changed a bit such that we now should be able to give full url of page we are on as well of initial resource request (before redirects) 17:23:40 ... tried to load example.com?redirto=foobar 17:23:50 dveditz: do we tell them that it was a redirect? 17:24:06 mkwst: no, but you will know that because it is in your whitelist 17:24:23 mkwst has been relating items listed here: https://www.w3.org/TR/CSP3/#changes-from-level-2 17:24:29 estark: does this solve Zach's issue? 17:24:43 mkwst: no but I think what we will give will solve his issue, allowing tracking down the original link 17:25:16 ... no need to strip information that is available in JS already 17:25:35 dev: in an ideal world would be nice to know the origin of redirects at least 17:25:49 mkwst: I think we can have that conversation if you file a bug we can see what is possible 17:25:56 ... should be able to give more useful reports 17:26:26 bhill2: regarding reporting, is it worth looking at imperative API to tune client-side? 17:26:42 ... reporting is really useful, key in CSP adoption, and also really painful 17:27:07 ... tuning reports; eliminating extensions, spurious reports 17:27:22 ... imperative API to say "don't send reports on extensions"? or continue server-side? 17:27:37 mkwst: if we could do a bretter job detecting extensions, you wouldn't need to suppress 17:27:54 ... but it becomes complicated, e.g. event handlers callbacks 17:28:18 ... we do have a handler that lets you send your own report 17:28:54 ... let's figure out how to make the current stuff do what you want 17:29:27 bhill2: can we reduce the pain and suffering about implementing CSP, so everyone doesn't have to write a blog post 17:29:41 deian has joined #webappsec 17:30:31 artur: unless you know the problem we are trying to solve, unsafe-dynamic may seem crazy 17:30:39 ... premise is you should trust the domains from which you load scripts 17:30:49 ... when CSP started it was maybe easier to meet that criteria 17:31:06 ... but it breaks down whenever there are several kinds of endpoints at origins you trust 17:31:15 ... two classes which are well known in pentester community 17:31:35 ... JSONP (json objects wrapped in callback functions that are attacker specified) 17:31:45 ... www.google.com/jsapi?callback=foo 17:32:14 ... second thing is "javascript gadgets" which take data from an unsafe location and uses that to look up a function of the window object and execute it 17:32:24 ... can also bypass CSP, Angular JS is one of those gadgets 17:32:39 ... if any of your script-src hosts have angular, you can use that to bypass CSP 17:33:04 ... there are a few other weird things people don't think about that let an attacker include as a script from an otherwise safe domain that lead to arbitrary script execution 17:34:47 ... very likely that if you include one of the most common script sources they have one of these bypasses available 17:34:52 dev: don't paths fix this? 17:35:11 artur: first of all you can bypass path restrictions with an open redirect (Homakov's bug) 17:35:43 ... we actually adopted a policy like this but it is very difficult to maintain in practice, especially for third party sources 17:35:50 ... few API owners will guarantee that paths don't change 17:36:06 ... e.g. the recaptcha API may load subresources that change locations 17:36:23 ... now loads from www.google.com/recaptcha2/... and your policy breaks 17:36:35 mkwst: will be a bigger problem once script modules are a thing 17:37:03 artur: in practice CSP probably has a whitelist that lets XSS still happen 17:37:17 ... but CSP already has an alternative - nonces and hashes 17:37:36 ... that may allow us to be much more granular about what is allowed to load 17:38:20 ... you can easily change templates to add this to script tags, one thing left is dynamic element creation in JS 17:38:32 .. unsafe-dynamic directive attempts to fix both of these 17:38:49 ... first it drops the whitelist, and then it adds trust dynamically to scripts loaded by a trusted script 17:39:02 tanvi: before a dynamically loaded script would have to be on the whitelist? 17:39:28 artur: yes, or it would need to explicitly get a nonce, but that requires deep changes to every JS API on the internet or some polyfill 17:39:48 tanvi: with unsafe-dynamic you ignore the whitelist 17:39:56 ... what about createElement 17:40:25 artur: this is allowed to happen; attacker could not do this because they don't control an entry point that could do this 17:41:09 mkwst: we look at whether it was parser inserted 17:41:31 ... we whitelist non-parser inserted scripts 17:43:01 dveditz: this is my least favorite part of the proposal 17:43:38 dveditz: could we make it its own directive that says ignore the script-src directive? 17:44:33 bhill2: dynamic-nonce-enforcement? 17:44:57 artur_janc: it's similar to unsafe-eval 17:44:59 document.createElement allowed, but document.write and innerHTML inserted scripts not allowed 17:45:35 artur: it is unsafe similar to eval, as an attacker if you control something in createElement, you get more control because you are not bound by the whitelist 17:46:42 hillbrad: this is good, calling it unsafe will stigmatize its use 17:47:07 mkwst: don't care about changing the name, creating a new directive complicates the policy parsing and enforcement mechanism 17:47:15 ... would have to special case 17:47:25 ... not sure it's any more convoluted than the current system 17:47:34 ... I don't like special cases 17:48:19 dev: you have to use a nonce this way; a different directive you could specify a specific named entrypoint 17:48:25 ... would have to be a separate directive 17:48:35 ... to specify it 17:48:43 ... personally just a fan of a new header 17:48:56 deian has joined #webappsec 17:49:25 ... in our case we would just list require.js 17:49:42 artur: you could already do that with a hash right now 17:49:52 ... give a hash to the loader script 17:50:24 ... many apps have a lot of both inline and referenced scripts 17:50:42 ... e.g. sensitive data that can't be externalized like JSON blocks in inline 17:50:55 dev: you can still use a nonce, but just not a fan of forcing you to use that 17:51:22 hillbrad: but a hash? 17:51:27 dev: would still have to use inline there 17:51:32 ... number of hashes might go up 17:52:30 dveditz: you could just put in a little inline bootstrap script 17:53:03 artur: it is a bit ugly, there is some precedent with nonces/hashes, etc.. 17:53:45 hillbrad: don't think it's "ugly" just principle of least surprise 17:54:14 dveditz: syntax ratholes can go on forever 17:54:20 ... seems like everyone likes it 17:56:33 tanvi: a separate directive would be easier to implement 17:56:45 mkwst: for chrome it was significantly easier to not do a separate directive 17:57:01 dveditz: if a page has two policies, how does this combine? 17:57:08 mkwst: has to pass both 17:57:22 dveditz: that's right we don't combine, we just evaluate serially 17:58:03 mkwst: we've already implemented a few things, but easy to fix 17:58:19 artur: one thing we want to avoid is necessity to sniff user agents 17:59:40 TOPIC: unsafe-hash-attributes 18:00:01 artur: we experimented with the dynamic policies and it was easy because google is set up to add these nonces in its framework 18:00:11 ... two remaining blockers are javascript: uris and inline event handlers 18:00:36 ... didn't seem too crazy to allow hashes to also whitelist event handlers (js uris are less popular) 18:00:51 ... could remove a lot of pain for authors 18:01:02 jww: how would you deal with backwards compat? 18:01:20 artur: have to have unsafe-inline 18:01:27 mkwst: not backwards compatible as currently specified 18:01:44 ... currently hash in policy turns off unsafe-inline 18:01:54 ... then you put another policy that enables the inline event handlers 18:02:12 ... if you don't support this new directive, but do support hashes it will break 18:02:19 dveditz: who supports hash now? 18:02:55 chrome, firefox, safari tech preview 18:03:00 artur: but it is already broken 18:03:18 mkwst: we could have a new type of hash to enable it 18:03:27 dev: but then we couldn't have nonces either 18:05:05 mkwst: if you add a nonce today you don't get handlers 18:07:21 no way to do this backwards compatible with browsers that support nonce today 18:07:38 s/no way/...no way/ 18:07:48 dveditz: could we make to also work with a nonce? 18:08:04 mkwst: could make first line of the onclick handler be a comment with the nonce 18:08:31 artur: benefit of a hash is we can pass over your app and tell you the hashes, but if you can make changes we can already outline scripts 18:10:50 [short break] 18:10:53 rrsagent, make minutes 18:10:53 I have made the request to generate http://www.w3.org/2016/05/17-webappsec-minutes.html wseltzer 18:13:05 yoav has joined #webappsec 18:23:28 mkwst: from my opinion, we can head to CR soon 18:23:33 ... others should look at the stability 18:23:49 ... remaining question whether we can use hashes to whitelist 18:24:15 ... as we discussed with SRI, I'd like to figure it out 18:24:31 ... if we're going to make a new directive for unsafe-dynamic, ... 18:24:43 ... Please look at the spec, see if you're happy with it. 18:24:55 ... Spend some quality time with CSP 18:25:27 ... Good to see that W3C HTML folks are doing integration 18:25:41 https://github.com/w3c/html/pull/387 <-- 18:25:47 ... Travis landed a big commit closing lots of issues yesterday 18:26:51 ... Let's get CSP to CR soon. 18:27:45 JeffH: if you implement CSP2, do you replace with CSP3? 18:27:54 mkwst: we've tried to design as backward-compatible 18:28:29 JeffH: Do you say that explicitly in the spec? 18:28:36 [it appears not] 18:29:10 [rename the spec? john suggested removing "security" yesterday] 18:29:37 bhill2: per the KFC precedent, we can just rename it CSP 18:30:02 zakim, what color is the bikeshed? 18:30:02 I think Thulian pink 18:30:26 TOPIC: Credential Management and Web Authentication 18:31:06 bhill2: It would be good to discuss with Safari folks in the room 18:31:27 TOPIC: SRI 18:32:18 jww: SRI v1 is done 18:32:25 devd: lots of users 18:32:42 ... for v2, requests include cross-origin caching 18:33:24 bhill2: Talk to your AC reps to support the PR 18:33:28 https://www.w3.org/TR/SRI/ 18:33:42 https://www.w3.org/2002/09/wbs/33280/SRI-PR/ 18:33:56 ^ the poll, open to AC reps 18:34:13 francois: there is an issue on the list. One of the notes is probably wrong 18:34:21 ... can we remove it? 18:34:29 mkwst: notes are non-normative 18:34:54 francois: regarding origins for data URIs. We'll remove it. 18:35:40 jww: Everything else is V2 18:35:49 ... require-sri-for 18:36:04 freddyb: pull request 18:36:22 ... I have a draft implementation for FF 18:36:37 ... github interested 18:37:05 ... they had integrity for all scripts minus one, they were sad not to have a way to enforce 18:37:19 jww: overall, I'm a fan, but someone pointed out it's tricky to use without reporing 18:37:31 ... because resources will stop loading unexpectedly 18:37:38 francois: but there's CSP reporting 18:38:11 https://github.com/w3c/webappsec-subresource-integrity/pull/32 18:38:41 devd: my concern is that historically, SRI was for CDNs 18:39:07 ... so I'm not sure what require-integrity gets us 18:39:33 ... corporate proxy 18:39:57 dveditz: what if it were require-integrity for these domains? 18:40:10 jww: we've had people request straight require 18:40:22 devd: I don't think we have full sample of the people who need it 18:40:30 ... uncertainty about how it integrates in CSP 18:41:12 jww: what this gets is something similar to upgrade-insecure. you don't need it in a perfect word 18:41:16 ... helps you transition 18:41:39 ... it's not solely about CDNs, lots of people have different uses 18:41:49 ... we envisioned other future uses, like caching 18:42:10 ... sounds useful, also like complexity I'm wary of adding without user demand 18:42:23 devd: we should spend more time thinking about it 18:42:44 ... a better story around SRI-CSP integration 18:42:53 ... think about cross-origin caching 18:43:02 jww: we're talking about experimental 18:43:27 freddyb: implementing doesn't mean it's locked in 18:43:53 ... require-sri-for scripts, does that include same-origin scripts? 18:44:01 is pull/32 related to issues/23 ? 18:44:02 ... what is it defending against? 18:44:36 devd: some sites with separate hosts 18:45:03 francois: lots more complexity 18:45:31 bhill2: edge caching with integrity protection could be useful 18:45:50 ... say that things on our CDN are OK so long as they're integrity-tagged 18:46:17 devd: a set of issues that are CSP-SRI integration; consider them together 18:46:40 ... are lots more people interested in this directive? 18:47:17 bhill2: might be more useful in report-only than enforce mode 18:47:48 freddyb: maybe put it out behind a flag, get feedback 18:48:01 jww: make sure it's forward-compatible 18:48:18 dveditz: next on list, add integrity attribute for processing of inline scripts 18:48:58 ... Crispin or Daniel mentioned yesterday 18:49:27 ... Integrity for downloads 18:50:01 mkwst: firefox handled encoding differently 18:50:22 bhill2: if you block it, the user will just copy the link to the URL bar anyhow 18:50:39 ... how do you make the UI meaningful? do they get to bypass, what signal do they get? 18:50:47 ... usability 18:50:58 francois: we might have existing UI for safe browsing 18:51:10 jww: integrity is a network error, currently 18:51:17 mkwst: the browser's gonna browse 18:51:46 ... a download isn't represented in the page 18:52:09 bhill2: do you have any way to get integrity feedback on your downloads? 18:52:20 dveditz: it's a navigation 18:52:57 mkwst: what happens is opaque to the page 18:53:27 ... there should be no impact of failrue, but agree with brad that's a problem 18:54:38 devd: this emphasizes how hard it is to download safely on the web 18:55:54 jww: also cross-origin issues 18:56:19 mkwst: it would have to require CORS as well 18:57:11 devd: if we add anchor integrity, we also need to add CORS 18:57:23 francois: or we don't do the reporting 18:57:32 jww: there's lots of challenge here 18:57:47 francois: to summarize: outstanding problems 1) reporting, 18:58:19 ... UI is a question for the browser, "your download is corrupt" 18:58:31 bhill2: layer 8 problem, knowing your download links are broken 18:59:04 dveditz: are we proposing that for a elements, you have download, integrity; enforce, if it fails say it's corrupt? 18:59:14 jww: not sure re telling user 18:59:45 ... if many of these things are corrupt, imagine all the errors to the user 19:00:09 devd: rather than warning, just fail it. no user decision 19:00:21 ... up to UA to handle the failure 19:01:20 dveditz: apart from the warning, do we agree? 19:01:22 jww: not yet 19:01:52 dveditz: what we do with failures, what we tell users, CORS issue 19:01:59 JeffH: what's the use case? 19:02:23 dveditz: you link to downloads hosted elsewhere, on CDNs 19:02:36 bhill2: CDNs for downloading open source packages 19:03:02 JeffH: use case to make statement about the bag of bits, say "these two things need to match when downloaded" 19:03:33 freddyb: regarding reporting; if we have no reporting, it's easier, but there's no way for website to know there's a problem 19:03:46 ... and we don't know hwo users respond 19:04:08 devd: I'm ok with that, because if you're a site using anchor tags for download, you already have that problem 19:04:35 ... so many sites have iframe to do the download, iframe post-messages to say network error, retry 19:04:47 ... that's a better way to do it already 19:05:18 dveditz: add integrity to iframes? 19:05:22 mkwst: I wanted that 19:05:37 ... would be nice for ads, "I audited this" 19:06:08 jww: you can do that with fetch already 19:06:17 ... modulo CORS 19:07:36 freddyb: performance issues if you wait for integrity 19:08:19 devd: integrity for downloads; next steps, consider reporting 19:08:32 ... and if not, just network error if integrity fails. 19:08:41 jww: only if we can find a way to make onerror work 19:09:01 ... I want the site to be able to see that there was a network error 19:09:13 [then we have to do the CORS checks] 19:09:36 jww: let's talk more 19:09:52 JeffH: as CORS is currently wired into SRI 19:10:05 freddyb: this is a navigation 19:10:16 mkwst: navigations go through fetch 19:10:29 ... need to change HTML to pass attributes through 19:11:03 tanvi: you're saying don't do onerror, Dev? 19:11:08 devd: yes, that's easier 19:11:14 ... it fails as a network error 19:11:23 ... but no reporting 19:12:40 devd: as a site owner relying on a CDN for downloads, I get a call if the CDN is down; no call if the CDN gets hacked, today 19:12:51 ... I'd rather get a call in the second instance too 19:13:39 JeffH: as a user, I'd like to see "integrity check passed" 19:13:52 tanvi: you could put it in the console 19:14:14 mkwst: dangerous to add UI that makes some links look better, new incentive for malware authors to decorate their links 19:14:51 JeffH: trying to get to the use case 19:16:11 devd: it gives value to the web app author: users are getting what I sent them 19:16:17 ... it's not a user-facing feature 19:17:03 JeffH: if you've downloaded and integrity fails, you shouldn't save to disk 19:17:23 francois: for safebrowsing, we don't move to download until checked 19:18:04 dveditz: you could send the hash to malware scanning 19:18:12 ... if it's the right format hash 19:18:31 mkwst: if it fails, send the failure to safebrowsing too 19:19:29 francois: if you tell authors to use the hash safebrowsing supports, can speed up the safebrowsing test 19:19:35 [lunch, resume at 1] 19:19:39 rrsagent, draft minutes 19:19:39 I have made the request to generate http://www.w3.org/2016/05/17-webappsec-minutes.html wseltzer 19:20:08 i|[short break]|scribenick: wseltzer 19:20:10 rrsagent, draft minutes 19:20:10 I have made the request to generate http://www.w3.org/2016/05/17-webappsec-minutes.html wseltzer 19:21:00 i|estark: a policy|scribenick: bhill2 19:21:03 rrsagent, draft minutes 19:21:03 I have made the request to generate http://www.w3.org/2016/05/17-webappsec-minutes.html wseltzer 19:38:02 yoav has joined #webappsec 19:59:59 deian has joined #webappsec 20:00:29 artur_janc has joined #webappsec 20:01:03 estark has joined #webappsec 20:07:34 second call for dinner 20:07:45 anyone who didn't rsvp in the morning who wnats to come? 20:07:48 TOPIC: SRI 20:07:52 TOPIC: cross-origin caching 20:08:12 jww: agreement this is a good thing, but there are complexities 20:08:14 dveditz: clarify? 20:08:22 jww: yes, thing is in cache, skip network 20:09:22 dev: CSP bypass / cache-poisoning: attacker injects content with a hash claiming one origin, but it's not really on that origin 20:09:35 ... but browser includes it as-if-from-that-origin because there's a matching cache entry 20:09:59 johnwilander: but if resource has been loaded once from that origin? 20:10:08 ... but any subsequent one you are allowed to take the hash 20:10:32 dev: but then the biggest advantages are lost 20:10:42 jww: there is an advantage, but destroys the bootstrapping effect 20:10:50 johnwilander: but it's "really" the first time 20:11:03 dev: but caching algorithm here is forever 20:11:57 JeffH has joined #webappsec 20:12:15 dveditz: how many hashes do you keep? 20:12:26 dev: probably everyone uses sha256 and just keep those hashes 20:12:28 yoav has joined #webappsec 20:14:47 hillbrad: can we just add this to response to a HTTP HEAD request? 20:15:22 i/TOPIC: cross-origin caching/scribenick: bhill2 20:15:25 dev: we could, but since attack is only for CSP, maybe we can add a new directive that says "I accept this risk" 20:16:12 dev: or just add hashes to CSP policy, then it doesn't matter, you're allowed to use that file anyway 20:16:30 johnwilander: but my load once suggestion was to avoid the privacy issue of seeing if someone's ever been there 20:17:12 francois: also works in reverse, reference files that don't exist on your server and see if they load 20:17:26 jww: yes, it's a timing attack but its a "use once" 20:17:35 francois: not in the case that I referenced 20:18:39 francois: you can return a value that doesn't go into the cache, so you don't destroy the signal 20:19:01 francois: 20:21:49 potential descriptive names: cross origin content-based cache retrieval -- content aware storage policy -- cache aware storage 20:25:38 francois: explains attack at whiteboard 20:25:55 dev: only do it for crossorigin anonymous 20:27:31 jww: but the pattern of what's in your cache may allow fingerprinting collectively 20:27:36 yoav has joined #webappsec 20:27:37 dev: it already works, this makes it easier 20:27:55 dev: attackers can work hard, developers don't want to 20:28:27 francois: not clear this will give us a real boost, real fingerprinting consequence 20:29:48 dev: but there is lots of developer interest 20:30:17 jww: also would be neat to do shared-library style automatic upgrade 20:30:36 jww: also problems with crazy headers Eduardo found, e.g. what if you set cache expiration to something low like 0 20:30:52 ... set refresh url to javascript:doEvil() 20:31:40 ... need to do research on this, don't even know what it means to ignore a header 20:31:59 dveditz: there may be headers like CSP that come with a frame (e.g. if we do this for iframes) 20:32:20 artur: also content-encoding, same response may have different properties 20:32:42 mkwst: would this also require a preimage? 20:32:54 jww: no, you give a real thing but set bad headers on it 20:33:31 hillbrad: is there any data? 20:33:50 mkwst: talked to Elie Burzstein about it, what would it look like with an infinite cache 20:34:22 jww: also about how often do people see something the first time, request something expired 20:35:01 johnwilander: WebKit also has cache partitioning to create distinct caches from different origin requests; a compile time flag that safari uses 20:35:05 deian has joined #webappsec 20:35:05 ... it's a privacy feature 20:35:25 artur: firefox extension back in the day had "safe cache" but it had big performance concerns 20:35:35 francois: tor browser has this 20:37:29 TOPIC: W3C normative reference policy 20:37:34 Zakim has left #webappsec 20:37:51 wseltzer: this is a w3c process / work mode discussion 20:38:06 ... as part of the process when something reaches REC, it and the things it refers to are stable and have gone 20:38:29 ... through open standards processes and have compatible intellectual property status, and are compatible with the open web 20:38:57 ... we do a lot of work here with WHATWG and have good relations with them 20:39:12 ... but Fetch and their HTML aren't being developed by the same processes used at W3C 20:39:24 ... no stable snapshots to assure that links always point at the same place 20:40:09 ... so for SRI going to PR we had to assert that the group would continue to monitor Fetch and make sure that references pointed to the current stat of that document 20:40:48 ... one approach of the i18n group is to take snapshots of the Encoding spec and making references to the snapshots 20:41:08 ... that would be one way to do that 20:41:21 ... and also would give the patent commitments from this group 20:41:51 ... I am trying hard to make this not just be extra work and procedural hurdles but also about assuring that these important 20:42:05 ... components of the stack are things we are looking at and comfortable about the process by which they've developed 20:42:28 ... we need to address these because as further specs move forward we will get these questions from the Director and need 20:42:35 ... good answers on the normative reference policy 20:42:42 dveditz: CSP is for example more dependent on Fetch 20:42:48 -> https://www.w3.org/2013/09/normative-references Normative Reference Policy 20:43:02 mkwst: I think they both have similar relationships, there are mutual hooks 20:43:20 ... we do have normative references to concepts in Fetch to make those algorithms work 20:43:29 ... so I think the relationship there should work 20:43:55 ... HTML is more difficult in a number of ways, involves bidirectional requirements 20:44:09 ... is very duplicative and doing work in one place doesn't flow into another without effort 20:44:25 ... not the same as encoding spec, not just a snapshot where there is one editors draft 20:44:31 ... seems reasonable to do with Fetch 20:44:37 ... less likely that it would work for HTML 20:44:42 dveditz: it explicitly didn't it forked 20:45:57 mkwst: what I have been doing is sending patches to WHATWG HTML and then filing bugs against W3C saying "we landed this over here, please make it make sense in your version" 20:46:14 ... but documents have diverged in various ways that make it difficult for me to assert the same patch has the same meaning 20:46:26 ... I don't want to commit to doing that review twice because it is hard enough to do it once already 20:46:43 francois: and it would be a lot of work to patch W3C HTML 20:46:53 mkwst: we could go the other way, but not the one I've chosen 20:47:15 ... WHATWG HTML is the doc that I read and am familiar with how it works, closer working relationships 20:47:19 dveditz: and things happen 20:47:44 mkwst: I think that model could work for Fetch if Anne is happy with it and somebody volunteers 20:48:02 wseltzer: do we have support for doing that? 20:48:13 deian: I'd like to try, would volunteer to do that 20:48:24 dveditz: is there w3c version of service workers? 20:50:39 bhill2: how much work is involved in porting between formats 20:50:51 mkwst: I think anne would support porting upstream to bikeshed 20:52:17 jww: are there other specs we will have to do this for? 20:52:28 room: DOM, WebSockets, URL.... 20:54:08 dev: has there been concern about SRI and its references for implementers? 20:55:09 deian: I think there is still some disconnect between Firefox implementation and Fetch, e.g. the CSP integration points as described don't work that way yet in Firefox 20:55:42 dev: I don't remember stability of fetch being an issue at implementation time for SRI 20:56:24 johnwilander: I don't know the status of Fetch work, but I can find out; if we have any opinion we'd like to share I can find that out 20:56:58 mkwst: fetch API is behind a runtime flag in STP, but it is more than just the API 20:58:56 TOPIC: WebAppSec and the IETF 20:59:32 scribenick: dveditz 20:59:40 Zakim has joined #webappsec 21:00:01 johnw: I'm referencing shellshock here so you can see the timeframe we started thinking about this 21:00:37 ... 3 common headers that don't cause a pre-flight in CORS, but which aren't restricted with what characters can go into them (in practice) 21:01:01 ... these three headers could be used then to trigger the shellshock vulnerability, for example 21:01:54 ... I talked to the people involved and browser vendors decided to go with a lax character definition 21:02:17 <_devd_> _devd_ has joined #webappsec 21:02:17 ... that goes beyond the RFC of allowed header characters. 21:03:00 ... I would like to see browsers restrict the headers of these three fields specifically, RFC 2616 section 14.1 21:04:45 https://tools.ietf.org/html/rfc7231#section-5.3.2 21:05:19 JeffH: 2616 is obsolete now 21:05:25 yoav has joined #webappsec 21:05:33 mkwst: but the new one is the same thing wrt this issue 21:06:19 john: how should we proceed 21:06:32 https://en.wikipedia.org/wiki/Shellshock_%28software_bug%29 21:07:38 mkwst: I think you're asking that we verify the fetch "safe" headers against a stricter set, not all http headers 21:08:00 john: yes 21:08:14 mkwst: fetch seems like a reasonable place to do that 21:09:00 john: second topic: associated domains 21:09:10 rrsagent, draft minutes 21:09:10 I have made the request to generate http://www.w3.org/2016/05/17-webappsec-minutes.html wseltzer 21:10:11 rbarnes has joined #webappsec 21:10:30 [on whiteboard: { apple.com, icloud.com, filemaker.com} {google.com, google.ru, youtube.com} 21:11:12 ... we are struggling to make SSO work within these groups. Technically SOP says they are separate origins, but they are related with a single account that works across them 21:11:45 ... Users expect things to work across these because in their mind (branding) they are the same company 21:12:24 mkwst: there's already a plist format for 21:12:47 ... Google solves the same problem differently. the Play store keeps a list of origins 21:13:26 ... we could solve the binding problem. My concern is the degree of laxness between them. what features do you want to enable between them? 21:13:28 q+ 21:14:10 john: we could (assuming all sites opt-in) we could allow cookies across them, or our various storage partitions could group 21:14:24 JeffH: we have 9 use cases in the problem statement for DBOUND in the ietf 21:14:43 ... it's a hard problem to get alignment on solutions. 21:14:47 https://datatracker.ietf.org/doc/draft-sullivan-dbound-problem-statement/?include_text=1 21:15:36 ... cookies are just one piece. there's also various UI indicators. The only real notion today is the "effective TLD" (aka public suffix list) 21:16:01 ... maintained by Mozilla. Doesn't track the reality on the web. there's a timelag 21:16:32 dveditz: the list doesn't bind things together, it' 21:16:57 .. it's more to keep sites MORE separated than they might otherwise be (e.g. no blogger.com cookies) 21:17:36 JeffH: it's not just the web, there are other usecases (mail, tls... ) 21:17:59 ... the current scheme (eTLD) doesn't allow one to express those relationships. There are 4 proposals in the DBOUND working group 21:19:00 ... IMHO two are [less workable]. the other two are one from andrew sullivan's and myself, and the other by John Levine who's also been around a long time 21:19:00 as "work in progress." 21:19:05 https://datatracker.ietf.org/wg/dbound/documents/ 21:19:08 ... both approaches put signalling in the DNS 21:19:13 s/as "work in progress."// 21:20:19 ... This is important and needs to get done, but we've been struggling along without it for so long so people are working on the "more important" daily urgencies 21:20:37 artur_janc_ has joined #webappsec 21:20:59 q+ 21:21:01 ... It will take a bunch of work to get it done in terms of spec and convincing people 21:21:04 q+ 21:21:08 q+ on layer-crossing 21:21:27 ... then the question is who will bother to deploy this. Andrew and I are convinced this signalling needs to be in the DNS 21:21:29 yoav has joined #webappsec 21:21:29 rbarnes has joined #webappsec 21:21:33 mkwst: does this require DNSSEC? 21:22:00 JeffH: well, if you want to trust it. I'm not sure I'd put that into the spec because we've been able to muddle along without it 21:22:34 rbarnes: that's because we have TLS, and if you need real security you use that. if you're making security decisions based on it then you will need DNSSEC 21:23:01 JeffH: andrew is confident ICANN will be interested in deploying this, mandating it for top-level domains 21:24:30 ... A huge chunk of what the public suffix list denotes is the distinction between these domains and the public 21:25:10 ... Would places like blogger or appspot pick this up to make the distinctions between delegated authorities 21:26:13 mkwst: I'd like to see the problem statements and who would use this. There's much already baked into Chrome making distinctions between origins 21:26:57 ack deian 21:26:58 deian: I think some of the disjointness and combination you are describing could be denoted by COWL labels 21:27:27 dbound problem statement https://datatracker.ietf.org/doc/draft-sullivan-dbound-problem-statement/ 21:27:41 https://datatracker.ietf.org/wg/dbound/documents/ 21:27:49 ... we currently don't allow delegating privileges [not understanding] 21:28:13 john: that's a new thing. SOP is in place but COWL will let you do additional things? 21:28:15 deian: yes 21:28:47 jww: sounds like your idea is to change the security boundary from "origins" to "organizations". 21:29:04 ... couldn't you do much of what you want with postMessage? 21:29:17 https://datatracker.ietf.org/wg/dbound/documents/ 21:29:29 john: privacy is one of our interests. there are 200 something orgs involved in loading cnn.com 21:30:08 q? 21:30:10 ... if google.com is talking to google.ru it's the same organization, if it's google and apple then they are distinct 21:30:27 jww: it's hard, but you can do this today with postMessage 21:30:47 john: things like cache partitioning can't be done with postMessage! 21:30:51 ack bh 21:31:10 bhill2: I've been thinking about this for over a decade and I'm concerned about the implications here 21:32:14 ... In the beginning I worried about wanting additional priv's (like SSO) would require letting big sit4s like google/facebook set cookies or other things on your domain. market pressure on small sites to comply 21:32:24 s/implications/implications and economic incentives/ 21:32:39 john: no, this is "does facebook own this domain" are they the same 21:33:21 bhill2: we need to make sure this doesn't create financial incentives to collapse the privilege separation on the web. we might end up with very large sets that undo the security boundaries we are trying to set up 21:33:43 ... We need to keep in mind the unintended consequences 21:34:24 _devd_: why isn't icloud.com isn't on icloud.apple.com ? we already have a mechanism for sharing at the domain level 21:34:42 ... why _do_ sites create .ru/.de versions? 21:34:47 mkwst: lawyers 21:35:09 q? 21:35:35 jww: amazon/audible is an example of joining, but there are organizations that divorce, too. Ebay/paypal for example 21:35:43 JeffH: all that is supported in the current drafts 21:35:47 ack wseltzer 21:35:47 wseltzer, you wanted to comment on layer-crossing 21:36:00 wseltzer: I've been watching DBOUND as it struggles to get cycles/traction 21:36:22 q+ 21:36:30 ... Worth spending a little more time if this is meaningful. 21:37:02 john: we could set up our own format "you need to set up a manifest, maybe even signed, and we'll allow you to do more things" 21:37:15 ... and that might become a Safari only thing 21:37:43 mkwst: it would be really helpful if you documented what you want to get out of this. I understand the grouping together, but not what features you are trying to get 21:37:56 https://tools.ietf.org/html/draft-sullivan-domain-origin-assert-02 21:38:00 john: originally we were making more distinctions, not less 21:38:12 ... we don't want to kill Google SSO for example 21:38:35 JeffH: there's also more than one SOP 21:38:47 https://tools.ietf.org/html/draft-levine-dbound-dns 21:38:58 john: 3rd party cookie blocking is a classic example here -- these aren't 3rd parties to each other 21:39:04 ... but to browsers they are 21:39:27 q? 21:39:34 deian: the motivation for parts of COWL are wanting to split maps and search on the same domain, for example 21:39:47 mkwst: depends on which features are being enabled 21:40:26 john: we are not opposed to google.com and youtube.com working together flawlessly 21:40:39 bhill2: what about facebook connect and some random site? 21:40:49 john: those are true 3rd party relationships 21:41:07 bhill2: I'm as concerned about the things you want to break as well as the things to are unbreaking 21:41:21 s/to are/you are/ 21:41:37 ... what are the things that will break that you know about 21:42:01 q? 21:42:16 francois: we have a concept like that in Firefox where for tracking protection we don't block google-analytics on google.com or youtub.com, but on other domains we do block it as a tracker 21:42:19 q+ 21:42:51 jww: we don't need to tie these things together to ... 21:43:50 francois: brad's point was excellent. we have a built in list, but if it's a one-way mapping on sites themselves people could opt-in to all kinds of things 21:44:32 bhill2: if you block things that people want they will find workarounds. sites LIKE analytics, it pays the bills, tells them what's working 21:44:52 q+ 21:45:08 john: there's friction here -- browsers treat these sites as separate and they aren't organizationally or in user's minds 21:45:35 JeffH: this is not what the user wants, this sharing is what "google" wants or "facebook" wants 21:45:58 jww: the user may want the "fast login" enabled by this, without knowing what's underneath it 21:46:28 ... there might be an incentive to group things (by sites) to make things easier or more performant, but makes things less secure for the user 21:47:16 ack JeffH 21:47:18 john: we already see sites that tell users to disable 3rd party cookie blocking because two formerly separate sites joined, but now the user has disabled 3rd party blocking for the entire web 21:47:23 ... this is a real case 21:48:03 JeffH: andrew and i and john levine have been talking about this for a long time as a basic enabler at the DNS level. how it gets used is another matter and up to the implementations at levels above 21:48:48 ... policy is hung on domain names currently, with a crude understanding of what a domain name maps to. setting up this basic concept could enable a bunch of things to be build on top 21:49:39 taking myself off 21:49:40 ack tanvi 21:49:42 q? 21:49:42 ... Establish capabilities at the most basic realm and see what people can do with it. whether or not the "web" invents an equivlent mechanism as you're talking about here, I think it still needs to exist at a lower level too 21:50:17 s/taking myself off// 21:50:19 deian: this seems interesting to me but I'm still not sure how it would be used. some cases my be solved in COWL and some might not 21:50:45 john: look at network traffic after a google login to see what they have to go through to make this work 21:51:18 _devd_: that's the opposite use case -- google WANTS it to be separate, on accounts.google.com, to protect that data from other related domains 21:52:30 john: we are not opposed to SSO on related Google domains, but when we turn the screws on 3rd party cookies they have to go through all sorts of gymnastics -- postMessage and iframes and such -- to make it work 21:53:29 you can only be owned by one domains -- so a tracker couldn't claim to be owned by everyone. 21:53:46 ... we envision a tree structure with apple.com at the top 21:54:17 ... I don't think we wwould go the "relaxing" route, maybe we would, 21:54:39 JeffH: I've heard from google folks that there's magic in chrome to make some of this work for them 21:56:04 wseltzer: sounds like the next steps have to happen at a lower level, the ietf group for example 21:56:16 JeffH: it doesn't have to, the web could have an equivalent 21:56:46 wseltzer: if it's established at a lower level we can then think about how we could safely use it at the web layer 21:57:02 JeffH: I put links in the minutes, comments appreciated 21:57:24 john: but it sounds like this is 3 ? years out? I heard DNSSEC mentioned.... 21:57:24 q? 21:57:48 JeffH: I don't think there should be guidance necessarily that there must be DNSSEC to have a SOFA record 21:58:00 q- 21:58:10 s/SOFA/SOPA/ 21:58:22 ... Ultimately you won't have a flag day to roll this out, but you could build this list by awlking the DNS and build it that way 21:58:37 ... instead of a manual interaction 21:58:55 john; another way to do this is to crowdsource it 21:59:02 JeffH: not sure I understand 21:59:34 john: if you're creating a new restriction, like the Disconnect list -- 'ok this broke, so we crowdsource this exception' 21:59:59 ... could we define a mechanism then the sites could do it officially rather than having to do crowdsourcing it 22:00:34 bhill2: we're at time. I think next steps would be define what privileges you want to enable. heard that request from several people 22:02:23 Topic: Credential Management and Web Authentication 22:02:24 next topic: Credential management and web authentication 22:02:24 TOPIC: Credential Management and Web Authentication 22:05:32 rrsagent, draft minutes 22:05:32 I have made the request to generate http://www.w3.org/2016/05/17-webappsec-minutes.html wseltzer 22:08:38 Present: Dan Veditz, Brad Hill, Joel Weinberger, Emily Stark, Francois Marier, Frederik Braun, Tanvi Vyas, 22:08:41 Mike West, Wendy Seltzer 22:09:30 present+ Artur_Janc, Jeff_Hodges, John_Wilander, Deian_Stefan, Richard_Barnes 22:09:37 zakim, list attendees? 22:09:37 I don't understand your question, wseltzer. 22:09:43 rrsagent, list attendees 22:09:43 I'm logging. I don't understand 'list attendees', wseltzer. Try /msg RRSAgent help 22:09:48 zakim, list attendees 22:09:48 As of this point the attendees have been Dan, Veditz, Brad, Hill, Joel, Weinberger, Emily, Stark, Francois, Marier, Frederik, Braun, Tanvi, Vyas, Artur_Janc, Jeff_Hodges, 22:09:51 ... John_Wilander, Deian_Stefan, Richard_Barnes 22:10:25 mkwst: Credential Management spec 22:10:33 ... Chrome is going ahead with current, imperative version 22:10:36 mkwst: there's a credential management spec for a couple years. Chrome is going ahead with the imperative spec, with good feedback from MattN and others. 22:11:22 ... all the same properties apply. the API is more or less the same as last year 22:11:34 ... fairly generic, high level 22:11:57 ... store, get, require user intermediation 22:12:20 ... shipping in Chrome 51(?), the one right after GOogle I/O 22:12:42 ... a number of external companies interested, kayak, the guardian, clipboard... folks are experimenting 22:12:58 ... seem unhappy it doesn't give them access to everything, and requires a secure context 22:13:14 ... and that it requires asynce fetch() 22:13:39 ... they're excited about the idea of doing it async--hadn't thought about it before--but short term pain due to some of the restrictions 22:13:48 ... seems successful for the folks trying it out 22:14:03 ... hope the UI witll be acceptable to users, will be monitoring it carefully 22:14:26 ... maybe in 6 weeks or so we can give you an idea how it's going 22:15:36 ... We'll talk about it a little at I/O and show examples of it layered on top of existing sites (use fetch, then navigate to the page where it would have posted the login) 22:15:42 bhill2: does this work cross-origin? 22:16:41 mkwst: hm, no. within an eTLD+1 we'll allow a user to choose a stored pasword, but not to automatically submit it until a user has chosen it once 22:17:00 ... we still limit this to the top-level page, not frames, 22:17:21 ... we're trying to be restrictive at first and maybe we can loosen things later 22:17:43 ... the paypal in-frame case is totally legit but we want to move slowly 22:18:16 ... it's difficult to explain to users what's going on -- why is something asking for my paypal credentials on store.com? is it legit? 22:18:39 q? 22:18:43 q+ johnwilander 22:18:53 q+ bhill 22:19:01 tanvi: you said if the user didn't have a login for that domain you'll prompt for it? 22:19:44 mkwst: no, related domains. if you had a login stored for foo.example.com and then bar.example.com wants a credential we'll show the user they have a foo.example.com login and let them choose it 22:20:04 ... not allowing example.com to say "hey, I accept the google.com login!" 22:20:48 q+ johnwilander 22:20:56 MattN: one of my concerns is the multi-login account, when you have a twitter and a facebook account and a site accepts either 22:21:45 ... if you've used one you're only shown one, but it's unclear that if you cancel you coiuld then log in with the other account 22:21:57 ... I don't want to "cancel" I'm trying to log in. not intuitive 22:22:21 mkwst: we're still working on the UI here, talked about offering an "other login" option instead of "cancel" 22:23:35 ack john 22:23:41 ack johnwilander 22:24:05 ... the site is responsible for the UI. if it thinks you're in the log in state it needs to distinguish between "I don't want to log in" vs "I don't want one of these" 22:24:40 john: are you doing something about legacy HTTP auth in this group? Especially log-out is an unsolved problem 22:24:53 mkwst: I agree with richard, the less I think about http auth the happier I am 22:25:26 rbarnes: we just added telemetry and it looks like 1/4 times users use http auth it is an insecure connection 22:25:55 john: I would like a better, but still native support for web authentication 22:26:08 wseltzer: you ought to join our web auth WG then :-) 22:26:15 q? 22:26:39 john: cookies for auth is terrible and we've been trying to save it with HttpOnly and secure and other kinds of things. 22:26:44 q+ 22:27:09 bhill2: is there any API (now or future) to ask "am I eTLD with foo.com" 22:27:21 mkwst: no such proposal, but could be done 22:27:33 telemetry on type="password" security - http://mzl.la/1XxVG9H 22:27:38 mkwst: could add to URL spec 22:27:46 bhill2: currently the way to do that is for a site to pull in it's own copy of the public suffix list, and no guarantee it's the same list used by the browser 22:27:48 ack bhill 22:27:59 JeffH: using this UI does not manifest a browser-implemented browser UI 22:28:11 mkwst: it does! 22:28:26 q+ to discuss the initial login capture 22:28:54 ... the page calls get() in a way that will not show UI (log in if log in available), or it can call it in a way that will show UI to the user using native UX 22:28:58 45% of login pages are over HTTP. 22:29:23 tanvi: pages with logins, or percent of times users submit logins? 22:29:47 pages with logins 22:30:21 tanvi: I ignore http logins, so I see every page on a site with a login box. If I logged in then those boxes wouldn't be there, lowering the count for an arguably worse situation 22:30:22 q? 22:31:15 MattN: one of the other issues is the initial registration. that's still being typed into the form and reduces some of the security benefit 22:31:24 ... since it's not going into browser UI 22:31:51 q? 22:31:54 q- 22:31:59 ack MattN 22:31:59 MattN, you wanted to discuss the initial login capture 22:32:06 ... Part of the point of this API is to have security properties. If we're not helping the initial web registration we're missing a benefit 22:32:35 mkwst: there was the "write-only" proposal that would help, too, but there didnt' seem to be much interest in implementation 22:32:55 rbarnes: write-only? 22:33:17 mkwst: a field that couldn't be read by the page, only submitted by forms. there were more subtlies involved 22:33:37 ... not sure what would happen with service workers (maybe punt? bypass?) 22:34:11 MattN: I still find it unusual how this async login works when sites could just submit a form like they usually do 22:34:39 ... maybe requiring write-only would be a way to add this to the existing flow/model 22:34:54 ... for sites who don't want to use the fetch/navigate approach 22:35:33 bhill2: I was in a conversation with accessibility folks about password fields saying "star star star star". 22:36:33 ... do we need to be concerned about that with this feature as well? 22:37:13 ... how often do people synthesize their own "password-looking" field to work around this or other issues? 22:38:55 tanvi: you're proposing that for password cred. we fill into the existing forms rather than separate UI? 22:39:02 MattN: I think that would be better, yes. 22:39:26 https://w3c.github.io/webauthn/ 22:39:33 mkwst: do we need to integrate credential management with Web AuthN or are we going our separate ways? 22:39:53 JeffH: here's the "unofficial" draft (not FPWD yet, but what we're working on) 22:40:23 ... impedence mismatches I found over lunch, and we both have a credential object but the semantics are different 22:40:51 .... I don't know the full backstory why we pulled out the abstraction we did that was based on an earlier rev of credential management 22:41:04 ... need to resolve within the Web AuthN WG 22:41:36 ... is the WAN interface semantically the same as the credential management interface, I'm not sure 22:42:01 ... We used DOMString in various places that have gone to buffersource and ... 22:42:07 q? 22:42:11 q+ 22:42:25 mkwst: you have a different credential interface that's named the same credential interface -- we can't do that 22:42:37 ... we can merge, or we can rename one of them 22:43:05 ... one reason CM is so abstract is so it could take in things other than just passwords 22:43:33 JeffH: we need to up-level this between the two groups. there's no technically reason they couldn't be more tightly bound 22:43:49 rbarnes: either they need to converge/align, or they need to really diverge 22:44:00 JeffH: agreed 22:44:13 mkwst: at least not using the same names for different things 22:44:36 rbarnes: to what extent does CM add value to asymmetric things like Web AuthN? 22:45:31 mkwst: having CM give you a representation of the credential and have future things hang off it. I'm not sure what's easiest for developers. my first instict was that having one thing for "auth stuff" would be best, but maybe a different API for passwords vs. auth would be better 22:45:45 JeffH: doesn't seem like the impedence mismatch is that high -- they are similar. 22:45:52 mkwst: we should talk 22:45:56 q+ 22:46:05 JeffH: is there value in the convergence? 22:46:33 ... basic state is we're going to FPWD real soon now, call for consensus is out. maybe later June 22:46:49 ... polishing this summer 22:47:02 mkwst: Microsoft is already doing this? 22:47:13 JeffH: they have an implementation in Edge. something that is demoable 22:47:56 ... have you looked at Web Auth N, john? 22:48:27 john: no, we've talked to Mike about CM. this isn't in webkit this is in Safari land, interacting with keychain and so on 22:49:19 ... I've been talking to the folks mike talked to. If this is now an API it will move password management into webkit from "safari" 22:49:39 ... please send/re-send me emails 22:49:52 tanvi: are you interested in doing this? 22:50:31 john: I woiuld say yes, but traditionally this is part of the safari team and as a webkit representitive I can't say so definitively without talking to them 22:50:39 tanvi: is there website demiand for this? 22:51:17 mkwst: I'm talking to a few folks who have imeplemented using this on their sites. I have the impression sites like it when users log in, and making it more frictionless is liked better 22:51:35 JeffH: the notion of federated is a shared secret? 22:52:24 mkwst: no, currently we only save which login the user used last time but we don't log in for them 22:52:35 q? 22:52:46 ... would love to do something like that. need to come up with some kind of trusted browser UI to be used for this 22:53:28 devd: is there a mode I can find out "if the user had a credential that could be used now" 22:53:40 mkwst: no, we don't share whether the user has credentials or not 22:53:46 ack tanvi 22:54:09 ... lots of people want to know that (avoid prompting if there isn't a login already) but I don't know a good (safe) way to share that info 22:54:28 devd: do you know how many users store how many passwords? 22:55:41 MattN: this api is giving sites a new way to interfere with password management by storing bad information. is there a way to block sites that behave badly? 22:55:56 mkwst: we mitigate this by involving the user 22:56:11 MattN: but the user doesn't see the password, it could be junk and not the real password 22:56:24 jww: we have evidence they do this from autocomplete=off 22:57:01 bhill2: ok, next topic 22:57:11 Topic: COWL 22:57:18 fwiw: Firefox password manager fills a password ~15% of the time 22:57:26 https://github.com/w3c/webappsec-cowl/wiki/May-17-F2F-meeting 22:57:29 (and no, i'm not sure what the denominator is) 22:58:00 deian: joel and I talked about what parts of COWL we could implement that would be most useful 22:58:35 ... COWL supports "labels" for information that can segregate it 22:58:56 ... pages can delegate privileges to share information 22:59:24 ... once you read sensitive data you are tainted with that label. read data from "b.com" and you can't leak it back to "a.com" 22:59:36 ... Reduces the authority that the page would have 23:00:52 ... this isn't to deal with malicious code, but to reduce leakage or hacking of well-intentioned origins 23:01:11 ... Our last feedback was not using origins for our labels 23:01:20 rbarnes: not sure where you got that data from but Fx has saved logins for 27% of login forms visited 23:01:29 ... Now we're using origins, unique origins, and @@ 23:02:15 ... The other main feedback is to make the serialized labels look like [origins?] 23:03:03 ... The new model requires an iframe to have taint, so top-level pages can always be navigated 23:03:44 ... when you create a combined iframe you lose access to some APIs 23:04:11 ... that's a simpler deplyment scenario and more backwards compatible if we change it later 23:04:45 bhill2: gives us more future flexibility, we can add new features and say they only apply in certain circumstances 23:05:38 deian: if you do turn on confinement in a page mid-way through it's hard to remove access in the DOM in chrome, easier in Firefox 23:05:49 mkwst: it's easier to reason about if it's more static 23:06:01 deian: I'll keep that in mind sa we refine this 23:06:35 ... briefly looked at the service worker spec. if we think of it as a proxy we can make this work. 23:08:02 ... there are other things brough up -- leaks by resizing iframes. hard to address 23:08:35 devd has joined #webappsec 23:08:45 ... inclined to punt this to a future version since this is a covert channel and there are others 23:09:46 ... if we require it to be static that simplifies the implementation 23:10:08 ... Nicholas is about half way through rewriting the FIrefox patch to the new approach 23:10:32 ... for Chrome if we can intergrate COWL and suborigins we might be able to get some of the features in pretty easily 23:10:54 ... With COWL google.com isn't isolated from google.com/maps 23:12:01 jww: I think it's fair to say sub-origins is a subset of COWL except for the asymmetry 23:12:28 ... there are "bite sized" chunks of implementation we could do, and some of them are similar and we could make them match 23:13:14 deian: we required integrity and condidentiality, but many times the integrity label was empty. I propose that we set a sensible default and not make people specify it all the time 23:13:31 Topic: sub-origins 23:13:36 q? 23:13:38 q? 23:13:41 ack mattn 23:14:17 wseltzer: if we have a new editor we need to get him official as an invited expert 23:14:41 jww: sub-origins is a way of defining a namespace within the scheme-host-port origin tuple 23:15:41 ... we have a draft spec that covers most of the issues that needed to be covered. clearly some areas still need clean up 23:15:43 https://w3c.github.io/webappsec-suborigins/ 23:16:02 ... Chrome has a spec-complete implementation behind a flag (with a couple holes -- cookies,) 23:16:13 ... cookies don't follow the SOP anyway and add complexity 23:17:05 ... there are times when you would want to share cookies. but since one of the usecases is protection from less trusted sections of the same domain we _don't_ want to share cookies. 23:17:36 ... there's no great short-term solution (can provide a doc of the various attempts). Spec presents the option we think makes the most sense 23:18:01 q+ 23:18:05 ... cookies are attached to the same host/port sent over HTTP. but document.cookies would be empty 23:19:09 dveditz: is it a same origin XHR? 23:19:25 ... you could simulate cookies using local storage 23:19:27 jww: no, a suborigin request is not same origin with the same scheme/host/port 23:20:00 ... up to the server to not send cookies to a suborigin it doesn't want that suborigin to know 23:20:17 tanvi: couldn't you just set the cookie locally for that suborigin? 23:20:28 devd: but what network request to you attach it to? 23:21:01 tanvi: key the cookies off the whole suborigin 23:21:20 devd: what do you _send_ with the request? you don't know the suborigin until you get the response back 23:21:43 jww: we think for most cases this is the best option 23:22:01 tanvi: could do a pre-flight and then send only the right cookies 23:22:13 devd: we could, we'll look at feedback on this 23:22:40 jww: we have to trust the server, the server is what sends us the suborigin header 23:23:03 dveditz: what about the origin specified in postMessage? 23:23:12 jww: spec has a serialized format for that 23:23:30 devd: we also have unsafe-postMessage 23:23:44 ... that sends to the whole origin 23:24:15 artur_janc: we tested this on a crazy set of extensions with safe and unsafe cookies 23:25:17 jww: there are a large number of apps where the cookie is totally untrusted and it's fine to see all the cookies. server can specify unsafe cookies and then document.cookie will be populated 23:26:06 artur_janc: still respecting httpOnly, of course. with this approach we found most applications continued to work, whereas blanking document.cookie broke things 23:28:01 jww: there's symmetry with sub-origins 23:28:33 devd: could put a wordpress "admin" area in a sub-origin so a comment XSS can't reach into it and do bad things 23:31:02 q? 23:31:04 ack tanvi 23:31:13 john: I agree it would be nice to segregate cookies, but if you spent all day discussing it there are probably some gems in there we can learn from 23:31:26 jww: I'll take an action item to share our working document 23:32:33 artur_janc: there's the unsfae mode we talked about, and for safe mode we could treat it as a separate origin 23:33:10 john: If I'm example.com with a hardcoded resource 23:33:20 johnwilander: if I'm example.com and have a hardcoded subresource to example.com and move my main page to a suborigin, what happens 23:33:20 ... main page is in a sub-origin. what happens? 23:33:27 dev: fetch will be cross-origin 23:33:36 johnwilander: in safari that will be 3rd party and cookie won't be sent 23:33:50 dev: yes, shouldn't be treated that way 23:33:56 johnwilander: yes but if it's a new origin... 23:34:11 jww: as I said, thanks to cookies suborigin cant be platonic ideal of a new origin 23:34:25 johnwilander: for our case would be equivalent of opening in a clean-slate private browsing tab 23:34:37 dev: but you want it to work with some cookie sharing 23:35:04 dveditz: can we differentiate between domain cookies and host cookies? 23:35:15 dev: for dropbox we don't set a domain 23:35:22 dveditz: you'd have to for suborigins to see it 23:36:00 jww: setting of cookies is also concerning, don't want suborigin to be modifying cookies of another origin which breaks the symmetry you'd like a bit 23:36:17 artur: right now subdomains can mess with your cookies, suborigins are supposed to mirror that someway with less effort 23:36:26 ... we can debate how much more we want out of suborigins than subdomains 23:36:40 wseltzer: why are we not trying to fix the brokenness of cookies? 23:37:01 artur: it is difficult to get infinite subdomains; caching, dns latency, apps stop working on a subdomain because urls break, links break 23:37:09 ... in practice a very breaking change to move to a subdomain 23:37:41 ... having a more lightweight mechanism that lets you do a server side change with a header and options is much lower bar for engineering effort 23:37:51 wseltzer: so trying to port some things over and avoid cookies mess 23:38:07 dev: but I want it to be as much like a completely different origin as possible 23:38:16 ... don't want to recreate the subdomain mess around cookies 23:38:16 s/avoid cookie mess/avoid fixing cookie mess/ 23:38:48 dev: this is being fixed by the host cookie prefix 23:39:59 jeffh: you can't just change how cookies work without breaking the web, I chaired the WG that wrote the RFC 23:40:12 ... we documented behavior, got noncompliance fixed and closed it 23:40:23 ... but going to reopen with Mike's work 23:40:49 jww: so there are efforts to fix, but we're also trying to deal with current world in a backwards compatible way here 23:40:56 ... sandbox was too pure and harmed the ability to use it 23:41:18 johnwilander: would not be surprised if some of us end up betting on password/credential autofill and just wiping cookies every now and then 23:42:04 tanvi: you'll still need to deal with this in v2 23:42:15 dev: browser just treats all requests as cross-origin 23:42:23 tanvi: doesn't seem like a fixable problem 23:42:46 jww: goal was a set of behaviors which we believe will help a lot of applications in a huge number of cases 23:42:57 ... wouldn't be surprised if there were other strategies needed for other applications 23:43:27 johnwilander: have you considered adding an attribute to cookies; only cookies with suborigin attribute get shared 23:43:39 jww: would be excited about that at some point, not sure about v1 23:43:53 dev: impacts adopting, needs more server changes, makes sense to build it up over time 23:44:15 artur: we've spent hours/days on this, and I am 100% comfortable using this on google.com with the unsafe-cookie mode 23:44:26 ... I think we get substantial improvement even with cookies being shared with suborigins 23:44:56 ... good to have ways to make it more strict for some apps, but in practice apps that use http only auth cookies, they will be much safer with suborigins 23:45:25 dev: being able to write to a cookie from a compromised suborigin allows only session fixation, nothing else 23:45:40 ... vs. e.g. getting access to csrf token if document.cookie was readable 23:45:49 artur: current proposal addresses both modes 23:46:13 johnwilander: but Google would be fine with the cookie flag because you could set that and it would work 23:46:26 tanvi: Google doesn't care because auth cookie is http only 23:46:33 deian: why not use different cookie jars? 23:46:43 dev: if you have multiple cookies with same name which do you send? 23:46:53 artur: makes it very unclear to developers what cookie is sent where 23:47:24 ... difficult to reason about what will be sent, which will be readable in document.cookie, may be mismatches from what you see in document.cookie and what actually is sent to server 23:47:39 jww: from an implementer perspective would be extremely difficult to do that in chrome 23:47:58 ... networking stack would need to be involved and taught about suborigins, vs. just as a web platform layer feature 23:48:15 johnwilander: we already have names about such conflicts with subdomains 23:48:19 dev: and they do confuse people 23:49:02 jeffh: yeah, it's gnarly 23:49:45 ... as long as changes are backwards compatible we can make necessary modifications 23:50:00 jww: I don't think choices made about cookies are bad, they are the choices that were made 23:50:37 jeffh: there has been some thought on reworking idea of state management 23:50:44 we can call it crackers 23:50:47 ... through perhaps lack of cycles, etc. 23:52:41 bhill2; there was an "HTTP State Management" WG in the IETF ~3-4 years ago, their work was ultimately irrelevant because no browser vendors showed up and cared 23:52:46 deian has joined #webappsec 23:52:52 ... but you could go look at that and implement if you think ideas were good 23:53:56 bhill2: IETF effort I'm thinking of was HTTP Authentication not State Management 23:54:23 jeffh: and there were some experimental RFCs and it's in the record now and demonstrated that there was little browser interest in having a notion of authentication wedded to the HTTP protocol 23:54:29 q? 00:02:48 TOPIC: SRI 00:03:48 TOPIC: SRI 00:04:00 jww: somebody brought up a use case we can't support today 00:04:09 ... edge CDN, superfast but less well protected as a physical site 00:04:30 ... if not all UAs support that, you don't want to load from that CDN if integrity is not present 00:04:45 ... you can do it programmatically, but has lots of problems 00:04:59 ... it would be cool to have a way to do it declaratively 00:05:09 ... original spec had noncanonical-src which we didn't do 00:05:12 ... freddy is not a fan 00:05:25 rbarnes: can you elaborate what this would look like 00:07:10 bhill2: original motivation was proxies messing with resources 00:07:39 johnwilander: did you consider if adding the hash to the URL 00:07:49 ... if you want it to fail when not supported 00:08:03 dev: no, developer wants it to work everywhere, but only use the sketchy CDN if you know about integrity 00:08:37 jww: issues with programmatic polyfill outweight the benefits 00:09:42 bhill2: it could just be a canary, users with browsers that do it can report to protect users that don't 00:09:52 ... but you could just change based on user agent 00:10:31 dev: you can get preload scanner benefit by doing a link rel preload at the head 00:11:01 dev: or just do UA detection 00:11:17 jww: person with this use case thinks user agent sniffing may work 00:12:14 freddyb: friends who are pentesters like getting more scanners to break with more src-like attributes 00:12:23 dev: also preload scanners won't catch it 00:12:39 francois: also, how people do this in practice, we have two different files supposed to be the same, they will get out of sync 00:12:58 ... may not notice their fallback doesn't really work 00:14:32 johnwilander: UCBrowser is getting really big, is it webkit / blink based? 00:15:20 https://en.wikipedia.org/wiki/UC_Browser 00:18:16 deian: scariest thing is that versions may diverge 00:19:35 rbarnes has joined #webappsec 00:22:22 bhill2: page weight of hashes is a concern given the number of JS files in Facebook 00:22:37 dev: we share that concern, maybe addressing signature support is a better first step 00:23:39 dev: so for module management, and dynamic includes, may need the full list 00:24:37 johnwilander: who would issue certificates 00:25:15 rbarnes: it's your own page, just do a public key, no certificate needed 00:25:28 ... we did something similar for content going into about: content 00:25:48 ... we don't have any way to declare which public key, we just require that everything that arrives is signed with a particular public key 00:26:09 ... defined with martin thompson's signature header: 00:26:25 https://tools.ietf.org/html/draft-thomson-http-content-signature 00:26:43 dev: this is way easier and cleaner 00:27:38 jww: is there merkle tree dovetailing here? 00:27:42 johnwilander: is there replay protection? 00:28:21 ... if there is a vulnerable version with a valid signature 00:28:25 francois: you change the key? 00:28:51 dev: for sites with so much javascript there is a pipeline that makes this trivial 00:29:05 jww: content hashes will still be the easiest for most sites 00:30:20 rbarnes: this means CDN can substitute any file signed (with a vulnerability) 00:30:36 bhill2: so like Artur's earlier statement about issues with CSP and whitelisting for large sets of JS 00:32:49 bhill2: you could put metadata covered by the signature that is checked by a module loading system like require.js 00:33:32 bhill2: should this be coordinated with the new module system for JS on the web? 00:33:43 dev: at some time all this packaging work is irrelevant 00:33:51 ... so signatures are more valuable 00:34:56 bhill2: to prevent file substitution, should modules have standardized metadata that interacts with integrity/signature checks? 00:35:21 dev: attractiveness is not having to reinvent this stuff 00:35:31 francois: but its a very different use case 00:36:12 dev: Merkle? 00:36:28 rbarnes: the merkle proposal is just straight hash, no signatures 00:37:05 dev: merkle lets you stream it in verified chunks 00:37:47 jww: is it better for anything we do today? 00:38:01 dev: for downloads 00:38:27 johnwilander: my immediate thought was: is this going to mirror what we consider active content? 00:38:43 tanvi has joined #webappsec 00:39:26 https://www.ietf.org/proceedings/95/slides/slides-95-httpbis-0.pdf -- Thiomson's preso from IETF-95 on MICE 00:39:33 bhill2: do scripts start to parse before integrity is verified? 00:39:39 JeffH: thx 00:40:05 s/JeffH: thx/thx, JeffH/ 00:40:09 https://martinthomson.github.io/http-mice/ 00:40:26 bhill2: would streaming help webasm? 00:41:59 dev: is there browser interest in mice? 00:42:04 freddyb: too early to tell 00:42:17 francois: not useful for script/style, only if we do other content types 00:42:20 dev: so for download 00:42:45 dev: dropbox can't do it without signatures, too 00:42:51 jww: so we should keep that on the table 00:44:39 bhill2: signature sounds more like a csp directive than sri as it currently looks 00:44:47 dev: could be that, make policy very much smpler 00:45:41 johnwilander: also would make your page not need to change 00:45:49 deian: how often would you need to revoke your keys? 00:45:54 dev: just do it every day? 00:46:29 ... have multiple keys to cover a window of validity 00:48:06 rrsagent, draft minutes 00:48:06 I have made the request to generate http://www.w3.org/2016/05/17-webappsec-minutes.html wseltzer 00:48:14 [adjourned] 00:48:15 rrsagent, draft minutes 00:48:15 I have made the request to generate http://www.w3.org/2016/05/17-webappsec-minutes.html wseltzer 00:48:35 present+ MattN 00:48:38 rrsagent, draft minutes 00:48:38 I have made the request to generate http://www.w3.org/2016/05/17-webappsec-minutes.html wseltzer 00:49:04 present+ Mike_West, Wendy_Seltzer 00:49:05 rrsagent, draft minutes 00:49:05 I have made the request to generate http://www.w3.org/2016/05/17-webappsec-minutes.html wseltzer 00:49:39 i|if I'm example.com|scribenick: bhill2 00:49:40 rrsagent, draft minutes 00:49:40 I have made the request to generate http://www.w3.org/2016/05/17-webappsec-minutes.html wseltzer