registry  /  muaddib-scanner  /  2.11.142

muaddib-scanner@2.11.142

⚠ Under review

Supply-chain threat detection & response for npm & PyPI/Python

Static Scan Results

scanned 4d ago · by rust-scanner

Static analysis flagged 27 finding(s) at 86.0% confidence. This version is warn-only unless an AI or security-team review confirms malicious behavior.

Static reason
High-risk behavior combination matched malicious policy.

Decision evidence

public snapshot
Behavioral surface
Source
ChildProcessCryptoDynamicRequireEnvironmentVarsEvalFilesystemNativeBindingsNetworkShellWebSocket
Supply chain
HighEntropyStringsMinifiedProtestwareTelemetryUrlStrings
ManifestNo manifest risk signals triggered.
scanned 168 file(s), 2.52 MB of source, external domains: 1.2.3.4, 127.0.0.1, api.anthropic.com, api.github.com, api.npmjs.org, api.openai.com, api.opensourcemalware.com, api.osv.dev, api.stripe.com, arxiv.org, attack.mitre.org, bandit.readthedocs.io, blog.gitguardian.com, blog.npmjs.org, blog.phylum.io, blog.pypi.org, blog.sonatype.com, canarytokens.org, crates.io, cwe.mitre.org, datatracker.ietf.org, developer.mozilla.org, developer.nvidia.com, discord.com, docs.aws.amazon.com, docs.github.com, docs.npmjs.com, docs.opensourcemalware.com, docs.python.org, evil.com, evil.sh, gist.github.com, github.com, gyp.gsrc.io, hooks.example.com, malware-list.aikido.dev, medium.com, nodejs.org, opensourcemalware.com, orca.security, osv-vulnerabilities.storage.googleapis.com, osv.dev, owasp.org, peps.python.org, portswigger.net, pypi.org, raw.githubusercontent.com, rdap.org, registry.npmjs.org, replicate.npmjs.com

Source & flagged code

17 flagged · loading source
src/integrations/canary-tokens.jsView file
139patternName = private_key_openssh severity = critical line = 139 matchedText = '-----BE...--',
Critical
Critical Secret

Package contains a critical-looking secret pattern.

src/integrations/canary-tokens.jsView on unpkg · L139
139patternName = private_key_openssh severity = critical line = 139 matchedText = '-----BE...--',
Critical
Secret Pattern

OpenSSH private key in src/integrations/canary-tokens.js

