AI Security Review
scanned 2d ago · by lpm-firewall-aiNo confirmed malicious attack surface was established. Network and filesystem behavior is tied to explicit CLI commands for login, scanning, update checks, crash reporting, and optional AI review.
Static reason
No blocking static signals were detected.; previous stored version diff introduced dangerous source
Trigger
User runs periderm CLI commands such as scan, login, review --deep, watch, or whoami.
Impact
Can read source files during scans and write .periderm reports; can transmit findings/metadata to configured Periderm endpoints, Formspree crash endpoint, npm registry, or Groq when invoked.
Mechanism
Authenticated project scanner with report generation, optional upload, update check, and crash telemetry.
Rationale
Static inspection shows a legitimate CLI scanner with user-invoked network/reporting behavior and no lifecycle execution, payload staging, credential harvesting, destructive behavior, or hidden persistence. Scanner hints map to package-aligned source reading, AI review, telemetry, and update-check functionality rather than concrete malware.
Evidence
package.jsondist/bin.jsdist/index.jsdist/api.jsdist/config.jsdist/error-report.jsdist/scanner/repo-checks.jsdist/scanner/context-agent.jsdist/review/deep.js~/.periderm/config.json.periderm/last-report.md.periderm/last-report.json.periderm/ai-instructions.md.periderm/.gitignore
Network endpoints8
registry.npmjs.org/${name}/latest${apiUrl}/api/public/verify-token${apiUrl}/api/public/scan${apiUrl}/api/policies${apiUrl}/api/public/deep-review${apiUrl}/api/public/report-errorformspree.io/f/mqakppnnapi.groq.com/openai/v1/chat/completions
Decision evidence
public snapshotAI called this Clean at 90.0% confidence as Benign with low false-positive risk.
Evidence for block
- dist/error-report.js posts crash reports with command/cwd/platform/hostname to Formspree and configured API after CLI errors.
- dist/scanner/context-agent.js can call Periderm deep-review API or Groq when AI context/review is invoked.
- dist/index.js writes scan reports under target .periderm/ and stores login token in ~/.periderm/config.json.
Evidence against
- package.json has no install/preinstall/postinstall/prepare lifecycle hooks; only bin is ./dist/bin.js.
- dist/bin.js only starts update check and imports CLI entrypoint; no install-time execution.
- dist/scanner/repo-checks.js reads project files for scanner heuristics and emits findings/prompts; no exfiltration or execution of scanned code found.
- dist/api.js uploads structured scan findings to user-configured Periderm API after authenticated scan command, package-aligned behavior.
- dist/review/deep.js constrains AI tool reads to project root and excludes node_modules/dist/.git in search.
- No child_process, eval/vm/Function, native binary loading, persistence, destructive actions, or AI-agent control-surface writes found.
Behavioral surface
ChildProcessDynamicRequireEnvironmentVarsFilesystemNetwork
HighEntropyStringsUrlStrings
Source & flagged code
2 flagged · loading sourcedist/scanner/repo-checks.jsView file
313why: "Without code-splitting, a visitor to your landing page also downloads the admin dashboard, the settings screens, and every modal. First paint gets slower with every feature y...
L314: fix: "Wrap heavy or rarely-used routes in React.lazy(() => import('./Route')) + <Suspense>, or use your router's built-in lazy() API. Split third-party charts, editors and 3D scene...
L315: aiPrompt: `This project has ${routeFiles.length} route files but no dynamic import()/React.lazy usage. Identify the largest / least-visited routes (admin, settings, editors, charts...
Medium
Dynamic Require
Package source references dynamic require/import behavior.
dist/scanner/repo-checks.jsView on unpkg · L313dist/scanner/checks.jsView file
•matchType = previous_version_dangerous_delta
matchedPackage = periderm-cli@0.1.38
matchedIdentity = npm:cGVyaWRlcm0tY2xp:0.1.38
similarity = 0.958
summary = stored previous version shares package body but lacks this dangerous source file
Critical
Previous Version Dangerous Delta
This package version adds a dangerous source file absent from the previous stored version.
dist/scanner/checks.jsView on unpkgFindings
1 Critical3 Medium4 Low
CriticalPrevious Version Dangerous Deltadist/scanner/checks.js
MediumDynamic Requiredist/scanner/repo-checks.js
MediumNetwork
MediumEnvironment Vars
LowScripts Present
LowFilesystem
LowHigh Entropy Strings
LowUrl Strings