Skip to content

릴리스 PR 의 dependency-review 가 의존성 903건 전량을 신규 도입으로 오탐 — main 스냅샷 미제출 #1063

Closed

Description

@1hyok

📜 Overview (Required)

dependency-submission.yml 의 신뢰된 제출 job 이 push: branches: [develop] 로 한정돼 있어 main 에는 dependency snapshot 이 한 번도 제출된 적이 없다 (gh run list --workflow dependency-submission.yml --branch main → 0건). 그래서 릴리스 PR(develop → main)의 Review dependency changes 는 base 를 빈 것으로 보고 develop 의존성 전량을 added 로 계산하고, 그 안에 섞인 기존 취약점이 릴리스 PR 탓으로 걸린다.

실측 — #1025 실패 런 (25a8f31b2...efbb1256c)

gh api "repos/Afternote/Afternote-FE/dependency-graph/compare/25a8f31b2...efbb1256c"
항목 값
added 903
removed 1 (ScaCap/action-ktlint@master)
develop 스냅샷의 고유 패키지 수 903 — added 와 정확히 일치 = base 가 비었다는 증거
그중 high 이상 취약 8건 (netty 구버전) → 체크 실패

#1009 와 같은 구조가 correlator 가 아니라 ref 를 바꿔 재현된 것이다. develop base PR 은 base·head 스냅샷이 모두 존재해 드러나지 않고, 릴리스 때만 터진다.

📌 Child Issue(Optional)

No response

📍 Note (Optional)

수정 방향

함께 볼 것

Activity

  1. self-assigned this
    on Aug 24, 2026
  2. reopened this on Aug 27, 2026
  3. 1hyok commented on Aug 27, 2026

    @1hyok
    CollaboratorAuthor

    PR #1182의 자동 제출 패치는 develop에는 반영됐지만 아직 main에는 도달하지 않았습니다.

    PR #1273(main 워크플로 Action SHA 고정)의 Dependency Review에서 같은 부트스트랩 문제가 재현됐습니다.

    • base main SHA fcef8ceb4d12f566a5304cce9164927f2d1fae62: Gradle snapshot 0건
    • head 6bbec716c0ed1314574ca3bc93b6f2d18473b7d8: snapshot 1건
    • 600초 재시도 후 기존 io.netty:netty-codec:4.1.93.Final high 취약점 2건을 신규 도입으로 오판
    • 실제 PR 변경은 workflow의 외부 Action ref 고정뿐이며 Gradle 입력은 변경되지 않음

    직접 Dependency Submission API payload를 재작성하지 않고, 기본 브랜치의 검토된 trusted workflow가 main을 고정 checkout한 뒤 공식 gradle/actions/dependency-submission으로 실제 그래프를 생성·제출하는 수동 기준선 경로를 추가하겠습니다. 임의 ref/SHA 입력은 받지 않고, snapshot SHA는 checkout된 main HEAD에서만 계산합니다.

    또한 #1273에는 PR #1182의 push: [develop, main] 패치를 포함해 머지 이후부터 자동 갱신되도록 하겠습니다. 기준선 제출과 #1273 재검증이 끝날 때까지 이 이슈를 다시 엽니다.

  4. changed the title [-]chore(ci): 릴리스 PR 의 dependency-review 가 의존성 903건 전량을 신규 도입으로 오탐 — main 스냅샷 미제출[/-] [+]릴리스 PR 의 dependency-review 가 의존성 903건 전량을 신규 도입으로 오탐 — main 스냅샷 미제출[/+] on Aug 28, 2026
  5. added
    maintenanceCI·빌드·의존성·저장소 운영 유지보수
    area:platformCI·빌드·릴리스·저장소 운영 영역
    and removed on Aug 28, 2026
  6. 1hyok commented on Aug 29, 2026

    @1hyok
    CollaboratorAuthor

    2026-08-30 재실측 — 이슈가 요구한 것이 이미 develop 에 다 들어와 있다

    본문의 처방 두 가지가 모두 반영된 상태라 코드 변경 없이 닫는다.

    1. 제출 트리거는 이미 develop, main 이다

    dependency-submission-trusted.yml 이 push: branches: [develop, main] 로 돌고, correlator 도 본문이 지키라고 한 afternote-gradle-dependency-graph 그대로다 (#1009 의 교훈이 유지됨).

    2. 부트스트랩 지연을 메우는 수동 제출 경로도 있다

    본문이 「선택지가 있다」고 적은 workflow_dispatch 1회 수동 제출이 submit-main-baseline job 으로 실재한다. 임의 입력을 받지 않고 refs/heads/main 을 직접 checkout 해 그 HEAD SHA 에 스냅샷을 귀속시킨다 — 본문이 우려한 「수동 트리거를 새로 붙이는 것이 #1029 의 방향과 어긋나 보일 수 있다」는 걱정도, 배포 트리거가 아니라 기준선 제출 전용이라 비켜 간다.

    이 구조는 supply-chain-policy.test.mjs 가 이미 고정하고 있다 — workflow_dispatch 존재·concurrency 표현식·job 의 if 조건까지 단언한다.

    3. 증상도 재현되지 않는다

    항목 이슈 작성 시점 2026-08-30 실측
    main 스냅샷 없음 (--branch main → 0건) 있음 — 99f0cea9a (2026-08-27 14:01Z) 에 제출 성공
    dependency-graph/compare main…develop added 903 = develop 고유 패키지 수 (base 가 비었다는 증거) added 262 / removed 135

    added 가 develop 전량과 더는 일치하지 않는다 — base 스냅샷이 실제로 짝지어지고 있다는 뜻이다.

    남는 것

    본문이 「이 게이트의 green 이 취약점 없음 을 뜻하지 않는다」고 짚은 점(스냅샷이 안 맞으면 compare 가 빈 배열을 돌려주고 «변경 없음» 으로 통과, #1011 실측)은 이 이슈의 범위가 아니라 그대로 남는다. 되살릴 조건이 생기면 그 관점의 이슈로 새로 여는 편이 낫다.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

Labels

area:platformCI·빌드·릴리스·저장소 운영 영역maintenanceCI·빌드·의존성·저장소 운영 유지보수

Type

No type

Projects

No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions