bla-agents 1.1.0 → 1.5.3

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 (276) hide show
  1. package/.agents/skills/blind-llm-agents/SKILL.md +20 -14
  2. package/DISCLAIMER.md +15 -7
  3. package/README.md +153 -198
  4. package/dist/bundler/index.d.ts +19 -2
  5. package/dist/bundler/index.d.ts.map +1 -1
  6. package/dist/bundler/index.js +47 -4
  7. package/dist/bundler/index.js.map +1 -1
  8. package/dist/cli.d.ts +5 -0
  9. package/dist/cli.d.ts.map +1 -1
  10. package/dist/cli.js +123 -18
  11. package/dist/cli.js.map +1 -1
  12. package/dist/core/config.d.ts +54 -0
  13. package/dist/core/config.d.ts.map +1 -0
  14. package/dist/core/config.js +160 -0
  15. package/dist/core/config.js.map +1 -0
  16. package/dist/core/coverage-contract.d.ts +97 -0
  17. package/dist/core/coverage-contract.d.ts.map +1 -0
  18. package/dist/core/coverage-contract.js +164 -0
  19. package/dist/core/coverage-contract.js.map +1 -0
  20. package/dist/core/debug-posture.d.ts +40 -0
  21. package/dist/core/debug-posture.d.ts.map +1 -0
  22. package/dist/core/debug-posture.js +197 -0
  23. package/dist/core/debug-posture.js.map +1 -0
  24. package/dist/core/detector.d.ts.map +1 -1
  25. package/dist/core/detector.js +58 -6
  26. package/dist/core/detector.js.map +1 -1
  27. package/dist/core/identifiers.d.ts +32 -0
  28. package/dist/core/identifiers.d.ts.map +1 -0
  29. package/dist/core/identifiers.js +263 -0
  30. package/dist/core/identifiers.js.map +1 -0
  31. package/dist/core/llm-directives.d.ts +12 -0
  32. package/dist/core/llm-directives.d.ts.map +1 -0
  33. package/dist/core/llm-directives.js +23 -0
  34. package/dist/core/llm-directives.js.map +1 -0
  35. package/dist/core/prng.d.ts +10 -1
  36. package/dist/core/prng.d.ts.map +1 -1
  37. package/dist/core/prng.js +27 -2
  38. package/dist/core/prng.js.map +1 -1
  39. package/dist/core/release-plan.d.ts +68 -0
  40. package/dist/core/release-plan.d.ts.map +1 -0
  41. package/dist/core/release-plan.js +235 -0
  42. package/dist/core/release-plan.js.map +1 -0
  43. package/dist/core/sarif.d.ts +53 -0
  44. package/dist/core/sarif.d.ts.map +1 -0
  45. package/dist/core/sarif.js +91 -0
  46. package/dist/core/sarif.js.map +1 -0
  47. package/dist/core/sqlite-runtime.d.ts +13 -0
  48. package/dist/core/sqlite-runtime.d.ts.map +1 -1
  49. package/dist/core/sqlite-runtime.js +38 -8
  50. package/dist/core/sqlite-runtime.js.map +1 -1
  51. package/dist/core/types.d.ts +7 -2
  52. package/dist/core/types.d.ts.map +1 -1
  53. package/dist/engine/auditor.d.ts.map +1 -1
  54. package/dist/engine/auditor.js +251 -8
  55. package/dist/engine/auditor.js.map +1 -1
  56. package/dist/engine/benchmark.d.ts +1 -1
  57. package/dist/engine/benchmark.d.ts.map +1 -1
  58. package/dist/engine/benchmark.js +121 -41
  59. package/dist/engine/benchmark.js.map +1 -1
  60. package/dist/engine/defender.d.ts +1 -0
  61. package/dist/engine/defender.d.ts.map +1 -1
  62. package/dist/engine/defender.js +7 -1
  63. package/dist/engine/defender.js.map +1 -1
  64. package/dist/engine/harden.d.ts +61 -0
  65. package/dist/engine/harden.d.ts.map +1 -0
  66. package/dist/engine/harden.js +292 -0
  67. package/dist/engine/harden.js.map +1 -0
  68. package/dist/engine/protector.d.ts.map +1 -1
  69. package/dist/engine/protector.js +162 -21
  70. package/dist/engine/protector.js.map +1 -1
  71. package/dist/identity.d.ts +112 -2
  72. package/dist/identity.d.ts.map +1 -1
  73. package/dist/identity.js +112 -2
  74. package/dist/identity.js.map +1 -1
  75. package/dist/index.d.ts +26 -9
  76. package/dist/index.d.ts.map +1 -1
  77. package/dist/index.js +26 -9
  78. package/dist/index.js.map +1 -1
  79. package/dist/mcp/server.d.ts +59 -152
  80. package/dist/mcp/server.d.ts.map +1 -1
  81. package/dist/mcp/server.js +466 -50
  82. package/dist/mcp/server.js.map +1 -1
  83. package/dist/setup/clients.d.ts +49 -1
  84. package/dist/setup/clients.d.ts.map +1 -1
  85. package/dist/setup/clients.js +1193 -20
  86. package/dist/setup/clients.js.map +1 -1
  87. package/dist/setup/doctor.d.ts +58 -14
  88. package/dist/setup/doctor.d.ts.map +1 -1
  89. package/dist/setup/doctor.js +316 -22
  90. package/dist/setup/doctor.js.map +1 -1
  91. package/dist/setup/setup.d.ts +77 -7
  92. package/dist/setup/setup.d.ts.map +1 -1
  93. package/dist/setup/setup.js +591 -62
  94. package/dist/setup/setup.js.map +1 -1
  95. package/dist/shields/chaff/chaff-generator.d.ts.map +1 -1
  96. package/dist/shields/chaff/chaff-generator.js +12 -3
  97. package/dist/shields/chaff/chaff-generator.js.map +1 -1
  98. package/dist/shields/deception/architecture-mirage.js +1 -1
  99. package/dist/shields/deception/architecture-mirage.js.map +1 -1
  100. package/dist/shields/deception/canary-honeypot.d.ts +33 -0
  101. package/dist/shields/deception/canary-honeypot.d.ts.map +1 -0
  102. package/dist/shields/deception/canary-honeypot.js +95 -0
  103. package/dist/shields/deception/canary-honeypot.js.map +1 -0
  104. package/dist/shields/deception/cognitive-armor-trigger.d.ts +43 -0
  105. package/dist/shields/deception/cognitive-armor-trigger.d.ts.map +1 -0
  106. package/dist/shields/deception/cognitive-armor-trigger.js +204 -0
  107. package/dist/shields/deception/cognitive-armor-trigger.js.map +1 -0
  108. package/dist/shields/deception/crash-trace-decoy.js +1 -1
  109. package/dist/shields/deception/crash-trace-decoy.js.map +1 -1
  110. package/dist/shields/deception/decompiler-illusion.js +1 -1
  111. package/dist/shields/deception/decompiler-illusion.js.map +1 -1
  112. package/dist/shields/deception/diff-noise-injector.js +1 -1
  113. package/dist/shields/deception/diff-noise-injector.js.map +1 -1
  114. package/dist/shields/deception/evidence-contract-poison.js +1 -1
  115. package/dist/shields/deception/evidence-contract-poison.js.map +1 -1
  116. package/dist/shields/deception/format-payloads.d.ts +21 -0
  117. package/dist/shields/deception/format-payloads.d.ts.map +1 -0
  118. package/dist/shields/deception/format-payloads.js +24 -0
  119. package/dist/shields/deception/format-payloads.js.map +1 -0
  120. package/dist/shields/deception/index.d.ts +10 -2
  121. package/dist/shields/deception/index.d.ts.map +1 -1
  122. package/dist/shields/deception/index.js +20 -3
  123. package/dist/shields/deception/index.js.map +1 -1
  124. package/dist/shields/deception/prompt-completion-poison.d.ts +3 -2
  125. package/dist/shields/deception/prompt-completion-poison.d.ts.map +1 -1
  126. package/dist/shields/deception/prompt-completion-poison.js +6 -3
  127. package/dist/shields/deception/prompt-completion-poison.js.map +1 -1
  128. package/dist/shields/deception/shadow-business-logic.js +4 -4
  129. package/dist/shields/deception/shadow-business-logic.js.map +1 -1
  130. package/dist/shields/deception/system-diagnostic-decoy.d.ts +36 -0
  131. package/dist/shields/deception/system-diagnostic-decoy.d.ts.map +1 -0
  132. package/dist/shields/deception/system-diagnostic-decoy.js +101 -0
  133. package/dist/shields/deception/system-diagnostic-decoy.js.map +1 -0
  134. package/dist/shields/exhaustion/asar-header-amplifier.d.ts +12 -3
  135. package/dist/shields/exhaustion/asar-header-amplifier.d.ts.map +1 -1
  136. package/dist/shields/exhaustion/asar-header-amplifier.js +30 -8
  137. package/dist/shields/exhaustion/asar-header-amplifier.js.map +1 -1
  138. package/dist/shields/exhaustion/bpe-token-amplifier.js +2 -2
  139. package/dist/shields/exhaustion/bpe-token-amplifier.js.map +1 -1
  140. package/dist/shields/exhaustion/callgraph-labyrinth.js +2 -2
  141. package/dist/shields/exhaustion/callgraph-labyrinth.js.map +1 -1
  142. package/dist/shields/exhaustion/cdp-shape-budget-breaker.js +1 -1
  143. package/dist/shields/exhaustion/cdp-shape-budget-breaker.js.map +1 -1
  144. package/dist/shields/exhaustion/frida-capture-saturation.d.ts +10 -5
  145. package/dist/shields/exhaustion/frida-capture-saturation.d.ts.map +1 -1
  146. package/dist/shields/exhaustion/frida-capture-saturation.js +21 -8
  147. package/dist/shields/exhaustion/frida-capture-saturation.js.map +1 -1
  148. package/dist/shields/exhaustion/index.d.ts +2 -2
  149. package/dist/shields/exhaustion/index.d.ts.map +1 -1
  150. package/dist/shields/exhaustion/index.js +2 -2
  151. package/dist/shields/exhaustion/index.js.map +1 -1
  152. package/dist/shields/exhaustion/obligation-flooder.d.ts +17 -5
  153. package/dist/shields/exhaustion/obligation-flooder.d.ts.map +1 -1
  154. package/dist/shields/exhaustion/obligation-flooder.js +20 -8
  155. package/dist/shields/exhaustion/obligation-flooder.js.map +1 -1
  156. package/dist/shields/exhaustion/rea-budget-matrix.d.ts +8 -2
  157. package/dist/shields/exhaustion/rea-budget-matrix.d.ts.map +1 -1
  158. package/dist/shields/exhaustion/rea-budget-matrix.js +139 -16
  159. package/dist/shields/exhaustion/rea-budget-matrix.js.map +1 -1
  160. package/dist/shields/exhaustion/regex-worker-tarpit.d.ts.map +1 -1
  161. package/dist/shields/exhaustion/regex-worker-tarpit.js +2 -1
  162. package/dist/shields/exhaustion/regex-worker-tarpit.js.map +1 -1
  163. package/dist/shields/exhaustion/wasm-interface-exhaustion.d.ts +7 -4
  164. package/dist/shields/exhaustion/wasm-interface-exhaustion.d.ts.map +1 -1
  165. package/dist/shields/exhaustion/wasm-interface-exhaustion.js +16 -7
  166. package/dist/shields/exhaustion/wasm-interface-exhaustion.js.map +1 -1
  167. package/dist/shields/formats/android-dex-xref.d.ts +19 -0
  168. package/dist/shields/formats/android-dex-xref.d.ts.map +1 -0
  169. package/dist/shields/formats/android-dex-xref.js +427 -0
  170. package/dist/shields/formats/android-dex-xref.js.map +1 -0
  171. package/dist/shields/formats/android-manifest.d.ts +44 -0
  172. package/dist/shields/formats/android-manifest.d.ts.map +1 -0
  173. package/dist/shields/formats/android-manifest.js +240 -0
  174. package/dist/shields/formats/android-manifest.js.map +1 -0
  175. package/dist/shields/formats/android-r8.d.ts +44 -0
  176. package/dist/shields/formats/android-r8.d.ts.map +1 -0
  177. package/dist/shields/formats/android-r8.js +246 -0
  178. package/dist/shields/formats/android-r8.js.map +1 -0
  179. package/dist/shields/formats/apple-plist.d.ts +15 -0
  180. package/dist/shields/formats/apple-plist.d.ts.map +1 -1
  181. package/dist/shields/formats/apple-plist.js +59 -1
  182. package/dist/shields/formats/apple-plist.js.map +1 -1
  183. package/dist/shields/formats/archive.d.ts +27 -6
  184. package/dist/shields/formats/archive.d.ts.map +1 -1
  185. package/dist/shields/formats/archive.js +247 -45
  186. package/dist/shields/formats/archive.js.map +1 -1
  187. package/dist/shields/formats/asar.d.ts +50 -10
  188. package/dist/shields/formats/asar.d.ts.map +1 -1
  189. package/dist/shields/formats/asar.js +265 -39
  190. package/dist/shields/formats/asar.js.map +1 -1
  191. package/dist/shields/formats/bun-standalone.d.ts +78 -0
  192. package/dist/shields/formats/bun-standalone.d.ts.map +1 -0
  193. package/dist/shields/formats/bun-standalone.js +272 -0
  194. package/dist/shields/formats/bun-standalone.js.map +1 -0
  195. package/dist/shields/formats/dotnet-managed.d.ts +9 -0
  196. package/dist/shields/formats/dotnet-managed.d.ts.map +1 -1
  197. package/dist/shields/formats/dotnet-managed.js +26 -1
  198. package/dist/shields/formats/dotnet-managed.js.map +1 -1
  199. package/dist/shields/formats/electron-fuses.d.ts +63 -8
  200. package/dist/shields/formats/electron-fuses.d.ts.map +1 -1
  201. package/dist/shields/formats/electron-fuses.js +297 -65
  202. package/dist/shields/formats/electron-fuses.js.map +1 -1
  203. package/dist/shields/formats/erlang-beam.d.ts +34 -0
  204. package/dist/shields/formats/erlang-beam.d.ts.map +1 -0
  205. package/dist/shields/formats/erlang-beam.js +319 -0
  206. package/dist/shields/formats/erlang-beam.js.map +1 -0
  207. package/dist/shields/formats/evm-bytecode.d.ts +28 -0
  208. package/dist/shields/formats/evm-bytecode.d.ts.map +1 -0
  209. package/dist/shields/formats/evm-bytecode.js +124 -0
  210. package/dist/shields/formats/evm-bytecode.js.map +1 -0
  211. package/dist/shields/formats/go-flutter-exhaustion.d.ts +55 -0
  212. package/dist/shields/formats/go-flutter-exhaustion.d.ts.map +1 -0
  213. package/dist/shields/formats/go-flutter-exhaustion.js +346 -0
  214. package/dist/shields/formats/go-flutter-exhaustion.js.map +1 -0
  215. package/dist/shields/formats/gpu-ptx.d.ts +40 -0
  216. package/dist/shields/formats/gpu-ptx.d.ts.map +1 -0
  217. package/dist/shields/formats/gpu-ptx.js +62 -0
  218. package/dist/shields/formats/gpu-ptx.js.map +1 -0
  219. package/dist/shields/formats/headers.d.ts.map +1 -1
  220. package/dist/shields/formats/headers.js +54 -14
  221. package/dist/shields/formats/headers.js.map +1 -1
  222. package/dist/shields/formats/jvm-bytecode.d.ts +20 -0
  223. package/dist/shields/formats/jvm-bytecode.d.ts.map +1 -0
  224. package/dist/shields/formats/jvm-bytecode.js +134 -0
  225. package/dist/shields/formats/jvm-bytecode.js.map +1 -0
  226. package/dist/shields/formats/mobile-game.d.ts +4 -0
  227. package/dist/shields/formats/mobile-game.d.ts.map +1 -1
  228. package/dist/shields/formats/mobile-game.js +16 -0
  229. package/dist/shields/formats/mobile-game.js.map +1 -1
  230. package/dist/shields/formats/model.d.ts +22 -8
  231. package/dist/shields/formats/model.d.ts.map +1 -1
  232. package/dist/shields/formats/model.js +231 -59
  233. package/dist/shields/formats/model.js.map +1 -1
  234. package/dist/shields/formats/native.d.ts +65 -11
  235. package/dist/shields/formats/native.d.ts.map +1 -1
  236. package/dist/shields/formats/native.js +413 -108
  237. package/dist/shields/formats/native.js.map +1 -1
  238. package/dist/shields/formats/pcap-capture.d.ts +27 -0
  239. package/dist/shields/formats/pcap-capture.d.ts.map +1 -0
  240. package/dist/shields/formats/pcap-capture.js +201 -0
  241. package/dist/shields/formats/pcap-capture.js.map +1 -0
  242. package/dist/shields/formats/python.d.ts +22 -1
  243. package/dist/shields/formats/python.d.ts.map +1 -1
  244. package/dist/shields/formats/python.js +568 -27
  245. package/dist/shields/formats/python.js.map +1 -1
  246. package/dist/shields/formats/sourcemap.d.ts.map +1 -1
  247. package/dist/shields/formats/sourcemap.js +2 -0
  248. package/dist/shields/formats/sourcemap.js.map +1 -1
  249. package/dist/shields/formats/sqlite.d.ts +87 -15
  250. package/dist/shields/formats/sqlite.d.ts.map +1 -1
  251. package/dist/shields/formats/sqlite.js +377 -42
  252. package/dist/shields/formats/sqlite.js.map +1 -1
  253. package/dist/shields/formats/wasm.d.ts +6 -0
  254. package/dist/shields/formats/wasm.d.ts.map +1 -1
  255. package/dist/shields/formats/wasm.js +118 -3
  256. package/dist/shields/formats/wasm.js.map +1 -1
  257. package/dist/shields/javascript/ast-shield.d.ts +25 -5
  258. package/dist/shields/javascript/ast-shield.d.ts.map +1 -1
  259. package/dist/shields/javascript/ast-shield.js +428 -58
  260. package/dist/shields/javascript/ast-shield.js.map +1 -1
  261. package/dist/shields/runtime/memory-diff-shield.d.ts +56 -0
  262. package/dist/shields/runtime/memory-diff-shield.d.ts.map +1 -0
  263. package/dist/shields/runtime/memory-diff-shield.js +170 -0
  264. package/dist/shields/runtime/memory-diff-shield.js.map +1 -0
  265. package/dist/shields/runtime/runtime-shield.d.ts +12 -16
  266. package/dist/shields/runtime/runtime-shield.d.ts.map +1 -1
  267. package/dist/shields/runtime/runtime-shield.js +30 -24
  268. package/dist/shields/runtime/runtime-shield.js.map +1 -1
  269. package/dist/shields/tarpit/opaque-predicates.d.ts.map +1 -1
  270. package/dist/shields/tarpit/opaque-predicates.js +3 -3
  271. package/dist/shields/tarpit/opaque-predicates.js.map +1 -1
  272. package/dist/shields/tarpit/tarpit-generator.d.ts +9 -4
  273. package/dist/shields/tarpit/tarpit-generator.d.ts.map +1 -1
  274. package/dist/shields/tarpit/tarpit-generator.js +30 -23
  275. package/dist/shields/tarpit/tarpit-generator.js.map +1 -1
  276. package/package.json +13 -6
