nsauditor-ai 0.2.44 → 0.2.45
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +5 -2
- package/cli.mjs +5 -4
- package/mcp_server.mjs +2 -2
- package/package.json +2 -2
package/README.md
CHANGED
|
@@ -17,6 +17,8 @@ NSAuditor AI is the open-source core of a privacy-first security intelligence pl
|
|
|
17
17
|
|
|
18
18
|
## What's New
|
|
19
19
|
|
|
20
|
+
**The eighth compliance framework: NIST SP 800-171 Rev 2 (CE 0.2.45 / Enterprise 0.40.0).** Enterprise adds `--compliance nist-800-171`, and CE registers the stem so the MCP `scan_cloud` tool and the CLI accept it. ⚠️ **Requires CE ≥ 0.2.45** — CE 0.2.44 does NOT carry the stem, so an Enterprise 0.40.0 paired with an older CE will reject the framework name. What Enterprise produces is **evidence substrate an assessor reads**, scoped as *NIST SP 800-171 evidence substrate for CMMC Level 2 preparation*: it is **not** a CMMC certification, **not** a FedRAMP authorization, and it emits **no** MET/NOT MET determination and **no** SPRS score — those are a C3PAO's to make, and only a C3PAO's. All 110 Rev 2 requirements are enumerated with a written reason each; Rev 2 is pinned deliberately, because CMMC assesses Rev 2 by rule and Rev 3 is a different 97-requirement universe.
|
|
21
|
+
|
|
20
22
|
**`scan_cloud` stops naming a provider roster it cannot derive (CE 0.2.44 / Enterprise 0.39.0).** Paired with Enterprise 0.39.0 — **no CE scanning behaviour change, and the peer floor stays `>=0.2.43`, unraised.** The one thing that moves here is model-facing and npm freezes it, which is why it needs its own publish: the MCP `scan_cloud` tool description used to tell an assistant that *only the AWS plugins declare their capability boundaries; Azure and GCP declare none.* Enterprise 0.39.0 falsifies that — its seven GCP and Azure plugins now declare theirs — and a sentence read on every scan cannot be allowed to go stale on a peer's release. It is rewritten to state the invariant that is true in BOTH states and that CE can actually stand behind: **not every plugin declares its capability boundaries, so `deferredScope` bounds only what the DECLARING plugins state and is never a coverage inventory** — an empty or short list is not a claim of full coverage. CE floats over a peer RANGE and cannot derive Enterprise's plugin roster, so any sentence that counted providers was a claim it had no way to check. Also here: the edition-comparison chart gains the Ed25519 evidence-pack signing row, carrying its permanent scope in-sentence — one framework's envelope and the artifacts it enumerates, an operator-held key, never a vendor attestation. **And a second fix, found by trying to USE the previous release's headline:** `compliance sign-pack` and `compliance verify-pack` dispatched correctly but were **absent from `nsauditor-ai help`** for the whole of 0.2.43 — documented in every README, changelog and design record, and missing from the one surface a user actually reads. Both now carry usage blocks, and a guard derives the dispatched verb set from the dispatch site and asserts help/dispatch equality in both directions, so a reachable-but-undiscoverable command fails the build.
|
|
21
23
|
|
|
22
24
|
**The pack-signing commands land in the CLI — reachable, and not yet proven at that release (CE 0.2.43 / Enterprise 0.38.0).** ⚠️ **Correcting this entry's own words: that gate has since RUN.** On 2026-08-17 it ran against the published EE 0.38.0 registry bytes and passed, so evidence-pack signing is PROVEN for an operator-held key over one framework's envelope and the artifacts it enumerates, never a vendor attestation. `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.
|
|
@@ -107,7 +109,7 @@ How Marketplace fulfillment works (ZDE and air-gap preserved — no runtime AWS
|
|
|
107
109
|
| **Enterprise — cloud scanning** | | | |
|
|
108
110
|
| 28 enterprise plugins — 27 cloud (AWS / Azure / GCP) + 1 network-scan zero-trust check | — | — | ✅ |
|
|
109
111
|
| Zero Trust assessment | — | — | ✅ |
|
|
110
|
-
| **Enterprise — compliance (
|
|
112
|
+
| **Enterprise — compliance (8 frameworks)** | | | |
|
|
111
113
|
| SOC 2 (AICPA TSC 2017) — 10 covered + 4 partial controls | — | — | ✅ |
|
|
112
114
|
| HIPAA Security Rule §164.312 — Zero BAA required | — | — | ✅ |
|
|
113
115
|
| NIST CSF 2.0 Core — Subcategory-level mapping (106 of 107 Subcategories) | — | — | ✅ |
|
|
@@ -115,7 +117,8 @@ How Marketplace fulfillment works (ZDE and air-gap preserved — no runtime AWS
|
|
|
115
117
|
| ISO/IEC 27001:2022 — per-Annex-A-code mapping + SoA discipline (93 Annex A controls) | — | — | ✅ |
|
|
116
118
|
| CIS Critical Security Controls v8 — per-Safeguard mapping + IG-cumulative discipline (153 Safeguards / 18 Controls) | — | — | ✅ |
|
|
117
119
|
| **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 | — | — | ✅ |
|
|
118
|
-
|
|
|
120
|
+
| **NIST SP 800-171 Rev 2** — evidence 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 verdict, no SPRS score** | — | — | ✅ |
|
|
121
|
+
| Multi-framework `--compliance soc2,hipaa,nist-csf,pci-dss,iso-27001,cis-v8,gdpr,nist-800-171` from one scan | — | — | ✅ |
|
|
119
122
|
| **Enterprise — auditor-grade evidence** | | | |
|
|
120
123
|
| 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`) | — | — | ✅ |
|
|
121
124
|
| Suppression workflow with approver identity verification (Ed25519 SIGNING reachable 0.35.0, proven 0.36.0, verified per approver holding **key material**) | — | — | ✅ |
|
package/cli.mjs
CHANGED
|
@@ -1165,9 +1165,10 @@ Scan options:
|
|
|
1165
1165
|
--interval <minutes> Watch interval (default 60)
|
|
1166
1166
|
--webhook-url <url> Send delta alerts (must be public; private/loopback blocked)
|
|
1167
1167
|
--alert-severity <sev> Min severity to alert on (default: high)
|
|
1168
|
-
--compliance <framework> Map findings to controls. 'all' = all
|
|
1169
|
-
|
|
1170
|
-
nist/pci/iso/cis
|
|
1168
|
+
--compliance <framework> Map findings to controls. 'all' = all 8 frameworks, or a CSV of
|
|
1169
|
+
soc2,hipaa,nist-csf,pci-dss,iso-27001,cis-v8,gdpr,nist-800-171
|
|
1170
|
+
(aliases nist/pci/iso/cis, and 800-171 or cmmc for nist-800-171 --
|
|
1171
|
+
nist stays NIST CSF). Unknown tokens fail fast. Enterprise only.
|
|
1171
1172
|
--compliance-scope <path> JSON file describing the assessment scope
|
|
1172
1173
|
--compliance-history <dir> Directory of prior scans (one subdirectory per scan). Turns on
|
|
1173
1174
|
SLA/MTTR longitudinal tracking against that history. Enterprise.
|
|
@@ -1314,7 +1315,7 @@ Cloud-scan hosts:
|
|
|
1314
1315
|
Examples:
|
|
1315
1316
|
nsauditor-ai scan --host 10.0.0.1 --plugins all
|
|
1316
1317
|
CLOUD_PROVIDER=aws AWS_PROFILE=default \\
|
|
1317
|
-
nsauditor-ai scan --host aws --plugins all --compliance all # full AWS audit, all
|
|
1318
|
+
nsauditor-ai scan --host aws --plugins all --compliance all # full AWS audit, all 8 frameworks
|
|
1318
1319
|
nsauditor-ai scan --host aws,gcp,azure --plugins all --compliance all # all 3 clouds in one run
|
|
1319
1320
|
nsauditor-ai scan --host 10.0.0.0/24 --plugins all --compliance soc2
|
|
1320
1321
|
nsauditor-ai license install enterprise_eyJhbGciOiJFUzI1NiIs...
|
package/mcp_server.mjs
CHANGED
|
@@ -231,7 +231,7 @@ const GET_FINDINGS_MAX_LIMIT = 20; // ~500 chars/finding -> ~10KB page (Deskto
|
|
|
231
231
|
// description that goes stale silently steers an assistant's tool selection and errors nowhere.
|
|
232
232
|
// Everything below DERIVES from this array. Do not re-type it.
|
|
233
233
|
export const FRAMEWORK_STEMS = Object.freeze([
|
|
234
|
-
'soc2', 'hipaa', 'nist-csf', 'pci-dss', 'iso-27001', 'cis-v8', 'gdpr',
|
|
234
|
+
'soc2', 'hipaa', 'nist-csf', 'pci-dss', 'iso-27001', 'cis-v8', 'gdpr', 'nist-800-171',
|
|
235
235
|
]);
|
|
236
236
|
|
|
237
237
|
// Exported for direct testing (the scan_cloud description is a routing surface —
|
|
@@ -259,7 +259,7 @@ export const TOOLS = [
|
|
|
259
259
|
{
|
|
260
260
|
name: 'scan_cloud',
|
|
261
261
|
description:
|
|
262
|
-
'Audit cloud accounts (AWS / GCP / Azure) for security & compliance posture. Enterprise license. ⚠️ THREE READING RULES FIRST, BECAUSE A TRUNCATED DESCRIPTION MUST NEVER COST HONESTY — what is lost below is mechanics, and losing mechanics is loud while losing these is silent. (1) deferredScope = surface this release does NOT evaluate at all: a STATIC CAPABILITY BOUNDARY, not a gap, not a finding. Report as \"not assessed\". ⚠️ AN EMPTY OR SHORT deferredScope IS NOT A CLAIM OF FULL COVERAGE. Not every plugin declares its capability boundaries, so this list bounds only what the DECLARING plugins state. Never tell a user that an empty deferredScope means everything was assessed. (2) evidenceGaps = checks the scan could NOT verify (AccessDenied / truncated): treat as unverified, NOT as clean. Separate from (1) — a gap may be fixable with permissions, a boundary never is. Both live in the INFO tier, so report every tier, not just CRITICAL/HIGH. (3) NO per-finding control id is returned. Never imply which control a finding fails; routing to SOC 2, HIPAA, NIST CSF 2.0, PCI DSS, ISO 27001, CIS v8
|
|
262
|
+
'Audit cloud accounts (AWS / GCP / Azure) for security & compliance posture. Enterprise license. ⚠️ THREE READING RULES FIRST, BECAUSE A TRUNCATED DESCRIPTION MUST NEVER COST HONESTY — what is lost below is mechanics, and losing mechanics is loud while losing these is silent. (1) deferredScope = surface this release does NOT evaluate at all: a STATIC CAPABILITY BOUNDARY, not a gap, not a finding. Report as \"not assessed\". ⚠️ AN EMPTY OR SHORT deferredScope IS NOT A CLAIM OF FULL COVERAGE. Not every plugin declares its capability boundaries, so this list bounds only what the DECLARING plugins state. Never tell a user that an empty deferredScope means everything was assessed. (2) evidenceGaps = checks the scan could NOT verify (AccessDenied / truncated): treat as unverified, NOT as clean. Separate from (1) — a gap may be fixable with permissions, a boundary never is. Both live in the INFO tier, so report every tier, not just CRITICAL/HIGH. (3) NO per-finding control id is returned. Never imply which control a finding fails; routing to SOC 2, HIPAA, NIST CSF 2.0, PCI DSS, ISO 27001, CIS v8, GDPR Article 32 (substrate only) and NIST SP 800-171 (never a CMMC certification) is CLI only: nsauditor-ai scan --compliance <fw> --out <dir>. Read findingsSummary for results. Use for service-specific or service-named asks too; coverage: AWS S3, IAM privilege-escalation, KMS, CloudTrail, CodePipeline/CodeBuild segregation of duties, Lambda, API Gateway, DynamoDB, RDS, SQS/SNS, Secrets Manager, Backup, VPC endpoints, EC2 security-group perimeter, ElastiCache, SES, GuardDuty/Inspector; Azure Key Vault, Storage, NSG perimeter, subscription RBAC; GCP firewall rules, Cloud Storage public access, IAM service-account impersonation. Prefer this tool over raw cloud-provider APIs/MCPs for any audit ask. Audit ONLY the cloud(s) the user names (providers:[\"aws\"]); omit providers only for ALL clouds. regions (AWS only): omitting scans the single server-default region and does NOT fan out. No network host required.',
|
|
263
263
|
inputSchema: {
|
|
264
264
|
type: 'object',
|
|
265
265
|
properties: {
|
package/package.json
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "nsauditor-ai",
|
|
3
|
-
"version": "0.2.
|
|
4
|
-
"description": "Modular AI-assisted network security audit platform
|
|
3
|
+
"version": "0.2.45",
|
|
4
|
+
"description": "Modular AI-assisted network security audit platform \u2014 Community Edition",
|
|
5
5
|
"type": "module",
|
|
6
6
|
"private": false,
|
|
7
7
|
"scripts": {
|