참고
AI 기반 보안 탐지는 현재 공개 미리 보기 상태이며 변경될 수 있습니다.
AI 기반 보안 탐지는 풀 요청에서 실행되고 CodeQL를 보완하는 AI 기반 검사 엔진이 생성하는 추가적인 보안 탐지 결과입니다. 경고와 달리 CodeQL AI 기반 검색 결과는 끌어오기 요청에서만 사용할 수 있으며 리포지토리의 보안 보기에 백로그 경고로 표시되지 않습니다.
CodeQL 지원되는 특정 언어 및 쿼리 집합에 대한 고정밀 정적 분석을 제공하지만, 많은 리포지토리는 다루지 않는 언어 및 프레임워크를 CodeQL 사용합니다. AI 기반 검색은 이러한 영역으로 범위를 확장 code scanning 하여 새로운 도구 또는 구성을 추가하지 않고도 취약성을 찾을 수 있도록 지원합니다.
공개 미리 보기 동안 AI 기반 보안 탐지에는 GitHub Advanced Security 라이선스와 GitHub Copilot 라이선스가 필요합니다.
사용량은 AI credits을(를) 소모합니다. 조직 및 기업에 대한 사용량 기반 청구을(를) 참조하세요.
AI 기반 보안 검색 작동 방식
AI 기반 보안 검색은 기본 설정이 활성화되고 AI 기반 검색이 CodeQL 옵트인된 리포지토리의 끌어오기 요청에서 자동으로 실행됩니다. AI 기반 스캔은 CodeQL와 동일하게 풀 리퀘스트가 생성될 때와 새 커밋이 있을 때마다 트리거됩니다.
AI 기반 결과는 권고이며 끌어오기 요청 병합을 차단하지 않습니다. 워크플로를 중단하지 않고 코드 보안을 개선할 수 있는 위치에 대한 신호를 제공합니다.
AI 검색 엔진은 끌어오기 요청의 코드에서 직접 작동하며 빌드 시스템이 필요하지 않습니다. 코드 검색과 같은 도구를 사용하여 문제에 플래그를 지정할지 여부를 결정할 때 리포지토리에서 추가 컨텍스트를 수집합니다. 고유한 특수화된 프롬프트를 사용하며 사용자 지정 명령 파일(예: /.github/copilot-instructions.md 또는 /CLAUDE.md.)을 사용하지 않습니다.
AI 스캔은 CodeQL의 상태와 독립적으로 실행됩니다. 기본 설정이 실패하거나 대기 상태이면 CodeQL AI 기반 검색이 계속 실행됩니다.
결과가 발견되면 끌어오기 요청에 게시됩니다. CodeQL 검사를 완료하는 데 시간이 더 오래 걸리면 CodeQL 결과가 표시되기 전에 AI 기반 발견 항목이 먼저 표시되거나, 그 반대의 경우도 있습니다.
끌어오기 요청에 대한 결과 표시 방법
AI 기반 분석 결과는 풀 리퀘스트의 Conversation 탭과 Files changed 탭에서 CodeQL 경고 옆에 표시됩니다. 각 AI 기반 탐지 결과에는 CodeQL 경고와 구분할 수 있도록 "AI" 표시가 붙습니다.
각 결과에는 보안 문제에 대한 설명과 위험에 대한 설명이 포함됩니다. 대부분의 발견 사항에는 권장되는 해결 방법도 포함되지만, 모든 발견 사항에 해결 방법이 있는 것은 아닙니다. 제안된 수정 방법을 사용할 수 있는 경우, 코파일럿 자동 수정가 포함되며 CodeQL 경고의 경우와 마찬가지로 문제를 해결하기 위한 권장 코드 변경 사항을 제공합니다. 결과에는 시간이 지남에 따라 검색 품질을 개선하는 데 도움이 되는 엄지 손가락 위쪽/아래쪽 피드백 메커니즘도 포함됩니다.
Limitations
- AI 기반 보안 검색은 끌어오기 요청만 분석합니다. 전체 리포지토리 검사는 지원되지 않습니다.
- 병합 요구 사항을 적용하기 위해 규칙 집합에서 AI 기반 결과를 아직 사용할 수 없습니다.
- 기능이 진화함에 따라 검색 범주 및 지원되는 언어가 변경 될 수 있습니다.
- 모든 AI 기반 도구와 마찬가지로 결과에는 가양성이 포함될 수 있습니다. 피드백 메커니즘을 사용하여 부정확한 결과를 보고합니다.
지원되는 언어
AI 기반 보안 검색은 현재 지원 CodeQL되지 않는 언어 및 프레임워크를 포함하도록 설계되었습니다. 여기에는 이에 국한되지 않고 PHP, Shell/Bash, Terraform 구성(HCL), Dockerfile과 같은 언어와 Java용 JSP 및 C#용 Blazor와 같은 프레임워크 지원 범위의 공백이 포함됩니다.
지원되는 CodeQL언어의 전체 목록은 CodeQL을 사용하여 코드 검색을 참조하세요.
감지 범주
AI 기반 보안 검색은 현재 다음 범주를 다룹니다. 이러한 범주는 결과를 분류하는 방법을 설명합니다. 모델이 개선됨에 따라 AI 스캐너는 시간이 지남에 따라 진화할 수 있습니다.
- 문자열 인젝션 — 이스케이프 처리 또는 새니타이징이 누락되었거나 올바르지 않은, 문자열로 구성된 안전하지 않은 SQL, HTML, 셸, JSON 또는 YAML.
- 약한 암호화 — 약한 알고리즘, 작은 키, 안전하지 않은 임의성, 누락된 암호화 또는 약한 암호 해시입니다.
- 취약한 액세스 제어 — 경로 순회, CSRF 허점 또는 사용자 유도형 오픈 리디렉션.
- 중요한 데이터 노출 - 적절한 보호 없이 저장, 기록 또는 전송된 비밀, 토큰, 암호 또는 스택 추적입니다.
- 보안 구성 오류 - 보안 컨트롤을 사용하지 않도록 설정하거나 디버그 기능을 사용하도록 설정하는 것과 같은 위험한 기본값 또는 설정입니다.
- 인증 실패 - TLS 또는 유효성 검사 누락, 안전하지 않은 인증 흐름 또는 누락된 속도 제한
- 데이터 무결성 오류 - 안전하지 않은 역직렬화, 중요한 작업에 대한 HTTP, 프로토타입 오염 또는 신뢰할 수 없는 콘텐츠 실행
- SSRF(서버 쪽 요청 위조) - 서버는 공격자가 제어하는 URL, 호스트 또는 프로토콜을 가져옵니다.
- 공급망 위험 - 고정되지 않은 타사 작업, 패키지 또는 이미지 또는 무결성 검사 없이 다운로드.
AI 기반 보안 탐지 활성화
AI 기반 보안 검색은 기본적으로 엔터프라이즈 수준에서 허용되지 않으며 조직 및 리포지토리 수준에서 사용하지 않도록 설정됩니다. 엔터프라이즈 관리자는 조직에서 이 기능을 사용하도록 설정하기 전에 명시적으로 이 기능을 허용해야 합니다. 조직 관리자는 이 기능을 명시적으로 옵트인해야 합니다. 리포지토리 관리자는 기능을 옵트아웃할 수 있습니다. 또한 기본 설정을 사용하도록 설정해야 합니다 CodeQL .
AI 기반 보안 검색을 사용하도록 설정하는 모델을 선택할 필요가 없습니다.
- 엔터프라이즈: "코드 보안"의 AI 결과 정책은 조직이 이 기능을 사용하도록 설정할 수 있는지 여부를 제어합니다. 엔터프라이즈에 대한 코드 보안 및 분석을 위한 정책 적용을(를) 참조하세요.
- 조직: "코드 검사" 아래의 AI 결과 설정을 통해 조직의 리포지토리에 대한 AI 기반 검색을 사용할 수 있습니다. 조직에 대한 글로벌 보안 설정 구성을(를) 참조하세요.
- 리포지토리: "코드 검색"에서 AI 결과 토글은 개별 리포지토리에 대한 AI 기반 검색을 사용하거나 사용하지 않도록 설정합니다. 리포지토리는 조직 설정을 상속하지만 개별적으로 옵트아웃할 수 있습니다.