CodeQL 팀은 AI를 사용하여 코드의 취약성 감지 기능을 강화합니다.
GitHub의 CodeQL이 AI 모델링 및 다중 저장소 변형 분석(multi-repository variant analysis)을 활용하여 Gradle에서 새로운 CVE를 발견한 방법을 소개해 드립니다.
저자
2023년 9월 12일 원본기사링크
AI는 기술과 보안 환경을 근본적으로 변화시키고 있습니다. GitHub에서는 AI를 개발자가 개발 프로세스 속도를 높이는 동시에 보다 안전한 코드를 작성할 수 있는 방법으로 봅니다. 예를 들어 GitHub Copilot에는 보안 필터가 포함되어 있어, Python 및 JavaScript에서 하드코딩된 자격 증명,SQL 주입, 그리고 경로 주입과 같이 가장 일반적이고 취약한 코딩 패턴에 대한 제안이 이루어지지 않도록 방지합니다.
또한 보안 팀이 AI를 사용하여 조직의 보안 상태를 강화할 수 있는 방법, 특히 규정된 보안 인텔리전스(prescriptive security intelligence) 를 활용하여 복잡하고 상호 연결된 하이브리드 환경에서 보안 상태를 맥락에 맞게(contextually) 평가하고, 우선 순위를 지정하고, 시각화 및 감사를 수행할 수 있는 방법을 찾고 있습니다.
예를 들어 CodeQL 팀은 CodeQL이 더 많은 취약점을 발견할 수 있도록 프레임워크/API를 위한 모델을 만드는 일을 담당합니다. 이러한 모델을 만들고 테스트하는 것은 시간이 많이 걸리는 프로세스이므로 AI를 사용하여 작업 속도를 높이는 방법을 생각하기 시작했습니다.
결과는 믿을 수 없을 만큼 흥미로웠습니다. 팀은 AI를 활용하여 모델링 프로세스를 최적화하고 코드의 취약점을 감지하는 방식을 강화할 수 있었습니다.
CodeQL 팀이 AI 모델링을 사용하여 새로운 CVE를 발견한 방법
CodeQL이 결과를 생성하려면, API를 오염된 데이터(tainted data)라고도 알려진 신뢰할 수 없는 사용자 데이터의 sources, sinks 또는 propagators로 인식할 수 있어야 합니다. 오픈 소스 소프트웨어(OSS) 커뮤니티는 우리가 인식해야 하는 API를 잠재적으로 포함할 수 있는 수천 개의 패키지를 개발했습니다. Source, sink 또는 오염된 propagator가 누락되면 false negative으로 이어질 수 있으므로 이러한 패키지들에 대한 정보에 뒤쳐지지 않는 것이 중요합니다.
전통적으로 우리는 API를 수동으로 모델링했지만 수천 개의 OSS 프레임워크를 고려할 때 우리 팀에게는 엄청난 시간이 소요되었습니다. 지난 6개월 동안 우리는 LLM(대형 언어 모델)을 사용하여 API를 자동으로 모델링하기 시작했습니다. 이로 인해 우리의 모델링 노력이 더욱 강화되었을 뿐만 아니라 CodeQL이 더 많은 sink를 인식하여 CodeQL의 false negative 비율을 줄이고 더 많은 취약점을 감지하는 데 도움이 되었습니다.
CodeQL을 개선할 때 우리는 새로운 유형의 보안 취약점을 식별하는 방법인 변형 분석(variant analysis)이라는 기술을 사용하여 테스트하는 경우가 많습니다. 우리는 종종 이 기술을 사용하여 GitHub.com에 호스팅된 수천 개의 리포지토리에서 CodeQL 쿼리를 실행합니다. 동일한 방법을 수행하여, GitHub.com의 가장 영향력 있는 리포지토리에서 AI가 생성한 모델을 사용하는 쿼리를 실행했습니다.
이러한 AI 생성 모델과 변형 분석의 조합으로 저희는, Gradle의 경로 탐색(path traversal) 취약점인 새로운 CVE(CVE-2023-35947) 발견할 수 있었습니다. 정확한 취약점에 대한 자세한 내용은 Security Lab의 CodeQL 명예의 전당 그리고 GitHub Advisory Database 의 항목을 확인하세요..
다중 저장소 변형 분석에 대해 자세히 알아보기
AI는 소프트웨어 보안 방식을 근본적으로 변화시키고 있습니다. 우리는 AI 기반 보안 테스트를 여러분의 개발 워크플로우에 도입하기 위해 계속해서 전략적으로 AI를 활용하여 GitHub의 보안 제품을 반복하고 개선할 것입니다. Gradle에서 CVE를 발견한 것은 GitHub의 보안 팀이 GitHub Advanced Security 및 AI를 활용하여 놀라운 결과를 도출한 방법의 한 예일 뿐입니다.
GitHub은 다중 저장소 변형 분석 (MRVA) 올해 3월에 출시 했는데요, 이를 사용하면 대규모 변형 분석을 수행할 수 있습니다. 저장소에서 CodeQL 및 코드 스캔을 시작하려면 문서를 확인하세요. 언제나 그렇듯이 CodeQL은 오픈 소스 리포지토리에서 무료로 사용할 수 있습니다. CodeQL 쿼리를 대규모로 실행하는 것과 관련해 자세한 사항은, 다중 저장소 변형 분석에 대한 설명문서를 확인하세요..