You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Add-Finding-Severity "INFO"-Category "General"-Title "No Baseline Found"`
189
-
-Description "No baseline snapshot exists for comparison. Run with -CreateBaseline on a known-clean system to enable change detection on future scans."`
Add-Finding-Severity "INFO"-Category "General"-Title "No Baseline Found"`
190
+
-Description "No baseline snapshot exists for comparison. Run with -CreateBaseline on a known-clean system to enable change detection on future scans."`
-Description "The PowerShell Security module (Microsoft.PowerShell.Security) could not be loaded in this session. Authenticode signature checks will be skipped or may produce false positives. Affected checks: AMSI DLL integrity, COM hijack detection, unsigned process/file detection."`
203
+
-Remediation "Run the scan in a fresh PowerShell session. If the issue persists, run 'sfc /scannow' to repair PowerShell modules."
-**Unsigned process false positives** -- `Check-Processes.ps1` now uses `TrustedAppDirs` from config to skip processes in trusted directories (e.g. Git for Windows)
18
+
-**Ephemeral port baseline noise** -- ports in the Windows dynamic range (49152-65535) are excluded from baseline diffs
19
+
- Added `Git\usr\bin` to `TrustedAppDirs` in `config.example.json`
Copy file name to clipboardExpand all lines: CLAUDE.md
+2-2Lines changed: 2 additions & 2 deletions
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -83,7 +83,7 @@ Copied from `config/config.example.json`. Controls:
83
83
84
84
### Baseline System
85
85
86
-
`-CreateBaseline` snapshots ports, services, accounts, Run keys, scheduled tasks, and Defender exclusions to JSON. Baselines are **never auto-overwritten** — this is intentional to prevent a compromised system from poisoning its own baseline.
86
+
`-CreateBaseline` snapshots ports, services, accounts, Run keys, scheduled tasks, and Defender exclusions to JSON. Baselines are **never auto-overwritten** — this is intentional to prevent a compromised system from poisoning its own baseline. Baseline comparison can be skipped with `-SkipModules Baseline`. Ephemeral ports (49152-65535) are excluded from baseline diffs.
87
87
88
88
### Redaction System
89
89
@@ -102,7 +102,7 @@ Individual modules do not need to handle redaction.
102
102
103
103
`-CIMode` makes the tool usable by AI terminal agents and CI pipelines:
- All `.ps1` files must use **UTF-8 BOM** encoding (PowerShell 5.1 reads files as Windows-1252 without it, breaking non-ASCII characters)
99
+
- All `.ps1` files must use **UTF-8 BOM** encoding (PowerShell 5.1 reads files as Windows-1252 without it, breaking non-ASCII characters). Run `fix-bom.ps1` after any edit to re-apply the BOM (most editors and the Claude Code Edit tool strip it on save).
100
100
- PowerShell verb-noun naming for functions
101
101
- Consistent indentation (4 spaces)
102
102
- Section headers with `# ── N. Section Name ──...` pattern
103
103
- Status messages via `Write-Status`, not `Write-Host`
104
104
105
+
### Git hooks (BOM enforcement)
106
+
107
+
A pre-commit hook rejects commits that include `.ps1` files without a UTF-8 BOM. Activate it once per clone:
108
+
109
+
```sh
110
+
git config core.hooksPath .githooks
111
+
```
112
+
113
+
If the hook blocks your commit, run `fix-bom.ps1`, re-stage, and commit again.
-Description "HKLM:\SOFTWARE\Microsoft\Windows Script\Settings!AmsiEnable is set to 0. This explicitly disables AMSI for Windows Script Host (VBScript, JScript), allowing malicious scripts to run without AV scanning."`
-Title "PowerShell Script Block Logging Not Enabled"`
109
+
-Description "Script block logging is not enabled via policy. When enabled, PowerShell logs all executed script blocks to the event log (Event ID 4104), which is valuable for detecting obfuscated or malicious scripts."`
0 commit comments