Skip to content
This repository was archived by the owner on Apr 6, 2020. It is now read-only.
This repository was archived by the owner on Apr 6, 2020. It is now read-only.

Some blocked features still accessible. #97

@jcpazos

Description

@jcpazos

Some blocked features are accessible through the prototype property of the blocked object.

As an example:
Blocking all features under "Core functionality" will have the following behaviour:
document.write returns the blocking proxy ƒ anonymous().
document.__proto__.write returns the blocking proxy ƒ anonymous().
document.__proto__.__proto__.write returns the native JavaScript method ƒ write() { [native code] }.

Thus, a simple exploit to bypass the block can be executed like so:
document.__proto__.__proto__.write.apply(document, ["exploit"])

In this case, window.document is an instance of HTMLDocument, and HTMLDocument.prototype is an instance of Document. Both HTMLDocument.write and Document.write exist and are the same function.
What is the methodology used to verify that all aliases of a function have been blocked by a proxy?

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions