2024.05.28 (화)
[CIOCISO매거진 김진석 기자] 암호화폐를 채굴할 목적으로 리눅스 환경을 노리는 멀웨어 하나가 새로운 표적을 찾았다. 큐버네티스 내에서 잘못 설정된 PostgreSQL 컨테이너들과 취약한 컨테이너 이미지들이다. 이런 컨테이너와 이미지들은 최초 침투를 감행하는 데 큰 도움이 된다고 MS가 발표했다. 이 멀웨어의 이름은 킨싱(Kinsing)이다.
킨싱은 고(Go) 언어를 기반으로 한 멀웨어로, 리눅스 환경을 공격하는 악성 위협으로서 잘 알려져 있다. 그런데 최근 MS의 보안 전문가 순더스 브루스킨(Sunders Bruskin)이 발견한 바에 의하면 킨싱 운영자들이 공격 대상을 최근 수정한 것으로 보인다고 한다.
그것은 바로 큐버네티스로, 이 큐버네티스는 기업용 애플리케이션을 관리 및 구축하는 데 사용되는 오픈소스 도구로서 이미 컨테이너 기술의 표준으로 자리를 잡아가는 중이다. 저렴하고 자동 확장 기능을 제공하며 모든 종류의 인프라와 호환이 되기 때문에 인기가 높다. 클라우드 네이티브 전략을 구성하고 실현하는 데 있어 큐버네티스는 사실상 없어서는 안 될 요소다.
각광 받는 큐버네티스이지만 단점이 없는 건 아니다. 가장 큰 단점은 보호하기가 매우 어렵다는 것이다. 큐버네티스 보안은 어렵기로 이미 악명이 높다. 이미 공격자들은 큐버네티스 공략법을 다수 발견하기도 했다. 큐버네티스 API 서버들도 수십 만 개가 인터넷에 고스란히 노출되어 있고, 큐버네티스 클러스트를 공격에 활용하는 사례들도 등장하고 있다.
취약한 컨테이너 이미지 공략
그렇다면 리눅스를 노리던 킨싱은 어떤 방법으로 큐버네티스 환경을 노리기 시작했을까? 원격 코드 실행 취약점들을 내포하고 있는 컨테이너 이미지들을 노리는 것이라고 브루스킨은 설명한다. “이런 이미지들을 공략할 경우, 이미 피해자의 네트워크에 침투할 방법을 가지고 있는 공격자들이라면 컨테이너를 익스플로잇 해서 자신들이 원하는 악성 페이로드를 실행시킬 수 있게 됩니다. 주로 PHPUnit, Liferay, Oracle WebLogic, WordPress 애플리케이션 이미지들이 이런 노림수에 활용되고 있습니다. 특히 2020년 오라클에서 발견된 CVE-2020-14882, CVE-2020-14750, CVE-2020-14883 취약점들이 악용되는 편입니다.”
공격을 시작할 때 공격자들은 광범위한 IP 주소들을 스캔한다. 인터넷에 공개된 포트를 찾기 위함이다. “연결된 포트를 찾으면 취약점 스캔을 하고, 취약점이 발견되면 악성 페이로드를 실행할 수 있도록 익스플로잇 합니다. 물론 이번 캠페인의 경우 이들이 실행하려는 악성 페이로드는 킨싱이 되겠죠.”
PostgreSQL을 공략
그 다음 공격자들이 사용하는 공격 방법은 PostgreSQL 컨테이너들을 사용하는 큐버네티스 클러스터들에 킨싱을 심는 것이다. 이 때에는 취약점을 익스플로잇 하기 보다 잘못 설정된 부분을 노리는 게 보통이라고 MS 측은 설명한다.
“이른 바 ‘신뢰 인증(trust authentication)’이라고 하는 설정 옵션을 활용하는 건데요, 이 옵션을 활성화 한다는 건 다시 말해 특정 이름으로는 PostgreSQL 서버에 누구나 접근할 수 있게 된다는 겁니다. 하지만 어떤 경우 특정 이름을 너무나 광범위하게 지정할 때가 있죠. 아무 IP주소로 PostgreSQL 서버와 데이터베이스에 접근하도록 설정이 되어 있다는 건데요, 이런 상태로 유지되는 PostgreSQL 컨테이너를 공격자들이 찾아내면 자유롭게 드나들 수 있게 됩니다.”
설정에 따라 주소해결프로토콜(ARP)을 조작하는 공격에 노출된 큐버네티스 환경도 존재한다. “PostgreSQL에 아무나 접근할 수 없도록 설정을 제대로 해놓는다고 하더라도 위험 요소가 전부 제거되는 건 아닙니다. ARP는 동적 IP 주소를 물리 기계의 맥 주소에 연결시키는 절차를 담당하는 요소인데, 공격자가 클러스터 내 특정 애플리케이션들을 통해 PostgreSQL의 신뢰를 얻어낼 수 있습니다. ARP를 조작하는 것이죠.”
클라우드 환경 보호하기
큐버네티스 환경을 보호한다는 건 위에서 언급했다시피 그리 간단한 일이 아니다. 또한 기업마다 서로 다른 방식과 목적으로 큐버네테티스를 운영하기 때문에 한두 문장으로 큐버네티스 보안에 대해 정리한다는 것도 불가능하다. 브루스킨은 “그래도 통상적으로 지켜야 할 것들이 있다”고 설명하며 몇 가지 보호 방법을 제안한다.
“일반적으로 보안 팀들은 인터넷에 노출된 컨테이너와 이미지들이 무엇인지 알고 있어야 하며, 그러한 컨테이너와 이미지들에 어떤 취약점이나 설정 오류가 있는지 늘 점검해야 합니다. 주기적으로 업데이트 확인도 해서 필요하다면 빠르게 최신화를 진행하고, 설정 사항 중 위험할 수 있는 것들을 부지런히 바꿔주기도 해야 하죠.”
그 외에도 “출처가 분명한 곳에서만 이미지를 다운로드 받는 것”도 중요하다고 브루스킨은 강조한다. “다운로드 받은 이미지를 사용하기 전에 취약점 스캔을 꼭 해보는 것도 중요하고, 컨테이너에 대한 접근 권한을 최소화 하는 것 역시 중요하다는 게 일반적인 보안 실천 사항이기도 합니다. 이는 애플리케이션이나 API 보안에도 통용되는 말이기도 하지요.”