취약점에서 승리까지: CI/CD 파이프라인 방어

모든 게시물

자동화된 CI/CD(지속적 통합/지속적 전달) 파이프라인은 개발 속도를 높이는 데 사용됩니다. 코드를 가져오고, 병합하고, 빌드하고, 테스트하고, 자동으로 제공하는 트리거나 일정을 갖추는 것은 정말 멋진 일입니다. 그러나 속도와 사용 편의성을 위해 구축되었다는 것은 대부분의 파이프라인이 본질적으로 보안을 염두에 두고 구축되지 않았다는 것을 의미합니다. 파이프라인은 일반적으로 종속성을 다운로드하기 위해 인터넷에 액세스할 수 있어야 하고 프로덕션 환경에 업로드하기 위해 다양한 비밀에 액세스해야 하기 때문에 이러한 파이프라인이 손상되면 공격자는 작업을 중단하거나 작업을 방해할 수 있는 다양한 옵션을 갖게 됩니다. 정보나 비밀을 유출합니다.

이 기사에 제시된 모든 이야기는 주요 CI/CD 도구의 위반에 대해 설명합니다. 대부분의 회사가 이러한 도구에 의존한다는 사실은 다른 많은 회사와 마찬가지로 소프트웨어 공급망 공격, 나쁜 행위자에게 필요한 모든 것은 단일 목표를 침해하여 광범위한 폭발 반경을 얻는 것입니다.
이 공격 벡터에 내재된 취약점을 보여주는 지난 몇 년간의 몇 가지 주요 사례를 살펴보겠습니다. 기사 끝부분에서는 사용 중인 도구에 관계없이 파이프라인을 강화하고 보호하기 위한 권장 사항을 제공하겠습니다.

CircleCI 위반

2023년 XNUMX월 지속적인 통합 및 전달 플랫폼인 CircleCI가 보안 위반 이는 공격자가 회사 인프라에 무단으로 액세스할 수 있도록 허용했습니다. 공격은 직원을 속여 자격 증명을 공유하도록 속인 피싱 이메일로 시작되었으며, 공격자는 이를 사용하여 회사 시스템에 액세스했습니다. 직원은 2FA를 활용하고 있었지만 직원이 이미 시스템에 로그인한 후 공격자는 세션 쿠키를 확보하여 직원을 가장하고 결국 CircleCI 프로덕션 시스템의 하위 집합에 대한 액세스를 확대할 수 있었습니다.

공격자는 이름, 이메일 주소, 청구 정보를 포함한 일부 고객 데이터에 액세스했습니다. 회사는 코드나 지적 재산에 액세스한 적이 없으며, 계정이나 데이터에 대한 무단 액세스를 보고한 고객도 없다고 보고했습니다.

CircleCI는 위반에 신속하게 대응하여 조사를 수행하고 법 집행 기관 및 사이버 보안 전문가와 협력하여 공격 범위를 파악하고 공격이 발생할 수 있는 취약점을 해결했습니다. 또한 회사는 모든 직원 및 고객 자격 증명을 재설정하고 시스템 모니터링 강화와 같은 추가 보안 조치를 구현했습니다.

DevOps 중단: Argo CD 보안 침해

Argo CD는 Kubernetes 클러스터에 애플리케이션을 지속적으로 배포하는 데 널리 사용되는 오픈 소스 도구입니다. 2022년 XNUMX월에는 Argo CD에서 새로운 취약점이 발견되었습니다. 이는 인증되지 않은 사용자가 도구로 관리되는 Kubernetes 애플리케이션에 대한 민감한 정보에 액세스할 수 있도록 허용했습니다. 이 취약점은 승인되지 않은 사용자가 API에 대한 요청을 실행하고 비밀, 구성 및 애플리케이션 메타데이터와 같은 정보를 검색할 수 있도록 허용하는 Argo CD API 서버의 잘못된 구성으로 인해 발생했습니다. 공격자가 애플리케이션을 만들거나 업데이트할 수 있는 권한이 있고 유효한 YAML이 포함된 파일의 전체 경로를 알고 있거나 추측할 수 있는 한 악의적인 Helm 차트를 만들고 유용한 데이터 조각을 찾을 때까지 YAML 파일을 값으로 계속 사용할 수 있습니다. 일반적으로 액세스할 수 없습니다.

