다음을 통해 공유


DevOps 보안

DevOps 보안은 초기 디자인 및 코딩에서 빌드, 테스트 및 배포를 통해 SDLC(소프트웨어 개발 수명 주기)에 걸쳐 보안 사례를 통합합니다. 보안을 최종 게이트로 처리하는 기존 보안 방법과 달리 DevOps 보안은 보안 제어, 자동화된 테스트 및 지속적인 모니터링을 개발 파이프라인의 모든 단계에 포함합니다. 이 접근 방식은 최신 소프트웨어 배달이 복잡한 CI/CD 파이프라인, 타사 종속성, 코드로서의 인프라 및 자동화된 배포에 의존한다는 것을 인식하며, 각각 악의적 사용자가 적극적으로 악용하는 잠재적인 공격 벡터를 도입합니다. 제로 트러스트 원칙(위반 가정, 명시적으로 확인) 및 심층 방어 전략을 적용하여 DevOps 보안은 코드, 종속성, 인프라 구성 및 파이프라인 프로세스가 디자인에서 프로덕션을 통해 신뢰할 수 있고 변조 방지 상태로 유지되도록 합니다. 포괄적인 DevOps 보안이 없으면 조직은 공급망 공격, 파이프라인의 자격 증명 노출, 악성 코드 주입, 취약한 컨테이너 이미지 및 모든 다운스트림 소비자에게 영향을 주는 영구 백도어(backdoor)를 설정할 수 있는 무단 인프라 변경 등 중요한 위험에 직면합니다.

다음은 DevOps Security 보안 도메인의 세 가지 핵심 핵심 요소입니다.

설계 및 공급망 보호: 구조적 위협 모델링을 일찍 수행합니다. 종속성 및 라이선스 검사, 취약성 관리 및 SBOM 생성으로 공급망을 보호합니다. 모든 구성 요소의 출처 및 무결성을 확인합니다.

관련 컨트롤:

Shift는 보안 컨트롤을 떠났습니다. Shift는 SAST, 비밀 검사, IaC 검사 및 DAST를 CI/CD 파이프라인에 통합하여 보안 제어를 떠났습니다. 비밀 관리(예: Key Vault)를 중앙 집중화하고, 파이프라인 변경 권한을 제한하며, 배포 전에 아티팩트(예: 컨테이너 및 VM 이미지)를 지속적으로 검색하고 보호합니다.

관련 컨트롤:

DevOps 활동 모니터링 및 감사: 상관 관계 및 응답을 위해 DevOps 감사 및 보안 로그를 수집하여 중앙 분석 플랫폼으로 전달합니다. 권한 없는 파이프라인 변경, 권한 에스컬레이션, 비정상적인 커밋 및 작업 시간 외 실행을 검색합니다.

관련 컨트롤:

DS-1: 위협 모델링 수행

보안 원칙

디자인 단계에서 STRIDE 방법론을 사용하여 체계적인 위협 모델링을 구현하여 잠재적인 보안 위협을 식별하고, 위험의 우선 순위를 지정하고, 코드 개발이 시작되기 전에 적절한 완화를 구현합니다. 선제적 접근 방식은 수정 비용을 줄이고 전반적인 보안 상태를 개선합니다.

완화할 리스크

설계 단계에서 위협 모델링을 수행하지 못하는 조직은 악의적 사용자가 체계적으로 악용하는 중요한 사각지대로 작동합니다. 체계적인 위협 분석 없이 다음을 수행합니다.

  • 후기 아키텍처 결함: 포함된 디자인 취약성은 프로덕션에서 비용이 많이 드는 리팩터링이 필요하며, 수정 비용은 설계 단계 중 문제를 해결하는 것보다 훨씬 높습니다.
  • 확인되지 않은 공격 표면: 안전하지 않은 신뢰 경계, 누락된 인증 요구 사항 또는 부적절한 데이터 흐름 보호와 같은 위협 벡터는 문서화되지 않은 상태로 유지되므로 공격자가 방어자가 인식하지 못하는 알려진 약점을 악용할 수 있습니다.
  • 보안 컨트롤이 부족합니다. 누락되거나 부적절한 보안 제어(암호화, 인증, 권한 부여, 감사 로깅)는 불완전한 위협 분석으로 인해 발생하며 심층 방어 전략에서 악용 가능한 격차를 만듭니다.
  • 규정 준수 사각지대: 문서화된 위협 모델 및 완화 증거가 없으면 보안 디자인 유효성 검사를 의무화하는 규정 요구 사항(PCI-DSS, HIPAA, SOX)을 충족할 수 없습니다.
  • 보안 부채 누적: 위협 모델링이 없는 지속적인 기능 추가로 인해 보안 기술적인 문제가 복잡해지므로 시스템이 점점 더 취약해지고 소급하여 보호하기가 어려워집니다.

위협 모델링이 부족하면 위반 가능성이 증가하고, 사용 시간이 연장되며, 초기 설계 단계 완화보다 훨씬 더 높은 수정 비용이 발생합니다.

MITRE ATT&CK

  • 초기 액세스(TA0001): 위협 모델링에서 식별할 수 있는 인증, 세션 관리 또는 입력 유효성 검사에서 아키텍처 결함을 활용하여 공용 애플리케이션(T1190)을 악용합니다.
  • 권한 상승(TA0004): 시스템 아키텍처에서 권한 분리 부족 또는 누락된 권한 부여 검사를 악용하는 권한 상승 제어 메커니즘(T1548)을 남용합니다.
  • 방어 회피(TA0005): 누락된 감사 로깅, 모니터링 간격 또는 시스템에 설계된 부족한 보안 원격 분석을 악용하여 방어(T1562)를 손상시킵니다.

DS-1.1: STRIDE 기반 위협 모델링 구현

디자인 단계 중 체계적인 위협 모델링은 개발이 시작되기 전에 취약성을 식별하여 보안 소프트웨어 아키텍처의 토대를 제공합니다. 설계 단계에서 보안 문제를 해결하면 수정 비용이 크게 줄어들고 아키텍처 결함이 프로덕션 시스템에 포함되지 않습니다. 초기 위협 식별은 보안 제어가 나중에 개조되지 않고 아키텍처에 기본 제공되도록 합니다.

위협 모델링을 설정하기 위해 다음과 같은 구조적 접근 방식을 구현합니다.

  • 체계적인 STRIDE 방법론을 설정합니다. STRIDE 방법론(스푸핑, 변조, 거부, 정보 공개, 서비스 거부, 권한 상승)을 사용하여 체계적인 위협 모델링을 필수 디자인 단계 활동으로 설정합니다. 먼저 시스템 구성 요소, 데이터 흐름, 신뢰 경계 및 외부 종속성을 매핑하는 DFD(데이터 흐름 다이어그램)를 만듭니다. 각 구성 요소 및 데이터 흐름에 대해 6개의 STRIDE 범주에서 잠재적 위협을 체계적으로 평가하고, 가능성과 영향에 따라 위험의 우선 순위를 지정하고, 개발이 시작되기 전에 특정 완화를 문서화합니다.

  • 구조적 위협 모델링 도구를 사용합니다.Microsoft 위협 모델링 도구 와 같은 구조적 위협 모델링 도구를 사용하여 일관성을 유지하고 일반적인 아키텍처 패턴(웹 애플리케이션, API, 마이크로 서비스, IoT 솔루션)에 미리 빌드된 템플릿을 활용합니다. 이 도구는 구성 요소 유형 및 데이터 흐름을 기반으로 DFD 생성, 자동화된 위협 식별을 용이하게 하고, 관련 보안 제어를 사용하여 실행 가능한 완화 권장 사항을 생성합니다. 위협 모델을 아키텍처 설명서와 함께 소스 제어에 버전이 지정된 아티팩트로 저장합니다.

  • 개발 워크플로에 통합: 명확한 소유권, 우선 순위 및 수용 조건을 사용하여 식별된 위협을 Azure DevOps 작업 항목으로 내보내서 위협 모델링 출력을 개발 워크플로에 직접 통합합니다. 설계 승인 전에 완료된 위협 모델이 필요한 아키텍처 검토 게이트를 구현하고 아키텍처 변경 내용이 검색될 때 위협 모델 검토를 트리거하는 끌어오기 요청 검사를 설정합니다. 이렇게 하면 개발 수명 주기 내내 위협 분석이 시스템 진화와 동기화된 상태로 유지됩니다.

DS-1.2: 위협 분석 통합 자동화

대규모 조직에서 위협 모델링을 확장하려면 보안 검토가 개발 병목 상태가 되지 않도록 자동화 및 분산 기능이 필요합니다. 프로젝트 시작 및 끌어오기 요청 프로세스에 포함된 자동화된 위협 식별 워크플로는 모든 프로젝트에 대한 수동 개입 없이 일관된 보안 분석을 보장합니다. 지원 프로그램을 통해 개발 팀 내에서 보안 전문 지식을 구축하면 지속 가능하고 확장 가능한 위협 모델링 사례가 만들어집니다.

