16:03:02 RRSAgent has joined #webappsec 16:03:02 logging to http://www.w3.org/2016/05/16-webappsec-irc 16:03:04 RRSAgent, make logs world 16:03:04 Zakim has joined #webappsec 16:03:06 Zakim, this will be WASWG 16:03:06 ok, trackbot 16:03:07 Meeting: Web Application Security Working Group Teleconference 16:03:07 Date: 16 May 2016 16:03:11 Meeting: WebAppSec F2F 16:05:03 yoav has joined #webappsec 16:10:20 tanvi has joined #webappsec 16:11:41 tanvi1 has joined #webappsec 16:23:27 present+ bhill2 16:23:31 present+ dveditz 16:23:42 present+ joel 16:23:49 present+ artur 16:24:00 present+ estark 16:24:05 present+ crispin 16:24:13 present+ rbarnes 16:24:48 present+ francois 16:24:49 emily has joined #webappsec 16:24:49 present+ john_wilander 16:24:50 Agenda: https://docs.google.com/document/d/1KQ_TWHBc1QBn4Xf2yJ7AYDQumuJioaGDfxbzwIJjxOI/edit#heading=h.vvzbltm8twb9 16:24:54 bhill2 has changed the topic to: https://docs.google.com/document/d/1KQ_TWHBc1QBn4Xf2yJ7AYDQumuJioaGDfxbzwIJjxOI/edit#heading=h.vvzbltm8twb9 16:24:54 present+ JeffH 16:24:59 present+ freddyb 16:25:08 present+ raymes 16:25:11 present+ tanvi 16:25:14 jww has joined #webappsec 16:25:16 present+ francois 16:25:25 present+ daniel_bates 16:25:45 dydz has joined #webappsec 16:25:54 estark has joined #webappsec 16:25:57 present+ estark 16:26:01 present+ dveditz 16:26:16 Topic: Welcome 16:26:31 present+ jww 16:26:34 agenda: https://docs.google.com/document/d/1KQ_TWHBc1QBn4Xf2yJ7AYDQumuJioaGDfxbzwIJjxOI/edit#heading=h.vvzbltm8twb9 16:27:06 JeffH has joined #webappsec 16:27:11 present+ 16:27:17 yoav_ has joined #webappsec 16:27:22 bhill2: reviewing agenda 16:27:34 artur_janc has joined #webappsec 16:30:22 rbarnes has joined #webappsec 16:33:58 Topic: CSP2 Feedback from Apple 16:34:23 daniel: recently updated Webkit's CSP code to bring it up to level 2 16:34:32 ... some feedback, proposals for change 16:35:05 ... CSP has the concept of hash sources 16:35:25 ... initially just for in-line scripts and style sheets 16:35:35 yoav has joined #webappsec 16:36:00 ... Mike extended it external scripts and styles, piggy-backing on SRI 16:36:32 ... Could we extend SRI integrity attribute to in-line? 16:37:22 [daniel sketches a policy on the whiteboard] 16:38:35 jww has joined #webappsec 16:38:52 ... problem, inline scripts and styles don't specify which hash algorithm, and meta-tag doesn't specify which script 16:39:11 ... so propose to add integrity attribute, for consistency and efficiency 16:40:03 ... to match between inline script and policy element 16:41:52 mkwst: possibly 2 proposals 16:41:58 ... modify SRI to support in-line 16:42:11 ... only execute this block if integrity attribute matches 16:42:25 ... that seems pretty reasonable 16:42:42 s/in-line/in-line integrity attribute/ 16:42:58 tanvi: XSS you could inject the whole thing 16:43:02 mkwst: yes 16:43:27 ... but separate concepts: integrity-checking the attribute, policy 16:43:53 mkwst: are you asking for this to be a requirement, only use the integrity checking? 16:44:03 ... that's not backwards-compatible 16:44:30 jww: we don't have stats on script-hash 16:45:14 bhill2: if you have a hash-source, everything inline has to have hash or nonce 16:45:51 artur_janc has joined #webappsec 16:46:33 rbarnes has joined #webappsec 16:46:36 q+ 16:46:38 daniel: we could warn people about performance if using multiple hashes 16:46:47 ... but I was hoping we could change the design 16:47:03 q- 16:47:07 jww: we have require-SRI directive 16:47:50 rbarnes: if you have require-SRI and allow integrity attributes on inline 16:48:10 jww: there's a pull-request on SRI to define a new CSP directive for require-SRI 16:48:21 rbarnes: new directive, whatever assets you load must have SRI 16:48:47 mkwst: you cna have multiple digests in an integrity attribute 16:48:53 dveditz: implementation can pick 16:49:00 mkwst: I think they all have to match 16:49:20 john: do we generally say it's up to developers? 16:49:24 crispin has joined #webappsec 16:49:49 ... letting them get into these performance problems? 16:49:57 dveditz: we have implementation notes 16:50:04 mkwst: forward compatibility arguments 16:50:18 ... you have multiple browsers with different hashes available 16:50:36 john: we can at least recommend, way to make performant websites 16:50:45 ... if there's an integrity attribute, go with that hash 16:51:31 bhill2: one of the reasons for this behavior: making it easier to adopt CSP, where you can add a header, but can't modify the content 16:52:01 ... so requiring modification to content defeats some of the purpose 16:52:10 artur_janc: there's a use case for static content, cached 16:52:45 ... making it mandatory would be a big pain 16:53:02 john: if we don't make it mandatory, but if it's there, use it 16:53:29 bhill2: or we could say, the UA will pick the strongest algorithm for which it sees any resource 16:54:07 ... then say to devs if you use a hash, you need to use it everywhere 16:54:45 daniel: if you're talking about pipelines where you can't modify content, you might not be able to update 16:55:08 ... can you elaborate on the difficulties sites might have updating? 16:55:18 ... where it's easier to add a header than modify content? 16:56:12 ... e.g., hearing it's difficult for sites to find and replace 16:56:51 rbarnes: we should ask our guest from Wired 16:57:00 tanvi: could be legacy content 16:57:47 jww: I believe SRI and script-hash define the hashing of different content 16:57:58 ... script-hash is the raw return from fetch 16:58:12 mkwst: after doing transport encoding 16:58:23 rbarnes: seems useful to align 16:58:42 jww: did SRI go a different direction to deal with downloads? 16:58:48 rrsagent, draft minutes 16:58:48 I have made the request to generate http://www.w3.org/2016/05/16-webappsec-minutes.html wseltzer 16:58:52 rrsagent, make logs public 16:59:21 dveditz: originally, there was no overlap 16:59:43 jww: they're defined differently. 17:00:09 dveditz: if you change SRI to cover inline scripts, you don't have a fetched resource 17:00:34 bhill2: re: adding attribute; at some orgs, there's a separation between development and security 17:00:59 ... so having declarative policy 17:01:22 daniel: I'd be interested to get more feedback on developer scenarios 17:01:42 artur_janc: is the main concern performance? 17:02:10 daniel: performance and consistency with Issue 78 17:02:13 https://github.com/w3c/webappsec-csp/issues/78 17:02:32 daniel: not be telling the devs there are two different things to do 17:02:57 tanvi: if you ahve SRI, you have integrity in the script and the policy 17:03:15 daniel: there is a duplication 17:03:53 s/if you ahve SRI/if you have require-sri/ 17:04:29 artur_janc: data, about 25,000 distinct policies; about 250 use hashes 17:04:35 medium is 2 or 3 hashes per policy 17:04:54 ... so not a huge concern for performance at this stage 17:05:41 rbarnes has joined #webappsec 17:05:49 crispin: I'm not the CSP guy, but he said to me, big pain point, that CSP2 is breaking change from CSP1, please don't do that again. 17:06:15 mkwst: CSP3 won't be a breaking change from CSP2 17:06:28 dveditz: spec is written differently, but not expected to behave differently 17:06:44 mkwst: minor changes, * no longer matches non-http schemes 17:06:56 ... no change near the scale of moving workers 17:07:06 daniel: another point, the * 17:07:12 ... good it only applies to HTTP, HTTPS 17:09:21 daniel: we'd like to propose that * be restrictive in the default case 17:09:36 ... propose exception when it's used in img-src and media-src directive 17:09:47 ... propose that for img-src, * match http, https, and data 17:09:57 ... and for media, those and blob. 17:10:17 ... motivated by, as Moz found, lots of sites use data URLs 17:11:08 dveditz: from security perspective, probably not less secure 17:11:17 ... but consistency, it's harder to explain what * does 17:11:57 mkwst: chrome has implemented blocking data and blob, in process of breaking custom schemes 17:12:10 ... possible that will cause problems in webview, wait and see. 17:12:35 daniel: webview on iOS and Mac was one of our motivations 17:12:47 ... applications were depending on data or blob to load content 17:12:52 ... and they were using CSP 17:13:09 ... we also got bug reports from websites 17:13:58 bhill2: FB did have to fix this in our policy 17:14:09 daniel: Another point, plugin and image documents 17:14:41 ... Plugin document: let's say an iframe refs content that needs a plugin 17:15:03 ... we don't load the plugin directly, but create a new page with markup that contains an embed tag 17:15:42 ... CSP spec gives a way for developers to restrict plugin content, object-src directive 17:16:04 ... but if you read the spec in detail, that's not sufficient to block the plugin 17:16:33 ... so web dev would need need to do an addendum on frame-src, further policy restriction 17:16:50 ... so I'd like to propose that object-src directive be defined as mech for devs to restrict all plugin content 17:16:55 ... or we propose another way to do that 17:17:06 ... so devs have a clear way to say "I don't want any plugin content" 17:17:44 ... object-src="non" , block the plugin from loading 17:17:47 crispin_microsoft has joined #webappsec 17:18:02 ... since there are security implications from loading plugins that are black boxes 17:18:21 ... even though iframe constrains the plugin, it's still a potential issue 17:18:37 ... depends on plugin implementers' adherence to best practices 17:19:12 artur_janc: but iframe has a different CSP 17:19:25 daniel: I propose you implement as inheritance 17:20:52 mkwst: wouldn't you have to cascade the policy into every child frame, regardless of whether it's a plugin? 17:21:17 ... if the goal is to prevent plugin execution, you can't do that just by applying to plugin docs 17:21:31 ... since you can still load plugins in context of page loaded in iframe 17:21:50 daniel: if they whitelisted a page that had plugins, yes, they're stuck 17:23:50 [Chris Palmer arrives] 17:23:57 rrsagent, make minutes 17:23:57 I have made the request to generate http://www.w3.org/2016/05/16-webappsec-minutes.html bhill2 17:24:07 related thread: https://lists.w3.org/Archives/Public/public-webappsec/2015Feb/0421.html 17:24:20 mkwst: recalling a conversation with Dev, he was happier with iframe because encapsulation 17:25:23 daniel: flash can escape the frame, and netscape plugin api 17:25:42 jww: still confused about the attacker. why wouldn't they just load HTML page, then load plugin? 17:26:03 daniel: you can block the loading of any page content. 17:27:39 mkwst: are you asking, when creating plugin doc, cascade plugin-types and object-source directive? 17:29:20 ... conceptually, sounds fine 17:29:37 ... suggest filing a bug on github 17:30:27 bhill2: Next topic on the agenda is Secure Contexts. keep going, or move on? 17:31:01 Topic: Secure Contexts and related 17:31:10 scribenick: bhill2 17:31:49 i|reviewing agenda|scribenick: wseltzer 17:31:55 mkwst: spec as-is is fairly complete, a few q's raised by mozilla impl 17:32:06 ... specifically whether a data iframe should be a secure context if embedded in a secure context 17:32:20 ... ff and chrome have different ideas of what a data iframe is wrt origin inheritance 17:32:36 firefox follows html spec and propagates origin to the data iframe, chrome does not 17:32:52 mkwst: also question about what sandboxing means 17:33:19 ... we added an IDL attribute that will hide APIs from non-secure contexts 17:33:34 ... haven't started implementing that in chrome yet, some concern about our ability to make DOM creation fast, 17:33:44 rbarnes has joined #webappsec 17:33:54 ... specifically iframe creation, because the chrome impl is very different than Firefox, specifically it is synchronous 17:34:17 ... if we have to make a decision about feature availability the ability to cache the creation of a new context may be impacted 17:34:36 ... my perspective is that we can go along with what other browsers want to do and then make it fast 17:34:54 ... some feedback on the WebIDL piece would be helpful (not actually part of the secure contexts spec) 17:35:00 ... so basically done, would be happy to publish as-is 17:35:20 ... need to resolve conversation around data: URIs, based on historical implementation details 17:35:36 ... do we know what Edge does? 17:35:46 freddyb: think Edge changed from inheriting to not inheriting 17:35:49 tanvi: what are the reasons? 17:36:07 mkwst: FF has done the work to track who is creating an iframe 17:36:21 ... and iframes are open cross-origin, ability to reach up through parent stack and navigate it 17:36:40 ... ff has done the work to track creation and persist the origin of the creator 17:37:21 dveditz: consistent with srcdoc 17:37:39 mkwst: but in chrome we do allow that with srcdoc, because we know who can set that attribute 17:37:58 dveditz: may be open to changing, we're doing it for historical reasons, aware only FF has this behavior 17:38:13 ... from a security standpoint it is terrible because we treat it differently from everyone 17:39:41 mkwst: mozilla has a solid implementation and has submitted some spec patches 17:40:04 ... only real disagreement is on this fundamental issue of iframe origins, not sure these are blocking on the spec 17:40:20 ... would be happy to issue a call for consensus to move this to next phase 17:40:35 palmer has joined #webappsec 17:40:41 ... if we want to publish in conjunction with the TAG, they signed off awhile ago, should they stamp it? (nobody looking at it since Yan left) 17:41:14 action: wseltzer to ask TAG for feedback on Secure Contexts 17:41:14 Created ACTION-217 - Ask tag for feedback on secure contexts [on Wendy Seltzer - due 2016-05-23]. 17:42:51 johnwilander: some questions here, about context componetns 17:43:02 q+ to mention at some point in the future that Chrome has started locking down powerful features to secure contexts 17:44:35 bhill2: Let's talk about that later today in the new features block. Maybe tab state synchronization noq? 17:44:37 bhill2: maybe we should stick to agenda grouping - issues related directly to Secure Contexts today, vs. new features in the aftenroon block 17:45:11 johnwilander: if another tab that is same origin allows, e.g. a user-bypass certificate warning, should that impact another tab that didn't allow a bypass? 17:45:51 ... if you have e.g. 30 tabs and one or two are compromised 17:47:18 mkwst: regardless of what happens, what happens in an hour when you load it again? 17:47:36 ... we've talked about the idea of segregating origins based on the certs used to load them, haven't come up with anything we are really happy with 17:47:50 chrispalmer: we have a doc we could share but you would laugh at it 17:48:00 q+ 17:48:41 mkwst: we were thinking about taking a hash of the cert and creating a new logical origin based on that, e.g. 17:49:05 tanvi: in mixed content case, old mixed content may never go away, cookies, etc. 17:50:03 jeffh: one item to keep in mind, that secure tab is not just an origin it is a resource instance from a point in time 17:51:45 bhill2: what about cookies, etc. what is the threat model here? 17:52:07 Cryptographic web origins, for your entertainment: https://docs.google.com/document/d/1izo3OeGa1qWjqAPesJW3ZPewFMrUXFnIgGNXZxFR5es/edit 17:52:18 jonhwilander: access to privileged APIs... if a site with a cert warning is not considered a secure context, it doesn't get, e.g. location access 17:52:33 ... but could get that from a same-origin frame that didn't have the warning 17:53:29 rbarnes: if you can set cookies from a non-secure origin, why bother with the distinctions for secure origins? 17:54:06 johnwilander: we'd like to eventually have levels of secure contexts that are much better than just https, e.g. a csp policy with no insecure directives 17:56:07 johnwilander: what about sha1, etc.? 17:56:26 dveditz: we turn off the lock but we don't actually think it's insecure, we are encouraging site developers to migrate 17:56:44 jww: mixed passive content has pretty limited impact.. 17:56:56 mkwst: and we still enforce mixed content 17:57:08 ack bhill2, mkwst 17:57:11 ack bhill2 17:57:14 ack bhill 17:57:17 ack mkwst 17:57:17 mkwst, you wanted to mention at some point in the future that Chrome has started locking down powerful features to secure contexts 17:57:58 johnwilander: it may make more sense later to disallow mixing with other context flags beyond what we have today 17:58:14 q+ worse than cookies/localstorage, one windows could have a direct reference to the other 17:58:16 tanvi: we could change the lock icon everywhere when the change happens in one tab 17:58:39 q? worse than cookies/localstorage, one windows could have a direct reference to the other 17:58:42 deian has joined #webappsec 17:58:50 q+ 17:59:14 estark: could populate the cache... 17:59:20 ack dveditz 17:59:49 dveditz: with a direct window reference, you could manipulate the DOM if they are same origin 17:59:57 ... seems worse than what you're talking about 18:00:15 rbarnes: we do have some ways to set synchronous state across an entire origin, e.g. HSTS 18:00:34 ... so e.g. a require CT directive for HSTS, once one frame sets that it applies everywhere 18:01:00 estark: loading subresources with degraded security does lower the security indicator for the parent in chrome 18:01:02 we could change the lock icon everywhere when mixed active content is loaded or there is a certificate override, but i wouldn't necessary do that for the 1024 bit, sha1, or mixed passive content cases. 18:01:11 ... if subresource goes into memory cache that can propagate to other tabs 18:01:37 ... in chrome if you load active mixed content that downgrades the indicator, will carry over to reloading the page in the same context again 18:01:55 rbarnes: but only in the same process 18:02:43 raymes: same origin documents in different tabs are often in the same process 18:03:35 TOPIC: disallowing mixed trust in EV 18:03:37 rbarnes has joined #webappsec 18:03:51 johnwilander: long topic of discussion where you pay more for the green bar bits in an EV cert 18:04:06 ... only top document needs to be from this org 18:04:16 ... below that only needs to be https, not from same org 18:04:30 ... would like to go to a model where green bar means all content is from one organization 18:04:51 ... propose three steps: 1. console warning + evangelism 18:05:31 ... 2. only EV, but mixed EV across orgs OK 18:05:38 ... 3. only EV from one org 18:06:01 rbarnes: but e.g. bank of america can choose to build their content from multiple sources 18:06:14 ccowan: can still be done on the backend 18:06:26 mkwst: can we get rid of the green bar? we've already done that on android? 18:06:40 tanvi: are we just keeping EV to keep the CAs happy? 18:06:51 rbarnes: I can imagine this coming in as an HSTS directive... 18:07:03 q+ 18:07:21 ccowan: what is the threat actor here? 18:07:37 johnwilander: if you go to a bank site and believe content is coming from bank 18:07:46 ... but coming from 20 servers 18:10:18 bhill2: EV is about making phishing harder, not preventing MITM 18:10:35 jww: this may make security worse because it will be much harder to deploy EV at all 18:11:11 tanvi: maybe this isn't "EV" but some extra security state 18:11:22 wseltzer: agreed, maybe this is a different mechanism 18:12:34 johnwilander: what are we really telling users with EV? 18:12:48 ... would be nice to tell users they are only talking to one organization 18:13:51 ccowan: you can't cryptographically establish at the transport layer that there is non-collaboration 18:14:06 rbarnes: there may be some privacy benefit 18:14:14 artur: site can still do that on the backend 18:14:33 johnwilander: backend is different because of client side state like 3rd party cookies 18:16:27 bhill2: need to understand the use cases that are compelling; this would be a really big change 18:16:59 johnwilander: could still be a CDN, if you give them an EV cert 18:17:25 bhill2: is this a distinction without a difference? 18:17:40 johnwilander: Paypal could buy an EV cert and give it to Akamai 18:17:48 rbarnes: isn't that the same as adding a link? 18:18:00 johnwilander: links can be injected more easily 18:19:01 jeffhodges: you're going into layer 9, so what's the legal benefit, because that's where it's going? 18:19:24 estark: I could see if an org wants to say "only EV content", could send an directive 18:19:37 rbarnes: could see providing an opt-in mechanism like HSTS and see if anybody sees it as useful 18:20:30 ccowan: safari could just provide a new indicator when this happens, unilaterally as an experiment 18:20:41 johnwilander: more valuable when we agree to do this together 18:20:51 jww; some browsers don't agree with EV being more valuable 18:21:32 tanvi1 has joined #webappsec 18:21:53 wseltzer: would help to build up use cases 18:22:15 estark: does this group have a position on standardizing browser UI? 18:22:33 wseltzer: as a general matter W3C tends not to 18:25:34 rbarnes has joined #webappsec 18:26:49 [lunch] 18:27:26 return at 12:15 18:27:34 rrsagent, draft minutes 18:27:34 I have made the request to generate http://www.w3.org/2016/05/16-webappsec-minutes.html wseltzer 19:01:57 estark has joined #webappsec 19:04:27 tanvi has joined #webappsec 19:10:36 dydz has joined #webappsec 19:16:27 palmer has joined #webappsec 19:17:45 TOPIC: CORS and private IP address ranges 19:18:01 tanvi has joined #webappsec 19:18:07 https://mikewest.github.io/cors-rfc1918/ 19:18:18 Modifications to Fetch which are intended to mitigate the risks associated with unintentional exposure of devices and servers on a client’s internal network to the web at large. 19:18:59 mkwst: generally speaking rfc1918 has been around 10-12 years defining a boundary between outside and inside networks 19:19:13 dydz has joined #webappsec 19:19:22 ... would be nice if browsers could enforce this boundary, as well as between the internet and the localhost 19:19:24 q? 19:19:30 q+ 19:19:52 ... bad things that have happened from internet routers being owned, to Project Zero issues with local antivirus products exploitable from the web 19:19:55 ack bhill 19:20:09 ... lots of software runs servers on your local machine 19:20:34 ... tried to put some of this into the Mixed Content spec because it was a little more aggressive than we could be with current deployments 19:20:56 ... and would break things that are legitimate, DropBox, Spotify have local clients that want to talk to the web 19:21:22 ... want to enable these to a limited extent, my opinion is we should only do so with explicit opt-in 19:21:42 ... boundary between internet and local surfaces can and should be stronger 19:22:41 ... we define external requests as any request crossing into a more restricted zone (Internet->intranet->localhost) 19:23:14 ... we require that these requests be identified by a header and that response opt-in by a header with a new preflight mechanism 19:23:21 ... this would apply to navigations, iframe loads, etc. 19:23:32 ... not just async requests like CORS 19:23:54 ... those that are never updated should never talk to the internet 19:24:19 ... would also like the user to be involved, Presto used to have some user consent / notification for these kind of requests 19:24:25 ccowan: why do you think that? 19:24:37 mkwst: my personal opinion, we can argue about that 19:25:03 ... have 20% of an impl in blink right now to play with, only does some kinds of requests and only does before DNS resolution, so works for IP addresses 19:25:29 ... doesn't catch spotilocal.com which resolves to 127.0.0.1, layering in blink makes it blind to what DNS is doing 19:25:43 ... proof of concept proves lots of stuff breaks, which is good, because it is supposed to 19:25:55 ... want to hear if this is a reasonable model to explore before doing the work to break all the boundaries 19:25:58 rbarnes has joined #webappsec 19:26:30 ccowan: Microsoft has blocked this for 5 years in app container. Nobody complained. Only when we added Edge in app container did anyone care. 19:26:46 ... we compromised where the Internet does allow localhost, the intranet does not 19:27:12 ... this inversion exists because intranet has federated auth, and this allows you to potentially auth to the box as the user and escape 19:27:57 dveditz: localhost services are in many cases replacing plugins for native access 19:28:09 ccowan: are there localhost services that a web page has a legit business talking to? 19:28:15 ... for iOS, etc? 19:28:43 dveditz: on android we allow intent URLs which is not quite the same thing 19:30:07 bhill2: we've seen this before on android, debate about whether this can be routed through the backend anyway 19:30:30 ccowan: there are a lot of "naive" localhost services that assume "everything on the box is my friend" 19:30:45 ... there are things that are horribly vulnerable on this surface 19:31:13 ... one question is what about websockets? 19:31:27 mkwst: we can make it work for websockets, I don't know if we do CORS preflight for websockets 19:31:41 ... don't think so because there is an origin check 19:31:56 ... we can strengthen that 19:32:20 dveditz: concerned about defining this as a boundary because they are a way to alias address space 19:32:39 ... there are internal addresses that use static IPs that still should not be considered "internet" 19:32:52 ... it's not the actual inside/outside boundary 19:33:11 mkwst; would like to get Crispin's corporate historical knowledge on this 19:33:24 ccowan: IE had half a dozen zones, Edge has 3, you only see 2 19:33:39 ... there is "trusted sites" 19:35:15 bhill2: historically proxy autoconfig PAC files were the way to express the network topology to clients, "direct" was considered local intranet zone 19:35:15 deian has joined #webappsec 19:35:42 dveditz: do we want to create some allowances for this? 19:35:54 dev: should we differentiate between localhost and intranet IPs? 19:36:36 ... most companies may have a different mapping for e.g. company.com when accessed internally that goes to an internal IP address range 19:37:37 ... also this group usually works on how to enable web app authors to do things more securely, would like to see an opt-in adoption model 19:37:52 mkwst: suggestion is to start by sending a preflight and ignoring the response? 19:38:40 ccowan: on old browser things still work, on a new browser only new software will work that overtly opts in by acking the preflight 19:39:27 dev: we are motivated to do the right thing as authors 19:39:55 ... we have a desktop server (dev is from dropbox) 19:40:29 ccowan: one question was: can we whitelist legacy stuff? answer, yes we can; needs an exit strategy 19:41:30 rbarnes: are we still talking RFC1918 or just localhost? 19:41:55 mkwst: both, localhost is more important to me right now; intranet is harder to define and seems like less excitement about doing it 19:42:13 ... prototype in blink does both, has three concentric zones 19:42:21 ... would be fine to start with just doing localhost first 19:43:03 rbarnes: localhost is more noticed by users, but is also software running locally that can therefore be upgraded vs. some ancient appliance in your local network 19:43:20 ccowan: PM for UAC in a previous job, not a fan of asking user stupid questions 19:43:36 mkwst: don't think it's a stupid question, local software has lots of privilege 19:43:44 ... you are likely to say no, that's generally the right thing to do 19:43:55 ccowan: what is the question you envision? 19:44:08 mkwst: don't know exactly yet.... 19:44:23 ... first kill sync XHR 19:44:58 mkwst: probably something vague: can this website access "internal resources" 19:45:05 rbarnes: "other programs running on my computer" 19:45:37 mkwst: model in my head is whether Origin X can access internal stuff, but wouldn't differentiate between Origin X getting localhost vs. router 19:46:04 ccowan: users very quickly train to not read the prompt and click yes once they've seen it a few times 19:46:23 ... if they don't understand the question they interpret as 'do you want to get your work done' 19:47:02 mkwst: we want to get rid of this prompt, and may not ask for many apps, e.g. Dropbox because lots of users say yes 19:47:18 ... if users say no or don't affirm, maybe we just block without asking 19:47:31 ccowan: why are you asking the user? how do they know? 19:48:07 q+ 19:48:27 ccowan: what value add? 19:48:38 mkwst: less software on local machine 19:49:05 rbarnes: do we ask only if preflight fails? 19:49:15 mkwst: no, thinking user and software have to opt-in 19:49:40 q+ jww 19:49:52 ack dveditz 19:49:57 ack bhill 19:51:04 bhill2: can we do something like the masking done for websockets, XOR key 19:51:50 tanvi: is there a way for a website to say no, never do this? 19:51:55 ... if website doesn't answer? 19:51:59 mkwst: that's a no 19:52:15 ccowan: a prompt is an unhandled security exception surfaced to the user 19:52:32 mkwst: AV software is still capable of exposing itself to danger by just opting in all the time 19:52:44 ccowan: if you install vulnerable software you get what you deserver 19:53:20 ccowan: whether to prompt or not may be outside the spec 19:53:28 ack jww 19:53:28 ack jww 19:53:46 dev: can we just allow websockets because it's a pretty strong handshake already? 19:53:47 q+ 19:54:26 mkwst: maybe that's enough, would be nice to be consistent and have similar guarantees, would boil down to websocket server sending additional header 19:54:44 dev: if we want to allow localhost one problem is that mixed content blocks to 127.0.0.1 19:55:02 mkwst: see list discussion of a little while ago, only reasonable to relax if we do something like this 19:55:18 q+ johnwilander 19:55:35 ccowan: websocket already does handshake, would be unhappy to do more 19:55:55 estark: don't think you need to reflect, just get origin and can choose to accept/respond or not 19:56:10 q? 19:56:30 devd has joined #webappsec 19:56:50 palmer: it seems we can move forward specifying that the user agent should or may put additional blocks and also I'm against the prompt 19:57:06 ... except as an escape hatch when you absolutely have to use some broken old thing, and could avoid it with top nav 19:57:50 bhill2: by "top-nav" do you mean typing in the address bar or clicking on a link in a top-level window? 19:58:02 palmer: hope we can get it enough to where prompting is minimal 19:58:09 ack palmer 19:58:12 ack johnwilander 19:58:24 johnwilander: have we thought about cases with using /etc/hosts ? 19:58:35 JeffH has joined #webappsec 19:58:41 mkwst: give developer some way to assert this is cool (as we do with mixed content, secure contexts) 19:59:01 ccowan: is there any legit case for some protocol besides http? 19:59:10 mkwst: websockets, webrtc 20:00:00 ccowan: could it talk, e.g. smtp 20:00:16 bhill2: how would you make the browser talk that protocol? 20:01:13 bhill2: gopher is a great example of this where you can send arbitrary text 20:01:50 mkwst: is this something we want to work on? what are the contours? 20:02:04 ... sounds like limited subset focusing on localhost is most interesting place to start 20:02:14 palmer, dveditz: like the whole thing 20:02:31 dveditz: don't think we should piecemeal or we won't get there 20:02:43 rbarnes: the rest of the space is way more complex 20:02:53 dveditz: opera has done it and it didn't cause too many problems 20:03:35 wseltzer: maybe W3C can help gather stakeholder 20:03:42 ccowan: yes I want to do it 20:03:54 ... don't object to intranet, but need to understand it more 20:04:50 dveditz: I want to include because router pwnage is bad enough, adding IoT to that soon, should do what we can to isolate them 20:05:14 mkwst: one proposal at TPAC was some sort of handshake whereby we can assert trusted communication between 'stuff' and the browser 20:05:33 ... e.g. netflix wanted to do this with something like SPAKE to talk to TVs on the network 20:05:57 Topic: Guest speaker: Zach Tollman from Wired: Implementer report on adopting HTTPS 20:06:11 scribenick: mkwst 20:06:20 rrsagent, draft minutes 20:06:20 I have made the request to generate http://www.w3.org/2016/05/16-webappsec-minutes.html wseltzer 20:06:22 TOPIC: Guest speaker: Zach Tollman from Wired: Implementer report on adopting HTTPS 20:07:16 Chair: Brad Hill, Dan Veditz 20:07:23 rrsagent, this meeting spans midnight 20:07:28 rrsagent, draft minutes 20:07:28 I have made the request to generate http://www.w3.org/2016/05/16-webappsec-minutes.html wseltzer 20:10:44 zacktollman: [wired switching to https, converted two sections of the site] 20:10:50 zach_tollman: ad challenges, mixed content, CSP data 20:12:06 ... it's complicated. at least 8 groups concerned with ads. 20:12:08 zach_tollman: ad challenges -- 8 different groups involved in serving an ad 20:12:22 back now. 20:12:28 ... Sales (on site), Creative (makes ad), 20:12:43 ... Ad ops. 20:12:56 ... They're the glue; they are aware of deals, bring everything together. 20:13:05 ... They sometimes own QA. 20:13:08 ... Ad tech: 20:13:23 ... They deal with the implementation; the JS we put on the page to deliver ads. 20:13:43 ... Wired is part of Conde Nast; lots of brands; want to be consistent across those properties. 20:13:48 ... Third-party exchanges: 20:13:53 ... We sell space on our site directly. 20:14:09 ... When we can't fill it, we go to these real-time bidding mechanisms. 20:14:18 ... Random stuff shows up on the site. Scary. 20:14:22 ... Verification: 20:14:35 ... Folks don't trust us, so they install third-party verifiers. 20:14:39 ... QA: 20:14:45 ... Brand: 20:14:49 ... Me and my team. 20:15:01 ... We take all of this stuff and make sure it works together. 20:15:16 ... Opportunities for success (failure)! 20:16:50 ... Incentive Misalignment 20:17:29 ... Folks building ads might not be able to QA all the pieces, and might not care to the same level about all the pieces. 20:17:40 ... Trackers might not work over HTTPS, for instance, though the ad itself does. 20:17:55 ... We're trying to close the feedback loop to the extent possible. 20:18:10 ... We noticed in the first few weeks that ads were rolling out and _looking_ correct. 20:18:24 ... But non-visible errors were missed. Tracking pixels, etc. 20:18:40 ... Those are hugely concerning, because it's directly relevant to revenue. 20:19:19 ... One of the best things we did was to stage the rollout: just went for it on one section of the site. 20:19:25 ... Working on tooling to make this more obvious. 20:20:04 ... Chrome's security panel does a great job of highlighting insecure origins. 20:20:16 dveditz: Why didn't the pixels load? Aren't they just images? 20:20:58 zach: Maybe an issue in particular browsers? Safari behavior fixed now in TP? 20:21:12 ... Could be a tracking script as well, which is blocked everywhere. 20:21:32 ... Mixed Content issues: 20:21:38 ... CSP makes life a lot easier. 20:22:33 ... Here's our CSP. We're pretty granular with directives so we get good reports in all browswer. 20:22:43 ... Some don't send 'violated' directive. 20:22:52 ... We're doing 'unsafe-inline'/'unsafe-eval'. 20:22:59 ... We add in blobs: for ads. 20:23:24 ... We use 'block-all-mixed-content'. Only in Chrome, landed in FF, hasn't hit stable yet. 20:23:50 ... We can only push forward as an org if things fail in a spectacularly visible way. 20:24:30 ... We use 'upgrade-insecure-requests', because 'block-all-mixed-content' only works in Chrome. 20:25:20 ... 'upgrade-insecure-requests' has an issue with redirects. 20:26:24 ... Another issue with 'upgrade-insecure-requests' something with a frame and document.write and another frame? Will reduce for a bug report. 20:26:24 it sounds like they use and prefer upgrade-insecure-requests, and then fallback to block-all-mixed-content for things that upgrade doesn't catch for wahtever reason 20:26:47 ... CSP reporting makes it possible to move to HTTPS. Without report-uri, we'd have nothing. 20:27:13 ... 'effective-directive' is super important. 20:27:29 ... Not all browsers are sending it, workaround is to be super-specific in the policy. 20:27:38 ... 'block-all-mixed-content' is helpful, if redundant. 20:27:47 ... 'upgrade-insecure-requests' is amazing. 20:27:50 ... Problems: 20:27:56 ... Inconsistencies across browsers. 20:28:09 ... Violation reports vary quite a bit across browsers. 20:28:15 ... Safari TP is up to spec, yay. 20:28:21 ... Firefox has closed bugs. 20:28:24 ... Blink is strong. 20:28:34 ... Inconsistencies are going away, which is wonderfully helpful. 20:28:59 crispin: You didn't mention Edge? 20:29:08 zach: We don't have a ton of users using Edge. 20:29:20 ... Edge clustered with Firefox; very similar reports. 20:29:30 ... I can look it up again and follow up with you. 20:29:39 palmer has joined #webappsec 20:29:42 ... Just not a lot of folks using it on Wired. 20:30:14 crispin: What do you do with CSP for edge, given breaking changes? 20:30:22 zach: For basic violations, it's working. 20:31:34 ... 20:31:46 ... "Good" thing about our policy is that it's not terribly restrictive. 20:31:51 ... So things just generally work. 20:31:53 https-secured portion of Wired webapp: https://www.wired.com/category/security/ 20:33:36 dev: What was your experience with redirects and reports on redirects? 20:34:15 zach: We did see issues with ad providers pushing redirects that aren't upgraded. 20:34:43 ... The report should help you fix that problem. Let's talk about that in a bit. 20:35:01 ... UIR: Not all assets can be upgraded. 20:35:14 ... Some advertisers have distinct hosts for HTTP and HTTPS. 20:35:28 ... Wired has a mixed content issue right now with sponsored content we sometimes run. 20:35:42 ... Issues can be hard to track down. 20:36:11 ... I review the hotspots in reports. Looking at blocked URI popping up. Usually related to a specific campaign. 20:36:13 artur_janc has joined #webappsec 20:36:34 ... I see the 'document-uri', I visit that document, but I don't see the issue. 20:37:05 ... A problem I have is that the 'blocked-uri' will only give you the origin if it's cross-origin to the protected resource. 20:37:27 ... It would be great to get more data. I understand the security concerns with paths and queries, but it's really useful data. 20:37:39 ... It takes hours to track down. 20:38:12 john: Fragment not reported. For single-pages sites, everything looks the same. 20:40:06 ... 20:40:20 ... 20:40:26 ... 20:41:07 ... 20:41:24 zach: Not all browsers upgrade. 20:41:26 ... WebKit. 20:41:28 ... Edge. 20:41:37 ... They don't do 'upgrade-insecure-requests'. 20:41:58 ... To deal with those browsers, we set HSTS with a short lifetime (2s). 20:42:07 ... That glosses over mixed content issues with wired.com. 20:43:26 Strict-Transport-Security: max-age=2 20:43:28 ... (By upgrading same-origin passive mixed content to HTTPS) 20:45:28 rbarnes: We're kicking around the idea of reversing HSTS and mixed content checks. 20:45:47 ... It would be interesting to understand what the impact would be. 20:45:49 ... https://mikewest.github.io/hsts-priming/ 20:46:06 zach: Sounds helpful? I just want everything to automatically work. 20:46:23 rbarnes: Are any advertisers doing HSTS? 20:46:28 zach: I haven't seen that. 20:46:33 ... I saw a CSP header once. 20:46:38 ... But not HSTS. 20:46:56 ... Verifiers are the ones we see most frequently. 20:47:10 ... There are only a handful of players, so if they did that, it would be great. 20:47:13 ... Data! 20:48:17 ... Browser extensions blow up the number of reports. 20:48:24 ... We're filtering them, same as everyone else. 20:48:30 ... 300-400 unique URIs a day. 20:48:52 ... Removed those that are only happening ~10 times, and removed known data. 20:49:12 ... Brings it down to a more manageable set of reports. 20:49:23 ... Metric for success is violations per page view. 20:49:36 ... 0.05 would be nice, though arbitrary. 20:50:13 aaj: Are you dropping reports generated by extensions? How do you implement that. 20:50:28 zach: We evaluate based on blocked-uri. 20:51:00 ... Strip out unknown protocols, 'chrome-extensions:', etc. 20:51:13 dev: That works for extensions, but superfish is hard to detect. 20:51:26 ... We just dropped everything that contains 'superfish'. 20:52:31 zach: I want to categorize reports, and ensure that "important" reports are triaged. 20:52:43 dveditz: Did you use report-only first? 20:52:49 zach: I went straight to blocking. 20:53:03 ... Difficult to serve an HTTP page with HTTPS content, so I would have gotten a lot of noise. 20:53:15 ... So went straight to blocking things in our staging server. 20:53:26 ... report-only was more trouble than it was worth. 20:54:29 Devd__ has joined #Webappsec 20:55:42 zach: WebKit generates a lot of reports. Then Chrome. 20:56:14 dev: What UA parser are you using? 20:56:22 ... Lots of things show up as Chrome, but aren't actually Chrome. 20:57:01 zach: I'm not sure how some UAs are being reported. Area to investigate further. 20:57:10 https://www.buzzfeed.com/jasonreich/buzzfeed-and-https just got posted too 20:58:37 ... browser mapping> 20:58:42 ... 20:59:40 ... WebKit generates most violations per page view. 20:59:43 ... Then Edge. 21:00:15 ... Alerts for violations are important. Looking into that internally. 21:00:34 daniel_bratel: Can you elaborate on the difficulty of auditing your website and fixing links. 21:00:42 zach: Yeah. It's difficult and tedious. 21:01:00 ... We got to a point where we thought we were done. 21:01:07 ... Lots more variance in the real-world. 21:01:16 ... Acting on a violation report is incredibly difficult. 21:01:27 ... I wanted to find the three top-offending ads per day. 21:01:33 ... That took hours. 21:01:46 daniel: So you're able to fix your own content? 21:01:49 zach: Yes. 21:02:06 daniel: Why are the advertisers dragging their feet in adding the "s"? 21:02:17 zach: I think it's a human problem. 21:02:24 ... People have to figure out which ad is responsible. 21:02:29 ... In-house is easy and fast. 21:02:30 ... 21:02:36 ... Third-parties are difficult. 21:02:54 daniel: You could choose not to work with those third-parties? 21:03:08 zach: I would like to be able to highlight which agencies are dropping the ball. 21:03:17 ... Data don't have enough specificity. 21:03:44 ... Want to create accountability. 21:04:06 tanvi: Have you considered sandboxing ads? 21:04:17 zach: No. 21:04:35 ... What would be the value of doing that? 21:04:42 tanvi: Would restrict access to DOM. 21:05:01 zach: Would it help with HTTPS? 21:05:04 tanvi: No. 21:05:20 tanvi: Do you want 'block-all-mixed-content' or 'upgrade-insecure-requests'? 21:05:36 zach: I want upgrade, but to block everything that can't be upgraded. 21:06:36 john: We on WebKit hear you! 21:06:52 ... The third-party part is important, means that HSTS isn't at play here and you need 'upgrade-insecure-requests'. 21:07:07 ... I've heard there could be ~1000 actors in one ad being displayed. 21:07:18 ... Even if you could get HTTPS right, there's a lot of issues including malvertising, etc. 21:07:30 ... Do you have something about that on your roadmap? 21:07:43 zach: No, but I'd like to do something about that. 21:08:06 ... Alternate models are interesting. Selling direct to consumer, for instance. 21:08:14 ... Ad blockers are scaring publishers. 21:08:19 ... Need to diversify. 21:09:28 bhill2: One thing that might help would be to use automation APIs to load pages, collect violations off the console (webdriver, selenium, etc). 21:09:47 ... Set up a server to make a request as soon as the creative is submitted, generate reports. 21:10:06 zach: We have a project aimed at performance, using PhantomJS. 21:10:12 ... Might be able to lump in HTTPS as well. 21:10:15 ... Automation is great. 21:10:29 JeffH: Do you give a CSP to the advertisers? 21:10:40 zach: No, but that's a great idea! 21:10:51 JeffH: What are the differences between browsers? 21:11:03 ... Are these violations bugs in the browser, or bugs in the advertisers? 21:11:24 zach: I'm still trying to make sense of the data. 21:11:32 ... I was surprised to see so many reports from Chrome. 21:11:43 ... Not sure if it's a UA string misrepresentation or bugs in the browser. 21:12:29 ... 21:13:04 daniel: Is there no way to associate a report with the request for the original webpage? 21:13:10 zach: Sometimes yes, sometimes no. 21:13:14 .... Terrible puns.... 21:13:30 ... We turned on HTTPS for 24 hours in our business section. 21:13:53 ... We had targeted ads in business. We knew they would have run of site, so we knew they would be the only ad. 21:14:11 ... In those cases, we can easily identify. 21:14:24 ... But there are lots of complexities and randomness. 21:14:36 ... Targeting makes it difficult to find bad ads. 21:14:49 daniel: 'unsafe-inline', 'unsafe-eval'? 21:14:56 zach: I'd love to drop them, but ads use them. 21:15:01 ... Thinking about 'unsafe-eval'. 21:15:08 ... We need 'unsafe-inline'. 21:15:40 ... Hard enough to get the 's', once we've done that we can move to more interesting problems. 21:16:01 jww: How successful has outreach to ad networks been? 21:16:12 ... Is it at all successful, or is UIR the only thing that works? 21:16:18 zach: Moderate success? 21:16:26 ... Mostly focused internally, working on QA. 21:16:39 ... QA was focused on visual feedback, so missing the most important parts. 21:16:43 ... Beefing up QA internally. 21:16:50 ... Next, we need to reach out more to advertisers. 21:17:07 dveditz: Have you seen 'unsafe-dynamic'? 21:17:13 zach: No, but I saw it on the schedule. 21:18:06 ... 21:18:19 aaj: This is a valuable policy, it just doesn't defend against XSS. 21:18:31 john: Ad bidding is cross-site scripting. 21:18:41 zach: A sanctioned XSS. 21:18:46 jww has joined #webappsec 21:30:54 dydz has joined #webappsec 21:31:20 if they know to send a subscribe request 21:31:39 s/if they know to send a subscribe request// 21:31:40 crispin has joined #webappsec 21:32:05 yoav has joined #webappsec 21:32:47 rbarnes has joined #webappsec 21:32:48 rrsagent, draft minutes 21:32:48 I have made the request to generate http://www.w3.org/2016/05/16-webappsec-minutes.html wseltzer 21:33:51 TOPIC: Permissions in Context 21:34:26 bhill2: Permission Delegation to Iframes + CSP embedded enforcement, Feature Policy, and Secure Context Components 21:34:31 estark has joined #webappsec 21:35:38 palmer: We have a proposal for permission delegation. 21:35:56 ... TL;DR: https://noncombatant.github.io/permission-delegation-api/ 21:36:09 ... What do we do when example.com embeds Google Maps? 21:36:16 ... There's a permission request for geolocation. 21:36:24 ... But what do we say to the user? 21:36:35 ... Does 'example.com' want the permission? Does 'google.com'? 21:36:47 ... Does the permission stick to the pair? To the main page? To the embedee? 21:37:01 ... How long should the permission stick? 21:37:23 ... If you grant `maps.google.com` permission in the context of `example.com` should it stick when loaded under `example.net`? 21:37:27 ... We did some studies. 21:37:38 ... People in the world don't understand composed applications. 21:37:51 ... The location bar is about the limit of what people can handle. 21:38:09 ... Not a fan of trying to surface composition via the omnibox. 21:38:20 ... Leaves us with some irreducible complexity. 21:38:35 ... We'd like to give the least privilege to the most specific principal. 21:38:45 ... But there's a limit to the principals that folks can understand. 21:39:11 ... Studies corroborate that. 21:39:23 ... Omnibox is already a simplification. 21:40:06 ... This simplification ~matches the status quo on other platforms. 21:40:29 ... Android apps grab data from everywhere. Might be composed, who knows? Can't surface to users. 21:41:02 ... Loading .so doesn't change SID. Still running as me after loading `goats.so`. 21:41:11 ... We're proposing to tie the permission grant to the embedder. 21:41:25 ... Violates the principal of least privilege. 21:41:42 ... But it's something that the user of `example.com` can have a chance of understanding. 21:41:52 ... The usual means for revoking the permission still apply. 21:42:57 ... We think the proposal as it is now is the best thing that's possible in the world we have with the people we are. 21:43:09 ... But, we know that reasonable folks can and do disagree. 21:43:22 ... We'd love to manage this tradeoff. Perhaps there are other options? 21:43:45 ... Maybe we can specify the mechanism, and leave UX to browsers? 21:43:49 ... Prove it out in the field. 21:44:15 ... Also, this ties into the purple box idea that John raised earlier. 21:44:30 ... "Wouldn't it be cool if we could promise to people that X is _not_ a composed application?" 21:44:46 q+ 21:44:59 ... It feels true that people would want it if they understood it? More research is warranted. 21:45:14 ... Composed apps have always posed a problem. Only on the web are we even thinking about going to a better place. 21:45:23 ... Which is why I love the web. 21:46:12 ... Composed applications that do use special APIs that require permissions are already below our depreciation threshold. 21:46:39 ... But we think it's super-useful, but now seems like a good time to standardize a better way of giving users understandable control. 21:46:49 ... Now seems like a good time to act. 21:47:21 bhill2: The numbers are low today? I mean, maps is everywhere? 21:47:44 raymes: Maps is a bad example for numbers, because the embedder passes in a location when loading the map. 21:47:55 john: There are ~3 things that make these cases different: 21:48:00 ... Native apps vs web apps. 21:48:10 ... 1. Native app is a static relationship. 21:48:15 palmer: Not really? 21:48:34 john: You can pull things in, but not in the same way or same frequency as the web. 21:48:38 (npm lol) 21:48:44 ... 2. Apps store. Trusted place to get the app. 21:49:05 palmer: My linux music player will crawl all over looking for a .so to open a file. 21:49:14 john: Sure, for desktop. Not for mobile. 21:49:19 ... 3. Apps are signed. 21:49:31 palmer: The permissions we're talking about are the ones that require HTTPS, which is a rough analog. 21:49:44 john: Except that the signature is over the content. 21:50:15 ... given those things, we would like to fix signatures, for instance. 21:50:23 ... require CSP without 'unsafe-*' 21:50:26 q+ ccowan 21:50:29 q+ artur 21:50:33 ack cc 21:50:58 ccowan: I've spent ~20 years with least privilege. It's a bad idea to drill down too far in that direction. 21:51:15 ... In this case, it's a question of giving privilege to X or Y or XY. 21:51:19 ... Who cares? 21:51:30 ... If you don't give permission, they still have your location. 21:51:42 ... Users don't care. 21:51:45 palmer: I think they do care. 21:52:01 ... One company that has yelled at us about this serves an iframe that uses getUserMedia. 21:52:27 ... Our proposal is for anything that requires a permission prompt. 21:52:40 ccowan: The responsibility belongs to the embedder. 21:52:45 palmer: Yup. We think that too. 21:52:55 ... Embedee only gets permission upon explicit delegation. 21:52:59 q? 21:53:09 ... Zach talked about auctions. 21:53:21 ... It would be cool if Wired could simply not delegate permissions to ads. 21:53:28 ... They can't do that today. 21:53:47 q+ to ask Joel to enumerate the thing we're dropping from non-secure origins. 21:53:55 ... Relates to Feature Policy. 21:54:04 q- 21:54:16 ... Maybe can fold into that proposal. 21:54:17 q+ do embedees lose ability to ask? 21:54:26 aaj: What's the proposal? 21:54:26 q+ 21:54:31 ack artur 21:54:40 palmer: