github.com / open-jarvis
open-jarvis/ OpenJarvis
Python·2133 files·commit 4b5ad51·scanned 8d ago·cached ✓
25/100
LOW RISK
Minor findings consistent with the project type. Nothing reachable from install hooks.
score capped at 25 — 9,344 stars — findings likely legitimate code patterns
verdict accurate?
Partial architecture graph
Desktop app detected
threat-state: lowlive
FINDINGS ░▒▓
warningRust unsafe blockunsafe blocks bypass Rust's memory safety guarantees. Malware uses them for raw pointer manipulation, shellcode injection, or calling dangerous foreign functions.frontend/src-tauri/src/lib.rs
extern "C" fn did_finish(_: &Object, _: Sel, wv: *mut Object, _nav: *mut Object) {
unsafe {
force_transparent(wv);
}+3criticalRust process Command usagestd::process::Command can execute arbitrary shell commands. Malware uses it to drop payloads, exfiltrate data, or establish persistence.frontend/src-tauri/src/lib.rs
use std::process::Command;
if let Ok(output) = Command::new("sysctl").args(["-n", "hw.memsize"]).output() {
if let Ok(s) = String::from_utf8(output.stdout) {
...+8criticalRust process Command usagestd::process::Command can execute arbitrary shell commands. Malware uses it to drop payloads, exfiltrate data, or establish persistence.rust/crates/openjarvis-core/src/hardware.rs
fn run_cmd(args: &[&str]) -> String {
Command::new(args[0])
.args(&args[1..])
.output()+8criticalRust process Command usagestd::process::Command can execute arbitrary shell commands. Malware uses it to drop payloads, exfiltrate data, or establish persistence.rust/crates/openjarvis-tools/src/builtin/git_tools.rs
fn run_git(args: &[&str], cwd: Option<&str>) -> Result<String, String> {
let mut cmd = Command::new("git");
cmd.args(args);
if let Some(dir) = cwd {+8criticalRemote script piped into a shellA shell script downloads remote content and executes it directly (e.g. `curl … | bash`). The payload is never stored or reviewable and can change server-side — a classic malware/backdoor install pattern.scripts/install/install-rust.sh
echo "install-rust.sh: installing Rust toolchain via rustup..."
curl --proto '=https' --tlsv1.2 -sSf https://sh.rustup.rs | sh -s -- -y --default-toolchain stable
if [[ -d "$HOME/.cargo/bin" ]]; then+10criticalRemote script piped into a shellA shell script downloads remote content and executes it directly (e.g. `curl … | bash`). The payload is never stored or reviewable and can change server-side — a classic malware/backdoor install pattern.scripts/install/install.sh
#!/usr/bin/env bash # install.sh — OpenJarvis curl-pipe-bash installer. # # Usage:+10
criticalRemote script piped into a shellA shell script downloads remote content and executes it directly (e.g. `curl … | bash`). The payload is never stored or reviewable and can change server-side — a classic malware/backdoor install pattern.scripts/install/jarvis-wrapper.sh
echo "jarvis: venv not found at $VENV" >&2
echo "Re-run the installer: curl -fsSL https://open-jarvis.github.io/OpenJarvis/install.sh | bash" >&2
exit 1
fi+10warningPython 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/openjarvis/agents/hybrid/mini_swe_agent.py
url = f"https://github.com/{repo}.git"
subprocess.run(
["git", "clone", "--quiet", url, str(dest)],
check=True,+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/openjarvis/agents/hybrid/skillorchestra/tools.py
Mirrors the original worker prompt and ``subprocess.run(['python', ...],
timeout=60)`` verbatim. Execution failures yield empty ``exec_result``
rather than raising — the orchestrator lear...+4criticalPython dynamic code executioneval(), exec() or compile() on untrusted input can execute arbitrary code. Common in Python malware for running obfuscated payloads.src/openjarvis/agents/rlm_repl.py
with redirect_stdout(stdout_buf), redirect_stderr(stderr_buf):
exec(code, self._namespace) # noqa: S102
except Exception as exc:
error_msg = f"{type(ex...+7warningPython 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/openjarvis/cli/_screen.py
script = _PS_CAPTURE.replace("{path}", path.replace("\\", "/"))
proc = subprocess.run(
["powershell", "-NoProfile", "-NonInteractive", "-Command", script],
capt...+4criticaleval() usage detectedeval() executes arbitrary code and is commonly used in malware to run obfuscated payloads fetched from remote servers.src/openjarvis/core/config.py
fld_type = eval(fld_type, vars(_cfg_mod)) # noqa: S307
if i == len(parts) - 1:+8criticalPython dynamic code executioneval(), exec() or compile() on untrusted input can execute arbitrary code. Common in Python malware for running obfuscated payloads.src/openjarvis/core/config.py
fld_type = eval(fld_type, vars(_cfg_mod)) # noqa: S307
if i == len(parts) - 1:+7criticaleval() usage detectedeval() executes arbitrary code and is commonly used in malware to run obfuscated payloads fetched from remote servers.src/openjarvis/evals/datasets/daily_digest.py
"date": "2025-10-17 (Friday)",
"calendar": "09:00 - Change advisory board (1h)\n11:00 - DR test planning (1h)\n14:00 - Compliance tool eval (1h)",
"todos": "- Prepare DR test r...+8criticalPython dynamic code executioneval(), exec() or compile() on untrusted input can execute arbitrary code. Common in Python malware for running obfuscated payloads.src/openjarvis/evals/datasets/daily_digest.py
"date": "2025-10-17 (Friday)",
"calendar": "09:00 - Change advisory board (1h)\n11:00 - DR test planning (1h)\n14:00 - Compliance tool eval (1h)",
"todos": "- Prepare DR test r...+7criticaleval() usage detectedeval() executes arbitrary code and is commonly used in malware to run obfuscated payloads fetched from remote servers.src/openjarvis/evals/execution/webchorearena_env.py
try:
target_url = eval(func_expr) # noqa: S307
except Exception as exc:
LOGGER.warning("Failed to eval URL func: %s", exc)+8warningRust wallet/crypto code with network activityCode handling private keys or signing and also making network requests may be exfiltrating secrets or sending funds to an attacker.frontend/src-tauri/src/lib.rs
/// /// `exit_code` is `None` when the process was terminated by a signal with /// no exit code (rendered as "unknown" rather than a misleading -1). fn format_uv_sync_failure(root: &std::path::Path, e...+5
warningHardcoded IP address in network callFetching data from hardcoded IP addresses instead of domain names is suspicious and may indicate C2 communication.src/openjarvis/core/config.py
"http://localhost:5174", "http://127.0.0.1:3000", "http://127.0.0.1:5173", "http://127.0.0.1:5174",+5
warningSSH/credential path accessAccessing .ssh, .aws/credentials, or .env files to steal authentication credentials.rust/crates/openjarvis-security/src/file_policy.rs
".secret",
"id_rsa",
"id_ed25519",
".htpasswd",+5warningSSH/credential path accessAccessing .ssh, .aws/credentials, or .env files to steal authentication credentials.rust/crates/openjarvis-tools/src/builtin/file_tools.rs
let result = tool
.execute(&serde_json::json!({"path": "id_rsa", "content": "secret"}))
.unwrap();
assert!(!result.success);+5warningSSH/credential path accessAccessing .ssh, .aws/credentials, or .env files to steal authentication credentials.src/openjarvis/sandbox/mount_security.py
".ssh",
".gnupg",
".env",
"credentials",+5warningExtremely long lines (>1000 chars)Very long lines in source files (not minified bundles) can hide malicious code.src/openjarvis/agents/hybrid/toolorchestra.py+4
warningExtremely long lines (>1000 chars)Very long lines in source files (not minified bundles) can hide malicious code.src/openjarvis/evals/datasets/coding_task.py+4
warningHigh-entropy string literalsFound 4 long strings with high Shannon entropy. This is common in obfuscated payloads that hide URLs, keys, or bytecode.docs/javascripts/leaderboard.js+3
warningFlattened or dead control flowDetected switch(true), dead if branches, or deeply nested ternaries — patterns used by obfuscators to hide execution order.frontend/src/components/Chat/InputArea.tsx+3
warningFlattened or dead control flowDetected switch(true), dead if branches, or deeply nested ternaries — patterns used by obfuscators to hide execution order.frontend/src/components/Chat/MessageBubble.tsx+3
warningFlattened or dead control flowDetected switch(true), dead if branches, or deeply nested ternaries — patterns used by obfuscators to hide execution order.frontend/src/components/Chat/SystemPanel.tsx+3
warningHigh-entropy string literalsFound 3 long strings with high Shannon entropy. This is common in obfuscated payloads that hide URLs, keys, or bytecode.frontend/src/components/Desktop/AgentsPanel.tsx+3
warningHigh-entropy string literalsFound 5 long strings with high Shannon entropy. This is common in obfuscated payloads that hide URLs, keys, or bytecode.frontend/src/components/ui/button.tsx+3
infoSuspicious file in repoExecutable file (jarvis-service.ps1) in repositorydeploy/windows/jarvis-service.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.
1595 files scanned @ 4b5ad51 | 9/6/2026 | heuristic scan — always review manually
risk by category
code execution25
network & exfiltration10
file system access20
obfuscation15
supply chain6
owasp / injection0
telemetry
files 1595/2133rules hit 33engine v5commit 4b5ad51
github
open-jarvis/OpenJarvis
Personal AI, On Personal Devices
9344
2152
211d
2133 files
1595 scanned(75%)
4b5ad51
architecture░▒▓
entry (1) flagged (188) pkg (494)
894 nodes · 2172 edgesscroll to zoom · click node to jump to finding