live · scanning repos
Scanrepo
github.com
DANGER
malware detected
github.com / multikernel

multikernel/sandlock

Rust·225 files·commit 1f2ea34·scanned 5d ago·cached ✓
70/100
DANGEROUS
Sensitive capability combinations reachable from entry points. Do not run without review.

This repository contains patterns associated with malware. Do NOT run this code.

verdict accurate?
threat-state: dangerouslive

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.crates/sandlock-cli/src/learn.rs
                eprintln!("sandlock learn: timeout after {secs}s, killing process");
                unsafe { libc::kill(child_pid as i32, libc::SIGKILL); }
                // Drain without timeout so...
+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/sandlock-cli/src/main.rs
            // Check supervisor liveness (the process that owns the socket).
            if unsafe { libc::kill(supervisor_pid, 0) } != 0 {
                eprintln!(
                    "sandlock: sa...
+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/sandlock-core/src/checkpoint/capture.rs
pub(crate) fn ptrace_seize(pid: i32) -> io::Result<()> {
    let ret = unsafe {
        libc::ptrace(libc::PTRACE_SEIZE as libc::c_uint, pid, 0, 0)
    };
+3
criticalRust process Command usagestd::process::Command can execute arbitrary shell commands. Malware uses it to drop payloads, exfiltrate data, or establish persistence.crates/sandlock-core/src/checkpoint/capture.rs
    fn ptrace_getregs_captures_program_counter() {
        let mut child = Command::new("sleep")
            .arg("30")
            .spawn()
+8
criticalRust process Command usagestd::process::Command can execute arbitrary shell commands. Malware uses it to drop payloads, exfiltrate data, or establish persistence.crates/sandlock-core/src/freeze.rs
        // ptracing into its TGID is YAMA-allowed under ptrace_scope=1.
        let mut caller = Command::new("/bin/sleep")
            .arg("60")
            .stdin(Stdio::null())
+8
criticalPython dynamic code executioneval(), exec() or compile() on untrusted input can execute arbitrary code. Common in Python malware for running obfuscated payloads.python/src/sandlock/mcp/_builtins.py
    with contextlib.redirect_stdout(buf):
        exec(code)
    return buf.getvalue()
+7
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.python/src/sandlock/mcp/_builtins.py

    result = subprocess.run(
        command,
        shell=True,
+4
criticalRust process Command usagestd::process::Command can execute arbitrary shell commands. Malware uses it to drop payloads, exfiltrate data, or establish persistence.crates/sandlock-core/build.rs
    for cc in ccs {
        let ok = Command::new(cc)
            .args(args)
            .arg("-o")
+8
warningGo unsafe package usageunsafe package bypasses Go's type safety. Malware uses it for memory tricks, pointer casts, and hiding behavior.go/sandbox.go
	"strings"
	"unsafe"
)
+3
warningGo unsafe package usageunsafe package bypasses Go's type safety. Malware uses it for memory tricks, pointer casts, and hiding behavior.go/sandlock_linux.go
	"time"
	"unsafe"

	"github.com/multikernel/sandlock/go/internal/policy"
+3
criticalPython dynamic code executioneval(), exec() or compile() on untrusted input can execute arbitrary code. Common in Python malware for running obfuscated payloads.python/examples/agent_tools.py
    with contextlib.redirect_stdout(buf):
        exec(code)
    return buf.getvalue()
+7
criticalPython dynamic code executioneval(), exec() or compile() on untrusted input can execute arbitrary code. Common in Python malware for running obfuscated payloads.python/examples/web_search_injection_defense.py
        results = json.loads(inputs["data"])
        exec(compile(code, '<planner2>', 'exec'), {'results': results})
    """)
+7
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/sandlock-core/src/credential.rs
    // including one no `--http-auth` rule references. Declaring
    // `--credential X=env:VAR` is the signal that VAR is a secret; stripping
    // only the *referenced* ones would leave the child a...
+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/sandlock-core/src/transparent_proxy/mod.rs
use self::service::AclService;
use self::tls::CertSigner;
use self::upstream::Forwarder;
+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/sandlock-cli/tests/learn_integration.rs
/// HTTPS learn -> run round-trip against a real HTTPS server (example.com).
/// Exercises TLS termination, MITM cert signing, CA injection, and ACL enforcement.
/// - the learned HTTPS path is allowe...
+5
warningSSH/credential path accessAccessing .ssh, .aws/credentials, or .env files to steal authentication credentials.crates/sandlock-cli/src/learn.rs
const PROTECTED_PATHS: &[&[u8]] = &[b"/", b"/root"];
const PROTECTED_CRED_SUFFIXES: &[&[u8]] = &[b"/.ssh", b"/.aws", b"/.kube", b"/.gnupg"];

/// Guarded: write grants are sometimes necessary but warr...
+5
warningHigh-entropy string literalsFound 7 long strings with high Shannon entropy. This is common in obfuscated payloads that hide URLs, keys, or bytecode.python/examples/prompt_injection_defense.py+3
warningHigh-entropy string literalsFound 6 long strings with high Shannon entropy. This is common in obfuscated payloads that hide URLs, keys, or bytecode.python/examples/web_search_injection_defense.py+3
warningHigh-entropy string literalsFound 13 long strings with high Shannon entropy. This is common in obfuscated payloads that hide URLs, keys, or bytecode.python/tests/test_handler_smoke.py+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.

194 files scanned @ 1f2ea34 | 8/19/2026 | heuristic scan — always review manually

risk by category
code execution25
network & exfiltration20
file system access5
obfuscation12
supply chain0
owasp / injection0
telemetry
files 194/225rules hit 20engine v5commit 1f2ea34

github

multikernel/sandlock

The lightest AI sandbox. A process-based sandbox for Linux, no container, no VM, no privilege, no prompt injection

Rust
351
38
164d
225 files
194 scanned(86%)
1f2ea34

architecture░▒▓

entry (0) flagged (76) pkg (163)
355 nodes · 459 edgesscroll to zoom · click node to jump to finding