NSAuditor AI

Security Intelligence Without Data Exposure.

A modular, AI-assisted network security audit platform that scans, understands, prioritizes, and tracks vulnerabilities — without ever requiring your data to leave your infrastructure.

npm MIT License Node.js 20+ Tests


NSAuditor AI is the open-source core of a privacy-first security intelligence platform built by Nsasoft US LLC. It orchestrates 27 specialized scanning plugins against target hosts, fuses their results through an intelligent concluder, and optionally produces AI-powered vulnerability reports — all running entirely on your machine.

Zero Data Exfiltration by design — and stated precisely. We never see your scan data: no customer data is collected, transmitted, or stored by Nsasoft US LLC, and the product has no telemetry or phone-home endpoint. Scanning, analysis, license verification and report generation all run on your machine. Two clarifications that matter operationally: AI enrichment is opt-in and uses your own API keys (point it at a local Ollama and nothing leaves the host), while CVE correlation queries NIST's public NVD API by default — set NSAUDITOR_OFFLINE_ONLY=1 with a local NVD store to make it fully local, which reports an explicit coverage gap instead of a silent clean.

What's New

The pack-signing commands land in the CLI — reachable, not yet proven (CE 0.2.43 / Enterprise 0.38.0). nsauditor-ai compliance sign-pack --manifest <envelope> signs a chain-of-custody envelope with an operator-held Ed25519 key; compliance verify-pack establishes authorship from it — via --registry (your identity registry, with revocation and validity checked as at signing time) or --public-key (which discloses in its own output that those checks did not run). Both are thin forwards: Enterprise owns every decision and refusal, CE contributes the flags and the exit code. Verify does more than the signature — it recomputes every artifacts[].sha256 against disk, so a signed pack whose report was edited returns a failure with the signature still reading VERIFIED. Exit 0 verified · 1 a violation · 2 the run could not measure, and the third is never a failure. Requires the Enterprise package; an auditor can also verify offline with openssl and nothing of ours, because the exact signed bytes ship beside the signature. ⚠️ Also a correction affecting 0.2.42/0.37.0: a gzipped KEV/EPSS store — the default shape, since FIRST distributes EPSS only as .csv.gz — loaded with ZERO entries, so every finding reported no store rather than an exploit band. Misdiagnosis and silent degradation, not a false security verdict: findings carried a visible no-store marker throughout. Compression is now decided by file content rather than by filename.

The feed commands: offline CVE data can be hand-carried (CE 0.2.42 / Enterprise 0.37.0). nsauditor-ai feed bundle merges the NVD feed files you downloaded on a connected host into one portable archive; feed import reads one into the offline store on an isolated host — delivered as a restricted distribution rather than a public npm install, and amd64 only. The implementations are Enterprise-side (requires @nsasoft/nsauditor-ai-ee >= 0.37.0); the commands, flags and usage text are here, because this is the package with the bin. Optional --kev / --epss carry your own downloads from CISA and FIRST inside the archive, and --extras-dir places them on import and prints the environment lines to set — no exploit data ships with either package. bundle bundles the FEEDS YOU DOWNLOADED, never "your database": the offline store is a lossy derivation of an NVD feed and cannot be turned back into one. Import now names why it skipped records — about a quarter of a real NVD year file is skipped by design (withdrawn CVEs, entries with no CPE data) and a bare skipped 9353 reads as data loss; malformed records are called out separately because those are not expected. ⚠️ A bundle is integrity-checked, not authenticated — the recorded SHA-256 detects alteration in transit but cannot establish authorship, because it travels inside the archive it covers. Also here: --flag=value is now refused by name instead of being parsed as a valueless flag with the value discarded, which made --severity=high run a default-severity scan and report success — a wrong answer that looked like a right one; and the mDNS module-shape fallback was a TDZ self-reference, so it never once fell back. The air-gap delivery claims are earned back at this release, with two conditions that travel with them: the dependency-complete bundle is a restricted distribution rather than a public install, and it is amd64 only — no arm64 image is published.

The compliance report now verifies the signatures it renders (CE 0.2.41 / Enterprise 0.36.0). Paired with Enterprise 0.36.0 — no CE behaviour change; the peer floor stays >=0.2.40, unraised, because nothing in this cycle needs new CE code. Enterprise-side, a registry member may now carry the approver's public key beside its fingerprint, and when it does, every suppression signature in a compliance report is cryptographically checked — the Ed25519 suppression-signing capability this exercises is proven as of Enterprise 0.36.0, its verification gate having run against the published bytes and passed with a tamper negative control, and verified for approvers whose registry entry carries key material. Verdicts name the exact bytes they verified, a revoked key's bytes are still checked so signing-after-revocation becomes a cryptographic finding, and a MISSING verdict reads "not checked" rather than "failed" — a report must not accuse an operator of forgery for not having migrated. Ed25519 suppression signing was not yet proven when this shipped: it shipped the code that made the verification gate satisfiable, and that gate then passed at Enterprise 0.36.0.

