@snovon/solast 0.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 (738) hide show
  1. package/LICENSE +201 -0
  2. package/README.md +190 -0
  3. package/dist/api.d.ts +89 -0
  4. package/dist/api.js +33 -0
  5. package/dist/ast/resolve-return-names.d.ts +2 -0
  6. package/dist/ast/resolve-return-names.js +199 -0
  7. package/dist/ast/solc-walker.d.ts +17 -0
  8. package/dist/ast/solc-walker.js +497 -0
  9. package/dist/ast/storage-layout.d.ts +21 -0
  10. package/dist/ast/storage-layout.js +64 -0
  11. package/dist/cli.d.ts +65 -0
  12. package/dist/cli.js +755 -0
  13. package/dist/config.d.ts +9 -0
  14. package/dist/config.js +284 -0
  15. package/dist/dedup/files.d.ts +1 -0
  16. package/dist/dedup/files.js +74 -0
  17. package/dist/dedup/findings.d.ts +41 -0
  18. package/dist/dedup/findings.js +211 -0
  19. package/dist/detectors/_common/access-control.d.ts +204 -0
  20. package/dist/detectors/_common/access-control.js +377 -0
  21. package/dist/detectors/_common/ast.d.ts +139 -0
  22. package/dist/detectors/_common/ast.js +239 -0
  23. package/dist/detectors/_common/compiler-profile.d.ts +14 -0
  24. package/dist/detectors/_common/compiler-profile.js +66 -0
  25. package/dist/detectors/_common/dataflow.d.ts +75 -0
  26. package/dist/detectors/_common/dataflow.js +57 -0
  27. package/dist/detectors/_common/fhe.d.ts +7 -0
  28. package/dist/detectors/_common/fhe.js +40 -0
  29. package/dist/detectors/_common/integer-overflow-helpers.d.ts +58 -0
  30. package/dist/detectors/_common/integer-overflow-helpers.js +422 -0
  31. package/dist/detectors/_common/loop-call-stack.d.ts +9 -0
  32. package/dist/detectors/_common/loop-call-stack.js +132 -0
  33. package/dist/detectors/_common/oracle.d.ts +5 -0
  34. package/dist/detectors/_common/oracle.js +64 -0
  35. package/dist/detectors/_common/price-rate.d.ts +116 -0
  36. package/dist/detectors/_common/price-rate.js +446 -0
  37. package/dist/detectors/_common/source-text.d.ts +11 -0
  38. package/dist/detectors/_common/source-text.js +82 -0
  39. package/dist/detectors/_common/weighted-pool-invariant.d.ts +21 -0
  40. package/dist/detectors/_common/weighted-pool-invariant.js +105 -0
  41. package/dist/detectors/aave-v2-reentrancy.d.ts +7 -0
  42. package/dist/detectors/aave-v2-reentrancy.js +286 -0
  43. package/dist/detectors/access-control.d.ts +103 -0
  44. package/dist/detectors/access-control.js +983 -0
  45. package/dist/detectors/add-reentrancy-on-weth-contract.d.ts +7 -0
  46. package/dist/detectors/add-reentrancy-on-weth-contract.js +536 -0
  47. package/dist/detectors/ai-generated-randomness.d.ts +32 -0
  48. package/dist/detectors/ai-generated-randomness.js +239 -0
  49. package/dist/detectors/amm-spot-oracle-manipulation.d.ts +52 -0
  50. package/dist/detectors/amm-spot-oracle-manipulation.js +420 -0
  51. package/dist/detectors/analyzing-the-uniswap-v3-exploit.d.ts +26 -0
  52. package/dist/detectors/analyzing-the-uniswap-v3-exploit.js +279 -0
  53. package/dist/detectors/any-token-is-destroyed.d.ts +34 -0
  54. package/dist/detectors/any-token-is-destroyed.js +527 -0
  55. package/dist/detectors/anyswap-anytoken-permit-allowance-drain.d.ts +7 -0
  56. package/dist/detectors/anyswap-anytoken-permit-allowance-drain.js +524 -0
  57. package/dist/detectors/anyswap-insufficient-token-validation.d.ts +24 -0
  58. package/dist/detectors/anyswap-insufficient-token-validation.js +342 -0
  59. package/dist/detectors/approval-based-drain.d.ts +7 -0
  60. package/dist/detectors/approval-based-drain.js +772 -0
  61. package/dist/detectors/arbitrary-account-balance-transfer.d.ts +7 -0
  62. package/dist/detectors/arbitrary-account-balance-transfer.js +485 -0
  63. package/dist/detectors/arbitrary-address-spoofing-attack.d.ts +7 -0
  64. package/dist/detectors/arbitrary-address-spoofing-attack.js +444 -0
  65. package/dist/detectors/arbitrary-address-spoofing.d.ts +9 -0
  66. package/dist/detectors/arbitrary-address-spoofing.js +657 -0
  67. package/dist/detectors/arbitrary-call-error.d.ts +127 -0
  68. package/dist/detectors/arbitrary-call-error.js +1163 -0
  69. package/dist/detectors/arbitrary-call.d.ts +4 -0
  70. package/dist/detectors/arbitrary-call.js +11 -0
  71. package/dist/detectors/arbitrary-delegatecall-target.d.ts +35 -0
  72. package/dist/detectors/arbitrary-delegatecall-target.js +554 -0
  73. package/dist/detectors/arbitrary-recipient-no-access-control.d.ts +7 -0
  74. package/dist/detectors/arbitrary-recipient-no-access-control.js +638 -0
  75. package/dist/detectors/arbitrary-storage-proof-forgery.d.ts +35 -0
  76. package/dist/detectors/arbitrary-storage-proof-forgery.js +340 -0
  77. package/dist/detectors/arbitrary-transfer-from.d.ts +38 -0
  78. package/dist/detectors/arbitrary-transfer-from.js +339 -0
  79. package/dist/detectors/arbitrum-cross-chain-message-replay.d.ts +22 -0
  80. package/dist/detectors/arbitrum-cross-chain-message-replay.js +477 -0
  81. package/dist/detectors/avs-slashing-without-quorum-check.d.ts +50 -0
  82. package/dist/detectors/avs-slashing-without-quorum-check.js +386 -0
  83. package/dist/detectors/bad-debt-propagation.d.ts +13 -0
  84. package/dist/detectors/bad-debt-propagation.js +480 -0
  85. package/dist/detectors/bad-k-value-verification.d.ts +7 -0
  86. package/dist/detectors/bad-k-value-verification.js +512 -0
  87. package/dist/detectors/bad-randomness-zero-blockhash.d.ts +29 -0
  88. package/dist/detectors/bad-randomness-zero-blockhash.js +115 -0
  89. package/dist/detectors/balancer-flash-loan-manipulation.d.ts +33 -0
  90. package/dist/detectors/balancer-flash-loan-manipulation.js +178 -0
  91. package/dist/detectors/balancer-pause-guard.d.ts +33 -0
  92. package/dist/detectors/balancer-pause-guard.js +307 -0
  93. package/dist/detectors/balancer-weighted-pool-flash-loan.d.ts +42 -0
  94. package/dist/detectors/balancer-weighted-pool-flash-loan.js +275 -0
  95. package/dist/detectors/batch-transfer-overflow.d.ts +7 -0
  96. package/dist/detectors/batch-transfer-overflow.js +465 -0
  97. package/dist/detectors/beneficiary-validation.d.ts +7 -0
  98. package/dist/detectors/beneficiary-validation.js +696 -0
  99. package/dist/detectors/borrow-behalf-consent.d.ts +7 -0
  100. package/dist/detectors/borrow-behalf-consent.js +400 -0
  101. package/dist/detectors/break-continue-scope.d.ts +7 -0
  102. package/dist/detectors/break-continue-scope.js +194 -0
  103. package/dist/detectors/bridge-accounting-bypass.d.ts +65 -0
  104. package/dist/detectors/bridge-accounting-bypass.js +449 -0
  105. package/dist/detectors/bridge-business-logic-flaw-incorrect-acc.d.ts +43 -0
  106. package/dist/detectors/bridge-business-logic-flaw-incorrect-acc.js +394 -0
  107. package/dist/detectors/bridge-collateral-drain.d.ts +7 -0
  108. package/dist/detectors/bridge-collateral-drain.js +630 -0
  109. package/dist/detectors/bridge-forged-proof.d.ts +7 -0
  110. package/dist/detectors/bridge-forged-proof.js +754 -0
  111. package/dist/detectors/bridge-missing-message-nonce.d.ts +57 -0
  112. package/dist/detectors/bridge-missing-message-nonce.js +638 -0
  113. package/dist/detectors/bridge-swap-metapool-attack.d.ts +20 -0
  114. package/dist/detectors/bridge-swap-metapool-attack.js +230 -0
  115. package/dist/detectors/business-logic-flaw-flashloan-price-mani.d.ts +7 -0
  116. package/dist/detectors/business-logic-flaw-flashloan-price-mani.js +353 -0
  117. package/dist/detectors/business-logic-flaw-incorrect-recipient-balance.d.ts +7 -0
  118. package/dist/detectors/business-logic-flaw-incorrect-recipient-balance.js +403 -0
  119. package/dist/detectors/business-logic-flaw.d.ts +21 -0
  120. package/dist/detectors/business-logic-flaw.js +339 -0
  121. package/dist/detectors/business-logic.d.ts +17 -0
  122. package/dist/detectors/business-logic.js +22 -0
  123. package/dist/detectors/bypassed-insolvency-check.d.ts +30 -0
  124. package/dist/detectors/bypassed-insolvency-check.js +232 -0
  125. package/dist/detectors/bytecode-divergence-risk.d.ts +32 -0
  126. package/dist/detectors/bytecode-divergence-risk.js +150 -0
  127. package/dist/detectors/cache-array-length.d.ts +30 -0
  128. package/dist/detectors/cache-array-length.js +177 -0
  129. package/dist/detectors/cache-storage-reads.d.ts +46 -0
  130. package/dist/detectors/cache-storage-reads.js +323 -0
  131. package/dist/detectors/calldata-secret-access-control.d.ts +36 -0
  132. package/dist/detectors/calldata-secret-access-control.js +446 -0
  133. package/dist/detectors/capital-cross-contract-reentrancy.d.ts +34 -0
  134. package/dist/detectors/capital-cross-contract-reentrancy.js +481 -0
  135. package/dist/detectors/cartel-custom-approval-logic.d.ts +7 -0
  136. package/dist/detectors/cartel-custom-approval-logic.js +407 -0
  137. package/dist/detectors/ccip-receiver-missing-replay-guard.d.ts +22 -0
  138. package/dist/detectors/ccip-receiver-missing-replay-guard.js +413 -0
  139. package/dist/detectors/chain-coupling-risk.d.ts +8 -0
  140. package/dist/detectors/chain-coupling-risk.js +203 -0
  141. package/dist/detectors/chainlink-deprecated-function.d.ts +7 -0
  142. package/dist/detectors/chainlink-deprecated-function.js +205 -0
  143. package/dist/detectors/chainlink-tx-origin.d.ts +7 -0
  144. package/dist/detectors/chainlink-tx-origin.js +363 -0
  145. package/dist/detectors/check-effects-interactions.d.ts +39 -0
  146. package/dist/detectors/check-effects-interactions.js +783 -0
  147. package/dist/detectors/check-permit-missing-chainid.d.ts +27 -0
  148. package/dist/detectors/check-permit-missing-chainid.js +456 -0
  149. package/dist/detectors/classic-reentrancy.d.ts +93 -0
  150. package/dist/detectors/classic-reentrancy.js +645 -0
  151. package/dist/detectors/coinbase-morpho-wethloan-policy.d.ts +29 -0
  152. package/dist/detectors/coinbase-morpho-wethloan-policy.js +368 -0
  153. package/dist/detectors/compoundv2-inflation-attack.d.ts +7 -0
  154. package/dist/detectors/compoundv2-inflation-attack.js +675 -0
  155. package/dist/detectors/constructor-address-validation.d.ts +24 -0
  156. package/dist/detectors/constructor-address-validation.js +335 -0
  157. package/dist/detectors/constructor-interface-no-address-validation.d.ts +32 -0
  158. package/dist/detectors/constructor-interface-no-address-validation.js +283 -0
  159. package/dist/detectors/cross-chain-arbitrary-call.d.ts +7 -0
  160. package/dist/detectors/cross-chain-arbitrary-call.js +601 -0
  161. package/dist/detectors/cross-chain-input-validation.d.ts +31 -0
  162. package/dist/detectors/cross-chain-input-validation.js +347 -0
  163. package/dist/detectors/cross-chain-intent-replay.d.ts +38 -0
  164. package/dist/detectors/cross-chain-intent-replay.js +453 -0
  165. package/dist/detectors/cross-chain-intent-stale-resolution.d.ts +7 -0
  166. package/dist/detectors/cross-chain-intent-stale-resolution.js +463 -0
  167. package/dist/detectors/cross-chain-message-order-dependency.d.ts +8 -0
  168. package/dist/detectors/cross-chain-message-order-dependency.js +472 -0
  169. package/dist/detectors/cross-chain-message-replay.d.ts +8 -0
  170. package/dist/detectors/cross-chain-message-replay.js +568 -0
  171. package/dist/detectors/cross-chain-messaging.d.ts +7 -0
  172. package/dist/detectors/cross-chain-messaging.js +663 -0
  173. package/dist/detectors/cross-chain-msg-truncation.d.ts +7 -0
  174. package/dist/detectors/cross-chain-msg-truncation.js +453 -0
  175. package/dist/detectors/cross-chain-truncation.d.ts +7 -0
  176. package/dist/detectors/cross-chain-truncation.js +422 -0
  177. package/dist/detectors/cross-contract-integer-overflow.d.ts +76 -0
  178. package/dist/detectors/cross-contract-integer-overflow.js +554 -0
  179. package/dist/detectors/cross-contract-reentrancy-trusted-callee.d.ts +39 -0
  180. package/dist/detectors/cross-contract-reentrancy-trusted-callee.js +385 -0
  181. package/dist/detectors/cross-contract-reentrancy.d.ts +63 -0
  182. package/dist/detectors/cross-contract-reentrancy.js +631 -0
  183. package/dist/detectors/cross-function-reentrancy.d.ts +37 -0
  184. package/dist/detectors/cross-function-reentrancy.js +648 -0
  185. package/dist/detectors/cross-protocol-contagion.d.ts +20 -0
  186. package/dist/detectors/cross-protocol-contagion.js +445 -0
  187. package/dist/detectors/cross-protocol-oracle-collateral.d.ts +38 -0
  188. package/dist/detectors/cross-protocol-oracle-collateral.js +487 -0
  189. package/dist/detectors/cross-vm-reentrancy.d.ts +7 -0
  190. package/dist/detectors/cross-vm-reentrancy.js +484 -0
  191. package/dist/detectors/decimals-mismatch.d.ts +89 -0
  192. package/dist/detectors/decimals-mismatch.js +451 -0
  193. package/dist/detectors/deferred-state-update.d.ts +16 -0
  194. package/dist/detectors/deferred-state-update.js +35 -0
  195. package/dist/detectors/deflationary-token.d.ts +27 -0
  196. package/dist/detectors/deflationary-token.js +751 -0
  197. package/dist/detectors/delegate-transfer-unrestricted-caller.d.ts +44 -0
  198. package/dist/detectors/delegate-transfer-unrestricted-caller.js +410 -0
  199. package/dist/detectors/delegatecall-fallback-reentrancy-bypass.d.ts +14 -0
  200. package/dist/detectors/delegatecall-fallback-reentrancy-bypass.js +241 -0
  201. package/dist/detectors/delegatecall-in-loops.d.ts +7 -0
  202. package/dist/detectors/delegatecall-in-loops.js +129 -0
  203. package/dist/detectors/delegatecall-init-owner-mutator.d.ts +8 -0
  204. package/dist/detectors/delegatecall-init-owner-mutator.js +655 -0
  205. package/dist/detectors/delegatecall-init.d.ts +7 -0
  206. package/dist/detectors/delegatecall-init.js +769 -0
  207. package/dist/detectors/delegatecall-untrusted-implementation.d.ts +41 -0
  208. package/dist/detectors/delegatecall-untrusted-implementation.js +888 -0
  209. package/dist/detectors/delegated-authorization-bypass.d.ts +7 -0
  210. package/dist/detectors/delegated-authorization-bypass.js +370 -0
  211. package/dist/detectors/denial-of-service.d.ts +117 -0
  212. package/dist/detectors/denial-of-service.js +947 -0
  213. package/dist/detectors/division-before-multiplication.d.ts +7 -0
  214. package/dist/detectors/division-before-multiplication.js +303 -0
  215. package/dist/detectors/dn404-mirror-access-control.d.ts +26 -0
  216. package/dist/detectors/dn404-mirror-access-control.js +315 -0
  217. package/dist/detectors/doge-flashloan.d.ts +29 -0
  218. package/dist/detectors/doge-flashloan.js +329 -0
  219. package/dist/detectors/donate-inflation-exchangerate-roundin.d.ts +7 -0
  220. package/dist/detectors/donate-inflation-exchangerate-roundin.js +621 -0
  221. package/dist/detectors/donation-share-inflation.d.ts +24 -0
  222. package/dist/detectors/donation-share-inflation.js +466 -0
  223. package/dist/detectors/dont-let-eth-get-rekt.d.ts +84 -0
  224. package/dist/detectors/dont-let-eth-get-rekt.js +1151 -0
  225. package/dist/detectors/dos-unbounded-loop-external-call-revert.d.ts +37 -0
  226. package/dist/detectors/dos-unbounded-loop-external-call-revert.js +541 -0
  227. package/dist/detectors/eip1167-proxy-reentrancy.d.ts +7 -0
  228. package/dist/detectors/eip1167-proxy-reentrancy.js +508 -0
  229. package/dist/detectors/eip4626-vault-reentrancy.d.ts +32 -0
  230. package/dist/detectors/eip4626-vault-reentrancy.js +312 -0
  231. package/dist/detectors/eip5792-auth-replay.d.ts +45 -0
  232. package/dist/detectors/eip5792-auth-replay.js +519 -0
  233. package/dist/detectors/eip712-domain-separator.d.ts +42 -0
  234. package/dist/detectors/eip712-domain-separator.js +524 -0
  235. package/dist/detectors/eip712-signature-verification.d.ts +49 -0
  236. package/dist/detectors/eip712-signature-verification.js +689 -0
  237. package/dist/detectors/eip7702-auth-replay.d.ts +7 -0
  238. package/dist/detectors/eip7702-auth-replay.js +768 -0
  239. package/dist/detectors/eip7702-cross-chain-replay.d.ts +27 -0
  240. package/dist/detectors/eip7702-cross-chain-replay.js +307 -0
  241. package/dist/detectors/eip7702-delegated-eoa-approval-race.d.ts +39 -0
  242. package/dist/detectors/eip7702-delegated-eoa-approval-race.js +413 -0
  243. package/dist/detectors/eip7702-delegation-reentrancy.d.ts +21 -0
  244. package/dist/detectors/eip7702-delegation-reentrancy.js +705 -0
  245. package/dist/detectors/eip7702-delegation-risk.d.ts +7 -0
  246. package/dist/detectors/eip7702-delegation-risk.js +745 -0
  247. package/dist/detectors/eip7702-eoa-assumption.d.ts +57 -0
  248. package/dist/detectors/eip7702-eoa-assumption.js +461 -0
  249. package/dist/detectors/erc1155-batch-missing-per-id-approval.d.ts +23 -0
  250. package/dist/detectors/erc1155-batch-missing-per-id-approval.js +343 -0
  251. package/dist/detectors/erc1155-reentrancy.d.ts +31 -0
  252. package/dist/detectors/erc1155-reentrancy.js +217 -0
  253. package/dist/detectors/erc1271-stub-implementation.d.ts +21 -0
  254. package/dist/detectors/erc1271-stub-implementation.js +268 -0
  255. package/dist/detectors/erc20-safe-wrapper-return-unchecked.d.ts +43 -0
  256. package/dist/detectors/erc20-safe-wrapper-return-unchecked.js +368 -0
  257. package/dist/detectors/erc20-unchecked-non-standard-return.d.ts +55 -0
  258. package/dist/detectors/erc20-unchecked-non-standard-return.js +454 -0
  259. package/dist/detectors/erc2612-permit-frontrunning.d.ts +23 -0
  260. package/dist/detectors/erc2612-permit-frontrunning.js +246 -0
  261. package/dist/detectors/erc2771-context-spoofing.d.ts +41 -0
  262. package/dist/detectors/erc2771-context-spoofing.js +510 -0
  263. package/dist/detectors/erc4337-validation-storage-access.d.ts +35 -0
  264. package/dist/detectors/erc4337-validation-storage-access.js +232 -0
  265. package/dist/detectors/erc4626-totalassets-stub.d.ts +17 -0
  266. package/dist/detectors/erc4626-totalassets-stub.js +216 -0
  267. package/dist/detectors/erc6909-balance-overflow.d.ts +7 -0
  268. package/dist/detectors/erc6909-balance-overflow.js +688 -0
  269. package/dist/detectors/erc6909-operator-scope.d.ts +49 -0
  270. package/dist/detectors/erc6909-operator-scope.js +494 -0
  271. package/dist/detectors/erc721-unchecked-transfer.d.ts +38 -0
  272. package/dist/detectors/erc721-unchecked-transfer.js +364 -0
  273. package/dist/detectors/erc7579-module-install-without-threshold.d.ts +40 -0
  274. package/dist/detectors/erc7579-module-install-without-threshold.js +338 -0
  275. package/dist/detectors/erc7683-fill-validation.d.ts +53 -0
  276. package/dist/detectors/erc7683-fill-validation.js +758 -0
  277. package/dist/detectors/erc7683-intent-resolution.d.ts +7 -0
  278. package/dist/detectors/erc7683-intent-resolution.js +457 -0
  279. package/dist/detectors/erc777-callback-reentrancy.d.ts +8 -0
  280. package/dist/detectors/erc777-callback-reentrancy.js +439 -0
  281. package/dist/detectors/erc777-reentrancy.d.ts +7 -0
  282. package/dist/detectors/erc777-reentrancy.js +488 -0
  283. package/dist/detectors/erc777-tokens-to-send-reentrancy.d.ts +47 -0
  284. package/dist/detectors/erc777-tokens-to-send-reentrancy.js +674 -0
  285. package/dist/detectors/estuary-token-flaw.d.ts +16 -0
  286. package/dist/detectors/estuary-token-flaw.js +547 -0
  287. package/dist/detectors/euler-debt-token-manipulation.d.ts +32 -0
  288. package/dist/detectors/euler-debt-token-manipulation.js +347 -0
  289. package/dist/detectors/exploiting-a-vulnerability-in-curve-fina.d.ts +29 -0
  290. package/dist/detectors/exploiting-a-vulnerability-in-curve-fina.js +210 -0
  291. package/dist/detectors/fallback-delegatecall-reentrancy.d.ts +14 -0
  292. package/dist/detectors/fallback-delegatecall-reentrancy.js +236 -0
  293. package/dist/detectors/farm-business-logic-flaw-lack-of-access.d.ts +7 -0
  294. package/dist/detectors/farm-business-logic-flaw-lack-of-access.js +665 -0
  295. package/dist/detectors/fee-mechanism-exploitation.d.ts +20 -0
  296. package/dist/detectors/fee-mechanism-exploitation.js +400 -0
  297. package/dist/detectors/fee-on-transfer-balance-mismatch.d.ts +49 -0
  298. package/dist/detectors/fee-on-transfer-balance-mismatch.js +394 -0
  299. package/dist/detectors/fhe-encrypted-input-validation.d.ts +29 -0
  300. package/dist/detectors/fhe-encrypted-input-validation.js +210 -0
  301. package/dist/detectors/fhe-handle-leakage.d.ts +44 -0
  302. package/dist/detectors/fhe-handle-leakage.js +315 -0
  303. package/dist/detectors/fhe-oz-pattern-misuse.d.ts +26 -0
  304. package/dist/detectors/fhe-oz-pattern-misuse.js +311 -0
  305. package/dist/detectors/fhe-state-leakage.d.ts +8 -0
  306. package/dist/detectors/fhe-state-leakage.js +400 -0
  307. package/dist/detectors/fi-bridges.d.ts +33 -0
  308. package/dist/detectors/fi-bridges.js +428 -0
  309. package/dist/detectors/finance-access-control-price-oracle-man.d.ts +9 -0
  310. package/dist/detectors/finance-access-control-price-oracle-man.js +640 -0
  311. package/dist/detectors/finance-bridge-address0safetransferfrom.d.ts +8 -0
  312. package/dist/detectors/finance-bridge-address0safetransferfrom.js +574 -0
  313. package/dist/detectors/finance-business-logic-in-mint.d.ts +54 -0
  314. package/dist/detectors/finance-business-logic-in-mint.js +687 -0
  315. package/dist/detectors/finance-erc667-reentrancy.d.ts +7 -0
  316. package/dist/detectors/finance-erc667-reentrancy.js +509 -0
  317. package/dist/detectors/finance-flashloan-price-oracle-manipul.d.ts +7 -0
  318. package/dist/detectors/finance-flashloan-price-oracle-manipul.js +546 -0
  319. package/dist/detectors/finance-flashloan-reentrancy.d.ts +7 -0
  320. package/dist/detectors/finance-flashloan-reentrancy.js +547 -0
  321. package/dist/detectors/finance-swap-metapool-attack.d.ts +19 -0
  322. package/dist/detectors/finance-swap-metapool-attack.js +321 -0
  323. package/dist/detectors/flashloan-price-manipulation.d.ts +7 -0
  324. package/dist/detectors/flashloan-price-manipulation.js +950 -0
  325. package/dist/detectors/flashloan-reentrancy-rari.d.ts +28 -0
  326. package/dist/detectors/flashloan-reentrancy-rari.js +577 -0
  327. package/dist/detectors/flashloan-reentrancy.d.ts +7 -0
  328. package/dist/detectors/flashloan-reentrancy.js +383 -0
  329. package/dist/detectors/flashloan-token-migrate.d.ts +7 -0
  330. package/dist/detectors/flashloan-token-migrate.js +274 -0
  331. package/dist/detectors/force-fed-eth-state-corruption.d.ts +32 -0
  332. package/dist/detectors/force-fed-eth-state-corruption.js +293 -0
  333. package/dist/detectors/free-mint-bug.d.ts +41 -0
  334. package/dist/detectors/free-mint-bug.js +483 -0
  335. package/dist/detectors/front-running-orderbook-state-update.d.ts +37 -0
  336. package/dist/detectors/front-running-orderbook-state-update.js +471 -0
  337. package/dist/detectors/front-running-shared-collateral-write.d.ts +41 -0
  338. package/dist/detectors/front-running-shared-collateral-write.js +508 -0
  339. package/dist/detectors/fusion-v1-settlement-arbitrary-yul-calld.d.ts +30 -0
  340. package/dist/detectors/fusion-v1-settlement-arbitrary-yul-calld.js +354 -0
  341. package/dist/detectors/generalized-frontrunning.d.ts +7 -0
  342. package/dist/detectors/generalized-frontrunning.js +836 -0
  343. package/dist/detectors/governance-flash-loan.d.ts +62 -0
  344. package/dist/detectors/governance-flash-loan.js +452 -0
  345. package/dist/detectors/governance-flashloan-vote.d.ts +41 -0
  346. package/dist/detectors/governance-flashloan-vote.js +272 -0
  347. package/dist/detectors/halborn-security-report-aave-v3.d.ts +6 -0
  348. package/dist/detectors/halborn-security-report-aave-v3.js +357 -0
  349. package/dist/detectors/incorrect-access-control.d.ts +26 -0
  350. package/dist/detectors/incorrect-access-control.js +328 -0
  351. package/dist/detectors/incorrect-burn-accounting.d.ts +10 -0
  352. package/dist/detectors/incorrect-burn-accounting.js +387 -0
  353. package/dist/detectors/incorrect-dividends-calculation.d.ts +27 -0
  354. package/dist/detectors/incorrect-dividends-calculation.js +524 -0
  355. package/dist/detectors/incorrect-dividends.d.ts +27 -0
  356. package/dist/detectors/incorrect-dividends.js +485 -0
  357. package/dist/detectors/incorrect-input-validation.d.ts +23 -0
  358. package/dist/detectors/incorrect-input-validation.js +312 -0
  359. package/dist/detectors/incorrect-signature-verification.d.ts +26 -0
  360. package/dist/detectors/incorrect-signature-verification.js +530 -0
  361. package/dist/detectors/infinite-loop.d.ts +7 -0
  362. package/dist/detectors/infinite-loop.js +440 -0
  363. package/dist/detectors/infinite-number-of-loans.d.ts +13 -0
  364. package/dist/detectors/infinite-number-of-loans.js +565 -0
  365. package/dist/detectors/inheritance-override.d.ts +26 -0
  366. package/dist/detectors/inheritance-override.js +320 -0
  367. package/dist/detectors/initialization-access-control.d.ts +8 -0
  368. package/dist/detectors/initialization-access-control.js +659 -0
  369. package/dist/detectors/insecure-randomness.d.ts +73 -0
  370. package/dist/detectors/insecure-randomness.js +610 -0
  371. package/dist/detectors/insufficient-access-control-trusted-param.d.ts +39 -0
  372. package/dist/detectors/insufficient-access-control-trusted-param.js +356 -0
  373. package/dist/detectors/insufficient-dvn-threshold.d.ts +32 -0
  374. package/dist/detectors/insufficient-dvn-threshold.js +585 -0
  375. package/dist/detectors/integer-overflow-detector.d.ts +45 -0
  376. package/dist/detectors/integer-overflow-detector.js +284 -0
  377. package/dist/detectors/integer-overflow.d.ts +95 -0
  378. package/dist/detectors/integer-overflow.js +344 -0
  379. package/dist/detectors/integer-underflow.d.ts +7 -0
  380. package/dist/detectors/integer-underflow.js +422 -0
  381. package/dist/detectors/intent-settlement-balance-manipulation.d.ts +22 -0
  382. package/dist/detectors/intent-settlement-balance-manipulation.js +548 -0
  383. package/dist/detectors/l1-to-l2-message-reentrancy.d.ts +7 -0
  384. package/dist/detectors/l1-to-l2-message-reentrancy.js +545 -0
  385. package/dist/detectors/l2-withdrawal-validation.d.ts +8 -0
  386. package/dist/detectors/l2-withdrawal-validation.js +303 -0
  387. package/dist/detectors/lack-of-access-control.d.ts +7 -0
  388. package/dist/detectors/lack-of-access-control.js +425 -0
  389. package/dist/detectors/lack-of-calldata-validation.d.ts +16 -0
  390. package/dist/detectors/lack-of-calldata-validation.js +914 -0
  391. package/dist/detectors/lack-of-input-validation-reentrancy.d.ts +7 -0
  392. package/dist/detectors/lack-of-input-validation-reentrancy.js +637 -0
  393. package/dist/detectors/lack-of-slippage-control.d.ts +7 -0
  394. package/dist/detectors/lack-of-slippage-control.js +513 -0
  395. package/dist/detectors/lack-of-slippage-protection.d.ts +7 -0
  396. package/dist/detectors/lack-of-slippage-protection.js +474 -0
  397. package/dist/detectors/lack-of-validation-data.d.ts +23 -0
  398. package/dist/detectors/lack-of-validation-data.js +391 -0
  399. package/dist/detectors/lack-of-validation-pool.d.ts +7 -0
  400. package/dist/detectors/lack-of-validation-pool.js +492 -0
  401. package/dist/detectors/lack-of-validation-userdata.d.ts +7 -0
  402. package/dist/detectors/lack-of-validation-userdata.js +583 -0
  403. package/dist/detectors/lack-of-validation.d.ts +27 -0
  404. package/dist/detectors/lack-of-validation.js +609 -0
  405. package/dist/detectors/layerzero-dvn-quorum-missing.d.ts +22 -0
  406. package/dist/detectors/layerzero-dvn-quorum-missing.js +464 -0
  407. package/dist/detectors/layerzero-v2-unverified-origin.d.ts +40 -0
  408. package/dist/detectors/layerzero-v2-unverified-origin.js +368 -0
  409. package/dist/detectors/liquidation-accounting-desync.d.ts +14 -0
  410. package/dist/detectors/liquidation-accounting-desync.js +145 -0
  411. package/dist/detectors/liquidation-gain-manipulation.d.ts +42 -0
  412. package/dist/detectors/liquidation-gain-manipulation.js +606 -0
  413. package/dist/detectors/liquidation-price-rounding-advantage.d.ts +26 -0
  414. package/dist/detectors/liquidation-price-rounding-advantage.js +283 -0
  415. package/dist/detectors/liquidity-poisoning.d.ts +25 -0
  416. package/dist/detectors/liquidity-poisoning.js +339 -0
  417. package/dist/detectors/loans-malicious-proposal-price-oracle.d.ts +44 -0
  418. package/dist/detectors/loans-malicious-proposal-price-oracle.js +813 -0
  419. package/dist/detectors/logic-flaw.d.ts +186 -0
  420. package/dist/detectors/logic-flaw.js +3356 -0
  421. package/dist/detectors/manipulation-of-funds.d.ts +31 -0
  422. package/dist/detectors/manipulation-of-funds.js +304 -0
  423. package/dist/detectors/merkl-unsafe-claim-callback.d.ts +22 -0
  424. package/dist/detectors/merkl-unsafe-claim-callback.js +94 -0
  425. package/dist/detectors/mev-boost-timestamp.d.ts +7 -0
  426. package/dist/detectors/mev-boost-timestamp.js +318 -0
  427. package/dist/detectors/mev-merge-exploit.d.ts +29 -0
  428. package/dist/detectors/mev-merge-exploit.js +397 -0
  429. package/dist/detectors/mev-sandwich-vulnerability.d.ts +24 -0
  430. package/dist/detectors/mev-sandwich-vulnerability.js +648 -0
  431. package/dist/detectors/mev-slot-manipulation.d.ts +36 -0
  432. package/dist/detectors/mev-slot-manipulation.js +691 -0
  433. package/dist/detectors/mevbot-insufficient-validation.d.ts +48 -0
  434. package/dist/detectors/mevbot-insufficient-validation.js +574 -0
  435. package/dist/detectors/migration-rebalance-without-bound.d.ts +7 -0
  436. package/dist/detectors/migration-rebalance-without-bound.js +514 -0
  437. package/dist/detectors/mint-hardcoded-asset-parity.d.ts +31 -0
  438. package/dist/detectors/mint-hardcoded-asset-parity.js +356 -0
  439. package/dist/detectors/miscalculation-on-spendallowance.d.ts +7 -0
  440. package/dist/detectors/miscalculation-on-spendallowance.js +188 -0
  441. package/dist/detectors/misconfiguration.d.ts +27 -0
  442. package/dist/detectors/misconfiguration.js +410 -0
  443. package/dist/detectors/missing-access-control-caller-supplied-auth.d.ts +7 -0
  444. package/dist/detectors/missing-access-control-caller-supplied-auth.js +550 -0
  445. package/dist/detectors/missing-access-control-receiver-payout.d.ts +7 -0
  446. package/dist/detectors/missing-access-control-receiver-payout.js +460 -0
  447. package/dist/detectors/missing-access-control-role-or-transferfrom.d.ts +7 -0
  448. package/dist/detectors/missing-access-control-role-or-transferfrom.js +663 -0
  449. package/dist/detectors/missing-access-control.d.ts +19 -0
  450. package/dist/detectors/missing-access-control.js +781 -0
  451. package/dist/detectors/missing-sequencer-uptime-check.d.ts +30 -0
  452. package/dist/detectors/missing-sequencer-uptime-check.js +348 -0
  453. package/dist/detectors/missing-storage-gap.d.ts +19 -0
  454. package/dist/detectors/missing-storage-gap.js +193 -0
  455. package/dist/detectors/missing-swap-deadline-slippage.d.ts +31 -0
  456. package/dist/detectors/missing-swap-deadline-slippage.js +231 -0
  457. package/dist/detectors/missing-zk-proof-verification.d.ts +60 -0
  458. package/dist/detectors/missing-zk-proof-verification.js +547 -0
  459. package/dist/detectors/my-experience-with-yearn-finance.d.ts +7 -0
  460. package/dist/detectors/my-experience-with-yearn-finance.js +552 -0
  461. package/dist/detectors/network-bridge-ronin.d.ts +7 -0
  462. package/dist/detectors/network-bridge-ronin.js +408 -0
  463. package/dist/detectors/network-bridge.d.ts +7 -0
  464. package/dist/detectors/network-bridge.js +444 -0
  465. package/dist/detectors/network-underflow.d.ts +7 -0
  466. package/dist/detectors/network-underflow.js +517 -0
  467. package/dist/detectors/nft-denial-of-service.d.ts +7 -0
  468. package/dist/detectors/nft-denial-of-service.js +223 -0
  469. package/dist/detectors/nft-marketplace-order-reentrancy.d.ts +7 -0
  470. package/dist/detectors/nft-marketplace-order-reentrancy.js +427 -0
  471. package/dist/detectors/nft-token-standard-access-control.d.ts +7 -0
  472. package/dist/detectors/nft-token-standard-access-control.js +455 -0
  473. package/dist/detectors/oracle-manipulation-amm-spot-price.d.ts +42 -0
  474. package/dist/detectors/oracle-manipulation-amm-spot-price.js +321 -0
  475. package/dist/detectors/oracle-manipulation-liquidity-withdrawal.d.ts +27 -0
  476. package/dist/detectors/oracle-manipulation-liquidity-withdrawal.js +192 -0
  477. package/dist/detectors/oracle-manipulation.d.ts +90 -0
  478. package/dist/detectors/oracle-manipulation.js +1023 -0
  479. package/dist/detectors/oracle-vortex-manipulation.d.ts +30 -0
  480. package/dist/detectors/oracle-vortex-manipulation.js +473 -0
  481. package/dist/detectors/overpriced-asset-in-oracle.d.ts +41 -0
  482. package/dist/detectors/overpriced-asset-in-oracle.js +420 -0
  483. package/dist/detectors/oz-access-control-roles.d.ts +33 -0
  484. package/dist/detectors/oz-access-control-roles.js +359 -0
  485. package/dist/detectors/pair-manipulation-transfer-hook.d.ts +38 -0
  486. package/dist/detectors/pair-manipulation-transfer-hook.js +366 -0
  487. package/dist/detectors/parameter-access-control.d.ts +47 -0
  488. package/dist/detectors/parameter-access-control.js +511 -0
  489. package/dist/detectors/parameter-manipulation.d.ts +7 -0
  490. package/dist/detectors/parameter-manipulation.js +505 -0
  491. package/dist/detectors/parity-multisig-delegatecall.d.ts +7 -0
  492. package/dist/detectors/parity-multisig-delegatecall.js +707 -0
  493. package/dist/detectors/permissionless-claim-amm-spot-pricing.d.ts +7 -0
  494. package/dist/detectors/permissionless-claim-amm-spot-pricing.js +351 -0
  495. package/dist/detectors/permit-future-dated-deadline.d.ts +31 -0
  496. package/dist/detectors/permit-future-dated-deadline.js +339 -0
  497. package/dist/detectors/phishing-attack-bybit.d.ts +37 -0
  498. package/dist/detectors/phishing-attack-bybit.js +513 -0
  499. package/dist/detectors/post-insolvency-check.d.ts +7 -0
  500. package/dist/detectors/post-insolvency-check.js +277 -0
  501. package/dist/detectors/precision-loss-vulnerability.d.ts +7 -0
  502. package/dist/detectors/precision-loss-vulnerability.js +472 -0
  503. package/dist/detectors/precision-truncation.d.ts +8 -0
  504. package/dist/detectors/precision-truncation.js +425 -0
  505. package/dist/detectors/price-dependency-veth.d.ts +41 -0
  506. package/dist/detectors/price-dependency-veth.js +588 -0
  507. package/dist/detectors/price-feed-verification.d.ts +7 -0
  508. package/dist/detectors/price-feed-verification.js +557 -0
  509. package/dist/detectors/price-manipulation-reentrancy.d.ts +32 -0
  510. package/dist/detectors/price-manipulation-reentrancy.js +445 -0
  511. package/dist/detectors/price-manipulation-via-reentranc.d.ts +7 -0
  512. package/dist/detectors/price-manipulation-via-reentranc.js +569 -0
  513. package/dist/detectors/price-oracle-manipulation.d.ts +25 -0
  514. package/dist/detectors/price-oracle-manipulation.js +530 -0
  515. package/dist/detectors/project-instant-rewards-unlocked.d.ts +6 -0
  516. package/dist/detectors/project-instant-rewards-unlocked.js +462 -0
  517. package/dist/detectors/protocol-reentrancy.d.ts +7 -0
  518. package/dist/detectors/protocol-reentrancy.js +457 -0
  519. package/dist/detectors/proxy-init-race.d.ts +11 -0
  520. package/dist/detectors/proxy-init-race.js +634 -0
  521. package/dist/detectors/proxy-storage-slot-collision.d.ts +7 -0
  522. package/dist/detectors/proxy-storage-slot-collision.js +135 -0
  523. package/dist/detectors/public-internal-function.d.ts +39 -0
  524. package/dist/detectors/public-internal-function.js +233 -0
  525. package/dist/detectors/quote-silent-zero.d.ts +25 -0
  526. package/dist/detectors/quote-silent-zero.js +156 -0
  527. package/dist/detectors/readonly-reentrancy.d.ts +9 -0
  528. package/dist/detectors/readonly-reentrancy.js +108 -0
  529. package/dist/detectors/receipt-redemption-missing-validation.d.ts +31 -0
  530. package/dist/detectors/receipt-redemption-missing-validation.js +453 -0
  531. package/dist/detectors/reentrancy-balance.d.ts +36 -0
  532. package/dist/detectors/reentrancy-balance.js +577 -0
  533. package/dist/detectors/reentrancy-business-logic-game.d.ts +36 -0
  534. package/dist/detectors/reentrancy-business-logic-game.js +616 -0
  535. package/dist/detectors/reentrancy-on-sell-nft.d.ts +23 -0
  536. package/dist/detectors/reentrancy-on-sell-nft.js +510 -0
  537. package/dist/detectors/reflection-token-balance-desync.d.ts +28 -0
  538. package/dist/detectors/reflection-token-balance-desync.js +246 -0
  539. package/dist/detectors/registry-engine.d.ts +34 -0
  540. package/dist/detectors/registry-engine.js +388 -0
  541. package/dist/detectors/rollup-unvalidated-state-update.d.ts +35 -0
  542. package/dist/detectors/rollup-unvalidated-state-update.js +286 -0
  543. package/dist/detectors/s-horizon-bridge-private-key-compromis.d.ts +8 -0
  544. package/dist/detectors/s-horizon-bridge-private-key-compromis.js +615 -0
  545. package/dist/detectors/share-price-manipulation.d.ts +7 -0
  546. package/dist/detectors/share-price-manipulation.js +653 -0
  547. package/dist/detectors/signature-replay.d.ts +30 -0
  548. package/dist/detectors/signature-replay.js +367 -0
  549. package/dist/detectors/simpleswap-unverified-approval.d.ts +27 -0
  550. package/dist/detectors/simpleswap-unverified-approval.js +198 -0
  551. package/dist/detectors/single-spot-oracle-collateral-valuation.d.ts +22 -0
  552. package/dist/detectors/single-spot-oracle-collateral-valuation.js +419 -0
  553. package/dist/detectors/skim-token-balance.d.ts +7 -0
  554. package/dist/detectors/skim-token-balance.js +788 -0
  555. package/dist/detectors/sky-oft-governance-payload.d.ts +7 -0
  556. package/dist/detectors/sky-oft-governance-payload.js +515 -0
  557. package/dist/detectors/sky-oft-governance-truncation.d.ts +32 -0
  558. package/dist/detectors/sky-oft-governance-truncation.js +377 -0
  559. package/dist/detectors/solana-evm-bridge-truncation.d.ts +7 -0
  560. package/dist/detectors/solana-evm-bridge-truncation.js +638 -0
  561. package/dist/detectors/solhint-unchecked-low-level-call.d.ts +74 -0
  562. package/dist/detectors/solhint-unchecked-low-level-call.js +463 -0
  563. package/dist/detectors/stablecoin-pair-spot-oracle.d.ts +7 -0
  564. package/dist/detectors/stablecoin-pair-spot-oracle.js +364 -0
  565. package/dist/detectors/staked-rate-as-oracle.d.ts +44 -0
  566. package/dist/detectors/staked-rate-as-oracle.js +497 -0
  567. package/dist/detectors/stale-oracle.d.ts +63 -0
  568. package/dist/detectors/stale-oracle.js +649 -0
  569. package/dist/detectors/starkware-proof-validation-gap.d.ts +18 -0
  570. package/dist/detectors/starkware-proof-validation-gap.js +629 -0
  571. package/dist/detectors/steth-transfer-reentrancy.d.ts +8 -0
  572. package/dist/detectors/steth-transfer-reentrancy.js +317 -0
  573. package/dist/detectors/storage-collision-malicious-proposal.d.ts +27 -0
  574. package/dist/detectors/storage-collision-malicious-proposal.js +386 -0
  575. package/dist/detectors/timestamp-manipulation.d.ts +49 -0
  576. package/dist/detectors/timestamp-manipulation.js +383 -0
  577. package/dist/detectors/token-access-control.d.ts +7 -0
  578. package/dist/detectors/token-access-control.js +544 -0
  579. package/dist/detectors/token-incorrect-signature-verification.d.ts +23 -0
  580. package/dist/detectors/token-incorrect-signature-verification.js +434 -0
  581. package/dist/detectors/token-transfer-logic-flaw.d.ts +33 -0
  582. package/dist/detectors/token-transfer-logic-flaw.js +267 -0
  583. package/dist/detectors/transfer-double-debit-pool-recipient.d.ts +7 -0
  584. package/dist/detectors/transfer-double-debit-pool-recipient.js +542 -0
  585. package/dist/detectors/treasury-reentrancy.d.ts +7 -0
  586. package/dist/detectors/treasury-reentrancy.js +442 -0
  587. package/dist/detectors/tstore-poison.d.ts +32 -0
  588. package/dist/detectors/tstore-poison.js +417 -0
  589. package/dist/detectors/tstore-race-condition.d.ts +7 -0
  590. package/dist/detectors/tstore-race-condition.js +632 -0
  591. package/dist/detectors/types.d.ts +85 -0
  592. package/dist/detectors/types.js +20 -0
  593. package/dist/detectors/unauthorized-payer-transferfrom.d.ts +66 -0
  594. package/dist/detectors/unauthorized-payer-transferfrom.js +339 -0
  595. package/dist/detectors/unauthorized-transferfrom-shell.d.ts +7 -0
  596. package/dist/detectors/unauthorized-transferfrom-shell.js +504 -0
  597. package/dist/detectors/unauthorized-transferfrom.d.ts +16 -0
  598. package/dist/detectors/unauthorized-transferfrom.js +838 -0
  599. package/dist/detectors/unbound-zk-verifier-input.d.ts +7 -0
  600. package/dist/detectors/unbound-zk-verifier-input.js +445 -0
  601. package/dist/detectors/unbounded-share-price-collateral-oracle.d.ts +48 -0
  602. package/dist/detectors/unbounded-share-price-collateral-oracle.js +566 -0
  603. package/dist/detectors/uncapped-reward-emission.d.ts +7 -0
  604. package/dist/detectors/uncapped-reward-emission.js +493 -0
  605. package/dist/detectors/unchecked-call-forwarding.d.ts +31 -0
  606. package/dist/detectors/unchecked-call-forwarding.js +330 -0
  607. package/dist/detectors/unchecked-external-call-unconditional-state-mutation.d.ts +18 -0
  608. package/dist/detectors/unchecked-external-call-unconditional-state-mutation.js +311 -0
  609. package/dist/detectors/unchecked-external-call.d.ts +66 -0
  610. package/dist/detectors/unchecked-external-call.js +389 -0
  611. package/dist/detectors/unchecked-oft-return.d.ts +13 -0
  612. package/dist/detectors/unchecked-oft-return.js +118 -0
  613. package/dist/detectors/unguarded-governance-execution.d.ts +35 -0
  614. package/dist/detectors/unguarded-governance-execution.js +422 -0
  615. package/dist/detectors/unguarded-governance-executor.d.ts +35 -0
  616. package/dist/detectors/unguarded-governance-executor.js +349 -0
  617. package/dist/detectors/unindexed-event-address.d.ts +7 -0
  618. package/dist/detectors/unindexed-event-address.js +268 -0
  619. package/dist/detectors/uninitialized-implementation.d.ts +27 -0
  620. package/dist/detectors/uninitialized-implementation.js +333 -0
  621. package/dist/detectors/uninitialized-storage-pointer.d.ts +7 -0
  622. package/dist/detectors/uninitialized-storage-pointer.js +110 -0
  623. package/dist/detectors/uniswap-skim-token-balance-attack.d.ts +8 -0
  624. package/dist/detectors/uniswap-skim-token-balance-attack.js +331 -0
  625. package/dist/detectors/uniswap-v4-hook-state-manipulation.d.ts +7 -0
  626. package/dist/detectors/uniswap-v4-hook-state-manipulation.js +296 -0
  627. package/dist/detectors/unprotected-admin-or-fund-sink.d.ts +7 -0
  628. package/dist/detectors/unprotected-admin-or-fund-sink.js +643 -0
  629. package/dist/detectors/unprotected-dex-swap.d.ts +43 -0
  630. package/dist/detectors/unprotected-dex-swap.js +334 -0
  631. package/dist/detectors/unprotected-initializer.d.ts +7 -0
  632. package/dist/detectors/unprotected-initializer.js +707 -0
  633. package/dist/detectors/unprotected-pair-initializer.d.ts +22 -0
  634. package/dist/detectors/unprotected-pair-initializer.js +359 -0
  635. package/dist/detectors/unprotected-upgrade-function.d.ts +7 -0
  636. package/dist/detectors/unprotected-upgrade-function.js +180 -0
  637. package/dist/detectors/unreachable-code-0.8.28.d.ts +19 -0
  638. package/dist/detectors/unreachable-code-0.8.28.js +206 -0
  639. package/dist/detectors/unsafe-proxy-storage.d.ts +7 -0
  640. package/dist/detectors/unsafe-proxy-storage.js +436 -0
  641. package/dist/detectors/unsafe-transient-storage.d.ts +7 -0
  642. package/dist/detectors/unsafe-transient-storage.js +1052 -0
  643. package/dist/detectors/unsafe-tx-origin.d.ts +9 -0
  644. package/dist/detectors/unsafe-tx-origin.js +179 -0
  645. package/dist/detectors/unsigned-validity-window.d.ts +20 -0
  646. package/dist/detectors/unsigned-validity-window.js +220 -0
  647. package/dist/detectors/unvalidated-interface-address.d.ts +25 -0
  648. package/dist/detectors/unvalidated-interface-address.js +377 -0
  649. package/dist/detectors/uups-uninitialized-storage.d.ts +9 -0
  650. package/dist/detectors/uups-uninitialized-storage.js +366 -0
  651. package/dist/detectors/v2-error-k-value-attack.d.ts +33 -0
  652. package/dist/detectors/v2-error-k-value-attack.js +276 -0
  653. package/dist/detectors/v2-k-invariant-bypass.d.ts +33 -0
  654. package/dist/detectors/v2-k-invariant-bypass.js +283 -0
  655. package/dist/detectors/v4-hook-reentrancy.d.ts +9 -0
  656. package/dist/detectors/v4-hook-reentrancy.js +488 -0
  657. package/dist/detectors/vault-inflation-rounding.d.ts +23 -0
  658. package/dist/detectors/vault-inflation-rounding.js +477 -0
  659. package/dist/detectors/vault-share-price-manipulation.d.ts +7 -0
  660. package/dist/detectors/vault-share-price-manipulation.js +332 -0
  661. package/dist/detectors/vortex-interaction-guard.d.ts +45 -0
  662. package/dist/detectors/vortex-interaction-guard.js +275 -0
  663. package/dist/detectors/vortex-protocol-reentrancy-guard.d.ts +27 -0
  664. package/dist/detectors/vortex-protocol-reentrancy-guard.js +408 -0
  665. package/dist/detectors/vulnerable-price-dependency.d.ts +41 -0
  666. package/dist/detectors/vulnerable-price-dependency.js +473 -0
  667. package/dist/detectors/weak-random-mint.d.ts +37 -0
  668. package/dist/detectors/weak-random-mint.js +271 -0
  669. package/dist/detectors/withdraw-be-to-withdraw.d.ts +26 -0
  670. package/dist/detectors/withdraw-be-to-withdraw.js +329 -0
  671. package/dist/detectors/wrong-function-visibility.d.ts +29 -0
  672. package/dist/detectors/wrong-function-visibility.js +147 -0
  673. package/dist/detectors/wrong-price-calculation.d.ts +42 -0
  674. package/dist/detectors/wrong-price-calculation.js +387 -0
  675. package/dist/detectors/yearn-vault-v2-share-price-manipulation.d.ts +32 -0
  676. package/dist/detectors/yearn-vault-v2-share-price-manipulation.js +248 -0
  677. package/dist/detectors/zero-fee.d.ts +7 -0
  678. package/dist/detectors/zero-fee.js +596 -0
  679. package/dist/detectors/zetachain-gateway-hack-analysis.d.ts +7 -0
  680. package/dist/detectors/zetachain-gateway-hack-analysis.js +629 -0
  681. package/dist/detectors/zk-rollup-da-gap.d.ts +8 -0
  682. package/dist/detectors/zk-rollup-da-gap.js +322 -0
  683. package/dist/detectors/zksync-batch-validation.d.ts +8 -0
  684. package/dist/detectors/zksync-batch-validation.js +461 -0
  685. package/dist/detectors/zksync-era-rollup-state-update.d.ts +60 -0
  686. package/dist/detectors/zksync-era-rollup-state-update.js +360 -0
  687. package/dist/detectors/zksync-simulation-drift.d.ts +35 -0
  688. package/dist/detectors/zksync-simulation-drift.js +309 -0
  689. package/dist/exit-codes.d.ts +15 -0
  690. package/dist/exit-codes.js +18 -0
  691. package/dist/formatters/github-actions.d.ts +2 -0
  692. package/dist/formatters/github-actions.js +61 -0
  693. package/dist/formatters/sarif.d.ts +24 -0
  694. package/dist/formatters/sarif.js +670 -0
  695. package/dist/formatters/text.d.ts +14 -0
  696. package/dist/formatters/text.js +152 -0
  697. package/dist/fp-rates.json +70 -0
  698. package/dist/identity/diff-baseline.d.ts +16 -0
  699. package/dist/identity/diff-baseline.js +152 -0
  700. package/dist/identity/hashing.d.ts +39 -0
  701. package/dist/identity/hashing.js +96 -0
  702. package/dist/index.d.ts +174 -0
  703. package/dist/index.js +358 -0
  704. package/dist/parallel-scan.d.ts +66 -0
  705. package/dist/parallel-scan.js +227 -0
  706. package/dist/registry.d.ts +17 -0
  707. package/dist/registry.js +118 -0
  708. package/dist/rules/glob.d.ts +5 -0
  709. package/dist/rules/glob.js +76 -0
  710. package/dist/rules/suppressions.d.ts +23 -0
  711. package/dist/rules/suppressions.js +136 -0
  712. package/dist/rules/tiers.d.ts +23 -0
  713. package/dist/rules/tiers.js +341 -0
  714. package/dist/scan-worker.d.ts +1 -0
  715. package/dist/scan-worker.js +61 -0
  716. package/dist/scan.d.ts +24 -0
  717. package/dist/scan.js +558 -0
  718. package/dist/semantic/contracts.d.ts +10 -0
  719. package/dist/semantic/contracts.js +141 -0
  720. package/dist/semantic/diagnostics.d.ts +29 -0
  721. package/dist/semantic/diagnostics.js +25 -0
  722. package/dist/semantic/eog.d.ts +56 -0
  723. package/dist/semantic/eog.js +545 -0
  724. package/dist/semantic/imports.d.ts +88 -0
  725. package/dist/semantic/imports.js +246 -0
  726. package/dist/semantic/index.d.ts +2 -0
  727. package/dist/semantic/index.js +8 -0
  728. package/dist/semantic/inheritance.d.ts +33 -0
  729. package/dist/semantic/inheritance.js +137 -0
  730. package/dist/semantic/model.d.ts +95 -0
  731. package/dist/semantic/model.js +232 -0
  732. package/dist/semantic/taint-tracker.d.ts +49 -0
  733. package/dist/semantic/taint-tracker.js +410 -0
  734. package/dist/semantic/types.d.ts +119 -0
  735. package/dist/semantic/types.js +18 -0
  736. package/dist/severity.d.ts +10 -0
  737. package/dist/severity.js +78 -0
  738. package/package.json +52 -0
