Skip to content

Commit 23362c0

Browse files
committed
doc: add binary generation threat
1 parent 60363ee commit 23362c0

File tree

1 file changed

+56
-0
lines changed

1 file changed

+56
-0
lines changed

MAINTAINERS_THREAT_MODEL.md

Lines changed: 56 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -99,3 +99,59 @@ or inderictly (builds process/testing)
9999
| **Social media accounts** | - | N\A |
100100
| **Email** (nodejs-sec) | - | N\A |
101101
| **Email** (io.js aliases) | - | N\A |
102+
103+
### Malicious release binary generation in Node.js release/build processes
104+
105+
In this scenario we asume that a malicious actor will include a malicios code
106+
(malware, malicious dependencies, polluted binaries...) in the release binaries
107+
available through the Nodejs.org downloads.
108+
109+
**Vectors:**
110+
111+
* Use priviledge access to GitHub in order to add/modify/pollute the Git History
112+
for the tooling/build repositories (like ansible scripts, etc..)
113+
* Pollute directly machines that are part of the CI/release inventory used by
114+
Jenkins/GH Actions
115+
* Manipulate the CI/release pipelines in Jenkins or GH Actions (add/modify custom
116+
scripts, pollute plugins, overwrite configuration...)
117+
* Swaping out release binaries where they are hosted on nodejs.org web server
118+
* Modifying the cloudflare configuration to change were binaries are served from
119+
* Modifying the vercel website configation
120+
121+
**Related CWEs:**
122+
123+
* [CWE-94: Improper Control of Generation of Code ('Code Injection')](https://cwe.mitre.org/data/definitions/94.html)
124+
* [CWE-73: External Control of File Name or Path](https://cwe.mitre.org/data/definitions/73.html)
125+
* [CWE-829: Inclusion of Functionality from Untrusted Control Sphere](https://cwe.mitre.org/data/definitions/829.html)
126+
* [CWE-353: Missing Support for Integrity Check](https://cwe.mitre.org/data/definitions/353.html)
127+
* [CWE-506: Embedded Malicious Code](https://cwe.mitre.org/data/definitions/506.html)
128+
129+
| Resource | Minimum Access | Description |
130+
|- |- |- |
131+
| **HackerOne** | - | N\A |
132+
| **MITRE** | - | N\A |
133+
| **private/node-private** | - | N\A |
134+
| **private/security-release** | - | N\A |
135+
| **private/secrets** | r | read access to secrets grants access to key resources |
136+
| **nodejs/node** | - | N\A |
137+
| **nodejs/deps¹** | - | N\A |
138+
| **nodejs/build** (GH) | w | write access would allow key scripts, infra to be modified |
139+
| **nodejs/docker-node** | - | - |
140+
| **nodejs/node-core-utils** | - | N\A |
141+
| **npm account** | - | N\A |
142+
| **Jenkins CI - test** | - | N\A |
143+
| **Jenkins CI - release** | w | access to jenkins used for build would allow swapping published binaries |
144+
| **Infra - test** | - | N/A |
145+
| **Infra - release** | w | access to machines used for build would allow swapping published binaries |
146+
| **Build infra** | w | access to machines used for build would allow swapping published binaries |
147+
| **Website Infra** | w | access to machines used for build would allow swapping published binaries |
148+
| **Youtube** | - | N\A |
149+
| **Zoom** | - | N\A |
150+
| **1Password** | r | read access to secrets grants access to key resources |
151+
| **Social media accounts** | - | N\A |
152+
| **Email** (nodejs-sec) | - | N\A |
153+
| **Email** (io.js aliases) | - | N\A |
154+
155+
Notes:
156+
157+
* Orka infra is shared, so any orka admin can modify test/relese machines

0 commit comments

Comments
 (0)