클라우드를 잘 사용하기 위해서는 클라우드 환경이 가지고 있는 많은 보안상의 문제점을 잘 파악하고 이를 대비해야만 한다. 그럼 클라우드 환경에서는 어떤 보안상의 문제점이 있는지 좀더 자세하게 살펴보겠다.
◇ 첫째, 클라우드 도메인의 취약성
AWS 등 퍼블릭 클라우드 이용 시 제공받는 도메인을 피싱 사이트, 악성코드 배포 등으로 악용하는 사례가 많다. 많은 CSP(Cloud Service Provider)들이 웹 애플리케이션을 쉽게 개발하고 운용할 수 있게 AWS Lambda(람다) 같은 서버리스(Serverless) 형태의 개발 환경 플랫폼에 웹 애플리케이션 소스코드를 업로드하면 웹 페이지에 접근할 수 있는 클라우드 자체 도메인이 자동으로 제공되는데, 공격자들은 이를 악용하여 유사한 피싱 사이트를 만들어 계정 및 패스워드를 탈취한다. 또한 AWS의 S3나 네이버의 MYBOX같은 스토리지 서비스도 악성코드 배포에 활용되고 있다. AWS S3같은 스토리지 서비스들은 파일 다운로드 서비스를 제공할 때 대부분 아래와 같은 공식 도메인의 하위 도메인을 제공하는데, 공격자는 공식 도메인은 그대로 사용하고, 하위 도메인만 교묘히 변경하여 악성코드를 배포하는 데 사용한다. 대부분의 사용자들은 공식 도메인이 같기 때문에 안심하고 파일을 다운로드 하는 경우가 많다.
AWS 등 퍼블릭 클라우드 이용 시 제공받는 도메인을 피싱 사이트, 악성코드 배포 등으로 악용하는 사례가 많다. 많은 CSP(Cloud Service Provider)들이 웹 애플리케이션을 쉽게 개발하고 운용할 수 있게 AWS Lambda(람다) 같은 서버리스(Serverless) 형태의 개발 환경 플랫폼에 웹 애플리케이션 소스코드를 업로드하면 웹 페이지에 접근할 수 있는 클라우드 자체 도메인이 자동으로 제공되는데, 공격자들은 이를 악용하여 유사한 피싱 사이트를 만들어 계정 및 패스워드를 탈취한다. 또한 AWS의 S3나 네이버의 MYBOX같은 스토리지 서비스도 악성코드 배포에 활용되고 있다. AWS S3같은 스토리지 서비스들은 파일 다운로드 서비스를 제공할 때 대부분 아래와 같은 공식 도메인의 하위 도메인을 제공하는데, 공격자는 공식 도메인은 그대로 사용하고, 하위 도메인만 교묘히 변경하여 악성코드를 배포하는 데 사용한다. 대부분의 사용자들은 공식 도메인이 같기 때문에 안심하고 파일을 다운로드 하는 경우가 많다.
◇ 둘째, 취약한 도커(컨테이너) 및 쿠버네티스 API 서버
클라우드 네이티브 환경이 확대되면서 많은 IT 인프라 환경이 ‘도커(Docker)’로 구축되고 있다. 도커란 애플리케이션과 라이브러리들을 ‘컨테이너(Container)’로 묶어 서비스 구동을 위한 격리 환경을 만들어 주는 오픈소스 플랫폼을 말한다. 도커는 개발 및 서버 환경을 쉽게 구축하고 관리할 수 있기 때문에 많은 IT 인프라에서 사용되고 있다. 도커는 ‘도커 이미지(Docker Image)’와 ‘도커 컨테이터(Docker Container)’들을 관리할 수 있는 ‘CLI(Command Line Interface)’를 제공하지만, 기본적으로 제공된 CLI는 로컬 환경에서만 사용할 수 있는데, 원격에서 도커를 관리하기 위해 도커의 추가 설정을 통해 리모트(Remote) 환경에서도 ‘CLI’ 사용이 가능한 ‘REST API’를 활용할 수 있게 한다. ‘REST API’를 이용하면 아래와 같이 리모트 환경에서도 동일하게 도커들을 관리할 수 있다.
클라우드 네이티브 환경이 확대되면서 많은 IT 인프라 환경이 ‘도커(Docker)’로 구축되고 있다. 도커란 애플리케이션과 라이브러리들을 ‘컨테이너(Container)’로 묶어 서비스 구동을 위한 격리 환경을 만들어 주는 오픈소스 플랫폼을 말한다. 도커는 개발 및 서버 환경을 쉽게 구축하고 관리할 수 있기 때문에 많은 IT 인프라에서 사용되고 있다. 도커는 ‘도커 이미지(Docker Image)’와 ‘도커 컨테이터(Docker Container)’들을 관리할 수 있는 ‘CLI(Command Line Interface)’를 제공하지만, 기본적으로 제공된 CLI는 로컬 환경에서만 사용할 수 있는데, 원격에서 도커를 관리하기 위해 도커의 추가 설정을 통해 리모트(Remote) 환경에서도 ‘CLI’ 사용이 가능한 ‘REST API’를 활용할 수 있게 한다. ‘REST API’를 이용하면 아래와 같이 리모트 환경에서도 동일하게 도커들을 관리할 수 있다.
이 때, 도커 REST API 서버의 IP와 포트가 외부에 노출될 경우, 권한이 없는 제3자도 REST API를 통해 도커 이미지와 도커 컨테이너들을 접근 할 수 있다. 도커 REST API 서버 접속 시 ‘{“message”:”page not found”}’라는 메시지 값이 나오는데, 이를 통해 누구나 도커 REST API 서버인지 여부를 쉽게 판별할 수 있다. 공격자들은 이러한 방법으로 도커 REST API 서버를 스캐닝한 뒤 REST API를 사용하여 악성 코드를 실행시키거나 혹은 시스템을 방해하기 위해 기존 도커들을 임의로 삭제한다. 도커 뿐만 아니라 도커들을 관리하고 운영하는 오케스트레이션(Orchestration) 도구인 ‘쿠버네티스(Kubernetes)’에도 REST API가 존재하기 때문에 공격자의 위협에 노출되고 있다. 특히, OSINT(Open Source INTelligent) 도구 중 하나인 ‘쇼단(Shodan)’ 홈페이지에는 어떤 도커 및 쿠버네티스 REST API 서버들이 있는지를 알려주기 때문에 마음만 먹으면 얼마든지 컨테이너나 쿠버네티스를 공격할 수 있다.
◇ 셋째, 부적절한 계정 및 자격증명, 과도한 접근, 부적절 접근
클라우드의 모든 리소스는 서로 접근을 허용한다. 여기서 말하는 리소스는 유저 뿐만 아니라 어플리케이션, 가상서버, 인스턴스, 컨테이너, 데이터베이스, 파일 등 클라우드 내 모든 인프라를 말한다. 그런데, 접근하지 말아야 할 리소스를 접근하게 설정되어 있다던가, 읽기만을 해야하는 데, 쓰기와 삭제들의 권한이 있다던가, 1년에 단 한번도 접근했던 기록이 없는 리소스에 접근권한이 있다던가 하는 식으로 계정 및 접근 자격에 문제가 있는 경우가 많다. 공격자들은 이를 악용하여 클라우드를 공격하곤 한다.
클라우드의 모든 리소스는 서로 접근을 허용한다. 여기서 말하는 리소스는 유저 뿐만 아니라 어플리케이션, 가상서버, 인스턴스, 컨테이너, 데이터베이스, 파일 등 클라우드 내 모든 인프라를 말한다. 그런데, 접근하지 말아야 할 리소스를 접근하게 설정되어 있다던가, 읽기만을 해야하는 데, 쓰기와 삭제들의 권한이 있다던가, 1년에 단 한번도 접근했던 기록이 없는 리소스에 접근권한이 있다던가 하는 식으로 계정 및 접근 자격에 문제가 있는 경우가 많다. 공격자들은 이를 악용하여 클라우드를 공격하곤 한다.
◇ 넷째, 도커 레포지토리내의 도커 이미지(컨테이너 이미지)에 있는 악성코드 및 취약점
클라우드 네이티브 구축 시, 프로그램 개발 단계부터 도커 허브라는 도커 이미지를 모아 놓은 도커 레포지토리에서 리눅스OS, 아파치 웹서버 등의 도커 이미지를 다운로드 받아 사용하는데, 이때 도커 이미지에 악성코드나 취약점 등이 들어있을 수 있고, 혹은 해커가 고의로 악성코드를 심은 도커 이미지를 도커 허브에 올려 놓기도 한다. 악성코드가 있거나 취약점이 있는 도커 이미지를 다운받아 사용할 경우 심각한 보안 사고가 발생한다.
클라우드 네이티브 구축 시, 프로그램 개발 단계부터 도커 허브라는 도커 이미지를 모아 놓은 도커 레포지토리에서 리눅스OS, 아파치 웹서버 등의 도커 이미지를 다운로드 받아 사용하는데, 이때 도커 이미지에 악성코드나 취약점 등이 들어있을 수 있고, 혹은 해커가 고의로 악성코드를 심은 도커 이미지를 도커 허브에 올려 놓기도 한다. 악성코드가 있거나 취약점이 있는 도커 이미지를 다운받아 사용할 경우 심각한 보안 사고가 발생한다.
클라우드 보안의 문제점 10개 중 이번 편에서 4개의 클라우드 보안상의 문제점을 살려 보았고, 다음 편에서는 나머지 6개에 대하여 자세하게 살펴보겠다.
저작권자 © 아이티비즈 무단전재 및 재배포 금지