DevOps 환경 보안 태세

완료됨

소스 코드 관리 시스템과 연속 통합/지속적인 업데이트 파이프라인에 대한 사이버 공격이 증가함에 따라 DevOps 위협 행렬에서 식별된 다양한 위협으로부터 DevOps 플랫폼을 보호하는 것이 중요해졌습니다. 이러한 사이버 공격은 코드 주입, 권한 상승, 데이터 반출을 가능하게 하여 잠재적으로 광범위한 영향을 미칠 수 있습니다.

DevOps 상태 관리는 다음과 같은 클라우드용 Microsoft Defender의 기능입니다.

  • 전체 소프트웨어 공급망 수명 주기의 보안 태세에 대한 인사이트를 제공합니다.
  • 심층적인 평가를 위해 고급 스캐너를 사용합니다.
  • 조직, 파이프라인, 리포지토리 등 다양한 리소스를 다룹니다.
  • 고객은 제공된 권장 사항을 찾아 조치를 취함으로써 공격 표면을 줄일 수 있습니다.

DevOps 스캐너

결과를 제공하기 위해 DevOps 상태 관리는 DevOps 스캐너를 사용하여 보안 구성 및 액세스 제어에 대한 검사를 실행하여 소스 코드 관리 및 연속 통합/지속적인 업데이트 파이프라인의 약점을 식별합니다.

Azure DevOps 및 GitHub 스캐너는 Microsoft 내부에서 DevOps 리소스와 관련된 위험을 식별하여 공격 표면을 줄이고 기업 DevOps 시스템을 강화하는 데 사용됩니다.

DevOps 환경이 연결되면 클라우드용 Defender는 다음을 포함하여 여러 DevOps 리소스에 대해 24시간마다 되풀이 검사를 수행하도록 이러한 스캐너를 자동 구성합니다.

  • 빌드
  • 보안 파일
  • 변수 그룹
  • 서비스 연결
  • 조직
  • 리포지토리

DevOps 위협 행렬 위험 감소

DevOps 상태 관리는 조직이 DevOps 플랫폼에서 유해한 구성 오류를 발견하고 수정하는 데 도움을 줍니다. 이는 DevOps 위협 행렬에 정의된 다양한 위협에 대해 강화된 복원력 있는 제로 신뢰 DevOps 환경으로 이어집니다. 기본 상태 관리 제어에는 다음이 포함됩니다.

  • 범위가 지정된 비밀 액세스: 각 파이프라인이 해당 함수에 필수적인 비밀에만 액세스할 수 있도록 하여 중요한 정보의 노출을 최소화하고 무단 액세스, 데이터 유출 및 측면 이동의 위험을 줄입니다.
  • 자체 호스팅 실행기 및 높은 권한 제한: 자체 호스팅 실행기를 방지하고 파이프라인 권한을 기본적으로 읽기 전용으로 설정하여 무단 실행 및 잠재적인 에스컬레이션을 방지합니다.
  • 향상된 분기 보호: 분기 보호 규칙을 적용하고 악성 코드 주입을 방지하여 코드 무결성을 유지합니다.
  • 최적화된 권한 및 보안 리포지토리: 최소 기본 권한을 추적하고 리포지토리에 대한 비밀 푸시 보호를 사용하도록 설정하여 무단 액세스, 수정 위험을 줄입니다.

DevOps 위협 매트릭스

DevOps를 위한 위협 매트릭스를 개발하는 목표는 Defender가 관련 공격 기술을 추적하고 이에 대한 방어를 빌드하는 데 사용할 수 있는 포괄적인 지식 기반을 빌드하는 것입니다. MITRE ATT&CK 프레임워크를 기반으로 DevOps 환경과 관련된 기술 및 공격 벡터를 수집하고 DevOps 공격 방법 전용 매트릭스를 만들었습니다.

이 매트릭스의 전술을 DevOps 관점에서 살펴봐야 한다는 점은 주목할 가치가 있습니다. 예를 들어, Windows 또는 Linux OS를 실행하는 가상 머신의 실행 기술은 DevOps 파이프라인의 실행과 다릅니다. Linux의 경우 실행이란 OS에서 코드를 실행하는 것을 의미합니다. DevOps 환경에 관해 이야기할 때 이는 파이프라인이나 DevOps 리소스에서 코드를 실행하는 것을 의미합니다. 이 위협 매트릭스를 사용하여 공격 및 해당 방어 방법을 분류하는 것 외에도 Defender는 레드 팀과 협력하여 지속적으로 가정을 테스트하고 새로운 잠재적 공격 기술을 찾을 수 있습니다.

