This commit is contained in:
@@ -114,13 +114,39 @@ Scanner.Worker (Windows profile)
|
||||
| Authenticodes verification locus | Decide scanner vs policy responsibility for signature verification | Security Guild | TBD |
|
||||
| Feed mirroring policy | Which Chocolatey feeds to mirror by default | Product + Security Guilds | TBD |
|
||||
|
||||
## 9. Proposed backlog entries
|
||||
| ID (proposed) | Title | Summary |
|
||||
| --- | --- | --- |
|
||||
| SCANNER-ENG-0024 | Implement Windows MSI collector | Parse MSI databases, emit component fragments with provenance metadata. |
|
||||
| SCANNER-ENG-0025 | Implement WinSxS manifest collector | Correlate assemblies with MSI components and catalog signatures. |
|
||||
| SCANNER-ENG-0026 | Implement Chocolatey & registry collectors | Harvest nuspec metadata and uninstall/service registry data. |
|
||||
| SCANNER-ENG-0027 | Policy & Offline integration for Windows | Define predicates, CLI toggles, Offline Kit packaging, documentation. |
|
||||
## 9. Implementation status
|
||||
|
||||
| ID | Title | Status | Notes |
|
||||
| --- | --- | --- | --- |
|
||||
| SCANNER-ENG-0024 | Windows MSI collector | **DONE** | `StellaOps.Scanner.Analyzers.OS.Windows.Msi` - OLE compound document parser, extracts Product/File tables, 22 tests passing |
|
||||
| SCANNER-ENG-0025 | WinSxS manifest collector | **DONE** | `StellaOps.Scanner.Analyzers.OS.Windows.WinSxS` - XML manifest parser, assembly identity extraction, 18 tests passing |
|
||||
| SCANNER-ENG-0026 | Chocolatey collector | **DONE** | `StellaOps.Scanner.Analyzers.OS.Windows.Chocolatey` - nuspec parser with directory fallback, 44 tests passing |
|
||||
| SCANNER-ENG-0026 | Registry collector | DEFERRED | Requires exported hive parsing; tracked separately |
|
||||
| SCANNER-ENG-0027 | Policy predicates | PENDING | Requires Policy module integration (see §5) |
|
||||
| SCANNER-ENG-0027 | Offline kit packaging | DONE | All analyzers work offline (local file parsing only) |
|
||||
|
||||
### Implementation details
|
||||
|
||||
**MSI collector** (`windows-msi` analyzer ID):
|
||||
- Parses MSI database files using OLE compound document signature detection
|
||||
- Extracts ProductCode, UpgradeCode, ProductName, Manufacturer, ProductVersion
|
||||
- PURL format: `pkg:generic/windows-msi/{normalized-name}@{version}?upgrade_code={code}`
|
||||
- Vendor metadata: `msi:product_code`, `msi:upgrade_code`, `msi:manufacturer`, etc.
|
||||
|
||||
**WinSxS collector** (`windows-winsxs` analyzer ID):
|
||||
- Scans `Windows/WinSxS/Manifests/*.manifest` files
|
||||
- Parses XML assembly identity with multiple namespace support (2006/2009/2016)
|
||||
- Extracts name, version, architecture, public key token, language, type
|
||||
- PURL format: `pkg:generic/windows-winsxs/{assembly-name}@{version}?arch={arch}`
|
||||
- Vendor metadata: `winsxs:name`, `winsxs:version`, `winsxs:public_key_token`, etc.
|
||||
|
||||
**Chocolatey collector** (`windows-chocolatey` analyzer ID):
|
||||
- Scans `ProgramData/Chocolatey/lib/` and `ProgramData/chocolatey/lib/`
|
||||
- Parses `.nuspec` files with multiple schema namespace support (2010/2011/2015)
|
||||
- Falls back to directory name parsing when nuspec missing
|
||||
- Computes SHA256 hash of `chocolateyinstall.ps1` for determinism
|
||||
- PURL format: `pkg:chocolatey/{package-id}@{version}`
|
||||
- Vendor metadata: `choco:id`, `choco:authors`, `choco:install_script_hash`, etc.
|
||||
|
||||
## 10. References
|
||||
- `docs/benchmarks/scanner/deep-dives/windows.md`
|
||||
|
||||
Reference in New Issue
Block a user