Skip to content

Commit 58c5dbd

Browse files
RafaelGSSmhdawsonanonrigsxaUlisesGascon
authored
doc: add binary generation threat (#1433)
* doc: add binary generation threat * doc: add malicious docker images threat * Update MAINTAINERS_THREAT_MODEL.md Co-authored-by: Yagiz Nizipli <[email protected]> * Apply suggestions from code review Co-authored-by: Stewart X Addison <[email protected]> Co-authored-by: Ulises Gascón <[email protected]> * Apply suggestions from code review Co-authored-by: Richard Lau <[email protected]> * fixup! node-core-utils to w --------- Co-authored-by: Michael Dawson <[email protected]> Co-authored-by: Yagiz Nizipli <[email protected]> Co-authored-by: Stewart X Addison <[email protected]> Co-authored-by: Ulises Gascón <[email protected]> Co-authored-by: Richard Lau <[email protected]>
1 parent b6ac043 commit 58c5dbd

File tree

1 file changed

+85
-0
lines changed

1 file changed

+85
-0
lines changed

MAINTAINERS_THREAT_MODEL.md

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

0 commit comments

Comments
 (0)