깃허브 액션 '@v4'가 몰래 바뀌면? — 워크플로 lockfile 정식 출시, 1인 개발자가 5분 만에 거는 법
깃허브 액션에서 uses: 누군가/액션@v4처럼 태그로 불러온 코드는, 그 태그가 다른 커밋으로 옮겨지면 다음 빌드부터 바뀐 코드가 그대로 돕니다. 깃허브는 2026년 10월 28일 이를 막는 워크플로 lockfile을 Free·Team·Enterprise Cloud 플랜에 정식 출시했습니다.
무슨 일인가
lockfile은 .github/workflows/actions.lock 파일에 워크플로가 쓰는 액션마다 '태그 이름 → 실제 커밋 → 원본 저장소 ID'를 적어 두는 방식입니다. 한 번 잠그면 태그가 이동해도 깃허브 액션은 기록된 커밋만 실행합니다. 파일은 GitHub CLI 확장 gh actions-lock으로 만들고 손으로 고치지 않으며, 액션이 내부에서 다시 부르는 액션(전이 의존성)까지 잠깁니다. 디펜더봇이 액션 버전 업데이트 PR을 열면 lockfile 항목도 같은 PR에서 함께 갱신되고, 관리자는 'Require lockfile' 정책으로 저장소 전체에 강제할 수 있습니다.
uses: …@v4
잠근 커밋 조회
일치 확인
잠근 커밋만 실행
왜 중요한가
CI(자동 빌드·배포)에는 스토어 서명 키·Firebase 토큰·서버 비밀번호가 비밀값으로 들어가 있어서, 남의 액션 한 줄이 바뀌면 그 비밀값이 바로 노출됩니다. 2025년 3월 tj-actions/changed-files 사건 때도 태그가 악성 커밋으로 옮겨져 많은 저장소의 빌드 로그에 비밀값이 찍혔습니다. 오늘 아침 다룬 폴리마켓 외부 스크립트 사고와 같은 구조로, '같은 이름 아래 내용이 바뀌는' 공격입니다.
lockfile
- 워크플로엔 @v4 그대로, 읽기 쉬움
- 전이 의존성·저장소 ID까지 기록
- 디펜더봇이 함께 갱신
커밋 SHA 직접 고정
- 40자 해시가 워크플로에 박힘
- 내가 쓴 액션만 고정
- 업데이트도 수동 관리
내 사업·앱에 무슨 의미
- 앱 운영자 — 외주 개발사가 만든 자동 빌드·스토어 업로드가 깃허브 액션이면, 저장소에
actions.lock이 있는지 물어볼 항목이 하나 생겼습니다. - 개발자 — 깃허브 문서는 lockfile을 쓰는 저장소라면 워크플로 파일에 SHA를 따로 박을 필요가 없다고 설명합니다.
- 자체 서버 운영 — GitHub Enterprise Server(설치형)는 아직 지원 대상이 아닙니다.
제가 맥의 작업 폴더 전체를 find . -path '*/.github/workflows/*'로 확인해 보니 워크플로 파일은 0개였습니다. 앱몬스터 사이트는 깃허브 액션 없이 배포 스크립트로 직접 올리고 있어서, 당장 잠글 대상은 없고 나중에 자동 배포를 붙일 때 첫날부터 lockfile을 함께 두기로 했습니다.
지금 해볼 것
gh extension install github/gh-actions-lock — gh 로그인이 돼 있어야 합니다.gh actions-lock --no-fix로 파일을 안 바꾸는 보고서를 먼저 보고, 모르는 액션이 섞였는지 확인합니다.gh actions-lock으로 만들고 커밋한 뒤, CI에 gh actions-lock --verify를 넣어 빠진 항목을 잡습니다.Q&A — 깃허브 액션 lockfile 자주 묻는 질문
lockfile을 쓰면 깃허브 액션 공급망 공격을 완전히 막나요?
아니요, '잠근 뒤에 바뀌는 것'만 막습니다. 깃허브도 lockfile은 의존성의 안전을 보장하지 않는다고 밝혔으니, 처음 잠그기 전에 어떤 액션을 쓰는지 검토해야 합니다.
이미 커밋 SHA로 고정해 뒀는데 lockfile로 바꿔야 하나요?
필수는 아니지만 바꾸면 더 넓게 막습니다. SHA 고정은 내가 직접 쓴 액션만 고정하지만, lockfile은 그 액션이 내부에서 부르는 액션(전이 의존성)과 원본 저장소 ID까지 기록합니다.
무료 플랜 개인 저장소에서도 쓸 수 있나요?
네, 변경 로그에 Free 플랜이 포함돼 있습니다. GitHub CLI(gh)에 확장을 설치하고 로그인만 돼 있으면 되며, 자체 설치형 GitHub Enterprise Server는 아직 지원하지 않습니다.
출처
- GitHub Changelog — Workflow lockfiles are generally available (2026-10-28)
- GitHub Docs — Workflow dependency lockfiles
- github/gh-actions-lock (CLI 확장)