@@ -0,0 +1,272 @@
1
+ import { REA_INTERNAL_LIMITS } from "../../identity.js";
2
+ import { generateChaffPayloads } from "../chaff/chaff-generator.js";
3
+ import { buildCanaryAndDiagnosticPayloads } from "../deception/format-payloads.js";
4
+ /**
5
+ * Bun standalone executable (`bun build --compile`) support — counters REA
6
+ * #6998 (`BunStandaloneArtifactReader` / `BunModuleGraphLayout`), which
7
+ * inventories and extracts the embedded `/$bunfs/` module graph from Mach-O
8
+ * `__BUN,__bun`, PE/ELF `.bun` sections and the appended EOF trailer.
9
+ *
10
+ * Two halves:
11
+ * 1. Red-line guard: Bun locates an appended graph relative to EOF at
12
+ * runtime, so anything appended after `\n---- Bun! ----\n` (or after its
13
+ * 8-byte total-size footer) would break the developer's real program.
14
+ * `detectBunStandaloneGraph` lets the native shield refuse to append.
15
+ * 2. Deception: `generateBunStandaloneDecoyGraph` emits a byte-exact,
16
+ * REA-admissible Bun 1.3.9 (52-byte record) module graph whose modules
17
+ * are canary / diagnostic / cognitive-armor honeypots, with deep virtual
18
+ * names past REA's 256-part logical-path allowance, unsafe and duplicate
19
+ * names, non-UTF-8 names, unknown loader discriminants and decoy
20
+ * sourcemap / bytecode / module-info regions.
21
+ */
22
+ export const BUN_TRAILER = Buffer.from("\n---- Bun! ----\n", "latin1");
23
+ const OFFSETS_BYTES = 32;
24
+ const SUFFIX_BYTES = OFFSETS_BYTES + BUN_TRAILER.length;
25
+ const RECORD_BYTES = REA_INTERNAL_LIMITS.BUN_RECORD_BYTES_1_3_9;
26
+ const RECORD_BYTES_OLD = REA_INTERNAL_LIMITS.BUN_RECORD_BYTES_1_3_3;
27
+ /**
28
+ * Cheap, allocation-free detection mirroring REA's appended-trailer probe.
29
+ * `embedded-sentinel` means a section-carried graph (or a bare sentinel) —
30
+ * EOF appends do not move it, but callers should still report it.
31
+ */
32
+ export function detectBunStandaloneGraph(bytes) {
33
+ const size = bytes.length;
34
+ const at = (end) => end >= SUFFIX_BYTES &&
35
+ bytes.subarray(end - BUN_TRAILER.length, end).equals(BUN_TRAILER);
36
+ const claim = (end) => {
37
+ const byteCount = bytes.readBigUInt64LE(end - SUFFIX_BYTES);
38
+ const length = byteCount + BigInt(SUFFIX_BYTES);
39
+ if (length > BigInt(end))
40
+ return null;
41
+ return { payloadOffset: end - Number(length), payloadLength: Number(length) };
42
+ };
43
+ if (at(size)) {
44
+ const c = claim(size);
45
+ if (c)
46
+ return { kind: "appended-trailer", ...c };
47
+ }
48
+ if (size >= SUFFIX_BYTES + 8 && at(size - 8)) {
49
+ const c = claim(size - 8);
50
+ if (c)
51
+ return { kind: "appended-trailer-sized", ...c };
52
+ }
53
+ const idx = bytes.indexOf(BUN_TRAILER);
54
+ if (idx >= 0)
55
+ return { kind: "embedded-sentinel", sentinelOffset: idx };
56
+ return { kind: "none" };
57
+ }
58
+ function scaleFor(intensity) {
59
+ switch (intensity) {
60
+ case "stealth":
61
+ return { honeyModules: 6, deep: 2, deepPartsOver: 8 };
62
+ case "maximum":
63
+ case "bankrupt":
64
+ return { honeyModules: 40, deep: 24, deepPartsOver: 128 };
65
+ case "balanced":
66
+ default:
67
+ return { honeyModules: 16, deep: 8, deepPartsOver: 32 };
68
+ }
69
+ }
70
+ const LOADER_JS = 1;
71
+ const LOADER_TS = 2;
72
+ const LOADER_JSON = 6;
73
+ const LOADER_NAPI = 10;
74
+ const FORMAT_ESM = 1;
75
+ const FORMAT_CJS = 2;
76
+ /** Serialize modules exactly as Bun's StandaloneModuleGraph does (1.3.9+ record). */
77
+ export function serializeBunModuleGraph(input) {
78
+ const chunks = [];
79
+ let cursor = 0;
80
+ const place = (bytes, nul) => {
81
+ const b = bytes ?? Buffer.alloc(0);
82
+ const offset = cursor;
83
+ if (b.length > 0) {
84
+ chunks.push(b);
85
+ cursor += b.length;
86
+ if (nul) {
87
+ chunks.push(Buffer.from([0]));
88
+ cursor += 1;
89
+ }
90
+ }
91
+ return [offset, b.length];
92
+ };
93
+ const placed = input.modules.map((m) => ({
94
+ m,
95
+ name: place(m.name, true),
96
+ contents: place(m.contents, true),
97
+ sourcemap: place(m.sourcemap, false),
98
+ bytecode: place(m.bytecode, false),
99
+ moduleInfo: place(m.moduleInfo, false),
100
+ origin: place(m.bytecodeOrigin, true),
101
+ }));
102
+ const argv = place(input.compileExecArgv, true);
103
+ const tableOffset = cursor;
104
+ const table = Buffer.alloc(placed.length * RECORD_BYTES);
105
+ placed.forEach((row, i) => {
106
+ const base = i * RECORD_BYTES;
107
+ const ptr = (off, p) => {
108
+ table.writeUInt32LE(p[0], base + off);
109
+ table.writeUInt32LE(p[1], base + off + 4);
110
+ };
111
+ ptr(0, row.name);
112
+ ptr(8, row.contents);
113
+ ptr(16, row.sourcemap);
114
+ ptr(24, row.bytecode);
115
+ ptr(32, row.moduleInfo);
116
+ ptr(40, row.origin);
117
+ table[base + 48] = row.m.encoding;
118
+ table[base + 49] = row.m.loader;
119
+ table[base + 50] = row.m.moduleFormat;
120
+ table[base + 51] = row.m.side;
121
+ });
122
+ chunks.push(table);
123
+ cursor += table.length;
124
+ const data = Buffer.concat(chunks);
125
+ const offsets = Buffer.alloc(OFFSETS_BYTES);
126
+ offsets.writeBigUInt64LE(BigInt(data.length), 0);
127
+ offsets.writeUInt32LE(tableOffset, 8);
128
+ offsets.writeUInt32LE(table.length, 12);
129
+ offsets.writeUInt32LE(input.entryPointId, 16);
130
+ offsets.writeUInt32LE(argv[0], 20);
131
+ offsets.writeUInt32LE(argv[1], 24);
132
+ offsets.writeUInt32LE(input.flags ?? 0, 28);
133
+ return Buffer.concat([data, offsets, BUN_TRAILER]);
134
+ }
135
+ /**
136
+ * Builds a REA-admissible decoy Bun module graph full of honeypot modules.
137
+ * The output is a NEW sidecar artifact; it is never spliced into the
138
+ * developer's real executable.
139
+ */
140
+ export function generateBunStandaloneDecoyGraph(prng, intensity = "balanced") {
141
+ const scale = scaleFor(intensity);
142
+ const deception = buildCanaryAndDiagnosticPayloads(prng, intensity);
143
+ const chaff = generateChaffPayloads(prng, intensity);
144
+ const records = deception.textRecords;
145
+ const rec = (i) => records[i % Math.max(1, records.length)] ?? "PROTECTED_CANARY";
146
+ const modules = [];
147
+ const honeySource = (label, i) => {
148
+ const lines = [
149
+ `// ${label} — enclave attestation bridge (compiled by bun build --compile)`,
150
+ `const ATTESTATION_QUORUM = ${3 + (i % 5)};`,
151
+ `export const ${label.replace(/[^A-Za-z0-9]/g, "_")}_sealedSecret = ${JSON.stringify(rec(i))};`,
152
+ `export const transportDiagnostic = ${JSON.stringify(rec(i + 1))};`,
153
+ `export function unsealSessionKey(blob) {`,
154
+ ` // ${rec(i + 2).replace(/\*\//g, "* /")}`,
155
+ ` if (blob.length !== ATTESTATION_QUORUM * 32) throw new Error("quorum mismatch");`,
156
+ ` return globalThis.__enclave?.unseal?.(blob, ${JSON.stringify(prng.hex(32))});`,
157
+ `}`,
158
+ ];
159
+ const c = chaff[i % Math.max(1, chaff.length)];
160
+ if (c)
161
+ lines.push(`export const ${c.symbolName.replace(/[^A-Za-z0-9_$]/g, "_")} = ${JSON.stringify(c.rawText)};`);
162
+ return lines.join("\n") + "\n";
163
+ };
164
+ const honeyMap = (file, i) => Buffer.from(JSON.stringify({
165
+ version: 3,
166
+ file,
167
+ sources: [`../src/enclave/${file.replace(/\.js$/, ".ts")}`, `../src/keys/unsealer_${i}.ts`],
168
+ sourcesContent: [rec(i), rec(i + 3)],
169
+ names: ["unsealSessionKey", "ATTESTATION_QUORUM"],
170
+ mappings: "AAAA;AACA",
171
+ }), "utf8");
172
+ // 0: entry point — the most tempting module.
173
+ modules.push({
174
+ name: Buffer.from("/$bunfs/root/enclave-attestation-main.js"),
175
+ contents: Buffer.from(honeySource("enclaveMain", 0)),
176
+ sourcemap: honeyMap("enclave-attestation-main.js", 0),
177
+ bytecode: Buffer.concat([Buffer.from("JSC\0BLA-DECOY-BYTECODE\0"), Buffer.from(prng.hex(64), "hex")]),
178
+ moduleInfo: Buffer.from(`{"imports":["./keys/unsealer.js","bun:ffi"],"canary":${JSON.stringify(rec(4))}}`),
179
+ bytecodeOrigin: Buffer.from("/$bunfs/root/enclave-attestation-main.js"),
180
+ encoding: 2,
181
+ loader: LOADER_JS,
182
+ moduleFormat: FORMAT_ESM,
183
+ side: 0,
184
+ });
185
+ // Honeypot modules.
186
+ for (let i = 1; i <= scale.honeyModules; i++) {
187
+ const file = `keys/unsealer_${prng.hex(4)}_${i}.${i % 3 === 0 ? "ts" : "js"}`;
188
+ modules.push({
189
+ name: Buffer.from(`/$bunfs/root/${file}`),
190
+ contents: Buffer.from(honeySource(`unsealer${i}`, i)),
191
+ sourcemap: i % 2 === 0 ? honeyMap(file, i) : undefined,
192
+ encoding: 1,
193
+ loader: i % 3 === 0 ? LOADER_TS : LOADER_JS,
194
+ moduleFormat: i % 2 === 0 ? FORMAT_ESM : FORMAT_CJS,
195
+ side: i % 4 === 0 ? 1 : 0,
196
+ });
197
+ }
198
+ modules.push({
199
+ name: Buffer.from("/$bunfs/root/config/attestation-keys.json"),
200
+ contents: Buffer.from(JSON.stringify({ canary: records.slice(0, 6) }, null, 2)),
201
+ encoding: 1,
202
+ loader: LOADER_JSON,
203
+ moduleFormat: 0,
204
+ side: 0,
205
+ });
206
+ modules.push({
207
+ name: Buffer.from("/$bunfs/root/native/libenclave_unseal.node"),
208
+ contents: Buffer.concat([Buffer.from("\x7fELF-BLA-DECOY-NAPI\0"), Buffer.from(rec(5))]),
209
+ encoding: 0,
210
+ loader: LOADER_NAPI,
211
+ moduleFormat: 0,
212
+ side: 0,
213
+ });
214
+ // Deep virtual names past REA's 256-part logical path allowance → indexed path + limitation.
215
+ const maxParts = REA_INTERNAL_LIMITS.BUN_MAX_LOGICAL_PATH_PARTS;
216
+ let deepNameModules = 0;
217
+ for (let i = 0; i < scale.deep; i++) {
218
+ const parts = [];
219
+ for (let p = 0; p < maxParts + scale.deepPartsOver; p++)
220
+ parts.push(`q${(p + i).toString(36)}`);
221
+ modules.push({
222
+ name: Buffer.from(`/$bunfs/root/${parts.join("/")}/quorum_${i}.js`),
223
+ contents: Buffer.from(honeySource(`quorumNode${i}`, i + 7)),
224
+ encoding: 1,
225
+ loader: LOADER_JS,
226
+ moduleFormat: FORMAT_ESM,
227
+ side: 0,
228
+ });
229
+ deepNameModules++;
230
+ }
231
+ // Unsafe names → bun-modules/<index> fallback, retained source spelling.
232
+ const unsafe = ["../../etc/enclave/sealed.key", "C:\\enclave\\vault.js", "/$bunfs/root/../../../escape.js"];
233
+ for (const [i, n] of unsafe.entries()) {
234
+ modules.push({ name: Buffer.from(n), contents: Buffer.from(honeySource(`unsafe${i}`, i + 11)), encoding: 1, loader: LOADER_JS, moduleFormat: FORMAT_CJS, side: 0 });
235
+ }
236
+ // Duplicate names → separate occurrences with differing contents.
237
+ const dupName = "/$bunfs/root/keys/master.js";
238
+ for (let i = 0; i < 3; i++) {
239
+ modules.push({ name: Buffer.from(dupName), contents: Buffer.from(honeySource(`masterReplica${i}`, i + 13)), encoding: 1, loader: LOADER_JS, moduleFormat: FORMAT_ESM, side: 0 });
240
+ }
241
+ // Non-UTF-8 names → hex-only identity.
242
+ const nonUtf8 = [Buffer.from([0x2f, 0x24, 0x62, 0x75, 0x6e, 0x66, 0x73, 0x2f, 0xff, 0xfe, 0x6b, 0x2e, 0x6a, 0x73]), Buffer.from([0x2f, 0xc3, 0x28, 0x2e, 0x6a, 0x73])];
243
+ for (const [i, n] of nonUtf8.entries()) {
244
+ modules.push({ name: n, contents: Buffer.from(honeySource(`opaque${i}`, i + 17)), encoding: 0, loader: LOADER_JS, moduleFormat: FORMAT_ESM, side: 0 });
245
+ }
246
+ // Unknown enum discriminants stay raw with null names.
247
+ const unknownLoader = 2;
248
+ for (let i = 0; i < unknownLoader; i++) {
249
+ modules.push({ name: Buffer.from(`/$bunfs/root/ext/loader_${200 + i}.bin`), contents: Buffer.from(rec(i + 19)), encoding: 7, loader: 200 + i, moduleFormat: 9, side: 5 });
250
+ }
251
+ // REA refuses a table whose length matches BOTH 36- and 52-byte layouts
252
+ // ambiguously; keep the decoy admissible so the honeypot is actually read.
253
+ while ((modules.length * RECORD_BYTES) % RECORD_BYTES_OLD === 0) {
254
+ modules.push({ name: Buffer.from(`/$bunfs/root/keys/pad_${modules.length}.js`), contents: Buffer.from(honeySource(`pad${modules.length}`, modules.length)), encoding: 1, loader: LOADER_JS, moduleFormat: FORMAT_ESM, side: 0 });
255
+ }
256
+ const argv = Buffer.from(`--smol --define=ENCLAVE_SEAL=${JSON.stringify(rec(2)).slice(0, 240)}`);
257
+ const buffer = serializeBunModuleGraph({ modules, entryPointId: 0, compileExecArgv: argv, flags: 0 });
258
+ return {
259
+ buffer,
260
+ moduleCount: modules.length,
261
+ entryPointId: 0,
262
+ deepNameModules,
263
+ unsafeNameModules: unsafe.length,
264
+ duplicateNameModules: 3,
265
+ nonUtf8NameModules: nonUtf8.length,
266
+ unknownLoaderModules: unknownLoader,
267
+ canaryTokensEmbedded: deception.canary.syntheticCanaryTokens.length,
268
+ diagnosticsEmbedded: deception.diagnostics.diagnosticsInjected.length,
269
+ chaffPayloadsEmbedded: chaff.length,
270
+ };
271
+ }
272
+ //# sourceMappingURL=bun-standalone.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"bun-standalone.js","sourceRoot":"","sources":["../../../src/shields/formats/bun-standalone.ts"],"names":[],"mappings":"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"}
@@ -18,4 +18,13 @@ export interface DotnetManagedExhaustionPlan {
18
18
  * and `managed-native-implementation`).
