shield360 1.1.0 → 1.2.1

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 (400) 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__/destination.test.js +15 -0
  6. package/dist/__tests__/destination.test.js.map +1 -1
  7. package/dist/__tests__/masking.test.d.ts +1 -0
  8. package/dist/__tests__/masking.test.js +66 -0
  9. package/dist/__tests__/masking.test.js.map +1 -0
  10. package/dist/__tests__/register.e2e.test.d.ts +1 -0
  11. package/dist/__tests__/register.e2e.test.js +279 -0
  12. package/dist/__tests__/register.e2e.test.js.map +1 -0
  13. package/dist/__tests__/register.test.js +60 -0
  14. package/dist/__tests__/register.test.js.map +1 -1
  15. package/dist/agents/__tests__/agents.test.d.ts +1 -0
  16. package/dist/agents/__tests__/agents.test.js +529 -0
  17. package/dist/agents/__tests__/agents.test.js.map +1 -0
  18. package/dist/agents/index.d.ts +15 -0
  19. package/dist/agents/index.js +25 -0
  20. package/dist/agents/index.js.map +1 -0
  21. package/dist/agents/passport.d.ts +92 -0
  22. package/dist/agents/passport.js +301 -0
  23. package/dist/agents/passport.js.map +1 -0
  24. package/dist/agents/policy.d.ts +24 -0
  25. package/dist/agents/policy.js +93 -0
  26. package/dist/agents/policy.js.map +1 -0
  27. package/dist/agents/replay.d.ts +20 -0
  28. package/dist/agents/replay.js +47 -0
  29. package/dist/agents/replay.js.map +1 -0
  30. package/dist/agents/report.d.ts +30 -0
  31. package/dist/agents/report.js +93 -0
  32. package/dist/agents/report.js.map +1 -0
  33. package/dist/agents/types.d.ts +148 -0
  34. package/dist/agents/types.js +37 -0
  35. package/dist/agents/types.js.map +1 -0
  36. package/dist/agents/verifier.d.ts +33 -0
  37. package/dist/agents/verifier.js +276 -0
  38. package/dist/agents/verifier.js.map +1 -0
  39. package/dist/ai-security/__tests__/bench.test.d.ts +1 -0
  40. package/dist/ai-security/__tests__/bench.test.js +50 -0
  41. package/dist/ai-security/__tests__/bench.test.js.map +1 -0
  42. package/dist/ai-security/__tests__/checks.test.d.ts +1 -0
  43. package/dist/ai-security/__tests__/checks.test.js +248 -0
  44. package/dist/ai-security/__tests__/checks.test.js.map +1 -0
  45. package/dist/ai-security/__tests__/config.test.d.ts +1 -0
  46. package/dist/ai-security/__tests__/config.test.js +164 -0
  47. package/dist/ai-security/__tests__/config.test.js.map +1 -0
  48. package/dist/ai-security/__tests__/detection.test.d.ts +1 -0
  49. package/dist/ai-security/__tests__/detection.test.js +114 -0
  50. package/dist/ai-security/__tests__/detection.test.js.map +1 -0
  51. package/dist/ai-security/__tests__/fixtures.d.ts +8 -0
  52. package/dist/ai-security/__tests__/fixtures.js +30 -0
  53. package/dist/ai-security/__tests__/fixtures.js.map +1 -0
  54. package/dist/ai-security/__tests__/hooks.test.d.ts +1 -0
  55. package/dist/ai-security/__tests__/hooks.test.js +174 -0
  56. package/dist/ai-security/__tests__/hooks.test.js.map +1 -0
  57. package/dist/ai-security/__tests__/stream.test.d.ts +1 -0
  58. package/dist/ai-security/__tests__/stream.test.js +85 -0
  59. package/dist/ai-security/__tests__/stream.test.js.map +1 -0
  60. package/dist/ai-security/config.d.ts +94 -0
  61. package/dist/ai-security/config.js +241 -0
  62. package/dist/ai-security/config.js.map +1 -0
  63. package/dist/ai-security/context.d.ts +45 -0
  64. package/dist/ai-security/context.js +108 -0
  65. package/dist/ai-security/context.js.map +1 -0
  66. package/dist/ai-security/custom-kinds.d.ts +23 -0
  67. package/dist/ai-security/custom-kinds.js +97 -0
  68. package/dist/ai-security/custom-kinds.js.map +1 -0
  69. package/dist/ai-security/events.d.ts +77 -0
  70. package/dist/ai-security/events.js +153 -0
  71. package/dist/ai-security/events.js.map +1 -0
  72. package/dist/ai-security/hooks.d.ts +48 -0
  73. package/dist/ai-security/hooks.js +461 -0
  74. package/dist/ai-security/hooks.js.map +1 -0
  75. package/dist/ai-security/index.d.ts +209 -0
  76. package/dist/ai-security/index.js +587 -0
  77. package/dist/ai-security/index.js.map +1 -0
  78. package/dist/ai-security/injection-rules.json +1024 -0
  79. package/dist/ai-security/injection.d.ts +46 -0
  80. package/dist/ai-security/injection.js +635 -0
  81. package/dist/ai-security/injection.js.map +1 -0
  82. package/dist/ai-security/jailbreak.d.ts +38 -0
  83. package/dist/ai-security/jailbreak.js +73 -0
  84. package/dist/ai-security/jailbreak.js.map +1 -0
  85. package/dist/ai-security/limits.d.ts +84 -0
  86. package/dist/ai-security/limits.js +195 -0
  87. package/dist/ai-security/limits.js.map +1 -0
  88. package/dist/ai-security/mcp.d.ts +82 -0
  89. package/dist/ai-security/mcp.js +150 -0
  90. package/dist/ai-security/mcp.js.map +1 -0
  91. package/dist/ai-security/output.d.ts +107 -0
  92. package/dist/ai-security/output.js +390 -0
  93. package/dist/ai-security/output.js.map +1 -0
  94. package/dist/ai-security/policy.d.ts +125 -0
  95. package/dist/ai-security/policy.js +196 -0
  96. package/dist/ai-security/policy.js.map +1 -0
  97. package/dist/ai-security/rag.d.ts +70 -0
  98. package/dist/ai-security/rag.js +174 -0
  99. package/dist/ai-security/rag.js.map +1 -0
  100. package/dist/ai-security/tool-rules.json +203 -0
  101. package/dist/ai-security/tools.d.ts +46 -0
  102. package/dist/ai-security/tools.js +62 -0
  103. package/dist/ai-security/tools.js.map +1 -0
  104. package/dist/budgets/__tests__/budgets.test.d.ts +1 -0
  105. package/dist/budgets/__tests__/budgets.test.js +134 -0
  106. package/dist/budgets/__tests__/budgets.test.js.map +1 -0
  107. package/dist/budgets/auto.d.ts +25 -0
  108. package/dist/budgets/auto.js +63 -0
  109. package/dist/budgets/auto.js.map +1 -0
  110. package/dist/budgets/index.d.ts +110 -0
  111. package/dist/budgets/index.js +239 -0
  112. package/dist/budgets/index.js.map +1 -0
  113. package/dist/customer/__tests__/customer.test.d.ts +1 -0
  114. package/dist/customer/__tests__/customer.test.js +155 -0
  115. package/dist/customer/__tests__/customer.test.js.map +1 -0
  116. package/dist/customer/index.d.ts +48 -0
  117. package/dist/customer/index.js +132 -0
  118. package/dist/customer/index.js.map +1 -0
  119. package/dist/destination.d.ts +14 -0
  120. package/dist/destination.js +16 -0
  121. package/dist/destination.js.map +1 -1
  122. package/dist/feedback/__tests__/feedback.test.d.ts +1 -0
  123. package/dist/feedback/__tests__/feedback.test.js +80 -0
  124. package/dist/feedback/__tests__/feedback.test.js.map +1 -0
  125. package/dist/feedback/index.d.ts +48 -0
  126. package/dist/feedback/index.js +97 -0
  127. package/dist/feedback/index.js.map +1 -0
  128. package/dist/flags/__tests__/flags.test.d.ts +1 -0
  129. package/dist/flags/__tests__/flags.test.js +301 -0
  130. package/dist/flags/__tests__/flags.test.js.map +1 -0
  131. package/dist/flags/client.d.ts +131 -0
  132. package/dist/flags/client.js +301 -0
  133. package/dist/flags/client.js.map +1 -0
  134. package/dist/flags/engine.d.ts +200 -0
  135. package/dist/flags/engine.js +677 -0
  136. package/dist/flags/engine.js.map +1 -0
  137. package/dist/flags/index.d.ts +4 -0
  138. package/dist/flags/index.js +16 -0
  139. package/dist/flags/index.js.map +1 -0
  140. package/dist/guard/__tests__/findings.test.js +1 -1
  141. package/dist/guard/__tests__/report.test.js +67 -0
  142. package/dist/guard/__tests__/report.test.js.map +1 -1
  143. package/dist/guard/heartbeat.d.ts +34 -0
  144. package/dist/guard/heartbeat.js +83 -0
  145. package/dist/guard/heartbeat.js.map +1 -0
  146. package/dist/guard/integration.d.ts +9 -0
  147. package/dist/guard/integration.js +4 -2
  148. package/dist/guard/integration.js.map +1 -1
  149. package/dist/guard/report.d.ts +24 -1
  150. package/dist/guard/report.js +67 -18
  151. package/dist/guard/report.js.map +1 -1
  152. package/dist/index.d.ts +88 -0
  153. package/dist/index.js +203 -2
  154. package/dist/index.js.map +1 -1
  155. package/dist/instrumentation/__tests__/langchain-wrapper.test.js +1 -1
  156. package/dist/instrumentation/__tests__/langchain-wrapper.test.js.map +1 -1
  157. package/dist/instrumentation/anthropic/wrapper.js +4 -0
  158. package/dist/instrumentation/anthropic/wrapper.js.map +1 -1
  159. package/dist/instrumentation/openai/wrapper.js +6 -0
  160. package/dist/instrumentation/openai/wrapper.js.map +1 -1
  161. package/dist/masking.d.ts +42 -0
  162. package/dist/masking.js +197 -0
  163. package/dist/masking.js.map +1 -0
  164. package/dist/otel/__tests__/app-logs-safety.test.d.ts +1 -0
  165. package/dist/otel/__tests__/app-logs-safety.test.js +129 -0
  166. package/dist/otel/__tests__/app-logs-safety.test.js.map +1 -0
  167. package/dist/otel/__tests__/app-logs.test.d.ts +1 -0
  168. package/dist/otel/__tests__/app-logs.test.js +269 -0
  169. package/dist/otel/__tests__/app-logs.test.js.map +1 -0
  170. package/dist/otel/__tests__/log-auto.test.d.ts +1 -0
  171. package/dist/otel/__tests__/log-auto.test.js +125 -0
  172. package/dist/otel/__tests__/log-auto.test.js.map +1 -0
  173. package/dist/otel/__tests__/log-bridges.test.d.ts +1 -0
  174. package/dist/otel/__tests__/log-bridges.test.js +170 -0
  175. package/dist/otel/__tests__/log-bridges.test.js.map +1 -0
  176. package/dist/otel/__tests__/system-metrics.test.d.ts +1 -0
  177. package/dist/otel/__tests__/system-metrics.test.js +79 -0
  178. package/dist/otel/__tests__/system-metrics.test.js.map +1 -0
  179. package/dist/otel/app-logs.d.ts +80 -0
  180. package/dist/otel/app-logs.js +195 -0
  181. package/dist/otel/app-logs.js.map +1 -0
  182. package/dist/otel/build-info.d.ts +2 -1
  183. package/dist/otel/build-info.js +3 -2
  184. package/dist/otel/build-info.js.map +1 -1
  185. package/dist/otel/events.d.ts +1 -0
  186. package/dist/otel/events.js +22 -13
  187. package/dist/otel/events.js.map +1 -1
  188. package/dist/otel/log-auto.d.ts +44 -0
  189. package/dist/otel/log-auto.js +200 -0
  190. package/dist/otel/log-auto.js.map +1 -0
  191. package/dist/otel/log-bridges.d.ts +54 -0
  192. package/dist/otel/log-bridges.js +307 -0
  193. package/dist/otel/log-bridges.js.map +1 -0
  194. package/dist/otel/metrics.js +1 -1
  195. package/dist/otel/metrics.js.map +1 -1
  196. package/dist/otel/system-metrics.d.ts +39 -0
  197. package/dist/otel/system-metrics.js +166 -0
  198. package/dist/otel/system-metrics.js.map +1 -0
  199. package/dist/otel/tracing.js +6 -2
  200. package/dist/otel/tracing.js.map +1 -1
  201. package/dist/protect/__tests__/protect.test.js +4 -0
  202. package/dist/protect/__tests__/protect.test.js.map +1 -1
  203. package/dist/protect/index.js +9 -4
  204. package/dist/protect/index.js.map +1 -1
  205. package/dist/rasp/__tests__/auto-http.test.d.ts +1 -0
  206. package/dist/rasp/__tests__/auto-http.test.js +136 -0
  207. package/dist/rasp/__tests__/auto-http.test.js.map +1 -0
  208. package/dist/rasp/__tests__/baseline.test.d.ts +1 -0
  209. package/dist/rasp/__tests__/baseline.test.js +86 -0
  210. package/dist/rasp/__tests__/baseline.test.js.map +1 -0
  211. package/dist/rasp/__tests__/benign-corpus.test.d.ts +1 -0
  212. package/dist/rasp/__tests__/benign-corpus.test.js +68 -0
  213. package/dist/rasp/__tests__/benign-corpus.test.js.map +1 -0
  214. package/dist/rasp/__tests__/capture-context.test.d.ts +1 -0
  215. package/dist/rasp/__tests__/capture-context.test.js +135 -0
  216. package/dist/rasp/__tests__/capture-context.test.js.map +1 -0
  217. package/dist/rasp/__tests__/code-hook.test.d.ts +1 -0
  218. package/dist/rasp/__tests__/code-hook.test.js +218 -0
  219. package/dist/rasp/__tests__/code-hook.test.js.map +1 -0
  220. package/dist/rasp/__tests__/config-client.test.d.ts +1 -0
  221. package/dist/rasp/__tests__/config-client.test.js +283 -0
  222. package/dist/rasp/__tests__/config-client.test.js.map +1 -0
  223. package/dist/rasp/__tests__/corpus.d.ts +13 -0
  224. package/dist/rasp/__tests__/corpus.js +111 -0
  225. package/dist/rasp/__tests__/corpus.js.map +1 -0
  226. package/dist/rasp/__tests__/custom-rules.test.d.ts +1 -0
  227. package/dist/rasp/__tests__/custom-rules.test.js +276 -0
  228. package/dist/rasp/__tests__/custom-rules.test.js.map +1 -0
  229. package/dist/rasp/__tests__/db-hook.test.d.ts +1 -0
  230. package/dist/rasp/__tests__/db-hook.test.js +438 -0
  231. package/dist/rasp/__tests__/db-hook.test.js.map +1 -0
  232. package/dist/rasp/__tests__/deception.test.d.ts +1 -0
  233. package/dist/rasp/__tests__/deception.test.js +567 -0
  234. package/dist/rasp/__tests__/deception.test.js.map +1 -0
  235. package/dist/rasp/__tests__/detect.test.d.ts +1 -0
  236. package/dist/rasp/__tests__/detect.test.js +276 -0
  237. package/dist/rasp/__tests__/detect.test.js.map +1 -0
  238. package/dist/rasp/__tests__/esm-exports.test.d.ts +1 -0
  239. package/dist/rasp/__tests__/esm-exports.test.js +20 -0
  240. package/dist/rasp/__tests__/esm-exports.test.js.map +1 -0
  241. package/dist/rasp/__tests__/fs-hook.test.d.ts +1 -0
  242. package/dist/rasp/__tests__/fs-hook.test.js +241 -0
  243. package/dist/rasp/__tests__/fs-hook.test.js.map +1 -0
  244. package/dist/rasp/__tests__/hook-contracts.test.d.ts +1 -0
  245. package/dist/rasp/__tests__/hook-contracts.test.js +201 -0
  246. package/dist/rasp/__tests__/hook-contracts.test.js.map +1 -0
  247. package/dist/rasp/__tests__/hook-kit.d.ts +42 -0
  248. package/dist/rasp/__tests__/hook-kit.js +139 -0
  249. package/dist/rasp/__tests__/hook-kit.js.map +1 -0
  250. package/dist/rasp/__tests__/http-hook.test.d.ts +1 -0
  251. package/dist/rasp/__tests__/http-hook.test.js +250 -0
  252. package/dist/rasp/__tests__/http-hook.test.js.map +1 -0
  253. package/dist/rasp/__tests__/iast.test.d.ts +1 -0
  254. package/dist/rasp/__tests__/iast.test.js +361 -0
  255. package/dist/rasp/__tests__/iast.test.js.map +1 -0
  256. package/dist/rasp/__tests__/include-hook.test.d.ts +1 -0
  257. package/dist/rasp/__tests__/include-hook.test.js +122 -0
  258. package/dist/rasp/__tests__/include-hook.test.js.map +1 -0
  259. package/dist/rasp/__tests__/middleware.test.d.ts +1 -0
  260. package/dist/rasp/__tests__/middleware.test.js +302 -0
  261. package/dist/rasp/__tests__/middleware.test.js.map +1 -0
  262. package/dist/rasp/__tests__/process-hook.test.d.ts +1 -0
  263. package/dist/rasp/__tests__/process-hook.test.js +238 -0
  264. package/dist/rasp/__tests__/process-hook.test.js.map +1 -0
  265. package/dist/rasp/__tests__/reporter.test.d.ts +1 -0
  266. package/dist/rasp/__tests__/reporter.test.js +114 -0
  267. package/dist/rasp/__tests__/reporter.test.js.map +1 -0
  268. package/dist/rasp/__tests__/route.test.d.ts +1 -0
  269. package/dist/rasp/__tests__/route.test.js +46 -0
  270. package/dist/rasp/__tests__/route.test.js.map +1 -0
  271. package/dist/rasp/__tests__/rule-expr.test.d.ts +1 -0
  272. package/dist/rasp/__tests__/rule-expr.test.js +151 -0
  273. package/dist/rasp/__tests__/rule-expr.test.js.map +1 -0
  274. package/dist/rasp/__tests__/rule-phases.test.d.ts +1 -0
  275. package/dist/rasp/__tests__/rule-phases.test.js +271 -0
  276. package/dist/rasp/__tests__/rule-phases.test.js.map +1 -0
  277. package/dist/rasp/__tests__/sinks-hook.test.d.ts +1 -0
  278. package/dist/rasp/__tests__/sinks-hook.test.js +177 -0
  279. package/dist/rasp/__tests__/sinks-hook.test.js.map +1 -0
  280. package/dist/rasp/__tests__/targets.test.d.ts +1 -0
  281. package/dist/rasp/__tests__/targets.test.js +82 -0
  282. package/dist/rasp/__tests__/targets.test.js.map +1 -0
  283. package/dist/rasp/__tests__/template-hook.test.d.ts +1 -0
  284. package/dist/rasp/__tests__/template-hook.test.js +254 -0
  285. package/dist/rasp/__tests__/template-hook.test.js.map +1 -0
  286. package/dist/rasp/__tests__/upload.test.d.ts +1 -0
  287. package/dist/rasp/__tests__/upload.test.js +81 -0
  288. package/dist/rasp/__tests__/upload.test.js.map +1 -0
  289. package/dist/rasp/__tests__/vpatch-engine.test.d.ts +1 -0
  290. package/dist/rasp/__tests__/vpatch-engine.test.js +177 -0
  291. package/dist/rasp/__tests__/vpatch-engine.test.js.map +1 -0
  292. package/dist/rasp/auto-http.d.ts +6 -0
  293. package/dist/rasp/auto-http.js +194 -0
  294. package/dist/rasp/auto-http.js.map +1 -0
  295. package/dist/rasp/baseline.d.ts +35 -0
  296. package/dist/rasp/baseline.js +91 -0
  297. package/dist/rasp/baseline.js.map +1 -0
  298. package/dist/rasp/capture.d.ts +76 -0
  299. package/dist/rasp/capture.js +304 -0
  300. package/dist/rasp/capture.js.map +1 -0
  301. package/dist/rasp/config-client.d.ts +122 -0
  302. package/dist/rasp/config-client.js +337 -0
  303. package/dist/rasp/config-client.js.map +1 -0
  304. package/dist/rasp/context.d.ts +65 -0
  305. package/dist/rasp/context.js +68 -0
  306. package/dist/rasp/context.js.map +1 -0
  307. package/dist/rasp/custom-rules.d.ts +68 -0
  308. package/dist/rasp/custom-rules.js +222 -0
  309. package/dist/rasp/custom-rules.js.map +1 -0
  310. package/dist/rasp/data/default-rules.json +199 -0
  311. package/dist/rasp/data/default-sinks.json +4 -0
  312. package/dist/rasp/data/dnslog-domains.json +11 -0
  313. package/dist/rasp/deception.d.ts +70 -0
  314. package/dist/rasp/deception.js +220 -0
  315. package/dist/rasp/deception.js.map +1 -0
  316. package/dist/rasp/detect.d.ts +68 -0
  317. package/dist/rasp/detect.js +671 -0
  318. package/dist/rasp/detect.js.map +1 -0
  319. package/dist/rasp/engine.d.ts +107 -0
  320. package/dist/rasp/engine.js +330 -0
  321. package/dist/rasp/engine.js.map +1 -0
  322. package/dist/rasp/hooks/code.d.ts +20 -0
  323. package/dist/rasp/hooks/code.js +334 -0
  324. package/dist/rasp/hooks/code.js.map +1 -0
  325. package/dist/rasp/hooks/db.d.ts +48 -0
  326. package/dist/rasp/hooks/db.js +322 -0
  327. package/dist/rasp/hooks/db.js.map +1 -0
  328. package/dist/rasp/hooks/esm.d.ts +7 -0
  329. package/dist/rasp/hooks/esm.js +18 -0
  330. package/dist/rasp/hooks/esm.js.map +1 -0
  331. package/dist/rasp/hooks/fs.d.ts +3 -0
  332. package/dist/rasp/hooks/fs.js +206 -0
  333. package/dist/rasp/hooks/fs.js.map +1 -0
  334. package/dist/rasp/hooks/http.d.ts +4 -0
  335. package/dist/rasp/hooks/http.js +213 -0
  336. package/dist/rasp/hooks/http.js.map +1 -0
  337. package/dist/rasp/hooks/include.d.ts +9 -0
  338. package/dist/rasp/hooks/include.js +79 -0
  339. package/dist/rasp/hooks/include.js.map +1 -0
  340. package/dist/rasp/hooks/marks.d.ts +2 -0
  341. package/dist/rasp/hooks/marks.js +16 -0
  342. package/dist/rasp/hooks/marks.js.map +1 -0
  343. package/dist/rasp/hooks/process.d.ts +22 -0
  344. package/dist/rasp/hooks/process.js +191 -0
  345. package/dist/rasp/hooks/process.js.map +1 -0
  346. package/dist/rasp/hooks/sinks.d.ts +54 -0
  347. package/dist/rasp/hooks/sinks.js +329 -0
  348. package/dist/rasp/hooks/sinks.js.map +1 -0
  349. package/dist/rasp/hooks/template.d.ts +21 -0
  350. package/dist/rasp/hooks/template.js +152 -0
  351. package/dist/rasp/hooks/template.js.map +1 -0
  352. package/dist/rasp/iast-rules.d.ts +82 -0
  353. package/dist/rasp/iast-rules.js +240 -0
  354. package/dist/rasp/iast-rules.js.map +1 -0
  355. package/dist/rasp/iast-scope.d.ts +29 -0
  356. package/dist/rasp/iast-scope.js +54 -0
  357. package/dist/rasp/iast-scope.js.map +1 -0
  358. package/dist/rasp/iast.d.ts +81 -0
  359. package/dist/rasp/iast.js +272 -0
  360. package/dist/rasp/iast.js.map +1 -0
  361. package/dist/rasp/index.d.ts +52 -0
  362. package/dist/rasp/index.js +280 -0
  363. package/dist/rasp/index.js.map +1 -0
  364. package/dist/rasp/lexers.d.ts +32 -0
  365. package/dist/rasp/lexers.js +444 -0
  366. package/dist/rasp/lexers.js.map +1 -0
  367. package/dist/rasp/middleware.d.ts +155 -0
  368. package/dist/rasp/middleware.js +568 -0
  369. package/dist/rasp/middleware.js.map +1 -0
  370. package/dist/rasp/model-output.d.ts +14 -0
  371. package/dist/rasp/model-output.js +107 -0
  372. package/dist/rasp/model-output.js.map +1 -0
  373. package/dist/rasp/normalize.d.ts +23 -0
  374. package/dist/rasp/normalize.js +140 -0
  375. package/dist/rasp/normalize.js.map +1 -0
  376. package/dist/rasp/reporter.d.ts +60 -0
  377. package/dist/rasp/reporter.js +230 -0
  378. package/dist/rasp/reporter.js.map +1 -0
  379. package/dist/rasp/rule-expr.d.ts +236 -0
  380. package/dist/rasp/rule-expr.js +1253 -0
  381. package/dist/rasp/rule-expr.js.map +1 -0
  382. package/dist/rasp/template.d.ts +53 -0
  383. package/dist/rasp/template.js +336 -0
  384. package/dist/rasp/template.js.map +1 -0
  385. package/dist/rasp/types.d.ts +110 -0
  386. package/dist/rasp/types.js +51 -0
  387. package/dist/rasp/types.js.map +1 -0
  388. package/dist/rasp/vpatch.d.ts +55 -0
  389. package/dist/rasp/vpatch.js +120 -0
  390. package/dist/rasp/vpatch.js.map +1 -0
  391. package/dist/register.js +52 -11
  392. package/dist/register.js.map +1 -1
  393. package/dist/semantic-convention.d.ts +2 -0
  394. package/dist/semantic-convention.js +5 -0
  395. package/dist/semantic-convention.js.map +1 -1
  396. package/dist/types.d.ts +77 -1
  397. package/dist/zero-code.d.ts +8 -0
  398. package/dist/zero-code.js +38 -0
  399. package/dist/zero-code.js.map +1 -0
  400. package/package.json +18 -2