다음 자동화 및 사용 기능을 구현합니다.

  • 자동화 및 활성화를 통해 크기 조정: 자동화 및 사용을 통해 조직 전체에서 위협 모델링을 확장합니다. 위험 수준을 자동으로 평가하고, 위협 모델링 요구 사항을 결정하고, 데이터 분류, 외부 노출 및 규제 범위에 따라 적절한 보안 검토 검사점을 할당하는 프로젝트 시작 템플릿에 보안 설문지를 포함합니다. 시스템 경계, 인증 흐름, 데이터 처리 논리의 변경을 감지하는 풀 리퀘스트 워크플로에서 아키텍처 검토 트리거를 자동화하여, 이러한 변경 사항을 위협 모델 유효성 검사를 위해 보안 설계자에게 전달합니다.

  • 보안 챔피언을 사용하여 분산 기능 빌드: 개발 팀 내에서 분산 위협 모델링 기능을 빌드하는 Security Champions 프로그램을 설정합니다. STRIDE 방법론에서 챔피언을 학습시키고, 위협 모델링 도구 및 템플릿을 제공하고, 팀의 위협 모델링 세션을 용이하게 할 수 있도록 권한을 부여합니다. 보안 챔피언은 가장 많은 위협 모델링이 병목 상태 없이 발생할 수 있도록 하면서 복잡한 시나리오를 중앙 집중식 보안 팀으로 확대하는 첫 번째 검토 라인 역할을 합니다.

자동화된 위협 분석 구현:

  • 설문지 기반 평가: 일관된 위협 식별을 위해 Azure DevOps 템플릿에 통합된 표준화된 보안 설문지
  • 보안 챔피언 프로그램: 위협 모델링 촉진에 대해 학습된 각 개발 팀의 지정된 보안 챔피언
  • 아키텍처 검토 자동화: 위협 모델 검토가 필요한 아키텍처 다이어그램 업데이트에 대한 끌어오기 요청의 자동화된 검사
  • 코드로서의 위협 모델: 자동화된 분석을 가능하게 하는 구조적 형식(JSON/YAML)을 사용하는 버전 제어 위협 모델 정의

구현 예제

금융 서비스 조직은 공격자가 개발 중에 확인되지 않은 결제 API의 권한 부여 결함을 악용하여 상당한 사기성 거래 및 규제 벌금을 부과했을 때 데이터 위반을 겪었습니다.

도전: 보안 검토 없이 배포된 수많은 API를 사용하는 마이크로 서비스 아키텍처입니다. 개발 팀은 위협을 식별할 수 있는 보안 전문 지식이 부족했습니다. 프로덕션 인시던트 후에만 발견된 아키텍처 보안 문제입니다.

솔루션 접근 방식:

  • STRIDE 위협 모델링: 아키텍처 및 중요한 데이터 흐름을 보여 주는 데이터 흐름 다이어그램을 사용하여 모든 마이크로 서비스 및 API 엔드포인트에 대한 Microsoft 위협 모델링 도구를 구현했습니다.
  • 보안 챔피언 프로그램: 각 개발 팀의 학습된 위협 모델링 촉진자를 통해 중앙 보안 팀의 병목 현상 없이 보안을 설계할 수 있습니다.
  • 자동화된 워크플로 통합:Azure DevOps의 풀 요청 워크플로에 통합된 위협 모델 검토는 아키텍처 변경 시 보안 승인을 요구합니다.

결과: 배포 전 잠재적인 위반을 방지하는 수많은 보안 문제를 확인했습니다. 프로덕션 환경에서 보안 취약성이 크게 감소했습니다. 보안 검토는 개발 주기에 최소 시간을 추가했습니다.

중요도 수준

있어야 합니다.

컨트롤 매핑

  • NIST SP 800-53 Rev.5: SA-11, SA-15, PL-8, RA-3, RA-5
  • PCI-DSS v4: 6.3.1, 6.3.2, 12.3.1
  • CIS 컨트롤 v8.1: 14.2, 14.3
  • NIST CSF v2.0: ID.RA-3, PR. IP-2
  • ISO 27001:2022: A.5.12, A.8.25
  • SOC 2: CC3.2, CC7.1

DS-2: 소프트웨어 공급망 보안

보안 원칙

통합하기 전에 모든 타사 구성 요소의 출처, 무결성 및 보안 상태를 확인하여 종속성에 대한 제로 트러스트를 구현합니다. 취약성에 대한 종속성을 지속적으로 검사하고, 포괄적인 SBOM(소프트웨어 청구서)을 유지 관리하며, 자동화된 보안 업데이트를 적용하여 공급망 공격 표면을 최소화합니다.

완화할 리스크

소프트웨어 공급망 공격은 악의적 사용자가 조직과 타사 구성 요소 간의 신뢰 관계를 악용하여 최소한의 노력으로 광범위한 영향을 달성하기 때문에 중요한 위협이 됩니다. 포괄적인 공급망 보안이 없는 경우:

  • 악의적인 종속성: 악의적 사용자는 인기 있는 오픈 소스 라이브러리(SolarWinds 스타일 공격)에 백도어를 삽입하거나 설치 또는 런타임 중에 악성 코드를 실행하는 오타가 있는 패키지를 만듭니다.
  • 취약한 타사 라이브러리: 종속성의 알려진 CVE(Log4Shell, Heartbleed, Struts 취약성)는 가시성 부족 및 자동화된 취약성 관리로 인해 몇 주 또는 몇 달 동안 패치되지 않은 상태로 유지됩니다.
  • 손상된 빌드 아티팩트: 공격자는 스토리지 또는 전송 중에 컴파일된 이진 파일, 컨테이너 이미지 또는 배포 패키지를 변조하여 소스 코드 검토를 우회하는 맬웨어를 삽입합니다.
  • 종속성 혼동 공격: 악의적인 행위자가 내부 프라이빗 패키지와 일치하는 이름으로 퍼블릭 리포지토리에 패키지를 업로드하고, 패키지 관리자 확인 논리를 악용하여 악성 코드를 대체합니다.
  • 전이적 종속성 위험: 간접 종속성(종속성의 종속성)의 취약성은 심층 종속성 트리 분석 및 SBOM 생성 없이는 보이지 않습니다.
  • 출처 확인 부족: 암호화 확인이 없을 경우 합법적인 패키지가 악성 버전으로 대체되는 패키지 대체 공격을 수행할 수 있습니다.

공급망이 손상되면 광범위한 영향을 초래하고, 신뢰할 수 있는 라이브러리에 지속적인 백도어를 남기며, 합법적인 외관으로 인해 회피가 용이해집니다.

MITRE ATT&CK

  • 초기 액세스(TA0001): 대상 환경에서 초기 발판을 마련하기 위해 소프트웨어 종속성 및 개발 도구의 손상으로 공급망 손상(T1195.001) 및 조직과 타사 소프트웨어 공급업체 간의 신뢰를 악용하여 악의적인 업데이트를 제공하는 T1199(신뢰할 수 있는 관계).
  • 실행(TA0002): 종속성 설치 스크립트 또는 사후 설치 후크에 포함된 악성 코드를 실행하는 명령 및 스크립팅 인터프리터(T1059)입니다.
  • 지속성(TA0003): 클라이언트 소프트웨어 이진(T1554)을 손상시키고, 애플리케이션 업데이트 사이에 지속되는 컴파일된 라이브러리에 백도어를 포함합니다.

DS-2.1: 종속성 검사 및 관리 구현

포괄적인 종속성 보안 관리는 모든 타사 구성 요소에 대한 가시성을 유지하고, 취약성을 지속적으로 모니터링하고, 수정 프로세스를 자동화하여 공급망 공격을 방지합니다. 최신 애플리케이션은 수백 또는 수천 개의 종속성(직접 및 전이적)을 사용하여 수동 보안 평가를 불가능하게 만들고 취약한 라이브러리를 통해 광범위한 공격 표면을 만듭니다. 지속적인 모니터링을 사용하여 자동화된 종속성 검사를 통해 조직은 악용하기 전에 취약성을 감지하고 수정할 수 있습니다.

