비밀은 기업이 비공개로 유지하고자 하는 정보로 구성된다. 로그인 인증 정보, 액세스 키, 인증서가 대표적이다. IBM의 데이터 침해 보고서에서 드러난 바와 같이 인증 정보와 비밀은 각종 사이버 공격과 데이터 침해의 단골 표적으로, 유출 시 악의적 행위자에게 초기 또는 횡적 액세스 권한을 제공하는 역할을 한다.
코드코브(Codecov), 트위치(Twitch)를 포함한 여러 데이터 침해 사건에서 허술한 보안 관리 관행이 주요한 원인으로 작용했다. 최근 삼성의 소스 코드 일부분이 노출된 삼성 데이터 침해 사건에서는 6,000개 이상의 비밀 키가 노출 정보에 포함됐다.
비밀 관리 문제의 심각성은 지난 몇 년 동안 계속해서 증가했다. 최근 깃가디언(GitGuardian)이 발행한 2022년 비밀 노출 현황 보고서(State of Secrets Sprawl 2022)에 따르면, 2021년 공개 깃허브 리포지토리를 스캔한 결과 600만 개 이상의 비밀이 감지됐다. 2020년에 비해 2배 증가한 수치다.
기업의 비밀 관리가 성숙하지 못하다는 점 자체도 문제이지만, 데브섹옵스를 지향하는 클라우드 네이티브 환경이 특히 이런 부분에 취약하다. 구체적으로 비밀 보관, 중앙 집중식 접근 방법, 액세스 제어, 비밀 사고 발생 시 대응 준비 등이 취약하다.
오픈소스 솔루션 및 관련 리포지토리의 인기가 높아지는 점도 비밀 노출을 악화시키는 요소다. 소스 코드와 이미지, 코드형 인프라(Infrastructure-as-Code, IaC) 매니페스트도 우발적으로 또는 부주의하게 비밀이 커밋되어 노출될 수 있는 영역이다. 기업은 오픈소스 기술 컨테이너 이미지와 IaC 템플릿화된 매니페스트를 폭넓게 사용해서 많은 시간을 절약하고 혁신의 속도를 높일 수 있지만, 이런 관행은 특히 공개 리포지토리의 커뮤니티로 커밋될 때 비밀 노출의 주된 경로가 되기도 한다.
문제는 공개 리포지토리뿐만이 아니다. 기업의 내부 비공개 리포지토리와 심지어 CI/CD(Continuous Integration/Continuous Delivery) 빌드 시스템 및 파이프라인에까지 손을 뻗는 데이터 침해가 발생하면서 여기서도 비밀이 악의적 행위자에게 노출될 수 있다. 애플리케이션 보안팀은 비밀 관리 방식 구축과 성숙도 측면에서 개발팀 및 다른 부서의 활동에 보조를 맞추는 데 어려움을 겪고 있다.
비밀 관리를 위한 권장 사항
기업은 비밀 관리 방식의 성숙도를 높여야 한다. 그렇지 않으면 소프트웨어 벤더 또는 클라우드/관리형 서비스 제공업체에 속한 노출된 비밀이 노출됐을 때 그 여파는 한 기업만이 아니라 공급망과 생태계를 따라 퍼지게 된다.여기서 난관은 비밀이 우발적으로 공유, 저장 또는 노출될 수 있는 위치와 방식이 다양하다는 점이다. 현대의 기술 환경이라면 소스코드 리포지토리, CI/CD 파이프라인, 컨테이너 이미지, IaC 템플릿, 심지어 개발자의 로컬 워크스테이션까지 포함된다. 이 같은 문제를 일부 완화하는 방법을 살펴보자.
오픈소스와 상용 툴
리포지토리와 CI/CD 파이프라인의 경우 선택할 수 있는 오픈소스와 사유 솔루션이 다양하다. 가장 인기 있는 오픈소스 선택지는 깃리크스(GitLeaks)와 트러플호그(Trufflehog)로, 모두 깃 리포지토리에서 저장된 비밀을 스캔하는 기능을 지원한다. 깃허브(GitHub), 깃랩(GitLab)과 같은 인기 있는 CI 플랫폼에 통합되어 파이프라인을 타고 흐르는 비밀이 리포지토리 또는 런타임 환경에 도달하기 전에 포착할 수 있다. 암호, API 키, 개인 액세스 토큰과 같은 비밀을 검색할 수도 있다. 악의적 행위자가 이런 비밀을 악용할 경우 문제의 기업뿐 아니라 고객과 비즈니스 파트너를 비롯해 해당 기업과 디지털 방식으로 상호작용하는 다른 사람까지 피해를 입을 수 있다.
이들 오픈소스 솔루션은 예컨대 실제 커밋에 앞서 실행할 수 있는 프리 커밋 후크(pre-commit hook)도 지원한다. 2가지 옵션 모두 내장된 규칙 사용을 지원하지만, 맞춤형 비밀 탐지 규칙을 생성할 수도 있다. 이 기능은 기업이 보호해야 하는 데이터의 유형에 따라 유용하게 활용할 수 있다.
이런 툴은 잠재적으로 노출된 비밀을 찾는 데에는 매우 유용하지만, 쏟아지는 경보를 살펴보면서 오탐지와 실제 문제를 구분해야 하는 개발팀 입장에서는 매우 번거로울 수 있다. 따라서 툴을 튜닝하는 것이 무엇보다 중요하다.
벤더 영역에서 부상 중인 업체는 이 기사의 앞부분에서 인용된 비밀 노출에 관한 연구 자료를 발표한 깃가디언이 대표적이다. 깃가디언은 버전 제어 시스템, 데브옵스 툴 및 IaC 구성과 통합해서 비밀 노출을 방지하는 코드 보안 정책 엔진을 제공한다. 또한 현재 활성 사용자 수가 7,000만 명이 넘는 모든 공개 깃허브 커밋을 적극적으로 모니터링 및 스캔한다. 물론 이들 모두가 공개 리포지토리를 사용하는 것은 아니지만, 공개 리포지토리를 대상으로 한 깃가디언의 모니터링 활동은 비밀 노출 현황과 관련하여 관련 지표와 문제의 심각성을 알리는 데 도움이 된다.
개발자 교육
또 다른 권장 사항은 앱 보안팀이 주도하는 개발자 교육이다. 툴도 효과가 좋고 비밀 노출 방지에 필수적이지만, 시프트-레프트(shift-left) 관점에서 보면 개발자부터 시작하는 것이 좋다. 유출된 비밀의 위험성, 그리고 유출이 기업뿐 아니라 고객 또는 파트너에까지 미치는 영향에 대해 개발자를 교육하는 것 역시 중요하다.
사고 대응 계획에 비밀 유출 시나리오 포함하기
사이버보안 사고 대부분이 그렇듯이 비밀 침해 역시 발생은 기정사실이며 결국 시간의 문제다. 사고 대응 계획 및 관련 플레이북에 비밀 유출 시나리오를 포함해야 하는 이유다. 비밀이 노출됐을 때 기업은 어떻게 대처해야 하는가? 누가 작업에 참여하는가? 영향을 최소화하기 위해 유출된 비밀을 무효화할 방법이 있는가? 영향을 받은 고객과 파트너에게 어떻게 소식을 전할 것인가? 비밀 노출 및 이와 연관된 보안 사고에서 중요하게 고려해야 할 질문들이다.
툴과 프로세스, 사람을 통한 다면적 접근 방식을 취하면 비밀 유출 및 그 여파와 관련된 위험을 완화하는 데 도움이 된다. 개발자, 앱 보안 엔지니어, 클라우드 네이티브 기업이 비밀 관련 위험을 완화하기 위해서는 앞서 설명한 항목을 구현하는 것이 중요하다. 클라우드와 데브섹옵스의 시대에 비밀 유지란 결코 쉬운 일이 아니다.
editor@itworld.co.kr