{"status":"pass","category":"SEC","severity":"high","evidence":["Remediation bestaetigt: assert_host_allowed() loest NICHT mehr auf — nur Schema-Check + Allow-List (src/swiss_environment_mcp/api_client.py:149-166), mit explizitem Kommentar dass die IP-/SSRF-Pruefung bewusst einmalig im _PinnedTransport erfolgt (api_client.py:154-159).","Genau EINE DNS-Resolution pro Request: _PinnedTransport.handle_async_request ruft _resolve_and_check einmal und pinnt die IP (api_client.py:178-187).","Original-Hostname erhalten fuer TLS: request.extensions['sni_hostname']=host gesetzt; nur das Connect-Ziel wird auf die gepinnte IP umgeschrieben (copy_with(host=ip)); Host-Header (beim Request-Bau gesetzt) bleibt der Original-Hostname (api_client.py:183-186). Cert-Verification laeuft damit gegen den Hostnamen, verify NICHT deaktiviert.","Neuer Test test_assert_host_allowed_does_not_resolve verifiziert calls==0 getaddrinfo im Egress-Guard (tests/test_unit.py:223-233).","Neuer Test test_pinned_transport_resolves_once verifiziert exakt eine Resolution (calls==1) UND dass das Connect-Ziel die gepinnte IP ist (captured host=='185.27.134.1') (tests/test_unit.py:236-259).","Re-Run gruen: 9 passed (dns/pinned/assert_host/egress/transport/resolve)."],"gaps":["Kein Live-Rebinding-Integrationstest mit echtem DNS-Mock-Server (bekannte Grenze des Katalogs, per Mock-Pattern abgedeckt)."],"evaluator_notes":"Behebt den vorigen partial-Status (doppelte DNS-Resolution, kein 1-Call-Test) vollstaendig. Beide Pass-Kriterien fuer evidence_required=2 (einmalige Resolution + Pinning; Host/SNI erhalten + Test 1 DNS-Call) sind nun erfuellt und getestet. Statuswechsel partial -> pass."}
