숫자와 맥락으로 읽는 경제·주식 인사이트

처음 오셨다면 · 편집 원칙

기사

CodeQL 2.26.4가 깃허브 액션의 빈틈을 더 찾습니다, 경고가 늘 수 있는 이유


CodeQL 2.26.4가 깃허브 액션의 빈틈을 더 찾습니다, 경고가 늘 수 있는 이유 핵심 내용을 보여주는 대표 이미지

보안 도구를 업데이트한 뒤 경고가 늘면 코드가 갑자기 더 위험해졌다고 느끼기 쉽습니다. 실제로는 분석기가 이전에 놓치던 흐름을 보기 시작했을 수 있습니다. GitHub는 2026년 9월 3일 CodeQL 2.26.4를 공개하며 GitHub Actions 워크플로의 이벤트 조건과 재사용 워크플로 참조를 더 정확히 검사한다고 밝혔습니다.

CodeQL은 코드를 단순 문자열로 찾지 않고 값이 어디서 들어와 어디로 흘러가는지 모델링하는 정적 분석 엔진입니다. 이번 변화는 자동화 파일도 일반 프로그램처럼 데이터와 권한의 흐름으로 봐야 한다는 점을 보여줍니다.

존재하지 않는 필드가 만든 가짜 보호

01-event-fields.webp 내용을 정리한 본문 이미지

워크플로는 pull_request, issue, push처럼 여러 이벤트에서 실행됩니다. 이벤트마다 제공하는 필드가 다릅니다. 예를 들어 특정 이벤트에만 있는 actor 정보를 확인하는 조건을 다른 이벤트에서도 보호장치처럼 취급하면, 실제로는 값이 없는데도 검사가 있다고 오해할 수 있습니다.

2.26.4는 actor 필드를 실제로 채우는 이벤트에서만 그 검사를 보호로 인정합니다. 같은 워크플로가 여러 이벤트를 받는다면 이전보다 경고가 늘 수 있습니다. 이는 이벤트별 실행 경로를 나눠 보라는 신호입니다.

움직이는 태그와 재사용 워크플로

02-mutable-tags.webp 내용을 정리한 본문 이미지

GitHub Actions는 다른 저장소의 워크플로를 재사용할 수 있습니다. 편리하지만 main이나 v1 같은 태그는 소유자가 가리키는 커밋을 바꿀 수 있습니다. 오늘 검토한 코드와 내일 실행되는 코드가 달라질 수 있다는 뜻입니다.

새 actions/unpinned-tag 질의는 재사용 워크플로의 변경 가능한 참조를 더 잘 찾습니다. 중요한 배포나 비밀에 접근하는 작업은 커밋 해시처럼 움직이지 않는 참조로 고정하고, 업데이트는 별도 검토를 거치는 편이 안전합니다.

언어별 분석도 함께 바뀝니다

03-language-models.webp 내용을 정리한 본문 이미지

이번 버전은 Go 1.27을 지원하고 Rust 데이터 흐름 경고의 위치를 실제 source와 sink에 더 가깝게 표시합니다. Java·Kotlin에서는 Spring R2DBC의 SQL 주입 sink를 추가했고, C#과 JavaScript·Python 분석도 모델을 보완했습니다.

경고 위치가 바뀌면 예전 경고가 닫히고 새 경고가 생긴 것처럼 보일 수 있습니다. 보안 추세를 볼 때 단순 개수만 비교하지 말고 질의 버전, 위치 변경과 규칙 추가를 함께 기록해야 합니다.

새 경고를 다루는 순서

04-triage.webp 내용을 정리한 본문 이미지

먼저 GitHub Actions 경고는 어떤 이벤트에서 실행되는지, 외부 입력이 어떤 권한과 비밀에 닿는지 확인합니다. 재사용 워크플로 참조는 고정 여부와 소유자를 봅니다. 그다음 새 경고인지 위치만 옮겨진 경고인지 분류합니다.

GitHub.com 코드 스캐닝에는 새 버전이 자동 배포되지만, GitHub Enterprise Server는 향후 릴리스에 포함됩니다. 오래된 GHES는 CodeQL을 수동으로 올릴 수 있습니다. 공개 자료에는 실제 오탐·미탐 개선률이 없습니다. 경고가 늘었다는 사실만으로 안전이 나빠졌다고도, 도구가 완벽해졌다고도 말할 수 없습니다.

참고자료

일반 정보이며 특정 종목의 매수·매도를 권유하지 않습니다. 투자에는 원금 손실 위험이 있습니다. 투자 유의사항