API 키는 어디서 유출되는가? 내 사이트에 온 .env 찾기 1,566건과 공개 사례를 7가지 경로로 나누어 분석
요약
본 글은 API 키가 유출되는 7가지 경로와 구체적인 사례들을 분석합니다. 가장 흔한 유출 경로는 GitHub 등 공개 코드에 환경 변수(.env)나 접근 키를 그대로 남겨두는 부주의입니다. 개발자는 이러한 실수로 인해 민감 정보가 광범위하게 노출될 수 있음을 인지하고, 각 경로별 방어책을 마련해야 합니다.
핵심 포인트
- API 키 유출은 악의적 도난보다 '놓치는' 경우가 많다.
- GitHub 등 공개 코드에 환경 변수나 접근 키를 남기는 것이 가장 흔한 원인이다.
- AI 에이전트 사용 시 대화 기록이나 학습 데이터로 인해 열쇠가 노출될 위험이 커졌다.
- 웹사이트의 공개 폴더에 .env 파일을 두는 것은 매우 위험하다.
"API 키가 유출되었다"고 들으면, 악의적인 누군가에게 도난당한 장면을 떠올리기 쉽습니다. 실제로 흔한 경우는, 열쇠를 놓은 장소가 생각보다 넓었다는 방식의 유출입니다.
이 글에서는 공개된 보고서와 사례, 그리고 저희 사이트에 실제로 도착한 접근 기록을 바탕으로 API 키가 유출되는 경로를 7가지로 나누고, 각각 무엇을 막아야 하는지 답변합니다. 맨 위의 그림은 왼쪽에는 7가지 경로를 유출 장소별로 나열하고, 오른쪽에는 각각 사전에 해야 할 일을 나열한 목록입니다. 인용한 원문과 세부 숫자는 조사 페이지 'API 키는 어디서 유출되는가 — 7가지 경로'에 한 줄씩 게재되어 있습니다.
| 용어 | 의미 |
|---|---|
| 열쇠 | 시스템이 '사용해도 되는 상대인지'를 확인하기 위한 비밀 문자열. 비밀번호, API 키, 액세스 토큰 등이 있습니다. 이 글에서는 이를 통틀어 '열쇠'라고 부릅니다 |
| ... |
유출 장소로 나누면, 서버나 공개된 장소가 3가지, AI가 3가지, 이용자의 화면(브라우저)이 1가지입니다. 모두 열쇠를 놓은 장소가 생각보다 넓었다는 경우입니다.
📎 7가지 경로의 출처는 'API 키는 어디서 유출되는가'의 '유출 경로는 7가지'에 있습니다.
건수가 가장 많은 경우는, GitHub 등에 공개한 코드에 열쇠를 그대로 남겨두는 방식의 유출입니다. GitGuardian의 연례 보고서에 따르면, 2025년 한 해 동안 공개 GitHub에 새로 배치된 열쇠는 2,865만 건이었습니다.
한국 사례로는, 토요타 자동차의 위탁업체가 공개한 소스코드에 데이터 서버 접근 키가 포함되어 있어 약 5년간 제3자가 볼 수 있는 상태였다고 발표되었습니다. 설정 파일에 그대로 남겨두거나, 샘플에 실제 열쇠를 넣은 채 공유하는 등의 부주의로 발생합니다.
📎 원문은 'API 키는 어디서 유출되는가'의 '공개 리포지토리'에 있습니다. 유출된 열쇠를 누가 막을 수 있는지는 '시크릿 스캔이란'에 모아두었습니다.
웹사이트 공개 폴더(누구나 읽을 수 있는 장소)에 환경 변수를 적은 .env 파일을 두면, 이름을 추측하는 것만으로도 내용이 반환됩니다. 찾는 쪽은 있을 법한 이름과 위치를 순차적으로 시도합니다.
실제로 저희 사이트에도 22일치 기록에서 공격에 사용되는 형태의 요청이 8,219건 도착했으며, 그중 .env를 찾는 요청은 1,566건 이상, .git을 찾는 요청은 108건 이상 있었습니다. 저희 사이트는 .env 파일을 두지 않았기 때문에, 내용을 반환한 건수는 0건입니다.
📎 찾아진 장소 상위 10과 계산 방식은 'API 키는 어디서 유출되는가'의 '조사 상세'에 있습니다。.env를 어디에 두어야 안전한지는 '.env 파일 이름을 바꾸면 안전한가 — 공동 열쇠의 배치 장소'에 모아두었습니다.
AI를 사용하게 되면서, 열쇠를 놓을 장소가 늘어났습니다. AI 도구를 외부 서비스에 연결하는 MCP 설정 파일에서는 공개 GitHub에서 24,008건의 열쇠가 발견되었고, 그중 2,117건은 아직 사용할 수 있었습니다.
AI 에이전트 부품의 취약점 중 73.5%는 동작을 확인하기 위한 출력이 AI 대화에 흘러들어 가는 것이 원인이었다는 연구도 있습니다. 대화 기록은 손에 남습니다. 게다가, AI 학습에 사용되는 공개 리포지토리에서는 아직 사용할 수 있는 열쇠가 54만 3,699건 발견되었습니다. 한 번 모인 데이터는 원래 리포지토리를 지워도 열쇠는 사라지지 않습니다.
📎 원문은 'API 키는 어디서 유출되는가'의 'AI 설정과 학습 데이터'에 있습니다. AI 에이전트에게 열쇠를 전달할 때 주의사항은 'AI 에이전트에게 열쇠를 전달해도 괜찮을까'와 'MCP 서버를 추가하기 전에 확인해야 할 것'에 모아두었습니다.
Google 지도를 웹 페이지에 표시할 때는 Google의 열쇠를 페이지 HTML에 적어 공개합니다. 이 열쇠는 원래 누구에게나 보여도 좋다는 전제 조건의 열쇠입니다. 그런데 같은 프로젝트에서 다른 담당자가 생성 AI인 Gemini의 API를 활성화하면, 공개했던 동일한 열쇠로 Gemini도 사용할 수 있게 됩니다. 열쇠 문자열은 변하지 않고, 열쇠 소유자에게 알림도 오지 않습니다.
Truffle Security는 이 상태의 Google 열쇠 2,863건을 발견했습니다. 페이지에서 열쇠를 주운 사람은 그 열쇠로 업로드된 파일을 보거나, AI 이용료를 소유자에게 청구하게 할 수 있습니다.
공개해도 괜찮은 키라도, 사용할 API와 사이트를 설정하여 제한하지 않으면 나중에 유출하면 안 되는 키로 바뀝니다.
📎 원문은 'API 키는 어디에서 새어 나올까'의 '공개해도 괜찮았던 키 권한 변경'에 있습니다.
| 경로 | 먼저 할 일 |
|---|---|
| 공개 리포지토리 | 유출된 키를 취소합니다. 푸시 보호와 시크릿 스캔도 사용하세요 (시크릿 스캔이란). |
| ... | |
| 키가 유출되었다는 것을 알았다면, 어떤 경로에서든 가장 먼저 유출된 키를 취소해야 합니다. 코드나 파일에서 키를 삭제하더라도, 키는 계속 사용할 수 있기 때문입니다. 키의 기한과 취소 방법은 'API 토큰은 언제 만료되고 어떻게 취소하는가'에 정리되어 있습니다. |
| 출처 | 내용 |
|---|---|
| GitGuardian: The State of Secrets Sprawl 2026 | 공개 GitHub의 키 2,865만 건 · MCP 설정 파일 |
| ... | |
| 인용된 원문과 출처는 모두 조사 페이지에서 한 줄씩 공개하고 있습니다. 확인하고 싶으신 분은 'API 키는 어디에서 새어 나올까 — 7가지 경로'를 참고해 주세요. |
독자 설문조사 진행 중
이 주제에 대해 더 깊이 다루었으면 하는 분들은 기사에 '좋아요'를 부탁드립니다. '좋아요'가 많은 주제 순으로 추가 조사를 진행하고, 결과는 신규 글로 알려드리겠습니다 (팔로우하시면 알림을 받으실 수 있습니다).
【전재 허용】본 기사 전재에 관하여
본 기사의 문장 및 도표는 모두 전재가 가능합니다. 그림은 가공하지 않은 상태 그대로 사용해 주세요. 전재하실 때는 출처로 본 기사의 완전판 『API 키는 어디에서 새어 나올까』(renkeimap.jp) 링크를 부탁드립니다. 사전에 연락할 필요는 없습니다.
※ 필자는 Hitachi 계열 IT 벤더, 간호 소프트웨어 벤더, 대학병원 IT 부서를 거쳐 독립했으며, 현재 중소기업의 IT/DX 지원을 하면서 업무 시스템의 '연결'을 일차 자료로 조사하고 있습니다. 본문 중 '편집부'는 필자가 소속된 IT 연계 맵 편집부입니다. 오류를 발견하셨다면 정정 창구(무료・계정 불필요)로 알려주세요. 정정 이력도 공개하고 있습니다.
AI 자동 생성 콘텐츠
본 콘텐츠는 Qiita AI의 원문을 AI가 자동으로 요약·번역·분석한 것입니다. 원 저작권은 원저작자에게 있으며, 정확한 내용은 반드시 원문을 확인해 주세요.
원문 바로가기