shield360 1.1.0 → 1.2.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.
Files changed (393) hide show
  1. package/README.md +330 -3
  2. package/dist/__tests__/build-info.test.js +8 -1
  3. package/dist/__tests__/build-info.test.js.map +1 -1
  4. package/dist/__tests__/code-location.test.js +1 -1
  5. package/dist/__tests__/masking.test.d.ts +1 -0
  6. package/dist/__tests__/masking.test.js +66 -0
  7. package/dist/__tests__/masking.test.js.map +1 -0
  8. package/dist/__tests__/register.e2e.test.d.ts +1 -0
  9. package/dist/__tests__/register.e2e.test.js +264 -0
  10. package/dist/__tests__/register.e2e.test.js.map +1 -0
  11. package/dist/__tests__/register.test.js +60 -0
  12. package/dist/__tests__/register.test.js.map +1 -1
  13. package/dist/agents/__tests__/agents.test.d.ts +1 -0
  14. package/dist/agents/__tests__/agents.test.js +529 -0
  15. package/dist/agents/__tests__/agents.test.js.map +1 -0
  16. package/dist/agents/index.d.ts +15 -0
  17. package/dist/agents/index.js +25 -0
  18. package/dist/agents/index.js.map +1 -0
  19. package/dist/agents/passport.d.ts +92 -0
  20. package/dist/agents/passport.js +301 -0
  21. package/dist/agents/passport.js.map +1 -0
  22. package/dist/agents/policy.d.ts +24 -0
  23. package/dist/agents/policy.js +93 -0
  24. package/dist/agents/policy.js.map +1 -0
  25. package/dist/agents/replay.d.ts +20 -0
  26. package/dist/agents/replay.js +47 -0
  27. package/dist/agents/replay.js.map +1 -0
  28. package/dist/agents/report.d.ts +30 -0
  29. package/dist/agents/report.js +93 -0
  30. package/dist/agents/report.js.map +1 -0
  31. package/dist/agents/types.d.ts +148 -0
  32. package/dist/agents/types.js +37 -0
  33. package/dist/agents/types.js.map +1 -0
  34. package/dist/agents/verifier.d.ts +33 -0
  35. package/dist/agents/verifier.js +276 -0
  36. package/dist/agents/verifier.js.map +1 -0
  37. package/dist/ai-security/__tests__/bench.test.d.ts +1 -0
  38. package/dist/ai-security/__tests__/bench.test.js +50 -0
  39. package/dist/ai-security/__tests__/bench.test.js.map +1 -0
  40. package/dist/ai-security/__tests__/checks.test.d.ts +1 -0
  41. package/dist/ai-security/__tests__/checks.test.js +248 -0
  42. package/dist/ai-security/__tests__/checks.test.js.map +1 -0
  43. package/dist/ai-security/__tests__/config.test.d.ts +1 -0
  44. package/dist/ai-security/__tests__/config.test.js +164 -0
  45. package/dist/ai-security/__tests__/config.test.js.map +1 -0
  46. package/dist/ai-security/__tests__/detection.test.d.ts +1 -0
  47. package/dist/ai-security/__tests__/detection.test.js +114 -0
  48. package/dist/ai-security/__tests__/detection.test.js.map +1 -0
  49. package/dist/ai-security/__tests__/fixtures.d.ts +8 -0
  50. package/dist/ai-security/__tests__/fixtures.js +30 -0
  51. package/dist/ai-security/__tests__/fixtures.js.map +1 -0
  52. package/dist/ai-security/__tests__/hooks.test.d.ts +1 -0
  53. package/dist/ai-security/__tests__/hooks.test.js +174 -0
  54. package/dist/ai-security/__tests__/hooks.test.js.map +1 -0
  55. package/dist/ai-security/__tests__/stream.test.d.ts +1 -0
  56. package/dist/ai-security/__tests__/stream.test.js +85 -0
  57. package/dist/ai-security/__tests__/stream.test.js.map +1 -0
  58. package/dist/ai-security/config.d.ts +94 -0
  59. package/dist/ai-security/config.js +241 -0
  60. package/dist/ai-security/config.js.map +1 -0
  61. package/dist/ai-security/context.d.ts +45 -0
  62. package/dist/ai-security/context.js +108 -0
  63. package/dist/ai-security/context.js.map +1 -0
  64. package/dist/ai-security/custom-kinds.d.ts +23 -0
  65. package/dist/ai-security/custom-kinds.js +97 -0
  66. package/dist/ai-security/custom-kinds.js.map +1 -0
  67. package/dist/ai-security/events.d.ts +77 -0
  68. package/dist/ai-security/events.js +153 -0
  69. package/dist/ai-security/events.js.map +1 -0
  70. package/dist/ai-security/hooks.d.ts +48 -0
  71. package/dist/ai-security/hooks.js +461 -0
  72. package/dist/ai-security/hooks.js.map +1 -0
  73. package/dist/ai-security/index.d.ts +209 -0
  74. package/dist/ai-security/index.js +587 -0
  75. package/dist/ai-security/index.js.map +1 -0
  76. package/dist/ai-security/injection-rules.json +1024 -0
  77. package/dist/ai-security/injection.d.ts +46 -0
  78. package/dist/ai-security/injection.js +635 -0
  79. package/dist/ai-security/injection.js.map +1 -0
  80. package/dist/ai-security/jailbreak.d.ts +38 -0
  81. package/dist/ai-security/jailbreak.js +73 -0
  82. package/dist/ai-security/jailbreak.js.map +1 -0
  83. package/dist/ai-security/limits.d.ts +84 -0
  84. package/dist/ai-security/limits.js +195 -0
  85. package/dist/ai-security/limits.js.map +1 -0
  86. package/dist/ai-security/mcp.d.ts +82 -0
  87. package/dist/ai-security/mcp.js +150 -0
  88. package/dist/ai-security/mcp.js.map +1 -0
  89. package/dist/ai-security/output.d.ts +107 -0
  90. package/dist/ai-security/output.js +390 -0
  91. package/dist/ai-security/output.js.map +1 -0
  92. package/dist/ai-security/policy.d.ts +125 -0
  93. package/dist/ai-security/policy.js +196 -0
  94. package/dist/ai-security/policy.js.map +1 -0
  95. package/dist/ai-security/rag.d.ts +70 -0
  96. package/dist/ai-security/rag.js +174 -0
  97. package/dist/ai-security/rag.js.map +1 -0
  98. package/dist/ai-security/tool-rules.json +203 -0
  99. package/dist/ai-security/tools.d.ts +46 -0
  100. package/dist/ai-security/tools.js +62 -0
  101. package/dist/ai-security/tools.js.map +1 -0
  102. package/dist/budgets/__tests__/budgets.test.d.ts +1 -0
  103. package/dist/budgets/__tests__/budgets.test.js +134 -0
  104. package/dist/budgets/__tests__/budgets.test.js.map +1 -0
  105. package/dist/budgets/auto.d.ts +25 -0
  106. package/dist/budgets/auto.js +63 -0
  107. package/dist/budgets/auto.js.map +1 -0
  108. package/dist/budgets/index.d.ts +110 -0
  109. package/dist/budgets/index.js +239 -0
  110. package/dist/budgets/index.js.map +1 -0
  111. package/dist/customer/__tests__/customer.test.d.ts +1 -0
  112. package/dist/customer/__tests__/customer.test.js +155 -0
  113. package/dist/customer/__tests__/customer.test.js.map +1 -0
  114. package/dist/customer/index.d.ts +48 -0
  115. package/dist/customer/index.js +132 -0
  116. package/dist/customer/index.js.map +1 -0
  117. package/dist/feedback/__tests__/feedback.test.d.ts +1 -0
  118. package/dist/feedback/__tests__/feedback.test.js +80 -0
  119. package/dist/feedback/__tests__/feedback.test.js.map +1 -0
  120. package/dist/feedback/index.d.ts +48 -0
  121. package/dist/feedback/index.js +97 -0
  122. package/dist/feedback/index.js.map +1 -0
  123. package/dist/flags/__tests__/flags.test.d.ts +1 -0
  124. package/dist/flags/__tests__/flags.test.js +301 -0
  125. package/dist/flags/__tests__/flags.test.js.map +1 -0
  126. package/dist/flags/client.d.ts +131 -0
  127. package/dist/flags/client.js +301 -0
  128. package/dist/flags/client.js.map +1 -0
  129. package/dist/flags/engine.d.ts +200 -0
  130. package/dist/flags/engine.js +677 -0
  131. package/dist/flags/engine.js.map +1 -0
  132. package/dist/flags/index.d.ts +4 -0
  133. package/dist/flags/index.js +16 -0
  134. package/dist/flags/index.js.map +1 -0
  135. package/dist/guard/__tests__/findings.test.js +1 -1
  136. package/dist/guard/__tests__/report.test.js +67 -0
  137. package/dist/guard/__tests__/report.test.js.map +1 -1
  138. package/dist/guard/heartbeat.d.ts +34 -0
  139. package/dist/guard/heartbeat.js +83 -0
  140. package/dist/guard/heartbeat.js.map +1 -0
  141. package/dist/guard/integration.d.ts +9 -0
  142. package/dist/guard/integration.js +4 -2
  143. package/dist/guard/integration.js.map +1 -1
  144. package/dist/guard/report.d.ts +24 -1
  145. package/dist/guard/report.js +67 -18
  146. package/dist/guard/report.js.map +1 -1
  147. package/dist/index.d.ts +88 -0
  148. package/dist/index.js +193 -2
  149. package/dist/index.js.map +1 -1
  150. package/dist/instrumentation/__tests__/langchain-wrapper.test.js +1 -1
  151. package/dist/instrumentation/__tests__/langchain-wrapper.test.js.map +1 -1
  152. package/dist/instrumentation/anthropic/wrapper.js +4 -0
  153. package/dist/instrumentation/anthropic/wrapper.js.map +1 -1
  154. package/dist/instrumentation/openai/wrapper.js +6 -0
  155. package/dist/instrumentation/openai/wrapper.js.map +1 -1
  156. package/dist/masking.d.ts +42 -0
  157. package/dist/masking.js +197 -0
  158. package/dist/masking.js.map +1 -0
  159. package/dist/otel/__tests__/app-logs-safety.test.d.ts +1 -0
  160. package/dist/otel/__tests__/app-logs-safety.test.js +129 -0
  161. package/dist/otel/__tests__/app-logs-safety.test.js.map +1 -0
  162. package/dist/otel/__tests__/app-logs.test.d.ts +1 -0
  163. package/dist/otel/__tests__/app-logs.test.js +269 -0
  164. package/dist/otel/__tests__/app-logs.test.js.map +1 -0
  165. package/dist/otel/__tests__/log-auto.test.d.ts +1 -0
  166. package/dist/otel/__tests__/log-auto.test.js +125 -0
  167. package/dist/otel/__tests__/log-auto.test.js.map +1 -0
  168. package/dist/otel/__tests__/log-bridges.test.d.ts +1 -0
  169. package/dist/otel/__tests__/log-bridges.test.js +170 -0
  170. package/dist/otel/__tests__/log-bridges.test.js.map +1 -0
  171. package/dist/otel/__tests__/system-metrics.test.d.ts +1 -0
  172. package/dist/otel/__tests__/system-metrics.test.js +79 -0
  173. package/dist/otel/__tests__/system-metrics.test.js.map +1 -0
  174. package/dist/otel/app-logs.d.ts +80 -0
  175. package/dist/otel/app-logs.js +195 -0
  176. package/dist/otel/app-logs.js.map +1 -0
  177. package/dist/otel/build-info.d.ts +2 -1
  178. package/dist/otel/build-info.js +3 -2
  179. package/dist/otel/build-info.js.map +1 -1
  180. package/dist/otel/events.d.ts +1 -0
  181. package/dist/otel/events.js +21 -12
  182. package/dist/otel/events.js.map +1 -1
  183. package/dist/otel/log-auto.d.ts +44 -0
  184. package/dist/otel/log-auto.js +200 -0
  185. package/dist/otel/log-auto.js.map +1 -0
  186. package/dist/otel/log-bridges.d.ts +54 -0
  187. package/dist/otel/log-bridges.js +307 -0
  188. package/dist/otel/log-bridges.js.map +1 -0
  189. package/dist/otel/system-metrics.d.ts +39 -0
  190. package/dist/otel/system-metrics.js +166 -0
  191. package/dist/otel/system-metrics.js.map +1 -0
  192. package/dist/otel/tracing.js +5 -1
  193. package/dist/otel/tracing.js.map +1 -1
  194. package/dist/protect/__tests__/protect.test.js +4 -0
  195. package/dist/protect/__tests__/protect.test.js.map +1 -1
  196. package/dist/protect/index.js +9 -4
  197. package/dist/protect/index.js.map +1 -1
  198. package/dist/rasp/__tests__/auto-http.test.d.ts +1 -0
  199. package/dist/rasp/__tests__/auto-http.test.js +136 -0
  200. package/dist/rasp/__tests__/auto-http.test.js.map +1 -0
  201. package/dist/rasp/__tests__/baseline.test.d.ts +1 -0
  202. package/dist/rasp/__tests__/baseline.test.js +86 -0
  203. package/dist/rasp/__tests__/baseline.test.js.map +1 -0
  204. package/dist/rasp/__tests__/benign-corpus.test.d.ts +1 -0
  205. package/dist/rasp/__tests__/benign-corpus.test.js +68 -0
  206. package/dist/rasp/__tests__/benign-corpus.test.js.map +1 -0
  207. package/dist/rasp/__tests__/capture-context.test.d.ts +1 -0
  208. package/dist/rasp/__tests__/capture-context.test.js +135 -0
  209. package/dist/rasp/__tests__/capture-context.test.js.map +1 -0
  210. package/dist/rasp/__tests__/code-hook.test.d.ts +1 -0
  211. package/dist/rasp/__tests__/code-hook.test.js +218 -0
  212. package/dist/rasp/__tests__/code-hook.test.js.map +1 -0
  213. package/dist/rasp/__tests__/config-client.test.d.ts +1 -0
  214. package/dist/rasp/__tests__/config-client.test.js +283 -0
  215. package/dist/rasp/__tests__/config-client.test.js.map +1 -0
  216. package/dist/rasp/__tests__/corpus.d.ts +13 -0
  217. package/dist/rasp/__tests__/corpus.js +111 -0
  218. package/dist/rasp/__tests__/corpus.js.map +1 -0
  219. package/dist/rasp/__tests__/custom-rules.test.d.ts +1 -0
  220. package/dist/rasp/__tests__/custom-rules.test.js +276 -0
  221. package/dist/rasp/__tests__/custom-rules.test.js.map +1 -0
  222. package/dist/rasp/__tests__/db-hook.test.d.ts +1 -0
  223. package/dist/rasp/__tests__/db-hook.test.js +438 -0
  224. package/dist/rasp/__tests__/db-hook.test.js.map +1 -0
  225. package/dist/rasp/__tests__/deception.test.d.ts +1 -0
  226. package/dist/rasp/__tests__/deception.test.js +567 -0
  227. package/dist/rasp/__tests__/deception.test.js.map +1 -0
  228. package/dist/rasp/__tests__/detect.test.d.ts +1 -0
  229. package/dist/rasp/__tests__/detect.test.js +276 -0
  230. package/dist/rasp/__tests__/detect.test.js.map +1 -0
  231. package/dist/rasp/__tests__/esm-exports.test.d.ts +1 -0
  232. package/dist/rasp/__tests__/esm-exports.test.js +20 -0
  233. package/dist/rasp/__tests__/esm-exports.test.js.map +1 -0
  234. package/dist/rasp/__tests__/fs-hook.test.d.ts +1 -0
  235. package/dist/rasp/__tests__/fs-hook.test.js +241 -0
  236. package/dist/rasp/__tests__/fs-hook.test.js.map +1 -0
  237. package/dist/rasp/__tests__/hook-contracts.test.d.ts +1 -0
  238. package/dist/rasp/__tests__/hook-contracts.test.js +201 -0
  239. package/dist/rasp/__tests__/hook-contracts.test.js.map +1 -0
  240. package/dist/rasp/__tests__/hook-kit.d.ts +42 -0
  241. package/dist/rasp/__tests__/hook-kit.js +139 -0
  242. package/dist/rasp/__tests__/hook-kit.js.map +1 -0
  243. package/dist/rasp/__tests__/http-hook.test.d.ts +1 -0
  244. package/dist/rasp/__tests__/http-hook.test.js +250 -0
  245. package/dist/rasp/__tests__/http-hook.test.js.map +1 -0
  246. package/dist/rasp/__tests__/iast.test.d.ts +1 -0
  247. package/dist/rasp/__tests__/iast.test.js +361 -0
  248. package/dist/rasp/__tests__/iast.test.js.map +1 -0
  249. package/dist/rasp/__tests__/include-hook.test.d.ts +1 -0
  250. package/dist/rasp/__tests__/include-hook.test.js +122 -0
  251. package/dist/rasp/__tests__/include-hook.test.js.map +1 -0
  252. package/dist/rasp/__tests__/middleware.test.d.ts +1 -0
  253. package/dist/rasp/__tests__/middleware.test.js +302 -0
  254. package/dist/rasp/__tests__/middleware.test.js.map +1 -0
  255. package/dist/rasp/__tests__/process-hook.test.d.ts +1 -0
  256. package/dist/rasp/__tests__/process-hook.test.js +238 -0
  257. package/dist/rasp/__tests__/process-hook.test.js.map +1 -0
  258. package/dist/rasp/__tests__/reporter.test.d.ts +1 -0
  259. package/dist/rasp/__tests__/reporter.test.js +114 -0
  260. package/dist/rasp/__tests__/reporter.test.js.map +1 -0
  261. package/dist/rasp/__tests__/route.test.d.ts +1 -0
  262. package/dist/rasp/__tests__/route.test.js +46 -0
  263. package/dist/rasp/__tests__/route.test.js.map +1 -0
  264. package/dist/rasp/__tests__/rule-expr.test.d.ts +1 -0
  265. package/dist/rasp/__tests__/rule-expr.test.js +151 -0
  266. package/dist/rasp/__tests__/rule-expr.test.js.map +1 -0
  267. package/dist/rasp/__tests__/rule-phases.test.d.ts +1 -0
  268. package/dist/rasp/__tests__/rule-phases.test.js +271 -0
  269. package/dist/rasp/__tests__/rule-phases.test.js.map +1 -0
  270. package/dist/rasp/__tests__/sinks-hook.test.d.ts +1 -0
  271. package/dist/rasp/__tests__/sinks-hook.test.js +177 -0
  272. package/dist/rasp/__tests__/sinks-hook.test.js.map +1 -0
  273. package/dist/rasp/__tests__/targets.test.d.ts +1 -0
  274. package/dist/rasp/__tests__/targets.test.js +82 -0
  275. package/dist/rasp/__tests__/targets.test.js.map +1 -0
  276. package/dist/rasp/__tests__/template-hook.test.d.ts +1 -0
  277. package/dist/rasp/__tests__/template-hook.test.js +254 -0
  278. package/dist/rasp/__tests__/template-hook.test.js.map +1 -0
  279. package/dist/rasp/__tests__/upload.test.d.ts +1 -0
  280. package/dist/rasp/__tests__/upload.test.js +81 -0
  281. package/dist/rasp/__tests__/upload.test.js.map +1 -0
  282. package/dist/rasp/__tests__/vpatch-engine.test.d.ts +1 -0
  283. package/dist/rasp/__tests__/vpatch-engine.test.js +177 -0
  284. package/dist/rasp/__tests__/vpatch-engine.test.js.map +1 -0
  285. package/dist/rasp/auto-http.d.ts +6 -0
  286. package/dist/rasp/auto-http.js +194 -0
  287. package/dist/rasp/auto-http.js.map +1 -0
  288. package/dist/rasp/baseline.d.ts +35 -0
  289. package/dist/rasp/baseline.js +91 -0
  290. package/dist/rasp/baseline.js.map +1 -0
  291. package/dist/rasp/capture.d.ts +76 -0
  292. package/dist/rasp/capture.js +304 -0
  293. package/dist/rasp/capture.js.map +1 -0
  294. package/dist/rasp/config-client.d.ts +122 -0
  295. package/dist/rasp/config-client.js +337 -0
  296. package/dist/rasp/config-client.js.map +1 -0
  297. package/dist/rasp/context.d.ts +65 -0
  298. package/dist/rasp/context.js +68 -0
  299. package/dist/rasp/context.js.map +1 -0
  300. package/dist/rasp/custom-rules.d.ts +68 -0
  301. package/dist/rasp/custom-rules.js +222 -0
  302. package/dist/rasp/custom-rules.js.map +1 -0
  303. package/dist/rasp/data/default-rules.json +199 -0
  304. package/dist/rasp/data/default-sinks.json +4 -0
  305. package/dist/rasp/data/dnslog-domains.json +11 -0
  306. package/dist/rasp/deception.d.ts +70 -0
  307. package/dist/rasp/deception.js +220 -0
  308. package/dist/rasp/deception.js.map +1 -0
  309. package/dist/rasp/detect.d.ts +68 -0
  310. package/dist/rasp/detect.js +671 -0
  311. package/dist/rasp/detect.js.map +1 -0
  312. package/dist/rasp/engine.d.ts +107 -0
  313. package/dist/rasp/engine.js +330 -0
  314. package/dist/rasp/engine.js.map +1 -0
  315. package/dist/rasp/hooks/code.d.ts +20 -0
  316. package/dist/rasp/hooks/code.js +334 -0
  317. package/dist/rasp/hooks/code.js.map +1 -0
  318. package/dist/rasp/hooks/db.d.ts +48 -0
  319. package/dist/rasp/hooks/db.js +322 -0
  320. package/dist/rasp/hooks/db.js.map +1 -0
  321. package/dist/rasp/hooks/esm.d.ts +7 -0
  322. package/dist/rasp/hooks/esm.js +18 -0
  323. package/dist/rasp/hooks/esm.js.map +1 -0
  324. package/dist/rasp/hooks/fs.d.ts +3 -0
  325. package/dist/rasp/hooks/fs.js +206 -0
  326. package/dist/rasp/hooks/fs.js.map +1 -0
  327. package/dist/rasp/hooks/http.d.ts +4 -0
  328. package/dist/rasp/hooks/http.js +213 -0
  329. package/dist/rasp/hooks/http.js.map +1 -0
  330. package/dist/rasp/hooks/include.d.ts +9 -0
  331. package/dist/rasp/hooks/include.js +79 -0
  332. package/dist/rasp/hooks/include.js.map +1 -0
  333. package/dist/rasp/hooks/marks.d.ts +2 -0
  334. package/dist/rasp/hooks/marks.js +16 -0
  335. package/dist/rasp/hooks/marks.js.map +1 -0
  336. package/dist/rasp/hooks/process.d.ts +22 -0
  337. package/dist/rasp/hooks/process.js +191 -0
  338. package/dist/rasp/hooks/process.js.map +1 -0
  339. package/dist/rasp/hooks/sinks.d.ts +54 -0
  340. package/dist/rasp/hooks/sinks.js +329 -0
  341. package/dist/rasp/hooks/sinks.js.map +1 -0
  342. package/dist/rasp/hooks/template.d.ts +21 -0
  343. package/dist/rasp/hooks/template.js +152 -0
  344. package/dist/rasp/hooks/template.js.map +1 -0
  345. package/dist/rasp/iast-rules.d.ts +82 -0
  346. package/dist/rasp/iast-rules.js +240 -0
  347. package/dist/rasp/iast-rules.js.map +1 -0
  348. package/dist/rasp/iast-scope.d.ts +29 -0
  349. package/dist/rasp/iast-scope.js +54 -0
  350. package/dist/rasp/iast-scope.js.map +1 -0
  351. package/dist/rasp/iast.d.ts +81 -0
  352. package/dist/rasp/iast.js +272 -0
  353. package/dist/rasp/iast.js.map +1 -0
  354. package/dist/rasp/index.d.ts +52 -0
  355. package/dist/rasp/index.js +280 -0
  356. package/dist/rasp/index.js.map +1 -0
  357. package/dist/rasp/lexers.d.ts +32 -0
  358. package/dist/rasp/lexers.js +444 -0
  359. package/dist/rasp/lexers.js.map +1 -0
  360. package/dist/rasp/middleware.d.ts +155 -0
  361. package/dist/rasp/middleware.js +568 -0
  362. package/dist/rasp/middleware.js.map +1 -0
  363. package/dist/rasp/model-output.d.ts +14 -0
  364. package/dist/rasp/model-output.js +107 -0
  365. package/dist/rasp/model-output.js.map +1 -0
  366. package/dist/rasp/normalize.d.ts +23 -0
  367. package/dist/rasp/normalize.js +140 -0
  368. package/dist/rasp/normalize.js.map +1 -0
  369. package/dist/rasp/reporter.d.ts +60 -0
  370. package/dist/rasp/reporter.js +230 -0
  371. package/dist/rasp/reporter.js.map +1 -0
  372. package/dist/rasp/rule-expr.d.ts +236 -0
  373. package/dist/rasp/rule-expr.js +1253 -0
  374. package/dist/rasp/rule-expr.js.map +1 -0
  375. package/dist/rasp/template.d.ts +53 -0
  376. package/dist/rasp/template.js +336 -0
  377. package/dist/rasp/template.js.map +1 -0
  378. package/dist/rasp/types.d.ts +110 -0
  379. package/dist/rasp/types.js +51 -0
  380. package/dist/rasp/types.js.map +1 -0
  381. package/dist/rasp/vpatch.d.ts +55 -0
  382. package/dist/rasp/vpatch.js +120 -0
  383. package/dist/rasp/vpatch.js.map +1 -0
  384. package/dist/register.js +52 -11
  385. package/dist/register.js.map +1 -1
  386. package/dist/semantic-convention.d.ts +2 -0
  387. package/dist/semantic-convention.js +5 -0
  388. package/dist/semantic-convention.js.map +1 -1
  389. package/dist/types.d.ts +75 -1
  390. package/dist/zero-code.d.ts +8 -0
  391. package/dist/zero-code.js +38 -0
  392. package/dist/zero-code.js.map +1 -0
  393. package/package.json +18 -2