다음 핵심 기능을 통해 지속적인 종속성 보안을 설정합니다.

  • 포괄적인 가시성 및 SBOM 생성을 설정합니다 . 포괄적인 가시성, 자동화된 취약성 검색 및 사전 예방적 수정의 세 가지 핵심 기능을 사용하여 지속적인 종속성 보안 관리를 설정합니다. 먼저 직접 종속성(패키지 매니페스트에 명시적으로 선언됨)과 모든 리포지토리에서 전이적 종속성(종속성 종속성)을 모두 매핑하는 전체 종속성 인벤토리를 생성합니다. 규정 준수 및 인시던트 대응 준비를 위해 SBOM(소프트웨어 청구서)을 업계 표준 형식(SPDX, CycloneDX)으로 유지 관리합니다.

  • 자동화된 취약성 검사 및 수정 구현: NVD(National Vulnerability Database), GitHub 권고 데이터베이스 및 언어별 보안 권고에 대한 종속성을 지속적으로 모니터링하는 자동화된 취약성 검사를 구현합니다. 적절한 팀에 대한 심각도 기반 라우팅을 사용하여 종속성 스택에 영향을 주는 새 CVE가 공개될 때 실시간 경고를 구성합니다. 호환성 테스트 및 지능형 병합 충돌 해결을 포함하여 종속성 버전 업그레이드를 사용하여 끌어오기 요청을 생성하는 자동화된 보안 업데이트 기능을 사용하도록 설정하여 수동 수정 부담을 줄입니다.

  • 개발 워크플로에 보안 유효성 검사를 통합합니다. 종속성 변경의 보안 영향을 자동으로 평가하는 끌어오기 요청 검토를 통해 개발 워크플로에 종속성 보안 유효성 검사를 직접 통합하여 알려진 취약성, 라이선스 준수 문제 또는 의심스러운 특성(오타, 유지 관리자 평판 부족)을 사용하여 새 종속성에 플래그를 지정합니다. 고위험 종속성 변경에 대한 승인 게이트를 설정하고 중요한 취약성이 있는 종속성이 보호된 분기로 병합되는 것을 금지하는 정책을 적용합니다.

  • 프로덕션 환경으로 가시성 확장:Microsoft Defender for Cloud DevOps Security 와 같은 도구를 사용하여 소스 코드 이상의 가시성을 배포된 환경으로 확장하여 코드 종속성과 실행 중인 워크로드의 상관 관계를 지정하고, 종속성 체인을 통해 공격 경로를 식별하고, 이론적 위험만으로는 실제 프로덕션 노출에 따라 수정의 우선 순위를 지정합니다. GitHub Advanced Security와 같은 도구는 포괄적인 종속성 그래프 시각화, Dependabot 기반 자동화된 업데이트 및 독점 패키지 에코시스템에 대한 사용자 지정 취약성 패턴 지원을 제공합니다.

구현 예제

의료 조직은 몇 달 동안 환자 데이터를 유출하는 악성 npm 패키지를 프로덕션 애플리케이션에서 발견했습니다. 조사 결과 중요한 Log4Shell 취약성을 포함하여 알려진 CVE에 대한 광범위한 취약한 종속성이 밝혀졌습니다.

도전: 취약성 또는 악성 패키지에 대한 가시성이 없는 수백 개의 리포지토리에 걸쳐 수천 개의 종속성이 있습니다. 수동 종속성 검토는 애플리케이션당 몇 주 동안 사용되었습니다. 규제 감사는 중요한 공급망 격차를 확인했습니다.

솔루션 접근 방식:

  • 자동화된 취약성 관리: 종속성을 검사하고 보안 업데이트에 대한 끌어오기 요청을 자동으로 만드는 Dependabot을 사용하여 GitHub Advanced Security 를 사용하도록 설정했습니다.
  • 공급망 투명성: 규정 준수 및 인시던트 대응을 위해 SPDX 형식의 소프트웨어 자료 청구서를 생성하는 Microsoft SBOM 도구를 구현했습니다.
  • 패키지 확인: 서명 확인 및 종속성 고정으로 구성된 Azure Artifacts 는 혼동 공격 및 무단 패키지 대체를 방지합니다.
  • DevOps 보안 모니터링: 코드-클라우드 추적성을 위해 Cloud DevOps Security용 Microsoft Defender 를 배포했습니다.

결과: 광범위한 취약한 종속성을 신속하게 감지하고 수정했습니다. 자동화된 확인을 통해 여러 악성 패키지 인시던트가 방지되었습니다. 포괄적인 SBOM 설명서를 사용하여 규정 준수를 달성했습니다.

중요도 수준

있어야 합니다.

컨트롤 매핑

  • NIST SP 800-53 Rev.5: SR-3, SR-4, SR-6, SA-12, SA-15(9), RA-5
  • PCI-DSS v4: 6.2.4, 6.3.2, 6.3.3
  • CIS 컨트롤 v8.1: 16.1, 16.2, 16.11
  • NIST CSF v2.0: ID.SC-2, ID.SC-4, DE.CM-8
  • ISO 27001:2022: A.5.19, A.5.22, A.5.23
  • SOC 2: CC3.2, CC8.1

DS-3: DevOps 인프라 보호

보안 원칙

포괄적인 비밀 관리, 승인 게이트가 있는 파이프라인 액세스 제어, 보안 빌드 에이전트 구성 및 지속적인 모니터링을 통해 빌드 인프라에 대한 심층 방어를 구현합니다. 하드 코딩된 자격 증명을 제거하고 최소 권한 액세스를 적용하여 소프트웨어 개발 및 배포 프로세스의 무결성을 보호합니다.

완화할 리스크

안전하지 않은 DevOps 인프라는 악의적 사용자가 악용하여 전체 소프트웨어 배달 체인을 손상시키는 중요한 취약성을 만듭니다. 포괄적인 인프라 보안이 없는 경우:

  • 손상된 CI/CD 파이프라인: 공격자는 도난당한 자격 증명, 악용된 취약성 또는 내부자 액세스를 통해 파이프라인을 빌드하는 데 액세스하여 모든 다운스트림 소비자에게 영향을 주는 코드 주입, 아티팩트 변조 또는 배포 조작을 가능하게 합니다.
  • 빌드 로그 및 아티팩트에서 노출된 비밀: 하드 코드된 자격 증명, API 키, 인증서 및 연결 문자열은 파이프라인 로그, 오류 메시지 또는 컴파일된 아티팩트를 통해 누출되어 공격자가 프로덕션 환경에 직접 액세스할 수 있도록 합니다.
  • 무단 파이프라인 수정: 변경 제어 및 승인 워크플로가 없으면 악의적인 행위자가 파이프라인 정의를 수정하거나, 악의적인 빌드 단계를 삽입하거나, 검색 없이 배포 구성을 변경할 수 있습니다.
  • 액세스 제어가 부족합니다. 지나치게 관대한 역할 할당 및 의무 분리 부족으로 DevOps 인프라 내에서 횡적 이동, 권한 상승 및 영구 액세스 설정이 가능합니다.
  • 안전하지 않은 빌드 에이전트: 패치되지 않거나 잘못 구성되었거나 손상된 빌드 에이전트는 공격자가 빌드 환경에 영구적으로 액세스하고 잠재적인 피벗 지점을 프로덕션 네트워크에 제공합니다.
  • 누락된 감사 내역: DevOps 활동의 부적절한 로깅 및 모니터링은 무단 액세스, 의심스러운 수정 또는 내부자 위협의 탐지를 방지합니다.

인프라 손상은 공격자가 소스에 코드를 삽입하고 신뢰할 수 있는 파이프라인을 우회하며 모든 다운스트림 애플리케이션에 영향을 줄 수 있습니다.

MITRE ATT&CK

  • 초기 액세스(TA0001): DevOps 플랫폼 및 파이프라인에 액세스하기 위해 도난당한 자격 증명 또는 서비스 주체 비밀을 사용하는 유효한 계정(T1078)입니다.
  • 지속성(TA0003): 지속적인 액세스를 위해 백도어 서비스 주체, 개인 액세스 토큰 또는 SSH 키를 생성하는 계정 조작(T1098)
  • TA0006(자격 증명 액세스): 파이프라인 로그, 환경 변수 또는 구성 파일에서 비밀을 수집하는 보안되지 않은 자격 증명(T1552.001)
  • 방어 회피(TA0005): 방어 기능 저하(T1562)로 파이프라인 정의에서 보안 검사 단계, 감사 로깅 또는 승인 게이트를 비활성화합니다.

DS-3.1: 파이프라인에 대한 비밀 관리 구현

중앙 집중식 비밀 관리는 코드, 구성 파일 및 파이프라인 정의에서 하드 코딩된 비밀을 제거하여 DevOps 파이프라인에서 자격 증명 노출을 제거합니다. 파이프라인 YAML, 환경 변수 또는 원본 리포지토리에 포함된 자격 증명은 파이프라인 손상에 대한 기본 공격 벡터를 나타내며, 리포지토리 또는 로그에 액세스하는 공격자가 프로덕션 자격 증명을 추출할 수 있도록 합니다. 동적 검색 및 Just-In-Time 액세스 패턴을 사용하여 암호화로 보호되는 비밀 스토리지를 구현하면 운영 효율성을 유지하면서 자격 증명 도난을 방지할 수 있습니다.

