https://github.com/Open-LLM-VTuber/Open-LLM-VTuber ·
lang: python ·
LOC: ·
source: user_submitted
| Rule | Severity | Count |
|---|---|---|
MINED108 self.attribute used but never assigned in __init__ |
high | 25 |
MINED115 GitHub Action pinned to mutable ref (not 40-char SHA) |
high | 21 |
MINED018 Unsafe Deserialization Pickle |
critical | 4 |
MINED111 Bare except continues silently |
medium | 4 |
MINED050 Stub Only Function |
info | 4 |
MINED001 Bare Except Pass |
high | 4 |
SEC079 Python: yaml.load without SafeLoader |
critical | 4 |
SEC116 Ruby YAML.load / Marshal.load on untrusted input |
critical | 4 |
MINED067 Python Requests No Timeout |
info | 4 |
MINED040 Python Yaml Load Unsafe |
high | 4 |
MINED018
Unsafe Deserialization Pickle
CWE-502
upgrade_codes/compare_yaml.py:80
· conf 1.00
[MINED018] Unsafe Deserialization Pickle: pickle.loads / yaml.load (without Loader=SafeLoader) / unmarshal of network/file data — RCE.
MINED018
Unsafe Deserialization Pickle
CWE-502
upgrade_codes/config_sync.py:121
· conf 1.00
[MINED018] Unsafe Deserialization Pickle: pickle.loads / yaml.load (without Loader=SafeLoader) / unmarshal of network/file data — RCE.
MINED018
Unsafe Deserialization Pickle
CWE-502
upgrade_codes/upgrade_core/comment_diff_fn.py:23
· conf 1.00
[MINED018] Unsafe Deserialization Pickle: pickle.loads / yaml.load (without Loader=SafeLoader) / unmarshal of network/file data — RCE.
MINED107
Missing Python import (NameError at runtime)
CWE-1075
scripts/run_bilibili_live.py:44
· conf 1.00
[MINED107] Missing import: `platform` used but not imported: The file uses `platform.something(...)` but never imports `platform`. This raises NameError at runtime the first time the line executes.
MINED116
GHA pull_request workflow leaks secrets to forks
CWE-829
.github/workflows/docker-blacksmith.yml:91
· conf 0.90
[MINED116] Workflow uses `secrets.DOCKERHUB_USERNAME` on a `pull_request` trigger: This workflow triggers on `pull_request`, which checks out the FORK's code. Referencing `${ secrets.DOCKERHUB_USERNA…
MINED116
GHA pull_request workflow leaks secrets to forks
CWE-829
.github/workflows/docker-blacksmith.yml:92
· conf 0.90
[MINED116] Workflow uses `secrets.DOCKERHUB_TOKEN` on a `pull_request` trigger: This workflow triggers on `pull_request`, which checks out the FORK's code. Referencing `${ secrets.DOCKERHUB_TOKEN }` …
MINED116
GHA pull_request workflow leaks secrets to forks
CWE-829
.github/workflows/docker-blacksmith.yml:157
· conf 0.90
[MINED116] Workflow uses `secrets.DOCKERHUB_USERNAME` on a `pull_request` trigger: This workflow triggers on `pull_request`, which checks out the FORK's code. Referencing `${ secrets.DOCKERHUB_USERNA…
MINED116
GHA pull_request workflow leaks secrets to forks
CWE-829
.github/workflows/docker-blacksmith.yml:158
· conf 0.90
[MINED116] Workflow uses `secrets.DOCKERHUB_TOKEN` on a `pull_request` trigger: This workflow triggers on `pull_request`, which checks out the FORK's code. Referencing `${ secrets.DOCKERHUB_TOKEN }` …
SEC079
Python: yaml.load without SafeLoader
upgrade_codes/compare_yaml.py:80
· conf 1.00
[SEC079] Python: yaml.load without SafeLoader: yaml.load() without explicit SafeLoader can execute arbitrary Python objects (CVE-2017-18342). Ported from bandit B506 / dlint DUO109 (Apache-2.0 / BSD-…
SEC079
Python: yaml.load without SafeLoader
upgrade_codes/config_sync.py:121
· conf 1.00
[SEC079] Python: yaml.load without SafeLoader: yaml.load() without explicit SafeLoader can execute arbitrary Python objects (CVE-2017-18342). Ported from bandit B506 / dlint DUO109 (Apache-2.0 / BSD-…
SEC079
Python: yaml.load without SafeLoader
upgrade_codes/upgrade_core/comment_diff_fn.py:23
· conf 1.00
[SEC079] Python: yaml.load without SafeLoader: yaml.load() without explicit SafeLoader can execute arbitrary Python objects (CVE-2017-18342). Ported from bandit B506 / dlint DUO109 (Apache-2.0 / BSD-…
SEC116
Ruby YAML.load / Marshal.load on untrusted input
upgrade_codes/compare_yaml.py:80
· conf 1.00
[SEC116] Ruby YAML.load / Marshal.load on untrusted input: `YAML.load` (pre-3.1) and `Marshal.load` instantiate arbitrary Ruby classes — direct RCE on untrusted input. `unsafe_load` is even more dang…
SEC116
Ruby YAML.load / Marshal.load on untrusted input
upgrade_codes/config_sync.py:121
· conf 1.00
[SEC116] Ruby YAML.load / Marshal.load on untrusted input: `YAML.load` (pre-3.1) and `Marshal.load` instantiate arbitrary Ruby classes — direct RCE on untrusted input. `unsafe_load` is even more dang…
SEC116
Ruby YAML.load / Marshal.load on untrusted input
upgrade_codes/upgrade_core/comment_diff_fn.py:23
· conf 1.00
[SEC116] Ruby YAML.load / Marshal.load on untrusted input: `YAML.load` (pre-3.1) and `Marshal.load` instantiate arbitrary Ruby classes — direct RCE on untrusted input. `unsafe_load` is even more dang…
AGT002
LLM memory extraction can be prompt-injected into storing fake facts
src/open_llm_vtuber/agent/agents/basic_memory_agent.py:286
· conf 0.82
LLM memory extraction can be prompt-injected into storing fake facts
CORE_NO_TESTS
No test files found
No test files found
MINED001
Bare Except Pass
CWE-755
prompts/prompt_loader.py:49
· conf 1.00
[MINED001] Bare Except Pass: except: pass or except Exception: pass — silently swallows everything including KeyboardInterrupt and bugs.
MINED001
Bare Except Pass
CWE-755
src/open_llm_vtuber/live2d_model.py:77
· conf 1.00
[MINED001] Bare Except Pass: except: pass or except Exception: pass — silently swallows everything including KeyboardInterrupt and bugs.
MINED001
Bare Except Pass
CWE-755
src/open_llm_vtuber/proxy_handler.py:172
· conf 1.00
[MINED001] Bare Except Pass: except: pass or except Exception: pass — silently swallows everything including KeyboardInterrupt and bugs.
MINED006
Overcatch Baseexception
CWE-705
scripts/run_bilibili_live.py:59
· conf 1.00
[MINED006] Overcatch Baseexception: except BaseException: ... — prevents Ctrl+C and SystemExit from working.
MINED020
Logging Credential Via Fstring
CWE-532
src/open_llm_vtuber/tts/fish_api_tts.py:36
· conf 1.00
[MINED020] Logging Credential Via Fstring: logger.error(f"failed for {api_key}") — secrets end up in log aggregators / sentry.
MINED034
Python Subprocess Shell True
CWE-78
src/open_llm_vtuber/utils/install_utils.py:116
· conf 1.00
[MINED034] Python Subprocess Shell True: subprocess(..., shell=True) enables command injection.
MINED034
Python Subprocess Shell True
CWE-78
upgrade_codes/upgrade_core/upgrade_utils.py:20
· conf 1.00
[MINED034] Python Subprocess Shell True: subprocess(..., shell=True) enables command injection.
MINED040
Python Yaml Load Unsafe
CWE-502
upgrade_codes/compare_yaml.py:80
· conf 1.00
[MINED040] Python Yaml Load Unsafe: yaml.load(stream) without SafeLoader can deserialize arbitrary classes.
MINED040
Python Yaml Load Unsafe
CWE-502
upgrade_codes/config_sync.py:121
· conf 1.00
[MINED040] Python Yaml Load Unsafe: yaml.load(stream) without SafeLoader can deserialize arbitrary classes.
MINED040
Python Yaml Load Unsafe
CWE-502
upgrade_codes/upgrade_core/comment_diff_fn.py:23
· conf 1.00
[MINED040] Python Yaml Load Unsafe: yaml.load(stream) without SafeLoader can deserialize arbitrary classes.
MINED108
self.attribute used but never assigned in __init__
CWE-476
upgrade_codes/config_sync.py:50
· conf 1.00
[MINED108] `self.backup_user_config` used but never assigned in __init__: Method `sync_user_config` of class `ConfigSynchronizer` reads `self.backup_user_config`, but no assignment to it exists in __…
MINED108
self.attribute used but never assigned in __init__
CWE-476
upgrade_codes/config_sync.py:61
· conf 1.00
[MINED108] `self.compare_field_keys` used but never assigned in __init__: Method `update_user_config` of class `ConfigSynchronizer` reads `self.compare_field_keys`, but no assignment to it exists in …
MINED108
self.attribute used but never assigned in __init__
CWE-476
upgrade_codes/config_sync.py:62
· conf 1.00
[MINED108] `self.merge_and_update_user_config` used but never assigned in __init__: Method `update_user_config` of class `ConfigSynchronizer` reads `self.merge_and_update_user_config`, but no assignm…
MINED108
self.attribute used but never assigned in __init__
CWE-476
upgrade_codes/config_sync.py:67
· conf 1.00
[MINED108] `self.compare_comments` used but never assigned in __init__: Method `update_user_config` of class `ConfigSynchronizer` reads `self.compare_comments`, but no assignment to it exists in __in…
MINED108
self.attribute used but never assigned in __init__
CWE-476
upgrade_codes/config_sync.py:80
· conf 1.00
[MINED108] `self.get_latest_version` used but never assigned in __init__: Method `update_user_config` of class `ConfigSynchronizer` reads `self.get_latest_version`, but no assignment to it exists in …
MINED108
self.attribute used but never assigned in __init__
CWE-476
upgrade_codes/config_sync.py:81
· conf 1.00
[MINED108] `self.get_old_version` used but never assigned in __init__: Method `update_user_config` of class `ConfigSynchronizer` reads `self.get_old_version`, but no assignment to it exists in __init…
MINED108
self.attribute used but never assigned in __init__
CWE-476
upgrade_codes/config_sync.py:110
· conf 1.00
[MINED108] `self.merge_configs` used but never assigned in __init__: Method `merge_and_update_user_config` of class `ConfigSynchronizer` reads `self.merge_configs`, but no assignment to it exists in …
MINED108
self.attribute used but never assigned in __init__
CWE-476
upgrade_codes/config_sync.py:156
· conf 1.00
[MINED108] `self.collect_all_subkeys` used but never assigned in __init__: Method `collect_all_subkeys` of class `ConfigSynchronizer` reads `self.collect_all_subkeys`, but no assignment to it exists …
MINED108
self.attribute used but never assigned in __init__
CWE-476
upgrade_codes/config_sync.py:171
· conf 1.00
[MINED108] `self.get_missing_keys` used but never assigned in __init__: Method `get_missing_keys` of class `ConfigSynchronizer` reads `self.get_missing_keys`, but no assignment to it exists in __init…
MINED108
self.attribute used but never assigned in __init__
CWE-476
upgrade_codes/config_sync.py:174
· conf 1.00
[MINED108] `self.collect_all_subkeys` used but never assigned in __init__: Method `get_missing_keys` of class `ConfigSynchronizer` reads `self.collect_all_subkeys`, but no assignment to it exists in …
MINED108
self.attribute used but never assigned in __init__
CWE-476
upgrade_codes/config_sync.py:188
· conf 1.00
[MINED108] `self.collect_all_subkeys` used but never assigned in __init__: Method `get_extra_keys` of class `ConfigSynchronizer` reads `self.collect_all_subkeys`, but no assignment to it exists in __…
MINED108
self.attribute used but never assigned in __init__
CWE-476
upgrade_codes/config_sync.py:195
· conf 1.00
[MINED108] `self.get_extra_keys` used but never assigned in __init__: Method `get_extra_keys` of class `ConfigSynchronizer` reads `self.get_extra_keys`, but no assignment to it exists in __init__ (an…
MINED108
self.attribute used but never assigned in __init__
CWE-476
upgrade_codes/config_sync.py:198
· conf 1.00
[MINED108] `self.collect_all_subkeys` used but never assigned in __init__: Method `get_extra_keys` of class `ConfigSynchronizer` reads `self.collect_all_subkeys`, but no assignment to it exists in __…
MINED108
self.attribute used but never assigned in __init__
CWE-476
upgrade_codes/config_sync.py:209
· conf 1.00
[MINED108] `self.get_extra_keys` used but never assigned in __init__: Method `delete_extra_keys` of class `ConfigSynchronizer` reads `self.get_extra_keys`, but no assignment to it exists in __init__ …
MINED108
self.attribute used but never assigned in __init__
CWE-476
upgrade_codes/config_sync.py:243
· conf 1.00
[MINED108] `self.get_missing_keys` used but never assigned in __init__: Method `compare_field_keys` of class `ConfigSynchronizer` reads `self.get_missing_keys`, but no assignment to it exists in __in…
MINED108
self.attribute used but never assigned in __init__
CWE-476
upgrade_codes/config_sync.py:244
· conf 1.00
[MINED108] `self.get_extra_keys` used but never assigned in __init__: Method `compare_field_keys` of class `ConfigSynchronizer` reads `self.get_extra_keys`, but no assignment to it exists in __init__…
MINED108
self.attribute used but never assigned in __init__
CWE-476
upgrade_codes/config_sync.py:254
· conf 1.00
[MINED108] `self.delete_extra_keys` used but never assigned in __init__: Method `compare_field_keys` of class `ConfigSynchronizer` reads `self.delete_extra_keys`, but no assignment to it exists in __…
MINED108
self.attribute used but never assigned in __init__
CWE-476
upgrade_codes/from_version/v_1_1_1.py:44
· conf 1.00
[MINED108] `self._upgrade_live2d_models` used but never assigned in __init__: Method `upgrade` of class `to_v_1_2_1` reads `self._upgrade_live2d_models`, but no assignment to it exists in __init__ (a…
MINED108
self.attribute used but never assigned in __init__
CWE-476
upgrade_codes/from_version/v_1_1_1.py:45
· conf 1.00
[MINED108] `self._upgrade_conf_yaml` used but never assigned in __init__: Method `upgrade` of class `to_v_1_2_1` reads `self._upgrade_conf_yaml`, but no assignment to it exists in __init__ (and no cl…
MINED108
self.attribute used but never assigned in __init__
CWE-476
upgrade_codes/from_version/v_1_1_1.py:93
· conf 1.00
[MINED108] `self._migrate_field` used but never assigned in __init__: 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…
MINED108
self.attribute used but never assigned in __init__
CWE-476
upgrade_codes/upgrade_core/upgrade_utils.py:62
· conf 1.00
[MINED108] `self.run_command` used but never assigned in __init__: Method `log_system_info` of class `UpgradeUtility` reads `self.run_command`, but no assignment to it exists in __init__ (and no clas…
MINED108
self.attribute used but never assigned in __init__
CWE-476
upgrade_codes/upgrade_core/upgrade_utils.py:69
· conf 1.00
[MINED108] `self.run_command` used but never assigned in __init__: Method `log_system_info` of class `UpgradeUtility` reads `self.run_command`, but no assignment to it exists in __init__ (and no clas…
MINED108
self.attribute used but never assigned in __init__
CWE-476
upgrade_codes/upgrade_core/upgrade_utils.py:86
· conf 1.00
[MINED108] `self.run_command` used but never assigned in __init__: Method `get_submodule_list` of class `UpgradeUtility` reads `self.run_command`, but no assignment to it exists in __init__ (and no c…
MINED108
self.attribute used but never assigned in __init__
CWE-476
upgrade_codes/version_manager.py:46
· conf 1.00
[MINED108] `self.get_upgrade_mapping` used but never assigned in __init__: Method `resolve_upgrade_task` of class `VersionUpgradeManager` reads `self.get_upgrade_mapping`, but no assignment to it exi…
MINED108
self.attribute used but never assigned in __init__
CWE-476
upgrade_codes/version_manager.py:58
· conf 1.00
[MINED108] `self.resolve_upgrade_task` used but never assigned in __init__: Method `upgrade` of class `VersionUpgradeManager` reads `self.resolve_upgrade_task`, but no assignment to it exists in __in…
MINED110
Blocking call inside async function
CWE-833
src/open_llm_vtuber/agent/stateless_llm/stateless_llm_with_template.py:160
· conf 1.00
[MINED110] Blocking call `requests.post` inside async function `chat_completion`: `requests.post` is a synchronous (blocking) call. When invoked inside an `async def` it stalls the event loop, preven…
MINED112
FastAPI POST/PUT/DELETE/PATCH endpoint without auth
CWE-306CWE-862
src/open_llm_vtuber/routes.py:142
· conf 0.80
[MINED112] FastAPI POST /asr has no auth: Handler `transcribe_audio` is registered with router/app.post(...) but no Depends/Security parameter is declared and no auth marker appears in the function b…
MINED115
GitHub Action pinned to mutable ref (not 40-char SHA)
CWE-829
.github/workflows/codeql.yml:58
· conf 0.90
[MINED115] Action `actions/checkout` pinned to mutable ref `@v4`: `uses: actions/checkout@v4` resolves at workflow-run time. Tags and branches can be re-pushed by the action owner; that made the tj-a…
MINED115
GitHub Action pinned to mutable ref (not 40-char SHA)
CWE-829
.github/workflows/codeql.yml:62
· conf 0.90
[MINED115] Action `github/codeql-action/init` pinned to mutable ref `@v3`: `uses: github/codeql-action/init@v3` resolves at workflow-run time. Tags and branches can be re-pushed by the action owner; …
MINED115
GitHub Action pinned to mutable ref (not 40-char SHA)
CWE-829
.github/workflows/codeql.yml:90
· conf 0.90
[MINED115] Action `github/codeql-action/analyze` pinned to mutable ref `@v3`: `uses: github/codeql-action/analyze@v3` resolves at workflow-run time. Tags and branches can be re-pushed by the action o…
MINED115
GitHub Action pinned to mutable ref (not 40-char SHA)
CWE-829
.github/workflows/create_release.yml:28
· conf 0.90
[MINED115] Action `actions/checkout` pinned to mutable ref `@v3`: `uses: actions/checkout@v3` resolves at workflow-run time. Tags and branches can be re-pushed by the action owner; that made the tj-a…
MINED115
GitHub Action pinned to mutable ref (not 40-char SHA)
CWE-829
.github/workflows/create_release.yml:40
· conf 0.90
[MINED115] Action `actions/checkout` pinned to mutable ref `@v3`: `uses: actions/checkout@v3` resolves at workflow-run time. Tags and branches can be re-pushed by the action owner; that made the tj-a…
MINED115
GitHub Action pinned to mutable ref (not 40-char SHA)
CWE-829
.github/workflows/create_release.yml:60
· conf 0.90
[MINED115] Action `actions/setup-python` pinned to mutable ref `@v4`: `uses: actions/setup-python@v4` resolves at workflow-run time. Tags and branches can be re-pushed by the action owner; that made …
MINED115
GitHub Action pinned to mutable ref (not 40-char SHA)
CWE-829
.github/workflows/create_release.yml:132
· conf 0.90
[MINED115] Action `actions/upload-artifact` pinned to mutable ref `@v4`: `uses: actions/upload-artifact@v4` resolves at workflow-run time. Tags and branches can be re-pushed by the action owner; that…
MINED115
GitHub Action pinned to mutable ref (not 40-char SHA)
CWE-829
.github/workflows/create_release.yml:140
· conf 0.90
[MINED115] Action `actions/upload-artifact` pinned to mutable ref `@v4`: `uses: actions/upload-artifact@v4` resolves at workflow-run time. Tags and branches can be re-pushed by the action owner; that…
MINED115
GitHub Action pinned to mutable ref (not 40-char SHA)
CWE-829
.github/workflows/create_release.yml:148
· conf 0.90
[MINED115] Action `actions/upload-artifact` pinned to mutable ref `@v4`: `uses: actions/upload-artifact@v4` resolves at workflow-run time. Tags and branches can be re-pushed by the action owner; that…
MINED115
GitHub Action pinned to mutable ref (not 40-char SHA)
CWE-829
.github/workflows/create_release.yml:156
· conf 0.90
[MINED115] Action `actions/upload-artifact` pinned to mutable ref `@v4`: `uses: actions/upload-artifact@v4` resolves at workflow-run time. Tags and branches can be re-pushed by the action owner; that…
MINED115
GitHub Action pinned to mutable ref (not 40-char SHA)
CWE-829
.github/workflows/create_release.yml:227
· conf 0.90
[MINED115] Action `actions/upload-artifact` pinned to mutable ref `@v4`: `uses: actions/upload-artifact@v4` resolves at workflow-run time. Tags and branches can be re-pushed by the action owner; that…
MINED115
GitHub Action pinned to mutable ref (not 40-char SHA)
CWE-829
.github/workflows/docker-blacksmith.yml:82
· conf 0.90
[MINED115] Action `actions/checkout` pinned to mutable ref `@v4`: `uses: actions/checkout@v4` resolves at workflow-run time. Tags and branches can be re-pushed by the action owner; that made the tj-a…
MINED115
GitHub Action pinned to mutable ref (not 40-char SHA)
CWE-829
.github/workflows/docker-blacksmith.yml:85
· conf 0.90
[MINED115] Action `useblacksmith/setup-docker-builder` pinned to mutable ref `@v1`: `uses: useblacksmith/setup-docker-builder@v1` resolves at workflow-run time. Tags and branches can be re-pushed by …
MINED115
GitHub Action pinned to mutable ref (not 40-char SHA)
CWE-829
.github/workflows/docker-blacksmith.yml:140
· conf 0.90
[MINED115] Action `useblacksmith/build-push-action` pinned to mutable ref `@v2`: `uses: useblacksmith/build-push-action@v2` resolves at workflow-run time. Tags and branches can be re-pushed by the ac…
MINED115
GitHub Action pinned to mutable ref (not 40-char SHA)
CWE-829
.github/workflows/fossa_scan.yml:13
· conf 0.90
[MINED115] Action `actions/checkout` pinned to mutable ref `@v3`: `uses: actions/checkout@v3` resolves at workflow-run time. Tags and branches can be re-pushed by the action owner; that made the tj-a…
MINED115
GitHub Action pinned to mutable ref (not 40-char SHA)
CWE-829
.github/workflows/fossa_scan.yml:14
· conf 0.90
[MINED115] Action `fossas/fossa-action` pinned to mutable ref `@main`: `uses: fossas/fossa-action@main` resolves at workflow-run time. Tags and branches can be re-pushed by the action owner; that mad…
MINED115
GitHub Action pinned to mutable ref (not 40-char SHA)
CWE-829
.github/workflows/ruff.yml:7
· conf 0.90
[MINED115] Action `actions/checkout` pinned to mutable ref `@v4`: `uses: actions/checkout@v4` resolves at workflow-run time. Tags and branches can be re-pushed by the action owner; that made the tj-a…
MINED115
GitHub Action pinned to mutable ref (not 40-char SHA)
CWE-829
.github/workflows/ruff.yml:8
· conf 0.90
[MINED115] Action `astral-sh/ruff-action` pinned to mutable ref `@v3`: `uses: astral-sh/ruff-action@v3` resolves at workflow-run time. Tags and branches can be re-pushed by the action owner; that mad…
MINED115
GitHub Action pinned to mutable ref (not 40-char SHA)
CWE-829
.github/workflows/update-requirements.yml:15
· conf 0.90
[MINED115] Action `actions/checkout` pinned to mutable ref `@v4`: `uses: actions/checkout@v4` resolves at workflow-run time. Tags and branches can be re-pushed by the action owner; that made the tj-a…
MINED115
GitHub Action pinned to mutable ref (not 40-char SHA)
CWE-829
.github/workflows/update-requirements.yml:19
· conf 0.90
[MINED115] Action `astral-sh/setup-uv` pinned to mutable ref `@v3`: `uses: astral-sh/setup-uv@v3` resolves at workflow-run time. Tags and branches can be re-pushed by the action owner; that made the …
MINED115
GitHub Action pinned to mutable ref (not 40-char SHA)
CWE-829
.github/workflows/update-requirements.yml:25
· conf 0.90
[MINED115] Action `stefanzweifel/git-auto-commit-action` pinned to mutable ref `@v5`: `uses: stefanzweifel/git-auto-commit-action@v5` resolves at workflow-run time. Tags and branches can be re-pushed…
MINED118
Dockerfile FROM not pinned by sha256 digest
CWE-829
dockerfile:1
· conf 0.90
[MINED118] Dockerfile FROM `python:3.10-slim` not pinned by digest: `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…
MINED131
pre-commit hook pinned to branch/tag instead of SHA
CWE-829
.pre-commit-config.yaml:2
· conf 0.90
[MINED131] pre-commit hook `https://github.com/astral-sh/ruff-pre-commit` pinned to mutable rev `v0.9.6`: `.pre-commit-config.yaml` references `https://github.com/astral-sh/ruff-pre-commit` at `rev: …
SEC029
Server-Side Request Forgery (SSRF) — outbound HTTP from user input
src/open_llm_vtuber/agent/stateless_llm/claude_llm.py:28
· conf 1.00
[SEC029] Server-Side Request Forgery (SSRF) — outbound HTTP from user input: Outbound HTTP request to a user-controlled URL without allowlist validation. Attackers can probe internal services (169.25…
SEC029
Server-Side Request Forgery (SSRF) — outbound HTTP from user input
src/open_llm_vtuber/agent/stateless_llm/ollama_llm.py:35
· conf 1.00
[SEC029] Server-Side Request Forgery (SSRF) — outbound HTTP from user input: Outbound HTTP request to a user-controlled URL without allowlist validation. Attackers can probe internal services (169.25…
SEC029
Server-Side Request Forgery (SSRF) — outbound HTTP from user input
src/open_llm_vtuber/agent/stateless_llm/openai_compatible_llm.py:39
· conf 1.00
[SEC029] Server-Side Request Forgery (SSRF) — outbound HTTP from user input: Outbound HTTP request to a user-controlled URL without allowlist validation. Attackers can probe internal services (169.25…
SEC078
Python: requests without timeout
src/open_llm_vtuber/agent/stateless_llm/ollama_llm.py:35
· conf 1.00
[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-…
SEC078
Python: requests without timeout
src/open_llm_vtuber/agent/stateless_llm/stateless_llm_with_template.py:160
· conf 1.00
[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-…
SEC078
Python: requests without timeout
src/open_llm_vtuber/asr/utils.py:27
· conf 1.00
[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-…
SEC080
Python: tarfile.extractall without filter
src/open_llm_vtuber/asr/utils.py:108
· conf 1.00
[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).
SEC128
Async function without await — fire-and-forget Promise (AI mistake)
src/open_llm_vtuber/asr/utils.py:100
· conf 1.00
[SEC128] Async function without await — fire-and-forget Promise (AI mistake): Async call invoked without `await` returns an unhandled Promise. The outer function resolves before the inner work comple…
SEC128
Async function without await — fire-and-forget Promise (AI mistake)
src/open_llm_vtuber/chat_group.py:235
· conf 1.00
[SEC128] Async function without await — fire-and-forget Promise (AI mistake): Async call invoked without `await` returns an unhandled Promise. The outer function resolves before the inner work comple…
SEC128
Async function without await — fire-and-forget Promise (AI mistake)
src/open_llm_vtuber/vad/silero.py:144
· conf 1.00
[SEC128] Async function without await — fire-and-forget Promise (AI mistake): Async call invoked without `await` returns an unhandled Promise. The outer function resolves before the inner work comple…
AUC001
[AUC001] No Repobility access matrix policy found: The repository uses web/API frameworks but does not define .repobility/access.yml or equivalent authorization documentation.
· conf 0.92
[AUC001] No Repobility access matrix policy found: The repository uses web/API frameworks but does not define .repobility/access.yml or equivalent authorization documentation.
AUC002
[AUC002] Low visible authorization coverage in route inventory: Only 0.0% of discovered routes show nearby authentication, authorization, middleware, or public-route evidence.
· conf 0.74
[AUC002] Low visible authorization coverage in route inventory: Only 0.0% of discovered routes show nearby authentication, authorization, middleware, or public-route evidence.
AUC012
[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.
· conf 0.72
[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, p…
COMP001
[COMP001] High cognitive complexity: Function `load_yfinance_data` has cognitive complexity 9 (SonarSource scale). Cognitive complexity measures how hard the function is for a human to understand — nested branches, boolean chains, and recursion all weigh in. Breakdown: except=1, for=1, if=2, nested_bonus=3, or=2.
run_server.py:50
· conf 0.95
[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 underst…
COMP001
[COMP001] High cognitive complexity: Function `load_yfinance_data` has cognitive complexity 9 (SonarSource scale). Cognitive complexity measures how hard the function is for a human to understand — nested branches, boolean chains, and recursion all weigh in. Breakdown: except=1, for=1, if=2, nested_bonus=3, or=2.
src/open_llm_vtuber/agent/agent_factory.py:17
· conf 0.95
[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 — nested…
DKR001
Docker final stage has no non-root USER
dockerfile:1
· conf 0.82
Docker final stage has no non-root USER
DKR014
Dockerfile copies the entire context without .dockerignore
dockerfile:27
· conf 0.76
Dockerfile copies broad context with incomplete .dockerignore
ERR001
[ERR001] Silent Exception Swallowing (and 2 more): Same pattern found in 2 additional files. Review if needed.
upgrade_codes/upgrade_core/language.py:24
· conf 1.00
[ERR001] Silent Exception Swallowing: Silently swallowing all exceptions hides bugs. Even in cleanup code, log at DEBUG level.
MINED109
Mutable default argument
CWE-1023
src/open_llm_vtuber/asr/azure_asr.py:15
· conf 1.00
[MINED109] Mutable default argument in `__init__` (list): `def __init__(... = []/{}/set())` — Python's default value is constructed ONCE at function definition time and shared across all calls. Mutat…
MINED111
Bare except continues silently
src/open_llm_vtuber/asr/fun_asr.py:98
· conf 1.00
[MINED111] Bare except continues silently: Bare `except:` (or `except Exception:`) that runs code without re-raising or logging the exception. Hides real failures and makes bugs hard to diagnose.
MINED111
Bare except continues silently
src/open_llm_vtuber/chat_history_manager.py:229
· conf 1.00
[MINED111] Bare except continues silently: Bare `except:` (or `except Exception:`) that runs code without re-raising or logging the exception. Hides real failures and makes bugs hard to diagnose.
MINED111
Bare except continues silently
src/open_llm_vtuber/live/bilibili_live.py:74
· conf 1.00
[MINED111] Bare except continues silently: Bare `except:` (or `except Exception:`) that runs code without re-raising or logging the exception. Hides real failures and makes bugs hard to diagnose.
MINED111
Bare except continues silently
upgrade_codes/upgrade_core/upgrade_utils.py:35
· conf 1.00
[MINED111] Bare except continues silently: Bare `except:` (or `except Exception:`) that runs code without re-raising or logging the exception. Hides real failures and makes bugs hard to diagnose.
SEC005
Command Injection Risk
src/open_llm_vtuber/utils/install_utils.py:116
· conf 0.50
[SEC005] Command Injection Risk: Unsafe shell execution or eval of user input.
SEC005
Command Injection Risk
upgrade_codes/upgrade_core/upgrade_utils.py:20
· conf 0.50
[SEC005] Command Injection Risk: Unsafe shell execution or eval of user input.
SEC007
Unsafe Deserialization
upgrade_codes/compare_yaml.py:80
· conf 1.00
[SEC007] Unsafe Deserialization: Unsafe deserialization can execute arbitrary code.
SEC007
Unsafe Deserialization
upgrade_codes/config_sync.py:121
· conf 1.00
[SEC007] Unsafe Deserialization: Unsafe deserialization can execute arbitrary code.
SEC007
Unsafe Deserialization
upgrade_codes/upgrade_core/comment_diff_fn.py:23
· conf 1.00
[SEC007] Unsafe Deserialization: Unsafe deserialization can execute arbitrary code.
SEC012
ZipSlip — Archive Path Traversal
src/open_llm_vtuber/asr/utils.py:108
· conf 1.00
[SEC012] ZipSlip — Archive Path Traversal: Archive extraction without path validation allows writing files outside the target directory.
SEC034
Log Injection / Log Forging — unsanitized user input in log
src/open_llm_vtuber/conversations/single_conversation.py:84
· conf 1.00
[SEC034] Log Injection / Log Forging — unsanitized user input in log: User input is logged without sanitizing newlines or control characters. Attackers inject `\n` to forge fake log entries, hide tra…
SEC034
Log Injection / Log Forging — unsanitized user input in log
src/open_llm_vtuber/message_handler.py:49
· conf 1.00
[SEC034] Log Injection / Log Forging — unsanitized user input in log: User input is logged without sanitizing newlines or control characters. Attackers inject `\n` to forge fake log entries, hide tra…
SEC034
Log Injection / Log Forging — unsanitized user input in log
src/open_llm_vtuber/translate/deeplx.py:25
· conf 1.00
[SEC034] Log Injection / Log Forging — unsanitized user input in log: User input is logged without sanitizing newlines or control characters. Attackers inject `\n` to forge fake log entries, hide tra…
SEC037
Uncontrolled Recursion — stack/depth exhaustion
upgrade_codes/config_sync.py:121
· conf 1.00
[SEC037] Uncontrolled Recursion — stack/depth exhaustion: Parsing arbitrary-depth user input (XML, JSON, YAML) without a depth limit, or recursive function over user-controlled structure. Attacker se…
SEC119
World-writable / world-readable file permissions
src/open_llm_vtuber/utils/install_utils.py:64
· conf 1.00
[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.
WEB003
Public web service has no security.txt
.well-known/security.txt
· conf 0.78
Public web service has no security.txt
AIC003
Duplicated implementation block across source files
src/open_llm_vtuber/live2d_model.py:41
· conf 0.86
Duplicated implementation block across source files
AIC003
Duplicated implementation block across source files
src/open_llm_vtuber/tts/cosyvoice_tts.py:2
· conf 0.86
Duplicated implementation block across source files
AIC003
Duplicated implementation block across source files
src/open_llm_vtuber/tts/edge_tts.py:13
· conf 0.86
Duplicated implementation block across source files
AIC003
Duplicated implementation block across source files
src/open_llm_vtuber/tts/melo_tts.py:18
· conf 0.86
Duplicated implementation block across source files
AUC005
[AUC005] No authorization-focused tests detected: No test files with common authorization, ownership, 403, admin, or super_admin assertions were found.
· conf 0.76
[AUC005] No authorization-focused tests detected: No test files with common authorization, ownership, 403, admin, or super_admin assertions were found.
COMP001
[COMP001] High cognitive complexity: Function `load_yfinance_data` has cognitive complexity 9 (SonarSource scale). Cognitive complexity measures how hard the function is for a human to understand — nested branches, boolean chains, and recursion all weigh in. Breakdown: except=1, for=1, if=2, nested_bonus=3, or=2.
prompts/prompt_loader.py:12
· conf 0.95
[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 — n…
DKR008
.dockerignore misses sensitive defaults
.dockerignore
· conf 0.72
.dockerignore misses sensitive defaults
DKR012
Dockerfile keeps pip download cache
dockerfile:28
· conf 0.72
Dockerfile keeps pip download cache
COMP001
[COMP001] High cognitive complexity: Function `load_yfinance_data` has cognitive complexity 9 (SonarSource scale). Cognitive complexity measures how hard the function is for a human to understand — nested branches, boolean chains, and recursion all weigh in. Breakdown: except=1, for=1, if=2, nested_bonus=3, or=2.
· conf 0.20
[COMP001] High cognitive complexity (and 61 more): Same pattern found in 61 additional files. Review if needed.
MINED001
Bare Except Pass
CWE-755
· conf 0.20
[MINED001] Bare Except Pass (and 2 more): Same pattern found in 2 additional files. Review if needed.
MINED018
Unsafe Deserialization Pickle
CWE-502
· conf 0.20
[MINED018] Unsafe Deserialization Pickle (and 1 more): Same pattern found in 1 additional files. Review if needed.
MINED040
Python Yaml Load Unsafe
CWE-502
· conf 0.20
[MINED040] Python Yaml Load Unsafe (and 1 more): Same pattern found in 1 additional files. Review if needed.
MINED043
Http Not Https
CWE-319
src/open_llm_vtuber/agent/agents/letta_agent.py:31
· conf 1.00
[MINED043] Http Not Https: Hardcoded http:// (not localhost) for endpoints that handle credentials or data.
MINED044
Js Console Log Prod
CWE-532
web_tool/recorder.js:28
· conf 1.00
[MINED044] Js Console Log Prod: console.log left in code. Should be replaced with logger or removed.
MINED050
Stub Only Function
CWE-1188
· conf 0.20
[MINED050] Stub Only Function (and 15 more): Same pattern found in 15 additional files. Review if needed.
MINED050
Stub Only Function
CWE-1188
prompts/prompt_loader.py:50
· conf 1.00
[MINED050] Stub Only Function: Function declared but body is just pass, return None, raise NotImplementedError, or TODO comment.
MINED050
Stub Only Function
CWE-1188
src/open_llm_vtuber/agent/agents/agent_interface.py:43
· conf 1.00
[MINED050] Stub Only Function: Function declared but body is just pass, return None, raise NotImplementedError, or TODO comment.
MINED050
Stub Only Function
CWE-1188
src/open_llm_vtuber/agent/agents/hume_ai.py:241
· conf 1.00
[MINED050] Stub Only Function: Function declared but body is just pass, return None, raise NotImplementedError, or TODO comment.
MINED062
Python Dataclass No Fields
· conf 0.20
[MINED062] Python Dataclass No Fields (and 1 more): Same pattern found in 1 additional files. Review if needed.
MINED062
Python Dataclass No Fields
src/open_llm_vtuber/agent/input_types.py:22
· conf 1.00
[MINED062] Python Dataclass No Fields: @dataclass over an empty class — unfinished model.
MINED062
Python Dataclass No Fields
src/open_llm_vtuber/agent/output_types.py:6
· conf 1.00
[MINED062] Python Dataclass No Fields: @dataclass over an empty class — unfinished model.
MINED062
Python Dataclass No Fields
src/open_llm_vtuber/conversations/types.py:24
· conf 1.00
[MINED062] Python Dataclass No Fields: @dataclass over an empty class — unfinished model.
MINED064
Python Input Call
upgrade.py:24
· conf 1.00
[MINED064] Python Input Call: input() blocks for stdin. Inappropriate in services.
MINED067
Python Requests No Timeout
CWE-400
· conf 0.20
[MINED067] Python Requests No Timeout (and 2 more): Same pattern found in 2 additional files. Review if needed.
MINED067
Python Requests No Timeout
CWE-400
src/open_llm_vtuber/agent/stateless_llm/ollama_llm.py:35
· conf 1.00
[MINED067] Python Requests No Timeout: requests.get/post/etc. without timeout= can hang forever.
MINED067
Python Requests No Timeout
CWE-400
src/open_llm_vtuber/agent/stateless_llm/stateless_llm_with_template.py:160
· conf 1.00
[MINED067] Python Requests No Timeout: requests.get/post/etc. without timeout= can hang forever.
MINED067
Python Requests No Timeout
CWE-400
src/open_llm_vtuber/asr/utils.py:27
· conf 1.00
[MINED067] Python Requests No Timeout: requests.get/post/etc. without timeout= can hang forever.
SEC007
Unsafe Deserialization
· conf 0.20
[SEC007] Unsafe Deserialization (and 1 more): Same pattern found in 1 additional files. Review if needed.
SEC029
Server-Side Request Forgery (SSRF) — outbound HTTP from user input
· conf 0.20
[SEC029] Server-Side Request Forgery (SSRF) — outbound HTTP from user input (and 6 more): Same pattern found in 6 additional files. Review if needed.
SEC078
Python: requests without timeout
· conf 0.20
[SEC078] Python: requests without timeout (and 2 more): Same pattern found in 2 additional files. Review if needed.
SEC079
Python: yaml.load without SafeLoader
· conf 0.20
[SEC079] Python: yaml.load without SafeLoader (and 1 more): Same pattern found in 1 additional files. Review if needed.
SEC116
Ruby YAML.load / Marshal.load on untrusted input
· conf 0.20
[SEC116] Ruby YAML.load / Marshal.load on untrusted input (and 1 more): Same pattern found in 1 additional files. Review if needed.
Reading from rp.scan + rp.finding + rp.rule (unified schema, R78 series). Legacy data path unchanged. Compare with /scan/42006152-1d92-47d5-9b25-d33bc637259d/.