티스토리 뷰

앱 모니터링 도구가 해킹 통로가 된다고요? 스프링 부트 Actuator 보안 이슈, 쉽게 풀어드릴게요

요즘 쇼핑몰 앱이나 배달 앱 쓰다 보면 "서버 오류가 발생했습니다" 같은 메시지 가끔 보이잖아요. 그럴 때마다 개발자들이 서버 상태를 들여다보는 도구를 쓰는데, 바로 그 도구가 잘못 설정되면 해커한테 쪽문을 열어주는 꼴이 된다고 하더라고요. 오늘은 그 얘기를 좀 해볼게요.

이게 나랑 무슨 상관이에요? 생각보다 엄청 가까운 얘기예요

솔직히 "스프링 부트 Actuator"라는 단어 들으면 눈이 살짝 감기죠. 근데 이걸 쉽게 풀면 이래요. 자동차로 치면 계기판 같은 거예요. 속도, 연료, 온도 같은 상태를 실시간으로 보여주는 것처럼, 서버 상태를 모니터링하는 도구예요. 개발자들이 "지금 서버 잘 돌아가고 있어?" 확인할 때 쓰는 거거든요.

근데 문제는 이 계기판을 아무나 볼 수 있게 바깥에 열어놓는 경우가 생각보다 엄청 많다는 거예요. 마치 자동차 계기판을 차 밖에서도 누구나 볼 수 있게 해놓은 것처럼요. 이 계기판에는 여러분이 그 서비스에서 쓰는 계정 정보, 인증 토큰, 심지어 API 키 같은 민감한 데이터가 고스란히 담겨 있을 수 있어요.

TIP API 키는 앱끼리 서로 "나 인증된 서비스야"라고 신호를 보낼 때 쓰는 비밀번호 같은 거예요. 이게 유출되면 해커가 그 서비스인 척 행동할 수 있어요.

내가 직접 개발자가 아니더라도, 내가 매일 쓰는 앱, 쇼핑몰, 병원 예약 사이트, 심지어 회사 내부 시스템도 이 기술을 쓰고 있을 수 있어요. 그러니까 진짜로 나랑 상관없는 얘기가 아닌 거예요.

해커들이 실제로 어떻게 파고드는 거예요?

해커들이 이 취약점을 어떻게 쓰는지 들으면 진짜 소름 돋을 수 있어요. 특별한 기술 없이도 URL 하나만 치면 끝나는 경우도 있거든요. 두 가지 대표적인 공격 방법이 있는데 한번 설명해 드릴게요.

첫 번째는 'HeapDump'라는 기능을 악용하는 방법이에요. HeapDump(힙덤프)는 쉽게 말해 서버가 지금 이 순간 머릿속에 담고 있는 것들을 통째로 꺼내서 파일로 저장하는 기능이에요. 근데 이 파일 안에 사용자 비밀번호, 클라우드 접근 키, 인증 토큰 같은 것들이 들어있는 경우가 있어요. 해커는 이걸 그냥 URL 하나로 다운 받아버릴 수 있는 거예요.

두 번째는 'Gateway 엔드포인트'를 통한 원격 코드 실행이에요. 엔드포인트는 그냥 접속할 수 있는 주소라고 생각하시면 돼요. 특정 버전의 취약한 소프트웨어에서는 해커가 이 주소를 통해 서버에 자기가 원하는 명령어를 실행시킬 수 있어요. 집에 들어오는 것도 모자라 집 안에서 뭘 마음대로 하는 것과 같은 거죠.

주의 이건 정말 쉬운 공격이에요. 특별한 해킹 기술이 필요한 게 아니라, 인터넷에 노출된 주소에 HTTP 요청 하나만 보내면 되는 경우도 있어요. 그래서 자동화 스캐닝으로 대량 공격이 가능하다는 게 더 무서운 부분이에요.

얼마나 많은 곳이 이미 뚫려 있을까요?

사실 이 문제가 얼마나 심각한지 숫자로 보면 더 실감이 나요. 보안 연구팀 Wiz가 조사한 결과를 보면 생각보다 엄청난 규모더라고요.

항목 현황
클라우드 환경 중 Actuator 사용 비율 60%
그 중 외부에 공개 노출된 비율 11%
노출된 인스턴스 중 설정 오류 보유 24%
전 세계 노출된 엔드포인트 수 약 92,000개
최근 30일간 악의적 스캔 IP 수 1,000개 이상
HeapDump 미인증 노출 비율 2.3%
취약 버전 Spring Cloud Gateway 사용 비율 28%

