← Legacy view v2 (rp.*)

shopify/polaris-react

https://github.com/Shopify/polaris-react.git · lang: typescript · LOC: · source: user_submitted

Quality
85.2
Grade A-
Security
100.0
Findings
102
7 critical · 18 high
Status
completed
May 24, 2026 01:23
info: 35 low: 28 high: 18 medium: 14 critical: 7
Top rules by occurrence
RuleSeverityCount
AIC003 Duplicated implementation block across source files low 26
SEC040 innerHTML XSS — template literal with server-supplied data high 4
MINED054 Ts As Any info 4
SEC045 eval()/exec() on stored or user-supplied data medium 4
MINED056 React Key As Index info 4
MINED057 Todo Bomb info 4
SEC085 JS: child_process.exec with non-literal high 4
MINED045 Ts Non Null Assertion info 4
MINED044 Js Console Log Prod info 4
SEC083 JS: new RegExp() with non-literal high 4
First 102 findings (severity-sorted)
critical MINED018 Unsafe Deserialization Pickle CWE-502
.eslintrc.js:6 · conf 1.00
[MINED018] Unsafe Deserialization Pickle: pickle.loads / yaml.load (without Loader=SafeLoader) / unmarshal of network/file data — RCE.
critical MINED018 Unsafe Deserialization Pickle CWE-502
polaris.shopify.com/src/utils/markdown.mjs:9 · conf 1.00
[MINED018] Unsafe Deserialization Pickle: pickle.loads / yaml.load (without Loader=SafeLoader) / unmarshal of network/file data — RCE.
critical MINED116 GHA pull_request workflow leaks secrets to forks CWE-829
.github/workflows/ci-a11y-vrt.yml:166 · conf 0.90
[MINED116] Workflow uses `secrets.CHROMATIC_PROJECT_TOKEN` on a `pull_request` trigger: This workflow triggers on `pull_request`, which checks out the FORK's code. Referencing `${ secrets.CHROMATIC_P…
critical SEC079 Python: yaml.load without SafeLoader
.eslintrc.js:6 · conf 1.00
[SEC079] Python: yaml.load without SafeLoader: yaml.load() without explicit SafeLoader can execute arbitrary Python objects (CVE-2017-18342). Ported from bandit B506 / dlint DUO109 (Apache-2.0 / BSD-…
critical SEC079 Python: yaml.load without SafeLoader
polaris.shopify.com/src/utils/markdown.mjs:9 · conf 1.00
[SEC079] Python: yaml.load without SafeLoader: yaml.load() without explicit SafeLoader can execute arbitrary Python objects (CVE-2017-18342). Ported from bandit B506 / dlint DUO109 (Apache-2.0 / BSD-…
critical SEC116 Ruby YAML.load / Marshal.load on untrusted input
.eslintrc.js:6 · conf 1.00
[SEC116] Ruby YAML.load / Marshal.load on untrusted input: `YAML.load` (pre-3.1) and `Marshal.load` instantiate arbitrary Ruby classes — direct RCE on untrusted input. `unsafe_load` is even more dang…
critical SEC116 Ruby YAML.load / Marshal.load on untrusted input
polaris.shopify.com/src/utils/markdown.mjs:9 · conf 1.00
[SEC116] Ruby YAML.load / Marshal.load on untrusted input: `YAML.load` (pre-3.1) and `Marshal.load` instantiate arbitrary Ruby classes — direct RCE on untrusted input. `unsafe_load` is even more dang…
high MINED004 Weak Crypto CWE-327
polaris.shopify.com/pages/api/tokens/v0/[tokens].tsx:92 · conf 1.00
[MINED004] Weak Crypto: MD5/SHA1/DES/RC4 used for security context (not just checksums).
high MINED115 GitHub Action pinned to mutable ref (not 40-char SHA) CWE-829
.github/workflows/cla.yml:19 · conf 0.90
[MINED115] Action `Shopify/shopify-cla-action` pinned to mutable ref `@v1`: `uses: Shopify/shopify-cla-action@v1` resolves at workflow-run time. Tags and branches can be re-pushed by the action owner…
high MINED115 GitHub Action pinned to mutable ref (not 40-char SHA) CWE-829
.github/workflows/snapit.yml:22 · conf 0.90
[MINED115] Action `Shopify/snapit` pinned to mutable ref `@v0.0.14`: `uses: Shopify/[email protected]` resolves at workflow-run time. Tags and branches can be re-pushed by the action owner; that made th…
high SEC029 Server-Side Request Forgery (SSRF) — outbound HTTP from user input
polaris-react/src/components/Form/Form.stories.tsx:62 · conf 1.00
[SEC029] Server-Side Request Forgery (SSRF) — outbound HTTP from user input: Outbound HTTP request to a user-controlled URL without allowlist validation. Attackers can probe internal services (169.25…
high SEC029 Server-Side Request Forgery (SSRF) — outbound HTTP from user input
polaris.shopify.com/pages/api/tokens/v0/index.tsx:84 · conf 1.00
[SEC029] Server-Side Request Forgery (SSRF) — outbound HTTP from user input: Outbound HTTP request to a user-controlled URL without allowlist validation. Attackers can probe internal services (169.25…
high SEC029 Server-Side Request Forgery (SSRF) — outbound HTTP from user input
polaris.shopify.com/pages/_app.tsx:60 · conf 1.00
[SEC029] Server-Side Request Forgery (SSRF) — outbound HTTP from user input: Outbound HTTP request to a user-controlled URL without allowlist validation. Attackers can probe internal services (169.25…
high SEC040 innerHTML XSS — template literal with server-supplied data
polaris-migrator/src/cli.ts:73 · conf 1.00
[SEC040] innerHTML XSS — template literal with server-supplied data: Setting .innerHTML with a template literal that interpolates server-supplied or user-supplied data is the canonical stored/reflect…
high SEC040 innerHTML XSS — template literal with server-supplied data
polaris-react/src/components/Image/Image.tsx:25 · conf 1.00
[SEC040] innerHTML XSS — template literal with server-supplied data: Setting .innerHTML with a template literal that interpolates server-supplied or user-supplied data is the canonical stored/reflect…
high SEC040 innerHTML XSS — template literal with server-supplied data
polaris-tokens/scripts/toStyleSheet.ts:53 · conf 1.00
[SEC040] innerHTML XSS — template literal with server-supplied data: Setting .innerHTML with a template literal that interpolates server-supplied or user-supplied data is the canonical stored/reflect…
high SEC083 JS: new RegExp() with non-literal
polaris-migrator/src/utilities/imports.ts:32 · conf 1.00
[SEC083] JS: new RegExp() with non-literal: new RegExp(<variable>) — variable input can craft a ReDoS pattern. Ported from eslint-plugin-security detect-non-literal-regexp (Apache-2.0).
high SEC083 JS: new RegExp() with non-literal
polaris-migrator/src/utilities/matches.ts:69 · conf 1.00
[SEC083] JS: new RegExp() with non-literal: new RegExp(<variable>) — variable input can craft a ReDoS pattern. Ported from eslint-plugin-security detect-non-literal-regexp (Apache-2.0).
high SEC083 JS: new RegExp() with non-literal
polaris-react/src/components/Picker/Picker.tsx:53 · conf 1.00
[SEC083] JS: new RegExp() with non-literal: new RegExp(<variable>) — variable input can craft a ReDoS pattern. Ported from eslint-plugin-security detect-non-literal-regexp (Apache-2.0).
high SEC085 JS: child_process.exec with non-literal
polaris-react/config/rollup/namespaced-classname.mjs:16 · conf 1.00
[SEC085] JS: child_process.exec with non-literal: child_process.exec with user-derived input enables command injection. Ported from eslint-plugin-security detect-child-process (Apache-2.0).
high SEC085 JS: child_process.exec with non-literal
polaris-react/config/rollup/plugin-styles.js:182 · conf 1.00
[SEC085] JS: child_process.exec with non-literal: child_process.exec with user-derived input enables command injection. Ported from eslint-plugin-security detect-child-process (Apache-2.0).
high SEC085 JS: child_process.exec with non-literal
polaris-react/src/components/Picker/Picker.tsx:164 · conf 1.00
[SEC085] JS: child_process.exec with non-literal: child_process.exec with user-derived input enables command injection. Ported from eslint-plugin-security detect-child-process (Apache-2.0).
high SEC114 path.join / Path() on user-controlled segment without containment check
polaris-migrator/src/utilities/check.ts:51 · conf 1.00
[SEC114] path.join / Path() on user-controlled segment without containment check: filepath.Clean / path.Join on attacker-supplied segments does NOT prevent escape from the base directory. `../../../e…
high SEC128 Async function without await — fire-and-forget Promise (AI mistake)
polaris-react/src/utilities/breakpoints.ts:158 · conf 1.00
[SEC128] Async function without await — fire-and-forget Promise (AI mistake): Async call invoked without `await` returns an unhandled Promise. The outer function resolves before the inner work comple…
high SEC128 Async function without await — fire-and-forget Promise (AI mistake)
polaris.shopify.com/pages/examples/combobox-with-multi-select-and-vertical-content.tsx:35 · conf 1.00
[SEC128] Async function without await — fire-and-forget Promise (AI mistake): Async call invoked without `await` returns an unhandled Promise. The outer function resolves before the inner work comple…
medium AUC001 [AUC001] No Repobility access matrix policy found: The repository uses web/API frameworks but does not define .repobility/access.yml or equivalent authorization documentation.
· conf 0.92
[AUC001] No Repobility access matrix policy found: The repository uses web/API frameworks but does not define .repobility/access.yml or equivalent authorization documentation.
medium ERR002 [ERR002] Empty Catch Block: Empty catch blocks hide errors.
polaris.shopify.com/pages/_app.tsx:30 · conf 1.00
[ERR002] Empty Catch Block: Empty catch blocks hide errors.
medium SEC007 Unsafe Deserialization
.eslintrc.js:6 · conf 1.00
[SEC007] Unsafe Deserialization: Unsafe deserialization can execute arbitrary code.
medium SEC007 Unsafe Deserialization
polaris-icons/rollup.config.mjs:28 · conf 1.00
[SEC007] Unsafe Deserialization: Unsafe deserialization can execute arbitrary code.
medium SEC007 Unsafe Deserialization
polaris.shopify.com/src/utils/markdown.mjs:9 · conf 1.00
[SEC007] Unsafe Deserialization: Unsafe deserialization can execute arbitrary code.
medium SEC041 Tabnabbing — target="_blank" without rel="noopener noreferrer"
polaris-react/src/components/IndexTable/components/Row/Row.tsx:177 · conf 1.00
[SEC041] Tabnabbing — target="_blank" without rel="noopener noreferrer": <a target="_blank"> without rel="noopener noreferrer" leaks window.opener to the opened page. The opened page can then run win…
medium SEC045 eval()/exec() on stored or user-supplied data
polaris-react/config/rollup/namespaced-classname.mjs:16 · conf 1.00
[SEC045] eval()/exec() on stored or user-supplied data: eval() and exec() on data — even admin-stored data — is a lateral-movement vector after any one credential compromise. Sandboxes (__builtins__ …
medium SEC045 eval()/exec() on stored or user-supplied data
polaris-react/config/rollup/plugin-styles.js:182 · conf 1.00
[SEC045] eval()/exec() on stored or user-supplied data: eval() and exec() on data — even admin-stored data — is a lateral-movement vector after any one credential compromise. Sandboxes (__builtins__ …
medium SEC045 eval()/exec() on stored or user-supplied data
polaris-react/src/components/Picker/Picker.tsx:164 · conf 1.00
[SEC045] eval()/exec() on stored or user-supplied data: eval() and exec() on data — even admin-stored data — is a lateral-movement vector after any one credential compromise. Sandboxes (__builtins__ …
medium SEC046 Client-side open redirect — window.location = server-supplied URL
polaris.shopify.com/src/components/InterstitialModal/InterstitialModal.tsx:199 · conf 1.00
[SEC046] Client-side open redirect — window.location = server-supplied URL: Assigning window.location from a server-supplied URL trusts the server endpoint to never return a hostile destination. If t…
medium SEC134 AI scaffold leftover — Lorem ipsum / example.com / John Doe in code
polaris-react/src/components/Tag/Tag.stories.tsx:68 · conf 1.00
[SEC134] AI scaffold leftover — Lorem ipsum / example.com / John Doe in code: Lorem ipsum / John Doe / example.com left in non-test code. AI agents emit these as 'reasonable defaults' when they don't…
medium SEC134 AI scaffold leftover — Lorem ipsum / example.com / John Doe in code
polaris.shopify.com/pages/examples/data-table-with-all-of-its-elements.tsx:12 · conf 1.00
[SEC134] AI scaffold leftover — Lorem ipsum / example.com / John Doe in code: Lorem ipsum / John Doe / example.com left in non-test code. AI agents emit these as 'reasonable defaults' when they don't…
medium SEC134 AI scaffold leftover — Lorem ipsum / example.com / John Doe in code
polaris.shopify.com/pages/examples/data-table-with-fixed-first-columns.tsx:15 · conf 1.00
[SEC134] AI scaffold leftover — Lorem ipsum / example.com / John Doe in code: Lorem ipsum / John Doe / example.com left in non-test code. AI agents emit these as 'reasonable defaults' when they don't…
medium SEC136 AI-typical over-broad exception handler swallowing all errors
polaris.shopify.com/playroom/FrameComponent.tsx:44 · conf 1.00
[SEC136] AI-typical over-broad exception handler swallowing all errors: Catch-all exception block that silently returns success or no-ops. AI agents reach for this pattern when a flaky test or an unf…
low AIC003 Duplicated implementation block across source files
polaris-migrator/jest.config.js:1 · conf 0.86
Duplicated implementation block across source files
low AIC003 Duplicated implementation block across source files
polaris-react/src/components/BulkActions/components/BulkActionsMeasurer/BulkActionsMeasurer.tsx:32 · conf 0.86
Duplicated implementation block across source files
low AIC003 Duplicated implementation block across source files
polaris-react/src/components/BulkActions/components/BulkActionsMeasurer/BulkActionsMeasurer.tsx:61 · conf 0.86
Duplicated implementation block across source files
low AIC003 Duplicated implementation block across source files
polaris-react/src/components/ColorPicker/components/HuePicker/HuePicker.tsx:15 · conf 0.86
Duplicated implementation block across source files
low AIC003 Duplicated implementation block across source files
polaris-react/src/components/Combobox/Combobox.stories.tsx:17 · conf 0.86
Duplicated implementation block across source files
low AIC003 Duplicated implementation block across source files
polaris-react/src/components/LegacyCard/LegacyCard.stories.tsx:373 · conf 0.86
Duplicated implementation block across source files
low AIC003 Duplicated implementation block across source files
polaris-react/src/components/Modal/Modal.stories.tsx:36 · conf 0.86
Duplicated implementation block across source files
low AIC003 Duplicated implementation block across source files
polaris-react/src/components/Picker/components/SearchField/SearchField.tsx:26 · conf 0.86
Duplicated implementation block across source files
low AIC003 Duplicated implementation block across source files
polaris-react/src/components/Picker/Picker.tsx:99 · conf 0.86
Duplicated implementation block across source files
low AIC003 Duplicated implementation block across source files
polaris-react/src/components/Popover/Popover.stories.tsx:407 · conf 0.86
Duplicated implementation block across source files
low AIC003 Duplicated implementation block across source files
polaris-react/src/components/SelectAllActions/SelectAllActions.tsx:41 · conf 0.86
Duplicated implementation block across source files
low AIC003 Duplicated implementation block across source files
polaris-react/src/components/Sheet/Sheet.stories.tsx:166 · conf 0.86
Duplicated implementation block across source files
low AIC003 Duplicated implementation block across source files
polaris-react/src/components/Sheet/Sheet.stories.tsx:322 · conf 0.86
Duplicated implementation block across source files
low AIC003 Duplicated implementation block across source files
polaris-react/src/components/Tabs/components/List/List.tsx:11 · conf 0.86
Duplicated implementation block across source files
low AIC003 Duplicated implementation block across source files
polaris-react/src/components/Tabs/components/Panel/Panel.tsx:4 · conf 0.86
Duplicated implementation block across source files
low AIC003 Duplicated implementation block across source files
polaris-react/src/components/Tabs/components/Tab/components/DuplicateModal/DuplicateModal.tsx:101 · conf 0.86
Duplicated implementation block across source files
low AIC003 Duplicated implementation block across source files
polaris-react/src/components/Tabs/components/Tab/components/RenameModal/RenameModal.tsx:48 · conf 0.86
Duplicated implementation block across source files
low AIC003 Duplicated implementation block across source files
polaris-react/src/components/Tabs/components/Tab/components/RenameModal/RenameModal.tsx:100 · conf 0.86
Duplicated implementation block across source files
low AIC003 Duplicated implementation block across source files
polaris-react/src/components/Tabs/components/TabMeasurer/TabMeasurer.tsx:15 · conf 0.86
Duplicated implementation block across source files
low AIC003 Duplicated implementation block across source files
polaris-react/src/components/Tabs/Tabs.tsx:306 · conf 0.86
Duplicated implementation block across source files
low AIC003 Duplicated implementation block across source files
polaris-react/src/components/Tabs/utilities.ts:4 · conf 0.86
Duplicated implementation block across source files
low AIC003 Duplicated implementation block across source files
polaris-react/src/components/Toast/Toast.stories.tsx:221 · conf 0.86
Duplicated implementation block across source files
low AIC003 Duplicated implementation block across source files
polaris-react/src/components/TopBar/TopBar.tsx:86 · conf 0.86
Duplicated implementation block across source files
low AIC003 Duplicated implementation block across source files
polaris-react/src/components/UnstyledButton/UnstyledButton.tsx:21 · conf 0.86
Duplicated implementation block across source files
low AIC003 Duplicated implementation block across source files
polaris-react/src/components/VideoThumbnail/VideoThumbnail.stories.tsx:7 · conf 0.86
Duplicated implementation block across source files
low AIC003 Duplicated implementation block across source files
polaris-react/src/components/VideoThumbnail/VideoThumbnail.stories.tsx:34 · conf 0.86
Duplicated implementation block across source files
low AUC005 [AUC005] No authorization-focused tests detected: No test files with common authorization, ownership, 403, admin, or super_admin assertions were found.
· conf 0.76
[AUC005] No authorization-focused tests detected: No test files with common authorization, ownership, 403, admin, or super_admin assertions were found.
low SEC006 XSS Risk
polaris-react/.storybook/RenderPerformanceProfiler/RenderPerformanceProfiler.tsx:31 · conf 0.40
[SEC006] XSS Risk: Direct HTML injection without sanitization.
info MINED043 Http Not Https CWE-319
polaris-react/src/components/Icon/Icon.stories.tsx:160 · conf 1.00
[MINED043] Http Not Https: Hardcoded http:// (not localhost) for endpoints that handle credentials or data.
info MINED043 Http Not Https CWE-319
polaris.shopify.com/pages/examples/icon-with-custom-svg.tsx:7 · conf 1.00
[MINED043] Http Not Https: Hardcoded http:// (not localhost) for endpoints that handle credentials or data.
info MINED043 Http Not Https CWE-319
polaris.shopify.com/scripts/gen-site-map.ts:22 · conf 1.00
[MINED043] Http Not Https: Hardcoded http:// (not localhost) for endpoints that handle credentials or data.
info MINED044 Js Console Log Prod CWE-532
· conf 0.20
[MINED044] Js Console Log Prod (and 72 more): Same pattern found in 72 additional files. Review if needed.
info MINED044 Js Console Log Prod CWE-532
polaris-migrator/src/migrate.ts:46 · conf 1.00
[MINED044] Js Console Log Prod: console.log left in code. Should be replaced with logger or removed.
info MINED044 Js Console Log Prod CWE-532
polaris-react/src/components/ActionList/ActionList.stories.tsx:54 · conf 1.00
[MINED044] Js Console Log Prod: console.log left in code. Should be replaced with logger or removed.
info MINED044 Js Console Log Prod CWE-532
polaris-react/.storybook/RenderPerformanceProfiler/RenderPerformanceProfiler.tsx:47 · conf 1.00
[MINED044] Js Console Log Prod: console.log left in code. Should be replaced with logger or removed.
info MINED045 Ts Non Null Assertion CWE-476
· conf 0.20
[MINED045] Ts Non Null Assertion (and 13 more): Same pattern found in 13 additional files. Review if needed.
info MINED045 Ts Non Null Assertion CWE-476
polaris-migrator/src/utilities/imports.ts:51 · conf 1.00
[MINED045] Ts Non Null Assertion: x! asserts not null - bypasses null checks - TypeError if wrong.
info MINED045 Ts Non Null Assertion CWE-476
polaris-migrator/src/utilities/jsx.ts:178 · conf 1.00
[MINED045] Ts Non Null Assertion: x! asserts not null - bypasses null checks - TypeError if wrong.
info MINED045 Ts Non Null Assertion CWE-476
polaris-react/playground/KitchenSink.tsx:32 · conf 1.00
[MINED045] Ts Non Null Assertion: x! asserts not null - bypasses null checks - TypeError if wrong.
info MINED052 Ts Any Typed CWE-704
· conf 0.20
[MINED052] Ts Any Typed (and 35 more): Same pattern found in 35 additional files. Review if needed.
info MINED052 Ts Any Typed CWE-704
polaris-migrator/src/migrate.ts:71 · conf 1.00
[MINED052] Ts Any Typed: : any used as type annotation. Defeats TypeScript type safety.
info MINED052 Ts Any Typed CWE-704
polaris-migrator/src/utilities/check.ts:10 · conf 1.00
[MINED052] Ts Any Typed: : any used as type annotation. Defeats TypeScript type safety.
info MINED052 Ts Any Typed CWE-704
polaris-migrator/src/utilities/jsx.ts:170 · conf 1.00
[MINED052] Ts Any Typed: : any used as type annotation. Defeats TypeScript type safety.
info MINED054 Ts As Any CWE-704
· conf 0.20
[MINED054] Ts As Any (and 3 more): Same pattern found in 3 additional files. Review if needed.
info MINED054 Ts As Any CWE-704
polaris-react/src/components/ThemeProvider/ThemeProvider.tsx:22 · conf 1.00
[MINED054] Ts As Any: Casting to any (as any) bypasses type checking entirely.
info MINED054 Ts As Any CWE-704
polaris-react/src/utilities/merge.ts:33 · conf 1.00
[MINED054] Ts As Any: Casting to any (as any) bypasses type checking entirely.
info MINED054 Ts As Any CWE-704
polaris.shopify.com/src/components/CodesandboxButton/CodesandboxButton.tsx:55 · conf 1.00
[MINED054] Ts As Any: Casting to any (as any) bypasses type checking entirely.
info MINED056 React Key As Index CWE-682
· conf 0.20
[MINED056] React Key As Index (and 15 more): Same pattern found in 15 additional files. Review if needed.
info MINED056 React Key As Index CWE-682
polaris-react/src/components/BulkActions/BulkActions.tsx:246 · conf 1.00
[MINED056] React Key As Index: key={index} in map() — re-renders the wrong elements on re-order.
info MINED056 React Key As Index CWE-682
polaris-react/src/components/BulkActions/components/BulkActionsMeasurer/BulkActionsMeasurer.tsx:70 · conf 1.00
[MINED056] React Key As Index: key={index} in map() — re-renders the wrong elements on re-order.
info MINED056 React Key As Index CWE-682
polaris-react/src/components/ButtonGroup/ButtonGroup.tsx:45 · conf 1.00
[MINED056] React Key As Index: key={index} in map() — re-renders the wrong elements on re-order.
info MINED057 Todo Bomb
· conf 0.20
[MINED057] Todo Bomb (and 8 more): Same pattern found in 8 additional files. Review if needed.
info MINED057 Todo Bomb
polaris-react/src/components/BulkActions/BulkActions.stories.tsx:16 · conf 1.00
[MINED057] Todo Bomb: Code path with a TODO/FIXME/HACK comment that gates correctness — left for later but never resolved.
info MINED057 Todo Bomb
polaris.shopify.com/pages/examples/index-table-with-bulk-actions-and-selection-across-pages.tsx:83 · conf 1.00
[MINED057] Todo Bomb: Code path with a TODO/FIXME/HACK comment that gates correctness — left for later but never resolved.
info MINED057 Todo Bomb
polaris.shopify.com/pages/examples/index-table-with-bulk-actions.tsx:83 · conf 1.00
[MINED057] Todo Bomb: Code path with a TODO/FIXME/HACK comment that gates correctness — left for later but never resolved.
info MINED058 React Dangerously Set Html CWE-79
polaris-react/src/components/TextField/components/Resizer/Resizer.tsx:42 · conf 1.00
[MINED058] React Dangerously Set Html: dangerouslySetInnerHTML bypasses Reacts JSX escaping. Pair with DOMPurify or never use with user data.
info MINED058 React Dangerously Set Html CWE-79
polaris.shopify.com/pages/_app.tsx:78 · conf 1.00
[MINED058] React Dangerously Set Html: dangerouslySetInnerHTML bypasses Reacts JSX escaping. Pair with DOMPurify or never use with user data.
info SEC029 Server-Side Request Forgery (SSRF) — outbound HTTP from user input
· conf 0.20
[SEC029] Server-Side Request Forgery (SSRF) — outbound HTTP from user input (and 17 more): Same pattern found in 17 additional files. Review if needed.
info SEC040 innerHTML XSS — template literal with server-supplied data
· conf 0.20
[SEC040] innerHTML XSS — template literal with server-supplied data (and 26 more): Same pattern found in 26 additional files. Review if needed.
info SEC045 eval()/exec() on stored or user-supplied data
· conf 0.20
[SEC045] eval()/exec() on stored or user-supplied data (and 2 more): Same pattern found in 2 additional files. Review if needed.
info SEC083 JS: new RegExp() with non-literal
· conf 0.20
[SEC083] JS: new RegExp() with non-literal (and 18 more): Same pattern found in 18 additional files. Review if needed.
info SEC085 JS: child_process.exec with non-literal
· conf 0.20
[SEC085] JS: child_process.exec with non-literal (and 2 more): Same pattern found in 2 additional files. Review if needed.
info SEC134 AI scaffold leftover — Lorem ipsum / example.com / John Doe in code
· conf 0.20
[SEC134] AI scaffold leftover — Lorem ipsum / example.com / John Doe in code (and 4 more): Same pattern found in 4 additional files. Review if needed.

Reading from rp.scan + rp.finding + rp.rule (unified schema, R78 series). Legacy data path unchanged. Compare with /scan/35d5e407-be21-4f07-a11b-d74b3c497e35/.