지난달에 내가 왔어. 이 문서 다크 리딩에서. 그것은 매우 친숙해 보였습니다. 기사에서 논의된 GitHub 워크플로 간 아티팩트 중독 취약성이 GitHub 워크플로 간 아티팩트와 매우 유사하다는 사실을 깨닫는 데는 오랜 시간이 걸리지 않았습니다. 캐시 포이즈닝 2022년 XNUMX월에 보고된 취약점입니다.
GitHub 워크플로 - GitHub CI/CD 파이프라인의 핵심 구성 요소
GitHub 워크플로는 CI/CD 파이프라인의 일부로 수행해야 하는 특정 작업을 정의하는 데 사용됩니다. 이는 GitHub 저장소의 특정 이벤트에 의해 트리거될 수 있는 자동화된 프로세스입니다. 예를 들어, 이러한 이벤트는 코드가 저장소에 푸시될 때, 풀 요청이 열리거나 닫힐 때 또는 새 릴리스가 게시될 때 발생합니다.
워크플로는 워크플로가 트리거될 때 수행해야 하는 작업을 지정하는 YAML 파일을 사용하여 생성됩니다. 이러한 작업은 개발자가 작성하거나 10,000개 이상의 사전 제작된 작업을 다운로드하여 사용할 수 있는 GitHub 마켓플레이스에서 전체 내용을 가져올 수 있습니다.
워크플로는 일련의 단계로 정의되는 하나 이상의 작업으로 구성됩니다. 단계는 테스트 실행, 코드 배포, 패키지 게시 등 다양한 작업일 수 있습니다.
GitHub 워크플로는 개발자가 워크플로를 자동화하고 간소화하여 시간과 노력을 절약하고 소프트웨어 개발 프로세스의 안정성을 향상시키는 데 도움이 되는 강력한 도구이지만 내장된 결함이 없는 것은 아닙니다.
GitHub 워크플로를 사용할 때 발생할 수 있는 몇 가지 잠재적인 보안 문제가 있습니다. 다음은 몇 가지 일반적인 사항입니다.
- 승인되지 않은 접근: 적절하게 구성되거나 보호되지 않은 워크플로는 권한이 없는 사용자가 잠재적으로 액세스하여 트리거할 수 있습니다. 이로 인해 임의의 코드를 실행하거나 기타 승인되지 않은 작업을 수행할 수 있습니다.
- 비밀 유출: 워크플로에서는 외부 리소스에 액세스하거나 특정 작업을 수행하기 위해 API 키 또는 비밀번호와 같은 비밀을 사용해야 하는 경우가 많습니다. 이러한 비밀이 제대로 보호되지 않으면 잠재적으로 유출되어 보안 위반이 발생할 수 있습니다.
- 안전하지 않은 의존성s: 외부 라이브러리 또는 종속성에 의존하는 워크플로는 해당 종속성이 안전하지 않은 경우 잠재적으로 공격에 취약할 수 있습니다. 종속성이 안전한지 확인하려면 정기적으로 종속성을 검토하고 업데이트하는 것이 중요합니다.
- 입력 검증 및 정리가 부족함: 입력의 유효성을 제대로 검사하지 않는 워크플로는 잠재적으로 임의 코드를 실행하거나 기타 승인되지 않은 작업을 수행하는 데 악용될 수 있습니다.
위에서 언급한 문서에서 논의된 두 가지 워크플로 간 취약점을 자세히 살펴보겠습니다.
워크플로 간 아티팩트 중독
GitHub 워크플로 아티팩트는 CI/CD 파이프라인에서 수행된 작업의 산물입니다. 일반적으로 각 워크플로에는 이러한 아티팩트를 저장하기 위한 자체 버킷이 있지만 때로는 워크플로가 다른 워크플로에서 생성된 아티팩트에 액세스해야 하는 경우도 있습니다. GitHub에서는 워크플로가 다른 워크플로의 스토리지/아티팩트에 완전히 액세스하는 것을 허용하지 않습니다. 이 문제를 해결하기 위해 기본 필터링을 기반으로 아티팩트를 다운로드할 수 있는 GitHub 승인 API가 있습니다. 문제는 API가 포크된 저장소에서 업로드된 아티팩트와 기본 저장소에서 업로드된 아티팩트를 구별하지 못한다는 것입니다. 즉, 포크된 저장소에서 생성된 잠재적으로 오염된 아티팩트를 업로드하는 것은 실제적이고 현존하는 위험입니다.
이 문제를 해결하기 위해 GitHub는 아티팩트를 다운로드할 때 아티팩트 메타데이터뿐만 아니라 추가 정보를 제공하기 시작했습니다. 이 정보는 작성자가 올바른 아티팩트를 다운로드하고 있는지 확인하는 데 도움이 되도록 설계되었습니다. 현재 GitHub에서는 워크플로 간 아티팩트의 기본 문제를 문제로 간주하지 않습니다. 이 문제에 대해 자세히 알아보려면 다음을 확인하세요. 기사 위에 언급했듯이.
워크플로 간 캐시 중독
GitHub를 사용하면 아티팩트 및 패키지 캐싱을 통해 CI/CD 파이프라인 속도를 높일 수 있습니다. 필요할 수 있는 각 워크플로에 대해 필요한 아티팩트와 패키지를 반복해서 다운로드하는 대신 캐시하여 다른 워크플로에서 사용할 수 있습니다.
캐시는 워크플로 간에 공유되므로 변경 권한이 있는 캐시를 사용하는 워크플로에서 단일 위반만 발생하면 해당 캐시는 다음의 모든 워크플로 사용에서 손상될 수 있습니다. 캐시는 다운로드할 새 아티팩트나 패키지가 있는 경우에만 업데이트되므로 단일 중독 캐시가 오랫동안 활성화되어 해당 파이프라인에서 실행되는 수많은 소프트웨어 빌드 반복에 영향을 미칠 수 있음을 의미합니다.
GitHub는 잠재적으로 오염된 캐시 문제를 문제로 간주하지 않습니다. 캐시는 유용한 기능이며 워크플로 간 공유 기능은 현재로서는 버그나 완전한 보안 문제로 간주되지 않습니다. 이 문제에 대해 자세히 알아보려면 다음을 확인하세요. 기사 위에 언급했듯이.
기타 덜 알려진 GitHub 취약점 및 이를 방어하는 방법
GitHub는 세계에서 가장 인기 있는 소스 제어 관리(SCM) 시스템 중 하나입니다. 따라서 CI/CD 파이프라인, 작업 및 워크플로를 사용하여 소프트웨어를 구축하고 배포하는 데에도 널리 사용됩니다.
사람들은 GitHub가 코드 공유 및 공동 개발을 촉진하기 위해 만들어졌다는 것을 기억해야 합니다. 원래는 오픈 소스 개발자를 위해 설계되었으며 나중에 기업 및 조직 계정 기능이 추가되었습니다. 근본적으로 보안은 시스템의 주요 관심사가 아니었습니다. 해야한다는 사실 특별한 설정 GitHub에서 계정의 보안 기능을 활성화한다는 것은 Git을 사용하면 본질적으로 더 안전하다는 생각은 환상에 불과하다는 것을 의미합니다.
이번 달 말에는 Scribe가 호스팅할 예정입니다. 차치 조른스테인, Checkmarx의 소프트웨어 공급망 책임자인 웨비나에서 GitHub의 잠재적인 소프트웨어 공급망 함정에 대해 이야기합니다.
잘 알려지지 않은 이러한 취약점 종류와 이를 방어하는 방법에 대해 자세히 알아보려면 이 온디맨드를 들어보세요. 웨비나.
이 콘텐츠는 소프트웨어 공급망 전반에 걸쳐 코드 아티팩트와 코드 개발 및 전달 프로세스에 최첨단 보안을 제공하는 선도적인 엔드투엔드 소프트웨어 공급망 보안 솔루션 제공업체인 Scribe Security에서 제공합니다. 자세히 알아보기.