diff --git a/build.gradle b/build.gradle index 7dfd3df..c2e6d7b 100644 --- a/build.gradle +++ b/build.gradle @@ -75,7 +75,11 @@ dependencies { api 'io.micrometer:micrometer-core:1.5.17' api 'io.micrometer:micrometer-registry-prometheus:1.5.17' - implementation "com.google.code.gson:gson:2.3.1" + // gson 2.3.1 -> 2.8.9 (CVE-2022-25647: 악의적 데이터 역직렬화 시 메모리 고갈/DoS) + // 사용처는 Jsons(new Gson), AlarmService(fromJson), TemplateAdapterErrorMsgHandler(JsonParser), + // alarm/ums/payload/*(@SerializedName) 4곳뿐이고 사용 API 는 그대로 유지된다. + // (new JsonParser().parse() 는 2.8.9 에서 deprecated 이지만 제거되지 않아 동작에 영향 없음) + implementation "com.google.code.gson:gson:2.8.9" //api "com.eactive:mina-core-1.0.10-custom:1.0:custom@jar" api ("org.apache.mina:mina-filter-ssl:1.0.10") { @@ -91,10 +95,23 @@ dependencies { api 'com.nimbusds:nimbus-jose-jwt:9.24.3' - api 'org.bouncycastle:bcprov-jdk15on:1.70' + // BouncyCastle: bcprov-jdk15on 라인은 1.70에서 종료되어 후속 패치가 없다. + // jdk18on 라인으로 전환한다(패키지명·프로바이더명("BC") 동일 → 소스 변경 없음, + // 클래스파일 major 52 / Bundle-RequiredExecutionEnvironment: JavaSE-1.8 이라 JDK 8 유지 가능). + // 사용처: AESCryptoModuleExtension, ARIACryptoModuleExtension + // (BouncyCastleProvider 등록, ARIA 알고리즘, FPE 모드의 FPEParameterSpec) + // 1.70 대비 CVE-2023-33201 / CVE-2024-29857 / CVE-2024-30171 / CVE-2024-30172 해소. + // bcpkix 는 spring-security-jwt 가 전이로 끌고 오던 1.64 를 대체한다(아래 exclude 참조). + api 'org.bouncycastle:bcprov-jdk18on:1.78.1' + api 'org.bouncycastle:bcpkix-jdk18on:1.78.1' api "io.undertow:undertow-servlet:${undertowVersion}" - api 'org.java-websocket:Java-WebSocket:1.3.9' + // Java-WebSocket 1.3.9 -> 1.5.7 (CVE-2020-11050: 구형 암호화 통신/인증서 검증 결함에 의한 MitM) + // 사용 API 는 WebSocketServer 상속(onOpen/onClose/onMessage/onError/onStart)과 + // WebSocket 의 send/close/getRemoteSocketAddress/isOpen, start()/stop(timeout) 뿐이라 + // 1.4.0 의 파괴적 변경(WebSocketImpl.DEBUG 제거, Draft_10/17 제거, connections() -> getConnections()) + // 에 해당하는 사용처가 없다. 1.5.x 는 로깅을 SLF4J 로 하는데 이미 클래스패스에 있다. + api 'org.java-websocket:Java-WebSocket:1.5.7' api 'javax.cache:cache-api:1.1.1' api 'org.apache.ignite:ignite-slf4j:2.14.0' @@ -146,7 +163,13 @@ dependencies { // XmlMapper/JacksonXml* 사용처가 전 소스에 0건이고, 선언 버전(2.13.1)이 // 실제 해석되는 jackson-core/databind(2.12.7)와 마이너 불일치라 승격 시 위험했다. - api "org.springframework.security:spring-security-jwt:1.1.1.RELEASE" + // bcpkix-jdk15on:1.64 -> bcprov-jdk15on:1.64 를 전이로 끌고 온다. + // 위에서 jdk18on 으로 전환했으므로 함께 두면 org.bouncycastle.* 클래스가 중복되고 + // 로딩 순서에 따라 구버전이 선택될 수 있다. 전이를 끊고 jdk18on 만 사용한다. + // (이 exclude 는 발행 POM 에도 기록되어 이 모듈을 참조하는 타 사이트에도 동일 적용된다) + api ("org.springframework.security:spring-security-jwt:1.1.1.RELEASE") { + exclude group: 'org.bouncycastle' + } testRuntimeOnly 'com.h2database:h2:2.1.214' testImplementation 'org.junit.jupiter:junit-jupiter-api:5.8.1'