0sec-cli 0.18.0 → 0.21.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.
Files changed (171) hide show
  1. package/{0sec.js → 0.js} +84 -76
  2. package/LICENSE +1 -1
  3. package/README.md +74 -43
  4. package/chunks/adapt-loop-IGBRQAXO.js +18 -0
  5. package/chunks/{adgraph-JLGA6RYI.js → adgraph-AUDQTBYA.js} +5 -5
  6. package/chunks/agent/skills/frameworks/entra-id.yaml +2 -2
  7. package/chunks/agent/skills/techniques/assumption-mining.yaml +2 -2
  8. package/chunks/agent/skills/techniques/cve-poc-adaptation.yaml +2 -2
  9. package/chunks/agent/skills/techniques/entra-attack-paths.yaml +1 -1
  10. package/chunks/agent/skills/techniques/kernel-weaponization.yaml +1 -1
  11. package/chunks/agent/skills/techniques/llm-prompt-injection.yaml +2 -2
  12. package/chunks/agent/skills/techniques/npm-ecosystem.yaml +1 -1
  13. package/chunks/agent/skills/techniques/poc-verification.yaml +1 -1
  14. package/chunks/agent/skills/techniques/seedless-depth-review.yaml +20 -38
  15. package/chunks/{artifact-scraper-HQ7HLP6V.js → artifact-scraper-LNQJUORS.js} +6 -6
  16. package/chunks/{assumption-mining-5SNIVVDN.js → assumption-mining-4MJTP6H5.js} +24 -26
  17. package/chunks/{chunk-P6WKNFWX.js → chunk-2OQOQ2FZ.js} +8 -8
  18. package/chunks/{chunk-5G3ZXFBW.js → chunk-2WNCI664.js} +3 -3
  19. package/chunks/{chunk-AHTBZC3E.js → chunk-2WSXFFJZ.js} +4 -4
  20. package/chunks/{chunk-DW5UWPFY.js → chunk-4VGLO2YS.js} +6 -5
  21. package/chunks/{chunk-3KPWWJCI.js → chunk-5T6D5BVY.js} +88 -88
  22. package/chunks/{chunk-OEFNRYI2.js → chunk-6GHSR47F.js} +3 -6
  23. package/chunks/chunk-6YNKRUMC.js +4474 -0
  24. package/chunks/{chunk-BZNEY2ZS.js → chunk-ANDKY54G.js} +22390 -19895
  25. package/chunks/{chunk-53G27VPS.js → chunk-AZ7L3HFD.js} +7 -2
  26. package/chunks/{chunk-UR4ELX2Y.js → chunk-BACXRTQ4.js} +633 -316
  27. package/chunks/{chunk-UCYRA73C.js → chunk-CAJJRUTV.js} +4 -4
  28. package/chunks/{chunk-57ZENEX2.js → chunk-CGHCEN7W.js} +3 -3
  29. package/chunks/{chunk-AD7WXDH6.js → chunk-CL5KAUM6.js} +16 -16
  30. package/chunks/{chunk-ADOLI6DT.js → chunk-CXKDWFNO.js} +6 -6
  31. package/chunks/{chunk-RWONANDA.js → chunk-DQTNI3KY.js} +5 -5
  32. package/chunks/{chunk-BFR2CDV5.js → chunk-E2UOY5PJ.js} +288 -100
  33. package/chunks/{chunk-ATATQACO.js → chunk-ER3SUMYJ.js} +40 -18
  34. package/chunks/{chunk-5JI7L7KV.js → chunk-FAH6V4QM.js} +30515 -32242
  35. package/chunks/{chunk-6LKRLK2R.js → chunk-FHC2B7LN.js} +3 -3
  36. package/chunks/{chunk-XM5NLHYU.js → chunk-FWAYJ2IV.js} +16 -16
  37. package/chunks/{chunk-WVTBZEQO.js → chunk-G34QP2XW.js} +8 -8
  38. package/chunks/{chunk-MYVT64FN.js → chunk-GHWODZMR.js} +2 -2
  39. package/chunks/{chunk-F3WBKITT.js → chunk-GIQKESMN.js} +10 -10
  40. package/chunks/{chunk-2RMLOJVB.js → chunk-GVD6SJGH.js} +2 -2
  41. package/chunks/{chunk-WXQ6BJ6A.js → chunk-HBKCGJAV.js} +7 -7
  42. package/chunks/{chunk-SF4KZ4O3.js → chunk-HLFS6WV2.js} +2 -2
  43. package/chunks/chunk-HPQZHOIU.js +67 -0
  44. package/chunks/{chunk-TSK2AG6J.js → chunk-IMGWPNQM.js} +231 -1308
  45. package/chunks/{chunk-3MOLBTLS.js → chunk-K2PWUPUI.js} +2 -2
  46. package/chunks/{chunk-N7BOUYEV.js → chunk-NDJU5ZZ7.js} +14 -14
  47. package/chunks/{chunk-BVAZO4WA.js → chunk-NOPBXZUV.js} +3 -3
  48. package/chunks/{chunk-2JCCA2JL.js → chunk-O6SD4A36.js} +3 -3
  49. package/chunks/{chunk-SAFFWQW4.js → chunk-P6YG6TEZ.js} +6 -6
  50. package/chunks/{chunk-6L26OBWI.js → chunk-PC6RCKQV.js} +198 -11
  51. package/chunks/{chunk-LP3HHYQU.js → chunk-PD2BBBKT.js} +2 -2
  52. package/chunks/{chunk-BKZFDZ23.js → chunk-QCUFBVIZ.js} +3 -3
  53. package/chunks/{chunk-KLTNTE2Z.js → chunk-QZVG3BG4.js} +14 -14
  54. package/chunks/{chunk-ASUR522M.js → chunk-RF5QGKLR.js} +9 -9
  55. package/chunks/{chunk-YYRBQVFE.js → chunk-SBMB4OL3.js} +9 -9
  56. package/chunks/{chunk-IOL7D5YV.js → chunk-SQCBHFWN.js} +3 -3
  57. package/chunks/{chunk-BFRB6HB2.js → chunk-TF46UWFU.js} +3 -3
  58. package/chunks/chunk-TH2LW437.js +7829 -0
  59. package/chunks/chunk-TRH2PJSN.js +547 -0
  60. package/chunks/{chunk-RJWOYEOG.js → chunk-UEX7PFSE.js} +5 -5
  61. package/chunks/{chunk-VQG4FT5D.js → chunk-UFHN6RIU.js} +2 -2
  62. package/chunks/{chunk-WU6AFRAZ.js → chunk-V36HVTUL.js} +12 -12
  63. package/chunks/{chunk-IR537GON.js → chunk-VCSFCHAJ.js} +2 -2
  64. package/chunks/{chunk-YLMN3N25.js → chunk-VIT5ALXF.js} +3 -3
  65. package/chunks/{chunk-U5FLXGHT.js → chunk-VOAXLO4A.js} +10 -10
  66. package/chunks/{chunk-WEBMRWEG.js → chunk-W4JOXE4N.js} +83 -75
  67. package/chunks/{chunk-C2WXWFBB.js → chunk-WF5W75WY.js} +25 -25
  68. package/chunks/{chunk-SVJEDVYK.js → chunk-WPQLBN4S.js} +5 -5
  69. package/chunks/{chunk-72CISA2D.js → chunk-WZISK5VC.js} +37 -35
  70. package/chunks/{chunk-CMKXP5RR.js → chunk-Y5H6E24H.js} +3 -3
  71. package/chunks/{chunk-BATRQBOR.js → chunk-YA4PUM4H.js} +41 -41
  72. package/chunks/{chunk-JQHOLLTD.js → chunk-YHWWF4QY.js} +9 -9
  73. package/chunks/{chunk-GMT2AZKM.js → chunk-YPOA3W4O.js} +28 -28
  74. package/chunks/{chunk-7DQEV5QI.js → chunk-Z3IKZX3X.js} +4 -4
  75. package/chunks/codex-models-TYYV4JNN.js +15 -0
  76. package/chunks/{commands-TBC2F5CE.js → commands-WF5RG4I2.js} +3834 -931
  77. package/chunks/corpus-v1.json +2 -2
  78. package/chunks/data/appsec-archetypes.json +2 -2
  79. package/chunks/data/chromium-archetypes.json +1 -1
  80. package/chunks/data/freebsd-archetypes.json +1 -1
  81. package/chunks/data/kernel-archetypes.json +2 -2
  82. package/chunks/db-U3WQZVAO.js +16 -0
  83. package/chunks/{disclose-EKTWSCGW.js → disclose-67GZCDBO.js} +5 -5
  84. package/chunks/{dist-FMGSR3DW.js → dist-ACC3DZUZ.js} +11 -5
  85. package/chunks/{dist-4MAW5X6L.js → dist-EVTN3UTT.js} +6 -6
  86. package/chunks/{dist-4YICS2J2.js → dist-F6X62TQK.js} +286 -327
  87. package/chunks/dist-KEULE5IQ.js +21914 -0
  88. package/chunks/dist-XZB53PS5.js +53 -0
  89. package/chunks/eval-runner-SA6OUGHZ.js +26 -0
  90. package/chunks/example-manifest.json +2 -2
  91. package/chunks/{exploit-agent-45YQOHPJ.js → exploit-agent-36Q7XQFP.js} +4 -4
  92. package/chunks/{exploit-autoclimb-UZGEMGYT.js → exploit-autoclimb-J4OTSTZ6.js} +6 -6
  93. package/chunks/{exploit-climb-SG23KB2G.js → exploit-climb-PYEJDIC4.js} +12 -12
  94. package/chunks/fix-J2KBRJDV.js +12 -0
  95. package/chunks/{github-issues-MJ6OYOOU.js → github-issues-IGTTWM7V.js} +7 -7
  96. package/chunks/harness-GDUMKGSE.js +22 -0
  97. package/chunks/http-conformance-U5F6GKYG.js +11 -0
  98. package/chunks/http-sender-I5XFFY35.js +10 -0
  99. package/chunks/hunt-scan-UDJSCISU.js +36 -0
  100. package/chunks/{identity-6ZAIIWOR.js → identity-JTIVJSV7.js} +5 -5
  101. package/chunks/{kernel-primitive-7U6CWHXD.js → kernel-primitive-F2IXUFAX.js} +6 -6
  102. package/chunks/{kernel-vm-runner-3JAU4O6J.js → kernel-vm-runner-276LHIOV.js} +6 -6
  103. package/chunks/memsafety-scan-NHUOGTEX.js +16 -0
  104. package/chunks/{native-loop-RJCJPOUS.js → native-loop-3BSYVDUI.js} +17 -18
  105. package/chunks/{npm-detectors-KB5Y5ZFX.js → npm-detectors-VIYJXKFQ.js} +6 -6
  106. package/chunks/npm-dynamic-discovery-5J7FT3XM.js +13 -0
  107. package/chunks/orchestrate-DHBFRTSI.js +59 -0
  108. package/chunks/{pre-recon-cve-66EB6G4M.js → pre-recon-cve-X2K2P5YQ.js} +4 -4
  109. package/chunks/prepare-KYHGFWCJ.js +13 -0
  110. package/chunks/process-PNMC36JI.js +15 -0
  111. package/chunks/{replay-runner-45G3VU7X.js → replay-runner-LK2XFIVG.js} +7 -7
  112. package/chunks/{run-D56MPDKY.js → run-CBGE6DRQ.js} +2201 -1694
  113. package/chunks/{runtime-G7YWIO3B.js → runtime-PXO5G6UV.js} +11 -11
  114. package/chunks/runtime-XFWJTBUO.js +12 -0
  115. package/chunks/{scan-stream-FHI2FYZE.js → scan-stream-BMOCPKQX.js} +7 -7
  116. package/chunks/{scope-BI7BF4ZY.js → scope-NJHIDDTN.js} +4 -4
  117. package/chunks/{session-store-GZ4A4KYT.js → session-store-46WBZM22.js} +6 -6
  118. package/chunks/source-files-REHOM44I.js +12 -0
  119. package/chunks/{specdrift-WCLH6TTQ.js → specdrift-AFS54WEJ.js} +5 -5
  120. package/chunks/token-KRWP5JYA.js +72 -0
  121. package/chunks/token-util-DWTL33S3.js +8 -0
  122. package/chunks/variant-candidates-UH2WC2HA.js +13 -0
  123. package/chunks/{web-recon-prepass-JJGPEOLE.js → web-recon-prepass-SFXU44SS.js} +9 -9
  124. package/dashboard/assets/desktop-BT7RkC4q.js +32 -0
  125. package/dashboard/assets/desktop-OaBI0E0e.css +1 -0
  126. package/dashboard/assets/{findings-page-CACW9nw2.js → findings-page-B4rwF6fZ.js} +2 -2
  127. package/dashboard/assets/{format-PoISqsES.js → format-LNQSSpn6.js} +1 -1
  128. package/dashboard/assets/live-page-DoNwpPAO.js +1 -0
  129. package/dashboard/assets/{meta-tile-CcskIV_o.js → meta-tile-BMtBC-Qq.js} +1 -1
  130. package/dashboard/assets/operations-CMFVrXEe.css +2 -0
  131. package/dashboard/assets/operations-app-ER0gg7GN.js +2 -0
  132. package/dashboard/assets/{operations-D8nUP5_m.js → operations-e2CGYKB1.js} +2 -2
  133. package/dashboard/assets/{overview-page-DTGS8dPo.js → overview-page-CmeWH17A.js} +1 -1
  134. package/dashboard/assets/{page-header-MFVvEtZW.js → page-header-CIJyycfz.js} +1 -1
  135. package/dashboard/assets/scans-page-CuhzWhHx.js +1 -0
  136. package/dashboard/assets/{table-BYS-nIVA.js → table-BgsSBdke.js} +1 -1
  137. package/dashboard/assets/{tabs-DivxbhQy.js → tabs-vn6v7Bk6.js} +1 -1
  138. package/dashboard/desktop.html +3 -3
  139. package/dashboard/index.html +3 -3
  140. package/package.json +11 -11
  141. package/chunks/adapt-loop-SMH6V4PD.js +0 -18
  142. package/chunks/appsec-catalog-CBWHGTEL.js +0 -24
  143. package/chunks/chunk-242TMK6G.js +0 -110
  144. package/chunks/chunk-H2FFLZNK.js +0 -3
  145. package/chunks/chunk-QI233I24.js +0 -333
  146. package/chunks/chunk-RRMJC3ZE.js +0 -105
  147. package/chunks/chunk-Z5FA2XOX.js +0 -2798
  148. package/chunks/cost-ledger-NU63MYZM.js +0 -13
  149. package/chunks/db-KFWOAUUB.js +0 -16
  150. package/chunks/eval-runner-7ZF472KV.js +0 -27
  151. package/chunks/fix-IG7LYXH3.js +0 -12
  152. package/chunks/harness-7ODOLOWU.js +0 -22
  153. package/chunks/http-conformance-DU66MZIU.js +0 -11
  154. package/chunks/http-sender-GWH2IYEA.js +0 -10
  155. package/chunks/hunt-scan-MMKUOETU.js +0 -38
  156. package/chunks/memsafety-scan-J7SECV5W.js +0 -16
  157. package/chunks/npm-dynamic-discovery-AHROOZDB.js +0 -13
  158. package/chunks/orchestrate-OC2VZN2X.js +0 -62
  159. package/chunks/pipeline-BZK5BLJR.js +0 -14
  160. package/chunks/prepare-MYY743TK.js +0 -13
  161. package/chunks/process-LQRCS5OY.js +0 -13
  162. package/chunks/runtime-J7PLXZNM.js +0 -12
  163. package/chunks/source-files-PWRQR6LY.js +0 -12
  164. package/chunks/variant-candidates-YERCYMPD.js +0 -13
  165. package/dashboard/assets/0sec-icon-66SreztZ.gif +0 -0
  166. package/dashboard/assets/desktop-CXTQonNm.js +0 -32
  167. package/dashboard/assets/desktop-NOekk4QS.css +0 -1
  168. package/dashboard/assets/live-page-DrgQqQK5.js +0 -1
  169. package/dashboard/assets/operations-BKE8T-vY.css +0 -2
  170. package/dashboard/assets/operations-app-CQQhG54n.js +0 -2
  171. package/dashboard/assets/scans-page-ChVtq8Us.js +0 -1