다음 보안 컨트롤을 사용하여 비밀 관리를 구성합니다.

  • 중앙 집중식 스토리지를 사용하여 하드 코딩된 자격 증명을 제거 합니다. 암호화 액세스 제어 및 포괄적인 감사 내역을 사용하여 전용 비밀 관리 인프라의 모든 비밀을 중앙 집중화하여 파이프라인 정의 및 소스 코드에서 하드 코딩된 자격 증명을 제거합니다. 비밀을 파이프라인 YAML 파일, 로그에 표시되는 환경 변수 또는 리포지토리의 구성 파일에 저장해서는 안 됨 원칙을 설정합니다. DevOps 환경에서 자격 증명 노출을 위한 기본 벡터입니다.

  • 관리 ID를 사용하여 동적 비밀 검색을 구성합니다. 암호화된 비밀 스토리지, 세분화된 액세스 정책, 자동 비밀 회전 및 포괄적인 감사 로깅을 제공하는 Azure Key Vault 와 같은 솔루션을 사용하여 중앙 집중식 비밀 스토리지를 구현합니다. 파이프라인 정의에 비밀을 포함하는 대신 보안 서비스 연결을 통해 런타임에 동적으로 비밀을 검색하도록 파이프라인을 구성합니다. 관리 ID 또는 워크로드 ID 페더레이션을 사용하여 비밀 저장소에 대한 파이프라인 액세스를 인증할 수 있으므로 도난의 대상이 되는 수명이 긴 서비스 주체 자격 증명이 필요하지 않습니다.

  • 승인 게이트를 사용하여 Just-In-Time 액세스를 적용합니다 . 필요한 경우에만 비밀이 검색되는 Just-In-Time 비밀 액세스 패턴을 적용하고 파이프라인 완료 후 자동 해지를 통해 자격 증명 수명 노출을 최소화합니다. 시간 제한 액세스 제한을 구현하고 프로덕션 비밀에 대한 파이프라인 액세스를 위해 다중 사용자 권한 부여(승인 게이트)를 요구하여 손상된 단일 계정이 추가 확인 없이 중요한 자격 증명에 액세스할 수 없도록 합니다.

  • 계층화된 인프라 액세스 제어를 설정합니다. DevOps 인프라에 대한 계층화된 액세스 제어 설정: 보안 검토 담당자에게 파이프라인 수정 권한을 제한하고, 프로덕션 배포에 대한 승인이 필요한 환경별 권한을 적용하고, 파이프라인이 의도한 범위 밖의 비밀에 액세스하지 못하도록 하는 리포지토리 수준 서비스 연결 제한을 구현하고, 중요한 워크로드에 대한 네트워크 격리를 사용하여 강화된 자체 호스팅 빌드 에이전트를 배포합니다. 인프라-코드 보안 검사를 파이프라인에 통합하여 비밀을 노출하거나 무단 액세스 경로를 만들 수 있는 잘못 구성된 리소스의 배포를 방지합니다.

구현 예제

소매 조직은 공격자가 파이프라인 로그에서 발견된 도난당한 서비스 주체 자격 증명을 사용하여 프로덕션 데이터베이스에 액세스하여 수백만 개의 고객 레코드를 노출하는 경우 위반을 겪었습니다.

도전: 파이프라인 변수에서 하드 코딩된 데이터베이스 연결 문자열 및 API 키입니다. 지나치게 허용된 파이프라인 사용 권한으로 모든 개발자가 프로덕션에 배포할 수 있습니다. 빌드 에이전트 손상은 인프라에 대한 영구 액세스를 제공합니다.

솔루션 접근 방식:

  • 중앙 집중식 비밀 관리: 파이프라인에서 하드 코딩된 비밀을 제거하는 Azure Key Vault 통합을 구현했습니다. 자격 증명 노출 위험을 제거하는 관리 ID 인증이 구성되었습니다.
  • 파이프라인 액세스 제어: 프로덕션 배포에 대한 보안 팀 승인이 필요한 Azure DevOps Environment를 사용하여 승인 게이트 및 환경별 사용 권한을 설정했습니다.
  • 강화된 빌드 에이전트: 규제된 데이터를 처리하는 중요한 워크로드에 대한 보안 강화 및 네트워크 격리를 사용하여 자체 호스팅 에이전트를 배포했습니다.
  • 인프라 보안 검사: ARM 템플릿 및 Terraform 구성에 대한 통합 보안 유효성 검사로 잘못된 구성 배포를 방지합니다.

결과: 자격 증명 도난을 방지하는 파이프라인 로그에서 비밀을 제거했습니다. 권한이 없는 프로덕션 배포를 제거했습니다. 배포 전에 인프라의 잘못된 구성이 감지되고 차단되었습니다.

중요도 수준

있어야 합니다.

컨트롤 매핑

  • NIST SP 800-53 Rev.5: AC-2, AC-3, AC-6, SC-12, SC-13, AU-2, AU-6
  • PCI-DSS v4: 8.3.2, 8.6.1, 8.6.3, 12.3.3
  • CIS 컨트롤 v8.1: 4.1, 4.7, 6.1, 6.5
  • NIST CSF v2.0: PR.AC-4, PR.DS-5, DE.CM-7
  • ISO 27001:2022: A.5.15, A.5.16, A.8.3
  • SOC 2: CC6.1, CC6.6, CC6.7

DS-4: SAST(정적 애플리케이션 보안 테스트) 통합

보안 원칙

모든 빌드 프로세스에 통합된 여러 특수한 SAST(정적 애플리케이션 보안 테스트) 스캐너를 통해 포괄적인 자동화된 보안 테스트를 구현합니다. 다중 스캐너 커버리지를 사용하여 포괄적인 탐지를 수행하고, 푸시 보호 기능으로 비밀 스캔을 구현하며, 의미론적 코드 분석을 배포하여 취약성을 식별하고 프로덕션에 도달하기 전에 차단합니다.

완화할 리스크

개발 중에 탐지를 피하는 코드 수준의 취약점은 적대적 공격자가 체계적으로 악용할 수 있는 지속적인 보안 약점을 초래합니다. 포괄적인 SAST 통합이 없는 경우:

  • 삽입 취약성: SQL 삽입, XSS(교차 사이트 스크립팅), 명령 삽입 및 LDAP 주입 결함을 통해 공격자는 애플리케이션 논리를 조작하거나, 중요한 데이터를 추출하거나, 임의의 코드를 실행할 수 있습니다.
  • 하드 코딩된 자격 증명: 개발자는 실수로 암호, API 키, 인증서 및 연결 문자열을 소스 코드 리포지토리에 커밋하여 공격자가 프로덕션 시스템 및 데이터에 직접 액세스할 수 있도록 합니다.
  • 안전하지 않은 암호화 구현: 약한 암호화 알고리즘(DES, MD5), 하드 코드된 암호화 키, 부적절한 초기화 벡터 또는 부족한 키 길이는 데이터 기밀성과 무결성을 손상합니다.
  • 버퍼 오버플로 및 메모리 손상: C/C++ 애플리케이션에서 안전하지 않은 메모리 작업을 사용하면 임의의 코드 실행, 권한 상승 및 서비스 거부 공격을 수행할 수 있습니다.
  • 비즈니스 논리 결함: 인증 바이패스, 권한 부여 격차, 경합 조건 및 부족한 입력 유효성 검사를 통해 권한 상승, 사기 및 무단 액세스를 사용할 수 있습니다.
  • IaC(Infrastructure as Code) 구성 오류: 안전하지 않은 Terraform, ARM 템플릿 또는 Kubernetes 매니페스트는 지나치게 허용되는 액세스, 누락된 암호화 또는 노출된 관리 엔드포인트를 사용하여 취약한 인프라를 배포합니다.

자동화된 SAST가 없는 취약성은 기술적인 문제로 누적되고, 체류 시간을 연장하며, 프로덕션에서 수정하는 데 비용이 많이 듭니다.

MITRE ATT&CK

  • 초기 액세스(TA0001): 애플리케이션 코드에서 삽입 취약성 또는 인증 바이패스를 활용하는 공용 애플리케이션(T1190)을 악용합니다.
  • 실행(TA0002): 클라이언트 실행을 위한 악용(T1203), XSS나 안전하지 않은 역직렬화와 같은 클라이언트 측 취약성을 악용함.
  • TA0006(자격 증명 액세스) : 소스 코드, 구성 파일 또는 컴파일된 이진 파일에서 하드 코드된 자격 증명을 추출하는 암호 저장소(T1555)의 자격 증명입니다.
  • 권한 에스컬레이션(TA0004): 권한 상승에 대한 악용(T1068) 버퍼 오버플로 또는 높은 액세스에 대한 메모리 손상을 악용합니다.

DS-4.1: 다중 스캐너 SAST 파이프라인 구현

모든 빌드에 통합된 포괄적인 정적 애플리케이션 보안 테스트는 프로덕션 환경에 도달하기 전에 코드 수준 취약성을 조기에 검색합니다. 최신 애플리케이션은 특수 분석기가 필요한 다양한 언어, 프레임워크 및 코드로서의 인프라를 사용하며, 단일 스캐너는 모든 취약성 클래스를 검색하지 않습니다. 특수 도구를 자동 실행 및 품질 게이트와 결합하는 다중 계층 SAST 전략은 포괄적인 범위를 보장하면서 보안 문제가 감지될 때 개발자에게 즉각적인 피드백을 제공합니다.

