@@ -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