Offcanvas

CSO / 보안 / 악성코드 / 클라우드

“컨테이너 명령줄에서 서버 비밀번호 발견” 위즈 연구진, 공격 실험으로 IBM 클라우드 취약점 밝혀

2022.12.05 Lucian Constantin  |  CSO
미국의 클라우드 보안 스타트업 위즈(Wiz)의 연구진이 IBM 클라우드의 서비스형 데이터베이스(Database-as-a-Service, DaaS) 인프라에 대한 공격 실험을 진행해 중요한 보안 문제를 발견했다. 데이터베이스에 저장된 컨테이너 이미지에 접근 권한을 부여하는 취약점이었다. 이는 클라우드 인프라 공급망을 위험에 노출할 수 있다. 
 
ⓒGetty Images Bank

이 공격 실험은 포스트그레SQL(PostgreSQL)용 IBM 클라우드 데이터베이스 권한 상승 결함을 노렸다. 실험 결과 연구진은 텍스트 형태의 자격 증명 정보를 알아낼 수 있었으며, 서비스는 필요 이상의 내부 네트워크 접근 권한을 제공해 인프라 내의 측면 이동을 허용했다. 
 

주범은 포스트그레SQL의 권한 부여 모델 변경

이 시험 공격은 대규모 연구 프로젝트의 일환이다. 이 프로젝트의 목적은 포스트그레SQL 엔진을 DaaS 서비스에 사용하는 주요 클라우드 제공업체의 보안 현황을 분석하는 것이다. 올해 초 위즈 연구진은 애저 및 GCP의 포스트그레SQL 데이터베이스에서 취약점을 발견하기도 했다. 

관계형 데이터베이스인 포스트그레SQL은 30년 동안 안정성, 고가용성 및 확장성 덕분에 애용됐지만, 데이터베이스 인스턴스를 격리해야 하는 멀티테넌트(multi-tenant) 환경를 염두게 두고 설계되지 않았다. 

포스트그레SQL 관리자는 서버 파일 시스템을 변경하고 데이터베이스 쿼리로 코드를 실행하는 등의 조처를 할 수 있지만 이는 안전하지 않다. 특히 공유 클라우드 환경에서 이런 조처는 더욱더 위험하다. 동시에 데이터베이스 복제, 체크포인트 생성, 확장 설치 및 이벤트 트리거와 같은 기능은 필수이므로 클라우드 제공업체는 포스트그레SQL의 권한 부여 모델을 변경해왔다. 그래서 기업 고객은 권한이 제한된 계정으로도 이런 기능을 쓸 수 있게 됐다. 
 

SQL 인젝션을 통해 권한 상승 취약점 노려  

위즈 연구진은 IBM 클라우드의 포스트그레SQL를 분석하며 서비스의 논리적 복제(logical replication) 매커니즘을 살펴봤다. 이 기능은 여러 데이터베이스 함수로 구현됐는데, 그 중 하나는 ‘ibm’이라는 슈퍼유저가 실행하는 ‘create_subscription’ 함수였다. 

이 함수를 더 자세히 분석하자 SQL 인젝션 취약점이 드러났다. SQL 인수를 제대로 검증하지 못해 발생하는 취약점이었다. 이는 곧 임의의 공격자가 함수에 SQL 쿼리를 전달해 ibm 슈퍼유저가 이 쿼리를 실행하도록 유도할 수 있다는 뜻이었다. 연구진은 바로 이 취약점을 이용했다. 포스트그레SQL의 COPY식을 전달해 데이터베이스 인스턴스를 호스팅하는 가상머신에서 리버스 쉘(reverse shell)을 생성해냈다. 

리버스 쉘로 시스템에 침투할 수 있게 되자 연구진은 데이터베이스의 환경을 속속들이 파헤치기 시작했다. 프로시스 나열, 활성 네트워크 연결 확인을 비롯해 시스템 사용자를 나열하는 ‘etc/password’ 파일의 내용을 검사하고, 내부 네트워크 포트를 스캐닝해 다른 서버를 검색했다. 이 스캐닝 작업이 IBM 보안 팀의 감시망에 잡혔고, 위즈 팀은 결국 IBM의 연락을 받게 됐다. 

