{"version": "2.1.0", "$schema": "https://json.schemastore.org/sarif-2.1.0.json", "runs": [{"tool": {"driver": {"name": "Repobility", "informationUri": "https://repobility.com", "rules": [{"id": "scanner-0c6ee731f9f16916", "name": "`dangerouslySetInnerHTML` used in a React component \u2014 assets/index-CMhzeDuo.js:33", "shortDescription": {"text": "`dangerouslySetInnerHTML` used in a React component \u2014 assets/index-CMhzeDuo.js:33"}, "fullDescription": {"text": "Open XSS surface unless the input is provably trusted. Replace with explicit JSX or sanitize via a vetted library.\n\nWhy: OWASP basics. Already partially flagged by the security analyzer.\nRule id: fq.dangerous-html"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-24acd65c26b9c9f8", "name": "Insecure pattern 'direct_innerhtml_assignment' in legacy.html:1451", "shortDescription": {"text": "Insecure pattern 'direct_innerhtml_assignment' in legacy.html:1451"}, "fullDescription": {"text": "Found a known-risky pattern (direct_innerhtml_assignment). Review and replace if possible."}, "properties": {"scanner": "scanner-primary", "layer": "security", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-cf1c77cb61c9cb5c", "name": "Insecure pattern 'direct_innerhtml_assignment' in assets/index-CMhzeDuo.js:37", "shortDescription": {"text": "Insecure pattern 'direct_innerhtml_assignment' in assets/index-CMhzeDuo.js:37"}, "fullDescription": {"text": "Found a known-risky pattern (direct_innerhtml_assignment). Review and replace if possible."}, "properties": {"scanner": "scanner-primary", "layer": "security", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-6372cebde0220094", "name": "No auth library detected", "shortDescription": {"text": "No auth library detected"}, "fullDescription": {"text": "The scanner did not find any standard auth library (JWT, OAuth, NextAuth, Auth0, etc.). The repo has auth/admin/session surface indicators, so auth may live in custom code, in a separate service, or be missing."}, "properties": {"scanner": "scanner-primary", "layer": "security", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-836b7fcb04e3fcf1", "name": "`fetch()` without try/.catch or AbortSignal \u2014 assets/index-CMhzeDuo.js:1", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 assets/index-CMhzeDuo.js:1"}, "fullDescription": {"text": "Bare `fetch(...)` will throw an unhandled rejection on network failure. Wrap in try/catch, attach a `.catch(...)`, or pass an AbortSignal with a timeout."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-fed5806b7d0df505", "name": "Frontend route `${R}` has no Link/navigate to it \u2014 assets/index-CMhzeDuo.js", "shortDescription": {"text": "Frontend route `${R}` has no Link/navigate to it \u2014 assets/index-CMhzeDuo.js"}, "fullDescription": {"text": "The route is registered but no `<Link to=\u2026>` or `navigate(\u2026)` in the codebase navigates here. Either it's reachable only via direct URL (intentional), it's dead, or the link broke during a refactor."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-6f321fd2748306f2", "name": "Frontend route `${R===` has no Link/navigate to it \u2014 assets/index-CMhzeDuo.js", "shortDescription": {"text": "Frontend route `${R===` has no Link/navigate to it \u2014 assets/index-CMhzeDuo.js"}, "fullDescription": {"text": "The route is registered but no `<Link to=\u2026>` or `navigate(\u2026)` in the codebase navigates here. Either it's reachable only via direct URL (intentional), it's dead, or the link broke during a refactor."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "medium", "confidence": 1.0}}]}}, "automationDetails": {"id": "repobility/24210"}, "properties": {"repository": "angels-fab/angels-fab.github.io", "repoUrl": "https://github.com/angels-fab/angels-fab.github.io", "branch": "main"}, "results": [{"ruleId": "scanner-0c6ee731f9f16916", "level": "warning", "message": {"text": "`dangerouslySetInnerHTML` used in a React component \u2014 assets/index-CMhzeDuo.js:33"}, "properties": {"repobilityId": "35bf7e089baa360c", "scanner": "scanner-primary", "fingerprint": "0c6ee731f9f16916", "layer": "frontend", "severity": "medium", "confidence": 1.0, "tags": ["frontend-quality", "fq.dangerous-html"]}}, {"ruleId": "scanner-24acd65c26b9c9f8", "level": "warning", "message": {"text": "Insecure pattern 'direct_innerhtml_assignment' in legacy.html:1451"}, "properties": {"repobilityId": "389d1dbdbff63d48", "scanner": "scanner-primary", "fingerprint": "24acd65c26b9c9f8", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "direct_innerhtml_assignment"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "legacy.html"}, "region": {"startLine": 1451}}}]}, {"ruleId": "scanner-cf1c77cb61c9cb5c", "level": "warning", "message": {"text": "Insecure pattern 'direct_innerhtml_assignment' in assets/index-CMhzeDuo.js:37"}, "properties": {"repobilityId": "ccd68804d890be14", "scanner": "scanner-primary", "fingerprint": "cf1c77cb61c9cb5c", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "direct_innerhtml_assignment"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "assets/index-CMhzeDuo.js"}, "region": {"startLine": 37}}}]}, {"ruleId": "scanner-6372cebde0220094", "level": "warning", "message": {"text": "No auth library detected"}, "properties": {"repobilityId": "a5b6035a5bbf8054", "scanner": "scanner-primary", "fingerprint": "6372cebde0220094", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["coverage", "auth"]}}, {"ruleId": "scanner-836b7fcb04e3fcf1", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 assets/index-CMhzeDuo.js:1"}, "properties": {"repobilityId": "f346e36d7770eb8e", "scanner": "scanner-primary", "fingerprint": "836b7fcb04e3fcf1", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-fed5806b7d0df505", "level": "warning", "message": {"text": "Frontend route `${R}` has no Link/navigate to it \u2014 assets/index-CMhzeDuo.js"}, "properties": {"repobilityId": "7ba290c5864e7cf7", "scanner": "scanner-primary", "fingerprint": "fed5806b7d0df505", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "orphan-page", "wiring"]}}, {"ruleId": "scanner-6f321fd2748306f2", "level": "warning", "message": {"text": "Frontend route `${R===` has no Link/navigate to it \u2014 assets/index-CMhzeDuo.js"}, "properties": {"repobilityId": "373e47207aa502eb", "scanner": "scanner-primary", "fingerprint": "6f321fd2748306f2", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "orphan-page", "wiring"]}}]}]}