@akasecurity/cli 0.9.5 → 0.9.6

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 (96) hide show
  1. package/dist/cli.js +129 -50
  2. package/extension/manifest.json +1 -1
  3. package/native-host/host.js +90 -35
  4. package/native-host/scan-worker.js +61 -12
  5. package/package.json +6 -6
  6. package/web-ui/package.json +5 -2
  7. package/web-ui/packages/detections/package.json +3 -2
  8. package/web-ui/packages/persistence/package.json +3 -2
  9. package/web-ui/packages/plugin-sdk/package.json +2 -1
  10. package/web-ui/web-ui/.next/BUILD_ID +1 -1
  11. package/web-ui/web-ui/.next/app-build-manifest.json +66 -66
  12. package/web-ui/web-ui/.next/app-path-routes-manifest.json +7 -7
  13. package/web-ui/web-ui/.next/build-manifest.json +2 -2
  14. package/web-ui/web-ui/.next/prerender-manifest.json +14 -14
  15. package/web-ui/web-ui/.next/server/app/(app)/activity/page.js +1 -1
  16. package/web-ui/web-ui/.next/server/app/(app)/activity/page_client-reference-manifest.js +1 -1
  17. package/web-ui/web-ui/.next/server/app/(app)/data-shares/page.js +1 -1
  18. package/web-ui/web-ui/.next/server/app/(app)/data-shares/page_client-reference-manifest.js +1 -1
  19. package/web-ui/web-ui/.next/server/app/(app)/detections/page.js +2 -2
  20. package/web-ui/web-ui/.next/server/app/(app)/detections/page_client-reference-manifest.js +1 -1
  21. package/web-ui/web-ui/.next/server/app/(app)/exceptions/[id]/page.js +2 -2
  22. package/web-ui/web-ui/.next/server/app/(app)/exceptions/[id]/page.js.nft.json +1 -1
  23. package/web-ui/web-ui/.next/server/app/(app)/exceptions/[id]/page_client-reference-manifest.js +1 -1
  24. package/web-ui/web-ui/.next/server/app/(app)/exceptions/new/page.js +2 -2
  25. package/web-ui/web-ui/.next/server/app/(app)/exceptions/new/page.js.nft.json +1 -1
  26. package/web-ui/web-ui/.next/server/app/(app)/exceptions/new/page_client-reference-manifest.js +1 -1
  27. package/web-ui/web-ui/.next/server/app/(app)/exceptions/page.js +2 -2
  28. package/web-ui/web-ui/.next/server/app/(app)/exceptions/page.js.nft.json +1 -1
  29. package/web-ui/web-ui/.next/server/app/(app)/exceptions/page_client-reference-manifest.js +1 -1
  30. package/web-ui/web-ui/.next/server/app/(app)/findings/page.js +2 -2
  31. package/web-ui/web-ui/.next/server/app/(app)/findings/page_client-reference-manifest.js +1 -1
  32. package/web-ui/web-ui/.next/server/app/(app)/inventory/page.js +2 -2
  33. package/web-ui/web-ui/.next/server/app/(app)/inventory/page_client-reference-manifest.js +1 -1
  34. package/web-ui/web-ui/.next/server/app/(app)/policies/page_client-reference-manifest.js +1 -1
  35. package/web-ui/web-ui/.next/server/app/(app)/scan/page.js +2 -2
  36. package/web-ui/web-ui/.next/server/app/(app)/scan/page.js.nft.json +1 -1
  37. package/web-ui/web-ui/.next/server/app/(app)/scan/page_client-reference-manifest.js +1 -1
  38. package/web-ui/web-ui/.next/server/app/(app)/security/page_client-reference-manifest.js +1 -1
  39. package/web-ui/web-ui/.next/server/app/(app)/settings/page.js +2 -2
  40. package/web-ui/web-ui/.next/server/app/(app)/settings/page_client-reference-manifest.js +1 -1
  41. package/web-ui/web-ui/.next/server/app/(app)/updates/page.js +2 -2
  42. package/web-ui/web-ui/.next/server/app/(app)/updates/page.js.nft.json +1 -1
  43. package/web-ui/web-ui/.next/server/app/(app)/updates/page_client-reference-manifest.js +1 -1
  44. package/web-ui/web-ui/.next/server/app/(app)/vault/page.js +2 -2
  45. package/web-ui/web-ui/.next/server/app/(app)/vault/page.js.nft.json +1 -1
  46. package/web-ui/web-ui/.next/server/app/(app)/vault/page_client-reference-manifest.js +1 -1
  47. package/web-ui/web-ui/.next/server/app/_not-found/page_client-reference-manifest.js +1 -1
  48. package/web-ui/web-ui/.next/server/app/_not-found.html +1 -1
  49. package/web-ui/web-ui/.next/server/app/_not-found.rsc +2 -2
  50. package/web-ui/web-ui/.next/server/app/index.html +1 -1
  51. package/web-ui/web-ui/.next/server/app/index.rsc +2 -2
  52. package/web-ui/web-ui/.next/server/app/page_client-reference-manifest.js +1 -1
  53. package/web-ui/web-ui/.next/server/app-paths-manifest.json +7 -7
  54. package/web-ui/web-ui/.next/server/chunks/160.js +2 -2
  55. package/web-ui/web-ui/.next/server/chunks/243.js +1 -1
  56. package/web-ui/web-ui/.next/server/chunks/333.js +1 -1
  57. package/web-ui/web-ui/.next/server/chunks/{330.js → 413.js} +1 -1
  58. package/web-ui/web-ui/.next/server/chunks/557.js +2 -2
  59. package/web-ui/web-ui/.next/server/functions-config-manifest.json +5 -5
  60. package/web-ui/web-ui/.next/server/middleware-manifest.json +5 -5
  61. package/web-ui/web-ui/.next/server/pages/404.html +1 -1
  62. package/web-ui/web-ui/.next/server/pages/500.html +1 -1
  63. package/web-ui/web-ui/.next/server/server-reference-manifest.js +1 -1
  64. package/web-ui/web-ui/.next/server/server-reference-manifest.json +1 -1
  65. package/web-ui/web-ui/.next/static/chunks/133-66e4c8e40b72a3e8.js +1 -0
  66. package/web-ui/web-ui/.next/static/chunks/app/(app)/activity/page-1151de62cd9386c8.js +1 -0
  67. package/web-ui/web-ui/.next/static/chunks/app/(app)/data-shares/{page-d96aa1158bb1c630.js → page-eaee9ff5ba1056e3.js} +1 -1
  68. package/web-ui/web-ui/.next/static/chunks/app/(app)/detections/{page-269fa2d4f47e6125.js → page-7fbcf876de9f09de.js} +1 -1
  69. package/web-ui/web-ui/.next/static/chunks/app/(app)/exceptions/[id]/page-8f33eba279e45c1d.js +1 -0
  70. package/web-ui/web-ui/.next/static/chunks/app/(app)/exceptions/new/page-bf9c74a239afdab2.js +1 -0
  71. package/web-ui/web-ui/.next/static/chunks/app/(app)/exceptions/page-e17e9d7c8547bc32.js +1 -0
  72. package/web-ui/web-ui/.next/static/chunks/app/(app)/findings/page-4bdf3d2ede57b3c7.js +1 -0
  73. package/web-ui/web-ui/.next/static/chunks/app/(app)/inventory/page-88b768ca343a8524.js +1 -0
  74. package/web-ui/web-ui/.next/static/chunks/app/(app)/{layout-d7a290e9b0dd8a15.js → layout-a346cd78f5f28936.js} +1 -1
  75. package/web-ui/web-ui/.next/static/chunks/app/(app)/policies/{page-1d1a93a1e561ca82.js → page-f79874ebd61fbf46.js} +1 -1
  76. package/web-ui/web-ui/.next/static/chunks/app/(app)/scan/page-86e7e860ce98d0a4.js +1 -0
  77. package/web-ui/web-ui/.next/static/chunks/app/(app)/security/{page-a7fa0e028623b7cb.js → page-557e1703a106d286.js} +1 -1
  78. package/web-ui/web-ui/.next/static/chunks/app/(app)/settings/page-a1956abf86b48b8b.js +1 -0
  79. package/web-ui/web-ui/.next/static/chunks/app/(app)/updates/page-fe71f1fd0ab6cde6.js +1 -0
  80. package/web-ui/web-ui/.next/static/chunks/app/(app)/vault/page-2473d9063bd5eb69.js +1 -0
  81. package/web-ui/web-ui/.next/static/css/2eca310301b96d98.css +2 -0
  82. package/web-ui/web-ui/dist/scan-worker.js +61 -12
  83. package/web-ui/web-ui/.next/static/chunks/133-14f0f297836736b9.js +0 -1
  84. package/web-ui/web-ui/.next/static/chunks/app/(app)/activity/page-90ea4cb1f1956a03.js +0 -1
  85. package/web-ui/web-ui/.next/static/chunks/app/(app)/exceptions/[id]/page-4ad5b60f476d7c6e.js +0 -1
  86. package/web-ui/web-ui/.next/static/chunks/app/(app)/exceptions/new/page-2bf76696fbe6e76d.js +0 -1
  87. package/web-ui/web-ui/.next/static/chunks/app/(app)/exceptions/page-5d2511a7c06dd645.js +0 -1
  88. package/web-ui/web-ui/.next/static/chunks/app/(app)/findings/page-1891ec610b461455.js +0 -1
  89. package/web-ui/web-ui/.next/static/chunks/app/(app)/inventory/page-bc090490b3416d48.js +0 -1
  90. package/web-ui/web-ui/.next/static/chunks/app/(app)/scan/page-7a1a29a230626f96.js +0 -1
  91. package/web-ui/web-ui/.next/static/chunks/app/(app)/settings/page-9729632fc8128534.js +0 -1
  92. package/web-ui/web-ui/.next/static/chunks/app/(app)/updates/page-bda9e826a1ac1a00.js +0 -1
  93. package/web-ui/web-ui/.next/static/chunks/app/(app)/vault/page-28116d3ce827e152.js +0 -1
  94. package/web-ui/web-ui/.next/static/css/0af7782f7a750368.css +0 -2
  95. /package/web-ui/web-ui/.next/static/{x4ixG3_q4UeyC_WNmSFdI → scT_YT84DnOMXJI2dA75N}/_buildManifest.js +0 -0
  96. /package/web-ui/web-ui/.next/static/{x4ixG3_q4UeyC_WNmSFdI → scT_YT84DnOMXJI2dA75N}/_ssgManifest.js +0 -0