이 취약점에는 CVSS 점수 7.5(심각도 높음)가 지정되었으며 버전 2.1.4까지 Argo CD의 모든 버전에 영향을 미쳤습니다. Argo CD는 버전 2.1.5의 취약점에 대한 패치를 출시했으며 사용자는 가능한 한 빨리 이 버전으로 업그레이드할 것을 권고 받았습니다.

Argo CD는 생산 환경에서 중요한 애플리케이션과 인프라를 관리하는 데 자주 사용되기 때문에 이 취약점은 특히 우려되는 것으로 간주되었습니다. 민감한 정보가 유출되면 공격자는 민감한 데이터에 접근하거나 애플리케이션의 가용성이나 보안에 영향을 미칠 수 있는 기타 악의적인 작업을 수행할 수 있습니다.

Codecove 침해 발견: 교훈

Codecov는 개발자가 테스트 효과를 측정하고 분석할 수 있도록 하는 CI/CD 파이프라인 내부에 사용되는 코드 적용 범위 추적 및 분석 도구입니다. Codecov에 게시된 대로 보안 업데이트

“1년 2021월 XNUMX일 목요일에 우리는 누군가가 우리 회사에 무단으로 접근했다는 사실을 알게 되었습니다. 배쉬 업로더 우리 허락 없이 스크립트를 수정하고 수정했습니다. 공격자는 Bash 업로더 스크립트를 수정하는 데 필요한 자격 증명을 추출할 수 있는 Codecov의 Docker 이미지 생성 프로세스 오류로 인해 액세스 권한을 얻었습니다.”

Bash Uploader는 고객이 코드 범위 보고서를 Codecove 플랫폼에 업로드하는 데 사용됩니다. 이 액세스를 통해 공격자는 업로드 프로세스 중에 사용자 시스템에서 환경 변수, 인증 토큰 및 기타 민감한 데이터를 수집하는 악성 코드를 추가하여 Bash Uploader 스크립트를 수정했습니다. 그런 다음 이 데이터는 공격자가 제어하는 ​​원격 서버로 전송되었습니다.

Codecove에 따르면 이번 침해 사고는 기술, 금융, 의료 업계의 주요 기업을 포함한 고객 기반의 약 1%에 영향을 미쳤습니다. 회사는 위반 중에 고객 코드나 코드 범위 보고서가 변경되지 않았지만 사용자 인증 토큰 및 기타 민감한 정보가 손상되었을 수 있음을 확인했습니다.

Codecove는 악성 코드를 제거하기 위한 즉각적인 조치를 취했으며 영향을 받은 고객에게 인증 토큰을 재설정하고 기타 보안 조치를 취하도록 경고했습니다. 또한 회사는 사건에 대한 조사를 시작했으며 공격의 원인을 파악하기 위해 법 집행 기관 및 사이버 보안 전문가와 협력했습니다.

파이프라인을 어떻게 방어할 수 있나요?

파이프라인을 보여주는 이미지

데이터 센터 건물의 냉각탑 세트.

