Files
dap-was-dapms/docs/decisions/README.md
koseokmin d64516b50a Tool inputSchema의 문서 밖 참조와 정규식 폭증을 수신 시점에 차단한다
MCP Java SDK 도입으로 들어온 json-schema-validator는 schema의 $ref가 문서
밖을 가리키면 그 주소로 직접 조회하고, pattern 검증을 백트래킹 기반
java.util.regex로 처리한다. inputSchema는 Tool Service 매니페스트에서 오므로
매니페스트가 서버의 outbound 대상과 CPU 소비를 정할 수 있었다. AGENTS.md의
"outbound 주소는 설정에서만 온다"는 불변식이 이 경로에서 뚫려 있었다.

DefaultJsonSchemaValidator는 SchemaRegistry를 생성자 안에서 만들고 private
final로 들고 있어 정책 주입 지점이 없다. 따라서 SDK 밖에서만 막을 수 있다.

검사는 ToolMetadata의 표준 생성자에 둔다. Portal 매니페스트, local 파일,
Redis snapshot 역직렬화가 모두 이 생성자를 지나므로 우회 경로가 생기지 않는다.
위반은 기존 매니페스트 형식 오류와 같게 다뤄 bundle 단위 실패 격리와
"Redis 실패는 언제나 cache miss" 동작을 그대로 유지한다.

정규식 규칙은 JDK 21.0.11 실측으로 정했다. 통념과 달리 (a+)+는 빠르게 끝나고,
중첩이 아닌 a*a*a*a*a*b와 바깥 반복이 유한한 (.*,){11}P가 폭증했다. 겹치는
문자 집합 판정은 결정 불가능하므로 모양 검사만으로는 부족하고, pattern 필드에
maxLength 동반 선언을 요구해 입력 길이를 묶는 것이 실질적인 상한이 된다.
patternProperties는 key에 길이를 선언할 자리가 없어 사용을 금지한다.

format은 단언되지 않아 format:regex 경로가 실행되지 않는다는 사실도 계약
테스트로 고정했다. SDK 업그레이드로 단언이 켜지면 테스트가 실패한다.

Tool Service는 pattern을 쓰는 필드에 maxLength(<=256)를 선언해야 하므로
매니페스트 수용 조건이 바뀐다. Tool Service 파트와 합의가 필요하다.

근거: ADR-0011, ADR-0012

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
2026-08-18 14:44:01 +09:00

1.8 KiB

Architecture Decision Records

장기 설계 결정은 ADR로 관리한다.

  • Accepted: 확정된 결정
  • Superseded: 후속 ADR로 대체된 결정
  • Rejected: 검토했으나 채택하지 않은 결정

결정이 변경되면 기존 ADR을 삭제하거나 의미를 덮어쓰지 않고 새 ADR에서 대체 관계를 기록한다.

결정 목록

ADR 제목 상태
ADR-0001 Stateless 실행 책임 경계 Accepted
ADR-0002 Agent Builder Tool 노출 제한과 단일 Tool 호출 Accepted
ADR-0003 Builder Tool UID를 시스템 간 식별 키로 사용 Superseded
ADR-0004 300초, Raw Data, unsafe retry 실행 가드레일 Accepted
ADR-0005 표준 MCP Tool name을 실행 식별자로 사용 Accepted
ADR-0006 MCP Server는 인증·인가를 하지 않는다 Accepted
ADR-0007 MCP 배포 하나는 Tool Service 하나만 본다 Superseded
ADR-0008 공유 host의 path를 독립 MCP 배포로 연결 Superseded
ADR-0009 컨테이너가 공개 MCP path를 직접 처리 Accepted
ADR-0010 Tool Server endpoint 목록과 route 매핑의 원천은 Portal Accepted
ADR-0011 Tool inputSchema는 문서 밖을 참조하지 않는다 Accepted
ADR-0012 Tool inputSchema의 정규식에 예산을 둔다 Accepted