Privacy hardening, remote-peer IP masking and review fixes

- Add privacy projection (core/privacy.py), private report storage, bounded
  process capture; omit identities, free text and unapproved paths
- Mask remote peer IPs: only loopback/host/wildcard stay numeric, others are
  reduced to remote_scope private/public (schema + scoring updated)
- Map ss TCP states to canonical names; ASCII-only numeric fields; fix
  "Microsoft Visual C++" product matching (Python and PowerShell)
- Merge 7fed3b9: -Diagnostic switch, serialization exit code 3, PS7 module
  path, UI error detail; keep hardened task/certificate collectors
- Add audit docs, privacy docs and regression tests

Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
This commit is contained in:
2026-11-04 18:50:24 -08:00
parent 7fed3b9ab9
commit 610a3bb447
51 changed files with 2719 additions and 604 deletions

View File

@@ -20,7 +20,8 @@
},
"collected_at": {
"type": "string",
"format": "date-time"
"format": "date-time",
"maxLength": 8192
},
"server": {
"type": "object",
@@ -29,7 +30,8 @@
],
"properties": {
"hostname": {
"type": "string"
"type": "string",
"maxLength": 8192
},
"platform": {
"enum": [
@@ -38,22 +40,28 @@
]
},
"operating_system": {
"type": "string"
"type": "string",
"maxLength": 8192
},
"os_version": {
"type": "string"
"type": "string",
"maxLength": 8192
},
"os_build": {
"type": "string"
"type": "string",
"maxLength": 8192
},
"kernel_version": {
"type": "string"
"type": "string",
"maxLength": 8192
},
"collection_source": {
"type": "string"
"type": "string",
"maxLength": 8192
},
"domain": {
"type": "string"
"type": "string",
"maxLength": 8192
},
"product_type": {
"type": "integer"
@@ -67,16 +75,25 @@
"ip_addresses": {
"type": "array",
"items": {
"type": "string"
}
"type": "string",
"maxLength": 8192
},
"maxItems": 20000
},
"network_adapters": {
"type": "array",
"items": {
"type": "string"
}
"type": "string",
"maxLength": 8192
},
"maxItems": 20000
},
"last_boot": {
"type": "string",
"maxLength": 8192
}
}
},
"additionalProperties": false
},
"checks": {
"type": "object",
@@ -96,15 +113,18 @@
]
},
"message": {
"type": "string"
"type": "string",
"maxLength": 8192
},
"started_at": {
"type": "string",
"format": "date-time"
"format": "date-time",
"maxLength": 8192
},
"completed_at": {
"type": "string",
"format": "date-time"
"format": "date-time",
"maxLength": 8192
},
"errors": {
"type": "array",
@@ -118,30 +138,39 @@
"additionalProperties": false,
"properties": {
"code": {
"type": "string"
"type": "string",
"maxLength": 8192
},
"scope": {
"type": "string"
"type": "string",
"maxLength": 8192
},
"message": {
"type": "string"
"type": "string",
"maxLength": 8192
}
}
}
},
"maxItems": 20000
},
"permission_limitations": {
"type": "array",
"items": {
"type": "string"
}
"type": "string",
"maxLength": 8192
},
"maxItems": 20000
},
"limitations": {
"type": "array",
"items": {
"type": "string"
}
"type": "string",
"maxLength": 8192
},
"maxItems": 20000
}
}
},
"additionalProperties": false
},
"required": [
"roles",
@@ -151,7 +180,8 @@
"software",
"storage",
"certificates"
]
],
"maxProperties": 30
},
"inventory": {
"type": "object",
@@ -174,19 +204,25 @@
],
"properties": {
"name": {
"type": "string"
"type": "string",
"maxLength": 8192
},
"display_name": {
"type": "string"
"type": "string",
"maxLength": 8192
},
"state": {
"type": "string"
"type": "string",
"maxLength": 8192
},
"feature_type": {
"type": "string"
"type": "string",
"maxLength": 8192
}
}
}
},
"additionalProperties": false
},
"maxItems": 20000
},
"services": {
"type": "array",
@@ -198,25 +234,44 @@
],
"properties": {
"name": {
"type": "string"
"type": "string",
"maxLength": 8192
},
"state": {
"type": "string"
"type": "string",
"maxLength": 8192
},
"display_name": {
"type": "string"
"type": "string",
"maxLength": 8192
},
"startup": {
"type": "string"
"type": "string",
"maxLength": 8192
},
"account": {
"type": "string"
"type": "string",
"maxLength": 8192
},
"pid": {
"type": "integer"
},
"arguments": {
"type": "string",
"maxLength": 8192
},
"executable": {
"type": "string",
"maxLength": 8192
},
"PathName": {
"type": "string",
"maxLength": 8192
}
}
}
},
"additionalProperties": false
},
"maxItems": 20000
},
"network": {
"type": "array",
@@ -231,22 +286,52 @@
],
"properties": {
"state": {
"type": "string"
"type": "string",
"maxLength": 8192
},
"local_address": {
"type": "string"
"type": "string",
"maxLength": 8192
},
"local_port": {
"type": "integer"
},
"remote_address": {
"type": "string"
"type": "string",
"maxLength": 8192
},
"remote_port": {
"type": "integer"
},
"pid": {
"type": [
"integer",
"null"
],
"minimum": 0
},
"process": {
"type": "string",
"maxLength": 8192
},
"direction": {
"type": "string",
"maxLength": 8192
},
"remote_scope": {
"enum": [
"",
"loopback",
"host",
"unspecified",
"private",
"public"
]
}
}
}
},
"additionalProperties": false
},
"maxItems": 20000
},
"tasks": {
"type": "array",
@@ -258,31 +343,52 @@
],
"properties": {
"name": {
"type": "string"
"type": "string",
"maxLength": 8192
},
"enabled": {
"type": "boolean"
},
"path": {
"type": "string"
"type": "string",
"maxLength": 8192
},
"account": {
"type": "string"
"type": "string",
"maxLength": 8192
},
"triggers": {
"type": "string"
"type": "string",
"maxLength": 8192
},
"state": {
"type": "string"
"type": "string",
"maxLength": 8192
},
"executables": {
"type": "string"
"type": "string",
"maxLength": 8192
},
"associated_unit": {
"type": "string"
"type": "string",
"maxLength": 8192
},
"arguments": {
"type": "string",
"maxLength": 8192
},
"executable": {
"type": "string",
"maxLength": 8192
},
"PathName": {
"type": "string",
"maxLength": 8192
}
}
}
},
"additionalProperties": false
},
"maxItems": 20000
},
"software": {
"type": "array",
@@ -293,22 +399,29 @@
],
"properties": {
"name": {
"type": "string"
"type": "string",
"maxLength": 8192
},
"publisher": {
"type": "string"
"type": "string",
"maxLength": 8192
},
"version": {
"type": "string"
"type": "string",
"maxLength": 8192
},
"installation_date": {
"type": "string"
"type": "string",
"maxLength": 8192
},
"registry_view": {
"type": "string"
"type": "string",
"maxLength": 8192
}
}
}
},
"additionalProperties": false
},
"maxItems": 20000
},
"storage": {
"type": "array",
@@ -321,16 +434,20 @@
],
"properties": {
"type": {
"type": "string"
"type": "string",
"maxLength": 8192
},
"name": {
"type": "string"
"type": "string",
"maxLength": 8192
},
"path": {
"type": "string"
"type": "string",
"maxLength": 8192
},
"filesystem": {
"type": "string"
"type": "string",
"maxLength": 8192
},
"special": {
"type": "boolean"
@@ -356,14 +473,18 @@
"minimum": 0
},
"activity_source": {
"type": "string"
"type": "string",
"maxLength": 8192
},
"activity_observed_at": {
"type": "string",
"format": "date-time"
"format": "date-time",
"maxLength": 8192
}
}
}
},
"additionalProperties": false
},
"maxItems": 20000
},
"certificates": {
"type": "array",
@@ -374,25 +495,57 @@
],
"properties": {
"subject": {
"type": "string"
"type": "string",
"maxLength": 8192
},
"issuer": {
"type": "string"
"type": "string",
"maxLength": 8192
},
"expires": {
"type": "string"
"type": "string",
"maxLength": 8192
},
"thumbprint": {
"type": "string"
"type": "string",
"maxLength": 8192
},
"store": {
"type": "string"
"type": "string",
"maxLength": 8192
}
}
}
},
"additionalProperties": false
},
"maxItems": 20000
}
},
"additionalProperties": false
},
"privacy": {
"type": "object",
"additionalProperties": false,
"required": [
"profile",
"identities_omitted",
"paths",
"scope"
],
"properties": {
"profile": {
"const": "minimized-metadata-v1"
},
"identities_omitted": {
"const": true
},
"paths": {
"const": "approved-roots-only"
},
"scope": {
"type": "string",
"maxLength": 8192
}
}
}
}
}