위에서 언급한 것처럼 CI/CD 파이프라인은 보안을 위해서가 아니라 속도와 자동화를 위해 구축되었습니다. 크고 존경받는 3개 회사가 모두 일종의 공격에 희생되어 고객의 정보가 노출될 가능성이 있다는 사실은 귀하의 파이프라인과 데이터가 취약하다는 것을 보여줍니다.
어떤 도구나 CI/CD 플랫폼을 사용하든 보안을 강화하고 악의적인 행위자가 파이프라인이나 네트워크에 액세스하는 경우 발생할 수 있는 피해를 줄이기 위해 몇 가지 작업을 수행할 수 있습니다.

  • 위협 모델링 – 위협 모델링은 시스템이나 애플리케이션에 대한 잠재적인 보안 위협을 식별하고 이러한 위협을 완화하기 위한 적절한 대책을 설계하는 구조화된 접근 방식입니다. 연습으로 누군가가 귀하의 파이프라인에 액세스했다고 가정해 보십시오. 이제 어떤 환경에 액세스할 수 있나요? 그들은 어떤 비밀과 열쇠를 보고 사용할 수 있나요? 그들이 당신의 코드를 수정할 수 있나요? 영향 테스트? 웹에서 파일을 가져오거나 리버스 셸을 실행하시겠습니까? 파이프라인을 정리하고 네트워크 액세스를 적절하게 분할했다고 생각하더라도 최악의 시나리오를 파악하기 위해 상상하고 확인하는 것도 나쁘지 않습니다. 파이프라인 플랫폼이나 도구 내부에 어떤 비밀과 액세스 옵션이 숨겨져 있는지 놀랄 수도 있습니다.
  • 네트워크 세분화 – 네트워크 분할은 대규모 네트워크를 각각 고유한 보안 제어 및 정책이 있는 더 작고 더 안전한 하위 네트워크 또는 세그먼트로 나누는 방식입니다. 네트워크 분할의 목적은 잠재적인 보안 침해의 범위를 제한하고 공격의 잠재적 영향을 최소화하여 전체 네트워크의 보안을 강화하는 것입니다. 네트워크를 더 작은 세그먼트로 나누면 공격자의 측면 이동이 제한되고 무단 액세스 또는 데이터 유출 위험이 줄어듭니다.
    피싱 공격의 인기가 높아짐에 따라 개발자나 다른 직원 중 누구라도 그러한 사기의 피해자가 될 수 있습니다. 우리는 모두 인간입니다. 개발자의 자격 증명이 악의적인 행위자에 의해 사용될 수 있다고 가정한다는 것은 대다수의 개발자가 혼자서 비밀을 유출하고 프로덕션 이미지에 악성 코드를 삽입할 수 있는 액세스 권한을 가져서는 안 된다는 것을 의미합니다. 아니면 경쟁 없이 자체 버전의 프로덕션 코드를 푸시할 수도 있습니다. 각 개인이 자신의 작업에 필요한 최소한의 액세스 권한을 갖도록 하는 것은 시간이 많이 소요되며, 모든 사람에게 관리자 액세스 권한을 부여하고 끝내고 싶은 유혹이 강합니다. 어두운 면의 유혹에 빠지지 마십시오. 제로 트러스트 및 최소 권한 규칙을 따르십시오.
  • 모니터링 및 경고 – 마지막 지점에 이어 개발자가 피싱 및 기타 사회 공학 사기에 지치도록 철저하게 훈련했더라도 여전히 침해가 발생할 수 있습니다. 언제, 어떻게 될지는 모르지만 최소한 알아낼 수는 있다는 준비가 되어 있어야 합니다. 대부분의 파이프라인 환경은 임시적이므로 작업이 완료되면 이러한 추적을 직접 만들지 않는 한 무슨 일이 일어났는지에 대한 증거를 찾을 수 없다는 의미입니다.
    파이프라인, 각 PR, 병합, 빌드 및 테스트 완료 시 발생하는 모든 것을 기록하세요. 문제에 대한 확인이 필요한 경우 검토할 수 있도록 사용자 정보도 기록되어 있는지 확인하십시오. 구성 파일이나 환경 자체에 대한 모든 변경 사항도 기록되어야 합니다. 여기서 목표는 위반에 대해 명확한 사후 조사를 수행하여 무슨 일이 어떻게 발생했는지 알 수 있도록 하는 것입니다. 경고가 필요한 이벤트를 미리 결정하고 적절한 사람이 해당 경고를 받도록 하십시오. 쓸모 없거나 잘못된 경고로 사람들이 넘쳐나지 않도록 주의하십시오. 경고 피로를 유발하여 경고를 무시하거나 권장되는 것보다 훨씬 늦게 응답하게 만들 수 있습니다. 분명히 이러한 로그에는 공개된 비밀이나 키가 포함되어서는 안 됩니다. 이는 다음 중요 항목으로 연결됩니다.
  • 비밀 관리 – 일종의 비밀 관리 도구를 사용하고 있는지 확인하십시오. 최소한 위반이 발생하는 경우 비밀과 비밀번호를 교체하는 것이 더 쉬워질 것입니다. 또한 시스템에서 수행된 모든 로깅에서 파이프라인에 있는 공개 비밀 및 액세스 키를 수정하는 작업도 수행해야 합니다. 승인되지 않은 사람은 어떠한 경우에도 해당 정보에 접근할 수 없으며 이를 변경할 수도 없습니다.
    조직이 클라우드 기반 서비스, 컨테이너화된 애플리케이션, 다양한 시스템과 애플리케이션 전반에서 비밀을 안전하게 공유하고 관리해야 하는 기타 분산 환경에 점점 더 의존함에 따라 비밀 관리는 점점 더 중요해지고 있습니다.
  • 최소 권한과 결합된 RBAC 원칙 사용 – RBAC(역할 기반 액세스 제어)의 원칙은 조직 내에서 사용자에게 할당된 역할이나 직무를 기반으로 시스템 리소스에 대한 액세스를 제공하는 것입니다. RBAC에서 사용자에게는 파일, 폴더 또는 응용 프로그램과 같은 다양한 시스템 리소스에 대한 권한과 액세스 권한을 정의하는 역할이 할당됩니다. 반면, 최소 권한의 원칙은 사용자에게 업무 기능을 수행하는 데 필요한 최소한의 액세스 수준과 권한을 부여하는 관행입니다. 즉, 사용자는 특정 작업을 수행하는 데 필요한 리소스에만 액세스할 수 있으며 그 이상은 액세스할 수 없습니다. RBAC와 최소 권한은 보완적인 보안 원칙으로 함께 사용되는 경우가 많습니다. RBAC에서는 사용자에게 업무 기능을 수행하는 데 필요한 리소스에 대한 적절한 액세스 수준을 가진 역할이 할당되며, 최소 권한 원칙은 사용자가 특정 작업을 수행하는 데 필요한 최소 수준의 리소스에만 액세스할 수 있도록 보장합니다. 이러한 원칙은 무단 액세스 또는 데이터 침해의 위험을 최소화하면서 안전하고 잘 관리되는 시스템을 유지하는 데 도움이 됩니다. 보안을 강화하기 위해 시스템의 중요한 작업을 수행하려면 여러 사용자 인증이 필요하도록 설정할 수 있습니다. 이 접근 방식은 개발 작업 속도를 크게 저하시킬 수 있으므로 주의해서 사용해야 합니다. 다만, 메인 브랜치 삭제나 종속성 목록 수정 등 중요한 업데이트의 경우에는 적절한 접근권한을 가진 2명 이상의 승인이 필요하도록 만들어야 합니다.

