Pentesting CI/CD Methodology
VCS
VCS는 버전 관리 시스템을 의미하며, 이 시스템은 개발자가 소스 코드를 관리할 수 있게 해줍니다. 가장 일반적인 것은 git이며, 다음과 같은 플랫폼에서 사용되는 것을 보통 찾을 수 있습니다:
Github
Gitlab
Bitbucket
Gitea
클라우드 제공업체 (자체 VCS 플랫폼 제공)
파이프라인
파이프라인은 개발자가 코드 실행을 자동화할 수 있게 해줍니다 (빌드, 테스트, 배포 등의 목적으로). 특정 작업이 발생한 후에 실행되며, 예를 들어 푸시, PR, cron 등이 발생합니다. 이러한 시스템은 개발부터 프로덕션까지의 모든 단계를 자동화하는 데 매우 유용합니다.
그러나 이러한 시스템은 어딘가에서 실행되어야 하며, 일반적으로 코드를 배포하기 위한 권한이 있는 특권 자격 증명으로 실행됩니다.
VCS 펜테스팅 방법론
일부 VCS 플랫폼에서는 이 섹션에서 파이프라인을 생성할 수 있지만, 여기서는 소스 코드의 제어에 대한 잠재적인 공격만 분석할 것입니다.
프로젝트의 소스 코드를 포함하는 플랫폼에는 민감한 정보가 포함되어 있으며, 사람들은 이 플랫폼 내에서 부여된 권한에 대해 매우 주의해야 합니다. 공격자가 악용할 수 있는 일부 일반적인 VCS 플랫폼의 문제는 다음과 같습니다:
유출: 코드에 유출이 포함되어 있고 공격자가 리포지토리에 액세스할 수 있다면 (공개적이거나 액세스 권한이 있는 경우), 유출을 발견할 수 있습니다.
액세스: 공격자가 VCS 플랫폼 내의 계정에 액세스할 수 있다면, 더 많은 가시성과 권한을 얻을 수 있습니다.
등록: 일부 플랫폼은 외부 사용자가 계정을 생성할 수 있도록 허용합니다.
SSO: 일부 플랫폼은 사용자가 등록할 수 없지만 유효한 SSO로 액세스할 수 있도록 허용합니다 (따라서 공격자는 예를 들어 자신의 github 계정을 사용할 수 있습니다).
자격 증명: 사용자가 액세스하기 위해 도용할 수 있는 여러 종류의 토큰, 예를 들어 사용자 이름+암호, 개인 토큰, ssh 키, Oauth 토큰, 쿠키 등이 있습니다.
웹훅: VCS 플랫폼은 웹훅을 생성할 수 있습니다. 이들이 비공개 비밀로 보호되지 않은 경우, 공격자가 이를 악용할 수 있습니다.
비밀이 없는 경우, 공격자는 서드파티 플랫폼의 웹훅을 악용할 수 있습니다.
비밀이 URL에 있는 경우, 동일한 일이 발생하며 공격자는 비밀도 가지고 있습니다.
코드 침해: 악의적인 행위자가 리포지토리에 대한 쓰기 액세스 권한을 가지고 있다면, 악성 코드를 주입할 수 있습니다. 성공적으로 수행하기 위해서는 브랜치 보호를 우회해야 할 수도 있습니다. 이러한 작업은 다음과 같은 목표로 수행될 수 있습니다:
본 브랜치를 침해하여 프로덕션을 침해합니다.
메인 (또는 다른 브랜치)을 침해하여 개발자의 컴퓨터를 침해합니다 (일반적으로 개발자는 리포지토리 내에서 테스트, 테라폼 또는 기타 작업을 수행합니다).
파이프라인을 침해합니다 (다음 섹션 참조)
파이프라인 펜테스팅 방법론
파이프라인을 정의하는 가장 일반적인 방법은, 파이프라인을 빌드하는 저장소에 호스팅된 CI 구성 파일을 사용하는 것입니다. 이 파일은 실행되는 작업의 순서, 흐름에 영향을 주는 조건 및 빌드 환경 설정을 설명합니다. 이러한 파일은 일관된 이름과 형식을 가지고 있으며, 예를 들어 Jenkinsfile (Jenkins), .gitlab-ci.yml (GitLab), .circleci/config.yml (CircleCI) 및 .github/workflows 아래에 위치한 GitHub Actions YAML 파일 등이 있습니다. 파이프라인 작업이 트리거되면, 파이프라인 작업은 선택한 소스(커밋/브랜치 등)에서 코드를 풀고, CI 구
더 많은 관련 정보
도구 및 CIS 벤치마크
Chain-bench는 새로운 CIS 소프트웨어 공급망 벤치마크를 기반으로 소프트웨어 공급망 스택의 보안 규정 준수를 감사하는 오픈 소스 도구입니다. 감사는 코드 시간부터 배포 시간까지의 전체 SDLC 프로세스에 초점을 맞추며, 위험을 발견할 수 있습니다.
상위 10개의 CI/CD 보안 위험
Cider에 따르면 상위 10개의 CI/CD 보안 위험에 대한 흥미로운 기사를 확인하세요: https://www.cidersecurity.io/top-10-cicd-security-risks/
랩
로컬에서 실행할 수 있는 각 플랫폼에서는 로컬로 실행하는 방법을 찾을 수 있으므로 원하는대로 구성하여 테스트할 수 있습니다.
Gitea + Jenkins 랩: https://github.com/cider-security-research/cicd-goat
자동 도구
Checkov: Checkov는 인프라스트럭처-애스-코드를 위한 정적 코드 분석 도구입니다.
참고 자료
Last updated