mcp-ssh-reloaded@0.7.0
CAUTION· not startedPublisher claims: "MCP server for SSH sessions management." Observed in sandbox: no network, touches nothing outside the project, writes no memory.
Coverage
Not started: dependency install failed; the server itself was not observed.- Tested
- the dependency install step · every file read, file written and host contacted by what ran
- Not tested
- server startup · the tool list · tool behavior
What this means for the label: Caution here covers what ran. The server's tools were not exercised with a real credential, so nothing about their behavior is asserted; the credential summary below says what to do with that.
Before you give it your token
- It will ask for
- no credential variables read in the code
- Where it talks to
- no vendor host named in the code
- What the honeypot saw
- no credential files read · no network
- What we could not test
- server startup · the tool list · tool behavior
Connect it under the guard. Not started: dependency install failed; the server itself was not observed. The code names no credential variable; the guard pins the network to what the honeypot saw and logs every call.
Never paste a credential into a chat, a ticket or a report, including ours. How the guard holds it.
Is [email protected] safe to install?
KillerSkills ran it in the KillerSkills honeypot sandbox (2 scenarios; not started: dependency install failed; the server itself was not observed) on 2026-11-09 and scored it 78/100 (Caution). It is not known to be malicious, but it has behaviour or code a security policy should decide on before install. Notable findings: Privileged sudo command; Privileged sudo command; Privileged sudo command. Summary: no network, touches nothing outside the project, writes no memory.
Behavior trace
Honeypot run · 0 s · 2 scenarios · 0 deviationsStatic findings
logger.debug(f"Executing chmod command: {chmod_cmd}")Fix: Request the narrowest permission that works; replace wildcards with the exact paths or hosts.f"SFTP permission denied, falling back to sudo cat for {remote_path}"Fix: Build commands from fixed arguments; do not interpolate untrusted strings into a shell.# Apply environment variable override for sudo passwordFix: Build commands from fixed arguments; do not interpolate untrusted strings into a shell.print("Attempting to write file with sudo immediately (should fail)...")Fix: Build commands from fixed arguments; do not interpolate untrusted strings into a shell.- sudo -i, sudo -s, sudo su (root shell)Fix: Build commands from fixed arguments; do not interpolate untrusted strings into a shell."""Execute a sudo command using the persistent shell, handling password prompts.Fix: Build commands from fixed arguments; do not interpolate untrusted strings into a shell.sent = command if command.strip().startswith("sudo") else f"sudo {command}"Fix: Build commands from fixed arguments; do not interpolate untrusted strings into a shell."""Read a remote file over SSH using SFTP, with optional sudo fallback.Fix: Build commands from fixed arguments; do not interpolate untrusted strings into a shell."1. Use sudo or run as appropriate user\n"Fix: Build commands from fixed arguments; do not interpolate untrusted strings into a shell.sudo_password=conn.sudo_password if sudo else None,Fix: Build commands from fixed arguments; do not interpolate untrusted strings into a shell."""Write content to a remote file over SSH using SFTP, with optional sudo fallback."""Fix: Build commands from fixed arguments; do not interpolate untrusted strings into a shell."sudo tmux attach-session",Fix: Build commands from fixed arguments; do not interpolate untrusted strings into a shell."""Run a sudo command and drop PTY leftovers from the returned output."""Fix: Build commands from fixed arguments; do not interpolate untrusted strings into a shell.return "", "Could not find session for sudo command", 1Fix: Build commands from fixed arguments; do not interpolate untrusted strings into a shell.app0 = b"JFIF\x00\x01\x01\x00\x00\x01\x00\x01\x00\x00"Fix: Put hosts, commands and strings in plain source. Decoding at runtime looks identical to malware and costs points on its own.f"Permission denied reading {remote_path} and no sudo fallback specified."Fix: Build commands from fixed arguments; do not interpolate untrusted strings into a shell."""Compatibility wrapper around the sudo execution helper."""Fix: Build commands from fixed arguments; do not interpolate untrusted strings into a shell.chmod_cmd = f"sudo chmod {oct(permissions)[2:]} {shlex.quote(remote_path)}"Fix: Request the narrowest permission that works; replace wildcards with the exact paths or hosts.logger.debug(f"Executing as sudo for {command_id}")Fix: Build commands from fixed arguments; do not interpolate untrusted strings into a shell."""Read a remote file over SSH. Falls back to sudo cat if permission denied.Fix: Build commands from fixed arguments; do not interpolate untrusted strings into a shell.session_manager, ssh_config, command="rm -rf /tmp/mcp_test_dir", timeout=5Fix: Build commands from fixed arguments; do not interpolate untrusted strings into a shell.sos = b"\x01\x01\x00\x00\x3f\x00"Fix: Put hosts, commands and strings in plain source. Decoding at runtime looks identical to malware and costs points on its own.r"^sudo\s+(-i|su|-s)", # sudo -i, sudo su, sudo -sFix: Build commands from fixed arguments; do not interpolate untrusted strings into a shell.sudo_prefix = "sudo " if use_sudo else ""Fix: Build commands from fixed arguments; do not interpolate untrusted strings into a shell.test_content = "sudo test content"Fix: Build commands from fixed arguments; do not interpolate untrusted strings into a shell.sudo_prefix = "sudo " if use_sudo else ""Fix: Build commands from fixed arguments; do not interpolate untrusted strings into a shell.result = subprocess.run(Fix: Build commands from fixed arguments, never from interpolated strings; prefer an API client over shelling out.result = subprocess.run(Fix: Build commands from fixed arguments, never from interpolated strings; prefer an API client over shelling out.# Check if we need sudoFix: Build commands from fixed arguments; do not interpolate untrusted strings into a shell.# Create a test file that requires sudo to writeFix: Build commands from fixed arguments; do not interpolate untrusted strings into a shell."""Test sudo command with automatic password handling."""Fix: Build commands from fixed arguments; do not interpolate untrusted strings into a shell.result = subprocess.run(Fix: Build commands from fixed arguments, never from interpolated strings; prefer an API client over shelling out.shell.send(b". /tmp/mcp633_test.sh; rm -f /tmp/mcp633_test.sh\n")Fix: Build commands from fixed arguments, never from interpolated strings; prefer an API client over shelling out.# sudo fallback (mocked executor)Fix: Build commands from fixed arguments; do not interpolate untrusted strings into a shell.return subprocess.run(Fix: Build commands from fixed arguments, never from interpolated strings; prefer an API client over shelling out.reason="Skipping sudo test: SSH_TEST_SUDO_PASSWORD not set",Fix: Build commands from fixed arguments; do not interpolate untrusted strings into a shell.command=f"echo '{test_content}' | sudo tee {test_file}",Fix: Build commands from fixed arguments; do not interpolate untrusted strings into a shell.session_manager, ssh_config, "sudo -n whoami", timeout=10Fix: Build commands from fixed arguments; do not interpolate untrusted strings into a shell.assert "sudo failed" in fc.errorFix: Build commands from fixed arguments; do not interpolate untrusted strings into a shell."""Check if we have passwordless sudo access."""Fix: Build commands from fixed arguments; do not interpolate untrusted strings into a shell.result = subprocess.run(Fix: Build commands from fixed arguments, never from interpolated strings; prefer an API client over shelling out.Cost to the agent
Tokens estimated at four characters each. The tool list is re-read by the agent on every turn, so it is the number to compare between servers that do the same job: ranked across the index.
Known vulnerabilities
No advisories in OSV for mcp-ssh-reloaded@0.7.0 as of 5d ago. This is the package itself, not its dependencies.
What would make this Verified
2 points to 80 · weights: behavior 45%, static 25%, prompt 15%, publisher 15%- Unclaimed publisher≈ +8 on the totalClaim amritabot: a verified publisher gets +50 on publisher trust. It is free and usually instant with GitHub sign-in.
- Privileged sudo command≈ +4 on the totalBuild commands from fixed arguments; do not interpolate untrusted strings into a shell.
- File permission modification command≈ +2 on the totalRequest the narrowest permission that works; replace wildcards with the exact paths or hosts.
- Hex-encoded string detected≈ +2 on the totalPut hosts, commands and strings in plain source. Decoding at runtime looks identical to malware and costs points on its own.
- Destructive file system command detected≈ +2 on the totalBuild commands from fixed arguments; do not interpolate untrusted strings into a shell.
- Python subprocess execution detected≈ +2 on the totalBuild commands from fixed arguments, never from interpolated strings; prefer an API client over shelling out.