@secretgenerator/cli 2.0.0 → 2.1.0

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/README.md CHANGED
@@ -72,11 +72,11 @@ the certificate identity against
72
72
 
73
73
  ## Supported platforms
74
74
 
75
- | OS | Architectures |
76
- | ------- | --------------- |
77
- | Linux | x64, arm64 |
78
- | macOS | x64, arm64 |
79
- | Windows | x64 |
75
+ | OS | Architectures |
76
+ | ------- | ------------- |
77
+ | Linux | x64, arm64 |
78
+ | macOS | x64, arm64 |
79
+ | Windows | x64 |
80
80
 
81
81
  For other platforms, install from source:
82
82
 
@@ -0,0 +1,78 @@
1
+ // Release-archive checks used by the postinstall downloader.
2
+ //
3
+ // The version string is interpolated into a GitHub download URL and, on
4
+ // the Windows fallback that used to exist, into a shell command. It has
5
+ // to be a semver tag and nothing else. Archive members are checked
6
+ // before extraction so a release tarball cannot write outside the
7
+ // destination via `..` or an absolute path.
8
+ const RELEASE_TAG = /^v(?:0|[1-9]\d*)\.(?:0|[1-9]\d*)\.(?:0|[1-9]\d*)(?:-[0-9A-Za-z.-]+)?$/;
9
+ const PATH_SEGMENT = /^[A-Za-z0-9._-]+$/;
10
+ /** Returns a `vX.Y.Z` tag, or throws if `raw` is not a semver release tag. */
11
+ export function releaseTag(raw) {
12
+ const tag = raw.startsWith("v") ? raw : `v${raw}`;
13
+ if (!RELEASE_TAG.test(tag)) {
14
+ throw new Error(`refusing release version ${JSON.stringify(raw)}: expected a semver tag such as v2.0.0 or v2.0.0-alpha.11`);
15
+ }
16
+ return tag;
17
+ }
18
+ /**
19
+ * Returns null when `name` is safe to extract next to the package, or a
20
+ * short reason when it is not. `binary` is the expected executable name
21
+ * (`secretgenerator` or `secretgenerator.exe`). Goreleaser also packs
22
+ * LICENSE, README.md, schemas/, and docs/.
23
+ */
24
+ export function unsafeArchiveMember(name, binary) {
25
+ let normalized = name.replace(/\\/g, "/");
26
+ if (normalized.startsWith("./")) {
27
+ normalized = normalized.slice(2);
28
+ }
29
+ if (normalized.endsWith("/")) {
30
+ normalized = normalized.slice(0, -1);
31
+ }
32
+ if (normalized === "") {
33
+ return null;
34
+ }
35
+ if (normalized.startsWith("/") || /^[A-Za-z]:/.test(normalized)) {
36
+ return `absolute path ${JSON.stringify(name)}`;
37
+ }
38
+ const parts = normalized.split("/");
39
+ for (const part of parts) {
40
+ if (part === "" || part === "." || part === ".." || !PATH_SEGMENT.test(part)) {
41
+ return `unsafe path ${JSON.stringify(name)}`;
42
+ }
43
+ }
44
+ const rel = parts.join("/");
45
+ if (rel === binary ||
46
+ rel === "LICENSE" ||
47
+ rel === "README.md" ||
48
+ rel.startsWith("schemas/") ||
49
+ rel.startsWith("docs/")) {
50
+ return null;
51
+ }
52
+ return `unexpected member ${JSON.stringify(name)}`;
53
+ }
54
+ /**
55
+ * Windows CI puts Git's GNU tar first on PATH. That tar rejects zip
56
+ * archives and treats `C:` as a remote host. The system bsdtar reads zip
57
+ * and keeps drive letters local, so prefer it when it is installed.
58
+ */
59
+ export function tarBinary(platform, systemTar, systemTarExists) {
60
+ if (platform === "win32" && systemTarExists)
61
+ return systemTar;
62
+ return "tar";
63
+ }
64
+ /**
65
+ * tar argv for extraction. A Windows drive prefix makes GNU tar treat the
66
+ * path as a remote host (`Cannot connect to C`). Pass `gnuForceLocal` only
67
+ * for that tar. The system bsdtar rejects `--force-local` and accepts the
68
+ * drive letter. Same-drive callers should pass a path relative to the dest.
69
+ */
70
+ export function tarExtractArgs(archiveArg, format, opts = {}) {
71
+ const flag = format === "tar.gz" ? "-xzf" : "-xf";
72
+ const args = [flag, archiveArg, "-C", "."];
73
+ if (opts.gnuForceLocal && /^[A-Za-z]:/.test(archiveArg)) {
74
+ return ["--force-local", ...args];
75
+ }
76
+ return args;
77
+ }
78
+ //# sourceMappingURL=archive.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"archive.js","sourceRoot":"","sources":["../src/archive.ts"],"names":[],"mappings":"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"}
package/dist/install.js CHANGED
@@ -22,6 +22,7 @@ import { spawnSync } from "node:child_process";
22
22
  import { Readable } from "node:stream";