@@ -1,6 +1,6 @@
1
1
  #!/usr/bin/env node
2
- import { createRequire as __0secCreateRequire } from "node:module";
3
- const require = __0secCreateRequire(import.meta.url);
2
+ import { createRequire as __0CreateRequire } from "node:module";
3
+ const require = __0CreateRequire(import.meta.url);
4
4
  var __create = Object.create;
5
5
  var __defProp = Object.defineProperty;
6
6
  var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
@@ -1,9 +1,9 @@
1
1
  #!/usr/bin/env node
2
- import { createRequire as __0secCreateRequire } from "node:module";
3
- const require = __0secCreateRequire(import.meta.url);
2
+ import { createRequire as __0CreateRequire } from "node:module";
3
+ const require = __0CreateRequire(import.meta.url);
4
4
  import {
5
5
  __export
6
- } from "./chunk-IR537GON.js";
6
+ } from "./chunk-VCSFCHAJ.js";
7
7
 
8
8
  // node_modules/.pnpm/zod@3.25.76/node_modules/zod/v3/external.js
9
9
  var external_exports = {};
@@ -1,16 +1,16 @@
1
1
  #!/usr/bin/env node
2
- import { createRequire as __0secCreateRequire } from "node:module";
3
- const require = __0secCreateRequire(import.meta.url);
2
+ import { createRequire as __0CreateRequire } from "node:module";
3
+ const require = __0CreateRequire(import.meta.url);
4
4
  import {
5
5
  analyzeFindingForKnownMarkers,
6
6
  detectKnownMarkers,
7
7
  extractFileRefs,
8
8
  redactSensitiveHeaders,
9
9
  require_dist
10
- } from "./chunk-WEBMRWEG.js";
10
+ } from "./chunk-W4JOXE4N.js";
11
11
  import {
12
12
  __toESM
13
- } from "./chunk-IR537GON.js";
13
+ } from "./chunk-VCSFCHAJ.js";
14
14
 
