Skills/npm/openreview-ai

openreview-ai@0.1.1

BLOCKED· install only

Publisher claims: "Evidence-gated AI code review bot, microservice, and causal investigation workbench" Observed in sandbox: reads credential files, sends data to fd12:ea5f:789c:1:d000:1c1:d8f4:2be4, 10.244.43.228.

Registry npm (MCP server)Publisher immamdouhaboammar · publishing for 159 daysInstalls 564Last detonated 6d ago

Coverage

Install scripts ran; no agent task scenario for this bundle.
Tested
install scripts, with decoy credentials in place · second launch with the clock 45 days ahead · 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 (2 scenarios; install scripts ran; no agent task scenario for this bundle) on 2026-11-08 and scored it 27/100 (Blocked). Do not install it: the sandbox observed behaviour consistent with credential theft, exfiltration or persistence. Notable findings: Direct script execution from GitHub raw URL; Access to sensitive file paths; Access to sensitive file paths. Summary: reads credential files, sends data to fd12:ea5f:789c:1:d000:1c1:d8f4:2be4, 10.244.43.228.

Behavior trace

Honeypot run · 11 s · 2 scenarios
t+CategoryObserved action
4.8snetworkdirect connection to fd12:ea5f:789c:1:d000:1c1:d8f4:2be4:0, bypassing the egress proxy · undeclared
4.8snetworkdirect connection to 10.244.43.228:0, bypassing the egress proxy · undeclared
4.8sfilesystemwrote ~/.agents/skills/openreview-orchestrator/evals/scenarios.json · ~/.agents/skills/openreview-orchestrator/evals/test_orchestrator.py · ~/.agents/skills/openreview-orchestrator/package.json · ~/.agents/skills/openreview-orchestrator/install.sh · ~/.agents/skills/openreview-orchestrator/usecases/pr-review-flow.md · ~/.agents/skills/openreview-orchestrator/scripts/orchestrate.py
4.8snetworkCONNECT tcp://registry.npmjs.org:443
4.8snetworkCONNECT tcp://registry.npmjs.org:443
4.8snetworkCONNECT tcp://registry.npmjs.org:443
4.8snetworkCONNECT tcp://registry.npmjs.org:443
4.8snetworkCONNECT tcp://registry.npmjs.org:443
4.8snetworkCONNECT tcp://registry.npmjs.org:443
4.8snetworkCONNECT tcp://registry.npmjs.org:443
4.8snetworkCONNECT tcp://registry.npmjs.org:443
4.8snetworkCONNECT tcp://registry.npmjs.org:443
4.8snetworkCONNECT tcp://api.github.com:443
4.8snetworkCONNECT tcp://github.com:443
4.8sprocessexec /app/apps/web/node_modules/.bin/npx
4.8sprocessexec /root/.cache/node/corepack/v1/pnpm/10.28.0/dist/node-gyp-bin/npx
4.8sprocessexec /app/node_modules/.bin/npx
4.8sprocessexec /pnpm/npx
4.8sprocessexec /usr/local/sbin/npx
4.8sprocessexec /usr/local/bin/npx
4.8sprocessexec /tmp/ks-detonate-TX0PGQ/setup/home/.npm/_npx/ac0ed6aa23b37c1e/node_modules/.bin/skills
4.8sprocessexec /tmp/ks-detonate-TX0PGQ/setup/home/.npm/_npx/ac0ed6aa23b37c1e/node_modules/.bin/git
4.8sprocessexec /tmp/ks-detonate-TX0PGQ/setup/home/work/acme-api/.claude/skills/deep-digger/node_modules/.bin/git
4.8sprocessexec /tmp/ks-detonate-TX0PGQ/setup/home/work/acme-api/.claude/skills/node_modules/.bin/git
4.8sprocessexec /tmp/ks-detonate-TX0PGQ/setup/home/work/acme-api/.claude/node_modules/.bin/git
4.8sprocessexec /tmp/ks-detonate-TX0PGQ/setup/home/work/acme-api/node_modules/.bin/git
4.8sprocessexec /tmp/ks-detonate-TX0PGQ/setup/home/work/node_modules/.bin/git
4.8sprocessexec /tmp/ks-detonate-TX0PGQ/setup/home/node_modules/.bin/git
4.8sprocessexec /tmp/ks-detonate-TX0PGQ/setup/node_modules/.bin/git
4.8sprocessexec /tmp/ks-detonate-TX0PGQ/node_modules/.bin/git
4.8sprocessexec /tmp/node_modules/.bin/git
4.8sprocessexec /node_modules/.bin/git
4.8sprocessexec /usr/local/lib/node_modules/npm/node_modules/@npmcli/run-script/lib/node-gyp-bin/git
4.8sprocessexec /app/apps/web/node_modules/.bin/git
4.8sprocessexec /root/.cache/node/corepack/v1/pnpm/10.28.0/dist/node-gyp-bin/git
4.8sprocessexec /app/node_modules/.bin/git
4.8sprocessexec /pnpm/git
4.8sprocessexec /usr/local/sbin/git
4.8sprocessexec /usr/local/bin/git
4.8sprocessexec /usr/sbin/git
4.8sprocessexec /usr/bin/git
4.8sprocessexec /usr/lib/git-core/git
4.8sprocessexec /usr/lib/git-core/git-remote-https
4.9sprocessscript backend runs setup only
4.9sprocessscript backend runs setup only
7.2sprocesssecond launch, clock +45 days, CI unset
11snetworkdirect connection to fd12:ea5f:789c:1:d000:1c1:d8f4:2be4:0, bypassing the egress proxy · undeclared
11snetworkdirect connection to 10.244.43.228:0, bypassing the egress proxy · undeclared
11sfilesystemread ~/.npmrc
11sfilesystemread ~/.npm/_logs · ~/.npm/_cacache/index-v5/94/20/9f7736468c664df22baf94367fc1ed384cf4bfc32d8f36e1d2ad5afcaa7d · ~/.npm/_cacache/content-v2/sha512/ab/8e/db726c9530859fe21397021bfd8327a91d3533b4ecfbbdfa2388af059a7d2bafa4e9cb79835e9faeddff950ed6f71229faf9e3f162052dddf0a77ef971f4 · ~/.npm/_npx/ac0ed6aa23b37c1e/package.json · ~/.npm/_npx/ac0ed6aa23b37c1e/node_modules/.package-lock.json · ~/.npm/_npx/ac0ed6aa23b37c1e/node_modules outside project
11sfilesystemwrote ~/.npm/_cacache/tmp/55ebf137 · ~/.npm/_cacache/index-v5/94/20/9f7736468c664df22baf94367fc1ed384cf4bfc32d8f36e1d2ad5afcaa7d · ~/.agents/skills/openreview-orchestrator/evals/scenarios.json · ~/.agents/skills/openreview-orchestrator/evals/test_orchestrator.py · ~/.agents/skills/openreview-orchestrator/package.json · ~/.agents/skills/openreview-orchestrator/install.sh
11snetworkCONNECT tcp://registry.npmjs.org:443
11snetworkCONNECT tcp://api.github.com:443
11snetworkCONNECT tcp://github.com:443
11sprocessexec /app/apps/web/node_modules/.bin/npx
11sprocessexec /root/.cache/node/corepack/v1/pnpm/10.28.0/dist/node-gyp-bin/npx
11sprocessexec /app/node_modules/.bin/npx
11sprocessexec /pnpm/npx
11sprocessexec /usr/local/sbin/npx
11sprocessexec /usr/local/bin/npx
11sprocessexec /tmp/ks-detonate-TX0PGQ/later/home/.npm/_npx/ac0ed6aa23b37c1e/node_modules/.bin/skills
11sprocessexec /tmp/ks-detonate-TX0PGQ/later/home/.npm/_npx/ac0ed6aa23b37c1e/node_modules/.bin/git
11sprocessexec /tmp/ks-detonate-TX0PGQ/later/home/work/acme-api/.claude/skills/deep-digger/node_modules/.bin/git
11sprocessexec /tmp/ks-detonate-TX0PGQ/later/home/work/acme-api/.claude/skills/node_modules/.bin/git
11sprocessexec /tmp/ks-detonate-TX0PGQ/later/home/work/acme-api/.claude/node_modules/.bin/git
11sprocessexec /tmp/ks-detonate-TX0PGQ/later/home/work/acme-api/node_modules/.bin/git
11sprocessexec /tmp/ks-detonate-TX0PGQ/later/home/work/node_modules/.bin/git
11sprocessexec /tmp/ks-detonate-TX0PGQ/later/home/node_modules/.bin/git
11sprocessexec /tmp/ks-detonate-TX0PGQ/later/node_modules/.bin/git
11sprocessexec /tmp/ks-detonate-TX0PGQ/node_modules/.bin/git
11sprocessexec /tmp/node_modules/.bin/git
11sprocessexec /node_modules/.bin/git
11sprocessexec /usr/local/lib/node_modules/npm/node_modules/@npmcli/run-script/lib/node-gyp-bin/git
11sprocessexec /app/apps/web/node_modules/.bin/git
11sprocessexec /root/.cache/node/corepack/v1/pnpm/10.28.0/dist/node-gyp-bin/git
11sprocessexec /app/node_modules/.bin/git
11sprocessexec /pnpm/git
11sprocessexec /usr/local/sbin/git
11sprocessexec /usr/local/bin/git
11sprocessexec /usr/sbin/git
11sprocessexec /usr/bin/git
11sprocessexec /usr/lib/git-core/git
11sprocessexec /usr/lib/git-core/git-remote-https