기대

작업 속도를 높이기 위해 CI/CD 및 기타 자동화 도구 사용을 중단할 사람은 없습니다. 우리는 더 빠르고 더 빠른 코드 업데이트를 위해 끊임없이 노력하는 세상에 살고 있습니다. 보안을 인식하는 방식으로 수행하고 그 과정에서 코드와 생산 환경을 손상시키지 않는지 확인하면 됩니다.

당신이 할 수 있는 가장 중요한 일 중 하나는 승인되지 않은 사람이 접근할 경우 어떤 일이 일어날 수 있는지 생각해 보는 것입니다. 파이프라인과 네트워크에서 위험과 취약한 다양한 위치를 알게 되면 잠재적인 누출을 막기 위한 올바른 조치를 취할 수 있을 것이라고 믿습니다.

Scribe는 개발 프로세스 및 파이프라인에서 발생하는 상황에 대한 투명성을 제공하도록 설계된 플랫폼을 갖춘 소프트웨어 공급망 보안 회사입니다. Scribe가 파이프라인을 보호하는 데 어떻게 도움이 되는지 자세히 알아보려면 여기를 클릭해주세요..

이 콘텐츠는 소프트웨어 공급망 전반에 걸쳐 코드 아티팩트와 코드 개발 및 전달 프로세스에 최첨단 보안을 제공하는 선도적인 엔드투엔드 소프트웨어 공급망 보안 솔루션 제공업체인 Scribe Security에서 제공합니다. 자세히 알아보기.