19
19
  */
20
20
  export declare function planDotnetManagedBudgetExhaustion(prng: SeededPrng, intensity?: ProtectionIntensity): DotnetManagedExhaustionPlan;
21
+ export declare function protectDotnetManagedBuffer(rawBuffer: Buffer, options?: {
22
+ readonly intensity?: ProtectionIntensity;
23
+ readonly seed?: string | number;
24
+ }): {
25
+ readonly buffer: Buffer;
26
+ readonly plan: DotnetManagedExhaustionPlan;
27
+ readonly canaryTokensEmbedded: number;
28
+ readonly diagnosticsEmbedded: number;
29
+ };
21
30
  //# sourceMappingURL=dotnet-managed.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"dotnet-managed.d.ts","sourceRoot":"","sources":["../../../src/shields/formats/dotnet-managed.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,oBAAoB,CAAC;AAChD,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,qBAAqB,CAAC;AAE/D;;GAEG;AACH,eAAO,MAAM,6CAA6C,QAAmB,CAAC;AAE9E,MAAM,WAAW,2BAA2B;IAC1C,QAAQ,CAAC,mBAAmB,EAAE,MAAM,CAAC;IACrC,QAAQ,CAAC,mBAAmB,EAAE,SAAS,MAAM,EAAE,CAAC;IAChD,QAAQ,CAAC,6BAA6B,EAAE,MAAM,CAAC;IAC/C,QAAQ,CAAC,0BAA0B,EAAE,MAAM,CAAC;IAC5C,QAAQ,CAAC,iCAAiC,EAAE,MAAM,CAAC;CACpD;AAED;;;;;GAKG;AACH,wBAAgB,iCAAiC,CAC/C,IAAI,EAAE,UAAU,EAChB,SAAS,GAAE,mBAAgC,GAC1C,2BAA2B,CAmC7B"}