@@ -0,0 +1,322 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.unpatchMongodb = exports.patchMongodb = exports.unpatchIbmDb = exports.patchIbmDb = exports.unpatchOracledb = exports.patchOracledb = exports.unpatchTedious = exports.patchTedious = exports.unpatchMssql = exports.patchMssql = exports.unpatchBetterSqlite3 = exports.patchBetterSqlite3 = exports.unpatchSqlite3 = exports.patchSqlite3 = exports.unpatchMysql = exports.patchMysql = exports.unpatchMysql2 = exports.patchMysql2 = exports.unpatchPg = exports.patchPg = exports.RaspDbInstrumentation = void 0;
4
+ exports.patchLoaded = patchLoaded;
5
+ exports.installDbHooks = installDbHooks;
6
+ exports.uninstallDbHooks = uninstallDbHooks;
7
+ /**
8
+ * Database sink hook (README "SQL", "NoSQL"): SQL text sent through pg,
9
+ * mysql2, mysql, sqlite3, better-sqlite3, mssql, tedious (SQL Server),
10
+ * oracledb (Oracle) and ibm_db (Db2), and MongoDB filter,
11
+ * update and pipeline documents, are checked for injection before the
12
+ * driver sends them. Drivers are hooked by name when the app loads them; no
13
+ * driver is imported. Drafted with ChatGPT, reviewed and adapted by the
14
+ * repository owner.
15
+ *
16
+ * Wrappers are RASP's own, not shimmer's: the SDK's tracing (and other
17
+ * OpenTelemetry instrumentations) wrap the same methods with shimmer, which
18
+ * unwraps whatever shimmer-wrapped method it finds. Kept apart, the two
19
+ * stack in either order and neither removes the other.
20
+ */
21
+ const instrumentation_1 = require("@opentelemetry/instrumentation");
22
+ const context_1 = require("../context");
23
+ const engine_1 = require("../engine");
24
+ const detect_1 = require("../detect");
25
+ const types_1 = require("../types");
26
+ const marks_1 = require("./marks");
27
+ const esm_1 = require("./esm");
28
+ const specs = {
29
+ pg: { version: '>=7', constructor: 'Client', methods: ['query'], dialect: 'postgres', field: 'text' },
30
+ mysql2: { version: '>=2', constructor: 'Connection', methods: ['query', 'execute'], dialect: 'mysql', field: 'sql' },
31
+ mysql: { version: '>=2', constructor: '', methods: ['query'], dialect: 'mysql', field: 'sql' },
32
+ sqlite3: { version: '>=5', constructor: 'Database', methods: ['run', 'get', 'all', 'each', 'exec', 'prepare'], dialect: 'sqlite' },
33
+ 'better-sqlite3': { version: '>=7', constructor: '', methods: ['prepare', 'exec'], dialect: 'sqlite' },
34
+ // query and batch live on mssql's shared base Request, which the exported Request inherits.
35
+ mssql: { version: '>=6', constructor: 'Request', methods: ['query', 'batch', 'execute'], dialect: 'mssql',
36
+ handsTo: { query: 'tedious', batch: 'tedious', execute: 'tedious' },
37
+ // mssql prepares through sp_prepare (a tedious procedure call, not hooked), so its text is checked here.
38
+ also: { PreparedStatement: ['prepare'] } },
39
+ // tedious takes a Request built with the SQL text; mssql's default driver calls it too.
40
+ tedious: { version: '>=6', constructor: 'Connection', methods: ['execSql', 'execSqlBatch', 'prepare'], dialect: 'mssql', field: 'sqlTextOrProcedure' },
41
+ // queryStream runs this.execute on the next tick.
42
+ oracledb: { version: '>=4', constructor: 'Connection', methods: ['execute', 'executeMany', 'queryStream'], dialect: 'oracle',
43
+ handsTo: { queryStream: 'oracledb.execute' } },
44
+ // queryStream delegates to queryResult, so it is covered there.
45
+ ibm_db: { version: '>=2', constructor: 'Database', methods: [
46
+ 'query', 'querySync', 'queryResult', 'queryResultSync', 'prepare', 'prepareSync',
47
+ ], dialect: 'db2', field: 'sql' },
48
+ mongodb: { version: '>=4', constructor: 'Collection', methods: [
49
+ 'find', 'findOne', 'countDocuments', 'updateOne', 'updateMany', 'replaceOne',
50
+ 'deleteOne', 'deleteMany', 'findOneAndUpdate', 'findOneAndDelete', 'findOneAndReplace', 'aggregate',
51
+ ] },
52
+ };
53
+ /**
54
+ * Text a call already checked and handed on (mssql -> tedious, oracledb
55
+ * queryStream -> execute), as `receiver\0text`, so the receiving call made
56
+ * later (asynchronously, with the same text) is not checked again: one check
57
+ * per call. Kept per RASP context, consumed by the receiver, at most 32.
58
+ */
59
+ const handedOn = new WeakMap();
60
+ let checking = false;
61
+ // Suppress synchronous delegation, e.g. sqlite Database.get -> prepare.
62
+ let depth = 0;
63
+ function inspect(driver, method, values) {
64
+ if (checking || depth)
65
+ return;
66
+ try {
67
+ if (!(0, engine_1.isActive)())
68
+ return;
69
+ checking = true;
70
+ const ctx = (0, context_1.currentContext)();
71
+ if (!ctx)
72
+ return;
73
+ (0, engine_1.check)(`db.${driver}.${method}`, () => {
74
+ const inputs = (0, context_1.inputsOf)(ctx);
75
+ if (driver === 'mongodb') {
76
+ const docs = method === 'aggregate'
77
+ ? Array.isArray(values[0]) ? values[0] : []
78
+ : ['updateOne', 'updateMany', 'replaceOne', 'findOneAndUpdate', 'findOneAndReplace'].includes(method)
79
+ ? [values[0], values[1]] : [values[0]];
80
+ for (const doc of docs) {
81
+ const finding = (0, detect_1.detectNoSql)(doc, ctx.trees, inputs);
82
+ if (finding)
83
+ return finding;
84
+ }
85
+ return null;
86
+ }
87
+ const first = values[0];
88
+ const field = specs[driver].field;
89
+ const text = typeof first === 'string' ? first
90
+ : first && typeof first === 'object' && field ? first[field] : undefined;
91
+ if (typeof text !== 'string')
92
+ return null;
93
+ const seen = handedOn.get(ctx);
94
+ if (seen) {
95
+ let at = seen.indexOf(`${driver}.${method}\0${text}`);
96
+ if (at < 0)
97
+ at = seen.indexOf(`${driver}\0${text}`);
98
+ if (at >= 0) {
99
+ seen.splice(at, 1);
100
+ return null;
101
+ }
102
+ }
103
+ const finding = (0, detect_1.detectSql)(text, inputs, specs[driver].dialect);
104
+ const receiver = specs[driver].handsTo?.[method];
105
+ if (receiver) {
106
+ const list = seen ?? [];
107
+ if (list.length >= 32)
108
+ list.shift();
109
+ list.push(`${receiver}\0${text}`);
110
+ handedOn.set(ctx, list);
111
+ }
112
+ return finding;
113
+ });
114
+ }
115
+ catch (error) {
116
+ if (error instanceof types_1.RaspBlockedError)
117
+ throw error;
118
+ }
119
+ finally {
120
+ checking = false;
121
+ }
122
+ }
123
+ const registry = new Map();
124
+ /** The prototype in the chain that defines `method` itself (mssql's Request inherits query from its base). */
125
+ function ownerOf(proto, method) {
126
+ for (let p = proto; p && p !== Object.prototype; p = Object.getPrototypeOf(p)) {
127
+ if (Object.prototype.hasOwnProperty.call(p, method))
128
+ return p;
129
+ }
130
+ return undefined;
131
+ }
132
+ function wrapMethods(driver, exported, list = specs[driver].methods) {
133
+ for (const method of list) {
134
+ const proto = ownerOf(exported, method);
135
+ if (!proto)
136
+ continue;
137
+ let methods = registry.get(proto);
138
+ if (!methods)
139
+ registry.set(proto, (methods = new Map()));
140
+ const descriptor = Object.getOwnPropertyDescriptor(proto, method);
141
+ const current = descriptor?.value;
142
+ if (typeof current !== 'function')
143
+ continue;
144
+ const known = methods.get(method);
145
+ if (known) {
146
+ // Patched again (a reload, or the app loaded the driver after patchLoaded): turn it back on.
147
+ known.on = true;
148
+ continue;
149
+ }
150
+ const entry = { original: current, wrapper: current, on: true };
151
+ const wrapper = function (...values) {
152
+ if (entry.on)
153
+ inspect(driver, method, values);
154
+ depth++;
155
+ try {
156
+ return Reflect.apply(current, this, values);
157
+ }
158
+ finally {
159
+ depth--;
160
+ }
161
+ };
162
+ for (const key of Reflect.ownKeys(current)) {
163
+ if (key !== 'prototype')
164
+ Object.defineProperty(wrapper, key, Object.getOwnPropertyDescriptor(current, key));
165
+ }
166
+ entry.wrapper = wrapper;
167
+ (0, marks_1.markRaspWrapper)(wrapper);
168
+ Object.defineProperty(proto, method, { ...descriptor, value: wrapper });
169
+ methods.set(method, entry);
170
+ }
171
+ }
172
+ function restoreMethods(proto) {
173
+ const methods = registry.get(proto);
174
+ if (!methods)
175
+ return;
176
+ for (const [method, entry] of methods) {
177
+ entry.on = false;
178
+ // Put the original back only while ours is on top; under another
179
+ // wrapper (tracing patched after RASP) ours stays, switched off.
180
+ if (proto[method] === entry.wrapper) {
181
+ const descriptor = Object.getOwnPropertyDescriptor(proto, method);
182
+ Object.defineProperty(proto, method, { ...descriptor, value: entry.original });
183
+ methods.delete(method);
184
+ }
185
+ }
186
+ if (!methods.size)
187
+ registry.delete(proto);
188
+ }
189
+ class RaspDbInstrumentation extends instrumentation_1.InstrumentationBase {
190
+ constructor() { super('shield360/instrumentation-rasp-db', '1.0.0', { enabled: false }); }
191
+ init() {
192
+ return Object.keys(specs).map(driver => {
193
+ const versions = [specs[driver].version];
194
+ if (driver === 'mysql')
195
+ return new instrumentation_1.InstrumentationNodeModuleDefinition(driver, versions, undefined, undefined, [
196
+ new instrumentation_1.InstrumentationNodeModuleFile('mysql/lib/Connection.js', versions, exports => { this.patch(driver, exports); return exports; }, exports => this.unpatch(driver, exports)),
197
+ ]);
198
+ return new instrumentation_1.InstrumentationNodeModuleDefinition(driver, versions, exports => { this.patch(driver, (0, esm_1.moduleExports)(exports)); return exports; }, exports => this.unpatch(driver, (0, esm_1.moduleExports)(exports)));
199
+ });
200
+ }
201
+ patch(driver, exports) {
202
+ try {
203
+ const spec = specs[driver];
204
+ const ctor = spec.constructor ? exports?.[spec.constructor] : exports;
205
+ const proto = ctor?.prototype;
206
+ if (proto)
207
+ wrapMethods(driver, proto);
208
+ for (const [name, methods] of Object.entries(spec.also ?? {})) {
209
+ const other = exports?.[name]?.prototype;
210
+ if (other)
211
+ wrapMethods(driver, other, methods);
212
+ }
213
+ }
214
+ catch { /* Optional or unsupported driver shape: leave it alone. */ }
215
+ }
216
+ unpatch(driver, exports) {
217
+ try {
218
+ const spec = specs[driver];
219
+ const ctors = [spec.constructor ? exports?.[spec.constructor] : exports,
220
+ ...Object.keys(spec.also ?? {}).map(name => exports?.[name])];
221
+ for (const ctor of ctors) {
222
+ const proto = ctor?.prototype;
223
+ for (let p = proto ?? null; p && p !== Object.prototype; p = Object.getPrototypeOf(p)) {
224
+ restoreMethods(p);
225
+ }
226
+ }
227
+ }
228
+ catch { /* Fail open during driver unload. */ }
229
+ }
230
+ restoreAll() {
231
+ for (const proto of [...registry.keys()])
232
+ restoreMethods(proto);
233
+ }
234
+ }
235
+ exports.RaspDbInstrumentation = RaspDbInstrumentation;
236
+ let manual;
237
+ let active;
238
+ const patcher = () => manual ?? (manual = new RaspDbInstrumentation());
239
+ const patchPg = (exports) => patcher().patch('pg', exports);
240
+ exports.patchPg = patchPg;
241
+ const unpatchPg = (exports) => manual?.unpatch('pg', exports);
242
+ exports.unpatchPg = unpatchPg;
243
+ const patchMysql2 = (exports) => patcher().patch('mysql2', exports);
244
+ exports.patchMysql2 = patchMysql2;
245
+ const unpatchMysql2 = (exports) => manual?.unpatch('mysql2', exports);
246
+ exports.unpatchMysql2 = unpatchMysql2;
247
+ const patchMysql = (exports) => patcher().patch('mysql', exports);
248
+ exports.patchMysql = patchMysql;
249
+ const unpatchMysql = (exports) => manual?.unpatch('mysql', exports);
250
+ exports.unpatchMysql = unpatchMysql;
251
+ const patchSqlite3 = (exports) => patcher().patch('sqlite3', exports);
252
+ exports.patchSqlite3 = patchSqlite3;
253
+ const unpatchSqlite3 = (exports) => manual?.unpatch('sqlite3', exports);
254
+ exports.unpatchSqlite3 = unpatchSqlite3;
255
+ const patchBetterSqlite3 = (exports) => patcher().patch('better-sqlite3', exports);
256
+ exports.patchBetterSqlite3 = patchBetterSqlite3;
257
+ const unpatchBetterSqlite3 = (exports) => manual?.unpatch('better-sqlite3', exports);
258
+ exports.unpatchBetterSqlite3 = unpatchBetterSqlite3;
259
+ const patchMssql = (exports) => patcher().patch('mssql', exports);
260
+ exports.patchMssql = patchMssql;
261
+ const unpatchMssql = (exports) => manual?.unpatch('mssql', exports);
262
+ exports.unpatchMssql = unpatchMssql;
263
+ const patchTedious = (exports) => patcher().patch('tedious', exports);
264
+ exports.patchTedious = patchTedious;
265
+ const unpatchTedious = (exports) => manual?.unpatch('tedious', exports);
266
+ exports.unpatchTedious = unpatchTedious;
267
+ const patchOracledb = (exports) => patcher().patch('oracledb', exports);
268
+ exports.patchOracledb = patchOracledb;
269
+ const unpatchOracledb = (exports) => manual?.unpatch('oracledb', exports);
270
+ exports.unpatchOracledb = unpatchOracledb;
271
+ const patchIbmDb = (exports) => patcher().patch('ibm_db', exports);
272
+ exports.patchIbmDb = patchIbmDb;
273
+ const unpatchIbmDb = (exports) => manual?.unpatch('ibm_db', exports);
274
+ exports.unpatchIbmDb = unpatchIbmDb;
275
+ const patchMongodb = (exports) => patcher().patch('mongodb', exports);
276
+ exports.patchMongodb = patchMongodb;
277
+ const unpatchMongodb = (exports) => manual?.unpatch('mongodb', exports);
278
+ exports.unpatchMongodb = unpatchMongodb;
279
+ /** Inspect the cache only: resolving a driver never executes its code. */
280
+ function patchLoaded() {
281
+ for (const driver of Object.keys(specs)) {
282
+ try {
283
+ const id = require.resolve(driver === 'mysql' ? 'mysql/lib/Connection.js' : driver);
284
+ const cached = require.cache[id];
285
+ if (cached)
286
+ (active ?? patcher()).patch(driver, cached.exports);
287
+ }
288
+ catch { /* Driver absent or not resolvable from the SDK. */ }
289
+ }
290
+ }
291
+ function installDbHooks() {
292
+ if (active)
293
+ return true;
294
+ let instance;
295
+ try {
296
+ instance = new RaspDbInstrumentation();
297
+ instance.enable();
298
+ active = instance;
299
+ patchLoaded();
300
+ return true;
301
+ }
302
+ catch {
303
+ try {
304
+ instance?.disable();
305
+ instance?.restoreAll();
306
+ }
307
+ catch { /* Never throw. */ }
308
+ active = undefined;
309
+ return false;
310
+ }
311
+ }
312
+ function uninstallDbHooks() {
313
+ try {
314
+ active?.disable();
315
+ }
316
+ finally {
317
+ active?.restoreAll();
318
+ manual?.restoreAll();
319
+ active = undefined;
320
+ }
321
+ }
322
+ //# sourceMappingURL=db.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"db.js","sourceRoot":"","sources":["../../../src/rasp/hooks/db.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,7 @@
1
+ /**
2
+ * A package the app `import`s reaches an instrumentation through the ESM loader hook as its module
3
+ * namespace. For a CommonJS package the exports object the hooks patch is the namespace's
4
+ * `default` (its named exports are only what Node's static scan found: none for pg's
5
+ * `module.exports = new PG()`), so the hooks patch that.
6
+ */
7
+ export declare function moduleExports(exports: unknown): unknown;
@@ -0,0 +1,18 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.moduleExports = moduleExports;
4
+ /**
5
+ * A package the app `import`s reaches an instrumentation through the ESM loader hook as its module
6
+ * namespace. For a CommonJS package the exports object the hooks patch is the namespace's
7
+ * `default` (its named exports are only what Node's static scan found: none for pg's
8
+ * `module.exports = new PG()`), so the hooks patch that.
9
+ */
10
+ function moduleExports(exports) {
11
+ if (exports && typeof exports === 'object' && exports[Symbol.toStringTag] === 'Module') {
12
+ const def = exports.default;
13
+ if (def && (typeof def === 'object' || typeof def === 'function'))
14
+ return def;
15
+ }
16
+ return exports;
17
+ }
18
+ //# sourceMappingURL=esm.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"esm.js","sourceRoot":"","sources":["../../../src/rasp/hooks/esm.ts"],"names":[],"mappings":";;AAMA,sCAMC;AAZD;;;;;GAKG;AACH,SAAgB,aAAa,CAAC,OAAgB;IAC5C,IAAI,OAAO,IAAI,OAAO,OAAO,KAAK,QAAQ,IAAK,OAAmC,CAAC,MAAM,CAAC,WAAW,CAAC,KAAK,QAAQ,EAAE,CAAC;QACpH,MAAM,GAAG,GAAI,OAAiC,CAAC,OAAO,CAAC;QACvD,IAAI,GAAG,IAAI,CAAC,OAAO,GAAG,KAAK,QAAQ,IAAI,OAAO,GAAG,KAAK,UAAU,CAAC;YAAE,OAAO,GAAG,CAAC;IAChF,CAAC;IACD,OAAO,OAAO,CAAC;AACjB,CAAC"}
@@ -0,0 +1,3 @@
1
+ /** Idempotent; a failed installation restores every replaced descriptor. */
2
+ export declare function installFsHooks(): boolean;
3
+ export declare function uninstallFsHooks(): void;
@@ -0,0 +1,206 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.installFsHooks = installFsHooks;
4
+ exports.uninstallFsHooks = uninstallFsHooks;
5
+ /**
6
+ * fs sink hook (README "Path"): reads, writes, deletes, renames, copies and
7
+ * directory listings on `fs` and `fs.promises` are checked for path
8
+ * traversal and script writes before the call. Install before application
9
+ * modules capture bindings. Drafted with ChatGPT, reviewed and adapted by
10
+ * the repository owner.
11
+ *
12
+ * Node calls its own public functions inside some of these (`readFileSync`
13
+ * opens through `fs.openSync`, streams open through `fs.open` later), so a
14
+ * path is checked once: calls made while a synchronous fs call runs are
15
+ * Node's and are skipped, and within a request a path already checked for
16
+ * the same kind of access is not checked again.
17
+ */
18
+ const fs = require("fs");
19
+ const module_1 = require("module");
20
+ const url_1 = require("url");
21
+ const util_1 = require("util");
22
+ const context_1 = require("../context");
23
+ const engine_1 = require("../engine");
24
+ const detect_1 = require("../detect");
25
+ const types_1 = require("../types");
26
+ const operations = {
27
+ readFile: 'read', readFileSync: 'read', createReadStream: 'read',
28
+ open: 'open', openSync: 'open',
29
+ writeFile: 'write', writeFileSync: 'write', createWriteStream: 'write',
30
+ appendFile: 'append', appendFileSync: 'append',
31
+ unlink: 'delete', unlinkSync: 'delete', rm: 'delete', rmSync: 'delete',
32
+ rename: 'rename', renameSync: 'rename', readdir: 'list', readdirSync: 'list',
33
+ copyFile: 'read', copyFileSync: 'read',
34
+ };
35
+ let installed;
36
+ /** Bumped by every install and uninstall: a wrapper checks only while its generation is current. */
37
+ let generation = 0;
38
+ let checking = false;
39
+ /** Depth of synchronous fs calls in progress: anything nested is Node's own. */
40
+ let syncDepth = 0;
41
+ /** Per request: paths already checked, by kind of access (capped). */
42
+ const seen = new WeakMap();
43
+ const SEEN_MAX = 256;
44
+ const accessOf = (op) => (op === 'append' || op === 'open' ? 'write' : op);
45
+ const seenKey = (path, op) => `${accessOf(op)}\u0000${path}`;
46
+ /** True when this request already checked this path for this kind of access. */
47
+ function seenBefore(ctx, path, op) {
48
+ return Boolean(ctx && seen.get(ctx)?.has(seenKey(path, op)));
49
+ }
50
+ /** Records that this request checked this path for this kind of access. */
51
+ function markSeen(ctx, path, op) {
52
+ if (!ctx)
53
+ return;
54
+ let set = seen.get(ctx);
55
+ if (!set)
56
+ seen.set(ctx, (set = new Set()));
57
+ if (set.size < SEEN_MAX)
58
+ set.add(seenKey(path, op));
59
+ }
60
+ function pathString(value) {
61
+ if (typeof value === 'string')
62
+ return value;
63
+ if (Buffer.isBuffer(value))
64
+ return value.toString();
65
+ if (value instanceof URL && value.protocol === 'file:')
66
+ return (0, url_1.fileURLToPath)(value);
67
+ return undefined;
68
+ }
69
+ function openOp(flags) {
70
+ if (flags === undefined)
71
+ return 'read';
72
+ if (typeof flags === 'string')
73
+ return /[wa+]/.test(flags) ? 'write' : 'read';
74
+ if (typeof flags === 'number') {
75
+ const c = fs.constants;
76
+ return flags & (c.O_WRONLY | c.O_RDWR | c.O_CREAT | c.O_TRUNC | c.O_APPEND) ? 'write' : 'read';
77
+ }
78
+ return 'read';
79
+ }
80
+ function inspect(api, values, promises) {
81
+ if (checking || syncDepth > 0)
82
+ return;
83
+ try {
84
+ if (!(0, engine_1.isActive)())
85
+ return;
86
+ checking = true;
87
+ (0, engine_1.check)(`fs.${promises ? 'promises.' : ''}${api}`, () => {
88
+ const ctx = (0, context_1.currentContext)();
89
+ const inputs = ctx ? (0, context_1.inputsOf)(ctx) : [];
90
+ const roots = (0, engine_1.allowLists)().fileRoots;
91
+ const inRequest = Boolean(ctx?.inRequest);
92
+ const op = operations[api] === 'open' ? openOp(values[1]) : operations[api];
93
+ const paths = [[pathString(values[0]), op]];
94
+ if (api === 'rename' || api === 'renameSync' || api === 'copyFile' || api === 'copyFileSync') {
95
+ paths.push([pathString(values[1]), api.startsWith('copyFile') ? 'write' : 'rename']);
96
+ }
97
+ const checks = [];
98
+ for (const [path, pathOp] of paths) {
99
+ if (path !== undefined && !seenBefore(ctx, path, pathOp)) {
100
+ checks.push({ path, op: pathOp, finding: (0, detect_1.detectPath)(path, pathOp, inputs, roots, inRequest) });
101
+ }
102
+ }
103
+ // Both paths are checked; the strongest decision wins.
104
+ const winner = (0, engine_1.strongest)(...checks.map((c) => c.finding));
105
+ // A finding that lost to the winner was never applied: its path stays
106
+ // unmarked, so a later call on it in this request is checked again.
107
+ for (const c of checks)
108
+ if (!(winner && c.finding && c.finding !== winner))
109
+ markSeen(ctx, c.path, c.op);
110
+ return winner;
111
+ });
112
+ }
113
+ catch (error) {
114
+ if (error instanceof types_1.RaspBlockedError)
115
+ throw error;
116
+ }
117
+ finally {
118
+ checking = false;
119
+ }
120
+ }
121
+ /**
122
+ * Ends this generation (every wrapper stops checking) and puts back the
123
+ * originals where RASP's wrapper is still the current value. A wrapper put
124
+ * on top later (tracing) stays, calling RASP's, which now only passes through.
125
+ */
126
+ function restore(saved) {
127
+ generation++;
128
+ for (const entry of [...saved].reverse()) {
129
+ if (Object.getOwnPropertyDescriptor(entry.owner, entry.api)?.value === entry.wrapper) {
130
+ Object.defineProperty(entry.owner, entry.api, entry.descriptor);
131
+ }
132
+ }
133
+ }
134
+ /** Idempotent; a failed installation restores every replaced descriptor. */
135
+ function installFsHooks() {
136
+ if (installed)
137
+ return true;
138
+ const saved = [];
139
+ const gen = ++generation;
140
+ try {
141
+ for (const [owner, promises] of [[fs, false], [fs.promises, true]]) {
142
+ for (const api of Object.keys(operations)) {
143
+ const descriptor = Object.getOwnPropertyDescriptor(owner, api);
144
+ if (!descriptor && promises)
145
+ continue; // No synchronous or stream promise APIs.
146
+ if (!descriptor || typeof descriptor.value !== 'function')
147
+ throw new TypeError(api);
148
+ const original = descriptor.value;
149
+ const sync = api.endsWith('Sync');
150
+ const wrapper = function (...values) {
151
+ try {
152
+ if (gen === generation)
153
+ inspect(api, values, promises);
154
+ }
155
+ catch (error) {
156
+ if (promises)
157
+ return Promise.reject(error);
158
+ throw error;
159
+ }
160
+ if (!sync)
161
+ return Reflect.apply(original, this, values);
162
+ syncDepth++;
163
+ try {
164
+ return Reflect.apply(original, this, values);
165
+ }
166
+ finally {
167
+ syncDepth--;
168
+ }
169
+ };
170
+ for (const key of Reflect.ownKeys(original)) {
171
+ if (key === 'prototype' || key === util_1.promisify.custom)
172
+ continue;
173
+ Object.defineProperty(wrapper, key, Object.getOwnPropertyDescriptor(original, key));
174
+ }
175
+ const custom = Object.getOwnPropertyDescriptor(original, util_1.promisify.custom);
176
+ if (custom) {
177
+ // Node's custom fs promisifiers (notably read/readv/write) return
178
+ // named results. None of the covered APIs has that contract.
179
+ const generic = (0, util_1.promisify)(wrapper);
180
+ Object.defineProperty(wrapper, util_1.promisify.custom, { ...custom, value: generic });
181
+ }
182
+ Object.defineProperty(owner, api, { ...descriptor, value: wrapper });
183
+ saved.push({ owner, api, descriptor, wrapper });
184
+ }
185
+ }
186
+ (0, module_1.syncBuiltinESMExports)();
187
+ installed = saved;
188
+ return true;
189
+ }
190
+ catch {
191
+ restore(saved);
192
+ try {
193
+ (0, module_1.syncBuiltinESMExports)();
194
+ }
195
+ catch { /* Installation remains unsuccessful. */ }
196
+ return false;
197
+ }
198
+ }
199
+ function uninstallFsHooks() {
200
+ if (!installed)
201
+ return;
202
+ restore(installed);
203
+ installed = undefined;
204
+ (0, module_1.syncBuiltinESMExports)();
205
+ }
206
+ //# sourceMappingURL=fs.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"fs.js","sourceRoot":"","sources":["../../../src/rasp/hooks/fs.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,4 @@
1
+ export declare function installHttpHooks(opts: {
2
+ alwaysAllowedHosts: string[];
3
+ }): boolean;
4
+ export declare function uninstallHttpHooks(): void;