
es-lab
Please note: the project has been moved to GitHub
- The core of a SES (Secure EcmaScript) runtime. Sources at caja. (Old sources at es-lab.)
- DirectProxies a wrapper library that implements the new Direct Proxy API on top of the older Harmony Proxies API. Tested in Firefox 8.
- Membranes to be built on ES-Harmony Proxies and WeakMaps.
- traits.js, a traits library for ES5 that is backwards-compatible with ES3.
- An OMeta-based parser for Ecmascript 5, written in Javascript, generating a JsonML-based AST.
Ecmascript 5, proxies and traits are discussed in these talks.
Script Compartments
These abstractions compose well. For example, in an SES frame as initialized by initSES.js
var compartment1 = makeMembrane(cajaVM.eval);
var eval1 = compartment1.wrapper;
var gate1 = compartment1.gate;
var badCode = //... obtain potentially malicious code from somewhere ...
var result = eval1(badCode);
//... use result ...
gate1.revoke();
//... contents of compartment gone and collectible ...
A membrane around an SES eval
creates a compartment in which one can run potentially malicious code, confident that the resulting potentially malicious objects can interact with the world outside this compartment only as permitted by the objects you provide them. Once the compartment is revoked, not only is all their connectivity severed, it is severed in ways the garbage collector can recognize. Given a good enough collector, these hostile objects cannot even continue to occupy your memory.
On browsers supporting SES and the Uniform Messaging Policy, we can mashup code from multiple origins without the usual vulnerabilities.
News
Project Information
- License: Apache License 2.0
- Content License: Creative Commons 3.0 BY
- 51 stars
- svn-based source control
Labels:
Javascript
ecmascript
harmony
catchalls
ses
Object-capabilities
security
parsing
verification
jsonml
ometa
traits