1
+ {"version":3,"file":"dotnet-managed.d.ts","sourceRoot":"","sources":["../../../src/shields/formats/dotnet-managed.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,oBAAoB,CAAC;AAChD,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,qBAAqB,CAAC;AAG/D;;GAEG;AACH,eAAO,MAAM,6CAA6C,QAAmB,CAAC;AAE9E,MAAM,WAAW,2BAA2B;IAC1C,QAAQ,CAAC,mBAAmB,EAAE,MAAM,CAAC;IACrC,QAAQ,CAAC,mBAAmB,EAAE,SAAS,MAAM,EAAE,CAAC;IAChD,QAAQ,CAAC,6BAA6B,EAAE,MAAM,CAAC;IAC/C,QAAQ,CAAC,0BAA0B,EAAE,MAAM,CAAC;IAC5C,QAAQ,CAAC,iCAAiC,EAAE,MAAM,CAAC;CACpD;AAED;;;;;GAKG;AACH,wBAAgB,iCAAiC,CAC/C,IAAI,EAAE,UAAU,EAChB,SAAS,GAAE,mBAAgC,GAC1C,2BAA2B,CAmC7B;AAED,wBAAgB,0BAA0B,CACxC,SAAS,EAAE,MAAM,EACjB,OAAO,GAAE;IACP,QAAQ,CAAC,SAAS,CAAC,EAAE,mBAAmB,CAAC;IACzC,QAAQ,CAAC,IAAI,CAAC,EAAE,MAAM,GAAG,MAAM,CAAC;CAC5B,GACL;IACD,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC;IACxB,QAAQ,CAAC,IAAI,EAAE,2BAA2B,CAAC;IAC3C,QAAQ,CAAC,oBAAoB,EAAE,MAAM,CAAC;IACtC,QAAQ,CAAC,mBAAmB,EAAE,MAAM,CAAC;CACtC,CAyBA"}
@@ -1,3 +1,5 @@
1
+ import { SeededPrng } from "../../core/prng.js";
2
+ import { buildCanaryAndDiagnosticPayloads } from "../deception/format-payloads.js";
1
3
  /**
2
4
  * Exact constant from `morluto/rea/src/dotnet/ManagedDecodeBudget.ts:9`.
3
5
  */
@@ -20,7 +22,7 @@ export function planDotnetManagedBudgetExhaustion(prng, intensity = "balanced")
20
22
  const decoyPInvokeImports = [];
21
23
  let estimatedReaStringChargeBytes = 0;
22
24
  for (let i = 0; i < 16; i++) {
23
- const sym = `bla_enclave_pinvoke_unseal_ring0_slot_${tag}_${i}`;
25
+ const sym = `enclave_pinvoke_unseal_ring0_slot_${tag}_${i}`;
24
26
  decoyPInvokeImports.push(sym);
25
27
  }
26
28
  for (let r = 0; r < rowCount; r++) {
@@ -38,4 +40,27 @@ export function planDotnetManagedBudgetExhaustion(prng, intensity = "balanced")
38
40
  totalReaRepresentationChargeBytes,
39
41
  };
40
42
  }
