Перейти к основному содержимому
G

dsh-shadow-auditor

goodandready/dsh-shadow-auditor

Background security auditor for DeepSeek Harness: scans agent outputs for secret leakage, checks command safety before execution, and surfaces findings in a persistent audit log.

Установка

dsh plugin --profile web add github:goodandready/dsh-shadow-auditor

README

📦 @goodandready/dsh-shadow-auditor

Background Security Guard, Secret Leakage Scanner & Destructive Command Firewall for DeepSeek Harness

npm version license DSH Plugin Node version

All Author Projects

🇬🇧 English🇷🇺 Русский🇨🇳 中文说明

If you like this plugin, please star it on GitHub — it shows me that the plugin is useful to you and motivates me to keep developing it.

🐛 If you find a bug or would like to request a feature, open a GitHub issue in any language — I will review your proposal and implement useful suggestions in a future plugin version.

⚡ Overview

dsh-shadow-auditor provides real-time, non-intrusive background security auditing and command safety protection for DeepSeek Harness agents.

When autonomous agents write code, stage files, or run shell scripts, there is a constant risk of accidental API key/secret leakage into git diffs or unintentional execution of destructive terminal commands (rm -rf /, dangerous database wipes, credential exports).

dsh-shadow-auditor operates as an in-process security firewall, scanning code diffs for private tokens and verifying terminal commands before execution.

graph LR
    subgraph AgentExecution [DSH Agent Runtime Actions]
        Agent[🤖 Agent: Writes Code / Prepares Command] --> Intercept{Security Interceptor Hook}
    end

    subgraph SecurityEngines [dsh-shadow-auditor Engine]
        Intercept --> SecretScan[🔑 Secret & Token Scanner: High-Entropy & Key Patterns]
        Intercept --> CmdGuard[🛡️ Command Safety Firewall: Destructive Shell Blocker]
    end

    subgraph Enforcement [Action & Telemetry Pipeline]
        SecretScan -->|Clean| Pass[✅ Proceed Execution]
        SecretScan -->|Secret Detected| Block1[⛔ Block & Redact Token Payload]
        CmdGuard -->|Safe| Pass
        CmdGuard -->|Destructive Hazard| Block2[⛔ Block & Raise User Confirmation]
        Block1 --> AuditLog[📋 Security Audit Telemetry & Dashboard]
        Block2 --> AuditLog
    end

    style AgentExecution fill:#1e1e2e,stroke:#89b4fa,stroke-width:2px,color:#cdd6f4
    style SecurityEngines fill:#181825,stroke:#cba6f7,stroke-width:2px,color:#cdd6f4
    style Enforcement fill:#11111b,stroke:#a6e3a1,stroke-width:2px,color:#cdd6f4

✨ Key Capabilities & Modules

1. 🔑 Pre-Flight Secret & Credential Scanning (lib/guards/secrets.js)

  • Real-time regex and entropy scanning for API keys, private tokens, RSA/SSH keys, OAuth bearer secrets, and database credentials;
  • Intercepts code before transmission to LLMs or storage in version control;
  • Automatic token redaction and masking in logs.

2. 🛡️ Destructive Command Firewall (lib/guards/command.js)

  • Analyzes shell command AST and argument tokens before terminal execution;
  • Flags and blocks dangerous operations (unbounded rm -rf, disk wipes, fork bombs, destructive dd, accidental recursive permission overwrites);
  • Requires explicit user override for hazardous scripts.

3. 📋 Security Rules Engine & Live Dashboard (lib/client.js)

  • In-memory configurable rule matrix with toggleable strictness;
  • Security audit badge and incident log viewer in the DSH Web UI.

🛠️ Agent Tools Reference (3 Tools)

Tool NameParametersDescription
shadow_auditor_scan_diffdiff: stringScans a unified diff or code chunk for exposed API keys, credentials, and private tokens
shadow_auditor_check_commandcommand: stringEvaluates shell commands against destructive execution patterns and safety policies
shadow_auditor_rules_list(none)Returns currently active security rules, patterns, and enforcement modes

📦 Quick Installation

dsh plugin --profile web add @goodandready/dsh-shadow-auditor

⚙️ Configuration Reference (settings.yaml)

dsh-shadow-auditor:
  strictSecretScanning: true    # Block execution if API keys or tokens are detected in diffs
  blockDangerousCommands: true  # Block destructive shell commands automatically
  enableAuditBadge: true        # Display security shield badge in UI and approval dialogs


🔄 Version History

v0.2.9 (Security Evolution & Canonical Localization)

  • Canonical Language Standard: Complete runtime and client localization in English (en) and Chinese (zh); Russian localization managed via goodandready/dsh-russian-lang.
  • Packaging Hygiene: Clean distribution package with non-product files (AGENTS.md, index.md) purged; strict $\le 256$ KiB file limit.
  • Real-Time Interception Feed: Live telemetry event viewer with filtering by All, Shell Guard, Diff Gate, and High Risk.
  • Configurable Security Policies: Custom regex blocklists for shell commands and sensitive paths, with Enforce vs Audit-only modes.
  • Diff Gate Visual Inspector & Remediation: Inline inspector showing offending code snippets and actionable safe remediation hints.
  • File Integrity & Secret Anchor Monitor: Proactive interception of file tools touching .env, settings.yaml, and credential anchors.
  • Compliance Export: One-click export of audit logs to JSON or Markdown Operation Bills from UI or HTTP endpoints.