MITRE ATT&CK 정의됨

MITRE ATT&CK 매트릭스는 사이버 공격 중에 공격자가 사용하는 다양한 전술과 기술을 이해하기 위한 공개적으로 액세스할 수 있는 기술 자료입니다.

기술 자료는 사전 공격, 초기 액세스, 실행, 지속성, 권한 에스컬레이션, 방어 회피, 자격 증명 액세스, 검색, 횡적 이동, 수집, 반출, 명령 및 제어 등의 여러 범주로 구성됩니다.

전술(T)은 ATT&CK 기술 또는 하위 기술의 "이유"를 나타냅니다. 이것은 악의적 사용자의 전술적 목표(작업 수행 이유)입니다. 예를 들어 악의적 사용자가 자격 증명 액세스를 달성하려고 할 수 있습니다.

기술(T)은 악의적 사용자가 작업을 수행하여 전술적 목표를 달성하는 “방법”을 나타냅니다. 예를 들어 악의적 사용자가 자격 증명 액세스를 달성하기 위해 자격 증명을 덤프할 수 있습니다.

ATT&CK의 CK(상식)는 기본적으로 악의적 사용자가 실행하는 전술과 기술의 문서화된 방식인 상식을 나타냅니다.

초기 액세스

초기 액세스 전술은 공격자가 DevOps 리소스(리포지토리, 파이프라인 및 종속성)에 대한 액세스 권한을 얻기 위해 사용할 수 있는 기술을 나타냅니다. 다음 기술은 다음 단계의 필수 조건이 될 수 있습니다.

SCM(소스 코드 관리) 인증 – 조직의 소스 코드 관리에 대한 인증 방법을 보유하여 액세스합니다. PAT(개인용 액세스 토큰), SSH 키 또는 기타 허용되는 인증 자격 증명일 수 있습니다. 공격자가 이 기술을 달성하기 위해 사용할 수 있는 방법의 예로는 조직에 대한 피싱 공격을 사용하는 것입니다.

CI(연속 통합) 및 CD(지속적인 업데이트) 서비스 인증 – SCM 인증과 유사하게 공격자는 조직의 DevOps를 공격하기 위해 CI/CD 서비스에 대한 인증을 활용할 수 있습니다.

조직의 공용 리포지토리 – CI/CD 기능으로 구성된 조직의 공용 리포지토리에 액세스합니다. 조직의 구성에 따라 이러한 리포지토리에는 PR(끌어오기 요청)이 만들어진 후 파이프라인 실행을 트리거하는 기능이 있을 수 있습니다.

엔드포인트 손상 – 공격자는 기존 손상을 사용하여 손상된 개발자의 워크스테이션을 활용하여 조직의 SCM, 레지스트리 또는 개발자가 액세스할 수 있는 기타 리소스에 액세스할 수 있습니다.

구성된 웹후크 – 조직에 웹후크가 구성되어 있으면 공격자는 SCM 자체를 사용하여 해당 네트워크에 대한 요청을 트리거함으로써 이를 조직의 네트워크에 대한 초기 액세스 방법으로 사용할 수 있습니다. 이로 인해 공개적으로 노출되지 않아야 하는 서비스 또는 개인 네트워크 내에서 오래되고 취약한 소프트웨어 버전을 실행하는 서비스에 대한 액세스 권한이 공격자에게 부여될 수 있습니다.

실행

실행 전술은 파이프라인 리소스(파이프라인 자체 또는 배포 리소스)에 대한 실행 액세스 권한을 얻기 위해 악의적 사용자가 사용할 수 있는 기술을 나타냅니다. 이 섹션의 일부 기술에는 이를 수행하는 다양한 방법 또는 하위 기술이라고 부르는 것에 대한 설명이 포함되어 있습니다.

PPE(Poisoned pipeline execution) – 공격자가 조직의 리포지토리에 코드를 삽입하여 리포지토리의 CI/CD 시스템에서 코드를 실행할 수 있는 기술을 말합니다. 코드 실행을 달성하기 위한 다양한 하위 기술이 있습니다.

  • d-PPE(직접 PPE) – 공격자가 리포지토리 내부의 구성 파일을 직접 수정할 수 있는 케이스입니다. 파이프라인은 새로운 PR에 의해 트리거되고 구성 파일에 따라 실행되므로 공격자는 구성 파일에 악성 명령을 삽입할 수 있으며 이러한 명령은 파이프라인에서 실행됩니다.
  • i-PPE(간접 PPE) – 공격자가 구성 파일을 직접 변경할 수 없거나 이러한 변경 내용이 트리거될 때 고려되지 않는 케이스입니다. 이러한 경우 공격자는 코드를 실행하기 위해 파이프라인에서 사용하는 스크립트(예: make-file, 테스트 스크립트, 빌드 스크립트 등)를 감염시킬 수 있습니다.
  • 공용 PPE – 파이프라인이 오픈 소스 프로젝트에 의해 트리거되는 케이스입니다. 이러한 경우 공격자는 파이프라인을 감염시키기 위해 공용 리포지토리에서 d-PPE 또는 i-PPE를 사용할 수 있습니다.

