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.
- when runsrc/serena/repl/repl.py builds code from strings at run time with
execoreval. src/serena/repl/repl.py - 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
- 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")
+4warningPython 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+4warningPython 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,+4criticaleval() 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
+8criticalPython 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(...+7warningDownload 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+4warningFlattened 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
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.
- https://raw.githubusercontent.com/leanprover/elan/master/elan-init.shpaste hostnext to execsrc/solidlsp/language_servers/lean4_language_server.py:38
- https://github.com/leanprover/elanurlnext to execsrc/solidlsp/language_servers/lean4_language_server.py:37
- https://oraios-software.de/serena_usage.phpurlnext to network callsrc/serena/agent.py:804
- https://plugins.jetbrains.com/plugin/28946-serena/urldocs/autogen_docs.py:300
- https://plugins.jetbrains.comurldocs/autogen_docs.py:309
- http://graphml.graphdrawing.org/xmlnsurlscripts/memory_graph.py:38
- http://www.yworks.com/xml/graphmlurlscripts/memory_graph.py:39
- https://docs.anthropic.com/en/docs/build-with-claude/token-countingurlsrc/serena/analytics.py:58
- https://oraios-software.de/serena_news.jsonurlsrc/serena/dashboard/dashboard_api.py:771
- https://oraios-software.de/serena-banners/manifest.phpurlsrc/serena/resources/dashboard/dashboard.js:96
- https://dotnet.microsoft.com/en-us/download/dotneturlsrc/serena/util/dotnet.py:71
- https://dot.net/v1/dotnet-install.ps1urlsrc/serena/util/dotnet.py:104
- https://dot.net/v1/dotnet-install.shurlsrc/serena/util/dotnet.py:125
- https://docs.astral.sh/uv/urlsrc/solidlsp/dependency_provider.py:257 +1 more
- https://github.com/AdaCore/ada_language_server/releases/download/urlsrc/solidlsp/language_servers/ada_language_server.py:97
- https://marketplace.visualstudio.com/_apis/public/gallery/publishers/ms-dynamics-smb/urlsrc/solidlsp/language_servers/al_language_server.py:275
- https://github.com/koalaman/shellcheck/releases/download/vurlsrc/solidlsp/language_servers/bash_language_server.py:37
- https://github.com/1c-syntax/bsl-language-server/releases/download/urlsrc/solidlsp/language_servers/bsl_language_server.py:138
- https://github.com/MaskRay/ccls/wiki/Buildurlsrc/solidlsp/language_servers/ccls_language_server.py:25 +1 more
- https://github.com/MaskRay/cclsurlsrc/solidlsp/language_servers/ccls_language_server.py:28
- https://clang.llvm.org/extra/doxygen/….htmlurlsrc/solidlsp/language_servers/clangd_language_server.py:45
- https://github.com/clangd/clangd/releases/download/urlsrc/solidlsp/language_servers/clangd_language_server.py:239 +3 more
- https://clangd.llvm.org/installationurlsrc/solidlsp/language_servers/clangd_language_server.py:296 +1 more
- https://clojure.org/guides/getting_startedurlsrc/solidlsp/language_servers/clojure_lsp.py:73
- https://github.com/clojure-lsp/clojure-lsp/releases/download/urlsrc/solidlsp/language_servers/clojure_lsp.py:185
- https://github.com/elbywan/crystallineurlsrc/solidlsp/language_servers/crystal_language_server.py:29 +1 more
- https://github.com/cue-lang/cue/releases/download/urlsrc/solidlsp/language_servers/cue_language_server.py:86
- https://storage.googleapis.com/dart-archive/channels/stable/release/urlsrc/solidlsp/language_servers/dart_language_server.py:102 +4 more
- https://docs.deno.com/runtime/getting_started/installation/urlsrc/solidlsp/language_servers/deno_language_server.py:62
- https://download.eclipse.org/jdtls/snapshots/urlsrc/solidlsp/language_servers/eclipse_jdtls.py:122 +1 more
- https://projectlombok.org/downloads/urlsrc/solidlsp/language_servers/eclipse_jdtls.py:124 +1 more
- https://github.com/redhat-developer/vscode-java/releases/download/urlsrc/solidlsp/language_servers/eclipse_jdtls.py:302 +9 more
- https://elixir-lang.org/install.htmlurlsrc/solidlsp/language_servers/elixir_tools/elixir_tools.py:126
- https://github.com/elixir-lang/expert/releases/download/urlsrc/solidlsp/language_servers/elixir_tools/elixir_tools.py:145 +4 more
- https://github.com/EmmyLuaLs/emmylua-analyzer-rust/releases/download/urlsrc/solidlsp/language_servers/emmylua_ls.py:78
- https://github.com/EmmyLuaLs/emmylua-analyzer-rust/releasesurlsrc/solidlsp/language_servers/emmylua_ls.py:97
- https://github.com/WhatsApp/erlang-language-platform/releases/download/urlsrc/solidlsp/language_servers/erlang_language_server.py:75 +1 more
- https://github.com/WhatsApp/erlang-language-platform/releasesurlsrc/solidlsp/language_servers/erlang_language_server.py:93
- https://www.erlang.org/downloadsurlsrc/solidlsp/language_servers/erlang_language_server.py:125
- https://gleam.runurlsrc/solidlsp/language_servers/gleam_language_server.py:6
- https://gleam.run/getting-started/installing/urlsrc/solidlsp/language_servers/gleam_language_server.py:43 +2 more
- https://github.com/godotengine/godot/issuesurlsrc/solidlsp/language_servers/godot_language_server.py:157
- https://github.com/graphql/graphql-language-serviceurlsrc/solidlsp/language_servers/graphql_language_server.py:3 +1 more
- https://www.haskell.org/ghcup/urlsrc/solidlsp/language_servers/haskell_language_server.py:68
- https://open-vsx.org/api/nadako/vshaxe/urlsrc/solidlsp/language_servers/haxe_language_server.py:143
- https://github.com/antaalt/shader-sense/releases/downloadurlsrc/solidlsp/language_servers/hlsl_language_server.py:26
- https://github.com/antaalt/shader-sense/releasesurlsrc/solidlsp/language_servers/hlsl_language_server.py:146
- https://rustup.rsurlsrc/solidlsp/language_servers/hlsl_language_server.py:147
- https://github.com/antaalt/shader-senseurlsrc/solidlsp/language_servers/hlsl_language_server.py:148
- https://julialang.org/downloads/urlsrc/solidlsp/language_servers/julia_server.py:79
architecture░▒▓
entry (8) flagged (16) pkg (336)
736 nodes · 2709 edgesscroll to zoom · click node to jump to finding