剑庭安
首页
黑客安全首页全部安全栏目 黑客技术黑客技术、渗透测试、漏洞利用工具与教程 安全软件安全工具、扫描器、检测与审计软件 病毒分析恶意软件分析、样本、逆向与沙箱 CTF思路CTF 题目、writeup、解题思路与工具 防护思路防御技术、加固、检测响应与蓝队 红蓝攻防红队攻击模拟、蓝队对抗、攻防演练 漏洞知识库漏洞、CVE、PoC、EXP 与安全研究
逆向|反编译
PHP源码PHP 网站源码、程序、系统 APP源码安卓/iOS APP 源码 ASP源码ASP 网站源码与程序 NET源码.NET 网站源码与系统 小程序源码微信/支付宝小程序源码 Dedecms风格模板Dedecms 织梦风格模板 Empirecms风格模板EmpireCMS 帝国风格模板 Discuz商业模板/插件Discuz 商业模板与插件 WordPress主题/插件WordPress 主题与插件 其它源码、模板其它各类源码与模板 游戏源码游戏源码与引擎项目 加密货币源码加密货币、区块链、钱包、USDT/比特币相关源码与工具 手游源码手机游戏源码、服务端、客户端与引擎项目 传奇源码热血传奇、传奇世界、复古传奇等客户端/服务端/引擎源码 页游源码网页游戏、H5 游戏、浏览器游戏源码 端游源码电脑单机游戏、PC 网游客户端/服务端源码
最新万能免驱动支持所有型号打印机下载程序 日历天气老黄历 · 每天同步真实日期与天气
站长工具站长工具 自助开通会员浏览该分类 其他资源qtziy SEO工具SEO工具 站群源码站群源码 泛程序泛程序 蜘蛛模板蜘蛛模板 蜘蛛池蜘蛛池 外链工具外链工具
搜索 自助开通会员🔓 破甲 API
登录 注册
首页 分类列表 安全软件 nsauditor-ai - NSAuditor AI …
nsauditor-ai - NSAuditor AI — Open-source, AI-powered network sec 安全软件 点击放大
作者:admin 发布:2026-10-05

nsauditor-ai - NSAuditor AI — Open-source, AI-powered network sec

项目说明NSAuditor AISecurity Intelligence Without Data Exposure.A modular, AI-assisted network security audit platform that scans, understands, prioritize…
资源可下载 免费下载 0 条讨论
会员资源
开通会员后即可下载全部资源。
登录后开通会员
会员方案
138浏览量
0讨论
2下载链接
可下载资源状态
内容可验证
更新 2026-10-05
人工审核发布
评论区答疑

nsauditor-ai - NSAuditor AI — Open-source, AI-powered network sec

项目说明

NSAuditor AI

Security Intelligence Without Data Exposure.

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

