openreview-ai@0.1.1
BLOCKED· install onlyPublisher 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.
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 scenariosStatic findings
console.log(` npx skills add imMamdouhaboammar/openreview\n`);Fix: Pin versions and sources; vendor anything fetched at install time.// 1. Attempt npx / bunx skills add if online and registry tool is availableFix: Pin versions and sources; vendor anything fetched at install time.curl -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.self.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.console.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.console.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.| **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.rm -f /tmp/install-openreview.shFix: Build commands from fixed arguments; do not interpolate untrusted strings into a shell.env_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.Skills Registry: npx skills add imMamdouhaboammar/openreviewFix: Pin versions and sources; vendor anything fetched at install time.console.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.// 1. Primary: Run npx / bunx skills addFix: Pin versions and sources; vendor anything fetched at install time.if ".env" in f.read():Fix: Stop enumerating or reading credential locations; take secrets from a declared environment variable the user sets on purpose.Skills Registry: npx skills add imMamdouhaboammar/deep-diggerFix: Pin versions and sources; vendor anything fetched at install time.2. **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.self.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.Skills Registry: npx skills add imMamdouhaboammar/deep-diggerFix: Pin versions and sources; vendor anything fetched at install time.// 1. Attempt npx / bunx skills add if online and registry tool is availableFix: Pin versions and sources; vendor anything fetched at install time.p_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.p_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.result = subprocess.run(argv, shell=False, timeout=timeout,Fix: Build commands from fixed arguments, never from interpolated strings; prefer an API client over shelling out.console.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.subprocess.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.subprocess.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.subprocess.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.echo "Run 'deep-digger doctor' or 'npx deep-digger --help' to verify."Fix: Pin versions and sources; vendor anything fetched at install time.res = 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.subprocess.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.p_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.p_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.# Create .gitignore with .envFix: Stop enumerating or reading credential locations; take secrets from a declared environment variable the user sets on purpose.subprocess.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.subprocess.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.res = 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.result = subprocess.run(argv, shell=False, timeout=timeout,Fix: Build commands from fixed arguments, never from interpolated strings; prefer an API client over shelling out.res = 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.f.write(".env\n")Fix: Stop enumerating or reading credential locations; take secrets from a declared environment variable the user sets on purpose.deep-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.deep-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."""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.with 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.// 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.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
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.
- 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.
- 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.
- 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.
- 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.
- Direct script execution from GitHub raw URL≈ +4 on the totalPin versions and sources; vendor anything fetched at install time.
- 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.