live · scanning repos
Scanrepo
github.com
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()
+8
criticalRust 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())
+8
criticalRust 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()
+8
warningRust 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();
+3
warningRust 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;
+3
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
warningRust 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?;
+5
warningRust 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>,
+5
warningRust 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...
+5
warningHardcoded 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");
    }
+5
warningHardcoded 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...
+5
warningHardcoded 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...
+5
criticalBrowser 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"
            ));
        }
+10
infoSuspicious file in repoExecutable file (install.ps1) in repositoryscripts/install.ps1+2
infoSuspicious file in repoExecutable file (start-vertex.bat) in repositorystart-vertex.bat+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.

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

Rust
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
LOW (15/100) — RightNow-AI/openfang — ScanRepo