3.1 KiB
3.1 KiB
| phase | agent | agent_version | generated_at | session_id |
|---|---|---|---|---|
| implementation | implementation-advisor | 1 | 2026-06-29T14:30:00+09:00 | 20260629-142115 |
파일 소유권 맵 — 보안 하드닝 b1/b2
| 파일 | 담당 worker | worker id | 변경 유형 | 의존 |
|---|---|---|---|---|
| src/main/java/com/pandoli365/bibimbap/security/SsrfSafeFetcher.java | code-writer | w-h01 | modify | - |
| src/test/java/com/pandoli365/bibimbap/security/SsrfSafeFetcherTest.java | code-writer | w-h01 | modify | SsrfSafeFetcher.java (동일 worker로 묶음) |
| src/main/resources/application.properties | implementation-advisor (직접) | - | modify | - |
concern 기록
b1: DNS 캐시 TTL @PostConstruct 런타임 반영 한계
sun.net.InetAddressCachePolicy는 최초InetAddress조회 시 Security property를 lazy 하게 읽는다.- @PostConstruct 가 첫 DNS 조회 전에 실행되면 정상 반영되나, 다른 빈이 먼저 조회했다면 런타임 반영이 보장되지 않는다.
- 이것은 best-effort 하드닝이다. 결정적 보장이 필요하면 JVM 레벨(
$JAVA_HOME/conf/security/java.security의networkaddress.cache.ttl=30)이 정본. - verification-advisor 는 L3 스모크(실제 앱 기동 후 ttl property 확인)로 반영 여부를 검증해야 한다.
b1: 테스트 전역상태(Security.setProperty) 복원 미적용 결정
Security.setProperty("networkaddress.cache.ttl","30")은 JVM 전역 상태를 바꾼다. 동일 클래스의 다른 SSRF 테스트는resolve()를 stub 으로 주입(TestableFetcher)하거나 IP literal 차단을 검증하므로 차단 판정이 IP 기반이다. TTL 값 변경은 차단 결과를 바꾸지 않는다 → @AfterEach 복원 미적용(불필요한 복잡성 회피).- jakarta vs javax: pom.xml
spring-boot.version=3.5.14-SNAPSHOT(Jakarta EE 10) 확인 →@jakarta.annotation.PostConstruct정확. javax 교체 불필요.
env: Java 런타임 부재로 advisor 컴파일 검증 불가
- 현재 셸 환경에 JDK 미설치(
/usr/libexec/java_home실패) → advisor 측mvnw compile/LSP 컴파일 점검 불가. - 변경은 FQN(
java.security.Security,@jakarta.annotation.PostConstruct)만 사용하여 import 무변경, 기존 클래스패스 의존만 사용 → 컴파일 가능성 높음. 실제 컴파일·테스트 게이트는 verification-advisor 영역.
b2: @Value 기본값 유지 결정
- 기본값
src/main/resources/static은 변경하지 않는다. - 근거:
GameUploadControllerSecurityTest가@TempDir + ReflectionTestUtils.setField로 경로를 격리하므로 기본값과 무관하지만, 기본값을 홈경로로 바꾸면 IDE 로컬 실행 시 명시 설정 없이 홈 디렉토리에 파일이 생성되는 부작용이 있다. application.properties 명시 설정으로만 오버라이드하는 것이 최소 변경·테스트 안전 기준에 부합한다.
worker 계획 주석
- w-h01: SsrfSafeFetcher + 단위테스트 — 파일 간 강한 의존(테스트가 소스를 참조) → 동일 worker로 묶어 순차 처리
- application.properties: 1줄 추가, 단순 — advisor 직접 처리(파일 수 1, 예상 줄수 <5)