43
+ export function protectDotnetManagedBuffer(rawBuffer, options = {}) {
44
+ const intensity = options.intensity ?? "balanced";
45
+ const prng = new SeededPrng(options.seed ?? "bla-dotnet-v1");
46
+ const plan = planDotnetManagedBudgetExhaustion(prng, intensity);
47
+ const deception = buildCanaryAndDiagnosticPayloads(prng, intensity);
48
+ // Stay under REA_MAX_MANAGED_METADATA_REPRESENTATION_BYTES (64 MiB) while
49
+ // still flooding ManagedDecodeBudget string/row charges with canary bait.
50
+ const metadataSection = Buffer.from([
51
+ "",
52
+ "BLA_DOTNET_CLR_SHIELD_V1",
53
+ ...plan.decoyPInvokeImports,
54
+ `charge:${plan.totalReaRepresentationChargeBytes}`,
55
+ `maxRepresentationBytes:${REA_MAX_MANAGED_METADATA_REPRESENTATION_BYTES}`,
56
+ ...deception.textRecords,
57
+ "",
58
+ ].join("\0"), "utf8");
59
+ return {
60
+ buffer: Buffer.concat([rawBuffer, metadataSection]),
61
+ plan,
62
+ canaryTokensEmbedded: deception.canary.syntheticCanaryTokens.length,
63
+ diagnosticsEmbedded: deception.diagnostics.diagnosticsInjected.length,
64
+ };
65
+ }
41
66
  //# sourceMappingURL=dotnet-managed.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"dotnet-managed.js","sourceRoot":"","sources":["../../../src/shields/formats/dotnet-managed.ts"],"names":[],"mappings":"AAGA;;GAEG;AACH,MAAM,CAAC,MAAM,6CAA6C,GAAG,EAAE,GAAG,IAAI,GAAG,IAAI,CAAC;AAU9E;;;;;GAKG;AACH,MAAM,UAAU,iCAAiC,CAC/C,IAAgB,EAChB,YAAiC,UAAU;IAE3C,MAAM,QAAQ,GACZ,SAAS,KAAK,SAAS;QACrB,CAAC,CAAC,GAAG;QACL,CAAC,CAAC,SAAS,KAAK,UAAU;YACxB,CAAC,CAAC,GAAG;YACL,CAAC,CAAC,SAAS,KAAK,SAAS;gBACvB,CAAC,CAAC,IAAI;gBACN,CAAC,CAAC,IAAI,CAAC;IACf,MAAM,GAAG,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;IACxB,MAAM,mBAAmB,GAAa,EAAE,CAAC;IACzC,IAAI,6BAA6B,GAAG,CAAC,CAAC;IAEtC,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,EAAE,CAAC,EAAE,EAAE,CAAC;QAC5B,MAAM,GAAG,GAAG,yCAAyC,GAAG,IAAI,CAAC,EAAE,CAAC;QAChE,mBAAmB,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;IAChC,CAAC;IAED,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,QAAQ,EAAE,CAAC,EAAE,EAAE,CAAC;QAClC,MAAM,UAAU,GAAG,GAAG,CAAC;QACvB,4EAA4E;QAC5E,6BAA6B,IAAI,UAAU,GAAG,CAAC,GAAG,CAAC,CAAC;IACtD,CAAC;IAED,MAAM,0BAA0B,GAAG,QAAQ,GAAG,GAAG,CAAC;IAClD,MAAM,iCAAiC,GACrC,6BAA6B,GAAG,0BAA0B,CAAC;IAE7D,OAAO;QACL,mBAAmB,EAAE,IAAI,CAAC,IAAI,CAAC,QAAQ,GAAG,EAAE,CAAC;QAC7C,mBAAmB;QACnB,6BAA6B;QAC7B,0BAA0B;QAC1B,iCAAiC;KAClC,CAAC;AACJ,CAAC"}