23
23
  import { pipeline } from "node:stream/promises";
24
24
  import { detectAsset, UnsupportedPlatformError } from "./platform.js";
25
+ import { releaseTag, tarBinary, tarExtractArgs, unsafeArchiveMember } from "./archive.js";
25
26
  import { cosignAvailable, verifyChecksum, verifyCosign, IntegrityError, } from "./verify.js";
26
27
  const __dirname = path.dirname(fileURLToPath(import.meta.url));
27
28
  // dist/install.js is in `cli/dist/`, packageRoot is `cli/`.
@@ -54,7 +55,7 @@ async function main() {
54
55
  }
55
56
  throw err;
56
57
  }
57
- const version = readVersion();
58
+ const version = releaseTag(readVersion());
58
59
  const archiveName = `secretgenerator_${stripV(version)}_${asset.suffix}`;
59
60
  const baseUrl = `https://github.com/${REPO}/releases/download/${version}`;
60
61
  const archiveUrl = `${baseUrl}/${archiveName}`;
@@ -77,6 +78,7 @@ async function main() {
77
78
  const checksumsText = readFileSync(checksumsPath, "utf8");
78
79
  verifyChecksum(archivePath, archiveName, checksumsText);
79
80
  console.log(`[secretgenerator] SHA-256 verified for ${archiveName}`);
81
+ assertSafeArchive(archivePath, asset.binary);
80
82
  if (existsSync(sigPath) && existsSync(pemPath) && cosignAvailable()) {
81
83
  if (verifyCosign(checksumsPath, pemPath, sigPath)) {
82
84
  console.log("[secretgenerator] cosign keyless signature verified (Sigstore/Fulcio)");
@@ -110,6 +112,8 @@ async function main() {
110
112
  }
111
113
  function readVersion() {
112
114
  // Allow override (used by smoke tests pinning a specific tag).
115
+ // releaseTag() rejects anything that is not a semver tag, so the value
116
+ // cannot rewrite the download path or escape into a shell command.
113
117
  if (process.env.SECRETGENERATOR_VERSION) {
114
118
  return process.env.SECRETGENERATOR_VERSION;
115
119
  }
@@ -130,28 +134,53 @@ async function download(url, out, opts = {}) {
130
134
  const nodeStream = Readable.fromWeb(res.body);
131
135
  await pipeline(nodeStream, createWriteStream(out));
132
136
  }
133
- function extract(archive, dest, format) {
134
- if (format === "tar.gz") {
135
- const r = spawnSync("tar", ["-xzf", archive, "-C", dest], {
136
- stdio: "inherit",
137
- });
138
- if (r.status !== 0)
139
- throw new Error(`tar exit ${r.status}`);
140
- return;
137
+ function tarBin() {
138
+ const system = path.join(process.env.SystemRoot || "C:\\Windows", "System32", "tar.exe");
139
+ return tarBinary(process.platform, system, existsSync(system));
140
+ }
141
+ function assertSafeArchive(archive, binary) {
142
+ // Basename plus cwd: GNU tar on Windows reads `C:` in an absolute path
143
+ // as a remote host and fails with "Cannot connect to C".
144
+ const listed = spawnSync(tarBin(), ["-tf", path.basename(archive)], {
145
+ cwd: path.dirname(archive),
146
+ encoding: "utf8",
147
+ });
148
+ if (listed.status !== 0) {
149
+ throw new IntegrityError(`could not list archive members: ${(listed.stderr || "").trim()}`);
141
150
  }
142
- // zip — use Node's built-in zlib + a small inflate; the simplest cross-
143
- // platform approach on Windows is `tar -xf` which Windows 10+ ships
144
- // with. Fall back to PowerShell Expand-Archive if tar is missing.
145
- const r = spawnSync("tar", ["-xf", archive, "-C", dest], {
146
- stdio: "inherit",
151
+ const names = listed.stdout.split(/\r?\n/).map((line) => line.trim()).filter(Boolean);
152
+ const hasBinary = names.some((name) => {
153
+ const normalized = name.replace(/\\/g, "/").replace(/^\.\//, "").replace(/\/$/, "");
154
+ return normalized === binary;
147
155
  });
148
- if (r.status !== 0) {
149
- const ps = spawnSync("powershell", ["-Command", `Expand-Archive -Path '${archive}' -DestinationPath '${dest}' -Force`], { stdio: "inherit" });
150
- if (ps.status !== 0) {
151
- throw new Error("zip extraction failed: tar and Expand-Archive both errored");
156
+ if (!hasBinary) {
157
+ throw new IntegrityError(`archive does not contain ${binary}`);
158
+ }
159
+ for (const name of names) {
160
+ const why = unsafeArchiveMember(name, binary);
161
+ if (why) {
162
+ throw new IntegrityError(`refusing to extract archive: ${why}`);
152
163
  }
153
164
  }
154
165
  }
166
+ function extract(archive, dest, format) {
167
+ // tar on Windows 10+ reads zip archives. Arguments stay in argv; the
168
+ // archive path is never interpolated into a shell command. cwd is the
169
+ // destination so a same-drive archive is a relative path. A cross-drive
170
+ // path still has a drive letter; tarExtractArgs adds --force-local.
171
+ const rel = path.relative(dest, archive);
172
+ const bin = tarBin();
173
+ // GitHub's Windows temp dir and the repo are often on different drives,
174
+ // so `rel` is an absolute `C:\...` path. System bsdtar accepts that.
175
+ // GNU tar needs --force-local or it parses the drive letter as a host.
176
+ const gnuForceLocal = process.platform === "win32" && bin === "tar";
177
+ const r = spawnSync(bin, tarExtractArgs(rel, format, { gnuForceLocal }), {
178
+ cwd: dest,
179
+ stdio: "inherit",
180
+ });
181
+ if (r.status !== 0)
182
+ throw new Error(`tar exit ${r.status}`);
183
+ }
155
184
  // Reading the archive is delegated to `tar` / `Expand-Archive`; the
156
185
  // pipeline-and-stream imports above are kept because download() uses them.
157
186
  void createReadStream;
@@ -1 +1 @@
1
- {"version":3,"file":"install.js","sourceRoot":"","sources":["../src/install.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"install.js","sourceRoot":"","sources":["../src/install.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@secretgenerator/cli",
3
- "version": "2.0.0",
3
+ "version": "2.1.0",
4
4
  "description": "Zero-config installer for the secretgenerator CLI. Downloads the right binary for your OS/arch from a verified GitHub release, checks the SHA-256, and (when cosign is available) verifies the keyless Sigstore signature.",
5
5
  "type": "module",
6
6
  "license": "MIT",
@@ -31,6 +31,7 @@
31
31
  ],
32
32
  "scripts": {
33
33
  "build": "tsc -p tsconfig.json && chmod +x dist/run.js",
34
+ "test": "npm run build && node --test test/archive.test.mjs",
34
35
  "prepack": "npm run build",
35
36
  "postinstall": "node dist/install.js || echo 'secretgenerator: postinstall skipped (likely a tarball-only environment); run `npx secretgenerator --help` to retry'"
36
37
  },
@@ -47,7 +48,7 @@
47
48
  "arm64"
48
49
  ],
49
50
  "devDependencies": {
50
- "@types/node": "^22.10.0",
51
- "typescript": "^5.6.0"
51
+ "@types/node": "^26.6.5",
52
+ "typescript": "^5.9.3"
52
53
  }
53
54
  }