안전한 코드를 빠르고 대규모로 배포하는 것은 소프트웨어 업계 전반의 과제이며, 어려운 일입니다. 이러한 문제를 해결하기 위해 애플리케이션 개발자가 개발 수명 주기 전반에 걸쳐 운영 및 보안 팀과 긴밀하게 협력하는 DevSecOps를 채택하는 조직이 점점 더 많아지고 있습니다.
Datadog에서는 24년 2-4월에 'State of DevSecOps'에 대해 연구하고 리포트를 발간하였는데요, 이를 짧게 요약하고 리뷰해보려 합니다. Datadog은 서버, 데이터베이스, 도구 및 서비스에 대한 모니터링을 제공하는 클라우드 규모 애플리케이션을 위한 서비스를 제공합니다.
Java 서비스가 타사 취약점의 영향을 가장 많이 받는 것으로 확인되었습니다. Java 서비스의 90%가 타사 라이브러리에서 도입한 하나 이상의 중요하거나 심각도가 높은 취약점에 취약한 반면, 다른 기술은 평균 47%에 불과했습니다. 이 중에서도 Java는 중요도가 높고 심각한 취약점의 63%가 간접 종속성, 즉 애플리케이션과 함께 간접적으로 패키징된 타사 라이브러리에서 비롯됩니다.
따라서 애플리케이션 취약점을 검사할 때는 직접적인 종속성뿐만 아니라 전체 종속성 트리를 고려하는 것이 중요합니다.
자동화된 보안 스캐너를 통한 공격이 가장 많은 익스플로잇 시도를 차지한 것으로 나타났습니다. 이러한 스캐너는 일반적으로 공격자가 대규모로 실행하여 전체 인터넷을 스캔하여 취약한 시스템을 식별하는 오픈 소스 툴입니다. 이러한 도구의 대표적인 예로는 Nuclei, ZGrab, SQLmap 등이 있습니다.
이러한 스캐너를 통해 확인된 수천만 건의 악성 요청 중 0.0065%만이 성공적으로 취약점을 트리거했습니다. 성공률이 높지 않기 때문에 방어자가 우선 순위 지정 프레임워크를 갖추어 악성 요청이 성공할 확률이 높은 요청들을 중심으로 위협을 필터링하는 것이 좋습니다.
2023년, CVE 프로젝트에서 4,000개 이상의 고위험 취약점과 1,000개 이상의 중요 취약점이 확인되었습니다. 연구를 통해 각 서비스는 평균적으로 19개의 취약점에 취약한 것으로 나타났습니다. 하지만 공격자가 실제로 악용하는 취약점은 약 5%에 불과하다고 합니다.
이러한 수치를 고려하면 실무자들이 직면하는 취약점의 양에 압도당할 수밖에 없으며, 모든 것을 고려하기보다는 중요한 것에 집중할 수 있도록 우선순위 지정 프레임워크가 필요하다는 것을 알 수 있습니다.
컨테이너 이미지가 작을수록 타사 라이브러리가 더 적게 포함되어 있기 때문에 취약점이 적을 가능성이 높다는 것을 확인했습니다. 평균적으로 100MB 미만의 컨테이너 이미지에는 4.4개의 고위험 또는 중요 취약점이 있는 반면, 250~500MB의 이미지에는 42.2개, 그보다 큰 이미지에는 거의 80개의 취약점이 있었습니다.
취약점을 최소화하기 위해 경량 이미지를 사용하는 것이 좋습니다.
퍼블릭 클라우드 컴퓨팅이 인기를 얻으면서 IaC는 클라우드 환경 프로비저닝을 위한 사실상의 표준으로 빠르게 자리 잡았습니다. IaC는 버전 관리, 추적성, 환경 전반의 재현성 등 운영에 상당한 이점을 제공합니다.
AWS에서는 71% 이상의 조직이 Terraform, CloudFormation 또는 Pulumi와 같은 인기 있는 IaC 기술 중 하나 이상을 통해 클라우드 인프라를 운영하는 것으로 확인되었습니다. AWS와 Google Cloud 전반에서 Terraform은 가장 인기 있는 기술이며, 클라우드 벤더사에서 출시한 전용 IaC인 CloudFormation 보다도 많이 사용되고 있습니다.
품질 관리, 더 나아가 보안의 주요 요소는 사람의 손에서 벗어날 수 있는 반복적인 작업을 자동화하는 것입니다. 자동화를 통해 엔지니어는 프로덕션 환경에 대한 지속적인 권한 액세스가 필요하지 않으며 배포를 적절히 추적하고 동료 검토를 받을 수 있습니다. 이러한 모범 사례의 반대인 클라우드 콘솔에서 수동으로 작업을 수행하는 것을 종종 클릭 작업 또는 ClickOps라고 합니다.
CloudTrail 로그를 분석한 결과, AWS를 사용하는 조직 중 최소 38%가 모든 AWS 계정에서 ClickOps를 사용한 것으로 확인되었습니다. 이는 이러한 조직이 이 기간 동안 프로덕션 환경을 포함하여 AWS 관리 콘솔을 통해 워크로드를 배포하거나 민감한 작업을 수동으로 수행했음을 의미합니다.
클라우드 환경에서는 오래 보관된 credential의 유출이 데이터 침해의 가장 흔한 원인 중 하나입니다. CI/CD 파이프라인은 일반적으로 높은 권한을 가지고 있으며 credential이 유출될 수 있기 때문에 공격 표면이 증가합니다. 따라서 CI/CD 파이프라인에 수명이 짧은 credential을 사용하는 것은 클라우드 환경 보안의 가장 중요한 측면 중 하나입니다.
AWS에서 실행 중인 조직의 31% 이상에 해당하는 GitHub Actions를 사용하는 조직 중 37%만이 짧은 수명의 자격 증명과 OIDC(OpenID Connect)를 기반으로 하는 '키 없는' 인증만을 사용하는 것으로 나타났습니다.
CI/CD 파이프라인에서 키 없는 인증을 사용하면 설정이 더 쉽고 안전합니다. 다시 한 번, 이는 좋은 운영 관행이 더 나은 보안 결과로 이어진다는 것을 보여줍니다.
DevSecOps의 궁극적인 목표는 개발, 보안, 운영의 완전한 통합을 통해 더욱 안전하고 민첩한 소프트웨어 배포를 실현하는 것입니다. 이를 위해서는 조직 문화의 변화와 함께 지속적인 개선 노력이 필요합니다. 앞으로도 DevSecOps가 발전하며 업계 전반에 걸쳐 더 나은 보안 관행과 배포 속도를 가져오기를 기대합니다.