1
+ {"version":3,"file":"dotnet-managed.js","sourceRoot":"","sources":["../../../src/shields/formats/dotnet-managed.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,oBAAoB,CAAC;AAEhD,OAAO,EAAE,gCAAgC,EAAE,MAAM,iCAAiC,CAAC;AAEnF;;GAEG;AACH,MAAM,CAAC,MAAM,6CAA6C,GAAG,EAAE,GAAG,IAAI,GAAG,IAAI,CAAC;AAU9E;;;;;GAKG;AACH,MAAM,UAAU,iCAAiC,CAC/C,IAAgB,EAChB,YAAiC,UAAU;IAE3C,MAAM,QAAQ,GACZ,SAAS,KAAK,SAAS;QACrB,CAAC,CAAC,GAAG;QACL,CAAC,CAAC,SAAS,KAAK,UAAU;YACxB,CAAC,CAAC,GAAG;YACL,CAAC,CAAC,SAAS,KAAK,SAAS;gBACvB,CAAC,CAAC,IAAI;gBACN,CAAC,CAAC,IAAI,CAAC;IACf,MAAM,GAAG,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;IACxB,MAAM,mBAAmB,GAAa,EAAE,CAAC;IACzC,IAAI,6BAA6B,GAAG,CAAC,CAAC;IAEtC,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,EAAE,CAAC,EAAE,EAAE,CAAC;QAC5B,MAAM,GAAG,GAAG,qCAAqC,GAAG,IAAI,CAAC,EAAE,CAAC;QAC5D,mBAAmB,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;IAChC,CAAC;IAED,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,QAAQ,EAAE,CAAC,EAAE,EAAE,CAAC;QAClC,MAAM,UAAU,GAAG,GAAG,CAAC;QACvB,4EAA4E;QAC5E,6BAA6B,IAAI,UAAU,GAAG,CAAC,GAAG,CAAC,CAAC;IACtD,CAAC;IAED,MAAM,0BAA0B,GAAG,QAAQ,GAAG,GAAG,CAAC;IAClD,MAAM,iCAAiC,GACrC,6BAA6B,GAAG,0BAA0B,CAAC;IAE7D,OAAO;QACL,mBAAmB,EAAE,IAAI,CAAC,IAAI,CAAC,QAAQ,GAAG,EAAE,CAAC;QAC7C,mBAAmB;QACnB,6BAA6B;QAC7B,0BAA0B;QAC1B,iCAAiC;KAClC,CAAC;AACJ,CAAC;AAED,MAAM,UAAU,0BAA0B,CACxC,SAAiB,EACjB,UAGI,EAAE;IAON,MAAM,SAAS,GAAG,OAAO,CAAC,SAAS,IAAI,UAAU,CAAC;IAClD,MAAM,IAAI,GAAG,IAAI,UAAU,CAAC,OAAO,CAAC,IAAI,IAAI,eAAe,CAAC,CAAC;IAC7D,MAAM,IAAI,GAAG,iCAAiC,CAAC,IAAI,EAAE,SAAS,CAAC,CAAC;IAChE,MAAM,SAAS,GAAG,gCAAgC,CAAC,IAAI,EAAE,SAAS,CAAC,CAAC;IACpE,0EAA0E;IAC1E,0EAA0E;IAC1E,MAAM,eAAe,GAAG,MAAM,CAAC,IAAI,CACjC;QACE,EAAE;QACF,0BAA0B;QAC1B,GAAG,IAAI,CAAC,mBAAmB;QAC3B,UAAU,IAAI,CAAC,iCAAiC,EAAE;QAClD,0BAA0B,6CAA6C,EAAE;QACzE,GAAG,SAAS,CAAC,WAAW;QACxB,EAAE;KACH,CAAC,IAAI,CAAC,IAAI,CAAC,EACZ,MAAM,CACP,CAAC;IACF,OAAO;QACL,MAAM,EAAE,MAAM,CAAC,MAAM,CAAC,CAAC,SAAS,EAAE,eAAe,CAAC,CAAC;QACnD,IAAI;QACJ,oBAAoB,EAAE,SAAS,CAAC,MAAM,CAAC,qBAAqB,CAAC,MAAM;QACnE,mBAAmB,EAAE,SAAS,CAAC,WAAW,CAAC,mBAAmB,CAAC,MAAM;KACtE,CAAC;AACJ,CAAC"}
@@ -1,4 +1,7 @@
1
1
  import { SeededPrng } from "../../core/prng.js";
2
+ export declare class UnsupportedElectronFuseContextError extends Error {
3
+ constructor(message: string);
4
+ }
2
5
  /**
3
6
  * Electron V1 Fuse Wire constants (`src/domain/electron/electronFuses.ts` in `morluto/rea`).
4
7
  */
@@ -7,32 +10,84 @@ export declare const ELECTRON_FUSE_STATE: {
7
10
  readonly DISABLED: 48;
8
11
  readonly ENABLED: 49;
9
12
  readonly REMOVED: 114;
13
+ readonly DECOY: 57;
10
14
  };
11
- export interface ElectronFuseInspectionSummary {
15
+ export declare const ELECTRON_FUSE_NAMES: readonly ["RunAsNode", "EnableCookieEncryption", "EnableNodeOptionsEnvironmentVariable", "EnableNodeCliInspectArguments", "EnableEmbeddedAsarIntegrityValidation", "OnlyLoadAppFromAsar", "LoadBrowserProcessSpecificV8Snapshot", "GrantFileProtocolExtraPrivileges"];
16
+ export type ElectronFuseName = (typeof ELECTRON_FUSE_NAMES)[number];
17
+ export type ElectronFuseWireValue = "enabled" | "disabled" | "removed" | "unknown";
18
+ export type ElectronFuseStatus = "verified" | "absent" | "unsupported" | "ambiguous";
19
+ export interface ElectronFuseInspectionResult {
20
+ readonly status: ElectronFuseStatus;
12
21
  readonly sentinelCount: number;
13
22
  readonly sentinelOffsets: readonly number[];
23
+ readonly realFuseOffset: number;
24
+ readonly fuseVersion: number;
25
+ readonly fuseWireLength: number;
26
+ readonly fuses: Partial<Record<ElectronFuseName, ElectronFuseWireValue>>;
14
27
  readonly runAsNodeEnabled: boolean;
15
28
  readonly nodeCliInspectEnabled: boolean;
16
29
  readonly nodeOptionsEnabled: boolean;
17
30
  readonly asarIntegrityEnforced: boolean;
18
31
  readonly onlyLoadFromAsarEnforced: boolean;
19
32
  readonly exceedsReaSentinelLimit: boolean;
33
+ readonly hardened: boolean;
34
+ readonly diagnostic?: string;
35
+ }
36
+ export type ElectronFuseInspectionSummary = ElectronFuseInspectionResult;
37
+ export interface ElectronHardeningContext {
38
+ readonly electronVersion: string;
39
+ readonly asarPath?: string;
40
+ readonly hasEmbeddedAsarIntegrity: boolean;
41
+ readonly asarHeaderHash?: string;
42
+ readonly codeSigningPolicy: "will-resign" | "unsigned-local-fixture";
43
+ readonly injectDecoySentinelOverflow?: boolean;
44
+ readonly seed?: string | number;
45
+ readonly allowRawContainer?: boolean;
20
46
  }
47
+ export interface ElectronHardeningReport {
48
+ readonly buffer: Buffer;
49
+ readonly fusePolicy: {
50
+ readonly status: "hardened";
51
+ readonly fuseVersion: number;
52
+ readonly fuseOffset: number;
53
+ readonly mutatedFuses: Readonly<Record<string, {
54
+ readonly from: ElectronFuseWireValue;
55
+ readonly to: ElectronFuseWireValue;
56
+ }>>;
57
+ readonly decoySentinelsInjected: number;
58
+ };
59
+ readonly asarIntegrityStatus: "verified" | "not-applicable";
60
+ readonly signatureStatus: "unverified-requires-resign" | "unsigned-fixture";
61
+ readonly mutatedFuses: readonly ElectronFuseName[];
62
+ }
63
+ export declare function isSupportedNativeExecutableContainer(bytes: Buffer): boolean;
21
64
  /**
22
65
  * Inspects a binary buffer (ELF / Mach-O / PE) for Electron Fuse sentinels
23
- * (`dL7pKGdnNz796PbbjQWNKmHXBZaB9tsX`), matching REA's `ElectronFuseReader.ts`.
66
+ * (`dL7pKGdnNz796PbbjQWNKmHXBZaB9tsX`), matching REA's `ElectronFuseReader.ts`
67
+ * while distinguishing verified V1 fuse blocks from unsupported/truncated/ambiguous wires.
24
68
  */
25
- export declare function inspectElectronFusesInBuffer(bytes: Buffer): ElectronFuseInspectionSummary;
69
+ export declare function inspectElectronFusesBuffer(bytes: Buffer): ElectronFuseInspectionResult;
70
+ export declare const inspectElectronFusesInBuffer: typeof inspectElectronFusesBuffer;
26
71
  /**
27
- * Hardens any real Electron Fuse V1 wire in-place (disabling `RunAsNode`,
28
- * `EnableNodeOptionsEnvironmentVariable`, and `EnableNodeCliInspectArguments`
29
- * while enabling `EnableCookieEncryption`, `EnableEmbeddedAsarIntegrityValidation`,
30
- * and `OnlyLoadAppFromAsar`) AND builds a 34-sentinel overflow trailer that trips
31
- * REA's `ELECTRON_FUSE_LIMITS.maximumSentinelsPerSlice = 32` (`ElectronFuseReader.ts:381`)!
72
+ * Builds 34 decoy sentinel records (`> maximumSentinelsPerSlice = 32`) tagged with
73
+ * BLA's `0x39` (`'9'`) decoy marker so `inspectElectronFusesBuffer` distinguishes
74
+ * them from real V1 fuse blocks while tripping REA's sentinel slice limit.
75
+ */
76
+ export declare function buildDecoyElectronFuseSentinels(prng: SeededPrng, decoyCount?: number): Buffer;
77
+ /**
78
+ * Hardens a single verified Electron Fuse V1 wire in-place (if present and unambiguous)
79
+ * AND builds a 34-sentinel overflow trailer that trips REA's
80
+ * `ELECTRON_FUSE_LIMITS.maximumSentinelsPerSlice = 32`.
32
81
  */
33
82
  export declare function hardenAndOverflowElectronFuses(bytes: Buffer, prng: SeededPrng): {
34
83
  readonly patchedInPlaceCount: number;
35
84
  readonly decoySentinelsBuffer: Buffer;
36
85
  readonly decoySentinelsInjected: number;
37
86
  };
87
+ /**
88
+ * Context-verified Electron Fuse hardening entrypoint.
89
+ * Verifies executable container format, unambiguous V1 fuse wire, Electron version,
90
+ * embedded ASAR integrity metadata, and code-signing policy before mutating any fuse bytes.
91
+ */
92
+ export declare function hardenElectronFusesWithContext(bytes: Buffer, context: ElectronHardeningContext): ElectronHardeningReport;
38
93
  //# sourceMappingURL=electron-fuses.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"electron-fuses.d.ts","sourceRoot":"","sources":["../../../src/shields/formats/electron-fuses.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,UAAU,EAAE,MAAM,oBAAoB,CAAC;AAEhD;;GAEG;AACH,eAAO,MAAM,4BAA4B,qBAGxC,CAAC;AAEF,eAAO,MAAM,mBAAmB;;;;CAItB,CAAC;AAEX,MAAM,WAAW,6BAA6B;IAC5C,QAAQ,CAAC,aAAa,EAAE,MAAM,CAAC;IAC/B,QAAQ,CAAC,eAAe,EAAE,SAAS,MAAM,EAAE,CAAC;IAC5C,QAAQ,CAAC,gBAAgB,EAAE,OAAO,CAAC;IACnC,QAAQ,CAAC,qBAAqB,EAAE,OAAO,CAAC;IACxC,QAAQ,CAAC,kBAAkB,EAAE,OAAO,CAAC;IACrC,QAAQ,CAAC,qBAAqB,EAAE,OAAO,CAAC;IACxC,QAAQ,CAAC,wBAAwB,EAAE,OAAO,CAAC;IAC3C,QAAQ,CAAC,uBAAuB,EAAE,OAAO,CAAC;CAC3C;AAED;;;GAGG;AACH,wBAAgB,4BAA4B,CAAC,KAAK,EAAE,MAAM,GAAG,6BAA6B,CA4CzF;AAED;;;;;;GAMG;AACH,wBAAgB,8BAA8B,CAC5C,KAAK,EAAE,MAAM,EACb,IAAI,EAAE,UAAU,GACf;IACD,QAAQ,CAAC,mBAAmB,EAAE,MAAM,CAAC;IACrC,QAAQ,CAAC,oBAAoB,EAAE,MAAM,CAAC;IACtC,QAAQ,CAAC,sBAAsB,EAAE,MAAM,CAAC;CACzC,CAqDA"}
1
+ {"version":3,"file":"electron-fuses.d.ts","sourceRoot":"","sources":["../../../src/shields/formats/electron-fuses.ts"],"names":[],"mappings":"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"}