다음 구성 요소를 사용하여 자동화된 보안 테스트를 구현합니다.

  • 다중 계층 검사 전략을 구현합니다. 자동화된 정적 애플리케이션 보안 테스트를 모든 빌드에 포함하여 코드가 프로덕션에 도달하기 전에 취약성을 검색합니다. 여러 특수 스캐너를 결합하는 다중 계층 SAST 전략을 구현합니다. 단일 도구가 모든 취약성 클래스를 검색하지 않으므로 포괄적인 검사에는 언어별 분석기(Python, JavaScript, C/C++), 코드 기반 인프라 스캐너(Terraform, ARM 템플릿, Kubernetes 매니페스트), 비밀 검색 및 복잡한 데이터 흐름 취약성에 대한 의미 체계 코드 분석이 필요합니다.

  • 품질 게이트를 사용하여 자동 실행을 구성합니다. 모든 커밋 및 끌어오기 요청에서 자동으로 실행되도록 SAST 검사를 구성하여 코드 컨텍스트가 새로워지는 동안 개발자에게 보안 문제에 대한 즉각적인 피드백을 제공합니다. 심각하거나 심각도가 높은 취약성이 감지되면 병합 또는 배포를 차단하는 심각도 기반 품질 게이트를 설정하여 취약한 코드가 파이프라인을 통해 진행되지 않도록 합니다. 검색 결과를 SARIF(표준화된 형식)로 출력하도록 스캐너를 구성하여 일관된 취약성 추적, 도구 간 중복 제거 및 중앙 집중식 보안 대시보드와의 통합을 지원합니다.

  • 푸시 보호 기능을 사용하여 비밀 검사를 배포하기: 개발자가 자격 증명, API 키, 인증서 또는 토큰을 리포지토리에 커밋하지 않도록 특수한 비밀 검사를 푸시 보호 기능과 함께 구현하여, 몇 주 후 감사 검토에서 발견하는 대신 커밋 시점에 비밀을 차단합니다. 독점 인증 메커니즘에 대한 표준 비밀 패턴(AWS 키, Azure 토큰, 데이터베이스 연결 문자열) 및 사용자 지정 조직별 패턴을 모두 지원합니다. 비밀이 검색되면 자격 증명 회전 절차 및 보안 대안을 포함한 즉각적인 수정 지침을 제공합니다.

  • 복잡한 취약성에 대한 의미 체계 코드 분석을 사용합니다. 심층 데이터 흐름 분석을 수행하는 GitHub CodeQL 과 같은 의미 체계 코드 분석 도구를 배포하여 여러 함수 호출을 통한 SQL 삽입, 비즈니스 논리의 인증 바이패스 또는 안전하지 않은 역직렬화 체인과 같은 패턴 일치 스캐너에 보이지 않는 복잡한 취약성을 식별합니다. 조직의 프레임워크, 보안 요구 사항 및 인시던트 소급에서 식별된 일반적인 취약성 패턴에 맞게 조정된 사용자 지정 보안 쿼리를 만듭니다. SAST 결과를 개발자 워크플로에 직접 통합하여, 특정 라인 번호와 취약성 설명, 수정 권장 사항이 포함된 끌어오기 요청 주석을 제공합니다.

  • 통합 플랫폼을 사용하여 오케스트레이션:Microsoft Security DevOps Extension 과 같은 통합 SAST 플랫폼은 단일 파이프라인 작업을 통해 여러 특수 스캐너(AntiMalware, Bandit, BinSkim, Checkov, ESLint, Template Analyzer, Terrascan, Trivy)를 오케스트레이션할 수 있으며, 구성 관리 및 결과 집계를 다른 유형의 도구 에코시스템에서 표준화합니다.

구현 예제

SaaS 공급자는 수십만 개의 고객 레코드를 노출하는 SQL 삽입 공격을 겪었습니다. 인시던트 후 분석을 통해 하드 코딩된 자격 증명 및 수개월 동안 존재했던 주입 결함을 포함한 광범위한 코드 수준 취약성이 드러났습니다.

도전: 수동 코드 검토는 약간의 취약성만 발견했습니다. 개발자는 주입 결함과 암호화 약점을 식별하기 위한 보안 교육이 부족했습니다. 프로덕션 배포 전에 자동화된 검색이 없습니다.

솔루션 접근 방식:

  • 다중 스캐너 SAST: CodeQL, ESLint, 및 Bandit을 사용하여 Microsoft Security DevOps 확장을 추가하여 언어 및 취약성 유형에 대한 포괄적인 적용 범위를 제공합니다.
  • 비밀 보호: 비밀 검사 및 푸시 보호를 사용하여 커밋에서 자격 증명 노출을 방지하는 GitHub 고급 보안을 구현했습니다.
  • 의미 체계 분석: 비즈니스 논리 취약성 및 프레임워크별 보안 패턴에 대한 사용자 지정 쿼리를 사용하여 GitHub CodeQL 을 구성했습니다.
  • 보안 게이트:Azure Pipelines에 설정된 파이프라인 게이트로 심각도가 높은 결과의 배포를 차단합니다.

결과: 광범위한 취약성을 신속하게 식별하고 수정했습니다. 중요한 보안 결함이 프로덕션에 도달하지 못하도록 방지했습니다. 보안 부채가 크게 감소했습니다.

중요도 수준

있어야 합니다.

컨트롤 매핑

  • NIST SP 800-53 Rev.5: SA-11, RA-5, SI-2
  • PCI-DSS v4: 6.3.2, 6.4.1, 11.3.1
  • CIS 컨트롤 v8.1: 16.3, 16.6
  • NIST CSF v2.0: PR.IP-2, DE.CM-4
  • ISO 27001:2022: A.8.25, A.8.29
  • SOC 2: CC7.1, CC7.2

DS-5: DAST(동적 애플리케이션 보안 테스트) 통합

보안 원칙

컨테이너화된 워크로드에 대한 컨테이너 보안 검사, 웹 애플리케이션 및 API(애플리케이션 프로그래밍 인터페이스)에 대한 자동화된 침투 테스트, 인증, 권한 부여 및 세션 관리를 위한 특수 테스트를 통해 사전 프로덕션 환경에서 포괄적인 동적 보안 테스트를 구현합니다. 런타임 유효성 검사는 정적 분석에서 감지할 수 없는 구성 약점 및 통합 취약성을 식별합니다.

완화할 리스크

정적 분석에 보이지 않는 런타임 취약성은 애플리케이션이 배포된 후 악의적 사용자가 악용하는 중요한 보안 격차를 만듭니다. 포괄적인 DAST가 없는 경우:

  • 배포 구성 약점: 잘못 구성된 인증 공급자, 허용 CORS, 약한 TLS 구성 또는 누락된 보안 헤더(CSP, HSTS, X-Frame-Options)를 사용하면 원본 검토에서 검색할 수 없는 공격을 사용할 수 있습니다.
  • API 보안 격차: 인증 바이패스, 권한 부여 실패, 과도한 데이터 노출, 누락된 속도 제한 또는 안전하지 않은 IDOR(직접 개체 참조)를 사용하는 REST 및 GraphQL API는 무단 액세스 및 데이터 추출을 허용합니다.
  • 인증 및 권한 부여는 다음을 무시합니다. 세션 관리, 암호 재설정 흐름, 다단계 인증 구현 또는 역할 기반 액세스 제어 논리의 결함으로 권한 상승 및 계정 인수가 가능합니다.
  • 세션 관리 취약성: 예측 가능한 세션 토큰, 시간 제한 적용 부족, 세션 고정 취약성 또는 누락된 토큰 해지로 인해 세션 하이재킹 및 자격 증명 도난이 가능합니다.
  • 환경별 보안 문제: 데이터베이스, 메시지 큐, 외부 API 또는 타사 서비스와의 통합 지점은 개발 또는 격리된 테스트에서 보이지 않는 런타임 취약성을 도입합니다.
  • 비즈니스 논리 결함: 경합 상태, 상태 조작 취약성, 복잡한 워크플로의 입력 유효성 검사 부족 또는 트랜잭션 무결성 문제로 인해 사기 및 데이터 조작이 가능합니다.

DAST는 런타임 동작, 환경 구성, 그리고 정적 분석으로는 제공할 수 없는 통합 보안 범위를 검증합니다.

MITRE ATT&CK

  • 초기 액세스(TA0001): 런타임 테스트를 통해 검색된 인증 바이패스, 주입 결함 또는 안전하지 않은 API 엔드포인트를 활용하는 공용 애플리케이션(T1190)을 악용합니다.
  • 자격 증명 액세스(TA0006): 누락된 속도 제한, 약한 비밀번호 정책 또는 예측 가능한 세션 토큰을 악용하는 무차별 암호 대입(T1110)이 DAST 중에 감지되었습니다.
  • 권한 상승(TA0004): 배포된 애플리케이션에서 권한 부여 우회 또는 역할 조작 취약성을 악용하는 유효한 계정(T1078)입니다.
  • 컬렉션(TA0009): 과도한 API 응답, 디렉터리 순회 또는 안전하지 않은 직접 개체 참조 취약성을 통해 중요한 데이터를 추출하는 정보 리포지토리(T1213)의 데이터입니다.
  • 반출(TA0010): API 보안 격차를 악용하여 검색 없이 대규모로 데이터를 추출하는 웹 서비스(T1567)를 통한 반출.