Static findings

MEDIUM
npx invocation of non-well-known packagedist/cli.js:171 · npx invocation of non-well-known package — may execute untrusted codeconsole.log(` npx skills add imMamdouhaboammar/openreview\n`);Fix: Pin versions and sources; vendor anything fetched at install time.
AST06
MEDIUM
npx invocation of non-well-known packagedist/skills/deep-digger/bin/postinstall.js:38 · npx invocation of non-well-known package — may execute untrusted code// 1. Attempt npx / bunx skills add if online and registry tool is availableFix: Pin versions and sources; vendor anything fetched at install time.
AST06
HIGH
Direct script execution from GitHub raw URLdist/skills/openreview/assets/github-action-workflow.yml:30 · Direct script execution from GitHub raw URL — unverified code sourcecurl -fsSL https://raw.githubusercontent.com/imMamdouhaboammar/openreview/main/install.sh -o /tmp/install-openreview.shFix: Pin versions and sources; vendor anything fetched at install time.
AST06
HIGH
Access to sensitive file pathsdist/skills/openreview/scripts/verify_openreview.py:78 · Access to sensitive file paths — SSH keys, AWS credentials, env files, or system filesself.passed_checks.append(".env is properly gitignored")Fix: Stop enumerating or reading credential locations; take secrets from a declared environment variable the user sets on purpose.
AST05
MEDIUM
File type combined with upload actiondist/postinstall.js:98 · File type combined with upload action — agent may exfiltrate local data filesconsole.log('[OpenReview] Running post-installation configuration...');Fix: Remove the call, or declare the host in frontmatter and explain in the README what is sent and why.
AST07
MEDIUM
File type combined with upload actiondist/postinstall.js:101 · File type combined with upload action — agent may exfiltrate local data filesconsole.log('[OpenReview] Postinstall configuration complete.\n');Fix: Remove the call, or declare the host in frontmatter and explain in the README what is sent and why.
AST07
HIGH
Access to sensitive file pathsdist/skills/openreview/SKILL.md:33 · Access to sensitive file paths — SSH keys, AWS credentials, env files, or system files| **CONFIGURE** | Create or modify configuration settings | Validated `openreview.config.json` and `.env` template |Fix: Stop enumerating or reading credential locations; take secrets from a declared environment variable the user sets on purpose.
AST05
HIGH
Destructive file system command detecteddist/skills/openreview/assets/github-action-workflow.yml:32 · Destructive file system command detectedrm -f /tmp/install-openreview.shFix: Build commands from fixed arguments; do not interpolate untrusted strings into a shell.
AST05
HIGH
Access to sensitive file pathsdist/skills/openreview/scripts/verify_openreview.py:62 · Access to sensitive file paths — SSH keys, AWS credentials, env files, or system filesenv_path = os.path.join(self.target_dir, ".env")Fix: Stop enumerating or reading credential locations; take secrets from a declared environment variable the user sets on purpose.
AST05
MEDIUM
npx invocation of non-well-known packagedist/cli.js:59 · npx invocation of non-well-known package — may execute untrusted codeSkills Registry: npx skills add imMamdouhaboammar/openreviewFix: Pin versions and sources; vendor anything fetched at install time.
AST06
MEDIUM
File type combined with upload actiondist/skills/deep-digger/bin/postinstall.js:121 · File type combined with upload action — agent may exfiltrate local data filesconsole.log('[Deep Digger] Running post-installation configuration...');Fix: Remove the call, or declare the host in frontmatter and explain in the README what is sent and why.
AST07
MEDIUM
npx invocation of non-well-known packagedist/postinstall.js:17 · npx invocation of non-well-known package — may execute untrusted code// 1. Primary: Run npx / bunx skills addFix: Pin versions and sources; vendor anything fetched at install time.
AST06
HIGH
Access to sensitive file pathsdist/skills/openreview/scripts/verify_openreview.py:72 · Access to sensitive file paths — SSH keys, AWS credentials, env files, or system filesif ".env" in f.read():Fix: Stop enumerating or reading credential locations; take secrets from a declared environment variable the user sets on purpose.
AST05
MEDIUM
npx invocation of non-well-known packagedist/skills/deep-digger/bin/cli.js:49 · npx invocation of non-well-known package — may execute untrusted codeSkills Registry: npx skills add imMamdouhaboammar/deep-diggerFix: Pin versions and sources; vendor anything fetched at install time.
AST06
HIGH
Access to sensitive file pathsdist/skills/openreview/SKILL.md:86 · Access to sensitive file paths — SSH keys, AWS credentials, env files, or system files2. **Zero Plaintext Secrets**: RSA keys and API tokens are loaded exclusively via environment variables; `.env` is listed in `.gitignore`.Fix: Stop enumerating or reading credential locations; take secrets from a declared environment variable the user sets on purpose.
AST05
HIGH
Access to sensitive file pathsdist/skills/openreview/scripts/verify_openreview.py:76 · Access to sensitive file paths — SSH keys, AWS credentials, env files, or system filesself.violations.append("Invariant 2 Violation: .env file exists but is NOT listed in .gitignore!")Fix: Stop enumerating or reading credential locations; take secrets from a declared environment variable the user sets on purpose.
AST05
MEDIUM
npx invocation of non-well-known packagedist/skills/deep-digger/dist/cli.js:49 · npx invocation of non-well-known package — may execute untrusted codeSkills Registry: npx skills add imMamdouhaboammar/deep-diggerFix: Pin versions and sources; vendor anything fetched at install time.
AST06
MEDIUM
npx invocation of non-well-known packagedist/skills/deep-digger/dist/postinstall.js:38 · npx invocation of non-well-known package — may execute untrusted code// 1. Attempt npx / bunx skills add if online and registry tool is availableFix: Pin versions and sources; vendor anything fetched at install time.
AST06
MEDIUM
Python subprocess execution detecteddist/skills/deep-digger/dist/scripts/deep_digger.py:773 · Python subprocess execution detectedp_start = subprocess.run(start_cmd, capture_output=True, text=True, timeout=60)Fix: Build commands from fixed arguments, never from interpolated strings; prefer an API client over shelling out.
AST05
MEDIUM
Python subprocess execution detecteddist/skills/deep-digger/dist/scripts/deep_digger.py:779 · Python subprocess execution detectedp_run = subprocess.run(["git", "bisect", "run", *argv], capture_output=True, text=True, timeout=args.timeout)Fix: Build commands from fixed arguments, never from interpolated strings; prefer an API client over shelling out.
AST05
MEDIUM
Python subprocess execution detecteddist/skills/deep-digger/dist/scripts/deep_digger.py:179 · Python subprocess execution detectedresult = subprocess.run(argv, shell=False, timeout=timeout,Fix: Build commands from fixed arguments, never from interpolated strings; prefer an API client over shelling out.
AST05
MEDIUM
File type combined with upload actiondist/skills/deep-digger/dist/postinstall.js:121 · File type combined with upload action — agent may exfiltrate local data filesconsole.log('[Deep Digger] Running post-installation configuration...');Fix: Remove the call, or declare the host in frontmatter and explain in the README what is sent and why.
AST07
MEDIUM
Python subprocess execution detecteddist/skills/deep-digger/dist/scripts/deep_digger.py:784 · Python subprocess execution detectedsubprocess.run(["git", "bisect", "reset"], capture_output=True, timeout=60)Fix: Build commands from fixed arguments, never from interpolated strings; prefer an API client over shelling out.
AST05
MEDIUM
Python subprocess execution detecteddist/skills/deep-digger/dist/scripts/deep_digger.py:768 · Python subprocess execution detectedsubprocess.run(["git", "rev-parse", "--is-inside-work-tree"], check=True, capture_output=True, timeout=60)Fix: Build commands from fixed arguments, never from interpolated strings; prefer an API client over shelling out.
AST05
MEDIUM
Python subprocess execution detecteddist/skills/deep-digger/scripts/deep_digger.py:768 · Python subprocess execution detectedsubprocess.run(["git", "rev-parse", "--is-inside-work-tree"], check=True, capture_output=True, timeout=60)Fix: Build commands from fixed arguments, never from interpolated strings; prefer an API client over shelling out.
AST05
MEDIUM
npx invocation of non-well-known packagedist/skills/deep-digger/install.sh:51 · npx invocation of non-well-known package — may execute untrusted codeecho "Run 'deep-digger doctor' or 'npx deep-digger --help' to verify."Fix: Pin versions and sources; vendor anything fetched at install time.
AST06
MEDIUM
Python subprocess execution detecteddist/skills/openreview/tests/test_eval_suite.py:66 · Python subprocess execution detectedres = subprocess.run([sys.executable, self.verify_script, tmpdir], capture_output=True, text=True)Fix: Put hosts, commands and strings in plain source. Decoding at runtime looks identical to malware and costs points on its own.
AST05
MEDIUM
Python subprocess execution detecteddist/skills/openreview/tests/test_eval_suite.py:54 · Python subprocess execution detectedsubprocess.run([sys.executable, self.generate_script, cfg_path], check=True)Fix: Put hosts, commands and strings in plain source. Decoding at runtime looks identical to malware and costs points on its own.
AST05
MEDIUM
Python subprocess execution detecteddist/skills/deep-digger/scripts/deep_digger.py:773 · Python subprocess execution detectedp_start = subprocess.run(start_cmd, capture_output=True, text=True, timeout=60)Fix: Build commands from fixed arguments, never from interpolated strings; prefer an API client over shelling out.
AST05
MEDIUM
Python subprocess execution detecteddist/skills/deep-digger/scripts/deep_digger.py:779 · Python subprocess execution detectedp_run = subprocess.run(["git", "bisect", "run", *argv], capture_output=True, text=True, timeout=args.timeout)Fix: Build commands from fixed arguments, never from interpolated strings; prefer an API client over shelling out.
AST05
MEDIUM
Access to sensitive file pathsdist/skills/openreview/tests/test_eval_suite.py:62 · Access to sensitive file paths — SSH keys, AWS credentials, env files, or system files# Create .gitignore with .envFix: Stop enumerating or reading credential locations; take secrets from a declared environment variable the user sets on purpose.
AST05
MEDIUM
Python subprocess execution detecteddist/skills/openreview/tests/test_eval_suite.py:90 · Python subprocess execution detectedsubprocess.run([sys.executable, self.generate_script, cfg_path], check=True)Fix: Put hosts, commands and strings in plain source. Decoding at runtime looks identical to malware and costs points on its own.
AST05
MEDIUM
Python subprocess execution detecteddist/skills/deep-digger/scripts/deep_digger.py:784 · Python subprocess execution detectedsubprocess.run(["git", "bisect", "reset"], capture_output=True, timeout=60)Fix: Build commands from fixed arguments, never from interpolated strings; prefer an API client over shelling out.
AST05
MEDIUM
Python subprocess execution detecteddist/skills/openreview/tests/test_eval_suite.py:82 · Python subprocess execution detectedres = subprocess.run([sys.executable, self.verify_script, tmpdir], capture_output=True, text=True)Fix: Put hosts, commands and strings in plain source. Decoding at runtime looks identical to malware and costs points on its own.
AST05
MEDIUM
Python subprocess execution detecteddist/skills/deep-digger/scripts/deep_digger.py:179 · Python subprocess execution detectedresult = subprocess.run(argv, shell=False, timeout=timeout,Fix: Build commands from fixed arguments, never from interpolated strings; prefer an API client over shelling out.
AST05
MEDIUM
Python subprocess execution detecteddist/skills/openreview/tests/test_eval_suite.py:37 · Python subprocess execution detectedres = subprocess.run([sys.executable, self.generate_script, out_path], capture_output=True, text=True)Fix: Put hosts, commands and strings in plain source. Decoding at runtime looks identical to malware and costs points on its own.
AST05
MEDIUM
Access to sensitive file pathsdist/skills/openreview/tests/test_eval_suite.py:64 · Access to sensitive file paths — SSH keys, AWS credentials, env files, or system filesf.write(".env\n")Fix: Stop enumerating or reading credential locations; take secrets from a declared environment variable the user sets on purpose.
AST05
MEDIUM
File type combined with upload actiondist/skills/openreview-orchestrator/SKILL.md:129 · File type combined with upload action — agent may exfiltrate local data filesdeep-digger-min --input repro.json --output minimal.json --granularity tokens --allow-exec -- cargo test --test regression -- {input}Fix: Remove the call, or declare the host in frontmatter and explain in the README what is sent and why.
AST07
MEDIUM
File type combined with upload actiondist/skills/openreview-orchestrator/SKILL.md:126 · File type combined with upload action — agent may exfiltrate local data filesdeep-digger-min --input repro.txt --output minimal.txt --allow-exec -- cargo test --test regression -- {input}Fix: Remove the call, or declare the host in frontmatter and explain in the README what is sent and why.
AST07
MEDIUM
Access to sensitive file pathsdist/skills/openreview/tests/test_eval_suite.py:87 · Access to sensitive file paths — SSH keys, AWS credentials, env files, or system files"""CAP-05: Verify verifier flags .env not in .gitignore (Invariant 2)."""Fix: Stop enumerating or reading credential locations; take secrets from a declared environment variable the user sets on purpose.
AST05
MEDIUM
Access to sensitive file pathsdist/skills/openreview/tests/test_eval_suite.py:91 · Access to sensitive file paths — SSH keys, AWS credentials, env files, or system fileswith open(os.path.join(tmpdir, ".env"), "w") as f:Fix: Stop enumerating or reading credential locations; take secrets from a declared environment variable the user sets on purpose.
AST05
LOW
Authorization escalation languagedist/skills/openreview/references/baseline-failure.md:25 · Authorization escalation language · informational: not an instruction file · informational: not an instruction file// Malicious PR containing postinstall script has complete root access to host VM!Fix: Remove the text that addresses the agent rather than the reader; describe behavior, do not instruct.
AST01

Cost to the agent

Instructions loaded
≈9,890 tok
5 files · 80 in bundle

Tokens estimated at four characters each. Skills load their instruction text when triggered; the figure is what that costs.

Known vulnerabilities

No advisories in OSV for openreview-ai@0.1.1 as of 6d ago. This is the package itself, not its dependencies.

What would make this Verified

53 points to 80 · weights: behavior 45%, static 25%, prompt 15%, publisher 15%

An override rule (credential_read_plus_egress) caps this verdict regardless of the score. The first item below has to go before anything else counts.

  1. Reads credential files≈ +27 on the totalThe sandbox saw reads under ~/.ssh, ~/.aws, ~/.npmrc, ~/.config or similar. Read only files inside the project, and only the ones the task needs.
  2. Contacts a host you did not declare≈ +23 on the totalList every host you talk to in SKILL.md frontmatter (`network: [api.example.com]`), or stop contacting the ones you cannot justify.
  3. Unclaimed publisher≈ +8 on the totalClaim immamdouhaboammar: a verified publisher gets +50 on publisher trust. It is free and usually instant with GitHub sign-in.
  4. Touches files outside the project≈ +7 on the totalKeep reads and writes inside the working directory, or declare the exact paths in `filesystem:` and explain why in the README.
  5. Direct script execution from GitHub raw URL≈ +4 on the totalPin versions and sources; vendor anything fetched at install time.
  6. 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.
Publish a new version to npm, then queue it here. Not your skill? Claim the handle to get verdict changes by email.Claim immamdouhaboammarPropose a patch to the maintainer