GitHub Actions 취약점 공개: 공격 벡터 및 완화에 대한 포괄적인 기술 가이드
GitHub Actions는 CI/CD를 위한 강력한 도구로, GitHub 리포지토리 내에서 직접 워크플로를 원활하게 자동화합니다. 이 기능은 개발을 간소화하는 동시에 제대로 보호되지 않으면 악용될 수 있는 중요한 공격 표면을 노출하기도 합니다. John Stawinski는 Adnan Khan과 협력하여 Black Hat USA 2024 및 DEF CON 32에서 발표된 자세한 시각적 가이드인 GitHub Actions 공격 다이어그램에서 이러한 취약점을 꼼꼼하게 매핑했습니다. 이 다이어그램에서는 초기 액세스부터 정교한 악용 후 전술에 이르기까지 GitHub Actions 워크플로에 사용되는 다양한 공격 경로, 기술 및 악용 전략을 살펴봅니다. 이 문서에서는 GitHub Actions 보안을 강화하기 위한 실행 가능한 인사이트와 모범 사례를 통해 이러한 공격 벡터에 대해 자세히 설명합니다.
GitHub Actions 공격 표면 이해
GitHub Actions 공격 다이어그램은 GitHub Actions 워크플로의 취약점을 식별하고 악용하기 위한 포괄적인 가이드 역할을 합니다. 저장소에 대한 읽기 또는 쓰기 액세스 권한을 얻는 기본 사항부터 시작하여 비밀 유출, 원격 코드 실행 및 내부 네트워크 액세스를 포함한 잠재적인 익스플로잇의 복잡한 웹으로 분기됩니다. Stawinski의 다이어그램은 단순한 도구가 아닙니다. 이는 CI/CD 파이프라인에 내재된 위험을 탐색하기 위한 청사진이며 세심한 보안 관행의 중요성을 강조합니다.
주요 공격 벡터 세부 정보
1. 초기 액세스: 읽기 및 쓰기 권한 악용
쓰기 액세스: 커밋 그 이상
- 워크플로 조작: 쓰기 권한이 있는 공격자는 악의적인 단계를 포함하는 워크플로를 직접 수정하거나 새 워크플로를 만들 수 있습니다. 이는 환경 변수를 유출하는 명령을 추가하는 것부터 백도어를 생성하거나 맬웨어를 지속적으로 실행하는 보다 복잡한 스크립트에 이르기까지 다양합니다.
- 악성 빌드 트리거: 공격자는 합법적으로 보이는 코드 변경 사항을 푸시하여 자동화된 CI/CD 프로세스를 악용할 수 있습니다. 이러한 수정은 권한 있는 컨텍스트에서 워크플로를 트리거하여 즉각적인 탐지 없이 페이로드를 실행할 수 있습니다.
- 분기 조작: 높은 권한의 워크플로를 트리거하는 새 분기를 생성하면 공격자가 기본 코드베이스를 직접 변경하지 않고도 기술을 테스트하고 개선할 수 있는 샌드박스가 제공됩니다.
읽기 액세스: 미묘한 위협
- 워크플로 열거형: 읽기 전용 액세스 권한이더라도 공격자는 워크플로를 분석하여 귀중한 정보를 수집할 수 있습니다. 그들은 잘못 구성된 비밀, 지나치게 광범위한 권한, 악용될 수 있는 취약한 작업의 사용을 찾습니다.
- 자체 호스팅 러너 정찰: 공격자는 내부 리소스에 액세스하고 상승된 권한에 액세스할 수 있는 자체 호스팅 실행기를 식별합니다. 환경과 구성을 알면 공격자가 표적 악용 전략을 수립하는 데 도움이 됩니다.
2. GitHub Actions 활용: 워크플로 구성 오류 및 코드 삽입
끌어오기 요청 (홍보) 남용: 일반적인 진입점
- 악성 PR: 공격자는 겉보기에는 무해한 변경 사항이 포함되어 있지만 숨겨진 악성 코드가 포함된 PR을 제출합니다. 이러한 PR에 의해 트리거되는 자동화된 워크플로는 포함된 페이로드를 실행하여 저장소의 환경을 손상시킬 수 있습니다.
- 자동화의 함정: 일부 리포지토리는 PR의 승인 및 병합을 자동화하여 사람의 검토를 우회하는 데 악용될 수 있습니다. 이로 인해 적절한 조사 없이 악의적인 변경 사항이 통합될 수 있습니다.
직접 워크플로 주입
공격 예: 공격자는 워크플로에 악성 단계를 직접 삽입합니다. 예를 들어, 비밀을 유출하거나 원격 연결을 설정하는 셸 스크립트를 포함하도록 YAML 파일을 수정합니다. 이러한 주입은 미묘하고 감지하기 어려울 수 있으며, 특히 복잡한 작업 흐름에서는 더욱 그렇습니다.3. 원격 코드 실행 달성 (RCE)
3. 원격 코드 실행 달성 (RCE)
원격 코드 실행은 GitHub Actions의 중요한 손상 지점으로, 공격자가 CI/CD 환경 내에서 임의의 코드를 실행할 수 있도록 합니다.
자체 호스팅 러너: 고부가가치 대상
- 자체 호스팅 실행기 손상: 공격자는 클라우드 호스팅 옵션만큼 엄격하게 보호되지 않는 자체 호스팅 실행기를 활용하는 워크플로를 악용합니다. 이러한 실행기는 중요한 내부 리소스 또는 상승된 네트워크 권한에 액세스할 수 있습니다.
- 지속성 전술: 공격자는 명령을 지속적으로 실행하거나 C2 채널을 열어 두어 지속적인 액세스를 유지하는 워크플로를 생성하여 공격을 지속적이고 완화하기 어렵게 만들 수 있습니다.
러너 구성 오류
환경 불안을 악용함: 빌드 환경을 격리하지 못하거나 환경 변수를 통해 비밀을 노출하는 잘못 구성된 실행기는 악용될 수 있습니다. 공격자는 임의의 명령을 실행하거나 실행기의 네트워크 권한을 활용하여 조직 내에서 측면으로 이동할 수 있습니다.
4. 내부 네트워크 액세스: 차세대 개척지
RCE가 달성되면 공격자는 손상된 러너를 내부 네트워크에 더 깊이 침입하기 위한 런치패드로 사용할 수 있습니다.
정찰 및 측면 이동
- 내부 네트워크 검색: 공격자는 손상된 러너를 사용하여 정찰을 수행하고, 내부 네트워크 구조를 매핑하고, 중요한 시스템을 식별하고, 추가 악용 기회를 탐색합니다.
- 피벗: 공격자는 손상된 실행기를 활용하여 다른 내부 시스템으로 전환하면 추가 취약점을 악용하거나 민감한 데이터에 액세스하거나 서비스를 중단할 수 있습니다.
데이터 유출
은밀한 유출 파이프라인: 공격자는 데이터를 은밀하게 유출하는 워크플로를 설정하여 기존 네트워크 방어 시스템에 경고하지 않고 공격자가 제어하는 엔드포인트로 민감한 정보를 보낼 수 있습니다.
5. 비밀 훔치기: 궁극적인 목표
CI/CD 파이프라인 내의 비밀은 추가 액세스 및 악용 가능성을 잠금 해제할 수 있으므로 공격자에게 높은 평가를 받는 경우가 많습니다.
환경 변수 덤프
- 비밀 노출: 공격자는 환경 변수를 기록하는 단계를 삽입하여 API 키, 자격 증명 및 토큰과 같은 비밀을 캡처합니다. 그런 다음 이 데이터는 추가 악용을 위해 유출됩니다.
- 완화 전략: 조직은 GitHub의 비밀 관리 기능을 사용하여 비밀의 범위가 지정되고 정기적으로 회전되어 노출을 제한해야 합니다.
워크플로 내 비밀 도용
- 직접 유출: 워크플로 단계를 조작하여 외부 서버로 직접 비밀을 보낼 수 있습니다. 공격자는 이러한 단계를 합법적인 워크플로 내에서 무해한 작업으로 위장하여 탐지를 어렵게 만드는 경우가 많습니다.
- 일반적인 기술: 워크플로에 포함된 curl 또는 wget과 같은 간단한 명령을 사용하여 CI/CD 파이프라인의 운영 컨텍스트를 악용하여 공격자가 제어하는 엔드포인트로 데이터를 보낼 수 있습니다.
LinkedIn 추천
GitHub Actions 취약성을 보여주는 실제 익스플로잇
- RoguePuppet: 공급망의 악몽: 이 공격은 GitHub Actions를 악용하여 인기 있는 오픈 소스 프로젝트에 악성 코드를 도입했습니다. 공격자는 워크플로를 조작하고 자체 호스팅 러너를 악용함으로써 손상된 소프트웨어 패키지를 광범위하게 배포하여 수많은 다운스트림 프로젝트에 영향을 미칠 수 있었습니다.
- AStar 네트워크 손상: 공격자가 GitHub Actions의 취약점을 악용하여 AStar의 블록체인 인프라에 침투했습니다. 잘못 구성된 워크플로를 활용하여 중요한 네트워크 노드에 무단으로 액세스하여 보안되지 않은 CI/CD 파이프라인과 관련된 심각한 위험을 입증했습니다.
- Microsoft 경계 위반: CI/CD 보안의 높은 위험을 강조하면서 공격자는 GitHub Actions 취약점을 사용하여 Microsoft의 내부 네트워크를 침해하고 기존 보안 조치를 우회하고 민감한 내부 리소스에 액세스했습니다.
GitHub Actions 취약점 공개: 공격 벡터 및 완화에 대한 포괄적인 기술 가이드
소개
GitHub Actions는 CI/CD를 위한 강력한 도구로, GitHub 리포지토리 내에서 직접 워크플로를 원활하게 자동화합니다. 이 기능은 개발을 간소화하는 동시에 제대로 보호되지 않으면 악용될 수 있는 중요한 공격 표면을 노출하기도 합니다. John Stawinski는 Adnan Khan과 협력하여 Black Hat USA 2024 및 DEF CON 32에서 발표된 자세한 시각적 가이드인 GitHub Actions 공격 다이어그램에서 이러한 취약점을 꼼꼼하게 매핑했습니다. 이 다이어그램에서는 초기 액세스부터 정교한 악용 후 전술에 이르기까지 GitHub Actions 워크플로에 사용되는 다양한 공격 경로, 기술 및 악용 전략을 살펴봅니다. 이 문서에서는 GitHub Actions 보안을 강화하기 위한 실행 가능한 인사이트와 모범 사례를 통해 이러한 공격 벡터에 대해 자세히 설명합니다.
GitHub Actions 공격 표면 이해
GitHub Actions 공격 다이어그램은 GitHub Actions 워크플로의 취약점을 식별하고 악용하기 위한 포괄적인 가이드 역할을 합니다. 저장소에 대한 읽기 또는 쓰기 액세스 권한을 얻는 기본 사항부터 시작하여 비밀 유출, 원격 코드 실행 및 내부 네트워크 액세스를 포함한 잠재적인 익스플로잇의 복잡한 웹으로 분기됩니다. Stawinski의 다이어그램은 단순한 도구가 아닙니다. 이는 CI/CD 파이프라인에 내재된 위험을 탐색하기 위한 청사진이며 세심한 보안 관행의 중요성을 강조합니다.
주요 공격 벡터 세부 정보
1. 초기 액세스: 읽기 및 쓰기 권한 악용
- 쓰기 액세스: 커밋 그 이상
- 읽기 액세스: 미묘한 위협
2. GitHub Actions 활용: 워크플로 구성 오류 및 코드 삽입
- 끌어오기 요청 (홍보) 남용: 일반적인 진입점
- 직접 워크플로 주입
3. 원격 코드 실행 달성 (RCE)
원격 코드 실행은 GitHub Actions의 중요한 손상 지점으로, 공격자가 CI/CD 환경 내에서 임의의 코드를 실행할 수 있도록 합니다.
- 자체 호스팅 러너: 고부가가치 대상
- 러너 구성 오류
4. 내부 네트워크 액세스: 차세대 개척지
RCE가 달성되면 공격자는 손상된 러너를 내부 네트워크에 더 깊이 침입하기 위한 런치패드로 사용할 수 있습니다.
- 정찰 및 측면 이동
- 데이터 유출
5. 비밀 훔치기: 궁극적인 목표
CI/CD 파이프라인 내의 비밀은 추가 액세스 및 악용 가능성을 잠금 해제할 수 있으므로 공격자에게 높은 평가를 받는 경우가 많습니다.
- 환경 변수 덤프
- 워크플로 내 비밀 도용
GitHub Actions 취약성을 보여주는 실제 익스플로잇
- RoguePuppet: 공급망의 악몽: 이 공격은 GitHub Actions를 악용하여 인기 있는 오픈 소스 프로젝트에 악성 코드를 도입했습니다. 공격자는 워크플로를 조작하고 자체 호스팅 러너를 악용함으로써 손상된 소프트웨어 패키지를 광범위하게 배포하여 수많은 다운스트림 프로젝트에 영향을 미칠 수 있었습니다.
- AStar 네트워크 손상: 공격자가 GitHub Actions의 취약점을 악용하여 AStar의 블록체인 인프라에 침투했습니다. 잘못 구성된 워크플로를 활용하여 중요한 네트워크 노드에 무단으로 액세스하여 보안되지 않은 CI/CD 파이프라인과 관련된 심각한 위험을 입증했습니다.
- Microsoft 경계 위반: CI/CD 보안의 높은 위험을 강조하면서 공격자는 GitHub Actions 취약점을 사용하여 Microsoft의 내부 네트워크를 침해하고 기존 보안 조치를 우회하고 민감한 내부 리소스에 액세스했습니다.
GitHub Actions 보안을 위한 모범 사례
- 최소 권한 원칙 채택: 필요한 최소한의 권한으로 워크플로를 구성합니다. 광범위한 쓰기 권한을 부여하지 말고 토큰의 범위가 의도된 용도에 맞게 엄격하게 설정되었는지 확인합니다.
- 자체 호스팅 실행기 격리: 네트워크 세분화를 사용하고 민감한 환경에 대한 액세스를 제한합니다. 자체 호스팅 실행기는 추가 내부 악용의 발판이 되지 않도록 격리되어야 합니다.
- 포괄적인 모니터링 및 경고: 모든 GitHub Actions 활동의 로깅 및 모니터링을 구현합니다. 무단 워크플로 변경, 예기치 않은 실행기 동작 및 표준에서 벗어난 액세스 패턴에 대한 경고를 설정해야 합니다.
- 보안 검토 자동화: 일반적인 잘못된 구성, 노출된 비밀 및 보안 취약성에 대해 GitHub Actions 설정을 감사할 수 있는 Gate 및 Gato-X와 같은 도구를 사용하여 워크플로 구성을 정기적으로 검토합니다.
- 빈번한 비밀 순환 및 관리: 자동화된 비밀 관리 솔루션을 활용하여 정기적으로 비밀을 순환하고 노출된 비밀을 취소합니다. 비밀이 필요한 워크플로에서만 비밀에 액세스할 수 있도록 하고 사용 제한을 구현하여 위험을 최소화합니다.
- 정기적인 워크플로 감사: 보안 모범 사례를 준수하는지 모든 워크플로를 주기적으로 검토합니다. 제3자의 작업 및 종속성은 주의 깊게 조사하지 않으면 취약점을 유발할 수 있으므로 세심한 주의를 기울이십시오.
결론
John Stawinski 의 GitHub Actions 공격 다이어그램은 CI/CD 워크플로에 내재된 취약점 및 공격 벡터에 대한 귀중한 통찰력을 제공합니다. 이러한 파이프라인이 계속 발전하고 개발 프로세스에 깊이 통합됨에 따라 이러한 위험을 이해하고 완화하는 것이 필수적입니다. 이 문서에 자세히 설명된 보안 조치를 구현함으로써 조직은 악용 가능성을 크게 줄이고 지능형 위협으로부터 GitHub Actions 환경을 보호할 수 있습니다.
참조
John Stawinski 와 Adnan Khan의 GitHub Actions 취약점에 대한 자세한 탐구는 Black Hat USA 2024 및 DEF CON 32에서 발표되었습니다. GitHub Actions 공격 다이어그램은 최신 위협으로부터 CI/CD 워크플로를 보호하려는 모든 사람에게 중요한 리소스를 제공합니다. 더 많은 통찰력을 얻으려면 Black Hat의 "지속적 통합, 지속적인 파괴"와 DEF CON의 "Grand Theft Actions"와 같은 강연을 검토하고 GitHub에서 사용할 수 있는 게시된 리소스를 참조하세요.
Great summary!! Thanks for taking the time to go through the diagram:)