- analysis/·source-index·state.json 을 final/document.md 제2부·제3부로 접었다. SSOT 는 하나다 - 파일럿 — commit-ambiguity-as-a-result 를 새 기준으로 재선별. 후보 14 → 글감 5 (PROMOTE 5 · MERGE_INTO 3 · KEEP_IN_SSOT 4 · 보류 2). 기록 5건을 다시 썼고 그림 1개를 techviz 로 만들었다 - 재선별이 잡은 것: 제1부 §6.2·§11.1 이 자기 §13.2 와 어긋나 있었다(레인을 안 돌렸다 vs 돌렸다) — 정정. 이미 답이 나와 있던 Question 을 HEAD 재실행 질문으로 다시 세웠다. Concept 이 인용한 코드가 SSOT 에 없어 뺐다 - candidateScope·sourceRepository 기록. 나머지 43개 주제는 재선별 대기(PENDING 905) Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
5.5 KiB
kind, slug, title, topic, project, status, sourceRevision, rootTreeNode, evidenceCapturedOn, body, assets, evidence, source
| kind | slug | title | topic | project | status | sourceRevision | rootTreeNode | evidenceCapturedOn | body | assets | evidence | source | |||||||
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| CASE | ipv4-only-mask-passes-every-other-form | 마스킹이 IPv4 만 알아서 검사가 나머지 주소 형태를 전부 통과시킨다 | security-policy-enforcement | clean-architecture-backend-template | 게시 전 | 21234e38cdb9a926cbc92bb97a2aee2e4a7d2916 | case:ipv4-only-mask-passes-every-other-form | 2026-09-01 | case-ipv4-only-mask-passes-every-other-form.body.md |
|
|
|
마스킹이 IPv4 만 알아서 검사가 나머지 주소 형태를 전부 통과시킨다
주소 마스킹이 정규식 하나만 갖고 맞지 않는 입력을 그대로 돌려준다. 스냅숏 생성자는 마스킹 결과가 입력과 같으면 이미 마스킹된 것으로 판정한다. 두 규칙이 겹쳐 IPv6 주소와 호스트 이름과 소켓 경로가 전부 통과한다.
관계
- 위험한 조합은 정책이 아니라 생성자가 거부하게 만든다 같은 계열의 규칙이다.
- 붉은 test를 제품 결함으로 잘못 읽었다 같은 사이클이 철회한 P1 의 원인과 같은 계열의 가정이다.
- 문서끼리의 일치는 아무것도 증명하지 않는다 검사의 방향을 다루는 규칙이다.
문제
진단 표면은 노출이 위험한 자리다.
편집기 자바독이 그 이유를 적는다. 이 표면이 정말로 유용하기 때문에 위험하다는 것이다. 모든 소켓의 지역·원격 주소와 각 연결의 보안 세부와 호출별 상태를 담고 있으며, 종점이 존재하는 순간 그 전체가 인가 실수 하나 거리에 있다는 것이다.
그래서 주소를 버리지 않고 가린다. 운영자가 두 서브채널을 구별할 수 있어야 하기 때문이다.
그리고 스냅숏이 스스로 검사한다. 마스킹되지 않은 주소를 담은 스냅숏은 만들 수 없다.
결론
그 검사의 범위가 좁다.
마스킹 함수는 IPv4 와 선택적 포트를 인식하는 정규식 하나만 갖는다. 맞지 않는 입력은 치환이 일어나지 않아 입력 그대로 반환된다.
그리고 스냅숏 생성자의 검사는 마스킹 결과가 입력과 같으면 이미 마스킹된 것으로 판정한다.
두 규칙이 겹치면 IPv4 가 아닌 주소는 전부 검사를 통과한다.
IPv6 주소가 통과한다. 파드 DNS 이름이 통과한다. 유닉스 소켓 경로도 통과한다. 마지막 것은 호스트 파일 시스템 경로다.
이 플랫폼이 겨냥하는 배포 형태를 보면 도달 가능성이 낮지 않다. 같은 가족의 탐색 리프 전체가 쿠버네티스 라우팅을 주제로 하고, 헤드리스 레코드의 엔드포인트는 파드 DNS 이름이며 이중 스택 군집에서는 IPv6 주소다.
편집기가 막으려 한 것이 정확히 그것이다. 피어 주소를 게시하는 진단 종점은 모든 소속의 연결을 게시한다는 문장이다.
테스트가 이것을 볼 수 없다. 주소 리터럴이 전부 IPv4 다.
같은 사이클이 철회한 최상위 판정의 원인도 같은 계열이었다. 이중 스택 호스트 이름이 픽스처에서 다른 주소로 풀린 것이다. 두 사례의 공통점은 주소 표현의 다양성이 아니라 판정의 방향이다. 둘 다 모르는 형태를 안전한 쪽이 아니라 통과 쪽으로 접었다.
검증 환경
OpenJDK : 21.0.12 확인 방식 : 정규식과 생성자 검사 대조, 테스트의 주소 리터럴 확인 소스 수정 : x
재현 조건
원문은 document-detail 의 final/document.md#a20-grpc-advanced-diagnostics 에 있다.
- 마스킹 함수의 정규식과 치환을 읽는다.
- 맞지 않는 입력에서 무엇이 반환되는지 확인한다.
- 스냅숏 생성자의 마스킹 검사 조건을 읽는다.
- 두 규칙을 겹쳐 어떤 형태가 통과하는지 나열한다.
- 테스트의 주소 리터럴을 전부 확인한다.
본문
maskAddress 는 IPv4 패턴 하나만 갖고 맞지 않는 입력을 그대로 돌려준다. 그리고 스냅숏 생성자는 마스킹 결과가 입력과 같으면 이미 마스킹된 것으로 판정한다.
maskAddress 가 가진 패턴
:::evidence key="ipv4-only-mask-passes-every-other-form" alt="분석 문서 final/document.md#a20-grpc-advanced-diagnostics 에서 이 기록의 근거 절을 그대로 잘라낸 15줄. 코드베이스를 측정한 것이 아니라 원본 판정이 무엇을 적었는지를 보여 준다." caption="final/document.md#a20-grpc-advanced-diagnostics 발췌 — 15줄" zoom="true" :::
두 규칙이 겹치면 나머지가 전부 통과한다
IPv6 주소·파드 DNS 이름·유닉스 소켓 경로가 검사를 지난다. 이 플랫폼이 겨냥하는 배포가 쿠버네티스이고 헤드리스 레코드의 엔드포인트가 DNS 이름이므로 도달 가능한 형태다.
테스트의 주소 리터럴은 전부 IPv4 다
같은 사이클이 철회한 P1 의 원인도 듀얼스택 호스트명이었다 — 판정이 모르는 형태를 통과 쪽으로 접는 같은 계열이다.
확인하지 못한 것
IPv6 주소로 스냅숏을 만들어 통과를 재현하지 않았다. 이 리프는 고급 가족이라 배선 경로가 없다.