poly-mal-scan@0.0.2
CAUTION· install onlyPublisher claims: "FWold 多语言(PHP/JS/Bash)恶意代码/webshell 扫描检测器: 用法、MCP 接入、规则库持续更新、运行依赖。扫描文件/代码、挂载/测试 detect_mcp_server MCP、新增调准特征码规则、排查误报漏报时启用。" Observed in sandbox: no network, touches nothing outside the project, writes no memory.
Coverage
Nothing executable in the bundle ran; the trace covers the install step only.- Tested
- every file read, file written and host contacted by what ran
- Not tested
- use of the skill by an agent
Is [email protected] safe to install?
KillerSkills ran it in the KillerSkills honeypot sandbox (1 scenario; nothing executable in the bundle ran; the trace covers the install step only) on 2026-11-07 and scored it 68/100 (Caution). It is not known to be malicious, but it has behaviour or code a security policy should decide on before install. Notable findings: Pipe-to-shell pattern; Access to sensitive file paths; Pipe-to-shell pattern. Summary: no network, touches nothing outside the project, writes no memory.
Behavior trace
Honeypot run · 0 s · 1 scenarios · 0 deviationsStatic findings
"curl | bash",Fix: Build commands from fixed arguments, never from interpolated strings; prefer an API client over shelling out.- `plain` 明文只收**完整恶意片段**(如 `eval($_POST['p1']`、`nc -e /bin/bash`、`>> ~/.ssh/authorized_keys`),不收 `eval`/`curl`/`system` 这类被 threat_func 覆盖且易误报的裸词。Fix: Stop enumerating or reading credential locations; take secrets from a declared environment variable the user sets on purpose."wget | sh",Fix: Build commands from fixed arguments, never from interpolated strings; prefer an API client over shelling out."base64 -d | bash",Fix: Put hosts, commands and strings in plain source. Decoding at runtime looks identical to malware and costs points on its own."mkfs.ext4 /dev/",Fix: Build commands from fixed arguments; do not interpolate untrusted strings into a shell.6. 权限/后门: chmod u+s / useradd -u 0 / echo key >> ~/.ssh/authorized_keysFix: Stop enumerating or reading credential locations; take secrets from a declared environment variable the user sets on purpose."rm -rf /",Fix: Build commands from fixed arguments; do not interpolate untrusted strings into a shell."base64 -d",Fix: Put hosts, commands and strings in plain source. Decoding at runtime looks identical to malware and costs points on its own.3. 动态命令名 : cmd="system"; $cmd /etc/shadow → system /etc/shadowFix: Stop enumerating or reading credential locations; take secrets from a declared environment variable the user sets on purpose.4. 管道解码执行: base64 -d x | bash / printf '\\x..' —— 解码后直接执行,绕过字符串匹配Fix: Put hosts, commands and strings in plain source. Decoding at runtime looks identical to malware and costs points on its own.7. 持久化/破坏: crontab / systemctl / rm -rf / iptables -FFix: Build commands from fixed arguments; do not interpolate untrusted strings into a shell."document.cookie",Fix: Replace encoded or assembled strings with plain literals and remove undeclared network calls."base64 -d | sh",Fix: Put hosts, commands and strings in plain source. Decoding at runtime looks identical to malware and costs points on its own."curl -X POST -d @/etc/shadow",Fix: Stop enumerating or reading credential locations; take secrets from a declared environment variable the user sets on purpose."/etc/shadow http://",Fix: Stop enumerating or reading credential locations; take secrets from a declared environment variable the user sets on purpose."base64 -d | bash",Fix: Put hosts, commands and strings in plain source. Decoding at runtime looks identical to malware and costs points on its own."wget --post-file=/etc/passwd",Fix: Stop enumerating or reading credential locations; take secrets from a declared environment variable the user sets on purpose."名称": "写入 /etc/passwd 或 /etc/shadow 账户篡改",Fix: Stop enumerating or reading credential locations; take secrets from a declared environment variable the user sets on purpose.'window.open','document.cookie','process.exit')Fix: Replace encoded or assembled strings with plain literals and remove undeclared network calls.">> ~/.ssh/authorized_keys",Fix: Stop enumerating or reading credential locations; take secrets from a declared environment variable the user sets on purpose."/etc/shadow",Fix: Stop enumerating or reading credential locations; take secrets from a declared environment variable the user sets on purpose."/etc/shadow",Fix: Stop enumerating or reading credential locations; take secrets from a declared environment variable the user sets on purpose."base64 -d | bash",Fix: Put hosts, commands and strings in plain source. Decoding at runtime looks identical to malware and costs points on its own."危险内容特征": ["/dev/tcp/", "bash -i", "exec /bin/", "nc -e", "base64 -d | bash"],Fix: Put hosts, commands and strings in plain source. Decoding at runtime looks identical to malware and costs points on its own."目标路径特征": ["/etc/passwd", "/etc/shadow", "passwd", "shadow"],Fix: Stop enumerating or reading credential locations; take secrets from a declared environment variable the user sets on purpose.5. 污点链摊平 : a=process.env.CMD; b=atob(a); eval(b) → eval(atob(process.env.CMD))Fix: Put hosts, commands and strings in plain source. Decoding at runtime looks identical to malware and costs points on its own."/etc/passwd",Fix: Stop enumerating or reading credential locations; take secrets from a declared environment variable the user sets on purpose.".bash_login", ".profile", ".zshrc", ".kshrc", ".env"}Fix: Stop enumerating or reading credential locations; take secrets from a declared environment variable the user sets on purpose."rm -rf /",Fix: Build commands from fixed arguments; do not interpolate untrusted strings into a shell."危险内容特征": ["chmod u+s", "useradd -u 0", "iptables -F", "/dev/tcp/", "base64 -d | bash", "LD_PRELOAD"],Fix: Put hosts, commands and strings in plain source. Decoding at runtime looks identical to malware and costs points on its own."rm -rf /",Fix: Build commands from fixed arguments; do not interpolate untrusted strings into a shell."描述": "把普通用户加入特权组,使其获得 sudo 提权能力",Fix: Build commands from fixed arguments; do not interpolate untrusted strings into a shell."危险参数": ["| bash", "| sh", "|/bin/bash", "| /bin/sh", "curl -s | sh", "curl -s | bash"],Fix: Build commands from fixed arguments, never from interpolated strings; prefer an API client over shelling out."名称": "网络下载后直接执行(curl|sh)",Fix: Build commands from fixed arguments, never from interpolated strings; prefer an API client over shelling out."curl | bash",Fix: Build commands from fixed arguments, never from interpolated strings; prefer an API client over shelling out.'window.open','document.location','document.cookie',Fix: Replace encoded or assembled strings with plain literals and remove undeclared network calls.6. 权限/后门: chmod u+s / useradd -u 0 / echo key >> ~/.ssh/authorized_keysFix: Request the narrowest permission that works; replace wildcards with the exact paths or hosts."危险内容特征": ["chmod u+s", "useradd -u 0", "iptables -F", "/dev/tcp/", "base64 -d | bash", "LD_PRELOAD"],Fix: Request the narrowest permission that works; replace wildcards with the exact paths or hosts."name": "document.cookie",Fix: Replace encoded or assembled strings with plain literals and remove undeclared network calls."chmod 4755",Fix: Request the narrowest permission that works; replace wildcards with the exact paths or hosts."document.cookie =",Fix: Replace encoded or assembled strings with plain literals and remove undeclared network calls.3. 写配置文件(.env/config/package.json/nginx.conf等) -> 3 级Fix: Stop enumerating or reading credential locations; take secrets from a declared environment variable the user sets on purpose.r'process\.env|process\.argv', re.I)Fix: Stop enumerating or reading credential locations; take secrets from a declared environment variable the user sets on purpose."chmod u+s",Fix: Request the narrowest permission that works; replace wildcards with the exact paths or hosts.add("bash", "内容含 Shell 语法特征(export/source/alias/chmod u+s/...)")Fix: Request the narrowest permission that works; replace wildcards with the exact paths or hosts."kill -9",Fix: Build commands from fixed arguments; do not interpolate untrusted strings into a shell.# (如 "chmod u+s")直接以明文子串参与匹配,命中即判死。plain 编码不做任何变换。Fix: Request the narrowest permission that works; replace wildcards with the exact paths or hosts.'wp-config.php','.env','env.php','parameters.php','.htpasswd','.htgroups',Fix: Stop enumerating or reading credential locations; take secrets from a declared environment variable the user sets on purpose."chmod 4755",Fix: Request the narrowest permission that works; replace wildcards with the exact paths or hosts.#hex转义 ——\x73\x79\x73\x74\x65\x6dFix: Put hosts, commands and strings in plain source. Decoding at runtime looks identical to malware and costs points on its own.'.env','config','package.json','package-lock.json','npmrc','yarn.lock',Fix: Stop enumerating or reading credential locations; take secrets from a declared environment variable the user sets on purpose."kill -9 ",Fix: Build commands from fixed arguments; do not interpolate untrusted strings into a shell."chmod u+s",Fix: Request the narrowest permission that works; replace wildcards with the exact paths or hosts."curl | bash",Fix: Build commands from fixed arguments, never from interpolated strings; prefer an API client over shelling out."chmod u+s",Fix: Request the narrowest permission that works; replace wildcards with the exact paths or hosts.#url编码 ——%73%79%73%74%65%6dFix: Put hosts, commands and strings in plain source. Decoding at runtime looks identical to malware and costs points on its own."危险参数": ["| bash", "| sh", "|/bin/bash", "| /bin/sh", "curl -s | sh", "curl -s | bash"],Fix: Build commands from fixed arguments, never from interpolated strings; prefer an API client over shelling out.7. 持久化/破坏: crontab / systemctl / rm -rf / iptables -FFix: Build commands from fixed arguments; do not interpolate untrusted strings into a shell."wget | sh",Fix: Build commands from fixed arguments, never from interpolated strings; prefer an API client over shelling out."rm -rf /",Fix: Build commands from fixed arguments; do not interpolate untrusted strings into a shell."curl | bash",Fix: Build commands from fixed arguments, never from interpolated strings; prefer an API client over shelling out.Cost to the agent
Tokens estimated at four characters each. Skills load their instruction text when triggered; the figure is what that costs.
Known vulnerabilities
Vulnerability advisories (OSV) cover npm and PyPI packages; this registry has no advisory database.
What would make this Verified
12 points to 80 · weights: behavior 45%, static 25%, prompt 15%, publisher 15%- Pipe-to-shell pattern≈ +9 on the totalBuild commands from fixed arguments, never from interpolated strings; prefer an API client over shelling out.
- Destructive command against a filesystem root or device≈ +9 on the totalBuild commands from fixed arguments; do not interpolate untrusted strings into a shell.
- Unclaimed publisher≈ +8 on the totalClaim tsherryyann: a verified publisher gets +50 on publisher trust. It is free and usually instant with GitHub sign-in.
- Obfuscated code≈ +5 on the totalRemove base64-assembled strings, eval of decoded text and minified blobs. Reviewers and scanners both treat unreadable code as hostile.
- Access to sensitive file paths≈ +4 on the totalStop enumerating or reading credential locations; take secrets from a declared environment variable the user sets on purpose.
- Host or command assembled from base64 fragments≈ +4 on the totalPut hosts, commands and strings in plain source. Decoding at runtime looks identical to malware and costs points on its own.