← Back to scan
File as GitHub Issue repo: CelestoAI/SmolVM

Push this scan report to CelestoAI/SmolVM

Click the green button below to open GitHub’s new-issue form, pre-filled with the report title, summary table, top findings, and an embedded score-card image. No authentication needed — you review on GitHub before submitting. Repobility is credited as the scanner.

Embedded score card image

This image will render at the top of the issue body. Hosted on Repobility, refreshes automatically after re-scans.

Repobility score card

Issue title

Python: tarfile.extractall without filter

Curate findings to include

Pick exactly which findings appear in the issue body. By default the top 5 are included. Uncheck noise, check what matters.

Top 5 (default)
Severity Rule Title File:line
CRIT SEC022 [SEC022] Database URL With Embedded Credential: A database connection URL contains an emb… src/smolvm/storage/__init__.py:32
CRIT MINED007 [MINED007] Sql String Concat: cursor.execute(f"... {user_input} ...") — SQL injection. examples/cua/legacy_report_fetcher/pipe…:43
CRIT MINED107 Missing import: `stat` used but not imported src/smolvm/host/doctor.py:410
CRIT MINED107 Missing import: `warnings` used but not imported src/smolvm/cli/main.py:1447
HIGH SEC080 [SEC080] Python: tarfile.extractall without filter: tarfile.extract*() without filter='da… src/smolvm/host/manager.py:303
HIGH SEC029 [SEC029] Server-Side Request Forgery (SSRF) — outbound HTTP from user input: Outbound HTT… ui/src/hooks/useSwarmData.js:22
HIGH SEC029 [SEC029] Server-Side Request Forgery (SSRF) — outbound HTTP from user input: Outbound HTT… src/smolvm/storage/__init__.py:87
HIGH SEC029 [SEC029] Server-Side Request Forgery (SSRF) — outbound HTTP from user input: Outbound HTT… src/smolvm/cli/version_check.py:80
HIGH MINED006 [MINED006] Overcatch Baseexception: except BaseException: ... — prevents Ctrl+C and Syste… src/smolvm/cli/_kvm_session.py:126
HIGH MINED012 [MINED012] Curl Pipe Bash: curl ... | sh / bash — runs unverified network code. src/smolvm/presets/_scripts.py:52
HIGH MINED012 [MINED012] Curl Pipe Bash: curl ... | sh / bash — runs unverified network code. scripts/install.sh:84
HIGH MINED001 [MINED001] Bare Except Pass: except: pass or except Exception: pass — silently swallows e… src/smolvm/utils.py:247
HIGH MINED001 [MINED001] Bare Except Pass: except: pass or except Exception: pass — silently swallows e… src/smolvm/cli/version_check.py:214
HIGH MINED001 [MINED001] Bare Except Pass: except: pass or except Exception: pass — silently swallows e… scripts/bench_backends.py:68
HIGH SEC128 [SEC128] Async function without await — fire-and-forget Promise (AI mistake): Async call … scripts/bench_backends.py:71
HIGH SEC128 [SEC128] Async function without await — fire-and-forget Promise (AI mistake): Async call … examples/cua/legacy_report_fetcher/ops/…:35
HIGH SEC128 [SEC128] Async function without await — fire-and-forget Promise (AI mistake): Async call … examples/agent_tools/pydanticai_reusabl…:103
HIGH DKR006 Dockerfile pipes a remote script into a shell scripts/ci/Dockerfile.base-rootfs:63
HIGH DKR006 Dockerfile pipes a remote script into a shell scripts/ci/Dockerfile.base-rootfs:23
HIGH DKR006 Dockerfile pipes a remote script into a shell scripts/ci/Dockerfile.base-alpine-rootfs:50
HIGH MINED115 Action `actions/cache` pinned to mutable ref `@v4` .github/workflows/e2e.yml:54
HIGH MINED115 Action `dtolnay/rust-toolchain` pinned to mutable ref `@stable` .github/workflows/e2e.yml:51
HIGH MINED115 Action `actions/setup-python` pinned to mutable ref `@v5` .github/workflows/e2e.yml:46
HIGH MINED115 Action `actions/checkout` pinned to mutable ref `@v4` .github/workflows/e2e.yml:41
HIGH MINED115 Action `actions/download-artifact` pinned to mutable ref `@v4` .github/workflows/build-published-image…:358
HIGH MINED115 Action `actions/checkout` pinned to mutable ref `@v4` .github/workflows/build-published-image…:327
HIGH MINED115 Action `actions/cache` pinned to mutable ref `@v4` .github/workflows/build-published-image…:140
HIGH MINED115 Action `dtolnay/rust-toolchain` pinned to mutable ref `@stable` .github/workflows/build-published-image…:136
HIGH MINED115 Action `actions/setup-python` pinned to mutable ref `@v5` .github/workflows/build-published-image…:130
HIGH MINED115 Action `actions/checkout` pinned to mutable ref `@v4` .github/workflows/build-published-image…:124
HIGH MINED115 Action `actions/upload-artifact` pinned to mutable ref `@v4` .github/workflows/build-published-image…:88
HIGH MINED115 Action `actions/checkout` pinned to mutable ref `@v4` .github/workflows/build-published-image…:74
HIGH MINED115 Action `actions/checkout` pinned to mutable ref `@v4` .github/workflows/smoke-published-image…:69
HIGH MINED115 Action `actions/download-artifact` pinned to mutable ref `@v4` .github/workflows/publish-core.yml:117
HIGH MINED115 Action `actions/upload-artifact` pinned to mutable ref `@v4` .github/workflows/publish-core.yml:105
HIGH MINED115 Action `PyO3/maturin-action` pinned to mutable ref `@v1` .github/workflows/publish-core.yml:99
HIGH MINED115 Action `actions/checkout` pinned to mutable ref `@v4` .github/workflows/publish-core.yml:98
HIGH MINED115 Action `actions/upload-artifact` pinned to mutable ref `@v4` .github/workflows/publish-core.yml:88
HIGH MINED115 Action `PyO3/maturin-action` pinned to mutable ref `@v1` .github/workflows/publish-core.yml:82
HIGH MINED115 Action `actions/setup-python` pinned to mutable ref `@v5` .github/workflows/publish-core.yml:74
HIGH MINED115 Action `actions/checkout` pinned to mutable ref `@v4` .github/workflows/publish-core.yml:73
HIGH MINED115 Action `actions/upload-artifact` pinned to mutable ref `@v4` .github/workflows/publish-core.yml:60
HIGH MINED115 Action `PyO3/maturin-action` pinned to mutable ref `@v1` .github/workflows/publish-core.yml:53
HIGH MINED115 Action `actions/checkout` pinned to mutable ref `@v4` .github/workflows/publish-core.yml:52
HIGH MINED115 Action `actions/checkout` pinned to mutable ref `@v4` .github/workflows/publish-core.yml:15
HIGH MINED118 Dockerfile FROM `alpine:3.20` not pinned by digest scripts/ci/Dockerfile.base-alpine-rootfs:14
HIGH MINED118 Dockerfile FROM `ubuntu:24.04` not pinned by digest scripts/ci/Dockerfile.base-rootfs:15
HIGH MINED131 pre-commit hook `https://github.com/pre-commit/mirrors-mypy` pinned to mutable rev `v1.8.… .pre-commit-config.yaml:38
HIGH MINED131 pre-commit hook `https://github.com/srstevenson/nb-clean` pinned to mutable rev `3.2.0` .pre-commit-config.yaml:27
HIGH MINED131 pre-commit hook `https://github.com/executablebooks/mdformat` pinned to mutable rev `0.7.… .pre-commit-config.yaml:19
HIGH MINED131 pre-commit hook `https://github.com/pre-commit/pre-commit-hooks` pinned to mutable rev `v… .pre-commit-config.yaml:2
HIGH RUSTSEC-2024-0436 paste: RUSTSEC-2024-0436 Cargo.lock
HIGH SEC005 [SEC005] Command Injection Risk: Unsafe shell execution or eval of user input. src/smolvm/cli/_kvm_session.py:101
HIGH MINED112 FastAPI POST /api/command has no auth src/smolvm/dashboard/server.py:624
HIGH MINED112 FastAPI POST /api/vms/{vm_id}/stop has no auth src/smolvm/dashboard/server.py:612
HIGH MINED112 FastAPI DELETE /api/vms/{vm_id} has no auth src/smolvm/dashboard/server.py:600
HIGH AUC003 [AUC003] Object-level route lacks visible authorization: A route with an object id-like p… src/smolvm/dashboard/server.py:611
HIGH AUC003 [AUC003] Object-level route lacks visible authorization: A route with an object id-like p… src/smolvm/dashboard/server.py:599
HIGH AUC003 [AUC003] Object-level route lacks visible authorization: A route with an object id-like p… src/smolvm/dashboard/server.py:519
HIGH AUC003 [AUC003] Object-level route lacks visible authorization: A route with an object id-like p… src/smolvm/dashboard/server.py:507
HIGH SEC004 [SEC004] SQL Injection Risk: String interpolation in SQL execution. Allows SQL injection. examples/cua/legacy_report_fetcher/pipe…:49
MED ERR002 [ERR002] Empty Catch Block: Empty catch blocks hide errors. ui/src/hooks/useSwarmData.js:113
MED SEC015 [SEC015] Insecure Randomness for Security: Weak PRNG used in security-sensitive context. … src/smolvm/storage/_protocol.py:156
MED SEC012 [SEC012] ZipSlip — Archive Path Traversal: Archive extraction without path validation all… src/smolvm/host/manager.py:298
MED ERR001 [ERR001] Silent Exception Swallowing: Silently swallowing all exceptions hides bugs. Even… scripts/bench_backends.py:68
MED MINED111 Bare except continues silently src/smolvm/cli/main.py:2094
MED MINED111 Bare except continues silently src/smolvm/cli/main.py:1656
MED MINED111 Bare except continues silently src/smolvm/cli/main.py:1547
MED MINED111 Bare except continues silently src/smolvm/cli/cleanup.py:231
MED MINED111 Bare except continues silently src/smolvm/cli/cleanup.py:223
MED MINED111 Bare except continues silently src/smolvm/cli/cleanup.py:398
MED MINED111 Bare except continues silently src/smolvm/cli/cleanup.py:286
MED MINED111 Bare except continues silently src/smolvm/images/builder.py:1582
MED MINED111 Bare except continues silently src/smolvm/api.py:120
MED MINED111 Bare except continues silently src/smolvm/facade.py:2230
MED MINED111 Bare except continues silently src/smolvm/facade.py:1887
MED MINED111 Bare except continues silently src/smolvm/facade.py:2239
MED MINED111 Bare except continues silently src/smolvm/facade.py:1919
MED MINED111 Bare except continues silently scripts/benchmarks/bench.py:148
MED MINED111 Bare except continues silently scripts/benchmarks/bench.py:406
MED MINED111 Bare except continues silently scripts/bench_backends.py:100
MED MINED111 Bare except continues silently scripts/bench_backends.py:81
MED MINED111 Bare except continues silently scripts/exp_vsock_trim.py:97
MED MINED111 Bare except continues silently scripts/profile_boot.py:106
MED MINED111 Bare except continues silently scripts/profile_boot.py:100
MED MINED111 Bare except continues silently scripts/profile_boot.py:116
MED MINED111 Bare except continues silently scripts/exp_userspace.py:123
MED MINED111 Bare except continues silently scripts/exp_userspace.py:118
MED MINED111 Bare except continues silently scripts/exp_final.py:72
MED MINED111 Bare except continues silently scripts/exp_final.py:64
MED AUC001 [AUC001] No Repobility access matrix policy found: The repository uses web/API frameworks…
MED DKR007 Docker build context has no .dockerignore .dockerignore
MED DEPCUR-NPM npm package `@vitejs/plugin-react` is 2 major version(s) behind (4.7.0 -> 6.0.2) ui/package.json
MED DEPCUR-NPM npm package `@types/react-dom` is 1 major version(s) behind (18.3.7 -> 19.2.3) ui/package.json
MED DEPCUR-NPM npm package `zustand` is 2 major version(s) behind (3.7.2 -> 5.0.14) ui/package.json
MED DEPCUR-NPM npm package `@react-three/postprocessing` is 1 major version(s) behind (2.19.1 -> 3.0.4) ui/package.json
MED DEPCUR-NPM npm package `@react-three/fiber` is 1 major version(s) behind (8.18.0 -> 9.6.1) ui/package.json
MED DKR001 Docker final stage has no non-root USER scripts/ci/Dockerfile.base-rootfs:16
MED DKR001 Docker final stage has no non-root USER scripts/ci/Dockerfile.base-alpine-rootfs:15
MED WEB003 Public web service has no security.txt .well-known/security.txt
MED JRN003 Frontend API reference is not matched by discovered backend routes ui/src/hooks/useSwarmData.js:28
MED AUC002 [AUC002] Low visible authorization coverage in route inventory: Only 12.5% of discovered …
MED AUC012 [AUC012] FastAPI interactive docs may be exposed by framework defaults: FastAPI exposes /…
MED AGT012 Agent control bridge may listen on a network interface without visible auth src/smolvm/images/builder.py:11
MED AGT015 Remote install command pipes network code directly to a shell src/smolvm/presets/_scripts.py:52
MED AGT015 Remote install command pipes network code directly to a shell README.md:91
MED AUC009 [AUC009] Sensitive function route lacks elevated authorization evidence: A route appears … src/smolvm/dashboard/server.py:611
MED AUC009 [AUC009] Sensitive function route lacks elevated authorization evidence: A route appears … src/smolvm/dashboard/server.py:599
MED AUC004 [AUC004] Admin route does not show super_admin separation: An administrative route was de… src/smolvm/dashboard/server.py:623
MED AUC004 [AUC004] Admin route does not show super_admin separation: An administrative route was de… src/smolvm/dashboard/server.py:507
MED AUC004 [AUC004] Admin route does not show super_admin separation: An administrative route was de… src/smolvm/dashboard/server.py:496
LOW COMP001 [COMP001] High cognitive complexity: Function `run` has cognitive complexity 14 (SonarSou… scripts/exp_userspace.py:115
LOW COMP001 [COMP001] High cognitive complexity: Function `run_host_bash` has cognitive complexity 9 … examples/agent_tools/pydanticai_agent_b…:191
LOW COMP001 [COMP001] High cognitive complexity: Function `_parse_browser_start_output` has cognitive… examples/agent_tools/pydanticai_agent_b…:117
LOW DEPCUR-NPM npm package `autoprefixer` is minor version(s) behind (10.4.24 -> 10.5.0) ui/package.json
LOW DEPCUR-NPM npm package `three` is minor version(s) behind (0.170.0 -> 0.184.0) ui/package.json
LOW AIC003 Duplicated implementation block across source files ui/src/hooks/useSwarmData.js:2
LOW AIC003 Duplicated implementation block across source files src/smolvm/storage/_sqlite.py:16
LOW AIC003 Duplicated implementation block across source files src/smolvm/storage/_protocol.py:98
LOW AIC003 Duplicated implementation block across source files src/smolvm/runtime/qemu.py:372
LOW AIC005 Duplicate top-level symbol appears in a patch-style file scripts/exp_final.py:1
LOW AIC002 Source file name looks like an AI patch artifact scripts/exp_final.py:1
INFO MINED044 [MINED044] Js Console Log Prod: console.log left in code. Should be replaced with logger … ui/src/features/nebula/InteractionManag…:35
INFO MINED044 [MINED044] Js Console Log Prod: console.log left in code. Should be replaced with logger … ui/src/components/ui/CommandBar.jsx:9
INFO MINED067 [MINED067] Python Requests No Timeout: requests.get/post/etc. without timeout= can hang f… src/smolvm/host/manager.py:282
INFO MINED068 [MINED068] Rust Unsafe Block: unsafe { ... } block. Compiler safety guarantees disabled i… smolvm-core/src/tap.rs:60
INFO MINED059 [MINED059] Rust Expect In Prod: .expect(...) panics same as unwrap with a custom message. smolvm-core/src/route.rs:16
INFO MINED050 [MINED050] Stub Only Function: Function declared but body is just pass, return None, rais… src/smolvm/comm/base.py:60
INFO MINED050 [MINED050] Stub Only Function: Function declared but body is just pass, return None, rais… src/smolvm/cli/version_check.py:74
INFO MINED050 [MINED050] Stub Only Function: Function declared but body is just pass, return None, rais… scripts/bench_backends.py:69
INFO MINED064 [MINED064] Python Input Call: input() blocks for stdin. Inappropriate in services. examples/openclaw.py:239
INFO MINED049 [MINED049] Print Pii: Logging password/token/email/ssn directly to stdout. examples/openclaw.py:86
INFO MINED043 [MINED043] Http Not Https: Hardcoded http:// (not localhost) for endpoints that handle cr… examples/cua/legacy_report_fetcher/port…:290
INFO MINED043 [MINED043] Http Not Https: Hardcoded http:// (not localhost) for endpoints that handle cr… examples/cua/legacy_report_fetcher/ops/…:55
INFO MINED062 [MINED062] Python Dataclass No Fields: @dataclass over an empty class — unfinished model. src/smolvm/callbacks.py:72
INFO MINED062 [MINED062] Python Dataclass No Fields: @dataclass over an empty class — unfinished model. examples/agent_tools/pydanticai_reusabl…:58
INFO MINED062 [MINED062] Python Dataclass No Fields: @dataclass over an empty class — unfinished model. examples/agent_tools/pydanticai_agent_b…:93
INFO MINED055 [MINED055] Npm Install No Lockfile: Production image runs npm install (resolves new versi… examples/agent_tools/pydanticai_agent_b…:20
INFO MINED055 [MINED055] Npm Install No Lockfile: Production image runs npm install (resolves new versi… examples/agent_tools/openai_agents_tool…:20
INFO MINED055 [MINED055] Npm Install No Lockfile: Production image runs npm install (resolves new versi… examples/agent_tools/langchain_tool.py:20
INFO DEPCUR-NPM npm package `postcss` is patch version(s) behind (8.5.10 -> 8.5.15) ui/package.json
Reset to top 5 141 findings available (after auto-suppression of test files + won't-fix)

Issue body (markdown)

## Code-quality scan: `CelestoAI/SmolVM`

**Score: 64/100 (B)**  ·  191 findings  ·  scanned 2026-06-05 14:54 UTC  ·  58,591 LOC

| Severity | Count |
|---|---|
| CRITICAL | 4 |
| HIGH | 57 |
| MEDIUM | 50 |
| LOW | 11 |

📊 [Full filterable report](https://repobility.com/scan/f1293bd5-b6e8-4fcf-84d1-4baea17e58a3/)  ·  ![scorecard](https://repobility.com/scan/f1293bd5-b6e8-4fcf-84d1-4baea17e58a3/report.png?v=1780671281-s2)

### Top findings

1. **CRITICAL** `SEC022` — Database URL With Embedded Credential
   `src/smolvm/storage/__init__.py:32` · A07:2021 Identification & Authentication Failures
2. **CRITICAL** `MINED007` — Sql String Concat
   `examples/cua/legacy_report_fetcher/pipeline/import_reports.py:43` · CWE-89 · ✓ Repobility
3. **CRITICAL** `MINED107` — Missing import: `stat` used but not imported
   `src/smolvm/host/doctor.py:410` · ✓ Repobility
4. **CRITICAL** `MINED107` — Missing import: `warnings` used but not imported
   `src/smolvm/cli/main.py:1447` · ✓ Repobility
5. **HIGH** `SEC080` — Python: tarfile.extractall without filter
   `src/smolvm/host/manager.py:303` · A05:2021 Security Misconfiguration

---

**Security note**: this issue is public. If any flagged finding is a real, exploitable vulnerability, please redirect to your `SECURITY.md` policy or open a [private security advisory](https://docs.github.com/en/code-security/security-advisories/guidance-on-reporting-and-writing-information-about-vulnerabilities/privately-reporting-a-security-vulnerability) instead. We're happy to close this and re-submit privately.

---

_Filed automatically. Close this issue if not useful — we won't refile. Full report: https://repobility.com/scan/f1293bd5-b6e8-4fcf-84d1-4baea17e58a3/_
Already filed
This repo publishes a SECURITY.md policy and the scan contains 14 Critical/High security finding(s). Public issue filing would violate coordinated disclosure. Submit privately via the project's security reporting channel.
Megaproject â high spam risk
Could not determine 'CelestoAI/SmolVM' star count (GitHub API rate-limited or unreachable). When in doubt about repo size, prefer opening a focused PR or a discussion rather than an issue.
Already filed
95/203 findings (47%) on this scan are already flagged as test-file, won't-fix, or suppressed. The scan is too noisy to file as a single issue. Curate down to specific actionable findings, or address the FP source first.

The button opens GitHubâs new-issue page in a new tab. You will see the title + body pre-filled â review, edit if you want, then click GitHubâs "Submit new issue" button. Repobility never posts anything on your behalf.

For real security findings on big repos: use the project's SECURITY.md or private advisory flow instead of a public issue.