Repository navigation
fix(build): 빌드 툴체인 보안 하한 9건·해석 정합성 2건 정렬 (closes 973, 974, 975, 976, 977, 978, 979, 980, 981, 982, 985) [base: chore/921] - #1003
Merged
Conversation
This was referenced Aug 24, 2026
Sadturtleman
approved these changes
Aug 24, 2026
dependency-audit 이 올린 감사 이슈 14건 중 11건을 처리한다. 보안 권고 9건은 전부 buildscript classpath·빌드 도구 경유이고 APK 산출물에는 없다(releaseRuntimeClasspath 0건 실측). - netty 6종(#975~#980): Firebase App Distribution 5.3.0 → grpc-netty 1.69.1 이 끌어오는 4.1.110.Final. 모듈이 10개를 넘고 서로 버전이 맞아야 해 netty-bom 4.1.137.Final 로 정렬한다. 루트 buildscript classpath 에만 있어(전 프로젝트 실측 53건 전부 여기) 거기서만 건다 — allprojects 하한에 BOM 을 함께 걸면 AGP 의 android-reverse-meta-data usage 가 platform 변형을 못 찾아 :app:processDebugMainManifest 가 깨진다. - commons-lang3 3.18.0(#981)·jose4j 0.9.6(#982)·jdom2 2.0.6.1(#985): 모두 AGP 9.2.1 전이. #921 이 만든 bouncycastle 하한 구조를 SecurityFloor 목록으로 일반화해 함께 싣고, 별도 빌드인 build-logic 에도 같은 하한을 선언한다. - material3(#973): richeditor 1.0.0 이 딸려 보내는 CMP material3 1.11.0-alpha07 이 androidx material3 를 BOM 판 1.4.0 대신 1.5.0-alpha17(alpha)로 끌어올리고 있었다. 쓰는 건 BasicRichTextEditor(foundation 계열)뿐이라 미사용 material3 갈래를 끊어 BOM 을 정본으로 되돌린다. richeditor 1.1.0 도 같은 알파를 물고 있어 업그레이드로는 해소되지 않는다. - coroutines(#974): :konsist 만 konsist 0.17.3 → kotlin-compiler-embeddable 2.0.21 경유로 1.9.0 이었다. 아키텍처 테스트 전용 모듈이지만 감사가 보는 testRuntimeClasspath 를 카탈로그 선언(1.11.0)에 맞춘다. #983·#984(bouncycastle)는 #921 이 이미 1.84 로 해결해 여기서 다루지 않는다. #986(Kotlin Gradle Plugin, GHSA-r937-wjx7-w2jp)은 정식 패치판이 없고(2.4.20-Beta1 만) org.gradle.caching=false 로 공격면이 닫혀 있어 채택하지 않는다 — 근거는 이슈 코멘트에 남긴다. 검증: compileDebugUnitTestKotlin 전 모듈 + testDebugUnitTest + :app:assembleDebug + :konsist:test + :build-logic:test BUILD SUCCESSFUL(FAILED 0). 스크린샷 119개는 CI 동일 docker(amd64) 컨테이너 validateDebugScreenshotTest 4모듈 BUILD SUCCESSFUL — 렌더 변화 0건으로 baseline 재생성 불필요. 리졸브 재실측 잔존 취약 버전 0건. ktlintCheck 위반 0건.
OnlyReadOneBook
force-pushed
the
fix/973
branch
from
August 24, 2026 09:16
1bc1395 to
768dc1c
Compare
Contributor
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
변경 요약
dependency-audit이 올린 감사 이슈 14건(#973~#986) 중 11건을 처리한다. 보안 권고 9건은 전부 buildscript classpath·빌드 도구 경유이고 APK 산출물에는 없다 —releaseRuntimeClasspath검출 0건을 실측했다.보안 하한 (#975~#982, #985)
유입 경로를 전수 리졸브로 특정한 뒤 constraint 로 올렸다. 상류(AGP 9.2.1·Firebase App Distribution 5.3.0)가 아직 취약 버전을 물고 있고 상류 최신판도 패치 버전 미만이다.
io.netty6종grpc-netty1.69.1commons-lang3sdk-common→sdklib→repository→commons-compress1.27.1jose4jbundletool1.18.3jdom2jetifier-processor1.0.0-beta10SecurityFloor목록으로 일반화해 네 품목을 함께 싣는다. 별도 빌드인build-logic에도 같은 하한을 선언한다(netty 는 거기 없다).netty-bom으로 걸었다.grpc-netty가 끌어오는 모듈이 10개를 넘고 서로 버전이 맞아야 한다.allprojects하한에 함께 걸었더니 AGP 의android-reverse-meta-datausage 가 platform 변형을 못 찾아:app:processDebugMainManifest가 깨졌고, 전 프로젝트 실측에서 netty 53건이 전부 루트 buildscript 소속임을 확인해 그쪽 전용으로 좁혔다.해석 정합성 (#973, #974)
richeditor-compose1.0.0 이 딸려 보내는 CMPmaterial3:1.11.0-alpha07이 conflict resolution 으로 이겨 앱 전체가 1.5.0-alpha17(alpha) 로 렌더되고 있었다. 쓰는 심볼은BasicRichTextEditor·rememberRichTextState뿐(foundation 계열)이라 미사용 material3 갈래를 끊어 BOM 을 정본으로 되돌린다.richeditor1.1.0 도 같은 알파를 물고 있어 업그레이드로는 해소되지 않는다.:app은 원래 1.11.0 이 맞고, 어긋난 곳은:konsist의testRuntimeClasspath였다(konsist 0.17.3 →kotlin-compiler-embeddable2.0.21 경유 1.9.0). 아키텍처 테스트 전용 모듈이지만 감사가 보는 configuration 을 카탈로그 선언으로 맞춘다.검증
compileDebugUnitTestKotlin(전 모듈 게이트) +testDebugUnitTest+:app:assembleDebug+:konsist:test+:build-logic:test— BUILD SUCCESSFUL, FAILED 0validateDebugScreenshotTest4모듈(core:ui·app·feature:afternote:presentation·feature:onboarding:presentation) 돌려 BUILD SUCCESSFUL — material3 알파→안정판 전환에도 렌더 변화 0건이라 baseline 재생성은 없다.1.5.0-alpha17검출 0건, build-logic 3품목 상향)ktlintCheck위반 0건리뷰어에게
chore/921(chore(build): 빌드·테스트 클래스패스 bouncycastle 하한을 1.84 로 상향 (closes 921, 983, 984) [base: develop] #922) 스택이다. chore(build): 빌드·테스트 클래스패스 bouncycastle 1.84 상향 — dependency-review critical(GHSA-574f-3g2m-x479) 해소 #921 이 만든 constraint 골격을 확장하므로 같은 블록을 건드린다. chore(build): 빌드·테스트 클래스패스 bouncycastle 하한을 1.84 로 상향 (closes 921, 983, 984) [base: develop] #922 → 이 PR 순으로 머지해야 한다.Closes를 추가했다.2.4.20-Beta1/Beta2/RC만, 정식은 2.4.10까지) 취약점은 빌드 캐시 역직렬화인데 이 레포는gradle.properties:33에org.gradle.caching=false로 공격면이 닫혀 있다. CVSS 도AV:L/AC:H/PR:H다. 프로덕션 툴체인을 Beta 로 올리는 위험이 더 크다고 판단했다 — 근거는 이슈 코멘트에 남겼고, 2.4.20 정식 출시 시 대응한다.feature/mindrecord/presentation/build.gradle.kts는 이준혁(@Sadturtleman) 담당 모듈이지만, 변경은exclude한 줄이다(fix(build): androidx-compose-material3 선언 버전과 Gradle 해석 버전을 일치시킨다 #973 원인이 그 모듈의 richeditor 선언이라 국소적으로 뒀다).require시맨틱이라 추후 상류가 하한 이상을 선언하면 그쪽이 이긴다. chore(build): 툴체인·의존성 버전 최신화 — AGP 9.3.1·Kotlin 2.4.10 및 라이브러리 10건 #667(AGP 등 버전 최신화)과 비차단이다.Closes #973
Closes #974
Closes #975
Closes #976
Closes #977
Closes #978
Closes #979
Closes #980
Closes #981
Closes #982
Closes #985