Skip to content

Commit 5ff07a6

Browse files
committed
feat(mcp): ADOPT-1 Slice 2 — extend firmware-text fencing to remaining categories
Extends UNTRUSTED_OUTPUT_TOOLS 36 -> 81, fencing the remaining MCP tools whose output carries adversary-authored firmware/device/network-derived text: android (APK), network (pcap), uefi (volumes/modules/NVRAM), hardware_firmware (blobs/drivers/DTB/HBOM), comparison (firmware diffs), uart (device serial OUTPUT), security (tools that echo extracted certs/scripts/config/policy/yara matches), sbom (component inventory parsed from firmware). Principle: fence raw firmware/adversary-derived text; deliberately leave wairz-computed verdicts, NVD/CVE data, external threat-intel (VT/MB/ThreatFox), CRA-authoring, and control/status tools UNFENCED (the model must act on wairz-authored guidance). The drift-guard test confirms all 81 names exist in the real registry; no per-handler edits (single frozenset source of truth).
1 parent 1fa4b7a commit 5ff07a6

1 file changed

Lines changed: 56 additions & 0 deletions

File tree

backend/app/utils/untrusted.py

Lines changed: 56 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -69,6 +69,62 @@
6969
"list_binary_capabilities",
7070
"analyze_raw_binary",
7171
"detect_rtos",
72+
# --- Slice 2: remaining firmware/adversary-derived-text categories ---
73+
# android — the APK IS the firmware artifact
74+
"analyze_apk",
75+
"list_apk_permissions",
76+
"check_apk_signatures",
77+
"scan_apk_manifest",
78+
"scan_apk_bytecode",
79+
"scan_apk_sast",
80+
# network — pcap contents are attacker-authored traffic
81+
"analyze_network_traffic",
82+
"get_protocol_breakdown",
83+
"identify_insecure_protocols",
84+
"get_dns_queries",
85+
"get_network_conversations",
86+
# uefi — firmware volumes / modules / NVRAM
87+
"list_firmware_volumes",
88+
"list_uefi_modules",
89+
"extract_nvram_variables",
90+
"identify_uefi_module",
91+
"read_uefi_module",
92+
# hardware firmware — blobs / drivers / DTB / HBOM
93+
"lookup_similar_blobs_across_firmwares",
94+
"list_hardware_firmware",
95+
"analyze_hardware_firmware",
96+
"list_firmware_drivers",
97+
"find_unsigned_firmware",
98+
"export_hardware_firmware_hbom",
99+
"extract_dtb",
100+
# comparison — firmware/binary/decompilation diffs
101+
"list_firmware_versions",
102+
"diff_firmware",
103+
"diff_binary",
104+
"diff_decompilation",
105+
# uart — device serial OUTPUT (adversarial for a compromised device)
106+
"uart_read",
107+
"uart_get_transcript",
108+
"uart_send_command",
109+
"uart_send_raw",
110+
# security — tools that echo extracted firmware text (certs, scripts,
111+
# config, policy, yara matches). Pure wairz verdicts / NVD / external
112+
# threat-intel / CRA-authoring tools are deliberately NOT fenced.
113+
"analyze_config_security",
114+
"check_setuid_binaries",
115+
"analyze_init_scripts",
116+
"check_filesystem_permissions",
117+
"analyze_certificate",
118+
"scan_with_yara",
119+
"extract_kernel_config",
120+
"analyze_selinux_policy",
121+
"scan_scripts",
122+
"shellcheck_scan",
123+
"bandit_scan",
124+
# sbom — component inventory (names/versions parsed from firmware)
125+
"generate_sbom",
126+
"get_sbom_components",
127+
"export_sbom",
72128
}
73129
)
74130

0 commit comments

Comments
 (0)