registry  /  @panguard-ai/panguard-guard  /  1.8.4

@panguard-ai/panguard-guard@1.8.4

AI real-time endpoint monitoring and auto-response / AI 即時端點監控與自動回應

Static Scan Results

scanned 2d ago · by rust-scanner

Static analysis flagged 10 finding(s) at 72.0% confidence. This version is warn-only unless an AI or security-team review confirms malicious behavior.

Static reason
One or more suspicious static signals were detected.

Decision evidence

public snapshot
Behavioral surface
Source
ChildProcessCryptoEnvironmentVarsFilesystemNetworkShellWebSocket
Supply chain
HighEntropyStringsUrlStrings
ManifestNo manifest risk signals triggered.
scanned 97 file(s), 980 KB of source, external domains: 127.0.0.1, app.panguard.ai, atr.panguard.ai, fonts.googleapis.com, fonts.gstatic.com, integrate.api.nvidia.com, json.schemastore.org, nodejs.org, panguard.ai, registry.npmjs.org, tc.panguard.ai, www.apple.com

Source & flagged code

3 flagged · loading source
dist/daemon/index.jsView file
19import { writeFileSync, readFileSync, unlinkSync, existsSync, mkdirSync, lstatSync } from 'node:fs'; L20: import { execFile } from 'node:child_process'; L21: import { platform, homedir } from 'node:os'; ... L196: async function installLaunchd(execArgv, dataDir) { L197: const plistPath = join(homedir(), 'Library', 'LaunchAgents', `${SERVICE_NAME}.plist`); L198: // execArgv is already split into discrete parts (e.g. [nodePath, scriptPath]). ... L225: writeFileSync(plistPath, plist, 'utf-8'); L226: await execFileAsync('/bin/launchctl', ['load', plistPath]); L227: logger.info(`launchd service installed at ${plistPath} / launchd 服務已安裝`); ... L257: NoNewPrivileges=true L258: PrivateTmp=true L259: ExecStart=${[...execArgv, 'start', '--data-dir', dataDir].map(systemdQuote).join(' ')}
Medium
Install Persistence

Source writes installer persistence such as shell profile or service configuration.

dist/daemon/index.jsView on unpkg · L19
dist/dashboard/index.jsView file
4* L5: * Provides an HTTP server with WebSocket push for: L6: * - System status overview / 系統狀態概覽 ... L22: import { homedir } from 'node:os'; L23: import { lookup } from 'node:dns/promises'; L24: import { WebSocketServer } from 'ws'; ... L32: import { AuditChain, getAuditKey, anonymizeActorForExport, } from '../audit/index.js'; L33: // ESM-compatible __dirname resolution. import.meta.dirname is Node 20.11+ L34: // but the project's engines field already requires >=20, so fall back to ... L37: dirname(fileURLToPath(import.meta.url)); L38: // Package version, read live from package.json (same pattern as src/index.ts L39: // and src/cli/index.ts) so SARIF/evidence-pack exports never carry a stale
High
Cloud Metadata Access

Source reaches cloud instance metadata or link-local credential endpoints.

dist/dashboard/index.jsView on unpkg · L4
dist/llm-detect.jsView file
21package = @panguard-ai/panguard-guard; repositoryIdentity = panguard-ai; dependency = @panguard-ai/core L21: import { join } from 'node:path'; L22: import { createLogger } from '@panguard-ai/core'; L23: const logger = createLogger('panguard-guard:llm-detect');
High
Copied Package Dependency Bridge

Package metadata claims a different repository identity while copied source loads a runtime dependency bridge.

dist/llm-detect.jsView on unpkg · L21

Findings

2 High4 Medium4 Low
HighCloud Metadata Accessdist/dashboard/index.js
HighCopied Package Dependency Bridgedist/llm-detect.js
MediumNetwork
MediumEnvironment Vars
MediumInstall Persistencedist/daemon/index.js
MediumStructural Risk Force Deep Review
LowScripts Present
LowFilesystem
LowHigh Entropy Strings
LowUrl Strings