GitHub AI Scan, PHP 취약점을 찾으면 PR 병합도 막을까?

PR의 PHP 코드 옆에 GitHub AI Scan이 찾은 취약점 표시가 붙었는데 병합 버튼은 여전히 초록색이다. AI가 찾은 취약점은 병합 조건에서 왜 빠져 있을까?

GitHub AI Scan, PHP 취약점을 찾으면 PR 병합도 막을까?
세 줄 요약
  • GitHub AI Scan이 정식 출시돼 PHP 등 CodeQL이 지원하지 않는 코드의 PR 변경을 검사한다.
  • 결과는 권고 사항이며 code scanning 검사를 실패시키거나 ruleset으로 병합을 막지 않는다.
  • 포크·Dependabot PR은 제외되고, 공개 저장소에서도 AI 크레딧을 사용한다.

PHP 검사 범위는 넓어졌지만 병합 규칙은 그대로다

AI Scan은 PHP 변경에서 취약점을 찾을 수 있지만, 발견한 문제만으로 PR 병합을 차단하지는 않는다. GitHub가 10월 15일 정식 출시한 기능은 CodeQL의 빈 영역을 보완하는 AI 검사다. PHP 외에 Shell/Bash, Terraform의 HCL, Dockerfile, Java의 JSP, C#의 Blazor 등이 대상에 포함된다.

CodeQL 자체는 PHP를 지원하지 않는다. AI Scan을 켰다고 PHP용 CodeQL 분석이 생기는 것은 아니다. PR의 Conversation·Files changed 탭에 AI 표시가 붙은 결과가 나타나며, 위험 설명과 수정 제안이 함께 나올 수 있다.

결과는 권고 사항이다. code scanning 검사를 실패시키지 않고, ruleset의 병합 조건으로도 사용할 수 없다. 따라서 PHP 변경을 검토할 단서는 늘어나지만, 기존 승인 절차나 필수 검사를 AI Scan이 대신한다고 보고 제거할 수는 없다.

조직 설정과 저장소의 코드 검사를 함께 켠다

실행에는 저장소의 code scanning과 유효한 AI Scan 설정이 모두 필요하다. CodeQL 기본 설정을 반드시 사용할 필요는 없으며, CodeQL 분석이 대기하거나 실패하더라도 AI Scan은 실행될 수 있다.

조직의 전역 보안 설정에서 소유자나 보안 관리자가 AI Scan을 켜면, code scanning이 활성화된 적격 저장소가 설정을 상속한다. 저장소 관리자는 개별 저장소를 제외할 수 있다. 기업 계정 아래 조직이라면 기업 정책에서 사용을 허용해야 하며, 기업의 허용만으로 조직 기능까지 켜지지는 않는다.

공개 저장소는 개인·조직 소유 모두 지원한다. 조직의 비공개·internal 저장소에는 GitHub Code Security 또는 GitHub Advanced Security가 필요하다. 개인 계정의 비공개 저장소와 관리형 사용자 계정의 개인 네임스페이스 저장소는 대상이 아니다. 일반 개인 공개 저장소에서는 저장소 관리자가 Code scanning 아래의 AI Scan 토글로 켜고 끌 수 있다.

포크에서 보낸 PR에는 실행되지 않는다

AI Scan의 검사 대상은 지원 언어·프레임워크의 변경을 포함한 PR이다. 대상 PR 생성과 새 커밋 때 실행되지만, 포크에서 온 PR과 Dependabot이 만든 PR에는 실행되지 않는다.

공개 저장소에서 외부 기여를 받는 팀이라면 특히 이 차이가 크다. 저장소에 기능이 켜져 있다는 사실만으로 모든 기여자의 변경을 검사한다고 볼 수 없다. PR의 출처와 작성 주체를 함께 봐야 한다.

저장소 전체를 훑는 검사도 아니다. AI Scan 결과는 PR에 표시되며, 저장소 보안 화면에 과거 코드의 경보 목록으로 쌓이지 않는다. 결과가 없을 때는 검사 대상인지, 기능이 실제 활성화돼 있는지, 사용할 크레딧이 남았는지를 먼저 구분해야 한다.

Copilot 좌석이 없어도 쓰지만, 공개 저장소도 크레딧을 쓴다

AI Scan에 Copilot 라이선스는 필수가 아니다. 그러나 AI 기능 과금 규칙에 따르면 공개 저장소에서도 Code Security AI Credits를 소비한다. 공개 코드 검사에 접근할 수 있다는 조건과 AI 사용 비용은 따로 계산된다.

청구 계정에 포함 AI 크레딧이 있으면 먼저 사용하고, 소진 뒤에는 종량 과금이 적용된다. 포함 크레딧이 없다면 처음부터 종량 사용량이다. 조직 저장소의 사용량은 그 조직의 비용을 부담하는 계정에 귀속된다.

조직 전체에 켜기 전에는 포함 크레딧과 사용 예산을 함께 확인해야 한다. 하드 예산 제한으로 사용할 크레딧이 없어지면 AI Scan이 결과를 만들 수 없기 때문이다. PHP PR 검토에 추가할 때는 검사 대상, 검토 담당자, 비용 한도를 함께 정해야 실제 운영 범위가 명확해진다.