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 15 — 77,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+10criticalRust 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()+8criticalRust 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")+8criticalRust 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")+8warningRust 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");+3warningRust 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()...+3warningRust 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);
}+3warningPython 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,+4warningRust 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...+5warningExtremely 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
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