![npm]()
![MIT License](LICENSE)
![Node.js 20+]()
![Tests](#tests)

---

NSAuditor AI is the open-source core of a pri 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 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 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 C queries NIST's public NVD API by default — set NSAUDITOR_OFFLINE_ONLY=1 with a local N to make it fully local, which reports an explicit co gap in the scan instead of a silent clean (in Enterprise 1.2.0 that gap reaches no compliance control, so a control only the missing CVE rows would fail can read PASS).

What's New

Latest: CE 0.2.56 + Enterprise 1.2.0 — *the delta refuses five more ways a finding could read as fixed without being fixed*.
The Pro/Enterprise report --since delta (introduced in CE 0.2.55) now refuses five more ways a
finding could read as fixed without being fixed: a UDP service that did not answer in the
other run (port-not-measured, listed as <port>/udp), a CVE row whose lookup failed there, a
finding of an analysis agent that did not run, and — new in this release — **an Enterprise package
that failed to load**, which used to leave its plugins running while the scan skipped its intelligence,
analysis-agent and compliance stages without a word. It is now
named on stderr and recorded on the scan's conclusion, and the delta refuses that host's agent and
C rows as e. And a CVE row that while the same program and
still answer is ed — the data moved, not the estate.
Not refused in this release: when the two scans ran different --plugins, a row that an analysis agent or
the C derived from the output of a plugin one scan did not request can read resolved (and in Enterprise,
with SLA tracking on, MTTR counts it closed and the control it failed can read PASS) or new — keep --plugins
identical between compared scans. Every
reason's detail names its run absolutely ("this run", "the baseline run"), and two scans of one host
whose plugin runs finished in the same second get distinct directories. Plugin counts UNCHANGED at 27 Community + 29 Enterprise; every co matrix UNCHANGED; **Enterprise 1.2.0
requires this release** (nsauditor-ai >= 0.2.56). The free last- webhook alerting delta
is untouched and stays free; in this release it does not fire on a service, or finding change (see
Continuous Monitoring below).

For the full per-release history — every prior cycle, in detail — see CHANGELOG.md. This README keeps only the current release headline.

What It Does

  • 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 e linking

  • Structured finding format — all findings use a common schema with category, se, e, 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 assessments and remediation guidance

  • Risk-scored prioritization (Pro/Enterprise) — findings carry a composite risk score (C by status, with an uplift for initial-access techniques) and a status field. Enterprise adds an operator suppression workflow for compliance findings (accepted-risk / false-positive with expiry): the compliance report shows a suppressed finding as suppressed, naming its approver and rationale, and an expired suppression no longer applies

  • Continuous monitoring (CTEM) — watch mode rescans on a schedule and compares each host's scan with its previous one; in this release its webhook alert does not fire on a service, or finding change

  • MCP integration — expose scanning tools to AI assistants like Claude Code Context Protocol

  • CI/CD ready — SARIF output with --fail-on se gating for pipeline integration
  • Editions

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

    → What Pro and Enterprise add — the long-form comparison behind the table below.

    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 + CS | ✅ | ✅ | ✅ |
    | CTEM watch mode | ✅ basic | ✅ ad | ✅ ad |
    | Pro features | | | |
    | C + MITRE ATT&CK mapping | — | ✅ | ✅ |
    | Risk scoring + prioritization | — | ✅ | ✅ |
    | Exploit intelligence — CISA KEV + FIRST EPSS joined onto the C, exploit-first ordering (a KE MEDIUM outranks an unexploited CRITICAL); stores are operator-populated — no feed data ships | — | ✅ | ✅ |
    | Parallel analysis agents | — | ✅ | ✅ |
    | Client reporting — report --format executive renders a completed run as a self-contained, print-ready HTML report with optional co branding (--brand); --format jira writes a Jira-importer CSV. ⚠️ The Jira import mapping is done in Jira and has not been against a live Jira instance. | — | ✅ | ✅ |
    | Enterprise — cloud scanning | | | |
    | 29 enterprise plugins — 28 cloud (AWS / Azure / GCP) + 1 network-scan zero-trust check | — | — | ✅ |
    | Zero Trust assessment | — | — | ✅ |
    | Enterprise — compliance (8 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-le (106 of 107 Subcategories) | — | — | ✅ |
    | PCI DSS v4.0.1 — Sub-requirement-le for QSA RoC | — | — | ✅ |
    | ISO/IEC 27001:2022 — per-Annex-A-code mapping + SoA discipline (93 Annex A controls) | — | — | ✅ |
    | CIS Critical Security Controls v8 — per-Safeguard mapping + IG-cumulati (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 | — | — | ✅ |
    | NIST SP 800-171 Rev 2 — e substrate for CMMC Level 2 preparation; all 110 Rev 2 requirements enumerated (2 covered + 49 partial + 59 OOS). Not a certification, not a FedRAMP authorization, no MET/NOT MET , no SPRS score | — | — | ✅ |
    | Multi-framework --compliance soc2,hipaa,nist-csf,pci-dss,iso-27001,cis-v8,gdpr,nist-800-171 from one scan | — | — | ✅ |
    | Enterprise — auditor-grade e | | | |
    | E 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 appro (Ed25519 SIGNING reachable 0.35.0, proven 0.36.0, per appro key material) | — | — | ✅ |
    | Ed25519 e signing — compliance sign-pack signs the chain-of-custody en at an appro with an operator-held key, so the scanning fleet stays keyless and authorship is relative to your own key custody, never a attestation. compliance establishes authorship from that operator-held key and re-hashes every artifact the en names, co one framework en and the artifacts it enumerates — not the pack, not the directory. offline with openssl alone. | — | — | ✅ |
    | Chain-of-custody manifests | — | — | ✅ |
    | SLA / MTTR tracking + compensating controls | — | — | ✅ |
    | Recurring-scan attestation (Type II operating-effecti) | — | — | ✅ |
    | WORM POSTURE 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 (local ES256, no callback, every tier) and offline C 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 N 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 /nsauditor-ai-ee package and install alongside the CE binary once licensed.

    → Get Pro or Enterprise →

    ---

    Prefer to buy through AWS Marketplace?

    Enterprise Edition is also a 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.

    Quick Start

    Or run without installing:

    Or clone and run from source:

    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 C 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).

    ---

    MCP Server

    > Heads-up on AI-client fabrication. Some MCP clients (notably Claude Desktop) can silently substitute AI-generated responses if a tools/call times out, instead of surfacing the failure. Every response from this server now ends with a ── MCP call ── footer and a UUID. Run nsauditor-ai mcp <id> to confirm a response is genuine before acting on it. Full background and workflow: docs/mcp-.md. When in doubt, generate compliance e via the CLI (nsauditor-ai scan ...), which has no MCP client in the path.

    Expose scanning capabilities to AI assistants via Model Context Protocol:

    Run the installed bin, never npx nsauditor-ai-mcp: nsauditor-ai-mcp is a bin inside the nsauditor-ai package, and when npx does not find that bin it looks the name up on the npm registry instead — which ne this server. For Claude Desktop, paste the block
    nsauditor-ai mcp install-key prints (Claude Desktop Setup, below).

    The ser seven tools and lists all seven to every client. The licence is
    checked when a tool is CALLED, not when the list is served — so an unlicensed call returns
    an explicit 🔒 refusal naming the tier it needs, never an empty result that reads as "nothing
    found". A higher tier does not add tools; it unlocks the ones already in the list.

    A on every tier:

    | Tool | Purpose |
    |---|---|
    | scan_host | Run a full plugin scan against a host — service detection, OS fingerprint and the flags the service checks leave on each service record (weak SSH algorithms, SNMP community, weak TLS protocols / ciphers and a self-signed certificate, the MCP ser; anonymous FTP login and zone transfer only when FTP_CHECK_ANON / DNS_CHECK_AXFR are set — both off by default). It does NOT look up CVEs, run the analysis agents, or return the HTTP probe's dangerous methods (006), SMB null sessions (014), the TLS-certificate / debug-endpoint / DNS-security auditors' findings (040 / 050 / 060) or Enterprise's zero-trust assessment (1023), so zero findings is not a clean (use get_ per service CPE and probe_service for those plugins — both Pro — or the CLI scan with the Enterprise package and a Pro or Enterprise licence) |
    | list_plugins | List a scanner plugins with their IDs, priorities and requirements |
    | compliance_matrix | Return the shipped co matrix for a framework — Covered / Partial / Out of scope, with the per-group out-of-scope reasons. Needs the Enterprise pack installed: the matrices are its data, so on a Community-only install this fails closed with an install instruction rather than returning an empty matrix (an empty matrix is what gets filled in with a guess) |

    Unlocked by Pro (licence key + /nsauditor-ai-ee):

    | Tool | Purpose |
    |---|---|
    | probe_service | Run one specific plugin against a single host:port |
    | get_ | Look up known CVEs for a CPE (Common Platform Enumeration) string via the NVD API |

    Unlocked by Enterprise:

    | Tool | Purpose |
    |---|---|
    | scan_cloud | Audit one or more cloud accounts (AWS / GCP / Azure) using ser credentials; no network host. "Audit my AWS account" / "Audit my AWS and Azure accounts". |
    | get_findings | Drill into the findings of the most recent scan_cloud run (per-provider session cache — not li) |

    > scan_cloud runs the requested clouds' plugins concurrently (default up to 20 at once, 25s per-plugin
    > timeout; a plugin that runs out is listed as timeout in the result's manifest, i.e. not measured). Tune with
    > CLOUD_SCAN_CONCURRENCY (default 20) and CLOUD_PLUGIN_TIMEOUT_MS (default 25000) in the server env. The
    > network PLUGIN_TIMEOUT_MS governs scan_host and probe_service, and binds every plugin there — including
    > one that declares a longer budget of its own. Read the result's findingsSummary
    > (per-provider se counts + a CRITICAL/HIGH list) for the findings; audited:false / notes / pluginsRan:0
    > still mean a cloud was NOT audited (never a clean pass). Pass pro:["aws"] to audit only the cloud named.

    > All-region AWS co. The server does not split a regions:["all"] call into batches; the agent skill
    > (nsauditor-ai-agent-skill) teaches the assistant to cover the enabled regions in batches of 3–5 region codes per
    > call. CLOUD_PLUGIN_TIMEOUT_MS (default 25000) bounds each plugin, not the call: raising it can give a slow
    > plugin more time and lengthen the call. A call that times out in the client returned no result — never read it as
    > a clean account. For unbounded multi-region scans use the CLI (nsauditor-ai scan … --aws-region all), which
    > has no MCP client in the path — there you can raise PLUGIN_TIMEOUT_MS (e.g. 90000) freely. On the CLI a
    > plugin that declares its own budget already gets it; PLUGIN_TIMEOUT_CEILING_MS caps those.

    Security: SSRF protection on all host inputs (blocks RFC 1918, loopback, fc00::/7, cloud metadata), port (1–65535), CPE format enforcement, dependency injection for test isolation. Ser authentication is required — see next section.

    Authentication (required)

    The MCP server uses stdio transport, which means it runs as a child process of whate launches it. Without authentication, any process running as your user could spawn the server and use its tools — including the Pro/Enterprise tools that talk to AWS, generate compliance reports, and access your scan history. A per-operator shared-secret check at ser closes this gap.

    One-time setup (run once per machine after npm install -g nsauditor-ai):

    This generates a 256-bit auth key, stores it in the macOS Keychain (or ~/.nsauditor/.env mode 0600 on Linux/Windows), and prints the Claude Desktop config snippet for you to paste. The MCP ser to start unless the en key matches the stored key (constant-time compare; mismatch produces an actionable error pointing at this command).

    Inspect / :

    Why the Claude Desktop config snippet uses keychain: indirection on macOS: the printed snippet looks like "NSA_MCP_AUTH_KEY": "keychain:NSA_MCP_AUTH_KEY" rather than the literal key value. The MCP ser the placeholder from your Keychain at startup. Net effect: the secret ne in ~/Library/Application Support/Claude/claude_desktop_config.json (which is mode 0644 by default — readable by other local users and any macOS app with Documents/Application Support entitlement). On Linux/Windows where there's no Keychain equi, the snippet uses the literal key with an explicit chmod 600 warning.

    Threat model — what this defends, what it doesn't:

    | Threat | Defended? |
    |---|---|
    | Malicious npm post-install / browser extension running as you spawning the server | ✅ — attacker cannot read your Keychain without GUI prompt |
    | Other users on a shared dev box / CI runner | ✅ — key is per-operator |
    | Future HTTP/SSE transport network exposure | ✅ — key gates ser, not network |
    | Attacker with full operator code-exec AND can suppress macOS Keychain prompts | ⚠ partial — recent macOS log Keychain-access denial events |
    | Debugger-attach memory snooping | ⚠ out of scope (any shared-secret auth has this limit) |
    | Linux env- in /proc/<pid>/environ | ⚠ partial — see Linux note below |

    Linux note (/proc/<pid>/environ): on modern Linux, /proc/<pid>/environ is readable only by the process owner (the same user that spawned the MCP server). Other users on a multi-user system cannot read your MCP auth key from /proc under default kernel settings. The realistic remaining risks are:

  • Container scenarios where multiple "users" share the same kernel UID (e.g., a Docker container running as root, with multiple processes inside) — the secret is to any process in the same UID namespace. Mitigation: run the MCP server in its own container / user.

  • Audit/SIEM agents with broad read access (e.g., auditd configured to log child-process en: review your auditd rules; modern setups exclude env from logs by default.

  • The legacy ps eww command on older POSIX systems (modern ps respects /proc permissions).
  • A shell-wrapper indirection script (read key from ~/.nsauditor/.env at exec time, pass to child) was considered for v1 but does NOT solve the underlying issue: the spawned MCP ser needs the key in its env to perform the auth check, so it appears in /proc/<ser>/environ regardless of how the parent process obtained it. v2 may add libsecret integration on Linux to mirror the macOS Keychain indirection model.

    Rotation cadence: keys older than 90 days emit a soft warning at every ser AND in nsauditor-ai mcp status output. SOC 2 CC6.1 / CC6.7 re expect a credential-rotation cadence; rotate with nsauditor-ai mcp rotate-key --confirm and update Claude Desktop config with the new key.

    Escape hatch for CI / dev (operator-acknowledged risk; emits a stderr warning every startup):

    Claude Desktop Setup

    First install the package globally:

    Then paste the mcpServers block that install-key prints into your claude_desktop_config.json (Settings →
    De → Edit Config). It names node and the ser by absolute path, because Claude Desktop may not see
    the directory your shell finds nsauditor-ai-mcp in. Add any other to its env block, for example:

    The exact NSA_MCP_AUTH_KEY value to paste is printed by nsauditor-ai mcp install-key — on macOS it's the keychain:NSA_MCP_AUTH_KEY placeholder shown above; on Linux/Windows it's the literal key value (and you should chmod 600 your config file).

  • NSA_MCP_AUTH_KEY — required (see Authentication section above)

  • NSA_ALLOW_ALL_HOSTS=1 — required to scan private/RFC 1918 addresses (e.g., 192.168.x.x). It turns off the MCP

  • server's check of what a host name resolves to, so a name that resolves to a loopback or cloud-metadata address then gets
    through too; targets written as localhost, 127.x, ::1, 169.254.x or metadata.google… stay refused
  • FTP_CHECK_ANON=true — lets the FTP check try an anonymous login (off by default; without it scan_host ne anonymous FTP). DNS_CHECK_AXFR=true with DNS_AXFR_DOMAIN=<zone> — lets the DNS check try a zone transfer of that zone (off by default). The same govern the CLI scan.

  • PLUGIN_TIMEOUT_MS=5000 — the per-plugin budget for scan_host and probe_service (default 30000), and it binds every plugin there, including one that declares a longer budget of its own. It bounds each PLUGIN, not the call: scan_host runs a host's plugins one after another, so the call takes roughly the sum of their times. On one router a scan_host call timed out in Claude Desktop on 2026-08-10 and one returned within 138 s on 2026-09-30, so neither outcome is promised: a call that times out returned no result — never read it as a clean host. On a real home gateway the plugins of one full scan took ~113 s between them at the default budget.

  • PLUGIN_TIMEOUT_CEILING_MS — the upper bound on any plugin's DECLARED budget (default 120000). A few plugins declare their own budget because their cost grows with what they scan (the UPnP and MCP scanners here; several cloud auditors in Enterprise). On the CLI a declaration outranks PLUGIN_TIMEOUT_MS, so this is the setting that caps every plugin there. The MCP tools already bind declarations with their own limits.

  • CLOUD_SCAN_CONCURRENCY — max cloud plugins run at once by scan_cloud (default 20).

  • CLOUD_PLUGIN_TIMEOUT_MS — per-plugin timeout for scan_cloud (default 25000; independent of the network PLUGIN_TIMEOUT_MS). It bounds each plugin, not the call — see the all-region note abo raising it.

  • AI_PROVIDER and API key — optional, enables AI-powered analysis of scan results
  • #### NSA_EN — point the MCP server at an en file

    Instead of inlining every scan in the config above, set NSA_EN to a
    dotenv file and keep the cloud credentials, CLOUD_PROVIDER, and scan tuning there. To scan
    a different account or cloud, change the one path (or swap the file) and restart Claude Desktop —
    no JSON editing.

  • The file is loaded at ser; in it o the same keys in the config env block.

  • Fail-fast: if the path is missing or points at an AWS credentials/INI file, the ser

  • to start (it will not silently fall back to ambient credentials and scan the wrong account). The
    error is written to the MCP server's stderr log.
  • The file is the authoritative scan target: ambient provider credentials (e.g. an old account's

  • AWS_* keys still in the config env block) that the file does not set are cleared, so a partial
    file can't silently scan a lefto. Instance-role / ADC identity is untouched.
  • NSA_MCP_AUTH_KEY and NSAUDITOR_LICENSE_KEY are resolved before the file and must stay

  • inline (or in ~/.nsauditor/.env); if present in NSA_EN they are ignored.

    Claude Code Setup

    To target an en via the file, add it as an en:

    (On Linux/Windows, replace the keychain:NSA_MCP_AUTH_KEY placeholder with the literal key printed by install-key.)

    Troubleshooting MCP authentication

    "MCP authentication is not configured" at ser → run nsauditor-ai mcp install-key. If you set NSA_MCP_AUTH_DISABLE=1 in CI by intent, that's fine — but check that you didn't forget it in your shell rc.

    "NSA_MCP_AUTH_KEY env var is not set, but a key is configured in storage" → the ser a key in your Keychain (or ~/.nsauditor/.env) but the spawning client didn't pass NSA_MCP_AUTH_KEY in the en. Update your Claude Desktop / Claude Code config to include the en (use nsauditor-ai mcp install-key output as a reference snippet).

    "NSA_MCP_AUTH_KEY env var does not match the key configured in storage" → most often means you ran nsauditor-ai mcp rotate-key --confirm but didn't update Claude Desktop config with the new key. Run nsauditor-ai mcp status to confirm storage source, then either re-paste the new key or use keychain:NSA_MCP_AUTH_KEY indirection (macOS only) so future rotations don't require a config change.

    "MCP_AUTH uses keychain: indirection but the referenced Keychain entry could not be read" → typically a headless macOS / SSH-only CI runner where there's no GUI session to appro access. Replace the keychain: placeholder with the literal key value (or move auth to ~/.nsauditor/.env with mode 0600).

    mcp status reports keychain-locked → distinct from unconfigured: the Keychain entry exists but the security daemon refused to unlock without a GUI prompt. Same workarounds as the previous error: approve a Keychain GUI prompt, replace keychain: indirection with the literal key, or move auth to ~/.nsauditor/.env.

    mcp status shows ⚠ Created: ... — > 90d threshold → key is older than the 90-day rotation cadence. Run nsauditor-ai mcp rotate-key --confirm and update Claude Desktop config with the new key. Ser the same warning to stderr at every startup.

    Claude Desktop reports "Current tier: CE" despite nsauditor-ai license --status showing Enterprise → first run nsauditor-ai mcp tier to get the ground-truth tier the MCP ser resolves at startup. If mcp tier reports enterprise but Claude Desktop's list_plugins says CE, the AI client is synthesizing the response without actually calling the tool — see docs/mcp-.md and any suspicious response with nsauditor-ai mcp <id>.

    If mcp tier itself reports CE → genuine resolution failure. Inspect the license storage:

    If license is in ~/.nsauditor/.env but not in Keychain on macOS, re-run nsauditor-ai mcp install-key — the auto-mirror writes the license to Keychain so Claude Desktop's child process can read it via the keychain: indirection.

    ---

    Secure Credential Storage

    Store API keys in the macOS Keychain instead of plaintext .env files:

    Then reference them with the keychain: prefix in .env or Claude Desktop config:

    The keychain: prefix works anywhere an API key is read — CLI, MCP server, or programmatic API.

    ---

    CLI Reference

    > Run nsauditor-ai --help (or -h, or just nsauditor-ai help) for a quick reference of subcommands, flags, env vars, and worked examples — works without a license key configured. -- / -v prints nsauditor-ai <> and exits 0.

    | Flag | Description | Default |
    |---|---|---|
    | --host <target> | Target: IP, hostname, CIDR, dash range. Aliases: --ip, --target | *required*\* |
    | --host-file <path> | File with one host per line (# comments, blank lines OK) | — |
    | --plugins <list> | Comma-separated plugin IDs or all | all |
    | --ports <list> | Additional ports to scan, merged into the default config-derived list. Comma-separated. Optional /tcp or /udp suffix per entry (default: tcp). Examples: 8090 · 8090,9090 · 8090/tcp,5353/udp. Use this to scan custom services on non-standard ports (e.g. MCP servers on 8090). A range such as 1-1000 is not parsed and adds nothing | — |
    | --out <dir> | Custom output directory — applies to the per-scan folder *and* to alternate-format files (SARIF/CS) | out/ |
    | --parallel <n> | Concurrent host scans | 1 |
    | --output-format <fmt> | Additional output format: sarif (CI/CD) · csv (spreadsheet) · md or markdown (chat/PR/Slack quotable) | — |
    | --fail-on <sev> | Exit code 1 if a flag it gates on is ≥ se (critical\|high\|medium\|low\|info): anonymous FTP login and DNS zone transfer are critical, weak SSH algorithms medium, and any concluded scan counts as info — so --fail-on info fails every scan that concludes. Anonymous FTP login and zone transfer are tested only when FTP_CHECK_ANON=true / DNS_CHECK_AXFR=true with DNS_AXFR_DOMAIN are set, so on a default scan --fail-on high and --fail-on critical never exit 1. It also reads dangerous HTTP methods (medium), but no scan's conclusion carries that flag today. It does not read the SNMP default community, weak TLS protocols / ciphers, a self-signed certificate, the MCP ser, Enterprise's CVE rows or agent findings, so exit 0 is not a clean host; exit 2 for an unknown se or no conclusion | — |
    | --insecure-https | Accept self-signed TLS certificates | false |
    | --watch | CTEM continuous alerting loop — re-scan on --interval, compare each host with its previous scan ([ScanHistory] lines), webhook on --alert-se — but not on a service, or finding change in this release (see Continuous Monitoring). Not an e cadence: no retention, no cross-run aggregation, skips SARIF/CS + --fail-on, dies with the process. Use a scheduler for SOC 2 Type II history. | false |
    | --interval <min> | Rescan interval in minutes (requires --watch) | 60 |
    | --webhook-url <url> | Webhook URL for watch-mode alerts (see --watch) | — |
    | --alert-se <sev> | Minimum se for webhook alerts | high |
    | --compliance <fw> | Compliance framework to map findings into. Accepts CSV for multi-framework runs (e.g. soc2, hipaa, nist-csf, pci-dss, iso-27001, cis-v8, gdpr, nist-800-171, or any combination like soc2,hipaa,nist-csf,pci-dss,iso-27001,cis-v8,gdpr,nist-800-171 — all expands to the same eight). Enterprise license required. Supported frameworks as of EE 0.40.0 — eight: soc2 (AICPA TSC 2017) + hipaa (HIPAA Security Rule §164.312 Technical Safeguards) + nist-csf (NIST Cybersecurity Framework 2.0 Core, CSWP 29 Feb 2024) + pci-dss (PCI DSS v4.0.1, PCI SSC June 2024 errata) + iso-27001 (ISO/IEC 27001:2022, ISO + IEC October 2022) + cis-v8 (CIS Critical Security Controls v8, CIS May 2021 / v8.1 errata June 2024) + gdpr (GDPR Article 32 / Security of Processing, Regulation (EU) 2016/679 — Art. 32 infrastructure substrate, not GDPR compliance) + nist-800-171 (NIST SP 800-171 Rev 2 — e substrate for CMMC Level 2 preparation, not a CMMC certification, not a FedRAMP authorization, and no MET/NOT MET determination or SPRS score). See /nsauditor-ai-ee README for per-framework co details. | — |
    | --compliance-scope <path> | Optional JSON file describing the assessment scope (passed to the compliance engine for co attestation) | — |
    | --help, -h | Print usage block (subcommands, flags, env vars, examples) and exit 0 | — |
    | --, -v | Print nsauditor-ai <> and exit 0 | — |

    \* Either --host or --host-file is required.

    Host Formats

    | Format | Example | Description |
    |---|---|---|
    | Single IP | 192.168.1.1 | Scan one host |
    | Hostname | example.com | Resolved via DNS |
    | CIDR | 192.168.1.0/24 | All usable hosts (min prefix: /16) |
    | Dash range (short) | 192.168.1.1-50 | Last-octet range |
    | Dash range (full) | 10.0.0.1-10.0.1.254 | IP-to-IP range (max 65534) |
    | Host file | --host-file targets.txt | One host/CIDR/range per line |

    Examples

    Pre-flight command

    nsauditor-ai runs a fast (<2s) en check without scanning anything. Useful for CI/CD setups, Docker HEALTHCHECK probes, and first-time-user diagnosis. Each check returns a status; the o exit code is 0 (all OK), 1 (warnings), or 2 (errors).

    Checks: plugin discovery, license JWT (if key set), AI provider configuration, output-directory writability + free space, DNS resolution.

    Docker HEALTHCHECK example:

    report command (Pro/Enterprise)

    nsauditor-ai report --from <dir> --format executive|jira turns a completed scan run under --from into a client-facing deli — an HTML report a consultant sends to their customer, or a Jira-importer CSV.

    What it reads. A scan record keeps findings in more than one place, and the report reads all of them: each plugin's result.findings (an array, or a dict of categories as the DNS auditor emits), zero-trust dimension findings, per-port TLS issues, and the finding queue (scan_finding_queue.json) that carries the CVE/KE entries. result.data is deliberately NOT read — on a network scan it holds probe telemetry, not findings. The container in is enforced by a census: a container holding findings that no reader opens fails the build rather than rendering as a clean report.

    | Flag | Description | Default |
    |---|---|---|
    | --from <dir> | The scan --out directory holding the run's record and per-host e | *required* |
    | --format executive | Self-contained, print-ready HTML report; no external network reference other than an http(s)/mailto <a href> | — |
    | --format jira | Jira-importer CSV (Summary/Description/Priority/Labels/External ID); the import mapping is done in Jira and has not been against a live Jira instance. pass-tier records are EXCLUDED — a Jira issue is a work item and a passing check is not work; every other tier is kept, INFO included, because INFO carries the e gaps and scope boundaries. Passing checks appear in the executive report under their own PASS tier. | — |
    | --run <id> | Report a specific run id instead of the newest one under --from | newest run |
    | --since <runId\|prior> | Compare the reported run with a baseline run under --from: prior is the run that started immediately before it, or name a run id. The executive report lists each new, resolved and changed finding, and each finding that could NOT be compared with its reason; stdout prints the counts, the changed and not-comparable rows and the limits; the jira CS none of it. Keep --plugins identical between the two scans (see What's New). Every refusal exits 2: if the baseline was found but cannot support a comparison, the executive report is still written, states the refusal and lists no new, resolved or changed finding; if no baseline is found, if the reported run's own record fails , or with --format jira, nothing is written | — |
    | --brand <brand.json> | Co branding (company name, prepared-by, contact, logo) — --format executive only | unbranded |
    | --out <path> | Write to this path instead of report_<runId>.<ext> beside the run record | report_<runId>.<ext> |
    | --allow-partial | Render even if some requested hosts were ne, or the run ne completion — the caveat is stated on the cover, ne | false |

    A --from/--brand/--run/--out/--since (nothing after the flag, or a shell glob that swallowed the argument) is a fatal error, not a silent default.

    Exit contract — 0 a report was rendered · 1 fix the RUN (no run record under --from, or an
    incomplete run without --allow-partial) · 2 fix the REQUEST or its en (an unknown or
    missing flag value, an unwritable --out, a --brand file that is refused, or a --since comparison
    that could not be made — see --since above).

    ⚠️ --brand with --format jira is refused, not ignored: a Jira CSV has nowhere to put branding,
    and silently dropping a flag the caller passed is how a report goes out unbranded without anyone
    noticing.

    #### The brand.json file

    --brand takes a small JSON object. Every field is optional; omit the file entirely and the report
    renders unbranded with the default title.

    | field | type | default | notes |
    |---|---|---|---|
    | title | string | Network Scan Report | Replaces the report's headline. |
    | companyName | string | *(empty)* | The client the report is prepared for. |
    | preparedBy | string | *(empty)* | The consultant or firm preparing it. |
    | contact | string | *(empty)* | Free text — an address, an email, a phone number. |
    | logoPath | string | *(none)* | A local PNG or JPEG, resol to the brand file's own directory. Embedded into the HTML as a data URI. |

    **logoPath is deliberately restrictive, and each refusal protects the report's core promise —
    that it opens with no external network reference of any kind:**

  • A URL is refused and ne. A remote logo is egress at render time and a tracking

  • pixel every time your client opens the file.
  • A UNC share (\\host\share\...) is refused for the same reason: it is a network reference.

  • SVG is refused. SVG is markup and can carry a script, which would break the report's

  • no-script guarantee from inside the image. Use PNG or JPEG.
  • The path must stay inside the brand file's own directory — ../ escapes are refused, checked

  • both as typed and again after symlinks are resolved.
  • 2 MB maximum, and the format is detected by magic bytes, not by file extension — renaming

  • logo.svg to logo.png does not get it past the check.
  • An empty string is read as "no logo", the same as omitting the key, so a generated

  • brand.json that emits "" is not an error.

    A brand file that cannot be read, is not valid JSON, is not a JSON object, or whose logoPath is
    refused is a fatal error — the report is not written. A flag you passed is ne
    dropped, because that is how a report goes out unbranded without anyone noticing.

    ⚠️ --brand applies to --format executive only. Passing it with --format jira is refused,
    not ignored: a CSV has nowhere to put a cover page.

    ---

    Pro & Enterprise Acti

    After purchasing at nsauditor.com/ai/pricing, you'll receive an email with your license key and an npm install command. Two steps:

    :

    License keys are delivered automatically webhook — no manual processing. Subscription renewals generate a fresh key and email it to you before the current one expires.

    No license key? E in this repository works perfectly without one. The CE is not crippled — it's a complete, production-ready security scanner.

    → Pricing · Enterprise contact

    ---

    Plugins

    Core Scanners

    | ID | Name | Protocols | Purpose |
    |---|---|---|---|
    | 001 | Ping Checker | ICMP/ARP | Reachability + TTL-based OS hints |
    | 002 | SSH Scanner | TCP:22 | Banner, 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 detection |
    | 005 | Host Up Check | TCP/UDP | Quick multi-probe reachability confirmation |
    | 006 | HTTP Probe | TCP:80/443 | Headers, ser, 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 | .bind CHAOS/TXT + A record lookup |
    | 010 | Webapp Detector | HTTP | Technology stack fingerprinting |
    | 011 | TLS Scanner | TCP:443+ | TLS + cipher enumeration per port |
    | 012 | OpenSearch Scanner | HTTP:9200+ | OpenSearch/Dashboards + Linux/Node.js hints |
    | 013 | OS Detector | Meta | Deri/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 , 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 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

    Enterprise adds 29 cloud and posture auditors on top of the Community scanners — AWS, Azure and GCP, mapped to eight compliance frameworks. They require /nsauditor-ai-ee and an Enterprise licence; a Pro licence does not unlock them.

    → Pro / Enterprise plugin catalog — every plugin with its id, what it audits, and the AWS region-scoping rules for the regional auditors (--aws-region <one|csv|all>).

    See Pro & Enterprise Acti to install a licence.

    GRC Connectors (Vanta, Drata, Secureframe)

    *Enterprise feature. Requires /nsauditor-ai-ee.*

    Every compliance scan already produces a GRC-ready JSON e artifact. The GRC connectors take the next step: they map each NSAuditor compliance finding to your GRC platform's own e/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 en below. When it runs, finding text and target identifiers go to your platform as written unless you set COMPLIANCE_GRC_REDACTION to hash or remove (redaction is off by default); the persisted audit log stores a body fingerprint (never the raw payload), and your API token is ne to any artifact. Nothing leaves your infrastructure that you didn't opt into.

    | Platform | Status | Model |
    |---|---|---|
    | Vanta | Connector + scan-time acti 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 Custom Connections; your Drata Test Builder rules (Ad/Enterprise plans) e them — the connector delivers e, your rules do the e |
    | Secureframe | Connector library shipped (early-access) | Pushes structured records to a workspace e collection; your Secureframe rules e them — the connector carries the control status , it does not compute pass/fail. API shape published-assumed; li 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 consecuti 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. Li against production Vanta / Drata / Secureframe tenants is in progress as partner onboarding proceeds — until it completes, treat production use as early-access and 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 dedup is un.)

    ---

    How Results Are Fused

    The Result Concluder (plugin 008) merges all plugin outputs into a normalized structure:

    1. Imports each plugin's conclude() adapter to get normalized Ser objects
    2. Merges services by (protocol, port), preferring authoritati
    3. Selects OS — OS Detector result first, then high-signal hints (Windows services, HTTP tokens), finally TTL fallback
    4. Produces a unified { summary, host, services, e } output
    5. Enriches host details with names from mDNS, UPnP, NetBIOS; MAC + from ARP

    ---

    AI Analysis

    NSAuditor AI supports three AI pro for analysis. All pro work in all tiers — CE, Pro, and Enterprise. AI is optional; the platform is fully functional without it.

    Pro: OpenAI (GPT-4o), Anthropic Claude (Sonnet/Opus), Ollama (fully local)

    What changes by tier is the prompt content, not the provider:

  • CE — basic scan-summary prompts (services, ports, detected). Local MITRE ATT&CK mapping via utils/attack_map.mjs: ser CVE→technique mapping (mapC, mapSer), plus a CWE→technique fallback (cweToMitre, cwesToMitre) co ~30 common CWEs (auth, crypto, injection, memory safety, info disclosure, pri escalation, web). The CWE fallback fires only when C mapping returns no techniques — useful for findings annotated with e.cwe[] (per FindingSchema v0.1.13+) but no C, such as agent-detected misconfigurations and compliance-flagged weaknesses

  • Pro — intelligence-enriched prompts (C, MITRE ATT&CK technique annotations, composite risk scores injected into the prompt). Same API call, better-grounded output

  • Enterprise — Pro prompts + compliance context
  • Redaction: On by default (OPENAI_REDACT=false turns it off), the redaction pipeline masks IP addresses, MAC addresses, serial numbers, and configurable confidential keywords before the payload reaches an AI API. Admin RAW reports retain full detail for internal review.

    For fully local AI (no external API calls), use Ollama:

    ---

    Continuous Monitoring (CTEM)

    Watch mode enables periodic rescanning with delta detection and webhook alerts:

  • Scheduling with configurable intervals and concurrency control

  • Change detection — each host's scan is compared with that host's previous line in scan_history.jsonl and printed as a [ScanHistory] line: new, removed and changed services, and the findings delta

  • Webhook alerts — a JSON POST, retried up to twice 1 s apart on a 5xx or network error, not on a 4xx. ⚠️ In this release the webhook does NOT fire on a service, or finding change: the cycle comparison it is gated on finds no services in the scan results it is handed, so its === Delta Report === shows no change for any host. The gate opens only when a cycle scanned a different set of hosts from the cycle before (in practice, one cut short by stopping the loop); an alert is then posted for each host whose services carry a flag at or above --alert-se (at info, every service counts). Read changes from the [ScanHistory] lines.

  • SSRF protection — private, loopback, and cloud metadata addresses blocked at the scan entry point and inside sendWebhook(). NSA_ALLOW_ALL_HOSTS=1 lifts the scan-entry guard for local network auditing — on the CLI the whole guard, loopback and metadata included; over MCP, the check of what a host name resolves to — and never the webhook guard

  • Scan history stored in scan_history.jsonl in the output directory (--out, default out/; 7-day retention in CE)
  • ---

    Configuration

    Configuration is entirely en — a .env file, --env <file>, or the shell. No config is required for a default scan.

    → Configuration reference — every en , its default and its effect.

    The two that change behaviour most: NSAUDITOR_OFFLINE_ONLY=1 forbids outbound C and reads a local N instead (reporting an explicit co gap in the scan rather than a silent clean; in Enterprise 1.2.0 that gap reaches no compliance control, so a control only the missing CVE rows would fail can read PASS), and OPENAI_API_KEY / ANTHROPIC_API_KEY / a local Ollama endpoint enable the opt-in AI analysis pass.

    De Plugins

    NSAuditor AI uses a plug-and-play plugin system. Plugins are auto-discovered from ./plugins/ — no registration needed.

    Plugin Interface

    Plugin Tips

  • Use en timeouts for all network calls

  • Always close sockets on all code paths with a small post-banner linger

  • Keep probe_info and response_banner concise — full detail goes in e

  • Use authoritati to take precedence o plugins for the same port

  • Plugins can also be loaded from external npm packages via NSAUDITOR_PLUGIN_PATH
  • ---

    Tests

    Run the full suite:

    Run a specific suite:

    Tests use Node.js built-in --test runner with the assert module — no external test framework. Each test is self-contained with inline fixtures and lightweight network stubs.

    ---

    Troubleshooting

    | Issue | Solution |
    |---|---|
    | No DNS banner | Provider may block CHAOS/TXT (.bind) or UDP/53 |
    | OpenSearch o TLS | Set OPENSEARCH_SCANNER_INSECURE_TLS=true |
    | TLS shows "closed" | Service may require SNI — set TLS_SCANNER_SNI=hostname |
    | RPC not detected | Ensure port 111 is accessible and RPC portmapper is running |
    | WS-Discovery timeout | Check network config and firewall for multicast on UDP 3702 |
    | SYN scan requires root | Run with sudo or use TCP connect scanner (plugin 003) instead |
    | Webhook URL rejected | Private/loopback/cloud metadata blocked by SSRF guard. NSA_ALLOW_ALL_HOSTS does not lift this guard: use a public webhook URL |
    | EE plugins not loading | /nsauditor-ai-ee is installed and license key is set |

    ---

    Contributing

    We welcome contributions! See CONTRIBUTING.md for guidelines.

    Quick :

    1. Fork the repo and create a feature branch
    2. Add a Signed-off-by line to your commits (git commit -s)
    3. Include tests for any new or changed behavior
    4. Submit a PR

    All contributions to this repository are under the MIT license. For Enterprise Edition contributions, see the nsauditor-ai-ee repository which requires a signed IP Assignment Agreement.

    What we won't accept: Code that phones home, transmits scan data externally, or weakens the Zero Data Exfiltration boundary.

    Requesting or Contributing Plugins

    Check ./plugins/ first. If a plugin doesn't exist:

  • Request it: Open an issue with scope, target ports, protocols, and example banners

  • Build it: Follow the plugin interface abo tests, and update this README
  • Commonly requested plugins: RDP, VNC, SMTP/POP3/IMAP, MySQL/PostgreSQL/MSSQL/MongoDB/Redis, LDAP, RabbitMQ/Kafka/MQTT, SIP, NTP, Modbus/S7/DNP3/BACnet, WordPress/Jenkins/GitLab detectors.

    ---

    Architecture

    For the full technical architecture, see ARCHITECTURE.md.

    Tech stack: Node.js 20+ · ES Modules (.mjs) · OpenAI + Anthropic SDKs · Node.js built-in test runner · MCP stdio transport

    Design patterns: Factory (PluginManager.create) · Strategy (orchestrated/legacy execution) · Context (shared state) · Adapter (plugin conclude()) · Guard Clause (requirement gating) · Capability gating (CE/Pro/EE) · Semaphore (concurrency control) · Delta (scan history diff) · Boundary Guard (SSRF/injection protection) · Finding Queue (structured intermediate format) · Parallel Agents (concurrent specialized analysis)

    ---

    Privacy & Security

    NSAuditor AI is built on a Zero Data Exfiltration (ZDE) architecture:

  • No telemetry. No analytics. No usage tracking. No phone-home.

  • No data processing. Nsasoft US LLC never sees, stores, or processes your scan results.

  • AI is opt-in. External AI calls use your own API keys. Redaction runs locally first, on by default (OPENAI_REDACT=false turns it off).

  • License is offline. JWT signature locally with an embedded public key.

  • Air-gappable, once configured for it. Scanning, analysis, license and e generation all run with no outbound network access; Enterprise adds offline C from a local N under NSAUDITOR_OFFLINE_ONLY=1, which emits an explicit co gap in the scan rather than a silent clean when the store cannot answer (in Enterprise 1.2.0 that gap reaches no compliance control, so a control only the missing CVE rows would fail can read PASS). Stated precisely because it matters operationally: a default scan still attempts N unless that is set. The other outbound paths — AI enrichment, the GRC push, the continuous-monitoring webhook, the opt-in RFC 3161 timestamping path (NSAUDITOR_TSA_URL, no default ever), and the AWS KMS signing path that ships but is not yet wired — are opt-in and off by default; the paths that are *not* optional are the scan target itself, your own cloud provider's APIs during a cloud scan, and DNS resolution of the target. All of them are enumerated with their trigger and default state in the egress register (EE docs/architecture.md §14.1.1), which is generated from code and guarded in both directions — deliberately, so this sentence ne has to carry a completeness claim that prose alone cannot keep true. Populating the local N is the operator's; no feed data is delivered with the product. The prior absolute form of this bullet — *"Fully air-gappable. Every feature works without internet access (Enterprise includes offline N)"* — is WITHDRAWN (CE 0.2.33): quoted here so the withdrawal record stays on this page now that release history lives in the CHANGELOG.
  • Nsasoft US LLC is not a data processor, data controller, or business associate under any data protection regulation. You own and control all data produced by NSAuditor AI.

    ---

    License

    MIT — see LICENSE for the full text.

    © 2024-present Nsasoft US LLC. "NSAuditor" and "NSAuditor AI" are trademarks of Nsasoft US LLC.

    The Pro and Enterprise features a via /nsauditor-ai-ee are licensed under a separate proprietary license. See www.nsauditor.com/ai/pricing for details.

    项目信息

    开发语言:JavaScript

    Star 数:20

    技术要点

    该项目属于安全软件方向的开源资源,代码结构清晰,适合安全研究人员学习参考。项目围绕NSAuditor AI — Open-source, AI-powered network security scanner. 27 plugins, CVE matching, MITRE ATT&CK mapping, verified vulnerabilities, continuous monitoring, MCP integration. Zero data exfiltration. MIT licensed.展开,提供了可运行的实现,对理解相关安全机制、工具原理与攻防技术具有较高的研究价值。

    从技术实现角度看,此类项目的核心在于对底层原理的深入理解与工程化落地。开发者在研究过程中可以结合官方文档与社区讨论,梳理项目的初始化流程、核心模块职责与数据流转,逐步掌握其中的技术细节与设计思路。

    使用与学习建议

    1. 下载源码压缩包,解压到本地环境。

    2. 根据项目类型准备对应的运行环境与依赖。

    3. 按照 README 中的步骤完成配置与部署。

    4. 在隔离的测试环境中运行验证,避免影响生产系统。

    免责声明

    本资源来源于开源社区,仅供安全研究、技术学习与合法授权范围内的攻防演练使用,请勿用于任何非法或侵害他人权益的用途。使用本项目产生的一切后果由使用者自行承担。

    资源标题nsauditor-ai - NSAuditor AI — Open-source, AI-powered network sec
    所属分类安全软件
    发布作者admin
    发布时间2026-10-05 22:54:23
    下载权限 免费下载
    附件数量2 个下载链接
    浏览次数138
    讨论数量0
    主题状态正常讨论中

    本资源免费,登录后即可在本页「下载链接」区域获取全部附件。

    请在评论区留言说明具体链接,或联系作者补档。楼主更新后本页会同步最新的下载地址。

    请先阅读正文中的授权说明;未注明的默认仅限站内学习交流,禁止直接搬运到其他站点二次售卖。
    还没有讨论,快来抢沙发~
    登录 后才能参与讨论
    下载链接
    会员才能下载
    登录后开通会员
    同分类推荐
    暂无同类资源
    免费登录即可下载
    查看会员
    放大预览

    © 2026 剑庭安 - 网站开发定制 SEO 优化蜘蛛池代做 在线看手相算命. 保留所有权利。

    Powered by 酷像SEOv3.0

    网站地图 Sitemap.xml
    首页 全部分类 黑客安全 逆向|反编译 精品源码 站长工具自助开通会员其他资源SEO工具站群源码泛程序蜘蛛模板蜘蛛池外链工具创意乐园 搜索 会员服务 登录 注册