종속성 변조 – 공격자가 리포지토리의 종속성에 악성 코드를 삽입하여 DevOps 환경 또는 프로덕션 환경에서 코드를 실행할 수 있는 기술을 말합니다. 따라서 종속성을 다운로드하면 악성 코드가 실행됩니다. 코드 실행을 달성하는 데 사용할 수 있는 일부 하위 기술은 다음과 같습니다.

  • 공용 종속성 혼동 – 악의적 사용자가 프라이빗 패키지와 동일한 이름을 가진 공용 악성 패키지를 게시하는 기술입니다. 이 경우 패키지 제어 메커니즘의 패키지 검색은 일반적으로 공용 레지스트리를 먼저 검색하므로 악성 패키지가 다운로드됩니다.
  • 공용 패키지 하이재킹("repo-jacking") – GitHub 사용자 이름 변경 기능 등을 활용하여 관리자 계정을 제어하여 공용 패키지를 하이재킹합니다.
  • Typosquatting – 알려진 공용 패키지와 유사한 이름을 가진 악성 패키지를 게시합니다. 이러한 방식으로 공격자는 사용자가 원하는 패키지 대신 악성 패키지를 다운로드하도록 혼란시킬 수 있습니다.

DevOps 리소스 손상 – 파이프라인은 핵심에서 다른 소프트웨어와 함께 CI/CD 에이전트를 실행하는 컴퓨팅 리소스 집합입니다. 공격자는 파이프라인에 액세스하기 위해 OS, 에이전트 코드, VM에 설치된 기타 소프트웨어 또는 네트워크의 기타 디바이스의 취약성을 악용하여 이러한 리소스를 대상으로 지정할 수 있습니다.

공통 레지스트리 제어 – 공격자가 조직에서 사용하는 레지스트리에 대한 제어권을 획득하면 파이프라인 VM 또는 프로덕션 VM에서 악성 이미지 또는 패키지가 실행될 수 있습니다.

지속성

지속성 전술은 공격자가 피해자 환경에 대한 액세스를 유지하기 위해 사용할 수 있는 다양한 기술로 구성됩니다.

리포지토리 변경 – 공격자는 파이프라인 내부에서 자동 토큰을 사용하여 리포지토리에 액세스하고 코드를 푸시할 수 있습니다(자동 토큰에 충분한 권한이 있다고 가정). 여러 하위 기술을 사용하여 이런 방식으로 지속성을 달성할 수 있습니다.

  • 코드에서 스크립트 변경/추가 – 초기화 스크립트 중 일부를 변경하거나 새 스크립트를 추가하여 공격자를 위한 백도어/스타터를 다운로드할 수 있으므로 파이프라인이 이러한 스크립트를 실행할 때마다 공격자의 코드도 실행됩니다.
  • 파이프라인 구성 변경 – 빌드 프로세스를 계속하기 전에 파이프라인에 새로운 단계를 추가하여 공격자가 제어하는 스크립트를 파이프라인에 다운로드할 수 있습니다.
  • 종속성 위치 구성 변경 – 공격자가 제어하는 패키지를 사용합니다.

Artifacts에 삽입 – 일부 CI 환경에는 여러 파이프라인 실행 간에 공유할 아티팩트를 만드는 기능이 있습니다. 예를 들어, GitHub에서는 파이프라인 구성의 GitHub 작업을 사용하여 아티팩트를 저장하고 다운로드할 수 있습니다.

레지스트리의 이미지 수정 – 파이프라인에 이미지 레지스트리에 액세스할 수 있는 권한이 있는 경우(예: 빌드가 완료된 후 레지스트리에 이미지를 다시 쓰는 경우) 공격자는 레지스트리에 악성 이미지를 수정하고 심을 수 있으며, 이는 사용자의 컨테이너에서 계속 실행됩니다.

서비스 자격 증명 만들기 – 악의적인 악의적 사용자는 환경에서 이미 가지고 있는 액세스 권한을 활용하고 초기 엑세스 방법이 손실된 경우 사용할 새 자격 증명을 만들 수 있습니다. 이는 SCM, 애플리케이션 자체, 클라우드 리소스 등에 대한 액세스 토큰을 만들어 수행할 수 있습니다.

