total_activ

[도커이미지 보안/프로젝트] REST API와 이미지 취약점 분석 본문

프로젝트

[도커이미지 보안/프로젝트] REST API와 이미지 취약점 분석

INFOO 2022. 3. 14. 17:03

1. 클라우드와 도커간의 관계

클라우드 서비스는 laaS, PaaS, SaaS로 구분되는데 서버/네트워크/방화벽 같은 서비스 형태로 인프 라를 제공하는 IaaS와 개발 환경을 의미하는 PaaS, 소프트웨어를 제공하는 SaaS가 있다. 우리가 말하는 도커는 클라우드의 PaaS Management에 속한다. 도커를 사용하는 이유는 간단하다. 가상 머신을 이용하는 하이퍼바이저는 보안성과 독자성은 뛰어나지만 너무 무겁고 과정들이 번잡했다. 이러한 불편한 점을 고안해서 나온 차선책이 도커이다. 도커를 활용할 경우 이미지 관리와 컨테 이너 관리가 간편해진다.

이 둘의 본질적이 차이는 다음과 같다. 기존의 하드웨어 가상화가 아닌 실행환경을 분리한 것으 로 호스트 os 위에 도커 엔진이 있고 이를 통해 각 필요한 라이브러리에 따른 컨테이너들이 존재 한다.

2. 클라우드 도커 취약점

REST API

클라우드 도커가 사용자들에게 제공하는 효율성과 생산성이 미흡한 보안으로 공격자들에게 돌 아갈 수 있다. 도커를 통한 클라우드 공격은 크게 악성 도커 이미지와 REST API 악용으로 나뉜다.

 

클라우드의 도입으로 많은 IT 인프라 환경이 도커로 구축되고 있다. 이러한 환경에서 기본적으 로 도커이미지, 도커 컨테이너들을 관리할 수 있는 CLI는 로컬 환경에서만 사용 가능하다. 따라서 추가 설정을 통한 원격 환경에서 CLI 사용이 가능한 REST API를 활용한다. 이때 도커 REST API 서 버의 IP와 포트가 외부에 노출될 경우 외부의 접근이 가능하다. 공격자들은 이러한 방법으로 도커 REST API 서버를 스캐닝 한 후 REST API를 악용한다.

 

악성 도커 이미지

또한 도커 허브에는 많은 도커 이미지들이 저장되어 있어 손쉽게 다운로드 해 사용할 수 있다. 하지만 2020년도 이후로부터 도커 이미지 내에 치명적인 취약점들이 발견되고 있고 그로 인해 이미지 보안에 대한 중요도가 급상승하고 있다. 이러한 문제점이 클라우드 보안에 직접적으로 연 결될 수밖에 없다. 악의적인 디도스 또는 채굴 애플리케이션이 포함된 악성 도커 이미지 업로드 를 통해 정상 목적으로 위장하여 공격을 진행할 수 있다.

 

이러한 클라우드에서 일어날 수 있는 보안 위협을 막기 위해서는 사전에 보안 설정 관리가 중 요하는 등 사전 보안 규칙을 세워야 한다. 이 중에서도 도커 이미지에 대한 사전의 취약점 추론 이 가능한 이론이 계속 언급되고 있다.

 

해당 이론이 등장하게 된 배경에 대해 설명해 보고자 한다.

 

Docker hub에 있는 httpd 이미지를 로컬 저장소에 pull을 하게 되면 다음과 같은 모습이 나타 난다. 이때 pull complete의 수는 총 5개이고 sha256키 값의 개수와 동일하다.

 

즉, 도커 스토리지 드라이버 폴더(/var/lib/docker/ overlay2) 하위에 폴더 형태로 존재하는 diff_ids 들은 배열의 형식으로 pull complete한 수만큼 키가 저장되어 있다.

 

이러한 킷값과 DB 폴더에 있는 sha256 데이터 파일들을 매칭하면 컨테이너화하지 않아도 기본적인 도커 데이터 분석이 가능하며 레이어들 조합을 통해 실제 운영되는 컨테이너 데이터로 복원이 가능하다.

 

이러한 원리로 서버 운영 시 보안 위협 사항들 중에서 계정관리 부분을 제외하고 파일 및 디렉 터리 관리 부분은 이미지 분석을 통해 권한 설정 확인이 가능하고, 서비스 관리 부분은 설치되어 있는 파일들을 조사하면 취약 여부를 확인할 수 있다.

 

실습 kali 내의 httpd 도커 이미지의 diif_ids 킷값은 총 5개로 다음과 같다.

  • 1bf88df2ac462d823ae76f76d0b891354f3f247fb6d2fc8372173819a55679ce 
  • 59fde81347af891e4214b02ad64e0726127397cb15ffa63a6aac39e125aa30ee 
  • 608f3a074261105f129d707e4d9ad3d41b5baa94887f092b7c2857f7274a2fce 
  • 818410a5e575dfac1908be48f7972d2d752777f2a308c25c9ff4c0dee2d7982c 
  • e825bfd70e3d75eaa029ee6fc1646727926909de550a71ca0352a8bd2d19903c

 

키값과 매칭되는 파일들은 디스트리뷰션 레이어 id에 대응하는 레이어 id를 찾는 방법으로 찾을 수 있다. /image/overlay2/distribution/diffid-by-digest/sha256 아래에 있는 이름이 디스트리뷰 션 id이고 이 파일을 출력하면 레이어 id가 나타난다. 아래 첫 번째 그림을 예시로 들면 이미지가 pull 될 때 aac… 는 1bf…레이어에 대응한다.

1bf88df2ac462d823ae76f76d0b891354f3f247fb6d2fc8372173819a55679ce → aacb3062d128718f5211d70c46d8696e4fb716dc9eb9f7b8be6d441584eedca2

 

위 httpd 이미지의 구성 프로세스 내용을 구성표로 표현하면 다음과 같다.

 

3. 마무리

클라우드 배포 및 관리에 편리성을 제공해 주는 도커는 다방면에서 많이 사용되고 있다. 하지 만 재작년부터 도커에 대한 취약점이 발견되면서 보안 중요성이 두드러지게 강조되고 있다. 위에서는 REST API와 이미지에 대한 취약점에 대해 알아봤지만 이외의 방식으로 공격하는 사 례들도 존재한다. 소나타입 보고서에 따르면 이러한 취약점을 갖고 있는 컨테이너 이미지가 전체의 반 이상이 발견되었다고 한다. 이러한 이미지를 사용하여 소프트웨어를 실행하면 공격 위험 또한 증가된다. 쉽게 애플리케이션을 배포하고 축소 및 확정하는 장점을 가진 만큼 우리 에게 고스란히 위협을 가하고 있다는 뜻이다. 따라서 우리는 무분별적으로 사용하는 도커 이 미지에 대한 인식 변화가 중요할 뿐만 아니라 지속적인 도커 관련 보안 관심이 필요하다.