Le 06/01/2012 06:03, Mark S. Miller a écrit :
Such a built in memoization, whether by boundTo or this enhancement to bind itself, creates a fatal ambient communications channel.

// initSES initialization, freezing all built in primordials other than the true global

    // load Alice as a confined object graph

// load Bob as a confined object graph. Alice and Bob should not be able to communicate // Covert channels mean we might not be able to prevent them from communicating bits
    // But we must certainly prevent capability leaks

    Alice says

        Object.boundTo(Object).foo = capabilityBobShouldntGet;
or
        Object.bind(Object).foo = capabilityBobShouldntGet;

    Bob says

        var HAH = Object.boundTo(Object).foo;
or
        var HAH = Object.bind(Object).foo;

David's WeakMap approach elegantly avoid this problem, because Alice and Bob can only communicate if they already share access to this WeakMap, in which case they could already communicate anyway.
Are you talking about https://gist.github.com/1567494 ?
Because I think I have the same issue. I think I faithfully implemented what Andrea described. Everyone with access to Object.prototype.boundTo has (implicitely) access to the WeakMap, so the capability leak you describe remains in my example, I think.

David
_______________________________________________
es-discuss mailing list
es-discuss@mozilla.org
https://mail.mozilla.org/listinfo/es-discuss

Reply via email to