위즈 연구진은 “IBM 보안 팀과 상의 끝에 연구 목적으로 계속 보안 실험을 진행해도 된다는 승인을 받았다”라고 전했다. 
 

명령줄 비밀번호 통해 퍼지는 공급망 공격 

이어 연구진은 IBM 클라우드의 쿠버네티스 포드 컨테이너에 접근할 수 있게 해주는 K8s API 접근 토큰을 찾아냈다. 연구원들은 이 API 토큰으로 네임스페이스에서 포드 구성을 읽고, 해당 구성 파일에서 4개의 다른 내부 컨테이너 레지스트리에 대한 액세스 키를 얻어냈다. 연구진은 레지스트리 서비스에 저장된 이미지 모두를 다운로드해 자동화 도구로 이 중 자격 증명과 API 토큰을 찾고자 스캐닝 작업을 시행했다.  

그 결과 컨테이너 이미지의 manifest.json 파일에 저장된 ‘history’ 섹션에서 결국 중요한 자격증명 정보가 발견됐다. 각 이미지의 빌드 과정에서 실행된 코드 명령어가 기록돼 있었는데, 이 중 몇몇 명령어에서 IBM 클라우드의 내부 FTP 서버 및 빌드 아티팩트 저장소에 접근할 수 있는 비밀번호가 있었던 것이 문제였다. 아니나 다를까 연구진은 컨테이너 안에서 서버에 접근할 수 있었고, IBM 클라우드가 자동으로 컨테이지 이미지를 만들기 위해 이용하는 빌드 아티팩트 저장소에 파일을 덮어쓸 권한을 얻었다. 이렇게 컨테이너 이미지가 덮어 쓰여지면 결국 기업 고객의 클라우드에서 실행돼 공급망 공격에 노출된다. 

위즈 연구진은 “이번 시험으로 포스트그레SQL 엔진을 변형으로 인한 취약점을 다시 한번 확인할 수 있었다”라며 “이런 취약점은 광범위한 공급망 공격에 문을 열어준다”라고 전했다. 
 

다른 기업도 거울로 삼아야 

현재 IBM 클라우드 팀은 이 모든 문제를 해결했다. 하지만 위즈 연구진은 이런 ‘분산된 정보(scattered secrets)’ 취약점이 모든 클라우드 환경에서 일어날 수 있다고 경고했다. 

자동화된 빌드 및 배포 워크플로우는 구성 파일, Linux bash 기록, 저널 파일 등 개발자가 배포가 완료되면 삭제하지 않는 다양한 위치에 중요한 데이터를 종종 남기곤 한다. 또한 일부 개발자가 전체 .git 및 CircleCI 구성 파일을 프로덕션 서버에 업로드하는 실수를 범할 때도 있다. 위즈 연구진이 발견한 중요 데이터에는 클라우드 액세스 키, 암호, CI/CD 자격 증명 및 API 액세스 토큰이 포함된다.

IBM 클라우드 공격에서 중요한 역할을 한 또 다른 문제는 프로덕션 서버와 내부 CI/CD 시스템 간의 엄격한 액세스 제어가 부족하다는 점이다. 이를 통해 공격자는 종종 측면으로 이동해 조직의 인프라에 침투할 더 깊은 발판을 마련할 수 있다.

마지막으로, 개인 컨테이너 레지스트리는 자격 증명을 넘어서는 데이터를 공격자에게 제공할 수 있다. 인프라 내부의 중요한 서버에 대한 정보를 공개하거나 추가 취약성을 드러내는 코드를 포함하는 식이다. 위즈팀은 모든 기업이 당사의 컨테이너 레지스트리 솔루션이 적절한 액세스 제어와 범위 지정을 시행하는지 재차 확인해야 한다고 당부했다. ciokr@idg.co.kr
CIO Korea 뉴스레터 및 IT 트랜드 보고서 무료 구독하기
Sponsored
추천 테크라이브러리

회사명:한국IDG 제호: CIO Korea 주소 : 서울시 중구 세종대로 23, 4층 우)04512
등록번호 : 서울 아01641 등록발행일자 : 2011년 05월 27일

발행인 : 박형미 편집인 : 천신응 청소년보호책임자 : 한정규
사업자 등록번호 : 214-87-22467 Tel : 02-558-6950

Copyright © 2024 International Data Group. All rights reserved.