src/integrations/canary-tokens.jsView on unpkg · L139
bin/muaddib.jsView file
7if (!hasMaxOld || !hasGC) { L8: const { execFileSync } = require('child_process'); L9: const flags = [];
High
Child Process

Package source references child process execution.

bin/muaddib.jsView on unpkg · L7
4Cross-file remote execution chain: bin/muaddib.js spawns src/rules/index.js; helper contains network access plus dynamic code execution. L4: if (process.argv[2] === 'evaluate') { L5: const hasMaxOld = process.execArgv.some(a => a.includes('--max-old-space-size')); L6: const hasGC = process.execArgv.some(a => a === '--expose-gc'); ... L14: stdio: 'inherit', L15: env: process.env L16: }); ... L29: const { loadDotEnv } = require('../src/env-loader.js'); L30: loadDotEnv(require('path').join(__dirname, '..', '.env')); L31: } catch { /* non-fatal: .env is optional */ } ... L118: } else if (options[i] === '--cyclonedx') { L119: // P1b: CycloneDX 1.5 SBOM export (https://cyclonedx.org) L120: const bomPath = options[i + 1] || 'muaddib-bom.cdx.json';
High
Cross File Remote Execution Context

Source spawns a local helper that also contains network and dynamic execution context; review data flow before blocking.

bin/muaddib.jsView on unpkg · L4
7if (!hasMaxOld || !hasGC) { L8: const { execFileSync } = require('child_process'); L9: const flags = [];
Medium
Dynamic Require

Package source references dynamic require/import behavior.

bin/muaddib.jsView on unpkg · L7
src/response/playbooks.jsView file
13L14: child_process: L15: 'Execution de commandes systeme. Verifier quelles commandes sont lancees.', ... L31: L32: base64_encoding: L33: 'Encodage base64 detecte. Souvent utilise pour obfusquer du code malveillant.', ... L77: env_proxy_intercept: L78: 'CRITIQUE: new Proxy(process.env) intercepte tous les acces aux variables d\'environnement. Technique d\'exfiltration silencieuse. Isoler la machine, regenerer tous les secrets.', L79: ... L143: anti_forensic_xor_autodelete: L144: 'CRITIQUE: Pattern complet anti-forensique (XOR + self-delete + decoy write) dans un seul fichier. Style Axios npm 2026-03 / csec autodelete. Considerer le package compromis. Inspe... L145:
Critical
Npm Publish Worm

Source mutates package metadata and republishes itself to npm.

src/response/playbooks.jsView on unpkg · L13
232sh_c_curl_exec: L233: 'sh -c wrapping autour de curl detecte. Technique d\'evasion pour masquer l\'execution de commandes distantes. Analyser le contenu telecharge.', L234:
High
Shell

Package source references shell execution.

src/response/playbooks.jsView on unpkg · L232
src/scoring.jsView file
415'cross_file_dataflow', // credential read → network exfil across files L416: 'staged_eval_decode', // eval(atob(...)) (explicit payload staging) L417: 'reverse_shell', // net.Socket + connect + pipe (always malicious)
High
Eval

Package source references dynamic code evaluation.

src/scoring.jsView on unpkg · L415
src/rules/index.jsView file
54references: [ L55: 'https://blog.phylum.io/shai-hulud-npm-worm', L56: 'https://www.wiz.io/blog/shai-hulud-npm[redacted]' ... L90: domain: 'vulnerability', L91: description: 'Utilisation de eval() ou new Function() - execution de code dynamique', L92: references: [ ... L142: domain: 'malware', L143: description: 'Script preinstall/postinstall suspect dans package.json', L144: references: [ ... L297: }, L298: import_time_base64_exec: { L299: id: 'MUADDIB-PYSRC-005',
Critical
Remote Asset Decode Execute

Source fetches a remote non-code asset, decodes its contents, and dynamically executes the decoded payload.

src/rules/index.jsView on unpkg · L54
54Trigger-reachable chain: manifest.main -> src/index.js -> src/scoring.js -> src/rules/index.js L54: references: [ L55: 'https://blog.phylum.io/shai-hulud-npm-worm', L56: 'https://www.wiz.io/blog/shai-hulud-npm[redacted]' ... L90: domain: 'vulnerability', L91: description: 'Utilisation de eval() ou new Function() - execution de code dynamique', L92: references: [ ... L142: domain: 'malware', L143: description: 'Script preinstall/postinstall suspect dans package.json', L144: references: [ ... L297: }, L298: import_time_base64_exec: { L299: id: 'MUADDIB-PYSRC-005',
Critical
Trigger Reachable Dangerous Capability

A package entrypoint or install-time lifecycle script reaches a source file with blocking dangerous behavior.

src/rules/index.jsView on unpkg · L54
54references: [ L55: 'https://blog.phylum.io/shai-hulud-npm-worm', L56: 'https://www.wiz.io/blog/shai-hulud-npm[redacted]' ... L90: domain: 'vulnerability', L91: description: 'Utilisation de eval() ou new Function() - execution de code dynamique', L92: references: [ ... L142: domain: 'malware', L143: description: 'Script preinstall/postinstall suspect dans package.json', L144: references: [ ... L297: }, L298: import_time_base64_exec: { L299: id: 'MUADDIB-PYSRC-005',
High
Sandbox Evasion Gated Capability

Source gates dangerous network, credential, or execution behavior behind CI, host, platform, time, or geo fingerprint checks.

src/rules/index.jsView on unpkg · L54
54references: [ L55: 'https://blog.phylum.io/shai-hulud-npm-worm', L56: 'https://www.wiz.io/blog/shai-hulud-npm[redacted]' ... L90: domain: 'vulnerability', L91: description: 'Utilisation de eval() ou new Function() - execution de code dynamique', L92: references: [ ... L142: domain: 'malware', L143: description: 'Script preinstall/postinstall suspect dans package.json', L144: references: [ ... L297: }, L298: import_time_base64_exec: { L299: id: 'MUADDIB-PYSRC-005',
Medium
Install Persistence

Source writes installer persistence such as shell profile or service configuration.

src/rules/index.jsView on unpkg · L54
src/vendor/tree-sitter-python.wasmView file
path = src/vendor/tree-sitter-python.wasm kind = wasm_module sizeBytes = 459862 magicHex = [redacted]
Medium
Ships Wasm Module

Package ships WebAssembly modules.

src/vendor/tree-sitter-python.wasmView on unpkg
src/sandbox/index.jsView file
154patternName = github_pat severity = critical line = 154 matchedText = GITHUB_T...gK',
Critical
Secret Pattern

GitHub personal access token in src/sandbox/index.js

src/sandbox/index.jsView on unpkg · L154
155patternName = npm_token severity = critical line = 155 matchedText = NPM_TOKE...5e',
Critical
Secret Pattern

npm access token in src/sandbox/index.js

src/sandbox/index.jsView on unpkg · L155
156patternName = aws_access_key severity = critical line = 156 matchedText = AWS_ACCE...Q3',
Critical
Secret Pattern

AWS access key ID in src/sandbox/index.js

src/sandbox/index.jsView on unpkg · L156
src/scanner/ast-detectors/anti-evasion.jsView file
36patternName = aws_access_key severity = critical line = 36 matchedText = // (AKIA...able
Critical
Secret Pattern

AWS access key ID in src/scanner/ast-detectors/anti-evasion.js

src/scanner/ast-detectors/anti-evasion.jsView on unpkg · L36

Findings

9 Critical5 High7 Medium6 Low
CriticalCritical Secretsrc/integrations/canary-tokens.js
CriticalNpm Publish Wormsrc/response/playbooks.js
CriticalRemote Asset Decode Executesrc/rules/index.js
CriticalTrigger Reachable Dangerous Capabilitysrc/rules/index.js
CriticalSecret Patternsrc/integrations/canary-tokens.js
CriticalSecret Patternsrc/sandbox/index.js
CriticalSecret Patternsrc/sandbox/index.js
CriticalSecret Patternsrc/sandbox/index.js
CriticalSecret Patternsrc/scanner/ast-detectors/anti-evasion.js
HighChild Processbin/muaddib.js
HighShellsrc/response/playbooks.js
HighEvalsrc/scoring.js
HighSandbox Evasion Gated Capabilitysrc/rules/index.js
HighCross File Remote Execution Contextbin/muaddib.js
MediumDynamic Requirebin/muaddib.js
MediumNetwork
MediumEnvironment Vars
MediumInstall Persistencesrc/rules/index.js
MediumProtestware
MediumShips Wasm Modulesrc/vendor/tree-sitter-python.wasm
MediumStructural Risk Force Deep Review
LowNon Install Lifecycle Scripts
LowScripts Present
LowFilesystem
LowHigh Entropy Strings
LowTelemetry
LowUrl Strings