CVE-2026-31431 Copy Fail — Linux kernel LPE tester via MCP
Drift inferred · capture-to-capture
No drift recorded — single capability capture; advisories appear once its surface changes.
transport stdio counts 8 tools · 0 res
· 0 prompts
permission surface via code analysis
tools
-
cf_apply_mitigation
-
cf_assess
-
cf_check_target
-
cf_detect_local_wsl
-
cf_exploit_local
-
cf_get_exploit_script
-
cf_run_exploit
-
cf_scan_network
prompt-surface
shipped agent-instruction files + hidden-content / dangerous-code findings —
quoted from the analyzed source
analyzed commit be9a863 · analyzer v33 · 1d ago
danger signals1
- committed secret private key sandraschi-copy-fail-mcp-be9a863/test/docker/keys/id_test_rsa :1
PEM private key block (redacted)
evidence-backed
findings quoted directly from the published source artifact — not inferred
code files: 44
filesystem 7
- fs sandraschi-copy-fail-mcp-be9a863/.tmp_diag.py :9
with open(path, "rb") as f: - fs (weak) sandraschi-copy-fail-mcp-be9a863/scripts/build_payload.py :97
self._fd = os.open(self.path, os.O_RDONLY) - fs (weak) sandraschi-copy-fail-mcp-be9a863/scripts/cua-smoke.py :47
with open(p) as f: - fs (weak) sandraschi-copy-fail-mcp-be9a863/scripts/cua-webapp-test.py :33
from pathlib import Path - fs sandraschi-copy-fail-mcp-be9a863/src/copy_fail_mcp/server.py :85
with open(target_path, "w") as f: - fs sandraschi-copy-fail-mcp-be9a863/src/copy_fail_mcp/ssh_client.py :167
async with sftp.open(remote_path, "w") as f: - fs (weak) sandraschi-copy-fail-mcp-be9a863/tests/test_basic.py :366
with open(path, encoding="utf-8") as f:
shell / exec 2
- shell (weak) sandraschi-copy-fail-mcp-be9a863/scripts/cua-smoke.py :31
import subprocess - shell (weak) sandraschi-copy-fail-mcp-be9a863/scripts/cua-webapp-test.py :27
import subprocess
network 4
- net (weak) sandraschi-copy-fail-mcp-be9a863/scripts/build_payload.py :7
import socket - net (weak) sandraschi-copy-fail-mcp-be9a863/scripts/cua-smoke.py :34
import urllib.error - net (weak) sandraschi-copy-fail-mcp-be9a863/scripts/cua-webapp-test.py :30
import urllib.error - net sandraschi-copy-fail-mcp-be9a863/src/copy_fail_mcp/server.py :159
import socket
tool registrations 8
- cf_get_exploit_script sandraschi-copy-fail-mcp-be9a863/src/copy_fail_mcp/server.py :32
- cf_exploit_local sandraschi-copy-fail-mcp-be9a863/src/copy_fail_mcp/server.py :65
- cf_detect_local_wsl sandraschi-copy-fail-mcp-be9a863/src/copy_fail_mcp/server.py :106
- cf_scan_network sandraschi-copy-fail-mcp-be9a863/src/copy_fail_mcp/server.py :182
- cf_check_target sandraschi-copy-fail-mcp-be9a863/src/copy_fail_mcp/server.py :265
- cf_run_exploit sandraschi-copy-fail-mcp-be9a863/src/copy_fail_mcp/server.py :314
- cf_apply_mitigation sandraschi-copy-fail-mcp-be9a863/src/copy_fail_mcp/server.py :371
- cf_assess sandraschi-copy-fail-mcp-be9a863/src/copy_fail_mcp/server.py :421
declared dependencies 14
- fastmcp@>=3.4.4,<4
- asyncssh@>=2.15.0,<3.0.0
- click@>=8.0.0,<9.0.0
- rich@>=13.0.0,<14.0.0
- ruff@>=0.16.0,<0.17
- pytest@>=7.0.0,<9.0.0
- pytest-asyncio@>=0.20.0,<1.0.0
- tauri-build@2
- tauri@2
- tauri-plugin-shell@2
- tauri-plugin-fs@2
- tauri-plugin-process@2
show 2 more
- serde@1
- serde_json@1