근데 이 숫자들이 그냥 통계가 아니에요. 전 세계에 92,000개나 되는 취약한 문이 지금 이 순간에도 열려 있다는 뜻이에요. 그리고 해커들은 이미 하루에도 수백 번씩 이 문들을 두드리고 있고요. 지난 30일 동안에만 1,000개 넘는 악의적인 IP가 이걸 스캔했다고 하더라고요.

더 무서운 건 이게 터지면 피해가 개인 한 명으로 끝나지 않는다는 거예요. 클라우드 서비스 키가 털리면 그 서비스를 쓰는 수천, 수만 명의 개인정보가 한꺼번에 위험에 처할 수 있거든요.

그래서 나는 어떻게 해야 하는데요?

이걸 읽는 분 중에 직접 서비스를 개발하거나 운영하는 분이 있다면 지금 당장 확인해봐야 할 것들이 있어요. 그리고 일반 사용자라도 내가 쓰는 서비스가 안전한지 간접적으로 체크할 방법이 있어요.

1
개발자·운영자라면: Actuator 엔드포인트에 인증 걸기. /actuator 하위 주소들이 로그인 없이 누구나 접근 가능하면 안 돼요. 반드시 인증이 필요하도록 설정을 바꿔야 해요. 특히 테스트 환경에서 열어놓은 설정이 운영 환경으로 그대로 넘어가지 않도록 꼭 확인해야 하고요.
2
Spring Cloud Gateway 쓴다면: 버전 확인 필수. CVE-2022-22947이라는 취약점이 있는데, 3.1.1 이상 버전으로 올리면 막을 수 있어요. 지금 쓰는 버전이 3.1.0 이하라면 진짜로 빨리 업데이트해야 해요. 전체 사용 환경의 28%가 아직도 취약 버전을 쓰고 있다는 게 솔직히 충격이었거든요.
3
일반 사용자라면: 내가 쓰는 서비스의 보안 공지 챙기기. 직접 코드를 바꿀 수는 없지만, 내가 자주 쓰는 앱이나 사이트에서 보안 관련 공지가 올라오면 빠르게 비밀번호 변경하고 2단계 인증을 설정해두는 게 도움이 돼요. 특히 클라우드 기반 서비스는 주기적으로 로그인 기록도 확인해보는 게 좋아요.
TIP 개발자 분들은 정기적으로 보안 스캔 도구를 돌려서 외부에 노출된 Actuator 엔드포인트가 없는지 확인하는 습관이 필요해요. 한 번 설정해놓고 끝이 아니라, 꾸준히 모니터링하는 게 진짜 중요하거든요.

자주 묻는 질문

Q. 저는 개발자가 아닌데, 이게 저한테도 영향이 있나요?

A. 네, 충분히 있어요. 내가 매일 쓰는 쇼핑앱, 병원 앱, 회사 업무 시스템 등이 이 기술을 쓸 수 있거든요. 그 서비스가 해킹되면 내 계정 정보나 개인정보도 같이 유출될 수 있어요. 그래서 평소에 비밀번호를 서비스마다 다르게 쓰고, 2단계 인증을 켜두는 게 내가 할 수 있는 현실적인 방어예요.

Q. 내가 쓰는 서비스가 이 취약점에 노출됐는지 어떻게 알 수 있어요?

A. 일반 사용자가 직접 확인하기는 어렵지만, 해당 서비스의 보안 공지나 개인정보 침해 알림을 잘 챙기는 게 현실적으로 최선이에요. 또 주기적으로 비밀번호를 바꾸고, 평소에 이상한 로그인 기록(내가 하지 않은 로그인)이 없는지 확인하는 것도 좋은 방법이에요.

오늘 얘기가 좀 무섭게 들릴 수도 있는데, 사실 이런 걸 알고 있는 것 자체가 이미 반은 방어한 거예요. 해킹이라는 게 특별한 사람만 당하는 게 아니라, 모르고 있는 사람이 더 쉽게 당하거든요. 내가 쓰는 서비스들이 잘 관리되고 있는지 가끔씩 관심 가져주고, 기본적인 보안 수칙만 지켜줘도 훨씬 안전해질 수 있어요. 다음에도 이런 거 쉽게 풀어서 가져올게요! 😊

#보안뉴스 #스프링부트 #SpringBoot #클라우드보안 #해킹주의 #개인정보보호 #보안설정 #IT보안상식