Redis(Remote Dictionary Server)는 2009년 Salvatore Sanfilippo가 개발한 BSD 라이센스 기반의 오픈소스 프로젝트로, Key를 사용한 완전 일치 검색을 통해 데이터를 조회하는 Key-Value Store 데이터베이스이다. Redis는 메모리 기반의 DBMS이기 때문에 일반 디스크 저장소를 사용하는 데이터베이스에 비해 빠른 속도를 보장한다. Hashes, List, Set 등 다양한 자료형을 지원하여 데이터를 유연하게 관리할 수 있기 때문에 많은 곳에서 사용되고 있다. 대표적으로 페이스북, 인스타그램, 텀블러, 카카오톡 등 대량의 메시지를 실시간으로 처리해야 하는 시스템에서 Result Cache와 데이터를 저장하는데 주로 사용되고 있으며, 또한 소규모 서비스 및 빠른 응답 처리를 위한 시스템에서 저장소로도 활용된다.

 

노출된 Redis Commander가 불러올 수 있는 데이터 침해 사고

Redis Commander는 Redis 서버에 저장되어 있는 데이터베이스를 관리하는 데 사용할 수 있는 Node.js 웹 응용 프로그램이다. Redis의 모든 데이터 유형을 웹 기반으로 편집할 수 있으며, 자동 완성 기능과 문서 입출력 기능을 통해 개발자의 사용 편의성을 높여주는 GUI Tool이지만 반대로, 인증 수단 없이 외부에 노출되어 있는 경우 해커를 위한 편리한 원격 데이터 탈취 도구가 될 수 있다. Redis 데이터베이스의 특성상, 외부에 노출되어 있는 Redis Commander는 외부로부터의 미인가 사용자에게 모든 데이터베이스에 대한 통제권을 넘겨줄 수 있으며 이는 매우 심각한 데이터 침해 사고로 이어질 수 있다.

 

파비콘으로 Redis Commander 서버를 찾는 방법

Criminal IP의 favicon 필터는 웹 사이트의 파비콘 해시를 검색하여 IP 주소를 조회할 수 있는 기능이다. 이를 바탕으로 Redis Commander의 파비콘 해시를 검색해 보았더니 총 211개의 Redis Commander를 사용하고 있는 IP 주소를 확인할 수 있었다.

favicon: -32e1326

Criminal IP의 Asset Search에서 favicon: -32e1326을 검색한 결과

Criminal IP의 Asset Search에서 “favicon: -32e1326″을 검색한 결과

 

조회된 Redis Commander 서버 검색 결과 중 한 IP를 클릭하면 실제 Redis Commander 서버 페이지로 접속된다. 이 중 일부 서버에는 특정 사용자의 토큰값과 로그인 쿠키값과 같은 민감한 정보들이 아무런 인증 절차 없이 노출되고 있다.

외부에 그대로 노출되어 있는 Redis 데이터베이스 내  Key 데이터

외부에 그대로 노출되어 있는 Redis 데이터베이스 내  Key 데이터

 

타이틀 검색으로 노출된 Redis Commander 서버를 찾는 방법

또 다른 방법으로, title 필터 검색을 통해 Redis Commander 서버를 사용하고 있는 IP 주소를 조회할 수 있다. Criminal IP의 title 필터는 웹페이지의 Meta tag 중 타이틀에 키워드가 포함된 IP 주소를 결과값으로 보여준다.

Criminal IP Asset Search에서 “title: Redis Commander”를 검색하면 총 384개의 Redis Commander 서버를 사용하고 있는 IP 주소가 확인된다.

titleRedis Commander

Criminal IP의 Asset Search에서 title: Redis Commander를 검색한 결과

Criminal IP의 Asset Search에서 title: Redis Commander를 검색한 결과

 

이 중에는 별도의 인증 없이도 Hash 값으로 저장된 업데이트 데이터를 볼 수 있는 페이지도 포함되어 있다.

별도의 인증 수단 없이 외부에 공개되어 있는 데이터 저장 서버

별도의 인증 수단 없이 외부에 공개되어 있는 데이터 저장 서버

 

외부에 노출된 Redis Commander는 곧 미인가 외부 접속자에게 Redis 데이터베이스 서버에 전체 대한 통제권을 넘겨줄 수 있음을 시사한다. 또한 다양한 Redis 데이터 유형 중 위의 사례와 같이 페이지 쿠키 정보와 사용자 로그인 크리덴셜 정보가 유출되는 경우도 많다. 노출되어 있는 관리자 쿠키 정보를 해커가 가로챈다면, 관리자 권한 탈취 및 웹 페이지 전체를 장악하는 것이 가능하다.

이와 같이 방치된 Redis Commander는 단순 데이터 노출 사고를 넘어서는 심각한 해킹 피해를 야기할 수 있다. 관련하여 자세한 내용은 API Key 하나로 발생될 수 있는 개인 정보 유출 그리고 조작에서 설명한 바 있다.

 

오픈 소스 서비스는 서비스 이용에 별 다른 비용이 들지 않고, 사용이 간편하여 누구나 쉽게 접근 가능하다는 장점으로 인해 많은 사람들이 사용하고 있다. 반대로 누구나 쉽게 접근할 수 있기 때문에 올바른 관리와 점검이 수행되지 않는다면, 해커들의 공격 대상이 되기 쉽다는 단점 역시 존재한다. 따라서 서버 관리자의 각별한 주의와 공격 표면에 대한 주기적인 보안 점검이 필요하다.

오픈 소스 서비스에 대한 보안 점검과 관련해서 블로그의 또 다른 글인 노출된 오픈 소스 CI/CD 서버를 탐지하는 법을 함께 확인해 보는 것을 추천한다.

 


데이터 출처 : Criminal IP (https://www.criminalip.io)

관련 글 : https://blog.criminalip.io/ko/2022/07/19/api-key-leak/