live · scanning repos
Scanrepo
github.com
github.com / rtk-ai

rtk-ai/rtk

Rust·412 files·commit 29f9bb7·scanned 4d ago·cached ✓
15/100
LOW RISK
Minor findings consistent with the project type. Nothing reachable from install hooks.

score capped at 1577,308+ stars — findings likely false positives

verdict accurate?
77,308 stars
Crypto/Web3 project
42% file coverage
threat-state: lowlive

FINDINGS ░▒▓

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/check-installation.sh
    echo "   Install with:"
    echo "   curl -fsSL https://github.com/rtk-ai/rtk/blob/master/install.sh| sh"
    exit 1
fi
+10
criticalRust process Command usagestd::process::Command can execute arbitrary shell commands. Malware uses it to drop payloads, exfiltrate data, or establish persistence.src/cmds/git/git.rs
        assert!(
            Command::new("git")
                .args(["-C", &p, "init", "-q"])
                .status()
+8
criticalRust process Command usagestd::process::Command can execute arbitrary shell commands. Malware uses it to drop payloads, exfiltrate data, or establish persistence.src/cmds/jvm/gradlew_cmd.rs
        if std::path::Path::new(".\\gradlew.bat").exists() {
            Command::new(".\\gradlew.bat")
        } else {
            resolved_command("gradle")
+8
criticalRust process Command usagestd::process::Command can execute arbitrary shell commands. Malware uses it to drop payloads, exfiltrate data, or establish persistence.src/cmds/jvm/mvn_cmd.rs
        if Path::new(".\\mvnw.cmd").exists() {
            Command::new(".\\mvnw.cmd")
        } else {
            resolved_command("mvn")
+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.src/core/tee.rs
        // nosemgrep: unsafe-block
        let previous = unsafe { libc::umask(0o000) };
        let tmpdir = tempfile::tempdir().unwrap();
        let tee_dir = tmpdir.path().join("tee");
+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.src/core/utils.rs
        // nosemgrep: unsafe-block — read-only Win32 APIs, no memory or thread safety risk
        let cp = unsafe {
            let console = windows_sys::Win32::System::Console::GetConsoleOutputCP()...
+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.src/main.rs
    // nosemgrep: unsafe-block
    unsafe {
        libc::signal(libc::SIGPIPE, libc::SIG_DFL);
    }
+3
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.hooks/hermes/rtk-rewrite/__init__.py
        try:
            result = subprocess.run(
                ["rtk", "rewrite", command],
                shell=False,
+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
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.src/core/telemetry.rs
        "custom_toml_filters": enriched.custom_toml_filters,
        // Retention: engagement signals
        "first_seen_days": enriched.first_seen_days,
        "active_days_30d": enriched.active_da...
+5
warningExtremely long lines (>1000 chars)Very long lines in source files (not minified bundles) can hide malicious code.src/cmds/rust/cargo_cmd.rs+4
warningHigh-entropy string literalsFound 6 long strings with high Shannon entropy. This is common in obfuscated payloads that hide URLs, keys, or bytecode.scripts/benchmark/lib/vm.ts+3
warningHigh-entropy string literalsFound 27 long strings with high Shannon entropy. This is common in obfuscated payloads that hide URLs, keys, or bytecode.scripts/benchmark/run.ts+3

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.

174 files scanned @ 29f9bb7 | 8/25/2026 | heuristic scan — always review manually

risk by category
code execution25
network & exfiltration5
file system access0
obfuscation10
supply chain0
owasp / injection0
telemetry
files 174/412rules hit 13engine v5commit 29f9bb7

github

rtk-ai/rtk

CLI proxy that reduces LLM token consumption by 60-90% on common dev commands. Single Rust binary, zero dependencies

Rust
77308
4861
219d
412 files
174 scanned(42%)
29f9bb7

architecture░▒▓

entry (1) flagged (17) pkg (58)
199 nodes · 213 edgesscroll to zoom · click node to jump to finding