diff --git a/docs/cfg/core.md b/docs/cfg/core.md
index 9d2644b..d877f7d 100644
--- a/docs/cfg/core.md
+++ b/docs/cfg/core.md
@@ -88,13 +88,20 @@ nvm config set auto_detect=.nvmrc,.node-version
| Option | Default | Values | Description |
|--------|---------|--------|-------------|
| `pm_mismatch_action` | `error` | `ignore`, `warn`, `error` | Action to take when a mismatch between npm/pnpm/yarn and Node.js versions is detected during install or use:
- ignore: stay silent
- warn: continue after a warning
- error: stop the operation (safest default)
|
+| `shim_bun` | Community: `false`
Certified Builds: `true` | Boolean | Wrap `bun` and `bunx` so OpenSSF malware checks run when bun is used as a package manager. NVM for Windows does not install bun and does not switch bun versions. Set `false` to remove the shims. HKLM `ShimBun` wins over HKCU. See [Package Manager Shims](../command/package-manager-shims#bun-malware-wrap). |
+
+```powershell
+nvm config set shim_bun=false
+```
## Logging and announcements
| Option | Default | Values | Description |
|--------|---------|--------|-------------|
| `log_executions` | `false` | Boolean | Whether to log every Node.js invocation (ex: `node file.js`). (shim-only) |
-| `disable_announcements` | `false` | Boolean | Whether to disable project and release announcements. On Certified Builds, license expiry warnings still run when a commercial license is present. |
+| `disable_announcements` | `false` | Boolean | Whether to disable project and release announcements. On Certified Builds, license expiry warnings still run when a commercial license is present. This does not suppress malware definition or malware block notifications. |
+| `skip_malware_checks` | `false` | Boolean | Skip malware checks for package-manager and node shims. The definition file still updates. HKLM `SkipMalwareChecks` wins over HKCU. |
+| `notify_malware_definitions` | `true` | Boolean | Certified only. Show a silent notification after malware definitions change. HKLM can force it off. |
```powershell
nvm config set log_executions=true
diff --git a/docs/cfg/enterprise/registry.md b/docs/cfg/enterprise/registry.md
index 72ade45..b720fd9 100644
--- a/docs/cfg/enterprise/registry.md
+++ b/docs/cfg/enterprise/registry.md
@@ -52,9 +52,15 @@ See [Administrative Templates](ad) for GPO and Intune deployment. Download ADMX/
|**Local install source**|`LocalInstallDir`|**Overridable** (`local_dir`). Alternate local directory for Node.js archives (air-gapped mirrors). Overrides cache.
`REG_SZ`|
|**Local install only**|`LocalInstallOnly`|**Overridable** (`local_install_only`). Restrict installs to `LocalInstallDir` only.
- `0` = off
- `1` = on
Default: `0`
`REG_DWORD`|
|**Audit logging**|`LogExecutions`|**Overridable** (`log_executions`). Log every Node.js invocation to the Windows Event Log (shim-only). Most useful on **Audit+** (structured ETW).
- `0` = off
- `1` = on
Default: `0`
`REG_DWORD`|
+|**Skip malware checks**|`SkipMalwareChecks`|**Overridable** (`skip_malware_checks`). Skip malware checks for package-manager and node shims. The definition file still updates. HKLM wins over HKCU.
- `0` = check
- `1` = skip
Default: `0`
`REG_DWORD`|
+|**Wrap bun for malware checks**|`ShimBun`|**Overridable** (`shim_bun`). Wrap `bun` and `bunx` so OpenSSF malware checks run when bun is used as a package manager. NVM for Windows does not install bun and does not switch bun versions. HKLM wins over HKCU.
- `0` = no bun shims
- `1` = create `{DataRoot}/.shim/bun.exe` and `bunx.exe`
Default: `0` Community, `1` Certified Builds
`REG_DWORD`|
+|**Notify malware definitions**|`NotifyMalwareDefinitions`|**Overridable** (`notify_malware_definitions`). Certified only. Silent toast after definitions change. HKLM can force it off.
- `0` = hide
- `1` = show
Default: `1`
`REG_DWORD`|
+|**Malware allow list**|`MalwareAllowList`|HKLM only. Patterns that clear an OpenSSF hit. Byte-for-byte. A `*` clears every OpenSSF hit. Does not clear an organization block. Empty allows nothing.
`REG_MULTI_SZ`|
+|**Malware block list**|`MalwareBlockList`|Certified only. HKLM patterns that always block, or one `https://` policy URL. Community builds ignore this list.
`REG_MULTI_SZ`|
+|**Malware trust conflict**|`MalwareTrustConflict`|Certified only. **Overridable** (`malware_trust_conflict`). `prevent` (default) blocks a trusted or approved OpenSSF hit. `continue` lets that explicit trust or approval through. HKLM wins over HKCU.
`REG_SZ`|
|**Node.js download mirrors**|`MirrorNode`|**Overridable** (`node_mirror`). Ordered mirror list; first successful response wins. See [Download Mirrors](../features/mirrors). Author `*.author.io` mirrors need Governance licensing — see [Version Firewall + Author Mirror](../features/author-mirror).
Default: `https://nodejs.org/dist`
`REG_MULTI_SZ`|
|**npm registry mirrors**|`MirrorNpm`|**Overridable** (`npm_mirror`). Ordered npm registry list. Used as shim registry fallback.
Default: `https://registry.npmjs.org`
`REG_MULTI_SZ`|
-|**Operating mode**|`OperatingMode`|**Overridable** (`mode`). How NVM for Windows manages Node.js versions.
**Shim** (recommended) uses signed shims to intercept `node`, `npm`, `npx`, `yarn`, and `pnpm`. Required for runtime policies (audit logging, auto-detect, ACL).
**Link** uses NTFS junctions/symlinks on PATH.
Default: `shim`
`REG_SZ`|
+|**Operating mode**|`OperatingMode`|**Overridable** (`mode`). How NVM for Windows manages Node.js versions.
**Shim** (recommended) uses signed shims to intercept `node`, `npm`, `npx`, `yarn`, `pnpm`, and (when `ShimBun` is on) `bun` / `bunx`. Required for runtime policies (audit logging, auto-detect, ACL).
**Link** uses NTFS junctions/symlinks on PATH.
Default: `shim`
`REG_SZ`|
|**Package manager mismatch action**|`PackageManagerMismatchAction`|**Overridable** (`pm_mismatch_action`). Behavior when npm/pnpm/yarn version mismatches Node during install or use (shim-only).
- `ignore`
- `warn`
- `error`
Default: `error`
`REG_SZ`|
|**Proxy URL**|`Proxy`|**Overridable** (`proxy`). Proxy for downloads. Basic and Bearer work on all certified editions. See [Download Mirrors](../features/mirrors#http-proxies).
`REG_SZ`|
|**Proxy auth value**|`ProxyAuth`|**Overridable** (`proxy_auth`). Credentials or bearer token (stored in plain text).
- `user:pass`
- `Bearer YOUR_TOKEN`
`REG_SZ`|
@@ -126,6 +132,10 @@ Windows Registry Editor Version 5.00
"FirewallSkipLockfile"=dword:00000000
"DisableUpgrade"=dword:00000001
"DisableAnnouncements"=dword:00000001
+"SkipMalwareChecks"=dword:00000000
+"ShimBun"=dword:00000001
+"NotifyMalwareDefinitions"=dword:00000001
+"MalwareTrustConflict"="prevent"
; --- Shim runtime (requires OperatingMode=shim) ---
"DefaultDetectFile"=".nvmrc"
diff --git a/docs/command/global-module-shims.md b/docs/command/global-module-shims.md
index 9837990..5192379 100644
--- a/docs/command/global-module-shims.md
+++ b/docs/command/global-module-shims.md
@@ -9,7 +9,7 @@ slug: /command/global-module-shims
In **shim** mode, globally installed CLI tools (anything that ships a `.cmd` next to the active Node install — for example `tsc`, `eslint`, `prettier`) are not invoked from that folder directly. NVM for Windows places a hardlink (or copy) of **`proxy.exe`** on `PATH` as `{DataRoot}/.shim/{name}.exe`.
-Package managers (`npm`, `npx`, `yarn`, `pnpm`, `corepack`) use the same `proxy.exe` binary; see [Package Manager Shims](/command/package-manager-shims). The [node shim](/command/node) is a separate binary.
+Package managers (`npm`, `npx`, `yarn`, `pnpm`, `corepack`, and bun when `shim_bun` is on) use the same `proxy.exe` binary; see [Package Manager Shims](/command/package-manager-shims). The [node shim](/command/node) is a separate binary.
## How a global command is shimmed
diff --git a/docs/command/index.md b/docs/command/index.md
index 314b8f3..088d6bc 100644
--- a/docs/command/index.md
+++ b/docs/command/index.md
@@ -12,7 +12,7 @@ Command documentation for NVM for Windows v2:
|---------|----------|
| [nvm](/command/nvm/) | `nvm.exe` CLI — install, use, list, config, cache, and related commands |
| [node (shim)](/command/node) | Runtime `node` shim flags (`--nvm-use`, `--nvm-which`, …) |
-| [Package Manager Shims](/command/package-manager-shims) | `proxy.exe` for npm/npx/yarn/pnpm |
+| [Package Manager Shims](/command/package-manager-shims) | `proxy.exe` for npm/npx/yarn/pnpm and optional bun |
| [Global Module Shims](/command/global-module-shims) | `proxy.exe` hardlinks for global CLIs (`tsc`, …) |
Start with [`nvm install`](/command/nvm/install/) and [`nvm use`](/command/nvm/use/), or [Operating Modes](/features/modes) for shim vs link.
diff --git a/docs/command/node.md b/docs/command/node.md
index be07955..90aa290 100644
--- a/docs/command/node.md
+++ b/docs/command/node.md
@@ -66,7 +66,7 @@ The shim adds roughly 1–3 ms of resolution work. Windows still pays `CreatePro
## Related
-- [Package Manager Shims](/command/package-manager-shims) — `proxy.exe` for npm/npx/yarn/pnpm
+- [Package Manager Shims](/command/package-manager-shims) — `proxy.exe` for npm/npx/yarn/pnpm and optional bun
- [Global Module Shims](/command/global-module-shims) — `proxy.exe` hardlinks for global CLIs
- [`nvm use shim`](/command/nvm/use/shim)
- [Error Codes](/troubleshooting/error-codes) — NVM4301 and related security codes
diff --git a/docs/command/nvm/cache/list.md b/docs/command/nvm/cache/list.md
index fe32eb6..8b26482 100644
--- a/docs/command/nvm/cache/list.md
+++ b/docs/command/nvm/cache/list.md
@@ -19,7 +19,7 @@ nvm cache list [name ...] [flags]
| Argument | Required | Description |
|----------|----------|-------------|
-| `[name ...]` | No | Filter by cache name (for example `versions`, `metadata`). |
+| `[name ...]` | No | Filter by cache name (for example `versions`, `metadata`, `malware`). `malware` lists one row per lockfile stamp plus `malware.db`. |
## Flags
diff --git a/docs/command/nvm/cache/remove/all.md b/docs/command/nvm/cache/remove/all.md
index 9d115f5..dd3c4cc 100644
--- a/docs/command/nvm/cache/remove/all.md
+++ b/docs/command/nvm/cache/remove/all.md
@@ -5,7 +5,7 @@ sidebar_position: 3
# nvm cache remove all
-Clear both metadata and versions caches.
+Clear metadata, versions, malware scan stamps, and `malware.db`.
## Usage
diff --git a/docs/command/nvm/cache/remove/index.md b/docs/command/nvm/cache/remove/index.md
index 624ec78..73c1bbd 100644
--- a/docs/command/nvm/cache/remove/index.md
+++ b/docs/command/nvm/cache/remove/index.md
@@ -15,7 +15,8 @@ Remove cached artifacts.
|------------|-------------|
| [`version`](./version) | Remove cached Node.js archives (default). |
| [`metadata`](./metadata) | Remove cached metadata files. |
-| [`all`](./all) | Clear metadata and versions caches. |
+| [`all`](./all) | Clear metadata, versions, malware stamps, and `malware.db`. |
+| [`malware`](./malware) | Remove malware scan stamps, or `malware.db` when you pass that path. |
## Notes
diff --git a/docs/command/nvm/cache/remove/malware.md b/docs/command/nvm/cache/remove/malware.md
new file mode 100644
index 0000000..16ac0bd
--- /dev/null
+++ b/docs/command/nvm/cache/remove/malware.md
@@ -0,0 +1,24 @@
+---
+title: malware
+sidebar_position: 4
+---
+
+# nvm cache remove malware
+
+Remove malware scan stamps. With no path, every stamp is removed and `malware.db` stays. A path removes that stamp. `--prompt` can also select `malware.db`.
+
+`nvm cache remove all` removes the stamps and `malware.db`.
+
+## Usage
+
+```powershell
+nvm cache remove malware [path ...] [flags]
+```
+
+## Flags
+
+| Flag | Short | Description |
+|------|-------|-------------|
+| `--prompt` | `-p` | Pick stamps, `malware.db`, or both. |
+
+Removal honors [`allow_download_cache_removal`](../../../../cfg/core#downloads-and-mirrors).
diff --git a/docs/command/package-manager-shims.md b/docs/command/package-manager-shims.md
index 0e6002a..70f4ee6 100644
--- a/docs/command/package-manager-shims.md
+++ b/docs/command/package-manager-shims.md
@@ -7,18 +7,18 @@ slug: /command/package-manager-shims
# Package Manager Shims
-In **shim** mode, package managers are not run from the active Node.js folder directly. NVM for Windows places hardlinks (or copies) of a single Zig binary — **`proxy.exe`** — on `PATH` under names such as `npm.exe`, `npx.exe`, `yarn.exe`, and `pnpm.exe`.
+In **shim** mode, package managers are not run from the active Node.js folder directly. NVM for Windows places hardlinks (or copies) of a single Zig binary — **`proxy.exe`** — on `PATH` under names such as `npm.exe`, `npx.exe`, `yarn.exe`, `pnpm.exe`, and (when enabled) `bun.exe` / `bunx.exe`.
-The proxy resolves the active Node.js version (same rules as the [node shim](/command/node)), verifies trust, then delegates to the matching tool under that install.
+For npm, npx, yarn, pnpm, and corepack, the proxy resolves the active Node.js version (same rules as the [node shim](/command/node)), verifies trust, then delegates to the matching tool under that install. For bun, the proxy finds the bun you already installed and does not resolve Node.js.
Global CLIs installed with those managers (for example `tsc`) use the same `proxy.exe` mechanism — see [Global Module Shims](/command/global-module-shims).
## How `proxy.exe` works
-1. Read the invoked basename (`npm`, `yarn`, …) from `argv[0]`.
+1. Read the invoked basename (`npm`, `yarn`, `bun`, …) from `argv[0]`.
2. Parse and strip shim flags (`--nvm-use`, `--nvm-which`, `--nvm-shim-version`).
3. Verify self-integrity when launched from `{DataRoot}/.shim/*.exe` (byte-compare to canonical `{DataRoot}/proxy.exe`).
-4. Resolve Node.js (preference / detection / `--nvm-use`) and optionally auto-install.
+4. For `bun` / `bunx`, find the installed bun binary, run malware checks on package-manager commands, spawn bun, and stop. For other names, resolve Node.js (preference / detection / `--nvm-use`) and optionally auto-install.
5. Check the version directory is safe (not a reparse point, not cross-user writable) — failure → **NVM4305**.
6. Locate the delegated command under the Node install (`.exe`, then `.cmd`, then `.bat`).
7. Enforce package-manager constraints when policy applies (npm / npx / pnpm / yarn).
@@ -40,6 +40,7 @@ First-class names the proxy treats as constrained package managers:
| `pnpm` | `pnpm.cmd` / `.exe` (also scanned from `PNPM_HOME\bin`) |
| `yarn` | `yarn.cmd` / `.exe` |
| `corepack` | `corepack` entry / `node_modules/corepack/dist/corepack.js` (when present) |
+| `bun` / `bunx` | Your existing bun install. See [Bun malware wrap](#bun-malware-wrap). |
The same `--nvm-*` flags work on these commands:
@@ -53,6 +54,27 @@ When `auto_install` is enabled, missing auto-detected Node versions prompt/insta
After global-affecting operations (for example `npm install -g`, yarn global/dlx/plugins, corepack enable/use), the proxy may trigger **reshim** so new [global CLI shims](/command/global-module-shims) are created.
+## Bun malware wrap
+
+NVM for Windows does not install bun. It does not switch bun versions. When `shim_bun` is on, `reshim` puts `bun.exe` and `bunx.exe` on `PATH` as copies of `proxy.exe`. The proxy finds the bun you already installed, then applies the same OpenSSF malware checks used for npm, pnpm, and yarn.
+
+Find order:
+
+1. `%BUN_INSTALL%\bin\bun.exe` (or `bunx.exe`)
+2. `%USERPROFILE%\.bun\bin\bun.exe`
+3. `PATH`, skipping `{DataRoot}/.shim`
+
+Malware checks run for `bun install` / `i` / `add` / `x` / `create` / `update` and for every `bunx` invocation. `bun test`, `bun run`, and other bun commands pass through with no package scan.
+
+Turn the wrap off to remove the extra `CreateProcessW` hop:
+
+```powershell
+nvm config set shim_bun=false
+nvm reshim
+```
+
+Defaults: **off** in Community builds. **On** in Certified Builds. HKLM `ShimBun` wins over HKCU. See [`shim_bun`](/cfg/core#package-managers).
+
## Integrity verification
Shims fail closed when trust checks fail.
@@ -94,6 +116,7 @@ Trust entries are written when versions are installed, activated, or reshimed (`
npx.exe
yarn.exe
pnpm.exe
+ bun.exe / bunx.exe # when shim_bun is on
.exe # see Global Module Shims
node.exe # separate node shim binary
.verify/ # verify-cache public key material
diff --git a/docs/features/cache.md b/docs/features/cache.md
index b7d85f4..3a87364 100644
--- a/docs/features/cache.md
+++ b/docs/features/cache.md
@@ -31,6 +31,7 @@ Under the NVM data root (parent of the install root; default `%LOCALAPPDATA%\Aut
|-------|------|----------|
| Versions | `.cache/versions` | Node.js `.7z` archives (`node-v{version}-win-{x64\|arm64}.7z`) |
| Metadata | `.cache/metadata` | Sync/release index metadata (not install archives) |
+| Malware scans | `.cache/malware-scan` | One stamp per scanned lockfile. `malware.db` itself lives in the data root, next to this `.cache` directory |
| HTTP | `.cache/http` | Short-lived HTTP bodies (for example SHASUM fetches) |
If [`local_dir`](../cfg/registry#available-registry-keys) is set (see [registry policy](../cfg/registry)), that directory **replaces** `.cache/versions` as the archive source for installs.
@@ -54,6 +55,9 @@ nvm cache # list (alias: nvm cache list/ls)
nvm cache add 24 lts # prefetch archives
nvm cache remove version 24.1.0
nvm cache remove metadata
+nvm cache list malware
+nvm cache remove malware
+nvm cache remove malware --prompt
nvm cache remove all
nvm list cached # versions view of cached archives
```
diff --git a/docs/features/log.md b/docs/features/log.md
index c3cb294..c4bd289 100644
--- a/docs/features/log.md
+++ b/docs/features/log.md
@@ -19,3 +19,12 @@ If setup cannot elevate for `nvm --register-eventlog` (UAC canceled / non-admin)
:::tip[Certified Builds — Advanced Logging]
The **Advanced Logging** add-on (Certified Builds, available September 2026) writes structured entries with well-known SIEM event codes to a dedicated native NVM for Windows log (not the Application log). Use it for fleet SIEM integration and audit querying.
:::
+
+## Malware feed
+
+These events are written only when advanced logging is on. They use Windows Event ID 120 on `NVM for Windows/Operational`. A block still prints in the terminal when that license is off, and that block does not write `package_manager.install`.
+
+| Code | Event | Payload |
+|------|--------|---------|
+| **NVM4601** | `malware.definitions_updated` | `added`, `removed`, `seq`, `previous_seq` |
+| **NVM4602** | `malware.package_blocked` | package name, version when known, command |
diff --git a/docs/features/notifications.md b/docs/features/notifications.md
index 9221f08..346c57c 100644
--- a/docs/features/notifications.md
+++ b/docs/features/notifications.md
@@ -52,3 +52,5 @@ Scheduled maintenance can also display notifications:
| News feed | Feed entry title | Body is the entry description with links; skipped when [`disable_announcements`](../cfg/core#logging-and-announcements) is true |
| Update available | Update Available | Version availability with View/Upgrade links; skipped when [`disable_announcements`](../cfg/core#logging-and-announcements) is true |
| License expiry
_(certified builds)_ | Expiration warning | Not suppressed by [`disable_announcements`](../cfg/core#logging-and-announcements); at most one notification per milestone/day. |
+| Malware definitions
_(certified builds)_ | Malware definitions updated | Silent. Body is the added and removed counts. **Don't show again** sets `notify_malware_definitions` to false. Not suppressed by [`disable_announcements`](../cfg/core#logging-and-announcements). |
+| Malware block, console in the background | Malicious package blocked | Audible (`Notification.Reminder`). Names at most three packages, then `and N more`. Not suppressed by [`disable_announcements`](../cfg/core#logging-and-announcements). On a community build joined to Active Directory, Entra, or Google Workspace, the body adds: `Certified keeps a record of blocks like this for your security tools.` |
diff --git a/docs/guide/firewall.md b/docs/guide/firewall.md
index de03fb9..9866aed 100644
--- a/docs/guide/firewall.md
+++ b/docs/guide/firewall.md
@@ -16,6 +16,8 @@ Frontline controls for Node version installs, npm package installs, and self-upd
| Version | Certified | `VersionAllowList` / `VersionBlockList` | Block `nvm install` of disallowed Node versions |
| Module | Certified | `ApprovedModules` / `ApprovedGlobalModules` | Block npm/pnpm/yarn/npx install of disallowed packages (shim mode) |
| Trust | Community + Certified | `TrustedModules`, `UntrustedModuleHandlerAction` | Auto-reshim or prompt when a global CLI self-updates |
+| Malware, surface | Community + Certified | `SkipMalwareChecks`, `MalwareAllowList`, `ShimBun` | Block an OpenSSF hit on the named package or on direct `package.json` dependencies. Default on. `ShimBun` wraps bun as a package manager only — NVM for Windows does not install bun and does not switch bun versions |
+| Malware, lockfile | Certified | `MalwareBlockList`, `MalwareTrustConflict` | Also scan the lockfile. An organization block list and trust conflict apply only here |
## Commands
diff --git a/docs/guide/security.md b/docs/guide/security.md
index c39ba2b..81701bc 100644
--- a/docs/guide/security.md
+++ b/docs/guide/security.md
@@ -131,7 +131,7 @@ v2’s primary runtime shims are:
| Binary | Role |
|:-|:-|
| `.shim\node.exe` | Resolves version, verifies trust, applies optional security flags, spawns real Node |
-| `utils\proxy.exe` | Same trust path for npm / npx / yarn / pnpm and [global module](../command/global-module-shims) CLIs |
+| `utils\proxy.exe` | Same trust path for npm / npx / yarn / pnpm / bun (when `shim_bun` is on) and [global module](../command/global-module-shims) CLIs |
(`reshim.exe` is a helper, not a day-to-day command shim.)
@@ -220,7 +220,7 @@ See [Event Logging](../features/log). Broader product context (including native
| Topic | Doc |
|:-|:-|
| Shim behavior | [node (shim)](../command/node) |
-| npm / yarn / pnpm shims | [Package Manager Shims](../command/package-manager-shims) |
+| npm / yarn / pnpm / bun shims | [Package Manager Shims](../command/package-manager-shims) |
| Shim vs link | [Operating Modes](../features/modes) |
| Policy keys | [Registry Policy Reference](../cfg/registry) |
| Version firewall / mirror | [Author Mirror](../features/author-mirror) |
diff --git a/docs/troubleshooting/error-codes.md b/docs/troubleshooting/error-codes.md
index 9df877a..8eca186 100644
--- a/docs/troubleshooting/error-codes.md
+++ b/docs/troubleshooting/error-codes.md
@@ -33,6 +33,8 @@ NVM for Windows uses stable `NVM####` codes in CLI messages, shim/proxy output,
| **NVM4408** | Module firewall allowed install | Audit (non-error): proxy evaluated module policy and allowed the install |
| **NVM4409** | Firewall remote authority unreachable | HTTPS policy host refused the connection, timed out, or could not be resolved |
| **NVM4410** | Firewall policy mutated | Audit: `nvm firewall` changed a policy list |
+| **NVM4601** | Malware definitions updated | Informational, advanced logging only. A successful `malware.db` write changed the database. Payload: `added`, `removed`, `seq`, `previous_seq`. Windows Event ID 120 |
+| **NVM4602** | Malicious package blocked | Informational, advanced logging only. The shim blocked a package before the install audit. Payload includes the package name, version when known, and command. The terminal message still prints without the advanced logging license. Windows Event ID 120 |
## Ranges
@@ -41,6 +43,7 @@ NVM for Windows uses stable `NVM####` codes in CLI messages, shim/proxy output,
| **NVM41xx** | Installer / Community layout and support boundary |
| **NVM43xx** | Runtime Node trust, activation, auto-install, and package-manager gatekeeping |
| **NVM44xx** | NVM Firewall (version / module / trust policy) |
+| **NVM46xx** | Malware feed. Informational and advanced logging only |
## Tips
diff --git a/i18n/ru/docusaurus-plugin-content-docs/current/cfg/core.md b/i18n/ru/docusaurus-plugin-content-docs/current/cfg/core.md
index dc296d5..53ab9d3 100644
--- a/i18n/ru/docusaurus-plugin-content-docs/current/cfg/core.md
+++ b/i18n/ru/docusaurus-plugin-content-docs/current/cfg/core.md
@@ -88,6 +88,7 @@ nvm config set auto_detect=.nvmrc,.node-version
| Параметр | По умолчанию | Значения | Описание |
|--------|---------|--------|-------------|
| `pm_mismatch_action` | `error` | `ignore`, `warn`, `error` | Действие при несовпадении версий npm/pnpm/yarn и Node.js во время install или use:
- ignore: без сообщений
- warn: продолжить после предупреждения
- error: остановить операцию (самый безопасный вариант по умолчанию)
|
+| `shim_bun` | Community: `false`
Certified Builds: `true` | Boolean | Оборачивает `bun` и `bunx`, чтобы проверки OpenSSF malware работали, когда bun используется как менеджер пакетов. NVM for Windows не устанавливает bun и не переключает версии bun. `false` снимает shim. HKLM `ShimBun` имеет приоритет над HKCU. См. [Package Manager Shims](../command/package-manager-shims#bun-malware-wrap). |
## Журналирование и объявления \{#logging-and-announcements}
diff --git a/i18n/ru/docusaurus-plugin-content-docs/current/cfg/enterprise/registry.md b/i18n/ru/docusaurus-plugin-content-docs/current/cfg/enterprise/registry.md
index a99c5f0..6f3f50b 100644
--- a/i18n/ru/docusaurus-plugin-content-docs/current/cfg/enterprise/registry.md
+++ b/i18n/ru/docusaurus-plugin-content-docs/current/cfg/enterprise/registry.md
@@ -43,6 +43,11 @@ certified:
|**Cache downloads**|`CacheDownloads`|**Overridable** (`cache_downloads`). Кэшировать загруженные версии Node.js для офлайн-использования.
- `0` = выкл./false
- `1` = вкл./true
По умолчанию: `0`
`REG_DWORD`|
|**Default detect file**|`DefaultDetectFile`|**Overridable** (`default_detect_file`). Файл, записываемый при закреплении версии (`nvm pin`) (только shim).
По умолчанию: `.nvmrc`
`REG_SZ`|
|**Disable announcements**|`DisableAnnouncements`|**Overridable** (`disable_announcements`). Скрыть объявления проекта и релизов.
- `0` = показывать
- `1` = скрывать
По умолчанию: `0`
`REG_DWORD`|
+|**Пропускать проверки malware**|`SkipMalwareChecks`|**Overridable** (`skip_malware_checks`). Не проверять пакеты и `node` по списку malware. Файл определений всё равно обновляется. HKLM важнее HKCU.
- `0` = проверять
- `1` = пропустить
По умолчанию: `0`
`REG_DWORD`|
+|**Уведомлять об обновлении определений**|`NotifyMalwareDefinitions`|**Overridable** (`notify_malware_definitions`). Только Certified. Тихое уведомление после смены определений. HKLM может отключить его.
- `0` = скрыть
- `1` = показать
По умолчанию: `1`
`REG_DWORD`|
+|**Список разрешённых malware-имён**|`MalwareAllowList`|Только HKLM. Шаблоны, которые снимают попадание OpenSSF. Сравнение по байтам. `*` снимает все попадания OpenSSF и не снимает блок организации.
`REG_MULTI_SZ`|
+|**Список блокировки malware**|`MalwareBlockList`|Только Certified. Шаблоны HKLM, которые всегда блокируют, или один URL `https://`. Community игнорирует этот список.
`REG_MULTI_SZ`|
+|**Конфликт доверия malware**|`MalwareTrustConflict`|Только Certified. **Overridable** (`malware_trust_conflict`). `prevent` (по умолчанию) блокирует доверенное или одобренное имя из OpenSSF. `continue` пропускает такое явное доверие. HKLM важнее HKCU.
`REG_SZ`|
|**Disallow eval/string code gen**|`DisableEvalAndStringExecution`|**Overridable** (`disable_eval_and_string_execution`). Shim добавляет `--disallow-code-generation-from-strings`, блокируя `eval()` и `new Function()` (только shim). Не влияет на `node:vm`.
- `0` = выкл.
- `1` = вкл.
По умолчанию: `0`
`REG_DWORD`|
|**Disable NVM upgrades**|`DisableUpgrade`|**Overridable.** Блокировать обновления NVM в приложении (не блокирует развёртывание пакетов AD/GPO).
- `0` = разрешено
- `1` = заблокировано
По умолчанию: `0`
`REG_DWORD`|
|**Disable version management**|`Enabled`|**Overridable** (`nvm on`/`nvm off`). Принудительно включает или отключает управление версиями. При выкл. NVM не управляет и не перенаправляет команды Node.js.
- `0` = выкл. (`nvm off`)
- `1` = вкл.
По умолчанию: `1`
`REG_DWORD`|
@@ -126,6 +131,9 @@ Windows Registry Editor Version 5.00
"FirewallSkipLockfile"=dword:00000000
"DisableUpgrade"=dword:00000001
"DisableAnnouncements"=dword:00000001
+"SkipMalwareChecks"=dword:00000000
+"NotifyMalwareDefinitions"=dword:00000001
+"MalwareTrustConflict"="prevent"
; --- Shim runtime (requires OperatingMode=shim) ---
"DefaultDetectFile"=".nvmrc"
diff --git a/i18n/ru/docusaurus-plugin-content-docs/current/command/package-manager-shims.md b/i18n/ru/docusaurus-plugin-content-docs/current/command/package-manager-shims.md
index 5b72935..8618425 100644
--- a/i18n/ru/docusaurus-plugin-content-docs/current/command/package-manager-shims.md
+++ b/i18n/ru/docusaurus-plugin-content-docs/current/command/package-manager-shims.md
@@ -7,7 +7,7 @@ slug: /command/package-manager-shims
# Package Manager Shims
-В режиме **shim** менеджеры пакетов не запускаются напрямую из каталога активной версии Node.js. NVM for Windows ставит в `PATH` hardlink (или копии) одного Zig-бинарника — **`proxy.exe`** — под именами вроде `npm.exe`, `npx.exe`, `yarn.exe` и `pnpm.exe`.
+В режиме **shim** менеджеры пакетов не запускаются напрямую из каталога активной версии Node.js. NVM for Windows ставит в `PATH` hardlink (или копии) одного Zig-бинарника — **`proxy.exe`** — под именами вроде `npm.exe`, `npx.exe`, `yarn.exe`, `pnpm.exe` и (если включено) `bun.exe` / `bunx.exe`.
Proxy разрешает активную версию Node.js (те же правила, что у [node shim](/command/node)), проверяет доверие, затем делегирует соответствующему инструменту в этой установке.
@@ -40,6 +40,7 @@ Proxy разрешает активную версию Node.js (те же пра
| `pnpm` | `pnpm.cmd` / `.exe` (также сканируется `PNPM_HOME\bin`) |
| `yarn` | `yarn.cmd` / `.exe` |
| `corepack` | entry `corepack` / `node_modules/corepack/dist/corepack.js` (если есть) |
+| `bun` / `bunx` | Уже установленный bun. См. [обёртка bun](#bun-malware-wrap). |
Те же флаги `--nvm-*` работают на этих командах:
@@ -53,6 +54,19 @@ pnpm --nvm-shim-version
После операций, затрагивающих globals (например `npm install -g`, yarn global/dlx/plugins, corepack enable/use), proxy может вызвать **reshim**, чтобы появились новые [shim глобальных CLI](/command/global-module-shims).
+## Обёртка bun \{#bun-malware-wrap}
+
+NVM for Windows не устанавливает bun и не переключает версии bun. Если `shim_bun` включён, `reshim` ставит `bun.exe` и `bunx.exe` в `PATH` как копии `proxy.exe`. Proxy находит уже установленный bun и применяет те же проверки OpenSSF malware, что для npm, pnpm и yarn.
+
+Проверки malware идут для `bun install` / `i` / `add` / `x` / `create` / `update` и для каждого вызова `bunx`. `bun test`, `bun run` и остальные команды bun проходят без сканирования пакетов.
+
+По умолчанию: **выкл** в Community, **вкл** в Certified Builds. HKLM `ShimBun` имеет приоритет над HKCU.
+
+```powershell
+nvm config set shim_bun=false
+nvm reshim
+```
+
## Проверка целостности
Shim блокирует запуск при провале проверок доверия.
@@ -94,6 +108,7 @@ Shim блокирует запуск при провале проверок до
npx.exe
yarn.exe
pnpm.exe
+ bun.exe / bunx.exe # если shim_bun включён
.exe # см. Global Module Shims
node.exe # отдельный node shim
.verify/ # материал публичного ключа verify-cache