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...+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/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...+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/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)
};+3criticalRust 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()+8criticalRust 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())+8criticalPython 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()
+7warningPython 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,+4criticalRust 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")+8warningGo 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()
+7criticalPython 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})
""")
+7warningRust 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...+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/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
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