@pnpm/deps.security.signatures 1101.2.2 → 1101.2.4
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +106 -0
- package/lib/npmSigningKeys.d.ts +6 -6
- package/lib/npmSigningKeys.js +8 -8
- package/package.json +8 -8
package/CHANGELOG.md
ADDED
|
@@ -0,0 +1,106 @@
|
|
|
1
|
+
# @pnpm/deps.security.signatures
|
|
2
|
+
|
|
3
|
+
## 1101.2.4
|
|
4
|
+
|
|
5
|
+
### Patch Changes
|
|
6
|
+
|
|
7
|
+
- Updated dependencies:
|
|
8
|
+
- @pnpm/network.fetch@1100.1.5
|
|
9
|
+
|
|
10
|
+
## 1101.2.3
|
|
11
|
+
|
|
12
|
+
### Patch Changes
|
|
13
|
+
|
|
14
|
+
- Updated dependencies [05b95ab]
|
|
15
|
+
- Updated dependencies [852d537]
|
|
16
|
+
- @pnpm/network.fetch@1100.1.4
|
|
17
|
+
- @pnpm/error@1100.0.1
|
|
18
|
+
|
|
19
|
+
## 1101.2.2
|
|
20
|
+
|
|
21
|
+
### Patch Changes
|
|
22
|
+
|
|
23
|
+
- a31faa7: Updated dependency ranges. Notably:
|
|
24
|
+
|
|
25
|
+
- `@pnpm/logger` peer dependency range moved to `^1100.0.0`.
|
|
26
|
+
- `msgpackr` 1.11.8 → 2.0.4 (store index files remain byte-compatible in both directions).
|
|
27
|
+
- `open` ^7.4.2 → ^11.0.0, `memoize` ^10 → ^11, `cli-truncate` ^5 → ^6, `pidtree` ^0.6 → ^1.
|
|
28
|
+
- `@yarnpkg/core` 4.5.0 → 4.8.0, `@rushstack/worker-pool` 0.7.7 → 0.7.18, `@cyclonedx/cyclonedx-library` 10.0.0 → 10.1.0, `@pnpm/config.nerf-dart` ^1 → ^2, `@pnpm/log.group` 3.0.2 → 4.0.1, `@pnpm/util.lex-comparator` ^3 → ^4.
|
|
29
|
+
|
|
30
|
+
- Updated dependencies [681b593]
|
|
31
|
+
- Updated dependencies [a31faa7]
|
|
32
|
+
- @pnpm/fetching.types@1100.0.2
|
|
33
|
+
- @pnpm/network.fetch@1100.1.3
|
|
34
|
+
|
|
35
|
+
## 1101.2.1
|
|
36
|
+
|
|
37
|
+
### Patch Changes
|
|
38
|
+
|
|
39
|
+
- @pnpm/network.fetch@1100.1.2
|
|
40
|
+
|
|
41
|
+
## 1101.2.0
|
|
42
|
+
|
|
43
|
+
### Minor Changes
|
|
44
|
+
|
|
45
|
+
- 5f2bb9f: Security: pnpm now verifies the npm registry signature of a package-manager binary before spawning it, so a cloned repository cannot make pnpm download and execute an arbitrary native binary.
|
|
46
|
+
|
|
47
|
+
This covers two paths that select an executable from repository-controlled input:
|
|
48
|
+
|
|
49
|
+
- **pacquet install engine** — declaring `pacquet` (or `@pnpm/pacquet`) in `configDependencies` opts in to pnpm's Rust install engine. pnpm now verifies that the installed `pacquet` shim and the host's `@pacquet/<platform>-<arch>` binary carry a valid npm registry signature for their exact `name@version`, and refuses to run pacquet (failing the command) if the signature does not verify or cannot be checked. The only graceful fallback to pnpm's own engine is when pacquet has no binary for the current platform.
|
|
50
|
+
- **automatic version switch / `self-update`** — the `packageManager` / `devEngines.packageManager` field makes pnpm download and run a specific pnpm version. pnpm now verifies the registry signature of `pnpm`, `@pnpm/exe`, and the host platform binary before installing/spawning them, and refuses to run an engine whose signature does not match a published, signed release. The check runs only on an actual download (store cache miss), so it does not add a network round trip to every command.
|
|
51
|
+
|
|
52
|
+
In both cases the signature is verified over the _installed_ integrity, against npm's public signing keys that ship embedded in the pnpm CLI (like corepack), so bytes substituted via a tampered lockfile or a repository-controlled registry fail verification — and a registry the user did not vouch for cannot supply its own signing keys. The signed packument is fetched from the configured registry, so an npm mirror works transparently. Verification fails closed: if it cannot be completed (for example, the registry is unreachable), the command fails rather than running an unverified binary. The embedded keys are kept current by a release-time check against npm's signing-keys endpoint.
|
|
53
|
+
|
|
54
|
+
### Patch Changes
|
|
55
|
+
|
|
56
|
+
- @pnpm/network.fetch@1100.1.1
|
|
57
|
+
|
|
58
|
+
## 1101.1.6
|
|
59
|
+
|
|
60
|
+
### Patch Changes
|
|
61
|
+
|
|
62
|
+
- Updated dependencies [60a1eec]
|
|
63
|
+
- @pnpm/network.fetch@1100.1.0
|
|
64
|
+
|
|
65
|
+
## 1101.1.5
|
|
66
|
+
|
|
67
|
+
### Patch Changes
|
|
68
|
+
|
|
69
|
+
- Updated dependencies [b1fa2d5]
|
|
70
|
+
- @pnpm/network.fetch@1100.0.8
|
|
71
|
+
|
|
72
|
+
## 1101.1.4
|
|
73
|
+
|
|
74
|
+
### Patch Changes
|
|
75
|
+
|
|
76
|
+
- @pnpm/network.fetch@1100.0.7
|
|
77
|
+
|
|
78
|
+
## 1101.1.3
|
|
79
|
+
|
|
80
|
+
### Patch Changes
|
|
81
|
+
|
|
82
|
+
- @pnpm/network.fetch@1100.0.6
|
|
83
|
+
|
|
84
|
+
## 1101.1.2
|
|
85
|
+
|
|
86
|
+
### Patch Changes
|
|
87
|
+
|
|
88
|
+
- @pnpm/network.fetch@1100.0.5
|
|
89
|
+
|
|
90
|
+
## 1101.1.1
|
|
91
|
+
|
|
92
|
+
### Patch Changes
|
|
93
|
+
|
|
94
|
+
- Updated dependencies [18a464f]
|
|
95
|
+
- @pnpm/network.fetch@1100.0.4
|
|
96
|
+
|
|
97
|
+
## 1101.1.0
|
|
98
|
+
|
|
99
|
+
### Minor Changes
|
|
100
|
+
|
|
101
|
+
- 6ac06cb: Added `pnpm audit signatures` to verify ECDSA registry signatures for installed packages against keys from `/-/npm/v1/keys` [#7909](https://github.com/pnpm/pnpm/issues/7909). Scoped registries are respected, and registries without signing keys are skipped.
|
|
102
|
+
|
|
103
|
+
### Patch Changes
|
|
104
|
+
|
|
105
|
+
- Updated dependencies [20e7aff]
|
|
106
|
+
- @pnpm/network.fetch@1100.0.3
|
package/lib/npmSigningKeys.d.ts
CHANGED
|
@@ -1,13 +1,13 @@
|
|
|
1
1
|
export declare const NPM_SIGNING_KEYS: readonly [{
|
|
2
|
-
readonly expires: "2025-01-29T00:00:00.000Z";
|
|
3
|
-
readonly keyid: "SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA";
|
|
4
|
-
readonly keytype: "ecdsa-sha2-nistp256";
|
|
5
|
-
readonly scheme: "ecdsa-sha2-nistp256";
|
|
6
|
-
readonly key: "MFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAE1Olb3zMAFFxXKHiIkQO5cJ3Yhl5i6UPp+IhuteBJbuHcA5UogKo0EWtlWwW6KSaKoTNEYL7JlCQiVnkhBktUgg==";
|
|
7
|
-
}, {
|
|
8
2
|
readonly expires: null;
|
|
9
3
|
readonly keyid: "SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U";
|
|
10
4
|
readonly keytype: "ecdsa-sha2-nistp256";
|
|
11
5
|
readonly scheme: "ecdsa-sha2-nistp256";
|
|
12
6
|
readonly key: "MFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAEY6Ya7W++7aUPzvMTrezH6Ycx3c+HOKYCcNGybJZSCJq/fd7Qa8uuAKtdIkUQtQiEKERhAmE5lMMJhP8OkDOa2g==";
|
|
7
|
+
}, {
|
|
8
|
+
readonly expires: "2025-01-29T00:00:00.000Z";
|
|
9
|
+
readonly keyid: "SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA";
|
|
10
|
+
readonly keytype: "ecdsa-sha2-nistp256";
|
|
11
|
+
readonly scheme: "ecdsa-sha2-nistp256";
|
|
12
|
+
readonly key: "MFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAE1Olb3zMAFFxXKHiIkQO5cJ3Yhl5i6UPp+IhuteBJbuHcA5UogKo0EWtlWwW6KSaKoTNEYL7JlCQiVnkhBktUgg==";
|
|
13
13
|
}];
|
package/lib/npmSigningKeys.js
CHANGED
|
@@ -3,22 +3,22 @@
|
|
|
3
3
|
// https://registry.npmjs.org/-/npm/v1/keys
|
|
4
4
|
//
|
|
5
5
|
// Refresh with: node deps/security/signatures/scripts/update-npm-signing-keys.mjs --update
|
|
6
|
-
// The release workflow
|
|
7
|
-
//
|
|
6
|
+
// The create-release-pr workflow refreshes these automatically, so a rotated
|
|
7
|
+
// key cannot silently break (or weaken) signature verification.
|
|
8
8
|
export const NPM_SIGNING_KEYS = [
|
|
9
9
|
{
|
|
10
|
-
"expires":
|
|
11
|
-
"keyid": "SHA256:
|
|
10
|
+
"expires": null,
|
|
11
|
+
"keyid": "SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U",
|
|
12
12
|
"keytype": "ecdsa-sha2-nistp256",
|
|
13
13
|
"scheme": "ecdsa-sha2-nistp256",
|
|
14
|
-
"key": "
|
|
14
|
+
"key": "MFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAEY6Ya7W++7aUPzvMTrezH6Ycx3c+HOKYCcNGybJZSCJq/fd7Qa8uuAKtdIkUQtQiEKERhAmE5lMMJhP8OkDOa2g=="
|
|
15
15
|
},
|
|
16
16
|
{
|
|
17
|
-
"expires":
|
|
18
|
-
"keyid": "SHA256:
|
|
17
|
+
"expires": "2025-01-29T00:00:00.000Z",
|
|
18
|
+
"keyid": "SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA",
|
|
19
19
|
"keytype": "ecdsa-sha2-nistp256",
|
|
20
20
|
"scheme": "ecdsa-sha2-nistp256",
|
|
21
|
-
"key": "
|
|
21
|
+
"key": "MFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAE1Olb3zMAFFxXKHiIkQO5cJ3Yhl5i6UPp+IhuteBJbuHcA5UogKo0EWtlWwW6KSaKoTNEYL7JlCQiVnkhBktUgg=="
|
|
22
22
|
}
|
|
23
23
|
];
|
|
24
24
|
//# sourceMappingURL=npmSigningKeys.js.map
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@pnpm/deps.security.signatures",
|
|
3
|
-
"version": "1101.2.
|
|
3
|
+
"version": "1101.2.4",
|
|
4
4
|
"description": "Verify package signatures from npm registries",
|
|
5
5
|
"keywords": [
|
|
6
6
|
"pnpm",
|
|
@@ -12,9 +12,9 @@
|
|
|
12
12
|
"funding": "https://opencollective.com/pnpm",
|
|
13
13
|
"repository": {
|
|
14
14
|
"type": "git",
|
|
15
|
-
"url": "https://github.com/pnpm/pnpm/tree/main/deps/security/signatures"
|
|
15
|
+
"url": "https://github.com/pnpm/pnpm/tree/main/pnpm11/deps/security/signatures"
|
|
16
16
|
},
|
|
17
|
-
"homepage": "https://github.com/pnpm/pnpm/tree/main/deps/security/signatures#readme",
|
|
17
|
+
"homepage": "https://github.com/pnpm/pnpm/tree/main/pnpm11/deps/security/signatures#readme",
|
|
18
18
|
"bugs": {
|
|
19
19
|
"url": "https://github.com/pnpm/pnpm/issues"
|
|
20
20
|
},
|
|
@@ -29,19 +29,19 @@
|
|
|
29
29
|
"!*.map"
|
|
30
30
|
],
|
|
31
31
|
"dependencies": {
|
|
32
|
-
"
|
|
33
|
-
"@pnpm/error": "1100.0.0",
|
|
32
|
+
"@pnpm/error": "1100.0.1",
|
|
34
33
|
"@pnpm/fetching.types": "1100.0.2",
|
|
35
|
-
"@pnpm/network.fetch": "1100.1.
|
|
34
|
+
"@pnpm/network.fetch": "1100.1.5",
|
|
35
|
+
"p-limit": "^7.3.0"
|
|
36
36
|
},
|
|
37
37
|
"peerDependencies": {
|
|
38
38
|
"@pnpm/logger": "^1100.0.0"
|
|
39
39
|
},
|
|
40
40
|
"devDependencies": {
|
|
41
41
|
"@jest/globals": "30.4.1",
|
|
42
|
-
"@pnpm/deps.security.signatures": "1101.2.
|
|
42
|
+
"@pnpm/deps.security.signatures": "1101.2.4",
|
|
43
43
|
"@pnpm/logger": "1100.0.0",
|
|
44
|
-
"@pnpm/testing.mock-agent": "1101.0.
|
|
44
|
+
"@pnpm/testing.mock-agent": "1101.0.5"
|
|
45
45
|
},
|
|
46
46
|
"engines": {
|
|
47
47
|
"node": ">=22.13"
|