권한 상승

공격자는 권한 상승 기술을 사용하여 피해자 환경에서 권한을 상승시켜 이미 손상된 리소스에 대해 더 높은 권한을 얻을 수 있습니다.

프라이빗 리포지토리의 비밀 – 공격자는 이미 획득한 초기 엑세스 방법을 활용하여 프라이빗 리포지토리에서 숨겨진 비밀을 검사할 수 있습니다. 프라이빗 리포지토리에서 숨겨진 비밀을 찾을 확률은 공용 리포지토리보다 높습니다. 개발자의 관점에서 볼 때 조직 외부에서는 액세스가 불가능하기 때문입니다.

보호된 분기에 커밋/푸시 – 파이프라인은 허용된 액세스로 구성될 수 있는 리포지토리에 액세스할 수 있습니다. 이를 통해 코드를 보호된 분기에 직접 푸시할 수 있으며, 악의적 사용자가 팀 개입 없이 중요한 분기에 코드를 직접 삽입할 수 있습니다.

메타데이터 서비스의 인증서 및 ID – 공격자가 클라우드 호스팅 파이프라인에서 실행되면 공격자는 파이프라인 내부에서 메타데이터 서비스에 액세스하고 이러한 서비스에서 인증서(높은 권한 필요)와 ID를 추출할 수 있습니다.

자격 증명 액세스

공격자는 자격 증명을 훔치기 위해 자격 증명 액세스 기술을 사용합니다.

사용자 자격 증명 – 고객이 CI 파이프라인의 외부 서비스(예: 외부 데이터베이스)에 액세스해야 하는 경우 이러한 자격 증명은 파이프라인 내부에 상주하며(CI 비밀, 환경 변수 등에 의해 설정될 수 있음) 악의적 사용자가 액세스할 수 있습니다.

서비스 자격 증명 – 공격자가 SPN(서비스 주체 이름), SAS(공유 액세스 서명) 토큰 등과 같은 서비스 자격 증명을 찾아 파이프라인에서 직접 다른 서비스에 대한 액세스를 허용할 수 있는 경우가 있습니다.

수평 이동

수평 이동 전술은 공격자가 다양한 리소스를 통해 이동하는 데 사용하는 기술을 말합니다. CI/CD 환경에서 이는 배포 리소스로 이동하거나, 아티팩트 및 레지스트리를 빌드하거나, 새로운 대상으로 이동하는 것을 의미할 수 있습니다.

빌드 아티팩트 손상 – 다른 공급망 공격과 마찬가지로 공격자가 CI 파이프라인을 제어하면 빌드 아티팩트를 방해할 수 있습니다. 이렇게 하면 빌드가 완료되기 전에 악성 코드가 빌딩 재질에 삽입되어 빌드 아티팩트에 악성 기능이 삽입될 수 있습니다.

레지스트리 주입 – 파이프라인이 빌드 아티팩트용 레지스트리로 구성된 경우 공격자는 악성 이미지로 레지스트리를 감염시킬 수 있으며, 악성 이미지는 나중에 이 레지스트리를 사용하는 컨테이너에 의해 다운로드되고 실행됩니다.

배포 리소스로 분산 – 파이프라인이 배포 리소스에 대한 액세스 권한으로 구성된 경우 공격자는 이러한 리소스에 대해 동일한 액세스 권한을 가지므로 공격자가 분산할 수 있습니다. 이로 인해 파이프라인에 부여된 권한에 따라 코드 실행, 데이터 반출 등이 발생할 수 있습니다.

방어 회피

공격자는 방어 회피 기술을 사용하여 DevOps 환경에서 사용되는 방어를 무시하고 레이더 아래에서 공격을 계속할 수 있습니다.

서비스 로그 조작 – 서비스 로그를 통해 Defender는 해당 환경에서 공격을 검색할 수 있습니다. 환경(예: 빌드 파이프라인) 내부에 있는 공격자는 Defender가 공격을 관찰하지 못하도록 로그를 변경할 수 있습니다. 이는 공격자가 Linux 컴퓨터에서 기록 로그를 변경하여 관찰자가 공격자의 실행 명령을 볼 수 없도록 하는 것과 유사합니다.

