Caveat verdict
mal-updater
MyAnimeList sync tool for Crunchyroll/HIDIVE that uses MAL OAuth authentication; straightforward media tracking integration with provider-specific credentials managed outside version control.
⚠ Flagged for review — coarse, uncorroborated signal, not a confirmed exploit. Review the config yourself before installing.
Automated static analysis — not a human review. Caveat flags capabilities, not confirmed intent, and can produce false positives. Disagree with this verdict? Use Dispute below.
Findings (9)
Dynamic __import__('os') — Python OS command execution
scripts/run_health_check_cycle.sh · prose · downgraded · __import__("os")
Possible hardcoded credential
src/mal_updater/crunchyroll_auth.py · prose · downgraded · TOKEN = "dC1rZGdwMmg4YzNqdWI4Zm4wZnE6eWZMRGZNZnJZdktYaDRKWFMxTEVJMmNDcXUxdjVXYW4
Instructs covert action — may act without user awareness
references/DECISIONS.md · prose · downgraded · silently
HTTP request to bare IP address — common in malicious payloads
references/MAL_OAUTH.md · prose · downgraded · http://127.0.0.1
subprocess execution — runs system commands from Python
scripts/run_health_check_cycle.sh · prose · downgraded · subprocess.run(
Python os.getenv — reads environment variable
src/mal_updater/config.py · prose · downgraded · os.getenv(
Python urllib.request — network access
src/mal_updater/mal_client.py · prose · downgraded · urllib.request
Python shutil file operation — copies/moves/deletes files
tests/test_health_check_cycle_script.py · prose · downgraded · shutil.copytree(
Python os.environ.get — reads environment variable
tests/test_health_check_cycle_script.py · prose · downgraded · os.environ.get(
Why the tier is capped
Execution sink present in raw bytes (Hard Floor: class B/D). Final tier capped at Caution — cannot be lifted by any downgrade, example-payload opt-in, or allowlist.
Permissions & capabilities
No declared permissions — minimal attack surface.
Is this flag fair?
Thanks — recorded.