@@ -0,0 +1,670 @@
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
+ exports.sarifLevelForFinding = sarifLevelForFinding;
37
+ exports.getCuratedSarifRuleIds = getCuratedSarifRuleIds;
38
+ exports.getCuratedSarifRules = getCuratedSarifRules;
39
+ exports.formatSarif = formatSarif;
40
+ const path = __importStar(require("path"));
41
+ const url_1 = require("url");
42
+ const severity_1 = require("../severity");
43
+ const RULE_IDS = [
44
+ 'avs-slashing-without-quorum-check',
45
+ 'balancer-flash-loan-manipulation',
46
+ 'balancer-pause-guard',
47
+ 'balancer-weighted-pool-flash-loan',
48
+ 'classic-reentrancy',
49
+ 'access-control',
50
+ 'integer-overflow',
51
+ 'cross-contract-integer-overflow',
52
+ 'integer-overflow-underflow',
53
+ 'timestamp-manipulation',
54
+ 'oracle-manipulation',
55
+ 'oracle-vortex-manipulation',
56
+ 'overpriced-asset-in-oracle',
57
+ 'oracle-staleness',
58
+ 'oracle/price-feed-verification',
59
+ 'price-dependency-veth',
60
+ 'vulnerable-price-dependency',
61
+ 'staked-rate-as-oracle',
62
+ 'unbounded-share-price-collateral-oracle',
63
+ 'cross-protocol-oracle-collateral',
64
+ 'single-spot-oracle-collateral-valuation',
65
+ 'fallback-delegatecall-reentrancy',
66
+ 'delegatecall-fallback-reentrancy-bypass',
67
+ 'liquidity-poisoning',
68
+ 'euler-debt-token-manipulation',
69
+ 'check-effects-interactions',
70
+ 'aave-v2-reentrancy',
71
+ 'cross-function-reentrancy',
72
+ 'unchecked-external-call',
73
+ 'unchecked-external-call-unconditional-state-mutation',
74
+ 'nft-marketplace-order-reentrancy',
75
+ 'reentrancy-on-sell-nft',
76
+ 'reentrancy-balance',
77
+ 'incorrect-burn-accounting',
78
+ 'incorrect-dividends',
79
+ 'deflationary-token',
80
+ 'missing-access-control',
81
+ 'arbitrary-transfer-from',
82
+ 'delegate-transfer-unrestricted-caller',
83
+ 'arbitrary-call',
84
+ 'user-controlled-arbitrary-call',
85
+ 'arbitrary-recipient-no-access-control',
86
+ 'nft-token-standard-access-control',
87
+ 'lack-of-validation-userdata',
88
+ 'lack-of-calldata-validation',
89
+ 'lack-of-validation-pool',
90
+ 'integer-underflow',
91
+ 'erc777-callback-reentrancy',
92
+ 'erc777-reentrancy',
93
+ 'erc1155-reentrancy',
94
+ 'permit-future-dated-deadline',
95
+ 'check-permit-missing-chainid',
96
+ 'incorrect-signature-verification',
97
+ 'token-incorrect-signature-verification',
98
+ 'steth-transfer-reentrancy',
99
+ 'parity-multisig-delegatecall',
100
+ 'delegatecall-init',
101
+ 'proxy-init-race',
102
+ 'unprotected-initializer',
103
+ 'initialization-access-control',
104
+ 'share-price-manipulation',
105
+ 'vault-share-price-manipulation',
106
+ 'vault-inflation-rounding',
107
+ 'liquidation-gain-manipulation',
108
+ 'liquidation-accounting-desync',
109
+ 'yearn-vault-v2-share-price-manipulation',
110
+ 'post-insolvency-check',
111
+ 'bypassed-insolvency-check',
112
+ 'incorrect-dividends-calculation',
113
+ 'borrow-behalf-consent',
114
+ 'beneficiary-validation',
115
+ 'unindexed-event-address',
116
+ 'precision-truncation',
117
+ 'precision-loss-vulnerability',
118
+ 'batch-transfer-overflow',
119
+ 'misconfiguration',
120
+ 'stablecoin-pair-spot-oracle',
121
+ 'flashloan-price-manipulation',
122
+ 'bridge-missing-message-nonce',
123
+ 'finance-flashloan-price-oracle-manipul',
124
+ 'business-logic-flaw-flashloan-price-mani',
125
+ 'business-logic-flaw',
126
+ 'unauthorized-transferfrom',
127
+ 'approval-based-drain',
128
+ 'unprotected-admin-or-fund-sink',
129
+ 'incorrect-access-control',
130
+ 'price-manipulation-reentrancy',
131
+ 'price-manipulation-via-reentranc',
132
+ 'arbitrary-address-spoofing',
133
+ 'arbitrary-address-spoofing-attack',
134
+ 'permissionless-claim-amm-spot-pricing',
135
+ 'business-logic-flaw-incorrect-recipient-balance',
136
+ 'farm-business-logic-flaw-lack-of-access',
137
+ 'logic-flaw',
138
+ 'reflection-token-balance-desync',
139
+ 'simpleswap-unverified-approval',
140
+ 'manipulation-of-funds',
141
+ 'compoundv2-inflation-attack',
142
+ 'donate-inflation-exchangerate-roundin',
143
+ 'add-reentrancy-on-weth-contract',
144
+ 'zetachain-gateway-hack-analysis',
145
+ 'lack-of-input-validation-reentrancy',
146
+ 'lack-of-slippage-control',
147
+ 'lack-of-slippage-protection',
148
+ 'missing-swap-deadline-slippage',
149
+ 'unprotected-dex-swap',
150
+ 'generalized-frontrunning',
151
+ 'lack-of-access-control',
152
+ 'delegated-authorization-bypass',
153
+ 'signature-replay',
154
+ 'mev-boost-timestamp',
155
+ 'mev-merge-exploit',
156
+ 'mev-sandwich-vulnerability',
157
+ 'mev-slot-manipulation',
158
+ 'merkl-unsafe-claim-callback',
159
+ 'uncapped-reward-emission',
160
+ 'eip1167-proxy-reentrancy',
161
+ 'chainlink-tx-origin',
162
+ 'chainlink-deprecated-function',
163
+ 'unsafe-tx-origin',
164
+ 'eip7702-delegation-reentrancy',
165
+ 'eip7702-delegation-risk',
166
+ 'eip7702-eoa-assumption',
167
+ 'eip7702-auth-replay',
168
+ 'eip7702-cross-chain-replay',
169
+ 'eip5792-auth-replay',
170
+ 'bad-k-value-verification',
171
+ 'v2-error-k-value-attack',
172
+ 'parameter-manipulation',
173
+ 'treasury-reentrancy',
174
+ 'reentrancy-business-logic-game',
175
+ 'protocol-reentrancy',
176
+ 'infinite-number-of-loans',
177
+ 'finance-bridge-address0safetransferfrom',
178
+ 'fi-bridges',
179
+ 'infinite-loop',
180
+ 'finance-flashloan-reentrancy',
181
+ 'finance-business-logic-in-mint',
182
+ 'flashloan-reentrancy',
183
+ 'capital-cross-contract-reentrancy',
184
+ 'cross-contract-reentrancy',
185
+ 'finance-erc667-reentrancy',
186
+ 'bridge-forged-proof',
187
+ 'arbitrary-storage-proof-forgery',
188
+ 'bridge-business-logic-flaw-incorrect-acc',
189
+ 'bridge-accounting-bypass',
190
+ 'bridge-collateral-drain',
191
+ 'network-bridge',
192
+ 'network-bridge-ronin',
193
+ 'bridge-swap-metapool-attack',
194
+ 'finance-swap-metapool-attack',
195
+ 'transfer-double-debit-pool-recipient',
196
+ 'fee-mechanism-exploitation',
197
+ 'skim-token-balance',
198
+ 'uniswap-skim-token-balance-attack',
199
+ 'doge-flashloan',
200
+ 'v4-hook-state-manipulation',
201
+ 'cross-protocol-contagion',
202
+ 'bad-debt-propagation',
203
+ 'cache-storage-reads',
204
+ 'division-before-multiplication',
205
+ 'cross-chain-messaging',
206
+ 'cross-chain-truncation',
207
+ 'cross-chain-msg-truncation',
208
+ 'solana-evm-bridge-truncation',
209
+ 'cross-chain-arbitrary-call',
210
+ 'cross-vm-reentrancy',
211
+ 'chain-coupling-risk',
212
+ 'sky-oft-governance-payload',
213
+ 'sky-oft-governance-truncation',
214
+ 'unchecked-oft-return',
215
+ 'erc4626-totalassets-stub',
216
+ 'erc20-unchecked-non-standard-return',
217
+ 'erc7579-module-install-without-threshold',
218
+ 'erc1271-stub-implementation',
219
+ 'layerzero-v2-unverified-origin',
220
+ 'layerzero-dvn-quorum-missing',
221
+ 'cross-chain-message-replay',
222
+ 'arbitrum-cross-chain-message-replay',
223
+ 'ccip-receiver-missing-replay-guard',
224
+ 'cross-chain-message-order-dependency',
225
+ 'anyswap-anytoken-permit-allowance-drain',
226
+ 'unguarded-governance-executor',
227
+ 'analyzing-the-uniswap-v3-exploit',
228
+ 'receipt-redemption-missing-validation',
229
+ 'delegatecall-in-loops',
230
+ 'unsigned-validity-window',
231
+ 'l1-to-l2-message-reentrancy',
232
+ 'l2-withdrawal-validation',
233
+ 'zksync-batch-validation',
234
+ 'zksync-simulation-drift',
235
+ 'zk-rollup-da-gap',
236
+ 'starkware-proof-validation-gap',
237
+ 'unbound-zk-verifier-input',
238
+ 'uups-uninitialized-storage',
239
+ 'uninitialized-storage-pointer',
240
+ 'unsafe-transient-storage',
241
+ 'tstore-poison',
242
+ 'tstore-race-condition',
243
+ 'unsafe-proxy-storage',
244
+ 'proxy-storage-slot-collision',
245
+ 'unprotected-upgrade-function',
246
+ 'erc6909-balance-overflow',
247
+ 'erc6909-operator-scope',
248
+ 'network-underflow',
249
+ 'storage-collision-malicious-proposal',
250
+ 'unguarded-governance-execution',
251
+ 'governance-flash-loan',
252
+ 'loans-malicious-proposal-price-oracle',
253
+ 's-horizon-bridge-private-key-compromis',
254
+ 'miscalculation-on-spendallowance',
255
+ 'cartel-custom-approval-logic',
256
+ 'token-transfer-logic-flaw',
257
+ 'zero-fee',
258
+ 'break-continue-scope',
259
+ 'erc7683-intent-resolution',
260
+ 'erc7683-fill-validation',
261
+ 'cross-chain-intent-stale-resolution',
262
+ 'cross-chain-intent-replay',
263
+ 'unreachable-code-0.8.28',
264
+ 'any-token-is-destroyed',
265
+ 'flashloan-token-migrate',
266
+ 'migration-rebalance-without-bound',
267
+ 'my-experience-with-yearn-finance',
268
+ 'finance-access-control-price-oracle-man',
269
+ 'arbitrary-account-balance-transfer',
270
+ 'token-access-control',
271
+ 'fhe-state-leakage',
272
+ 'fhe-encrypted-input-validation',
273
+ 'fhe-handle-leakage',
274
+ 'fhe-oz-pattern-misuse',
275
+ 'dos-unbounded-loop-external-call-revert',
276
+ 'nft-denial-of-service',
277
+ 'liquidation-price-rounding-advantage',
278
+ 'estuary-token-flaw',
279
+ 'dont-let-eth-get-rekt',
280
+ 'eip712-signature-verification',
281
+ 'coinbase-morpho-wethloan-policy',
282
+ 'ai-generated-randomness',
283
+ 'bad-randomness-zero-blockhash',
284
+ 'insecure-randomness',
285
+ 'weak-random-mint',
286
+ 'read-only-reentrancy',
287
+ 'rollup-unvalidated-state-update',
288
+ 'public-internal-function',
289
+ 'withdraw-be-to-withdraw',
290
+ 'v4-hook-reentrancy',
291
+ 'phishing-attack-bybit',
292
+ 'erc20-safe-wrapper-return-unchecked',
293
+ 'pair-manipulation-transfer-hook',
294
+ 'vortex-protocol-reentrancy-guard',
295
+ 'solhint-unchecked-low-level-call',
296
+ ];
297
+ const RULE_DESCRIPTIONS = {
298
+ 'access-control': 'Externally callable privileged operation without recognized access control.',
299
+ 'avs-slashing-without-quorum-check': 'AVS slashing or settlement write occurs before a visible operator quorum-threshold check.',
300
+ 'balancer-flash-loan-manipulation': 'Balancer weighted-pool flash-loan flow mutates and distorts pool state before spot-style price or balance consumption.',
301
+ 'balancer-pause-guard': 'Balancer V2-style pool swap, join, or exit path lacks an emergency pause, stop, or circuit-breaker guard.',
302
+ 'balancer-weighted-pool-flash-loan': 'Balancer-style weighted pool operation co-occurs with a flash-loan entry point in the same function body, enabling atomic spot-price manipulation.',
303
+ 'classic-reentrancy': 'State modification after an external call in the same function.',
304
+ 'check-effects-interactions': 'Check-effects-interactions ordering violation in a Solidity function.',
305
+ 'bypassed-insolvency-check': 'Borrow or withdrawal flow moves value before a solvency or health-factor guard.',
306
+ 'incorrect-dividends-calculation': 'Incorrect dividends calculation due to state mutation after external transfer or stale supply values.',
307
+ 'erc777-callback-reentrancy': 'ERC777 token callback before dependent accounting updates.',
308
+ 'erc1155-reentrancy': 'Unguarded ERC-1155 receiver hook may allow reentrancy.',
309
+ 'integer-overflow': 'Unchecked arithmetic that can overflow or underflow.',
310
+ 'cross-contract-integer-overflow': 'Same-target contract or interface call return value flows into unchecked arithmetic.',
311
+ 'timestamp-manipulation': 'Value-bearing logic depends on miner-influenceable timestamps or block numbers.',
312
+ 'stablecoin-pair-spot-oracle': 'stablecoin-pair value logic trusts mutable AMM spot reserves or pair balances.',
313
+ 'delegatecall-init': 'Externally reachable delegatecall can invoke unprotected initialization logic.',
314
+ 'eip1167-proxy-reentrancy': 'Loop-based delegatecall through uninitialized or externally writable EIP-1167 proxy state.',
315
+ 'logic-flaw': 'Business-logic path contains a narrow stale-accounting, live spot-price dependency, price-inflating sell-on-transfer, repeated msg.value reuse, or unvalidated pair/token migration sub-pattern.',
316
+ 'simpleswap-unverified-approval': 'Approval of unverified token or to unverified spender: token or spender is caller-controlled without validation.',
317
+ 'manipulation-of-funds': 'Public fund movement consumes a live token balance of this contract that can be inflated by direct transfer.',
318
+ 'missing-access-control': 'Externally callable critical function without recognized access control.',
319
+ 'incorrect-access-control': 'Externally callable spell or privileged-control mutator reaches mint/accounting authority without caller authorization.',
320
+ 'arbitrary-call': 'Caller-controlled target and calldata reach call, delegatecall, staticcall, or interface-style execution without an access-control or allowlist boundary.',
321
+ 'delegate-transfer-unrestricted-caller': 'Externally callable delegate-transfer path spends a caller-supplied source account without delegate authorization.',
322
+ 'oracle-manipulation': 'Oracle price feed consumed without freshness, deviation, or exponent-scaling safeguards.',
323
+ 'oracle-vortex-manipulation': 'External price feed consumed in a critical path without freshness check, multi-source validation, or circuit-breaker guard.',
324
+ 'price-dependency-veth': 'Critical value-transfer function uses a single unsanitized price or rate signal to compute mint, burn, swap, redeem, or withdrawal amounts.',
325
+ 'vulnerable-price-dependency': 'Oracle or AMM price read flows into critical value movement without freshness, deviation, TWAP, or hardcoded sanity bounds.',
326
+ 'price-manipulation-reentrancy': 'Price-affecting oracle, reserve, TWAP, or accounting state is settled after a reentrant external call.',
327
+ 'price-manipulation-via-reentranc': 'CarolProtocol-style reserve pricing is settled after a router reentry surface.',
328
+ 'read-only-reentrancy': 'Read-only reentrancy risk from stale state observed during callbacks.',
329
+ 'rollup-unvalidated-state-update': 'Rollup batch or state-root commit path writes a new root without visible prior-root linkage and verifier-success gating.',
330
+ 'v4-hook-reentrancy': 'Uniswap V4 hook callback re-enters PoolManager or mutates modeled pool state.',
331
+ 'v4-hook-state-manipulation': 'Uniswap V4 hook callback mutates state and reuses it in the same swap flow.',
332
+ 'withdraw-be-to-withdraw': 'Withdrawal function debits one asset class but transfers (or delegates to) a different asset class.',
333
+ 'overpriced-asset-in-oracle': 'Externally derived asset price, share, or exchange rate is consumed by protocol accounting without an upward bound or sanity check.',
334
+ 'single-spot-oracle-collateral-valuation': 'Borrow or liquidation collateral valuation depends on a single unprotected spot oracle price.',
335
+ 'fallback-delegatecall-reentrancy': 'Cross-contract reentrancy surface from a fallback or receive function that delegatecalls to an extension while the contract also exposes nonReentrant-guarded entrypoints.',
336
+ 'delegatecall-fallback-reentrancy-bypass': 'Cross-contract reentrancy surface from a fallback or receive function that delegatecalls to an extension while the contract also exposes nonReentrant-guarded entrypoints. Bypass variation.',
337
+ 'liquidity-poisoning': 'Curve or Uniswap V3 pool state feeds fund movement or accounting without liquidity, deviation, or freshness validation.',
338
+ 'coinbase-morpho-wethloan-policy': 'Duplicate active-policy installation across Morpho ERC20 and WETH policy variants in isolated storage.',
339
+ 'phishing-attack-bybit': 'Externally reachable function delegatecalls to a caller-controlled target without access control or a target allowlist.',
340
+ 'cross-chain-intent-replay': 'Cross-chain intent handler performs settlement or dispatches relayed commands without nonce/hash consumption, allowlist restriction, or pre-consumption invalidation.',
341
+ 'arbitrum-cross-chain-message-replay': 'Arbitrum bridge message handler executes a relayed payload without nonce or processed-message replay protection.',
342
+ 'ccip-receiver-missing-replay-guard': 'Chainlink CCIP receiver processes an inbound message before consuming its messageId.',
343
+ 'arbitrary-storage-proof-forgery': 'Storage proof verifier data authorizes a bridge withdrawal, claim, mint, release, or message execution without binding root, domain, account or slot, and payload to trusted local state.',
344
+ 'fhe-encrypted-input-validation': 'Caller-supplied FHE ciphertext bytes are converted without visible provenance verification or sender binding.',
345
+ 'fhe-handle-leakage': 'FHE encrypted handles are persisted or consumed by decryption callbacks without visible ACL grants or authorization gates.',
346
+ 'fhe-oz-pattern-misuse': 'FHE state and operations layered onto OpenZeppelin upgradeable proxies or access-control mixins without the additional sealing, allowlisting, or initializer guards FHE requires.',
347
+ 'eip7702-cross-chain-replay': 'EIP-7702 delegated-account authorization entries are accepted without binding chainId to block.chainid.',
348
+ 'ai-generated-randomness': 'AI-generated Solidity code uses block.timestamp, blockhash, or predictable block fields as entropy sources in lottery, raffle, or mint-distribution flows.',
349
+ 'bad-randomness-zero-blockhash': 'Current-block blockhash is used as randomness even though blockhash(block.number) always returns zero.',
350
+ 'insecure-randomness': 'Predictable block or gas values influence winner selection, reward allocation, privileged branching, minting, or transfer gates.',
351
+ 'weak-random-mint': 'Weak random mint flaw: predictable block fields are used to gate or compute a mint/transfer amount without sufficient access control.',
352
+ 'capital-cross-contract-reentrancy': 'Function reflects its own share/capital state via a sibling-contract balance, supply, or exchange-rate read while still yielding control through a value-bearing call — the Rari Capital 2021-05-08 cross-contract reentrancy shape.',
353
+ 'cache-storage-reads': 'Repeated state-variable storage reads in the same function can be cached in a local variable.',
354
+ 'cross-contract-reentrancy': 'Stale storage read after an untrusted external call where a sibling function can modify the same storage slot during the callback window.',
355
+ 'governance-flash-loan': 'Flash-loan or rapid bulk governance-token acquisition flows into same-transaction governance execution and privileged role, mint, or treasury-drain behavior.',
356
+ 'sky-oft-governance-truncation': 'OFT/LayerZero send path encodes a narrowed fixed-width governance payload before cross-chain dispatch.',
357
+ 'vault-inflation-rounding': 'Share minting divides by a live token balance that can be donated to inflate the exchange rate and round deposits to zero shares.',
358
+ 'liquidation-gain-manipulation': 'Liquidation, redemption, or stability-pool accounting can be skipped, reordered after value transfer, or derived from stale snapshot state.',
359
+ 'liquidation-accounting-desync': 'Debt mutation or position finalization occurs before cross-contract accounting reconciliation is complete in liquidation/redemption flows.',
360
+ 'yearn-vault-v2-share-price-manipulation': 'Vault conversion arithmetic uses donation-manipulable live balance over the ERC20 totalSupply(), permitting price manipulation.',
361
+ 'mev-merge-exploit': 'Post-Merge MEV extraction surfaces from unprotected proposer payments, unguarded swap state mutation, or block-field-gated proposer credits.',
362
+ 'mev-sandwich-vulnerability': 'DEX swap calls missing slippage guards, carrying unbounded deadlines, or preceded by pool state reads that leak trade intent.',
363
+ 'mev-slot-manipulation': 'Post-Merge MEV-prone block timestamp, block number, or proposer identity assumptions gate sensitive value or state paths.',
364
+ 'merkl-unsafe-claim-callback': 'Unsafe onClaim callback in claim/distribution flow without revert isolation.',
365
+ 'missing-swap-deadline-slippage': 'Uniswap-style DEX router swaps use literal zero minimum output, zero or bare timestamp deadlines, or unbounded deadline sentinels.',
366
+ 'permit-future-dated-deadline': 'ERC-2612 permit implementations and call sites accept effectively unbounded future deadlines.',
367
+ 'unprotected-dex-swap': 'DEX swap calls should use meaningful slippage and execution-time protections.',
368
+ 'erc20-safe-wrapper-return-unchecked': 'Wrapper function (safeTransfer, safeTransferFrom, or safeApprove) swallows the underlying ERC20 boolean return value instead of asserting, assigning, or propagating it.',
369
+ 'pair-manipulation-transfer-hook': 'Transfer hook reads AMM reserves and mutates pair-held token balances.',
370
+ 'check-permit-missing-chainid': 'ERC-2612 permit signatures are accepted with an EIP-712 domain that omits runtime chain id binding or uses a stale chain id.',
371
+ 'incorrect-signature-verification': 'Raw ecrecover authorization or proof flow lacks trusted signer binding or checked-and-written replay protection.',
372
+ 'token-incorrect-signature-verification': 'Token permit, claim, or mint signature verification omits zero-address, domain, nonce, or high-s safeguards.',
373
+ 'vortex-protocol-reentrancy-guard': 'External token/native transfer or low-level call precedes balance or ledger mutation.',
374
+ 'unchecked-external-call-unconditional-state-mutation': 'Unchecked external call return value leading to phantom state changes.',
375
+ 'solhint-unchecked-low-level-call': 'Unchecked low-level call result: the boolean success value must be validated.',
376
+ 'eip712-signature-verification': 'EIP-712 typed-data signature verification missing zero-address, replay, domain, or chain-aware cache binding.',
377
+ 'eip7702-eoa-assumption': 'Flags assumptions about EOA code length or tx.origin that are invalidated by EIP-7702 delegated execution.',
378
+ 'zksync-simulation-drift': 'zkSync Era-specific msg.sender, nonce, or deployment address assumptions that can diverge during system-contract mediated simulation.',
379
+ 'v2-error-k-value-attack': 'Uniswap-V2-style swap K invariant can be bypassed through mismatched fee scaling or a stale pre-reconciliation K check.',
380
+ 'fee-mechanism-exploitation': 'ERC20 transferFrom permits self-transfer through fee or burn accounting that debits a transfer participant.',
381
+ 'erc7579-module-install-without-threshold': 'ERC-7579 module install path mutates module state before enforcing a threshold or quorum policy.',
382
+ 'layerzero-dvn-quorum-missing': 'LayerZero v2 receive handler consumes payload data before enforcing a DVN quorum or verifier threshold.',
383
+ 'public-internal-function': 'Externally callable internal-intent helper mutates state without access control.',
384
+ };
385
+ const DEFAULT_RULE_SEVERITY = 'medium';
386
+ function detectorHelpUri(ruleId) {
387
+ return 'https://snovon.com/';
388
+ }
389
+ function titleizeRuleId(ruleId) {
390
+ return ruleId
391
+ .split(/[\/-]+/)
392
+ .filter(Boolean)
393
+ .map(part => {
394
+ const lower = part.toLowerCase();
395
+ if (/^(ai|amm|dao|eip|erc|evm|l1|l2|nft|oft|uups|vm|zk)$/.test(lower)) {
396
+ return lower.toUpperCase();
397
+ }
398
+ return part.charAt(0).toUpperCase() + part.slice(1);
399
+ })
400
+ .join(' ');
401
+ }
402
+ const RULES = RULE_IDS.map(id => ({
403
+ id,
404
+ shortDescription: RULE_DESCRIPTIONS[id] || `Detects ${titleizeRuleId(id)} risk patterns in Solidity contracts.`,
405
+ helpUri: detectorHelpUri(id),
406
+ defaultSeverity: DEFAULT_RULE_SEVERITY,
407
+ }));
408
+ function normalizeUriPath(file) {
409
+ return file.replace(/\\/g, '/');
410
+ }
411
+ function isOutsideRoot(relativePath) {
412
+ const normalized = normalizeUriPath(relativePath);
413
+ return normalized === '..' || normalized.startsWith('../') || path.isAbsolute(relativePath);
414
+ }
415
+ function fileUri(file) {
416
+ return (0, url_1.pathToFileURL)(path.resolve(file)).href;
417
+ }
418
+ function artifactUri(file, opts = {}) {
419
+ if (!path.isAbsolute(file)) {
420
+ return { uri: normalizeUriPath(file), usesAbsoluteFileUri: false };
421
+ }
422
+ const root = opts.rootDir || opts.cwd;
423
+ if (root) {
424
+ const relative = path.relative(path.resolve(root), file);
425
+ if (!isOutsideRoot(relative)) {
426
+ return { uri: normalizeUriPath(relative), usesAbsoluteFileUri: false };
427
+ }
428
+ }
429
+ return { uri: fileUri(file), usesAbsoluteFileUri: true };
430
+ }
431
+ function compareString(a, b) {
432
+ return a.localeCompare(b);
433
+ }
434
+ function sortFindings(opts) {
435
+ return (a, b) => compareString(artifactUri(a.file, opts).uri, artifactUri(b.file, opts).uri)
436
+ || (a.line || 0) - (b.line || 0)
437
+ || compareString(a.ruleId, b.ruleId)
438
+ || compareString(a.findingId || '', b.findingId || '');
439
+ }
440
+ function regionFor(finding) {
441
+ if (!Number.isInteger(finding.line) || finding.line <= 0)
442
+ return undefined;
443
+ const region = { startLine: finding.line };
444
+ // ScanResult columns are parser-native 0-based (@solidity-parser
445
+ // loc.*.column); SARIF columns are 1-based, so convert at this boundary.
446
+ // The >= 0 guard keeps column-0 (line start) findings, which the previous
447
+ // > 0 check silently dropped.
448
+ if (Number.isInteger(finding.column) && finding.column !== undefined && finding.column >= 0) {
449
+ region.startColumn = finding.column + 1;
450
+ }
451
+ if (Number.isInteger(finding.endLine) && finding.endLine !== undefined && finding.endLine > 0) {
452
+ region.endLine = finding.endLine;
453
+ }
454
+ if (Number.isInteger(finding.endColumn) && finding.endColumn !== undefined && finding.endColumn >= 0) {
455
+ region.endColumn = finding.endColumn + 1;
456
+ }
457
+ return region;
458
+ }
459
+ function propertiesFor(finding) {
460
+ const properties = {};
461
+ if (finding.findingId)
462
+ properties.findingId = finding.findingId;
463
+ if (finding.contractName)
464
+ properties.contractName = finding.contractName;
465
+ if (finding.functionName)
466
+ properties.functionName = finding.functionName;
467
+ if (finding.caller)
468
+ properties.caller = finding.caller;
469
+ if (finding.delegateTarget)
470
+ properties.delegateTarget = finding.delegateTarget;
471
+ if (finding.initializerPath)
472
+ properties.initializerPath = finding.initializerPath;
473
+ if (finding.contractHash)
474
+ properties.contractHash = finding.contractHash;
475
+ if (finding.snippetHash)
476
+ properties.snippetHash = finding.snippetHash;
477
+ if (finding.provenance)
478
+ properties.source = finding.provenance;
479
+ if (finding.tier)
480
+ properties.tier = finding.tier;
481
+ return Object.keys(properties).length > 0 ? properties : undefined;
482
+ }
483
+ function severityForRule(ruleId, nativeSeverity, opts) {
484
+ return opts.severityOverrides?.[ruleId] || nativeSeverity;
485
+ }
486
+ function sarifLevelForFinding(finding, opts = {}) {
487
+ const nativeLevel = (0, severity_1.toSarifLevel)(finding.severity);
488
+ const overriddenSeverity = opts.severityOverrides?.[finding.ruleId];
489
+ let level = overriddenSeverity ? (0, severity_1.toSarifLevel)(overriddenSeverity) : nativeLevel;
490
+ if (opts.sarifSeverityTuning === false) {
491
+ return level;
492
+ }
493
+ const threshold = opts.fpThresholdPct ?? 5;
494
+ if (!overriddenSeverity && threshold > 0 && opts.fpRates) {
495
+ const fpRate = opts.fpRates[finding.ruleId];
496
+ if (fpRate !== undefined && fpRate > threshold) {
497
+ if (fpRate > 15) {
498
+ if (level === 'error' || level === 'warning') {
499
+ level = 'note';
500
+ }
501
+ }
502
+ else {
503
+ if (level === 'error') {
504
+ level = 'warning';
505
+ }
506
+ }
507
+ }
508
+ }
509
+ return level;
510
+ }
511
+ function resultFor(finding, opts, onAbsoluteFileUri) {
512
+ const overriddenSeverity = opts.severityOverrides?.[finding.ruleId];
513
+ const level = sarifLevelForFinding(finding, opts);
514
+ const result = {
515
+ ruleId: finding.ruleId,
516
+ level,
517
+ message: {
518
+ text: finding.message
519
+ }
520
+ };
521
+ const region = regionFor(finding);
522
+ if (region) {
523
+ const artifactLocation = artifactUri(finding.file, opts);
524
+ if (artifactLocation.usesAbsoluteFileUri)
525
+ onAbsoluteFileUri();
526
+ result.locations = [{
527
+ physicalLocation: {
528
+ artifactLocation: {
529
+ uri: artifactLocation.uri
530
+ },
531
+ region
532
+ }
533
+ }];
534
+ }
535
+ const properties = propertiesFor(finding);
536
+ if (overriddenSeverity) {
537
+ const resultProperties = properties || {};
538
+ resultProperties.originalSeverity = finding.severity;
539
+ result.properties = resultProperties;
540
+ }
541
+ if (properties)
542
+ result.properties = properties;
543
+ return result;
544
+ }
545
+ function detectorDescriptorRules() {
546
+ try {
547
+ // Loaded lazily to avoid making the formatter's module initialization
548
+ // instantiate the full detector registry.
549
+ // eslint-disable-next-line @typescript-eslint/no-var-requires
550
+ const { createDefaultDetectorRegistry } = require('../registry');
551
+ const registry = createDefaultDetectorRegistry();
552
+ const descriptors = [];
553
+ for (const detector of registry.detectorsForSarif?.() || []) {
554
+ if (!detector?.descriptor)
555
+ continue;
556
+ descriptors.push({ ...detector.descriptor });
557
+ }
558
+ return descriptors;
559
+ }
560
+ catch (_err) {
561
+ return [];
562
+ }
563
+ }
564
+ function synthesizeRuleEntry(ruleId) {
565
+ // Synthetic fallback for findings whose rule IDs are not in the curated
566
+ // RULES table. Without this, SARIF consumers (e.g. GitHub code scanning)
567
+ // render those findings with empty rule pages — and the table inevitably
568
+ // drifts behind the registry. The synthesized entry uses a generic
569
+ // description and a stable docs URL so consumers always have *something*
570
+ // to link to. The curated entry takes precedence whenever it exists.
571
+ return {
572
+ id: ruleId,
573
+ shortDescription: `SolAST rule '${ruleId}'.`,
574
+ helpUri: detectorHelpUri(ruleId),
575
+ defaultSeverity: DEFAULT_RULE_SEVERITY,
576
+ };
577
+ }
578
+ /**
579
+ * Build the rules array for the SARIF run. Curated rules are emitted first,
580
+ * preserving the order in which they appear in `RULES` (some downstream tests
581
+ * pin that order). Any rule IDs that show up in findings but are not curated
582
+ * are appended afterwards, sorted alphabetically for deterministic output.
583
+ */
584
+ function buildRulesArray(findings) {
585
+ const curated = RULES.map(rule => ({
586
+ id: rule.id,
587
+ shortDescription: rule.shortDescription,
588
+ helpUri: rule.helpUri,
589
+ defaultSeverity: rule.defaultSeverity,
590
+ }));
591
+ const seenCurated = new Set(curated.map(rule => rule.id));
592
+ for (const rule of detectorDescriptorRules()) {
593
+ if (seenCurated.has(rule.id))
594
+ continue;
595
+ seenCurated.add(rule.id);
596
+ curated.push(rule);
597
+ }
598
+ const seen = new Set(curated.map(rule => rule.id));
599
+ const synthesized = [];
600
+ for (const finding of findings) {
601
+ if (!finding.ruleId || seen.has(finding.ruleId))
602
+ continue;
603
+ seen.add(finding.ruleId);
604
+ synthesized.push(synthesizeRuleEntry(finding.ruleId));
605
+ }
606
+ synthesized.sort((a, b) => a.id.localeCompare(b.id));
607
+ return [...curated, ...synthesized];
608
+ }
609
+ /** Exposed for tests: the set of rule IDs with hand-written SARIF metadata. */
610
+ function getCuratedSarifRuleIds() {
611
+ const ids = RULES.map(rule => rule.id);
612
+ const seen = new Set(ids);
613
+ for (const rule of detectorDescriptorRules()) {
614
+ if (seen.has(rule.id))
615
+ continue;
616
+ seen.add(rule.id);
617
+ ids.push(rule.id);
618
+ }
619
+ return ids;
620
+ }
621
+ /** Exposed for tests: curated SARIF descriptors, before SARIF object shaping. */
622
+ function getCuratedSarifRules() {
623
+ return buildRulesArray([]);
624
+ }
625
+ function formatSarif(findings, opts = {}) {
626
+ let usesAbsoluteFileUri = false;
627
+ const results = [...findings]
628
+ .sort(sortFindings(opts))
629
+ .map(finding => resultFor(finding, opts, () => {
630
+ usesAbsoluteFileUri = true;
631
+ }));
632
+ const run = {
633
+ tool: {
634
+ driver: {
635
+ name: 'SolAST',
636
+ informationUri: 'https://snovon.com/',
637
+ rules: buildRulesArray(findings).map(rule => ({
638
+ id: rule.id,
639
+ shortDescription: {
640
+ text: rule.shortDescription
641
+ },
642
+ helpUri: rule.helpUri,
643
+ ...(rule.help ? { help: { text: rule.help } } : {}),
644
+ defaultConfiguration: {
645
+ level: (0, severity_1.toSarifLevel)(severityForRule(rule.id, rule.defaultSeverity, opts))
646
+ }
647
+ }))
648
+ }
649
+ },
650
+ results
651
+ };
652
+ if (usesAbsoluteFileUri && (opts.rootDir || opts.cwd)) {
653
+ run.invocations = [{
654
+ // SARIF 2.1.0 §3.20.14: executionSuccessful is the one REQUIRED
655
+ // property of an invocation object. We only format results after a
656
+ // completed scan, so it is always true here.
657
+ executionSuccessful: true,
658
+ workingDirectory: {
659
+ uri: fileUri(opts.rootDir || opts.cwd)
660
+ }
661
+ }];
662
+ }
663
+ const sarif = {
664
+ $schema: 'https://json.schemastore.org/sarif-2.1.0.json',
665
+ version: '2.1.0',
666
+ runs: [run]
667
+ };
668
+ return JSON.stringify(sarif, null, 2);
669
+ }
670
+ //# sourceMappingURL=sarif.js.map