앱을 외주로 만들고 나서 "보안은 개발사가 알아서 했겠지" 하고 넘기셨나요? 이번 달 공개된 사건은 바로 그 빈틈을 노렸습니다.
앱 보안 점검의 핵심은 '앱 안에 비밀 열쇠가 들어 있지 않은가'를 확인하는 것입니다. 이 글에서는 사건 내용, 우리 가게 해당 여부, 개발사에 물어볼 질문을 차례로 정리했어요.
무슨 일이 있었나요? 앱 180만 개에서 열쇠를 찾아냈습니다
한 범죄 조직이 안드로이드 앱 180만 개를 내려받아, 코드에 적힌 비밀 키를 대량으로 찾아냈습니다.
출처는 2026년 9월 Anthropic 위협 인텔리전스 보고서입니다. 이들은 여러 앱 마켓에서 앱 파일을 모았습니다. 그다음 파일을 풀어 공개된 검사 도구로 코드 속 비밀 값을 찾았어요. 생성형 AI 도구로 이 과정을 자동화했다고 합니다.
찾아낸 값은 이런 것들이었습니다.
- 다른 서비스에 접속하는 API 키와 접속 토큰
- 클라우드 서비스 계정 정보
- 로그인 상태를 유지하는 세션 값
보고서는 이렇게 얻은 열쇠가 기술 회사, 항공사 등 다른 조직에 들어가는 발판이 됐다고 설명합니다. 국내에서는 보안뉴스가 9월 15일 이 내용을 전했습니다.
한 줄 정리: 공격자는 앱을 부수지 않고, 앱 안에 적힌 열쇠를 주워 갔습니다.
API 키가 뭐길래 위험한가요?
API 키는 우리 앱이 다른 서비스를 쓸 때 내미는 출입증입니다.
API는 프로그램끼리 정보를 주고받는 연결 통로입니다. 앱이 결제, 지도, 문자 서비스를 쓸 때 이 창구를 거쳐요. 그 창구에서 "우리 가게 앱이 맞습니다"라고 보여 주는 값이 API 키예요.
문제는 이 출입증을 앱 코드 안에 그대로 적어 두는 경우입니다. 가게 뒷문 열쇠를 간판 뒤에 테이프로 붙여 둔 것과 같아요. 간판을 뜯어 보는 사람만 있으면 누구든 문을 엽니다.
알아두면 좋은 용어
| 용어 | 쉬운 뜻 | 비유·예시 |
|---|---|---|
| API 키 | 다른 서비스를 쓸 때 내미는 출입증 | 건물 출입 카드 |
| 비밀 키 | 절대 밖에 보이면 안 되는 키 | 금고 열쇠 |
| 공개 키 | 앱·화면에 들어가도 되는 키 | 가게 명함 |
| 서버 | 앱 뒤에서 일하는 컴퓨터 | 손님이 못 들어오는 주방 |
| 키 교체 | 기존 키를 버리고 새 키를 발급 | 자물쇠 통째로 바꾸기 |
한 줄 정리: 비밀 키가 앱 안에 있으면, 앱 파일이 곧 열쇠 보관함이 됩니다.
그래서 우리 가게에는? 해당하는 경우부터 보세요
앱이나 홈페이지가 결제, 문자, 클라우드 같은 외부 서비스와 연결돼 있다면 한 번은 확인해야 합니다.
"우리는 작은 가게라 노릴 게 없다"고 생각하기 쉽습니다. 하지만 이번 공격은 앱을 하나하나 고르지 않았습니다. 마켓에 있는 앱을 통째로 훑었어요. 규모와 상관없이 열쇠가 있으면 가져갑니다.
| 우리 상황 | 확인이 필요한가요 | 누구에게 물어보나요 |
|---|---|---|
| 앱마켓에 우리 앱이 올라가 있음 | 꼭 필요 | 앱 개발사 |
| 홈페이지에 카드 결제가 붙어 있음 | 필요 | 제작사 또는 유지보수 담당 |
| 문의가 오면 문자·알림톡(카카오톡 안내 메시지)이 발송됨 | 필요 | 제작사 |
| 소개 페이지만 있는 홈페이지 | 가볍게 확인 | 제작사 |
예를 들어, 직원 5명인 동네 필라테스 스튜디오가 예약 앱을 외주로 만들었다고 해 볼게요. 앱이 문자 발송 서비스와 연결돼 있고, 그 비밀 키가 앱 안에 있다고 해 봅시다. 누군가 우리 비용으로 문자를 대량 발송할 수 있습니다.
한 줄 정리: 외부 서비스와 연결된 앱·홈페이지라면 규모와 상관없이 확인 대상입니다.
확인 1: 앱 안에 비밀 키가 들어 있나요?
개발사에 "비밀 키는 앱이 아니라 서버에만 두었나요?"라고 물어보세요.
키에는 두 종류가 있습니다. 지도처럼 화면에 보여도 되는 공개 키가 있습니다. 결제 승인처럼 꼭 숨겨야 하는 비밀 키도 있어요. 비밀 키는 손님이 못 들어오는 주방, 즉 서버에만 있어야 합니다.
개발사에 보낼 질문은 아래처럼 그대로 복사해 쓰셔도 됩니다.
- 앱과 홈페이지 코드에 들어간 키 목록을 알려 주세요.
- 그중 비밀 키가 앱이나 화면 코드에 들어 있지는 않나요?
- 공개 키에는 사용처 제한을 걸어 두었나요?
답에서 "앱에 넣었지만 잘 숨겨 두었다"는 말이 나오면 조심하세요. 숨긴 것과 없는 것은 다릅니다.
한 줄 정리: 비밀 키는 '잘 숨긴 곳'이 아니라 '앱 밖'에 있어야 안전합니다.
확인 2·3: 키를 바꿀 수 있고, 권한은 좁게 걸려 있나요?
키를 바꿀 수 있는 계정이 사장님 쪽에 있는지, 키 권한이 좁은지 확인하세요.
이미 오래전에 앱을 올렸다면 키가 새어 나갔을 가능성을 0으로 볼 수 없습니다. 이럴 때 필요한 게 키 교체입니다. 자물쇠를 통째로 바꾸는 일이라, 옛 열쇠를 가진 사람은 더 이상 문을 못 엽니다.
| 확인할 것 | 좋은 상태 | 걱정되는 상태 |
|---|---|---|
| 서비스 계정 주인 | 사장님 회사 명의 | 개발자 개인 명의 |
| 키 교체 | 언제든 새로 발급 가능 | 누가 발급했는지 모름 |
| 키 권한 | 필요한 기능만 허용 | 모든 기능 허용 |
| 사용량 알림 | 평소보다 많이 쓰면 알림 | 요금 청구서로 처음 알게 됨 |
AWS(아마존의 클라우드 서비스)는 쓴 만큼 요금이 나옵니다. 이런 서비스는 사용량 알림을 꼭 켜 두세요. 계정이 개발자 개인 명의라면 회사 명의로 옮겨 달라고 요청하는 것도 좋습니다.
한 줄 정리: 바꿀 수 있고, 좁게 쓰이고, 이상하면 알려 주는 키가 좋은 키입니다.
플러터·리액트 네이티브로 만든 앱도 해당되나요?
네, 어떤 방식으로 만들었든 앱 파일 안에 넣은 값은 꺼내질 수 있다고 보셔야 합니다.
플러터와 리액트 네이티브는 앱 하나로 안드로이드와 아이폰을 함께 만드는 개발 방식입니다. 만드는 방식에 따라 코드를 풀어 보기 쉽고 어려운 차이는 있어요. 하지만 '어렵다'가 '불가능하다'는 뜻은 아닙니다.
홈페이지도 같습니다. 브라우저에서 돌아가는 화면 코드는 방문자 누구나 내려받아 볼 수 있어요. 그래서 비밀 키는 화면 코드가 아니라 서버에 두는 것이 원칙입니다.
맞춤 제작 홈페이지를 넘겨받았다면 소스 코드를 가지고 다른 개발자에게 점검을 맡길 수도 있습니다. 잇다웹은 맞춤 제작 완료 후 소스 코드를 넘겨드립니다. 자세한 내용은 자주 묻는 질문에 있어요(2026년 9월 기준).
한 줄 정리: 개발 방식은 문을 조금 더 무겁게 할 뿐, 열쇠를 밖에 둔 문제를 해결하지 못합니다.
오늘 해 볼 실행 체크리스트
- □ 우리 앱·홈페이지가 연결된 외부 서비스 목록 적어 보기
- □ 개발사에 '비밀 키는 서버에만 있나요' 질문 보내기
- □ 결제·문자·클라우드 서비스 계정이 누구 명의인지 확인하기
- □ 쓴 만큼 요금이 나오는 서비스에 사용량 알림 켜기
- □ 답이 애매하면 비밀 키 교체 요청하기
- □ 앱을 고칠 때마다 키 점검을 작업 목록에 넣기
한 줄 정리: 질문 한 통과 알림 설정 하나로 오늘 바로 시작할 수 있습니다.
자주 묻는 질문
앱에 API 키를 넣으면 무조건 안 되나요?
공개 키는 넣어도 되지만, 비밀 키는 넣으면 안 됩니다. 지도 표시용 키처럼 원래 화면에 쓰이는 키가 있기 때문이에요. 다만 공개 키도 우리 앱·도메인에서만 쓰이도록 사용처 제한을 걸어 두는 것이 좋습니다.
홈페이지 API 키 노출은 어떻게 확인하나요?
가장 쉬운 방법은 제작사나 유지보수 담당에게 키 목록과 보관 위치를 받는 것입니다. 사장님이 직접 코드를 뒤질 필요는 없습니다. 목록에서 비밀 키가 '서버'가 아닌 곳에 있다면 바로 교체와 이동을 요청하세요.
이미 키가 새어 나갔으면 어떻게 하나요?
키를 먼저 교체하고, 그다음 코드를 고치는 순서가 맞습니다. 코드만 고치면 이미 새어 나간 옛 키는 계속 쓸 수 있어요. 교체 후 1~2주는 해당 서비스의 사용량과 요금을 매일 확인해 보세요.
외주 개발 계약 때 보안은 어떻게 챙기나요?
계약서나 요구 사항에 '비밀 키는 서버에 보관, 서비스 계정은 회사 명의'라는 두 줄을 넣어 두세요. 완료 때 연결된 서비스와 키 목록을 문서로 받는 조건도 좋습니다. 이렇게 해 두면 담당자가 바뀌어도 점검이 이어집니다.
한 줄 정리: 새어 나갔다면 코드 수정보다 키 교체가 먼저입니다.
앱이나 홈페이지를 오픈한 뒤 점검과 수정을 맡길 곳이 필요하다면 홈페이지 유지보수 안내를 확인해 보세요. 우리 앱·홈페이지 상황에 맞춰 무엇부터 할지 궁금하시면 무료 견적 상담에서 편하게 물어봐 주세요.
사진: Unsplash (photo-1582621883960-62079c316302, photo-1533696848654-6bdf438edea4, photo-1545665277-5937489579f2)