15
15
  // packages/core/dist/disclose/screenshots.js
16
16
  import { execFileSync } from "node:child_process";
@@ -384,7 +384,7 @@ function extractSiblingFix(finding, options) {
384
384
  import { spawn } from "node:child_process";
385
385
  var MAX_CAPTURE_BYTES = 1024 * 1024;
386
386
  var DEFAULT_STEP_TIMEOUT_MS = 3e4;
387
- var PERSONA_HEADER = "X-0sec-Persona";
387
+ var PERSONA_HEADER = "X-0-Persona";
388
388
  var TRUNCATION_MARKER = "\n\u2026[truncated at 1MiB]";
389
389
  var DEFAULT_RPS_PER_HOST = 2;
390
390
  var MAX_REDIRECT_HOPS = 5;
@@ -1221,7 +1221,7 @@ function assembleBundleIndex(entries, options) {
1221
1221
  lines.push(`| \`${id}\` | ${e.finding.severity} | ${titleCell} | ${e.patchStatus ?? "\u2014"} | ${e.behaviouralVerdict ?? "\u2014"} | ${redactReason(e)} | ${formatProvenance(e)} |`);
1222
1222
  }
1223
1223
  }
1224
- lines.push("", "## Before filing each advisory", "", "1. Re-read the draft \u2014 the PoC and Patch Status sections are auto-populated from the scan but you should sanity-check against the current upstream HEAD.", "2. Verify the CVSS vector suggested by 0sec is still appropriate for your deployment model.", "3. Attach or replace screenshots in the PoC section as needed.", "4. File at https://github.com/<owner>/<repo>/security/advisories/new", "");
1224
+ lines.push("", "## Before filing each advisory", "", "1. Re-read the draft \u2014 the PoC and Patch Status sections are auto-populated from the scan but you should sanity-check against the current upstream HEAD.", "2. Verify the CVSS vector suggested by 0 is still appropriate for your deployment model.", "3. Attach or replace screenshots in the PoC section as needed.", "4. File at https://github.com/<owner>/<repo>/security/advisories/new", "");
1225
1225
  return lines.join("\n");
