{"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": "WEB003", "name": "Public web service has no security.txt", "shortDescription": {"text": "Public web service has no security.txt"}, "fullDescription": {"text": "security.txt gives researchers and customers a safe disclosure channel. Public web apps and APIs should publish it under /.well-known/security.txt."}, "properties": {"scanner": "repobility-web-presence", "category": "quality", "severity": "medium", "confidence": 0.78, "cwe": "", "owasp": ""}}, {"id": "AUC012", "name": "[AUC012] FastAPI interactive docs may be exposed by framework defaults: FastAPI exposes /docs, /redoc, and /openapi.json", "shortDescription": {"text": "[AUC012] FastAPI interactive docs may be exposed by framework defaults: FastAPI exposes /docs, /redoc, and /openapi.json by default. Public production APIs should explicitly disable those defaults, protect them behind admin authentication, "}, "fullDescription": {"text": "FastAPI exposes /docs, /redoc, and /openapi.json by default. Public production APIs should explicitly disable those defaults, protect them behind admin authentication, or publish a reviewed OpenAPI spec with declared security requirements."}, "properties": {"scanner": "repobility-access-control", "category": "auth", "severity": "medium", "confidence": 0.72, "cwe": "CWE-285", "owasp": "WSTG-AUTHZ"}}, {"id": "AUC002", "name": "[AUC002] Low visible authorization coverage in route inventory: Only 0.0% of discovered routes show nearby authenticatio", "shortDescription": {"text": "[AUC002] Low visible authorization coverage in route inventory: Only 0.0% of discovered routes show nearby authentication, authorization, middleware, or public-route evidence."}, "fullDescription": {"text": "Only 0.0% of discovered routes show nearby authentication, authorization, middleware, or public-route evidence."}, "properties": {"scanner": "repobility-access-control", "category": "auth", "severity": "medium", "confidence": 0.74, "cwe": "CWE-285", "owasp": "WSTG-AUTHZ"}}, {"id": "AUC001", "name": "[AUC001] No Repobility access matrix policy found: The repository uses web/API frameworks but does not define .repobilit", "shortDescription": {"text": "[AUC001] No Repobility access matrix policy found: The repository uses web/API frameworks but does not define .repobility/access.yml or equivalent authorization documentation."}, "fullDescription": {"text": "The repository uses web/API frameworks but does not define .repobility/access.yml or equivalent authorization documentation."}, "properties": {"scanner": "repobility-access-control", "category": "auth", "severity": "medium", "confidence": 0.92, "cwe": "CWE-285", "owasp": "WSTG-AUTHZ"}}, {"id": "GHSA-887c-mr87-cxwp", "name": "torch: GHSA-887c-mr87-cxwp", "shortDescription": {"text": "torch: GHSA-887c-mr87-cxwp"}, "fullDescription": {"text": "PyTorch Improper Resource Shutdown or Release vulnerability"}, "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-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-w2fm-2cpv-w7v5", "name": "aiohttp: GHSA-w2fm-2cpv-w7v5", "shortDescription": {"text": "aiohttp: GHSA-w2fm-2cpv-w7v5"}, "fullDescription": {"text": "aiohttp allows unlimited trailer headers, leading to possible uncapped memory usage"}, "properties": {"scanner": "osv-scanner", "category": "dependency", "severity": "medium", "confidence": 0.88, "cwe": "", "owasp": ""}}, {"id": "GHSA-p998-jp59-783m", "name": "aiohttp: GHSA-p998-jp59-783m", "shortDescription": {"text": "aiohttp: GHSA-p998-jp59-783m"}, "fullDescription": {"text": "AIOHTTP affected by UNC SSRF/NTLMv2 Credential Theft/Local File Read in static resource handler on Windows"}, "properties": {"scanner": "osv-scanner", "category": "dependency", "severity": "medium", "confidence": 0.88, "cwe": "", "owasp": ""}}, {"id": "GHSA-m5qp-6w8w-w647", "name": "aiohttp: GHSA-m5qp-6w8w-w647", "shortDescription": {"text": "aiohttp: GHSA-m5qp-6w8w-w647"}, "fullDescription": {"text": "AIOHTTP has a Multipart Header Size Bypass"}, "properties": {"scanner": "osv-scanner", "category": "dependency", "severity": "medium", "confidence": 0.88, "cwe": "", "owasp": ""}}, {"id": "GHSA-jg22-mg44-37j8", "name": "aiohttp: GHSA-jg22-mg44-37j8", "shortDescription": {"text": "aiohttp: GHSA-jg22-mg44-37j8"}, "fullDescription": {"text": "AIOHTTP is Vulnerable to Deserialization of Untrusted Data"}, "properties": {"scanner": "osv-scanner", "category": "dependency", "severity": "medium", "confidence": 0.88, "cwe": "", "owasp": ""}}, {"id": "GHSA-hg6j-4rv6-33pg", "name": "aiohttp: GHSA-hg6j-4rv6-33pg", "shortDescription": {"text": "aiohttp: GHSA-hg6j-4rv6-33pg"}, "fullDescription": {"text": "AIOHTTP is vulnerable to cross-origin redirect with per-request cookies"}, "properties": {"scanner": "osv-scanner", "category": "dependency", "severity": "medium", "confidence": 0.88, "cwe": "", "owasp": ""}}, {"id": "GHSA-c427-h43c-vf67", "name": "aiohttp: GHSA-c427-h43c-vf67", "shortDescription": {"text": "aiohttp: GHSA-c427-h43c-vf67"}, "fullDescription": {"text": "AIOHTTP accepts duplicate Host headers"}, "properties": {"scanner": "osv-scanner", "category": "dependency", "severity": "medium", "confidence": 0.88, "cwe": "", "owasp": ""}}, {"id": "GHSA-jj3x-wxrx-4x23", "name": "aiohttp: GHSA-jj3x-wxrx-4x23", "shortDescription": {"text": "aiohttp: GHSA-jj3x-wxrx-4x23"}, "fullDescription": {"text": "AIOHTTP vulnerable to DoS when bypassing asserts"}, "properties": {"scanner": "osv-scanner", "category": "dependency", "severity": "medium", "confidence": 0.88, "cwe": "", "owasp": ""}}, {"id": "GHSA-g84x-mcqj-x9qq", "name": "aiohttp: GHSA-g84x-mcqj-x9qq", "shortDescription": {"text": "aiohttp: GHSA-g84x-mcqj-x9qq"}, "fullDescription": {"text": "AIOHTTP vulnerable to DoS through chunked messages"}, "properties": {"scanner": "osv-scanner", "category": "dependency", "severity": "medium", "confidence": 0.88, "cwe": "", "owasp": ""}}, {"id": "GHSA-8495-4g3g-x7pr", "name": "aiohttp: GHSA-8495-4g3g-x7pr", "shortDescription": {"text": "aiohttp: GHSA-8495-4g3g-x7pr"}, "fullDescription": {"text": "aiohttp allows request smuggling due to incorrect parsing of chunk extensions"}, "properties": {"scanner": "osv-scanner", "category": "dependency", "severity": "medium", "confidence": 0.88, "cwe": "", "owasp": ""}}, {"id": "GHSA-6jhg-hg63-jvvf", "name": "aiohttp: GHSA-6jhg-hg63-jvvf", "shortDescription": {"text": "aiohttp: GHSA-6jhg-hg63-jvvf"}, "fullDescription": {"text": "AIOHTTP vulnerable to  denial of service through large payloads"}, "properties": {"scanner": "osv-scanner", "category": "dependency", "severity": "medium", "confidence": 0.88, "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": "SEC037", "name": "[SEC037] Uncontrolled Recursion \u2014 stack/depth exhaustion: Parsing arbitrary-depth user input (XML, JSON, YAML) without a", "shortDescription": {"text": "[SEC037] Uncontrolled Recursion \u2014 stack/depth exhaustion: Parsing arbitrary-depth user input (XML, JSON, YAML) without a depth limit, or recursive function over user-controlled structure. Attacker sends `{\"a\":{\"a\":{\"a\":...10000 levels...}}}"}, "fullDescription": {"text": "Use `defusedxml.ElementTree` instead of `xml.etree.ElementTree` \u2014 it rejects deeply-nested + billion-laughs payloads.\nFor JSON: set a depth limit explicitly:\n  import json\n  data = json.loads(s)  # then validate structure depth manually\nFor YAML: always use `yaml.safe_load`. For recursive code over user input, add an explicit depth counter and bail at depth > 100."}, "properties": {"scanner": "repobility-threat-engine", "category": "resource_exhaustion", "severity": "medium", "confidence": 1.0, "cwe": "", "owasp": ""}}, {"id": "SEC007", "name": "[SEC007] Unsafe Deserialization: Unsafe deserialization can execute arbitrary code.", "shortDescription": {"text": "[SEC007] Unsafe Deserialization: Unsafe deserialization can execute arbitrary code."}, "fullDescription": {"text": "Use yaml.safe_load() instead of yaml.load(). Avoid pickle for untrusted data."}, "properties": {"scanner": "repobility-threat-engine", "category": "deserialization", "severity": "medium", "confidence": 1.0, "cwe": "", "owasp": ""}}, {"id": "SEC119", "name": "[SEC119] World-writable / world-readable file permissions: World-writable files let any local user (or container neighbo", "shortDescription": {"text": "[SEC119] World-writable / world-readable file permissions: World-writable files let any local user (or container neighbor) tamper with data; world-readable files leak secrets."}, "fullDescription": {"text": "Use 0600 (owner rw only) for secrets, 0644 for general files, 0700 for directories with secrets. Java: `setReadable(true, true)` (owner-only)."}, "properties": {"scanner": "repobility-threat-engine", "category": "security", "severity": "medium", "confidence": 1.0, "cwe": "", "owasp": ""}}, {"id": "SEC005", "name": "[SEC005] Command Injection Risk: Unsafe shell execution or eval of user input.", "shortDescription": {"text": "[SEC005] Command Injection Risk: Unsafe shell execution or eval of user input."}, "fullDescription": {"text": "Use subprocess with shell=False and a list of args. Never eval user input."}, "properties": {"scanner": "repobility-threat-engine", "category": "injection", "severity": "medium", "confidence": 0.5, "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": "SEC012", "name": "[SEC012] ZipSlip \u2014 Archive Path Traversal: Archive extraction without path validation allows writing files outside the t", "shortDescription": {"text": "[SEC012] ZipSlip \u2014 Archive Path Traversal: Archive extraction without path validation allows writing files outside the target directory."}, "fullDescription": {"text": "Validate extracted paths with os.path.realpath() and ensure they stay within the target directory."}, "properties": {"scanner": "repobility-threat-engine", "category": "path_traversal", "severity": "medium", "confidence": 1.0, "cwe": "", "owasp": ""}}, {"id": "COMP001", "name": "[COMP001] High cognitive complexity: Function `create_agent` has cognitive complexity 16 (SonarSource scale). Cognitive ", "shortDescription": {"text": "[COMP001] High cognitive complexity: Function `create_agent` has cognitive complexity 16 (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 16."}, "properties": {"scanner": "repobility-threat-engine", "category": "quality", "severity": "medium", "confidence": 0.95, "cwe": "", "owasp": ""}}, {"id": "DEPCUR-PY", "name": "Python package `openai` is 1 major version(s) behind (1.109.1 -> 2.41.0)", "shortDescription": {"text": "Python package `openai` is 1 major version(s) behind (1.109.1 -> 2.41.0)"}, "fullDescription": {"text": "`openai==1.109.1` is 1 major version(s) behind the latest stable release on PyPI (2.41.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": "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": "MINED109", "name": "Mutable default argument in `__init__` (list)", "shortDescription": {"text": "Mutable default argument in `__init__` (list)"}, "fullDescription": {"text": "`def __init__(... = []/{}/set())` \u2014 Python's default value is constructed ONCE at function definition time and shared across all calls. Mutating it in one call mutates it for every future call too."}, "properties": {"scanner": "repobility-ast-engine", "category": "quality", "severity": "medium", "confidence": 1.0, "cwe": "", "owasp": ""}}, {"id": "AUC005", "name": "[AUC005] No authorization-focused tests detected: No test files with common authorization, ownership, 403, admin, or sup", "shortDescription": {"text": "[AUC005] No authorization-focused tests detected: No test files with common authorization, ownership, 403, admin, or super_admin assertions were found."}, "fullDescription": {"text": "No test files with common authorization, ownership, 403, admin, or super_admin assertions were found."}, "properties": {"scanner": "repobility-access-control", "category": "auth", "severity": "low", "confidence": 0.76, "cwe": "CWE-285", "owasp": "WSTG-AUTHZ"}}, {"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-mwh4-6h8g-pg8w", "name": "aiohttp: GHSA-mwh4-6h8g-pg8w", "shortDescription": {"text": "aiohttp: GHSA-mwh4-6h8g-pg8w"}, "fullDescription": {"text": "AIOHTTP has HTTP response splitting via \\r in reason phrase"}, "properties": {"scanner": "osv-scanner", "category": "dependency", "severity": "low", "confidence": 0.88, "cwe": "", "owasp": ""}}, {"id": "GHSA-hcc4-c3v8-rx92", "name": "aiohttp: GHSA-hcc4-c3v8-rx92", "shortDescription": {"text": "aiohttp: GHSA-hcc4-c3v8-rx92"}, "fullDescription": {"text": "AIOHTTP Affected by Denial of Service (DoS) via Unbounded DNS Cache in TCPConnector"}, "properties": {"scanner": "osv-scanner", "category": "dependency", "severity": "low", "confidence": 0.88, "cwe": "", "owasp": ""}}, {"id": "GHSA-966j-vmvw-g2g9", "name": "aiohttp: GHSA-966j-vmvw-g2g9", "shortDescription": {"text": "aiohttp: GHSA-966j-vmvw-g2g9"}, "fullDescription": {"text": "AIOHTTP leaks Cookie and Proxy-Authorization headers on cross-origin redirect"}, "properties": {"scanner": "osv-scanner", "category": "dependency", "severity": "low", "confidence": 0.88, "cwe": "", "owasp": ""}}, {"id": "GHSA-63hf-3vf5-4wqf", "name": "aiohttp: GHSA-63hf-3vf5-4wqf", "shortDescription": {"text": "aiohttp: GHSA-63hf-3vf5-4wqf"}, "fullDescription": {"text": "AIOHTTP's C parser (llhttp) accepts null bytes and control characters in response header values - header injection/security bypass"}, "properties": {"scanner": "osv-scanner", "category": "dependency", "severity": "low", "confidence": 0.88, "cwe": "", "owasp": ""}}, {"id": "GHSA-3wq7-rqq7-wx6j", "name": "aiohttp: GHSA-3wq7-rqq7-wx6j", "shortDescription": {"text": "aiohttp: GHSA-3wq7-rqq7-wx6j"}, "fullDescription": {"text": "AIOHTTP has late size enforcement for non-file multipart fields causes memory DoS"}, "properties": {"scanner": "osv-scanner", "category": "dependency", "severity": "low", "confidence": 0.88, "cwe": "", "owasp": ""}}, {"id": "GHSA-2vrm-gr82-f7m5", "name": "aiohttp: GHSA-2vrm-gr82-f7m5", "shortDescription": {"text": "aiohttp: GHSA-2vrm-gr82-f7m5"}, "fullDescription": {"text": "AIOHTTP has CRLF injection through multipart part content type header construction"}, "properties": {"scanner": "osv-scanner", "category": "dependency", "severity": "low", "confidence": 0.88, "cwe": "", "owasp": ""}}, {"id": "GHSA-mqqc-3gqh-h2x8", "name": "aiohttp: GHSA-mqqc-3gqh-h2x8", "shortDescription": {"text": "aiohttp: GHSA-mqqc-3gqh-h2x8"}, "fullDescription": {"text": "AIOHTTP has unicode match groups in regexes for ASCII protocol elements"}, "properties": {"scanner": "osv-scanner", "category": "dependency", "severity": "low", "confidence": 0.88, "cwe": "", "owasp": ""}}, {"id": "GHSA-fh55-r93g-j68g", "name": "aiohttp: GHSA-fh55-r93g-j68g", "shortDescription": {"text": "aiohttp: GHSA-fh55-r93g-j68g"}, "fullDescription": {"text": "AIOHTTP Vulnerable to Cookie Parser Warning Storm"}, "properties": {"scanner": "osv-scanner", "category": "dependency", "severity": "low", "confidence": 0.88, "cwe": "", "owasp": ""}}, {"id": "GHSA-9548-qrrj-x5pj", "name": "aiohttp: GHSA-9548-qrrj-x5pj", "shortDescription": {"text": "aiohttp: GHSA-9548-qrrj-x5pj"}, "fullDescription": {"text": " AIOHTTP is vulnerable to HTTP Request/Response Smuggling through incorrect parsing of chunked trailer sections"}, "properties": {"scanner": "osv-scanner", "category": "dependency", "severity": "low", "confidence": 0.88, "cwe": "", "owasp": ""}}, {"id": "GHSA-69f9-5gxw-wvc2", "name": "aiohttp: GHSA-69f9-5gxw-wvc2", "shortDescription": {"text": "aiohttp: GHSA-69f9-5gxw-wvc2"}, "fullDescription": {"text": "AIOHTTP's unicode processing of header values could cause parsing discrepancies"}, "properties": {"scanner": "osv-scanner", "category": "dependency", "severity": "low", "confidence": 0.88, "cwe": "", "owasp": ""}}, {"id": "GHSA-54jq-c3m8-4m76", "name": "aiohttp: GHSA-54jq-c3m8-4m76", "shortDescription": {"text": "aiohttp: GHSA-54jq-c3m8-4m76"}, "fullDescription": {"text": "AIOHTTP vulnerable to brute-force leak of internal static \ufb01le path components"}, "properties": {"scanner": "osv-scanner", "category": "dependency", "severity": "low", "confidence": 0.88, "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": "DKR012", "name": "Dockerfile keeps pip download cache", "shortDescription": {"text": "Dockerfile keeps pip download cache"}, "fullDescription": {"text": "Pip's package cache increases image size and can preserve unnecessary artifacts."}, "properties": {"scanner": "repobility-docker", "category": "docker", "severity": "low", "confidence": 0.72, "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": "MINED040", "name": "[MINED040] Python Yaml Load Unsafe (and 1 more): Same pattern found in 1 additional files. Review if needed.", "shortDescription": {"text": "[MINED040] Python Yaml Load Unsafe (and 1 more): Same pattern found in 1 additional files. Review if needed."}, "fullDescription": {"text": "Review and fix per the pattern semantics. See CWE-502 /  for context."}, "properties": {"scanner": "repobility-threat-engine", "category": "quality", "severity": "info", "confidence": 0.2, "cwe": "", "owasp": ""}}, {"id": "MINED018", "name": "[MINED018] Unsafe Deserialization Pickle (and 1 more): Same pattern found in 1 additional files. Review if needed.", "shortDescription": {"text": "[MINED018] Unsafe Deserialization Pickle (and 1 more): Same pattern found in 1 additional files. Review if needed."}, "fullDescription": {"text": "Review and fix per the pattern semantics. See CWE-502 / A08:2021 for context."}, "properties": {"scanner": "repobility-threat-engine", "category": "quality", "severity": "info", "confidence": 0.2, "cwe": "", "owasp": ""}}, {"id": "SEC116", "name": "[SEC116] Ruby YAML.load / Marshal.load on untrusted input (and 1 more): Same pattern found in 1 additional files. Review", "shortDescription": {"text": "[SEC116] Ruby YAML.load / Marshal.load on untrusted input (and 1 more): Same pattern found in 1 additional files. Review if needed."}, "fullDescription": {"text": "Use `YAML.safe_load(input, permitted_classes: [Date])` \u2014 explicit class allowlist. Never use `Marshal.load` on untrusted data; serialize as JSON instead."}, "properties": {"scanner": "repobility-threat-engine", "category": "deserialization", "severity": "info", "confidence": 0.2, "cwe": "", "owasp": ""}}, {"id": "SEC079", "name": "[SEC079] Python: yaml.load without SafeLoader (and 1 more): Same pattern found in 1 additional files. Review if needed.", "shortDescription": {"text": "[SEC079] Python: yaml.load without SafeLoader (and 1 more): Same pattern found in 1 additional files. Review if needed."}, "fullDescription": {"text": "Use `yaml.safe_load(data)` or `yaml.load(data, Loader=yaml.SafeLoader)`."}, "properties": {"scanner": "repobility-threat-engine", "category": "quality", "severity": "info", "confidence": 0.2, "cwe": "", "owasp": ""}}, {"id": "MINED064", "name": "[MINED064] Python Input Call: input() blocks for stdin. Inappropriate in services.", "shortDescription": {"text": "[MINED064] Python Input Call: input() blocks for stdin. Inappropriate in services."}, "fullDescription": {"text": "Review and fix per the pattern semantics."}, "properties": {"scanner": "repobility-threat-engine", "category": "quality", "severity": "info", "confidence": 1.0, "cwe": "", "owasp": ""}}, {"id": "MINED067", "name": "[MINED067] Python Requests No Timeout (and 2 more): Same pattern found in 2 additional files. Review if needed.", "shortDescription": {"text": "[MINED067] Python Requests No Timeout (and 2 more): Same pattern found in 2 additional files. Review if needed."}, "fullDescription": {"text": "Review and fix per the pattern semantics. See CWE-400 /  for context."}, "properties": {"scanner": "repobility-threat-engine", "category": "quality", "severity": "info", "confidence": 0.2, "cwe": "", "owasp": ""}}, {"id": "SEC078", "name": "[SEC078] Python: requests without timeout (and 2 more): Same pattern found in 2 additional files. Review if needed.", "shortDescription": {"text": "[SEC078] Python: requests without timeout (and 2 more): Same pattern found in 2 additional files. Review if needed."}, "fullDescription": {"text": "Add `timeout=10` (or appropriate value) to every requests call."}, "properties": {"scanner": "repobility-threat-engine", "category": "quality", "severity": "info", "confidence": 0.2, "cwe": "", "owasp": ""}}, {"id": "SEC029", "name": "[SEC029] Server-Side Request Forgery (SSRF) \u2014 outbound HTTP from user input (and 6 more): Same pattern found in 6 additi", "shortDescription": {"text": "[SEC029] Server-Side Request Forgery (SSRF) \u2014 outbound HTTP from user input (and 6 more): Same pattern found in 6 additional files. Review if needed."}, "fullDescription": {"text": "Validate the URL against an allowlist BEFORE fetching:\n  ALLOWED = {'images.example.com', 'cdn.example.com'}\n  host = urlparse(url).hostname\n  if host not in ALLOWED: abort(400)\nOr use a server-side proxy (Imgproxy / serve-files-only-from-S3) that isolates outbound network access from the request handler.\nBlock private CIDRs explicitly: 10/8, 172.16/12, 192.168/16, 169.254/16."}, "properties": {"scanner": "repobility-threat-engine", "category": "ssrf", "severity": "info", "confidence": 0.2, "cwe": "", "owasp": ""}}, {"id": "MINED062", "name": "[MINED062] Python Dataclass No Fields (and 1 more): Same pattern found in 1 additional files. Review if needed.", "shortDescription": {"text": "[MINED062] Python Dataclass No Fields (and 1 more): Same pattern found in 1 additional files. Review if needed."}, "fullDescription": {"text": "Review and fix per the pattern semantics."}, "properties": {"scanner": "repobility-threat-engine", "category": "quality", "severity": "info", "confidence": 0.2, "cwe": "", "owasp": ""}}, {"id": "MINED043", "name": "[MINED043] Http Not Https: Hardcoded http:// (not localhost) for endpoints that handle credentials or data.", "shortDescription": {"text": "[MINED043] Http Not Https: Hardcoded http:// (not localhost) for endpoints that handle credentials or data."}, "fullDescription": {"text": "Review and fix per the pattern semantics. See CWE-319 / A02:2021 for context."}, "properties": {"scanner": "repobility-threat-engine", "category": "quality", "severity": "info", "confidence": 1.0, "cwe": "", "owasp": ""}}, {"id": "MINED050", "name": "[MINED050] Stub Only Function (and 15 more): Same pattern found in 15 additional files. Review if needed.", "shortDescription": {"text": "[MINED050] Stub Only Function (and 15 more): Same pattern found in 15 additional files. Review if needed."}, "fullDescription": {"text": "Review and fix per the pattern semantics. See CWE-1188 /  for context."}, "properties": {"scanner": "repobility-threat-engine", "category": "quality", "severity": "info", "confidence": 0.2, "cwe": "", "owasp": ""}}, {"id": "MINED001", "name": "[MINED001] Bare Except Pass (and 2 more): Same pattern found in 2 additional files. Review if needed.", "shortDescription": {"text": "[MINED001] Bare Except Pass (and 2 more): Same pattern found in 2 additional files. Review if needed."}, "fullDescription": {"text": "Review and fix per the pattern semantics. See CWE-755 /  for context."}, "properties": {"scanner": "repobility-threat-engine", "category": "quality", "severity": "info", "confidence": 0.2, "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-209", "name": "torch: PYSEC-2025-209", "shortDescription": {"text": "torch: PYSEC-2025-209"}, "fullDescription": {"text": "An issue in pytorch v2.7.0 can lead to a Denial of Service (DoS) when a PyTorch model consists of torch.Tensor.to_sparse() and torch.Tensor.to_dense() and is compiled by Inductor."}, "properties": {"scanner": "osv-scanner", "category": "dependency", "severity": "high", "confidence": 0.88, "cwe": "", "owasp": ""}}, {"id": "PYSEC-2025-208", "name": "torch: PYSEC-2025-208", "shortDescription": {"text": "torch: PYSEC-2025-208"}, "fullDescription": {"text": "A buffer overflow occurs in pytorch v2.7.0 when a PyTorch model consists of torch.nn.Conv2d, torch.nn.functional.hardshrink, and torch.Tensor.view-torch.mv() and is compiled by Inductor, leading to a Denial of Service (DoS)."}, "properties": {"scanner": "osv-scanner", "category": "dependency", "severity": "high", "confidence": 0.88, "cwe": "", "owasp": ""}}, {"id": "PYSEC-2025-207", "name": "torch: PYSEC-2025-207", "shortDescription": {"text": "torch: PYSEC-2025-207"}, "fullDescription": {"text": "A Name Error occurs in pytorch v2.7.0 when a PyTorch model consists of torch.cummin and is compiled by Inductor, leading to a Denial of Service (DoS)."}, "properties": {"scanner": "osv-scanner", "category": "dependency", "severity": "high", "confidence": 0.88, "cwe": "", "owasp": ""}}, {"id": "PYSEC-2025-206", "name": "torch: PYSEC-2025-206", "shortDescription": {"text": "torch: PYSEC-2025-206"}, "fullDescription": {"text": "pytorch v2.8.0 was discovered to contain an integer overflow in the component torch.nan_to_num-.long()."}, "properties": {"scanner": "osv-scanner", "category": "dependency", "severity": "high", "confidence": 0.88, "cwe": "", "owasp": ""}}, {"id": "PYSEC-2025-205", "name": "torch: PYSEC-2025-205", "shortDescription": {"text": "torch: PYSEC-2025-205"}, "fullDescription": {"text": "A syntax error in the component proxy_tensor.py of pytorch v2.7.0 allows attackers to cause a Denial of Service (DoS)."}, "properties": {"scanner": "osv-scanner", "category": "dependency", "severity": "high", "confidence": 0.88, "cwe": "", "owasp": ""}}, {"id": "PYSEC-2025-204", "name": "torch: PYSEC-2025-204", "shortDescription": {"text": "torch: PYSEC-2025-204"}, "fullDescription": {"text": "pytorch v2.8.0 was discovered to display unexpected behavior when the components torch.rot90 and torch.randn_like are used together."}, "properties": {"scanner": "osv-scanner", "category": "dependency", "severity": "high", "confidence": 0.88, "cwe": "", "owasp": ""}}, {"id": "PYSEC-2025-203", "name": "torch: PYSEC-2025-203", "shortDescription": {"text": "torch: PYSEC-2025-203"}, "fullDescription": {"text": "An issue in the component torch.linalg.lu of pytorch v2.8.0 allows attackers to cause a Denial of Service (DoS) when performing a slice operation."}, "properties": {"scanner": "osv-scanner", "category": "dependency", "severity": "high", "confidence": 0.88, "cwe": "", "owasp": ""}}, {"id": "PYSEC-2025-198", "name": "torch: PYSEC-2025-198", "shortDescription": {"text": "torch: PYSEC-2025-198"}, "fullDescription": {"text": "In PyTorch through 2.6.0, when eager is used, nn.PairwiseDistance(p=2) produces incorrect results."}, "properties": {"scanner": "osv-scanner", "category": "dependency", "severity": "high", "confidence": 0.88, "cwe": "", "owasp": ""}}, {"id": "PYSEC-2025-191", "name": "torch: PYSEC-2025-191", "shortDescription": {"text": "torch: PYSEC-2025-191"}, "fullDescription": {"text": "A vulnerability, which was classified as problematic, has been found in PyTorch 2.6.0+cu124. Affected by this issue is the function torch.mkldnn_max_pool2d. The manipulation leads to denial of service. An attack has to be approached locally. The exploit has been disclosed to the public and may be used. The real existence of this vulnerability is still doubted at the moment. The security policy of the project warns to use unknown models which might establish malicious effects."}, "properties": {"scanner": "osv-scanner", "category": "dependency", "severity": "high", "confidence": 0.88, "cwe": "", "owasp": ""}}, {"id": "PYSEC-2024-259", "name": "torch: PYSEC-2024-259", "shortDescription": {"text": "torch: PYSEC-2024-259"}, "fullDescription": {"text": "In PyTorch <=2.4.1, the RemoteModule has Deserialization RCE. NOTE: this is disputed by multiple parties because this is intended behavior in PyTorch distributed computing."}, "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-7gcm-g887-7qv7", "name": "protobuf: GHSA-7gcm-g887-7qv7", "shortDescription": {"text": "protobuf: GHSA-7gcm-g887-7qv7"}, "fullDescription": {"text": "protobuf affected by a JSON recursion depth bypass"}, "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": "GHSA-2qfp-q593-8484", "name": "brotli: GHSA-2qfp-q593-8484", "shortDescription": {"text": "brotli: GHSA-2qfp-q593-8484"}, "fullDescription": {"text": "Scrapy is vulnerable to a denial of service (DoS) attack due to flaws in brotli decompression implementation"}, "properties": {"scanner": "osv-scanner", "category": "dependency", "severity": "high", "confidence": 0.88, "cwe": "", "owasp": ""}}, {"id": "GHSA-9h52-p55h-vw2f", "name": "mcp: GHSA-9h52-p55h-vw2f", "shortDescription": {"text": "mcp: GHSA-9h52-p55h-vw2f"}, "fullDescription": {"text": "Model Context Protocol (MCP) Python SDK does not enable DNS rebinding protection by default"}, "properties": {"scanner": "osv-scanner", "category": "dependency", "severity": "high", "confidence": 0.88, "cwe": "", "owasp": ""}}, {"id": "GHSA-6mq8-rvhq-8wgg", "name": "aiohttp: GHSA-6mq8-rvhq-8wgg", "shortDescription": {"text": "aiohttp: GHSA-6mq8-rvhq-8wgg"}, "fullDescription": {"text": "AIOHTTP's HTTP Parser auto_decompress feature is vulnerable to zip bomb"}, "properties": {"scanner": "osv-scanner", "category": "dependency", "severity": "high", "confidence": 0.88, "cwe": "", "owasp": ""}}, {"id": "MINED034", "name": "[MINED034] Python Subprocess Shell True: subprocess(..., shell=True) enables command injection.", "shortDescription": {"text": "[MINED034] Python Subprocess Shell True: subprocess(..., shell=True) enables command injection."}, "fullDescription": {"text": "Review and fix per the pattern semantics. See CWE-78 /  for context."}, "properties": {"scanner": "repobility-threat-engine", "category": "quality", "severity": "high", "confidence": 1.0, "cwe": "", "owasp": ""}}, {"id": "MINED020", "name": "[MINED020] Logging Credential Via Fstring: logger.error(f\"failed for {api_key}\") \u2014 secrets end up in log aggregators / s", "shortDescription": {"text": "[MINED020] Logging Credential Via Fstring: logger.error(f\"failed for {api_key}\") \u2014 secrets end up in log aggregators / sentry."}, "fullDescription": {"text": "Review and fix per the pattern semantics. See CWE-532 / A09:2021 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": "SEC080", "name": "[SEC080] Python: tarfile.extractall without filter: tarfile.extract*() without filter='data' allows path-traversal (CVE-", "shortDescription": {"text": "[SEC080] Python: tarfile.extractall without filter: tarfile.extract*() without filter='data' allows path-traversal (CVE-2007-4559, fixed via PEP 706 in 3.12). Ported from bandit B202 (Apache-2.0)."}, "fullDescription": {"text": "Add `filter='data'` (Python \u2265 3.12) or manually validate member paths against `os.path.abspath`."}, "properties": {"scanner": "repobility-threat-engine", "category": "quality", "severity": "high", "confidence": 1.0, "cwe": "", "owasp": ""}}, {"id": "MINED006", "name": "[MINED006] Overcatch Baseexception: except BaseException: ... \u2014 prevents Ctrl+C and SystemExit from working.", "shortDescription": {"text": "[MINED006] Overcatch Baseexception: except BaseException: ... \u2014 prevents Ctrl+C and SystemExit from working."}, "fullDescription": {"text": "Review and fix per the pattern semantics. See CWE-705 /  for context."}, "properties": {"scanner": "repobility-threat-engine", "category": "quality", "severity": "high", "confidence": 1.0, "cwe": "", "owasp": ""}}, {"id": "AGT002", "name": "LLM memory extraction can be prompt-injected into storing fake facts", "shortDescription": {"text": "LLM memory extraction can be prompt-injected into storing fake facts"}, "fullDescription": {"text": "Strict-JSON memory extraction from raw user and assistant text can be manipulated by a user message unless extracted facts are schema-validated and filtered before persistence."}, "properties": {"scanner": "repobility-agent-runtime", "category": "llm_injection", "severity": "high", "confidence": 0.82, "cwe": "", "owasp": ""}}, {"id": "MINED115", "name": "Action `actions/upload-artifact` pinned to mutable ref `@v4`", "shortDescription": {"text": "Action `actions/upload-artifact` pinned to mutable ref `@v4`"}, "fullDescription": {"text": "`uses: actions/upload-artifact@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.10-slim` not pinned by digest", "shortDescription": {"text": "Dockerfile FROM `python:3.10-slim` not pinned by digest"}, "fullDescription": {"text": "`FROM python:3.10-slim` 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": "MINED131", "name": "pre-commit hook `https://github.com/astral-sh/ruff-pre-commit` pinned to mutable rev `v0.9.6`", "shortDescription": {"text": "pre-commit hook `https://github.com/astral-sh/ruff-pre-commit` pinned to mutable rev `v0.9.6`"}, "fullDescription": {"text": "`.pre-commit-config.yaml` references `https://github.com/astral-sh/ruff-pre-commit` at `rev: v0.9.6`. If `{rev}` is a branch or version tag, the repo owner can push new code there and `pre-commit install --install-hooks` will fetch it on every developer's machine."}, "properties": {"scanner": "repobility-supply-chain", "category": "dependency", "severity": "high", "confidence": 0.9, "cwe": "", "owasp": ""}}, {"id": "MINED112", "name": "FastAPI POST /asr has no auth", "shortDescription": {"text": "FastAPI POST /asr has no auth"}, "fullDescription": {"text": "Handler `transcribe_audio` is registered with router/app.post(...) but no Depends/Security parameter is declared and no auth marker appears in the function body."}, "properties": {"scanner": "repobility-route-auth", "category": "quality", "severity": "high", "confidence": 0.8, "cwe": "", "owasp": ""}}, {"id": "MINED110", "name": "Blocking call `requests.post` inside async function `chat_completion`", "shortDescription": {"text": "Blocking call `requests.post` inside async function `chat_completion`"}, "fullDescription": {"text": "`requests.post` is a synchronous (blocking) call. When invoked inside an `async def` it stalls the event loop, preventing every other coroutine in the process from making progress."}, "properties": {"scanner": "repobility-ast-engine", "category": "quality", "severity": "high", "confidence": 1.0, "cwe": "", "owasp": ""}}, {"id": "MINED108", "name": "`self._migrate_field` used but never assigned in __init__", "shortDescription": {"text": "`self._migrate_field` used but never assigned in __init__"}, "fullDescription": {"text": "Method `_upgrade_conf_yaml` of class `to_v_1_2_1` reads `self._migrate_field`, 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": "CORE_NO_TESTS", "name": "No test files found", "shortDescription": {"text": "No test files found"}, "fullDescription": {"text": "Add a test directory (tests/ or __tests__/) with unit tests for core functionality. Use pytest (Python), Jest (JS/TS), or go test (Go). Start with tests for critical business logic and security-sensitive functions."}, "properties": {"scanner": "repobility-core", "category": "testing", "severity": "high", "confidence": null, "cwe": "", "owasp": ""}}, {"id": "GHSA-53q9-r3pm-6pq6", "name": "torch: GHSA-53q9-r3pm-6pq6", "shortDescription": {"text": "torch: GHSA-53q9-r3pm-6pq6"}, "fullDescription": {"text": "PyTorch: `torch.load` with `weights_only=True` leads to remote code execution"}, "properties": {"scanner": "osv-scanner", "category": "dependency", "severity": "critical", "confidence": 0.88, "cwe": "", "owasp": ""}}, {"id": "MINED116", "name": "Workflow uses `secrets.DOCKERHUB_TOKEN` on a `pull_request` trigger", "shortDescription": {"text": "Workflow uses `secrets.DOCKERHUB_TOKEN` on a `pull_request` trigger"}, "fullDescription": {"text": "This workflow triggers on `pull_request`, which checks out the FORK's code. Referencing `${ secrets.DOCKERHUB_TOKEN }` lets a PR from any fork exfiltrate the secret (modify a script, log the value, etc.). Use `pull_request_target` ONLY with strict checkout discipline (no fork code in the trusted context)."}, "properties": {"scanner": "repobility-supply-chain", "category": "dependency", "severity": "critical", "confidence": 0.9, "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/686"}, "properties": {"repository": "Open-LLM-VTuber/Open-LLM-VTuber", "repoUrl": "https://github.com/Open-LLM-VTuber/Open-LLM-VTuber", "branch": "main"}, "results": [{"ruleId": "WEB003", "level": "warning", "message": {"text": "Public web service has no security.txt"}, "properties": {"repobilityId": 53635, "scanner": "repobility-web-presence", "fingerprint": "5cd26606c5a53c9f403ff7a92a6917c19cf440a23ce03e2b90e8c493312ef8cd", "category": "quality", "severity": "medium", "confidence": 0.78, "triageState": "open", "verdict": "likely", "isResolved": false, "reason": "Repository looks like a public web app/API but no security.txt file or route was discovered.", "evidence": {"rule_id": "WEB003", "scanner": "repobility-web-presence", "references": ["https://www.rfc-editor.org/rfc/rfc9116", "https://github.com/Lissy93/web-check"], "correlation_key": "fp|5cd26606c5a53c9f403ff7a92a6917c19cf440a23ce03e2b90e8c493312ef8cd"}}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": ".well-known/security.txt"}, "region": {"startLine": 1}}}]}, {"ruleId": "AUC012", "level": "warning", "message": {"text": "[AUC012] FastAPI interactive docs may be exposed by framework defaults: FastAPI exposes /docs, /redoc, and /openapi.json by default. Public production APIs should explicitly disable those defaults, protect them behind admin authentication, or publish a reviewed OpenAPI spec with declared security requirements."}, "properties": {"repobilityId": 53633, "scanner": "repobility-access-control", "fingerprint": "27f8c50db94c1d5138790446654bd4d0b5823ce185d040059e5a7502358b5899", "category": "auth", "severity": "medium", "confidence": 0.72, "triageState": "open", "verdict": "needs_review", "isResolved": false, "reason": "Static route and framework evidence require project-owner confirmation.", "evidence": {"apps": [{"line": 75, "file_path": "src/open_llm_vtuber/server.py", "docs_url_disabled": false, "redoc_url_disabled": false, "openapi_url_disabled": false}], "scanner": "repobility-access-control", "correlation_key": "fp|27f8c50db94c1d5138790446654bd4d0b5823ce185d040059e5a7502358b5899"}}}, {"ruleId": "AUC002", "level": "warning", "message": {"text": "[AUC002] Low visible authorization coverage in route inventory: Only 0.0% of discovered routes show nearby authentication, authorization, middleware, or public-route evidence."}, "properties": {"repobilityId": 53632, "scanner": "repobility-access-control", "fingerprint": "b2b220ffd00544f11577c95c6ebba1d9777fd8f8945f26d82bcf37e8c3177020", "category": "auth", "severity": "medium", "confidence": 0.74, "triageState": "open", "verdict": "needs_review", "isResolved": false, "reason": "Static route and framework evidence require project-owner confirmation.", "evidence": {"scanner": "repobility-access-control", "endpoint_count": 4, "correlation_key": "fp|b2b220ffd00544f11577c95c6ebba1d9777fd8f8945f26d82bcf37e8c3177020", "auth_visible_percent": 0.0}}}, {"ruleId": "AUC001", "level": "warning", "message": {"text": "[AUC001] No Repobility access matrix policy found: The repository uses web/API frameworks but does not define .repobility/access.yml or equivalent authorization documentation."}, "properties": {"repobilityId": 53631, "scanner": "repobility-access-control", "fingerprint": "f1305052c3ba1e6c1cdb5dccc19e58a8168cf78b176658f32b1fc823df3e9d10", "category": "auth", "severity": "medium", "confidence": 0.92, "triageState": "open", "verdict": "likely", "isResolved": false, "reason": "Static route and framework evidence require project-owner confirmation.", "evidence": {"scanner": "repobility-access-control", "frameworks": ["FastAPI"], "expected_files": [".repobility/access.yml", ".repobility/access.yaml", ".repobility/access.json", ".repobility/authorization.yml"], "correlation_key": "fp|f1305052c3ba1e6c1cdb5dccc19e58a8168cf78b176658f32b1fc823df3e9d10"}}}, {"ruleId": "GHSA-887c-mr87-cxwp", "level": "warning", "message": {"text": "torch: GHSA-887c-mr87-cxwp"}, "properties": {"repobilityId": 53628, "scanner": "osv-scanner", "fingerprint": "14a886bfae86571e107bd7cd8c492076f4524c575578c228b676b308847f06c0", "category": "dependency", "severity": "medium", "confidence": 0.88, "triageState": "open", "verdict": "", "isResolved": false, "reason": "", "evidence": {"match": "", "aliases": ["BIT-pytorch-2025-3730", "CVE-2025-3730"], "package": "torch", "rule_id": "GHSA-887c-mr87-cxwp", "scanner": "osv-scanner", "correlation_key": "vuln|torch|CVE-2025-3730|uv.lock"}}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "uv.lock"}, "region": {"startLine": 1}}}]}, {"ruleId": "GHSA-gc5v-m9x4-r6x2", "level": "warning", "message": {"text": "requests: GHSA-gc5v-m9x4-r6x2"}, "properties": {"repobilityId": 53614, "scanner": "osv-scanner", "fingerprint": "e884985e28f71ca0fc1c2b7bb4ab3804118148f9826bc4963d61cc8124554f58", "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|uv.lock"}}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "uv.lock"}, "region": {"startLine": 1}}}]}, {"ruleId": "GHSA-mj87-hwqh-73pj", "level": "warning", "message": {"text": "python-multipart: GHSA-mj87-hwqh-73pj"}, "properties": {"repobilityId": 53611, "scanner": "osv-scanner", "fingerprint": "8834df3dbd3b1c1b4de1142909b33800225a613b094d9c8dd1da59fb20d9460a", "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|uv.lock"}}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "uv.lock"}, "region": {"startLine": 1}}}]}, {"ruleId": "GHSA-mf9w-mj56-hr94", "level": "warning", "message": {"text": "python-dotenv: GHSA-mf9w-mj56-hr94"}, "properties": {"repobilityId": 53610, "scanner": "osv-scanner", "fingerprint": "9fa45bb35d6c42713aa5ad20c133330f7651c7c5a59abc07a1c90866c86a92fa", "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|uv.lock"}}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "uv.lock"}, "region": {"startLine": 1}}}]}, {"ruleId": "GHSA-65pc-fj4g-8rjx", "level": "warning", "message": {"text": "idna: GHSA-65pc-fj4g-8rjx"}, "properties": {"repobilityId": 53600, "scanner": "osv-scanner", "fingerprint": "3cb0e6e51097792f0802522bd5a1c534f3c96b9d90576d70a538075f8c4d5bb0", "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|uv.lock"}}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "uv.lock"}, "region": {"startLine": 1}}}]}, {"ruleId": "GHSA-w2fm-2cpv-w7v5", "level": "warning", "message": {"text": "aiohttp: GHSA-w2fm-2cpv-w7v5"}, "properties": {"repobilityId": 53595, "scanner": "osv-scanner", "fingerprint": "79a220d6d0166b58cfbb40ff74faaf9c1f86aa2ae45d8c67c12832894b820c2b", "category": "dependency", "severity": "medium", "confidence": 0.88, "triageState": "open", "verdict": "", "isResolved": false, "reason": "", "evidence": {"match": "", "aliases": ["CVE-2026-22815"], "package": "aiohttp", "rule_id": "GHSA-w2fm-2cpv-w7v5", "scanner": "osv-scanner", "correlation_key": "vuln|aiohttp|CVE-2026-22815|uv.lock"}}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "uv.lock"}, "region": {"startLine": 1}}}]}, {"ruleId": "GHSA-p998-jp59-783m", "level": "warning", "message": {"text": "aiohttp: GHSA-p998-jp59-783m"}, "properties": {"repobilityId": 53594, "scanner": "osv-scanner", "fingerprint": "48f2069051382c71eee301e42997717bbe2a2ea42c991ad9260eb0bdc8f6f136", "category": "dependency", "severity": "medium", "confidence": 0.88, "triageState": "open", "verdict": "", "isResolved": false, "reason": "", "evidence": {"match": "", "aliases": ["CVE-2026-34515"], "package": "aiohttp", "rule_id": "GHSA-p998-jp59-783m", "scanner": "osv-scanner", "correlation_key": "vuln|aiohttp|CVE-2026-34515|uv.lock"}}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "uv.lock"}, "region": {"startLine": 1}}}]}, {"ruleId": "GHSA-m5qp-6w8w-w647", "level": "warning", "message": {"text": "aiohttp: GHSA-m5qp-6w8w-w647"}, "properties": {"repobilityId": 53592, "scanner": "osv-scanner", "fingerprint": "697dcbe15596d7d5afeb4a6664c7ef3e36a601a784e31edc1ce7c26d043b678e", "category": "dependency", "severity": "medium", "confidence": 0.88, "triageState": "open", "verdict": "", "isResolved": false, "reason": "", "evidence": {"match": "", "aliases": ["CVE-2026-34516"], "package": "aiohttp", "rule_id": "GHSA-m5qp-6w8w-w647", "scanner": "osv-scanner", "correlation_key": "vuln|aiohttp|CVE-2026-34516|uv.lock"}}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "uv.lock"}, "region": {"startLine": 1}}}]}, {"ruleId": "GHSA-jg22-mg44-37j8", "level": "warning", "message": {"text": "aiohttp: GHSA-jg22-mg44-37j8"}, "properties": {"repobilityId": 53591, "scanner": "osv-scanner", "fingerprint": "f360dcc0eba31763fb048fbf952ff9aaacd93fae36b950018274d5457fa1322d", "category": "dependency", "severity": "medium", "confidence": 0.88, "triageState": "open", "verdict": "", "isResolved": false, "reason": "", "evidence": {"match": "", "aliases": ["CVE-2026-34993"], "package": "aiohttp", "rule_id": "GHSA-jg22-mg44-37j8", "scanner": "osv-scanner", "correlation_key": "vuln|aiohttp|CVE-2026-34993|uv.lock"}}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "uv.lock"}, "region": {"startLine": 1}}}]}, {"ruleId": "GHSA-hg6j-4rv6-33pg", "level": "warning", "message": {"text": "aiohttp: GHSA-hg6j-4rv6-33pg"}, "properties": {"repobilityId": 53590, "scanner": "osv-scanner", "fingerprint": "2da1f8cf81a5e62587e98e266536e6b0ec96ebc178f00a59702cebb0a7957e28", "category": "dependency", "severity": "medium", "confidence": 0.88, "triageState": "open", "verdict": "", "isResolved": false, "reason": "", "evidence": {"match": "", "aliases": ["CVE-2026-47265"], "package": "aiohttp", "rule_id": "GHSA-hg6j-4rv6-33pg", "scanner": "osv-scanner", "correlation_key": "vuln|aiohttp|CVE-2026-47265|uv.lock"}}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "uv.lock"}, "region": {"startLine": 1}}}]}, {"ruleId": "GHSA-c427-h43c-vf67", "level": "warning", "message": {"text": "aiohttp: GHSA-c427-h43c-vf67"}, "properties": {"repobilityId": 53588, "scanner": "osv-scanner", "fingerprint": "4ab5b4256381a2e847fada3d4f68ca33751b8c550fe83f9bf343525049cfd2a2", "category": "dependency", "severity": "medium", "confidence": 0.88, "triageState": "open", "verdict": "", "isResolved": false, "reason": "", "evidence": {"match": "", "aliases": ["CVE-2026-34525"], "package": "aiohttp", "rule_id": "GHSA-c427-h43c-vf67", "scanner": "osv-scanner", "correlation_key": "vuln|aiohttp|CVE-2026-34525|uv.lock"}}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "uv.lock"}, "region": {"startLine": 1}}}]}, {"ruleId": "GHSA-887c-mr87-cxwp", "level": "warning", "message": {"text": "torch: GHSA-887c-mr87-cxwp"}, "properties": {"repobilityId": 53581, "scanner": "osv-scanner", "fingerprint": "cd9d29a18f3a471b652a188ecab309d7b384d6896b51dcb4aac681c221f407db", "category": "dependency", "severity": "medium", "confidence": 0.88, "triageState": "open", "verdict": "", "isResolved": false, "reason": "", "evidence": {"match": "", "aliases": ["BIT-pytorch-2025-3730", "CVE-2025-3730"], "package": "torch", "rule_id": "GHSA-887c-mr87-cxwp", "scanner": "osv-scanner", "correlation_key": "vuln|torch|CVE-2025-3730|requirements.txt"}}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "requirements.txt"}, "region": {"startLine": 1}}}]}, {"ruleId": "GHSA-gc5v-m9x4-r6x2", "level": "warning", "message": {"text": "requests: GHSA-gc5v-m9x4-r6x2"}, "properties": {"repobilityId": 53567, "scanner": "osv-scanner", "fingerprint": "df69fc105f839b8858988bd945af94347c2e8a5ab6be2c5dec785fcd4d2fc827", "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|requirements.txt"}}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "requirements.txt"}, "region": {"startLine": 1}}}]}, {"ruleId": "GHSA-mj87-hwqh-73pj", "level": "warning", "message": {"text": "python-multipart: GHSA-mj87-hwqh-73pj"}, "properties": {"repobilityId": 53564, "scanner": "osv-scanner", "fingerprint": "5c103e2c20e60596c3c5b0b5c7a052b881764fcb5e056f6fdc4babf1073ea3f7", "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|requirements.txt"}}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "requirements.txt"}, "region": {"startLine": 1}}}]}, {"ruleId": "GHSA-mf9w-mj56-hr94", "level": "warning", "message": {"text": "python-dotenv: GHSA-mf9w-mj56-hr94"}, "properties": {"repobilityId": 53563, "scanner": "osv-scanner", "fingerprint": "030c6ea3936499659ed910925462b9058f7115cecd98afed139ec104f4c2978a", "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|requirements.txt"}}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "requirements.txt"}, "region": {"startLine": 1}}}]}, {"ruleId": "GHSA-65pc-fj4g-8rjx", "level": "warning", "message": {"text": "idna: GHSA-65pc-fj4g-8rjx"}, "properties": {"repobilityId": 53553, "scanner": "osv-scanner", "fingerprint": "096ad1adcda9b23f165f1175fd8691f1cfd4f580557aea52903b73ec76fbc472", "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|requirements.txt"}}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "requirements.txt"}, "region": {"startLine": 1}}}]}, {"ruleId": "GHSA-w2fm-2cpv-w7v5", "level": "warning", "message": {"text": "aiohttp: GHSA-w2fm-2cpv-w7v5"}, "properties": {"repobilityId": 53549, "scanner": "osv-scanner", "fingerprint": "942f4e784268d8dcaae532fec1e6c26e03f9b2226dd94b0eb1079d617eb61421", "category": "dependency", "severity": "medium", "confidence": 0.88, "triageState": "open", "verdict": "", "isResolved": false, "reason": "", "evidence": {"match": "", "aliases": ["CVE-2026-22815"], "package": "aiohttp", "rule_id": "GHSA-w2fm-2cpv-w7v5", "scanner": "osv-scanner", "correlation_key": "vuln|aiohttp|CVE-2026-22815|requirements.txt"}}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "requirements.txt"}, "region": {"startLine": 1}}}]}, {"ruleId": "GHSA-p998-jp59-783m", "level": "warning", "message": {"text": "aiohttp: GHSA-p998-jp59-783m"}, "properties": {"repobilityId": 53548, "scanner": "osv-scanner", "fingerprint": "1b64213bb4cb4a69fb30c631bc3d1e9701fb4339e7c72ebdc53b12fd643ca5f8", "category": "dependency", "severity": "medium", "confidence": 0.88, "triageState": "open", "verdict": "", "isResolved": false, "reason": "", "evidence": {"match": "", "aliases": ["CVE-2026-34515"], "package": "aiohttp", "rule_id": "GHSA-p998-jp59-783m", "scanner": "osv-scanner", "correlation_key": "vuln|aiohttp|CVE-2026-34515|requirements.txt"}}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "requirements.txt"}, "region": {"startLine": 1}}}]}, {"ruleId": "GHSA-m5qp-6w8w-w647", "level": "warning", "message": {"text": "aiohttp: GHSA-m5qp-6w8w-w647"}, "properties": {"repobilityId": 53546, "scanner": "osv-scanner", "fingerprint": "1d46f19702f090bf7866a2e5fa449476009cab6e614e12370a93ef0d9ce5f74a", "category": "dependency", "severity": "medium", "confidence": 0.88, "triageState": "open", "verdict": "", "isResolved": false, "reason": "", "evidence": {"match": "", "aliases": ["CVE-2026-34516"], "package": "aiohttp", "rule_id": "GHSA-m5qp-6w8w-w647", "scanner": "osv-scanner", "correlation_key": "vuln|aiohttp|CVE-2026-34516|requirements.txt"}}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "requirements.txt"}, "region": {"startLine": 1}}}]}, {"ruleId": "GHSA-jg22-mg44-37j8", "level": "warning", "message": {"text": "aiohttp: GHSA-jg22-mg44-37j8"}, "properties": {"repobilityId": 53545, "scanner": "osv-scanner", "fingerprint": "bb971f373dd7f2acff955adba1f92b12c942492a97f08458a8dadaa7c18e93e6", "category": "dependency", "severity": "medium", "confidence": 0.88, "triageState": "open", "verdict": "", "isResolved": false, "reason": "", "evidence": {"match": "", "aliases": ["CVE-2026-34993"], "package": "aiohttp", "rule_id": "GHSA-jg22-mg44-37j8", "scanner": "osv-scanner", "correlation_key": "vuln|aiohttp|CVE-2026-34993|requirements.txt"}}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "requirements.txt"}, "region": {"startLine": 1}}}]}, {"ruleId": "GHSA-hg6j-4rv6-33pg", "level": "warning", "message": {"text": "aiohttp: GHSA-hg6j-4rv6-33pg"}, "properties": {"repobilityId": 53544, "scanner": "osv-scanner", "fingerprint": "24ce5e6eaf33a3edf2b03cfe1c286736bc081473f99e56bf36436aa03b363f3d", "category": "dependency", "severity": "medium", "confidence": 0.88, "triageState": "open", "verdict": "", "isResolved": false, "reason": "", "evidence": {"match": "", "aliases": ["CVE-2026-47265"], "package": "aiohttp", "rule_id": "GHSA-hg6j-4rv6-33pg", "scanner": "osv-scanner", "correlation_key": "vuln|aiohttp|CVE-2026-47265|requirements.txt"}}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "requirements.txt"}, "region": {"startLine": 1}}}]}, {"ruleId": "GHSA-c427-h43c-vf67", "level": "warning", "message": {"text": "aiohttp: GHSA-c427-h43c-vf67"}, "properties": {"repobilityId": 53542, "scanner": "osv-scanner", "fingerprint": "f91fa8d4fd30e8097ef30bb8d908a38372ec87756091b175dec721c8c7020a36", "category": "dependency", "severity": "medium", "confidence": 0.88, "triageState": "open", "verdict": "", "isResolved": false, "reason": "", "evidence": {"match": "", "aliases": ["CVE-2026-34525"], "package": "aiohttp", "rule_id": "GHSA-c427-h43c-vf67", "scanner": "osv-scanner", "correlation_key": "vuln|aiohttp|CVE-2026-34525|requirements.txt"}}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "requirements.txt"}, "region": {"startLine": 1}}}]}, {"ruleId": "GHSA-887c-mr87-cxwp", "level": "warning", "message": {"text": "torch: GHSA-887c-mr87-cxwp"}, "properties": {"repobilityId": 53537, "scanner": "osv-scanner", "fingerprint": "f1fbe6bc4772269f37ddb8781306e9ff4ee9b08e64b332afd76b57f6a8936db2", "category": "dependency", "severity": "medium", "confidence": 0.88, "triageState": "open", "verdict": "", "isResolved": false, "reason": "", "evidence": {"match": "", "aliases": ["BIT-pytorch-2025-3730", "CVE-2025-3730"], "package": "torch", "rule_id": "GHSA-887c-mr87-cxwp", "scanner": "osv-scanner", "correlation_key": "vuln|torch|CVE-2025-3730|requirements-bilibili.txt"}}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "requirements-bilibili.txt"}, "region": {"startLine": 1}}}]}, {"ruleId": "GHSA-gc5v-m9x4-r6x2", "level": "warning", "message": {"text": "requests: GHSA-gc5v-m9x4-r6x2"}, "properties": {"repobilityId": 53524, "scanner": "osv-scanner", "fingerprint": "0ba1c4477e4784dccc3c67042649a2be77f166f8a80e7ee2b08e047b4f9ce21f", "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|requirements-bilibili.txt"}}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "requirements-bilibili.txt"}, "region": {"startLine": 1}}}]}, {"ruleId": "GHSA-w2fm-2cpv-w7v5", "level": "warning", "message": {"text": "aiohttp: GHSA-w2fm-2cpv-w7v5"}, "properties": {"repobilityId": 53521, "scanner": "osv-scanner", "fingerprint": "4f90b95acf2ccb12c848e7a396cc3e6b9fee18fcc85ba9550497630471498dcc", "category": "dependency", "severity": "medium", "confidence": 0.88, "triageState": "open", "verdict": "", "isResolved": false, "reason": "", "evidence": {"match": "", "aliases": ["CVE-2026-22815"], "package": "aiohttp", "rule_id": "GHSA-w2fm-2cpv-w7v5", "scanner": "osv-scanner", "correlation_key": "vuln|aiohttp|CVE-2026-22815|requirements-bilibili.txt"}}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "requirements-bilibili.txt"}, "region": {"startLine": 1}}}]}, {"ruleId": "GHSA-p998-jp59-783m", "level": "warning", "message": {"text": "aiohttp: GHSA-p998-jp59-783m"}, "properties": {"repobilityId": 53520, "scanner": "osv-scanner", "fingerprint": "988fb610634eec0daa8f7b52fdf6d19d82decedc4cb5993fdcf69d8a5da5f8a0", "category": "dependency", "severity": "medium", "confidence": 0.88, "triageState": "open", "verdict": "", "isResolved": false, "reason": "", "evidence": {"match": "", "aliases": ["CVE-2026-34515"], "package": "aiohttp", "rule_id": "GHSA-p998-jp59-783m", "scanner": "osv-scanner", "correlation_key": "vuln|aiohttp|CVE-2026-34515|requirements-bilibili.txt"}}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "requirements-bilibili.txt"}, "region": {"startLine": 1}}}]}, {"ruleId": "GHSA-m5qp-6w8w-w647", "level": "warning", "message": {"text": "aiohttp: GHSA-m5qp-6w8w-w647"}, "properties": {"repobilityId": 53517, "scanner": "osv-scanner", "fingerprint": "0e790c5dfe0051f1bc578a23d5567f492f1e26176e1fd0933aa0e400368f904a", "category": "dependency", "severity": "medium", "confidence": 0.88, "triageState": "open", "verdict": "", "isResolved": false, "reason": "", "evidence": {"match": "", "aliases": ["CVE-2026-34516"], "package": "aiohttp", "rule_id": "GHSA-m5qp-6w8w-w647", "scanner": "osv-scanner", "correlation_key": "vuln|aiohttp|CVE-2026-34516|requirements-bilibili.txt"}}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "requirements-bilibili.txt"}, "region": {"startLine": 1}}}]}, {"ruleId": "GHSA-jj3x-wxrx-4x23", "level": "warning", "message": {"text": "aiohttp: GHSA-jj3x-wxrx-4x23"}, "properties": {"repobilityId": 53516, "scanner": "osv-scanner", "fingerprint": "4595f20813e1aed390f8736b7945b5d0bbeef62e250e2a39abb0a61909041603", "category": "dependency", "severity": "medium", "confidence": 0.88, "triageState": "open", "verdict": "", "isResolved": false, "reason": "", "evidence": {"match": "", "aliases": ["CVE-2025-69227"], "package": "aiohttp", "rule_id": "GHSA-jj3x-wxrx-4x23", "scanner": "osv-scanner", "correlation_key": "vuln|aiohttp|CVE-2025-69227|requirements-bilibili.txt"}}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "requirements-bilibili.txt"}, "region": {"startLine": 1}}}]}, {"ruleId": "GHSA-jg22-mg44-37j8", "level": "warning", "message": {"text": "aiohttp: GHSA-jg22-mg44-37j8"}, "properties": {"repobilityId": 53515, "scanner": "osv-scanner", "fingerprint": "9231f6caa517d41f4993bc690b6587aba353cf7bef275302a5ed24cf670953e2", "category": "dependency", "severity": "medium", "confidence": 0.88, "triageState": "open", "verdict": "", "isResolved": false, "reason": "", "evidence": {"match": "", "aliases": ["CVE-2026-34993"], "package": "aiohttp", "rule_id": "GHSA-jg22-mg44-37j8", "scanner": "osv-scanner", "correlation_key": "vuln|aiohttp|CVE-2026-34993|requirements-bilibili.txt"}}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "requirements-bilibili.txt"}, "region": {"startLine": 1}}}]}, {"ruleId": "GHSA-hg6j-4rv6-33pg", "level": "warning", "message": {"text": "aiohttp: GHSA-hg6j-4rv6-33pg"}, "properties": {"repobilityId": 53514, "scanner": "osv-scanner", "fingerprint": "762dc692cbcaeb85bb29a95954501ad38baca09bd68fe8122eafbc4b49515ca5", "category": "dependency", "severity": "medium", "confidence": 0.88, "triageState": "open", "verdict": "", "isResolved": false, "reason": "", "evidence": {"match": "", "aliases": ["CVE-2026-47265"], "package": "aiohttp", "rule_id": "GHSA-hg6j-4rv6-33pg", "scanner": "osv-scanner", "correlation_key": "vuln|aiohttp|CVE-2026-47265|requirements-bilibili.txt"}}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "requirements-bilibili.txt"}, "region": {"startLine": 1}}}]}, {"ruleId": "GHSA-g84x-mcqj-x9qq", "level": "warning", "message": {"text": "aiohttp: GHSA-g84x-mcqj-x9qq"}, "properties": {"repobilityId": 53512, "scanner": "osv-scanner", "fingerprint": "861f4a7af1c21eb436ba0250cb1431f270dddc234db4935cd3a5b7ab47c7d4b8", "category": "dependency", "severity": "medium", "confidence": 0.88, "triageState": "open", "verdict": "", "isResolved": false, "reason": "", "evidence": {"match": "", "aliases": ["CVE-2025-69229"], "package": "aiohttp", "rule_id": "GHSA-g84x-mcqj-x9qq", "scanner": "osv-scanner", "correlation_key": "vuln|aiohttp|CVE-2025-69229|requirements-bilibili.txt"}}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "requirements-bilibili.txt"}, "region": {"startLine": 1}}}]}, {"ruleId": "GHSA-c427-h43c-vf67", "level": "warning", "message": {"text": "aiohttp: GHSA-c427-h43c-vf67"}, "properties": {"repobilityId": 53510, "scanner": "osv-scanner", "fingerprint": "59b78930c8bb81578debe72ef275b63d68a5fe7b405f500a99b4c1a1e6b9f5b4", "category": "dependency", "severity": "medium", "confidence": 0.88, "triageState": "open", "verdict": "", "isResolved": false, "reason": "", "evidence": {"match": "", "aliases": ["CVE-2026-34525"], "package": "aiohttp", "rule_id": "GHSA-c427-h43c-vf67", "scanner": "osv-scanner", "correlation_key": "vuln|aiohttp|CVE-2026-34525|requirements-bilibili.txt"}}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "requirements-bilibili.txt"}, "region": {"startLine": 1}}}]}, {"ruleId": "GHSA-8495-4g3g-x7pr", "level": "warning", "message": {"text": "aiohttp: GHSA-8495-4g3g-x7pr"}, "properties": {"repobilityId": 53507, "scanner": "osv-scanner", "fingerprint": "3be35098d703c55f4c3cd3c9b09cbbd00d4987e716e4c54e788fa448b2b23c2e", "category": "dependency", "severity": "medium", "confidence": 0.88, "triageState": "open", "verdict": "", "isResolved": false, "reason": "", "evidence": {"match": "", "aliases": ["CVE-2024-52304"], "package": "aiohttp", "rule_id": "GHSA-8495-4g3g-x7pr", "scanner": "osv-scanner", "correlation_key": "vuln|aiohttp|CVE-2024-52304|requirements-bilibili.txt"}}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "requirements-bilibili.txt"}, "region": {"startLine": 1}}}]}, {"ruleId": "GHSA-6jhg-hg63-jvvf", "level": "warning", "message": {"text": "aiohttp: GHSA-6jhg-hg63-jvvf"}, "properties": {"repobilityId": 53505, "scanner": "osv-scanner", "fingerprint": "d706ec8f21e16d943653226f8928a1fe67af68a0048e2efe5c3f40d5bcd5732e", "category": "dependency", "severity": "medium", "confidence": 0.88, "triageState": "open", "verdict": "", "isResolved": false, "reason": "", "evidence": {"match": "", "aliases": ["CVE-2025-69228"], "package": "aiohttp", "rule_id": "GHSA-6jhg-hg63-jvvf", "scanner": "osv-scanner", "correlation_key": "vuln|aiohttp|CVE-2025-69228|requirements-bilibili.txt"}}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "requirements-bilibili.txt"}, "region": {"startLine": 1}}}]}, {"ruleId": "DKR001", "level": "warning", "message": {"text": "Docker final stage has no non-root USER"}, "properties": {"repobilityId": 53498, "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.10-slim", "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": 53496, "scanner": "repobility-docker", "fingerprint": "5ad0569366fabcd2a256327ef9f7831bd80374d759381ad0e26daeb00e09a2f9", "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|5ad0569366fabcd2a256327ef9f7831bd80374d759381ad0e26daeb00e09a2f9", "missing_patterns": [".git", "id_rsa", "*.pem", "*.key"]}}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "dockerfile"}, "region": {"startLine": 27}}}]}, {"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": 53494, "scanner": "repobility-threat-engine", "fingerprint": "22db0a3ea81fbbd167515c8296d9935a1222693c4fcd154b45c92116f4bb7c93", "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|22db0a3ea81fbbd167515c8296d9935a1222693c4fcd154b45c92116f4bb7c93"}}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "upgrade_codes/upgrade_core/language.py"}, "region": {"startLine": 24}}}]}, {"ruleId": "SEC037", "level": "warning", "message": {"text": "[SEC037] Uncontrolled Recursion \u2014 stack/depth exhaustion: Parsing arbitrary-depth user input (XML, JSON, YAML) without a depth limit, or recursive function over user-controlled structure. Attacker sends `{\"a\":{\"a\":{\"a\":...10000 levels...}}}` to blow the stack. Real CVEs: CVE-2019-16935 (Python xmlrpc), CVE-2020-25659 (PyYAML before 5.4). CWE-674/1325."}, "properties": {"repobilityId": 53493, "scanner": "repobility-threat-engine", "fingerprint": "678615ed3e0e4df60f8aac50a1b75f4577de5066b030950b15e9369276dcacc1", "category": "resource_exhaustion", "severity": "medium", "confidence": 1.0, "triageState": "open", "verdict": "confirmed", "isResolved": false, "reason": "Pattern matched with no mitigating context found", "evidence": {"match": "yaml.load(load_text_file_with_guess_encoding(self.user", "reason": "Pattern matched with no mitigating context found", "rule_id": "SEC037", "scanner": "repobility-threat-engine", "confidence": 1.0, "correlation_key": "fp|678615ed3e0e4df60f8aac50a1b75f4577de5066b030950b15e9369276dcacc1"}}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "upgrade_codes/config_sync.py"}, "region": {"startLine": 121}}}]}, {"ruleId": "SEC007", "level": "warning", "message": {"text": "[SEC007] Unsafe Deserialization: Unsafe deserialization can execute arbitrary code."}, "properties": {"repobilityId": 53475, "scanner": "repobility-threat-engine", "fingerprint": "41157518ef16f2586ad5729b55543bbd5f2e444ae22ae37123587a1ca2964053", "category": "deserialization", "severity": "medium", "confidence": 1.0, "triageState": "open", "verdict": "confirmed", "isResolved": false, "reason": "Pattern matched with no mitigating context found", "evidence": {"match": "yaml.load(", "reason": "Pattern matched with no mitigating context found", "rule_id": "SEC007", "scanner": "repobility-threat-engine", "confidence": 1.0, "correlation_key": "code|deserialization|token|23|sec007"}}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "upgrade_codes/upgrade_core/comment_diff_fn.py"}, "region": {"startLine": 23}}}]}, {"ruleId": "SEC007", "level": "warning", "message": {"text": "[SEC007] Unsafe Deserialization: Unsafe deserialization can execute arbitrary code."}, "properties": {"repobilityId": 53474, "scanner": "repobility-threat-engine", "fingerprint": "5482a1802aaf7196dead926427b2069f4acc3b6148cac9b4241a4e1f0ecbde12", "category": "deserialization", "severity": "medium", "confidence": 1.0, "triageState": "open", "verdict": "confirmed", "isResolved": false, "reason": "Pattern matched with no mitigating context found", "evidence": {"match": "yaml.load(", "reason": "Pattern matched with no mitigating context found", "rule_id": "SEC007", "scanner": "repobility-threat-engine", "confidence": 1.0, "correlation_key": "code|deserialization|token|121|sec007"}}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "upgrade_codes/config_sync.py"}, "region": {"startLine": 121}}}]}, {"ruleId": "SEC007", "level": "warning", "message": {"text": "[SEC007] Unsafe Deserialization: Unsafe deserialization can execute arbitrary code."}, "properties": {"repobilityId": 53473, "scanner": "repobility-threat-engine", "fingerprint": "cf23180d904d20e1205236506bd5c9189a608ed044611b4719774478930b0b46", "category": "deserialization", "severity": "medium", "confidence": 1.0, "triageState": "open", "verdict": "confirmed", "isResolved": false, "reason": "Pattern matched with no mitigating context found", "evidence": {"match": "yaml.load(", "reason": "Pattern matched with no mitigating context found", "rule_id": "SEC007", "scanner": "repobility-threat-engine", "confidence": 1.0, "correlation_key": "code|deserialization|token|80|sec007"}}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "upgrade_codes/compare_yaml.py"}, "region": {"startLine": 80}}}]}, {"ruleId": "SEC119", "level": "warning", "message": {"text": "[SEC119] World-writable / world-readable file permissions: World-writable files let any local user (or container neighbor) tamper with data; world-readable files leak secrets."}, "properties": {"repobilityId": 53469, "scanner": "repobility-threat-engine", "fingerprint": "6297415d6a44f96f1371a85882a5f01521a24fcf638be5aa686e171b999efab8", "category": "security", "severity": "medium", "confidence": 1.0, "triageState": "open", "verdict": "confirmed", "isResolved": false, "reason": "Pattern matched with no mitigating context found", "evidence": {"match": "os.chmod(installer, 0o755)", "reason": "Pattern matched with no mitigating context found", "rule_id": "SEC119", "scanner": "repobility-threat-engine", "confidence": 1.0, "correlation_key": "code|security|token|64|sec119"}}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "src/open_llm_vtuber/utils/install_utils.py"}, "region": {"startLine": 64}}}]}, {"ruleId": "SEC005", "level": "warning", "message": {"text": "[SEC005] Command Injection Risk: Unsafe shell execution or eval of user input."}, "properties": {"repobilityId": 53468, "scanner": "repobility-threat-engine", "fingerprint": "e1c731ae51e16d55645f379fd23069010e86b9d4dbc57ba35fe3e1f7a66fb57d", "category": "injection", "severity": "medium", "confidence": 0.5, "triageState": "open", "verdict": "needs_review", "isResolved": false, "reason": "shell=True detected \u2014 verify command source is not user-controllable", "evidence": {"match": "subprocess.run(\n                command,\n                shell=True", "reason": "shell=True detected \u2014 verify command source is not user-controllable", "rule_id": "SEC005", "scanner": "repobility-threat-engine", "confidence": 0.5, "correlation_key": "code|injection|token|20|sec005"}}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "upgrade_codes/upgrade_core/upgrade_utils.py"}, "region": {"startLine": 20}}}]}, {"ruleId": "SEC005", "level": "warning", "message": {"text": "[SEC005] Command Injection Risk: Unsafe shell execution or eval of user input."}, "properties": {"repobilityId": 53467, "scanner": "repobility-threat-engine", "fingerprint": "8edec5fff8f62168eb33aa4a535b6c4377c8dc208c0c01b7d636f761278f20f1", "category": "injection", "severity": "medium", "confidence": 0.5, "triageState": "open", "verdict": "needs_review", "isResolved": false, "reason": "shell=True detected \u2014 verify command source is not user-controllable", "evidence": {"match": "subprocess.run(pip_install_cmd, shell=True", "reason": "shell=True detected \u2014 verify command source is not user-controllable", "rule_id": "SEC005", "scanner": "repobility-threat-engine", "confidence": 0.5, "correlation_key": "code|injection|token|116|sec005"}}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "src/open_llm_vtuber/utils/install_utils.py"}, "region": {"startLine": 116}}}]}, {"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": 53465, "scanner": "repobility-threat-engine", "fingerprint": "ad8058cabd26ec788bd44a33b851101f6aeb8c32383aa6e18549893cb4c93f71", "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.critical(f\"Response: {req", "reason": "Pattern matched with no mitigating context found", "rule_id": "SEC034", "scanner": "repobility-threat-engine", "confidence": 1.0, "correlation_key": "fp|ad8058cabd26ec788bd44a33b851101f6aeb8c32383aa6e18549893cb4c93f71"}}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "src/open_llm_vtuber/translate/deeplx.py"}, "region": {"startLine": 25}}}]}, {"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": 53464, "scanner": "repobility-threat-engine", "fingerprint": "ef8dffd06498fdbfb3d20a1e7b517fb64ca80ce7fa7a964b5b02d127608aada4", "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.warning(\n                f\"Timeout waiting for {response_type} (ID: {req", "reason": "Pattern matched with no mitigating context found", "rule_id": "SEC034", "scanner": "repobility-threat-engine", "confidence": 1.0, "correlation_key": "fp|ef8dffd06498fdbfb3d20a1e7b517fb64ca80ce7fa7a964b5b02d127608aada4"}}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "src/open_llm_vtuber/message_handler.py"}, "region": {"startLine": 49}}}]}, {"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": 53463, "scanner": "repobility-threat-engine", "fingerprint": "dd2f2cd4fa8c805346d015e5c80a1e753efea2eba5502208b0a87bfcb89b3fcd", "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.info(f\"User input: {input", "reason": "Pattern matched with no mitigating context found", "rule_id": "SEC034", "scanner": "repobility-threat-engine", "confidence": 1.0, "correlation_key": "fp|dd2f2cd4fa8c805346d015e5c80a1e753efea2eba5502208b0a87bfcb89b3fcd"}}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "src/open_llm_vtuber/conversations/single_conversation.py"}, "region": {"startLine": 84}}}]}, {"ruleId": "SEC012", "level": "warning", "message": {"text": "[SEC012] ZipSlip \u2014 Archive Path Traversal: Archive extraction without path validation allows writing files outside the target directory."}, "properties": {"repobilityId": 53458, "scanner": "repobility-threat-engine", "fingerprint": "b5584908c87856e67c2971b9d56bed0e5db1a3a52fb89f08e7f265884eff2c88", "category": "path_traversal", "severity": "medium", "confidence": 1.0, "triageState": "open", "verdict": "confirmed", "isResolved": false, "reason": "Pattern matched with no mitigating context found", "evidence": {"match": ".extractall(", "reason": "Pattern matched with no mitigating context found", "rule_id": "SEC012", "scanner": "repobility-threat-engine", "confidence": 1.0, "correlation_key": "code|path_traversal|token|108|sec012"}}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "src/open_llm_vtuber/asr/utils.py"}, "region": {"startLine": 108}}}]}, {"ruleId": "COMP001", "level": "warning", "message": {"text": "[COMP001] High cognitive complexity: Function `create_agent` has cognitive complexity 16 (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: elif=3, else=1, for=1, if=5, nested_bonus=6."}, "properties": {"repobilityId": 53438, "scanner": "repobility-threat-engine", "fingerprint": "3997b1b9418976a42abed641989b45a241180483a71ed77a5fda8125cede34a4", "category": "quality", "severity": "medium", "confidence": 0.95, "triageState": "open", "verdict": "confirmed", "isResolved": false, "reason": "AST-derived cognitive complexity score = 16 (severity threshold for medium: 15+).", "evidence": {"scanner": "repobility-threat-engine", "function": "create_agent", "breakdown": {"if": 5, "for": 1, "elif": 3, "else": 1, "nested_bonus": 6}, "complexity": 16, "correlation_key": "fp|3997b1b9418976a42abed641989b45a241180483a71ed77a5fda8125cede34a4"}}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "src/open_llm_vtuber/agent/agent_factory.py"}, "region": {"startLine": 17}}}]}, {"ruleId": "COMP001", "level": "warning", "message": {"text": "[COMP001] High cognitive complexity: Function `check_frontend_submodule` has cognitive complexity 20 (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: elif=1, else=4, except=1, if=6, nested_bonus=8."}, "properties": {"repobilityId": 53437, "scanner": "repobility-threat-engine", "fingerprint": "5daa529fad4c92a746982d210a1e65af28134980d61f40b30b03636580c2c52a", "category": "quality", "severity": "medium", "confidence": 0.95, "triageState": "open", "verdict": "confirmed", "isResolved": false, "reason": "AST-derived cognitive complexity score = 20 (severity threshold for medium: 15+).", "evidence": {"scanner": "repobility-threat-engine", "function": "check_frontend_submodule", "breakdown": {"if": 6, "elif": 1, "else": 4, "except": 1, "nested_bonus": 8}, "complexity": 20, "correlation_key": "fp|5daa529fad4c92a746982d210a1e65af28134980d61f40b30b03636580c2c52a"}}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "run_server.py"}, "region": {"startLine": 50}}}]}, {"ruleId": "DEPCUR-PY", "level": "warning", "message": {"text": "Python package `openai` is 1 major version(s) behind (1.109.1 -> 2.41.0)"}, "properties": {"repobilityId": 53413, "scanner": "repobility-dependency-currency", "fingerprint": "cbc0ed298187bff3768c4fa1350a603f3d30d3ca32ef07ed558999bffc5dfde0", "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": "openai", "scanner": "repobility-dependency-currency", "ecosystem": "pypi", "languages": ["python"], "latest_version": "2.41.0", "correlation_key": "fp|cbc0ed298187bff3768c4fa1350a603f3d30d3ca32ef07ed558999bffc5dfde0", "current_version": "1.109.1"}}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "requirements-bilibili.txt"}, "region": {"startLine": 17}}}]}, {"ruleId": "DEPCUR-PY", "level": "warning", "message": {"text": "Python package `letta-client` is 1 major version(s) behind (0.1.324 -> 1.12.1)"}, "properties": {"repobilityId": 53410, "scanner": "repobility-dependency-currency", "fingerprint": "125d48cf9ac0a167f34a0000ed4ae853261419d83cef30ddbbbbb0e2547dc158", "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": "letta-client", "scanner": "repobility-dependency-currency", "ecosystem": "pypi", "languages": ["python"], "latest_version": "1.12.1", "correlation_key": "fp|125d48cf9ac0a167f34a0000ed4ae853261419d83cef30ddbbbbb0e2547dc158", "current_version": "0.1.324"}}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "requirements-bilibili.txt"}, "region": {"startLine": 12}}}]}, {"ruleId": "DEPCUR-PY", "level": "warning", "message": {"text": "Python package `groq` is 1 major version(s) behind (0.32.0 -> 1.4.0)"}, "properties": {"repobilityId": 53409, "scanner": "repobility-dependency-currency", "fingerprint": "09480269ae26b018e6fbaf5383ba617f107e0195013e4614332cbb3607fdab7d", "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": "groq", "scanner": "repobility-dependency-currency", "ecosystem": "pypi", "languages": ["python"], "latest_version": "1.4.0", "correlation_key": "fp|09480269ae26b018e6fbaf5383ba617f107e0195013e4614332cbb3607fdab7d", "current_version": "0.32.0"}}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "requirements-bilibili.txt"}, "region": {"startLine": 9}}}]}, {"ruleId": "DEPCUR-PY", "level": "warning", "message": {"text": "Python package `chardet` is 2 major version(s) behind (5.2.0 -> 7.4.3)"}, "properties": {"repobilityId": 53405, "scanner": "repobility-dependency-currency", "fingerprint": "47bf0da63a8c423cb697cd791041843d256dfd0e363d522ff3dcf5bd2d696b99", "category": "dependency", "severity": "medium", "confidence": 0.9, "triageState": "open", "verdict": "", "isResolved": false, "reason": "", "evidence": {"gap": "2 major version(s) behind", "signal": "currency", "cwe_ids": [], "package": "chardet", "scanner": "repobility-dependency-currency", "ecosystem": "pypi", "languages": ["python"], "latest_version": "7.4.3", "correlation_key": "fp|47bf0da63a8c423cb697cd791041843d256dfd0e363d522ff3dcf5bd2d696b99", "current_version": "5.2.0"}}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "requirements-bilibili.txt"}, "region": {"startLine": 5}}}]}, {"ruleId": "MINED111", "level": "warning", "message": {"text": "Bare except continues silently"}, "properties": {"repobilityId": 53372, "scanner": "repobility-ast-engine", "fingerprint": "f800a67b5831c7dc589c4e7009fc162df6547131e4830e9da28e61e5273f24c1", "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|f800a67b5831c7dc589c4e7009fc162df6547131e4830e9da28e61e5273f24c1"}}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "src/open_llm_vtuber/live/bilibili_live.py"}, "region": {"startLine": 74}}}]}, {"ruleId": "MINED109", "level": "warning", "message": {"text": "Mutable default argument in `__init__` (list)"}, "properties": {"repobilityId": 53371, "scanner": "repobility-ast-engine", "fingerprint": "0ab374cbc7c6b70acc10e2c3287b830903ff7741a42c6a2a12ad1047e147de35", "category": "quality", "severity": "medium", "confidence": 1.0, "triageState": "open", "verdict": "", "isResolved": false, "reason": "", "evidence": {"mined": true, "mining": {"slug": "mutable-default-arg", "owasp": null, "cwe_ids": ["CWE-1023"], "languages": ["python"], "observations_count": 64867}, "scanner": "repobility-ast-engine", "correlation_key": "fp|0ab374cbc7c6b70acc10e2c3287b830903ff7741a42c6a2a12ad1047e147de35"}}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "src/open_llm_vtuber/asr/azure_asr.py"}, "region": {"startLine": 15}}}]}, {"ruleId": "MINED111", "level": "warning", "message": {"text": "Bare except continues silently"}, "properties": {"repobilityId": 53370, "scanner": "repobility-ast-engine", "fingerprint": "6263f9c3471e0ec5ce66510f9cbc842a11540793ad6579a46e4e691ab3c6d847", "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|6263f9c3471e0ec5ce66510f9cbc842a11540793ad6579a46e4e691ab3c6d847"}}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "src/open_llm_vtuber/asr/fun_asr.py"}, "region": {"startLine": 98}}}]}, {"ruleId": "MINED111", "level": "warning", "message": {"text": "Bare except continues silently"}, "properties": {"repobilityId": 53369, "scanner": "repobility-ast-engine", "fingerprint": "e2912b57d8f74569ab090690b673fbba669756ea9c93847ea3443259be8c82b8", "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|e2912b57d8f74569ab090690b673fbba669756ea9c93847ea3443259be8c82b8"}}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "src/open_llm_vtuber/chat_history_manager.py"}, "region": {"startLine": 229}}}]}, {"ruleId": "MINED111", "level": "warning", "message": {"text": "Bare except continues silently"}, "properties": {"repobilityId": 53365, "scanner": "repobility-ast-engine", "fingerprint": "cd23ab4dddd6ab6e5cbb7e1151d8d3d5fb4993b6257c24f3786c7a9616a591be", "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|cd23ab4dddd6ab6e5cbb7e1151d8d3d5fb4993b6257c24f3786c7a9616a591be"}}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "upgrade_codes/upgrade_core/upgrade_utils.py"}, "region": {"startLine": 35}}}]}, {"ruleId": "AUC005", "level": "note", "message": {"text": "[AUC005] No authorization-focused tests detected: No test files with common authorization, ownership, 403, admin, or super_admin assertions were found."}, "properties": {"repobilityId": 53634, "scanner": "repobility-access-control", "fingerprint": "c58bb88e6682225dc480b3036f30153044953a3d94f500396678a77324e8d30e", "category": "auth", "severity": "low", "confidence": 0.76, "triageState": "open", "verdict": "needs_review", "isResolved": false, "reason": "Static route and framework evidence require project-owner confirmation.", "evidence": {"scanner": "repobility-access-control", "frameworks": ["FastAPI"], "correlation_key": "fp|c58bb88e6682225dc480b3036f30153044953a3d94f500396678a77324e8d30e"}}}, {"ruleId": "GHSA-5239-wwwm-4pmq", "level": "note", "message": {"text": "pygments: GHSA-5239-wwwm-4pmq"}, "properties": {"repobilityId": 53602, "scanner": "osv-scanner", "fingerprint": "db0fef0ab784fa7e288e01a475a731d75b5105247b655bdfac2babc124377da9", "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|uv.lock"}}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "uv.lock"}, "region": {"startLine": 1}}}]}, {"ruleId": "GHSA-mwh4-6h8g-pg8w", "level": "note", "message": {"text": "aiohttp: GHSA-mwh4-6h8g-pg8w"}, "properties": {"repobilityId": 53593, "scanner": "osv-scanner", "fingerprint": "f7bed1792c7b4c1d1e1227e2518bd6ee1b5b3faf768c9e2fa52018e59f486737", "category": "dependency", "severity": "low", "confidence": 0.88, "triageState": "open", "verdict": "", "isResolved": false, "reason": "", "evidence": {"match": "", "aliases": ["CVE-2026-34519"], "package": "aiohttp", "rule_id": "GHSA-mwh4-6h8g-pg8w", "scanner": "osv-scanner", "correlation_key": "vuln|aiohttp|CVE-2026-34519|uv.lock"}}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "uv.lock"}, "region": {"startLine": 1}}}]}, {"ruleId": "GHSA-hcc4-c3v8-rx92", "level": "note", "message": {"text": "aiohttp: GHSA-hcc4-c3v8-rx92"}, "properties": {"repobilityId": 53589, "scanner": "osv-scanner", "fingerprint": "e460e238f68fbd58b112c878f62e3ce863a07546e803baf9bee0656d868d72ee", "category": "dependency", "severity": "low", "confidence": 0.88, "triageState": "open", "verdict": "", "isResolved": false, "reason": "", "evidence": {"match": "", "aliases": ["CVE-2026-34513"], "package": "aiohttp", "rule_id": "GHSA-hcc4-c3v8-rx92", "scanner": "osv-scanner", "correlation_key": "vuln|aiohttp|CVE-2026-34513|uv.lock"}}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "uv.lock"}, "region": {"startLine": 1}}}]}, {"ruleId": "GHSA-966j-vmvw-g2g9", "level": "note", "message": {"text": "aiohttp: GHSA-966j-vmvw-g2g9"}, "properties": {"repobilityId": 53587, "scanner": "osv-scanner", "fingerprint": "4a5819d120d94221571f6bdd4db10c8d2ca29c60d2cd99f114d22bc7cacd1118", "category": "dependency", "severity": "low", "confidence": 0.88, "triageState": "open", "verdict": "", "isResolved": false, "reason": "", "evidence": {"match": "", "aliases": ["CVE-2026-34518"], "package": "aiohttp", "rule_id": "GHSA-966j-vmvw-g2g9", "scanner": "osv-scanner", "correlation_key": "vuln|aiohttp|CVE-2026-34518|uv.lock"}}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "uv.lock"}, "region": {"startLine": 1}}}]}, {"ruleId": "GHSA-63hf-3vf5-4wqf", "level": "note", "message": {"text": "aiohttp: GHSA-63hf-3vf5-4wqf"}, "properties": {"repobilityId": 53586, "scanner": "osv-scanner", "fingerprint": "c8d015473c39f92b7fc16083eb1406dd6e2199f42513aca03ad243e85c963da0", "category": "dependency", "severity": "low", "confidence": 0.88, "triageState": "open", "verdict": "", "isResolved": false, "reason": "", "evidence": {"match": "", "aliases": ["CVE-2026-34520"], "package": "aiohttp", "rule_id": "GHSA-63hf-3vf5-4wqf", "scanner": "osv-scanner", "correlation_key": "vuln|aiohttp|CVE-2026-34520|uv.lock"}}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "uv.lock"}, "region": {"startLine": 1}}}]}, {"ruleId": "GHSA-3wq7-rqq7-wx6j", "level": "note", "message": {"text": "aiohttp: GHSA-3wq7-rqq7-wx6j"}, "properties": {"repobilityId": 53585, "scanner": "osv-scanner", "fingerprint": "87d6fddd1ec60ab5d7afd51278674c8d6280a62c0311da65cd03fef5f4128c4c", "category": "dependency", "severity": "low", "confidence": 0.88, "triageState": "open", "verdict": "", "isResolved": false, "reason": "", "evidence": {"match": "", "aliases": ["CVE-2026-34517"], "package": "aiohttp", "rule_id": "GHSA-3wq7-rqq7-wx6j", "scanner": "osv-scanner", "correlation_key": "vuln|aiohttp|CVE-2026-34517|uv.lock"}}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "uv.lock"}, "region": {"startLine": 1}}}]}, {"ruleId": "GHSA-2vrm-gr82-f7m5", "level": "note", "message": {"text": "aiohttp: GHSA-2vrm-gr82-f7m5"}, "properties": {"repobilityId": 53584, "scanner": "osv-scanner", "fingerprint": "aefae760802c0092cc006965a854998aa045873d82460cd5fd7723ddeabfa45a", "category": "dependency", "severity": "low", "confidence": 0.88, "triageState": "open", "verdict": "", "isResolved": false, "reason": "", "evidence": {"match": "", "aliases": ["CVE-2026-34514"], "package": "aiohttp", "rule_id": "GHSA-2vrm-gr82-f7m5", "scanner": "osv-scanner", "correlation_key": "vuln|aiohttp|CVE-2026-34514|uv.lock"}}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "uv.lock"}, "region": {"startLine": 1}}}]}, {"ruleId": "GHSA-5239-wwwm-4pmq", "level": "note", "message": {"text": "pygments: GHSA-5239-wwwm-4pmq"}, "properties": {"repobilityId": 53555, "scanner": "osv-scanner", "fingerprint": "877bb1b21669710128f9d5c6fb01bec5d4fefc10779ca23d38c15846f58f768b", "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|requirements.txt"}}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "requirements.txt"}, "region": {"startLine": 1}}}]}, {"ruleId": "GHSA-mwh4-6h8g-pg8w", "level": "note", "message": {"text": "aiohttp: GHSA-mwh4-6h8g-pg8w"}, "properties": {"repobilityId": 53547, "scanner": "osv-scanner", "fingerprint": "bb4b8f15a4da983b2c16449cc81b5e196c1f9bb1691539c4bdc105f83a7ce09c", "category": "dependency", "severity": "low", "confidence": 0.88, "triageState": "open", "verdict": "", "isResolved": false, "reason": "", "evidence": {"match": "", "aliases": ["CVE-2026-34519"], "package": "aiohttp", "rule_id": "GHSA-mwh4-6h8g-pg8w", "scanner": "osv-scanner", "correlation_key": "vuln|aiohttp|CVE-2026-34519|requirements.txt"}}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "requirements.txt"}, "region": {"startLine": 1}}}]}, {"ruleId": "GHSA-hcc4-c3v8-rx92", "level": "note", "message": {"text": "aiohttp: GHSA-hcc4-c3v8-rx92"}, "properties": {"repobilityId": 53543, "scanner": "osv-scanner", "fingerprint": "8273eca3865030ccd27e4829bee7350f29cc50ac410a575c88447e78d3267d22", "category": "dependency", "severity": "low", "confidence": 0.88, "triageState": "open", "verdict": "", "isResolved": false, "reason": "", "evidence": {"match": "", "aliases": ["CVE-2026-34513"], "package": "aiohttp", "rule_id": "GHSA-hcc4-c3v8-rx92", "scanner": "osv-scanner", "correlation_key": "vuln|aiohttp|CVE-2026-34513|requirements.txt"}}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "requirements.txt"}, "region": {"startLine": 1}}}]}, {"ruleId": "GHSA-966j-vmvw-g2g9", "level": "note", "message": {"text": "aiohttp: GHSA-966j-vmvw-g2g9"}, "properties": {"repobilityId": 53541, "scanner": "osv-scanner", "fingerprint": "e43c080846f61f6dda0cb5f079a29d69de970e2f8900d2a8287dba9942e441f1", "category": "dependency", "severity": "low", "confidence": 0.88, "triageState": "open", "verdict": "", "isResolved": false, "reason": "", "evidence": {"match": "", "aliases": ["CVE-2026-34518"], "package": "aiohttp", "rule_id": "GHSA-966j-vmvw-g2g9", "scanner": "osv-scanner", "correlation_key": "vuln|aiohttp|CVE-2026-34518|requirements.txt"}}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "requirements.txt"}, "region": {"startLine": 1}}}]}, {"ruleId": "GHSA-63hf-3vf5-4wqf", "level": "note", "message": {"text": "aiohttp: GHSA-63hf-3vf5-4wqf"}, "properties": {"repobilityId": 53540, "scanner": "osv-scanner", "fingerprint": "3ab0b34981ecf41a5235be039e646cfe1206690a763295841152f0c682f83305", "category": "dependency", "severity": "low", "confidence": 0.88, "triageState": "open", "verdict": "", "isResolved": false, "reason": "", "evidence": {"match": "", "aliases": ["CVE-2026-34520"], "package": "aiohttp", "rule_id": "GHSA-63hf-3vf5-4wqf", "scanner": "osv-scanner", "correlation_key": "vuln|aiohttp|CVE-2026-34520|requirements.txt"}}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "requirements.txt"}, "region": {"startLine": 1}}}]}, {"ruleId": "GHSA-3wq7-rqq7-wx6j", "level": "note", "message": {"text": "aiohttp: GHSA-3wq7-rqq7-wx6j"}, "properties": {"repobilityId": 53539, "scanner": "osv-scanner", "fingerprint": "6f99c6e4a836bb2ed9db7b557b0a9b7b491ee36ed73777083cdc987737a49482", "category": "dependency", "severity": "low", "confidence": 0.88, "triageState": "open", "verdict": "", "isResolved": false, "reason": "", "evidence": {"match": "", "aliases": ["CVE-2026-34517"], "package": "aiohttp", "rule_id": "GHSA-3wq7-rqq7-wx6j", "scanner": "osv-scanner", "correlation_key": "vuln|aiohttp|CVE-2026-34517|requirements.txt"}}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "requirements.txt"}, "region": {"startLine": 1}}}]}, {"ruleId": "GHSA-2vrm-gr82-f7m5", "level": "note", "message": {"text": "aiohttp: GHSA-2vrm-gr82-f7m5"}, "properties": {"repobilityId": 53538, "scanner": "osv-scanner", "fingerprint": "5b1a500153f014efb378c7b4aa7b1bfdda536982a8543b4a01b75601a9965aab", "category": "dependency", "severity": "low", "confidence": 0.88, "triageState": "open", "verdict": "", "isResolved": false, "reason": "", "evidence": {"match": "", "aliases": ["CVE-2026-34514"], "package": "aiohttp", "rule_id": "GHSA-2vrm-gr82-f7m5", "scanner": "osv-scanner", "correlation_key": "vuln|aiohttp|CVE-2026-34514|requirements.txt"}}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "requirements.txt"}, "region": {"startLine": 1}}}]}, {"ruleId": "GHSA-mwh4-6h8g-pg8w", "level": "note", "message": {"text": "aiohttp: GHSA-mwh4-6h8g-pg8w"}, "properties": {"repobilityId": 53519, "scanner": "osv-scanner", "fingerprint": "a088f9e44d3a037682e79321e11832fe0ba8628ecf2db54180d7c42fe8576152", "category": "dependency", "severity": "low", "confidence": 0.88, "triageState": "open", "verdict": "", "isResolved": false, "reason": "", "evidence": {"match": "", "aliases": ["CVE-2026-34519"], "package": "aiohttp", "rule_id": "GHSA-mwh4-6h8g-pg8w", "scanner": "osv-scanner", "correlation_key": "vuln|aiohttp|CVE-2026-34519|requirements-bilibili.txt"}}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "requirements-bilibili.txt"}, "region": {"startLine": 1}}}]}, {"ruleId": "GHSA-mqqc-3gqh-h2x8", "level": "note", "message": {"text": "aiohttp: GHSA-mqqc-3gqh-h2x8"}, "properties": {"repobilityId": 53518, "scanner": "osv-scanner", "fingerprint": "74d0c4b60cd5e617a430b16666f38295dab434672c7a03847e3f95c70cbb869a", "category": "dependency", "severity": "low", "confidence": 0.88, "triageState": "open", "verdict": "", "isResolved": false, "reason": "", "evidence": {"match": "", "aliases": ["CVE-2025-69225"], "package": "aiohttp", "rule_id": "GHSA-mqqc-3gqh-h2x8", "scanner": "osv-scanner", "correlation_key": "vuln|aiohttp|CVE-2025-69225|requirements-bilibili.txt"}}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "requirements-bilibili.txt"}, "region": {"startLine": 1}}}]}, {"ruleId": "GHSA-hcc4-c3v8-rx92", "level": "note", "message": {"text": "aiohttp: GHSA-hcc4-c3v8-rx92"}, "properties": {"repobilityId": 53513, "scanner": "osv-scanner", "fingerprint": "3a965b0b3ff45bf55cf469433034c19603cebdc34b6eaf2ee47935d73c452914", "category": "dependency", "severity": "low", "confidence": 0.88, "triageState": "open", "verdict": "", "isResolved": false, "reason": "", "evidence": {"match": "", "aliases": ["CVE-2026-34513"], "package": "aiohttp", "rule_id": "GHSA-hcc4-c3v8-rx92", "scanner": "osv-scanner", "correlation_key": "vuln|aiohttp|CVE-2026-34513|requirements-bilibili.txt"}}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "requirements-bilibili.txt"}, "region": {"startLine": 1}}}]}, {"ruleId": "GHSA-fh55-r93g-j68g", "level": "note", "message": {"text": "aiohttp: GHSA-fh55-r93g-j68g"}, "properties": {"repobilityId": 53511, "scanner": "osv-scanner", "fingerprint": "0b8dd765e1fce079f2ccff7edc01701405f3010c94d47111cd31d6d713c0b5ce", "category": "dependency", "severity": "low", "confidence": 0.88, "triageState": "open", "verdict": "", "isResolved": false, "reason": "", "evidence": {"match": "", "aliases": ["CVE-2025-69230"], "package": "aiohttp", "rule_id": "GHSA-fh55-r93g-j68g", "scanner": "osv-scanner", "correlation_key": "vuln|aiohttp|CVE-2025-69230|requirements-bilibili.txt"}}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "requirements-bilibili.txt"}, "region": {"startLine": 1}}}]}, {"ruleId": "GHSA-966j-vmvw-g2g9", "level": "note", "message": {"text": "aiohttp: GHSA-966j-vmvw-g2g9"}, "properties": {"repobilityId": 53509, "scanner": "osv-scanner", "fingerprint": "6d06cfa13c915d68c7e3c0263ab5cc62908cb5d62ab903866a54581e1746c894", "category": "dependency", "severity": "low", "confidence": 0.88, "triageState": "open", "verdict": "", "isResolved": false, "reason": "", "evidence": {"match": "", "aliases": ["CVE-2026-34518"], "package": "aiohttp", "rule_id": "GHSA-966j-vmvw-g2g9", "scanner": "osv-scanner", "correlation_key": "vuln|aiohttp|CVE-2026-34518|requirements-bilibili.txt"}}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "requirements-bilibili.txt"}, "region": {"startLine": 1}}}]}, {"ruleId": "GHSA-9548-qrrj-x5pj", "level": "note", "message": {"text": "aiohttp: GHSA-9548-qrrj-x5pj"}, "properties": {"repobilityId": 53508, "scanner": "osv-scanner", "fingerprint": "ea7139495cbf6e22ac1b086db6edeb25beacdd7c63cbe6115e9d4e4ae91ac04c", "category": "dependency", "severity": "low", "confidence": 0.88, "triageState": "open", "verdict": "", "isResolved": false, "reason": "", "evidence": {"match": "", "aliases": ["CVE-2025-53643"], "package": "aiohttp", "rule_id": "GHSA-9548-qrrj-x5pj", "scanner": "osv-scanner", "correlation_key": "vuln|aiohttp|CVE-2025-53643|requirements-bilibili.txt"}}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "requirements-bilibili.txt"}, "region": {"startLine": 1}}}]}, {"ruleId": "GHSA-69f9-5gxw-wvc2", "level": "note", "message": {"text": "aiohttp: GHSA-69f9-5gxw-wvc2"}, "properties": {"repobilityId": 53504, "scanner": "osv-scanner", "fingerprint": "d32a3c6705a95591035b8ea396971ed46980fec5e119d163d9afeac169ffc96a", "category": "dependency", "severity": "low", "confidence": 0.88, "triageState": "open", "verdict": "", "isResolved": false, "reason": "", "evidence": {"match": "", "aliases": ["CVE-2025-69224"], "package": "aiohttp", "rule_id": "GHSA-69f9-5gxw-wvc2", "scanner": "osv-scanner", "correlation_key": "vuln|aiohttp|CVE-2025-69224|requirements-bilibili.txt"}}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "requirements-bilibili.txt"}, "region": {"startLine": 1}}}]}, {"ruleId": "GHSA-63hf-3vf5-4wqf", "level": "note", "message": {"text": "aiohttp: GHSA-63hf-3vf5-4wqf"}, "properties": {"repobilityId": 53503, "scanner": "osv-scanner", "fingerprint": "74da2e572aea77261168f62c10245d28bcc56b2d65bdd9c6acb8c46f301b176a", "category": "dependency", "severity": "low", "confidence": 0.88, "triageState": "open", "verdict": "", "isResolved": false, "reason": "", "evidence": {"match": "", "aliases": ["CVE-2026-34520"], "package": "aiohttp", "rule_id": "GHSA-63hf-3vf5-4wqf", "scanner": "osv-scanner", "correlation_key": "vuln|aiohttp|CVE-2026-34520|requirements-bilibili.txt"}}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "requirements-bilibili.txt"}, "region": {"startLine": 1}}}]}, {"ruleId": "GHSA-54jq-c3m8-4m76", "level": "note", "message": {"text": "aiohttp: GHSA-54jq-c3m8-4m76"}, "properties": {"repobilityId": 53502, "scanner": "osv-scanner", "fingerprint": "cb3eade28186eb3a9b95aa54aef551323d94185249bdbba7cf6e47428dc11a06", "category": "dependency", "severity": "low", "confidence": 0.88, "triageState": "open", "verdict": "", "isResolved": false, "reason": "", "evidence": {"match": "", "aliases": ["CVE-2025-69226"], "package": "aiohttp", "rule_id": "GHSA-54jq-c3m8-4m76", "scanner": "osv-scanner", "correlation_key": "vuln|aiohttp|CVE-2025-69226|requirements-bilibili.txt"}}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "requirements-bilibili.txt"}, "region": {"startLine": 1}}}]}, {"ruleId": "GHSA-3wq7-rqq7-wx6j", "level": "note", "message": {"text": "aiohttp: GHSA-3wq7-rqq7-wx6j"}, "properties": {"repobilityId": 53501, "scanner": "osv-scanner", "fingerprint": "df56a1eb2568a097a5b544cd3b1e3aeede89cf0c28961b69ba1907f4664f21fa", "category": "dependency", "severity": "low", "confidence": 0.88, "triageState": "open", "verdict": "", "isResolved": false, "reason": "", "evidence": {"match": "", "aliases": ["CVE-2026-34517"], "package": "aiohttp", "rule_id": "GHSA-3wq7-rqq7-wx6j", "scanner": "osv-scanner", "correlation_key": "vuln|aiohttp|CVE-2026-34517|requirements-bilibili.txt"}}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "requirements-bilibili.txt"}, "region": {"startLine": 1}}}]}, {"ruleId": "GHSA-2vrm-gr82-f7m5", "level": "note", "message": {"text": "aiohttp: GHSA-2vrm-gr82-f7m5"}, "properties": {"repobilityId": 53500, "scanner": "osv-scanner", "fingerprint": "da45d26a22012f6b7a1c2ce4dc0c8aeaf5baf1680d73e477c8aef9ef2ac44094", "category": "dependency", "severity": "low", "confidence": 0.88, "triageState": "open", "verdict": "", "isResolved": false, "reason": "", "evidence": {"match": "", "aliases": ["CVE-2026-34514"], "package": "aiohttp", "rule_id": "GHSA-2vrm-gr82-f7m5", "scanner": "osv-scanner", "correlation_key": "vuln|aiohttp|CVE-2026-34514|requirements-bilibili.txt"}}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "requirements-bilibili.txt"}, "region": {"startLine": 1}}}]}, {"ruleId": "DKR008", "level": "note", "message": {"text": ".dockerignore misses sensitive defaults"}, "properties": {"repobilityId": 53499, "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": [".git", "id_rsa", "*.pem", "*.key"]}}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": ".dockerignore"}, "region": {"startLine": 1}}}]}, {"ruleId": "DKR012", "level": "note", "message": {"text": "Dockerfile keeps pip download cache"}, "properties": {"repobilityId": 53497, "scanner": "repobility-docker", "fingerprint": "52bbf96119495ed88ee75cf488826324fa90d8d37de2020f0ab04bfc5ef7817d", "category": "docker", "severity": "low", "confidence": 0.72, "triageState": "open", "verdict": "likely", "isResolved": false, "reason": "pip install appears without --no-cache-dir.", "evidence": {"rule_id": "DKR012", "scanner": "repobility-docker", "references": ["https://docs.docker.com/develop/develop-images/dockerfile_best-practices/"], "correlation_key": "fp|52bbf96119495ed88ee75cf488826324fa90d8d37de2020f0ab04bfc5ef7817d"}}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "dockerfile"}, "region": {"startLine": 28}}}]}, {"ruleId": "COMP001", "level": "note", "message": {"text": "[COMP001] High cognitive complexity: Function `_load_file_content` has cognitive complexity 9 (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=3, for=1, if=2, nested_bonus=2."}, "properties": {"repobilityId": 53436, "scanner": "repobility-threat-engine", "fingerprint": "879280864e31ce0f2cc72b00961dcefadfad70af3350f7ad680d5d3bf32a02c9", "category": "quality", "severity": "low", "confidence": 0.95, "triageState": "open", "verdict": "confirmed", "isResolved": false, "reason": "AST-derived cognitive complexity score = 9 (severity threshold for low: 8+).", "evidence": {"scanner": "repobility-threat-engine", "function": "_load_file_content", "breakdown": {"if": 2, "for": 1, "except": 3, "continue": 1, "nested_bonus": 2}, "complexity": 9, "correlation_key": "fp|879280864e31ce0f2cc72b00961dcefadfad70af3350f7ad680d5d3bf32a02c9"}}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "prompts/prompt_loader.py"}, "region": {"startLine": 12}}}]}, {"ruleId": "DEPCUR-PY", "level": "note", "message": {"text": "Python package `websocket-client` is minor version(s) behind (1.8.0 -> 1.9.0)"}, "properties": {"repobilityId": 53425, "scanner": "repobility-dependency-currency", "fingerprint": "847a5b03727cc0c70621528aa2210cb158ff93ea1431865c59da2ef5af118d86", "category": "dependency", "severity": "low", "confidence": 0.9, "triageState": "open", "verdict": "", "isResolved": false, "reason": "", "evidence": {"gap": "minor version(s) behind", "signal": "currency", "cwe_ids": [], "package": "websocket-client", "scanner": "repobility-dependency-currency", "ecosystem": "pypi", "languages": ["python"], "latest_version": "1.9.0", "correlation_key": "fp|847a5b03727cc0c70621528aa2210cb158ff93ea1431865c59da2ef5af118d86", "current_version": "1.8.0"}}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "requirements-bilibili.txt"}, "region": {"startLine": 35}}}]}, {"ruleId": "DEPCUR-PY", "level": "note", "message": {"text": "Python package `uvicorn` is minor version(s) behind (0.37.0 -> 0.49.0)"}, "properties": {"repobilityId": 53424, "scanner": "repobility-dependency-currency", "fingerprint": "3eb16b31bcd114da2be1014c1df1427c3ddc3d2e1d7f2cc392e04f779e32eec0", "category": "dependency", "severity": "low", "confidence": 0.9, "triageState": "open", "verdict": "", "isResolved": false, "reason": "", "evidence": {"gap": "minor version(s) behind", "signal": "currency", "cwe_ids": [], "package": "uvicorn", "scanner": "repobility-dependency-currency", "ecosystem": "pypi", "languages": ["python"], "latest_version": "0.49.0", "correlation_key": "fp|3eb16b31bcd114da2be1014c1df1427c3ddc3d2e1d7f2cc392e04f779e32eec0", "current_version": "0.37.0"}}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "requirements-bilibili.txt"}, "region": {"startLine": 34}}}]}, {"ruleId": "DEPCUR-PY", "level": "note", "message": {"text": "Python package `torch` is minor version(s) behind (2.8.0 -> 2.12.0)"}, "properties": {"repobilityId": 53422, "scanner": "repobility-dependency-currency", "fingerprint": "92fa75af97e7bc6a2011e50cfd0b18773674cc7aebf64c94347b5c058bbf961a", "category": "dependency", "severity": "low", "confidence": 0.9, "triageState": "open", "verdict": "", "isResolved": false, "reason": "", "evidence": {"gap": "minor version(s) behind", "signal": "currency", "cwe_ids": [], "package": "torch", "scanner": "repobility-dependency-currency", "ecosystem": "pypi", "languages": ["python"], "latest_version": "2.12.0", "correlation_key": "fp|92fa75af97e7bc6a2011e50cfd0b18773674cc7aebf64c94347b5c058bbf961a", "current_version": "2.8.0"}}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "requirements-bilibili.txt"}, "region": {"startLine": 32}}}]}, {"ruleId": "DEPCUR-PY", "level": "note", "message": {"text": "Python package `torch` is minor version(s) behind (2.2.2 -> 2.12.0)"}, "properties": {"repobilityId": 53421, "scanner": "repobility-dependency-currency", "fingerprint": "101f37d417e6425c7bdfdfc85bacec111672d8fcb36d4e7aa98abed0de4b2635", "category": "dependency", "severity": "low", "confidence": 0.9, "triageState": "open", "verdict": "", "isResolved": false, "reason": "", "evidence": {"gap": "minor version(s) behind", "signal": "currency", "cwe_ids": [], "package": "torch", "scanner": "repobility-dependency-currency", "ecosystem": "pypi", "languages": ["python"], "latest_version": "2.12.0", "correlation_key": "fp|101f37d417e6425c7bdfdfc85bacec111672d8fcb36d4e7aa98abed0de4b2635", "current_version": "2.2.2"}}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "requirements-bilibili.txt"}, "region": {"startLine": 31}}}]}, {"ruleId": "DEPCUR-PY", "level": "note", "message": {"text": "Python package `tomli` is minor version(s) behind (2.2.1 -> 2.4.1)"}, "properties": {"repobilityId": 53420, "scanner": "repobility-dependency-currency", "fingerprint": "abc7a58d93287c878fdcfb5dbd6944f96c5f603aa7c9509c0607fa1a86a965ce", "category": "dependency", "severity": "low", "confidence": 0.9, "triageState": "open", "verdict": "", "isResolved": false, "reason": "", "evidence": {"gap": "minor version(s) behind", "signal": "currency", "cwe_ids": [], "package": "tomli", "scanner": "repobility-dependency-currency", "ecosystem": "pypi", "languages": ["python"], "latest_version": "2.4.1", "correlation_key": "fp|abc7a58d93287c878fdcfb5dbd6944f96c5f603aa7c9509c0607fa1a86a965ce", "current_version": "2.2.1"}}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "requirements-bilibili.txt"}, "region": {"startLine": 30}}}]}, {"ruleId": "DEPCUR-PY", "level": "note", "message": {"text": "Python package `sherpa-onnx` is minor version(s) behind (1.12.14 -> 1.13.2)"}, "properties": {"repobilityId": 53419, "scanner": "repobility-dependency-currency", "fingerprint": "602ddbda305721d40a818100400e0edfc6de0f86fbf2827ac993543b5e618703", "category": "dependency", "severity": "low", "confidence": 0.9, "triageState": "open", "verdict": "", "isResolved": false, "reason": "", "evidence": {"gap": "minor version(s) behind", "signal": "currency", "cwe_ids": [], "package": "sherpa-onnx", "scanner": "repobility-dependency-currency", "ecosystem": "pypi", "languages": ["python"], "latest_version": "1.13.2", "correlation_key": "fp|602ddbda305721d40a818100400e0edfc6de0f86fbf2827ac993543b5e618703", "current_version": "1.12.14"}}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "requirements-bilibili.txt"}, "region": {"startLine": 28}}}]}, {"ruleId": "DEPCUR-PY", "level": "note", "message": {"text": "Python package `scipy` is minor version(s) behind (1.16.2 -> 1.17.1)"}, "properties": {"repobilityId": 53418, "scanner": "repobility-dependency-currency", "fingerprint": "e2fb16874b5ee1643243bc322cfd90d31953ce8d1e45b642cba1acd3d00901f8", "category": "dependency", "severity": "low", "confidence": 0.9, "triageState": "open", "verdict": "", "isResolved": false, "reason": "", "evidence": {"gap": "minor version(s) behind", "signal": "currency", "cwe_ids": [], "package": "scipy", "scanner": "repobility-dependency-currency", "ecosystem": "pypi", "languages": ["python"], "latest_version": "1.17.1", "correlation_key": "fp|e2fb16874b5ee1643243bc322cfd90d31953ce8d1e45b642cba1acd3d00901f8", "current_version": "1.16.2"}}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "requirements-bilibili.txt"}, "region": {"startLine": 27}}}]}, {"ruleId": "DEPCUR-PY", "level": "note", "message": {"text": "Python package `scipy` is minor version(s) behind (1.15.3 -> 1.17.1)"}, "properties": {"repobilityId": 53417, "scanner": "repobility-dependency-currency", "fingerprint": "835479ad4678f879241368bb26c353c242804408bf9a8cfeb65759c58f1a9e3c", "category": "dependency", "severity": "low", "confidence": 0.9, "triageState": "open", "verdict": "", "isResolved": false, "reason": "", "evidence": {"gap": "minor version(s) behind", "signal": "currency", "cwe_ids": [], "package": "scipy", "scanner": "repobility-dependency-currency", "ecosystem": "pypi", "languages": ["python"], "latest_version": "1.17.1", "correlation_key": "fp|835479ad4678f879241368bb26c353c242804408bf9a8cfeb65759c58f1a9e3c", "current_version": "1.15.3"}}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "requirements-bilibili.txt"}, "region": {"startLine": 26}}}]}, {"ruleId": "DEPCUR-PY", "level": "note", "message": {"text": "Python package `ruamel-yaml` is minor version(s) behind (0.18.15 -> 0.19.1)"}, "properties": {"repobilityId": 53416, "scanner": "repobility-dependency-currency", "fingerprint": "80442c0ccaffac658bd189dcfad138f5dfb5dcefea74a58bce17125f1e947c19", "category": "dependency", "severity": "low", "confidence": 0.9, "triageState": "open", "verdict": "", "isResolved": false, "reason": "", "evidence": {"gap": "minor version(s) behind", "signal": "currency", "cwe_ids": [], "package": "ruamel-yaml", "scanner": "repobility-dependency-currency", "ecosystem": "pypi", "languages": ["python"], "latest_version": "0.19.1", "correlation_key": "fp|80442c0ccaffac658bd189dcfad138f5dfb5dcefea74a58bce17125f1e947c19", "current_version": "0.18.15"}}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "requirements-bilibili.txt"}, "region": {"startLine": 24}}}]}, {"ruleId": "DEPCUR-PY", "level": "note", "message": {"text": "Python package `requests` is minor version(s) behind (2.32.5 -> 2.34.2)"}, "properties": {"repobilityId": 53415, "scanner": "repobility-dependency-currency", "fingerprint": "2825519b8c945d80f8a55ee8263eab66006479e2791ceb37e1da19a10c298bab", "category": "dependency", "severity": "low", "confidence": 0.9, "triageState": "open", "verdict": "", "isResolved": false, "reason": "", "evidence": {"gap": "minor version(s) behind", "signal": "currency", "cwe_ids": [], "package": "requests", "scanner": "repobility-dependency-currency", "ecosystem": "pypi", "languages": ["python"], "latest_version": "2.34.2", "correlation_key": "fp|2825519b8c945d80f8a55ee8263eab66006479e2791ceb37e1da19a10c298bab", "current_version": "2.32.5"}}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "requirements-bilibili.txt"}, "region": {"startLine": 23}}}]}, {"ruleId": "DEPCUR-PY", "level": "note", "message": {"text": "Python package `pre-commit` is minor version(s) behind (4.3.0 -> 4.6.0)"}, "properties": {"repobilityId": 53414, "scanner": "repobility-dependency-currency", "fingerprint": "d6e39489d0a0a2ad5c874fc955fe6481a9e0cf6fcf8889c50dde18530af61c45", "category": "dependency", "severity": "low", "confidence": 0.9, "triageState": "open", "verdict": "", "isResolved": false, "reason": "", "evidence": {"gap": "minor version(s) behind", "signal": "currency", "cwe_ids": [], "package": "pre-commit", "scanner": "repobility-dependency-currency", "ecosystem": "pypi", "languages": ["python"], "latest_version": "4.6.0", "correlation_key": "fp|d6e39489d0a0a2ad5c874fc955fe6481a9e0cf6fcf8889c50dde18530af61c45", "current_version": "4.3.0"}}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "requirements-bilibili.txt"}, "region": {"startLine": 18}}}]}, {"ruleId": "DEPCUR-PY", "level": "note", "message": {"text": "Python package `onnxruntime` is minor version(s) behind (1.23.0 -> 1.26.0)"}, "properties": {"repobilityId": 53412, "scanner": "repobility-dependency-currency", "fingerprint": "9f2c22d46204208b63ed74d5911146cb9afcc1d9384f864b9ddbab6240ca571f", "category": "dependency", "severity": "low", "confidence": 0.9, "triageState": "open", "verdict": "", "isResolved": false, "reason": "", "evidence": {"gap": "minor version(s) behind", "signal": "currency", "cwe_ids": [], "package": "onnxruntime", "scanner": "repobility-dependency-currency", "ecosystem": "pypi", "languages": ["python"], "latest_version": "1.26.0", "correlation_key": "fp|9f2c22d46204208b63ed74d5911146cb9afcc1d9384f864b9ddbab6240ca571f", "current_version": "1.23.0"}}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "requirements-bilibili.txt"}, "region": {"startLine": 16}}}]}, {"ruleId": "DEPCUR-PY", "level": "note", "message": {"text": "Python package `mcp` is minor version(s) behind (1.15.0 -> 1.27.2)"}, "properties": {"repobilityId": 53411, "scanner": "repobility-dependency-currency", "fingerprint": "d97624d9741cc39a318e4fd63cacf9e9d9d723699d3c5c9698e155dcd2022fb6", "category": "dependency", "severity": "low", "confidence": 0.9, "triageState": "open", "verdict": "", "isResolved": false, "reason": "", "evidence": {"gap": "minor version(s) behind", "signal": "currency", "cwe_ids": [], "package": "mcp", "scanner": "repobility-dependency-currency", "ecosystem": "pypi", "languages": ["python"], "latest_version": "1.27.2", "correlation_key": "fp|d97624d9741cc39a318e4fd63cacf9e9d9d723699d3c5c9698e155dcd2022fb6", "current_version": "1.15.0"}}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "requirements-bilibili.txt"}, "region": {"startLine": 14}}}]}, {"ruleId": "DEPCUR-PY", "level": "note", "message": {"text": "Python package `fastapi` is minor version(s) behind (0.118.0 -> 0.136.3)"}, "properties": {"repobilityId": 53408, "scanner": "repobility-dependency-currency", "fingerprint": "36edec94797694d0c94069f930e2d53b72baec6dedc23d4634a97907d80c44ad", "category": "dependency", "severity": "low", "confidence": 0.9, "triageState": "open", "verdict": "", "isResolved": false, "reason": "", "evidence": {"gap": "minor version(s) behind", "signal": "currency", "cwe_ids": [], "package": "fastapi", "scanner": "repobility-dependency-currency", "ecosystem": "pypi", "languages": ["python"], "latest_version": "0.136.3", "correlation_key": "fp|36edec94797694d0c94069f930e2d53b72baec6dedc23d4634a97907d80c44ad", "current_version": "0.118.0"}}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "requirements-bilibili.txt"}, "region": {"startLine": 8}}}]}, {"ruleId": "DEPCUR-PY", "level": "note", "message": {"text": "Python package `duckduckgo-mcp-server` is minor version(s) behind (0.1.1 -> 0.4.0)"}, "properties": {"repobilityId": 53406, "scanner": "repobility-dependency-currency", "fingerprint": "de2195bc8929e9d83c3211c5a6188c1d92d6737af65f503f70953042d02fed5c", "category": "dependency", "severity": "low", "confidence": 0.9, "triageState": "open", "verdict": "", "isResolved": false, "reason": "", "evidence": {"gap": "minor version(s) behind", "signal": "currency", "cwe_ids": [], "package": "duckduckgo-mcp-server", "scanner": "repobility-dependency-currency", "ecosystem": "pypi", "languages": ["python"], "latest_version": "0.4.0", "correlation_key": "fp|de2195bc8929e9d83c3211c5a6188c1d92d6737af65f503f70953042d02fed5c", "current_version": "0.1.1"}}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "requirements-bilibili.txt"}, "region": {"startLine": 6}}}]}, {"ruleId": "DEPCUR-PY", "level": "note", "message": {"text": "Python package `brotli` is minor version(s) behind (1.1.0 -> 1.2.0)"}, "properties": {"repobilityId": 53404, "scanner": "repobility-dependency-currency", "fingerprint": "4765408d691684441fa0ad099e5417d2d6159615b9314d4559b565d55c8a642b", "category": "dependency", "severity": "low", "confidence": 0.9, "triageState": "open", "verdict": "", "isResolved": false, "reason": "", "evidence": {"gap": "minor version(s) behind", "signal": "currency", "cwe_ids": [], "package": "brotli", "scanner": "repobility-dependency-currency", "ecosystem": "pypi", "languages": ["python"], "latest_version": "1.2.0", "correlation_key": "fp|4765408d691684441fa0ad099e5417d2d6159615b9314d4559b565d55c8a642b", "current_version": "1.1.0"}}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "requirements-bilibili.txt"}, "region": {"startLine": 4}}}]}, {"ruleId": "DEPCUR-PY", "level": "note", "message": {"text": "Python package `azure-cognitiveservices-speech` is minor version(s) behind (1.46.0 -> 1.50.0)"}, "properties": {"repobilityId": 53403, "scanner": "repobility-dependency-currency", "fingerprint": "4c348daaa96a0d4315803a6876fcc8166edd8d455c9303509e4ec3352ad521af", "category": "dependency", "severity": "low", "confidence": 0.9, "triageState": "open", "verdict": "", "isResolved": false, "reason": "", "evidence": {"gap": "minor version(s) behind", "signal": "currency", "cwe_ids": [], "package": "azure-cognitiveservices-speech", "scanner": "repobility-dependency-currency", "ecosystem": "pypi", "languages": ["python"], "latest_version": "1.50.0", "correlation_key": "fp|4c348daaa96a0d4315803a6876fcc8166edd8d455c9303509e4ec3352ad521af", "current_version": "1.46.0"}}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "requirements-bilibili.txt"}, "region": {"startLine": 3}}}]}, {"ruleId": "DEPCUR-PY", "level": "note", "message": {"text": "Python package `anthropic` is minor version(s) behind (0.68.1 -> 0.105.2)"}, "properties": {"repobilityId": 53402, "scanner": "repobility-dependency-currency", "fingerprint": "ab7e470bfc5d45db94657446a752ec3f6584806cb7fba2155957549aca32fc65", "category": "dependency", "severity": "low", "confidence": 0.9, "triageState": "open", "verdict": "", "isResolved": false, "reason": "", "evidence": {"gap": "minor version(s) behind", "signal": "currency", "cwe_ids": [], "package": "anthropic", "scanner": "repobility-dependency-currency", "ecosystem": "pypi", "languages": ["python"], "latest_version": "0.105.2", "correlation_key": "fp|ab7e470bfc5d45db94657446a752ec3f6584806cb7fba2155957549aca32fc65", "current_version": "0.68.1"}}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "requirements-bilibili.txt"}, "region": {"startLine": 2}}}]}, {"ruleId": "AIC003", "level": "note", "message": {"text": "Duplicated implementation block across source files"}, "properties": {"repobilityId": 53341, "scanner": "repobility-ai-code-hygiene", "fingerprint": "43539a1dfcbef5c9b3194ef4eea74ab342d146f5d3799b01172f2e205e3f337f", "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": "src/open_llm_vtuber/tts/bark_tts.py", "duplicate_line": 20, "correlation_key": "fp|43539a1dfcbef5c9b3194ef4eea74ab342d146f5d3799b01172f2e205e3f337f"}}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "src/open_llm_vtuber/tts/melo_tts.py"}, "region": {"startLine": 18}}}]}, {"ruleId": "AIC003", "level": "note", "message": {"text": "Duplicated implementation block across source files"}, "properties": {"repobilityId": 53340, "scanner": "repobility-ai-code-hygiene", "fingerprint": "92ca60c5f3d7dae7ebfbfc85be07d09f0acef61c65d1cce12ce17c8e450a0221", "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": "src/open_llm_vtuber/tts/bark_tts.py", "duplicate_line": 22, "correlation_key": "fp|92ca60c5f3d7dae7ebfbfc85be07d09f0acef61c65d1cce12ce17c8e450a0221"}}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "src/open_llm_vtuber/tts/edge_tts.py"}, "region": {"startLine": 13}}}]}, {"ruleId": "AIC003", "level": "note", "message": {"text": "Duplicated implementation block across source files"}, "properties": {"repobilityId": 53339, "scanner": "repobility-ai-code-hygiene", "fingerprint": "4d1c23ea821409af92e21f00a76f2e938791ff0871cdac5e0792796623ca85f6", "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": "src/open_llm_vtuber/tts/cosyvoice2_tts.py", "duplicate_line": 2, "correlation_key": "fp|4d1c23ea821409af92e21f00a76f2e938791ff0871cdac5e0792796623ca85f6"}}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "src/open_llm_vtuber/tts/cosyvoice_tts.py"}, "region": {"startLine": 2}}}]}, {"ruleId": "AIC003", "level": "note", "message": {"text": "Duplicated implementation block across source files"}, "properties": {"repobilityId": 53338, "scanner": "repobility-ai-code-hygiene", "fingerprint": "e92f9fe76ed7dfdd93184c2530284641c58bc83ff746ba01a21f1666743a26f7", "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": "prompts/prompt_loader.py", "duplicate_line": 21, "correlation_key": "fp|e92f9fe76ed7dfdd93184c2530284641c58bc83ff746ba01a21f1666743a26f7"}}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "src/open_llm_vtuber/live2d_model.py"}, "region": {"startLine": 41}}}]}, {"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": 53495, "scanner": "repobility-threat-engine", "fingerprint": "e6ecccb666505c0f74dfb62024772c12501b99b6feabb3dee7bf4cf4c2eacd92", "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|e6ecccb666505c0f74dfb62024772c12501b99b6feabb3dee7bf4cf4c2eacd92"}}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "web_tool/recorder.js"}, "region": {"startLine": 28}}}]}, {"ruleId": "MINED040", "level": "none", "message": {"text": "[MINED040] Python Yaml Load Unsafe (and 1 more): Same pattern found in 1 additional files. Review if needed."}, "properties": {"repobilityId": 53492, "scanner": "repobility-threat-engine", "fingerprint": "fed0f2cbb3b9c0c2917ee4ab4650e24094468ea44bdc9c614cf2ddd782014492", "category": "quality", "severity": "info", "confidence": 0.2, "triageState": "false_positive", "verdict": "likely_fp", "isResolved": true, "reason": "Deduplicated summary only: 1 additional occurrences found. The top occurrences remain visible as actionable findings.", "evidence": {"mined": true, "mining": {"slug": "python-yaml-load-unsafe", "owasp": null, "cwe_ids": ["CWE-502"], "languages": ["python"], "precision": 1.0, "promoted_at": "2026-05-18T14:01:32.347991+00:00", "triaged_in_corpus": 15, "observations_count": 1487, "ai_coder_pattern_id": 120}, "scanner": "repobility-threat-engine", "aggregated": true, "correlation_key": "fp|fed0f2cbb3b9c0c2917ee4ab4650e24094468ea44bdc9c614cf2ddd782014492", "aggregated_count": 1}}}, {"ruleId": "MINED018", "level": "none", "message": {"text": "[MINED018] Unsafe Deserialization Pickle (and 1 more): Same pattern found in 1 additional files. Review if needed."}, "properties": {"repobilityId": 53488, "scanner": "repobility-threat-engine", "fingerprint": "88b0baae6b23770669b84359add19a36749e80c16d965e9356e2b4c2ba129586", "category": "quality", "severity": "info", "confidence": 0.2, "triageState": "false_positive", "verdict": "likely_fp", "isResolved": true, "reason": "Deduplicated summary only: 1 additional occurrences found. The top occurrences remain visible as actionable findings.", "evidence": {"mined": true, "mining": {"slug": "unsafe-deserialization-pickle", "owasp": "A08:2021", "cwe_ids": ["CWE-502"], "precision": 1.0, "promoted_at": "2026-05-18T14:01:32.347940+00:00", "triaged_in_corpus": 20, "observations_count": 58759, "ai_coder_pattern_id": 32}, "scanner": "repobility-threat-engine", "aggregated": true, "correlation_key": "fp|88b0baae6b23770669b84359add19a36749e80c16d965e9356e2b4c2ba129586", "aggregated_count": 1}}}, {"ruleId": "SEC116", "level": "none", "message": {"text": "[SEC116] Ruby YAML.load / Marshal.load on untrusted input (and 1 more): Same pattern found in 1 additional files. Review if needed."}, "properties": {"repobilityId": 53484, "scanner": "repobility-threat-engine", "fingerprint": "ef9037a28ba243f78e7c6824873bde43491f9546a307aa3575277df707894cac", "category": "deserialization", "severity": "info", "confidence": 0.2, "triageState": "false_positive", "verdict": "likely_fp", "isResolved": true, "reason": "Deduplicated summary only: 1 additional occurrences found. The top occurrences remain visible as actionable findings.", "evidence": {"reason": "Deduplicated summary only: 1 additional occurrences found. The top occurrences remain visible as actionable findings.", "rule_id": "SEC116", "scanner": "repobility-threat-engine", "confidence": 0.2, "correlation_key": "fp|ef9037a28ba243f78e7c6824873bde43491f9546a307aa3575277df707894cac"}}}, {"ruleId": "SEC079", "level": "none", "message": {"text": "[SEC079] Python: yaml.load without SafeLoader (and 1 more): Same pattern found in 1 additional files. Review if needed."}, "properties": {"repobilityId": 53480, "scanner": "repobility-threat-engine", "fingerprint": "7f231a47641b0d3ee53ab57c9de2378e2e603c510cc8de6db2875245d61292cf", "category": "quality", "severity": "info", "confidence": 0.2, "triageState": "false_positive", "verdict": "likely_fp", "isResolved": true, "reason": "Deduplicated summary only: 1 additional occurrences found. The top occurrences remain visible as actionable findings.", "evidence": {"reason": "Deduplicated summary only: 1 additional occurrences found. The top occurrences remain visible as actionable findings.", "rule_id": "SEC079", "scanner": "repobility-threat-engine", "confidence": 0.2, "correlation_key": "fp|7f231a47641b0d3ee53ab57c9de2378e2e603c510cc8de6db2875245d61292cf"}}}, {"ruleId": "SEC007", "level": "none", "message": {"text": "[SEC007] Unsafe Deserialization (and 1 more): Same pattern found in 1 additional files. Review if needed."}, "properties": {"repobilityId": 53476, "scanner": "repobility-threat-engine", "fingerprint": "acf942e515aeb5556dcd6a667386a6c24a783b6b9aed69d2869d59662641c431", "category": "deserialization", "severity": "info", "confidence": 0.2, "triageState": "false_positive", "verdict": "likely_fp", "isResolved": true, "reason": "Deduplicated summary only: 1 additional occurrences found. The top occurrences remain visible as actionable findings.", "evidence": {"reason": "Deduplicated summary only: 1 additional occurrences found. The top occurrences remain visible as actionable findings.", "rule_id": "SEC007", "scanner": "repobility-threat-engine", "confidence": 0.2, "correlation_key": "fp|acf942e515aeb5556dcd6a667386a6c24a783b6b9aed69d2869d59662641c431"}}}, {"ruleId": "MINED064", "level": "none", "message": {"text": "[MINED064] Python Input Call: input() blocks for stdin. Inappropriate in services."}, "properties": {"repobilityId": 53472, "scanner": "repobility-threat-engine", "fingerprint": "a993ea4f488b94ca45a79c534edab069b9a75eafb00352bd447721e15e5c3e71", "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-input-call", "owasp": null, "cwe_ids": [], "languages": ["python"], "precision": 1.0, "promoted_at": "2026-05-18T14:01:32.348050+00:00", "triaged_in_corpus": 12, "observations_count": 66378, "ai_coder_pattern_id": 124}, "scanner": "repobility-threat-engine", "correlation_key": "fp|a993ea4f488b94ca45a79c534edab069b9a75eafb00352bd447721e15e5c3e71"}}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "upgrade.py"}, "region": {"startLine": 24}}}]}, {"ruleId": "MINED067", "level": "none", "message": {"text": "[MINED067] Python Requests No Timeout (and 2 more): Same pattern found in 2 additional files. Review if needed."}, "properties": {"repobilityId": 53457, "scanner": "repobility-threat-engine", "fingerprint": "1361ffa9c3e6bba8c756f3d556d7d430ee765c8d57ea666109adf6c3be4e2cb1", "category": "quality", "severity": "info", "confidence": 0.2, "triageState": "false_positive", "verdict": "likely_fp", "isResolved": true, "reason": "Deduplicated summary only: 2 additional occurrences found. The top occurrences remain visible as actionable findings.", "evidence": {"mined": true, "mining": {"slug": "python-requests-no-timeout", "owasp": null, "cwe_ids": ["CWE-400"], "languages": ["python"], "precision": 1.0, "promoted_at": "2026-05-18T14:01:32.348058+00:00", "triaged_in_corpus": 12, "observations_count": 45429, "ai_coder_pattern_id": 122}, "scanner": "repobility-threat-engine", "aggregated": true, "correlation_key": "fp|1361ffa9c3e6bba8c756f3d556d7d430ee765c8d57ea666109adf6c3be4e2cb1", "aggregated_count": 2}}}, {"ruleId": "MINED067", "level": "none", "message": {"text": "[MINED067] Python Requests No Timeout: requests.get/post/etc. without timeout= can hang forever."}, "properties": {"repobilityId": 53456, "scanner": "repobility-threat-engine", "fingerprint": "e3d1ea9dbaf284f7e1f3641f0524aa7e7484460e406d74434a80648979e5c3a4", "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-requests-no-timeout", "owasp": null, "cwe_ids": ["CWE-400"], "languages": ["python"], "precision": 1.0, "promoted_at": "2026-05-18T14:01:32.348058+00:00", "triaged_in_corpus": 12, "observations_count": 45429, "ai_coder_pattern_id": 122}, "scanner": "repobility-threat-engine", "correlation_key": "fp|e3d1ea9dbaf284f7e1f3641f0524aa7e7484460e406d74434a80648979e5c3a4"}}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "src/open_llm_vtuber/asr/utils.py"}, "region": {"startLine": 27}}}]}, {"ruleId": "MINED067", "level": "none", "message": {"text": "[MINED067] Python Requests No Timeout: requests.get/post/etc. without timeout= can hang forever."}, "properties": {"repobilityId": 53455, "scanner": "repobility-threat-engine", "fingerprint": "c26169e89e5eb83e123243a146bcfed1a9d43a38e80c66e790cd5006ebc72344", "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-requests-no-timeout", "owasp": null, "cwe_ids": ["CWE-400"], "languages": ["python"], "precision": 1.0, "promoted_at": "2026-05-18T14:01:32.348058+00:00", "triaged_in_corpus": 12, "observations_count": 45429, "ai_coder_pattern_id": 122}, "scanner": "repobility-threat-engine", "correlation_key": "fp|c26169e89e5eb83e123243a146bcfed1a9d43a38e80c66e790cd5006ebc72344"}}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "src/open_llm_vtuber/agent/stateless_llm/stateless_llm_with_template.py"}, "region": {"startLine": 160}}}]}, {"ruleId": "MINED067", "level": "none", "message": {"text": "[MINED067] Python Requests No Timeout: requests.get/post/etc. without timeout= can hang forever."}, "properties": {"repobilityId": 53454, "scanner": "repobility-threat-engine", "fingerprint": "646300deb51e99243f493c55a447ef6b188b04af1bee9fa3fa0a4ac3273c70b1", "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-requests-no-timeout", "owasp": null, "cwe_ids": ["CWE-400"], "languages": ["python"], "precision": 1.0, "promoted_at": "2026-05-18T14:01:32.348058+00:00", "triaged_in_corpus": 12, "observations_count": 45429, "ai_coder_pattern_id": 122}, "scanner": "repobility-threat-engine", "correlation_key": "fp|646300deb51e99243f493c55a447ef6b188b04af1bee9fa3fa0a4ac3273c70b1"}}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "src/open_llm_vtuber/agent/stateless_llm/ollama_llm.py"}, "region": {"startLine": 35}}}]}, {"ruleId": "SEC078", "level": "none", "message": {"text": "[SEC078] Python: requests without timeout (and 2 more): Same pattern found in 2 additional files. Review if needed."}, "properties": {"repobilityId": 53453, "scanner": "repobility-threat-engine", "fingerprint": "130c5045baecd0b9524abd6870aed08fddb81812daa325ac97b261216d6966ee", "category": "quality", "severity": "info", "confidence": 0.2, "triageState": "false_positive", "verdict": "likely_fp", "isResolved": true, "reason": "Deduplicated summary only: 2 additional occurrences found. The top occurrences remain visible as actionable findings.", "evidence": {"reason": "Deduplicated summary only: 2 additional occurrences found. The top occurrences remain visible as actionable findings.", "rule_id": "SEC078", "scanner": "repobility-threat-engine", "confidence": 0.2, "correlation_key": "fp|130c5045baecd0b9524abd6870aed08fddb81812daa325ac97b261216d6966ee"}}}, {"ruleId": "SEC029", "level": "none", "message": {"text": "[SEC029] Server-Side Request Forgery (SSRF) \u2014 outbound HTTP from user input (and 6 more): Same pattern found in 6 additional files. Review if needed."}, "properties": {"repobilityId": 53449, "scanner": "repobility-threat-engine", "fingerprint": "d57f94c2e96069b4a87a7fb2ba46f76103ae7ecd579ffae7064a6551df416baa", "category": "ssrf", "severity": "info", "confidence": 0.2, "triageState": "false_positive", "verdict": "likely_fp", "isResolved": true, "reason": "Deduplicated summary only: 6 additional occurrences found. The top occurrences remain visible as actionable findings.", "evidence": {"reason": "Deduplicated summary only: 6 additional occurrences found. The top occurrences remain visible as actionable findings.", "rule_id": "SEC029", "scanner": "repobility-threat-engine", "confidence": 0.2, "correlation_key": "fp|d57f94c2e96069b4a87a7fb2ba46f76103ae7ecd579ffae7064a6551df416baa"}}}, {"ruleId": "MINED062", "level": "none", "message": {"text": "[MINED062] Python Dataclass No Fields (and 1 more): Same pattern found in 1 additional files. Review if needed."}, "properties": {"repobilityId": 53445, "scanner": "repobility-threat-engine", "fingerprint": "fae806c2ee90fa304d3a37e2a631a59e1c95dc447dbe00b9024d66fc54d3ca88", "category": "quality", "severity": "info", "confidence": 0.2, "triageState": "false_positive", "verdict": "likely_fp", "isResolved": true, "reason": "Deduplicated summary only: 1 additional occurrences found. The top occurrences remain visible as actionable findings.", "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", "aggregated": true, "correlation_key": "fp|fae806c2ee90fa304d3a37e2a631a59e1c95dc447dbe00b9024d66fc54d3ca88", "aggregated_count": 1}}}, {"ruleId": "MINED062", "level": "none", "message": {"text": "[MINED062] Python Dataclass No Fields: @dataclass over an empty class \u2014 unfinished model."}, "properties": {"repobilityId": 53444, "scanner": "repobility-threat-engine", "fingerprint": "203ce8e5993deaec8e5be2d3fc251fb1458a22bd3852224d6d8006f50e5ff48d", "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|203ce8e5993deaec8e5be2d3fc251fb1458a22bd3852224d6d8006f50e5ff48d"}}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "src/open_llm_vtuber/conversations/types.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": 53443, "scanner": "repobility-threat-engine", "fingerprint": "fbf0b9a191afaa108ac1a294514053d4f227de0ff4ca92540120825ed71da74c", "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|fbf0b9a191afaa108ac1a294514053d4f227de0ff4ca92540120825ed71da74c"}}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "src/open_llm_vtuber/agent/output_types.py"}, "region": {"startLine": 6}}}]}, {"ruleId": "MINED062", "level": "none", "message": {"text": "[MINED062] Python Dataclass No Fields: @dataclass over an empty class \u2014 unfinished model."}, "properties": {"repobilityId": 53442, "scanner": "repobility-threat-engine", "fingerprint": "92f13e6c24cfe753c4c95709f16f04b6687bdd9a316cbdad089f67956d7483b0", "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|92f13e6c24cfe753c4c95709f16f04b6687bdd9a316cbdad089f67956d7483b0"}}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "src/open_llm_vtuber/agent/input_types.py"}, "region": {"startLine": 22}}}]}, {"ruleId": "MINED043", "level": "none", "message": {"text": "[MINED043] Http Not Https: Hardcoded http:// (not localhost) for endpoints that handle credentials or data."}, "properties": {"repobilityId": 53441, "scanner": "repobility-threat-engine", "fingerprint": "195bffae44a590ed14d94e6e729486f8b79799ce5aea885c98e5e1f09ed1bed4", "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": "http-not-https", "owasp": "A02:2021", "cwe_ids": ["CWE-319"], "precision": 0.917, "promoted_at": "2026-05-18T14:01:32.347999+00:00", "triaged_in_corpus": 12, "observations_count": 4113831, "ai_coder_pattern_id": 15}, "scanner": "repobility-threat-engine", "correlation_key": "fp|195bffae44a590ed14d94e6e729486f8b79799ce5aea885c98e5e1f09ed1bed4"}}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "src/open_llm_vtuber/agent/agents/letta_agent.py"}, "region": {"startLine": 31}}}]}, {"ruleId": "COMP001", "level": "none", "message": {"text": "[COMP001] High cognitive complexity (and 61 more): Same pattern found in 61 additional files. Review if needed."}, "properties": {"repobilityId": 53439, "scanner": "repobility-threat-engine", "fingerprint": "e6ffd8dac35215126fe44a131681c4ff601b22310456d26c77f0be77a3143c7c", "category": "quality", "severity": "info", "confidence": 0.2, "triageState": "false_positive", "verdict": "likely_fp", "isResolved": true, "reason": "Deduplicated summary only: 61 additional occurrences found. The top occurrences remain visible as actionable findings.", "evidence": {"scanner": "repobility-threat-engine", "function": "_load_file_content", "breakdown": {"if": 2, "for": 1, "except": 3, "continue": 1, "nested_bonus": 2}, "aggregated": true, "complexity": 9, "correlation_key": "fp|e6ffd8dac35215126fe44a131681c4ff601b22310456d26c77f0be77a3143c7c", "aggregated_count": 61}}}, {"ruleId": "MINED050", "level": "none", "message": {"text": "[MINED050] Stub Only Function (and 15 more): Same pattern found in 15 additional files. Review if needed."}, "properties": {"repobilityId": 53435, "scanner": "repobility-threat-engine", "fingerprint": "facf796ae6e2aa7466283972d237a4863312611f907ddf04cc3a6f3da2ca0582", "category": "quality", "severity": "info", "confidence": 0.2, "triageState": "false_positive", "verdict": "likely_fp", "isResolved": true, "reason": "Deduplicated summary only: 15 additional occurrences found. The top occurrences remain visible as actionable findings.", "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", "aggregated": true, "correlation_key": "fp|facf796ae6e2aa7466283972d237a4863312611f907ddf04cc3a6f3da2ca0582", "aggregated_count": 15}}}, {"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": 53434, "scanner": "repobility-threat-engine", "fingerprint": "22e20e93b3a2c9e16708bef087146bb9cf51f162154f0a18bc4afaf107bc383f", "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|22e20e93b3a2c9e16708bef087146bb9cf51f162154f0a18bc4afaf107bc383f"}}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "src/open_llm_vtuber/agent/agents/hume_ai.py"}, "region": {"startLine": 241}}}]}, {"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": 53433, "scanner": "repobility-threat-engine", "fingerprint": "748fcc047091a43149addba635d03a9f67036cbfe709673d6d4dc10eb676a8e5", "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|748fcc047091a43149addba635d03a9f67036cbfe709673d6d4dc10eb676a8e5"}}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "src/open_llm_vtuber/agent/agents/agent_interface.py"}, "region": {"startLine": 43}}}]}, {"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": 53432, "scanner": "repobility-threat-engine", "fingerprint": "8a720d2def458b7576a16ace4e3da5f10041b3dfd27f9633788fcfe45308e04f", "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|8a720d2def458b7576a16ace4e3da5f10041b3dfd27f9633788fcfe45308e04f"}}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "prompts/prompt_loader.py"}, "region": {"startLine": 50}}}]}, {"ruleId": "MINED001", "level": "none", "message": {"text": "[MINED001] Bare Except Pass (and 2 more): Same pattern found in 2 additional files. Review if needed."}, "properties": {"repobilityId": 53431, "scanner": "repobility-threat-engine", "fingerprint": "95cc9797c40c926759aaa04a4225f0a4ae4f9faafb543c58446c2f46cd9cfe9e", "category": "quality", "severity": "info", "confidence": 0.2, "triageState": "false_positive", "verdict": "likely_fp", "isResolved": true, "reason": "Deduplicated summary only: 2 additional occurrences found. The top occurrences remain visible as actionable findings.", "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", "aggregated": true, "correlation_key": "fp|95cc9797c40c926759aaa04a4225f0a4ae4f9faafb543c58446c2f46cd9cfe9e", "aggregated_count": 2}}}, {"ruleId": "DEPCUR-PY", "level": "none", "message": {"text": "Python package `aiohappyeyeballs` is patch version(s) behind (2.6.1 -> 2.6.2)"}, "properties": {"repobilityId": 53426, "scanner": "repobility-dependency-currency", "fingerprint": "6bf16146d50905046b01046626b86427520da19cc01605b146350956a276a7cc", "category": "dependency", "severity": "info", "confidence": 0.9, "triageState": "open", "verdict": "", "isResolved": false, "reason": "", "evidence": {"gap": "patch version(s) behind", "signal": "currency", "cwe_ids": [], "package": "aiohappyeyeballs", "scanner": "repobility-dependency-currency", "ecosystem": "pypi", "languages": ["python"], "latest_version": "2.6.2", "correlation_key": "fp|6bf16146d50905046b01046626b86427520da19cc01605b146350956a276a7cc", "current_version": "2.6.1"}}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "requirements.txt"}, "region": {"startLine": 3}}}]}, {"ruleId": "DEPCUR-PY", "level": "none", "message": {"text": "Python package `tqdm` is patch version(s) behind (4.67.1 -> 4.67.3)"}, "properties": {"repobilityId": 53423, "scanner": "repobility-dependency-currency", "fingerprint": "3129d0b06dce8599a7b71c683995dcc2a345d3e6d974cb4a2f769b6a860ae520", "category": "dependency", "severity": "info", "confidence": 0.9, "triageState": "open", "verdict": "", "isResolved": false, "reason": "", "evidence": {"gap": "patch version(s) behind", "signal": "currency", "cwe_ids": [], "package": "tqdm", "scanner": "repobility-dependency-currency", "ecosystem": "pypi", "languages": ["python"], "latest_version": "4.67.3", "correlation_key": "fp|3129d0b06dce8599a7b71c683995dcc2a345d3e6d974cb4a2f769b6a860ae520", "current_version": "4.67.1"}}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "requirements-bilibili.txt"}, "region": {"startLine": 33}}}]}, {"ruleId": "DEPCUR-PY", "level": "none", "message": {"text": "Python package `edge-tts` is patch version(s) behind (7.2.3 -> 7.2.8)"}, "properties": {"repobilityId": 53407, "scanner": "repobility-dependency-currency", "fingerprint": "2e94c9123e630f47d2bd7fd3251cafb60dd74976ade15374c18ac3c9e16f00fb", "category": "dependency", "severity": "info", "confidence": 0.9, "triageState": "open", "verdict": "", "isResolved": false, "reason": "", "evidence": {"gap": "patch version(s) behind", "signal": "currency", "cwe_ids": [], "package": "edge-tts", "scanner": "repobility-dependency-currency", "ecosystem": "pypi", "languages": ["python"], "latest_version": "7.2.8", "correlation_key": "fp|2e94c9123e630f47d2bd7fd3251cafb60dd74976ade15374c18ac3c9e16f00fb", "current_version": "7.2.3"}}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "requirements-bilibili.txt"}, "region": {"startLine": 7}}}]}, {"ruleId": "PYSEC-2026-142", "level": "error", "message": {"text": "urllib3: PYSEC-2026-142"}, "properties": {"repobilityId": 53630, "scanner": "osv-scanner", "fingerprint": "66e1b1aa9022c519776ddad0df70ff61566d315478a0e1d4db634530c7bec89d", "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|uv.lock", "duplicate_count": 1, "duplicate_rule_ids": ["GHSA-mf9v-mfxr-j63j", "PYSEC-2026-142"], "duplicate_scanners": ["osv-scanner"], "duplicate_fingerprints": ["66e1b1aa9022c519776ddad0df70ff61566d315478a0e1d4db634530c7bec89d", "a381e5d6707c9f75030a22ee814aac9c80fbfaca862e6fa548c90d2b0d78e00f"]}}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "uv.lock"}, "region": {"startLine": 1}}}]}, {"ruleId": "PYSEC-2026-141", "level": "error", "message": {"text": "urllib3: PYSEC-2026-141"}, "properties": {"repobilityId": 53629, "scanner": "osv-scanner", "fingerprint": "202e502152aa0eef57a4c3f3a01e648d30977c8aa06b2acc05a839706b0597b4", "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|uv.lock", "duplicate_count": 1, "duplicate_rule_ids": ["GHSA-qccp-gfcp-xxvc", "PYSEC-2026-141"], "duplicate_scanners": ["osv-scanner"], "duplicate_fingerprints": ["202e502152aa0eef57a4c3f3a01e648d30977c8aa06b2acc05a839706b0597b4", "b78af741547635e5ed59316b870c20991733a249d6cd722bd682d0d24fc35efa"]}}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "uv.lock"}, "region": {"startLine": 1}}}]}, {"ruleId": "PYSEC-2025-209", "level": "error", "message": {"text": "torch: PYSEC-2025-209"}, "properties": {"repobilityId": 53626, "scanner": "osv-scanner", "fingerprint": "d10a44632e51145cd5b816701a91c98bf6fc00d568117cc56465394c970367d5", "category": "dependency", "severity": "high", "confidence": 0.88, "triageState": "open", "verdict": "", "isResolved": false, "reason": "", "evidence": {"match": "", "aliases": ["BIT-pytorch-2025-55560", "CVE-2025-55560"], "package": "torch", "rule_id": "PYSEC-2025-209", "scanner": "osv-scanner", "correlation_key": "vuln|torch|CVE-2025-55560|uv.lock"}}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "uv.lock"}, "region": {"startLine": 1}}}]}, {"ruleId": "PYSEC-2025-208", "level": "error", "message": {"text": "torch: PYSEC-2025-208"}, "properties": {"repobilityId": 53625, "scanner": "osv-scanner", "fingerprint": "e4b657e9ee722813a74af648d6c0e09880afc7c9003762c0cbca2ed5d3c3c631", "category": "dependency", "severity": "high", "confidence": 0.88, "triageState": "open", "verdict": "", "isResolved": false, "reason": "", "evidence": {"match": "", "aliases": ["BIT-pytorch-2025-55558", "CVE-2025-55558"], "package": "torch", "rule_id": "PYSEC-2025-208", "scanner": "osv-scanner", "correlation_key": "vuln|torch|CVE-2025-55558|uv.lock"}}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "uv.lock"}, "region": {"startLine": 1}}}]}, {"ruleId": "PYSEC-2025-207", "level": "error", "message": {"text": "torch: PYSEC-2025-207"}, "properties": {"repobilityId": 53624, "scanner": "osv-scanner", "fingerprint": "d9716d8cdcce1d77124e60ab9c48d0fc93b78640b2c32c880021a5f298d0b5f7", "category": "dependency", "severity": "high", "confidence": 0.88, "triageState": "open", "verdict": "", "isResolved": false, "reason": "", "evidence": {"match": "", "aliases": ["BIT-pytorch-2025-55557", "CVE-2025-55557"], "package": "torch", "rule_id": "PYSEC-2025-207", "scanner": "osv-scanner", "correlation_key": "vuln|torch|CVE-2025-55557|uv.lock"}}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "uv.lock"}, "region": {"startLine": 1}}}]}, {"ruleId": "PYSEC-2025-206", "level": "error", "message": {"text": "torch: PYSEC-2025-206"}, "properties": {"repobilityId": 53623, "scanner": "osv-scanner", "fingerprint": "ad08ca8ae89dd6d0feeacd5b0fd29396ec4ccdaa5ea77dc82431a885a49d3ecc", "category": "dependency", "severity": "high", "confidence": 0.88, "triageState": "open", "verdict": "", "isResolved": false, "reason": "", "evidence": {"match": "", "aliases": ["BIT-pytorch-2025-55554", "CVE-2025-55554"], "package": "torch", "rule_id": "PYSEC-2025-206", "scanner": "osv-scanner", "correlation_key": "vuln|torch|CVE-2025-55554|uv.lock"}}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "uv.lock"}, "region": {"startLine": 1}}}]}, {"ruleId": "PYSEC-2025-205", "level": "error", "message": {"text": "torch: PYSEC-2025-205"}, "properties": {"repobilityId": 53622, "scanner": "osv-scanner", "fingerprint": "46b949fc920c4e870f988eed7c5edffd41d6392a6c966a13caeb8c50c710d7c6", "category": "dependency", "severity": "high", "confidence": 0.88, "triageState": "open", "verdict": "", "isResolved": false, "reason": "", "evidence": {"match": "", "aliases": ["BIT-pytorch-2025-55553", "CVE-2025-55553"], "package": "torch", "rule_id": "PYSEC-2025-205", "scanner": "osv-scanner", "correlation_key": "vuln|torch|CVE-2025-55553|uv.lock"}}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "uv.lock"}, "region": {"startLine": 1}}}]}, {"ruleId": "PYSEC-2025-204", "level": "error", "message": {"text": "torch: PYSEC-2025-204"}, "properties": {"repobilityId": 53621, "scanner": "osv-scanner", "fingerprint": "a6a5bad4f9fb8bd5e8daffcc6f9d4ce6bda4b09aa51ac0a7e9485db94888bef9", "category": "dependency", "severity": "high", "confidence": 0.88, "triageState": "open", "verdict": "", "isResolved": false, "reason": "", "evidence": {"match": "", "aliases": ["BIT-pytorch-2025-55552", "CVE-2025-55552"], "package": "torch", "rule_id": "PYSEC-2025-204", "scanner": "osv-scanner", "correlation_key": "vuln|torch|CVE-2025-55552|uv.lock"}}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "uv.lock"}, "region": {"startLine": 1}}}]}, {"ruleId": "PYSEC-2025-203", "level": "error", "message": {"text": "torch: PYSEC-2025-203"}, "properties": {"repobilityId": 53620, "scanner": "osv-scanner", "fingerprint": "4b5aa549c6a9b4fe38318569f9954e5834ca5dd3a6e21597bbe793ba59650fad", "category": "dependency", "severity": "high", "confidence": 0.88, "triageState": "open", "verdict": "", "isResolved": false, "reason": "", "evidence": {"match": "", "aliases": ["BIT-pytorch-2025-55551", "CVE-2025-55551"], "package": "torch", "rule_id": "PYSEC-2025-203", "scanner": "osv-scanner", "correlation_key": "vuln|torch|CVE-2025-55551|uv.lock"}}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "uv.lock"}, "region": {"startLine": 1}}}]}, {"ruleId": "PYSEC-2025-198", "level": "error", "message": {"text": "torch: PYSEC-2025-198"}, "properties": {"repobilityId": 53619, "scanner": "osv-scanner", "fingerprint": "77fe73eb58fe331818236afa226a274f3cb9da808e5fb05ac02e1d46e0403767", "category": "dependency", "severity": "high", "confidence": 0.88, "triageState": "open", "verdict": "", "isResolved": false, "reason": "", "evidence": {"match": "", "aliases": ["BIT-pytorch-2025-46148", "CVE-2025-46148"], "package": "torch", "rule_id": "PYSEC-2025-198", "scanner": "osv-scanner", "correlation_key": "vuln|torch|CVE-2025-46148|uv.lock"}}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "uv.lock"}, "region": {"startLine": 1}}}]}, {"ruleId": "PYSEC-2025-191", "level": "error", "message": {"text": "torch: PYSEC-2025-191"}, "properties": {"repobilityId": 53618, "scanner": "osv-scanner", "fingerprint": "6aadc732519cb0d09692dfd6ed20d0b1bf4da520f7985992e60b2914eec07e2e", "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-pytorch-2025-2953", "CVE-2025-2953", "GHSA-3749-ghw9-m3mg"], "package": "torch", "rule_id": "PYSEC-2025-191", "scanner": "osv-scanner", "correlation_key": "vuln|torch|CVE-2025-2953|uv.lock", "duplicate_count": 1, "duplicate_rule_ids": ["GHSA-3749-ghw9-m3mg", "PYSEC-2025-191"], "duplicate_scanners": ["osv-scanner"], "duplicate_fingerprints": ["6aadc732519cb0d09692dfd6ed20d0b1bf4da520f7985992e60b2914eec07e2e", "8cdc39d7a530955d65869d0a67e0b2648d5738c4ab4b6e36ab3b5c8d505a35f0"]}}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "uv.lock"}, "region": {"startLine": 1}}}]}, {"ruleId": "PYSEC-2024-259", "level": "error", "message": {"text": "torch: PYSEC-2024-259"}, "properties": {"repobilityId": 53617, "scanner": "osv-scanner", "fingerprint": "e6bfe8170b19379544744e2b692272339d6b4091ecd1ed8cfd725e8fb7004cda", "category": "dependency", "severity": "high", "confidence": 0.88, "triageState": "open", "verdict": "", "isResolved": false, "reason": "", "evidence": {"match": "", "aliases": ["BIT-pytorch-2024-48063", "CVE-2024-48063"], "package": "torch", "rule_id": "PYSEC-2024-259", "scanner": "osv-scanner", "correlation_key": "vuln|torch|CVE-2024-48063|uv.lock"}}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "uv.lock"}, "region": {"startLine": 1}}}]}, {"ruleId": "PYSEC-2026-139", "level": "error", "message": {"text": "torch: PYSEC-2026-139"}, "properties": {"repobilityId": 53616, "scanner": "osv-scanner", "fingerprint": "0932ce38a12dcbb6e1762f776eb81e81ef6922864fc81b73b690b82d1e2552c1", "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|uv.lock"}}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "uv.lock"}, "region": {"startLine": 1}}}]}, {"ruleId": "PYSEC-2026-161", "level": "error", "message": {"text": "starlette: PYSEC-2026-161"}, "properties": {"repobilityId": 53615, "scanner": "osv-scanner", "fingerprint": "993c965e051ac08384f28c004ed2828303fa08d6e623c80da1211dbce5cea7ce", "category": "dependency", "severity": "high", "confidence": 0.88, "triageState": "open", "verdict": "", "isResolved": false, "reason": "", "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|uv.lock"}}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "uv.lock"}, "region": {"startLine": 1}}}]}, {"ruleId": "GHSA-wp53-j4wj-2cfg", "level": "error", "message": {"text": "python-multipart: GHSA-wp53-j4wj-2cfg"}, "properties": {"repobilityId": 53613, "scanner": "osv-scanner", "fingerprint": "df7b06460c1f153ec5ed3f56e147b2819f761a3e8389a8372f954682bd5975ab", "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|uv.lock"}}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "uv.lock"}, "region": {"startLine": 1}}}]}, {"ruleId": "GHSA-pp6c-gr5w-3c5g", "level": "error", "message": {"text": "python-multipart: GHSA-pp6c-gr5w-3c5g"}, "properties": {"repobilityId": 53612, "scanner": "osv-scanner", "fingerprint": "813234e13bf5f6c49b4449533cb686042249a04d5138b2bb710becb99802b5e4", "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|uv.lock"}}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "uv.lock"}, "region": {"startLine": 1}}}]}, {"ruleId": "PYSEC-2026-179", "level": "error", "message": {"text": "pyjwt: PYSEC-2026-179"}, "properties": {"repobilityId": 53609, "scanner": "osv-scanner", "fingerprint": "3a8c92a4bc42452ab63c8b780593c12b550761e77665f811c437dd35791069ae", "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|uv.lock"}}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "uv.lock"}, "region": {"startLine": 1}}}]}, {"ruleId": "PYSEC-2026-178", "level": "error", "message": {"text": "pyjwt: PYSEC-2026-178"}, "properties": {"repobilityId": 53608, "scanner": "osv-scanner", "fingerprint": "529afc49608a001ef35ca72e2e5bf2ab615fb9fdf39e2d3fc621ae3c7274698b", "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|uv.lock"}}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "uv.lock"}, "region": {"startLine": 1}}}]}, {"ruleId": "PYSEC-2026-177", "level": "error", "message": {"text": "pyjwt: PYSEC-2026-177"}, "properties": {"repobilityId": 53607, "scanner": "osv-scanner", "fingerprint": "e4a57bf8d7416024fd079256b08e268bcee4f11f05b7eaee044fc1d8b95a1189", "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|uv.lock"}}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "uv.lock"}, "region": {"startLine": 1}}}]}, {"ruleId": "PYSEC-2026-176", "level": "error", "message": {"text": "pyjwt: PYSEC-2026-176"}, "properties": {"repobilityId": 53606, "scanner": "osv-scanner", "fingerprint": "5eb9f4f10fe839d0ad0a3fb8daefa7a7e3a6bbba63914240c43c676f67443b58", "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|uv.lock"}}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "uv.lock"}, "region": {"startLine": 1}}}]}, {"ruleId": "PYSEC-2026-175", "level": "error", "message": {"text": "pyjwt: PYSEC-2026-175"}, "properties": {"repobilityId": 53605, "scanner": "osv-scanner", "fingerprint": "5008712fe3bda523fafb9d2d087e037a86c42cd2bee1401e12b9c2d636db62f1", "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|uv.lock"}}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "uv.lock"}, "region": {"startLine": 1}}}]}, {"ruleId": "PYSEC-2026-120", "level": "error", "message": {"text": "pyjwt: PYSEC-2026-120"}, "properties": {"repobilityId": 53604, "scanner": "osv-scanner", "fingerprint": "b81b67e8ab2cf04164f57838dc7c92ed537f13d09c8d538c92b1e563ff5e9dbf", "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|uv.lock", "duplicate_count": 1, "duplicate_rule_ids": ["GHSA-752w-5fwx-jx9f", "PYSEC-2026-120"], "duplicate_scanners": ["osv-scanner"], "duplicate_fingerprints": ["097ffc8c319dbda74296c2d822fb7e784a728bbe5818ffd4fdf2ff87b23dc8a6", "b81b67e8ab2cf04164f57838dc7c92ed537f13d09c8d538c92b1e563ff5e9dbf"]}}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "uv.lock"}, "region": {"startLine": 1}}}]}, {"ruleId": "PYSEC-2025-183", "level": "error", "message": {"text": "pyjwt: PYSEC-2025-183"}, "properties": {"repobilityId": 53603, "scanner": "osv-scanner", "fingerprint": "a9f6a44b1288869f7fa1f9209194c8028f8fb2a8b3551efb3643480e2a16019d", "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|uv.lock"}}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "uv.lock"}, "region": {"startLine": 1}}}]}, {"ruleId": "GHSA-7gcm-g887-7qv7", "level": "error", "message": {"text": "protobuf: GHSA-7gcm-g887-7qv7"}, "properties": {"repobilityId": 53601, "scanner": "osv-scanner", "fingerprint": "ddbbc0f7d498a39bbdef85fa83640eb41cd35a02b95dcb6c0a936bcf12caeb33", "category": "dependency", "severity": "high", "confidence": 0.88, "triageState": "open", "verdict": "", "isResolved": false, "reason": "", "evidence": {"match": "", "aliases": ["CVE-2026-0994"], "package": "protobuf", "rule_id": "GHSA-7gcm-g887-7qv7", "scanner": "osv-scanner", "correlation_key": "vuln|protobuf|CVE-2026-0994|uv.lock"}}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "uv.lock"}, "region": {"startLine": 1}}}]}, {"ruleId": "GHSA-r6ph-v2qm-q3c2", "level": "error", "message": {"text": "cryptography: GHSA-r6ph-v2qm-q3c2"}, "properties": {"repobilityId": 53599, "scanner": "osv-scanner", "fingerprint": "722e27eed0144115cd0298bc726f8236cafe94d3d15748aaaaaf81108f8fd367", "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|uv.lock"}}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "uv.lock"}, "region": {"startLine": 1}}}]}, {"ruleId": "PYSEC-2026-36", "level": "error", "message": {"text": "cryptography: PYSEC-2026-36"}, "properties": {"repobilityId": 53598, "scanner": "osv-scanner", "fingerprint": "d58d1c2131ffa6e68da8f6dbe3e40645adcbd9a5a5956e7fa031a501676b466f", "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|uv.lock", "duplicate_count": 1, "duplicate_rule_ids": ["GHSA-p423-j2cm-9vmq", "PYSEC-2026-36"], "duplicate_scanners": ["osv-scanner"], "duplicate_fingerprints": ["7e34b073e9e24b5b23a6261ec180e49d3e8b48e77ea15a448c50deeca3015183", "d58d1c2131ffa6e68da8f6dbe3e40645adcbd9a5a5956e7fa031a501676b466f"]}}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "uv.lock"}, "region": {"startLine": 1}}}]}, {"ruleId": "PYSEC-2026-35", "level": "error", "message": {"text": "cryptography: PYSEC-2026-35"}, "properties": {"repobilityId": 53597, "scanner": "osv-scanner", "fingerprint": "3fd8d9848bacdad5903a884d7310d0805d4bce36b57f995ee47ab10e8dfdd579", "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|uv.lock", "duplicate_count": 1, "duplicate_rule_ids": ["GHSA-m959-cc7f-wv43", "PYSEC-2026-35"], "duplicate_scanners": ["osv-scanner"], "duplicate_fingerprints": ["3fd8d9848bacdad5903a884d7310d0805d4bce36b57f995ee47ab10e8dfdd579", "ade6b32d35c983f0ffbc31a6ab03f799856be16faa591ee1be7218c20fc627bf"]}}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "uv.lock"}, "region": {"startLine": 1}}}]}, {"ruleId": "GHSA-2qfp-q593-8484", "level": "error", "message": {"text": "brotli: GHSA-2qfp-q593-8484"}, "properties": {"repobilityId": 53596, "scanner": "osv-scanner", "fingerprint": "926cad783993e73863ae9b043ece9ae1e53e42bab2026040bae0c0462bbd38ab", "category": "dependency", "severity": "high", "confidence": 0.88, "triageState": "open", "verdict": "", "isResolved": false, "reason": "", "evidence": {"match": "", "aliases": ["CVE-2025-6176"], "package": "brotli", "rule_id": "GHSA-2qfp-q593-8484", "scanner": "osv-scanner", "correlation_key": "vuln|brotli|CVE-2025-6176|uv.lock"}}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "uv.lock"}, "region": {"startLine": 1}}}]}, {"ruleId": "PYSEC-2026-142", "level": "error", "message": {"text": "urllib3: PYSEC-2026-142"}, "properties": {"repobilityId": 53583, "scanner": "osv-scanner", "fingerprint": "5f2e02d2c659d3ab15658789dfa42b355fce18e5357980b9a56ee43e7eb42b6a", "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|requirements.txt", "duplicate_count": 1, "duplicate_rule_ids": ["GHSA-mf9v-mfxr-j63j", "PYSEC-2026-142"], "duplicate_scanners": ["osv-scanner"], "duplicate_fingerprints": ["5f2e02d2c659d3ab15658789dfa42b355fce18e5357980b9a56ee43e7eb42b6a", "6bba33e0c2d8ac349b1ac06c49b7247b9b2fcff3ba63a1aa2c9b824716e5827b"]}}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "requirements.txt"}, "region": {"startLine": 1}}}]}, {"ruleId": "PYSEC-2026-141", "level": "error", "message": {"text": "urllib3: PYSEC-2026-141"}, "properties": {"repobilityId": 53582, "scanner": "osv-scanner", "fingerprint": "c9782ea239ddf9652bd8aa66c5c6c4ebee4d2b704faaab015341940a64bb5ee3", "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|requirements.txt", "duplicate_count": 1, "duplicate_rule_ids": ["GHSA-qccp-gfcp-xxvc", "PYSEC-2026-141"], "duplicate_scanners": ["osv-scanner"], "duplicate_fingerprints": ["8fea5709b1e04c1904accc4ad0dc76733fefc920773cbaba3c59a24994880532", "c9782ea239ddf9652bd8aa66c5c6c4ebee4d2b704faaab015341940a64bb5ee3"]}}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "requirements.txt"}, "region": {"startLine": 1}}}]}, {"ruleId": "PYSEC-2025-209", "level": "error", "message": {"text": "torch: PYSEC-2025-209"}, "properties": {"repobilityId": 53579, "scanner": "osv-scanner", "fingerprint": "42dc64d7e946fcd4f6c5e1db1f508e2ad0c7ec675053124bc6fff8c89bf4c50d", "category": "dependency", "severity": "high", "confidence": 0.88, "triageState": "open", "verdict": "", "isResolved": false, "reason": "", "evidence": {"match": "", "aliases": ["BIT-pytorch-2025-55560", "CVE-2025-55560"], "package": "torch", "rule_id": "PYSEC-2025-209", "scanner": "osv-scanner", "correlation_key": "vuln|torch|CVE-2025-55560|requirements.txt"}}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "requirements.txt"}, "region": {"startLine": 1}}}]}, {"ruleId": "PYSEC-2025-208", "level": "error", "message": {"text": "torch: PYSEC-2025-208"}, "properties": {"repobilityId": 53578, "scanner": "osv-scanner", "fingerprint": "42d2fe6c091afc2d566f725ca0e7d1d47ae80d9d80fbbbf2e9fbf80c659d1e25", "category": "dependency", "severity": "high", "confidence": 0.88, "triageState": "open", "verdict": "", "isResolved": false, "reason": "", "evidence": {"match": "", "aliases": ["BIT-pytorch-2025-55558", "CVE-2025-55558"], "package": "torch", "rule_id": "PYSEC-2025-208", "scanner": "osv-scanner", "correlation_key": "vuln|torch|CVE-2025-55558|requirements.txt"}}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "requirements.txt"}, "region": {"startLine": 1}}}]}, {"ruleId": "PYSEC-2025-207", "level": "error", "message": {"text": "torch: PYSEC-2025-207"}, "properties": {"repobilityId": 53577, "scanner": "osv-scanner", "fingerprint": "a13711f1a25054bab2d82002695e5bd578039bd1e7fbdc18325fd78cf2d65bd4", "category": "dependency", "severity": "high", "confidence": 0.88, "triageState": "open", "verdict": "", "isResolved": false, "reason": "", "evidence": {"match": "", "aliases": ["BIT-pytorch-2025-55557", "CVE-2025-55557"], "package": "torch", "rule_id": "PYSEC-2025-207", "scanner": "osv-scanner", "correlation_key": "vuln|torch|CVE-2025-55557|requirements.txt"}}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "requirements.txt"}, "region": {"startLine": 1}}}]}, {"ruleId": "PYSEC-2025-206", "level": "error", "message": {"text": "torch: PYSEC-2025-206"}, "properties": {"repobilityId": 53576, "scanner": "osv-scanner", "fingerprint": "8288c00698e4f0892ed7b4833bd3b85b41bf549f0a8ff7dc7effef4c13cac8bb", "category": "dependency", "severity": "high", "confidence": 0.88, "triageState": "open", "verdict": "", "isResolved": false, "reason": "", "evidence": {"match": "", "aliases": ["BIT-pytorch-2025-55554", "CVE-2025-55554"], "package": "torch", "rule_id": "PYSEC-2025-206", "scanner": "osv-scanner", "correlation_key": "vuln|torch|CVE-2025-55554|requirements.txt"}}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "requirements.txt"}, "region": {"startLine": 1}}}]}, {"ruleId": "PYSEC-2025-205", "level": "error", "message": {"text": "torch: PYSEC-2025-205"}, "properties": {"repobilityId": 53575, "scanner": "osv-scanner", "fingerprint": "e2f0e9323a6d6947382c5e7f6647d17e5b23df5113c8a42dd992fcf8b739a6f8", "category": "dependency", "severity": "high", "confidence": 0.88, "triageState": "open", "verdict": "", "isResolved": false, "reason": "", "evidence": {"match": "", "aliases": ["BIT-pytorch-2025-55553", "CVE-2025-55553"], "package": "torch", "rule_id": "PYSEC-2025-205", "scanner": "osv-scanner", "correlation_key": "vuln|torch|CVE-2025-55553|requirements.txt"}}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "requirements.txt"}, "region": {"startLine": 1}}}]}, {"ruleId": "PYSEC-2025-204", "level": "error", "message": {"text": "torch: PYSEC-2025-204"}, "properties": {"repobilityId": 53574, "scanner": "osv-scanner", "fingerprint": "f5f02114125d5df4d2b8f08f2a38f89f6013b40fb45d2ae71e53288ecc9629d4", "category": "dependency", "severity": "high", "confidence": 0.88, "triageState": "open", "verdict": "", "isResolved": false, "reason": "", "evidence": {"match": "", "aliases": ["BIT-pytorch-2025-55552", "CVE-2025-55552"], "package": "torch", "rule_id": "PYSEC-2025-204", "scanner": "osv-scanner", "correlation_key": "vuln|torch|CVE-2025-55552|requirements.txt"}}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "requirements.txt"}, "region": {"startLine": 1}}}]}, {"ruleId": "PYSEC-2025-203", "level": "error", "message": {"text": "torch: PYSEC-2025-203"}, "properties": {"repobilityId": 53573, "scanner": "osv-scanner", "fingerprint": "6d76e1f0602b84e5d6dcbd8bf77c316b96e80c8ca066aa399591e113b69e9434", "category": "dependency", "severity": "high", "confidence": 0.88, "triageState": "open", "verdict": "", "isResolved": false, "reason": "", "evidence": {"match": "", "aliases": ["BIT-pytorch-2025-55551", "CVE-2025-55551"], "package": "torch", "rule_id": "PYSEC-2025-203", "scanner": "osv-scanner", "correlation_key": "vuln|torch|CVE-2025-55551|requirements.txt"}}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "requirements.txt"}, "region": {"startLine": 1}}}]}, {"ruleId": "PYSEC-2025-198", "level": "error", "message": {"text": "torch: PYSEC-2025-198"}, "properties": {"repobilityId": 53572, "scanner": "osv-scanner", "fingerprint": "a59b95d58cf638832ab597ccc6f9837276ead07c755d84fe289e8a1a4beac792", "category": "dependency", "severity": "high", "confidence": 0.88, "triageState": "open", "verdict": "", "isResolved": false, "reason": "", "evidence": {"match": "", "aliases": ["BIT-pytorch-2025-46148", "CVE-2025-46148"], "package": "torch", "rule_id": "PYSEC-2025-198", "scanner": "osv-scanner", "correlation_key": "vuln|torch|CVE-2025-46148|requirements.txt"}}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "requirements.txt"}, "region": {"startLine": 1}}}]}, {"ruleId": "PYSEC-2025-191", "level": "error", "message": {"text": "torch: PYSEC-2025-191"}, "properties": {"repobilityId": 53571, "scanner": "osv-scanner", "fingerprint": "63e8713b990c785ec72715ef0f1e0b754d8f3c626fc497e0a3d76d1326d24588", "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-pytorch-2025-2953", "CVE-2025-2953", "GHSA-3749-ghw9-m3mg"], "package": "torch", "rule_id": "PYSEC-2025-191", "scanner": "osv-scanner", "correlation_key": "vuln|torch|CVE-2025-2953|requirements.txt", "duplicate_count": 1, "duplicate_rule_ids": ["GHSA-3749-ghw9-m3mg", "PYSEC-2025-191"], "duplicate_scanners": ["osv-scanner"], "duplicate_fingerprints": ["492066a5fc96408ca6ee982145de4989417144422d28bbd29091d96e590a5635", "63e8713b990c785ec72715ef0f1e0b754d8f3c626fc497e0a3d76d1326d24588"]}}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "requirements.txt"}, "region": {"startLine": 1}}}]}, {"ruleId": "PYSEC-2024-259", "level": "error", "message": {"text": "torch: PYSEC-2024-259"}, "properties": {"repobilityId": 53570, "scanner": "osv-scanner", "fingerprint": "17708c09eb52601bc52934f5ca22a58eeaaa42cb21622f2fc8f38ee826387573", "category": "dependency", "severity": "high", "confidence": 0.88, "triageState": "open", "verdict": "", "isResolved": false, "reason": "", "evidence": {"match": "", "aliases": ["BIT-pytorch-2024-48063", "CVE-2024-48063"], "package": "torch", "rule_id": "PYSEC-2024-259", "scanner": "osv-scanner", "correlation_key": "vuln|torch|CVE-2024-48063|requirements.txt"}}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "requirements.txt"}, "region": {"startLine": 1}}}]}, {"ruleId": "PYSEC-2026-139", "level": "error", "message": {"text": "torch: PYSEC-2026-139"}, "properties": {"repobilityId": 53569, "scanner": "osv-scanner", "fingerprint": "dd04c0ad63c2478c2f5bf965b08351817fd11582f15e756d7eaa4049b12b9b37", "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|requirements.txt"}}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "requirements.txt"}, "region": {"startLine": 1}}}]}, {"ruleId": "PYSEC-2026-161", "level": "error", "message": {"text": "starlette: PYSEC-2026-161"}, "properties": {"repobilityId": 53568, "scanner": "osv-scanner", "fingerprint": "6c3fcf86b8f63f4c3ca9d5ef113bb3a8e6ef998d023094d24d07331a1f1634c2", "category": "dependency", "severity": "high", "confidence": 0.88, "triageState": "open", "verdict": "", "isResolved": false, "reason": "", "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|requirements.txt"}}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "requirements.txt"}, "region": {"startLine": 1}}}]}, {"ruleId": "GHSA-wp53-j4wj-2cfg", "level": "error", "message": {"text": "python-multipart: GHSA-wp53-j4wj-2cfg"}, "properties": {"repobilityId": 53566, "scanner": "osv-scanner", "fingerprint": "ab310ff486e243f3e06da04a9076d74f834e61099309a870a317795841f7326e", "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|requirements.txt"}}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "requirements.txt"}, "region": {"startLine": 1}}}]}, {"ruleId": "GHSA-pp6c-gr5w-3c5g", "level": "error", "message": {"text": "python-multipart: GHSA-pp6c-gr5w-3c5g"}, "properties": {"repobilityId": 53565, "scanner": "osv-scanner", "fingerprint": "437a4bfa6acf1558920a94d469aa3d359eb12196a7a32d16eb8a997cc5f7439a", "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|requirements.txt"}}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "requirements.txt"}, "region": {"startLine": 1}}}]}, {"ruleId": "PYSEC-2026-179", "level": "error", "message": {"text": "pyjwt: PYSEC-2026-179"}, "properties": {"repobilityId": 53562, "scanner": "osv-scanner", "fingerprint": "5c3eafc67979022f561e9d4f5419a08a2752d1c1403b6231e0286243dc4de621", "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|requirements.txt"}}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "requirements.txt"}, "region": {"startLine": 1}}}]}, {"ruleId": "PYSEC-2026-178", "level": "error", "message": {"text": "pyjwt: PYSEC-2026-178"}, "properties": {"repobilityId": 53561, "scanner": "osv-scanner", "fingerprint": "d78da9b30f77c7f52b6df8d66103d01f553e3bf4dd2178d5ea0b37402014cb9a", "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|requirements.txt"}}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "requirements.txt"}, "region": {"startLine": 1}}}]}, {"ruleId": "PYSEC-2026-177", "level": "error", "message": {"text": "pyjwt: PYSEC-2026-177"}, "properties": {"repobilityId": 53560, "scanner": "osv-scanner", "fingerprint": "3efd69038a22cfd1254fc5996a1045b73353f48034b55443c679a98678e7502c", "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|requirements.txt"}}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "requirements.txt"}, "region": {"startLine": 1}}}]}, {"ruleId": "PYSEC-2026-176", "level": "error", "message": {"text": "pyjwt: PYSEC-2026-176"}, "properties": {"repobilityId": 53559, "scanner": "osv-scanner", "fingerprint": "9cb579ee2b69105ef3545f61add1d1fc5f5837e9259e9562ac305e1b2edfcbbb", "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|requirements.txt"}}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "requirements.txt"}, "region": {"startLine": 1}}}]}, {"ruleId": "PYSEC-2026-175", "level": "error", "message": {"text": "pyjwt: PYSEC-2026-175"}, "properties": {"repobilityId": 53558, "scanner": "osv-scanner", "fingerprint": "6e43e9e4fcddce5ed9d95508ee3af57e07c02f8be6ef2b4c716c8f00f38e9ef4", "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|requirements.txt"}}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "requirements.txt"}, "region": {"startLine": 1}}}]}, {"ruleId": "PYSEC-2026-120", "level": "error", "message": {"text": "pyjwt: PYSEC-2026-120"}, "properties": {"repobilityId": 53557, "scanner": "osv-scanner", "fingerprint": "6caf36498d4b7abad005b1eea81f754040e2c0f5f6d1a01b3f08a9b5547a758b", "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|requirements.txt", "duplicate_count": 1, "duplicate_rule_ids": ["GHSA-752w-5fwx-jx9f", "PYSEC-2026-120"], "duplicate_scanners": ["osv-scanner"], "duplicate_fingerprints": ["6caf36498d4b7abad005b1eea81f754040e2c0f5f6d1a01b3f08a9b5547a758b", "da6dc263e76a00782090dfbe78086c251f57fcc2dcfd38bca8beeb965dbd2935"]}}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "requirements.txt"}, "region": {"startLine": 1}}}]}, {"ruleId": "PYSEC-2025-183", "level": "error", "message": {"text": "pyjwt: PYSEC-2025-183"}, "properties": {"repobilityId": 53556, "scanner": "osv-scanner", "fingerprint": "08fa77768ae9edd3e21f014bbff428488520df9887a5882063d44c06b9bb7250", "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|requirements.txt"}}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "requirements.txt"}, "region": {"startLine": 1}}}]}, {"ruleId": "GHSA-7gcm-g887-7qv7", "level": "error", "message": {"text": "protobuf: GHSA-7gcm-g887-7qv7"}, "properties": {"repobilityId": 53554, "scanner": "osv-scanner", "fingerprint": "bb260c328c4a29e13fd6cd279f181e57d0039d7ea538f2891cf63f4975fc779f", "category": "dependency", "severity": "high", "confidence": 0.88, "triageState": "open", "verdict": "", "isResolved": false, "reason": "", "evidence": {"match": "", "aliases": ["CVE-2026-0994"], "package": "protobuf", "rule_id": "GHSA-7gcm-g887-7qv7", "scanner": "osv-scanner", "correlation_key": "vuln|protobuf|CVE-2026-0994|requirements.txt"}}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "requirements.txt"}, "region": {"startLine": 1}}}]}, {"ruleId": "GHSA-r6ph-v2qm-q3c2", "level": "error", "message": {"text": "cryptography: GHSA-r6ph-v2qm-q3c2"}, "properties": {"repobilityId": 53552, "scanner": "osv-scanner", "fingerprint": "6d34d8110ace186fedbc22809b15c3e7151ec9e76728d51ff0a409574deded8f", "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|requirements.txt"}}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "requirements.txt"}, "region": {"startLine": 1}}}]}, {"ruleId": "PYSEC-2026-36", "level": "error", "message": {"text": "cryptography: PYSEC-2026-36"}, "properties": {"repobilityId": 53551, "scanner": "osv-scanner", "fingerprint": "2f05b9d2c61a40e393516596518d278162399a34d4e26a2748185ee962ddc3cf", "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|requirements.txt", "duplicate_count": 1, "duplicate_rule_ids": ["GHSA-p423-j2cm-9vmq", "PYSEC-2026-36"], "duplicate_scanners": ["osv-scanner"], "duplicate_fingerprints": ["2f05b9d2c61a40e393516596518d278162399a34d4e26a2748185ee962ddc3cf", "802329a66d7a78d7bbe0de294abde248f8e39d26f9add175bbe9f3017be02d02"]}}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "requirements.txt"}, "region": {"startLine": 1}}}]}, {"ruleId": "PYSEC-2026-35", "level": "error", "message": {"text": "cryptography: PYSEC-2026-35"}, "properties": {"repobilityId": 53550, "scanner": "osv-scanner", "fingerprint": "e580ab29be5c803aad3ab1049b00299716cedc9d9def3598054dbe135499dc02", "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|requirements.txt", "duplicate_count": 1, "duplicate_rule_ids": ["GHSA-m959-cc7f-wv43", "PYSEC-2026-35"], "duplicate_scanners": ["osv-scanner"], "duplicate_fingerprints": ["13d2c33e4d0203f565b9314f298ab91d3c0326d5db90d8390badc36608a90c1d", "e580ab29be5c803aad3ab1049b00299716cedc9d9def3598054dbe135499dc02"]}}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "requirements.txt"}, "region": {"startLine": 1}}}]}, {"ruleId": "PYSEC-2026-139", "level": "error", "message": {"text": "torch: PYSEC-2026-139"}, "properties": {"repobilityId": 53536, "scanner": "osv-scanner", "fingerprint": "38c89fc99401c8f327542d34c173d66e937efbd547fa22ab46183257ef8d3e1c", "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|requirements-bilibili.txt"}}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "requirements-bilibili.txt"}, "region": {"startLine": 1}}}]}, {"ruleId": "PYSEC-2025-209", "level": "error", "message": {"text": "torch: PYSEC-2025-209"}, "properties": {"repobilityId": 53534, "scanner": "osv-scanner", "fingerprint": "b48265153d7c1d9b85796b6dcf8b6aa4fe7307aa2974ef6c2924854583a254fa", "category": "dependency", "severity": "high", "confidence": 0.88, "triageState": "open", "verdict": "", "isResolved": false, "reason": "", "evidence": {"match": "", "aliases": ["BIT-pytorch-2025-55560", "CVE-2025-55560"], "package": "torch", "rule_id": "PYSEC-2025-209", "scanner": "osv-scanner", "correlation_key": "vuln|torch|CVE-2025-55560|requirements-bilibili.txt"}}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "requirements-bilibili.txt"}, "region": {"startLine": 1}}}]}, {"ruleId": "PYSEC-2025-208", "level": "error", "message": {"text": "torch: PYSEC-2025-208"}, "properties": {"repobilityId": 53533, "scanner": "osv-scanner", "fingerprint": "160e42b458090d15cc28cbe9d7440b54c7b78123901c41023f9a134107e7d8c6", "category": "dependency", "severity": "high", "confidence": 0.88, "triageState": "open", "verdict": "", "isResolved": false, "reason": "", "evidence": {"match": "", "aliases": ["BIT-pytorch-2025-55558", "CVE-2025-55558"], "package": "torch", "rule_id": "PYSEC-2025-208", "scanner": "osv-scanner", "correlation_key": "vuln|torch|CVE-2025-55558|requirements-bilibili.txt"}}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "requirements-bilibili.txt"}, "region": {"startLine": 1}}}]}, {"ruleId": "PYSEC-2025-207", "level": "error", "message": {"text": "torch: PYSEC-2025-207"}, "properties": {"repobilityId": 53532, "scanner": "osv-scanner", "fingerprint": "100e91d3ad4b51fab35712d21c28334b1d9f2b8ab3d370f47beac8510960140f", "category": "dependency", "severity": "high", "confidence": 0.88, "triageState": "open", "verdict": "", "isResolved": false, "reason": "", "evidence": {"match": "", "aliases": ["BIT-pytorch-2025-55557", "CVE-2025-55557"], "package": "torch", "rule_id": "PYSEC-2025-207", "scanner": "osv-scanner", "correlation_key": "vuln|torch|CVE-2025-55557|requirements-bilibili.txt"}}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "requirements-bilibili.txt"}, "region": {"startLine": 1}}}]}, {"ruleId": "PYSEC-2025-206", "level": "error", "message": {"text": "torch: PYSEC-2025-206"}, "properties": {"repobilityId": 53531, "scanner": "osv-scanner", "fingerprint": "f1278704703f4b56fa38e718b99d9c4ac2502c5833305178c36e670dd2b88b8f", "category": "dependency", "severity": "high", "confidence": 0.88, "triageState": "open", "verdict": "", "isResolved": false, "reason": "", "evidence": {"match": "", "aliases": ["BIT-pytorch-2025-55554", "CVE-2025-55554"], "package": "torch", "rule_id": "PYSEC-2025-206", "scanner": "osv-scanner", "correlation_key": "vuln|torch|CVE-2025-55554|requirements-bilibili.txt"}}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "requirements-bilibili.txt"}, "region": {"startLine": 1}}}]}, {"ruleId": "PYSEC-2025-205", "level": "error", "message": {"text": "torch: PYSEC-2025-205"}, "properties": {"repobilityId": 53530, "scanner": "osv-scanner", "fingerprint": "6a3bced7d6ece72b52244fa1a7a45e90720a43d16172e8c17452d9f66e0f9cdb", "category": "dependency", "severity": "high", "confidence": 0.88, "triageState": "open", "verdict": "", "isResolved": false, "reason": "", "evidence": {"match": "", "aliases": ["BIT-pytorch-2025-55553", "CVE-2025-55553"], "package": "torch", "rule_id": "PYSEC-2025-205", "scanner": "osv-scanner", "correlation_key": "vuln|torch|CVE-2025-55553|requirements-bilibili.txt"}}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "requirements-bilibili.txt"}, "region": {"startLine": 1}}}]}, {"ruleId": "PYSEC-2025-204", "level": "error", "message": {"text": "torch: PYSEC-2025-204"}, "properties": {"repobilityId": 53529, "scanner": "osv-scanner", "fingerprint": "29fd2052d702c5f1e31da855ac5876bfca63db0cc410c3dd7e28e0904f44925b", "category": "dependency", "severity": "high", "confidence": 0.88, "triageState": "open", "verdict": "", "isResolved": false, "reason": "", "evidence": {"match": "", "aliases": ["BIT-pytorch-2025-55552", "CVE-2025-55552"], "package": "torch", "rule_id": "PYSEC-2025-204", "scanner": "osv-scanner", "correlation_key": "vuln|torch|CVE-2025-55552|requirements-bilibili.txt"}}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "requirements-bilibili.txt"}, "region": {"startLine": 1}}}]}, {"ruleId": "PYSEC-2025-203", "level": "error", "message": {"text": "torch: PYSEC-2025-203"}, "properties": {"repobilityId": 53528, "scanner": "osv-scanner", "fingerprint": "88bd90e21d58f50100566bc4f468c45fe41246f56d9f330abef86c3dbc00d65f", "category": "dependency", "severity": "high", "confidence": 0.88, "triageState": "open", "verdict": "", "isResolved": false, "reason": "", "evidence": {"match": "", "aliases": ["BIT-pytorch-2025-55551", "CVE-2025-55551"], "package": "torch", "rule_id": "PYSEC-2025-203", "scanner": "osv-scanner", "correlation_key": "vuln|torch|CVE-2025-55551|requirements-bilibili.txt"}}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "requirements-bilibili.txt"}, "region": {"startLine": 1}}}]}, {"ruleId": "PYSEC-2025-198", "level": "error", "message": {"text": "torch: PYSEC-2025-198"}, "properties": {"repobilityId": 53527, "scanner": "osv-scanner", "fingerprint": "eed1de01c409e1ef6a5011ad39ea3ba9eeb571d4e436868b47c15854a04dc6c2", "category": "dependency", "severity": "high", "confidence": 0.88, "triageState": "open", "verdict": "", "isResolved": false, "reason": "", "evidence": {"match": "", "aliases": ["BIT-pytorch-2025-46148", "CVE-2025-46148"], "package": "torch", "rule_id": "PYSEC-2025-198", "scanner": "osv-scanner", "correlation_key": "vuln|torch|CVE-2025-46148|requirements-bilibili.txt"}}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "requirements-bilibili.txt"}, "region": {"startLine": 1}}}]}, {"ruleId": "PYSEC-2025-191", "level": "error", "message": {"text": "torch: PYSEC-2025-191"}, "properties": {"repobilityId": 53526, "scanner": "osv-scanner", "fingerprint": "a5fcb4cd416b997f2544912830696a8be550dde516687e931d0843e229d429e4", "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-pytorch-2025-2953", "CVE-2025-2953", "GHSA-3749-ghw9-m3mg"], "package": "torch", "rule_id": "PYSEC-2025-191", "scanner": "osv-scanner", "correlation_key": "vuln|torch|CVE-2025-2953|requirements-bilibili.txt", "duplicate_count": 1, "duplicate_rule_ids": ["GHSA-3749-ghw9-m3mg", "PYSEC-2025-191"], "duplicate_scanners": ["osv-scanner"], "duplicate_fingerprints": ["92008879ebe3656d8ac451b2ea122a3dcf70a69de25d4059079d25cdda3f9c3e", "a5fcb4cd416b997f2544912830696a8be550dde516687e931d0843e229d429e4"]}}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "requirements-bilibili.txt"}, "region": {"startLine": 1}}}]}, {"ruleId": "PYSEC-2024-259", "level": "error", "message": {"text": "torch: PYSEC-2024-259"}, "properties": {"repobilityId": 53525, "scanner": "osv-scanner", "fingerprint": "46d6b1caecd7b57d0ad3540b63bd095e9b549a72fa6943d674541a8bbd763945", "category": "dependency", "severity": "high", "confidence": 0.88, "triageState": "open", "verdict": "", "isResolved": false, "reason": "", "evidence": {"match": "", "aliases": ["BIT-pytorch-2024-48063", "CVE-2024-48063"], "package": "torch", "rule_id": "PYSEC-2024-259", "scanner": "osv-scanner", "correlation_key": "vuln|torch|CVE-2024-48063|requirements-bilibili.txt"}}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "requirements-bilibili.txt"}, "region": {"startLine": 1}}}]}, {"ruleId": "GHSA-9h52-p55h-vw2f", "level": "error", "message": {"text": "mcp: GHSA-9h52-p55h-vw2f"}, "properties": {"repobilityId": 53523, "scanner": "osv-scanner", "fingerprint": "0ea6713725ab8eed2285478f0110d19e409c3adaef08e23be5198e095f0c6c2a", "category": "dependency", "severity": "high", "confidence": 0.88, "triageState": "open", "verdict": "", "isResolved": false, "reason": "", "evidence": {"match": "", "aliases": ["CVE-2025-66416"], "package": "mcp", "rule_id": "GHSA-9h52-p55h-vw2f", "scanner": "osv-scanner", "correlation_key": "vuln|mcp|CVE-2025-66416|requirements-bilibili.txt"}}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "requirements-bilibili.txt"}, "region": {"startLine": 1}}}]}, {"ruleId": "GHSA-2qfp-q593-8484", "level": "error", "message": {"text": "brotli: GHSA-2qfp-q593-8484"}, "properties": {"repobilityId": 53522, "scanner": "osv-scanner", "fingerprint": "daf44ed084f245822de38db72137c96f7ea88a1fc0eeeb7d23858a624a855a4c", "category": "dependency", "severity": "high", "confidence": 0.88, "triageState": "open", "verdict": "", "isResolved": false, "reason": "", "evidence": {"match": "", "aliases": ["CVE-2025-6176"], "package": "brotli", "rule_id": "GHSA-2qfp-q593-8484", "scanner": "osv-scanner", "correlation_key": "vuln|brotli|CVE-2025-6176|requirements-bilibili.txt"}}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "requirements-bilibili.txt"}, "region": {"startLine": 1}}}]}, {"ruleId": "GHSA-6mq8-rvhq-8wgg", "level": "error", "message": {"text": "aiohttp: GHSA-6mq8-rvhq-8wgg"}, "properties": {"repobilityId": 53506, "scanner": "osv-scanner", "fingerprint": "a227bc5a958f4118b5eb700bced4d651f9713720a578c853ae7442f6073645b8", "category": "dependency", "severity": "high", "confidence": 0.88, "triageState": "open", "verdict": "", "isResolved": false, "reason": "", "evidence": {"match": "", "aliases": ["CVE-2025-69223"], "package": "aiohttp", "rule_id": "GHSA-6mq8-rvhq-8wgg", "scanner": "osv-scanner", "correlation_key": "vuln|aiohttp|CVE-2025-69223|requirements-bilibili.txt"}}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "requirements-bilibili.txt"}, "region": {"startLine": 1}}}]}, {"ruleId": "MINED040", "level": "error", "message": {"text": "[MINED040] Python Yaml Load Unsafe: yaml.load(stream) without SafeLoader can deserialize arbitrary classes."}, "properties": {"repobilityId": 53491, "scanner": "repobility-threat-engine", "fingerprint": "e0e954e69ce70ee2401a1133055139f84e54b9ba4a0bb389f0597028f6f94aba", "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": "python-yaml-load-unsafe", "owasp": null, "cwe_ids": ["CWE-502"], "languages": ["python"], "precision": 1.0, "promoted_at": "2026-05-18T14:01:32.347991+00:00", "triaged_in_corpus": 15, "observations_count": 1487, "ai_coder_pattern_id": 120}, "scanner": "repobility-threat-engine", "correlation_key": "fp|e0e954e69ce70ee2401a1133055139f84e54b9ba4a0bb389f0597028f6f94aba"}}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "upgrade_codes/upgrade_core/comment_diff_fn.py"}, "region": {"startLine": 23}}}]}, {"ruleId": "MINED040", "level": "error", "message": {"text": "[MINED040] Python Yaml Load Unsafe: yaml.load(stream) without SafeLoader can deserialize arbitrary classes."}, "properties": {"repobilityId": 53490, "scanner": "repobility-threat-engine", "fingerprint": "48b2f57e211865258deb8afa982d6e485d8cd2d451fa52ed78a2e9b39bb72184", "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": "python-yaml-load-unsafe", "owasp": null, "cwe_ids": ["CWE-502"], "languages": ["python"], "precision": 1.0, "promoted_at": "2026-05-18T14:01:32.347991+00:00", "triaged_in_corpus": 15, "observations_count": 1487, "ai_coder_pattern_id": 120}, "scanner": "repobility-threat-engine", "correlation_key": "fp|48b2f57e211865258deb8afa982d6e485d8cd2d451fa52ed78a2e9b39bb72184"}}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "upgrade_codes/config_sync.py"}, "region": {"startLine": 121}}}]}, {"ruleId": "MINED040", "level": "error", "message": {"text": "[MINED040] Python Yaml Load Unsafe: yaml.load(stream) without SafeLoader can deserialize arbitrary classes."}, "properties": {"repobilityId": 53489, "scanner": "repobility-threat-engine", "fingerprint": "19a0a639fd54c9de620eb640459abf9966c542b76195b0e55340ad695ff34139", "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": "python-yaml-load-unsafe", "owasp": null, "cwe_ids": ["CWE-502"], "languages": ["python"], "precision": 1.0, "promoted_at": "2026-05-18T14:01:32.347991+00:00", "triaged_in_corpus": 15, "observations_count": 1487, "ai_coder_pattern_id": 120}, "scanner": "repobility-threat-engine", "correlation_key": "fp|19a0a639fd54c9de620eb640459abf9966c542b76195b0e55340ad695ff34139"}}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "upgrade_codes/compare_yaml.py"}, "region": {"startLine": 80}}}]}, {"ruleId": "MINED034", "level": "error", "message": {"text": "[MINED034] Python Subprocess Shell True: subprocess(..., shell=True) enables command injection."}, "properties": {"repobilityId": 53471, "scanner": "repobility-threat-engine", "fingerprint": "fe9aee38f760927a886290bff8b886e6ce462d83ba887587c66007ee87f3ea4f", "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": "python-subprocess-shell-true", "owasp": null, "cwe_ids": ["CWE-78"], "languages": ["python"], "precision": 1.0, "promoted_at": "2026-05-18T14:01:32.347977+00:00", "triaged_in_corpus": 15, "observations_count": 3478, "ai_coder_pattern_id": 118}, "scanner": "repobility-threat-engine", "correlation_key": "fp|fe9aee38f760927a886290bff8b886e6ce462d83ba887587c66007ee87f3ea4f"}}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "upgrade_codes/upgrade_core/upgrade_utils.py"}, "region": {"startLine": 20}}}]}, {"ruleId": "MINED034", "level": "error", "message": {"text": "[MINED034] Python Subprocess Shell True: subprocess(..., shell=True) enables command injection."}, "properties": {"repobilityId": 53470, "scanner": "repobility-threat-engine", "fingerprint": "dba22425d68f6011c5852baef5221391512fd0903591bd6bc4e2a461955f87d2", "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": "python-subprocess-shell-true", "owasp": null, "cwe_ids": ["CWE-78"], "languages": ["python"], "precision": 1.0, "promoted_at": "2026-05-18T14:01:32.347977+00:00", "triaged_in_corpus": 15, "observations_count": 3478, "ai_coder_pattern_id": 118}, "scanner": "repobility-threat-engine", "correlation_key": "fp|dba22425d68f6011c5852baef5221391512fd0903591bd6bc4e2a461955f87d2"}}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "src/open_llm_vtuber/utils/install_utils.py"}, "region": {"startLine": 116}}}]}, {"ruleId": "MINED020", "level": "error", "message": {"text": "[MINED020] Logging Credential Via Fstring: logger.error(f\"failed for {api_key}\") \u2014 secrets end up in log aggregators / sentry."}, "properties": {"repobilityId": 53466, "scanner": "repobility-threat-engine", "fingerprint": "373a76e3e400b6407133286bebcf477474e4305932d901423fc90fd824cee9f4", "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": "logging-credential-via-fstring", "owasp": "A09:2021", "cwe_ids": ["CWE-532"], "precision": 1.0, "promoted_at": "2026-05-18T14:01:32.347945+00:00", "triaged_in_corpus": 15, "observations_count": 46100, "ai_coder_pattern_id": 38}, "scanner": "repobility-threat-engine", "correlation_key": "fp|373a76e3e400b6407133286bebcf477474e4305932d901423fc90fd824cee9f4"}}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "src/open_llm_vtuber/tts/fish_api_tts.py"}, "region": {"startLine": 36}}}]}, {"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": 53462, "scanner": "repobility-threat-engine", "fingerprint": "1e07cf0af7e8681531ee78c20186b215817fe1a23a31e2c8b81a74afa3ff3d22", "category": "quality", "severity": "high", "confidence": 1.0, "triageState": "open", "verdict": "confirmed", "isResolved": false, "reason": "Pattern matched with no mitigating context found", "evidence": {"match": "self.update(chunk_bytes, smoothed_prob, smoothed_db)", "reason": "Pattern matched with no mitigating context found", "rule_id": "SEC128", "scanner": "repobility-threat-engine", "confidence": 1.0, "correlation_key": "fp|1e07cf0af7e8681531ee78c20186b215817fe1a23a31e2c8b81a74afa3ff3d22"}}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "src/open_llm_vtuber/vad/silero.py"}, "region": {"startLine": 144}}}]}, {"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": 53461, "scanner": "repobility-threat-engine", "fingerprint": "acbe09f0b66b53a0c676b60cf8198a03cf674272467d727ce53b9c7f414c8aa6", "category": "quality", "severity": "high", "confidence": 1.0, "triageState": "open", "verdict": "confirmed", "isResolved": false, "reason": "Pattern matched with no mitigating context found", "evidence": {"match": "all_affected_members.update(new_members)", "reason": "Pattern matched with no mitigating context found", "rule_id": "SEC128", "scanner": "repobility-threat-engine", "confidence": 1.0, "correlation_key": "fp|acbe09f0b66b53a0c676b60cf8198a03cf674272467d727ce53b9c7f414c8aa6"}}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "src/open_llm_vtuber/chat_group.py"}, "region": {"startLine": 235}}}]}, {"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": 53460, "scanner": "repobility-threat-engine", "fingerprint": "e3a4c43b1ac9180b11300004940a582a3640f70e9fcc37e43dd7e5d96b025044", "category": "quality", "severity": "high", "confidence": 1.0, "triageState": "open", "verdict": "confirmed", "isResolved": false, "reason": "Pattern matched with no mitigating context found", "evidence": {"match": "pbar.update(size)", "reason": "Pattern matched with no mitigating context found", "rule_id": "SEC128", "scanner": "repobility-threat-engine", "confidence": 1.0, "correlation_key": "fp|e3a4c43b1ac9180b11300004940a582a3640f70e9fcc37e43dd7e5d96b025044"}}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "src/open_llm_vtuber/asr/utils.py"}, "region": {"startLine": 100}}}]}, {"ruleId": "SEC080", "level": "error", "message": {"text": "[SEC080] Python: tarfile.extractall without filter: tarfile.extract*() without filter='data' allows path-traversal (CVE-2007-4559, fixed via PEP 706 in 3.12). Ported from bandit B202 (Apache-2.0)."}, "properties": {"repobilityId": 53459, "scanner": "repobility-threat-engine", "fingerprint": "9ae1f1a438d58efb8f7544b85253764ff9c4acbfec95d44b291aae2195953510", "category": "quality", "severity": "high", "confidence": 1.0, "triageState": "open", "verdict": "confirmed", "isResolved": false, "reason": "Pattern matched with no mitigating context found", "evidence": {"match": "tar.extractall(path=output_dir)", "reason": "Pattern matched with no mitigating context found", "rule_id": "SEC080", "scanner": "repobility-threat-engine", "confidence": 1.0, "correlation_key": "fp|9ae1f1a438d58efb8f7544b85253764ff9c4acbfec95d44b291aae2195953510"}}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "src/open_llm_vtuber/asr/utils.py"}, "region": {"startLine": 108}}}]}, {"ruleId": "SEC078", "level": "error", "message": {"text": "[SEC078] Python: requests without timeout: requests.get/post without a timeout will hang indefinitely on a non-responsive server, causing thread exhaustion and ReDoS. Ported from bandit B113 (Apache-2.0). NOTE: this regex is heuristic; a real AST check is preferred for accuracy."}, "properties": {"repobilityId": 53452, "scanner": "repobility-threat-engine", "fingerprint": "f8ef2aa9bcaa6135dd484c94476ded25fc3662961e32963c8dbb522af6f210e2", "category": "quality", "severity": "high", "confidence": 1.0, "triageState": "open", "verdict": "confirmed", "isResolved": false, "reason": "Pattern matched with no mitigating context found", "evidence": {"match": "requests.get(", "reason": "Pattern matched with no mitigating context found", "rule_id": "SEC078", "scanner": "repobility-threat-engine", "confidence": 1.0, "correlation_key": "fp|f8ef2aa9bcaa6135dd484c94476ded25fc3662961e32963c8dbb522af6f210e2"}}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "src/open_llm_vtuber/asr/utils.py"}, "region": {"startLine": 27}}}]}, {"ruleId": "SEC078", "level": "error", "message": {"text": "[SEC078] Python: requests without timeout: requests.get/post without a timeout will hang indefinitely on a non-responsive server, causing thread exhaustion and ReDoS. Ported from bandit B113 (Apache-2.0). NOTE: this regex is heuristic; a real AST check is preferred for accuracy."}, "properties": {"repobilityId": 53451, "scanner": "repobility-threat-engine", "fingerprint": "8b2cdc0b946c680a06775d8cd0b602901eaf51f7dd59cfaa060f7fdda504c9ef", "category": "quality", "severity": "high", "confidence": 1.0, "triageState": "open", "verdict": "confirmed", "isResolved": false, "reason": "Pattern matched with no mitigating context found", "evidence": {"match": "requests.post(", "reason": "Pattern matched with no mitigating context found", "rule_id": "SEC078", "scanner": "repobility-threat-engine", "confidence": 1.0, "correlation_key": "fp|8b2cdc0b946c680a06775d8cd0b602901eaf51f7dd59cfaa060f7fdda504c9ef"}}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "src/open_llm_vtuber/agent/stateless_llm/stateless_llm_with_template.py"}, "region": {"startLine": 160}}}]}, {"ruleId": "SEC078", "level": "error", "message": {"text": "[SEC078] Python: requests without timeout: requests.get/post without a timeout will hang indefinitely on a non-responsive server, causing thread exhaustion and ReDoS. Ported from bandit B113 (Apache-2.0). NOTE: this regex is heuristic; a real AST check is preferred for accuracy."}, "properties": {"repobilityId": 53450, "scanner": "repobility-threat-engine", "fingerprint": "0f67da70ce99106d13cfcbfc1f7223d4425a22a818114966a58bd9ad9b40de1b", "category": "quality", "severity": "high", "confidence": 1.0, "triageState": "open", "verdict": "confirmed", "isResolved": false, "reason": "Pattern matched with no mitigating context found", "evidence": {"match": "requests.post(", "reason": "Pattern matched with no mitigating context found", "rule_id": "SEC078", "scanner": "repobility-threat-engine", "confidence": 1.0, "correlation_key": "fp|0f67da70ce99106d13cfcbfc1f7223d4425a22a818114966a58bd9ad9b40de1b"}}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "src/open_llm_vtuber/agent/stateless_llm/ollama_llm.py"}, "region": {"startLine": 35}}}]}, {"ruleId": "SEC029", "level": "error", "message": {"text": "[SEC029] Server-Side Request Forgery (SSRF) \u2014 outbound HTTP from user input: Outbound HTTP request to a user-controlled URL without allowlist validation. Attackers can probe internal services (169.254.169.254 metadata, internal Kubernetes endpoints, file:// URIs), exfiltrate data, or pivot through your network. SSRF is OWASP A10:2021 and a frequent foothold in cloud breaches."}, "properties": {"repobilityId": 53448, "scanner": "repobility-threat-engine", "fingerprint": "37ec8b4989b4320a9ebb36ddd8e8ba90d570f9d4ead2951026afc3d49652bd3c", "category": "ssrf", "severity": "high", "confidence": 1.0, "triageState": "open", "verdict": "confirmed", "isResolved": false, "reason": "Pattern matched with no mitigating context found", "evidence": {"match": "url (s", "reason": "Pattern matched with no mitigating context found", "rule_id": "SEC029", "scanner": "repobility-threat-engine", "confidence": 1.0, "correlation_key": "fp|37ec8b4989b4320a9ebb36ddd8e8ba90d570f9d4ead2951026afc3d49652bd3c"}}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "src/open_llm_vtuber/agent/stateless_llm/openai_compatible_llm.py"}, "region": {"startLine": 39}}}]}, {"ruleId": "SEC029", "level": "error", "message": {"text": "[SEC029] Server-Side Request Forgery (SSRF) \u2014 outbound HTTP from user input: Outbound HTTP request to a user-controlled URL without allowlist validation. Attackers can probe internal services (169.254.169.254 metadata, internal Kubernetes endpoints, file:// URIs), exfiltrate data, or pivot through your network. SSRF is OWASP A10:2021 and a frequent foothold in cloud breaches."}, "properties": {"repobilityId": 53447, "scanner": "repobility-threat-engine", "fingerprint": "b821574bd5ecdca740527f128b9d314e10a545cac7555b77a2e9346f742bee3e", "category": "ssrf", "severity": "high", "confidence": 1.0, "triageState": "open", "verdict": "confirmed", "isResolved": false, "reason": "Pattern matched with no mitigating context found", "evidence": {"match": "requests.post(\n                    base_url", "reason": "Pattern matched with no mitigating context found", "rule_id": "SEC029", "scanner": "repobility-threat-engine", "confidence": 1.0, "correlation_key": "fp|b821574bd5ecdca740527f128b9d314e10a545cac7555b77a2e9346f742bee3e"}}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "src/open_llm_vtuber/agent/stateless_llm/ollama_llm.py"}, "region": {"startLine": 35}}}]}, {"ruleId": "SEC029", "level": "error", "message": {"text": "[SEC029] Server-Side Request Forgery (SSRF) \u2014 outbound HTTP from user input: Outbound HTTP request to a user-controlled URL without allowlist validation. Attackers can probe internal services (169.254.169.254 metadata, internal Kubernetes endpoints, file:// URIs), exfiltrate data, or pivot through your network. SSRF is OWASP A10:2021 and a frequent foothold in cloud breaches."}, "properties": {"repobilityId": 53446, "scanner": "repobility-threat-engine", "fingerprint": "209a7befe777d9eecbcc97104d3595e1562202493d2c8f3b000e1db284a2e29b", "category": "ssrf", "severity": "high", "confidence": 1.0, "triageState": "open", "verdict": "confirmed", "isResolved": false, "reason": "Pattern matched with no mitigating context found", "evidence": {"match": "url (s", "reason": "Pattern matched with no mitigating context found", "rule_id": "SEC029", "scanner": "repobility-threat-engine", "confidence": 1.0, "correlation_key": "fp|209a7befe777d9eecbcc97104d3595e1562202493d2c8f3b000e1db284a2e29b"}}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "src/open_llm_vtuber/agent/stateless_llm/claude_llm.py"}, "region": {"startLine": 28}}}]}, {"ruleId": "MINED006", "level": "error", "message": {"text": "[MINED006] Overcatch Baseexception: except BaseException: ... \u2014 prevents Ctrl+C and SystemExit from working."}, "properties": {"repobilityId": 53440, "scanner": "repobility-threat-engine", "fingerprint": "8aa67678c040364e79082774ce9c764bbd01b26b7216b68a526fb23f7699d167", "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": "overcatch-baseexception", "owasp": null, "cwe_ids": ["CWE-705"], "languages": ["python"], "precision": 1.0, "promoted_at": "2026-05-18T14:01:32.347911+00:00", "triaged_in_corpus": 15, "observations_count": 230624, "ai_coder_pattern_id": 8}, "scanner": "repobility-threat-engine", "correlation_key": "fp|8aa67678c040364e79082774ce9c764bbd01b26b7216b68a526fb23f7699d167"}}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "scripts/run_bilibili_live.py"}, "region": {"startLine": 59}}}]}, {"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": 53430, "scanner": "repobility-threat-engine", "fingerprint": "60af69bd658f7df080768d49b4b335b36c1d65c656e6ac314dc555ea64117c3c", "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|60af69bd658f7df080768d49b4b335b36c1d65c656e6ac314dc555ea64117c3c"}}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "src/open_llm_vtuber/proxy_handler.py"}, "region": {"startLine": 172}}}]}, {"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": 53429, "scanner": "repobility-threat-engine", "fingerprint": "69e1c8f632a463fff2055b6bdb9a48a7c7a09fa95a427822039c92ed3e57cc17", "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|69e1c8f632a463fff2055b6bdb9a48a7c7a09fa95a427822039c92ed3e57cc17"}}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "src/open_llm_vtuber/live2d_model.py"}, "region": {"startLine": 77}}}]}, {"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": 53428, "scanner": "repobility-threat-engine", "fingerprint": "0a2358654c7f837a4dc1081c2e689369dc75ad876ebf5f993441df49496d4981", "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|0a2358654c7f837a4dc1081c2e689369dc75ad876ebf5f993441df49496d4981"}}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "prompts/prompt_loader.py"}, "region": {"startLine": 49}}}]}, {"ruleId": "AGT002", "level": "error", "message": {"text": "LLM memory extraction can be prompt-injected into storing fake facts"}, "properties": {"repobilityId": 53427, "scanner": "repobility-agent-runtime", "fingerprint": "e9f1a6bc5a5dcd727b0b5cb5dcacfc79868f5cc324a7e6c4fbca8f6abe4992fb", "category": "llm_injection", "severity": "high", "confidence": 0.82, "triageState": "open", "verdict": "likely", "isResolved": false, "reason": "File appears to persist LLM-extracted memory from user/assistant exchanges without visible schema validation or prompt-pattern rejection.", "evidence": {"rule_id": "AGT002", "scanner": "repobility-agent-runtime", "data_flow": "chat_exchange_to_persistent_memory", "references": ["https://owasp.org/www-project-top-10-for-large-language-model-applications/"], "correlation_key": "fp|e9f1a6bc5a5dcd727b0b5cb5dcacfc79868f5cc324a7e6c4fbca8f6abe4992fb"}}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "src/open_llm_vtuber/agent/agents/basic_memory_agent.py"}, "region": {"startLine": 286}}}]}, {"ruleId": "MINED115", "level": "error", "message": {"text": "Action `actions/upload-artifact` pinned to mutable ref `@v4`"}, "properties": {"repobilityId": 53401, "scanner": "repobility-supply-chain", "fingerprint": "bda6f66da62ba08899f8a2fbe738f14dac22de056ad14471a5a6c59add3eaeb1", "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|bda6f66da62ba08899f8a2fbe738f14dac22de056ad14471a5a6c59add3eaeb1"}}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": ".github/workflows/create_release.yml"}, "region": {"startLine": 227}}}]}, {"ruleId": "MINED115", "level": "error", "message": {"text": "Action `actions/upload-artifact` pinned to mutable ref `@v4`"}, "properties": {"repobilityId": 53400, "scanner": "repobility-supply-chain", "fingerprint": "44adb40eb5540b9e206368117afbda0308f89b06da78a617689a3bbbb1c25229", "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|44adb40eb5540b9e206368117afbda0308f89b06da78a617689a3bbbb1c25229"}}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": ".github/workflows/create_release.yml"}, "region": {"startLine": 156}}}]}, {"ruleId": "MINED115", "level": "error", "message": {"text": "Action `actions/upload-artifact` pinned to mutable ref `@v4`"}, "properties": {"repobilityId": 53399, "scanner": "repobility-supply-chain", "fingerprint": "7092873debab3ddba99eed93a3da332b10f4912fdbbf2915bb4927f783e39c13", "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|7092873debab3ddba99eed93a3da332b10f4912fdbbf2915bb4927f783e39c13"}}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": ".github/workflows/create_release.yml"}, "region": {"startLine": 148}}}]}, {"ruleId": "MINED115", "level": "error", "message": {"text": "Action `actions/upload-artifact` pinned to mutable ref `@v4`"}, "properties": {"repobilityId": 53398, "scanner": "repobility-supply-chain", "fingerprint": "3be253726871377152c16487b8c92e46813397bd8e26b09d1daed469cb894604", "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|3be253726871377152c16487b8c92e46813397bd8e26b09d1daed469cb894604"}}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": ".github/workflows/create_release.yml"}, "region": {"startLine": 140}}}]}, {"ruleId": "MINED115", "level": "error", "message": {"text": "Action `actions/upload-artifact` pinned to mutable ref `@v4`"}, "properties": {"repobilityId": 53397, "scanner": "repobility-supply-chain", "fingerprint": "c5ff03faeb842a777dcc386070aec70b5ba4cf3450d25783640238a8e89e9379", "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|c5ff03faeb842a777dcc386070aec70b5ba4cf3450d25783640238a8e89e9379"}}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": ".github/workflows/create_release.yml"}, "region": {"startLine": 132}}}]}, {"ruleId": "MINED115", "level": "error", "message": {"text": "Action `actions/setup-python` pinned to mutable ref `@v4`"}, "properties": {"repobilityId": 53396, "scanner": "repobility-supply-chain", "fingerprint": "8ce72bb7dc7ee9e0b2e45c5c5c14ff55b6968b70bb898a54bcdf4f82fc85e180", "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|8ce72bb7dc7ee9e0b2e45c5c5c14ff55b6968b70bb898a54bcdf4f82fc85e180"}}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": ".github/workflows/create_release.yml"}, "region": {"startLine": 60}}}]}, {"ruleId": "MINED115", "level": "error", "message": {"text": "Action `actions/checkout` pinned to mutable ref `@v3`"}, "properties": {"repobilityId": 53395, "scanner": "repobility-supply-chain", "fingerprint": "e907be642e8e2d7e19196ac44a9b27016a0273ff46539205e39d74079c616dcc", "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|e907be642e8e2d7e19196ac44a9b27016a0273ff46539205e39d74079c616dcc"}}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": ".github/workflows/create_release.yml"}, "region": {"startLine": 40}}}]}, {"ruleId": "MINED115", "level": "error", "message": {"text": "Action `actions/checkout` pinned to mutable ref `@v3`"}, "properties": {"repobilityId": 53394, "scanner": "repobility-supply-chain", "fingerprint": "c7934ada4e7d5c4f6204b9eca7cb6c410d036cc447e464675a60c6d50233af2d", "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|c7934ada4e7d5c4f6204b9eca7cb6c410d036cc447e464675a60c6d50233af2d"}}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": ".github/workflows/create_release.yml"}, "region": {"startLine": 28}}}]}, {"ruleId": "MINED115", "level": "error", "message": {"text": "Action `astral-sh/ruff-action` pinned to mutable ref `@v3`"}, "properties": {"repobilityId": 53393, "scanner": "repobility-supply-chain", "fingerprint": "b79b27921f5e18d673e0d5d4bd8dc6c97f1de49365923c61b01c42c2b6e0f32e", "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|b79b27921f5e18d673e0d5d4bd8dc6c97f1de49365923c61b01c42c2b6e0f32e"}}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": ".github/workflows/ruff.yml"}, "region": {"startLine": 8}}}]}, {"ruleId": "MINED115", "level": "error", "message": {"text": "Action `actions/checkout` pinned to mutable ref `@v4`"}, "properties": {"repobilityId": 53392, "scanner": "repobility-supply-chain", "fingerprint": "1b02e8fa5cb2964e6fd939777b26037db44a0b8fce10bfa6a69f5e449a6d1c85", "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|1b02e8fa5cb2964e6fd939777b26037db44a0b8fce10bfa6a69f5e449a6d1c85"}}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": ".github/workflows/ruff.yml"}, "region": {"startLine": 7}}}]}, {"ruleId": "MINED115", "level": "error", "message": {"text": "Action `useblacksmith/build-push-action` pinned to mutable ref `@v2`"}, "properties": {"repobilityId": 53387, "scanner": "repobility-supply-chain", "fingerprint": "7b0afc636d55800c39cbc6311e075443d870746bcc19fe632f49cfd3ade732d0", "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|7b0afc636d55800c39cbc6311e075443d870746bcc19fe632f49cfd3ade732d0"}}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": ".github/workflows/docker-blacksmith.yml"}, "region": {"startLine": 140}}}]}, {"ruleId": "MINED115", "level": "error", "message": {"text": "Action `useblacksmith/setup-docker-builder` pinned to mutable ref `@v1`"}, "properties": {"repobilityId": 53386, "scanner": "repobility-supply-chain", "fingerprint": "d542fd26c3c59845078c17f524c7228dbb820701cc732c6e303139e05262e32d", "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|d542fd26c3c59845078c17f524c7228dbb820701cc732c6e303139e05262e32d"}}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": ".github/workflows/docker-blacksmith.yml"}, "region": {"startLine": 85}}}]}, {"ruleId": "MINED115", "level": "error", "message": {"text": "Action `actions/checkout` pinned to mutable ref `@v4`"}, "properties": {"repobilityId": 53385, "scanner": "repobility-supply-chain", "fingerprint": "6d8d947da99e6fbec3213d6e902db688b84e8b19d06c143257a61cc202ec3d45", "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|6d8d947da99e6fbec3213d6e902db688b84e8b19d06c143257a61cc202ec3d45"}}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": ".github/workflows/docker-blacksmith.yml"}, "region": {"startLine": 82}}}]}, {"ruleId": "MINED115", "level": "error", "message": {"text": "Action `fossas/fossa-action` pinned to mutable ref `@main`"}, "properties": {"repobilityId": 53384, "scanner": "repobility-supply-chain", "fingerprint": "ba966f10737812b69893c3e4f69e14a902cdf28eb49b54b981a420956acd5310", "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|ba966f10737812b69893c3e4f69e14a902cdf28eb49b54b981a420956acd5310"}}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": ".github/workflows/fossa_scan.yml"}, "region": {"startLine": 14}}}]}, {"ruleId": "MINED115", "level": "error", "message": {"text": "Action `actions/checkout` pinned to mutable ref `@v3`"}, "properties": {"repobilityId": 53383, "scanner": "repobility-supply-chain", "fingerprint": "84165a0ffe60c56b8b14da2ba14b076bb9cc09a21b384a4d38c7c559f327e437", "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|84165a0ffe60c56b8b14da2ba14b076bb9cc09a21b384a4d38c7c559f327e437"}}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": ".github/workflows/fossa_scan.yml"}, "region": {"startLine": 13}}}]}, {"ruleId": "MINED115", "level": "error", "message": {"text": "Action `github/codeql-action/analyze` pinned to mutable ref `@v3`"}, "properties": {"repobilityId": 53382, "scanner": "repobility-supply-chain", "fingerprint": "90f2053da97d389d31d38b7899e6afb45f117a2e75b955b27b46f4a087b4f0eb", "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|90f2053da97d389d31d38b7899e6afb45f117a2e75b955b27b46f4a087b4f0eb"}}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": ".github/workflows/codeql.yml"}, "region": {"startLine": 90}}}]}, {"ruleId": "MINED115", "level": "error", "message": {"text": "Action `github/codeql-action/init` pinned to mutable ref `@v3`"}, "properties": {"repobilityId": 53381, "scanner": "repobility-supply-chain", "fingerprint": "45215a87bea5839b83ffeacceae1db8d2710e95a4d88b113e176bbb8e1fbe4b9", "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|45215a87bea5839b83ffeacceae1db8d2710e95a4d88b113e176bbb8e1fbe4b9"}}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": ".github/workflows/codeql.yml"}, "region": {"startLine": 62}}}]}, {"ruleId": "MINED115", "level": "error", "message": {"text": "Action `actions/checkout` pinned to mutable ref `@v4`"}, "properties": {"repobilityId": 53380, "scanner": "repobility-supply-chain", "fingerprint": "a4346bd7eed1bb25d675f754dac42a4fc2de96834f73fd03e35d4d70859a3ef1", "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|a4346bd7eed1bb25d675f754dac42a4fc2de96834f73fd03e35d4d70859a3ef1"}}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": ".github/workflows/codeql.yml"}, "region": {"startLine": 58}}}]}, {"ruleId": "MINED115", "level": "error", "message": {"text": "Action `stefanzweifel/git-auto-commit-action` pinned to mutable ref `@v5`"}, "properties": {"repobilityId": 53379, "scanner": "repobility-supply-chain", "fingerprint": "f84b748f338758ab7b858eb3e6d604bd7eb73f63023f34670bbdf30a7b05b93e", "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|f84b748f338758ab7b858eb3e6d604bd7eb73f63023f34670bbdf30a7b05b93e"}}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": ".github/workflows/update-requirements.yml"}, "region": {"startLine": 25}}}]}, {"ruleId": "MINED115", "level": "error", "message": {"text": "Action `astral-sh/setup-uv` pinned to mutable ref `@v3`"}, "properties": {"repobilityId": 53378, "scanner": "repobility-supply-chain", "fingerprint": "f349c4e079075e859f895059178354c6cdee1b4f85740d40e95a6d595ac44d12", "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|f349c4e079075e859f895059178354c6cdee1b4f85740d40e95a6d595ac44d12"}}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": ".github/workflows/update-requirements.yml"}, "region": {"startLine": 19}}}]}, {"ruleId": "MINED115", "level": "error", "message": {"text": "Action `actions/checkout` pinned to mutable ref `@v4`"}, "properties": {"repobilityId": 53377, "scanner": "repobility-supply-chain", "fingerprint": "ff8d1a9d259e351e148364d3b2e69d4a06439708dd6cc1a0cfc0915429012a88", "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|ff8d1a9d259e351e148364d3b2e69d4a06439708dd6cc1a0cfc0915429012a88"}}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": ".github/workflows/update-requirements.yml"}, "region": {"startLine": 15}}}]}, {"ruleId": "MINED118", "level": "error", "message": {"text": "Dockerfile FROM `python:3.10-slim` not pinned by digest"}, "properties": {"repobilityId": 53376, "scanner": "repobility-supply-chain", "fingerprint": "13f627dea4ac39e0a7c64ef8297862a107d2b2c4a6e36d5b57514bb9e0ab15ce", "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|13f627dea4ac39e0a7c64ef8297862a107d2b2c4a6e36d5b57514bb9e0ab15ce"}}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "dockerfile"}, "region": {"startLine": 1}}}]}, {"ruleId": "MINED131", "level": "error", "message": {"text": "pre-commit hook `https://github.com/astral-sh/ruff-pre-commit` pinned to mutable rev `v0.9.6`"}, "properties": {"repobilityId": 53375, "scanner": "repobility-supply-chain", "fingerprint": "51bc9e130f52b4fa04dd8e2327075c81eb377e090a14e05a31e5c40ac51ea0e1", "category": "dependency", "severity": "high", "confidence": 0.9, "triageState": "open", "verdict": "", "isResolved": false, "reason": "", "evidence": {"mined": true, "mining": {"slug": "precommit-untrusted-repo", "owasp": "A08:2021", "cwe_ids": ["CWE-829"], "languages": ["yaml"], "observations_count": 0}, "scanner": "repobility-supply-chain", "correlation_key": "fp|51bc9e130f52b4fa04dd8e2327075c81eb377e090a14e05a31e5c40ac51ea0e1"}}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": ".pre-commit-config.yaml"}, "region": {"startLine": 2}}}]}, {"ruleId": "MINED112", "level": "error", "message": {"text": "FastAPI POST /asr has no auth"}, "properties": {"repobilityId": 53374, "scanner": "repobility-route-auth", "fingerprint": "f0b1292dea1c3f8eca4ac9c68264eb56f1dce0ff04c6f950e8c3cba596b70675", "category": "quality", "severity": "high", "confidence": 0.8, "triageState": "open", "verdict": "", "isResolved": false, "reason": "", "evidence": {"mined": true, "mining": {"slug": "fastapi-destructive-unauth", "owasp": "A01:2021", "cwe_ids": ["CWE-306", "CWE-862"], "languages": ["python", "javascript"], "observations_count": 10455}, "scanner": "repobility-route-auth", "correlation_key": "fp|f0b1292dea1c3f8eca4ac9c68264eb56f1dce0ff04c6f950e8c3cba596b70675"}}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "src/open_llm_vtuber/routes.py"}, "region": {"startLine": 142}}}]}, {"ruleId": "MINED110", "level": "error", "message": {"text": "Blocking call `requests.post` inside async function `chat_completion`"}, "properties": {"repobilityId": 53373, "scanner": "repobility-ast-engine", "fingerprint": "74f08d14a78fc535af4d4a132dafe36751d02a2a281c1554bce46bc5262e3753", "category": "quality", "severity": "high", "confidence": 1.0, "triageState": "open", "verdict": "", "isResolved": false, "reason": "", "evidence": {"mined": true, "mining": {"slug": "asyncio-blocking-call", "owasp": null, "cwe_ids": ["CWE-833"], "languages": ["python"], "observations_count": 31606}, "scanner": "repobility-ast-engine", "correlation_key": "fp|74f08d14a78fc535af4d4a132dafe36751d02a2a281c1554bce46bc5262e3753"}}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "src/open_llm_vtuber/agent/stateless_llm/stateless_llm_with_template.py"}, "region": {"startLine": 160}}}]}, {"ruleId": "MINED108", "level": "error", "message": {"text": "`self._migrate_field` used but never assigned in __init__"}, "properties": {"repobilityId": 53368, "scanner": "repobility-ast-engine", "fingerprint": "003a0f3f21dfe068b6274b70fa44dedeb80946bb30a450e425f25e12b23027aa", "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|003a0f3f21dfe068b6274b70fa44dedeb80946bb30a450e425f25e12b23027aa"}}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "upgrade_codes/from_version/v_1_1_1.py"}, "region": {"startLine": 93}}}]}, {"ruleId": "MINED108", "level": "error", "message": {"text": "`self._upgrade_conf_yaml` used but never assigned in __init__"}, "properties": {"repobilityId": 53367, "scanner": "repobility-ast-engine", "fingerprint": "449673311e86f92c27a13e60f3d7c47c34121b1b4eef1884cd16a35c7a4cf89f", "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|449673311e86f92c27a13e60f3d7c47c34121b1b4eef1884cd16a35c7a4cf89f"}}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "upgrade_codes/from_version/v_1_1_1.py"}, "region": {"startLine": 45}}}]}, {"ruleId": "MINED108", "level": "error", "message": {"text": "`self._upgrade_live2d_models` used but never assigned in __init__"}, "properties": {"repobilityId": 53366, "scanner": "repobility-ast-engine", "fingerprint": "2959da4c8f1cc34b3734e6ab3bd23a2a2c9ba69abbca201d148dd9eba559876c", "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|2959da4c8f1cc34b3734e6ab3bd23a2a2c9ba69abbca201d148dd9eba559876c"}}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "upgrade_codes/from_version/v_1_1_1.py"}, "region": {"startLine": 44}}}]}, {"ruleId": "MINED108", "level": "error", "message": {"text": "`self.run_command` used but never assigned in __init__"}, "properties": {"repobilityId": 53364, "scanner": "repobility-ast-engine", "fingerprint": "9285829eb2bb0dd1c1a62d917c6aa2eafefe32695b5241c875271a46387b46bf", "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|9285829eb2bb0dd1c1a62d917c6aa2eafefe32695b5241c875271a46387b46bf"}}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "upgrade_codes/upgrade_core/upgrade_utils.py"}, "region": {"startLine": 86}}}]}, {"ruleId": "MINED108", "level": "error", "message": {"text": "`self.run_command` used but never assigned in __init__"}, "properties": {"repobilityId": 53363, "scanner": "repobility-ast-engine", "fingerprint": "326ab592a293e973ae653c509ad5d0190fbf71bb9ee885b644a095d84bf17431", "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|326ab592a293e973ae653c509ad5d0190fbf71bb9ee885b644a095d84bf17431"}}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "upgrade_codes/upgrade_core/upgrade_utils.py"}, "region": {"startLine": 69}}}]}, {"ruleId": "MINED108", "level": "error", "message": {"text": "`self.run_command` used but never assigned in __init__"}, "properties": {"repobilityId": 53362, "scanner": "repobility-ast-engine", "fingerprint": "db3415efc1e3ac7668c0731c3d2ed1dc94c145d12db6b95a8447d312c6360409", "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|db3415efc1e3ac7668c0731c3d2ed1dc94c145d12db6b95a8447d312c6360409"}}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "upgrade_codes/upgrade_core/upgrade_utils.py"}, "region": {"startLine": 62}}}]}, {"ruleId": "MINED108", "level": "error", "message": {"text": "`self.resolve_upgrade_task` used but never assigned in __init__"}, "properties": {"repobilityId": 53360, "scanner": "repobility-ast-engine", "fingerprint": "ca60996b36be5def36a22d207b4e93226a6e3688578e031408de9781c1d40a13", "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|ca60996b36be5def36a22d207b4e93226a6e3688578e031408de9781c1d40a13"}}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "upgrade_codes/version_manager.py"}, "region": {"startLine": 58}}}]}, {"ruleId": "MINED108", "level": "error", "message": {"text": "`self.get_upgrade_mapping` used but never assigned in __init__"}, "properties": {"repobilityId": 53359, "scanner": "repobility-ast-engine", "fingerprint": "c1af0854488f4d78758ae5f49862e7a151a8ba63f9b1d8e1462517c048795615", "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|c1af0854488f4d78758ae5f49862e7a151a8ba63f9b1d8e1462517c048795615"}}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "upgrade_codes/version_manager.py"}, "region": {"startLine": 46}}}]}, {"ruleId": "MINED108", "level": "error", "message": {"text": "`self.delete_extra_keys` used but never assigned in __init__"}, "properties": {"repobilityId": 53358, "scanner": "repobility-ast-engine", "fingerprint": "2d9c7bd5106da977821e5e3ee8e8c6e012e8ba9a6659972751a6f84629daab24", "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|2d9c7bd5106da977821e5e3ee8e8c6e012e8ba9a6659972751a6f84629daab24"}}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "upgrade_codes/config_sync.py"}, "region": {"startLine": 254}}}]}, {"ruleId": "MINED108", "level": "error", "message": {"text": "`self.get_extra_keys` used but never assigned in __init__"}, "properties": {"repobilityId": 53357, "scanner": "repobility-ast-engine", "fingerprint": "f9ea4d8c74b1417f4ebb9fa9e30ae7b9ac9526dbe8a539b51aa2cd8c249fe57d", "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|f9ea4d8c74b1417f4ebb9fa9e30ae7b9ac9526dbe8a539b51aa2cd8c249fe57d"}}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "upgrade_codes/config_sync.py"}, "region": {"startLine": 244}}}]}, {"ruleId": "MINED108", "level": "error", "message": {"text": "`self.get_missing_keys` used but never assigned in __init__"}, "properties": {"repobilityId": 53356, "scanner": "repobility-ast-engine", "fingerprint": "bd9ba8afe532c058dea5469ace0d45e35e53a780441fa82eea4a1423ede2a423", "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|bd9ba8afe532c058dea5469ace0d45e35e53a780441fa82eea4a1423ede2a423"}}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "upgrade_codes/config_sync.py"}, "region": {"startLine": 243}}}]}, {"ruleId": "MINED108", "level": "error", "message": {"text": "`self.get_extra_keys` used but never assigned in __init__"}, "properties": {"repobilityId": 53355, "scanner": "repobility-ast-engine", "fingerprint": "999667f0b32cc816cf0ed08ae9ccfca46c98712e13647b8a09667f8dee21d064", "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|999667f0b32cc816cf0ed08ae9ccfca46c98712e13647b8a09667f8dee21d064"}}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "upgrade_codes/config_sync.py"}, "region": {"startLine": 209}}}]}, {"ruleId": "MINED108", "level": "error", "message": {"text": "`self.collect_all_subkeys` used but never assigned in __init__"}, "properties": {"repobilityId": 53354, "scanner": "repobility-ast-engine", "fingerprint": "e21ae84a6fc86c9184660e3b5014f6a2f5dbcd1cf9ed7a8b9847342f6d795e73", "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|e21ae84a6fc86c9184660e3b5014f6a2f5dbcd1cf9ed7a8b9847342f6d795e73"}}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "upgrade_codes/config_sync.py"}, "region": {"startLine": 198}}}]}, {"ruleId": "MINED108", "level": "error", "message": {"text": "`self.get_extra_keys` used but never assigned in __init__"}, "properties": {"repobilityId": 53353, "scanner": "repobility-ast-engine", "fingerprint": "d5180c4f6ac80bb2276039429ad7b60442a2fb9b7de1cd1fddd9a5fa8a26f279", "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|d5180c4f6ac80bb2276039429ad7b60442a2fb9b7de1cd1fddd9a5fa8a26f279"}}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "upgrade_codes/config_sync.py"}, "region": {"startLine": 195}}}]}, {"ruleId": "MINED108", "level": "error", "message": {"text": "`self.collect_all_subkeys` used but never assigned in __init__"}, "properties": {"repobilityId": 53352, "scanner": "repobility-ast-engine", "fingerprint": "b5bfc86617932bccd4f1f4487763424d424381c553e6fe78bbc6d0c16f28d2c1", "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|b5bfc86617932bccd4f1f4487763424d424381c553e6fe78bbc6d0c16f28d2c1"}}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "upgrade_codes/config_sync.py"}, "region": {"startLine": 188}}}]}, {"ruleId": "MINED108", "level": "error", "message": {"text": "`self.get_missing_keys` used but never assigned in __init__"}, "properties": {"repobilityId": 53351, "scanner": "repobility-ast-engine", "fingerprint": "891319704e1254f4b17c7e4b4331129a8b8ce59fdec02a14f1ab2232b7e6c380", "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|891319704e1254f4b17c7e4b4331129a8b8ce59fdec02a14f1ab2232b7e6c380"}}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "upgrade_codes/config_sync.py"}, "region": {"startLine": 171}}}]}, {"ruleId": "MINED108", "level": "error", "message": {"text": "`self.collect_all_subkeys` used but never assigned in __init__"}, "properties": {"repobilityId": 53350, "scanner": "repobility-ast-engine", "fingerprint": "ec67242ed5ee70de4ef9ac6f2411ed8571086e31101e4be2e444d626b624e7d1", "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|ec67242ed5ee70de4ef9ac6f2411ed8571086e31101e4be2e444d626b624e7d1"}}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "upgrade_codes/config_sync.py"}, "region": {"startLine": 174}}}]}, {"ruleId": "MINED108", "level": "error", "message": {"text": "`self.collect_all_subkeys` used but never assigned in __init__"}, "properties": {"repobilityId": 53349, "scanner": "repobility-ast-engine", "fingerprint": "0f5766e609aed9befad18b0c4aad4e2eeda54478db08eaadb290625db426ed03", "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|0f5766e609aed9befad18b0c4aad4e2eeda54478db08eaadb290625db426ed03"}}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "upgrade_codes/config_sync.py"}, "region": {"startLine": 156}}}]}, {"ruleId": "MINED108", "level": "error", "message": {"text": "`self.merge_configs` used but never assigned in __init__"}, "properties": {"repobilityId": 53348, "scanner": "repobility-ast-engine", "fingerprint": "b5e95347a073fed3bc190857d1d671afbb305f8543f3f32f100404c75c06e4cd", "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|b5e95347a073fed3bc190857d1d671afbb305f8543f3f32f100404c75c06e4cd"}}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "upgrade_codes/config_sync.py"}, "region": {"startLine": 110}}}]}, {"ruleId": "MINED108", "level": "error", "message": {"text": "`self.compare_comments` used but never assigned in __init__"}, "properties": {"repobilityId": 53347, "scanner": "repobility-ast-engine", "fingerprint": "d52d4aab6562e5769e2f0c4c371f547f8f4c23f128a6b274d9e7a481296792fd", "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|d52d4aab6562e5769e2f0c4c371f547f8f4c23f128a6b274d9e7a481296792fd"}}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "upgrade_codes/config_sync.py"}, "region": {"startLine": 67}}}]}, {"ruleId": "MINED108", "level": "error", "message": {"text": "`self.merge_and_update_user_config` used but never assigned in __init__"}, "properties": {"repobilityId": 53346, "scanner": "repobility-ast-engine", "fingerprint": "7ecc93f13ade790ec0a4da81c6207df315b547b115b9e3cd73a93e0cc82e08f7", "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|7ecc93f13ade790ec0a4da81c6207df315b547b115b9e3cd73a93e0cc82e08f7"}}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "upgrade_codes/config_sync.py"}, "region": {"startLine": 62}}}]}, {"ruleId": "MINED108", "level": "error", "message": {"text": "`self.compare_field_keys` used but never assigned in __init__"}, "properties": {"repobilityId": 53345, "scanner": "repobility-ast-engine", "fingerprint": "872d361e461b7a72e226288555560c4059005a579bc31b204596976ae48a6f0d", "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|872d361e461b7a72e226288555560c4059005a579bc31b204596976ae48a6f0d"}}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "upgrade_codes/config_sync.py"}, "region": {"startLine": 61}}}]}, {"ruleId": "MINED108", "level": "error", "message": {"text": "`self.get_old_version` used but never assigned in __init__"}, "properties": {"repobilityId": 53344, "scanner": "repobility-ast-engine", "fingerprint": "008946fa80c5924227303f0f5fb4bdde92b5095d6a5ffee2983b562003790385", "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|008946fa80c5924227303f0f5fb4bdde92b5095d6a5ffee2983b562003790385"}}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "upgrade_codes/config_sync.py"}, "region": {"startLine": 81}}}]}, {"ruleId": "MINED108", "level": "error", "message": {"text": "`self.get_latest_version` used but never assigned in __init__"}, "properties": {"repobilityId": 53343, "scanner": "repobility-ast-engine", "fingerprint": "be41ec2329c6f467a79d408e706ab444b2576018908b2d678e224b9b035c65b6", "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|be41ec2329c6f467a79d408e706ab444b2576018908b2d678e224b9b035c65b6"}}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "upgrade_codes/config_sync.py"}, "region": {"startLine": 80}}}]}, {"ruleId": "MINED108", "level": "error", "message": {"text": "`self.backup_user_config` used but never assigned in __init__"}, "properties": {"repobilityId": 53342, "scanner": "repobility-ast-engine", "fingerprint": "6b179f98f940fefa97c8ddbacd34a784ac53ab2c92848abb739712ca67ce0a51", "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|6b179f98f940fefa97c8ddbacd34a784ac53ab2c92848abb739712ca67ce0a51"}}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "upgrade_codes/config_sync.py"}, "region": {"startLine": 50}}}]}, {"ruleId": "CORE_NO_TESTS", "level": "error", "message": {"text": "No test files found"}, "properties": {"repobilityId": 53337, "scanner": "repobility-core", "fingerprint": "0200e9918bc2a7bf9c116d0907e50ac3df640c758b93852cf1890ec6e14d870d", "category": "testing", "severity": "high", "confidence": null, "triageState": "open", "verdict": "", "isResolved": false, "reason": "", "evidence": {"rule_id": "CORE_NO_TESTS", "scanner": "repobility-core", "correlation_key": "repo|testing|core_no_tests"}}}, {"ruleId": "GHSA-53q9-r3pm-6pq6", "level": "error", "message": {"text": "torch: GHSA-53q9-r3pm-6pq6"}, "properties": {"repobilityId": 53627, "scanner": "osv-scanner", "fingerprint": "0d4727e53c158ce981d654ef241df6872abfa824c0700ffbd7bd41c3f22b0e4f", "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": ["BIT-pytorch-2025-32434", "CVE-2025-32434", "PYSEC-2025-41"], "package": "torch", "rule_id": "GHSA-53q9-r3pm-6pq6", "scanner": "osv-scanner", "correlation_key": "vuln|torch|CVE-2025-32434|uv.lock", "duplicate_count": 1, "duplicate_rule_ids": ["GHSA-53q9-r3pm-6pq6", "PYSEC-2025-41"], "duplicate_scanners": ["osv-scanner"], "duplicate_fingerprints": ["0d4727e53c158ce981d654ef241df6872abfa824c0700ffbd7bd41c3f22b0e4f", "dc425c6a2814f39706fc851689a230c14c0f97b72b63b06e4a1a25a73ee416b7"]}}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "uv.lock"}, "region": {"startLine": 1}}}]}, {"ruleId": "GHSA-53q9-r3pm-6pq6", "level": "error", "message": {"text": "torch: GHSA-53q9-r3pm-6pq6"}, "properties": {"repobilityId": 53580, "scanner": "osv-scanner", "fingerprint": "cb163eabe6e98659ffce79dfb3881c9ec1fe645b8efd9f6920204fd4cc2a6d9c", "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": ["BIT-pytorch-2025-32434", "CVE-2025-32434", "PYSEC-2025-41"], "package": "torch", "rule_id": "GHSA-53q9-r3pm-6pq6", "scanner": "osv-scanner", "correlation_key": "vuln|torch|CVE-2025-32434|requirements.txt", "duplicate_count": 1, "duplicate_rule_ids": ["GHSA-53q9-r3pm-6pq6", "PYSEC-2025-41"], "duplicate_scanners": ["osv-scanner"], "duplicate_fingerprints": ["b4d68872de2f1e9e465cf9cff0cd126ed1b47e6daeff655e5c62251a55d18f75", "cb163eabe6e98659ffce79dfb3881c9ec1fe645b8efd9f6920204fd4cc2a6d9c"]}}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "requirements.txt"}, "region": {"startLine": 1}}}]}, {"ruleId": "GHSA-53q9-r3pm-6pq6", "level": "error", "message": {"text": "torch: GHSA-53q9-r3pm-6pq6"}, "properties": {"repobilityId": 53535, "scanner": "osv-scanner", "fingerprint": "1c8425e93a01f942f28df6e42e682ff619bbccfa1ab22ac7d92afebb563d54e1", "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": ["BIT-pytorch-2025-32434", "CVE-2025-32434", "PYSEC-2025-41"], "package": "torch", "rule_id": "GHSA-53q9-r3pm-6pq6", "scanner": "osv-scanner", "correlation_key": "vuln|torch|CVE-2025-32434|requirements-bilibili.txt", "duplicate_count": 1, "duplicate_rule_ids": ["GHSA-53q9-r3pm-6pq6", "PYSEC-2025-41"], "duplicate_scanners": ["osv-scanner"], "duplicate_fingerprints": ["1c8425e93a01f942f28df6e42e682ff619bbccfa1ab22ac7d92afebb563d54e1", "9eb43492927f9c7be4f5e49842692e60340401e22b9ea86157528c3b314454b5"]}}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "requirements-bilibili.txt"}, "region": {"startLine": 1}}}]}, {"ruleId": "MINED018", "level": "error", "message": {"text": "[MINED018] Unsafe Deserialization Pickle: pickle.loads / yaml.load (without Loader=SafeLoader) / unmarshal of network/file data \u2014 RCE."}, "properties": {"repobilityId": 53487, "scanner": "repobility-threat-engine", "fingerprint": "57d7a1053de262438e521d7186e3e16c6d09aab51e87906b87c6617bda5c97f8", "category": "quality", "severity": "critical", "confidence": 1.0, "triageState": "open", "verdict": "confirmed", "isResolved": false, "reason": "Pattern matched with no mitigating context found", "evidence": {"mined": true, "mining": {"slug": "unsafe-deserialization-pickle", "owasp": "A08:2021", "cwe_ids": ["CWE-502"], "precision": 1.0, "promoted_at": "2026-05-18T14:01:32.347940+00:00", "triaged_in_corpus": 20, "observations_count": 58759, "ai_coder_pattern_id": 32}, "scanner": "repobility-threat-engine", "correlation_key": "fp|57d7a1053de262438e521d7186e3e16c6d09aab51e87906b87c6617bda5c97f8"}}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "upgrade_codes/upgrade_core/comment_diff_fn.py"}, "region": {"startLine": 23}}}]}, {"ruleId": "MINED018", "level": "error", "message": {"text": "[MINED018] Unsafe Deserialization Pickle: pickle.loads / yaml.load (without Loader=SafeLoader) / unmarshal of network/file data \u2014 RCE."}, "properties": {"repobilityId": 53486, "scanner": "repobility-threat-engine", "fingerprint": "e5258be4a58e7fe14afe868c296e20c9a2fa8ec9fcd69c5a63a0258d1941d838", "category": "quality", "severity": "critical", "confidence": 1.0, "triageState": "open", "verdict": "confirmed", "isResolved": false, "reason": "Pattern matched with no mitigating context found", "evidence": {"mined": true, "mining": {"slug": "unsafe-deserialization-pickle", "owasp": "A08:2021", "cwe_ids": ["CWE-502"], "precision": 1.0, "promoted_at": "2026-05-18T14:01:32.347940+00:00", "triaged_in_corpus": 20, "observations_count": 58759, "ai_coder_pattern_id": 32}, "scanner": "repobility-threat-engine", "correlation_key": "fp|e5258be4a58e7fe14afe868c296e20c9a2fa8ec9fcd69c5a63a0258d1941d838"}}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "upgrade_codes/config_sync.py"}, "region": {"startLine": 121}}}]}, {"ruleId": "MINED018", "level": "error", "message": {"text": "[MINED018] Unsafe Deserialization Pickle: pickle.loads / yaml.load (without Loader=SafeLoader) / unmarshal of network/file data \u2014 RCE."}, "properties": {"repobilityId": 53485, "scanner": "repobility-threat-engine", "fingerprint": "576f767ed9025b56599cfee8af88a7a40e34613ed7d6eca73b7df43a69073a55", "category": "quality", "severity": "critical", "confidence": 1.0, "triageState": "open", "verdict": "confirmed", "isResolved": false, "reason": "Pattern matched with no mitigating context found", "evidence": {"mined": true, "mining": {"slug": "unsafe-deserialization-pickle", "owasp": "A08:2021", "cwe_ids": ["CWE-502"], "precision": 1.0, "promoted_at": "2026-05-18T14:01:32.347940+00:00", "triaged_in_corpus": 20, "observations_count": 58759, "ai_coder_pattern_id": 32}, "scanner": "repobility-threat-engine", "correlation_key": "fp|576f767ed9025b56599cfee8af88a7a40e34613ed7d6eca73b7df43a69073a55"}}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "upgrade_codes/compare_yaml.py"}, "region": {"startLine": 80}}}]}, {"ruleId": "SEC116", "level": "error", "message": {"text": "[SEC116] Ruby YAML.load / Marshal.load on untrusted input: `YAML.load` (pre-3.1) and `Marshal.load` instantiate arbitrary Ruby classes \u2014 direct RCE on untrusted input. `unsafe_load` is even more dangerous."}, "properties": {"repobilityId": 53483, "scanner": "repobility-threat-engine", "fingerprint": "d8757041393e8e7c52db2d645d32b81fe71c58496bf5f2f1aeec58248e68f428", "category": "deserialization", "severity": "critical", "confidence": 1.0, "triageState": "open", "verdict": "confirmed", "isResolved": false, "reason": "Pattern matched with no mitigating context found", "evidence": {"match": "yaml.load(", "reason": "Pattern matched with no mitigating context found", "rule_id": "SEC116", "scanner": "repobility-threat-engine", "confidence": 1.0, "correlation_key": "code|deserialization|token|23|sec116"}}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "upgrade_codes/upgrade_core/comment_diff_fn.py"}, "region": {"startLine": 23}}}]}, {"ruleId": "SEC116", "level": "error", "message": {"text": "[SEC116] Ruby YAML.load / Marshal.load on untrusted input: `YAML.load` (pre-3.1) and `Marshal.load` instantiate arbitrary Ruby classes \u2014 direct RCE on untrusted input. `unsafe_load` is even more dangerous."}, "properties": {"repobilityId": 53482, "scanner": "repobility-threat-engine", "fingerprint": "8b98232d854b4857291a9bcb8d33fcb6e96620ce71d499206dbbc97619eb67ff", "category": "deserialization", "severity": "critical", "confidence": 1.0, "triageState": "open", "verdict": "confirmed", "isResolved": false, "reason": "Pattern matched with no mitigating context found", "evidence": {"match": "yaml.load(", "reason": "Pattern matched with no mitigating context found", "rule_id": "SEC116", "scanner": "repobility-threat-engine", "confidence": 1.0, "correlation_key": "code|deserialization|token|121|sec116"}}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "upgrade_codes/config_sync.py"}, "region": {"startLine": 121}}}]}, {"ruleId": "SEC116", "level": "error", "message": {"text": "[SEC116] Ruby YAML.load / Marshal.load on untrusted input: `YAML.load` (pre-3.1) and `Marshal.load` instantiate arbitrary Ruby classes \u2014 direct RCE on untrusted input. `unsafe_load` is even more dangerous."}, "properties": {"repobilityId": 53481, "scanner": "repobility-threat-engine", "fingerprint": "0a16ace48454b5004d2bd3a8f6a47d1ac569bf13cebc73c40c4f04e1ba73614d", "category": "deserialization", "severity": "critical", "confidence": 1.0, "triageState": "open", "verdict": "confirmed", "isResolved": false, "reason": "Pattern matched with no mitigating context found", "evidence": {"match": "yaml.load(", "reason": "Pattern matched with no mitigating context found", "rule_id": "SEC116", "scanner": "repobility-threat-engine", "confidence": 1.0, "correlation_key": "code|deserialization|token|80|sec116"}}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "upgrade_codes/compare_yaml.py"}, "region": {"startLine": 80}}}]}, {"ruleId": "SEC079", "level": "error", "message": {"text": "[SEC079] Python: yaml.load without SafeLoader: yaml.load() without explicit SafeLoader can execute arbitrary Python objects (CVE-2017-18342). Ported from bandit B506 / dlint DUO109 (Apache-2.0 / BSD-3)."}, "properties": {"repobilityId": 53479, "scanner": "repobility-threat-engine", "fingerprint": "4b26924fcda6af2d0a85945cfd074bd64ae9064a3487e8fd51bd11d270f7fcd7", "category": "quality", "severity": "critical", "confidence": 1.0, "triageState": "open", "verdict": "confirmed", "isResolved": false, "reason": "Pattern matched with no mitigating context found", "evidence": {"match": "yaml.load(StringIO(yaml_text)", "reason": "Pattern matched with no mitigating context found", "rule_id": "SEC079", "scanner": "repobility-threat-engine", "confidence": 1.0, "correlation_key": "fp|4b26924fcda6af2d0a85945cfd074bd64ae9064a3487e8fd51bd11d270f7fcd7"}}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "upgrade_codes/upgrade_core/comment_diff_fn.py"}, "region": {"startLine": 23}}}]}, {"ruleId": "SEC079", "level": "error", "message": {"text": "[SEC079] Python: yaml.load without SafeLoader: yaml.load() without explicit SafeLoader can execute arbitrary Python objects (CVE-2017-18342). Ported from bandit B506 / dlint DUO109 (Apache-2.0 / BSD-3)."}, "properties": {"repobilityId": 53478, "scanner": "repobility-threat-engine", "fingerprint": "d5d0d6128a3fc9c8a1fcd33285b89ec3f13ee21eded48c19ee81ad5cd3714c2e", "category": "quality", "severity": "critical", "confidence": 1.0, "triageState": "open", "verdict": "confirmed", "isResolved": false, "reason": "Pattern matched with no mitigating context found", "evidence": {"match": "yaml.load(load_text_file_with_guess_encoding(self.user_path)", "reason": "Pattern matched with no mitigating context found", "rule_id": "SEC079", "scanner": "repobility-threat-engine", "confidence": 1.0, "correlation_key": "fp|d5d0d6128a3fc9c8a1fcd33285b89ec3f13ee21eded48c19ee81ad5cd3714c2e"}}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "upgrade_codes/config_sync.py"}, "region": {"startLine": 121}}}]}, {"ruleId": "SEC079", "level": "error", "message": {"text": "[SEC079] Python: yaml.load without SafeLoader: yaml.load() without explicit SafeLoader can execute arbitrary Python objects (CVE-2017-18342). Ported from bandit B506 / dlint DUO109 (Apache-2.0 / BSD-3)."}, "properties": {"repobilityId": 53477, "scanner": "repobility-threat-engine", "fingerprint": "093d5da8a5f1bacd61d4c3749809d086b7adaad0b0c998a6887ddf217ec7885d", "category": "quality", "severity": "critical", "confidence": 1.0, "triageState": "open", "verdict": "confirmed", "isResolved": false, "reason": "Pattern matched with no mitigating context found", "evidence": {"match": "yaml.load(f1)", "reason": "Pattern matched with no mitigating context found", "rule_id": "SEC079", "scanner": "repobility-threat-engine", "confidence": 1.0, "correlation_key": "fp|093d5da8a5f1bacd61d4c3749809d086b7adaad0b0c998a6887ddf217ec7885d"}}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "upgrade_codes/compare_yaml.py"}, "region": {"startLine": 80}}}]}, {"ruleId": "MINED116", "level": "error", "message": {"text": "Workflow uses `secrets.DOCKERHUB_TOKEN` on a `pull_request` trigger"}, "properties": {"repobilityId": 53391, "scanner": "repobility-supply-chain", "fingerprint": "820e5e2c40ce24e9e6d6e9b73afad7d590d52ea8d352e6b4631c9308161e7d08", "category": "dependency", "severity": "critical", "confidence": 0.9, "triageState": "open", "verdict": "", "isResolved": false, "reason": "", "evidence": {"mined": true, "mining": {"slug": "gha-pull-request-secrets", "owasp": "A08:2021", "cwe_ids": ["CWE-829"], "languages": ["yaml"], "observations_count": 0}, "scanner": "repobility-supply-chain", "correlation_key": "fp|820e5e2c40ce24e9e6d6e9b73afad7d590d52ea8d352e6b4631c9308161e7d08"}}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": ".github/workflows/docker-blacksmith.yml"}, "region": {"startLine": 158}}}]}, {"ruleId": "MINED116", "level": "error", "message": {"text": "Workflow uses `secrets.DOCKERHUB_USERNAME` on a `pull_request` trigger"}, "properties": {"repobilityId": 53390, "scanner": "repobility-supply-chain", "fingerprint": "53439189110484a6fb22a1c5905cb23ccd313a02e6c45d8c1b8bd83088a5ab02", "category": "dependency", "severity": "critical", "confidence": 0.9, "triageState": "open", "verdict": "", "isResolved": false, "reason": "", "evidence": {"mined": true, "mining": {"slug": "gha-pull-request-secrets", "owasp": "A08:2021", "cwe_ids": ["CWE-829"], "languages": ["yaml"], "observations_count": 0}, "scanner": "repobility-supply-chain", "correlation_key": "fp|53439189110484a6fb22a1c5905cb23ccd313a02e6c45d8c1b8bd83088a5ab02"}}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": ".github/workflows/docker-blacksmith.yml"}, "region": {"startLine": 157}}}]}, {"ruleId": "MINED116", "level": "error", "message": {"text": "Workflow uses `secrets.DOCKERHUB_TOKEN` on a `pull_request` trigger"}, "properties": {"repobilityId": 53389, "scanner": "repobility-supply-chain", "fingerprint": "c2296206625b5f95d1101094aae8dc49434c137671ad2d7df72b3458adf7688e", "category": "dependency", "severity": "critical", "confidence": 0.9, "triageState": "open", "verdict": "", "isResolved": false, "reason": "", "evidence": {"mined": true, "mining": {"slug": "gha-pull-request-secrets", "owasp": "A08:2021", "cwe_ids": ["CWE-829"], "languages": ["yaml"], "observations_count": 0}, "scanner": "repobility-supply-chain", "correlation_key": "fp|c2296206625b5f95d1101094aae8dc49434c137671ad2d7df72b3458adf7688e"}}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": ".github/workflows/docker-blacksmith.yml"}, "region": {"startLine": 92}}}]}, {"ruleId": "MINED116", "level": "error", "message": {"text": "Workflow uses `secrets.DOCKERHUB_USERNAME` on a `pull_request` trigger"}, "properties": {"repobilityId": 53388, "scanner": "repobility-supply-chain", "fingerprint": "e7afcac102957565cf7154c487f95d53da1ace24c66c9fa81b0458cabcf479e5", "category": "dependency", "severity": "critical", "confidence": 0.9, "triageState": "open", "verdict": "", "isResolved": false, "reason": "", "evidence": {"mined": true, "mining": {"slug": "gha-pull-request-secrets", "owasp": "A08:2021", "cwe_ids": ["CWE-829"], "languages": ["yaml"], "observations_count": 0}, "scanner": "repobility-supply-chain", "correlation_key": "fp|e7afcac102957565cf7154c487f95d53da1ace24c66c9fa81b0458cabcf479e5"}}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": ".github/workflows/docker-blacksmith.yml"}, "region": {"startLine": 91}}}]}, {"ruleId": "MINED107", "level": "error", "message": {"text": "Missing import: `platform` used but not imported"}, "properties": {"repobilityId": 53361, "scanner": "repobility-ast-engine", "fingerprint": "4794c853feba166192c936b5c5e00be9b7ebfeb7be9909e685f9c3b59bc61adf", "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|4794c853feba166192c936b5c5e00be9b7ebfeb7be9909e685f9c3b59bc61adf"}}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "scripts/run_bilibili_live.py"}, "region": {"startLine": 44}}}]}]}]}