v0.2.8 (UI Unification & Settings Sync)

  • Unified UI Style (Aligned with dsh-clinebot): Redesigned client settings card into four structured section cards using native DSH design tokens (--dsw-alias-*), clean responsive grids, status badges, and styled form controls.
  • Complete Settings Synchronization: Added full reactive tracking and draft persistence for diffGateMode, enableSastScan, and enablePromptInjectionScan.
  • Hardened Error Handling: Replaced silent catch blocks with logger diagnostics.
  • Expanded Test Coverage: Added dedicated unit test suite test/ui-and-stability-028.test.mjs (26 test suites passing).

v0.2.7 (Stability Refinements & False-Positive Elimination)

  • Secret-Write False-Positive Fix: secret-write guard strictly targets actual secret and credential stores (.env, .credentials, SSH keys) without falsely matching developer scripts such as check_token.js or test suites test_secret.py.
  • Smart SAST Comment Filtering: Comments containing SQL keywords or eval examples no longer trigger code security alerts. Safe relative path traversal via import.meta.url and __dirname is permitted.
  • Diff Gate Resource Limits: Line scanning truncates beyond 2048 characters to protect against minified bundle stalls, and test files bypass prompt injection heuristics.
  • Bounded Chat /audit: Chat slash command reads recent 50 entries by default to prevent OOM on large logs (override with --all).
  • Tab Visibility Polling: Background tab polling in AuditShieldChip is paused when document is hidden.