1226
1226
  }
1227
1227
 
@@ -1376,7 +1376,7 @@ function generateWriteup(parsed, opts = {}) {
1376
1376
  out.push(sanitizeWriteup(parts.join("\n\n")), "");
1377
1377
  }
1378
1378
  out.push("## Credits", "");
1379
- out.push("Found by 0sec's automated security-research tooling ([0sec.ai](https://0sec.ai)).", "");
1379
+ out.push("Found by 0.security's automated security-research tooling ([0.security](https://0.security)).", "");
1380
1380
  const slug = slugify2(fm.short_name ? `${fm.package ?? ""}-${fm.short_name}` : title);
1381
1381
  const filename = `${slug || "writeup"}-${dateStamp}.md`;
1382
1382
  return {
@@ -1540,7 +1540,7 @@ var HIGH_IMPACT_CATEGORIES = /* @__PURE__ */ new Set([
1540
1540
  // HS-vs-RS), and predictable RNG for secrets are direct key-leak / auth-bypass
1541
1541
  // primitives, so the class is protected from score-only auto-drop.
1542
1542
  "crypto-misuse",
1543
- // AI-system adversarial classes — the core 0sec "adversarial reliability"
1543
+ // AI-system adversarial classes — the core 0 "adversarial reliability"
1544
1544
  // thesis (authorization-boundary break, unsafe tool use, data exfiltration,
1545
1545
  // prompt hijack). A missed one of these is a disclosure-grade loss.
1546
1546
  "prompt-injection",
@@ -1728,7 +1728,7 @@ function assembleEvidencePack(finding, opts = {}) {
1728
1728
  function renderVendorNotificationMarkdown(draft) {
1729
1729
  const out = [];
1730
1730
  out.push(`# Vulnerability report: ${draft.title}`, "");
1731
- out.push("> **DRAFT \u2014 NOT SENT.** Auto-assembled vendor-notification draft. An operator must review, fill in any `to be filled in` fields, and send it manually. Nothing here is transmitted to a vendor by 0sec. Embargo rules in `disclosure/AGENTS.md` apply.", "");
1731
+ out.push("> **DRAFT \u2014 NOT SENT.** Auto-assembled vendor-notification draft. An operator must review, fill in any `to be filled in` fields, and send it manually. Nothing here is transmitted to a vendor by 0. Embargo rules in `disclosure/AGENTS.md` apply.", "");
1732
1732
  if (!draft.reproduced) {
1733
1733
  out.push("> \u26A0\uFE0F This finding's PoC did **not** reproduce in an isolated env (`evidenceKind !== reproduced-poc`). Staged as an internal draft only \u2014 do not send to a vendor without a working PoC.", "");
1734
1734
  }
@@ -1866,7 +1866,7 @@ function assembleReproducibilityManifest(finding, opts = {}) {
1866
1866
  redactionsApplied.push("replay-verified-impact");
1867
1867
  const target = opts.targetIdentifier ? redactManifestValue(opts.targetIdentifier) : extractTarget(finding);
1868
1868
  const modelConfig = opts.modelConfig ? redactManifestValue(opts.modelConfig) : null;
1869
- const toolVersion = opts.toolVersion ?? process.env["0SEC_VERSION"] ?? "unknown";
1869
+ const toolVersion = opts.toolVersion ?? process.env["ZERO_VERSION"] ?? "unknown";
1870
1870
  const timestamp = opts.timestamp ?? (/* @__PURE__ */ new Date()).toISOString();
1871
1871
  const sanitizedTitle = redactManifestValue(finding.title);
1872
1872
  const evidenceReq = finding.evidence?.request ?? null;
@@ -1,10 +1,10 @@
1
1
  #!/usr/bin/env node
2
- import { createRequire as __0secCreateRequire } from "node:module";
3
- const require = __0secCreateRequire(import.meta.url);
2
+ import { createRequire as __0CreateRequire } from "node:module";
3
+ const require = __0CreateRequire(import.meta.url);
4
4
  import {
5
5
  __commonJS,
6
6
  __require
7
- } from "./chunk-IR537GON.js";
7
+ } from "./chunk-VCSFCHAJ.js";
8
8
 
9
9
  // node_modules/.pnpm/yaml@2.9.0/node_modules/yaml/dist/nodes/identity.js
10
10
  var require_identity = __commonJS({
@@ -7333,66 +7333,6 @@ var require_dist = __commonJS({
7333
7333
  }
7334
7334
  });
7335
7335
 
7336
- // packages/core/dist/disclose/known-marker.js
7337
- var SOURCE_MARKER_RE = /\b(TODO|FIXME|XXX|HACK)\b(?:[(:]\s*(.*?)\s*[):])?|(\bknown[ -](?:limitation|issue)s?\b|\bdocumented[ -]limitation\b)/gi;
7338
- function hasKnownMarkerText(source) {
7339
- SOURCE_MARKER_RE.lastIndex = 0;
7340
- const matched = SOURCE_MARKER_RE.test(source);
7341
- SOURCE_MARKER_RE.lastIndex = 0;
7342
- return matched;
7343
- }
7344
- function detectKnownMarkers(source, filePath) {
7345
- const lines = source.split("\n");
7346
- const markers = [];
7347
- for (let i = 0; i < lines.length; i++) {
7348
- const line = lines[i];
7349
- SOURCE_MARKER_RE.lastIndex = 0;
7350
- let match;
7351
- while ((match = SOURCE_MARKER_RE.exec(line)) !== null) {
7352
- const tag = match[1];
7353
- const phrase = match[3];
7354
- const markerText = tag ?? phrase ?? match[0];
7355
- const contextLines = [];
7356
- if (i > 0)
7357
- contextLines.push(lines[i - 1]);
7358
- contextLines.push(line);
7359
- if (i < lines.length - 1)
7360
- contextLines.push(lines[i + 1]);
7361
- markers.push({
7362
- marker: markerText.toLowerCase(),
7363
- line: line.length > 200 ? line.slice(0, 100) + "..." + line.slice(line.length - 97) : line,
7364
- lineNumber: i + 1,
7365
- sourcePath: filePath,
7366
- context: contextLines.join("\n")
7367
- });
7368
- }
7369
- }
7370
- return {
7371
- hasKnownMarker: markers.length > 0,
7372
- markers
7373
- };
7374
- }
7375
- function analyzeFindingForKnownMarkers(finding) {
7376
- const texts = [];
7377
- if (finding.evidence?.analysis)
7378
- texts.push(finding.evidence.analysis);
7379
- if (finding.description)
7380
- texts.push(finding.description);
7381
- if (finding.evidence?.request)
7382
- texts.push(finding.evidence.request);
7383
- if (finding.evidence?.response)
7384
- texts.push(finding.evidence.response);
7385
- const allMarkers = [];
7386
- for (const text of texts) {
7387
- const signal = detectKnownMarkers(text);
7388
- allMarkers.push(...signal.markers);
7389
- }
7390
- return {
7391
- hasKnownMarker: allMarkers.length > 0,
7392
- markers: allMarkers
7393
- };
7394
- }
7395
-
7396
7336
  // packages/core/dist/disclose/cwe.js
7397
7337
  var CWE_MAP = {
7398
7338
  // LLM / agent
@@ -7666,6 +7606,8 @@ function metricsForReachability(tier) {
7666
7606
  switch (tier) {
7667
7607
  case "remote-unauth":
7668
7608
  return { av: "N", pr: "N", ui: "N" };
7609
+ case "remote-auth":
7610
+ return { av: "N", pr: "L", ui: "N" };
7669
7611
  case "proximity-rf":
7670
7612
  return { av: "A", pr: "N", ui: "N" };
7671
7613
  case "local-unpriv":
@@ -8382,6 +8324,8 @@ function cvss4MetricsForReachability(tier) {
8382
8324
  switch (tier) {
8383
8325
  case "remote-unauth":
8384
8326
  return { AV: "N", AT: "N", PR: "N", UI: "N" };
8327
+ case "remote-auth":
8328
+ return { AV: "N", AT: "N", PR: "L", UI: "N" };
8385
8329
  case "proximity-rf":
8386
8330
  return { AV: "A", AT: "N", PR: "N", UI: "N" };
8387
8331
  case "local-unpriv":
@@ -8737,6 +8681,8 @@ function reachabilityLabel(tier) {
8737
8681
  switch (tier) {
8738
8682
  case "remote-unauth":
8739
8683
  return "remote, unauthenticated \u2014 reachable over the network with no credentials";
8684
+ case "remote-auth":
8685
+ return "remote, authenticated \u2014 requires an account or contributor access";
8740
8686
  case "proximity-rf":
8741
8687
  return "RF/physical proximity \u2014 attacker must be within radio range (NFC/BLE/Wi-Fi)";
8742
8688
  case "local-unpriv":
@@ -8755,6 +8701,8 @@ function weaponizabilityLabel(w) {
8755
8701
  return "remote code execution";
8756
8702
  case "lpe-to-root":
8757
8703
  return "local privilege escalation to root/SYSTEM";
8704
+ case "integrity-tampering":
8705
+ return "workflow integrity manipulation";
8758
8706
  case "info-leak":
8759
8707
  return "information disclosure";
8760
8708
  case "dos-crash":
@@ -8812,9 +8760,9 @@ function renderAdvisoryMarkdown(finding, ctx = {}) {
8812
8760
  } else if (ctx.target) {
8813
8761
  affectedLine = `\`${ctx.target}\`${ctx.targetRef ? ` at \`${ctx.targetRef}\`` : ""}${ctx.commitHash ? ` (commit \`${ctx.commitHash.slice(0, 12)}\`)` : ""}`;
8814
8762
  } else {
8815
- affectedLine = "_Pass `--repo <path>` to `0sec-cli disclose` to auto-detect the affected version range from git tags._";
8763
+ affectedLine = "_Pass `--repo <path>` to `@0/cli disclose` to auto-detect the affected version range from git tags._";
8816
8764
  }
8817
- const cvssSource = cvss.source === "finding" ? "populated on the finding by 0sec" : cvss.source === "impact-assessment" ? "exploitability metrics derived from 0sec's reachability assessment; impact from category \u2014 verify against your deployment" : "heuristic from category + severity \u2014 override in the GHSA editor if the operator disagrees";
8765
+ const cvssSource = cvss.source === "finding" ? "populated on the finding by 0" : cvss.source === "impact-assessment" ? "exploitability metrics derived from 0's reachability assessment; impact from category \u2014 verify against your deployment" : "heuristic from category + severity \u2014 override in the GHSA editor if the operator disagrees";
8818
8766
  const remediation = finding.remediation;
8819
8767
  const suggestedFixParts = [];
8820
8768
  if (remediation?.summary)
@@ -8839,7 +8787,7 @@ ${remediation.codeExample.after}
8839
8787
  \`\`\``);
8840
8788
  } else if (ctx.siblingFix) {
8841
8789
  const ref = `${ctx.siblingFix.fileRef.file}${ctx.siblingFix.fileRef.line ? `:${ctx.siblingFix.fileRef.line}` : ""}`;
8842
- suggestedFixParts.push(`**Correct pattern already present in the repo at \`${ref}\`** *(extracted by 0sec):*
8790
+ suggestedFixParts.push(`**Correct pattern already present in the repo at \`${ref}\`** *(extracted by 0):*
8843
8791
 
8844
8792
  \`\`\`${ctx.siblingFix.language}
8845
8793
  ${ctx.siblingFix.snippet}
@@ -8871,7 +8819,7 @@ ${ctx.siblingFix.snippet}
8871
8819
  if (ctx.osecVersion || ctx.scanId) {
8872
8820
  const bits = [];
8873
8821
  if (ctx.osecVersion)
8874
- bits.push(`0sec \`${ctx.osecVersion}\``);
8822
+ bits.push(`0 \`${ctx.osecVersion}\``);
8875
8823
  if (ctx.scanId)
8876
8824
  bits.push(`scan \`${ctx.scanId.slice(0, 8)}\``);
8877
8825
  const canaryPositive = ctx.patchStatus?.status === "still-vulnerable";
@@ -8923,7 +8871,7 @@ ${ctx.siblingFix.snippet}
8923
8871
  if (ctx.patchStatus) {
8924
8872
  out.push(formatPatchStatusSection(ctx.patchStatus), "");
8925
8873
  } else {
8926
- out.push("_Pass `--repo <path>` to `0sec-cli disclose` to auto-verify this against the target's current HEAD or a specific tag._", "");
8874
+ out.push("_Pass `--repo <path>` to `@0/cli disclose` to auto-verify this against the target's current HEAD or a specific tag._", "");
8927
8875
  }
8928
8876
  if (ctx.pocExecution) {
8929
8877
  const verdict = ctx.pocExecution.overallVerdict === "exploit_still_works" ? "**Behavioural check: exploit still reproducible.**" : ctx.pocExecution.overallVerdict === "exploit_broken" ? "**Behavioural check: exploit no longer reproducible.**" : "**Behavioural check: could not run.**";
@@ -8931,7 +8879,7 @@ ${ctx.siblingFix.snippet}
8931
8879
  out.push(`> Verdict: \`${ctx.pocExecution.overallVerdict}\` (${ctx.pocExecution.steps.length} step${ctx.pocExecution.steps.length === 1 ? "" : "s"} executed).`, "");
8932
8880
  }
8933
8881
  out.push("## Credits", "");
8934
- out.push("Discovered by **0sec**, 0sec's AI-assisted security engine ([0sec.ai](https://0sec.ai)).", "", "Reporter: _(your github handle)_", "");
8882
+ out.push("Discovered by **0.security**, the 0.security AI-assisted security engine ([0.security](https://0.security)).", "", "Reporter: _(your github handle)_", "");
8935
8883
  return {
8936
8884
  filename,
8937
8885
  markdown: out.join("\n").replace(/\n{3,}/g, "\n\n"),
@@ -9019,7 +8967,7 @@ ${remediation.codeExample.after}
9019
8967
  \`\`\``);
9020
8968
  } else if (ctx.siblingFix) {
9021
8969
  const ref = `${ctx.siblingFix.fileRef.file}${ctx.siblingFix.fileRef.line ? `:${ctx.siblingFix.fileRef.line}` : ""}`;
9022
- parts.push(`**Correct pattern already present in the repo at \`${ref}\`** *(extracted by 0sec):*
8970
+ parts.push(`**Correct pattern already present in the repo at \`${ref}\`** *(extracted by 0):*
9023
8971
 
9024
8972
  \`\`\`${ctx.siblingFix.language}
9025
8973
  ${ctx.siblingFix.snippet}
@@ -9282,7 +9230,7 @@ _${cvssSourceLabel(parts.cvss)}_` },
9282
9230
  }
9283
9231
  };
9284
9232
  function cvssSourceLabel(cvss) {
9285
- return cvss.source === "finding" ? "CVSS source: populated on the finding by 0sec." : cvss.source === "impact-assessment" ? "CVSS source: exploitability derived from 0sec's reachability assessment; impact from category \u2014 verify against your deployment." : "CVSS source: heuristic from category + severity \u2014 verify before submission.";
9233
+ return cvss.source === "finding" ? "CVSS source: populated on the finding by 0." : cvss.source === "impact-assessment" ? "CVSS source: exploitability derived from 0's reachability assessment; impact from category \u2014 verify against your deployment." : "CVSS source: heuristic from category + severity \u2014 verify before submission.";
9286
9234
  }
9287
9235
  var TEMPLATE_REGISTRY = {
9288
9236
  hackerone: HACKERONE_TEMPLATE,
@@ -9306,11 +9254,68 @@ function renderPlatformReport(finding, platform, ctx = {}) {
9306
9254
  return reportTemplate(platform).render(finding, ctx);
9307
9255
  }
9308
9256
 
9257
+ // packages/core/dist/disclose/known-marker.js
9258
+ var SOURCE_MARKER_RE = /\b(TODO|FIXME|XXX|HACK)\b(?:[(:]\s*(.*?)\s*[):])?|(\bknown[ -](?:limitation|issue)s?\b|\bdocumented[ -]limitation\b)/gi;
9259
+ function hasKnownMarkerText(source) {
9260
+ SOURCE_MARKER_RE.lastIndex = 0;
9261
+ const matched = SOURCE_MARKER_RE.test(source);
9262
+ SOURCE_MARKER_RE.lastIndex = 0;
9263
+ return matched;
9264
+ }
9265
+ function detectKnownMarkers(source, filePath) {
9266
+ const lines = source.split("\n");
9267
+ const markers = [];
9268
+ for (let i = 0; i < lines.length; i++) {
9269
+ const line = lines[i];
9270
+ SOURCE_MARKER_RE.lastIndex = 0;
9271
+ let match;
9272
+ while ((match = SOURCE_MARKER_RE.exec(line)) !== null) {
9273
+ const tag = match[1];
9274
+ const phrase = match[3];
9275
+ const markerText = tag ?? phrase ?? match[0];
9276
+ const contextLines = [];
9277
+ if (i > 0)
9278
+ contextLines.push(lines[i - 1]);
9279
+ contextLines.push(line);
9280
+ if (i < lines.length - 1)
9281
+ contextLines.push(lines[i + 1]);
9282
+ markers.push({
9283
+ marker: markerText.toLowerCase(),
9284
+ line: line.length > 200 ? line.slice(0, 100) + "..." + line.slice(line.length - 97) : line,
9285
+ lineNumber: i + 1,
9286
+ sourcePath: filePath,
9287
+ context: contextLines.join("\n")
9288
+ });
9289
+ }
9290
+ }
9291
+ return {
9292
+ hasKnownMarker: markers.length > 0,
9293
+ markers
9294
+ };
9295
+ }
9296
+ function analyzeFindingForKnownMarkers(finding) {
9297
+ const texts = [];
9298
+ if (finding.evidence?.analysis)
9299
+ texts.push(finding.evidence.analysis);
9300
+ if (finding.description)
9301
+ texts.push(finding.description);
9302
+ if (finding.evidence?.request)
9303
+ texts.push(finding.evidence.request);
9304
+ if (finding.evidence?.response)
9305
+ texts.push(finding.evidence.response);
9306
+ const allMarkers = [];
9307
+ for (const text of texts) {
9308
+ const signal = detectKnownMarkers(text);
9309
+ allMarkers.push(...signal.markers);
9310
+ }
9311
+ return {
9312
+ hasKnownMarker: allMarkers.length > 0,
9313
+ markers: allMarkers
9314
+ };
9315
+ }
9316
+
9309
9317
  export {
9310
9318
  require_dist,
9311
- hasKnownMarkerText,
9312
- detectKnownMarkers,
9313
- analyzeFindingForKnownMarkers,
9314
9319
  suggestCwesForCategory,
9315
9320
  formatCweSection,
9316
9321
  suggestCvss,
@@ -9333,5 +9338,8 @@ export {
9333
9338
  renderAdvisoryMarkdown,
9334
9339
  REPORT_PLATFORMS,
9335
9340
  reportTemplate,
9336
- renderPlatformReport
9341
+ renderPlatformReport,
9342
+ hasKnownMarkerText,
9343
+ detectKnownMarkers,
9344
+ analyzeFindingForKnownMarkers
9337
9345
  };
@@ -1,12 +1,12 @@
1
1
  #!/usr/bin/env node
2
- import { createRequire as __0secCreateRequire } from "node:module";
3
- const require = __0secCreateRequire(import.meta.url);
2
+ import { createRequire as __0CreateRequire } from "node:module";
3
+ const require = __0CreateRequire(import.meta.url);
4
4
  import {
5
5
  allowlistedChildEnv
6
- } from "./chunk-KLTNTE2Z.js";
6
+ } from "./chunk-QZVG3BG4.js";
7
7
  import {
8
8
  VERSION
9
- } from "./chunk-6L26OBWI.js";
9
+ } from "./chunk-PC6RCKQV.js";
10
10
 
11
11
  // packages/core/dist/verify/replay-runner.js
12
12
  import { spawn } from "node:child_process";
@@ -52,7 +52,7 @@ var LocalShellRunner = class {
52
52
  // child must not inherit the harness's provider/cloud credentials.
53
53
  // Build from the allowlist (PATH/HOME/TMPDIR + target-auth vars a
54
54
  // reproduction legitimately needs) rather than copying process.env.
55
- env: allowlistedChildEnv({ "0SEC_VERIFY": "1" }),
55
+ env: allowlistedChildEnv({ "ZERO_VERIFY": "1" }),
56
56
  stdio: ["ignore", "pipe", "pipe"],
57
57
  // On POSIX, isolate the shell and all descendants into a process
58
58
  // group so a timeout cannot leave a grandchild holding stdout open.
@@ -138,7 +138,7 @@ function resolveStepCwd(cwd, runDir) {
138
138
  }
139
139
  var DEFAULT_DOCKER_SHELL_IMAGE = "alpine:3.20";
140
140
  var DEFAULT_DOCKER_HTTP_IMAGE = "curlimages/curl:8.12.1";
141
- var DOCKER_HTTP_STATUS_MARKER = "\n__0SEC_HTTP_STATUS__:";
141
+ var DOCKER_HTTP_STATUS_MARKER = "\n__ZERO_HTTP_STATUS__:";
142
142
  var CONTAINER_ID_RE = /^[a-f0-9]{12,64}$/i;
143
143
  var DOCKER_NETWORK_RE = /^[A-Za-z0-9][A-Za-z0-9_.-]{0,127}$/;
144
144
  var DockerRunner = class {
@@ -176,7 +176,7 @@ var DockerRunner = class {
176
176
  return failedStep(step, startedAt, command);
177
177
  }
178
178
  const safeStepId = step.id.replace(/[^a-zA-Z0-9_.-]/g, "_").slice(0, 64) || "step";
179
- const cidPath = join(ctx.runDir, `.0sec-docker-${safeStepId}-${randomUUID()}.cid`);
179
+ const cidPath = join(ctx.runDir, `.0-docker-${safeStepId}-${randomUUID()}.cid`);
180
180
  const args = this.dockerRunArgs(command, ctx.runDir, cidPath);
181
181
  const result = await runDockerCommand({
182
182
  dockerBinary: this.dockerBinary,
@@ -382,7 +382,7 @@ async function runDockerCommand(args) {
382
382
  try {
383
383
  child = spawn(args.dockerBinary, args.args, {
384
384
  cwd: args.runDir,
385
- env: allowlistedChildEnv({ "0SEC_VERIFY": "1" }),
385
+ env: allowlistedChildEnv({ "ZERO_VERIFY": "1" }),
386
386
  stdio: ["ignore", "pipe", "pipe"],
387
387
  detached: nodePlatform !== "win32"
388
388
  });
@@ -444,7 +444,7 @@ function runDockerControl(dockerBinary, args, cwd) {
444
444
  try {
445
445
  child = spawn(dockerBinary, args, {
446
446
  cwd,
447
- env: allowlistedChildEnv({ "0SEC_VERIFY": "1" }),
447
+ env: allowlistedChildEnv({ "ZERO_VERIFY": "1" }),
448
448
  stdio: "ignore",
449
449
  detached: nodePlatform !== "win32"
450
450
  });
@@ -483,9 +483,9 @@ var QemuRunner = class {
483
483
  memoryMb;
484
484
  cpus;
485
485
  constructor(options = {}) {
486
- this.qemuBinary = options.qemuBinary ?? process.env["0SEC_REPLAY_QEMU_BINARY"]?.trim() ?? (nodeArch === "arm64" ? "qemu-system-aarch64" : "qemu-system-x86_64");
487
- this.kernelImage = options.kernelImage ?? process.env["0SEC_REPLAY_QEMU_KERNEL"]?.trim() ?? "";
488
- this.busyboxPath = options.busyboxPath ?? process.env["0SEC_REPLAY_QEMU_BUSYBOX"]?.trim() ?? "";
486
+ this.qemuBinary = options.qemuBinary ?? process.env["ZERO_REPLAY_QEMU_BINARY"]?.trim() ?? (nodeArch === "arm64" ? "qemu-system-aarch64" : "qemu-system-x86_64");
487
+ this.kernelImage = options.kernelImage ?? process.env["ZERO_REPLAY_QEMU_KERNEL"]?.trim() ?? "";
488
+ this.busyboxPath = options.busyboxPath ?? process.env["ZERO_REPLAY_QEMU_BUSYBOX"]?.trim() ?? "";
489
489
  this.memoryMb = options.memoryMb ?? 512;
490
490
  this.cpus = options.cpus ?? 1;
491
491
  if (!this.qemuBinary || !Number.isInteger(this.memoryMb) || this.memoryMb < 128 || !Number.isInteger(this.cpus) || this.cpus < 1) {
@@ -495,7 +495,7 @@ var QemuRunner = class {
495
495
  async exec(step, ctx) {
496
496
  const startedAt = Date.now();
497
497
  if (!this.kernelImage || !this.busyboxPath) {
498
- return failedStep(step, startedAt, "QEMU replay requires kernelImage and busyboxPath (or 0SEC_REPLAY_QEMU_KERNEL and 0SEC_REPLAY_QEMU_BUSYBOX)");
498
+ return failedStep(step, startedAt, "QEMU replay requires kernelImage and busyboxPath (or ZERO_REPLAY_QEMU_KERNEL and ZERO_REPLAY_QEMU_BUSYBOX)");
499
499
  }
500
500
  if (!existsSync(this.kernelImage) || !statSync(this.kernelImage).isFile()) {
501
501
  return failedStep(step, startedAt, `QEMU kernel image is not a file: ${this.kernelImage}`);
@@ -511,7 +511,7 @@ var QemuRunner = class {
511
511
  return failedStep(step, startedAt, "QEMU replay refuses an absolute step cwd");
512
512
  }
513
513
  const safeStepId = step.id.replace(/[^a-zA-Z0-9_.-]/g, "_").slice(0, 64) || "step";
514
- const workspaceName = `.0sec-qemu-${safeStepId}-${randomUUID()}`;
514
+ const workspaceName = `.0-qemu-${safeStepId}-${randomUUID()}`;
515
515
  const workspace = join(ctx.runDir, workspaceName);
516
516
  mkdirSync(workspace, { recursive: true });
517
517
  writeFileSync(join(workspace, "step.sh"), step.action.cmd, "utf8");
@@ -567,7 +567,7 @@ ${qemu.stdoutFull}` : "";
567
567
  "-append",
568
568
  "console=ttyS0 rdinit=/init panic=-1",
569
569
  "-virtfs",
570
- `local,path=${resolve(runDir)},mount_tag=0sec-replay,security_model=none,id=osecshare`,
570
+ `local,path=${resolve(runDir)},mount_tag=0-replay,security_model=none,id=osecshare`,
571
571
  "-net",
572
572
  "none",
573
573
  "-sandbox",
@@ -577,11 +577,11 @@ ${qemu.stdoutFull}` : "";
577
577
  };
578
578
  function qemuGuestWorkingDirectory(cwd) {
579
579
  if (!cwd)
580
- return "/mnt/0sec";
580
+ return "/mnt/0";
581
581
  if (isAbsolute(cwd))
582
582
  return void 0;
583
583
  const relative = resolve("/", cwd).slice(1);
584
- return relative ? `/mnt/0sec/${relative}` : "/mnt/0sec";
584
+ return relative ? `/mnt/0/${relative}` : "/mnt/0";
585
585
  }
586
586
  function buildQemuInitramfs(args) {
587
587
  const empty = Buffer.alloc(0);
@@ -590,7 +590,7 @@ function buildQemuInitramfs(args) {
590
590
  { name: "bin", mode: 16877, body: empty },
591
591
  { name: "dev", mode: 16877, body: empty },
592
592
  { name: "mnt", mode: 16877, body: empty },
593
- { name: "mnt/0sec", mode: 16877, body: empty },
593
+ { name: "mnt/0", mode: 16877, body: empty },
594
594
  { name: "proc", mode: 16877, body: empty },
595
595
  { name: "sys", mode: 16877, body: empty },
596
596
  { name: "tmp", mode: 16877, body: empty },
@@ -602,7 +602,7 @@ function buildQemuInitramfs(args) {
602
602
  appendNewcEntry(chunks, entries[index], index + 1);
603
603
  }
604
604
  appendNewcEntry(chunks, { name: "TRAILER!!!", mode: 0, body: empty }, 0);
605
- const initrdPath = join(args.runDir, `.0sec-qemu-initrd-${randomUUID()}.cpio.gz`);
605
+ const initrdPath = join(args.runDir, `.0-qemu-initrd-${randomUUID()}.cpio.gz`);
606
606
  writeFileSync(initrdPath, gzipSync(Buffer.concat(chunks)));
607
607
  return initrdPath;
608
608
  }
@@ -634,19 +634,19 @@ function appendNewcEntry(chunks, entry, inode) {
634
634
  chunks.push(Buffer.alloc(bodyPadding));
635
635
  }
636
636
  function renderQemuInit(workspaceName, guestCwd) {
637
- const workspace = `/mnt/0sec/${workspaceName}`;
637
+ const workspace = `/mnt/0/${workspaceName}`;
638
638
  const step = `${workspace}/step.sh`;
639
639
  const stdout = `${workspace}/stdout.log`;
640
640
  const stderr = `${workspace}/stderr.log`;
641
641
  const exitCode = `${workspace}/exit-code`;
642
642
  return [
643
643
  "#!/bin/busybox sh",
644
- "/bin/busybox mkdir -p /proc /sys /dev /tmp /mnt/0sec",
644
+ "/bin/busybox mkdir -p /proc /sys /dev /tmp /mnt/0",
645
645
  "/bin/busybox mount -t proc proc /proc",
646
646
  "/bin/busybox mount -t sysfs sysfs /sys",
647
647
  "/bin/busybox mount -t devtmpfs devtmpfs /dev 2>/dev/null || true",
648
- "if ! /bin/busybox mount -t 9p -o trans=virtio,version=9p2000.L 0sec-replay /mnt/0sec; then",
649
- ' echo "__0SEC_QEMU_MOUNT_FAILED__"',
648
+ "if ! /bin/busybox mount -t 9p -o trans=virtio,version=9p2000.L 0-replay /mnt/0; then",
649
+ ' echo "__ZERO_QEMU_MOUNT_FAILED__"',
650
650
  " /bin/busybox poweroff -f",
651
651
  "fi",
652
652
  `(
@@ -708,7 +708,7 @@ function runQemuCommand(args) {
708
708
  try {
709
709
  child = spawn(args.qemuBinary, args.args, {
710
710
  cwd: args.runDir,
711
- env: allowlistedChildEnv({ "0SEC_VERIFY": "1" }),
711
+ env: allowlistedChildEnv({ "ZERO_VERIFY": "1" }),
712
712
  stdio: ["ignore", "pipe", "pipe"],
713
713
  detached: nodePlatform !== "win32"
714
714
  });
@@ -914,7 +914,7 @@ async function runDeterministicReplay(finding, opts = {}) {
914
914
  const runner = opts.runner ?? new LocalShellRunner();
915
915
  const stepTimeoutMs = opts.stepTimeoutMs ?? DEFAULT_STEP_TIMEOUT_MS;
916
916
  const engineVersion = opts.engineVersion ?? VERSION;
917
- const runDir = opts.runDir ?? mkdtempSync(join(tmpdir(), "0sec-replay-"));
917
+ const runDir = opts.runDir ?? mkdtempSync(join(tmpdir(), "0-replay-"));
918
918
  mkdirSync(runDir, { recursive: true });
919
919
  const startedAt = /* @__PURE__ */ new Date();
920
920
  const startMs = Date.now();
@@ -1,9 +1,9 @@
1
1
  #!/usr/bin/env node
2
- import { createRequire as __0secCreateRequire } from "node:module";
3
- const require = __0secCreateRequire(import.meta.url);
2
+ import { createRequire as __0CreateRequire } from "node:module";
3
+ const require = __0CreateRequire(import.meta.url);
4
4
  import {
5
5
  homeStateDir
6
- } from "./chunk-6L26OBWI.js";
6
+ } from "./chunk-PC6RCKQV.js";
7
7
 
8
8
  // packages/core/dist/cve/artifact-scraper.js
9
9
  import { createHash } from "node:crypto";
@@ -275,7 +275,7 @@ async function fetchGhsa(cveId, plumbing, githubToken, log) {
275
275
  const url = `https://api.github.com/advisories?cve_id=${encodeURIComponent(cveId)}`;
276
276
  const headers = {
277
277
  accept: "application/vnd.github+json",
278
- "user-agent": "0sec-cve-scraper"
278
+ "user-agent": "0-cve-scraper"
279
279
  };
280
280
  if (githubToken)
281
281
  headers.authorization = `Bearer ${githubToken}`;
@@ -533,7 +533,7 @@ function clamp01(n) {
533
533
  async function fetchGithubPocSearch(cveId, plumbing, githubToken, log) {
534
534
  const headers = {
535
535
  accept: "application/vnd.github+json",
536
- "user-agent": "0sec-cve-scraper"
536
+ "user-agent": "0-cve-scraper"
537
537
  };
538
538
  if (githubToken)
539
539
  headers.authorization = `Bearer ${githubToken}`;