Installations
npm install @endo/far
Score
45.9
Supply Chain
61.9
Quality
90.8
Maintenance
100
Vulnerability
97.3
License
Developer
endojs
Developer Guide
Module System
ESM
Min. Node Version
Typescript Support
No
Node Version
18.19.0
NPM Version
lerna/8.1.8/node@v18.19.0+x64 (darwin)
Statistics
833 Stars
6,094 Commits
72 Forks
27 Watching
389 Branches
48 Contributors
Updated on 27 Nov 2024
Bundle Size
21.43 kB
Minified
7.43 kB
Minified + Gzipped
Languages
JavaScript (99.87%)
TypeScript (0.1%)
Shell (0.03%)
Total Downloads
Cumulative downloads
Total Downloads
564,809
Last day
-24.7%
2,038
Compared to previous day
Last week
-43.7%
10,930
Compared to previous week
Last month
56.4%
56,136
Compared to previous month
Last year
98.5%
312,398
Compared to previous year
Daily Downloads
Weekly Downloads
Monthly Downloads
Yearly Downloads
Dependencies
3
Dev Dependencies
5
Endo
Endo is a framework for powerful JavaScript plugin systems and supply chain attack resistance. Endo includes tools for confinement, communication, and concurrency. These include a shim for Hardened JavaScript, an ECMA TC-39 standards track proposal to make JavaScript a safer and more suitable platform for plugin systems.
Agoric and MetaMask rely on Hardened JavaScript and the SES shim as part of systems that sandbox third-party plugins or smart contracts and mitigate supply chain attacks for production web applications, web extensions, and build systems.
Endo protects program integrity both in-process and in distributed systems. Hardened JavaScript protects local integrity, defending an application against supply chain attacks: hacks that enter through upgrades to third-party dependencies. Endo does this by encouraging the Principle of Least Authority.
Since most JavaScript libraries receive powerful capabilities from global
objects like fetch
or modules like net
, LavaMoat generates reviewable
policies that determine what capabilities will be distributed to third party
dependencies according to evident need, and enforces those policies at runtime
with Endo.
For distributed systems, Endo stretches object oriented programming over networks using asynchronous message passing to remote objects with the Handled Promise API and a Capability Transfer Protocol.
Between remote objects and Hardened JavaScript compartments, Endo makes distributed programs easy to program, and easy to reason about integrity. CapTP frees the programmer from needing to create bespoke communication protocols over message ports or byte streams.
Endo combines these components to demonstrate their use for a confined plugin system in the Endo Pet-name Dæmon and its CLI.
Please join the conversation on our Mailing List and Matrix. Reach out if you would like an ivitation to our meetings:
- We record a weekly Endo Sync video call .
- We recorded a weekly SES video call with the Hardened JavaScript engineering community.
- We now meet weekly with ECMA TC-39 ECMAScript Technical Committee TG-3 Security Working Group.
Ruminations on the Name
- In Greek, "endo-" means "internal" or "within". This is fitting because Endo runs Node within a safe sandbox. This is fitting in turn because Endo is built on the legacy of Google Caja. In Spanish, "caja" means "box" and is related to the Latin word "capsum" and English "capsule", as in "encapsulate".
- Endo is an anagram of Node and Deno. That is to say, we are not Done yet.
- The
endo
command, like thesudo
command, is a "do" command. However, instead of escalating privilege, it attenuates privilege. - Endo lets applications endow packages with limited powerful objects and modules. As they say, you can't spell "endow" without "endo"!
- So, "E.N.Do" forms the acronym "Encapsulated Node Do".
So, just as "soo-doo" (super user do) and "soo-doh" (like "pseudo") are valid
pronunciations of sudo
, "en-doh" and "en-doo" are both valid pronunciations of
endo
.
Principle of Least Authority
The Principle of Least Authority (Wikipedia) states that a software component should only have access to data and resources that enable it to do its legitimate work.
PoLA explained in 3 minutes: Opening Statement on SOSP 50th Anniversary Panel, Mark Miller:
PoLA explained in 15 minutes: Navigating the Attack Surface to achieve a multiplicative reduction in risk, Mark Miller:
Bug Disclosure
Please help us practice coordinated security bug disclosure, by using the instructions in our security guide to report security-sensitive bugs privately.
For non-security bugs, please use the regular Issues page.
License
Endo and its components are Apache 2.0 licensed.
No vulnerabilities found.
Reason
all changesets reviewed
Reason
30 commit(s) and 13 issue activity found in the last 90 days -- score normalized to 10
Reason
no dangerous workflow patterns detected
Reason
license file detected
Details
- Info: project has a license file: LICENSE:0
- Info: FSF or OSI recognized license: Apache License 2.0: LICENSE:0
Reason
security policy file detected
Details
- Info: security policy file detected: SECURITY.md:1
- Info: Found linked content: SECURITY.md:1
- Info: Found disclosure, vulnerability, and/or timelines in security policy: SECURITY.md:1
- Info: Found text in security policy: SECURITY.md:1
Reason
no binaries found in the repo
Reason
project is fuzzed
Details
- Info: JavaScriptPropertyBasedTesting integration found: packages/marshal/test/encodePassable.test.js:5
- Info: JavaScriptPropertyBasedTesting integration found: packages/marshal/test/rankOrder.test.js:5
- Info: JavaScriptPropertyBasedTesting integration found: packages/pass-style/tools/arb-passable.js:3
- Info: JavaScriptPropertyBasedTesting integration found: packages/patterns/test/copySet.test.js:3
Reason
no effort to earn an OpenSSF best practices badge detected
Reason
detected GitHub workflow tokens with excessive permissions
Details
- Warn: no topLevel permission defined: .github/workflows/browser-test.yml:1
- Warn: no topLevel permission defined: .github/workflows/ci.yml:1
- Warn: no topLevel permission defined: .github/workflows/depcheck.yml:1
- Info: topLevel 'contents' permission set to 'read': .github/workflows/typedoc-gh-pages.yml:12
- Info: no jobLevel write permissions found
Reason
SAST tool is not run on all commits -- score normalized to 0
Details
- Warn: 0 commits out of 30 are checked with a SAST tool
Reason
dependency not pinned by hash detected -- score normalized to 0
Details
- Warn: GitHub-owned GitHubAction not pinned by hash: .github/workflows/browser-test.yml:29: update your workflow using https://app.stepsecurity.io/secureworkflow/endojs/endo/browser-test.yml/master?enable=pin
- Warn: GitHub-owned GitHubAction not pinned by hash: .github/workflows/browser-test.yml:30: update your workflow using https://app.stepsecurity.io/secureworkflow/endojs/endo/browser-test.yml/master?enable=pin
- Warn: GitHub-owned GitHubAction not pinned by hash: .github/workflows/browser-test.yml:48: update your workflow using https://app.stepsecurity.io/secureworkflow/endojs/endo/browser-test.yml/master?enable=pin
- Warn: GitHub-owned GitHubAction not pinned by hash: .github/workflows/ci.yml:230: update your workflow using https://app.stepsecurity.io/secureworkflow/endojs/endo/ci.yml/master?enable=pin
- Warn: GitHub-owned GitHubAction not pinned by hash: .github/workflows/ci.yml:236: update your workflow using https://app.stepsecurity.io/secureworkflow/endojs/endo/ci.yml/master?enable=pin
- Warn: GitHub-owned GitHubAction not pinned by hash: .github/workflows/ci.yml:276: update your workflow using https://app.stepsecurity.io/secureworkflow/endojs/endo/ci.yml/master?enable=pin
- Warn: GitHub-owned GitHubAction not pinned by hash: .github/workflows/ci.yml:285: update your workflow using https://app.stepsecurity.io/secureworkflow/endojs/endo/ci.yml/master?enable=pin
- Warn: GitHub-owned GitHubAction not pinned by hash: .github/workflows/ci.yml:304: update your workflow using https://app.stepsecurity.io/secureworkflow/endojs/endo/ci.yml/master?enable=pin
- Warn: GitHub-owned GitHubAction not pinned by hash: .github/workflows/ci.yml:330: update your workflow using https://app.stepsecurity.io/secureworkflow/endojs/endo/ci.yml/master?enable=pin
- Warn: GitHub-owned GitHubAction not pinned by hash: .github/workflows/ci.yml:28: update your workflow using https://app.stepsecurity.io/secureworkflow/endojs/endo/ci.yml/master?enable=pin
- Warn: GitHub-owned GitHubAction not pinned by hash: .github/workflows/ci.yml:34: update your workflow using https://app.stepsecurity.io/secureworkflow/endojs/endo/ci.yml/master?enable=pin
- Warn: GitHub-owned GitHubAction not pinned by hash: .github/workflows/ci.yml:75: update your workflow using https://app.stepsecurity.io/secureworkflow/endojs/endo/ci.yml/master?enable=pin
- Warn: GitHub-owned GitHubAction not pinned by hash: .github/workflows/ci.yml:81: update your workflow using https://app.stepsecurity.io/secureworkflow/endojs/endo/ci.yml/master?enable=pin
- Warn: GitHub-owned GitHubAction not pinned by hash: .github/workflows/ci.yml:121: update your workflow using https://app.stepsecurity.io/secureworkflow/endojs/endo/ci.yml/master?enable=pin
- Warn: GitHub-owned GitHubAction not pinned by hash: .github/workflows/ci.yml:127: update your workflow using https://app.stepsecurity.io/secureworkflow/endojs/endo/ci.yml/master?enable=pin
- Warn: GitHub-owned GitHubAction not pinned by hash: .github/workflows/ci.yml:158: update your workflow using https://app.stepsecurity.io/secureworkflow/endojs/endo/ci.yml/master?enable=pin
- Warn: GitHub-owned GitHubAction not pinned by hash: .github/workflows/ci.yml:164: update your workflow using https://app.stepsecurity.io/secureworkflow/endojs/endo/ci.yml/master?enable=pin
- Warn: GitHub-owned GitHubAction not pinned by hash: .github/workflows/ci.yml:194: update your workflow using https://app.stepsecurity.io/secureworkflow/endojs/endo/ci.yml/master?enable=pin
- Warn: GitHub-owned GitHubAction not pinned by hash: .github/workflows/ci.yml:200: update your workflow using https://app.stepsecurity.io/secureworkflow/endojs/endo/ci.yml/master?enable=pin
- Warn: GitHub-owned GitHubAction not pinned by hash: .github/workflows/depcheck.yml:15: update your workflow using https://app.stepsecurity.io/secureworkflow/endojs/endo/depcheck.yml/master?enable=pin
- Warn: GitHub-owned GitHubAction not pinned by hash: .github/workflows/depcheck.yml:22: update your workflow using https://app.stepsecurity.io/secureworkflow/endojs/endo/depcheck.yml/master?enable=pin
- Warn: GitHub-owned GitHubAction not pinned by hash: .github/workflows/typedoc-gh-pages.yml:26: update your workflow using https://app.stepsecurity.io/secureworkflow/endojs/endo/typedoc-gh-pages.yml/master?enable=pin
- Warn: GitHub-owned GitHubAction not pinned by hash: .github/workflows/typedoc-gh-pages.yml:27: update your workflow using https://app.stepsecurity.io/secureworkflow/endojs/endo/typedoc-gh-pages.yml/master?enable=pin
- Warn: GitHub-owned GitHubAction not pinned by hash: .github/workflows/typedoc-gh-pages.yml:34: update your workflow using https://app.stepsecurity.io/secureworkflow/endojs/endo/typedoc-gh-pages.yml/master?enable=pin
- Warn: GitHub-owned GitHubAction not pinned by hash: .github/workflows/typedoc-gh-pages.yml:46: update your workflow using https://app.stepsecurity.io/secureworkflow/endojs/endo/typedoc-gh-pages.yml/master?enable=pin
- Info: 0 out of 25 GitHub-owned GitHubAction dependencies pinned
- Info: 1 out of 1 npmCommand dependencies pinned
Reason
13 existing vulnerabilities detected
Details
- Warn: Project is vulnerable to: GHSA-grv7-fg5c-xmjg
- Warn: Project is vulnerable to: GHSA-pxg6-pf52-xh8x
- Warn: Project is vulnerable to: GHSA-gxpj-cx7g-858c
- Warn: Project is vulnerable to: GHSA-ghr5-ch3p-vcr6
- Warn: Project is vulnerable to: GHSA-952p-6rrq-rcjv
- Warn: Project is vulnerable to: GHSA-gcx4-mw62-g8wm
- Warn: Project is vulnerable to: GHSA-c2qf-rxjj-qqgw
- Warn: Project is vulnerable to: GHSA-6jg8-7333-554w
- Warn: Project is vulnerable to: GHSA-whpx-q3rq-w8jc
- Warn: Project is vulnerable to: GHSA-9c4h-3f7h-322r
- Warn: Project is vulnerable to: GHSA-25hc-qcg6-38wj
- Warn: Project is vulnerable to: GHSA-cqmj-92xf-r6r9
- Warn: Project is vulnerable to: GHSA-3h5v-q93c-6h6q
Score
6.2
/10
Last Scanned on 2024-11-25
The Open Source Security Foundation is a cross-industry collaboration to improve the security of open source software (OSS). The Scorecard provides security health metrics for open source projects.
Learn More