The suppression-approval commands land in the CLI (CE 0.2.40 / Enterprise 0.35.0). compliance suppress | review | renew | keygen are new subcommands — thin forwards, the same discipline compliance attest established: Enterprise owns validation, defaults, the signing decision and every refusal; CE contributes flags and an exit code. keygen writes an approval keypair for a capability that was not yet proven at that release — Ed25519, private half 0600 — and prints an identity-registry member to paste, refusing to overwrite an existing signing key — regenerating one makes every signature it ever produced unverifiable, and nothing reports that until an auditor checks an archived approval. suppress signs the approval it writes when NSAUDITOR_SIGNING_KEY names a local Ed25519 key, and a malformed key fails at the command with nothing written. renew warns that renewing a signed approval invalidates its signature, because the expiry and the renewal record are inside the signed payload. Ed25519 suppression signing was thereby reachable and, at that release, not yet proven — its verification gate had not run against published bytes. It passed at Enterprise 0.36.0.

Exploit intelligence lands in Pro, and a risk-score claim gets corrected here (CE 0.2.39 / Enterprise 0.34.0). Paired with Enterprise 0.34.0 — no CE behaviour change. Enterprise findings that carry CVEs are now joined by CVE-ID against a local CISA KEV catalog and a local FIRST EPSS scores file, banded and ordered exploit-first, so a KEV-listed MEDIUM outranks an unexploited CRITICAL. Both stores are operator-populated — no feed data ships — and fail closed when stale, so an out-of-date catalog never reports "not exploited". The CE-side change is a correction this README owed you: "a composite risk score (severity × exploitability × impact × exposure)" described inputs the code never had. It computes CVSS weighted by verification status, with an uplift for initial-access techniques, and that is what it now says. prioritize() in the documented FindingQueue sorts by severity rank alone — the exploit-aware ordering is Enterprise-side. Community Edition scanning, plugins and output are unchanged.

The opt-in RFC 3161 register stops understating itself (CE 0.2.38 / Enterprise 0.33.1). Paired with Enterprise 0.33.1 — no CE behaviour change; wording only, and it is the wording npm freezes. Trusted timestamping is opt-in, became operator-configurable in 0.33.0, and has since been proven end to end against a real Time-Stamp Authority twice over: on the npm path, and separately from inside the published Marketplace container image. Six places in this README still told you the container leg was unverified. They now state what is true — RFC 3161 timestamping is opt-in via NSAUDITOR_TSA_URL, with no default ever and an outbound call to the authority you name — and keep the one caveat that survives: retained images at :0.32.11 and earlier carry no openssl at all, so nothing here speaks for them. Ed25519 suppression signing was unchanged at that release and still not reachable then — it became reachable in EE 0.35.0 via compliance suppress and is proven as of EE 0.36.0, verified for approvers whose registry entry carries key material.

See CHANGELOG.md for the full per-release history.

→ See a sample EE scan output: walk-through with synthetic Acme Corp AWS account (no signup required)


What It Does

Scan → Analyze → Prioritize → Track → Act
  • 27 scanner plugins probe networks across ICMP, TCP, UDP, HTTP, TLS, SNMP, DNS, SMB, RPC, mDNS, UPnP, WS-Discovery, MCP (Model Context Protocol), and more
  • Smart result fusion — the Result Concluder merges all plugin outputs into a normalized view with OS detection, service fingerprinting, and evidence linking
  • Structured finding format — all findings use a common schema with category, severity, evidence, and remediation — enabling consistent SARIF export and MCP integration
  • AI-powered analysis — send redacted scan results to OpenAI or Claude (your keys, your choice) for vulnerability assessments and remediation guidance
  • Risk-scored prioritization (Pro) — findings carry a composite risk score (CVSS weighted by verification status, with an uplift for initial-access techniques) and a status field, and an operator suppression workflow (accepted-risk / false-positive with expiry) keeps triaged findings out of the report until they expire
  • Continuous monitoring (CTEM) — watch mode rescans on a schedule, diffs against previous results, and fires webhook alerts on changes
  • MCP integration — expose scanning tools to AI assistants like Claude Code via Model Context Protocol
  • CI/CD ready — SARIF output with --fail-on severity gating for pipeline integration

Editions

NSAuditor AI is available in three editions: Community (free, MIT-licensed, no restrictions), Pro ($49/mo), and Enterprise ($2k+/yr).

Why upgrade to Enterprise?

