{"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": "GHSA-4w7w-66w2-5vf9", "name": "vite: GHSA-4w7w-66w2-5vf9", "shortDescription": {"text": "vite: GHSA-4w7w-66w2-5vf9"}, "fullDescription": {"text": "Vite Vulnerable to Path Traversal in Optimized Deps `.map` Handling"}, "properties": {"scanner": "osv-scanner", "category": "dependency", "severity": "medium", "confidence": 0.88, "cwe": "", "owasp": ""}}, {"id": "GHSA-qx2v-qp2m-jg93", "name": "postcss: GHSA-qx2v-qp2m-jg93", "shortDescription": {"text": "postcss: GHSA-qx2v-qp2m-jg93"}, "fullDescription": {"text": "PostCSS has XSS via Unescaped </style> in its CSS Stringify Output"}, "properties": {"scanner": "osv-scanner", "category": "dependency", "severity": "medium", "confidence": 0.88, "cwe": "", "owasp": ""}}, {"id": "GHSA-r4q5-vmmm-2653", "name": "follow-redirects: GHSA-r4q5-vmmm-2653", "shortDescription": {"text": "follow-redirects: GHSA-r4q5-vmmm-2653"}, "fullDescription": {"text": "follow-redirects leaks Custom Authentication Headers to Cross-Domain Redirect Targets"}, "properties": {"scanner": "osv-scanner", "category": "dependency", "severity": "medium", "confidence": 0.88, "cwe": "", "owasp": ""}}, {"id": "GHSA-xx6v-rp6x-q39c", "name": "axios: GHSA-xx6v-rp6x-q39c", "shortDescription": {"text": "axios: GHSA-xx6v-rp6x-q39c"}, "fullDescription": {"text": "Axios: XSRF Token Cross-Origin Leakage via Prototype Pollution Gadget in `withXSRFToken` Boolean Coercion"}, "properties": {"scanner": "osv-scanner", "category": "dependency", "severity": "medium", "confidence": 0.88, "cwe": "", "owasp": ""}}, {"id": "GHSA-w9j2-pvgh-6h63", "name": "axios: GHSA-w9j2-pvgh-6h63", "shortDescription": {"text": "axios: GHSA-w9j2-pvgh-6h63"}, "fullDescription": {"text": "Axios: Authentication Bypass via Prototype Pollution Gadget in `validateStatus` Merge Strategy"}, "properties": {"scanner": "osv-scanner", "category": "dependency", "severity": "medium", "confidence": 0.88, "cwe": "", "owasp": ""}}, {"id": "GHSA-vf2m-468p-8v99", "name": "axios: GHSA-vf2m-468p-8v99", "shortDescription": {"text": "axios: GHSA-vf2m-468p-8v99"}, "fullDescription": {"text": "Axios: HTTP adapter streamed responses bypass maxContentLength"}, "properties": {"scanner": "osv-scanner", "category": "dependency", "severity": "medium", "confidence": 0.88, "cwe": "", "owasp": ""}}, {"id": "GHSA-m7pr-hjqh-92cm", "name": "axios: GHSA-m7pr-hjqh-92cm", "shortDescription": {"text": "axios: GHSA-m7pr-hjqh-92cm"}, "fullDescription": {"text": "Axios: no_proxy bypass via IP alias allows SSRF"}, "properties": {"scanner": "osv-scanner", "category": "dependency", "severity": "medium", "confidence": 0.88, "cwe": "", "owasp": ""}}, {"id": "GHSA-fvcv-3m26-pcqx", "name": "axios: GHSA-fvcv-3m26-pcqx", "shortDescription": {"text": "axios: GHSA-fvcv-3m26-pcqx"}, "fullDescription": {"text": "Axios has Unrestricted Cloud Metadata Exfiltration via Header Injection Chain"}, "properties": {"scanner": "osv-scanner", "category": "dependency", "severity": "medium", "confidence": 0.88, "cwe": "", "owasp": ""}}, {"id": "GHSA-898c-q2cr-xwhg", "name": "axios: GHSA-898c-q2cr-xwhg", "shortDescription": {"text": "axios: GHSA-898c-q2cr-xwhg"}, "fullDescription": {"text": "axios has DoS & Header Injection via Prototype Pollution Read-Side Gadgets in axios merge functions"}, "properties": {"scanner": "osv-scanner", "category": "dependency", "severity": "medium", "confidence": 0.88, "cwe": "", "owasp": ""}}, {"id": "GHSA-62hf-57xw-28j9", "name": "axios: GHSA-62hf-57xw-28j9", "shortDescription": {"text": "axios: GHSA-62hf-57xw-28j9"}, "fullDescription": {"text": "Axios: unbounded recursion in toFormData causes DoS via deeply nested request data"}, "properties": {"scanner": "osv-scanner", "category": "dependency", "severity": "medium", "confidence": 0.88, "cwe": "", "owasp": ""}}, {"id": "GHSA-5c9x-8gcm-mpgx", "name": "axios: GHSA-5c9x-8gcm-mpgx", "shortDescription": {"text": "axios: GHSA-5c9x-8gcm-mpgx"}, "fullDescription": {"text": "Axios' HTTP adapter-streamed uploads bypass maxBodyLength when maxRedirects: 0"}, "properties": {"scanner": "osv-scanner", "category": "dependency", "severity": "medium", "confidence": 0.88, "cwe": "", "owasp": ""}}, {"id": "GHSA-445q-vr5w-6q77", "name": "axios: GHSA-445q-vr5w-6q77", "shortDescription": {"text": "axios: GHSA-445q-vr5w-6q77"}, "fullDescription": {"text": "Axios: CRLF Injection in multipart/form-data body via unsanitized blob.type in formDataToStream"}, "properties": {"scanner": "osv-scanner", "category": "dependency", "severity": "medium", "confidence": 0.88, "cwe": "", "owasp": ""}}, {"id": "GHSA-3w6x-2g7m-8v23", "name": "axios: GHSA-3w6x-2g7m-8v23", "shortDescription": {"text": "axios: GHSA-3w6x-2g7m-8v23"}, "fullDescription": {"text": "Axios: Invisible JSON Response Tampering via Prototype Pollution Gadget in `parseReviver`"}, "properties": {"scanner": "osv-scanner", "category": "dependency", "severity": "medium", "confidence": 0.88, "cwe": "", "owasp": ""}}, {"id": "GHSA-87hc-h4r5-73f7", "name": "werkzeug: GHSA-87hc-h4r5-73f7", "shortDescription": {"text": "werkzeug: GHSA-87hc-h4r5-73f7"}, "fullDescription": {"text": " Werkzeug safe_join() allows Windows special device names with compound extensions"}, "properties": {"scanner": "osv-scanner", "category": "dependency", "severity": "medium", "confidence": 0.88, "cwe": "", "owasp": ""}}, {"id": "GHSA-29vq-49wr-vm6x", "name": "werkzeug: GHSA-29vq-49wr-vm6x", "shortDescription": {"text": "werkzeug: GHSA-29vq-49wr-vm6x"}, "fullDescription": {"text": " Werkzeug safe_join() allows Windows special device names"}, "properties": {"scanner": "osv-scanner", "category": "dependency", "severity": "medium", "confidence": 0.88, "cwe": "", "owasp": ""}}, {"id": "GHSA-597g-3phw-6986", "name": "virtualenv: GHSA-597g-3phw-6986", "shortDescription": {"text": "virtualenv: GHSA-597g-3phw-6986"}, "fullDescription": {"text": "virtualenv Has TOCTOU Vulnerabilities in Directory Creation"}, "properties": {"scanner": "osv-scanner", "category": "dependency", "severity": "medium", "confidence": 0.88, "cwe": "", "owasp": ""}}, {"id": "GHSA-32r8-54hf-c9p3", "name": "unstructured: GHSA-32r8-54hf-c9p3", "shortDescription": {"text": "unstructured: GHSA-32r8-54hf-c9p3"}, "fullDescription": {"text": "unstructured XML External Entity (XXE)"}, "properties": {"scanner": "osv-scanner", "category": "dependency", "severity": "medium", "confidence": 0.88, "cwe": "", "owasp": ""}}, {"id": "GHSA-69w3-r845-3855", "name": "transformers: GHSA-69w3-r845-3855", "shortDescription": {"text": "transformers: GHSA-69w3-r845-3855"}, "fullDescription": {"text": "HuggingFace Transformers allows for arbitrary code execution in the `Trainer` class"}, "properties": {"scanner": "osv-scanner", "category": "dependency", "severity": "medium", "confidence": 0.88, "cwe": "", "owasp": ""}}, {"id": "GHSA-78cv-mqj4-43f7", "name": "tornado: GHSA-78cv-mqj4-43f7", "shortDescription": {"text": "tornado: GHSA-78cv-mqj4-43f7"}, "fullDescription": {"text": "Tornado has incomplete validation of cookie attributes"}, "properties": {"scanner": "osv-scanner", "category": "dependency", "severity": "medium", "confidence": 0.88, "cwe": "", "owasp": ""}}, {"id": "GHSA-gc5v-m9x4-r6x2", "name": "requests: GHSA-gc5v-m9x4-r6x2", "shortDescription": {"text": "requests: GHSA-gc5v-m9x4-r6x2"}, "fullDescription": {"text": "Requests has Insecure Temp File Reuse in its extract_zipped_paths() utility function"}, "properties": {"scanner": "osv-scanner", "category": "dependency", "severity": "medium", "confidence": 0.88, "cwe": "", "owasp": ""}}, {"id": "GHSA-mj87-hwqh-73pj", "name": "python-multipart: GHSA-mj87-hwqh-73pj", "shortDescription": {"text": "python-multipart: GHSA-mj87-hwqh-73pj"}, "fullDescription": {"text": "python-multipart affected by Denial of Service via large multipart preamble or epilogue data"}, "properties": {"scanner": "osv-scanner", "category": "dependency", "severity": "medium", "confidence": 0.88, "cwe": "", "owasp": ""}}, {"id": "GHSA-mf9w-mj56-hr94", "name": "python-dotenv: GHSA-mf9w-mj56-hr94", "shortDescription": {"text": "python-dotenv: GHSA-mf9w-mj56-hr94"}, "fullDescription": {"text": "python-dotenv: Symlink following in set_key allows arbitrary file overwrite via cross-device rename fallback"}, "properties": {"scanner": "osv-scanner", "category": "dependency", "severity": "medium", "confidence": 0.88, "cwe": "", "owasp": ""}}, {"id": "GHSA-6w46-j5rx-g56g", "name": "pytest: GHSA-6w46-j5rx-g56g", "shortDescription": {"text": "pytest: GHSA-6w46-j5rx-g56g"}, "fullDescription": {"text": "pytest has vulnerable tmpdir handling"}, "properties": {"scanner": "osv-scanner", "category": "dependency", "severity": "medium", "confidence": 0.88, "cwe": "", "owasp": ""}}, {"id": "GHSA-x7hp-r3qg-r3cj", "name": "pypdf: GHSA-x7hp-r3qg-r3cj", "shortDescription": {"text": "pypdf: GHSA-x7hp-r3qg-r3cj"}, "fullDescription": {"text": "pypdf: Manipulated FlateDecode XFA streams can exhaust RAM"}, "properties": {"scanner": "osv-scanner", "category": "dependency", "severity": "medium", "confidence": 0.88, "cwe": "", "owasp": ""}}, {"id": "GHSA-x284-j5p8-9c5p", "name": "pypdf: GHSA-x284-j5p8-9c5p", "shortDescription": {"text": "pypdf: GHSA-x284-j5p8-9c5p"}, "fullDescription": {"text": "pypdf: Manipulated FlateDecode image dimensions can exhaust RAM"}, "properties": {"scanner": "osv-scanner", "category": "dependency", "severity": "medium", "confidence": 0.88, "cwe": "", "owasp": ""}}, {"id": "GHSA-wgvp-vg3v-2xq3", "name": "pypdf: GHSA-wgvp-vg3v-2xq3", "shortDescription": {"text": "pypdf: GHSA-wgvp-vg3v-2xq3"}, "fullDescription": {"text": "pypdf has possible long runtimes/large memory usage for large /ToUnicode streams"}, "properties": {"scanner": "osv-scanner", "category": "dependency", "severity": "medium", "confidence": 0.88, "cwe": "", "owasp": ""}}, {"id": "GHSA-qpxp-75px-xjcp", "name": "pypdf: GHSA-qpxp-75px-xjcp", "shortDescription": {"text": "pypdf: GHSA-qpxp-75px-xjcp"}, "fullDescription": {"text": "pypdf has inefficient decoding of array-based streams"}, "properties": {"scanner": "osv-scanner", "category": "dependency", "severity": "medium", "confidence": 0.88, "cwe": "", "owasp": ""}}, {"id": "GHSA-jj6c-8h6c-hppx", "name": "pypdf: GHSA-jj6c-8h6c-hppx", "shortDescription": {"text": "pypdf: GHSA-jj6c-8h6c-hppx"}, "fullDescription": {"text": "pypdf has long runtimes for wrong size values in cross-reference and object streams"}, "properties": {"scanner": "osv-scanner", "category": "dependency", "severity": "medium", "confidence": 0.88, "cwe": "", "owasp": ""}}, {"id": "GHSA-hqmh-ppp3-xvm7", "name": "pypdf: GHSA-hqmh-ppp3-xvm7", "shortDescription": {"text": "pypdf: GHSA-hqmh-ppp3-xvm7"}, "fullDescription": {"text": "pypdf: manipulated stream length values can exhaust RAM"}, "properties": {"scanner": "osv-scanner", "category": "dependency", "severity": "medium", "confidence": 0.88, "cwe": "", "owasp": ""}}, {"id": "GHSA-f2v5-7jq9-h8cg", "name": "pypdf: GHSA-f2v5-7jq9-h8cg", "shortDescription": {"text": "pypdf: GHSA-f2v5-7jq9-h8cg"}, "fullDescription": {"text": "pypdf: Manipulated RunLengthDecode streams can exhaust RAM"}, "properties": {"scanner": "osv-scanner", "category": "dependency", "severity": "medium", "confidence": 0.88, "cwe": "", "owasp": ""}}, {"id": "GHSA-9mvc-8737-8j8h", "name": "pypdf: GHSA-9mvc-8737-8j8h", "shortDescription": {"text": "pypdf: GHSA-9mvc-8737-8j8h"}, "fullDescription": {"text": "pypdf possibly has long runtimes for malformed FlateDecode streams"}, "properties": {"scanner": "osv-scanner", "category": "dependency", "severity": "medium", "confidence": 0.88, "cwe": "", "owasp": ""}}, {"id": "GHSA-9m86-7pmv-2852", "name": "pypdf: GHSA-9m86-7pmv-2852", "shortDescription": {"text": "pypdf: GHSA-9m86-7pmv-2852"}, "fullDescription": {"text": "pypdf vulnerable to inefficient decoding of ASCIIHexDecode streams"}, "properties": {"scanner": "osv-scanner", "category": "dependency", "severity": "medium", "confidence": 0.88, "cwe": "", "owasp": ""}}, {"id": "GHSA-996q-pr4m-cvgq", "name": "pypdf: GHSA-996q-pr4m-cvgq", "shortDescription": {"text": "pypdf: GHSA-996q-pr4m-cvgq"}, "fullDescription": {"text": "pypdf has a possible infinite loop when processing TreeObject"}, "properties": {"scanner": "osv-scanner", "category": "dependency", "severity": "medium", "confidence": 0.88, "cwe": "", "owasp": ""}}, {"id": "GHSA-87mj-5ggw-8qc3", "name": "pypdf: GHSA-87mj-5ggw-8qc3", "shortDescription": {"text": "pypdf: GHSA-87mj-5ggw-8qc3"}, "fullDescription": {"text": "pypdf: Possible infinite loop during recovery attempts in DictionaryObject.read_from_stream"}, "properties": {"scanner": "osv-scanner", "category": "dependency", "severity": "medium", "confidence": 0.88, "cwe": "", "owasp": ""}}, {"id": "GHSA-7gw9-cf7v-778f", "name": "pypdf: GHSA-7gw9-cf7v-778f", "shortDescription": {"text": "pypdf: GHSA-7gw9-cf7v-778f"}, "fullDescription": {"text": "pypdf: Manipulated FlateDecode predictor parameters can exhaust RAM"}, "properties": {"scanner": "osv-scanner", "category": "dependency", "severity": "medium", "confidence": 0.88, "cwe": "", "owasp": ""}}, {"id": "GHSA-4pxv-j86v-mhcw", "name": "pypdf: GHSA-4pxv-j86v-mhcw", "shortDescription": {"text": "pypdf: GHSA-4pxv-j86v-mhcw"}, "fullDescription": {"text": "pypdf: Possible long runtimes for wrong size values in incremental mode"}, "properties": {"scanner": "osv-scanner", "category": "dependency", "severity": "medium", "confidence": 0.88, "cwe": "", "owasp": ""}}, {"id": "GHSA-3crg-w4f6-42mx", "name": "pypdf: GHSA-3crg-w4f6-42mx", "shortDescription": {"text": "pypdf: GHSA-3crg-w4f6-42mx"}, "fullDescription": {"text": "pypdf: Manipulated XMP metadata entity declarations can exhaust RAM"}, "properties": {"scanner": "osv-scanner", "category": "dependency", "severity": "medium", "confidence": 0.88, "cwe": "", "owasp": ""}}, {"id": "GHSA-2q4j-m29v-hq73", "name": "pypdf: GHSA-2q4j-m29v-hq73", "shortDescription": {"text": "pypdf: GHSA-2q4j-m29v-hq73"}, "fullDescription": {"text": "pypdf has possible Infinite Loop when processing outlines/bookmarks"}, "properties": {"scanner": "osv-scanner", "category": "dependency", "severity": "medium", "confidence": 0.88, "cwe": "", "owasp": ""}}, {"id": "GHSA-r73j-pqj5-w3x7", "name": "pillow: GHSA-r73j-pqj5-w3x7", "shortDescription": {"text": "pillow: GHSA-r73j-pqj5-w3x7"}, "fullDescription": {"text": "Pillow has a PDF Parsing Trailer Infinite Loop (DoS)"}, "properties": {"scanner": "osv-scanner", "category": "dependency", "severity": "medium", "confidence": 0.88, "cwe": "", "owasp": ""}}, {"id": "GHSA-rf74-v2fm-23pw", "name": "nltk: GHSA-rf74-v2fm-23pw", "shortDescription": {"text": "nltk: GHSA-rf74-v2fm-23pw"}, "fullDescription": {"text": "Natural Language Toolkit (NLTK) has unbounded recursion in JSONTaggedDecoder.decode_obj() may cause DoS"}, "properties": {"scanner": "osv-scanner", "category": "dependency", "severity": "medium", "confidence": 0.88, "cwe": "", "owasp": ""}}, {"id": "GHSA-gfwx-w7gr-fvh7", "name": "nltk: GHSA-gfwx-w7gr-fvh7", "shortDescription": {"text": "nltk: GHSA-gfwx-w7gr-fvh7"}, "fullDescription": {"text": "Improper Neutralization of Input During Web Page Generation ('Cross-site Scripting') in nltk"}, "properties": {"scanner": "osv-scanner", "category": "dependency", "severity": "medium", "confidence": 0.88, "cwe": "", "owasp": ""}}, {"id": "GHSA-7jqv-fw35-gmx9", "name": "nbconvert: GHSA-7jqv-fw35-gmx9", "shortDescription": {"text": "nbconvert: GHSA-7jqv-fw35-gmx9"}, "fullDescription": {"text": "nbconvert has an Arbitrary File Read via Path Traversal in HTMLExporter Image Embedding"}, "properties": {"scanner": "osv-scanner", "category": "dependency", "severity": "medium", "confidence": 0.88, "cwe": "", "owasp": ""}}, {"id": "GHSA-4c99-qj7h-p3vg", "name": "nbconvert: GHSA-4c99-qj7h-p3vg", "shortDescription": {"text": "nbconvert: GHSA-4c99-qj7h-p3vg"}, "fullDescription": {"text": "nbconvert has an Arbitrary File Write via Path Traversal in Cell Attachment Filenames"}, "properties": {"scanner": "osv-scanner", "category": "dependency", "severity": "medium", "confidence": 0.88, "cwe": "", "owasp": ""}}, {"id": "GHSA-v87v-83h2-53w7", "name": "mistune: GHSA-v87v-83h2-53w7", "shortDescription": {"text": "mistune: GHSA-v87v-83h2-53w7"}, "fullDescription": {"text": "Mistune Heading ID Attribute has Injection XSS"}, "properties": {"scanner": "osv-scanner", "category": "dependency", "severity": "medium", "confidence": 0.88, "cwe": "", "owasp": ""}}, {"id": "GHSA-8g87-j6q8-g93x", "name": "mistune: GHSA-8g87-j6q8-g93x", "shortDescription": {"text": "mistune: GHSA-8g87-j6q8-g93x"}, "fullDescription": {"text": "Mistune Math Plugin has an XSS Escape Bypass"}, "properties": {"scanner": "osv-scanner", "category": "dependency", "severity": "medium", "confidence": 0.88, "cwe": "", "owasp": ""}}, {"id": "GHSA-428g-f7cq-pgp5", "name": "marshmallow: GHSA-428g-f7cq-pgp5", "shortDescription": {"text": "marshmallow: GHSA-428g-f7cq-pgp5"}, "fullDescription": {"text": "Marshmallow has DoS in Schema.load(many)"}, "properties": {"scanner": "osv-scanner", "category": "dependency", "severity": "medium", "confidence": 0.88, "cwe": "", "owasp": ""}}, {"id": "GHSA-65pc-fj4g-8rjx", "name": "idna: GHSA-65pc-fj4g-8rjx", "shortDescription": {"text": "idna: GHSA-65pc-fj4g-8rjx"}, "fullDescription": {"text": "Internationalized Domain Names in Applications (IDNA): Specially crafted inputs to idna.encode() can bypass CVE-2024-3651 fix"}, "properties": {"scanner": "osv-scanner", "category": "dependency", "severity": "medium", "confidence": 0.88, "cwe": "", "owasp": ""}}, {"id": "GHSA-qmgc-5h2g-mvrw", "name": "filelock: GHSA-qmgc-5h2g-mvrw", "shortDescription": {"text": "filelock: GHSA-qmgc-5h2g-mvrw"}, "fullDescription": {"text": "filelock Time-of-Check-Time-of-Use (TOCTOU) Symlink Vulnerability in SoftFileLock"}, "properties": {"scanner": "osv-scanner", "category": "dependency", "severity": "medium", "confidence": 0.88, "cwe": "", "owasp": ""}}, {"id": "GHSA-mr82-8j83-vxmv", "name": "pydantic: GHSA-mr82-8j83-vxmv", "shortDescription": {"text": "pydantic: GHSA-mr82-8j83-vxmv"}, "fullDescription": {"text": "Pydantic regular expression denial of service"}, "properties": {"scanner": "osv-scanner", "category": "dependency", "severity": "medium", "confidence": 0.88, "cwe": "", "owasp": ""}}, {"id": "DKR003", "name": "Compose service `mirofish` image uses the latest tag", "shortDescription": {"text": "Compose service `mirofish` image uses the latest tag"}, "fullDescription": {"text": "The latest tag is mutable and can change without a code review, producing different images from the same source."}, "properties": {"scanner": "repobility-docker", "category": "docker", "severity": "medium", "confidence": 0.94, "cwe": "", "owasp": ""}}, {"id": "DKR001", "name": "Docker final stage has no non-root USER", "shortDescription": {"text": "Docker final stage has no non-root USER"}, "fullDescription": {"text": "Docker images run as root unless the image or Dockerfile switches to a non-root user."}, "properties": {"scanner": "repobility-docker", "category": "docker", "severity": "medium", "confidence": 0.82, "cwe": "", "owasp": ""}}, {"id": "DKR014", "name": "Dockerfile copies broad context with incomplete .dockerignore", "shortDescription": {"text": "Dockerfile copies broad context with incomplete .dockerignore"}, "fullDescription": {"text": "COPY . or ADD . is safer when .dockerignore excludes secrets, git history, keys, and generated artifacts."}, "properties": {"scanner": "repobility-docker", "category": "docker", "severity": "medium", "confidence": 0.76, "cwe": "", "owasp": ""}}, {"id": "ERR001", "name": "[ERR001] Silent Exception Swallowing: Silently swallowing all exceptions hides bugs. Even in cleanup code, log at DEBUG ", "shortDescription": {"text": "[ERR001] Silent Exception Swallowing: Silently swallowing all exceptions hides bugs. Even in cleanup code, log at DEBUG level."}, "fullDescription": {"text": "Log the error: `except Exception: logger.debug('cleanup failed', exc_info=True)`. Or handle specific exception types."}, "properties": {"scanner": "repobility-threat-engine", "category": "error_handling", "severity": "medium", "confidence": 1.0, "cwe": "", "owasp": ""}}, {"id": "SEC034", "name": "[SEC034] Log Injection / Log Forging \u2014 unsanitized user input in log: User input is logged without sanitizing newlines o", "shortDescription": {"text": "[SEC034] Log Injection / Log Forging \u2014 unsanitized user input in log: User input is logged without sanitizing newlines or control characters. Attackers inject `\\n` to forge fake log entries, hide tracks, or exploit downstream log parsers (S"}, "fullDescription": {"text": "Strip control characters before logging:\n  safe = user_input.replace('\\n','').replace('\\r','').replace('\\x00','')\n  logger.info('User action: %s', safe)\nAlways use parameterized logging (`%s` + args), never f-strings or string concat \u2014 that's also what mitigates log4shell-style attacks. For structured logging, use a JSON formatter that escapes values."}, "properties": {"scanner": "repobility-threat-engine", "category": "log_injection", "severity": "medium", "confidence": 1.0, "cwe": "", "owasp": ""}}, {"id": "DEPCUR-GHA", "name": "GitHub Action `actions/checkout@v4` is 2 major version(s) behind (latest v6.0.3)", "shortDescription": {"text": "GitHub Action `actions/checkout@v4` is 2 major version(s) behind (latest v6.0.3)"}, "fullDescription": {"text": "`uses: actions/checkout@v4` is 2 major version(s) behind the latest published release v6.0.3. Old action majors run on deprecated runner images / Node versions and miss upstream fixes. This is the exact 'outdated GitHub Action' class Dependabot raises \u2014 and which Repobility had no coverage for."}, "properties": {"scanner": "repobility-dependency-currency", "category": "dependency", "severity": "medium", "confidence": 0.9, "cwe": "", "owasp": ""}}, {"id": "DEPCUR-NPM", "name": "npm package `vue-router` is 1 major version(s) behind (4.6.3 -> 5.1.0)", "shortDescription": {"text": "npm package `vue-router` is 1 major version(s) behind (4.6.3 -> 5.1.0)"}, "fullDescription": {"text": "`vue-router` is pinned/resolved at 4.6.3 but the latest stable release on the npm registry is 5.1.0 (1 major version(s) behind). Outdated dependencies accumulate unpatched bugs and make future security upgrades harder. This is the version-currency signal Dependabot version-update PRs raise."}, "properties": {"scanner": "repobility-dependency-currency", "category": "dependency", "severity": "medium", "confidence": 0.9, "cwe": "", "owasp": ""}}, {"id": "MINED111", "name": "Bare except continues silently", "shortDescription": {"text": "Bare except continues silently"}, "fullDescription": {"text": "Bare `except:` (or `except Exception:`) that runs code without re-raising or logging the exception. Hides real failures and makes bugs hard to diagnose."}, "properties": {"scanner": "repobility-ast-engine", "category": "quality", "severity": "medium", "confidence": 1.0, "cwe": "", "owasp": ""}}, {"id": "CORE_LARGE_FILES", "name": "Average file size is 700 lines (recommend <300)", "shortDescription": {"text": "Average file size is 700 lines (recommend <300)"}, "fullDescription": {"text": "Refactor large files by extracting related functions into separate modules. Target files with 300+ lines first. Use the Single Responsibility Principle \u2014 each module should have one clear purpose."}, "properties": {"scanner": "repobility-core", "category": "quality", "severity": "medium", "confidence": null, "cwe": "", "owasp": ""}}, {"id": "GHSA-xhjh-pmcv-23jw", "name": "axios: GHSA-xhjh-pmcv-23jw", "shortDescription": {"text": "axios: GHSA-xhjh-pmcv-23jw"}, "fullDescription": {"text": "Axios: Null Byte Injection via Reverse-Encoding in AxiosURLSearchParams"}, "properties": {"scanner": "osv-scanner", "category": "dependency", "severity": "low", "confidence": 0.88, "cwe": "", "owasp": ""}}, {"id": "GHSA-4xc4-762w-m6cg", "name": "pypdf: GHSA-4xc4-762w-m6cg", "shortDescription": {"text": "pypdf: GHSA-4xc4-762w-m6cg"}, "fullDescription": {"text": "pypdf has possible long runtimes for missing /Root object with large /Size values"}, "properties": {"scanner": "osv-scanner", "category": "dependency", "severity": "low", "confidence": 0.88, "cwe": "", "owasp": ""}}, {"id": "GHSA-4f6g-68pf-7vhv", "name": "pypdf: GHSA-4f6g-68pf-7vhv", "shortDescription": {"text": "pypdf: GHSA-4f6g-68pf-7vhv"}, "fullDescription": {"text": "pypdf has possible long runtimes for malformed startxref"}, "properties": {"scanner": "osv-scanner", "category": "dependency", "severity": "low", "confidence": 0.88, "cwe": "", "owasp": ""}}, {"id": "GHSA-2rw7-x74f-jg35", "name": "pypdf: GHSA-2rw7-x74f-jg35", "shortDescription": {"text": "pypdf: GHSA-2rw7-x74f-jg35"}, "fullDescription": {"text": "pypdf has a possible infinite loop when loading circular /Prev entries in cross-reference streams"}, "properties": {"scanner": "osv-scanner", "category": "dependency", "severity": "low", "confidence": 0.88, "cwe": "", "owasp": ""}}, {"id": "GHSA-5239-wwwm-4pmq", "name": "pygments: GHSA-5239-wwwm-4pmq", "shortDescription": {"text": "pygments: GHSA-5239-wwwm-4pmq"}, "fullDescription": {"text": "Pygments has Regular Expression Denial of Service (ReDoS) due to Inefficient Regex for GUID Matching"}, "properties": {"scanner": "osv-scanner", "category": "dependency", "severity": "low", "confidence": 0.88, "cwe": "", "owasp": ""}}, {"id": "GHSA-68rp-wp8r-4726", "name": "flask: GHSA-68rp-wp8r-4726", "shortDescription": {"text": "flask: GHSA-68rp-wp8r-4726"}, "fullDescription": {"text": "Flask session does not add `Vary: Cookie` header when accessed in some ways"}, "properties": {"scanner": "osv-scanner", "category": "dependency", "severity": "low", "confidence": 0.88, "cwe": "", "owasp": ""}}, {"id": "DKC010", "name": "Compose service lacks no-new-privileges hardening", "shortDescription": {"text": "Compose service lacks no-new-privileges hardening"}, "fullDescription": {"text": "no-new-privileges prevents processes from gaining additional privileges through setuid binaries or file capabilities."}, "properties": {"scanner": "repobility-docker", "category": "docker", "severity": "low", "confidence": 0.62, "cwe": "", "owasp": ""}}, {"id": "DKC006", "name": "Compose service does not declare a runtime user", "shortDescription": {"text": "Compose service does not declare a runtime user"}, "fullDescription": {"text": "If the image does not define USER internally, this service may run as root."}, "properties": {"scanner": "repobility-docker", "category": "docker", "severity": "low", "confidence": 0.56, "cwe": "", "owasp": ""}}, {"id": "DKR008", "name": ".dockerignore misses sensitive defaults", "shortDescription": {"text": ".dockerignore misses sensitive defaults"}, "fullDescription": {"text": ".dockerignore exists but does not cover common secret or VCS patterns."}, "properties": {"scanner": "repobility-docker", "category": "docker", "severity": "low", "confidence": 0.72, "cwe": "", "owasp": ""}}, {"id": "COMP001", "name": "[COMP001] High cognitive complexity: Function `poll_commands` has cognitive complexity 8 (SonarSource scale). Cognitive ", "shortDescription": {"text": "[COMP001] High cognitive complexity: Function `poll_commands` has cognitive complexity 8 (SonarSource scale). Cognitive complexity measures how hard the function is for a human to understand \u2014 nested branches, boolean chains, and recursion "}, "fullDescription": {"text": "Extract nested branches into named helper functions; flatten early-return / guard clauses; replace long if/elif chains with dispatch dicts or polymorphism. SonarQube's threshold for 'should refactor' is 15 \u2014 yours is 8."}, "properties": {"scanner": "repobility-threat-engine", "category": "quality", "severity": "low", "confidence": 0.95, "cwe": "", "owasp": ""}}, {"id": "DEPCUR-PY", "name": "Python package `zep-cloud` is minor version(s) behind (3.13.0 -> 3.23.0)", "shortDescription": {"text": "Python package `zep-cloud` is minor version(s) behind (3.13.0 -> 3.23.0)"}, "fullDescription": {"text": "`zep-cloud==3.13.0` is minor version(s) behind the latest stable release on PyPI (3.23.0). Pinned-but-stale Python dependencies drift away from upstream security and bugfix releases. This is the version-currency signal Dependabot raises."}, "properties": {"scanner": "repobility-dependency-currency", "category": "dependency", "severity": "low", "confidence": 0.9, "cwe": "", "owasp": ""}}, {"id": "AIC003", "name": "Duplicated implementation block across source files", "shortDescription": {"text": "Duplicated implementation block across source files"}, "fullDescription": {"text": "Duplicated blocks are a common artifact when generated code is pasted or recreated instead of reused. They increase maintenance cost because every future bug fix must be found in multiple locations."}, "properties": {"scanner": "repobility-ai-code-hygiene", "category": "quality", "severity": "low", "confidence": 0.86, "cwe": "", "owasp": ""}}, {"id": "MINED044", "name": "[MINED044] Js Console Log Prod: console.log left in code. Should be replaced with logger or removed.", "shortDescription": {"text": "[MINED044] Js Console Log Prod: console.log left in code. Should be replaced with logger or removed."}, "fullDescription": {"text": "Review and fix per the pattern semantics. See CWE-532 /  for context."}, "properties": {"scanner": "repobility-threat-engine", "category": "quality", "severity": "info", "confidence": 1.0, "cwe": "", "owasp": ""}}, {"id": "MINED050", "name": "[MINED050] Stub Only Function: Function declared but body is just pass, return None, raise NotImplementedError, or TODO ", "shortDescription": {"text": "[MINED050] Stub Only Function: Function declared but body is just pass, return None, raise NotImplementedError, or TODO comment."}, "fullDescription": {"text": "Review and fix per the pattern semantics. See CWE-1188 /  for context."}, "properties": {"scanner": "repobility-threat-engine", "category": "quality", "severity": "info", "confidence": 1.0, "cwe": "", "owasp": ""}}, {"id": "MINED062", "name": "[MINED062] Python Dataclass No Fields: @dataclass over an empty class \u2014 unfinished model.", "shortDescription": {"text": "[MINED062] Python Dataclass No Fields: @dataclass over an empty class \u2014 unfinished model."}, "fullDescription": {"text": "Review and fix per the pattern semantics."}, "properties": {"scanner": "repobility-threat-engine", "category": "quality", "severity": "info", "confidence": 1.0, "cwe": "", "owasp": ""}}, {"id": "MINED065", "name": "[MINED065] Cors Wildcard: Access-Control-Allow-Origin: * exposes the API to any browser origin. Acceptable for public re", "shortDescription": {"text": "[MINED065] Cors Wildcard: Access-Control-Allow-Origin: * exposes the API to any browser origin. Acceptable for public read-only endpoints; dangerous when paired with credentials or write endpoints."}, "fullDescription": {"text": "Review and fix per the pattern semantics. See CWE-942,CWE-346 / A05:2021 for context."}, "properties": {"scanner": "repobility-threat-engine", "category": "quality", "severity": "info", "confidence": 1.0, "cwe": "", "owasp": ""}}, {"id": "GHSA-v2wj-q39q-566r", "name": "vite: GHSA-v2wj-q39q-566r", "shortDescription": {"text": "vite: GHSA-v2wj-q39q-566r"}, "fullDescription": {"text": "Vite: `server.fs.deny` bypassed with queries"}, "properties": {"scanner": "osv-scanner", "category": "dependency", "severity": "high", "confidence": 0.88, "cwe": "", "owasp": ""}}, {"id": "GHSA-p9ff-h696-f583", "name": "vite: GHSA-p9ff-h696-f583", "shortDescription": {"text": "vite: GHSA-p9ff-h696-f583"}, "fullDescription": {"text": "Vite Vulnerable to Arbitrary File Read via Vite Dev Server WebSocket"}, "properties": {"scanner": "osv-scanner", "category": "dependency", "severity": "high", "confidence": 0.88, "cwe": "", "owasp": ""}}, {"id": "GHSA-q8qp-cvcw-x6jj", "name": "axios: GHSA-q8qp-cvcw-x6jj", "shortDescription": {"text": "axios: GHSA-q8qp-cvcw-x6jj"}, "fullDescription": {"text": "Axios has prototype pollution read-side gadgets in HTTP adapter that allow credential injection and request hijacking"}, "properties": {"scanner": "osv-scanner", "category": "dependency", "severity": "high", "confidence": 0.88, "cwe": "", "owasp": ""}}, {"id": "GHSA-pf86-5x62-jrwf", "name": "axios: GHSA-pf86-5x62-jrwf", "shortDescription": {"text": "axios: GHSA-pf86-5x62-jrwf"}, "fullDescription": {"text": "Axios: Prototype Pollution Gadgets - Response Tampering, Data Exfiltration, and Request Hijacking"}, "properties": {"scanner": "osv-scanner", "category": "dependency", "severity": "high", "confidence": 0.88, "cwe": "", "owasp": ""}}, {"id": "GHSA-p92q-9vqr-4j8v", "name": "axios: GHSA-p92q-9vqr-4j8v", "shortDescription": {"text": "axios: GHSA-p92q-9vqr-4j8v"}, "fullDescription": {"text": "Axios: Proxy-Authorization Credential Leak to Origin Server Across HTTP-to-HTTPS Redirect in Axios Node.js HTTP Adapter"}, "properties": {"scanner": "osv-scanner", "category": "dependency", "severity": "high", "confidence": 0.88, "cwe": "", "owasp": ""}}, {"id": "GHSA-j5f8-grm9-p9fc", "name": "axios: GHSA-j5f8-grm9-p9fc", "shortDescription": {"text": "axios: GHSA-j5f8-grm9-p9fc"}, "fullDescription": {"text": "Axios: Proxy-Authorization header leaks to redirect target when proxy is re-evaluated to direct connection"}, "properties": {"scanner": "osv-scanner", "category": "dependency", "severity": "high", "confidence": 0.88, "cwe": "", "owasp": ""}}, {"id": "GHSA-hfxv-24rg-xrqf", "name": "axios: GHSA-hfxv-24rg-xrqf", "shortDescription": {"text": "axios: GHSA-hfxv-24rg-xrqf"}, "fullDescription": {"text": "Axios: Regular Expression Denial of Service (ReDoS) via Cookie Name Injection"}, "properties": {"scanner": "osv-scanner", "category": "dependency", "severity": "high", "confidence": 0.88, "cwe": "", "owasp": ""}}, {"id": "GHSA-777c-7fjr-54vf", "name": "axios: GHSA-777c-7fjr-54vf", "shortDescription": {"text": "axios: GHSA-777c-7fjr-54vf"}, "fullDescription": {"text": "Allocation of Resources Without Limits or Throttling in Axios"}, "properties": {"scanner": "osv-scanner", "category": "dependency", "severity": "high", "confidence": 0.88, "cwe": "", "owasp": ""}}, {"id": "GHSA-6chq-wfr3-2hj9", "name": "axios: GHSA-6chq-wfr3-2hj9", "shortDescription": {"text": "axios: GHSA-6chq-wfr3-2hj9"}, "fullDescription": {"text": "Axios: Header Injection via Prototype Pollution"}, "properties": {"scanner": "osv-scanner", "category": "dependency", "severity": "high", "confidence": 0.88, "cwe": "", "owasp": ""}}, {"id": "GHSA-pjwm-pj3p-43mv", "name": "axios: GHSA-pjwm-pj3p-43mv", "shortDescription": {"text": "axios: GHSA-pjwm-pj3p-43mv"}, "fullDescription": {"text": "axios's shouldBypassProxy does not recognize IPv4-mapped IPv6 addresses, allowing NO_PROXY bypass (incomplete fix for CVE-2025-62718)"}, "properties": {"scanner": "osv-scanner", "category": "dependency", "severity": "high", "confidence": 0.88, "cwe": "", "owasp": ""}}, {"id": "GHSA-3g43-6gmg-66jw", "name": "axios: GHSA-3g43-6gmg-66jw", "shortDescription": {"text": "axios: GHSA-3g43-6gmg-66jw"}, "fullDescription": {"text": "axios Vulnerable to Credential Theft and Response Hijacking via Prototype Pollution Gadget in Config Merge"}, "properties": {"scanner": "osv-scanner", "category": "dependency", "severity": "high", "confidence": 0.88, "cwe": "", "owasp": ""}}, {"id": "GHSA-35jp-ww65-95wh", "name": "axios: GHSA-35jp-ww65-95wh", "shortDescription": {"text": "axios: GHSA-35jp-ww65-95wh"}, "fullDescription": {"text": "axios Vulnerable to Full Man-in-the-Middle via Prototype Pollution Gadget in `config.proxy`"}, "properties": {"scanner": "osv-scanner", "category": "dependency", "severity": "high", "confidence": 0.88, "cwe": "", "owasp": ""}}, {"id": "GHSA-38jv-5279-wg99", "name": "urllib3: GHSA-38jv-5279-wg99", "shortDescription": {"text": "urllib3: GHSA-38jv-5279-wg99"}, "fullDescription": {"text": "Decompression-bomb safeguards bypassed when following HTTP redirects (streaming API)"}, "properties": {"scanner": "osv-scanner", "category": "dependency", "severity": "high", "confidence": 0.88, "cwe": "", "owasp": ""}}, {"id": "PYSEC-2026-142", "name": "urllib3: PYSEC-2026-142", "shortDescription": {"text": "urllib3: PYSEC-2026-142"}, "fullDescription": {"text": "urllib3 is an HTTP client library for Python. From 2.6.0 to before 2.7.0, urllib3 could decompress the whole response instead of the requested portion (1) during the second HTTPResponse.read(amt=N) call when the response was decompressed using the official Brotli library or (2) when HTTPResponse.drain_conn() was called after the response had been read and decompressed partially (compression algorithm did not matter here). These issues could cause urllib3 to fully decode a small amount of highly compressed data in a single operation. This could result in excessive resource consumption (high CPU usage and massive memory allocation for the decompressed data) on the client side. This vulnerability is fixed in 2.7.0."}, "properties": {"scanner": "osv-scanner", "category": "dependency", "severity": "high", "confidence": 0.88, "cwe": "", "owasp": ""}}, {"id": "PYSEC-2026-141", "name": "urllib3: PYSEC-2026-141", "shortDescription": {"text": "urllib3: PYSEC-2026-141"}, "fullDescription": {"text": "urllib3 is an HTTP client library for Python. From 1.23 to before 2.7.0, cross-origin redirects followed from the low-level API via ProxyManager.connection_from_url().urlopen(..., assert_same_host=False) still forward these sensitive headers. This vulnerability is fixed in 2.7.0."}, "properties": {"scanner": "osv-scanner", "category": "dependency", "severity": "high", "confidence": 0.88, "cwe": "", "owasp": ""}}, {"id": "PYSEC-2025-217", "name": "transformers: PYSEC-2025-217", "shortDescription": {"text": "transformers: PYSEC-2025-217"}, "fullDescription": {"text": "Hugging Face Transformers X-CLIP Checkpoint Conversion Deserialization of Untrusted Data Remote Code Execution Vulnerability. This vulnerability allows remote attackers to execute arbitrary code on affected installations of Hugging Face Transformers. User interaction is required to exploit this vulnerability in that the target must visit a malicious page or open a malicious file.\n\nThe specific flaw exists within the parsing of checkpoints. The issue results from the lack of proper validation of user-supplied data, which can result in deserialization of untrusted data. An attacker can leverage this vulnerability to execute code in the context of the current process. Was ZDI-CAN-28308."}, "properties": {"scanner": "osv-scanner", "category": "dependency", "severity": "high", "confidence": 0.88, "cwe": "", "owasp": ""}}, {"id": "GHSA-fqwm-6jpj-5wxc", "name": "tornado: GHSA-fqwm-6jpj-5wxc", "shortDescription": {"text": "tornado: GHSA-fqwm-6jpj-5wxc"}, "fullDescription": {"text": "Tornado has cookie attribute injection via .RequestHandler.set_cookie"}, "properties": {"scanner": "osv-scanner", "category": "dependency", "severity": "high", "confidence": 0.88, "cwe": "", "owasp": ""}}, {"id": "PYSEC-2026-140", "name": "tornado: PYSEC-2026-140", "shortDescription": {"text": "tornado: PYSEC-2026-140"}, "fullDescription": {"text": "Tornado is a Python web framework and asynchronous networking library. In versions of Tornado prior to 6.5.5, the only limit on the number of parts in multipart/form-data is the max_body_size setting (default 100MB). Since parsing occurs synchronously on the main thread, this creates the possibility of denial-of-service due to the cost of parsing very large multipart bodies with many parts. This vulnerability is fixed in 6.5.5."}, "properties": {"scanner": "osv-scanner", "category": "dependency", "severity": "high", "confidence": 0.88, "cwe": "", "owasp": ""}}, {"id": "PYSEC-2026-139", "name": "torch: PYSEC-2026-139", "shortDescription": {"text": "torch: PYSEC-2026-139"}, "fullDescription": {"text": "A vulnerability was identified in PyTorch 2.10.0. The affected element is an unknown function of the component pt2 Loading Handler. The manipulation leads to deserialization. The attack can only be performed from a local environment. The exploit is publicly available and might be used. The project was informed of the problem early through a pull request but has not reacted yet."}, "properties": {"scanner": "osv-scanner", "category": "dependency", "severity": "high", "confidence": 0.88, "cwe": "", "owasp": ""}}, {"id": "PYSEC-2026-161", "name": "starlette: PYSEC-2026-161", "shortDescription": {"text": "starlette: PYSEC-2026-161"}, "fullDescription": {"text": "BadHost: Missing Host header validation poisons request.url.path, bypassing path-based security checks"}, "properties": {"scanner": "osv-scanner", "category": "dependency", "severity": "high", "confidence": 0.88, "cwe": "", "owasp": ""}}, {"id": "GHSA-wp53-j4wj-2cfg", "name": "python-multipart: GHSA-wp53-j4wj-2cfg", "shortDescription": {"text": "python-multipart: GHSA-wp53-j4wj-2cfg"}, "fullDescription": {"text": "Python-Multipart has Arbitrary File Write via Non-Default Configuration"}, "properties": {"scanner": "osv-scanner", "category": "dependency", "severity": "high", "confidence": 0.88, "cwe": "", "owasp": ""}}, {"id": "GHSA-pp6c-gr5w-3c5g", "name": "python-multipart: GHSA-pp6c-gr5w-3c5g", "shortDescription": {"text": "python-multipart: GHSA-pp6c-gr5w-3c5g"}, "fullDescription": {"text": "python-multipart has Denial of Service via unbounded multipart part headers"}, "properties": {"scanner": "osv-scanner", "category": "dependency", "severity": "high", "confidence": 0.88, "cwe": "", "owasp": ""}}, {"id": "PYSEC-2026-179", "name": "pyjwt: PYSEC-2026-179", "shortDescription": {"text": "pyjwt: PYSEC-2026-179"}, "fullDescription": {"text": "PyJWT is a JSON Web Token implementation in Python. Prior to 2.13.0, when the verifier is decoding JSON Web Tokens, while supporting both asymmetric and HMAC algorithms, the library does not validate use of JSON Web Keys in HMAC algorithm, allowing attacker to use the issuer public key as the secret key for HMAC algorithm. This vulnerability is fixed in 2.13.0."}, "properties": {"scanner": "osv-scanner", "category": "dependency", "severity": "high", "confidence": 0.88, "cwe": "", "owasp": ""}}, {"id": "PYSEC-2026-178", "name": "pyjwt: PYSEC-2026-178", "shortDescription": {"text": "pyjwt: PYSEC-2026-178"}, "fullDescription": {"text": "PyJWT is a JSON Web Token implementation in Python. From 2.8.0 to 2.12.1, when verifying detached JWS tokens using the unencoded-payload option (\"b64\": false, RFC 7797), PyJWT performs Base64URL decoding of the compact-serialization payload segment before enforcing the detached-payload rules. For b64=false, PyJWT later discards that decoded payload and replaces it with the caller-provided detached_payload. In practice, this turns the middle segment into an attacker-controlled \u201cwork amplifier\u201d: a remote client can supply an arbitrarily large Base64URL payload segment that forces CPU work + memory allocations even if the signature is invalid. This creates an unauthenticated DoS vector against any endpoint that verifies detached JWS using PyJWT. This vulnerability is fixed in 2.13.0."}, "properties": {"scanner": "osv-scanner", "category": "dependency", "severity": "high", "confidence": 0.88, "cwe": "", "owasp": ""}}, {"id": "PYSEC-2026-177", "name": "pyjwt: PYSEC-2026-177", "shortDescription": {"text": "pyjwt: PYSEC-2026-177"}, "fullDescription": {"text": "PyJWT is a JSON Web Token implementation in Python. Prior to 2.13.0, PyJWKClient.get_signing_key() forces a fresh HTTP request to the JWKS endpoint for every JWT with an unknown kid value, with no rate limiting. Since kid comes from the unverified token header, an attacker can trigger unlimited outbound requests. The vulnerability surfaces only when a JWKS fetch fails; an attacker can attempt to provoke that with sustained unknown-kid traffic, but the outcome depends on upstream JWKS-endpoint behavior (rate limiting, transient errors) which is beyond the attacker's control. This vulnerability is fixed in 2.13.0."}, "properties": {"scanner": "osv-scanner", "category": "dependency", "severity": "high", "confidence": 0.88, "cwe": "", "owasp": ""}}, {"id": "PYSEC-2026-176", "name": "pyjwt: PYSEC-2026-176", "shortDescription": {"text": "pyjwt: PYSEC-2026-176"}, "fullDescription": {"text": "PyJWT is a JSON Web Token implementation in Python. From 2.9.0 to 2.12.1, there is a verifier-side algorithm allow-list bypass when jwt.decode() or jwt.decode_complete() are called with a PyJWK key. The token header alg is checked against the caller-supplied algorithms allow-list, but signature verification is performed with the algorithm bound to the PyJWK object instead of the header algorithm. An attacker who controls a registered JWK/JWKS private key can sign with a disallowed algorithm, advertise an allowed algorithm in the JWT header, and still be accepted. The issue affects the documented PyJWKClient.get_signing_key_from_jwt(...) flow. This vulnerability is fixed in 2.13.0."}, "properties": {"scanner": "osv-scanner", "category": "dependency", "severity": "high", "confidence": 0.88, "cwe": "", "owasp": ""}}, {"id": "PYSEC-2026-175", "name": "pyjwt: PYSEC-2026-175", "shortDescription": {"text": "pyjwt: PYSEC-2026-175"}, "fullDescription": {"text": "PyJWT is a JSON Web Token implementation in Python. Prior to 2.13.0, PyJWKClient passes its uri argument directly to urllib.request.urlopen() which uses Python stdlib's default OpenerDirector registering HTTPHandler, HTTPSHandler, FTPHandler, FileHandler, and DataHandler. There is currently no documented option to restrict which schemes PyJWKClient will fetch. If an application's jku URL ingestion path accepts attacker-influenced URLs (e.g., from JWT header, configuration file, OAuth flow parameter), the attacker can cause PyJWKClient to read arbitrary local files via file:// (SSRF on local filesystem), cause PyJWKClient to attempt FTP / data-URI fetches (broader SSRF surface), or forge tokens that PyJWT verifies as valid. The library does not directly return non-HTTP(S) URI contents to the attacker; the chained \"plant a JWKS to forge tokens\" scenario described in the original report requires additional application-layer flaws (attacker write access to a filesystem path, untrusted jku "}, "properties": {"scanner": "osv-scanner", "category": "dependency", "severity": "high", "confidence": 0.88, "cwe": "", "owasp": ""}}, {"id": "PYSEC-2026-120", "name": "pyjwt: PYSEC-2026-120", "shortDescription": {"text": "pyjwt: PYSEC-2026-120"}, "fullDescription": {"text": "PyJWT is a JSON Web Token implementation in Python. Prior to 2.12.0, PyJWT does not validate the crit (Critical) Header Parameter defined in RFC 7515 \u00a74.1.11. When a JWS token contains a crit array listing extensions that PyJWT does not understand, the library accepts the token instead of rejecting it. This violates the MUST requirement in the RFC. This vulnerability is fixed in 2.12.0."}, "properties": {"scanner": "osv-scanner", "category": "dependency", "severity": "high", "confidence": 0.88, "cwe": "", "owasp": ""}}, {"id": "PYSEC-2025-183", "name": "pyjwt: PYSEC-2025-183", "shortDescription": {"text": "pyjwt: PYSEC-2025-183"}, "fullDescription": {"text": "pyjwt v2.10.1 was discovered to contain weak encryption. NOTE: this is disputed by the Supplier because the key length is chosen by the application that uses the library (admittedly, library users may benefit from a minimum value and a mechanism for opting in to strict enforcement)."}, "properties": {"scanner": "osv-scanner", "category": "dependency", "severity": "high", "confidence": 0.88, "cwe": "", "owasp": ""}}, {"id": "GHSA-whj4-6x5x-4v2j", "name": "pillow: GHSA-whj4-6x5x-4v2j", "shortDescription": {"text": "pillow: GHSA-whj4-6x5x-4v2j"}, "fullDescription": {"text": "FITS GZIP decompression bomb in Pillow"}, "properties": {"scanner": "osv-scanner", "category": "dependency", "severity": "high", "confidence": 0.88, "cwe": "", "owasp": ""}}, {"id": "GHSA-pwv6-vv43-88gr", "name": "pillow: GHSA-pwv6-vv43-88gr", "shortDescription": {"text": "pillow: GHSA-pwv6-vv43-88gr"}, "fullDescription": {"text": "Pillow has an OOB Write with Invalid PSD Tile Extents (Integer Overflow)"}, "properties": {"scanner": "osv-scanner", "category": "dependency", "severity": "high", "confidence": 0.88, "cwe": "", "owasp": ""}}, {"id": "GHSA-cfh3-3jmp-rvhc", "name": "pillow: GHSA-cfh3-3jmp-rvhc", "shortDescription": {"text": "pillow: GHSA-cfh3-3jmp-rvhc"}, "fullDescription": {"text": "Pillow affected by out-of-bounds write when loading PSD images"}, "properties": {"scanner": "osv-scanner", "category": "dependency", "severity": "high", "confidence": 0.88, "cwe": "", "owasp": ""}}, {"id": "PYSEC-2026-165", "name": "pillow: PYSEC-2026-165", "shortDescription": {"text": "pillow: PYSEC-2026-165"}, "fullDescription": {"text": "Pillow is a Python imaging library. Prior to version 12.2.0, if a font advances for each glyph by an exceeding large amount, when Pillow keeps track of the current position, it may lead to an integer overflow. This issue has been patched in version 12.2.0."}, "properties": {"scanner": "osv-scanner", "category": "dependency", "severity": "high", "confidence": 0.88, "cwe": "", "owasp": ""}}, {"id": "GHSA-jm6w-m3j8-898g", "name": "nltk: GHSA-jm6w-m3j8-898g", "shortDescription": {"text": "nltk: GHSA-jm6w-m3j8-898g"}, "fullDescription": {"text": "Unauthenticated remote shutdown in nltk.app.wordnet_app"}, "properties": {"scanner": "osv-scanner", "category": "dependency", "severity": "high", "confidence": 0.88, "cwe": "", "owasp": ""}}, {"id": "GHSA-469j-vmhf-r6v7", "name": "nltk: GHSA-469j-vmhf-r6v7", "shortDescription": {"text": "nltk: GHSA-469j-vmhf-r6v7"}, "fullDescription": {"text": "NLTK has a Downloader Path Traversal Vulnerability (AFO) - Arbitrary File Overwrite"}, "properties": {"scanner": "osv-scanner", "category": "dependency", "severity": "high", "confidence": 0.88, "cwe": "", "owasp": ""}}, {"id": "PYSEC-2026-99", "name": "nltk: PYSEC-2026-99", "shortDescription": {"text": "nltk: PYSEC-2026-99"}, "fullDescription": {"text": "NLTK versions <=3.9.2 are vulnerable to arbitrary code execution due to improper input validation in the StanfordSegmenter module. The module dynamically loads external Java .jar files without verification or sandboxing. An attacker can supply or replace the JAR file, enabling the execution of arbitrary Java bytecode at import time. This vulnerability can be exploited through methods such as model poisoning, MITM attacks, or dependency poisoning, leading to remote code execution. The issue arises from the direct execution of the JAR file via subprocess with unvalidated classpath input, allowing malicious classes to execute when loaded by the JVM."}, "properties": {"scanner": "osv-scanner", "category": "dependency", "severity": "high", "confidence": 0.88, "cwe": "", "owasp": ""}}, {"id": "PYSEC-2026-98", "name": "nltk: PYSEC-2026-98", "shortDescription": {"text": "nltk: PYSEC-2026-98"}, "fullDescription": {"text": "A vulnerability in NLTK versions up to and including 3.9.2 allows arbitrary file read via path traversal in multiple CorpusReader classes, including WordListCorpusReader, TaggedCorpusReader, and BracketParseCorpusReader. These classes fail to properly sanitize or validate file paths, enabling attackers to traverse directories and access sensitive files on the server. This issue is particularly critical in scenarios where user-controlled file inputs are processed, such as in machine learning APIs, chatbots, or NLP pipelines. Exploitation of this vulnerability can lead to unauthorized access to sensitive files, including system files, SSH private keys, and API tokens, and may potentially escalate to remote code execution when combined with other vulnerabilities."}, "properties": {"scanner": "osv-scanner", "category": "dependency", "severity": "high", "confidence": 0.88, "cwe": "", "owasp": ""}}, {"id": "PYSEC-2026-97", "name": "nltk: PYSEC-2026-97", "shortDescription": {"text": "nltk: PYSEC-2026-97"}, "fullDescription": {"text": "A vulnerability in the `filestring()` function of the `nltk.util` module in nltk version 3.9.2 allows arbitrary file read due to improper validation of input paths. The function directly opens files specified by user input without sanitization, enabling attackers to access sensitive system files by providing absolute paths or traversal paths. This vulnerability can be exploited locally or remotely, particularly in scenarios where the function is used in web APIs or other interfaces that accept user-supplied input."}, "properties": {"scanner": "osv-scanner", "category": "dependency", "severity": "high", "confidence": 0.88, "cwe": "", "owasp": ""}}, {"id": "GHSA-xm59-rqc7-hhvf", "name": "nbconvert: GHSA-xm59-rqc7-hhvf", "shortDescription": {"text": "nbconvert: GHSA-xm59-rqc7-hhvf"}, "fullDescription": {"text": "nbconvert has an uncontrolled search path that leads to unauthorized code execution on Windows"}, "properties": {"scanner": "osv-scanner", "category": "dependency", "severity": "high", "confidence": 0.88, "cwe": "", "owasp": ""}}, {"id": "GHSA-8mp2-v27r-99xp", "name": "mistune: GHSA-8mp2-v27r-99xp", "shortDescription": {"text": "mistune: GHSA-8mp2-v27r-99xp"}, "fullDescription": {"text": "Mistune has a ReDoS in LINK_TITLE_RE that allows denial of service via crafted Markdown input"}, "properties": {"scanner": "osv-scanner", "category": "dependency", "severity": "high", "confidence": 0.88, "cwe": "", "owasp": ""}}, {"id": "PYSEC-2026-168", "name": "mistune: PYSEC-2026-168", "shortDescription": {"text": "mistune: PYSEC-2026-168"}, "fullDescription": {"text": "Mistune is a Python Markdown parser with renderers and plugins. In 3.2.0 and realier, in src/mistune/directives/image.py, the render_figure() function concatenates figclass and figwidth options directly into HTML attributes without escaping. This allows attribute injection and XSS even when HTMLRenderer(escape=True) is used, because these values bypass the inline renderer."}, "properties": {"scanner": "osv-scanner", "category": "dependency", "severity": "high", "confidence": 0.88, "cwe": "", "owasp": ""}}, {"id": "PYSEC-2026-87", "name": "lxml: PYSEC-2026-87", "shortDescription": {"text": "lxml: PYSEC-2026-87"}, "fullDescription": {"text": "lxml is a library for processing XML and HTML in the Python language. Prior to 6.1.0, using either of the two parsers in the default configuration (with resolve_entities=True) allows untrusted XML input to read local files. Setting the resolve_entities option explicitly to resolve_entities='internal' or resolve_entities=False disables the local file access. This vulnerability is fixed in 6.1.0."}, "properties": {"scanner": "osv-scanner", "category": "dependency", "severity": "high", "confidence": 0.88, "cwe": "", "owasp": ""}}, {"id": "GHSA-r6ph-v2qm-q3c2", "name": "cryptography: GHSA-r6ph-v2qm-q3c2", "shortDescription": {"text": "cryptography: GHSA-r6ph-v2qm-q3c2"}, "fullDescription": {"text": "cryptography Vulnerable to a Subgroup Attack Due to Missing Subgroup Validation for SECT Curves"}, "properties": {"scanner": "osv-scanner", "category": "dependency", "severity": "high", "confidence": 0.88, "cwe": "", "owasp": ""}}, {"id": "PYSEC-2026-36", "name": "cryptography: PYSEC-2026-36", "shortDescription": {"text": "cryptography: PYSEC-2026-36"}, "fullDescription": {"text": "cryptography is a package designed to expose cryptographic primitives and recipes to Python developers. From 45.0.0 to before 46.0.7, if a non-contiguous buffer was passed to APIs which accepted Python buffers (e.g. Hash.update()), this could lead to buffer overflows. This vulnerability is fixed in 46.0.7."}, "properties": {"scanner": "osv-scanner", "category": "dependency", "severity": "high", "confidence": 0.88, "cwe": "", "owasp": ""}}, {"id": "PYSEC-2026-35", "name": "cryptography: PYSEC-2026-35", "shortDescription": {"text": "cryptography: PYSEC-2026-35"}, "fullDescription": {"text": "cryptography is a package designed to expose cryptographic primitives and recipes to Python developers. Prior to version 46.0.6, DNS name constraints were only validated against SANs within child certificates, and not the \"peer name\" presented during each validation. Consequently, cryptography would allow a peer named bar.example.com to validate against a wildcard leaf certificate for *.example.com, even if the leaf's parent certificate (or upwards) contained an excluded subtree constraint for bar.example.com. This issue has been patched in version 46.0.6."}, "properties": {"scanner": "osv-scanner", "category": "dependency", "severity": "high", "confidence": 0.88, "cwe": "", "owasp": ""}}, {"id": "MINED001", "name": "[MINED001] Bare Except Pass: except: pass or except Exception: pass \u2014 silently swallows everything including KeyboardInt", "shortDescription": {"text": "[MINED001] Bare Except Pass: except: pass or except Exception: pass \u2014 silently swallows everything including KeyboardInterrupt and bugs."}, "fullDescription": {"text": "Review and fix per the pattern semantics. See CWE-755 /  for context."}, "properties": {"scanner": "repobility-threat-engine", "category": "quality", "severity": "high", "confidence": 1.0, "cwe": "", "owasp": ""}}, {"id": "SEC128", "name": "[SEC128] Async function without await \u2014 fire-and-forget Promise (AI mistake): Async call invoked without `await` returns", "shortDescription": {"text": "[SEC128] Async function without await \u2014 fire-and-forget Promise (AI mistake): Async call invoked without `await` returns an unhandled Promise. The outer function resolves before the inner work completes \u2014 DB writes lost, emails not sent, ra"}, "fullDescription": {"text": "Add `await` before each async call, or chain with `.then`. If you intentionally want fire-and-forget, prefix with `void` (TS) or assign to `_` (Python with `asyncio.create_task`) to make the intent explicit and survive lint."}, "properties": {"scanner": "repobility-threat-engine", "category": "quality", "severity": "high", "confidence": 1.0, "cwe": "", "owasp": ""}}, {"id": "MINED115", "name": "Action `actions/checkout` pinned to mutable ref `@v4`", "shortDescription": {"text": "Action `actions/checkout` pinned to mutable ref `@v4`"}, "fullDescription": {"text": "`uses: actions/checkout@v4` resolves at workflow-run time. Tags and branches can be re-pushed by the action owner; that made the tj-actions/changed-files compromise (2025) instantly affect ~23K repos. Pin to a 40-char commit SHA + lock with Dependabot or renovate."}, "properties": {"scanner": "repobility-supply-chain", "category": "dependency", "severity": "high", "confidence": 0.9, "cwe": "", "owasp": ""}}, {"id": "MINED118", "name": "Dockerfile FROM `python:3.11` not pinned by digest", "shortDescription": {"text": "Dockerfile FROM `python:3.11` not pinned by digest"}, "fullDescription": {"text": "`FROM python:3.11` resolves the tag at build time. The registry CAN re-push a different image for the same tag, so every build is potentially different. Production images should pin to `image@sha256:...` for reproducibility + supply-chain integrity."}, "properties": {"scanner": "repobility-supply-chain", "category": "dependency", "severity": "high", "confidence": 0.9, "cwe": "", "owasp": ""}}, {"id": "MINED108", "name": "`self.send_response` used but never assigned in __init__", "shortDescription": {"text": "`self.send_response` used but never assigned in __init__"}, "fullDescription": {"text": "Method `handle_interview` of class `ParallelIPCHandler` reads `self.send_response`, but no assignment to it exists in __init__ (and no class-level fallback). This raises AttributeError the first time the method runs against an instance."}, "properties": {"scanner": "repobility-ast-engine", "category": "quality", "severity": "high", "confidence": 1.0, "cwe": "", "owasp": ""}}, {"id": "MINED106", "name": "Phantom test coverage: test_profile_formats", "shortDescription": {"text": "Phantom test coverage: test_profile_formats"}, "fullDescription": {"text": "Test function `test_profile_formats` runs code but contains no assert / expect / should call \u2014 it passes regardless of behaviour. Adds line coverage without verifying anything."}, "properties": {"scanner": "repobility-ast-engine", "category": "quality", "severity": "high", "confidence": 1.0, "cwe": "", "owasp": ""}}, {"id": "GHSA-gm8q-m8mv-jj5m", "name": "unstructured: GHSA-gm8q-m8mv-jj5m", "shortDescription": {"text": "unstructured: GHSA-gm8q-m8mv-jj5m"}, "fullDescription": {"text": "Unstructured has Path Traversal via Malicious MSG Attachment that Allows Arbitrary File Write"}, "properties": {"scanner": "osv-scanner", "category": "dependency", "severity": "critical", "confidence": 0.88, "cwe": "", "owasp": ""}}, {"id": "GHSA-7p94-766c-hgjp", "name": "nltk: GHSA-7p94-766c-hgjp", "shortDescription": {"text": "nltk: GHSA-7p94-766c-hgjp"}, "fullDescription": {"text": "NLTK has a Zip Slip Vulnerability"}, "properties": {"scanner": "osv-scanner", "category": "dependency", "severity": "critical", "confidence": 0.88, "cwe": "", "owasp": ""}}, {"id": "MINED107", "name": "Missing import: `platform` used but not imported", "shortDescription": {"text": "Missing import: `platform` used but not imported"}, "fullDescription": {"text": "The file uses `platform.something(...)` but never imports `platform`. This raises NameError at runtime the first time the line executes."}, "properties": {"scanner": "repobility-ast-engine", "category": "quality", "severity": "critical", "confidence": 1.0, "cwe": "", "owasp": ""}}]}}, "automationDetails": {"id": "repobility/859"}, "properties": {"repository": "666ghj/MiroFish", "repoUrl": "https://github.com/666ghj/MiroFish", "branch": "main"}, "results": [{"ruleId": "GHSA-4w7w-66w2-5vf9", "level": "warning", "message": {"text": "vite: GHSA-4w7w-66w2-5vf9"}, "properties": {"repobilityId": 77495, "scanner": "osv-scanner", "fingerprint": "74fdacb9b969bc506c65b438d6eb7ff99d8ffa832aea72d9f01429ebfd2cc3d9", "category": "dependency", "severity": "medium", "confidence": 0.88, "triageState": "open", "verdict": "", "isResolved": false, "reason": "", "evidence": {"match": "", "aliases": ["CVE-2026-39365"], "package": "vite", "rule_id": "GHSA-4w7w-66w2-5vf9", "scanner": "osv-scanner", "correlation_key": "vuln|vite|CVE-2026-39365|frontend/package-lock.json"}}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "frontend/package-lock.json"}, "region": {"startLine": 1}}}]}, {"ruleId": "GHSA-qx2v-qp2m-jg93", "level": "warning", "message": {"text": "postcss: GHSA-qx2v-qp2m-jg93"}, "properties": {"repobilityId": 77494, "scanner": "osv-scanner", "fingerprint": "2510b8057924327e9299fe8e0754f99daed52ce3ac1ece31b2a82e243beabb2e", "category": "dependency", "severity": "medium", "confidence": 0.88, "triageState": "open", "verdict": "", "isResolved": false, "reason": "", "evidence": {"match": "", "aliases": ["CVE-2026-41305"], "package": "postcss", "rule_id": "GHSA-qx2v-qp2m-jg93", "scanner": "osv-scanner", "correlation_key": "vuln|postcss|CVE-2026-41305|frontend/package-lock.json"}}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "frontend/package-lock.json"}, "region": {"startLine": 1}}}]}, {"ruleId": "GHSA-r4q5-vmmm-2653", "level": "warning", "message": {"text": "follow-redirects: GHSA-r4q5-vmmm-2653"}, "properties": {"repobilityId": 77493, "scanner": "osv-scanner", "fingerprint": "3d656477067c0dd969602ebfde35450c8f3fb7764394b5e10c8a45b1e0155da3", "category": "dependency", "severity": "medium", "confidence": 0.88, "triageState": "open", "verdict": "", "isResolved": false, "reason": "", "evidence": {"match": "", "package": "follow-redirects", "rule_id": "GHSA-r4q5-vmmm-2653", "scanner": "osv-scanner", "correlation_key": "vuln|follow-redirects|GHSA-R4Q5-VMMM-2653|frontend/package-lock.json"}}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "frontend/package-lock.json"}, "region": {"startLine": 1}}}]}, {"ruleId": "GHSA-xx6v-rp6x-q39c", "level": "warning", "message": {"text": "axios: GHSA-xx6v-rp6x-q39c"}, "properties": {"repobilityId": 77492, "scanner": "osv-scanner", "fingerprint": "3afa9a5882a98a4103ae3aef5fa211563f353c822ccee5613869fd8724a603e9", "category": "dependency", "severity": "medium", "confidence": 0.88, "triageState": "open", "verdict": "", "isResolved": false, "reason": "", "evidence": {"match": "", "aliases": ["CVE-2026-42042"], "package": "axios", "rule_id": "GHSA-xx6v-rp6x-q39c", "scanner": "osv-scanner", "correlation_key": "vuln|axios|CVE-2026-42042|frontend/package-lock.json"}}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "frontend/package-lock.json"}, "region": {"startLine": 1}}}]}, {"ruleId": "GHSA-w9j2-pvgh-6h63", "level": "warning", "message": {"text": "axios: GHSA-w9j2-pvgh-6h63"}, "properties": {"repobilityId": 77490, "scanner": "osv-scanner", "fingerprint": "f2883dc644d43b799c5891c6518e8fb51fac9cd4bfa860b6c39d3f3f83988782", "category": "dependency", "severity": "medium", "confidence": 0.88, "triageState": "open", "verdict": "", "isResolved": false, "reason": "", "evidence": {"match": "", "aliases": ["CVE-2026-42041"], "package": "axios", "rule_id": "GHSA-w9j2-pvgh-6h63", "scanner": "osv-scanner", "correlation_key": "vuln|axios|CVE-2026-42041|frontend/package-lock.json"}}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "frontend/package-lock.json"}, "region": {"startLine": 1}}}]}, {"ruleId": "GHSA-vf2m-468p-8v99", "level": "warning", "message": {"text": "axios: GHSA-vf2m-468p-8v99"}, "properties": {"repobilityId": 77489, "scanner": "osv-scanner", "fingerprint": "d1fc7cb17ae9b1acac5947064cf87de3af2df5d1c9c22ab851deec7224e375bd", "category": "dependency", "severity": "medium", "confidence": 0.88, "triageState": "open", "verdict": "", "isResolved": false, "reason": "", "evidence": {"match": "", "aliases": ["CVE-2026-42036"], "package": "axios", "rule_id": "GHSA-vf2m-468p-8v99", "scanner": "osv-scanner", "correlation_key": "vuln|axios|CVE-2026-42036|frontend/package-lock.json"}}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "frontend/package-lock.json"}, "region": {"startLine": 1}}}]}, {"ruleId": "GHSA-m7pr-hjqh-92cm", "level": "warning", "message": {"text": "axios: GHSA-m7pr-hjqh-92cm"}, "properties": {"repobilityId": 77485, "scanner": "osv-scanner", "fingerprint": "b86da0f88ee1149c5facf80a9e553756ff55433408d2892a587767a2d585c838", "category": "dependency", "severity": "medium", "confidence": 0.88, "triageState": "open", "verdict": "", "isResolved": false, "reason": "", "evidence": {"match": "", "aliases": ["CVE-2026-42038"], "package": "axios", "rule_id": "GHSA-m7pr-hjqh-92cm", "scanner": "osv-scanner", "correlation_key": "vuln|axios|CVE-2026-42038|frontend/package-lock.json"}}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "frontend/package-lock.json"}, "region": {"startLine": 1}}}]}, {"ruleId": "GHSA-fvcv-3m26-pcqx", "level": "warning", "message": {"text": "axios: GHSA-fvcv-3m26-pcqx"}, "properties": {"repobilityId": 77482, "scanner": "osv-scanner", "fingerprint": "537dbb61fcfcf45b24a65bc811be17b88ec82ed28bec050fafc92b12a6fd603b", "category": "dependency", "severity": "medium", "confidence": 0.88, "triageState": "open", "verdict": "", "isResolved": false, "reason": "", "evidence": {"match": "", "aliases": ["CVE-2026-40175"], "package": "axios", "rule_id": "GHSA-fvcv-3m26-pcqx", "scanner": "osv-scanner", "correlation_key": "vuln|axios|CVE-2026-40175|frontend/package-lock.json"}}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "frontend/package-lock.json"}, "region": {"startLine": 1}}}]}, {"ruleId": "GHSA-898c-q2cr-xwhg", "level": "warning", "message": {"text": "axios: GHSA-898c-q2cr-xwhg"}, "properties": {"repobilityId": 77481, "scanner": "osv-scanner", "fingerprint": "a38276cf8a6159f6e35f692b34c2297ff658c3b801030f78938ce9c4160090b8", "category": "dependency", "severity": "medium", "confidence": 0.88, "triageState": "open", "verdict": "", "isResolved": false, "reason": "", "evidence": {"match": "", "aliases": ["CVE-2026-44490"], "package": "axios", "rule_id": "GHSA-898c-q2cr-xwhg", "scanner": "osv-scanner", "correlation_key": "vuln|axios|CVE-2026-44490|frontend/package-lock.json"}}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "frontend/package-lock.json"}, "region": {"startLine": 1}}}]}, {"ruleId": "GHSA-62hf-57xw-28j9", "level": "warning", "message": {"text": "axios: GHSA-62hf-57xw-28j9"}, "properties": {"repobilityId": 77478, "scanner": "osv-scanner", "fingerprint": "ceba2f8b7f1d9c8a78840973328a2b775a9ab357ffa5d34105a41056b8cf983d", "category": "dependency", "severity": "medium", "confidence": 0.88, "triageState": "open", "verdict": "", "isResolved": false, "reason": "", "evidence": {"match": "", "aliases": ["CVE-2026-42039"], "package": "axios", "rule_id": "GHSA-62hf-57xw-28j9", "scanner": "osv-scanner", "correlation_key": "vuln|axios|CVE-2026-42039|frontend/package-lock.json"}}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "frontend/package-lock.json"}, "region": {"startLine": 1}}}]}, {"ruleId": "GHSA-5c9x-8gcm-mpgx", "level": "warning", "message": {"text": "axios: GHSA-5c9x-8gcm-mpgx"}, "properties": {"repobilityId": 77477, "scanner": "osv-scanner", "fingerprint": "8909dc0b4ae9f55269ce2536aa197dd131ef542c59470dafd2b6272b79145173", "category": "dependency", "severity": "medium", "confidence": 0.88, "triageState": "open", "verdict": "", "isResolved": false, "reason": "", "evidence": {"match": "", "aliases": ["CVE-2026-42034"], "package": "axios", "rule_id": "GHSA-5c9x-8gcm-mpgx", "scanner": "osv-scanner", "correlation_key": "vuln|axios|CVE-2026-42034|frontend/package-lock.json"}}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "frontend/package-lock.json"}, "region": {"startLine": 1}}}]}, {"ruleId": "GHSA-445q-vr5w-6q77", "level": "warning", "message": {"text": "axios: GHSA-445q-vr5w-6q77"}, "properties": {"repobilityId": 77476, "scanner": "osv-scanner", "fingerprint": "00a505069312d7103d487bd7638a9c99a0911ebe5ff73b6b166c79ef441450db", "category": "dependency", "severity": "medium", "confidence": 0.88, "triageState": "open", "verdict": "", "isResolved": false, "reason": "", "evidence": {"match": "", "aliases": ["CVE-2026-42037"], "package": "axios", "rule_id": "GHSA-445q-vr5w-6q77", "scanner": "osv-scanner", "correlation_key": "vuln|axios|CVE-2026-42037|frontend/package-lock.json"}}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "frontend/package-lock.json"}, "region": {"startLine": 1}}}]}, {"ruleId": "GHSA-3w6x-2g7m-8v23", "level": "warning", "message": {"text": "axios: GHSA-3w6x-2g7m-8v23"}, "properties": {"repobilityId": 77475, "scanner": "osv-scanner", "fingerprint": "7d061a91029a7a62cbb0caf6705ea51b7236bfe1fdbb1158eea7311f3ba1efea", "category": "dependency", "severity": "medium", "confidence": 0.88, "triageState": "open", "verdict": "", "isResolved": false, "reason": "", "evidence": {"match": "", "aliases": ["CVE-2026-42044"], "package": "axios", "rule_id": "GHSA-3w6x-2g7m-8v23", "scanner": "osv-scanner", "correlation_key": "vuln|axios|CVE-2026-42044|frontend/package-lock.json"}}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "frontend/package-lock.json"}, "region": {"startLine": 1}}}]}, {"ruleId": "GHSA-87hc-h4r5-73f7", "level": "warning", "message": {"text": "werkzeug: GHSA-87hc-h4r5-73f7"}, "properties": {"repobilityId": 77471, "scanner": "osv-scanner", "fingerprint": "37573625e7b728f6b6adfcf703df33371c4cbd9f14e505120483041ade854359", "category": "dependency", "severity": "medium", "confidence": 0.88, "triageState": "open", "verdict": "", "isResolved": false, "reason": "", "evidence": {"match": "", "aliases": ["CVE-2026-21860"], "package": "werkzeug", "rule_id": "GHSA-87hc-h4r5-73f7", "scanner": "osv-scanner", "correlation_key": "vuln|werkzeug|CVE-2026-21860|backend/uv.lock"}}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "backend/uv.lock"}, "region": {"startLine": 1}}}]}, {"ruleId": "GHSA-29vq-49wr-vm6x", "level": "warning", "message": {"text": "werkzeug: GHSA-29vq-49wr-vm6x"}, "properties": {"repobilityId": 77470, "scanner": "osv-scanner", "fingerprint": "8f9845234054c398966ee510a2b8eb81ea7d2795467ab5433fded0f4cd08f728", "category": "dependency", "severity": "medium", "confidence": 0.88, "triageState": "open", "verdict": "", "isResolved": false, "reason": "", "evidence": {"match": "", "aliases": ["CVE-2026-27199"], "package": "werkzeug", "rule_id": "GHSA-29vq-49wr-vm6x", "scanner": "osv-scanner", "correlation_key": "vuln|werkzeug|CVE-2026-27199|backend/uv.lock"}}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "backend/uv.lock"}, "region": {"startLine": 1}}}]}, {"ruleId": "GHSA-597g-3phw-6986", "level": "warning", "message": {"text": "virtualenv: GHSA-597g-3phw-6986"}, "properties": {"repobilityId": 77469, "scanner": "osv-scanner", "fingerprint": "2d4b29fe307db47a6c7b02da5b31f760d91a20100701a90053ce06ef75c7b55e", "category": "dependency", "severity": "medium", "confidence": 0.88, "triageState": "open", "verdict": "", "isResolved": false, "reason": "", "evidence": {"match": "", "aliases": ["BIT-virtualenv-2026-22702", "CVE-2026-22702"], "package": "virtualenv", "rule_id": "GHSA-597g-3phw-6986", "scanner": "osv-scanner", "correlation_key": "vuln|virtualenv|CVE-2026-22702|backend/uv.lock"}}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "backend/uv.lock"}, "region": {"startLine": 1}}}]}, {"ruleId": "GHSA-32r8-54hf-c9p3", "level": "warning", "message": {"text": "unstructured: GHSA-32r8-54hf-c9p3"}, "properties": {"repobilityId": 77464, "scanner": "osv-scanner", "fingerprint": "b00083fa76cfe76869cb3c9c7b0b20eafadc67bca20381746e8dfd15048fb67a", "category": "dependency", "severity": "medium", "confidence": 0.88, "triageState": "open", "verdict": "", "isResolved": false, "reason": "", "evidence": {"match": "", "aliases": ["CVE-2024-46455", "GO-2024-3315"], "package": "unstructured", "rule_id": "GHSA-32r8-54hf-c9p3", "scanner": "osv-scanner", "correlation_key": "vuln|unstructured|CVE-2024-46455|backend/uv.lock"}}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "backend/uv.lock"}, "region": {"startLine": 1}}}]}, {"ruleId": "GHSA-69w3-r845-3855", "level": "warning", "message": {"text": "transformers: GHSA-69w3-r845-3855"}, "properties": {"repobilityId": 77463, "scanner": "osv-scanner", "fingerprint": "8b7c10c6fae3979e2d469b22cce5b0371d514cecefa2d92d11a4cae5fffe4130", "category": "dependency", "severity": "medium", "confidence": 0.88, "triageState": "open", "verdict": "", "isResolved": false, "reason": "", "evidence": {"match": "", "aliases": ["CVE-2026-1839"], "package": "transformers", "rule_id": "GHSA-69w3-r845-3855", "scanner": "osv-scanner", "correlation_key": "vuln|transformers|CVE-2026-1839|backend/uv.lock"}}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "backend/uv.lock"}, "region": {"startLine": 1}}}]}, {"ruleId": "GHSA-78cv-mqj4-43f7", "level": "warning", "message": {"text": "tornado: GHSA-78cv-mqj4-43f7"}, "properties": {"repobilityId": 77460, "scanner": "osv-scanner", "fingerprint": "66da91e4bc7f1961f9d7f936d817bf813e45fca64da8cb51531c0a0472335392", "category": "dependency", "severity": "medium", "confidence": 0.88, "triageState": "open", "verdict": "", "isResolved": false, "reason": "", "evidence": {"match": "", "package": "tornado", "rule_id": "GHSA-78cv-mqj4-43f7", "scanner": "osv-scanner", "correlation_key": "vuln|tornado|GHSA-78CV-MQJ4-43F7|backend/uv.lock"}}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "backend/uv.lock"}, "region": {"startLine": 1}}}]}, {"ruleId": "GHSA-gc5v-m9x4-r6x2", "level": "warning", "message": {"text": "requests: GHSA-gc5v-m9x4-r6x2"}, "properties": {"repobilityId": 77456, "scanner": "osv-scanner", "fingerprint": "73f99ca6f5e647d699bca4c5a158b6810e05d51d6a2a71b0554217d5c7110457", "category": "dependency", "severity": "medium", "confidence": 0.88, "triageState": "open", "verdict": "", "isResolved": false, "reason": "", "evidence": {"match": "", "aliases": ["CVE-2026-25645"], "package": "requests", "rule_id": "GHSA-gc5v-m9x4-r6x2", "scanner": "osv-scanner", "correlation_key": "vuln|requests|CVE-2026-25645|backend/uv.lock"}}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "backend/uv.lock"}, "region": {"startLine": 1}}}]}, {"ruleId": "GHSA-mj87-hwqh-73pj", "level": "warning", "message": {"text": "python-multipart: GHSA-mj87-hwqh-73pj"}, "properties": {"repobilityId": 77453, "scanner": "osv-scanner", "fingerprint": "dac515db1f1f73a0e97a8f38f78a31d9f3b99f5e252e4ea1111557030202dc7d", "category": "dependency", "severity": "medium", "confidence": 0.88, "triageState": "open", "verdict": "", "isResolved": false, "reason": "", "evidence": {"match": "", "aliases": ["CVE-2026-40347"], "package": "python-multipart", "rule_id": "GHSA-mj87-hwqh-73pj", "scanner": "osv-scanner", "correlation_key": "vuln|python-multipart|CVE-2026-40347|backend/uv.lock"}}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "backend/uv.lock"}, "region": {"startLine": 1}}}]}, {"ruleId": "GHSA-mf9w-mj56-hr94", "level": "warning", "message": {"text": "python-dotenv: GHSA-mf9w-mj56-hr94"}, "properties": {"repobilityId": 77452, "scanner": "osv-scanner", "fingerprint": "52da42826c85058d023955eff4d79ade7028fab970e293a84ae437d47a9faad9", "category": "dependency", "severity": "medium", "confidence": 0.88, "triageState": "open", "verdict": "", "isResolved": false, "reason": "", "evidence": {"match": "", "aliases": ["CVE-2026-28684"], "package": "python-dotenv", "rule_id": "GHSA-mf9w-mj56-hr94", "scanner": "osv-scanner", "correlation_key": "vuln|python-dotenv|CVE-2026-28684|backend/uv.lock"}}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "backend/uv.lock"}, "region": {"startLine": 1}}}]}, {"ruleId": "GHSA-6w46-j5rx-g56g", "level": "warning", "message": {"text": "pytest: GHSA-6w46-j5rx-g56g"}, "properties": {"repobilityId": 77451, "scanner": "osv-scanner", "fingerprint": "9601a91124c24f73eb51c40443265643ff0573bcd93800cc187236e875c694ac", "category": "dependency", "severity": "medium", "confidence": 0.88, "triageState": "open", "verdict": "", "isResolved": false, "reason": "", "evidence": {"match": "", "aliases": ["CVE-2025-71176"], "package": "pytest", "rule_id": "GHSA-6w46-j5rx-g56g", "scanner": "osv-scanner", "correlation_key": "vuln|pytest|CVE-2025-71176|backend/uv.lock"}}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "backend/uv.lock"}, "region": {"startLine": 1}}}]}, {"ruleId": "GHSA-x7hp-r3qg-r3cj", "level": "warning", "message": {"text": "pypdf: GHSA-x7hp-r3qg-r3cj"}, "properties": {"repobilityId": 77450, "scanner": "osv-scanner", "fingerprint": "6439a4c423cca076a87e274f854a94909db7d5c1b1e0a27c2d5c5c307821a1de", "category": "dependency", "severity": "medium", "confidence": 0.88, "triageState": "open", "verdict": "", "isResolved": false, "reason": "", "evidence": {"match": "", "aliases": ["CVE-2026-27888"], "package": "pypdf", "rule_id": "GHSA-x7hp-r3qg-r3cj", "scanner": "osv-scanner", "correlation_key": "vuln|pypdf|CVE-2026-27888|backend/uv.lock"}}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "backend/uv.lock"}, "region": {"startLine": 1}}}]}, {"ruleId": "GHSA-x284-j5p8-9c5p", "level": "warning", "message": {"text": "pypdf: GHSA-x284-j5p8-9c5p"}, "properties": {"repobilityId": 77449, "scanner": "osv-scanner", "fingerprint": "209aa52c2cff4acd5ce9be8373dcad596afe5634a02637aea482f6697f0657aa", "category": "dependency", "severity": "medium", "confidence": 0.88, "triageState": "open", "verdict": "", "isResolved": false, "reason": "", "evidence": {"match": "", "aliases": ["CVE-2026-41314"], "package": "pypdf", "rule_id": "GHSA-x284-j5p8-9c5p", "scanner": "osv-scanner", "correlation_key": "vuln|pypdf|CVE-2026-41314|backend/uv.lock"}}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "backend/uv.lock"}, "region": {"startLine": 1}}}]}, {"ruleId": "GHSA-wgvp-vg3v-2xq3", "level": "warning", "message": {"text": "pypdf: GHSA-wgvp-vg3v-2xq3"}, "properties": {"repobilityId": 77448, "scanner": "osv-scanner", "fingerprint": "9f51f9b6c5d785bbee9fa545b141bc5d8b9a7da6235cb89fc7e74e7f16f5c2ce", "category": "dependency", "severity": "medium", "confidence": 0.88, "triageState": "open", "verdict": "", "isResolved": false, "reason": "", "evidence": {"match": "", "aliases": ["CVE-2026-27025"], "package": "pypdf", "rule_id": "GHSA-wgvp-vg3v-2xq3", "scanner": "osv-scanner", "correlation_key": "vuln|pypdf|CVE-2026-27025|backend/uv.lock"}}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "backend/uv.lock"}, "region": {"startLine": 1}}}]}, {"ruleId": "GHSA-qpxp-75px-xjcp", "level": "warning", "message": {"text": "pypdf: GHSA-qpxp-75px-xjcp"}, "properties": {"repobilityId": 77447, "scanner": "osv-scanner", "fingerprint": "9200b8017f825cc1900779d8e79f640dbbc3201aa3da871fbe4f5137ba73e1a8", "category": "dependency", "severity": "medium", "confidence": 0.88, "triageState": "open", "verdict": "", "isResolved": false, "reason": "", "evidence": {"match": "", "aliases": ["CVE-2026-33123"], "package": "pypdf", "rule_id": "GHSA-qpxp-75px-xjcp", "scanner": "osv-scanner", "correlation_key": "vuln|pypdf|CVE-2026-33123|backend/uv.lock"}}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "backend/uv.lock"}, "region": {"startLine": 1}}}]}, {"ruleId": "GHSA-jj6c-8h6c-hppx", "level": "warning", "message": {"text": "pypdf: GHSA-jj6c-8h6c-hppx"}, "properties": {"repobilityId": 77446, "scanner": "osv-scanner", "fingerprint": "11e3ef8ea09d75f3180749093f2a0e8d4a35e40a1bd02019d1f69573e655ad71", "category": "dependency", "severity": "medium", "confidence": 0.88, "triageState": "open", "verdict": "", "isResolved": false, "reason": "", "evidence": {"match": "", "aliases": ["CVE-2026-41168"], "package": "pypdf", "rule_id": "GHSA-jj6c-8h6c-hppx", "scanner": "osv-scanner", "correlation_key": "vuln|pypdf|CVE-2026-41168|backend/uv.lock"}}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "backend/uv.lock"}, "region": {"startLine": 1}}}]}, {"ruleId": "GHSA-hqmh-ppp3-xvm7", "level": "warning", "message": {"text": "pypdf: GHSA-hqmh-ppp3-xvm7"}, "properties": {"repobilityId": 77445, "scanner": "osv-scanner", "fingerprint": "b084d6ef53b214b2329731e335bc4b222366aa49ba0b4f47cfbd0b0957d22e4b", "category": "dependency", "severity": "medium", "confidence": 0.88, "triageState": "open", "verdict": "", "isResolved": false, "reason": "", "evidence": {"match": "", "aliases": ["CVE-2026-31826"], "package": "pypdf", "rule_id": "GHSA-hqmh-ppp3-xvm7", "scanner": "osv-scanner", "correlation_key": "vuln|pypdf|CVE-2026-31826|backend/uv.lock"}}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "backend/uv.lock"}, "region": {"startLine": 1}}}]}, {"ruleId": "GHSA-f2v5-7jq9-h8cg", "level": "warning", "message": {"text": "pypdf: GHSA-f2v5-7jq9-h8cg"}, "properties": {"repobilityId": 77444, "scanner": "osv-scanner", "fingerprint": "f436ad3aaf9eddee9ecee9d18edb7091c5e56584e29b77a1179cee3f26493b0a", "category": "dependency", "severity": "medium", "confidence": 0.88, "triageState": "open", "verdict": "", "isResolved": false, "reason": "", "evidence": {"match": "", "aliases": ["CVE-2026-28351"], "package": "pypdf", "rule_id": "GHSA-f2v5-7jq9-h8cg", "scanner": "osv-scanner", "correlation_key": "vuln|pypdf|CVE-2026-28351|backend/uv.lock"}}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "backend/uv.lock"}, "region": {"startLine": 1}}}]}, {"ruleId": "GHSA-9mvc-8737-8j8h", "level": "warning", "message": {"text": "pypdf: GHSA-9mvc-8737-8j8h"}, "properties": {"repobilityId": 77443, "scanner": "osv-scanner", "fingerprint": "c04ddf961ab536f8e6e69e9b97d622fdc33d167fb560ff917a563063789df2c9", "category": "dependency", "severity": "medium", "confidence": 0.88, "triageState": "open", "verdict": "", "isResolved": false, "reason": "", "evidence": {"match": "", "aliases": ["CVE-2026-27026"], "package": "pypdf", "rule_id": "GHSA-9mvc-8737-8j8h", "scanner": "osv-scanner", "correlation_key": "vuln|pypdf|CVE-2026-27026|backend/uv.lock"}}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "backend/uv.lock"}, "region": {"startLine": 1}}}]}, {"ruleId": "GHSA-9m86-7pmv-2852", "level": "warning", "message": {"text": "pypdf: GHSA-9m86-7pmv-2852"}, "properties": {"repobilityId": 77442, "scanner": "osv-scanner", "fingerprint": "9557aa464fd0ebde16919b3e3dfd2357e401afa9961bbcc5ab881330d59e4b41", "category": "dependency", "severity": "medium", "confidence": 0.88, "triageState": "open", "verdict": "", "isResolved": false, "reason": "", "evidence": {"match": "", "aliases": ["CVE-2026-28804"], "package": "pypdf", "rule_id": "GHSA-9m86-7pmv-2852", "scanner": "osv-scanner", "correlation_key": "vuln|pypdf|CVE-2026-28804|backend/uv.lock"}}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "backend/uv.lock"}, "region": {"startLine": 1}}}]}, {"ruleId": "GHSA-996q-pr4m-cvgq", "level": "warning", "message": {"text": "pypdf: GHSA-996q-pr4m-cvgq"}, "properties": {"repobilityId": 77441, "scanner": "osv-scanner", "fingerprint": "f37faf4cadb56397c887641cf06efec022e448e2715d2d29d888d462b4978fe9", "category": "dependency", "severity": "medium", "confidence": 0.88, "triageState": "open", "verdict": "", "isResolved": false, "reason": "", "evidence": {"match": "", "aliases": ["CVE-2026-27024"], "package": "pypdf", "rule_id": "GHSA-996q-pr4m-cvgq", "scanner": "osv-scanner", "correlation_key": "vuln|pypdf|CVE-2026-27024|backend/uv.lock"}}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "backend/uv.lock"}, "region": {"startLine": 1}}}]}, {"ruleId": "GHSA-87mj-5ggw-8qc3", "level": "warning", "message": {"text": "pypdf: GHSA-87mj-5ggw-8qc3"}, "properties": {"repobilityId": 77440, "scanner": "osv-scanner", "fingerprint": "f8995b6792848f74193af2ad86b389bddc8a0d6a19d6fcd62b6ab738b474fba5", "category": "dependency", "severity": "medium", "confidence": 0.88, "triageState": "open", "verdict": "", "isResolved": false, "reason": "", "evidence": {"match": "", "aliases": ["CVE-2026-33699"], "package": "pypdf", "rule_id": "GHSA-87mj-5ggw-8qc3", "scanner": "osv-scanner", "correlation_key": "vuln|pypdf|CVE-2026-33699|backend/uv.lock"}}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "backend/uv.lock"}, "region": {"startLine": 1}}}]}, {"ruleId": "GHSA-7gw9-cf7v-778f", "level": "warning", "message": {"text": "pypdf: GHSA-7gw9-cf7v-778f"}, "properties": {"repobilityId": 77439, "scanner": "osv-scanner", "fingerprint": "f16c182815ad4278592558628c6b3c6136ecfb80e3e5c802b38ef15d53a5824a", "category": "dependency", "severity": "medium", "confidence": 0.88, "triageState": "open", "verdict": "", "isResolved": false, "reason": "", "evidence": {"match": "", "aliases": ["CVE-2026-41312"], "package": "pypdf", "rule_id": "GHSA-7gw9-cf7v-778f", "scanner": "osv-scanner", "correlation_key": "vuln|pypdf|CVE-2026-41312|backend/uv.lock"}}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "backend/uv.lock"}, "region": {"startLine": 1}}}]}, {"ruleId": "GHSA-4pxv-j86v-mhcw", "level": "warning", "message": {"text": "pypdf: GHSA-4pxv-j86v-mhcw"}, "properties": {"repobilityId": 77437, "scanner": "osv-scanner", "fingerprint": "795b0d690d650e87f80ab3c169e093a1e9be2680437b324ddb327eb8b205efc8", "category": "dependency", "severity": "medium", "confidence": 0.88, "triageState": "open", "verdict": "", "isResolved": false, "reason": "", "evidence": {"match": "", "aliases": ["CVE-2026-41313"], "package": "pypdf", "rule_id": "GHSA-4pxv-j86v-mhcw", "scanner": "osv-scanner", "correlation_key": "vuln|pypdf|CVE-2026-41313|backend/uv.lock"}}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "backend/uv.lock"}, "region": {"startLine": 1}}}]}, {"ruleId": "GHSA-3crg-w4f6-42mx", "level": "warning", "message": {"text": "pypdf: GHSA-3crg-w4f6-42mx"}, "properties": {"repobilityId": 77435, "scanner": "osv-scanner", "fingerprint": "d5ca1f913e4af6d3e384067e5c9a36acc4306d79dceae99e5fea6f28513cdbbd", "category": "dependency", "severity": "medium", "confidence": 0.88, "triageState": "open", "verdict": "", "isResolved": false, "reason": "", "evidence": {"match": "", "aliases": ["CVE-2026-40260"], "package": "pypdf", "rule_id": "GHSA-3crg-w4f6-42mx", "scanner": "osv-scanner", "correlation_key": "vuln|pypdf|CVE-2026-40260|backend/uv.lock"}}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "backend/uv.lock"}, "region": {"startLine": 1}}}]}, {"ruleId": "GHSA-2q4j-m29v-hq73", "level": "warning", "message": {"text": "pypdf: GHSA-2q4j-m29v-hq73"}, "properties": {"repobilityId": 77433, "scanner": "osv-scanner", "fingerprint": "b8f301da29330ccb8989ec60df942148f3a1f29d01d7c67dac541075ff73a48b", "category": "dependency", "severity": "medium", "confidence": 0.88, "triageState": "open", "verdict": "", "isResolved": false, "reason": "", "evidence": {"match": "", "aliases": ["CVE-2026-24688"], "package": "pypdf", "rule_id": "GHSA-2q4j-m29v-hq73", "scanner": "osv-scanner", "correlation_key": "vuln|pypdf|CVE-2026-24688|backend/uv.lock"}}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "backend/uv.lock"}, "region": {"startLine": 1}}}]}, {"ruleId": "GHSA-r73j-pqj5-w3x7", "level": "warning", "message": {"text": "pillow: GHSA-r73j-pqj5-w3x7"}, "properties": {"repobilityId": 77423, "scanner": "osv-scanner", "fingerprint": "a89b45f72f6a6ade2425344a2b4523d9305f265e6d8203e4a4aa249dec5355e9", "category": "dependency", "severity": "medium", "confidence": 0.88, "triageState": "open", "verdict": "", "isResolved": false, "reason": "", "evidence": {"match": "", "aliases": ["BIT-pillow-2026-42310", "CVE-2026-42310"], "package": "pillow", "rule_id": "GHSA-r73j-pqj5-w3x7", "scanner": "osv-scanner", "correlation_key": "vuln|pillow|CVE-2026-42310|backend/uv.lock"}}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "backend/uv.lock"}, "region": {"startLine": 1}}}]}, {"ruleId": "GHSA-rf74-v2fm-23pw", "level": "warning", "message": {"text": "nltk: GHSA-rf74-v2fm-23pw"}, "properties": {"repobilityId": 77419, "scanner": "osv-scanner", "fingerprint": "0422bc2ce8e30f079a701c7b152d11037fac23206197b4e75579700c41bdcac8", "category": "dependency", "severity": "medium", "confidence": 0.88, "triageState": "open", "verdict": "", "isResolved": false, "reason": "", "evidence": {"match": "", "package": "nltk", "rule_id": "GHSA-rf74-v2fm-23pw", "scanner": "osv-scanner", "correlation_key": "vuln|nltk|GHSA-RF74-V2FM-23PW|backend/uv.lock"}}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "backend/uv.lock"}, "region": {"startLine": 1}}}]}, {"ruleId": "GHSA-gfwx-w7gr-fvh7", "level": "warning", "message": {"text": "nltk: GHSA-gfwx-w7gr-fvh7"}, "properties": {"repobilityId": 77417, "scanner": "osv-scanner", "fingerprint": "d4105ab7a0823114615f1dc224503c817f9d5b8df87c6600ae03faabd3f32679", "category": "dependency", "severity": "medium", "confidence": 0.88, "triageState": "open", "verdict": "", "isResolved": false, "reason": "", "evidence": {"match": "", "aliases": ["CVE-2026-33230"], "package": "nltk", "rule_id": "GHSA-gfwx-w7gr-fvh7", "scanner": "osv-scanner", "correlation_key": "vuln|nltk|CVE-2026-33230|backend/uv.lock"}}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "backend/uv.lock"}, "region": {"startLine": 1}}}]}, {"ruleId": "GHSA-7jqv-fw35-gmx9", "level": "warning", "message": {"text": "nbconvert: GHSA-7jqv-fw35-gmx9"}, "properties": {"repobilityId": 77410, "scanner": "osv-scanner", "fingerprint": "b7d9c6343e0425ee94db371210dd893efd405de1897893922310f6d124a00e4f", "category": "dependency", "severity": "medium", "confidence": 0.88, "triageState": "open", "verdict": "", "isResolved": false, "reason": "", "evidence": {"match": "", "aliases": ["CVE-2026-39378"], "package": "nbconvert", "rule_id": "GHSA-7jqv-fw35-gmx9", "scanner": "osv-scanner", "correlation_key": "vuln|nbconvert|CVE-2026-39378|backend/uv.lock"}}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "backend/uv.lock"}, "region": {"startLine": 1}}}]}, {"ruleId": "GHSA-4c99-qj7h-p3vg", "level": "warning", "message": {"text": "nbconvert: GHSA-4c99-qj7h-p3vg"}, "properties": {"repobilityId": 77409, "scanner": "osv-scanner", "fingerprint": "d219a994deec2280b44e37d4bfe8ed4291ecfd263177ffb02021a58c040eaa3b", "category": "dependency", "severity": "medium", "confidence": 0.88, "triageState": "open", "verdict": "", "isResolved": false, "reason": "", "evidence": {"match": "", "aliases": ["CVE-2026-39377"], "package": "nbconvert", "rule_id": "GHSA-4c99-qj7h-p3vg", "scanner": "osv-scanner", "correlation_key": "vuln|nbconvert|CVE-2026-39377|backend/uv.lock"}}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "backend/uv.lock"}, "region": {"startLine": 1}}}]}, {"ruleId": "GHSA-v87v-83h2-53w7", "level": "warning", "message": {"text": "mistune: GHSA-v87v-83h2-53w7"}, "properties": {"repobilityId": 77408, "scanner": "osv-scanner", "fingerprint": "0f69c46e7159bd952a5f2c21162b8515a627ed47d382b448f38945a7018c67b5", "category": "dependency", "severity": "medium", "confidence": 0.88, "triageState": "open", "verdict": "", "isResolved": false, "reason": "", "evidence": {"match": "", "aliases": ["CVE-2026-44897"], "package": "mistune", "rule_id": "GHSA-v87v-83h2-53w7", "scanner": "osv-scanner", "correlation_key": "vuln|mistune|CVE-2026-44897|backend/uv.lock"}}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "backend/uv.lock"}, "region": {"startLine": 1}}}]}, {"ruleId": "GHSA-8g87-j6q8-g93x", "level": "warning", "message": {"text": "mistune: GHSA-8g87-j6q8-g93x"}, "properties": {"repobilityId": 77406, "scanner": "osv-scanner", "fingerprint": "19f97c6c8dfc3e28ece5ce146167a5f3017cf63f5d146045aa421054cd949816", "category": "dependency", "severity": "medium", "confidence": 0.88, "triageState": "open", "verdict": "", "isResolved": false, "reason": "", "evidence": {"match": "", "aliases": ["CVE-2026-44708"], "package": "mistune", "rule_id": "GHSA-8g87-j6q8-g93x", "scanner": "osv-scanner", "correlation_key": "vuln|mistune|CVE-2026-44708|backend/uv.lock"}}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "backend/uv.lock"}, "region": {"startLine": 1}}}]}, {"ruleId": "GHSA-428g-f7cq-pgp5", "level": "warning", "message": {"text": "marshmallow: GHSA-428g-f7cq-pgp5"}, "properties": {"repobilityId": 77404, "scanner": "osv-scanner", "fingerprint": "950f6af3f3832a87ae588e7442119966a6fa32ce4363fd6e55052bb5d105a528", "category": "dependency", "severity": "medium", "confidence": 0.88, "triageState": "open", "verdict": "", "isResolved": false, "reason": "", "evidence": {"match": "", "aliases": ["CVE-2025-68480"], "package": "marshmallow", "rule_id": "GHSA-428g-f7cq-pgp5", "scanner": "osv-scanner", "correlation_key": "vuln|marshmallow|CVE-2025-68480|backend/uv.lock"}}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "backend/uv.lock"}, "region": {"startLine": 1}}}]}, {"ruleId": "GHSA-65pc-fj4g-8rjx", "level": "warning", "message": {"text": "idna: GHSA-65pc-fj4g-8rjx"}, "properties": {"repobilityId": 77402, "scanner": "osv-scanner", "fingerprint": "e18495083fca116066cc632c8247ff6844df56daa69247b4e60cb61e813689b8", "category": "dependency", "severity": "medium", "confidence": 0.88, "triageState": "open", "verdict": "", "isResolved": false, "reason": "", "evidence": {"match": "", "aliases": ["CVE-2026-45409"], "package": "idna", "rule_id": "GHSA-65pc-fj4g-8rjx", "scanner": "osv-scanner", "correlation_key": "vuln|idna|CVE-2024-3651|backend/uv.lock"}}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "backend/uv.lock"}, "region": {"startLine": 1}}}]}, {"ruleId": "GHSA-qmgc-5h2g-mvrw", "level": "warning", "message": {"text": "filelock: GHSA-qmgc-5h2g-mvrw"}, "properties": {"repobilityId": 77400, "scanner": "osv-scanner", "fingerprint": "d427c81a92eaf7df48a9e81b25b6b13121852c2969ee8b550927da8302f74fef", "category": "dependency", "severity": "medium", "confidence": 0.88, "triageState": "open", "verdict": "", "isResolved": false, "reason": "", "evidence": {"match": "", "aliases": ["CVE-2026-22701"], "package": "filelock", "rule_id": "GHSA-qmgc-5h2g-mvrw", "scanner": "osv-scanner", "correlation_key": "vuln|filelock|CVE-2026-22701|backend/uv.lock"}}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "backend/uv.lock"}, "region": {"startLine": 1}}}]}, {"ruleId": "GHSA-mf9w-mj56-hr94", "level": "warning", "message": {"text": "python-dotenv: GHSA-mf9w-mj56-hr94"}, "properties": {"repobilityId": 77396, "scanner": "osv-scanner", "fingerprint": "55cb3d4b49c716c84575437c334884579a8bc32d5ff5bc5041b0075681bebef1", "category": "dependency", "severity": "medium", "confidence": 0.88, "triageState": "open", "verdict": "", "isResolved": false, "reason": "", "evidence": {"match": "", "aliases": ["CVE-2026-28684"], "package": "python-dotenv", "rule_id": "GHSA-mf9w-mj56-hr94", "scanner": "osv-scanner", "correlation_key": "vuln|python-dotenv|CVE-2026-28684|backend/requirements.txt"}}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "backend/requirements.txt"}, "region": {"startLine": 1}}}]}, {"ruleId": "GHSA-mr82-8j83-vxmv", "level": "warning", "message": {"text": "pydantic: GHSA-mr82-8j83-vxmv"}, "properties": {"repobilityId": 77395, "scanner": "osv-scanner", "fingerprint": "567fea158e4f591d35fb949e619dce953443bf65b3d38ca0541f868cf423e998", "category": "dependency", "severity": "medium", "confidence": 0.88, "triageState": "open", "verdict": "", "isResolved": false, "reason": "", "evidence": {"match": "", "aliases": ["CVE-2024-3772"], "package": "pydantic", "rule_id": "GHSA-mr82-8j83-vxmv", "scanner": "osv-scanner", "correlation_key": "vuln|pydantic|CVE-2024-3772|backend/requirements.txt"}}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "backend/requirements.txt"}, "region": {"startLine": 1}}}]}, {"ruleId": "DKR003", "level": "warning", "message": {"text": "Compose service `mirofish` image uses the latest tag"}, "properties": {"repobilityId": 77391, "scanner": "repobility-docker", "fingerprint": "382dd2dfda3cbeab5b3d584b7b77695601282320aadb9c72a86cd44e45a1b44f", "category": "docker", "severity": "medium", "confidence": 0.94, "triageState": "open", "verdict": "confirmed", "isResolved": false, "reason": "Image tag is latest.", "evidence": {"image": "ghcr.io/666ghj/mirofish:latest", "rule_id": "DKR003", "scanner": "repobility-docker", "references": ["https://docs.docker.com/develop/develop-images/dockerfile_best-practices/", "https://docs.docker.com/scout/policy/", "https://github.com/hadolint/hadolint"], "correlation_key": "fp|382dd2dfda3cbeab5b3d584b7b77695601282320aadb9c72a86cd44e45a1b44f"}}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "docker-compose.yml"}, "region": {"startLine": 1}}}]}, {"ruleId": "DKR001", "level": "warning", "message": {"text": "Docker final stage has no non-root USER"}, "properties": {"repobilityId": 77389, "scanner": "repobility-docker", "fingerprint": "bbddb30f89178c7f394f661014c4463818fa0d7143e3346dcf37c2b53e571e10", "category": "docker", "severity": "medium", "confidence": 0.82, "triageState": "open", "verdict": "likely", "isResolved": false, "reason": "No USER directive was found in the final runtime stage.", "evidence": {"rule_id": "DKR001", "scanner": "repobility-docker", "final_base": "python:3.11", "references": ["https://docs.docker.com/develop/develop-images/dockerfile_best-practices/", "https://cheatsheetseries.owasp.org/cheatsheets/Docker_Security_Cheat_Sheet.html", "https://github.com/hadolint/hadolint"], "correlation_key": "fp|bbddb30f89178c7f394f661014c4463818fa0d7143e3346dcf37c2b53e571e10"}}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "Dockerfile"}, "region": {"startLine": 1}}}]}, {"ruleId": "DKR014", "level": "warning", "message": {"text": "Dockerfile copies broad context with incomplete .dockerignore"}, "properties": {"repobilityId": 77388, "scanner": "repobility-docker", "fingerprint": "4cecc797fb50fa4bacc33cb71a80d0a5320ef9b8e38a410a164d494234c41be8", "category": "docker", "severity": "medium", "confidence": 0.76, "triageState": "open", "verdict": "likely", "isResolved": false, "reason": "Broad context copy found and .dockerignore misses sensitive defaults.", "evidence": {"rule_id": "DKR014", "scanner": "repobility-docker", "references": ["https://docs.docker.com/develop/develop-images/dockerfile_best-practices/"], "correlation_key": "fp|4cecc797fb50fa4bacc33cb71a80d0a5320ef9b8e38a410a164d494234c41be8", "missing_patterns": ["id_rsa", "*.pem", "*.key"]}}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "Dockerfile"}, "region": {"startLine": 24}}}]}, {"ruleId": "ERR001", "level": "warning", "message": {"text": "[ERR001] Silent Exception Swallowing: Silently swallowing all exceptions hides bugs. Even in cleanup code, log at DEBUG level."}, "properties": {"repobilityId": 77386, "scanner": "repobility-threat-engine", "fingerprint": "85a750c58d6b0480e608aa55f60e106677eac4d0bd36b8981c00561577a24c10", "category": "error_handling", "severity": "medium", "confidence": 1.0, "triageState": "open", "verdict": "confirmed", "isResolved": false, "reason": "Pattern matched with no mitigating context found", "evidence": {"match": "except Exception:\n        pass", "reason": "Pattern matched with no mitigating context found", "rule_id": "ERR001", "scanner": "repobility-threat-engine", "confidence": 1.0, "correlation_key": "fp|85a750c58d6b0480e608aa55f60e106677eac4d0bd36b8981c00561577a24c10"}}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "backend/app/utils/file_parser.py"}, "region": {"startLine": 42}}}]}, {"ruleId": "SEC034", "level": "warning", "message": {"text": "[SEC034] Log Injection / Log Forging \u2014 unsanitized user input in log: User input is logged without sanitizing newlines or control characters. Attackers inject `\\n` to forge fake log entries, hide tracks, or exploit downstream log parsers (SIEM, splunk). Combined with template injection this can escalate to RCE (CVE-2021-44228 log4shell). CWE-117."}, "properties": {"repobilityId": 77371, "scanner": "repobility-threat-engine", "fingerprint": "48f7a8874322a39410be4c4f61b2a9c5adf5ed626321715ec882e9a6e8bc4de7", "category": "log_injection", "severity": "medium", "confidence": 1.0, "triageState": "open", "verdict": "confirmed", "isResolved": false, "reason": "Pattern matched with no mitigating context found", "evidence": {"match": "logger.debug(f\"\u8bf7\u6c42: {request.method} {req", "reason": "Pattern matched with no mitigating context found", "rule_id": "SEC034", "scanner": "repobility-threat-engine", "confidence": 1.0, "correlation_key": "fp|48f7a8874322a39410be4c4f61b2a9c5adf5ed626321715ec882e9a6e8bc4de7"}}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "backend/app/__init__.py"}, "region": {"startLine": 55}}}]}, {"ruleId": "DEPCUR-GHA", "level": "warning", "message": {"text": "GitHub Action `actions/checkout@v4` is 2 major version(s) behind (latest v6.0.3)"}, "properties": {"repobilityId": 77370, "scanner": "repobility-dependency-currency", "fingerprint": "26cae7b69da6d0203b33ff1b41f56380ed6b9ab6d7068aa87c8f4e61db95bd3e", "category": "dependency", "severity": "medium", "confidence": 0.9, "triageState": "open", "verdict": "", "isResolved": false, "reason": "", "evidence": {"gap": "2 major version(s) behind", "signal": "currency", "cwe_ids": ["CWE-1104"], "package": "actions/checkout", "scanner": "repobility-dependency-currency", "ecosystem": "github-actions", "languages": ["yaml"], "latest_version": "v6.0.3", "correlation_key": "fp|26cae7b69da6d0203b33ff1b41f56380ed6b9ab6d7068aa87c8f4e61db95bd3e", "current_version": "v4"}}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": ".github/workflows/docker-image.yml"}, "region": {"startLine": 17}}}]}, {"ruleId": "DEPCUR-NPM", "level": "warning", "message": {"text": "npm package `vue-router` is 1 major version(s) behind (4.6.3 -> 5.1.0)"}, "properties": {"repobilityId": 77368, "scanner": "repobility-dependency-currency", "fingerprint": "8b9441874cbcc0dc496d7d002b9d8922a32ac3708b68db3ee4b6aff50ae353b2", "category": "dependency", "severity": "medium", "confidence": 0.9, "triageState": "open", "verdict": "", "isResolved": false, "reason": "", "evidence": {"gap": "1 major version(s) behind", "signal": "currency", "cwe_ids": [], "package": "vue-router", "scanner": "repobility-dependency-currency", "ecosystem": "npm", "languages": ["javascript"], "latest_version": "5.1.0", "correlation_key": "fp|8b9441874cbcc0dc496d7d002b9d8922a32ac3708b68db3ee4b6aff50ae353b2", "current_version": "4.6.3"}}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "frontend/package.json"}, "region": {"startLine": 1}}}]}, {"ruleId": "DEPCUR-NPM", "level": "warning", "message": {"text": "npm package `concurrently` is 1 major version(s) behind (9.2.1 -> 10.0.3)"}, "properties": {"repobilityId": 77363, "scanner": "repobility-dependency-currency", "fingerprint": "2757b27dca2ffebfb2257764c2b15532b9648fc1f7633684da4376786a056d8f", "category": "dependency", "severity": "medium", "confidence": 0.9, "triageState": "open", "verdict": "", "isResolved": false, "reason": "", "evidence": {"gap": "1 major version(s) behind", "signal": "currency", "cwe_ids": [], "package": "concurrently", "scanner": "repobility-dependency-currency", "ecosystem": "npm", "languages": ["javascript"], "latest_version": "10.0.3", "correlation_key": "fp|2757b27dca2ffebfb2257764c2b15532b9648fc1f7633684da4376786a056d8f", "current_version": "9.2.1"}}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "package.json"}, "region": {"startLine": 1}}}]}, {"ruleId": "MINED111", "level": "warning", "message": {"text": "Bare except continues silently"}, "properties": {"repobilityId": 77359, "scanner": "repobility-ast-engine", "fingerprint": "8b8079dea8118079720e65862a7156e1289af0d69b14655d07eb638a4ca5b07f", "category": "quality", "severity": "medium", "confidence": 1.0, "triageState": "open", "verdict": "", "isResolved": false, "reason": "", "evidence": {"mined": true, "mining": {"slug": "bare-except-without-pass", "owasp": null, "cwe_ids": [], "languages": ["python"], "observations_count": 21610}, "scanner": "repobility-ast-engine", "correlation_key": "fp|8b8079dea8118079720e65862a7156e1289af0d69b14655d07eb638a4ca5b07f"}}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "backend/app/services/simulation_runner.py"}, "region": {"startLine": 1168}}}]}, {"ruleId": "MINED111", "level": "warning", "message": {"text": "Bare except continues silently"}, "properties": {"repobilityId": 77358, "scanner": "repobility-ast-engine", "fingerprint": "02c0e5f2e4137e751172dffc2adff4b12e14e6a25100f7d227aaf1f0811b182b", "category": "quality", "severity": "medium", "confidence": 1.0, "triageState": "open", "verdict": "", "isResolved": false, "reason": "", "evidence": {"mined": true, "mining": {"slug": "bare-except-without-pass", "owasp": null, "cwe_ids": [], "languages": ["python"], "observations_count": 21610}, "scanner": "repobility-ast-engine", "correlation_key": "fp|02c0e5f2e4137e751172dffc2adff4b12e14e6a25100f7d227aaf1f0811b182b"}}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "backend/app/services/simulation_runner.py"}, "region": {"startLine": 803}}}]}, {"ruleId": "MINED111", "level": "warning", "message": {"text": "Bare except continues silently"}, "properties": {"repobilityId": 77357, "scanner": "repobility-ast-engine", "fingerprint": "c4d7bebb0a1994656f3ce8a18c32013ad1fb743370c5b33bc1a40f75eb293a57", "category": "quality", "severity": "medium", "confidence": 1.0, "triageState": "open", "verdict": "", "isResolved": false, "reason": "", "evidence": {"mined": true, "mining": {"slug": "bare-except-without-pass", "owasp": null, "cwe_ids": [], "languages": ["python"], "observations_count": 21610}, "scanner": "repobility-ast-engine", "correlation_key": "fp|c4d7bebb0a1994656f3ce8a18c32013ad1fb743370c5b33bc1a40f75eb293a57"}}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "backend/app/services/simulation_runner.py"}, "region": {"startLine": 1156}}}]}, {"ruleId": "MINED111", "level": "warning", "message": {"text": "Bare except continues silently"}, "properties": {"repobilityId": 77356, "scanner": "repobility-ast-engine", "fingerprint": "5cdb13953faf15f4226130f48315cbd5fafa3da4d7a16193018b73c0f8824a3a", "category": "quality", "severity": "medium", "confidence": 1.0, "triageState": "open", "verdict": "", "isResolved": false, "reason": "", "evidence": {"mined": true, "mining": {"slug": "bare-except-without-pass", "owasp": null, "cwe_ids": [], "languages": ["python"], "observations_count": 21610}, "scanner": "repobility-ast-engine", "correlation_key": "fp|5cdb13953faf15f4226130f48315cbd5fafa3da4d7a16193018b73c0f8824a3a"}}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "backend/app/services/simulation_config_generator.py"}, "region": {"startLine": 524}}}]}, {"ruleId": "MINED111", "level": "warning", "message": {"text": "Bare except continues silently"}, "properties": {"repobilityId": 77355, "scanner": "repobility-ast-engine", "fingerprint": "7f06dc53fbcba5263780a9ce35ab28f0cbad49c5c4d17713c9c82c2421105096", "category": "quality", "severity": "medium", "confidence": 1.0, "triageState": "open", "verdict": "", "isResolved": false, "reason": "", "evidence": {"mined": true, "mining": {"slug": "bare-except-without-pass", "owasp": null, "cwe_ids": [], "languages": ["python"], "observations_count": 21610}, "scanner": "repobility-ast-engine", "correlation_key": "fp|7f06dc53fbcba5263780a9ce35ab28f0cbad49c5c4d17713c9c82c2421105096"}}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "backend/scripts/run_reddit_simulation.py"}, "region": {"startLine": 615}}}]}, {"ruleId": "MINED111", "level": "warning", "message": {"text": "Bare except continues silently"}, "properties": {"repobilityId": 77354, "scanner": "repobility-ast-engine", "fingerprint": "81285c6ebbc8c5a0ca1018a9c0ef46bf222e44199dc41df9d95f92243ee9cf8b", "category": "quality", "severity": "medium", "confidence": 1.0, "triageState": "open", "verdict": "", "isResolved": false, "reason": "", "evidence": {"mined": true, "mining": {"slug": "bare-except-without-pass", "owasp": null, "cwe_ids": [], "languages": ["python"], "observations_count": 21610}, "scanner": "repobility-ast-engine", "correlation_key": "fp|81285c6ebbc8c5a0ca1018a9c0ef46bf222e44199dc41df9d95f92243ee9cf8b"}}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "backend/scripts/run_reddit_simulation.py"}, "region": {"startLine": 271}}}]}, {"ruleId": "MINED111", "level": "warning", "message": {"text": "Bare except continues silently"}, "properties": {"repobilityId": 77353, "scanner": "repobility-ast-engine", "fingerprint": "93ed23f868bb473e09381ae9135dd42d180e3e2d46fe2e1328e9c12cda61beed", "category": "quality", "severity": "medium", "confidence": 1.0, "triageState": "open", "verdict": "", "isResolved": false, "reason": "", "evidence": {"mined": true, "mining": {"slug": "bare-except-without-pass", "owasp": null, "cwe_ids": [], "languages": ["python"], "observations_count": 21610}, "scanner": "repobility-ast-engine", "correlation_key": "fp|93ed23f868bb473e09381ae9135dd42d180e3e2d46fe2e1328e9c12cda61beed"}}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "backend/scripts/run_reddit_simulation.py"}, "region": {"startLine": 682}}}]}, {"ruleId": "MINED111", "level": "warning", "message": {"text": "Bare except continues silently"}, "properties": {"repobilityId": 77352, "scanner": "repobility-ast-engine", "fingerprint": "57bd42788b4c33fff67090c500a0cb323166abb8bd3bdf28c2282688dd587af3", "category": "quality", "severity": "medium", "confidence": 1.0, "triageState": "open", "verdict": "", "isResolved": false, "reason": "", "evidence": {"mined": true, "mining": {"slug": "bare-except-without-pass", "owasp": null, "cwe_ids": [], "languages": ["python"], "observations_count": 21610}, "scanner": "repobility-ast-engine", "correlation_key": "fp|57bd42788b4c33fff67090c500a0cb323166abb8bd3bdf28c2282688dd587af3"}}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "backend/scripts/run_reddit_simulation.py"}, "region": {"startLine": 338}}}]}, {"ruleId": "MINED111", "level": "warning", "message": {"text": "Bare except continues silently"}, "properties": {"repobilityId": 77351, "scanner": "repobility-ast-engine", "fingerprint": "2632a87e63146aaaceaff272edebfbed7b1d4db086cb48d4c07b679b35935ec1", "category": "quality", "severity": "medium", "confidence": 1.0, "triageState": "open", "verdict": "", "isResolved": false, "reason": "", "evidence": {"mined": true, "mining": {"slug": "bare-except-without-pass", "owasp": null, "cwe_ids": [], "languages": ["python"], "observations_count": 21610}, "scanner": "repobility-ast-engine", "correlation_key": "fp|2632a87e63146aaaceaff272edebfbed7b1d4db086cb48d4c07b679b35935ec1"}}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "backend/scripts/run_reddit_simulation.py"}, "region": {"startLine": 294}}}]}, {"ruleId": "MINED111", "level": "warning", "message": {"text": "Bare except continues silently"}, "properties": {"repobilityId": 77350, "scanner": "repobility-ast-engine", "fingerprint": "87a240831e2ef763f8b4d3fe170afda1d27b16ef8d16879342346020d861f23b", "category": "quality", "severity": "medium", "confidence": 1.0, "triageState": "open", "verdict": "", "isResolved": false, "reason": "", "evidence": {"mined": true, "mining": {"slug": "bare-except-without-pass", "owasp": null, "cwe_ids": [], "languages": ["python"], "observations_count": 21610}, "scanner": "repobility-ast-engine", "correlation_key": "fp|87a240831e2ef763f8b4d3fe170afda1d27b16ef8d16879342346020d861f23b"}}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "backend/scripts/run_reddit_simulation.py"}, "region": {"startLine": 242}}}]}, {"ruleId": "MINED111", "level": "warning", "message": {"text": "Bare except continues silently"}, "properties": {"repobilityId": 77349, "scanner": "repobility-ast-engine", "fingerprint": "e72cb5ea9424fd2d1defcbda4648e5f257ca7b945b81f8169dc23348bab57839", "category": "quality", "severity": "medium", "confidence": 1.0, "triageState": "open", "verdict": "", "isResolved": false, "reason": "", "evidence": {"mined": true, "mining": {"slug": "bare-except-without-pass", "owasp": null, "cwe_ids": [], "languages": ["python"], "observations_count": 21610}, "scanner": "repobility-ast-engine", "correlation_key": "fp|e72cb5ea9424fd2d1defcbda4648e5f257ca7b945b81f8169dc23348bab57839"}}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "backend/scripts/run_parallel_simulation.py"}, "region": {"startLine": 492}}}]}, {"ruleId": "MINED111", "level": "warning", "message": {"text": "Bare except continues silently"}, "properties": {"repobilityId": 77348, "scanner": "repobility-ast-engine", "fingerprint": "9f268251c38d812a39adec9c5dcf0732f1d4892aa8183655af5f261a47e2b543", "category": "quality", "severity": "medium", "confidence": 1.0, "triageState": "open", "verdict": "", "isResolved": false, "reason": "", "evidence": {"mined": true, "mining": {"slug": "bare-except-without-pass", "owasp": null, "cwe_ids": [], "languages": ["python"], "observations_count": 21610}, "scanner": "repobility-ast-engine", "correlation_key": "fp|9f268251c38d812a39adec9c5dcf0732f1d4892aa8183655af5f261a47e2b543"}}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "backend/scripts/run_parallel_simulation.py"}, "region": {"startLine": 465}}}]}, {"ruleId": "MINED111", "level": "warning", "message": {"text": "Bare except continues silently"}, "properties": {"repobilityId": 77347, "scanner": "repobility-ast-engine", "fingerprint": "9300041cee79f9e1b433f347307613280dd81ec85164b1759e8822f6bd59fb74", "category": "quality", "severity": "medium", "confidence": 1.0, "triageState": "open", "verdict": "", "isResolved": false, "reason": "", "evidence": {"mined": true, "mining": {"slug": "bare-except-without-pass", "owasp": null, "cwe_ids": [], "languages": ["python"], "observations_count": 21610}, "scanner": "repobility-ast-engine", "correlation_key": "fp|9300041cee79f9e1b433f347307613280dd81ec85164b1759e8822f6bd59fb74"}}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "backend/scripts/run_parallel_simulation.py"}, "region": {"startLine": 503}}}]}, {"ruleId": "MINED111", "level": "warning", "message": {"text": "Bare except continues silently"}, "properties": {"repobilityId": 77346, "scanner": "repobility-ast-engine", "fingerprint": "7ae1c67f1dfeb8fdf12fa867a22cb72aece188a67246df89000ce8e1b1cdab83", "category": "quality", "severity": "medium", "confidence": 1.0, "triageState": "open", "verdict": "", "isResolved": false, "reason": "", "evidence": {"mined": true, "mining": {"slug": "bare-except-without-pass", "owasp": null, "cwe_ids": [], "languages": ["python"], "observations_count": 21610}, "scanner": "repobility-ast-engine", "correlation_key": "fp|7ae1c67f1dfeb8fdf12fa867a22cb72aece188a67246df89000ce8e1b1cdab83"}}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "backend/scripts/run_parallel_simulation.py"}, "region": {"startLine": 476}}}]}, {"ruleId": "MINED111", "level": "warning", "message": {"text": "Bare except continues silently"}, "properties": {"repobilityId": 77345, "scanner": "repobility-ast-engine", "fingerprint": "a25318b6713afd7f2b7f37178e1368cb52a6370d61d975b5941a088d81e378c3", "category": "quality", "severity": "medium", "confidence": 1.0, "triageState": "open", "verdict": "", "isResolved": false, "reason": "", "evidence": {"mined": true, "mining": {"slug": "bare-except-without-pass", "owasp": null, "cwe_ids": [], "languages": ["python"], "observations_count": 21610}, "scanner": "repobility-ast-engine", "correlation_key": "fp|a25318b6713afd7f2b7f37178e1368cb52a6370d61d975b5941a088d81e378c3"}}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "backend/scripts/run_parallel_simulation.py"}, "region": {"startLine": 1629}}}]}, {"ruleId": "MINED111", "level": "warning", "message": {"text": "Bare except continues silently"}, "properties": {"repobilityId": 77344, "scanner": "repobility-ast-engine", "fingerprint": "e2725272bccc930922ef00dad4a2db73ee620c39f19e89decdd0fca6b2ce85cd", "category": "quality", "severity": "medium", "confidence": 1.0, "triageState": "open", "verdict": "", "isResolved": false, "reason": "", "evidence": {"mined": true, "mining": {"slug": "bare-except-without-pass", "owasp": null, "cwe_ids": [], "languages": ["python"], "observations_count": 21610}, "scanner": "repobility-ast-engine", "correlation_key": "fp|e2725272bccc930922ef00dad4a2db73ee620c39f19e89decdd0fca6b2ce85cd"}}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "backend/scripts/run_parallel_simulation.py"}, "region": {"startLine": 555}}}]}, {"ruleId": "MINED111", "level": "warning", "message": {"text": "Bare except continues silently"}, "properties": {"repobilityId": 77343, "scanner": "repobility-ast-engine", "fingerprint": "b6bbcc43a97ef371d74d89e040585ab9eff7775bb970ed460a9ecf1609fdbd38", "category": "quality", "severity": "medium", "confidence": 1.0, "triageState": "open", "verdict": "", "isResolved": false, "reason": "", "evidence": {"mined": true, "mining": {"slug": "bare-except-without-pass", "owasp": null, "cwe_ids": [], "languages": ["python"], "observations_count": 21610}, "scanner": "repobility-ast-engine", "correlation_key": "fp|b6bbcc43a97ef371d74d89e040585ab9eff7775bb970ed460a9ecf1609fdbd38"}}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "backend/scripts/run_parallel_simulation.py"}, "region": {"startLine": 342}}}]}, {"ruleId": "MINED111", "level": "warning", "message": {"text": "Bare except continues silently"}, "properties": {"repobilityId": 77342, "scanner": "repobility-ast-engine", "fingerprint": "2081245c4410950491e2a742d612b0ba91701409957cbf86a5300f1ec4e26dd5", "category": "quality", "severity": "medium", "confidence": 1.0, "triageState": "open", "verdict": "", "isResolved": false, "reason": "", "evidence": {"mined": true, "mining": {"slug": "bare-except-without-pass", "owasp": null, "cwe_ids": [], "languages": ["python"], "observations_count": 21610}, "scanner": "repobility-ast-engine", "correlation_key": "fp|2081245c4410950491e2a742d612b0ba91701409957cbf86a5300f1ec4e26dd5"}}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "backend/scripts/run_parallel_simulation.py"}, "region": {"startLine": 852}}}]}, {"ruleId": "MINED111", "level": "warning", "message": {"text": "Bare except continues silently"}, "properties": {"repobilityId": 77341, "scanner": "repobility-ast-engine", "fingerprint": "774d83f4e75528fcc8864693f69928d0c6626c76b31e5dd35ba1e48360ba6c2a", "category": "quality", "severity": "medium", "confidence": 1.0, "triageState": "open", "verdict": "", "isResolved": false, "reason": "", "evidence": {"mined": true, "mining": {"slug": "bare-except-without-pass", "owasp": null, "cwe_ids": [], "languages": ["python"], "observations_count": 21610}, "scanner": "repobility-ast-engine", "correlation_key": "fp|774d83f4e75528fcc8864693f69928d0c6626c76b31e5dd35ba1e48360ba6c2a"}}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "backend/scripts/run_parallel_simulation.py"}, "region": {"startLine": 743}}}]}, {"ruleId": "MINED111", "level": "warning", "message": {"text": "Bare except continues silently"}, "properties": {"repobilityId": 77335, "scanner": "repobility-ast-engine", "fingerprint": "b1f2c9898b248c441220cff135e0b07e03c1a9f43d401efdcbe363d5b8740bc6", "category": "quality", "severity": "medium", "confidence": 1.0, "triageState": "open", "verdict": "", "isResolved": false, "reason": "", "evidence": {"mined": true, "mining": {"slug": "bare-except-without-pass", "owasp": null, "cwe_ids": [], "languages": ["python"], "observations_count": 21610}, "scanner": "repobility-ast-engine", "correlation_key": "fp|b1f2c9898b248c441220cff135e0b07e03c1a9f43d401efdcbe363d5b8740bc6"}}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "backend/scripts/run_twitter_simulation.py"}, "region": {"startLine": 622}}}]}, {"ruleId": "MINED111", "level": "warning", "message": {"text": "Bare except continues silently"}, "properties": {"repobilityId": 77334, "scanner": "repobility-ast-engine", "fingerprint": "a7279659efec8f2b0df43a66abc668ea01acbf8a6102ff1560cdd4b79b4141f4", "category": "quality", "severity": "medium", "confidence": 1.0, "triageState": "open", "verdict": "", "isResolved": false, "reason": "", "evidence": {"mined": true, "mining": {"slug": "bare-except-without-pass", "owasp": null, "cwe_ids": [], "languages": ["python"], "observations_count": 21610}, "scanner": "repobility-ast-engine", "correlation_key": "fp|a7279659efec8f2b0df43a66abc668ea01acbf8a6102ff1560cdd4b79b4141f4"}}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "backend/scripts/run_twitter_simulation.py"}, "region": {"startLine": 271}}}]}, {"ruleId": "MINED111", "level": "warning", "message": {"text": "Bare except continues silently"}, "properties": {"repobilityId": 77333, "scanner": "repobility-ast-engine", "fingerprint": "3d2c621f2cb44fbb43ad2d0525be4ccc975fbce67511591462ade184bce5cdd2", "category": "quality", "severity": "medium", "confidence": 1.0, "triageState": "open", "verdict": "", "isResolved": false, "reason": "", "evidence": {"mined": true, "mining": {"slug": "bare-except-without-pass", "owasp": null, "cwe_ids": [], "languages": ["python"], "observations_count": 21610}, "scanner": "repobility-ast-engine", "correlation_key": "fp|3d2c621f2cb44fbb43ad2d0525be4ccc975fbce67511591462ade184bce5cdd2"}}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "backend/scripts/run_twitter_simulation.py"}, "region": {"startLine": 694}}}]}, {"ruleId": "MINED111", "level": "warning", "message": {"text": "Bare except continues silently"}, "properties": {"repobilityId": 77332, "scanner": "repobility-ast-engine", "fingerprint": "cf5182af8b2e15e8e5839f4abd738a14339314e59e10b58a1231682dffb2db8a", "category": "quality", "severity": "medium", "confidence": 1.0, "triageState": "open", "verdict": "", "isResolved": false, "reason": "", "evidence": {"mined": true, "mining": {"slug": "bare-except-without-pass", "owasp": null, "cwe_ids": [], "languages": ["python"], "observations_count": 21610}, "scanner": "repobility-ast-engine", "correlation_key": "fp|cf5182af8b2e15e8e5839f4abd738a14339314e59e10b58a1231682dffb2db8a"}}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "backend/scripts/run_twitter_simulation.py"}, "region": {"startLine": 338}}}]}, {"ruleId": "MINED111", "level": "warning", "message": {"text": "Bare except continues silently"}, "properties": {"repobilityId": 77331, "scanner": "repobility-ast-engine", "fingerprint": "75164cdc801b69ffe41dac0a6273e5c5232682b981e10ca151a102efade399a0", "category": "quality", "severity": "medium", "confidence": 1.0, "triageState": "open", "verdict": "", "isResolved": false, "reason": "", "evidence": {"mined": true, "mining": {"slug": "bare-except-without-pass", "owasp": null, "cwe_ids": [], "languages": ["python"], "observations_count": 21610}, "scanner": "repobility-ast-engine", "correlation_key": "fp|75164cdc801b69ffe41dac0a6273e5c5232682b981e10ca151a102efade399a0"}}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "backend/scripts/run_twitter_simulation.py"}, "region": {"startLine": 294}}}]}, {"ruleId": "MINED111", "level": "warning", "message": {"text": "Bare except continues silently"}, "properties": {"repobilityId": 77330, "scanner": "repobility-ast-engine", "fingerprint": "0d34cd4d5e1f3b587aec082c2813cb3614366169fc4429468dfd379646d1232f", "category": "quality", "severity": "medium", "confidence": 1.0, "triageState": "open", "verdict": "", "isResolved": false, "reason": "", "evidence": {"mined": true, "mining": {"slug": "bare-except-without-pass", "owasp": null, "cwe_ids": [], "languages": ["python"], "observations_count": 21610}, "scanner": "repobility-ast-engine", "correlation_key": "fp|0d34cd4d5e1f3b587aec082c2813cb3614366169fc4429468dfd379646d1232f"}}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "backend/scripts/run_twitter_simulation.py"}, "region": {"startLine": 242}}}]}, {"ruleId": "CORE_LARGE_FILES", "level": "warning", "message": {"text": "Average file size is 700 lines (recommend <300)"}, "properties": {"repobilityId": 77298, "scanner": "repobility-core", "fingerprint": "675b3bbb15b8a7b4f6603fda5adb952f1c22b2a627497cce89121a115d9033be", "category": "quality", "severity": "medium", "confidence": null, "triageState": "open", "verdict": "", "isResolved": false, "reason": "", "evidence": {"rule_id": "CORE_LARGE_FILES", "scanner": "repobility-core", "correlation_key": "fp|675b3bbb15b8a7b4f6603fda5adb952f1c22b2a627497cce89121a115d9033be"}}}, {"ruleId": "GHSA-xhjh-pmcv-23jw", "level": "note", "message": {"text": "axios: GHSA-xhjh-pmcv-23jw"}, "properties": {"repobilityId": 77491, "scanner": "osv-scanner", "fingerprint": "891906befe7476199ee164a323d07f0e4ab75436fe3adceaff11fc0c46321b8c", "category": "dependency", "severity": "low", "confidence": 0.88, "triageState": "open", "verdict": "", "isResolved": false, "reason": "", "evidence": {"match": "", "aliases": ["CVE-2026-42040"], "package": "axios", "rule_id": "GHSA-xhjh-pmcv-23jw", "scanner": "osv-scanner", "correlation_key": "vuln|axios|CVE-2026-42040|frontend/package-lock.json"}}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "frontend/package-lock.json"}, "region": {"startLine": 1}}}]}, {"ruleId": "GHSA-4xc4-762w-m6cg", "level": "note", "message": {"text": "pypdf: GHSA-4xc4-762w-m6cg"}, "properties": {"repobilityId": 77438, "scanner": "osv-scanner", "fingerprint": "1126b306f1ffd7200539f433928b910adae2de5c8500a1c8747d01f1562cf65d", "category": "dependency", "severity": "low", "confidence": 0.88, "triageState": "open", "verdict": "", "isResolved": false, "reason": "", "evidence": {"match": "", "aliases": ["CVE-2026-22690"], "package": "pypdf", "rule_id": "GHSA-4xc4-762w-m6cg", "scanner": "osv-scanner", "correlation_key": "vuln|pypdf|CVE-2026-22690|backend/uv.lock"}}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "backend/uv.lock"}, "region": {"startLine": 1}}}]}, {"ruleId": "GHSA-4f6g-68pf-7vhv", "level": "note", "message": {"text": "pypdf: GHSA-4f6g-68pf-7vhv"}, "properties": {"repobilityId": 77436, "scanner": "osv-scanner", "fingerprint": "28308fba94bf5cb01470ec437edc832b7586c491acdcee13fe1b4b7baf55aaab", "category": "dependency", "severity": "low", "confidence": 0.88, "triageState": "open", "verdict": "", "isResolved": false, "reason": "", "evidence": {"match": "", "aliases": ["CVE-2026-22691"], "package": "pypdf", "rule_id": "GHSA-4f6g-68pf-7vhv", "scanner": "osv-scanner", "correlation_key": "vuln|pypdf|CVE-2026-22691|backend/uv.lock"}}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "backend/uv.lock"}, "region": {"startLine": 1}}}]}, {"ruleId": "GHSA-2rw7-x74f-jg35", "level": "note", "message": {"text": "pypdf: GHSA-2rw7-x74f-jg35"}, "properties": {"repobilityId": 77434, "scanner": "osv-scanner", "fingerprint": "d1d3bb814cdf7f6f2bde28c77ab93a90859067696e4fbbbbae01c59a4077c711", "category": "dependency", "severity": "low", "confidence": 0.88, "triageState": "open", "verdict": "", "isResolved": false, "reason": "", "evidence": {"match": "", "aliases": ["CVE-2026-27628"], "package": "pypdf", "rule_id": "GHSA-2rw7-x74f-jg35", "scanner": "osv-scanner", "correlation_key": "vuln|pypdf|CVE-2026-27628|backend/uv.lock"}}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "backend/uv.lock"}, "region": {"startLine": 1}}}]}, {"ruleId": "GHSA-5239-wwwm-4pmq", "level": "note", "message": {"text": "pygments: GHSA-5239-wwwm-4pmq"}, "properties": {"repobilityId": 77425, "scanner": "osv-scanner", "fingerprint": "6fbfff11655932ed1eb544ebc33f844b6c0875d67f369487421893f87a9aa8a4", "category": "dependency", "severity": "low", "confidence": 0.88, "triageState": "open", "verdict": "", "isResolved": false, "reason": "", "evidence": {"match": "", "aliases": ["CVE-2026-4539"], "package": "pygments", "rule_id": "GHSA-5239-wwwm-4pmq", "scanner": "osv-scanner", "correlation_key": "vuln|pygments|CVE-2026-4539|backend/uv.lock"}}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "backend/uv.lock"}, "region": {"startLine": 1}}}]}, {"ruleId": "GHSA-68rp-wp8r-4726", "level": "note", "message": {"text": "flask: GHSA-68rp-wp8r-4726"}, "properties": {"repobilityId": 77401, "scanner": "osv-scanner", "fingerprint": "862739bd5794c6e6c341b558e31d0d4e5c13eb1a6031d9a5268c9ee17fea94eb", "category": "dependency", "severity": "low", "confidence": 0.88, "triageState": "open", "verdict": "", "isResolved": false, "reason": "", "evidence": {"match": "", "aliases": ["CVE-2026-27205"], "package": "flask", "rule_id": "GHSA-68rp-wp8r-4726", "scanner": "osv-scanner", "correlation_key": "vuln|flask|CVE-2026-27205|backend/uv.lock"}}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "backend/uv.lock"}, "region": {"startLine": 1}}}]}, {"ruleId": "GHSA-68rp-wp8r-4726", "level": "note", "message": {"text": "flask: GHSA-68rp-wp8r-4726"}, "properties": {"repobilityId": 77394, "scanner": "osv-scanner", "fingerprint": "5296d8cca9c39f35c9b85081004b8ccf26f08d87ec479d0e0d8b592483334962", "category": "dependency", "severity": "low", "confidence": 0.88, "triageState": "open", "verdict": "", "isResolved": false, "reason": "", "evidence": {"match": "", "aliases": ["CVE-2026-27205"], "package": "flask", "rule_id": "GHSA-68rp-wp8r-4726", "scanner": "osv-scanner", "correlation_key": "vuln|flask|CVE-2026-27205|backend/requirements.txt"}}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "backend/requirements.txt"}, "region": {"startLine": 1}}}]}, {"ruleId": "DKC010", "level": "note", "message": {"text": "Compose service lacks no-new-privileges hardening"}, "properties": {"repobilityId": 77393, "scanner": "repobility-docker", "fingerprint": "7f80983f54868d8bec198a3977b7dcbe8bfb5f2291356d590fb078148e91780d", "category": "docker", "severity": "low", "confidence": 0.62, "triageState": "open", "verdict": "needs_review", "isResolved": false, "reason": "App-like service has no security_opt no-new-privileges setting.", "evidence": {"rule_id": "DKC010", "scanner": "repobility-docker", "service": "mirofish", "references": ["https://cheatsheetseries.owasp.org/cheatsheets/Docker_Security_Cheat_Sheet.html"], "correlation_key": "fp|7f80983f54868d8bec198a3977b7dcbe8bfb5f2291356d590fb078148e91780d"}}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "docker-compose.yml"}, "region": {"startLine": 1}}}]}, {"ruleId": "DKC006", "level": "note", "message": {"text": "Compose service does not declare a runtime user"}, "properties": {"repobilityId": 77392, "scanner": "repobility-docker", "fingerprint": "2ae03d2ca68f689d193058b7c353aabad57bc3d37942d6a7c1406762df909513", "category": "docker", "severity": "low", "confidence": 0.56, "triageState": "open", "verdict": "needs_review", "isResolved": false, "reason": "Service has no user setting and Repobility could not prove the image runs non-root.", "evidence": {"rule_id": "DKC006", "scanner": "repobility-docker", "service": "mirofish", "references": ["https://cheatsheetseries.owasp.org/cheatsheets/Docker_Security_Cheat_Sheet.html"], "correlation_key": "fp|2ae03d2ca68f689d193058b7c353aabad57bc3d37942d6a7c1406762df909513"}}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "docker-compose.yml"}, "region": {"startLine": 1}}}]}, {"ruleId": "DKR008", "level": "note", "message": {"text": ".dockerignore misses sensitive defaults"}, "properties": {"repobilityId": 77390, "scanner": "repobility-docker", "fingerprint": "aea2ad92c68c4ee1f8432bb1ec25e7d45ac12c9e1790ac2d3fffe638b1acce12", "category": "docker", "severity": "low", "confidence": 0.72, "triageState": "open", "verdict": "likely", "isResolved": false, "reason": "A Docker build context should exclude secrets and repository metadata.", "evidence": {"rule_id": "DKR008", "scanner": "repobility-docker", "references": ["https://docs.docker.com/develop/develop-images/dockerfile_best-practices/"], "correlation_key": "fp|aea2ad92c68c4ee1f8432bb1ec25e7d45ac12c9e1790ac2d3fffe638b1acce12", "missing_patterns": ["id_rsa", "*.pem", "*.key"]}}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": ".dockerignore"}, "region": {"startLine": 1}}}]}, {"ruleId": "COMP001", "level": "note", "message": {"text": "[COMP001] High cognitive complexity: Function `poll_commands` has cognitive complexity 8 (SonarSource scale). Cognitive complexity measures how hard the function is for a human to understand \u2014 nested branches, boolean chains, and recursion all weigh in. Breakdown: continue=1, except=1, for=2, if=2, nested_bonus=2."}, "properties": {"repobilityId": 77379, "scanner": "repobility-threat-engine", "fingerprint": "1753c5866992f02e334fff8a2544f324ac97e568f8d0d3fccf2b7b8456b019fa", "category": "quality", "severity": "low", "confidence": 0.95, "triageState": "open", "verdict": "confirmed", "isResolved": false, "reason": "AST-derived cognitive complexity score = 8 (severity threshold for low: 8+).", "evidence": {"scanner": "repobility-threat-engine", "function": "poll_commands", "breakdown": {"if": 2, "for": 2, "except": 1, "continue": 1, "nested_bonus": 2}, "complexity": 8, "correlation_key": "fp|1753c5866992f02e334fff8a2544f324ac97e568f8d0d3fccf2b7b8456b019fa"}}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "backend/app/services/simulation_ipc.py"}, "region": {"startLine": 332}}}]}, {"ruleId": "COMP001", "level": "note", "message": {"text": "[COMP001] High cognitive complexity: Function `send_command` has cognitive complexity 10 (SonarSource scale). Cognitive complexity measures how hard the function is for a human to understand \u2014 nested branches, boolean chains, and recursion all weigh in. Breakdown: except=3, if=1, nested_bonus=5, while=1."}, "properties": {"repobilityId": 77378, "scanner": "repobility-threat-engine", "fingerprint": "96319180bb684187cd846f94ee3c141ffe271c4eb991692c0017c7e485d9c991", "category": "quality", "severity": "low", "confidence": 0.95, "triageState": "open", "verdict": "confirmed", "isResolved": false, "reason": "AST-derived cognitive complexity score = 10 (severity threshold for low: 8+).", "evidence": {"scanner": "repobility-threat-engine", "function": "send_command", "breakdown": {"if": 1, "while": 1, "except": 3, "nested_bonus": 5}, "complexity": 10, "correlation_key": "fp|96319180bb684187cd846f94ee3c141ffe271c4eb991692c0017c7e485d9c991"}}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "backend/app/services/simulation_ipc.py"}, "region": {"startLine": 117}}}]}, {"ruleId": "COMP001", "level": "note", "message": {"text": "[COMP001] High cognitive complexity: Function `update_task` has cognitive complexity 13 (SonarSource scale). Cognitive complexity measures how hard the function is for a human to understand \u2014 nested branches, boolean chains, and recursion all weigh in. Breakdown: if=7, nested_bonus=6."}, "properties": {"repobilityId": 77377, "scanner": "repobility-threat-engine", "fingerprint": "e16587c73cf598dadf0dca44dd6073d6a7189b826a6873da866f1d55975e85c0", "category": "quality", "severity": "low", "confidence": 0.95, "triageState": "open", "verdict": "confirmed", "isResolved": false, "reason": "AST-derived cognitive complexity score = 13 (severity threshold for low: 8+).", "evidence": {"scanner": "repobility-threat-engine", "function": "update_task", "breakdown": {"if": 7, "nested_bonus": 6}, "complexity": 13, "correlation_key": "fp|e16587c73cf598dadf0dca44dd6073d6a7189b826a6873da866f1d55975e85c0"}}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "backend/app/models/task.py"}, "region": {"startLine": 108}}}]}, {"ruleId": "DEPCUR-NPM", "level": "note", "message": {"text": "npm package `vue-i18n` is minor version(s) behind (11.3.0 -> 11.4.4)"}, "properties": {"repobilityId": 77367, "scanner": "repobility-dependency-currency", "fingerprint": "e0181f7e43a991777407a248a7c077f938292ecdd3d67bc0b508a5617fd69023", "category": "dependency", "severity": "low", "confidence": 0.9, "triageState": "open", "verdict": "", "isResolved": false, "reason": "", "evidence": {"gap": "minor version(s) behind", "signal": "currency", "cwe_ids": [], "package": "vue-i18n", "scanner": "repobility-dependency-currency", "ecosystem": "npm", "languages": ["javascript"], "latest_version": "11.4.4", "correlation_key": "fp|e0181f7e43a991777407a248a7c077f938292ecdd3d67bc0b508a5617fd69023", "current_version": "11.3.0"}}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "frontend/package.json"}, "region": {"startLine": 1}}}]}, {"ruleId": "DEPCUR-NPM", "level": "note", "message": {"text": "npm package `axios` is minor version(s) behind (1.14.0 -> 1.17.0)"}, "properties": {"repobilityId": 77366, "scanner": "repobility-dependency-currency", "fingerprint": "2cb9cd9f0c356ffaea298bd11ae1e5e66b6f6abb54407dea1b0b09fbcf72d35e", "category": "dependency", "severity": "low", "confidence": 0.9, "triageState": "open", "verdict": "", "isResolved": false, "reason": "", "evidence": {"gap": "minor version(s) behind", "signal": "currency", "cwe_ids": [], "package": "axios", "scanner": "repobility-dependency-currency", "ecosystem": "npm", "languages": ["javascript"], "latest_version": "1.17.0", "correlation_key": "fp|2cb9cd9f0c356ffaea298bd11ae1e5e66b6f6abb54407dea1b0b09fbcf72d35e", "current_version": "1.14.0"}}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "frontend/package.json"}, "region": {"startLine": 1}}}]}, {"ruleId": "DEPCUR-PY", "level": "note", "message": {"text": "Python package `zep-cloud` is minor version(s) behind (3.13.0 -> 3.23.0)"}, "properties": {"repobilityId": 77364, "scanner": "repobility-dependency-currency", "fingerprint": "2e49527560aec9efa77c96ecc07987a40b10e2f747202d067cd32ed5f9a65b05", "category": "dependency", "severity": "low", "confidence": 0.9, "triageState": "open", "verdict": "", "isResolved": false, "reason": "", "evidence": {"gap": "minor version(s) behind", "signal": "currency", "cwe_ids": [], "package": "zep-cloud", "scanner": "repobility-dependency-currency", "ecosystem": "pypi", "languages": ["python"], "latest_version": "3.23.0", "correlation_key": "fp|2e49527560aec9efa77c96ecc07987a40b10e2f747202d067cd32ed5f9a65b05", "current_version": "3.13.0"}}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "backend/requirements.txt"}, "region": {"startLine": 17}}}]}, {"ruleId": "AIC003", "level": "note", "message": {"text": "Duplicated implementation block across source files"}, "properties": {"repobilityId": 77308, "scanner": "repobility-ai-code-hygiene", "fingerprint": "406830f94d04fd4904042689b5d6b9afdf136e1704af0136cccfd3a4c575fea4", "category": "quality", "severity": "low", "confidence": 0.86, "triageState": "open", "verdict": "confirmed", "isResolved": false, "reason": "A normalized source-code window appears in two different non-test files.", "evidence": {"lines": 12, "rule_id": "AIC003", "scanner": "repobility-ai-code-hygiene", "references": ["https://jscpd.dev/"], "duplicate_file": "frontend/src/views/MainView.vue", "duplicate_line": 439, "correlation_key": "fp|406830f94d04fd4904042689b5d6b9afdf136e1704af0136cccfd3a4c575fea4"}}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "frontend/src/views/SimulationView.vue"}, "region": {"startLine": 322}}}]}, {"ruleId": "AIC003", "level": "note", "message": {"text": "Duplicated implementation block across source files"}, "properties": {"repobilityId": 77307, "scanner": "repobility-ai-code-hygiene", "fingerprint": "f7c019a347c11fc63e0e02e27ce53a5a7c203b63db896b4f95c6042a6fc17903", "category": "quality", "severity": "low", "confidence": 0.86, "triageState": "open", "verdict": "confirmed", "isResolved": false, "reason": "A normalized source-code window appears in two different non-test files.", "evidence": {"lines": 12, "rule_id": "AIC003", "scanner": "repobility-ai-code-hygiene", "references": ["https://jscpd.dev/"], "duplicate_file": "frontend/src/views/ReportView.vue", "duplicate_line": 80, "correlation_key": "fp|f7c019a347c11fc63e0e02e27ce53a5a7c203b63db896b4f95c6042a6fc17903"}}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "frontend/src/views/SimulationView.vue"}, "region": {"startLine": 80}}}]}, {"ruleId": "AIC003", "level": "note", "message": {"text": "Duplicated implementation block across source files"}, "properties": {"repobilityId": 77306, "scanner": "repobility-ai-code-hygiene", "fingerprint": "3d7c20d83140caeaa7a32ad46e49eb5da443a96eaa99b07c23e1794f292e5d3a", "category": "quality", "severity": "low", "confidence": 0.86, "triageState": "open", "verdict": "confirmed", "isResolved": false, "reason": "A normalized source-code window appears in two different non-test files.", "evidence": {"lines": 12, "rule_id": "AIC003", "scanner": "repobility-ai-code-hygiene", "references": ["https://jscpd.dev/"], "duplicate_file": "frontend/src/views/SimulationRunView.vue", "duplicate_line": 54, "correlation_key": "fp|3d7c20d83140caeaa7a32ad46e49eb5da443a96eaa99b07c23e1794f292e5d3a"}}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "frontend/src/views/SimulationView.vue"}, "region": {"startLine": 51}}}]}, {"ruleId": "AIC003", "level": "note", "message": {"text": "Duplicated implementation block across source files"}, "properties": {"repobilityId": 77305, "scanner": "repobility-ai-code-hygiene", "fingerprint": "de6748b2a64ff5aead026d0755785285c3133d8215ab6fe1a283a5a1a9ca94ab", "category": "quality", "severity": "low", "confidence": 0.86, "triageState": "open", "verdict": "confirmed", "isResolved": false, "reason": "A normalized source-code window appears in two different non-test files.", "evidence": {"lines": 12, "rule_id": "AIC003", "scanner": "repobility-ai-code-hygiene", "references": ["https://jscpd.dev/"], "duplicate_file": "frontend/src/views/InteractionView.vue", "duplicate_line": 1, "correlation_key": "fp|de6748b2a64ff5aead026d0755785285c3133d8215ab6fe1a283a5a1a9ca94ab"}}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "frontend/src/views/SimulationView.vue"}, "region": {"startLine": 1}}}]}, {"ruleId": "AIC003", "level": "note", "message": {"text": "Duplicated implementation block across source files"}, "properties": {"repobilityId": 77304, "scanner": "repobility-ai-code-hygiene", "fingerprint": "e3aa5186750464cdd47cb272b21fdfabbb07be0b94c1f5fc33151357c0e9be29", "category": "quality", "severity": "low", "confidence": 0.86, "triageState": "open", "verdict": "confirmed", "isResolved": false, "reason": "A normalized source-code window appears in two different non-test files.", "evidence": {"lines": 12, "rule_id": "AIC003", "scanner": "repobility-ai-code-hygiene", "references": ["https://jscpd.dev/"], "duplicate_file": "frontend/src/views/MainView.vue", "duplicate_line": 439, "correlation_key": "fp|e3aa5186750464cdd47cb272b21fdfabbb07be0b94c1f5fc33151357c0e9be29"}}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "frontend/src/views/SimulationRunView.vue"}, "region": {"startLine": 340}}}]}, {"ruleId": "AIC003", "level": "note", "message": {"text": "Duplicated implementation block across source files"}, "properties": {"repobilityId": 77303, "scanner": "repobility-ai-code-hygiene", "fingerprint": "d37530c1a4ae3727b3899f698182606bced2bc6ce35789fb6573d5d10d2d65a3", "category": "quality", "severity": "low", "confidence": 0.86, "triageState": "open", "verdict": "confirmed", "isResolved": false, "reason": "A normalized source-code window appears in two different non-test files.", "evidence": {"lines": 12, "rule_id": "AIC003", "scanner": "repobility-ai-code-hygiene", "references": ["https://jscpd.dev/"], "duplicate_file": "frontend/src/views/ReportView.vue", "duplicate_line": 80, "correlation_key": "fp|d37530c1a4ae3727b3899f698182606bced2bc6ce35789fb6573d5d10d2d65a3"}}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "frontend/src/views/SimulationRunView.vue"}, "region": {"startLine": 85}}}]}, {"ruleId": "AIC003", "level": "note", "message": {"text": "Duplicated implementation block across source files"}, "properties": {"repobilityId": 77302, "scanner": "repobility-ai-code-hygiene", "fingerprint": "7cfa5ef7ba4d214d9e5da2eb3379d369e56e522f2715f1546e1ccc136a342720", "category": "quality", "severity": "low", "confidence": 0.86, "triageState": "open", "verdict": "confirmed", "isResolved": false, "reason": "A normalized source-code window appears in two different non-test files.", "evidence": {"lines": 12, "rule_id": "AIC003", "scanner": "repobility-ai-code-hygiene", "references": ["https://jscpd.dev/"], "duplicate_file": "frontend/src/views/InteractionView.vue", "duplicate_line": 1, "correlation_key": "fp|7cfa5ef7ba4d214d9e5da2eb3379d369e56e522f2715f1546e1ccc136a342720"}}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "frontend/src/views/SimulationRunView.vue"}, "region": {"startLine": 1}}}]}, {"ruleId": "AIC003", "level": "note", "message": {"text": "Duplicated implementation block across source files"}, "properties": {"repobilityId": 77301, "scanner": "repobility-ai-code-hygiene", "fingerprint": "0964bfef63d9139a551b4ba2b8aa140de16024403258c4465c887a54bf8cd4b9", "category": "quality", "severity": "low", "confidence": 0.86, "triageState": "open", "verdict": "confirmed", "isResolved": false, "reason": "A normalized source-code window appears in two different non-test files.", "evidence": {"lines": 12, "rule_id": "AIC003", "scanner": "repobility-ai-code-hygiene", "references": ["https://jscpd.dev/"], "duplicate_file": "frontend/src/views/InteractionView.vue", "duplicate_line": 1, "correlation_key": "fp|0964bfef63d9139a551b4ba2b8aa140de16024403258c4465c887a54bf8cd4b9"}}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "frontend/src/views/ReportView.vue"}, "region": {"startLine": 1}}}]}, {"ruleId": "AIC003", "level": "note", "message": {"text": "Duplicated implementation block across source files"}, "properties": {"repobilityId": 77300, "scanner": "repobility-ai-code-hygiene", "fingerprint": "87f4acfa925423df327bcbac4821e444a02e29f9297391c2203bf32794ca2990", "category": "quality", "severity": "low", "confidence": 0.86, "triageState": "open", "verdict": "confirmed", "isResolved": false, "reason": "A normalized source-code window appears in two different non-test files.", "evidence": {"lines": 12, "rule_id": "AIC003", "scanner": "repobility-ai-code-hygiene", "references": ["https://jscpd.dev/"], "duplicate_file": "frontend/src/views/InteractionView.vue", "duplicate_line": 1, "correlation_key": "fp|87f4acfa925423df327bcbac4821e444a02e29f9297391c2203bf32794ca2990"}}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "frontend/src/views/MainView.vue"}, "region": {"startLine": 1}}}]}, {"ruleId": "AIC003", "level": "note", "message": {"text": "Duplicated implementation block across source files"}, "properties": {"repobilityId": 77299, "scanner": "repobility-ai-code-hygiene", "fingerprint": "33ca6666d1c513f3f80dd94c987d823a77f8a6f4005954c97a7805caeb1f3c61", "category": "quality", "severity": "low", "confidence": 0.86, "triageState": "open", "verdict": "confirmed", "isResolved": false, "reason": "A normalized source-code window appears in two different non-test files.", "evidence": {"lines": 12, "rule_id": "AIC003", "scanner": "repobility-ai-code-hygiene", "references": ["https://jscpd.dev/"], "duplicate_file": "backend/scripts/run_reddit_simulation.py", "duplicate_line": 19, "correlation_key": "fp|33ca6666d1c513f3f80dd94c987d823a77f8a6f4005954c97a7805caeb1f3c61"}}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "backend/scripts/run_twitter_simulation.py"}, "region": {"startLine": 19}}}]}, {"ruleId": "MINED044", "level": "none", "message": {"text": "[MINED044] Js Console Log Prod: console.log left in code. Should be replaced with logger or removed."}, "properties": {"repobilityId": 77387, "scanner": "repobility-threat-engine", "fingerprint": "2776cda339bae38d42f9e378712a05b4c32a734a661f5a183f2d8203bca40abe", "category": "quality", "severity": "info", "confidence": 1.0, "triageState": "open", "verdict": "confirmed", "isResolved": false, "reason": "Pattern matched with no mitigating context found", "evidence": {"mined": true, "mining": {"slug": "js-console-log-prod", "owasp": null, "cwe_ids": ["CWE-532"], "languages": ["javascript", "typescript", "tsx", "jsx"], "precision": 1.0, "promoted_at": "2026-05-18T14:01:32.348003+00:00", "triaged_in_corpus": 10, "observations_count": 1940833, "ai_coder_pattern_id": 102}, "scanner": "repobility-threat-engine", "correlation_key": "fp|2776cda339bae38d42f9e378712a05b4c32a734a661f5a183f2d8203bca40abe"}}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "frontend/src/api/index.js"}, "region": {"startLine": 20}}}]}, {"ruleId": "MINED050", "level": "none", "message": {"text": "[MINED050] Stub Only Function: Function declared but body is just pass, return None, raise NotImplementedError, or TODO comment."}, "properties": {"repobilityId": 77385, "scanner": "repobility-threat-engine", "fingerprint": "edf136a7350ed9e5f96301682e80d189cf0b816549ba4c465680e0b0bc5c4d50", "category": "quality", "severity": "info", "confidence": 1.0, "triageState": "open", "verdict": "confirmed", "isResolved": false, "reason": "Pattern matched with no mitigating context found", "evidence": {"mined": true, "mining": {"slug": "stub-only-function", "owasp": null, "cwe_ids": ["CWE-1188"], "languages": ["python"], "precision": 1.0, "promoted_at": "2026-05-18T14:01:32.348017+00:00", "triaged_in_corpus": 12, "observations_count": 633513, "ai_coder_pattern_id": 2}, "scanner": "repobility-threat-engine", "correlation_key": "fp|edf136a7350ed9e5f96301682e80d189cf0b816549ba4c465680e0b0bc5c4d50"}}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "backend/app/utils/retry.py"}, "region": {"startLine": 39}}}]}, {"ruleId": "MINED050", "level": "none", "message": {"text": "[MINED050] Stub Only Function: Function declared but body is just pass, return None, raise NotImplementedError, or TODO comment."}, "properties": {"repobilityId": 77384, "scanner": "repobility-threat-engine", "fingerprint": "01ec1ea7fe35396b6f0a5d431739d32c22dfe05039845c979d74dce6b0288cf7", "category": "quality", "severity": "info", "confidence": 1.0, "triageState": "open", "verdict": "confirmed", "isResolved": false, "reason": "Pattern matched with no mitigating context found", "evidence": {"mined": true, "mining": {"slug": "stub-only-function", "owasp": null, "cwe_ids": ["CWE-1188"], "languages": ["python"], "precision": 1.0, "promoted_at": "2026-05-18T14:01:32.348017+00:00", "triaged_in_corpus": 12, "observations_count": 633513, "ai_coder_pattern_id": 2}, "scanner": "repobility-threat-engine", "correlation_key": "fp|01ec1ea7fe35396b6f0a5d431739d32c22dfe05039845c979d74dce6b0288cf7"}}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "backend/app/utils/file_parser.py"}, "region": {"startLine": 33}}}]}, {"ruleId": "MINED050", "level": "none", "message": {"text": "[MINED050] Stub Only Function: Function declared but body is just pass, return None, raise NotImplementedError, or TODO comment."}, "properties": {"repobilityId": 77383, "scanner": "repobility-threat-engine", "fingerprint": "b5de15990511673a9acb1c7509c90b96a13794e0cefcc41ddf13777624a8f844", "category": "quality", "severity": "info", "confidence": 1.0, "triageState": "open", "verdict": "confirmed", "isResolved": false, "reason": "Pattern matched with no mitigating context found", "evidence": {"mined": true, "mining": {"slug": "stub-only-function", "owasp": null, "cwe_ids": ["CWE-1188"], "languages": ["python"], "precision": 1.0, "promoted_at": "2026-05-18T14:01:32.348017+00:00", "triaged_in_corpus": 12, "observations_count": 633513, "ai_coder_pattern_id": 2}, "scanner": "repobility-threat-engine", "correlation_key": "fp|b5de15990511673a9acb1c7509c90b96a13794e0cefcc41ddf13777624a8f844"}}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "backend/app/services/simulation_ipc.py"}, "region": {"startLine": 169}}}]}, {"ruleId": "COMP001", "level": "none", "message": {"text": "[COMP001] High cognitive complexity (and 8 more): Same pattern found in 8 additional files. Review if needed."}, "properties": {"repobilityId": 77380, "scanner": "repobility-threat-engine", "fingerprint": "d77c5009f48b7037f4b39dca2da19e88620f9ee944ab4de5a78fef76b97d4995", "category": "quality", "severity": "info", "confidence": 0.2, "triageState": "false_positive", "verdict": "likely_fp", "isResolved": true, "reason": "Deduplicated summary only: 8 additional occurrences found. The top occurrences remain visible as actionable findings.", "evidence": {"scanner": "repobility-threat-engine", "function": "update_task", "breakdown": {"if": 7, "nested_bonus": 6}, "aggregated": true, "complexity": 13, "correlation_key": "fp|d77c5009f48b7037f4b39dca2da19e88620f9ee944ab4de5a78fef76b97d4995", "aggregated_count": 8}}}, {"ruleId": "MINED062", "level": "none", "message": {"text": "[MINED062] Python Dataclass No Fields: @dataclass over an empty class \u2014 unfinished model."}, "properties": {"repobilityId": 77376, "scanner": "repobility-threat-engine", "fingerprint": "43c2c17f2ffbbaf574102f1a2de8b00f0b286391c60e31c193a1e95a902ed8e6", "category": "quality", "severity": "info", "confidence": 1.0, "triageState": "open", "verdict": "confirmed", "isResolved": false, "reason": "Pattern matched with no mitigating context found", "evidence": {"mined": true, "mining": {"slug": "python-dataclass-no-fields", "owasp": null, "cwe_ids": [], "languages": ["python"], "precision": 1.0, "promoted_at": "2026-05-18T14:01:32.348046+00:00", "triaged_in_corpus": 10, "observations_count": 92448, "ai_coder_pattern_id": 144}, "scanner": "repobility-threat-engine", "correlation_key": "fp|43c2c17f2ffbbaf574102f1a2de8b00f0b286391c60e31c193a1e95a902ed8e6"}}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "backend/app/services/simulation_ipc.py"}, "region": {"startLine": 40}}}]}, {"ruleId": "MINED062", "level": "none", "message": {"text": "[MINED062] Python Dataclass No Fields: @dataclass over an empty class \u2014 unfinished model."}, "properties": {"repobilityId": 77375, "scanner": "repobility-threat-engine", "fingerprint": "9457fbcb1fd9183635f489f1d490d2a885776b54c9b2a050fec0ff897c6b3698", "category": "quality", "severity": "info", "confidence": 1.0, "triageState": "open", "verdict": "confirmed", "isResolved": false, "reason": "Pattern matched with no mitigating context found", "evidence": {"mined": true, "mining": {"slug": "python-dataclass-no-fields", "owasp": null, "cwe_ids": [], "languages": ["python"], "precision": 1.0, "promoted_at": "2026-05-18T14:01:32.348046+00:00", "triaged_in_corpus": 10, "observations_count": 92448, "ai_coder_pattern_id": 144}, "scanner": "repobility-threat-engine", "correlation_key": "fp|9457fbcb1fd9183635f489f1d490d2a885776b54c9b2a050fec0ff897c6b3698"}}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "backend/app/models/task.py"}, "region": {"startLine": 24}}}]}, {"ruleId": "MINED062", "level": "none", "message": {"text": "[MINED062] Python Dataclass No Fields: @dataclass over an empty class \u2014 unfinished model."}, "properties": {"repobilityId": 77374, "scanner": "repobility-threat-engine", "fingerprint": "1b77006e7ccef954a78e43d608c7da1869e78d576980920705baab45ae02655d", "category": "quality", "severity": "info", "confidence": 1.0, "triageState": "open", "verdict": "confirmed", "isResolved": false, "reason": "Pattern matched with no mitigating context found", "evidence": {"mined": true, "mining": {"slug": "python-dataclass-no-fields", "owasp": null, "cwe_ids": [], "languages": ["python"], "precision": 1.0, "promoted_at": "2026-05-18T14:01:32.348046+00:00", "triaged_in_corpus": 10, "observations_count": 92448, "ai_coder_pattern_id": 144}, "scanner": "repobility-threat-engine", "correlation_key": "fp|1b77006e7ccef954a78e43d608c7da1869e78d576980920705baab45ae02655d"}}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "backend/app/models/project.py"}, "region": {"startLine": 26}}}]}, {"ruleId": "MINED065", "level": "none", "message": {"text": "[MINED065] Cors Wildcard: Access-Control-Allow-Origin: * exposes the API to any browser origin. Acceptable for public read-only endpoints; dangerous when paired with credentials or write endpoints."}, "properties": {"repobilityId": 77372, "scanner": "repobility-threat-engine", "fingerprint": "31fa6c4a8f5f1c1fabf56456186c1c34d6b2dbeb08a6eff199a013abb1acea08", "category": "quality", "severity": "info", "confidence": 1.0, "triageState": "open", "verdict": "confirmed", "isResolved": false, "reason": "Pattern matched with no mitigating context found", "evidence": {"mined": true, "mining": {"slug": "cors-wildcard", "owasp": "A05:2021", "cwe_ids": ["CWE-942", "CWE-346"], "languages": ["python", "javascript", "typescript", "yaml", "json"], "precision": 1.0, "promoted_at": "2026-05-18T14:01:32.348052+00:00", "triaged_in_corpus": 12, "observations_count": 63910, "ai_coder_pattern_id": 46}, "scanner": "repobility-threat-engine", "correlation_key": "fp|31fa6c4a8f5f1c1fabf56456186c1c34d6b2dbeb08a6eff199a013abb1acea08"}}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "backend/app/__init__.py"}, "region": {"startLine": 43}}}]}, {"ruleId": "DEPCUR-NPM", "level": "none", "message": {"text": "npm package `@vitejs/plugin-vue` is patch version(s) behind (6.0.2 -> 6.0.7)"}, "properties": {"repobilityId": 77369, "scanner": "repobility-dependency-currency", "fingerprint": "15983a20a8a5b507afc2c7383a402042a4860694fdefac1e792e539a817f5b4a", "category": "dependency", "severity": "info", "confidence": 0.9, "triageState": "open", "verdict": "", "isResolved": false, "reason": "", "evidence": {"gap": "patch version(s) behind", "signal": "currency", "cwe_ids": [], "package": "@vitejs/plugin-vue", "scanner": "repobility-dependency-currency", "ecosystem": "npm", "languages": ["javascript"], "latest_version": "6.0.7", "correlation_key": "fp|15983a20a8a5b507afc2c7383a402042a4860694fdefac1e792e539a817f5b4a", "current_version": "6.0.2"}}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "frontend/package.json"}, "region": {"startLine": 1}}}]}, {"ruleId": "DEPCUR-PY", "level": "none", "message": {"text": "Python package `camel-ai` is patch version(s) behind (0.2.78 -> 0.2.90)"}, "properties": {"repobilityId": 77365, "scanner": "repobility-dependency-currency", "fingerprint": "a13d918b2b14d44ec7938c72d44a59d91c5f3f06ad72d9affa1dc89d5378854c", "category": "dependency", "severity": "info", "confidence": 0.9, "triageState": "open", "verdict": "", "isResolved": false, "reason": "", "evidence": {"gap": "patch version(s) behind", "signal": "currency", "cwe_ids": [], "package": "camel-ai", "scanner": "repobility-dependency-currency", "ecosystem": "pypi", "languages": ["python"], "latest_version": "0.2.90", "correlation_key": "fp|a13d918b2b14d44ec7938c72d44a59d91c5f3f06ad72d9affa1dc89d5378854c", "current_version": "0.2.78"}}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "backend/requirements.txt"}, "region": {"startLine": 22}}}]}, {"ruleId": "GHSA-v2wj-q39q-566r", "level": "error", "message": {"text": "vite: GHSA-v2wj-q39q-566r"}, "properties": {"repobilityId": 77497, "scanner": "osv-scanner", "fingerprint": "70b4fd7549996f5fcb62417c4067cd6f4ee3cf1635da8573b261551fda0bfe87", "category": "dependency", "severity": "high", "confidence": 0.88, "triageState": "open", "verdict": "", "isResolved": false, "reason": "", "evidence": {"match": "", "aliases": ["CVE-2026-39364"], "package": "vite", "rule_id": "GHSA-v2wj-q39q-566r", "scanner": "osv-scanner", "correlation_key": "vuln|vite|CVE-2026-39364|frontend/package-lock.json"}}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "frontend/package-lock.json"}, "region": {"startLine": 1}}}]}, {"ruleId": "GHSA-p9ff-h696-f583", "level": "error", "message": {"text": "vite: GHSA-p9ff-h696-f583"}, "properties": {"repobilityId": 77496, "scanner": "osv-scanner", "fingerprint": "46c71337a76b99909eead0cdbe4aab4353fcb98999eadc31f6a2b26f3f07a176", "category": "dependency", "severity": "high", "confidence": 0.88, "triageState": "open", "verdict": "", "isResolved": false, "reason": "", "evidence": {"match": "", "aliases": ["CVE-2026-39363"], "package": "vite", "rule_id": "GHSA-p9ff-h696-f583", "scanner": "osv-scanner", "correlation_key": "vuln|vite|CVE-2026-39363|frontend/package-lock.json"}}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "frontend/package-lock.json"}, "region": {"startLine": 1}}}]}, {"ruleId": "GHSA-q8qp-cvcw-x6jj", "level": "error", "message": {"text": "axios: GHSA-q8qp-cvcw-x6jj"}, "properties": {"repobilityId": 77488, "scanner": "osv-scanner", "fingerprint": "4551f5e46c97e658659d6ef37a7c911e54188c55f8acad90e3bf51734d6b56cc", "category": "dependency", "severity": "high", "confidence": 0.88, "triageState": "open", "verdict": "", "isResolved": false, "reason": "", "evidence": {"match": "", "aliases": ["CVE-2026-42264"], "package": "axios", "rule_id": "GHSA-q8qp-cvcw-x6jj", "scanner": "osv-scanner", "correlation_key": "vuln|axios|CVE-2026-42264|frontend/package-lock.json"}}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "frontend/package-lock.json"}, "region": {"startLine": 1}}}]}, {"ruleId": "GHSA-pf86-5x62-jrwf", "level": "error", "message": {"text": "axios: GHSA-pf86-5x62-jrwf"}, "properties": {"repobilityId": 77487, "scanner": "osv-scanner", "fingerprint": "7dd10a4ac10c7d68b328c24363ef55a7a4a0b8efa7dda55b33061094132f72fc", "category": "dependency", "severity": "high", "confidence": 0.88, "triageState": "open", "verdict": "", "isResolved": false, "reason": "", "evidence": {"match": "", "aliases": ["CVE-2026-42033"], "package": "axios", "rule_id": "GHSA-pf86-5x62-jrwf", "scanner": "osv-scanner", "correlation_key": "vuln|axios|CVE-2026-42033|frontend/package-lock.json"}}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "frontend/package-lock.json"}, "region": {"startLine": 1}}}]}, {"ruleId": "GHSA-p92q-9vqr-4j8v", "level": "error", "message": {"text": "axios: GHSA-p92q-9vqr-4j8v"}, "properties": {"repobilityId": 77486, "scanner": "osv-scanner", "fingerprint": "ea1fa97c7dd2dce380f9e3490cd8a078aa18274aa4183d63ef98831513f245ea", "category": "dependency", "severity": "high", "confidence": 0.88, "triageState": "open", "verdict": "", "isResolved": false, "reason": "", "evidence": {"match": "", "aliases": ["CVE-2026-44487"], "package": "axios", "rule_id": "GHSA-p92q-9vqr-4j8v", "scanner": "osv-scanner", "correlation_key": "vuln|axios|CVE-2026-44487|frontend/package-lock.json"}}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "frontend/package-lock.json"}, "region": {"startLine": 1}}}]}, {"ruleId": "GHSA-j5f8-grm9-p9fc", "level": "error", "message": {"text": "axios: GHSA-j5f8-grm9-p9fc"}, "properties": {"repobilityId": 77484, "scanner": "osv-scanner", "fingerprint": "1ed72a97210fd87a7b1b71db47b907b7d8a5a01463273b2cdaf391090bd8f680", "category": "dependency", "severity": "high", "confidence": 0.88, "triageState": "open", "verdict": "", "isResolved": false, "reason": "", "evidence": {"match": "", "aliases": ["CVE-2026-44486"], "package": "axios", "rule_id": "GHSA-j5f8-grm9-p9fc", "scanner": "osv-scanner", "correlation_key": "vuln|axios|CVE-2026-44486|frontend/package-lock.json"}}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "frontend/package-lock.json"}, "region": {"startLine": 1}}}]}, {"ruleId": "GHSA-hfxv-24rg-xrqf", "level": "error", "message": {"text": "axios: GHSA-hfxv-24rg-xrqf"}, "properties": {"repobilityId": 77483, "scanner": "osv-scanner", "fingerprint": "64542561c7e3b0b7cf4242ab6b63ac0b04468a5ffeea83232e5e3738891bea92", "category": "dependency", "severity": "high", "confidence": 0.88, "triageState": "open", "verdict": "", "isResolved": false, "reason": "", "evidence": {"match": "", "aliases": ["CVE-2026-44496"], "package": "axios", "rule_id": "GHSA-hfxv-24rg-xrqf", "scanner": "osv-scanner", "correlation_key": "vuln|axios|CVE-2026-44496|frontend/package-lock.json"}}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "frontend/package-lock.json"}, "region": {"startLine": 1}}}]}, {"ruleId": "GHSA-777c-7fjr-54vf", "level": "error", "message": {"text": "axios: GHSA-777c-7fjr-54vf"}, "properties": {"repobilityId": 77480, "scanner": "osv-scanner", "fingerprint": "774d2ee572977b7b2801e6969149ae76a4196808547ba19f01366841ec5aaec8", "category": "dependency", "severity": "high", "confidence": 0.88, "triageState": "open", "verdict": "", "isResolved": false, "reason": "", "evidence": {"match": "", "aliases": ["CVE-2026-44488"], "package": "axios", "rule_id": "GHSA-777c-7fjr-54vf", "scanner": "osv-scanner", "correlation_key": "vuln|axios|CVE-2026-44488|frontend/package-lock.json"}}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "frontend/package-lock.json"}, "region": {"startLine": 1}}}]}, {"ruleId": "GHSA-6chq-wfr3-2hj9", "level": "error", "message": {"text": "axios: GHSA-6chq-wfr3-2hj9"}, "properties": {"repobilityId": 77479, "scanner": "osv-scanner", "fingerprint": "a5a94770e63134c3d0ee8aa2b9b7dec58825f5b051991871bc45b341d18403b3", "category": "dependency", "severity": "high", "confidence": 0.88, "triageState": "open", "verdict": "", "isResolved": false, "reason": "", "evidence": {"match": "", "aliases": ["CVE-2026-42035"], "package": "axios", "rule_id": "GHSA-6chq-wfr3-2hj9", "scanner": "osv-scanner", "correlation_key": "vuln|axios|CVE-2026-42035|frontend/package-lock.json"}}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "frontend/package-lock.json"}, "region": {"startLine": 1}}}]}, {"ruleId": "GHSA-pjwm-pj3p-43mv", "level": "error", "message": {"text": "axios: GHSA-pjwm-pj3p-43mv"}, "properties": {"repobilityId": 77474, "scanner": "osv-scanner", "fingerprint": "d6fdf1020752c00e4fe23a5cc3c5a538de95ec1fd528c283a24c145951ddf9be", "category": "dependency", "severity": "high", "confidence": 0.88, "triageState": "open", "verdict": "", "isResolved": false, "reason": "Collapsed 2 duplicate scanner signal(s) for the same underlying issue.", "evidence": {"match": "", "aliases": ["CVE-2026-44492"], "package": "axios", "rule_id": "GHSA-pjwm-pj3p-43mv", "scanner": "osv-scanner", "correlation_key": "vuln|axios|CVE-2025-62718|frontend/package-lock.json", "duplicate_count": 2, "duplicate_rule_ids": ["GHSA-3p68-rc4w-qgx5", "GHSA-pjwm-pj3p-43mv", "GHSA-pmwg-cvhr-8vh7"], "duplicate_scanners": ["osv-scanner"], "duplicate_fingerprints": ["6c9607c1c354b8899d03056793cbd048f04c224211b746223dd9282238dd05bb", "aa8dc7122709848fd8d7f16ebd070d9c0a135d83f3fe5d9ef78b628f255bbc5d", "d6fdf1020752c00e4fe23a5cc3c5a538de95ec1fd528c283a24c145951ddf9be"]}}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "frontend/package-lock.json"}, "region": {"startLine": 1}}}]}, {"ruleId": "GHSA-3g43-6gmg-66jw", "level": "error", "message": {"text": "axios: GHSA-3g43-6gmg-66jw"}, "properties": {"repobilityId": 77473, "scanner": "osv-scanner", "fingerprint": "1e24b804780891d42484152275710406b530514d91a2404409aad6128d22608f", "category": "dependency", "severity": "high", "confidence": 0.88, "triageState": "open", "verdict": "", "isResolved": false, "reason": "", "evidence": {"match": "", "aliases": ["CVE-2026-44495"], "package": "axios", "rule_id": "GHSA-3g43-6gmg-66jw", "scanner": "osv-scanner", "correlation_key": "vuln|axios|CVE-2026-44495|frontend/package-lock.json"}}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "frontend/package-lock.json"}, "region": {"startLine": 1}}}]}, {"ruleId": "GHSA-35jp-ww65-95wh", "level": "error", "message": {"text": "axios: GHSA-35jp-ww65-95wh"}, "properties": {"repobilityId": 77472, "scanner": "osv-scanner", "fingerprint": "2d4caf5ab0ce413862e43eccd65ff176989d3aa47bce9a99ffcc7af007c9ce8e", "category": "dependency", "severity": "high", "confidence": 0.88, "triageState": "open", "verdict": "", "isResolved": false, "reason": "", "evidence": {"match": "", "aliases": ["CVE-2026-44494"], "package": "axios", "rule_id": "GHSA-35jp-ww65-95wh", "scanner": "osv-scanner", "correlation_key": "vuln|axios|CVE-2026-44494|frontend/package-lock.json"}}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "frontend/package-lock.json"}, "region": {"startLine": 1}}}]}, {"ruleId": "GHSA-38jv-5279-wg99", "level": "error", "message": {"text": "urllib3: GHSA-38jv-5279-wg99"}, "properties": {"repobilityId": 77468, "scanner": "osv-scanner", "fingerprint": "59113d63698da0a66d0fa7b5e2ecb2c122e9bfdc7ed837099c39f575381fa0d6", "category": "dependency", "severity": "high", "confidence": 0.88, "triageState": "open", "verdict": "", "isResolved": false, "reason": "", "evidence": {"match": "", "aliases": ["CVE-2026-21441"], "package": "urllib3", "rule_id": "GHSA-38jv-5279-wg99", "scanner": "osv-scanner", "correlation_key": "vuln|urllib3|CVE-2026-21441|backend/uv.lock"}}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "backend/uv.lock"}, "region": {"startLine": 1}}}]}, {"ruleId": "PYSEC-2026-142", "level": "error", "message": {"text": "urllib3: PYSEC-2026-142"}, "properties": {"repobilityId": 77467, "scanner": "osv-scanner", "fingerprint": "9eee51e77f2a1145c8bcf91a0a4d6d6782f8b32c09eeb79760344c3ed7e9d67f", "category": "dependency", "severity": "high", "confidence": 0.88, "triageState": "open", "verdict": "", "isResolved": false, "reason": "Collapsed 1 duplicate scanner signal(s) for the same underlying issue.", "evidence": {"match": "", "aliases": ["CVE-2026-44432", "GHSA-mf9v-mfxr-j63j"], "package": "urllib3", "rule_id": "PYSEC-2026-142", "scanner": "osv-scanner", "correlation_key": "vuln|urllib3|CVE-2026-44432|backend/uv.lock", "duplicate_count": 1, "duplicate_rule_ids": ["GHSA-mf9v-mfxr-j63j", "PYSEC-2026-142"], "duplicate_scanners": ["osv-scanner"], "duplicate_fingerprints": ["14f37eb7af334a11887217165745f08c50f7d3c38684ddafcd9cfe899a57ea11", "9eee51e77f2a1145c8bcf91a0a4d6d6782f8b32c09eeb79760344c3ed7e9d67f"]}}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "backend/uv.lock"}, "region": {"startLine": 1}}}]}, {"ruleId": "PYSEC-2026-141", "level": "error", "message": {"text": "urllib3: PYSEC-2026-141"}, "properties": {"repobilityId": 77466, "scanner": "osv-scanner", "fingerprint": "e6e9ff1b15be585c67a982ebff2f20ed93a4f7575025e4bfca052e033f5d064a", "category": "dependency", "severity": "high", "confidence": 0.88, "triageState": "open", "verdict": "", "isResolved": false, "reason": "Collapsed 1 duplicate scanner signal(s) for the same underlying issue.", "evidence": {"match": "", "aliases": ["CVE-2026-44431", "GHSA-qccp-gfcp-xxvc"], "package": "urllib3", "rule_id": "PYSEC-2026-141", "scanner": "osv-scanner", "correlation_key": "vuln|urllib3|CVE-2026-44431|backend/uv.lock", "duplicate_count": 1, "duplicate_rule_ids": ["GHSA-qccp-gfcp-xxvc", "PYSEC-2026-141"], "duplicate_scanners": ["osv-scanner"], "duplicate_fingerprints": ["96f65c02e7e7cff917f724206403afbf8585fd51ee6d1d2371b6a5235c73631e", "e6e9ff1b15be585c67a982ebff2f20ed93a4f7575025e4bfca052e033f5d064a"]}}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "backend/uv.lock"}, "region": {"startLine": 1}}}]}, {"ruleId": "PYSEC-2025-217", "level": "error", "message": {"text": "transformers: PYSEC-2025-217"}, "properties": {"repobilityId": 77462, "scanner": "osv-scanner", "fingerprint": "46af09900e2e157cfbc0d5551d80160850921cd5fb4e1dca1379a9db86063c56", "category": "dependency", "severity": "high", "confidence": 0.88, "triageState": "open", "verdict": "", "isResolved": false, "reason": "", "evidence": {"match": "", "aliases": ["CVE-2025-14929"], "package": "transformers", "rule_id": "PYSEC-2025-217", "scanner": "osv-scanner", "correlation_key": "vuln|transformers|CVE-2025-14929|backend/uv.lock"}}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "backend/uv.lock"}, "region": {"startLine": 1}}}]}, {"ruleId": "GHSA-fqwm-6jpj-5wxc", "level": "error", "message": {"text": "tornado: GHSA-fqwm-6jpj-5wxc"}, "properties": {"repobilityId": 77461, "scanner": "osv-scanner", "fingerprint": "ee70716e1a8c6035ff7f20f22d72b8dabd6fa4677b9de1986da6b8df82a9dbac", "category": "dependency", "severity": "high", "confidence": 0.88, "triageState": "open", "verdict": "", "isResolved": false, "reason": "", "evidence": {"match": "", "aliases": ["CVE-2026-35536"], "package": "tornado", "rule_id": "GHSA-fqwm-6jpj-5wxc", "scanner": "osv-scanner", "correlation_key": "vuln|tornado|CVE-2026-35536|backend/uv.lock"}}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "backend/uv.lock"}, "region": {"startLine": 1}}}]}, {"ruleId": "PYSEC-2026-140", "level": "error", "message": {"text": "tornado: PYSEC-2026-140"}, "properties": {"repobilityId": 77459, "scanner": "osv-scanner", "fingerprint": "9b5279e6e8d29fd242c4632fe19ca5208ca9c82531f30f845aaa5eb0c4df4dbe", "category": "dependency", "severity": "high", "confidence": 0.88, "triageState": "open", "verdict": "", "isResolved": false, "reason": "Collapsed 1 duplicate scanner signal(s) for the same underlying issue.", "evidence": {"match": "", "aliases": ["CVE-2026-31958", "GHSA-qjxf-f2mg-c6mc"], "package": "tornado", "rule_id": "PYSEC-2026-140", "scanner": "osv-scanner", "correlation_key": "vuln|tornado|CVE-2026-31958|backend/uv.lock", "duplicate_count": 1, "duplicate_rule_ids": ["GHSA-qjxf-f2mg-c6mc", "PYSEC-2026-140"], "duplicate_scanners": ["osv-scanner"], "duplicate_fingerprints": ["9b5279e6e8d29fd242c4632fe19ca5208ca9c82531f30f845aaa5eb0c4df4dbe", "ff618ff23731db29b04764c47f53cd74e219c155e922ea9cdaf9494a2435764c"]}}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "backend/uv.lock"}, "region": {"startLine": 1}}}]}, {"ruleId": "PYSEC-2026-139", "level": "error", "message": {"text": "torch: PYSEC-2026-139"}, "properties": {"repobilityId": 77458, "scanner": "osv-scanner", "fingerprint": "fbe2cdb06287b4b11500ef1049f373eba4b7c12e034ed54a06750b393f16d9d5", "category": "dependency", "severity": "high", "confidence": 0.88, "triageState": "open", "verdict": "", "isResolved": false, "reason": "", "evidence": {"match": "", "aliases": ["BIT-pytorch-2026-4538", "CVE-2026-4538"], "package": "torch", "rule_id": "PYSEC-2026-139", "scanner": "osv-scanner", "correlation_key": "vuln|torch|CVE-2026-4538|backend/uv.lock"}}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "backend/uv.lock"}, "region": {"startLine": 1}}}]}, {"ruleId": "PYSEC-2026-161", "level": "error", "message": {"text": "starlette: PYSEC-2026-161"}, "properties": {"repobilityId": 77457, "scanner": "osv-scanner", "fingerprint": "6ff21ed132dc8fea01b0fb3f7554d5bc33c2a1610e8d2001b39da424b1cad433", "category": "dependency", "severity": "high", "confidence": 0.88, "triageState": "open", "verdict": "", "isResolved": false, "reason": "Collapsed 1 duplicate scanner signal(s) for the same underlying issue.", "evidence": {"match": "", "aliases": ["CVE-2026-48710", "GHSA-86qp-5c8j-p5mr", "X41-2026-002"], "package": "starlette", "rule_id": "PYSEC-2026-161", "scanner": "osv-scanner", "correlation_key": "vuln|starlette|CVE-2026-48710|backend/uv.lock", "duplicate_count": 1, "duplicate_rule_ids": ["GHSA-86qp-5c8j-p5mr", "PYSEC-2026-161"], "duplicate_scanners": ["osv-scanner"], "duplicate_fingerprints": ["42f5c542e48c4738a706d3f97a1aa23b2ac8d18c2dd668a2c764104510913125", "6ff21ed132dc8fea01b0fb3f7554d5bc33c2a1610e8d2001b39da424b1cad433"]}}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "backend/uv.lock"}, "region": {"startLine": 1}}}]}, {"ruleId": "GHSA-wp53-j4wj-2cfg", "level": "error", "message": {"text": "python-multipart: GHSA-wp53-j4wj-2cfg"}, "properties": {"repobilityId": 77455, "scanner": "osv-scanner", "fingerprint": "b5bdd0e20ee363c45b030db49ea72e684b942ec62ca883919562bc2ca2d1bd67", "category": "dependency", "severity": "high", "confidence": 0.88, "triageState": "open", "verdict": "", "isResolved": false, "reason": "", "evidence": {"match": "", "aliases": ["CVE-2026-24486"], "package": "python-multipart", "rule_id": "GHSA-wp53-j4wj-2cfg", "scanner": "osv-scanner", "correlation_key": "vuln|python-multipart|CVE-2026-24486|backend/uv.lock"}}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "backend/uv.lock"}, "region": {"startLine": 1}}}]}, {"ruleId": "GHSA-pp6c-gr5w-3c5g", "level": "error", "message": {"text": "python-multipart: GHSA-pp6c-gr5w-3c5g"}, "properties": {"repobilityId": 77454, "scanner": "osv-scanner", "fingerprint": "02cfaf1bfd3e0303c686d4d53de2d1ca5fe899279fe6df5427631145f06455c8", "category": "dependency", "severity": "high", "confidence": 0.88, "triageState": "open", "verdict": "", "isResolved": false, "reason": "", "evidence": {"match": "", "aliases": ["CVE-2026-42561"], "package": "python-multipart", "rule_id": "GHSA-pp6c-gr5w-3c5g", "scanner": "osv-scanner", "correlation_key": "vuln|python-multipart|CVE-2026-42561|backend/uv.lock"}}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "backend/uv.lock"}, "region": {"startLine": 1}}}]}, {"ruleId": "PYSEC-2026-179", "level": "error", "message": {"text": "pyjwt: PYSEC-2026-179"}, "properties": {"repobilityId": 77432, "scanner": "osv-scanner", "fingerprint": "deac162e50bedd4e55ee7fe36b18f9dcb0da124df8ef76db2a7ad1eb9245c547", "category": "dependency", "severity": "high", "confidence": 0.88, "triageState": "open", "verdict": "", "isResolved": false, "reason": "", "evidence": {"match": "", "aliases": ["CVE-2026-48526", "GHSA-xgmm-8j9v-c9wx"], "package": "pyjwt", "rule_id": "PYSEC-2026-179", "scanner": "osv-scanner", "correlation_key": "vuln|pyjwt|CVE-2026-48526|backend/uv.lock"}}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "backend/uv.lock"}, "region": {"startLine": 1}}}]}, {"ruleId": "PYSEC-2026-178", "level": "error", "message": {"text": "pyjwt: PYSEC-2026-178"}, "properties": {"repobilityId": 77431, "scanner": "osv-scanner", "fingerprint": "464522b64a0dbe02aa304ebc186254121690c33070ba7c7fd69b504c26896c1f", "category": "dependency", "severity": "high", "confidence": 0.88, "triageState": "open", "verdict": "", "isResolved": false, "reason": "", "evidence": {"match": "", "aliases": ["CVE-2026-48525", "GHSA-w7vc-732c-9m39"], "package": "pyjwt", "rule_id": "PYSEC-2026-178", "scanner": "osv-scanner", "correlation_key": "vuln|pyjwt|CVE-2026-48525|backend/uv.lock"}}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "backend/uv.lock"}, "region": {"startLine": 1}}}]}, {"ruleId": "PYSEC-2026-177", "level": "error", "message": {"text": "pyjwt: PYSEC-2026-177"}, "properties": {"repobilityId": 77430, "scanner": "osv-scanner", "fingerprint": "7cae4acc2bf22b1cba0926ada63d2a5be9fe6adadc858866bff9e1939b0b03ec", "category": "dependency", "severity": "high", "confidence": 0.88, "triageState": "open", "verdict": "", "isResolved": false, "reason": "", "evidence": {"match": "", "aliases": ["CVE-2026-48524", "GHSA-fhv5-28vv-h8m8"], "package": "pyjwt", "rule_id": "PYSEC-2026-177", "scanner": "osv-scanner", "correlation_key": "vuln|pyjwt|CVE-2026-48524|backend/uv.lock"}}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "backend/uv.lock"}, "region": {"startLine": 1}}}]}, {"ruleId": "PYSEC-2026-176", "level": "error", "message": {"text": "pyjwt: PYSEC-2026-176"}, "properties": {"repobilityId": 77429, "scanner": "osv-scanner", "fingerprint": "7268e5a451fb7bc471cc7e4fe42d3f1f7754b92522c6bdc351b6cfc6689f0bcc", "category": "dependency", "severity": "high", "confidence": 0.88, "triageState": "open", "verdict": "", "isResolved": false, "reason": "", "evidence": {"match": "", "aliases": ["CVE-2026-48523", "GHSA-jq35-7prp-9v3f"], "package": "pyjwt", "rule_id": "PYSEC-2026-176", "scanner": "osv-scanner", "correlation_key": "vuln|pyjwt|CVE-2026-48523|backend/uv.lock"}}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "backend/uv.lock"}, "region": {"startLine": 1}}}]}, {"ruleId": "PYSEC-2026-175", "level": "error", "message": {"text": "pyjwt: PYSEC-2026-175"}, "properties": {"repobilityId": 77428, "scanner": "osv-scanner", "fingerprint": "f7057a49ad5914e661dace02501e81d91689ddeebcc8993ef1e325a63d12aa13", "category": "dependency", "severity": "high", "confidence": 0.88, "triageState": "open", "verdict": "", "isResolved": false, "reason": "", "evidence": {"match": "", "aliases": ["CVE-2026-48522", "GHSA-993g-76c3-p5m4"], "package": "pyjwt", "rule_id": "PYSEC-2026-175", "scanner": "osv-scanner", "correlation_key": "vuln|pyjwt|CVE-2026-48522|backend/uv.lock"}}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "backend/uv.lock"}, "region": {"startLine": 1}}}]}, {"ruleId": "PYSEC-2026-120", "level": "error", "message": {"text": "pyjwt: PYSEC-2026-120"}, "properties": {"repobilityId": 77427, "scanner": "osv-scanner", "fingerprint": "eae1a180d076da95638fefb38f48aa1e907fe5feb7ac764cb3b83e3274000386", "category": "dependency", "severity": "high", "confidence": 0.88, "triageState": "open", "verdict": "", "isResolved": false, "reason": "Collapsed 1 duplicate scanner signal(s) for the same underlying issue.", "evidence": {"match": "", "aliases": ["CVE-2026-32597", "GHSA-752w-5fwx-jx9f"], "package": "pyjwt", "rule_id": "PYSEC-2026-120", "scanner": "osv-scanner", "correlation_key": "vuln|pyjwt|CVE-2026-32597|backend/uv.lock", "duplicate_count": 1, "duplicate_rule_ids": ["GHSA-752w-5fwx-jx9f", "PYSEC-2026-120"], "duplicate_scanners": ["osv-scanner"], "duplicate_fingerprints": ["6f6b94ba7d6f88886d9ca2c59866b00e89a121a157ecbde36eb8abf457040e99", "eae1a180d076da95638fefb38f48aa1e907fe5feb7ac764cb3b83e3274000386"]}}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "backend/uv.lock"}, "region": {"startLine": 1}}}]}, {"ruleId": "PYSEC-2025-183", "level": "error", "message": {"text": "pyjwt: PYSEC-2025-183"}, "properties": {"repobilityId": 77426, "scanner": "osv-scanner", "fingerprint": "795d2790b109efbc82356831cb5ec8adcdfe453d7c4da1175c5d257fb87344fb", "category": "dependency", "severity": "high", "confidence": 0.88, "triageState": "open", "verdict": "", "isResolved": false, "reason": "", "evidence": {"match": "", "aliases": ["CVE-2025-45768"], "package": "pyjwt", "rule_id": "PYSEC-2025-183", "scanner": "osv-scanner", "correlation_key": "vuln|pyjwt|CVE-2025-45768|backend/uv.lock"}}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "backend/uv.lock"}, "region": {"startLine": 1}}}]}, {"ruleId": "GHSA-whj4-6x5x-4v2j", "level": "error", "message": {"text": "pillow: GHSA-whj4-6x5x-4v2j"}, "properties": {"repobilityId": 77424, "scanner": "osv-scanner", "fingerprint": "066d07223cbfef5f891216efebc98080dd3990a863311af54a3a0cac707e552e", "category": "dependency", "severity": "high", "confidence": 0.88, "triageState": "open", "verdict": "", "isResolved": false, "reason": "", "evidence": {"match": "", "aliases": ["BIT-pillow-2026-40192", "CVE-2026-40192"], "package": "pillow", "rule_id": "GHSA-whj4-6x5x-4v2j", "scanner": "osv-scanner", "correlation_key": "vuln|pillow|CVE-2026-40192|backend/uv.lock"}}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "backend/uv.lock"}, "region": {"startLine": 1}}}]}, {"ruleId": "GHSA-pwv6-vv43-88gr", "level": "error", "message": {"text": "pillow: GHSA-pwv6-vv43-88gr"}, "properties": {"repobilityId": 77422, "scanner": "osv-scanner", "fingerprint": "b279dd9d23303ebdda949a9c5ebdffdf752c487ca17891f9eac502899b1ae4d5", "category": "dependency", "severity": "high", "confidence": 0.88, "triageState": "open", "verdict": "", "isResolved": false, "reason": "", "evidence": {"match": "", "aliases": ["BIT-pillow-2026-42311", "CVE-2026-42311"], "package": "pillow", "rule_id": "GHSA-pwv6-vv43-88gr", "scanner": "osv-scanner", "correlation_key": "vuln|pillow|CVE-2026-42311|backend/uv.lock"}}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "backend/uv.lock"}, "region": {"startLine": 1}}}]}, {"ruleId": "GHSA-cfh3-3jmp-rvhc", "level": "error", "message": {"text": "pillow: GHSA-cfh3-3jmp-rvhc"}, "properties": {"repobilityId": 77421, "scanner": "osv-scanner", "fingerprint": "d0e013d48dc070e7bd1d421a3cd55edbbfcc3c2558b92452fada9929981e0f61", "category": "dependency", "severity": "high", "confidence": 0.88, "triageState": "open", "verdict": "", "isResolved": false, "reason": "", "evidence": {"match": "", "aliases": ["BIT-pillow-2026-25990", "CVE-2026-25990"], "package": "pillow", "rule_id": "GHSA-cfh3-3jmp-rvhc", "scanner": "osv-scanner", "correlation_key": "vuln|pillow|CVE-2026-25990|backend/uv.lock"}}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "backend/uv.lock"}, "region": {"startLine": 1}}}]}, {"ruleId": "PYSEC-2026-165", "level": "error", "message": {"text": "pillow: PYSEC-2026-165"}, "properties": {"repobilityId": 77420, "scanner": "osv-scanner", "fingerprint": "4aa106a33b2e71cacbc4867d2ccad855a96e789b4e1b84b4cf0bb4c96a0da358", "category": "dependency", "severity": "high", "confidence": 0.88, "triageState": "open", "verdict": "", "isResolved": false, "reason": "Collapsed 1 duplicate scanner signal(s) for the same underlying issue.", "evidence": {"match": "", "aliases": ["BIT-pillow-2026-42308", "CVE-2026-42308", "GHSA-wjx4-4jcj-g98j"], "package": "pillow", "rule_id": "PYSEC-2026-165", "scanner": "osv-scanner", "correlation_key": "vuln|pillow|CVE-2026-42308|backend/uv.lock", "duplicate_count": 1, "duplicate_rule_ids": ["GHSA-wjx4-4jcj-g98j", "PYSEC-2026-165"], "duplicate_scanners": ["osv-scanner"], "duplicate_fingerprints": ["4aa106a33b2e71cacbc4867d2ccad855a96e789b4e1b84b4cf0bb4c96a0da358", "e80c72a99fa7936095e0150a09b9f061e1be43a0119fc2518cfb57446212583b"]}}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "backend/uv.lock"}, "region": {"startLine": 1}}}]}, {"ruleId": "GHSA-jm6w-m3j8-898g", "level": "error", "message": {"text": "nltk: GHSA-jm6w-m3j8-898g"}, "properties": {"repobilityId": 77418, "scanner": "osv-scanner", "fingerprint": "62f8882411a8657a227a81950aaffe017aca9a1ba407c26e7924c39ab65279fd", "category": "dependency", "severity": "high", "confidence": 0.88, "triageState": "open", "verdict": "", "isResolved": false, "reason": "", "evidence": {"match": "", "aliases": ["CVE-2026-33231"], "package": "nltk", "rule_id": "GHSA-jm6w-m3j8-898g", "scanner": "osv-scanner", "correlation_key": "vuln|nltk|CVE-2026-33231|backend/uv.lock"}}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "backend/uv.lock"}, "region": {"startLine": 1}}}]}, {"ruleId": "GHSA-469j-vmhf-r6v7", "level": "error", "message": {"text": "nltk: GHSA-469j-vmhf-r6v7"}, "properties": {"repobilityId": 77416, "scanner": "osv-scanner", "fingerprint": "0399af8d83710c123905aef5da421f33d5cda161bce84d22d9eda1312d24dde6", "category": "dependency", "severity": "high", "confidence": 0.88, "triageState": "open", "verdict": "", "isResolved": false, "reason": "", "evidence": {"match": "", "aliases": ["CVE-2026-33236"], "package": "nltk", "rule_id": "GHSA-469j-vmhf-r6v7", "scanner": "osv-scanner", "correlation_key": "vuln|nltk|CVE-2026-33236|backend/uv.lock"}}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "backend/uv.lock"}, "region": {"startLine": 1}}}]}, {"ruleId": "PYSEC-2026-99", "level": "error", "message": {"text": "nltk: PYSEC-2026-99"}, "properties": {"repobilityId": 77415, "scanner": "osv-scanner", "fingerprint": "0beb3031e3f012f6b758633c346191765521901d9952a6225a945d6dc14599bd", "category": "dependency", "severity": "high", "confidence": 0.88, "triageState": "open", "verdict": "", "isResolved": false, "reason": "", "evidence": {"match": "", "aliases": ["CVE-2026-0848"], "package": "nltk", "rule_id": "PYSEC-2026-99", "scanner": "osv-scanner", "correlation_key": "vuln|nltk|CVE-2026-0848|backend/uv.lock"}}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "backend/uv.lock"}, "region": {"startLine": 1}}}]}, {"ruleId": "PYSEC-2026-98", "level": "error", "message": {"text": "nltk: PYSEC-2026-98"}, "properties": {"repobilityId": 77414, "scanner": "osv-scanner", "fingerprint": "4a4dae3a1653094796fe7ad195d8f4ecd796615c1a6f0d8e559b738000f7fb61", "category": "dependency", "severity": "high", "confidence": 0.88, "triageState": "open", "verdict": "", "isResolved": false, "reason": "Collapsed 1 duplicate scanner signal(s) for the same underlying issue.", "evidence": {"match": "", "aliases": ["CVE-2026-0847", "GHSA-68j8-pq59-fqgm"], "package": "nltk", "rule_id": "PYSEC-2026-98", "scanner": "osv-scanner", "correlation_key": "vuln|nltk|CVE-2026-0847|backend/uv.lock", "duplicate_count": 1, "duplicate_rule_ids": ["GHSA-68j8-pq59-fqgm", "PYSEC-2026-98"], "duplicate_scanners": ["osv-scanner"], "duplicate_fingerprints": ["4a4dae3a1653094796fe7ad195d8f4ecd796615c1a6f0d8e559b738000f7fb61", "72d168026270df933abb9afd9baa6fbe50657dea96b07e270785e07ffbc98367"]}}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "backend/uv.lock"}, "region": {"startLine": 1}}}]}, {"ruleId": "PYSEC-2026-97", "level": "error", "message": {"text": "nltk: PYSEC-2026-97"}, "properties": {"repobilityId": 77413, "scanner": "osv-scanner", "fingerprint": "c649405864eee19af69cb953ad0a13e089894a4fc00590f3ef7a3b08f6a1925e", "category": "dependency", "severity": "high", "confidence": 0.88, "triageState": "open", "verdict": "", "isResolved": false, "reason": "Collapsed 1 duplicate scanner signal(s) for the same underlying issue.", "evidence": {"match": "", "aliases": ["CVE-2026-0846", "GHSA-h8wq-7xc4-p3qx"], "package": "nltk", "rule_id": "PYSEC-2026-97", "scanner": "osv-scanner", "correlation_key": "vuln|nltk|CVE-2026-0846|backend/uv.lock", "duplicate_count": 1, "duplicate_rule_ids": ["GHSA-h8wq-7xc4-p3qx", "PYSEC-2026-97"], "duplicate_scanners": ["osv-scanner"], "duplicate_fingerprints": ["5ed545783e78707798901c1dd4770cb0fb8e1b467448208d82b6efaeaeaffd34", "c649405864eee19af69cb953ad0a13e089894a4fc00590f3ef7a3b08f6a1925e"]}}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "backend/uv.lock"}, "region": {"startLine": 1}}}]}, {"ruleId": "GHSA-xm59-rqc7-hhvf", "level": "error", "message": {"text": "nbconvert: GHSA-xm59-rqc7-hhvf"}, "properties": {"repobilityId": 77411, "scanner": "osv-scanner", "fingerprint": "d7cc57ab215a27b0282dccc1673829b76ddaff8d6a3feec5b38d9a268b8fb261", "category": "dependency", "severity": "high", "confidence": 0.88, "triageState": "open", "verdict": "", "isResolved": false, "reason": "", "evidence": {"match": "", "aliases": ["CVE-2025-53000"], "package": "nbconvert", "rule_id": "GHSA-xm59-rqc7-hhvf", "scanner": "osv-scanner", "correlation_key": "vuln|nbconvert|CVE-2025-53000|backend/uv.lock"}}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "backend/uv.lock"}, "region": {"startLine": 1}}}]}, {"ruleId": "GHSA-8mp2-v27r-99xp", "level": "error", "message": {"text": "mistune: GHSA-8mp2-v27r-99xp"}, "properties": {"repobilityId": 77407, "scanner": "osv-scanner", "fingerprint": "4e66afcc1d1619d3e2d47da19bfd93a4eaa1a7b857c30979498889a933d3e310", "category": "dependency", "severity": "high", "confidence": 0.88, "triageState": "open", "verdict": "", "isResolved": false, "reason": "", "evidence": {"match": "", "aliases": ["CVE-2026-33079"], "package": "mistune", "rule_id": "GHSA-8mp2-v27r-99xp", "scanner": "osv-scanner", "correlation_key": "vuln|mistune|CVE-2026-33079|backend/uv.lock"}}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "backend/uv.lock"}, "region": {"startLine": 1}}}]}, {"ruleId": "PYSEC-2026-168", "level": "error", "message": {"text": "mistune: PYSEC-2026-168"}, "properties": {"repobilityId": 77405, "scanner": "osv-scanner", "fingerprint": "5be94839b04fe3c8e17c0f747766ce258396251b69f8b26d48d823789469432f", "category": "dependency", "severity": "high", "confidence": 0.88, "triageState": "open", "verdict": "", "isResolved": false, "reason": "Collapsed 1 duplicate scanner signal(s) for the same underlying issue.", "evidence": {"match": "", "aliases": ["CVE-2026-44896", "GHSA-58cw-g322-p94v"], "package": "mistune", "rule_id": "PYSEC-2026-168", "scanner": "osv-scanner", "correlation_key": "vuln|mistune|CVE-2026-44896|backend/uv.lock", "duplicate_count": 1, "duplicate_rule_ids": ["GHSA-58cw-g322-p94v", "PYSEC-2026-168"], "duplicate_scanners": ["osv-scanner"], "duplicate_fingerprints": ["144048975c96211079212e4107beb248fe9a0d2f1a5236ccbd8fac4cc2e4640f", "5be94839b04fe3c8e17c0f747766ce258396251b69f8b26d48d823789469432f"]}}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "backend/uv.lock"}, "region": {"startLine": 1}}}]}, {"ruleId": "PYSEC-2026-87", "level": "error", "message": {"text": "lxml: PYSEC-2026-87"}, "properties": {"repobilityId": 77403, "scanner": "osv-scanner", "fingerprint": "6585cbf9d6dc782208a51281768f0cc3219b9528182aaeab01e2d8fc4c35d69a", "category": "dependency", "severity": "high", "confidence": 0.88, "triageState": "open", "verdict": "", "isResolved": false, "reason": "Collapsed 1 duplicate scanner signal(s) for the same underlying issue.", "evidence": {"match": "", "aliases": ["CVE-2026-41066", "GHSA-vfmq-68hx-4jfw"], "package": "lxml", "rule_id": "PYSEC-2026-87", "scanner": "osv-scanner", "correlation_key": "vuln|lxml|CVE-2026-41066|backend/uv.lock", "duplicate_count": 1, "duplicate_rule_ids": ["GHSA-vfmq-68hx-4jfw", "PYSEC-2026-87"], "duplicate_scanners": ["osv-scanner"], "duplicate_fingerprints": ["2d0f41f4f29c14037593c4455a66978ba3ff995fa6262ffcfcef36ac18ad5512", "6585cbf9d6dc782208a51281768f0cc3219b9528182aaeab01e2d8fc4c35d69a"]}}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "backend/uv.lock"}, "region": {"startLine": 1}}}]}, {"ruleId": "GHSA-r6ph-v2qm-q3c2", "level": "error", "message": {"text": "cryptography: GHSA-r6ph-v2qm-q3c2"}, "properties": {"repobilityId": 77399, "scanner": "osv-scanner", "fingerprint": "739156d975646ef7e346e454099f3b496c7d5d778b82c5b83917bc870e4d96a6", "category": "dependency", "severity": "high", "confidence": 0.88, "triageState": "open", "verdict": "", "isResolved": false, "reason": "", "evidence": {"match": "", "aliases": ["CVE-2026-26007"], "package": "cryptography", "rule_id": "GHSA-r6ph-v2qm-q3c2", "scanner": "osv-scanner", "correlation_key": "vuln|cryptography|CVE-2026-26007|backend/uv.lock"}}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "backend/uv.lock"}, "region": {"startLine": 1}}}]}, {"ruleId": "PYSEC-2026-36", "level": "error", "message": {"text": "cryptography: PYSEC-2026-36"}, "properties": {"repobilityId": 77398, "scanner": "osv-scanner", "fingerprint": "bba0f0b7a252f34f918cab68e86b2d9678fc01abb919857746ed292f4c11a565", "category": "dependency", "severity": "high", "confidence": 0.88, "triageState": "open", "verdict": "", "isResolved": false, "reason": "Collapsed 1 duplicate scanner signal(s) for the same underlying issue.", "evidence": {"match": "", "aliases": ["CVE-2026-39892", "GHSA-p423-j2cm-9vmq"], "package": "cryptography", "rule_id": "PYSEC-2026-36", "scanner": "osv-scanner", "correlation_key": "vuln|cryptography|CVE-2026-39892|backend/uv.lock", "duplicate_count": 1, "duplicate_rule_ids": ["GHSA-p423-j2cm-9vmq", "PYSEC-2026-36"], "duplicate_scanners": ["osv-scanner"], "duplicate_fingerprints": ["bba0f0b7a252f34f918cab68e86b2d9678fc01abb919857746ed292f4c11a565", "f4cb4957e27f85eef34ce7fcda7e3b550a65cde56cb0c0e5ea9769652d293ac2"]}}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "backend/uv.lock"}, "region": {"startLine": 1}}}]}, {"ruleId": "PYSEC-2026-35", "level": "error", "message": {"text": "cryptography: PYSEC-2026-35"}, "properties": {"repobilityId": 77397, "scanner": "osv-scanner", "fingerprint": "8963156d0bde93cfb5dd4b9de9e4a4140db53b78fe7cd287ddbf8cd83bf38f3c", "category": "dependency", "severity": "high", "confidence": 0.88, "triageState": "open", "verdict": "", "isResolved": false, "reason": "Collapsed 1 duplicate scanner signal(s) for the same underlying issue.", "evidence": {"match": "", "aliases": ["CVE-2026-34073", "GHSA-m959-cc7f-wv43"], "package": "cryptography", "rule_id": "PYSEC-2026-35", "scanner": "osv-scanner", "correlation_key": "vuln|cryptography|CVE-2026-34073|backend/uv.lock", "duplicate_count": 1, "duplicate_rule_ids": ["GHSA-m959-cc7f-wv43", "PYSEC-2026-35"], "duplicate_scanners": ["osv-scanner"], "duplicate_fingerprints": ["1a72a6853c0e16a2866a0dd56edffd8d0c4010180d3848564fbe5307ea55ecaa", "8963156d0bde93cfb5dd4b9de9e4a4140db53b78fe7cd287ddbf8cd83bf38f3c"]}}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "backend/uv.lock"}, "region": {"startLine": 1}}}]}, {"ruleId": "MINED001", "level": "error", "message": {"text": "[MINED001] Bare Except Pass: except: pass or except Exception: pass \u2014 silently swallows everything including KeyboardInterrupt and bugs."}, "properties": {"repobilityId": 77382, "scanner": "repobility-threat-engine", "fingerprint": "3237d0637b7cca41f1a432800b9b0f048148f3630b4d711d76fab6fe598a95c7", "category": "quality", "severity": "high", "confidence": 1.0, "triageState": "open", "verdict": "confirmed", "isResolved": false, "reason": "Pattern matched with no mitigating context found", "evidence": {"mined": true, "mining": {"slug": "bare-except-pass", "owasp": null, "cwe_ids": ["CWE-755"], "languages": ["python"], "precision": 1.0, "promoted_at": "2026-05-18T14:01:32.347744+00:00", "triaged_in_corpus": 15, "observations_count": 1550824, "ai_coder_pattern_id": 6}, "scanner": "repobility-threat-engine", "correlation_key": "fp|3237d0637b7cca41f1a432800b9b0f048148f3630b4d711d76fab6fe598a95c7"}}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "backend/app/utils/file_parser.py"}, "region": {"startLine": 32}}}]}, {"ruleId": "MINED001", "level": "error", "message": {"text": "[MINED001] Bare Except Pass: except: pass or except Exception: pass \u2014 silently swallows everything including KeyboardInterrupt and bugs."}, "properties": {"repobilityId": 77381, "scanner": "repobility-threat-engine", "fingerprint": "c0ca45e79987669e15c665e6d696e296732067be7768a41cd7f29495034994d5", "category": "quality", "severity": "high", "confidence": 1.0, "triageState": "open", "verdict": "confirmed", "isResolved": false, "reason": "Pattern matched with no mitigating context found", "evidence": {"mined": true, "mining": {"slug": "bare-except-pass", "owasp": null, "cwe_ids": ["CWE-755"], "languages": ["python"], "precision": 1.0, "promoted_at": "2026-05-18T14:01:32.347744+00:00", "triaged_in_corpus": 15, "observations_count": 1550824, "ai_coder_pattern_id": 6}, "scanner": "repobility-threat-engine", "correlation_key": "fp|c0ca45e79987669e15c665e6d696e296732067be7768a41cd7f29495034994d5"}}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "backend/app/services/simulation_ipc.py"}, "region": {"startLine": 168}}}]}, {"ruleId": "SEC128", "level": "error", "message": {"text": "[SEC128] Async function without await \u2014 fire-and-forget Promise (AI mistake): Async call invoked without `await` returns an unhandled Promise. The outer function resolves before the inner work completes \u2014 DB writes lost, emails not sent, race conditions. This is one of the top-3 errors AI coders make: they understand async-shape but drop the await keyword when chaining multiple ops. Surfaces as flaky tests or silently dropped data in production."}, "properties": {"repobilityId": 77373, "scanner": "repobility-threat-engine", "fingerprint": "f0d98f8f811a18a1503745555c775295cfcb2903f550c9b5503072111a865064", "category": "quality", "severity": "high", "confidence": 1.0, "triageState": "open", "verdict": "confirmed", "isResolved": false, "reason": "Pattern matched with no mitigating context found", "evidence": {"match": "file_storage.save(file_path)", "reason": "Pattern matched with no mitigating context found", "rule_id": "SEC128", "scanner": "repobility-threat-engine", "confidence": 1.0, "correlation_key": "fp|f0d98f8f811a18a1503745555c775295cfcb2903f550c9b5503072111a865064"}}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "backend/app/models/project.py"}, "region": {"startLine": 262}}}]}, {"ruleId": "MINED115", "level": "error", "message": {"text": "Action `actions/checkout` pinned to mutable ref `@v4`"}, "properties": {"repobilityId": 77362, "scanner": "repobility-supply-chain", "fingerprint": "ea8a13751080b82d460a19158aeecb142f7efd60ac81b5cba2bec52ee3378b68", "category": "dependency", "severity": "high", "confidence": 0.9, "triageState": "open", "verdict": "", "isResolved": false, "reason": "", "evidence": {"mined": true, "mining": {"slug": "gha-mutable-ref", "owasp": "A08:2021", "cwe_ids": ["CWE-829"], "languages": ["yaml"], "observations_count": 0}, "scanner": "repobility-supply-chain", "correlation_key": "fp|ea8a13751080b82d460a19158aeecb142f7efd60ac81b5cba2bec52ee3378b68"}}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": ".github/workflows/docker-image.yml"}, "region": {"startLine": 17}}}]}, {"ruleId": "MINED118", "level": "error", "message": {"text": "Dockerfile FROM `python:3.11` not pinned by digest"}, "properties": {"repobilityId": 77361, "scanner": "repobility-supply-chain", "fingerprint": "9dfe83729038007e7e5493aab684bd043562cb2b91d97c49270506e651b1bae0", "category": "dependency", "severity": "high", "confidence": 0.9, "triageState": "open", "verdict": "", "isResolved": false, "reason": "", "evidence": {"mined": true, "mining": {"slug": "docker-from-unpinned", "owasp": "A08:2021", "cwe_ids": ["CWE-829"], "languages": ["dockerfile"], "observations_count": 0}, "scanner": "repobility-supply-chain", "correlation_key": "fp|9dfe83729038007e7e5493aab684bd043562cb2b91d97c49270506e651b1bae0"}}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "Dockerfile"}, "region": {"startLine": 1}}}]}, {"ruleId": "MINED108", "level": "error", "message": {"text": "`self.send_response` used but never assigned in __init__"}, "properties": {"repobilityId": 77340, "scanner": "repobility-ast-engine", "fingerprint": "23d4dabe77e462ae73822f4380e87875057ced0db8c1e64b23ab2da234b7b9d0", "category": "quality", "severity": "high", "confidence": 1.0, "triageState": "open", "verdict": "", "isResolved": false, "reason": "", "evidence": {"mined": true, "mining": {"slug": "self-attr-never-set", "owasp": null, "cwe_ids": ["CWE-476"], "languages": ["python"], "observations_count": 25998}, "scanner": "repobility-ast-engine", "correlation_key": "fp|23d4dabe77e462ae73822f4380e87875057ced0db8c1e64b23ab2da234b7b9d0"}}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "backend/scripts/run_parallel_simulation.py"}, "region": {"startLine": 412}}}]}, {"ruleId": "MINED108", "level": "error", "message": {"text": "`self.send_response` used but never assigned in __init__"}, "properties": {"repobilityId": 77339, "scanner": "repobility-ast-engine", "fingerprint": "372f7fed9788046bfb6a8b523e4a50d0096ca6726d79408a7db05410ac8650d0", "category": "quality", "severity": "high", "confidence": 1.0, "triageState": "open", "verdict": "", "isResolved": false, "reason": "", "evidence": {"mined": true, "mining": {"slug": "self-attr-never-set", "owasp": null, "cwe_ids": ["CWE-476"], "languages": ["python"], "observations_count": 25998}, "scanner": "repobility-ast-engine", "correlation_key": "fp|372f7fed9788046bfb6a8b523e4a50d0096ca6726d79408a7db05410ac8650d0"}}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "backend/scripts/run_parallel_simulation.py"}, "region": {"startLine": 407}}}]}, {"ruleId": "MINED108", "level": "error", "message": {"text": "`self.send_response` used but never assigned in __init__"}, "properties": {"repobilityId": 77338, "scanner": "repobility-ast-engine", "fingerprint": "f6c7b5195e9841221dc95caf820a5a76f813b0884def42e65a83736b80689505", "category": "quality", "severity": "high", "confidence": 1.0, "triageState": "open", "verdict": "", "isResolved": false, "reason": "", "evidence": {"mined": true, "mining": {"slug": "self-attr-never-set", "owasp": null, "cwe_ids": ["CWE-476"], "languages": ["python"], "observations_count": 25998}, "scanner": "repobility-ast-engine", "correlation_key": "fp|f6c7b5195e9841221dc95caf820a5a76f813b0884def42e65a83736b80689505"}}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "backend/scripts/run_parallel_simulation.py"}, "region": {"startLine": 376}}}]}, {"ruleId": "MINED108", "level": "error", "message": {"text": "`self._get_interview_result` used but never assigned in __init__"}, "properties": {"repobilityId": 77337, "scanner": "repobility-ast-engine", "fingerprint": "ac770fa031518656317a42aa919633b13c385c60b3a5914832cdf4ccec5489a8", "category": "quality", "severity": "high", "confidence": 1.0, "triageState": "open", "verdict": "", "isResolved": false, "reason": "", "evidence": {"mined": true, "mining": {"slug": "self-attr-never-set", "owasp": null, "cwe_ids": ["CWE-476"], "languages": ["python"], "observations_count": 25998}, "scanner": "repobility-ast-engine", "correlation_key": "fp|ac770fa031518656317a42aa919633b13c385c60b3a5914832cdf4ccec5489a8"}}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "backend/scripts/run_parallel_simulation.py"}, "region": {"startLine": 338}}}]}, {"ruleId": "MINED108", "level": "error", "message": {"text": "`self._get_env_and_graph` used but never assigned in __init__"}, "properties": {"repobilityId": 77336, "scanner": "repobility-ast-engine", "fingerprint": "c2ea9c6646f956bea4dd06ff29bbd1ac859c7c89f2e88f3dfa216d014b003bd7", "category": "quality", "severity": "high", "confidence": 1.0, "triageState": "open", "verdict": "", "isResolved": false, "reason": "", "evidence": {"mined": true, "mining": {"slug": "self-attr-never-set", "owasp": null, "cwe_ids": ["CWE-476"], "languages": ["python"], "observations_count": 25998}, "scanner": "repobility-ast-engine", "correlation_key": "fp|c2ea9c6646f956bea4dd06ff29bbd1ac859c7c89f2e88f3dfa216d014b003bd7"}}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "backend/scripts/run_parallel_simulation.py"}, "region": {"startLine": 324}}}]}, {"ruleId": "MINED108", "level": "error", "message": {"text": "`self._get_active_agents_for_round` used but never assigned in __init__"}, "properties": {"repobilityId": 77329, "scanner": "repobility-ast-engine", "fingerprint": "c2f0b22877d5411a8c22c2e8ac3caa182ad7021b1eb7024309c9bdc399182115", "category": "quality", "severity": "high", "confidence": 1.0, "triageState": "open", "verdict": "", "isResolved": false, "reason": "", "evidence": {"mined": true, "mining": {"slug": "self-attr-never-set", "owasp": null, "cwe_ids": ["CWE-476"], "languages": ["python"], "observations_count": 25998}, "scanner": "repobility-ast-engine", "correlation_key": "fp|c2f0b22877d5411a8c22c2e8ac3caa182ad7021b1eb7024309c9bdc399182115"}}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "backend/scripts/run_twitter_simulation.py"}, "region": {"startLine": 640}}}]}, {"ruleId": "MINED108", "level": "error", "message": {"text": "`self._get_db_path` used but never assigned in __init__"}, "properties": {"repobilityId": 77328, "scanner": "repobility-ast-engine", "fingerprint": "b3c5cae4695c3d1d3ca903f2a143a59512cebe39b08e1bdb27e254009f2a801b", "category": "quality", "severity": "high", "confidence": 1.0, "triageState": "open", "verdict": "", "isResolved": false, "reason": "", "evidence": {"mined": true, "mining": {"slug": "self-attr-never-set", "owasp": null, "cwe_ids": ["CWE-476"], "languages": ["python"], "observations_count": 25998}, "scanner": "repobility-ast-engine", "correlation_key": "fp|b3c5cae4695c3d1d3ca903f2a143a59512cebe39b08e1bdb27e254009f2a801b"}}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "backend/scripts/run_twitter_simulation.py"}, "region": {"startLine": 585}}}]}, {"ruleId": "MINED108", "level": "error", "message": {"text": "`self._get_profile_path` used but never assigned in __init__"}, "properties": {"repobilityId": 77327, "scanner": "repobility-ast-engine", "fingerprint": "8ec3593cd9276e54890be81b6925d0028a76847f9184776ed1b9b9d6333bc0c9", "category": "quality", "severity": "high", "confidence": 1.0, "triageState": "open", "verdict": "", "isResolved": false, "reason": "", "evidence": {"mined": true, "mining": {"slug": "self-attr-never-set", "owasp": null, "cwe_ids": ["CWE-476"], "languages": ["python"], "observations_count": 25998}, "scanner": "repobility-ast-engine", "correlation_key": "fp|8ec3593cd9276e54890be81b6925d0028a76847f9184776ed1b9b9d6333bc0c9"}}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "backend/scripts/run_twitter_simulation.py"}, "region": {"startLine": 573}}}]}, {"ruleId": "MINED108", "level": "error", "message": {"text": "`self._create_model` used but never assigned in __init__"}, "properties": {"repobilityId": 77326, "scanner": "repobility-ast-engine", "fingerprint": "0689c79a1da9aa2e6778e8f951da0c2ec81f732a6d8753a364dbbc60d1b9907f", "category": "quality", "severity": "high", "confidence": 1.0, "triageState": "open", "verdict": "", "isResolved": false, "reason": "", "evidence": {"mined": true, "mining": {"slug": "self-attr-never-set", "owasp": null, "cwe_ids": ["CWE-476"], "languages": ["python"], "observations_count": 25998}, "scanner": "repobility-ast-engine", "correlation_key": "fp|0689c79a1da9aa2e6778e8f951da0c2ec81f732a6d8753a364dbbc60d1b9907f"}}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "backend/scripts/run_twitter_simulation.py"}, "region": {"startLine": 569}}}]}, {"ruleId": "MINED108", "level": "error", "message": {"text": "`self.send_response` used but never assigned in __init__"}, "properties": {"repobilityId": 77325, "scanner": "repobility-ast-engine", "fingerprint": "0df3789d0e438b22b7e1b6ebb638f97000e23aa7fec15801435abb9d615e0793", "category": "quality", "severity": "high", "confidence": 1.0, "triageState": "open", "verdict": "", "isResolved": false, "reason": "", "evidence": {"mined": true, "mining": {"slug": "self-attr-never-set", "owasp": null, "cwe_ids": ["CWE-476"], "languages": ["python"], "observations_count": 25998}, "scanner": "repobility-ast-engine", "correlation_key": "fp|0df3789d0e438b22b7e1b6ebb638f97000e23aa7fec15801435abb9d615e0793"}}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "backend/scripts/run_twitter_simulation.py"}, "region": {"startLine": 381}}}]}, {"ruleId": "MINED108", "level": "error", "message": {"text": "`self.send_response` used but never assigned in __init__"}, "properties": {"repobilityId": 77324, "scanner": "repobility-ast-engine", "fingerprint": "de0fffba0d506cf2c84612b728780e6e79f2b297ae718e789e3b3a390da52b70", "category": "quality", "severity": "high", "confidence": 1.0, "triageState": "open", "verdict": "", "isResolved": false, "reason": "", "evidence": {"mined": true, "mining": {"slug": "self-attr-never-set", "owasp": null, "cwe_ids": ["CWE-476"], "languages": ["python"], "observations_count": 25998}, "scanner": "repobility-ast-engine", "correlation_key": "fp|de0fffba0d506cf2c84612b728780e6e79f2b297ae718e789e3b3a390da52b70"}}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "backend/scripts/run_twitter_simulation.py"}, "region": {"startLine": 377}}}]}, {"ruleId": "MINED108", "level": "error", "message": {"text": "`self.handle_batch_interview` used but never assigned in __init__"}, "properties": {"repobilityId": 77323, "scanner": "repobility-ast-engine", "fingerprint": "e59c0e93c81b35809a50dba3c0ee818323a75b35bc3a2d5e7276017f6811fcfe", "category": "quality", "severity": "high", "confidence": 1.0, "triageState": "open", "verdict": "", "isResolved": false, "reason": "", "evidence": {"mined": true, "mining": {"slug": "self-attr-never-set", "owasp": null, "cwe_ids": ["CWE-476"], "languages": ["python"], "observations_count": 25998}, "scanner": "repobility-ast-engine", "correlation_key": "fp|e59c0e93c81b35809a50dba3c0ee818323a75b35bc3a2d5e7276017f6811fcfe"}}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "backend/scripts/run_twitter_simulation.py"}, "region": {"startLine": 369}}}]}, {"ruleId": "MINED108", "level": "error", "message": {"text": "`self.handle_interview` used but never assigned in __init__"}, "properties": {"repobilityId": 77322, "scanner": "repobility-ast-engine", "fingerprint": "0186b82d40ff72f69a34bafe167fa2d36b3b6acea33742f14318855fcbe3c253", "category": "quality", "severity": "high", "confidence": 1.0, "triageState": "open", "verdict": "", "isResolved": false, "reason": "", "evidence": {"mined": true, "mining": {"slug": "self-attr-never-set", "owasp": null, "cwe_ids": ["CWE-476"], "languages": ["python"], "observations_count": 25998}, "scanner": "repobility-ast-engine", "correlation_key": "fp|0186b82d40ff72f69a34bafe167fa2d36b3b6acea33742f14318855fcbe3c253"}}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "backend/scripts/run_twitter_simulation.py"}, "region": {"startLine": 361}}}]}, {"ruleId": "MINED108", "level": "error", "message": {"text": "`self.poll_command` used but never assigned in __init__"}, "properties": {"repobilityId": 77321, "scanner": "repobility-ast-engine", "fingerprint": "f8219b017819a7e407873340d76840f0e461cc06125b2760764beb7a67d65892", "category": "quality", "severity": "high", "confidence": 1.0, "triageState": "open", "verdict": "", "isResolved": false, "reason": "", "evidence": {"mined": true, "mining": {"slug": "self-attr-never-set", "owasp": null, "cwe_ids": ["CWE-476"], "languages": ["python"], "observations_count": 25998}, "scanner": "repobility-ast-engine", "correlation_key": "fp|f8219b017819a7e407873340d76840f0e461cc06125b2760764beb7a67d65892"}}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "backend/scripts/run_twitter_simulation.py"}, "region": {"startLine": 350}}}]}, {"ruleId": "MINED108", "level": "error", "message": {"text": "`self.send_response` used but never assigned in __init__"}, "properties": {"repobilityId": 77320, "scanner": "repobility-ast-engine", "fingerprint": "6567b374d93287ae03f38184dde9688fb56b14b03ff8800a98af29b286431317", "category": "quality", "severity": "high", "confidence": 1.0, "triageState": "open", "verdict": "", "isResolved": false, "reason": "", "evidence": {"mined": true, "mining": {"slug": "self-attr-never-set", "owasp": null, "cwe_ids": ["CWE-476"], "languages": ["python"], "observations_count": 25998}, "scanner": "repobility-ast-engine", "correlation_key": "fp|6567b374d93287ae03f38184dde9688fb56b14b03ff8800a98af29b286431317"}}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "backend/scripts/run_twitter_simulation.py"}, "region": {"startLine": 297}}}]}, {"ruleId": "MINED108", "level": "error", "message": {"text": "`self._get_interview_result` used but never assigned in __init__"}, "properties": {"repobilityId": 77319, "scanner": "repobility-ast-engine", "fingerprint": "c13728e0606bc0edbc5d54910fe07781ddddb978daacb513e4b591ca4e80f1ef", "category": "quality", "severity": "high", "confidence": 1.0, "triageState": "open", "verdict": "", "isResolved": false, "reason": "", "evidence": {"mined": true, "mining": {"slug": "self-attr-never-set", "owasp": null, "cwe_ids": ["CWE-476"], "languages": ["python"], "observations_count": 25998}, "scanner": "repobility-ast-engine", "correlation_key": "fp|c13728e0606bc0edbc5d54910fe07781ddddb978daacb513e4b591ca4e80f1ef"}}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "backend/scripts/run_twitter_simulation.py"}, "region": {"startLine": 284}}}]}, {"ruleId": "MINED108", "level": "error", "message": {"text": "`self.send_response` used but never assigned in __init__"}, "properties": {"repobilityId": 77318, "scanner": "repobility-ast-engine", "fingerprint": "01a2babed709924c2b8ed533b810ada00abd793c10ac41aa3ef0759b5e54f2d9", "category": "quality", "severity": "high", "confidence": 1.0, "triageState": "open", "verdict": "", "isResolved": false, "reason": "", "evidence": {"mined": true, "mining": {"slug": "self-attr-never-set", "owasp": null, "cwe_ids": ["CWE-476"], "languages": ["python"], "observations_count": 25998}, "scanner": "repobility-ast-engine", "correlation_key": "fp|01a2babed709924c2b8ed533b810ada00abd793c10ac41aa3ef0759b5e54f2d9"}}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "backend/scripts/run_twitter_simulation.py"}, "region": {"startLine": 275}}}]}, {"ruleId": "MINED108", "level": "error", "message": {"text": "`self.send_response` used but never assigned in __init__"}, "properties": {"repobilityId": 77317, "scanner": "repobility-ast-engine", "fingerprint": "3305f9dd5662ec9a2f57ddb4dbc2a1caa64821881d69db3c3975bc1058ecefae", "category": "quality", "severity": "high", "confidence": 1.0, "triageState": "open", "verdict": "", "isResolved": false, "reason": "", "evidence": {"mined": true, "mining": {"slug": "self-attr-never-set", "owasp": null, "cwe_ids": ["CWE-476"], "languages": ["python"], "observations_count": 25998}, "scanner": "repobility-ast-engine", "correlation_key": "fp|3305f9dd5662ec9a2f57ddb4dbc2a1caa64821881d69db3c3975bc1058ecefae"}}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "backend/scripts/run_twitter_simulation.py"}, "region": {"startLine": 287}}}]}, {"ruleId": "MINED108", "level": "error", "message": {"text": "`self.send_response` used but never assigned in __init__"}, "properties": {"repobilityId": 77316, "scanner": "repobility-ast-engine", "fingerprint": "6bd69ab990579c8509147700c9766c03b0560a5538eb7c582a9285d960a7821d", "category": "quality", "severity": "high", "confidence": 1.0, "triageState": "open", "verdict": "", "isResolved": false, "reason": "", "evidence": {"mined": true, "mining": {"slug": "self-attr-never-set", "owasp": null, "cwe_ids": ["CWE-476"], "languages": ["python"], "observations_count": 25998}, "scanner": "repobility-ast-engine", "correlation_key": "fp|6bd69ab990579c8509147700c9766c03b0560a5538eb7c582a9285d960a7821d"}}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "backend/scripts/run_twitter_simulation.py"}, "region": {"startLine": 245}}}]}, {"ruleId": "MINED108", "level": "error", "message": {"text": "`self.send_response` used but never assigned in __init__"}, "properties": {"repobilityId": 77315, "scanner": "repobility-ast-engine", "fingerprint": "97cd1fd8a692fdbcc8d9d3aa1b69bbfb17f8f2f83142a376813a1fa468dc537c", "category": "quality", "severity": "high", "confidence": 1.0, "triageState": "open", "verdict": "", "isResolved": false, "reason": "", "evidence": {"mined": true, "mining": {"slug": "self-attr-never-set", "owasp": null, "cwe_ids": ["CWE-476"], "languages": ["python"], "observations_count": 25998}, "scanner": "repobility-ast-engine", "correlation_key": "fp|97cd1fd8a692fdbcc8d9d3aa1b69bbfb17f8f2f83142a376813a1fa468dc537c"}}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "backend/scripts/run_twitter_simulation.py"}, "region": {"startLine": 238}}}]}, {"ruleId": "MINED108", "level": "error", "message": {"text": "`self._get_interview_result` used but never assigned in __init__"}, "properties": {"repobilityId": 77314, "scanner": "repobility-ast-engine", "fingerprint": "99905aaff0244c12de4b28dd6ba9e9d67e78e819d6b5097996e488520a6a048e", "category": "quality", "severity": "high", "confidence": 1.0, "triageState": "open", "verdict": "", "isResolved": false, "reason": "", "evidence": {"mined": true, "mining": {"slug": "self-attr-never-set", "owasp": null, "cwe_ids": ["CWE-476"], "languages": ["python"], "observations_count": 25998}, "scanner": "repobility-ast-engine", "correlation_key": "fp|99905aaff0244c12de4b28dd6ba9e9d67e78e819d6b5097996e488520a6a048e"}}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "backend/scripts/run_twitter_simulation.py"}, "region": {"startLine": 236}}}]}, {"ruleId": "MINED108", "level": "error", "message": {"text": "`self.log` used but never assigned in __init__"}, "properties": {"repobilityId": 77313, "scanner": "repobility-ast-engine", "fingerprint": "6fe558d7e623a171f15d3da795efdef342eaee0144ce88f02e11d0ba2d04e3cd", "category": "quality", "severity": "high", "confidence": 1.0, "triageState": "open", "verdict": "", "isResolved": false, "reason": "", "evidence": {"mined": true, "mining": {"slug": "self-attr-never-set", "owasp": null, "cwe_ids": ["CWE-476"], "languages": ["python"], "observations_count": 25998}, "scanner": "repobility-ast-engine", "correlation_key": "fp|6fe558d7e623a171f15d3da795efdef342eaee0144ce88f02e11d0ba2d04e3cd"}}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "backend/scripts/action_logger.py"}, "region": {"startLine": 196}}}]}, {"ruleId": "MINED108", "level": "error", "message": {"text": "`self.log` used but never assigned in __init__"}, "properties": {"repobilityId": 77312, "scanner": "repobility-ast-engine", "fingerprint": "4e11ade790d4417ee4d1b3ef0e3a8ff9f08edc26098ffbd61c79820f37be5707", "category": "quality", "severity": "high", "confidence": 1.0, "triageState": "open", "verdict": "", "isResolved": false, "reason": "", "evidence": {"mined": true, "mining": {"slug": "self-attr-never-set", "owasp": null, "cwe_ids": ["CWE-476"], "languages": ["python"], "observations_count": 25998}, "scanner": "repobility-ast-engine", "correlation_key": "fp|4e11ade790d4417ee4d1b3ef0e3a8ff9f08edc26098ffbd61c79820f37be5707"}}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "backend/scripts/action_logger.py"}, "region": {"startLine": 193}}}]}, {"ruleId": "MINED108", "level": "error", "message": {"text": "`self.log` used but never assigned in __init__"}, "properties": {"repobilityId": 77311, "scanner": "repobility-ast-engine", "fingerprint": "009bb4ca5347edcd747601ad315addf5f2d3fa2d98b59560a122daaa2ef1e8db", "category": "quality", "severity": "high", "confidence": 1.0, "triageState": "open", "verdict": "", "isResolved": false, "reason": "", "evidence": {"mined": true, "mining": {"slug": "self-attr-never-set", "owasp": null, "cwe_ids": ["CWE-476"], "languages": ["python"], "observations_count": 25998}, "scanner": "repobility-ast-engine", "correlation_key": "fp|009bb4ca5347edcd747601ad315addf5f2d3fa2d98b59560a122daaa2ef1e8db"}}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "backend/scripts/action_logger.py"}, "region": {"startLine": 190}}}]}, {"ruleId": "MINED108", "level": "error", "message": {"text": "`self.log` used but never assigned in __init__"}, "properties": {"repobilityId": 77310, "scanner": "repobility-ast-engine", "fingerprint": "882a909ad484a62621f7722681fa69f451d1f71808b947d7d2c973976948bbda", "category": "quality", "severity": "high", "confidence": 1.0, "triageState": "open", "verdict": "", "isResolved": false, "reason": "", "evidence": {"mined": true, "mining": {"slug": "self-attr-never-set", "owasp": null, "cwe_ids": ["CWE-476"], "languages": ["python"], "observations_count": 25998}, "scanner": "repobility-ast-engine", "correlation_key": "fp|882a909ad484a62621f7722681fa69f451d1f71808b947d7d2c973976948bbda"}}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "backend/scripts/action_logger.py"}, "region": {"startLine": 187}}}]}, {"ruleId": "MINED106", "level": "error", "message": {"text": "Phantom test coverage: test_profile_formats"}, "properties": {"repobilityId": 77309, "scanner": "repobility-ast-engine", "fingerprint": "d050c769f9daeb0d6e5e2c2603c27e32648529ad8f46a5e0ae245ffd755c42d3", "category": "quality", "severity": "high", "confidence": 1.0, "triageState": "open", "verdict": "", "isResolved": false, "reason": "", "evidence": {"mined": true, "mining": {"slug": "phantom-test-coverage", "owasp": null, "cwe_ids": ["CWE-1126"], "languages": ["python"], "observations_count": 982154}, "scanner": "repobility-ast-engine", "correlation_key": "fp|d050c769f9daeb0d6e5e2c2603c27e32648529ad8f46a5e0ae245ffd755c42d3"}}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "backend/scripts/test_profile_format.py"}, "region": {"startLine": 20}}}]}, {"ruleId": "GHSA-gm8q-m8mv-jj5m", "level": "error", "message": {"text": "unstructured: GHSA-gm8q-m8mv-jj5m"}, "properties": {"repobilityId": 77465, "scanner": "osv-scanner", "fingerprint": "df8b45ef6f56d72cac72eb3c5cf91869fd098687223ce661d578b01b5c685cc4", "category": "dependency", "severity": "critical", "confidence": 0.88, "triageState": "open", "verdict": "", "isResolved": false, "reason": "", "evidence": {"match": "", "aliases": ["CVE-2025-64712"], "package": "unstructured", "rule_id": "GHSA-gm8q-m8mv-jj5m", "scanner": "osv-scanner", "correlation_key": "vuln|unstructured|CVE-2025-64712|backend/uv.lock"}}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "backend/uv.lock"}, "region": {"startLine": 1}}}]}, {"ruleId": "GHSA-7p94-766c-hgjp", "level": "error", "message": {"text": "nltk: GHSA-7p94-766c-hgjp"}, "properties": {"repobilityId": 77412, "scanner": "osv-scanner", "fingerprint": "234f99189791d20b83bddad4df8b71a1387e2c014d1da99624019305bae5a6bf", "category": "dependency", "severity": "critical", "confidence": 0.88, "triageState": "open", "verdict": "", "isResolved": false, "reason": "Collapsed 1 duplicate scanner signal(s) for the same underlying issue.", "evidence": {"match": "", "aliases": ["CVE-2025-14009", "PYSEC-2026-96"], "package": "nltk", "rule_id": "GHSA-7p94-766c-hgjp", "scanner": "osv-scanner", "correlation_key": "vuln|nltk|CVE-2025-14009|backend/uv.lock", "duplicate_count": 1, "duplicate_rule_ids": ["GHSA-7p94-766c-hgjp", "PYSEC-2026-96"], "duplicate_scanners": ["osv-scanner"], "duplicate_fingerprints": ["234f99189791d20b83bddad4df8b71a1387e2c014d1da99624019305bae5a6bf", "4a81a24895abcfec85b4a7fd21e92c4946629a10ce8506713e264b1b8823a8ec"]}}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "backend/uv.lock"}, "region": {"startLine": 1}}}]}, {"ruleId": "MINED107", "level": "error", "message": {"text": "Missing import: `platform` used but not imported"}, "properties": {"repobilityId": 77360, "scanner": "repobility-ast-engine", "fingerprint": "db989c84d3d6e1539618b233e4c6cbf69edaf5d55ff74b94117a47ffaa30277f", "category": "quality", "severity": "critical", "confidence": 1.0, "triageState": "open", "verdict": "", "isResolved": false, "reason": "", "evidence": {"mined": true, "mining": {"slug": "missing-import-python", "owasp": "A06:2021", "cwe_ids": ["CWE-1075"], "languages": ["python"], "observations_count": 2192}, "scanner": "repobility-ast-engine", "correlation_key": "fp|db989c84d3d6e1539618b233e4c6cbf69edaf5d55ff74b94117a47ffaa30277f"}}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "backend/app/services/zep_graph_memory_updater.py"}, "region": {"startLine": 273}}}]}]}]}