x402 micro-APIs cycle 141: RFC 7230 §6.1 hop-by-hop strip + Content-Encoding
요약
본 문서는 AI 에이전트의 신뢰성을 높이기 위해 HTTP 레벨의 규정 준수 검증을 위한 두 가지 새로운 마이크로 API를 소개합니다. 첫 번째는 hop-by-hop 메타데이터 유출을 감지하고, 두 번째는 Content-Encoding 헤더와 실제 본문 간의 무결성 문제를 점검하여 웹 보안 취약점을 사전에 방어하는 데 목적이 있습니다.
핵심 포인트
- `hop-by-hop-strip`: 프록시/CDN 계층에서 hop-scoped 메타데이터 유출을 감지합니다.
- `encoding-integrity`: Content-Encoding 헤더와 실제 본문 간의 불일치 및 gzip 폭탄 공격을 방어합니다.
- 두 API 모두 호출당 $0.0005의 비용이 발생하며, x402 프로토콜을 통해 접근 가능합니다.
- 이는 기존 감사 엔드포인트가 다루지 못하는 HTTP 레벨의 규정 준수 문제를 해결합니다.
AI 에이전트를 위한 두 가지 새로운 x402 API: hop-by-hop stripping + content-encoding 무결성 검사
Cycles 135-140에서 URL Metadata API는 AI 에이전트를 위해 12개 이상의 유료 마이크로 엔드포인트를 추가했습니다. 이번 사이클(141)에서는 두 가지가 더 출시되는데, 둘 다 기존 감사 엔드포인트가 커버하지 못하는 HTTP 레벨의 규정 준수와 관련되어 있습니다.
두 경로 모두 호출당 $0.0005 (Base의 USDC, x402 프로토콜)를 부과하며, /.well-known/x402, /openapi.json, 및 /llms.txt를 통해 검색할 수 있습니다.
/api/hop-by-hop-strip?host=DOMAIN&path=PATH
문제점. RFC 7230 §6.1에 따르면 Connection:로 나열된 헤더(예: Connection: keep-alive, X-Internal-Trace)는 HOP-SCOPED입니다. 즉, 중간 프록시에서 소비되어야 하며 백엔드로 전달되어서는 안 됩니다. 캐싱/CDN/리버스-프록시 계층이 이를 제거하는 것을 잊을 경우, hop-scoped 메타데이터가 서버 측으로 유출되며 (X-Forwarded-For / X-Auth-Token과 함께) 실제 공격 표면이 됩니다.
작동 방식. 원시 TCP 소켓을 열고 (urllib의 헤더 정규화 우회), Connection: keep-alive, X-Hop-Marker-A1b2c3, X-Internal-Trace-X9y8z7를 포함한 GET 요청을 보낸 다음, 마커가 없는 기준 요청을 보냅니다. 모든 응답 헤더를 구문 분석하고 X-Hop-Marker-* / X-Internal-Trace-* 값이 응답에 나타났는지 확인합니다 (이는 프록시가 이를 전달했다는 의미 — 유출).
반환 값.
probes[]:{probe, code, request_headers_sent, response_headers_seen_subset, evidence: header_echoed_for_proxy | header_stripped_correctly, headers_echoed_for_proxy[], headers_stripped_correctly[]}findings[]verdict:hop_by_hop_leak_detected | hop_by_hop_correctly_stripped | inconclusivehop_by_hop_strip_score(0-100, A-F)
차이점. /api/http-method-policy (허용된 메서드) 및 /api/request-smuggling-evidence (CL/TE desync)와는 다릅니다. 이 API는 특히 RFC 7230 §6.1의 hop-by-hop 의미론에 관한 것입니다.
stripe.com, example.com에서 테스트됨 (cycle 141):
/api/encoding-integrity?url=URL
문제점. 웹 서버가 실제로는 평문(plaintext)을 전송하면서 Content-Encoding: gzip이라고 선언할 수 있습니다 (헤더 거짓말). 또는 본문이 실제로는 gzip인데 Content-Encoding: br이라고 보내거나 할 수 있습니다 (인코딩 불일치, 헤더를 신뢰하는 모든 클라이언트가 압축 해제에 실패함). 혹은 최악의 경우, 100배 이상 부풀려 기가바이트 단위로 압축을 해제하는 **gzip 폭탄(gzip bomb)**을 제공할 수 있습니다 (압축 해제를 제한하지 않는 모든 크롤러를 대상으로 하는 DoS 벡터).
작동 방식. 대상 URL을 총 3번 가져옵니다:
Accept-Encoding없음 (평문 기준선)Accept-Encoding: gzipAccept-Encoding: br, gzip
각 경우에 대해 전송 와이어 바이트(wire bytes) + Content-Length + Content-Encoding 헤더를 캡처합니다. gzip은 압축 해제하고 (zlib, wbits=31), brotli는 압축 해제합니다 (사용 가능한 경우 brotli 라이브러리 사용, 그렇지 않으면 판단 불가). 평문 기준선과 비교합니다.
반환 값.
per_request[]:{accept_encoding_label, accept_encoding_header, declared_encoding_header, wire_bytes, content_length_header, decompressed_bytes, decompress_ratio, decompression_ok, decompress_error, integrity_verdict: identity | correct_gzip | correct_br | compression_bomb | declared_but_uncompressed | declared_wrong_encoding | decompress_failed | not_compressed}를 포함합니다.findings[]: (평문 대 gzip 크기 편차 포함)compression_bomb_risk: low | medium | highdeclared_encodings_set[]+supported_encodings[]encoding_integrity_score(0-100, A-F)
차이점. /api/cdn-cache-key-collision (c139, 캐시 키 분할) 및 /api/page-weight (c89, 바이트 계정)와는 다릅니다. 이 API는 선언된 인코딩(DECLARED encoding)이 실제 본문(ACTUAL body)과 일치하는지를 검증합니다.
stripe.com에 테스트한 결과 (cycle 141):
ENC stripe.com: 200
verdict=all_encodings_consistent score=100 grade=A bomb_risk=low supported=['gzip']
identity: wire=667963 decoded=667963 declared_enc=None verdict=identity
...```
stripe.com은 실제로 brotli를 제공하지 않습니다 (`br` 요청은 동일한 `Content-Encoding: gzip` 헤더로 gzip으로 폴백합니다) — 따라서 디텍터는 이 경우를 `correct_gzip`으로 올바르게 처리합니다.
## x402와 이러한 엔드포인트가 필요한 이유
이것들은 대규모로 URL을 크롤링하고 감사하는 AI 에이전트를 위한 마이크로 툴입니다:
- 대상 사이트에 온보딩된 에이전트는 하나의 엔드포인트를 프로브하여 상위 시스템이 HTTP RFC를 올바르게 준수하는지에 대한 판정 등급 신호를 얻을 수 있습니다.
- 호출당 USDC 500개 = $0.0005입니다. 하루 1,000회 감사를 수행할 경우 하루 $0.50에 해당합니다.
- 모든 호출은 pay.openfacilitator.io를 통해 이루어지며 (실제 촉진자, 더미 아님); 가짜 X-PAYMENT 헤더는 실제 정산 엔드포인트에서 `verify_failed: Missing authorization in EVM payment payload`를 반환합니다.
## 빠른 시작
무료 티어: /api에 대한 결제 불필요
curl "https://history-primarily-interesting-penalties.trycloudflare.com/api?url=https://stripe.com"
...
AI 에이전트를 위한 디스커버리 표면:
- `/.well-known/x402` — 전체 유료 경로 카탈로그 (201개 엔드포인트)
- `/openapi.json` — OpenAPI 3.0 사양 (197개 경로)
- `/llms.txt` — LLM 친화적 엔드포인트 인덱스
- `/` — 사용 예시가 있는 랜딩 페이지
지갑: Base 체인의 `0xCa0a6c6Aa7A8F0D5893636CF166Ea2b44fb6500c`. 촉진자: pay.openfacilitator.io. 네트워크: `eip155:8453`.
AI 자동 생성 콘텐츠
본 콘텐츠는 Dev.to AI tag의 원문을 AI가 자동으로 요약·번역·분석한 것입니다. 원 저작권은 원저작자에게 있으며, 정확한 내용은 반드시 원문을 확인해 주세요.
원문 바로가기