live · scanning repos
Scanrepo
github.com
github.com / oraios

oraios/serena

Python·1199 files·commit ede329a·scanned 6h ago·cached ✓
15/100
LOW RISK
Minor findings consistent with the project type. Nothing reachable from install hooks.

score capped at 15 — 30,876+ stars — findings likely false positives

verdict accurate?
30,876 stars
Partial architecture graph
threat-state: lowlive

FINDINGS ░▒▓

what this code does░▒▓

What happens when you open, install or run it, from the findings below.

  1. when runsrc/serena/repl/repl.py builds code from strings at run time with exec or eval. src/serena/repl/repl.py
  2. when runsrc/solidlsp/language_servers/lean4_language_server.py downloads a script from github.com and raw.githubusercontent.com and pipes it to the shell. src/solidlsp/language_servers/lean4_language_server.py:37
  3. when runscripts/build_news_json.py and 2 other files start system processes. scripts/build_news_json.py, scripts/bump_version.py, src/serena/agent.py
warningPython subprocess / os.system usageos.system() or subprocess with shell=True / suspicious commands can execute arbitrary shell commands. Plain pip/package installs are usually benign.scripts/build_news_json.py
        assert user, "HADES_USER environment variable must be set to deploy news.json to Hades"
        os.system(f"scp news/news.json {user}@hades:/var/www/html/oraios-software/serena_news.json")
+4
warningPython subprocess / os.system usageos.system() or subprocess with shell=True / suspicious commands can execute arbitrary shell commands. Plain pip/package installs are usually benign.scripts/bump_version.py
    commit_version_change(new_version, message=f"Release v{new_version}")
    os.system(f"git tag v{new_version}")

    # bump patch and add the suffix for the next dev iteration
+4
warningPython subprocess / os.system usageos.system() or subprocess with shell=True / suspicious commands can execute arbitrary shell commands. Plain pip/package installs are usually benign.src/serena/agent.py
            with LogTime("Project activation command", logger=log):
                p = subprocess.Popen(
                    cmd,
                    shell=True,
+4
criticaleval() usage detectedeval() executes arbitrary code and is commonly used in malware to run obfuscated payloads fetched from remote servers.src/serena/repl/repl.py
        if trailing_expression is not None:
            return eval(compile(ast.Expression(body=trailing_expression), self.SOURCE_NAME, "eval"), namespace)
        return None
+8
criticalPython dynamic code executioneval(), exec() or compile() on untrusted input can execute arbitrary code. Common in Python malware for running obfuscated payloads.src/serena/repl/repl.py
        if statements:
            exec(compile(ast.Module(body=statements, type_ignores=[]), self.SOURCE_NAME, "exec"), namespace)
        if trailing_expression is not None:
            return eval(...
+7
warningDownload piped into a shellA command downloads remote content and pipes it straight into a shell or interpreter (`curl … | bash`, `iwr … | iex`). Nothing is stored for review and the server can change the payload at any time. Common in CI and Dockerfiles, so this is a warning unless the host is hidden.src/solidlsp/language_servers/lean4_language_server.py
curl https://raw.githubusercontent.com/leanprover/elan/master/elan-init.sh -sSf | sh\n
+4
infoSuspicious files are not reachable from entry pointsFlagged files exist but are not imported by any entry point. They may be dead code, tests, or attack payloads triggered by another mechanism.+2
warningFlattened or dead control flowDetected switch(true), dead if branches, or deeply nested ternaries — patterns used by obfuscators to hide execution order.src/serena/resources/dashboard/jquery.min.js+3
warningHigh-entropy string literalsFound 4 long strings with high Shannon entropy. This is common in obfuscated payloads that hide URLs, keys, or bytecode.src/solidlsp/language_servers/bash_language_server.py+3
warningHigh-entropy string literalsFound 6 long strings with high Shannon entropy. This is common in obfuscated payloads that hide URLs, keys, or bytecode.src/solidlsp/language_servers/omnisharp.py+3
warningHigh-entropy string literalsFound 5 long strings with high Shannon entropy. This is common in obfuscated payloads that hide URLs, keys, or bytecode.src/solidlsp/language_servers/pascal_server.py+3
infoSuspicious file in repoExecutable file (gradlew.bat) in repositorytest/resources/repos/kotlin/test_repo/gradlew.bat+2
infoSuspicious file in repoExecutable file (diagnostics_sample.ps1) in repositorytest/resources/repos/powershell/test_repo/diagnostics_sample.ps1+2
infoSuspicious file in repoExecutable file (main.ps1) in repositorytest/resources/repos/powershell/test_repo/main.ps1+2

Scores are heuristics. A “safe” verdict means no known-malicious patterns were found — clever malware can look boring. Wrong verdict? Flag it above; confirmed false positives become regression tests.

601 files scanned @ ede329a | 10/30/2026 | heuristic scan — always review manually

risk by category
code execution25
network & exfiltration0
file system access0
obfuscation15
supply chain8
owasp / injection0
telemetry
files 601/1199rules hit 14engine v10commit ede329a

github

oraios/serena

A powerful MCP toolkit for coding, providing semantic retrieval and editing capabilities - the IDE for your agent

Python
30876
2105
586d
1199 files
601 scanned(50%)
ede329a

network indicators░▒▓

Hosts this code names or would connect to. Top 50 of 176, decoded and call-site destinations first. Informational, not scored.

architecture░▒▓

entry (8) flagged (16) pkg (336)
736 nodes · 2709 edgesscroll to zoom · click node to jump to finding
LOW (15/100) — oraios/serena — ScanRepo