다중 저장소 변형 분석: GitHub 전체에서 보안 연구를 수행하는 강력하고 새로운 방법
다중 리포지토리 변형 분석을 사용하면 수천 개의 리포지토리에 걸쳐 보안 연구를 확장할 수 있어 새로 발견된 취약점을 찾아 대응할 수 있는 강력한 도구를 제공합니다.
저자
2023년 3월 9일 원본기사링크
보안 커뮤니티는 놀라운 속도로 새로운 취약점을 식별하고 전 세계 개발자가 코드를 보호하도록 돕습니다. GitHub는 private vulnerability 리포팅 그리고 GitHub Advisory Database와 같은 도구를 사용하여 이러한 협업을 적극적으로 촉진하고 있습니다. 오늘 우리는 커뮤니티가 전 세계 코드를 보호하도록 돕는 임무의 다음 단계인 다중 저장소 변형 분석(MRVA)을 발표합니다.
변형 분석(Variant Analysis)은 새로운 유형의 보안 취약점을 식별하는 중요한 기술입니다. Code scanning기능을 지원하는 정적 분석 엔진인 CodeQL은 매우 정확한 custom CodeQL 쿼리로 취약점을 모델링할 수 있으므로 변형 분석을 위한 훌륭한 도구입니다. 쿼리를 사용하면 심층적인 사용자 정의가 가능해 보안 연구원이 원하는 것을 정확하게 찾을 수 있는 유연성을 얻을 수 있습니다. MRVA는 이 심층 분석 기능을 확장합니다. 수천 개의 리포지토리를 손쉽게 사용할 수 있으므로 이제 수많은 코드베이스에 걸쳐 변형 분석을 쉽게 확장하여 시간을 절약하고 새로운 취약점을 신속하게 찾을 수 있습니다.
GitHub의 자체 Security Lab은 이미 다중 저장소 변형 분석을 활용하여, 최근 1,000만 개가 넘는 응용 프로그램에 영향을 미친 Android advisories를 포함한 최근의 새로운 취약점을 탐지하고 있습니다. 저희 Security Lab에서 발견한 취약점의 전체 목록을 보려면 advisories page를 확인하세요.
CodeQL에서 변형 분석은 어떻게 작동합니까?
코드베이스에 대해 CodeQL 쿼리를 실행하면 모델링한 원래 문제를 식별할 뿐만 아니라 문제의 논리적 변형도 선택할 수 있으므로 전체 취약점 클래스를 한 번에 식별하는 데 도움이 됩니다. 이 기술은 새로운 취약점, 특히 이전에 알려진 취약점이나 공격 패턴을 기반으로 하는 취약점을 식별하고 분석하는 데 유용합니다.
MRVA의 맥락에서 보안 공격이 특정 소프트웨어 패키지의 알려진 취약점을 기반으로 한 것으로 의심되는 경우, 커뮤니티 연구원은 전체 코드베이스를 분석하고 자신의 코드를 알려진 보안 탈취의 변형과 비교할 수 있습니다. 둘 사이의 유사점과 차이점을 식별함으로써 보안 탈취가 어떻게 작동하는지, 그리고 공격을 예방하거나 완화하기 위해 어떤 조치를 취할 수 있는지에 대한 통찰력을 얻을 수 있습니다.
다중 저장소 변형 분석을 사용을 시작하는 방법
MRVA를 사용하여 CodeQL 쿼리를 실행하는 것은 Visual Studio Code용 CodeQL(VS Code) 에서 단일 코드베이스에 대해 쿼리를 실행하는 것과 매우 유사합니다. 쿼리는 코드의 구문 구조, 데이터 흐름 그래프 및 제어 흐름 그래프에 대한 쿼리 가능한 정보가 포함된 코드베이스를 표현한 CodeQL 데이터베이스에 대해 실행됩니다.
MRVA를 사용하면 최대 1,000개의 리포지토리에 대해 CodeQL 쿼리를 실행할 수 있습니다. MRVA는 각 저장소의 CodeQL 데이터베이스를 VS Code로 다운로드하는 대신, GitHub Action을 트리거하여 모든 CodeQL 데이터베이스를 획득하고 각각에 대해 쿼리를 실행합니다. 각 쿼리가 완료되면 탐색할 수 있도록 결과가 VS Code로 다시 전송됩니다.
MRVA는 CodeQL 쿼리를 쉽게 테스트할 수 있도록 10, 100, 1,000개의 public 리포지토리 목록을 자동으로 생성합니다. 이 목록은 GitHub의 코드 검색 팀과 협력하여 개발되었으며 CodeQL에서 지원하는 각 언어에 대한 다양한 OSS 리포지토리를 제공합니다. 다른 리포지토리를 대상으로 하고 싶다면 사용자 정의 목록 생성도 지원됩니다. 또는 단일 GitHub 조직에서 최대 1,000개의 리포지토리에 대해 MRVA 실행을 트리거할 수도 있습니다.
결과가 나오면 별을 받은 수나 마지막 업데이트 시간을 기준으로 저장소를 정렬하여 가장 관심 있는 알림을 찾을 수 있습니다. 동료나 프로젝트 관리자와 공유하고 싶은 결과를 찾은 경우 “결과 내보내기” 기능을 사용하여 간단한 Markdown 보고서를 쉽게 생성할 수 있습니다.
다중 저장소 변형 분석에 사용할 수 있는 저장소는 무엇입니까?
Public 리포지토리의 경우 GitHub Code scanning을 실행하는 모든 리포지토리에 대해 CodeQL 데이터베이스를 저장합니다. 즉, 여러분의 public 저장소를 MRVA에 사용할 수 있도록 하려면 단지 CodeQL을 사용한 code scanning을 활성화 하면 됩니다.
그러나 CodeQL을 사용하여 Code scanning을 실행하지 않을 수도 있는 리포지토리들에 대해서도 변형 분석을 실행할 수 있도록 유연성도 제공하고자 합니다. 이를 위해 우리는 코드 스캔이 활성화되지 않은 GitHub.com의 수천 개의 공개 저장소에 대한 CodeQL 데이터베이스를 저장합니다. 우리는 CodeQL 커뮤니티가 오픈 소스 소프트웨어를 안전하게 유지하는 데 도움을 줄 수 있도록 이러한 리포지토리들에 MRVA를 제공했습니다! MRVA를 사용할 수 있는 리포지토리 목록은 CodeQL을 통한 보안 연구를 위해 가장 관련성이 높은 리포지토리들을 포함할 수 있도록 계속해서 발전하고 있습니다.
여러분이 읽기 액세스 권한이 있는 모든 private 저장소에 대해서도, CodeQL을 사용한 코드 스캔이 활성화되어 있는 한 MRVA를 사용하여 분석할 수 있습니다. 따라서 새로운 취약점을 탐지하기 위해 CodeQL 쿼리를 개발한 경우 MRVA를 사용하여 조직의 전체 포트폴리오에서 버그를 식별하고 제거할 수도 있습니다.
다중 저장소 변형 분석을 설정하고 활용하는 방법에 대한 자세한 내용은 설명문서를 참조하십시오.
GitHub 보안 솔루션에 대해 자세히 알아보기 GitHub는 개발자 경험을 훼손하지 않고 더욱 안전한 보안 소프트웨어를 구축할 수 있도록 돕는데 최선을 다하고 있습니다. 리포지토리에서 GitHub의 보안 기능에 대해 자세히 알아보거나 활성화하려면 시작 가이드를 확인하세요.