개인키로 '4'를 사용하다 딱 걸린 인증 기관
원제 · A Certificate Authority Just Got Caught Using a Private Key of 4
핵심 요약
eMudra 인증기관이 무작위성 오류로 인해 개인키를 숫자 4 등으로 생성하면서 17개월간 보안 취약점이 방치되었고, 브라우저 외 개발 도구와 CI 파이프라인에 심각한 위협을 초래했습니다.
하이라이트
인증기관 eMudra의 중간 인증서 8개 중 개인키가 숫자 4를 포함하여 매우 단순한 값으로 생성된 사실이 보안 연구원 Wayne에 의해 10월 17일에 신고되었습니다.
P384 타원곡선 암호화 방식에서 키의 값이 47바이트의 0과 1바이트로 구성되어 있어, 파이썬 스크립트를 통해 8개 모든 키가 1초 이내에 크래킹되었습니다.
취약한 개인키로 생성된 인증서들은 구조적 검증을 완벽히 통과하여 브라우저와 시스템에서 아무런 결함 없이 정상적인 유효 인증서로 인식되었습니다.
Sectigo가 2025년 6월에 폐기 목록 서명 오류를 발견했으나 원인을 조사하는 대신 취약한 키로 다시 서명하면서 17개월 동안 문제를 방치하게 되었습니다.
브라우저는 인증서 투명성 로그 덕분에 안전하지만 curl, Python, Node, Go, Git 같은 브라우저 외의 도구와 CI 러너에서는 위조된 인증서가 그대로 신뢰되었습니다.
Cloudflare, Go 언어 표준 라이브러리, Mozilla 등이 긴급 패치와 루트 인증서 제거 조치를 단행하며 대응에 나섰습니다.
타임라인
인증기관 eMudra의 개인키 유출 사건 개요
오래된 만화 속 주사위 굴리기 농담처럼 인증기관이 실제 프로덕션 환경에서 개인키로 터무니없이 작은 숫자를 사용하는 일이 발생했습니다. 주요 브라우저 제작사들은 신고 접수 후 신속하게 해당 인증서들을 차단 조치했습니다.
- 보안 연구원 Wayne이 Apple, Google, Microsoft, Mozilla에 eMudra 중간 인증서 8개의 개인키 유출을 신고했습니다.
- 유출된 8개 중 6개는 TLS 발행 CA였고 2개는 코드 서명 CA였으며 모두 2025년 4월에 생성되었습니다.
- 신고자는 문제가 발생했음을 증명하기 위해 해당 키들로 직접 메시지에 서명하여 제출했습니다.
취약한 타원곡선 키 구조와 1초 만의 크래킹
공개키 암호화 방식의 안전성은 무작위성에 기반하지만, 생성 과정의 결함으로 인해 경우의 수가 256개 이하로 급감했습니다. 이로 인해 누구나 간단한 스크립트로 개인키를 역산할 수 있는 상태였습니다.
- P384 타원곡선 암호화에서 원래 개인키는 384비트의 무작위 숫자여서 무차별 대입이 불가능합니다.
- eMudra의 키들은 47바이트의 0 뒤에 단 1바이트만 붙어 있는 형태였습니다.
- 파이썬 스크립트를 이용해 8개 키 모두 1초 이내에 찾아졌으며 그 값은 4, 56, 66, 115 등의 매우 작은 숫자였습니다.
사고 발생 원인과 17개월 동안 방치된 배경
단순한 스크립트 버그와 작업자 실수가 겹쳐 잘못된 키가 프로덕션에 반영되었습니다. 이미 1년 전 경고 신호가 있었음에도 적절한 조사가 이루어지지 않아 피해가 장기화되었습니다.
- eMudra는 키 내보내기 테스트 중 스크립트 버그로 인해 하드웨어 보안 모듈에 두 번째 키 쌍을 생성했습니다.
- 이후 인증서 요청을 생성하는 과정에서 실수로 잘못된 키 쌍을 선택하면서 문제가 시작되었습니다.
- 2025년 6월 Sectigo가 서명 유효성 오류를 발견했으나 근본 원인을 조사하지 않고 재서명하여 문제를 덮었습니다.
브라우저 안전성과 비브라우저 환경의 심각한 위험
브라우저는 로그 검증 시스템 덕분에 방어되었으나, 백엔드 서버나 CI 러너, 스크립트 실행 환경에서는 공격자가 특정 웹사이트 행세를 할 수 있는 치명적인 허점이 노출되었습니다.
- 주요 브라우저는 인증서 투명성 로그를 필수로 확인하기 때문에 브라우저 환경에서는 차단되었습니다.
- curl, Python, Node, Go, Git 같은 도구들은 디스크의 CA 번들을 그대로 신뢰하여 위조 인증서에 취약했습니다.
- 일부 스마트 TV나 라우터 같은 기기들은 2039년 만료될 때까지 취약한 인증서를 계속 신뢰하게 됩니다.
긴급 패치 대응과 시사점
업계 전반의 신속한 사후 정리가 진행 중이며 eMudra는 대규모 인증서 이전 작업을 감당해야 하는 위기에 직면했습니다. 개발자들은 클라이언트 환경의 인증서 번들을 최신 상태로 유지하여 보안을 확보해야 합니다.
- Cloudflare와 Go 언어, Mozilla, Chrome 등이 긴급 패치와 루트 인증서 제거 조치를 진행하고 있습니다.
- 암호화 과정에서 무작위성이 상실되었을 때 시스템이 스스로 경고하지 못한다는 점이 이번 사건의 핵심 교훈입니다.
- 사용자는 인증서 패키지 업데이트, Go 버전 업그레이드, 컨테이너 이미지 재빌드를 즉시 수행해야 합니다.
설명
One of eMudhra's certificate authority keys, trusted by every major browser and operating system, turned out to be the number 4, and the other seven compromised keys were barely bigger. In this video I break down how a botched key ceremony produced it, why nobody caught it for 17 months, and why your browser is fine while curl, Python, Node and your CI pipeline might not be. Stick around to the end for the exact updates to install and a one-line curl command to check whether your machine is still exposed. 🔗 Relevant Links Source: https://www.theregister.com/security/2026/10/20/indian-certification-authority-emudhras-private-keys-compromised-one-of-them-was-the-number-4/5304312 ❤️ More about us Radically better observability stack: https://betterstack.com/ Written tutorials: https://betterstack.com/community/ Example projects: https://github.com/BetterStackHQ 📱 Socials Twitter: https://twitter.com/betterstackhq Instagram: https://www.instagram.com/betterstackhq/ TikTok: https://www.tiktok.com/@betterstack LinkedIn: https://www.linkedin.com/company/betterstack 📌 Chapters: 0:00 An XKCD joke, shipped to production 0:40 Eight eMudhra CA keys compromised 1:21 How elliptic curve keys work 1:55 A private key of 4 2:14 Cracking all eight keys in under a second 2:34 Why nothing looked broken 2:47 How eMudhra ended up with a key of 4 3:11 The warning signs 16 months earlier 3:46 Why browsers are fine 4:03 Why curl, Python, Node and Go aren't 4:40 Gaps in the fix: Android, smart TVs, routers 5:15 The cleanup: Cloudflare, Go, Mozilla, Chrome 5:55 The DigiNotar comparison 6:18 The real lesson 6:41 How to protect yourself 7:06 Wrap-up