컴파일 조작 – 공격자는 SCM 서비스에 흔적을 남기지 않기 위해 악성 코드를 삽입하기 위해 컴파일 프로세스를 변경할 수 있습니다. 이는 여러 가지 방법으로 수행될 수 있습니다.

  • 즉시 코드 변경 – 리포지토리에서 코드를 변경하거나 흔적을 남기지 않고 빌드 프로세스가 시작되기 직전에 코드를 변경합니다.
  • 변조된 컴파일러 – 프로세스가 시작되기 전에 흔적을 남기지 않고 악성 코드를 적용하기 위해 빌드 환경에서 컴파일러를 변경합니다.

분기 보호 다시 구성 – 분기 보호 도구를 사용하면 조직에서 PR/커밋이 분기에 승인되기 전에 단계를 구성할 수 있습니다. 공격자가 관리자 권한을 갖게 되면 이러한 구성을 변경하고 사용자 개입 없이 분기에 코드를 적용할 수 있습니다.

영향

영향 전술은 익스플로잇의 또 다른 단계가 아니라 악의적인 목적으로 CI/CD 리소스에 대한 액세스를 악용하기 위해 공격자가 사용할 수 있는 기술을 의미합니다. 이러한 기술은 노이즈가 많고 검색하기 쉬울 수 있습니다.

DDoS(분산 서비스 거부) – 악의적 사용자는 외부 대상에 DDoS(분산 서비스 거부) 공격을 실행하기 위해 액세스 권한을 가져오는 컴퓨팅 리소스를 사용할 수 있습니다.

암호화폐 마이닝 – 컴퓨팅 리소스는 악의적 사용자가 제어하는 암호화폐 마이닝에 사용될 수 있습니다.

로컬 DoS(서비스 거부) – 공격자가 CI 파이프라인에서 실행되면 공격자는 에이전트를 종료하거나 다시 부팅하거나 VM을 오버로드하여 해당 파이프라인에서 고객에 대한 거부 서비스 공격을 수행할 수 있습니다.

리소스 삭제 – 리소스(클라우드 리소스, 리포지토리 등)에 대한 액세스 권한이 있는 공격자는 서비스 거부를 달성하기 위해 리소스를 영구적으로 삭제할 수 있습니다.

반출

반출 전술은 공격자가 피해자 환경에서 중요한 데이터를 반출하기 위해 사용할 수 있는 다양한 기술을 의미합니다.

프라이빗 리포지토리 복제 – 공격자가 CI 파이프라인에 액세스하면 프라이빗 리포지토리에도 액세스할 수 있으므로(예: GITHUB_TOKEN은 GitHub에서 사용할 수 있음) 코드를 복제하고 액세스하여 개인 IP에 액세스할 수 있습니다.

파이프라인 로그 – 악의적 사용자는 파이프라인 실행 로그에 액세스하고 액세스 기록, 빌드 단계 등을 볼 수 있습니다. 이러한 로그에는 빌드, 배포에 대한 중요한 정보가 포함될 수 있으며 경우에 따라 서비스, 사용자 계정 등에 대한 자격 증명도 포함될 수 있습니다.

프로덕션 리소스에서 데이터 반출 – 파이프라인이 프로덕션 리소스에 액세스할 수 있는 경우 공격자는 이러한 리소스에도 액세스할 수 있습니다. 따라서 프로덕션 데이터를 반출하기 위해 이 액세스 권한을 남용할 수 있습니다.

DevOps 상태 관리 권장 사항

DevOps 스캐너를 통해 소스 코드 관리 시스템 및 연속 통합/지속적인 업데이트 파이프라인 내의 보안 모범 사례와의 차이점을 찾아내면 클라우드용 Defender가 정확하고 실행 가능한 권장 사항을 도출합니다. 이러한 권장 사항에는 다음과 같은 이점이 있습니다.

  • 가시성 향상: DevOps 환경의 보안 태세에 대한 포괄적인 인사이트를 확보하여 기존 취약성을 종합적으로 이해할 수 있습니다. 누락된 분기 보호 규칙, 권한 상승 위험 및 안전하지 않은 연결을 식별하여 공격을 방지합니다.
  • 우선 순위 기반 작업: 심각도에 따라 결과를 필터링하여 가장 심각한 취약성을 먼저 해결함으로써 더 효과적으로 리소스를 사용하고 활동할 수 있습니다.
  • 공격 표면 감소: 두드러진 보안 격차를 해결하여 공격에 취약한 표면을 상당히 최소화함으로써 잠재적인 위협에 대한 방어를 강화할 수 있습니다.
  • 실시간 경고: 워크플로 자동화와 통합하여 보안 구성이 변경되면 즉시 경고를 받아 즉각적인 조치를 취하고 보안 프로토콜을 지속적으로 준수할 수 있습니다.