@@ -579,6 +579,40 @@ function escapeRegExp2(value) {
579
579
  return value.replace(/[.*+?^${}()|[\]\\]/g, "\\$&");
580
580
  }
581
581
 
582
+ // ../packages/detections/src/regex-cache.ts
583
+ var singles = /* @__PURE__ */ new WeakMap();
584
+ var keywordLists = /* @__PURE__ */ new WeakMap();
585
+ var labelLists = /* @__PURE__ */ new WeakMap();
586
+ function listCache(kind) {
587
+ return kind === "keyword" ? keywordLists : labelLists;
588
+ }
589
+ function memoizedRegExp(owner, build) {
590
+ const cached2 = singles.get(owner);
591
+ if (cached2 !== void 0) {
592
+ cached2.lastIndex = 0;
593
+ return cached2;
594
+ }
595
+ const compiled = build();
596
+ singles.set(owner, compiled);
597
+ return compiled;
598
+ }
599
+ function memoizedRegExpList(kind, owner, build) {
600
+ const cache = listCache(kind);
601
+ const cached2 = cache.get(owner);
602
+ if (cached2 !== void 0) {
603
+ if (cached2.stateful) {
604
+ for (const re of cached2.entries) if (re !== void 0) re.lastIndex = 0;
605
+ }
606
+ return cached2.entries;
607
+ }
608
+ const entries = build();
609
+ cache.set(owner, {
610
+ entries,
611
+ stateful: entries.some((re) => re !== void 0 && (re.global || re.sticky))
612
+ });
613
+ return entries;
614
+ }
615
+
582
616
  // ../packages/detections/src/matchers/limits.ts
