On Mon, Nov 11, 2013 at 12:57 AM, Ryosuke Niwa <rn...@apple.com> wrote:
> On Nov 11, 2013, at 3:56 PM, Adam Barth <w...@adambarth.com> wrote:
>> Can you help me understand what security properties your proposal
>> achieves and how it achieves them?  I spent some time thinking about
>> this problem a couple of years ago when this issue was discussed in
>> depth, but I couldn't come up with a design that was simultaneously
>> useful and secure.
>>
>> For example, your proposal seems to have the vulnerability described below:
>>
>> == Trusted container document ==
>>
>> <link rel="import"
>> href="https://untrusted.org/untrusted-components.html";
>> importcomponents="name-card">
>> <body>
>> <name-card ></name-card>
>>
>> == untrusted-components.html ==
>>
>> <template defines="name-card" interface="NameCardElement">
>> Name: {{name}}<br>Email:{{email}}
>> </template>
>> <script>
>> NameCardElement.prototype.created = function (shadowRoot) {
>>  var victim = shadowRoot.ownerDocument;
>>  var script = victim.createElement("script");
>>  script.textContent = "alert(/hacked/);";
>>  victim.body.appendChild(script);
>> };
>> </script>
>>
>> Maybe I'm not understanding your proposal correct?  If this issue is
>> indeed a vulnerability with your proposal, I have no doubt that you
>> can modify your proposal to patch this hole, but iterating in that way
>> isn't likely to lead to a secure design.
>
> The owner document of the shadow root in that case will be that of the 
> component; i.e. https://untrusted.org/untrusted-components.html in this case.
>
> In other words, we’re inserting a security boundary between the host element 
> and the shadow root.  The shadow root in this case is a funky node object in 
> that it has its host element in an entirely different document.

Was that written somewhere in your proposal and I missed it?

Adam

Reply via email to