@blackbelt-technology/pi-dashboard-server
Supply chain provenance
Status for the latest visible version.
Maintainers
Accepted risks
Findings the reviewer chose to accept rather than block on.
| Source | Rule | Reason | Accepted by | When |
|---|---|---|---|---|
| semgrep | semgrep:dll-hijacking-commands | AI (semgrep): Legitimate cross-platform 'open file' implementation using rundll32 url.dll pattern. | ai | |
| dependencies | unvetted-dep:@blackbelt-technology/pi-dashboard-document-converter | AI (dependencies): First-party sibling package in same org/monorepo. | ai | |
| semgrep | semgrep:ssh-key-access | AI (semgrep): Test fixture verifying path-containment rejects .ssh access, not real credential theft. | ai | |
| phantom-deps | phantom-dep:@fastify/http-proxy | AI (phantom-deps): Plugin-style dep loaded via config; stable false positive. | ai | |
| phantom-deps | phantom-dep:bonjour-service | AI (phantom-deps): Used via config/indirect import; heuristic false positive for this package. | ai | |
| phantom-deps | phantom-dep:diff | AI (phantom-deps): Used via config/indirect import; heuristic false positive for this package. | ai | |
| phantom-deps | phantom-dep:@blackbelt-technology/pi-dashboard-extension | AI (phantom-deps): Same-org scoped dep; heuristic false positive. | ai | |
| phantom-deps | phantom-dep:@fastify/websocket | AI (phantom-deps): Plugin-style dep loaded via config; stable false positive. | ai | |
| phantom-deps | phantom-dep:jiti | AI (phantom-deps): jiti is a runtime loader; used via config rather than direct import — stable false positive. | ai | |
| semgrep | semgrep:hex-decode | AI (semgrep): Used in timing-safe key comparison (crypto.timingSafeEqual) — standard secure hashing pattern, not payload decoding. | ai | |
| semgrep | semgrep:child-process-import | AI (semgrep): keeper.cjs spawns the 'pi' process — core product functionality, not malicious exec. | ai | |
| semgrep | semgrep:child-process-spawn | AI (semgrep): Spawns 'pi' binary with logged stdio — documented product behavior, not exfiltration. | ai | |
| phantom-deps | phantom-dep:tsx | AI (phantom-deps): tsx is a runtime loader/executor; used via config/bin rather than direct import — stable false positive. | ai | |
| phantom-deps | phantom-dep:@fission-ai/openspec | AI (phantom-deps): Plugin/extension dep loaded dynamically; phantom detection is a false positive for this package. | ai | |
| phantom-deps | phantom-dep:@earendil-works/pi-coding-agent | AI (phantom-deps): Optional coding agent plugin; loaded dynamically, not directly imported — stable false positive. | ai | |
| semgrep | semgrep:etc-passwd-access | AI (semgrep): Fires only in test files asserting path traversal is rejected — not production credential harvesting. | ai | |
| install-scripts | install-script:postinstall | AI (install-scripts): Fixes PTY permissions for node-pty — documented pattern for native terminal bindings. | ai | |
| semgrep | semgrep:shady-links-raw-ip | AI (semgrep): Fires in CORS test asserting 127.0.0.1 is allowed — localhost test fixture, not exfiltration. | ai | |
| semgrep | semgrep:env-spread | AI (semgrep): Fires in test file saving/restoring process.env for test isolation — standard test pattern. | ai | |
| semgrep | semgrep:silent-process-exec-var | AI (semgrep): Same test-file dummy process as silent-process-exec; stable false positive for this package. | ai | |
| semgrep | semgrep:silent-process-exec | AI (semgrep): Fires in test file spawning a dummy sleep process to simulate headless session — not a reverse shell. | ai |
Versions (showing 8 of 8)
| Version | Deps | Published |
|---|---|---|
| 0.6.0 | 29 / 5 | |
| 0.5.4 | 21 / 4 | |
| 0.5.2 | 17 / 4 | |
| 0.4.5 | 17 / 4 | |
| 0.4.4 | 17 / 4 | |
| 0.4.3 | 17 / 4 | |
| 0.4.1 | 17 / 4 | |
| 0.3.0 | 16 / 4 |
v0.6.0
3 findingsAccessing SSH keys — strong indicator of credential theft Source: https://github.com/BlackBeltTechnology/pi-agent-dashboard/blob/70c087ba97d3b7a9997767f7c9c758ac49d998f2/src/lib/__tests__/resolve-file-mention.test.ts#L54 52 | await fsp.mkdir(path.join(home, ".ssh"), { recursive: true }); 53 | await fsp.writeFile(path.join(home, ".ssh", "id_rsa"), "PRIVATE\n"); > 54 | const res = await resolveFileMention("~/.ssh/id_rsa", { cwd }); 55 | expect(res).toBeNull(); 56 | });
DLL side-loading command detected — potential DLL hijacking Source: https://github.com/BlackBeltTechnology/pi-agent-dashboard/blob/70c087ba97d3b7a9997767f7c9c758ac49d998f2/src/system-open-capability.ts#L63 61 | export function buildOpenCommand(platform: NodeJS.Platform, resolved: string): OpenerCommand { 62 | if (platform === "darwin") return { cmd: "open", args: [resolved] }; > 63 | if (platform === "win32") return { cmd: "rundll32", args: ["url.dll,FileProtocolHandler", resolved] }; 64 | return { cmd: "xdg-open", args: [resolved] }; 65 | }
Published via CI/CD with Sigstore attestation (predicate: https://slsa.dev/provenance/v1). This is the strongest supply chain integrity signal.