If you're heading into a SOC 2, HIPAA, NIST CSF 2.0, PCI DSS, ISO 27001, CIS Controls v8, or GDPR Article 32 audit — or need to satisfy customer security questionnaires citing those frameworks, or an IG1 attestation for cyber-insurance renewal — Enterprise turns scan output into auditor-ready evidence packs that pass institutional scrutiny:

  • ☁️ 28 enterprise plugins — 27 cloud auditors across AWS / Azure / GCP, plus 1023 Zero Trust Assessment, which scores zero-trust posture (segmentation, encryption-in-transit, identity, lateral-movement risk) from a network-host scan — find the configuration risks an auditor will flag, before they do (CloudTrail integrity, KMS custody, S3 Object Lock, IAM shadow-admin paths, GCP IAM impersonation chains, Azure RBAC sprawl, and more)
  • 📋 7 compliance frameworks shipped — generate any combination from a single scan:
    • SOC 2 (AICPA TSC 2017) — 10 fully-covered + 4 partial controls
    • HIPAA Security Rule §164.312 — 7 covered + 3 partial Technical Safeguards; Zero BAA required (ePHI never leaves your infrastructure)
    • NIST CSF 2.0 Core (NIST CSWP 29, Feb 2024) — 13 covered + 10 partial Subcategories across 106 of CSF 2.0's 107 Subcategories; Subcategory-level mapping (auditor-canonical, not high-level Function/Category claims)
    • PCI DSS v4.0.1 (PCI SSC, June 2024 errata; v3.2.1 retired March 31, 2024) — 19 covered + 9 partial + 39 OOS sub-requirements across 67 of ~250 (MVP-67); sub-requirement-level mapping for QSA Report on Compliance workflow; Defined-vs-Customized Approach discipline per Appendix E (15 Defined-only sub-requirements enforced at schema layer); CHD Scope operator-attested via CDE Data Flow Diagram per Req 1.2.4; Card-brand AOC enforcement priority view (Visa CISP / Mastercard SDP / Amex DSOP / Discover DISC)
    • ISO/IEC 27001:2022 (ISO + IEC, Oct 2022; 2013 edition retired Oct 31, 2025) — 17 covered + 14 partial + 62 OOS across 93 Annex A controls (the complete Annex A universe); per-Annex-A-code mapping auditor-canonical for ISO/IEC 17021-1 certification body assessors; Statement of Applicability per Clause 6.1.3.d discipline + ISMS Clauses 4-10 OOS-by-design with 7 Major Nonconformity classes
    • CIS Critical Security Controls v8 (CIS, May 2021; v8.1 errata June 2024) — 17 covered + 23 partial + 113 OOS across 153 Safeguards / 18 Controls; per-Safeguard mapping with the Implementation Group cumulative discipline (IG1=56 cyber-insurance baseline / IG2 cumulative=130 / IG3 cumulative=153); no-certification-body attestation discipline (INPUT to your CSAT / CIS-CAT Pro self-attestation, never "CIS certified"); Cloud Companion Guide v8 shared-responsibility + CIS-Hardened-Image substrate-evidence credit (4.1/4.2/4.6)
    • GDPR Article 32 (Security of Processing) (Regulation (EU) 2016/679) — 4 covered + 5 partial + 2 OOS across 11 Art. 32 sub-measure units; GDPR Article 32 infrastructure substrate only — NOT GDPR compliance (GDPR is a 99-article legal regime; Art. 32 security-of-processing is the only article an infrastructure scanner can substrate-evidence; the rest is operator-side, out of scope by design). Four-factor proportionality (substrate for your "appropriate to the risk" determination, never an absolute pass/fail); personal-data-scope attestation (pair with your Art. 30 records of processing); Art. 83(4) lower fine tier (€10M/2%, not the €20M/4% headline tier); Art. 32(3)/Art. 42 cloud-provider certification-inheritance
  • 🔐 Evidence with a verifiable chain of custody — SHA-256 sidecars on every artifact, verifiable offline. RFC 3161 trusted timestamps are opt-in since EE 0.33.0 via NSAUDITOR_TSA_URL, require an outbound call to the authority you name plus the openssl binary, and were exercised against a live Time-Stamp Authority on the npm path on 2026-08-07: the auditor procedure openssl ts -verify returned OK, with a one-byte-mutated copy returning FAILED as the control. The :0.33.0 Marketplace image is proven too: on 2026-08-08 the same round-trip was driven from inside the pushed image against a real authority, verified with the image’s own openssl. Retained images at :0.32.11 and earlier carry no openssl at all, so nothing here speaks for them. Ed25519 suppression signing became reachable in EE 0.35.0 via compliance suppress and is proven as of EE 0.36.0 for approvers whose registry entry carries key material — a shipped entry point signs, and a one-character length-preserving tamper makes the report render signature FAILED verification. A fingerprint-only registry entry reads not checked by this report, which records that no check ran and never that one failed.
  • 🏛️ Zero Data Exfiltration architecture — no scan data is collected, transmitted, or stored by Nsasoft; reports are written to your local disk. Air-gapped operation once configured for it (NSAUDITOR_OFFLINE_ONLY=1 plus a local NVD store; a default run queries NIST's public CVE API). AI analysis happens locally (Ollama) or via your own API keys. Important for PCI DSS CDE-isolation threat models.
  • 🔗 GRC connectors — Vanta + Drata + Secureframe (Enterprise) — map compliance findings to your GRC platform's evidence/test records and push them at scan time (opt-in). Suppression-aware outcome mapping (Vanta) / structured records (Drata + Secureframe), idempotent retries, rate-limit handling, token redaction, and Zero-Data-Exfiltration egress redaction. Early-access, single-workspace; live validation against production tenants is in progress. See GRC Connectors below.
  • 🗄️ WORM posture VALIDATION — we read your bucket's S3 Object Lock configuration per CloudTrail trail bucket and fail the control when it is absent, in GOVERNANCE mode or under-retained. That is substrate FOR a SEC Rule 17a-4(f) / FINRA 4511 retention claim, not the claim itself: the engine WRITING artifacts into the immutable store is built and not reachable (no caller), so the retention guarantee stays yours to make about your own archive
  • 📊 SLA / MTTR tracking + recurring-scan attestation — the Type II operating-effectiveness evidence auditors actually demand (not just point-in-time snapshots)
  • 🎯 11 adversarial-audit Claude Code skills authored per the Per-Framework Adversarial-Audit Skill Pairing institutional pattern — Phase-4 Compliance/GRC chain 8-of-8 COMPLETE for all shipped frameworks (SOC 2 + HIPAA + NIST CSF + PCI DSS + ISO 27001 + CIS Controls v8 + GDPR Article 32 + GRC connector)

See sample EE scan output — full evidence pack against synthetic Acme Corp AWS account (no signup required) → Buy NSAuditor AI Enterprise Edition — $2k / $5k / $10k+ per year for 5 / 25 / unlimited seats + custom SLA. Onboarding call included.

Prefer to buy through AWS Marketplace?

Enterprise Edition is also available as an AWS Marketplace container listing — same product, same local ES256 license key, billed through your AWS account (consolidated billing / EDP drawdown, procurement-friendly; custom Enterprise terms via AWS Private Offers). The listing is public. If it doesn't resolve in your AWS region or account, contact us and we'll extend a Private Offer directly.

How Marketplace fulfillment works (ZDE and air-gap preserved — no runtime AWS dependency at scan time):

  1. Subscribe on the listing (tiers base / growth / scale mirror the 5 / 25 / unlimited-seat plans).
  2. Register your email + AWS account ID at the URL shown in the listing's usage instructions — your ES256 license key arrives by email.
  3. Pull and run the Docker image from the Marketplace registry (commands in the listing's usage instructions and your license email) with NSAUDITOR_LICENSE_KEY=<your key>. One tier-agnostic image — upgrades are just a new license key, never a new image. The container runs fully offline after that; billing lives in AWS, enforcement is your local key.

Feature comparison

Community (Free) Pro ($49/mo) Enterprise ($2k+/yr)
Network scanning
27 scanner plugins (SSH, HTTP, TLS, DNS, SMB, RPC, mDNS, etc.)
AI analysis (OpenAI, Claude, Ollama — your keys) ✅ basic ✅ enriched ✅ enriched
Structured findings + SARIF + CSV export
CTEM watch mode ✅ basic ✅ advanced ✅ advanced
Pro features (vulnerability assessment)
CVE matching + MITRE ATT&CK mapping
Risk scoring + prioritization
Exploit intelligence — CISA KEV + FIRST EPSS joined onto the CVE matches, exploit-first ordering (a KEV-listed MEDIUM outranks an unexploited CRITICAL); stores are operator-populated — no feed data ships
Parallel analysis agents
Enterprise — cloud scanning
28 enterprise plugins — 27 cloud (AWS / Azure / GCP) + 1 network-scan zero-trust check
Zero Trust assessment
Enterprise — compliance (7 frameworks)
SOC 2 (AICPA TSC 2017) — 10 covered + 4 partial controls
HIPAA Security Rule §164.312 — Zero BAA required
NIST CSF 2.0 Core — Subcategory-level mapping (106 of 107 Subcategories)
PCI DSS v4.0.1 — Sub-requirement-level mapping for QSA RoC (MVP-67)
ISO/IEC 27001:2022 — per-Annex-A-code mapping + SoA discipline (93 Annex A controls)
CIS Critical Security Controls v8 — per-Safeguard mapping + IG-cumulative discipline (153 Safeguards / 18 Controls)
GDPR Article 32 (Security of Processing) — Art. 32 infrastructure substrate (4 covered + 5 partial + 2 OOS / 11 sub-measure units); not GDPR compliance · Art. 83(4) lower fine tier
Multi-framework --compliance soc2,hipaa,nist-csf,pci-dss,iso-27001,cis-v8,gdpr from one scan
Enterprise — auditor-grade evidence
Evidence packs with SHA-256 chain-of-custody (RFC 3161 timestamps opt-in via NSAUDITOR_TSA_URL, exercised against a live TSA on both the npm path and the :0.33.0 container image; retained images :0.32.11 and earlier carry no openssl)
Suppression workflow with approver identity verification (Ed25519 SIGNING reachable 0.35.0, proven 0.36.0, verified per approver holding key material)
Ed25519 evidence-pack signingcompliance sign-pack signs the chain-of-custody envelope at an approval station with an operator-held key, so the scanning fleet stays keyless and authorship is relative to your own key custody, never a vendor attestation. compliance verify-pack establishes authorship from that operator-held key and re-hashes every artifact the envelope names, covering one framework envelope and the artifacts it enumerates — not the pack, not the directory. Verifiable offline with openssl alone.
Chain-of-custody manifests
SLA / MTTR tracking + compensating controls
Recurring-scan attestation (Type II operating-effectiveness)
WORM POSTURE VALIDATION on your own buckets (S3 Object Lock — SEC 17a-4 / FINRA 4511 substrate). The engine WRITING into the immutable store is built, not reachable
Enterprise — integration + deployment
GRC connectors — Vanta + Drata + Secureframe push (scan-time, opt-in)
Tabletop simulation + SIEM correlation — built, not reachable (no caller) 🚧
Air-gapped operation once installed — offline licence validation (local ES256, no callback, every tier) and offline CVE matching under NSAUDITOR_OFFLINE_ONLY=1, which is the Pro intelligence engine. The feed bundle / feed import hand-carry pipeline (EE 0.37.0) moves the NVD feeds you downloaded; it needs the Enterprise package installed but is not licence-gated, so a Pro licensee can run it.
Air-gapped DELIVERY — the dependency-complete offline installation tarball, install script and checksums (EE 0.37.0), distributed restricted, amd64 only. No container image bundle ships and arm64 images remain WITHDRAWN.

This repository is the Community Edition — fully functional, MIT-licensed, no restrictions, no telemetry. Pro and Enterprise features ship via the @nsasoft/nsauditor-ai-ee package and install alongside the CE binary once licensed.

Get Pro or Enterprise →


GRC Connectors (Vanta, Drata, Secureframe)

Enterprise feature. Requires @nsasoft/nsauditor-ai-ee.

Every compliance scan already produces a GRC-ready JSON evidence artifact. The GRC connectors take the next step: they map each NSAuditor compliance finding to your GRC platform's own evidence/test records and push them at scan time — so your Vanta, Drata, or Secureframe workspace reflects the latest cloud posture without a manual export/import round-trip.

Opt-in, and Zero-Data-Exfiltration by default. The push is off unless you set the environment variables below. When it runs, egress is redaction-gated: resource identifiers can be hashed or removed, the persisted audit log stores a body fingerprint (never the raw payload), and your API token is never written to any artifact. Nothing leaves your infrastructure that you didn't opt into.

# Enable the scan-time push (Enterprise)
COMPLIANCE_GRC_PROVIDER=vanta        # or: drata | secureframe
COMPLIANCE_GRC_TOKEN=<your API key>  # never serialized to artifacts
# Optional:
# COMPLIANCE_GRC_REDACTION=hash      # off | hash | remove  (egress identifier redaction)
# COMPLIANCE_GRC_CONTROL_MAP=/path/to/config.json  # provider config: Vanta control→test map, Drata connection ({connectionId, resourceId, schemaMap}), or Secureframe ({workspaceId, collectionId, schemaMap})
Platform Status Model
Vanta Connector + scan-time activation shipped Maps findings to Vanta test results; suppression-aware outcome mapping (pass / fail / passed-with-compensating-control), framework-dimensioned idempotency keys, retry with rate-limit backoff, circuit breaker
Drata Connector library shipped Pushes structured records via Drata Custom Connections; your Drata Test Builder rules (Advanced/Enterprise plans) evaluate them — the connector delivers evidence, your rules do the evaluation
Secureframe Connector library shipped (early-access) Pushes structured records to a workspace evidence collection; your Secureframe rules evaluate them — the connector carries the control status verbatim, it does not compute pass/fail. API shape published-assumed; live-tenant validation deferred (partner intake)

Reliability + audit-integrity built in: idempotent retries (a network-timed-out push won't create duplicate records), per-attempt + total-duration timeout caps, a consecutive-failure circuit breaker, token redaction across every log and error path, and a durable per-control push audit log written next to your scan artifacts.

Honest status. The Vanta, Drata, and Secureframe connectors are shipped, opt-in, and covered by an extensive test suite. Live validation against production Vanta / Drata / Secureframe tenants is in progress as partner onboarding proceeds — until it completes, treat production use as early-access and validate against your own tenant first. This is a single-workspace, operator-configured connector; it is not a multi-tenant managed sync. (Secureframe's API shape is published-assumed pending partner intake; its idempotency keys are SENT but vendor-side dedup is unverified.)


Quick Start

# Install globally
npm install -g nsauditor-ai

# See all flags, subcommands, and worked examples
nsauditor-ai --help

# Configure (optional — scans work fully offline without AI)
cat > .env << 'EOF'
AI_ENABLED=true
AI_PROVIDER=ollama              # openai | claude | ollama
OLLAMA_MODEL=llama3             # For local AI (no API key needed)
# OPENAI_API_KEY=sk-...         # Or use OpenAI
# ANTHROPIC_API_KEY=sk-ant-...  # Or use Claude
OPENAI_REDACT=true
EOF

# Scan a host with all plugins
nsauditor-ai scan --host 192.168.1.1 --plugins all

# Scan a subnet in parallel
nsauditor-ai scan --host 192.168.1.0/24 --plugins all --parallel 10

# Start the MCP server for AI assistants
nsauditor-ai-mcp

Or run without installing:

npx nsauditor-ai scan --host 192.168.1.1 --plugins all

Or clone and run from source:

git clone https://github.com/nsasoft/nsauditor-ai.git
cd nsauditor-ai
npm install
node --env-file=.env cli.mjs scan --host 192.168.1.1 --plugins all

Results land in ./out/<host>_<timestamp>/:

File Contents
scan_conclusion_raw.json Full unredacted conclusion (admin reference)
scan_conclusion_raw.html Admin RAW HTML with filters and full detail
scan_response_ai_payload.json Redacted payload sent to AI
scan_response_ai.json Raw AI API response
scan_response_ai.txt AI conclusion (markdown)
scan_response_ai.html Styled HTML report with CVE links and badges
scan_results.sarif.json SARIF 2.1 — only with --output-format sarif (renamed scan_<host>.sarif.json for multi-host runs)
scan_results.csv CSV — only with --output-format csv
scan_report.md GitHub-flavored Markdown report — only with --output-format md (or markdown)

Works on Node 20+ (tested on Node 22).


Plugins

Core Scanners

ID Name Protocols Purpose
001 Ping Checker ICMP/ARP Reachability + TTL-based OS hints
002 SSH Scanner TCP:22 Banner, version fingerprinting, timeout policy
003 Port Scanner TCP/UDP Bulk open port detection (populates context for downstream plugins)
004 FTP Banner Check TCP:21 FTP daemon version detection
005 Host Up Check TCP/UDP Quick multi-probe reachability confirmation
006 HTTP Probe TCP:80/443 Headers, server token, vendor hints
007 SNMP Scanner UDP:161 sysDescr, OIDs, serial/hardware/firmware extraction
008 Result Concluder Meta Fuses all plugin outputs (always runs last)
009 DNS Scanner TCP/UDP:53 version.bind CHAOS/TXT + A record lookup
010 Webapp Detector HTTP Technology stack fingerprinting via wappalyzer
011 TLS Scanner TCP:443+ TLS version + cipher enumeration per port
012 OpenSearch Scanner HTTP:9200+ OpenSearch/Dashboards version + Linux/Node.js hints
013 OS Detector Meta Derives distro/OS from all prior banners with TTL fallback
014 NetBIOS Scanner UDP:137/TCP:445 NetBIOS/SMB enumeration + SMB2 null session probe
015 SUN RPC Scanner TCP/UDP:111 RPC portmapper service discovery (NFS, mountd)
016 WS-Discovery UDP:3702 Multicast device discovery with XML metadata
024 TCP SYN Scanner TCP (Nmap) SYN half-open scan via Nmap wrapper (optional)
040 TLS Certificate & Cipher Auditor TCP:443+ Cert expiry, chain integrity, hostname mismatch, weak ciphers, deprecated protocols, key strength
050 TRIBE v2 Neural API Security Probe TCP/HTTP:8080 Debug leak detection, stack traces in errors, header security, CORS misconfiguration, unauthenticated routes
060 DNS Security Auditor DNS/UDP:53 SPF/DKIM/DMARC, dangling CNAMEs, DNSSEC, NS delegation, zone transfer exposure, MX security, CAA records
070 MCP Scanner TCP/HTTP+SSE Detects MCP (Model Context Protocol) servers on candidate ports (1967, 3000, 3005, 5173, 6274, 6277, 8000, 8090). Audits for cleartext transport (HTTP not HTTPS), missing/anonymous auth, anonymous tool enumeration, deprecated protocol versions, and Inspector exposure on non-loopback. Maps findings to CWE/OWASP/MITRE per the FindingSchema. STDIO-transport MCP servers are out of scope (no network port).

Discovery Plugins

Name Purpose
ARP Scanner MAC resolution + OUI vendor lookup + OS hints
mDNS/Bonjour Scanner Local service discovery + friendly names from TXT records
UPnP/SSDP Scanner Device discovery + description XML parsing
DNS-SD Scanner DNS Service Discovery announcements
LLMNR Scanner Link-local multicast name resolution
DB Scanner Database service detection (MySQL, PostgreSQL, Redis, etc.)

Pro/Enterprise Plugins (via @nsasoft/nsauditor-ai-ee)

28 enterprise plugins: 27 cloud auditors across AWS, GCP and Azure substrate, plus 1023 Zero Trust Assessment, which scores zero-trust posture (segmentation, encryption-in-transit, identity, lateral-movement risk) from a network-host scan — all mapped to AICPA Trust Services Criteria 2017 (10 covered + 4 partial controls). EE plugins live in the disjoint 1000+ ID range; CE reserves 001-099. Once licensed, the EE package installs alongside the CE binary and discovers automatically. A cloud --host pass auto-scopes on cloudProvider, which only the 27 declare, so 1023 never runs on a cloud pass. It runs on a network-host scan with the full plugin set — measured on the shipped CLI, selecting it by id on its own does not work, because it requires the host to be confirmed up by a discovery plugin.

Watch a sample scan run end-to-end — synthetic Acme Corp AWS account + home-office router. Real real scan output, no signup required. See the transitive SG chain reachability finding, the multi-region GuardDuty audit, the dnsmasq CVE detection, and what the evidence pack actually looks like.

Buy NSAuditor AI Enterprise Edition · $2k / $5k / $10k+ per year · 5 / 25 / unlimited seats · onboarding call included.

All EE plugins follow the same institutional plumbing pattern:

  • Thread H _instrumentSdkClient wrap — per-API AccessDenied counter + ZDE structural guard (verb-prefix denylist regex blocks Get* / Retrieve* / Read* value-reading APIs at SDK boundary) + idempotency sentinel
  • Throttle-retry — exponential-backoff retry on Throttling* / RequestLimitExceeded / TooManyRequestsException with per-command wall-clock budget
  • Thread F conclude() field-selection allowlist — structured-data ZDE: only AWS-public-namespace identifiers + integer counts flow through to findings; customer policy content / key material / encrypted payloads NEVER propagate
  • conservative_classifier_principle — emit INFO+evidenceGap with verification prompt when ARN-shape disambiguation needs a follow-up API call; vacuous PASS on partial substrate evidence is treated as the worst SOC 2 reporting outcome
  • aws_string_case_normalization — trim + lowercase AWS-returned strings at SDK-helper boundary; protects against the 7+ recurrent classes of case-sensitivity fail-open (IAM Condition keys, Lambda runtimes, KMS aliases, Effect/Action discriminators, FULL_ADMIN sentinel, S3 region)
ID Name Tier What it audits
1020 AWS S3 Security Enterprise Bucket hardening: public-access block, encryption at rest, versioning, Object Lock COMPLIANCE-mode, MFA Delete, access logging. CC6.1 / C1.1 / C1.2
1021 GCP Cloud Scanner Enterprise Firewall rules + IAM bindings + Storage bucket public-access. CC6.1 / CC6.6 / C1.1
1022 Azure Cloud Scanner Enterprise NSG rules + RBAC role assignments + Storage account hardening. CC6.1 / CC6.6 / C1.1
1023 Zero Trust Checker Enterprise Segmentation, encryption, identity, lateral-movement scoring across the network surface. CC6.1 / CC6.6
1024 GCP Cloud Storage Auditor Enterprise Multi-cloud parity sister of plugin 1020 AWS S3. 6 dimensions: bucket-level IAM public bindings (allUsers = CRITICAL, allAuthenticatedUsers = HIGH), Uniform Bucket-Level Access (closes legacy bucket-ACL false-PASS class), Object Versioning, Bucket Lock retention policy (SEC 17a-4 / FINRA 4511 WORM-alignment), CMEK via Cloud KMS (four-tier custody ladder), bucket-level access logging. CC6.1 / CC6.6 / CC7.1 / C1.1 / C1.2 / A1.2
1025 GCP IAM Project-Level Auditor (v2 — EE 0.7.1) Enterprise First plugin in the v0.7.x GCP-IAM-deep-audit cohort. Mirrors plugin 1030 AWS IAM Deep Auditor's shadow-admin discipline adapted to the GCP IAM data model. 7 dimensions (EE 0.7.1 v2 expansion): project-scope public-member bindings (allUsers = CRITICAL, allAuthenticatedUsers = HIGH at the project root), admin-equivalent role inventory across 12 predefined sensitive roles, IAM Conditions classifier on sensitive-role bindings (restrictive CEL = PASS, absent on sensitive = MEDIUM, vacuous = LOW + evidenceGap), custom-role permission audit (* wildcard = CRITICAL; admin-equivalent permission intersection across 16-entry allowlist = HIGH), SA key custody (user-managed long-lived keys = HIGH; 90-day rotation threshold uplift), SA impersonation graph BFS (transitive serviceAccountTokenCreator/User/OpenIdTokenCreator chains — 2-hop = HIGH, 3+ hop = CRITICAL; project-scope grants surface independently as CRITICAL), Organization Policy constraint enumeration (4 sensitive constraints incl. iam.disableServiceAccountKeyCreation). Honors GOOGLE_IMPERSONATE_SERVICE_ACCOUNT via utils/gcp_auth.mjs. CC6.1 / CC6.6 / C1.1
1030 AWS IAM Deep Auditor Enterprise Shadow-admin path detection via BFS over PassRole / AssumeRole / federated trust. Restrictive-Condition allowlist for Auth0 / Okta / Cognito OIDC patterns. CC6.1
1040 AWS CloudTrail Operational Integrity Enterprise Trail health + CloudWatch alarm coverage against CIS AWS Benchmark §3.1–3.14 + AWS Config + cross-account S3 trail-destination WORM verification (SEC 17a-4 / FINRA 4511). CC7.2 / CC7.3
1050 AWS API Gateway Assurance Enterprise Per-route authz classifier (NONE=CRITICAL), custom-domain TLS policy, stage-level access logging + WAF, public-endpoint exposure. Entry-point evidence for serverless deployments. CC6.1 / CC6.6 / CC6.7 / CC7.1 / A1.2
1060 AWS DynamoDB Audit Integrity Enterprise First "audit-the-auditor" plugin. PITR + deletion protection + KMS-CMK custody + resource-policy presence + CloudTrail data-event cross-reference. CC6.6 / CC7.1 / C1.1 / PI1.5
1070 AWS KMS Auditor Enterprise Per-key rotation + wildcard-Principal classifier across 5 severity tiers (covers Principal.AWS / Federated / Service / CanonicalUser + NotPrincipal-Allow + NotAction-Allow + glob actions). CC6.3 / C1.1
1080 AWS Lambda Security Enterprise Runtime EOL detection (CRITICAL on nodejs16.x / python3.7 etc.), public function URLs, resource-policy wildcards, env-var secret-name detection (ZDE-safe), VPC config, KMS custody, DLQ. CC6.1 / CC6.6 / CC7.1 / C1.1
1090 AWS Secrets Manager + SSM Parameter Store Enterprise Rotation cadence + KMS-CMK custody + SecureString classification + secret-name detection. ZDE-critical: never calls GetSecretValue / GetParameter — metadata only. Verb-prefix denylist blocks Get* / Retrieve* / Read* at the SDK boundary. CC6.1 / CC6.6 / C1.1
1100 AWS CodePipeline + CodeBuild Enterprise Source-stage encryption, privilegedMode detection, buildspec drift, secrets-via-env vs Secrets-Manager, IAM wildcard-Action, artifact-store encryption, stale-execution detection. CC6.1 / CC7.1 / CC8.1 / C1.1
1110 IAM Effective Decrypt-Path Auditor Enterprise Cross-plugin reconciler — walks IAM policies for kms:Decrypt / ReEncrypt* / GenerateDataKey grants and cross-references against KMS key policies to compute the effective decrypt path. Closes the NotAction-implicit-decrypt false-PASS class. CC6.1 / CC6.6 / C1.1 / C1.2
1120 AWS S3 Lifecycle + Cross-Region Replication Enterprise Lifecycle policy enumeration + cross-region replication topology. Cross-region destination-bucket reachability check closes silent-PASS where replication FAILED but emitted clean. **C