m4
c46ae17084
feat(model-registry): add EndpointPolicy and SafeHttpTransport SSRF defenses
...
EndpointPolicy validates provider base URLs (section 4.3): public https
endpoints with hostname and optional port pass; loopback, private,
link-local, multicast, unspecified, and cloud-metadata addresses are
denied unless the normalized URL exactly matches a registered
development_endpoints entry (no prefix or wildcard matching). URLs with
user info, fragments, or non-http(s) schemes are rejected with the new
stable 422 code ENDPOINT_NOT_ALLOWED.
SafeHttpTransport is the single network egress for adapters: a custom
httpcore NetworkBackend resolves DNS under control on every connect
(retries included), filters denied ranges, and connects directly to the
selected IP, while TLS SNI/certificate checks and the HTTP Host header
keep the original hostname. Redirects and env proxies are disabled;
every request origin re-passes URL-layer validation before any I/O.
2026-07-20 21:25:15 +08:00
..
2026-01-29 17:39:50 +00:00
2026-07-08 18:37:48 +00:00
2026-06-22 13:54:14 +00:00
2026-07-08 18:37:48 +00:00
2026-07-08 18:37:48 +00:00
2026-07-08 18:37:48 +00:00
2026-04-22 18:22:33 +02:00
2026-07-19 12:17:18 +08:00
2026-07-08 18:37:48 +00:00
2026-06-26 22:20:52 +01:00
2026-05-07 16:03:02 +01:00
2026-07-08 18:37:48 +00:00
2026-07-08 18:37:48 +00:00
2026-06-08 18:38:13 +01:00
2026-07-03 11:16:33 +02:00
2026-06-10 18:19:13 +01:00
2026-07-07 08:25:35 +01:00
2026-07-08 18:37:48 +00:00
2026-03-19 17:04:05 +01:00
2026-07-08 18:37:48 +00:00
2026-07-08 18:37:48 +00:00
2026-07-08 18:37:48 +00:00
2026-07-08 18:37:48 +00:00
2026-05-31 14:43:42 +01:00
2026-04-30 18:06:22 +01:00
2026-07-08 18:37:48 +00:00
2026-07-05 05:14:42 +00:00
2026-07-19 12:17:18 +08:00
2026-07-05 04:53:52 +00:00
2026-04-21 21:26:40 +01:00
2026-03-19 17:04:02 +01:00
2026-07-03 11:16:33 +02:00
2026-07-08 18:37:48 +00:00
2026-06-23 08:40:35 +01:00
2026-07-05 05:14:42 +00:00
2026-07-05 05:14:42 +00:00
2026-07-08 18:37:48 +00:00
2026-07-19 12:17:18 +08:00
2026-07-08 18:37:48 +00:00
2026-06-07 00:52:59 +01:00
2026-07-08 18:37:48 +00:00
2026-05-29 00:40:46 +01:00
2026-07-19 12:17:18 +08:00
2026-07-08 18:37:48 +00:00
2026-07-08 18:37:48 +00:00
2026-03-19 17:04:02 +01:00
2026-07-08 18:37:48 +00:00
2026-07-08 18:37:48 +00:00
2026-07-20 21:25:15 +08:00
2026-06-22 13:54:14 +00:00
2026-07-08 18:37:48 +00:00
2026-07-08 18:37:48 +00:00
2026-07-08 18:37:48 +00:00
2026-07-05 05:14:42 +00:00
2026-07-08 18:37:48 +00:00
2026-07-08 18:37:48 +00:00
2026-07-08 18:37:48 +00:00
2026-07-08 18:37:48 +00:00
2026-07-08 18:37:48 +00:00
2026-06-11 00:23:55 +01:00
2026-07-20 20:15:38 +08:00
2026-07-19 12:17:18 +08:00
2026-07-19 12:17:18 +08:00
2026-07-20 20:15:38 +08:00
2026-05-05 12:45:50 +01:00
2026-07-08 18:37:48 +00:00
2026-07-08 18:37:48 +00:00
2026-07-20 20:15:38 +08:00
2026-04-15 14:30:26 +02:00
2026-07-19 12:17:18 +08:00
2026-07-08 18:37:48 +00:00
2026-07-08 18:37:48 +00:00
2026-07-20 21:25:15 +08:00
2026-07-20 20:43:28 +08:00
2026-07-08 18:37:48 +00:00
2026-07-19 12:17:18 +08:00
2026-07-08 18:37:48 +00:00
2026-07-08 18:28:44 +00:00
2026-04-18 15:01:22 +01:00
2026-07-08 18:37:48 +00:00
2026-07-08 18:37:48 +00:00
2026-06-16 09:14:29 +02:00
2026-07-19 12:17:18 +08:00
2026-07-19 12:17:18 +08:00
2026-07-20 20:15:38 +08:00
2026-07-08 18:37:48 +00:00
2026-07-08 18:37:48 +00:00
2026-04-21 21:26:40 +01:00
2026-07-08 18:37:48 +00:00
2026-03-15 21:12:51 +00:00
2026-06-07 00:52:59 +01:00
2026-07-20 20:15:38 +08:00
2026-07-20 21:25:15 +08:00
2026-07-08 18:37:48 +00:00
2026-07-19 12:17:18 +08:00
2026-07-19 12:17:18 +08:00
2026-07-08 18:37:48 +00:00
2026-07-08 18:37:48 +00:00
2026-05-01 13:23:59 +02:00
2026-07-08 18:37:48 +00:00
2026-07-08 18:37:48 +00:00
2026-06-22 13:54:14 +00:00
2026-06-08 17:14:25 +01:00
2026-06-08 17:14:25 +01:00
2026-07-08 18:37:48 +00:00
2026-07-08 18:37:48 +00:00
2026-06-08 17:14:25 +01:00
2026-06-08 17:14:25 +01:00
2026-07-08 18:37:48 +00:00
2026-07-08 18:37:48 +00:00
2026-06-08 17:14:25 +01:00
2026-07-08 18:37:48 +00:00
2026-03-24 18:13:42 +00:00
2026-07-08 18:37:48 +00:00
2026-07-08 18:37:48 +00:00
2026-06-23 14:47:25 +01:00
2026-03-11 00:03:18 +00:00
2026-07-08 18:37:48 +00:00
2026-07-08 18:37:48 +00:00
2026-07-08 18:37:48 +00:00
2026-06-22 13:54:14 +00:00
2026-03-20 19:57:35 +00:00
2026-07-19 12:17:18 +08:00
2026-07-10 17:35:44 +08:00
2026-07-08 18:37:48 +00:00
2026-07-19 12:17:18 +08:00
2026-07-19 12:17:18 +08:00
2026-07-19 12:17:18 +08:00
2026-07-19 12:17:18 +08:00