DS-5.1: 사전 프로덕션에서 자동화된 DAST 구현

동적 애플리케이션 보안 테스트는 실행 중인 애플리케이션에서 보안 컨트롤의 유효성을 검사하여 정적 분석에서 검색할 수 없는 런타임 취약성을 검색합니다. SAST는 소스 코드를 검사하는 동안 프로덕션과 유사한 구성을 사용하여 배포된 애플리케이션을 테스트하여 운영 환경에서만 나타나는 인증 오류, 권한 부여 결함 및 통합 보안 격차를 포함하여 배포 관련 문제를 식별합니다. 사전 프로덕션에서 자동화된 DAST는 통합 시스템에 대한 현실적인 공격 시나리오를 테스트하는 동안 고객이 노출되기 전에 보안 유효성 검사를 보장합니다.

다음 기능을 통해 런타임 보안 유효성 검사를 구현합니다.

  • 런타임 유효성 검사를 사용하여 SAST를 보완합니다. 프로덕션과 유사한 구성을 사용하여 실행 중인 애플리케이션에서 보안의 유효성을 검사하는 동적 애플리케이션 보안 테스트로 정적 분석을 보완합니다. SAST는 소스 코드의 취약성을 식별하지만, DAST는 배포 구성 약점(잘못 구성된 인증 공급자, 허용 CORS 정책, 누락된 보안 헤더), 환경별 통합 결함(데이터베이스 연결 보안, 배포된 컨텍스트의 API 권한 부여) 및 현실적인 운영 조건에서만 나타나는 비즈니스 논리 취약성 등 정적 분석에 보이지 않는 런타임 문제를 검색합니다.

  • 프로덕션과 유사한 스테이징 환경에서 배포: 프로덕션 아키텍처, 네트워크 토폴로지, 외부 종속성 및 구성 매개 변수를 미러링하는 사전 프로덕션 준비 환경에서 DAST 검사를 배포합니다. 자동화된 DAST 실행은 실제 부하 및 사용 패턴에 따라 스테이징, 체계적으로 인증 흐름, 권한 부여 경계, 세션 관리, 입력 유효성 검사, API 보안 및 오류 처리에 대한 배포를 트리거해야 합니다. 이렇게 하면 프로덕션과 유사한 외부 시스템(ID 공급자, 데이터베이스, 메시지 큐, 타사 API)과 통합될 때 보안 제어가 올바르게 작동하는지 확인합니다.

  • 컨테이너에 대한 런타임 모니터링을 구현합니다. 컨테이너화된 워크로드의 경우 배포 전 이미지 검색과 배포 후 동작 분석을 결합하는 연속 런타임 보안 모니터링을 구현합니다. 배포 전에 컨테이너 이미지에서 알려진 취약성을 검사한 다음 실행 중인 컨테이너에서 비정상적인 네트워크 연결, 무단 프로세스 실행, 파일 시스템 수정 및 권한 상승 시도를 모니터링합니다. 일반적인 Kubernetes 워크로드 동작을 프로파일링하여 손상 여부를 나타내는 편차를 검색하고 CIS 벤치마크 및 보안 모범 사례에 대해 컨테이너 구성을 지속적으로 평가합니다.

  • 위험 수준이 높은 공격 노출 영역: REST 및 GraphQL API(테스트 인증 바이패스, 권한 부여 실패, 삽입 취약성, 과도한 데이터 노출, 안전하지 않은 직접 개체 참조), 인증 및 세션 관리(토큰 보안, 시간 제한 적용, 로그아웃 기능 유효성 검사, 암호 재설정 흐름, 다단계 인증) 및 비즈니스 논리 워크플로(경합 상태, 상태 조작, 트랜잭션 무결성 문제 테스트)에 대한 특수한 DAST 노력을 집중합니다. 두 방법의 결과를 결합하는 SAST/DAST 상관 관계 워크플로를 설정하여 정적 및 동적 분석을 통해 확인된 취약성의 우선 순위를 가장 높은 위험으로 지정합니다.

  • 통합 플랫폼 활용: 컨테이너화된 환경의 경우 컨테이너용 Microsoft Defender 는 컨테이너 수명 주기 내내 통합 런타임 취약성 평가, 워크로드 프로파일링 및 위협 탐지 기능을 제공합니다.

구현 예제

전자 상거래 조직에서 승인되지 않은 할인을 허용하는 결제 API에서 인증 바이패스를 발견했습니다. SAST는 외부 인증 공급자가 있는 배포된 환경에서만 나타나는 런타임 구성 결함을 놓쳤습니다.

도전: SAST는 코드 취약성을 감지했지만 런타임 구성 문제 및 API 권한 부여 결함을 놓쳤습니다. 프로덕션 배포 구성은 정적 분석에 보이지 않는 보안 격차를 만드는 개발과 다릅니다.

솔루션 접근 방식:

  • 자동화된 DAST 검사: 사전 프로덕션 환경에 OWASP ZAP을 배포하여 프로덕션과 유사한 구성으로 애플리케이션을 테스트합니다.
  • 컨테이너 런타임 보호: 런타임 보안 모니터링 및 취약성 평가를 위해 컨테이너용 Microsoft Defender 를 구현했습니다.
  • API 보안 테스트: 배포된 REST 및 GraphQL 엔드포인트에서 인증, 권한 부여 및 데이터 유효성 검사의 유효성을 검사하는 특수화된 API 테스트가 구성되었습니다.
  • SAST/DAST 상관 관계: 포괄적인 보안 유효성 검사를 위해 정적 결과와 동적 결과를 결합한 취약성 상관 관계 워크플로를 만들었습니다.

결과: 인증 바이패스 및 API 권한 부여 결함을 포함하여 SAST에서 누락된 런타임 취약성을 발견했습니다. 사전 프로덕션 검색을 통해 보안 인시던트가 방지되었습니다.

중요도 수준

있어야 합니다.

컨트롤 매핑

  • NIST SP 800-53 Rev.5: SA-11, CA-8, RA-5
  • PCI-DSS v4: 6.4.2, 11.3.2
  • CIS 컨트롤 v8.1: 16.7, 16.8
  • NIST CSF v2.0: DE.CM-4, PR.IP-12
  • ISO 27001:2022: A.8.29, A.8.30
  • SOC 2: CC7.1, CC7.3

DS-6: 워크로드 수명 주기 보호

Azure Policy:Azure 기본 제공 정책 정의 DS-6을 참조하세요.

보안 원칙

컨테이너 레지스트리 및 컨테이너 워크로드에 대한 보안 검색, VM(Virtual Machine) 워크로드에 대한 골든 이미지 관리 및 자동화된 빌드, 자동화된 격리를 사용한 지속적인 취약성 검사를 통해 포괄적인 이미지 보안을 갖춘 변경할 수 없는 인프라를 구현합니다. 암호화 서명을 확인하고, 최소 기본 이미지를 유지 관리하며, 워크로드 수명 주기 내내 보안 기준을 적용합니다.

완화할 리스크

안전하지 않은 워크로드 수명 주기 관리를 사용하면 취약하거나 손상된 아티팩트가 프로덕션에 도달할 수 있으므로 악의적 사용자가 체계적으로 악용하는 영구 공격 벡터가 생성됩니다. 포괄적인 워크로드 보안이 없는 경우:

  • 취약한 프로덕션 VM 이미지: 패치되지 않은 OS 기준 또는 잘못 구성된 골든 이미지는 배포된 모든 VM에서 약점을 전파합니다.
  • 패치되지 않은 취약한 기본 이미지: CVE에 영향을 받는 베이스(Log4Shell, Heartbleed, OpenSSL)에 빌드된 컨테이너는 워크로드를 악용 및 이스케이프에 노출합니다.
  • 오래된 취약한 아티팩트: 이미지와 패키지가 스캔되지 않아 CVE가 누적되면서 공격 표면이 확장됩니다.
  • 이미지 확인 부족: 암호화 서명 및 출처 유효성 검사가 부족하여 악의적 사용자는 합법적인 이미지를 백도어 또는 맬웨어가 포함된 손상된 버전으로 대체할 수 있습니다.
  • 비대해진 공격 표면: 불필요한 패키지, 개발 도구 또는 디버깅 유틸리티가 포함된 컨테이너 이미지는 취약성 노출을 증가시키고 공격자에게 추가 악용 도구를 제공합니다.
  • 누락된 보안 기준: CIS 벤치마크 규정 준수, 보안 강화 또는 최소 권한 구성 없이 배포된 VM 및 컨테이너 이미지는 심층 방어에서 악용 가능한 격차를 만듭니다.

손상된 아티팩트가 지속적인 공격 벡터가 되고, 횡적 이동을 지원하며, 수비수에게 합법적인 것처럼 보입니다.

