Secure EcmaScript
Switch branches/tags
Clone or download
Fetching latest commit…
Cannot retrieve the latest commit at this time.
Permalink
Type Name Latest commit message Commit time
Failed to load latest commit information.
demo Replace `<span ... />` with `<span ...></span>` Aug 22, 2018
dist add SES.confineExpr, useful for turning function strings into functions Aug 16, 2018
proposal-realms @ 3da487a
scripts
src
test
.gitignore
.gitmodules switch proposal-realms submodule to newer tc39 repo May 27, 2018
.travis.yml
LICENSE
README.md
package.json

README.md

Secure EcmaScript (SES)

Build Status dependency status dev dependency status License

Secure EcmaScript (SES) is a frozen environment for running EcmaScript (Javascript) 'strict' mode programs with no ambient authority in their global scope, and with the addition of a safe two-argument evaluator (SES.confine(code, endowments)). By freezing everything accessible from the global scope, it removes programs abilities to interfere with each other, and thus enables isolated evaluation of arbitrary code.

It runs atop an ES6-compliant platform, enabling safe interaction of mutually-suspicious code, using object-capability -style programming.

See https://github.com/Agoric/Jessie to see how SES fits into the various flavors of confined EcmaScript execution. And visit https://rawgit.com/Agoric/SES/master/demo/ for a demo.

Derived from the Caja project, https://github.com/google/caja/wiki/SES .

Still under development: do not use for production systems yet, there are known security holes that need to be closed.

Incorporates (as a git submodule) the Realms shim from https://github.com/tc39/proposal-realms .

Install

npm install npm run build

Run the test suite

npm test

Bug Disclosure

Despite this not being ready for production use, we'd like to get into the practice of responsible disclosure. If you find a security-sensitive bug that should not be revealed publically until a fix is available, please send email to security at (@) agoric.com. To encrypt, please use my (@warner) personal GPG key A476E2E6 11880C98 5B3C3A39 0386E81B 11CAA07A . Keybase users can also send messages to @agoric_security, or share code and other log files via the Keybase encrypted file system (/keybase/private/agoric_security,$YOURNAME).

For non-security bugs, use the regular Issues page.