github.com / RightNow-AI
RightNow-AI/ openfang
Rust·538 files·commit acf2587·scanned 4d ago·cached ✓
15/100
LOW RISK
Minor findings consistent with the project type. Nothing reachable from install hooks.
score capped at 15 — 18,221+ stars — findings likely false positives
verdict accurate?
18,221 stars
CLI tool detected
threat-state: lowlive
FINDINGS ░▒▓
criticalRust process Command usagestd::process::Command can execute arbitrary shell commands. Malware uses it to drop payloads, exfiltrate data, or establish persistence.crates/openfang-api/src/server.rs
// Use kill -0 to check if process exists without sending a signal
std::process::Command::new("kill")
.args(["-0", &pid.to_string()])
.output()+8criticalRust process Command usagestd::process::Command can execute arbitrary shell commands. Malware uses it to drop payloads, exfiltrate data, or establish persistence.crates/openfang-cli/src/launcher.rs
Some(ref path) if path.exists() => {
match std::process::Command::new(path)
.stdin(std::process::Stdio::null())
.stdout(std::process::Stdio::null())+8criticalRust process Command usagestd::process::Command can execute arbitrary shell commands. Malware uses it to drop payloads, exfiltrate data, or establish persistence.crates/openfang-extensions/src/oauth.rs
{
std::process::Command::new("cmd")
.args(["/C", "start", "", url])
.spawn()+8warningRust unsafe blockunsafe blocks bypass Rust's memory safety guarantees. Malware uses them for raw pointer manipulation, shellcode injection, or calling dangerous foreign functions.crates/openfang-skills/src/config_injection.rs
// SAFETY: the env var name is unique to this test.
unsafe { std::env::set_var(env_name, "from-env") };
let mut vars = HashMap::new();+3warningRust unsafe blockunsafe blocks bypass Rust's memory safety guarantees. Malware uses them for raw pointer manipulation, shellcode injection, or calling dangerous foreign functions.crates/openfang-api/tests/skill_config_api_test.rs
// SAFETY: single-threaded test, env var is unique to this test suite.
unsafe { std::env::remove_var("OPENFANG_TEST_SKILLCFG_GH_TOKEN") };
let server = start_test_server().await;+3warningRust 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.crates/openfang-api/src/server.rs
)
.with_graceful_shutdown(shutdown_signal(api_shutdown))
.await?;
+5warningRust 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.crates/openfang-channels/src/bluesky.rs
client: reqwest::Client,
/// Shutdown signal.
shutdown_tx: Arc<watch::Sender<bool>>,
shutdown_rx: watch::Receiver<bool>,+5warningRust 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.crates/openfang-channels/src/bridge.rs
crate::types::ChannelType::WhatsApp => "whatsapp",
crate::types::ChannelType::Signal => "signal",
crate::types::ChannelType::Matrix => "matrix",
crate::types::ChannelTy...+5warningHardcoded IP address in network callFetching data from hardcoded IP addresses instead of domain names is suspicious and may indicate C2 communication.crates/openfang-runtime/src/drivers/mod.rs
let url = local_provider_url_from_env("ollama").expect("env should resolve");
assert_eq!(url, "http://192.168.1.50:11434/v1");
}
+5warningHardcoded IP address in network callFetching data from hardcoded IP addresses instead of domain names is suspicious and may indicate C2 communication.crates/openfang-runtime/src/host_functions.rs
let no_allow: Vec<String> = vec![];
assert!(web_fetch::check_ssrf("http://127.0.0.1:8080/secret", &no_allow).is_err());
assert!(web_fetch::check_ssrf("http://localhost:3000/api...+5warningHardcoded IP address in network callFetching data from hardcoded IP addresses instead of domain names is suspicious and may indicate C2 communication.crates/openfang-runtime/src/link_understanding.rs
assert!(is_private_url("http://localhost/admin"));
assert!(is_private_url("http://127.0.0.1:8080/secret"));
assert!(is_private_url("http://0.0.0.0/"));
assert!(is_priva...+5criticalBrowser credential store accessAccessing Chrome, Firefox, Edge, or Brave profile directories to steal cookies, passwords, and session tokens.crates/openfang-runtime/src/browser.rs
paths.push(format!(
"{pf}\\BraveSoftware\\Brave-Browser\\Application\\brave.exe"
));
}+10Scores 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.
307 files scanned @ acf2587 | 10/25/2026 | heuristic scan — always review manually
risk by category
code execution25
network & exfiltration25
file system access10
obfuscation0
supply chain4
owasp / injection0
telemetry
files 307/538rules hit 15engine v7commit acf2587
github
RightNow-AI/openfang
Open-source Agent Operating System
18221
2285
247d
538 files
307 scanned(57%)
acf2587
architecture░▒▓
entry (0) flagged (70) pkg (265)
556 nodes · 1168 edgesscroll to zoom · click node to jump to finding