MITRE ATT&CK

  • 초기 액세스(TA0001): 애플리케이션 컨테이너 또는 웹 서비스에서 패치되지 않은 취약성을 활용하여 공용 애플리케이션(T1190)을 악용합니다.
  • 실행(TA0002): 이미지 확인이 부족하여 합법적인 것처럼 보이는 악성 컨테이너를 배포하는 컨테이너(T1610)를 배포합니다.
  • 권한 에스컬레이션(TA0004): 컨테이너 취약성을 악용하는 호스트로의 이스케이프(T1611)를 통해 컨테이너 격리를 중단하고 호스트 시스템을 손상합니다.
  • TA0008(횡적 이동): 손상된 이미지에서 배포된 취약한 VM 또는 컨테이너 간에 원격 서비스(T1210) 피벗을 악용합니다.

DS-6.1: 컨테이너 이미지 보안 구현

컨테이너 및 VM 이미지는 수명 주기 내내 포괄적인 보안 제어가 필요한 중요한 공격 표면을 나타냅니다. 취약한 기본 이미지는 배포된 모든 인스턴스에 약점을 전파하여 인프라 전반에 미치는 영향을 증폭합니다. 검사, 서명 및 보안 스토리지를 포함하여 소스 코드와 동일한 보안 엄격함으로 워크로드 아티팩트 처리는 공격자가 알려진 취약성을 악용하거나 악성 이미지를 대체하는 것을 방지하면서 검증되고 신뢰할 수 있는 이미지만 배포하도록 합니다.

다음 방법을 통해 워크로드 아티팩트 보호:

  • 변경할 수 없는 인프라 원칙을 설정합니다. 컨테이너 이미지 및 VM 이미지를 소스 코드에 취약한 기본 이미지와 동일한 보안 엄격함이 필요한 중요한 아티팩트로 처리하면 배포된 모든 인스턴스에 약점이 전파됩니다. 워크로드 아티팩트가 한 번 빌드되고, 포괄적으로 검사되고, 암호화적으로 서명되고, 수정 없이 배포되는 변경할 수 없는 인프라 원칙을 설정하여 수명 주기 내내 일관성과 추적 가능성을 보장합니다.

  • 다단계 빌드에서 최소 기본 이미지를 사용합니다. 컨테이너 워크로드의 경우 필수 런타임 구성 요소만 포함하는 최소 기본 이미지부터 계층화된 이미지 보안을 구현하여 전체 운영 체제 이미지에 비해 공격 노출 영역을 크게 줄입니다. 다단계 빌드를 활용하여 빌드 시간의 종속성을 런타임 이미지와 분리하고, 기능이 풍부한 이미지에서 컴파일 및 빌드를 수행한 후, 최종 결과물만 최소 런타임 이미지에 복사하여 개발 도구, 패키지 관리자, 취약성을 증가시키는 빌드 종속성을 제거하여 공격자에게 제공될 수 있는 악용 도구를 제거합니다.

  • 격리 정책과 자동화된 검사를 통합합니다 . 자동화된 취약성 검사를 레지스트리 스토리지 전에 모든 이미지를 검사하는 이미지 빌드 파이프라인에 통합하고, 포괄적인 CVE 데이터베이스를 확인하고, 새로운 취약성이 공개될 때 저장된 이미지를 지속적으로 다시 검사합니다. 보안 팀의 승인 및 문서화된 위험 수용이 필요한 예외 워크플로를 제외하고 위험 또는 심각도가 높은 취약성이 있는 이미지가 배포되지 않도록 하는 자동화된 격리 정책을 구현합니다. 보안 패치가 릴리스될 때 자동화된 파이프라인 트리거를 사용하여 기본 이미지 새로 고침 정책을 설정하여 이미지가 시간이 지남에 따라 CVE를 누적하지 않도록 합니다.

  • 암호화 서명 및 확인 적용: 빌드 시 모든 단계 서명 이미지에서 암호화 서명 및 확인을 통해 이미지 무결성을 적용하고, 배포 전에 서명을 확인하고, 서명되지 않거나 변조된 이미지를 자동으로 거부합니다. 이렇게 하면 악의적 사용자가 합법적인 이미지를 백도어가 포함된 손상된 버전으로 대체하는 이미지 대체 공격을 방지할 수 있습니다. 네트워크 액세스 제어(프라이빗 엔드포인트, 가상 네트워크 통합), 이미지를 푸시/끌어올 수 있는 사용자를 제한하는 역할 기반 액세스 정책 및 모든 레지스트리 작업의 포괄적인 감사 로깅을 사용하여 보안 컨테이너 레지스트리에 이미지를 저장합니다.

  • VM에 대해 강화된 골든 이미지를 유지 관리합니다. VM 워크로드의 경우 정기적인 보안 패치 및 규정 준수 유효성 검사를 거치는 CIS 벤치마크 규격의 강화된 기본 이미지를 사용하여 중앙 집중식 골든 이미지 리포지토리를 유지 관리합니다. 보안 업데이트를 통합하고, 불필요한 서비스를 제거하고, 최소 권한 구성을 적용하고, 실행 중인 시스템을 패치하는 대신 정의된 일정에 따라 새 이미지를 생성하는 자동화된 이미지 빌드 파이프라인을 구현합니다.

  • 통합 보안 플랫폼 활용:Microsoft Defender for Containers 통합을 사용하는 Azure Container Registry와 같은 솔루션은 일관된 보안 정책을 사용하여 자동화된 검사, 격리 워크플로, 콘텐츠 신뢰 및 다중 지역 복제를 제공합니다.

구현 예제

물류 조직은 중요한 원격 코드 실행 취약성을 포함하는 패치되지 않은 기본 이미지를 사용하여 컨테이너 애플리케이션을 배포했습니다. 공격자는 배포 직후 취약성을 악용하여 배송 데이터를 손상시켰습니다.

도전: 취약성 검색이 없는 수많은 컨테이너 이미지 몇 달 전에 빌드된 이미지는 중요한 취약성을 포함하여 많은 CVE를 축적했습니다. 어떤 확인도 악의적인 이미지 대체를 방지하지 못했습니다.

솔루션 접근 방식:

  • 컨테이너 레지스트리 보안:Azure Container Registry 를 구현하여 배포 전에 심각도가 높은 CVE 이미지를 취약성 검사하고 격리합니다.
  • 강화된 VM 이미지: 규제된 워크로드에 대한 CIS 벤치마크 규격 VM 이미지를 사용하여 Azure 공유 이미지 갤러리 를 배포했습니다.
  • 런타임 보호: 지속적인 위협 감지 및 드리프트 모니터링 을 위해 컨테이너용 Microsoft Defender 를 구성했습니다.
  • 아티팩트 무결성: 수명 주기 내내 이미지 인증을 보장하는 암호화 서명 및 확인이 설정되었습니다.

결과: 프로덕션 배포에서 취약한 이미지가 차단되었습니다. 이미지당 컨테이너 CVE가 크게 감소했습니다. 서명 확인을 통해 이미지 대체 공격을 방지했습니다.

중요도 수준

있어야 합니다.

컨트롤 매핑

  • NIST SP 800-53 Rev.5: CM-2, CM-3, SI-2, SI-7, RA-5
  • PCI-DSS v4: 6.2.4, 6.3.3, 11.3.1
  • CIS 컨트롤 v8.1: 4.1, 7.3, 7.4
  • NIST CSF v2.0: PR.IP-1, PR.IP-3, DE.CM-8
  • ISO 27001:2022: A.8.9, A.8.31, A.8.32
  • SOC 2: CC7.2, CC8.1

DS-7: DevOps 로깅 및 모니터링 구현

보안 원칙

보안 분석, 실시간 위협 탐지 및 자동화된 대응을 위해 중앙 집중식 SIEM(보안 정보 및 이벤트 관리) 플랫폼에 통합된 감사 스트리밍을 통해 포괄적인 DevOps 활동 로깅을 구현합니다. 동작 분석, 변칙 검색 및 보안 메트릭을 설정하여 신속한 인시던트 대응을 가능하게 하고 규정 준수 감사 내역을 유지 관리합니다.

완화할 리스크