v0.2.4 (DSH Authoring Standards & Settings UI Card Enhancements)

  • Comprehensive Settings Card Controls: exposed audit log controls in the Web UI card (enableAuditLog, maxFileSizeMb, retentionDays) with English and Russian localization (#34).
  • Elimination of Dual Registration: removed setTimeout delayed fallback to settings.section; settings card registers cleanly and atomically into settings.plugin.item (#35).
  • Disabled Form on Unavailable Snapshot: when settings snapshot is unavailable, form inputs and the save button are disabled (disabled: true) and a warning notice is displayed (#32).
  • Peer Dependencies Cleanup: removed unused @deepseek-ai/dsh-credentials from peerDependencies in package.json (#33).
  • Style Isolation: added data-dsh-plugin="dsh-shadow-auditor" to <style> tag to prevent style purging by adjacent plugins.
  • Design Contract: added docs/design/DESIGN.md establishing the design specifications for all plugin surfaces.

v0.2.3 (Exfiltration False-Positive Hotfix)

  • Resolved false-positive on legitimate API authorization: allows agents to read and pass API keys in headers (e.g. K=$(grep KEY ~/.dsh/.credentials.yaml) && curl ... -H "Authorization: Bearer $K").
  • Precise Exfiltration Payload Detection: network exfiltration guard now strictly targets actual credential file payload attachments (-d @.env, -F file=@..., --post-file=...), direct file piping (cat .env | curl/nc), input redirection (< .env), and remote file copies (scp/rsync).

v0.2.0 (Audit Suite, Risk Scoring & Exfiltration Protection)

  • Chat Slash Command /audit: Generates a detailed Operation Bill directly in the DSH chat with tool call counts, risk scoring (0–100), suspicious activity tables, and intercepted commands. Flags: --turn (last turn only), --all (all sessions), --json, --since=YYYY-MM-DD, --limit=N (defaults to 50).
  • Persistent Audit Log (AuditRecorder): Records audit events to <DSH_HOME>/shadow-auditor/<yyyy-mm>.jsonl with serialized Promise write queue (no concurrency interleaving), automatic .gz compression above 50 MB, and 30-day retention pruning.
  • Deep Core Telemetry Hooks: Global interception via tools/result to capture actual execution outcomes (result.isError), sanitized error messages, and turn boundaries via session/event (turn/end).
  • Network Exfiltration Guard: Intercepts and blocks network utilities (curl, wget, scp, ssh, nc, socat) attempting to transmit credential files (.env, id_rsa, .git-credentials, etc.).
  • Workspace Escape Redirect Guard: Blocks shell redirects > and >> pointing outside the workspace (e.g. /etc/, ~/.bashrc, %USERPROFILE%, cron).
  • Smart git push --force: Blocks --force targeting protected branches (main, master, prod) and protected remotes while preserving full rebasing freedom for local feature branches.
  • Deterministic Risk Scoring (0–100): Objective scoring without LLM overhead, featuring a 10-minute rolling window for cumulative repeat-tag and consecutive high-risk penalties.
  • Recursive Fixed-Point Redaction: The redactText / redactValue module iteratively sanitizes deeply nested structures from tokens, passwords, and .env assignments until stable.

v0.2.6 (Code-Security Diff Gate & SAST Engine)

  • Code-Security Diff Gate (lib/diff-gate/): Multi-category scanner analyzing file diffs and modifications on approval boundaries.
  • Normalized Finding Schema: Structured findings with stable identifiers (SEC-*, SAST-*, PI-*), severity, category, evidence range, explanation, and suggestion-only remediations.
  • Enhanced Secret Scanner: Added Shannon entropy scoring for high-entropy tokens and expanded API key detection.
  • Lightweight SAST Engine: Detects SQL injection, command injection in shell execution, path traversal, hardcoded passwords, and arbitrary code evaluation.
  • Prompt-Injection Heuristic Scanner: Detects instruction overrides, jailbreak markers, and confidential context exfiltration within modified files.
  • Gate Policy (disabled, warning, block): Configurable via Web UI settings card; block mode stops critical/high vulnerabilities from executing.
  • Auditable Inline Suppression: Support for // shadow-audit-ignore: <ruleId> comments to bypass false positives without disabling global rules.

v0.2.5 (Stability, Memory & UI Security Shield Overhaul)

  • Header Security Shield Slot (conversation.session.header.utilities): Injected real-time AuditShieldChip showing session security status and quick audit popup.
  • OOM Prevention in Audit Recorder: Added readRecent(limit) to stream and cap reading of recent records without unpacking historical compressed .gz archives.
  • Slash Command --limit=N: /audit defaults to the last 50 records tail with configurable --limit=N.
  • Lifecycle & Memory Leak Cleanup: Session turn and event caches are properly pruned on session/destroy and capped with LRU eviction.
  • Command Guard False-Positive Fixes: Refined regexes to safely allow harmless commands such as grep -i kill and systemctl status while strictly blocking destructive operations.
  • Reduced LLM Cognitive Overhead: Removed redundant shadow_auditor_rules_list tool to minimize model prompt pollution.

v0.1.4 (Settings Slot Registration Hotfix)

  • Declaration-Aware Slot Injection (settings.plugin.item): Plugin card registration now uses ctx.slots.inject, eliminating loader crashes caused by registering before the host entry declares the slot (slot is not declared).
  • Fallback Settings Section (settings.section): Added automatic fallback to a standalone settings section managed with a timer and disposed via ctx.effect if settings.plugin.item is unavailable.

v0.1.3 (Security Hardening & Stability Hotfix)

  • Compound Command Analysis (findDangerous): Chained command expressions (&&, ||, ;, newline continuations) are segmented and verified, preventing firewall bypasses via allowlisted prefixes (systemctl status && rm -rf /).
  • Strict Key Allowlisting (scanSecrets): Eliminated false-positive allowlisting of real API tokens that happen to contain the word "example".
  • Automatic Secret Masking (maskSecret): Intercepted credentials and tokens are redacted (sk-pr...****...1234) before being sent via HTTP API or rendered in Web UI.
  • Full-Length File Scanning: Removed arbitrary 8 KB cutoff when scanning file edits/writes; all files of any size are thoroughly inspected.
  • Cordis Lifecycle & Event Context: Tool registrations are encapsulated in ctx.effect for clean hot-reload teardown; fixed context scoping for approval/asked listener.
  • Web UI Performance & Stability: Eliminated disruptive timer-based form draft resets, scoped /audit polling to expanded state, and added unmount guards.
  • HTTP No-Store: Added Cache-Control: no-store header to the /dsh-shadow-auditor/audit endpoint.

📄 License

MIT © GooDAnDReaDY

Changes in v0.2.11

  • English & Chinese standardization for all score findings with 0 Cyrillic in codebase (#47)
  • Host-side one-click updater endpoint and settings banner (#48)
  • Hardened HTTP routes enforcing GET method and fail-closed caller verification (#49)
  • Internal planning documents untracked from repository and npm bundle (#50)
  • Purged stale release tarballs from working tree (#51)
  • Converted all hex and raw rgba styling to native DSH CSS design tokens (#52)
  • Declared required client module injection contracts in package.json (#53)
  • Tracked persistent audit record errors and unreadable log entry counters (#54)
  • Safe lifecycle locale registration with ctx.effect and undo disposal (#55)

Changes in v0.2.10

This release fixes two command-guard false positives, preserves recursive-delete and protected-file write protection, and adds safe debug diagnostics for best-effort failures.

The command firewall allows rm -f when no recursive flag is present. It continues to block rm -r and rm -rf, including combined or split recursive flags. Protected-file write checks run separately for shell commands and pipeline stages, so a stderr redirect in one command cannot color a later read. Reading settings.yaml with grep, cat, or sed without in-place mode is allowed; writes through redirects, tee, or in-place edits remain blocked.

The analyzer respects quoted and escaped separators. These changes do not alter the network, SQL, service-control, protected Git, device-write, or workspace-escape rules. The guard uses bounded command analysis rather than a complete Bash AST.

Похожие плагины