583
617
  var MAX_MATCHES_PER_RULE = 1e4;
584
618
  var MAX_REGEX_INPUT_LENGTH = 2e5;
@@ -589,10 +623,17 @@ var KeywordMatcher = class {
589
623
  if (rule.matcher.type !== "keyword") return [];
590
624
  const { keywords, caseSensitive } = rule.matcher;
591
625
  const spans = [];
592
- for (const kw of keywords) {
593
- if (kw.length === 0) continue;
626
+ const compiled = memoizedRegExpList(
627
+ "keyword",
628
+ rule.matcher,
629
+ () => keywords.map((kw) => {
630
+ if (kw.length === 0) return void 0;
631
+ return new RegExp(escapeRegExp2(kw), caseSensitive ? "gu" : "giu");
632
+ })
633
+ );
634
+ for (const re of compiled) {
635
+ if (re === void 0) continue;
594
636
  if (spans.length >= MAX_MATCHES_PER_RULE) break;
595
- const re = new RegExp(escapeRegExp2(kw), caseSensitive ? "gu" : "giu");
596
637
  let m;
597
638
  while ((m = re.exec(text)) !== null) {
598
639
  spans.push({ start: m.index, end: m.index + m[0].length });
@@ -608,7 +649,10 @@ var RegexMatcher = class {
608
649
  match(text, rule) {
609
650
  if (rule.matcher.type !== "regex") return [];
610
651
  const { pattern, flags, captureGroup } = rule.matcher;
611
- const re = new RegExp(pattern, flags.includes("d") ? flags : `${flags}d`);
652
+ const re = memoizedRegExp(
653
+ rule.matcher,
654
+ () => new RegExp(pattern, flags.includes("d") ? flags : `${flags}d`)
655
+ );
612
656
  const scanText = text.length > MAX_REGEX_INPUT_LENGTH ? text.slice(0, MAX_REGEX_INPUT_LENGTH) : text;
613
657
  const spans = [];
614
658
  let m;
@@ -713,11 +757,15 @@ function isCorroborated(candidate, candidates, text) {
713
757
  const labels = req.labels;
714
758
  if (labels && labels.length > 0) {
715
759
  const haystack = text.slice(Math.max(0, winStart), winEnd);
716
- for (const label of labels) {
717
- const trimmed = label.trim();
718
- if (trimmed.length === 0) continue;
719
- const re = new RegExp(`(?<![A-Za-z0-9])${escapeRegExp2(trimmed)}(?![A-Za-z0-9])`, "i");
720
- if (re.test(haystack)) return true;
760
+ for (const re of memoizedRegExpList(
761
+ "label",
762
+ req,
763
+ () => labels.map((label) => {
764
+ const trimmed = label.trim();
765
+ return trimmed.length === 0 ? void 0 : new RegExp(`(?<![A-Za-z0-9])${escapeRegExp2(trimmed)}(?![A-Za-z0-9])`, "i");
766
+ })
767
+ )) {
768
+ if (re?.test(haystack)) return true;
721
769
  }
722
770
  }
723
771
  return false;
@@ -17951,13 +17999,14 @@ function probesFor(rule) {
17951
17999
  const derived = rule.matcher.type === "regex" ? derivedProbes(rule.matcher.pattern) : [];
17952
18000
  return [...derived, ...EXPONENTIAL_PROBES, ...POLYNOMIAL_PROBES];
17953
18001
  }
17954
- function worstProbeMs(rule) {
18002
+ var wallClock = () => performance.now();
18003
+ function worstProbeMs(rule, now = wallClock) {
17955
18004
  let ms = 0;
17956
18005
  let probe = "";
17957
18006
  for (const text of probesFor(rule)) {
17958
- const start = performance.now();
18007
+ const start = now();
17959
18008
  scan(text, [rule]);
17960
- const elapsed = performance.now() - start;
18009
+ const elapsed = now() - start;
17961
18010
  if (elapsed > ms) {
17962
18011
  ms = elapsed;
17963
18012
  probe = text;