DevOps 로깅 및 모니터링이 부족하면 악의적 사용자가 감지되지 않고 작동하고, 지속성을 설정하고, 중요한 코드 또는 자격 증명을 반출하기 위해 악용하는 중요한 사각지대가 생성됩니다. 포괄적인 가시성이 없는 경우:

  • 검색되지 않은 파이프라인 손상: 공격자는 CI/CD 파이프라인을 수정하여 악성 코드를 삽입하거나, 비밀을 유출하거나, 감사 로깅이 없거나 부족하여 경고를 트리거하지 않고 백도어를 설정합니다.
  • 코드 또는 인프라를 수정하는 내부자 위협: 악의적인 내부자 또는 손상된 계정은 탐지 없이 소스 코드, 인프라 정의 또는 배포 구성을 무단으로 변경합니다.
  • 포괄적인 감사 내역 부족: 자세한 활동 로그가 없으면 보안 인시던트가 오래 지속되고 위반 영향이 증가할 때 법의학 조사, 영향 평가 및 근본 원인 분석을 방지할 수 있습니다.
  • 지연된 인시던트 대응: MTTD(평균 검색 시간)는 보안 팀이 DevOps 보안 이벤트의 실시간 경고, 변칙 검색 및 자동화된 상관 관계가 부족한 경우 몇 시간에서 몇 주까지 연장됩니다.
  • 준수 감사 실패: 포괄적인 감사 추적, 변경 내용 추적 및 액세스 로깅을 의무화하는 규정 요구 사항(SOX, PCI-DSS, HIPAA, ISO 27001)은 중앙 집중식 DevOps 모니터링 없이는 충족할 수 없습니다.
  • 권한 상승 맹점: 권한의 무단 상승, 백도어 계정 생성 또는 액세스 제어 수정은 동작 분석 및 권한 모니터링이 없을 경우 탐지되지 않습니다.

로깅 간격은 높은 권한 개발 경로에서 악의적인 파이프라인 변경, 권한 상승 및 영구 액세스 시도를 숨깁니다.

MITRE ATT&CK

  • 방어 회피(TA0005): 감사 로깅, 보안 검사 단계 또는 모니터링 에이전트가 사각지대에서 작동하도록 사용하지 않도록 설정하는 방어(T1562) 손상 및 감사 로그 또는 파이프라인 실행 기록을 지우는 지표 제거(T1070)를 통해 악의적인 활동을 숨깁니다.
  • 지속성(TA0003): 계정 조작(T1098)으로 검색되지 않게 추가적인 서비스 주체, 개인 액세스 토큰, 또는 SSH 키를 생성.
  • 컬렉션(TA0009): 파이프라인 액세스를 통해 소스 코드, 비밀 또는 지적 재산을 유출하는 정보 리포지토리(T1213)의 데이터입니다.
  • TA0006(자격 증명 액세스): 파이프라인 로그 또는 실행 기록에서 노출된 비밀을 수집하는 보안되지 않은 자격 증명(T1552)

DS-7.1: DevOps 플랫폼에 대한 감사 로깅 구현

프로덕션 인프라 및 중요한 소스 코드에 대한 권한 있는 액세스 권한이 있는 DevOps 플랫폼에는 악의적인 활동 및 내부자 위협을 감지하기 위한 포괄적인 보안 모니터링이 필요합니다. 감사 로깅 간격을 사용하면 악의적인 행위자가 오랜 기간 동안 검색되지 않고 작동할 수 있으며, 중앙 집중식 로그 집계는 정교한 공격 체인을 드러내는 광범위한 보안 원격 분석과의 상관 관계를 가능하게 합니다. 실시간 동작 분석은 격리된 이벤트에 보이지 않는 의심스러운 패턴을 식별하여 원시 감사 데이터를 실행 가능한 보안 인텔리전스로 변환합니다.

다음 기능을 통해 포괄적인 DevOps 보안 모니터링을 설정합니다.

  • 포괄적인 보안 관련 활동을 캡처합니다. 사용자 인증 및 권한 부여 이벤트, 소스 코드 커밋 및 분기 작업, 파이프라인 만들기 및 수정, 배포 실행, 비밀 액세스, 권한 변경, 서비스 주체 만들기 및 관리 작업 등 모든 보안 관련 DevOps 활동을 캡처하는 포괄적인 감사 로깅을 설정합니다. DevOps 플랫폼은 프로덕션 인프라에 대한 권한 있는 액세스 권한을 보유하며 중요한 코드 로깅 간격을 통해 악의적인 참가자와 악의적인 내부자가 오랜 기간 동안 검색되지 않고 작동할 수 있습니다.

  • 실시간으로 중앙 집중식 SIEM에 로그 전달: DevOps 플랫폼 네이티브 보존(일반적으로 90일)에 의존하지 않고 중앙 집중식 SIEM 플랫폼에 감사 로그를 실시간으로 전달하여 장기 포렌식 분석, 규정 준수 보고 및 다른 시스템의 보안 이벤트와의 상관 관계를 가능하게 합니다. 수동 로그 검토 없이 자동화된 구문 분석, 분석 및 경고를 가능하게 하는 JSON(구조적 형식)의 표준화된 프로토콜(/azure Event Hubs, syslog)을 통해 보안 운영 센터로 로그를 스트리밍합니다.

  • 동작 분석 및 변칙 검색을 배포합니다. DevOps 감사 데이터에 대한 동작 분석 및 변칙 검색을 구현하여 시간 외 파이프라인 수정, 중요한 리포지토리에 대한 비정상적인 액세스, 신속한 권한 상승, 서비스 주체 생성, 의심스러운 배포, 예기치 않은 위치에서 파이프라인 실행 또는 비정상적인 비밀 액세스 패턴 등 개별 이벤트에 보이지 않는 의심스러운 패턴을 식별합니다. 사용자 및 서비스에 대한 기준 동작 프로필을 설정하고, 손상 또는 내부자 위협을 나타낼 수 있는 통계적으로 유의한 편차에 대해 경고합니다.

  • 고위험 활동에 대한 자동화된 경고 구성: 프로덕션 배포 오류, 보호된 분기의 파이프라인 수정, 새 서비스 주체 만들기, 권한 상승 이벤트, 비활성화된 보안 검사 단계, 감사 로그 전달 구성 변경 또는 권한 없는 파이프라인의 비밀 액세스 시도 등 보안 팀에 즉시 알림을 보내며 위험 수준이 높은 활동에 대한 자동화된 경고를 구성합니다. 분석을 위해 일상적인 이벤트가 일괄 처리되는 동안 중요한 경고가 보안 작업에 즉시 도달하도록 심각도 기반 에스컬레이션을 구현합니다.

  • 더 광범위한 보안 원격 분석과 통합: 엔드포인트 검색, 네트워크 보안, ID 이벤트 및 위협 인텔리전스 피드와의 상관 관계를 위해 SIEM 플랫폼의 광범위한 보안 원격 분석과 DevOps 감사 로그를 통합합니다. 이렇게 하면 DevOps 손상이 다단계 작업의 한 단계인 정교한 공격 체인을 검색할 수 있습니다. 예를 들어 피싱된 자격 증명과 후속 파이프라인 수정 및 비정상적인 클라우드 리소스 프로비저닝의 상관 관계를 지정합니다.

  • 통합 SIEM 플랫폼 활용:Microsoft Sentinel 통합을 사용한 Azure DevOps 감사 스트리밍과 같은 플랫폼은 실시간 로그 전달, DevOps 위협에 대한 미리 빌드된 검색 규칙, 조사를 위한 보안 통합 문서 및 자동화된 응답 오케스트레이션을 제공합니다.

구현 예제

제조 조직은 이전 계약자가 CI/CD 파이프라인을 수정하여 백도어 코드를 프로덕션 애플리케이션에 삽입할 때 내부자 위협을 발견했습니다. 감사 로깅이 부족하여 몇 달 동안 인시던트가 검색되지 않은 상태로 유지되었습니다.

도전: DevOps 활동의 중앙 집중식 로깅이 없습니다. 파이프라인 수정 및 권한 있는 액세스 변경은 모니터링되지 않았습니다. 감사 흔적 부족으로 인해 법의학 조사가 방해를 받습니다. 변경 내용 추적이 부족하여 규정 준수 감사에 실패했습니다.

솔루션 접근 방식:

  • 중앙 집중식 감사 로깅: 보안 분석 및 장기 보존을 위해 Microsoft SentinelAzure DevOps 감사 스트리밍 전달 이벤트를 사용하도록 설정했습니다.
  • 행위 분석: 비정상적인 액세스 패턴, 근무 시간 외 파이프라인 수정 및 내부자 위협을 나타내는 권한 상승을 식별하는 이상 탐지를 구현했습니다.
  • 자동화된 경고: 권한 없는 프로덕션 배포 및 보안 작업에 대한 서비스 주체 생성 라우팅을 포함하여 의심스러운 활동에 대한 경고가 구성되었습니다.
  • 규정 준수 보고: 포괄적인 변경 내용 추적을 사용하여 규정 요구 사항을 충족하는 자동화된 감사 추적 생성을 만들었습니다.

결과: 후속 무단 파이프라인 수정을 빠르게 감지하고 방지했습니다. 포괄적인 감사 내역을 사용하여 인시던트 조사 시간을 크게 단축했습니다. 문서화된 변경 관리를 준수했습니다.

중요도 수준

있어야 합니다.

컨트롤 매핑

  • NIST SP 800-53 Rev.5: AU-2, AU-3, AU-6, AU-12, SI-4
  • PCI-DSS v4: 10.2.1, 10.2.2, 10.3.4
  • CIS 컨트롤 v8.1: 8.2, 8.5, 8.11
  • NIST CSF v2.0: DE.CM-1, DE.CM-7, RS.AN-1
  • ISO 27001:2022: A.8.15, A.8.16
  • SOC 2: CC7.2, CC7.3