-
Notifications
You must be signed in to change notification settings - Fork 30
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Implement functionality proposed in JavaScript Zero #39
Conversation
…roxy object so it can be detected using is_proxy Symbol
…ct to disable exploits of performance.mark()
* Freeze the wrapped object, otherwise, page script can simply 'delete' the wrapper to get original functionality * Introduce a proxy object with the possibility to detect it by is_proxy Symbol Note that both additions increases the fingerprintability of the browser, see: Michael Schwarz, Florian Lackner, and Daniel Gruss. 2019. JavaScript Template Attacks: Automatically Inferring Host Information for Targeted Exploits. In Network and Distributed Systems Security (NDSS) Symposium. See also #39 for more details about the context of this work.
I added
|
In the JS Zero paper? |
I'm not sure to which part was this question aimed at.
EDIT: To be honest I'm not sure where to add this piece of code in case of |
It was about "I added is_proxy symbol, to not wrap objects that were already wrapped once, this ensures that mapping on memory is not done again. More on that can be found in the paper." I am not sure which paper. Do you mean your thesis draft? For more information about the FF bug see #25. As mentioned in the comment, the fix is not working correctly. |
Oh yes. I meant the thesis draft I sent you.
Thank you, I will have a look at it. |
…it will always return as it will be stored in lastValue. (Google maps issue)
Going back to the Proxy matter: b9e72fa wraps the Proxy even if every wrapping is disabled (level 0). Why is that necessary? Anyway, I split b9e72fa into 34cd8d3 and d4bb269 but some code from the original is still missing. Please can you polish this whole threads of commits. It is very time consuming to go the commits one-by-one and fix the same issues again and again. Often, the commits cover more than one atomic change and the commit log does not explain why is the code needed in the presented form. I suggest reading some of the articles about writing commits, such as https://duckduckgo.com/html?q=how%20to%20write%20a%20good%20commit, then, rewriting the history and then pulling again. |
#41 fixes the issue of inserting code when there is nothing to be wrapped. However, I am still concerned that blindly wrapping Proxy is not a good approach. There should be a valid reason to do so. |
Yes I completely agree with you about the Proxy. I will add it as a part of array wrapping, because it is used only there. I will split these changes into separate pull requests, so we can have separate discussion a not everything here. As you said, it will be easier for you to review and then we can merge each pull request as one security measure. |
I created pull request for each of the sub tasks so it is easier to review and comment. |
Paper: https://misc0110.net/web/files/jszero.pdf
Proof of concept: https://github.com/IAIK/ChromeZero
Fixes:
Functionality:
Buffer ASLR was not implemented even though it was proposed in paper.