본문으로 바로가기

CodeQL 2.26.3: 보안 경고의 변화는 코드 변화만 뜻하지 않는다

CodeQL 2.26.3의 GitHub Actions 탐지와 JavaScript·Vue 모델링 개선, 제거된 모듈을 정리하고 경고 증가와 오탐 감소를 검토하는 방법을 살펴봅니다.

목차

어제 통과한 코드에 오늘 경고가 붙었다면

코드는 그대로인데 보안 검사 결과가 달라졌다. 새 취약점이 생긴 것일까, 검사기가 더 많은 경로를 이해하게 된 것일까. 8월 20일 브리핑의 CodeQL 업데이트는 이런 차이를 보여 준다.

신뢰할 수 없는 입력을 더 정확히 추적한다

GitHub는 8월 19일 CodeQL 2.26.3를 소개했다. GitHub Actions의 merge_group 이벤트 입력을 분석에 반영하고, 캐시 오염과 환경변수 주입 등 여러 쿼리의 정확도를 개선했다.

JavaScript와 TypeScript의 파일 단위 모델링, Vue의 반응성 도구와 라우터 입력에 관한 흐름 모델도 추가했다. 반면 러너 라벨만으로 실행 환경을 신뢰성 있게 구별하기 어렵다는 이유로 SelfHostedQuery 모듈을 제거했다. 이를 사용하는 사용자 쿼리는 수정이 필요하다.

더 많은 경고도 더 적은 경고도 검토 대상이다

경고 수는 코드와 분석 모델이 함께 만든 결과다. 탐지 범위가 넓어져 새 경로가 보일 수도 있고, 오탐을 줄이는 수정으로 기존 경고가 사라질 수도 있다.

업데이트 뒤에는 원문에 나온 변경과 실제 경고를 연결해 보는 편이 좋다. 새 경고의 입력이 어디서 왔고 어떤 권한으로 실행되는지를 확인해야 한다. 이 부분은 릴리스 내용을 운영에 적용한 제안이다.


검사기의 버전도 검토 기록에 넣자

자동 업데이트 환경과 별도 실행 환경은 적용 시점이 다를 수 있다. GitHub는 GitHub.com의 code scanning에 새 버전을 자동 배포한다고 설명한다.

  • 새 경고의 입력 경로와 실행 조건을 확인한다.
  • 사라진 경고가 코드 수정 때문인지 분석 변경 때문인지 나눈다.
  • 사용자 쿼리의 제거된 모듈 의존성을 찾는다.
  • CI의 쓰기 권한과 외부 입력의 연결을 검토한다.

업데이트를 설치했다는 사실만으로 저장소가 안전하다는 결론은 나오지 않는다. 경고의 의미를 이해하고 실제 경로를 확인하는 과정이 남는다.

오늘의 방아쇠는 경고를 닫기 전에 “무엇이 달라져서 이 결과가 나왔는가”를 적는 일이다.


참고 자료

브리핑 표지 보기
CodeQL 2.26.3: 보안 경고의 변화는 코드 변화만 뜻하지 않는다
브리핑 모아 보기