Package evidence
@okx_ai/[email protected]
Js Obfuscated Fetch Exec: Hex-decoded literal + network fetch + child-process exec — staged obfuscated-loader / dropper (hides the C2 URL from literal-URL detection).
Trust signals
Why this verdict
PkgRadar discounts a release’s score when public reputation argues against novel malware. The verdict above already reflects these — the panel just explains what was applied.
- Versions published
- 103
- First published
- Mar 2026
- Publisher
- mychaint
Recommended action
Block this updateStatic evidence trips multiple high-signal indicators. Quarantine the release until the publisher validates the change or you can rule out the indicators below.
Block this release in CIcurl · GitHub Actions
Fail the build when this package version is added or upgraded. Replace $PKGRADAR_TOKEN with a Pro / Team API key from your dashboard.
curl -fsS https://pkgradar.com/gate/npm \
-H "Authorization: Bearer $PKGRADAR_TOKEN" \
-H "Content-Type: application/json" \
-d '{"specs":["@okx_ai/[email protected]"],"fail_on":"high"}'GitHub Actions step:
- name: PkgRadar gate
run: |
curl -fsS https://pkgradar.com/gate/npm \
-H "Authorization: Bearer ${{ secrets.PKGRADAR_TOKEN }}" \
-H "Content-Type: application/json" \
-d '{"specs":["@okx_ai/[email protected]"],"fail_on":"high"}'Why flagged
What the scanner saw
Js Obfuscated Fetch Exec: Hex-decoded literal + network fetch + child-process exec — staged obfuscated-loader / dropper (hides the C2 URL from literal-URL detection).
1 candidate cluster(s) currently reference this release.
Not observed: package install, lifecycle script execution, or sandbox execution. PkgRadar only inspects on-disk artifacts.
Availability ledger
available
Status history (4 events)
- available → available · risk high · score 75 · status available -> available, risk high -> high, score 30 -> 75
- available → available · risk high · score 30 · status available -> available, risk high -> high, score 21 -> 30
- available → available · risk high · score 21 · status available -> available, risk high -> high, score 30 -> 21
- new → available · risk high · score 30 · status changed
Related candidates
Linked campaigns and clusters
Js Obfuscated Fetch Exec — hex-decoded literal + network fetch + child-process exec — staged obfuscated-loader / dropper (hides the c2 url from literal-url detection).
46 members · evidence strength 90Install Lifecycle Suppresses Failure — postinstall="node scripts/postinstall.js || exit 0"
28 members · evidence strength 76Js Obfuscated Fetch Exec — hex-decoded literal + network fetch + child-process exec — staged obfuscated-loader / dropper (hides the c2 url from literal-url detection).
46 members · max score 259Evidence
Static findings
4 static · 0 from release diff · showing high-signal first.
| Severity | Kind | Path | Detail | Points |
|---|---|---|---|---|
| high | Js Obfuscated Fetch Exec | package/dist/index.js | Hex-decoded literal + network fetch + child-process exec — staged obfuscated-loader / dropper (hides the C2 URL from literal-URL detection). | 45 |
| high | Install Lifecycle Suppresses Failure | package.json | postinstall="node scripts/postinstall.js || exit 0" | 20 |
Show all 4 findings (low-signal and informational)
| Severity | Kind | Path | Detail | Points |
|---|---|---|---|---|
| high | Js Obfuscated Fetch Exec | package/dist/index.js | Hex-decoded literal + network fetch + child-process exec — staged obfuscated-loader / dropper (hides the C2 URL from literal-URL detection). | 45 |
| high | Install Lifecycle Suppresses Failure | package.json | postinstall="node scripts/postinstall.js || exit 0" | 20 |
| low | Credential file access | package/dist/index.js | matched ".npmrc" | 5 |
| low | Install-time lifecycle script | package.json | postinstall="node scripts/postinstall.js || exit 0" | 5 |
Manifest
Package metadata
Scripts6
buildtsup && node -e "const fs=require('fs');fs.mkdirSync('scripts',{recursive:true});fs.copyFileSync('../../scripts/postinstall-notice.js','scripts/postinstall.js')"cleanrm -rf dist scriptspostinstallnode scripts/postinstall.js || exit 0test:coveragec8 --reporter=lcov --reporter=text --src=src node --import tsx/esm --test test/*.test.tstest:unitnode --import tsx/esm --test --test-reporter=spec test/*.test.tstypechecktsc --noEmit
Dependencies2
undici^6.0.0yauzl^3.2.1