Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
3 changes: 3 additions & 0 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -297,6 +297,7 @@ See [SCAN_COVERAGE.md](SCAN_COVERAGE.md) for the full catalog of supported detec
| Go Modules | `go.mod`/`go.work` declarations, vendored modules, module cache, `GOBIN` tools, recorded checksums (enterprise) |
| Rust Packages | `Cargo.toml` declarations, `Cargo.lock`, registry cache, Git checkouts, vendored sources, `cargo install` receipts (enterprise) |
| PHP Packages | `composer.json` requirements, `composer.lock` snapshots and Composer 1/2 installed receipts, with separate directory presence (enterprise) |
| .NET Packages | MSBuild project and `packages.config` references, `packages.lock.json`, `project.assets.json` restores, global package cache, .NET tools, templates and `.deps.json` (enterprise) |
| Package Configs | npm (`.npmrc`), pnpm, bun (`bunfig.toml`), yarn classic & berry (`.yarnrc`/`.yarnrc.yml`), pip (`pip.conf`) — effective registry, cooldown policy, and auth surface across every scope |
| Suspicious Files | Malicious-file IOCs from StepSecurity-maintained rules — e.g. `binding.gyp` that runs during `npm install`, and editor/AI-tool config files that auto-execute on project open |

Expand All @@ -316,6 +317,8 @@ Configuration is read from `.npmrc` (npm), pnpm config, `bunfig.toml` (bun), `.y

Composer auditing reads selected global `config.json`, root manifests and verified process overrides. It reports observed repository, proxy, TLS and plugin settings with credentials redacted. It does not infer the repository that supplied a package or execute Composer to reconstruct runtime configuration. See [PHP Packages](SCAN_COVERAGE.md#php-packages) for scope and limits.

NuGet auditing reads project, ancestor, user and machine `NuGet.Config` files plus verified process overrides. It reports package sources, source mapping, fallback folders, proxy, TLS and audit settings with credentials redacted, and records which configuration applied to each project and restore. It never executes `dotnet` or `nuget` or reads credential-provider output. See [.NET Packages](SCAN_COVERAGE.md#net-packages) for scope and limits.

Enterprise Device Policy can also set StepSecurity Secure Registry as the sole user-level Python index for pip and uv. It manages only the resolved developer's user configuration and shared StepSecurity `.netrc` entry, keeps pip and uv results independent, and restores owned settings on an explicit policy clear. Project files, virtual environments, system configuration, environment variables, direct URLs, and Poetry are not modified.

### Suspicious file detection
Expand Down
21 changes: 21 additions & 0 deletions SCAN_COVERAGE.md
Original file line number Diff line number Diff line change
Expand Up @@ -323,6 +323,27 @@ Enterprise telemetry emits `composer_inventory` and `composer_config_audit` for

**Limits and privacy.** Each JSON input is capped at 2 MiB; discovery at 100,000 entries per root and depth 128; inventory at 50,000 records; audit at 256 KiB; combined sections at 16 MiB. Failures and limits carry partial coverage. URL credentials, queries and fragments are removed before telemetry. Auth objects become presence flags; arbitrary config, headers, scripts and auth-file contents are not collected. Standalone caches, PHARs, copied PHP without supported receipts, historical shell overrides and `installed.php`-only metadata are outside v1 coverage. Native VM and live API acceptance is tracked separately from local parser tests.

## .NET Packages

Enterprise telemetry emits `nuget_inventory` and `nuget_config_audit` for the resolved developer. Collection is static: `dotnet`, `nuget`, MSBuild, credential providers, scripts and discovered binaries are never executed, and no feed is contacted.

| Evidence | Source and meaning |
|---|---|
| Declared requirements | `PackageReference`, `PackageDownload` and versioned `Sdk` items in `.csproj`/`.fsproj`/`.vbproj` files, with versions from the nearest `Directory.Packages.props` when central management applies; `packages.config` entries; `dotnet-tools.json` tools; `#:package`/`#:sdk` directives in file-based C# apps and `#r "nuget:"` in F# scripts. Conditional items are flagged. Build-time imports, property functions and `global.json` are not evaluated; a project that needs them is `partial`. |
| Locked packages | `packages.lock.json` formats 1–3, with the direct/transitive dependency type and recorded content hash. A lock does not prove a restore. |
| Restored packages | `project.assets.json` v3/v4 libraries and per-framework targets, including orphan assets whose project is unresolved. Each restored package is joined to the cache it was restored from for presence and origin; a `packages.config` package counts as restored only when its directory exists under the repository path. |
| Cached packages | `<id>/<version>/` entries in the global packages folder, configured fallback and custom folders: `.nuspec` identity (loose or read from the `.nupkg` without unpacking), `.nupkg.metadata` content hash and source, `.nupkg.sha512` archive hash. Missing markers or a mismatched identity are reported, never guessed. |
| Installed tools | Global tool store receipts, `DotnetToolSettings.xml` commands and shim presence; local manifests upgraded through the tool resolver cache. |
| Installed templates | The template engine `packages.json` receipt. |
| Binary dependencies | `*.deps.json` package libraries with their recorded hash, attributed to the owning project when one is found. |
| Configuration | Project and ancestor `NuGet.Config` files inside the search roots, user and additional user configs, machine-wide configs and the verified process environment, with allowlisted package source, mapping, fallback folder, path, proxy, TLS, signer, audit and lock settings per ambient and restore context, and findings `nuget-001`…`nuget-004`. Credentials and API keys are recorded as configured only. |

**Discovery.** Uses the selected search roots with protected-path and network-volume guards. VCS, `node_modules` and cache directories, conventional NuGet homes and directories holding `.nupkg` files are pruned from the project walk; `bin`/`obj` are walked so receipts are found by name. Directory symlinks are not followed. Paths named by configuration or restore metadata are resolved through the guard.

**Meaning.** Declared, locked, restored and cached evidence stay independent when they disagree. Recorded SHA-512 values are reported as `recorded` and never verified. A feed origin comes only from a restore marker that names the source; everything else is `local` or `unknown`. Effective sources are not computed from `<clear/>` order.

**Limits and privacy.** Each metadata file is capped at 2 MiB and each `.nupkg` read at 32 MiB; discovery at 100,000 entries per root and depth 128; inventory at 50,000 records; audit at 256 KiB; combined sections at 16 MiB. Failures and limits carry partial coverage. URL credentials, queries and fragments are removed before telemetry; `ClearTextPassword`, `Password`, API keys and credential-provider arguments are never collected, and an environment-variable reference is not reported as a stored password. `project.json`, `.ridpackage.json`, `#i` script sources and `global.json` SDK resolution are outside v1 coverage.

## System Package Scanning (Linux)

System package scanning is **automatic on Linux** — no opt-in flag required. Multiple package managers can coexist.
Expand Down
Loading
Loading