@@ -0,0 +1 @@
1
+ {"version":3,"file":"http-hook.test.js","sourceRoot":"","sources":["../../../src/rasp/__tests__/http-hook.test.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA,6BAA8B;AAC9B,+BAAgC;AAChC,2BAA4B;AAE5B,kDAAoC;AACpC,wCAA2C;AAC3C,sCAA0D;AAC1D,oCAA4C;AAC5C,wCAAqE;AACrE,oCAA8C;AAE9C,IAAI,MAAmB,CAAC;AACxB,IAAI,GAAW,CAAC;AAChB,IAAI,IAAY,CAAC;AACjB,IAAI,QAAmB,CAAC;AACxB,MAAM,OAAO,GAAG,CAAI,KAAa,EAAE,EAAW,EAAK,EAAE,CAAC,IAAA,uBAAa,EACjE,CAAC,EAAE,KAAK,EAAE,GAAG,EAAE,SAAS,EAAE,MAAM,EAAE,SAAS,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CACxE,CAAC;AACF,SAAS,SAAS,CAAC,OAA4B,OAAO,EAAE,gBAA0B,EAAE;IAClF,IAAA,wBAAe,EAAC,EAAE,OAAO,EAAE,IAAI,EAAE,eAAe,EAAE,GAAG,EAAE,IAAI,EAAE,KAAK,EAAE,EAAE,aAAa,EAAE,EAAE,GAAG,EAAE,EAAE,EAAE,CAAC,CAAC;AACpG,CAAC;AACD,SAAS,OAAO,CAAC,OAA2B;IAC1C,OAAO,IAAI,OAAO,CAAC,CAAC,OAAO,EAAE,MAAM,EAAE,EAAE;QACrC,OAAO,CAAC,EAAE,CAAC,OAAO,EAAE,MAAM,CAAC,CAAC;QAC5B,OAAO,CAAC,EAAE,CAAC,UAAU,EAAE,QAAQ,CAAC,EAAE;YAChC,QAAQ,CAAC,MAAM,EAAE,CAAC;YAClB,QAAQ,CAAC,EAAE,CAAC,KAAK,EAAE,OAAO,CAAC,CAAC;YAC5B,QAAQ,CAAC,EAAE,CAAC,OAAO,EAAE,MAAM,CAAC,CAAC;QAC/B,CAAC,CAAC,CAAC;IACL,CAAC,CAAC,CAAC;AACL,CAAC;AACD,UAAU,CAAC,KAAK,IAAI,EAAE;IACpB,SAAS,EAAE,CAAC;IACZ,IAAA,qBAAY,EAAC,EAAE,GAAG,EAAE,GAAG,EAAE,CAAC,SAAS,EAAE,CAAC,CAAC;IACvC,QAAQ,GAAG,IAAI,CAAC,EAAE,EAAE,CAAC;IACrB,MAAM,GAAG,IAAI,CAAC,YAAY,CAAC,CAAC,IAAI,EAAE,GAAG,EAAE,EAAE,GAAG,QAAQ,EAAE,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;IAC/E,MAAM,IAAI,OAAO,CAAO,OAAO,CAAC,EAAE,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,EAAE,WAAW,EAAE,OAAO,CAAC,CAAC,CAAC;IAC3E,IAAI,GAAI,MAAM,CAAC,OAAO,EAAkB,CAAC,IAAI,CAAC;IAC9C,GAAG,GAAG,oBAAoB,IAAI,IAAI,CAAC;AACrC,CAAC,CAAC,CAAC;AACH,SAAS,CAAC,KAAK,IAAI,EAAE;IACnB,IAAA,yBAAkB,GAAE,CAAC;IACrB,IAAI,CAAC,eAAe,EAAE,CAAC;IACvB,IAAA,wBAAe,EAAC,EAAE,OAAO,EAAE,KAAK,EAAE,eAAe,EAAE,GAAG,EAAE,GAAG,EAAE,EAAE,EAAE,CAAC,CAAC;IACnE,IAAA,qBAAY,EAAC,SAAS,CAAC,CAAC;IACxB,MAAM,CAAC,mBAAmB,EAAE,CAAC;IAC7B,MAAM,IAAI,OAAO,CAAO,CAAC,OAAO,EAAE,MAAM,EAAE,EAAE,CAAC,MAAM,CAAC,KAAK,CAAC,KAAK,CAAC,EAAE,CAAC,KAAK,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,OAAO,EAAE,CAAC,CAAC,CAAC;AACzG,CAAC,CAAC,CAAC;AAEH,KAAK,MAAM,CAAC,KAAK,EAAE,MAAM,CAAC,IAAI,CAAC,CAAC,IAAI,EAAE,OAAO,CAAC,EAAE,CAAC,KAAK,EAAE,QAAQ,CAAC,CAAU,EAAE,CAAC;IAC5E,QAAQ,CAAC,MAAM,EAAE,GAAG,EAAE;QACpB,IAAI,CAAC,IAAI,CAAC,CAAC,SAAS,EAAE,KAAK,CAAU,CAAC,CAAC,+BAA+B,EAAE,GAAG,CAAC,EAAE;YAC5E,MAAM,QAAQ,GAAG,IAAI,CAAC,KAAK,CAAC,KAAK,EAAE,GAAG,CAAC,CAAC,kBAAkB,CAAC,CAAC,GAAG,EAAE,CAAC,CAAC,EAAE,CAAC,CAAoC,CAAC,CAAC;YAC5G,MAAM,QAAQ,GAAG,IAAI,CAAC,KAAK,CAAC,MAAM,EAAE,gBAAgB,CAAC,CAAC,eAAe,CAAC,IAAI,CAAC,CAAC;YAC5E,IAAI,CAAC,KAAK,CAAC,MAAM,EAAE,YAAY,CAAC,CAAC,eAAe,CAAC,IAAI,CAAC,CAAC;YACvD,IAAA,uBAAgB,EAAC,EAAE,kBAAkB,EAAE,EAAE,EAAE,CAAC,CAAC;YAC7C,MAAM,QAAQ,GAAG,GAAG,MAAM,eAAe,IAAI,IAAI,CAAC;YAClD,MAAM,QAAQ,GAAG,GAAG,EAAE,CAAC,SAAS,CAAC;YACjC,MAAM,KAAK,GAAgB;gBACzB,CAAC,QAAQ,CAAC,EAAE,CAAC,IAAI,GAAG,CAAC,QAAQ,CAAC,CAAC,EAAE,CAAC,QAAQ,EAAE,QAAQ,CAAC;gBACrD,CAAC,QAAQ,EAAE,EAAE,EAAE,QAAQ,CAAC,EAAE,CAAC,IAAI,GAAG,CAAC,QAAQ,CAAC,EAAE,EAAE,EAAE,QAAQ,CAAC;gBAC3D,CAAC,EAAE,QAAQ,EAAE,MAAM,EAAE,QAAQ,EAAE,WAAW,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,EAAE,QAAQ,CAAC;gBACzE,CAAC,EAAE,IAAI,EAAE,WAAW,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,CAAC;aAC1C,CAAC;YACF,KAAK,MAAM,MAAM,IAAI,KAAK,EAAE,CAAC;gBAC3B,OAAO,CAAC,KAAK,CAAC,KAAK,CAAC,GAAG,CAAC,EAAE,KAAK,EAAE,MAAM,CAAC,CAAC;gBACzC,MAAM,CAAC,QAAQ,CAAC,CAAC,wBAAwB,CAAC,QAAQ,EAAE,EAAE,EAAE,EAAE,CAAC,CAAC;YAC9D,CAAC;YACD,MAAM,CAAC,QAAQ,CAAC,CAAC,qBAAqB,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC;YACrD,MAAM,CAAC,QAAQ,CAAC,CAAC,qBAAqB,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC;QACvD,CAAC,CAAC,CAAC;IACL,CAAC,CAAC,CAAC;AACL,CAAC;AAED,IAAI,CAAC,gEAAgE,EAAE,GAAG,EAAE;IAC1E,MAAM,QAAQ,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,EAAE,SAAS,CAAC,CAAC;IAC7C,IAAA,uBAAgB,EAAC,EAAE,kBAAkB,EAAE,EAAE,EAAE,CAAC,CAAC;IAC7C,MAAM,CAAC,GAAG,EAAE,CAAC,OAAO,CAAC,GAAG,EAAE,GAAG,EAAE,CAAC,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,wBAAgB,CAAC,CAAC;IAC9E,MAAM,CAAC,QAAQ,CAAC,CAAC,GAAG,CAAC,gBAAgB,EAAE,CAAC;IACxC,MAAM,CAAC,QAAQ,CAAC,CAAC,GAAG,CAAC,gBAAgB,EAAE,CAAC;AAC1C,CAAC,CAAC,CAAC;AAEH,IAAI,CAAC,mDAAmD,EAAE,KAAK,IAAI,EAAE;IACnE,MAAM,QAAQ,GAAG,IAAI,CAAC,KAAK,CAAC,MAAM,EAAE,YAAY,CAAC,CAAC;IAClD,IAAA,uBAAgB,EAAC,EAAE,kBAAkB,EAAE,EAAE,EAAE,CAAC,CAAC;IAC7C,MAAM,OAAO,CAAC,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC;IAC7B,MAAM,CAAC,QAAQ,CAAC,CAAC,qBAAqB,CAAC,CAAC,CAAC,CAAC;IAC1C,MAAM,CAAC,QAAQ,CAAC,CAAC,qBAAqB,CAAC,CAAC,CAAC,CAAC;AAC5C,CAAC,CAAC,CAAC;AAEH,IAAI,CAAC,yCAAyC,EAAE,KAAK,IAAI,EAAE;IACzD,SAAS,CAAC,SAAS,CAAC,CAAC;IACrB,MAAM,MAAM,GAAG,IAAI,CAAC,EAAE,EAAE,CAAC;IACzB,IAAA,qBAAY,EAAC,EAAE,GAAG,EAAE,MAAM,EAAE,CAAC,CAAC;IAC9B,IAAA,uBAAgB,EAAC,EAAE,kBAAkB,EAAE,EAAE,EAAE,CAAC,CAAC;IAC7C,MAAM,OAAO,CAAC,OAAO,CAAC,GAAG,EAAE,GAAG,EAAE,CAAC,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;IACjD,MAAM,CAAC,QAAQ,CAAC,CAAC,qBAAqB,CAAC,CAAC,CAAC,CAAC;IAC1C,MAAM,CAAC,MAAM,CAAC,CAAC,oBAAoB,CAAC,MAAM,CAAC,gBAAgB,CAAC,EAAE,KAAK,EAAE,MAAM,CAAC,gBAAgB,CAAC;YAC3F,yBAAyB,EAAE,WAAW;SACvC,CAAC,EAAE,CAAC,EAAE,MAAM,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC,CAAC;AAC7B,CAAC,CAAC,CAAC;AAEH,IAAI,CAAC,uEAAuE,EAAE,KAAK,IAAI,EAAE;IACvF,SAAS,CAAC,OAAO,EAAE,CAAC,iBAAiB,CAAC,CAAC,CAAC;IACxC,IAAA,uBAAgB,EAAC,EAAE,kBAAkB,EAAE,EAAE,EAAE,CAAC,CAAC;IAC7C,MAAM,CAAC,GAAG,EAAE,CAAC,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,OAAO,CAAC,wBAAgB,CAAC,CAAC;IACtD,IAAA,yBAAkB,GAAE,CAAC;IACrB,IAAA,uBAAgB,EAAC,EAAE,kBAAkB,EAAE,CAAC,WAAW,CAAC,EAAE,CAAC,CAAC;IACxD,MAAM,OAAO,CAAC,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC;IAC7B,MAAM,CAAC,QAAQ,CAAC,CAAC,qBAAqB,CAAC,CAAC,CAAC,CAAC;AAC5C,CAAC,CAAC,CAAC;AAEH,IAAI,CAAC,IAAI,CAAC,CAAC,KAAK,EAAE,IAAI,CAAC,CAAC,CAAC,iDAAiD,EAAE,GAAG,CAAC,EAAE;IAChF,IAAA,uBAAgB,EAAC,EAAE,kBAAkB,EAAE,EAAE,EAAE,CAAC,CAAC;IAC7C,MAAM,QAAQ,GAAG,iBAAiB,CAAC;IACnC,MAAM,QAAQ,GAAG,UAAU,QAAQ,IAAI,IAAI,IAAI,CAAC;IAChD,MAAM,MAAM,GAAG,IAAI,CAAC,EAAE,CAAC,CAAC,KAAa,EAAE,QAAiB,EAAE,QAAsC,EAAE,EAAE;QAClG,OAAO,CAAC,QAAQ,CAAC,GAAG,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,QAAQ,CAAC,IAAI,EAAE,CAAC,EAAE,OAAO,EAAE,WAAW,EAAE,MAAM,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,IAAI,EAAE,WAAW,EAAE,CAAC,CAAC,CAAC,CAAC;IACvH,CAAC,CAAC,CAAC;IACH,MAAM,OAAO,GAAG,EAAE,MAAM,EAAE,MAAsC,EAAE,GAAG,EAAE,CAAC;IACxE,MAAM,OAAO,GAAG,OAAO,CAAC,QAAQ,EAAE,GAAG,EAAE,CAAC,IAAI,CAAC,GAAG,CAAC,QAAQ,EAAE,OAAO,CAAC,CAAC,CAAC;IACrE,MAAM,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;IACpC,OAAO,IAAI,OAAO,CAAO,CAAC,OAAO,EAAE,MAAM,EAAE,EAAE;QAC3C,OAAO,CAAC,EAAE,CAAC,UAAU,EAAE,GAAG,EAAE,CAAC,MAAM,CAAC,IAAI,KAAK,CAAC,uBAAuB,CAAC,CAAC,CAAC,CAAC;QACzE,OAAO,CAAC,EAAE,CAAC,OAAO,EAAE,KAAK,CAAC,EAAE;YAC1B,IAAI,CAAC;gBACH,MAAM,CAAC,KAAK,CAAC,CAAC,cAAc,CAAC,wBAAgB,CAAC,CAAC;gBAC/C,MAAM,CAAC,QAAQ,CAAC,CAAC,GAAG,CAAC,gBAAgB,EAAE,CAAC;gBACxC,OAAO,EAAE,CAAC;YACZ,CAAC;YAAC,OAAO,OAAO,EAAE,CAAC;gBAAC,MAAM,CAAC,OAAO,CAAC,CAAC;YAAC,CAAC;QACxC,CAAC,CAAC,CAAC;IACL,CAAC,CAAC,CAAC;AACL,CAAC,CAAC,CAAC;AAEH,IAAI,CAAC,8CAA8C,EAAE,KAAK,IAAI,EAAE;IAC9D,MAAM,QAAQ,GAAG,IAAI,CAAC,KAAK,CAAC,UAAU,EAAE,OAAO,CAAC,CAAC;IACjD,IAAA,uBAAgB,EAAC,EAAE,kBAAkB,EAAE,EAAE,EAAE,CAAC,CAAC;IAC7C,MAAM,MAAM,CAAC,OAAO,CAAC,GAAG,EAAE,GAAG,EAAE,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,cAAc,CAAC,wBAAgB,CAAC,CAAC;IACtF,MAAM,CAAC,QAAQ,CAAC,CAAC,GAAG,CAAC,gBAAgB,EAAE,CAAC;IACxC,MAAM,CAAC,QAAQ,CAAC,CAAC,GAAG,CAAC,gBAAgB,EAAE,CAAC;AAC1C,CAAC,CAAC,CAAC;AAEH,QAAQ,CAAC,4DAA4D,EAAE,GAAG,EAAE;IAC1E,MAAM,QAAQ,GAAG,GAAG,EAAE,CAAC,IAAA,wBAAe,EAAC;QACrC,OAAO,EAAE,IAAI,EAAE,eAAe,EAAE,GAAG,EAAE,IAAI,EAAE,OAAO,EAAE,OAAO,EAAE,EAAE,QAAQ,EAAE,SAAS,EAAE,IAAI,EAAE,OAAO,EAAE;QACnG,KAAK,EAAE,EAAE,aAAa,EAAE,CAAC,iBAAiB,CAAC,EAAE,EAAE,GAAG,EAAE,EAAE;KACvD,CAAC,CAAC;IAEH,IAAI,CAAC,UAAU,EAAE,GAAG,EAAE;QACpB,QAAQ,EAAE,CAAC;QACX,MAAM,QAAQ,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC;QACzC,IAAA,uBAAgB,EAAC,EAAE,kBAAkB,EAAE,EAAE,EAAE,CAAC,CAAC;QAC7C,MAAM,CAAC,GAAG,EAAE,CAAC,OAAO,CAAC,GAAG,EAAE,GAAG,EAAE,CAAC,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,MAAM,CAAC,gBAAgB,CAAC,EAAE,MAAM,EAAE,MAAM,EAAE,IAAI,EAAE,eAAe,EAAE,CAAC,CAAC,CAAC;QAC5H,MAAM,CAAC,QAAQ,CAAC,CAAC,GAAG,CAAC,gBAAgB,EAAE,CAAC;QACxC,MAAM,CAAC,QAAQ,CAAC,CAAC,GAAG,CAAC,gBAAgB,EAAE,CAAC;IAC1C,CAAC,CAAC,CAAC;IAEH,IAAI,CAAC,OAAO,EAAE,KAAK,IAAI,EAAE;QACvB,QAAQ,EAAE,CAAC;QACX,MAAM,QAAQ,GAAG,IAAI,CAAC,KAAK,CAAC,UAAU,EAAE,OAAO,CAAC,CAAC;QACjD,IAAA,uBAAgB,EAAC,EAAE,kBAAkB,EAAE,EAAE,EAAE,CAAC,CAAC;QAC7C,MAAM,MAAM,CAAC,OAAO,CAAC,GAAG,EAAE,GAAG,EAAE,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,aAAa,CAAC,EAAE,MAAM,EAAE,MAAM,EAAE,IAAI,EAAE,eAAe,EAAE,CAAC,CAAC;QAC9G,MAAM,CAAC,QAAQ,CAAC,CAAC,GAAG,CAAC,gBAAgB,EAAE,CAAC;QACxC,MAAM,CAAC,QAAQ,CAAC,CAAC,GAAG,CAAC,gBAAgB,EAAE,CAAC;IAC1C,CAAC,CAAC,CAAC;AACL,CAAC,CAAC,CAAC;AAEH,IAAI,CAAC,oDAAoD,EAAE,KAAK,IAAI,EAAE;IACpE,MAAM,QAAQ,GAAG,IAAI,CAAC,KAAK,CAAC,UAAU,EAAE,OAAO,CAAC,CAAC;IACjD,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,QAAQ,EAAE,QAAQ,CAAC,CAAC,kBAAkB,CAAC,CAAC,KAAK,IAAI,EAAE,CAAC,CAAC,EAAE,OAAO,EAAE,WAAW,EAAE,MAAM,EAAE,CAAC,EAAE,CAAC,CAA0C,CAAC,CAAC;IACpJ,IAAA,uBAAgB,EAAC,EAAE,kBAAkB,EAAE,EAAE,EAAE,CAAC,CAAC;IAC7C,MAAM,QAAQ,GAAG,0BAA0B,IAAI,IAAI,CAAC;IACpD,MAAM,MAAM,CAAC,OAAO,CAAC,QAAQ,EAAE,GAAG,EAAE,CAAC,KAAK,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,cAAc,CAAC,wBAAgB,CAAC,CAAC;IAChG,MAAM,CAAC,QAAQ,CAAC,CAAC,GAAG,CAAC,gBAAgB,EAAE,CAAC;AAC1C,CAAC,CAAC,CAAC;AAEH,IAAI,CAAC,4BAA4B,EAAE,KAAK,IAAI,EAAE;IAC5C,IAAA,wBAAe,EAAC,EAAE,OAAO,EAAE,KAAK,EAAE,eAAe,EAAE,GAAG,EAAE,GAAG,EAAE,EAAE,EAAE,CAAC,CAAC;IACnE,MAAM,QAAQ,GAAG,IAAI,CAAC,KAAK,CAAC,MAAM,EAAE,YAAY,CAAC,CAAC;IAClD,IAAA,uBAAgB,EAAC,EAAE,kBAAkB,EAAE,EAAE,EAAE,CAAC,CAAC;IAC7C,MAAM,OAAO,CAAC,OAAO,CAAC,GAAG,EAAE,GAAG,EAAE,CAAC,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;IACjD,MAAM,CAAC,QAAQ,CAAC,CAAC,GAAG,CAAC,gBAAgB,EAAE,CAAC;AAC1C,CAAC,CAAC,CAAC;AAEH,IAAI,CAAC,2BAA2B,EAAE,KAAK,IAAI,EAAE;IAC3C,IAAI,CAAC,KAAK,CAAC,MAAM,EAAE,gBAAgB,CAAC,CAAC,kBAAkB,CAAC,GAAG,EAAE,GAAG,MAAM,IAAI,KAAK,CAAC,aAAa,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;IACnG,IAAA,uBAAgB,EAAC,EAAE,kBAAkB,EAAE,EAAE,EAAE,CAAC,CAAC;IAC7C,MAAM,OAAO,CAAC,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC;IAC7B,MAAM,CAAC,QAAQ,CAAC,CAAC,qBAAqB,CAAC,CAAC,CAAC,CAAC;AAC5C,CAAC,CAAC,CAAC;AAEH,IAAI,CAAC,+DAA+D,EAAE,GAAG,EAAE;IACzE,MAAM,UAAU,GAAG,MAAM,CAAC,wBAAwB,CAAC,UAAU,EAAE,OAAO,CAAE,CAAC;IACzE,MAAM,UAAU,GAAG,UAAU,CAAC,KAAK,CAAC;IACpC,MAAM,CAAC,cAAc,CAAC,UAAU,EAAE,OAAO,EAAE,EAAE,YAAY,EAAE,IAAI,EAAE,UAAU,EAAE,UAAU,CAAC,UAAU,EAAE,GAAG,EAAE,GAAG,EAAE,CAAC,UAAU,EAAE,CAAC,CAAC;IAC7H,IAAI,CAAC;QACH,MAAM,QAAQ,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,EAAE,SAAS,CAAC,CAAC;QAC7C,MAAM,CAAC,IAAA,uBAAgB,EAAC,EAAE,kBAAkB,EAAE,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QAChE,MAAM,CAAC,GAAG,EAAE,CAAC,OAAO,CAAC,GAAG,EAAE,GAAG,EAAE,CAAC,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,wBAAgB,CAAC,CAAC;QAC9E,MAAM,CAAC,QAAQ,CAAC,CAAC,GAAG,CAAC,gBAAgB,EAAE,CAAC;QACxC,MAAM,CAAC,MAAM,CAAC,wBAAwB,CAAC,UAAU,EAAE,OAAO,CAAE,CAAC,GAAG,CAAC,CAAC,WAAW,EAAE,CAAC;IAClF,CAAC;YAAS,CAAC;QACT,IAAA,yBAAkB,GAAE,CAAC;QACrB,MAAM,CAAC,cAAc,CAAC,UAAU,EAAE,OAAO,EAAE,UAAU,CAAC,CAAC;IACzD,CAAC;AACH,CAAC,CAAC,CAAC;AAEH,IAAI,CAAC,+EAA+E,EAAE,GAAG,EAAE;IACzF,MAAM,CAAC,IAAA,0BAAkB,EAAC,CAAC,8BAA8B,EAAE,6BAA6B,EAAE,SAAS,EAAE,WAAW,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,kBAAkB,EAAE,KAAK,CAAC,CAAC,CAAC;AAC3J,CAAC,CAAC,CAAC;AAEH,IAAI,CAAC,sDAAsD,EAAE,GAAG,EAAE;IAChE,MAAM,OAAO,GAAG,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC,OAAO,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,SAAS,EAAE,KAAK,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,EAAE,KAAK,EAAE,GAAG,EAAE,CAAC,CAAC,CAAC,CAAC;IAChG,MAAM,KAAK,GAAG,CAAC,GAAG,OAAO,EAAE,EAAE,KAAK,EAAE,UAAU,EAAE,GAAG,EAAE,OAAO,EAAE,CAAC,CAAC,GAAG,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC;QAC5E,GAAG,KAAK,EAAE,UAAU,EAAE,MAAM,CAAC,wBAAwB,CAAC,KAAK,CAAC,KAAK,EAAE,KAAK,CAAC,GAAG,CAAC;KAC9E,CAAC,CAAC,CAAC;IACJ,MAAM,CAAC,IAAA,uBAAgB,EAAC,EAAE,kBAAkB,EAAE,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IAChE,MAAM,OAAO,GAAG,IAAI,CAAC,OAAO,CAAC;IAC7B,MAAM,CAAC,IAAA,uBAAgB,EAAC,EAAE,kBAAkB,EAAE,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IAChE,MAAM,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;IACnC,KAAK,MAAM,EAAE,KAAK,EAAE,GAAG,EAAE,UAAU,EAAE,IAAI,KAAK,EAAE,CAAC;QAC/C,MAAM,EAAE,GAAG,OAAO,CAAC,GAAG,CAAC,KAAK,EAAE,GAAG,CAAqC,CAAC;QACvE,MAAM,CAAC,EAAE,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,UAAW,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;QAC7C,MAAM,CAAC,EAAE,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,UAAW,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC;IACnD,CAAC;IACD,IAAA,yBAAkB,GAAE,CAAC;IACrB,IAAA,yBAAkB,GAAE,CAAC;IACrB,KAAK,MAAM,EAAE,KAAK,EAAE,GAAG,EAAE,UAAU,EAAE,IAAI,KAAK;QAAE,MAAM,CAAC,MAAM,CAAC,wBAAwB,CAAC,KAAK,EAAE,GAAG,CAAC,CAAC,CAAC,OAAO,CAAC,UAAU,CAAC,CAAC;AAC1H,CAAC,CAAC,CAAC"}
@@ -0,0 +1 @@
1
+ export {};
@@ -0,0 +1,361 @@
1
+ "use strict";
2
+ var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
3
+ if (k2 === undefined) k2 = k;
4
+ var desc = Object.getOwnPropertyDescriptor(m, k);
5
+ if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
6
+ desc = { enumerable: true, get: function() { return m[k]; } };
7
+ }
8
+ Object.defineProperty(o, k2, desc);
9
+ }) : (function(o, m, k, k2) {
10
+ if (k2 === undefined) k2 = k;
11
+ o[k2] = m[k];
12
+ }));
13
+ var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
14
+ Object.defineProperty(o, "default", { enumerable: true, value: v });
15
+ }) : function(o, v) {
16
+ o["default"] = v;
17
+ });
18
+ var __importStar = (this && this.__importStar) || (function () {
19
+ var ownKeys = function(o) {
20
+ ownKeys = Object.getOwnPropertyNames || function (o) {
21
+ var ar = [];
22
+ for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
23
+ return ar;
24
+ };
25
+ return ownKeys(o);
26
+ };
27
+ return function (mod) {
28
+ if (mod && mod.__esModule) return mod;
29
+ var result = {};
30
+ if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
31
+ __setModuleDefault(result, mod);
32
+ return result;
33
+ };
34
+ })();
35
+ Object.defineProperty(exports, "__esModule", { value: true });
36
+ /**
37
+ * Passive IAST (README "Passive IAST"): the shared conformance corpus
38
+ * (sdk/rasp/testdata/iast.json), the thresholds, and how the engine arms,
39
+ * samples, dedupes and reports vulnerabilities without ever blocking.
40
+ */
41
+ const fs = __importStar(require("fs"));
42
+ const context_1 = require("../context");
43
+ const engine_1 = require("../engine");
44
+ const iast_1 = require("../iast");
45
+ const iast_scope_1 = require("../iast-scope");
46
+ const iast_rules_1 = require("../iast-rules");
47
+ const detect_1 = require("../detect");
48
+ const fs_1 = require("../hooks/fs");
49
+ const types_1 = require("../types");
50
+ const corpus_1 = require("./corpus");
51
+ const reporter_1 = require("../reporter");
52
+ const corpus = (0, corpus_1.loadJson)('testdata/iast.json');
53
+ const cases = corpus.cases;
54
+ const fingerprints = corpus.fingerprints;
55
+ /** Runs one corpus case through the detectors with an IAST slot armed. */
56
+ function runIastCase(c) {
57
+ const inputs = (0, corpus_1.normalise)(c.inputs);
58
+ const { result, vuln } = (0, iast_scope_1.captureVulnerability)(() => {
59
+ switch (c.check) {
60
+ case 'sql':
61
+ return (0, detect_1.detectSql)(c.query, inputs, c.dialect);
62
+ case 'command': {
63
+ if (typeof c.command === 'string')
64
+ return (0, detect_1.detectCommand)(c.command, inputs) ?? (0, detect_1.detectShellSpawn)({ command: c.command, inRequest: true, allow: [] });
65
+ const argv = c.argv;
66
+ const script = (0, detect_1.shellScriptOf)(argv);
67
+ return (0, detect_1.detectArgv)(argv, inputs) ?? (script ? (0, detect_1.detectCommand)(script, inputs) : null) ?? (0, detect_1.detectShellSpawn)({ argv0: argv[0], inRequest: true, allow: [] });
68
+ }
69
+ case 'path':
70
+ return (0, detect_1.detectPath)(c.path, c.op, inputs, c.fileRoots || []);
71
+ case 'ssrf':
72
+ return (0, detect_1.detectSsrf)(c.url, inputs, c.resolved || []);
73
+ case 'code':
74
+ return (0, detect_1.detectCode)(c.code, inputs);
75
+ case 'include':
76
+ return (0, detect_1.detectInclude)(c.specifier, inputs);
77
+ case 'deser':
78
+ return (0, detect_1.detectDeserialization)(c.format, c.data, inputs);
79
+ case 'xml':
80
+ return (0, detect_1.detectXml)(c.xml, inputs, Boolean(c.resolvesExternal));
81
+ }
82
+ throw new Error(`unknown check ${c.check}`);
83
+ });
84
+ return { finding: result, vuln };
85
+ }
86
+ describe('passive IAST conformance corpus', () => {
87
+ it('is version 1 with cases for every rule', () => {
88
+ expect(corpus.version).toBe(1);
89
+ const rules = new Set(corpus.cases.map((c) => c.expect.rule).filter(Boolean));
90
+ expect([...rules].sort()).toEqual([...iast_rules_1.VULN_RULES].sort());
91
+ });
92
+ it.each(cases.map((c) => [c.name, c]))('%s', (_name, c) => {
93
+ const { finding, vuln } = runIastCase(c);
94
+ // Every case is harmless: the attack checks fire nothing.
95
+ expect(finding).toBeNull();
96
+ if (c.expect.rule === null) {
97
+ expect(vuln).toBeNull();
98
+ }
99
+ else {
100
+ expect(vuln?.rule).toBe(c.expect.rule);
101
+ if (c.expect.position)
102
+ expect(vuln?.position).toBe(c.expect.position);
103
+ if (c.expect.input_key)
104
+ expect(vuln?.input.key).toBe(c.expect.input_key);
105
+ }
106
+ });
107
+ it.each(fingerprints.map((f) => [f.fingerprint, f]))('fingerprint %s', (_fp, f) => {
108
+ expect((0, iast_1.vulnFingerprint)(f.route, f.sink, f.input_key, f.rule)).toBe(f.fingerprint);
109
+ });
110
+ it('notes nothing when no slot is armed', () => {
111
+ expect((0, iast_scope_1.iastArmed)()).toBe(false);
112
+ const inputs = [{ value: 'alice@example.com', key: 'query.email', source: 'request' }];
113
+ expect((0, detect_1.detectSql)("SELECT 1 FROM t WHERE e = 'alice@example.com'", inputs)).toBeNull();
114
+ expect((0, iast_scope_1.iastArmed)()).toBe(false);
115
+ });
116
+ });
117
+ describe('thresholds', () => {
118
+ it.each([
119
+ ['1', false],
120
+ ['42', false],
121
+ ['100', false],
122
+ ['true', false],
123
+ ['active', false],
124
+ ['desc', false],
125
+ ['aaaaaaaaaa', false],
126
+ ['----', false],
127
+ ['1234', true],
128
+ ['created_at', true],
129
+ ['en-GB', true],
130
+ ['alice@example.com', true],
131
+ ['Saint Paul', true],
132
+ ['password', true],
133
+ ])('%s qualifies: %s', (value, expected) => {
134
+ expect((0, iast_rules_1.qualifies)(value)).toBe(expected);
135
+ });
136
+ });
137
+ describe('passive IAST in the engine', () => {
138
+ const events = [];
139
+ const sink = { add: (e) => void events.push(e) };
140
+ let clock = 1000000;
141
+ const email = [{ value: 'alice@example.com', key: 'query.email', source: 'request' }];
142
+ const query = "SELECT id FROM orders WHERE customer_email = 'alice@example.com'";
143
+ const runSql = (inputs = email, q = query) => (0, context_1.runWithInputs)(inputs, () => (0, engine_1.check)('pg.query', () => (0, detect_1.detectSql)(q, inputs, 'postgres')), { inRequest: true, method: 'get', route: '/api/orders/:id', framework: 'express' });
144
+ const setup = (o = {}) => {
145
+ (0, engine_1.configureEngine)({ enabled: true, applicationName: 'orders-api', mode: o.mode ?? 'block', env: {} });
146
+ (0, engine_1.setEventSink)(sink);
147
+ (0, iast_1.configureIast)({ option: o.iast, applicationName: 'orders-api', environment: o.environment, env: o.env ?? {}, now: () => clock, random: o.random });
148
+ (0, iast_1.setIastSink)(sink);
149
+ };
150
+ beforeEach(() => {
151
+ events.length = 0;
152
+ clock = 1000000;
153
+ });
154
+ afterEach(() => {
155
+ (0, iast_1.resetIast)();
156
+ (0, engine_1.setEventSink)(undefined);
157
+ (0, engine_1.setRemoteConfig)(undefined);
158
+ (0, engine_1.configureEngine)({ enabled: false, applicationName: 'a', env: {} });
159
+ });
160
+ const vulns = () => events.filter((e) => e.name === iast_1.RASP_VULNERABILITY);
161
+ it('is off by default', () => {
162
+ setup();
163
+ expect((0, iast_1.iastEnabled)()).toBe(false);
164
+ expect(runSql()).toBeNull();
165
+ expect(vulns()).toEqual([]);
166
+ });
167
+ it('reports a vulnerability once, with locations and no value, and never blocks', () => {
168
+ setup({ iast: true, mode: 'block' });
169
+ expect(runSql()).toBeNull();
170
+ expect(vulns()).toHaveLength(1);
171
+ const a = vulns()[0].attrs;
172
+ expect(a).toMatchObject({
173
+ 'shield360.rasp.kind': 'vulnerability',
174
+ 'shield360.rasp.app': 'orders-api',
175
+ 'shield360.rasp.rule': 'vuln.sql_concat',
176
+ 'shield360.rasp.sink': 'pg.query',
177
+ 'shield360.rasp.source': 'request',
178
+ 'shield360.rasp.input_key': 'query.email',
179
+ 'shield360.rasp.route': '/api/orders/:id',
180
+ 'shield360.rasp.method': 'GET',
181
+ 'shield360.rasp.framework': 'express',
182
+ 'shield360.rasp.language': 'node',
183
+ 'shield360.rasp.config_version': 'local',
184
+ 'shield360.rasp.vuln.position': 'string',
185
+ 'shield360.rasp.count': '1',
186
+ });
187
+ expect(a['shield360.rasp.vuln.fingerprint']).toBe((0, iast_1.vulnFingerprint)('/api/orders/:id', 'pg.query', 'query.email', 'vuln.sql_concat'));
188
+ expect(a['shield360.rasp.event_id']).toMatch(/^[a-f0-9]{32}$/);
189
+ // This test file is the app's code here.
190
+ expect(a['shield360.rasp.vuln.location']).toMatch(/^src\/rasp\/__tests__\/iast\.test\.ts:\d+$/);
191
+ expect(JSON.stringify(vulns())).not.toContain('alice@example.com');
192
+ expect(a['shield360.rasp.snippet']).toBeUndefined();
193
+ expect(events.filter((e) => e.name === 'shield360.rasp.event')).toEqual([]);
194
+ });
195
+ it('reports each fingerprint at most once an hour, with the count seen since', () => {
196
+ setup({ iast: true });
197
+ runSql();
198
+ runSql();
199
+ runSql();
200
+ expect(vulns()).toHaveLength(1);
201
+ clock += iast_1.IAST_REPORT_EVERY_MS;
202
+ runSql();
203
+ expect(vulns()).toHaveLength(2);
204
+ expect(vulns()[1].attrs['shield360.rasp.count']).toBe('3');
205
+ });
206
+ it('reports nothing for an attack (the attack event covers it)', () => {
207
+ setup({ iast: true, mode: 'monitor' });
208
+ const attack = [{ value: "x' OR '1'='1", key: 'query.q', source: 'request' }];
209
+ runSql(attack, "SELECT * FROM t WHERE a = 'x' OR '1'='1'");
210
+ expect(events.map((e) => e.name)).toEqual(['shield360.rasp.event']);
211
+ });
212
+ it('works whatever the attack mode, even off', () => {
213
+ (0, engine_1.configureEngine)({ enabled: true, applicationName: 'orders-api', attacks: { sql_injection: 'off' }, env: {} });
214
+ (0, iast_1.configureIast)({ option: true, applicationName: 'orders-api', env: {}, now: () => clock });
215
+ (0, iast_1.setIastSink)(sink);
216
+ runSql();
217
+ expect(vulns()).toHaveLength(1);
218
+ });
219
+ it('stands down with the kill switch', () => {
220
+ setup({ iast: true });
221
+ (0, engine_1.setRuntimeDisabled)(true);
222
+ runSql();
223
+ (0, engine_1.setRuntimeDisabled)(false);
224
+ expect(vulns()).toEqual([]);
225
+ });
226
+ it('does nothing without request input in scope', () => {
227
+ setup({ iast: true });
228
+ (0, engine_1.check)('pg.query', () => (0, detect_1.detectSql)(query, [], 'postgres'));
229
+ expect(vulns()).toEqual([]);
230
+ });
231
+ it('samples checks', () => {
232
+ setup({ iast: { sampleRate: 0.5 }, random: () => 0.9 });
233
+ runSql();
234
+ expect(vulns()).toEqual([]);
235
+ setup({ iast: { sampleRate: 0.5 }, random: () => 0.1 });
236
+ runSql();
237
+ expect(vulns()).toHaveLength(1);
238
+ });
239
+ it('defaults to every check, a tenth in production', () => {
240
+ setup({ iast: true });
241
+ expect((0, iast_1.iastSampleRate)()).toBe(1);
242
+ setup({ iast: true, environment: 'production' });
243
+ expect((0, iast_1.iastSampleRate)()).toBe(0.1);
244
+ setup({ iast: true, env: { NODE_ENV: 'production', SHIELD360_IAST_SAMPLE_RATE: '0.5' } });
245
+ expect((0, iast_1.iastSampleRate)()).toBe(0.5);
246
+ setup({ iast: true, env: { SHIELD360_IAST_SAMPLE_RATE: '7' } });
247
+ expect((0, iast_1.iastSampleRate)()).toBe(1);
248
+ });
249
+ it('is switched by the env and the signed config, env off winning', () => {
250
+ setup({ env: { SHIELD360_IAST: 'on' } });
251
+ expect((0, iast_1.iastEnabled)()).toBe(true);
252
+ (0, iast_1.setIastRemote)({ iast: 'off', version: 'v2' });
253
+ expect((0, iast_1.iastEnabled)()).toBe(false);
254
+ setup({ random: () => 0.1 });
255
+ (0, iast_1.setIastRemote)({ iast: 'on', iastSampleRate: 0.25, version: 'v3' });
256
+ expect((0, iast_1.iastEnabled)()).toBe(true);
257
+ expect((0, iast_1.iastSampleRate)()).toBe(0.25);
258
+ runSql();
259
+ expect(vulns()[0].attrs['shield360.rasp.config_version']).toBe('v3');
260
+ setup({ iast: true, env: { SHIELD360_IAST: 'off' } });
261
+ (0, iast_1.setIastRemote)({ iast: 'on', version: 'v4' });
262
+ expect((0, iast_1.iastEnabled)()).toBe(false);
263
+ (0, iast_1.setIastRemote)(undefined);
264
+ expect((0, iast_1.iastEnabled)()).toBe(false);
265
+ });
266
+ it('fails open when a rule throws', () => {
267
+ setup({ iast: true });
268
+ const throwing = { get value() { throw new Error('boom'); }, key: 'query.x', source: 'request' };
269
+ expect(() => (0, context_1.runWithInputs)([email[0]], () => (0, engine_1.check)('pg.query', () => (0, detect_1.detectSql)(query, [email[0], throwing]), {}))).not.toThrow();
270
+ });
271
+ it('never exports a secret-looking path segment when the framework gives no route template', () => {
272
+ setup({ iast: true });
273
+ const inputs = email;
274
+ (0, context_1.runWithInputs)(inputs, () => (0, engine_1.check)('pg.query', () => (0, detect_1.detectSql)(query, inputs, 'postgres')), { inRequest: true, method: 'GET', path: '/api/v2/reset/AbCdEfGhIjKlMnOpQrSt/confirm' });
275
+ expect(vulns()).toHaveLength(1);
276
+ const route = vulns()[0].attrs['shield360.rasp.route'];
277
+ expect(route).toBe('/api/v2/reset/:id/confirm');
278
+ expect(JSON.stringify(vulns())).not.toContain('AbCdEfGhIjKlMnOpQrSt');
279
+ });
280
+ it('retries a report the reporter refused, keeping the count', () => {
281
+ setup({ iast: true });
282
+ const accepted = [];
283
+ let refuse = true;
284
+ (0, iast_1.setIastSink)({ add: (e) => (refuse ? false : (accepted.push(e), true)) });
285
+ runSql();
286
+ expect(accepted).toHaveLength(0);
287
+ refuse = false;
288
+ clock += 61000;
289
+ runSql();
290
+ expect(accepted).toHaveLength(1);
291
+ expect(accepted[0].attrs['shield360.rasp.count']).toBe('2');
292
+ runSql();
293
+ expect(accepted).toHaveLength(1);
294
+ });
295
+ it('a report the real reporter refuses is never folded and sent behind its back', () => {
296
+ setup({ iast: true });
297
+ const reporter = new reporter_1.RaspReporter({ url: 'https://shield.example.com/', apiKey: 'k', applicationName: 'orders-api', now: () => clock });
298
+ // Use up the minute's events.
299
+ for (let i = 0; i < reporter_1.PER_MINUTE; i++)
300
+ reporter.add({ name: 'shield360.rasp.event', time: '', attrs: {} }, `filler${i}`);
301
+ (0, iast_1.setIastSink)(reporter);
302
+ runSql(); // refused: the minute is full
303
+ clock += 1000;
304
+ runSql(); // refused again, inside the reporter's 10 s fold window
305
+ clock += 60000;
306
+ runSql(); // a new minute: sent, with every sighting since
307
+ const sent = reporter.pending().filter((e) => e.name === iast_1.RASP_VULNERABILITY);
308
+ expect(sent.map((e) => e.attrs['shield360.rasp.count'])).toEqual(['3']);
309
+ });
310
+ it('reaches the real fs hook', () => {
311
+ setup({ iast: true });
312
+ (0, fs_1.installFsHooks)();
313
+ try {
314
+ const inputs = [{ value: 'invoice-2026-0193', key: 'query.file', source: 'request' }];
315
+ (0, context_1.runWithInputs)(inputs, () => fs.existsSync('/nonexistent-shield360-iast/invoice-2026-0193.pdf'), { inRequest: true, route: '/files/:name' });
316
+ (0, context_1.runWithInputs)(inputs, () => {
317
+ try {
318
+ fs.readFileSync('/nonexistent-shield360-iast/invoice-2026-0193.pdf');
319
+ }
320
+ catch {
321
+ // missing on purpose
322
+ }
323
+ }, { inRequest: true, route: '/files/:name' });
324
+ }
325
+ finally {
326
+ (0, fs_1.uninstallFsHooks)();
327
+ }
328
+ const found = vulns().filter((e) => e.attrs['shield360.rasp.rule'] === 'vuln.path_from_input');
329
+ expect(found.length).toBeGreaterThanOrEqual(1);
330
+ expect(found[0].attrs['shield360.rasp.input_key']).toBe('query.file');
331
+ expect(found[0].attrs['shield360.rasp.sink']).toMatch(/^fs\./);
332
+ });
333
+ it('a blocking attack still blocks with IAST on', () => {
334
+ setup({ iast: true, mode: 'block' });
335
+ const attack = [{ value: "x' OR '1'='1", key: 'query.q', source: 'request' }];
336
+ expect(() => runSql(attack, "SELECT * FROM t WHERE a = 'x' OR '1'='1'")).toThrow(types_1.RaspBlockedError);
337
+ expect((0, iast_scope_1.iastArmed)()).toBe(false);
338
+ });
339
+ });
340
+ describe('code location', () => {
341
+ it('takes the first app frame outside node_modules, Node and the SDK', () => {
342
+ const cwd = process.cwd();
343
+ const stack = [
344
+ 'Error',
345
+ ` at reportVulnerability (${cwd}/src/rasp/iast.ts:10:5)`,
346
+ ' at Object.query (/app/node_modules/pg/lib/client.js:500:10)',
347
+ ' at node:internal/process/task_queues:95:5',
348
+ ` at getOrder (${cwd}/routes/orders.ts:42:17)`,
349
+ ` at ${cwd}/server.ts:7:1`,
350
+ ].join('\n');
351
+ expect((0, iast_1.codeLocation)(stack)).toBe('routes/orders.ts:42');
352
+ });
353
+ it('keeps the last three segments outside the working directory', () => {
354
+ expect((0, iast_1.codeLocation)('Error\n at x (/opt/other/app/lib/db/run.js:3:9)')).toBe('lib/db/run.js:3');
355
+ });
356
+ it('is empty when there is no app frame', () => {
357
+ expect((0, iast_1.codeLocation)('Error\n at x (/app/node_modules/a/b.js:1:1)')).toBe('');
358
+ expect((0, iast_1.isAppFrame)('node:fs')).toBe(false);
359
+ });
360
+ });
361
+ //# sourceMappingURL=iast.test.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"iast.test.js","sourceRoot":"","sources":["../../../src/rasp/__tests__/iast.test.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1 @@
1
+ export {};
@@ -0,0 +1,122 @@
1
+ "use strict";
2
+ var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
3
+ if (k2 === undefined) k2 = k;
4
+ var desc = Object.getOwnPropertyDescriptor(m, k);
5
+ if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
6
+ desc = { enumerable: true, get: function() { return m[k]; } };
7
+ }
8
+ Object.defineProperty(o, k2, desc);
9
+ }) : (function(o, m, k, k2) {
10
+ if (k2 === undefined) k2 = k;
11
+ o[k2] = m[k];
12
+ }));
13
+ var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
14
+ Object.defineProperty(o, "default", { enumerable: true, value: v });
15
+ }) : function(o, v) {
16
+ o["default"] = v;
17
+ });
18
+ var __importStar = (this && this.__importStar) || (function () {
19
+ var ownKeys = function(o) {
20
+ ownKeys = Object.getOwnPropertyNames || function (o) {
21
+ var ar = [];
22
+ for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
23
+ return ar;
24
+ };
25
+ return ownKeys(o);
26
+ };
27
+ return function (mod) {
28
+ if (mod && mod.__esModule) return mod;
29
+ var result = {};
30
+ if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
31
+ __setModuleDefault(result, mod);
32
+ return result;
33
+ };
34
+ })();
35
+ Object.defineProperty(exports, "__esModule", { value: true });
36
+ /**
37
+ * code.include: the detector on its own, and the require hook through the
38
+ * shared hook contract. The trigger loads a temporary fixture module through
39
+ * Node's own loader (Jest's require is its own), so running it is harmless.
40
+ */
41
+ const child_process_1 = require("child_process");
42
+ const fs_1 = require("fs");
43
+ const os_1 = require("os");
44
+ const path_1 = require("path");
45
+ const detect = __importStar(require("../detect"));
46
+ const detect_1 = require("../detect");
47
+ const include_1 = require("../hooks/include");
48
+ const hook_kit_1 = require("./hook-kit");
49
+ const req = (value) => ({ value, key: 'query.q', source: 'request' });
50
+ describe('detectInclude', () => {
51
+ it.each([
52
+ ['a module name taken whole from input', 'plugins-report', [req('plugins-report')]],
53
+ ['a path from input inside the specifier', './plugins/../../srv/data/x.js', [req('../../srv/data/x.js')]],
54
+ ['an absolute path from input', '/srv/app/uploads/handler.js', [req('/srv/app/uploads/handler.js')]],
55
+ ['a NUL byte from input', 'plugins/report\u0000.js', [req('report\u0000.js')]],
56
+ ['a model-output path', './tools/../secret.js', [{ value: '../secret.js', key: 'model.output', source: 'model_output' }]],
57
+ ])('flags %s', (_label, specifier, inputs) => {
58
+ expect((0, detect_1.detectInclude)(specifier, inputs)?.rule).toBe('code.include');
59
+ });
60
+ it.each([
61
+ ['a fixed module name', 'express', [req('report')]],
62
+ ['the app\'s own relative module with no input in it', './routes/orders', [req('orders-2026')]],
63
+ ['a plain word from input inside a fixed name', './locales/en', [req('en')]],
64
+ ['a word of three or more characters that is not a path', './views/orders', [req('orders')]],
65
+ ['no inputs', '/srv/app/x.js', []],
66
+ ])('passes %s', (_label, specifier, inputs) => {
67
+ expect((0, detect_1.detectInclude)(specifier, inputs)).toBeNull();
68
+ });
69
+ });
70
+ // Under Jest, `Module.prototype` is Jest's own and has no require of Node's to wrap,
71
+ // so the contract runs against a stand-in; the real loader is tested in a child Node process below.
72
+ class StandIn {
73
+ require(id) {
74
+ return id.length;
75
+ }
76
+ }
77
+ const standIn = StandIn.prototype;
78
+ const fixture = '/srv/app/plugins/../uploads/handler.js';
79
+ (0, hook_kit_1.describeHookContract)({
80
+ name: 'module require',
81
+ install: () => (0, include_1.installIncludeHooks)(standIn),
82
+ uninstall: include_1.uninstallIncludeHooks,
83
+ replaced: [{ owner: standIn, key: 'require' }],
84
+ trigger: () => standIn.require(fixture),
85
+ inputs: [req('../uploads/handler.js')],
86
+ detector: { module: detect, name: 'detectInclude' },
87
+ attack: 'code_injection',
88
+ });
89
+ describe('on Node\'s own loader (child process)', () => {
90
+ it('blocks a require of a path from input, loads it in monitor, and uninstall restores Node\'s require', () => {
91
+ const dir = (0, fs_1.mkdtempSync)((0, path_1.join)((0, os_1.tmpdir)(), 'rasp-include-'));
92
+ const fixturePath = (0, path_1.join)(dir, 'fixture.js');
93
+ (0, fs_1.writeFileSync)(fixturePath, 'module.exports = 41 + 1;\n');
94
+ const src = (0, path_1.join)(__dirname, '..');
95
+ const script = [
96
+ "const Module = require('module');",
97
+ "const original = Module.prototype.require;",
98
+ `const { configureEngine } = require(${JSON.stringify((0, path_1.join)(src, 'engine'))});`,
99
+ `const { runWithInputs } = require(${JSON.stringify((0, path_1.join)(src, 'context'))});`,
100
+ `const { installIncludeHooks, uninstallIncludeHooks } = require(${JSON.stringify((0, path_1.join)(src, 'hooks', 'include'))});`,
101
+ `const file = ${JSON.stringify(fixturePath)};`,
102
+ "const inputs = [{ value: file, key: 'query.q', source: 'request' }];",
103
+ "const out = { installed: installIncludeHooks() };",
104
+ "configureEngine({ enabled: true, applicationName: 'a', mode: 'block', env: {} });",
105
+ "try { runWithInputs(inputs, () => Module.createRequire(file)(file), { inRequest: true }); out.blocked = false; } catch (e) { out.blocked = e && e.name === 'RaspBlockedError'; }",
106
+ "configureEngine({ enabled: true, applicationName: 'a', mode: 'monitor', env: {} });",
107
+ "out.loaded = runWithInputs(inputs, () => Module.createRequire(file)(file), { inRequest: true });",
108
+ "uninstallIncludeHooks();",
109
+ "out.restored = Module.prototype.require === original;",
110
+ "process.stdout.write(JSON.stringify(out));",
111
+ ].join('\n');
112
+ try {
113
+ const run = (0, child_process_1.spawnSync)(process.execPath, ['-r', 'ts-node/register/transpile-only', '-e', script], { cwd: (0, path_1.join)(__dirname, '..', '..', '..'), encoding: 'utf8' });
114
+ expect(run.stderr).toBe('');
115
+ expect(JSON.parse(run.stdout)).toEqual({ installed: true, blocked: true, loaded: 42, restored: true });
116
+ }
117
+ finally {
118
+ (0, fs_1.rmSync)(dir, { recursive: true, force: true });
119
+ }
120
+ }, 60000);
121
+ });
122
+ //# sourceMappingURL=include-hook.test.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"include-hook.test.js","sourceRoot":"","sources":["../../../src/rasp/__tests__/include-hook.test.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1 @@
1
+ export {};