Proxyman 26.3.0, 침해된 eMudhra 인증서를 사용하는 서버를 차단
4분 분량
macOS용 Proxyman 26.3.0이 이제 침해된 eMudhra 인증서를 사용하는 서버를 차단합니다 🔒
지난주에 eMudhra 중간 인증서 8개의 개인 키가 유출되었습니다. 브라우저와 운영체제는 며칠 안에 이 인증서들을 신뢰하지 않게 되었습니다. 하지만 Proxyman을 통해 트래픽을 보내는 앱은 지금까지 이 보호를 받지 못했습니다.
이 글에서 다루는 내용은 다음과 같습니다:
- eMudhra에서 무슨 일이 있었는지.
- Proxyman을 통한 트래픽이 여전히 영향을 받았던 이유.
- Proxyman 26.3.0이 이를 해결하는 방법.
- 직접 수정 사항을 테스트하는 방법.
수정 사항은 macOS용 Proxyman 26.3.0에 포함되어 있습니다. Windows와 Linux용 Proxyman은 이번 주에 같은 수정 사항을 받습니다.
1. 무슨 일이 있었나요?
eMudhra는 인증 기관(CA, Certificate Authority)입니다. CA는 웹사이트가 진짜임을 증명하는 인증서에 서명합니다. 브라우저는 신뢰할 수 있는 CA가 인증서에 서명했기 때문에 웹사이트를 신뢰합니다.
2026년 10월 20일, 한 보안 연구원이 공개했습니다. eMudhra 중간 인증서 8개의 개인 키가 잘못 생성되었다는 내용입니다. 누구나 공개된 인증서로부터 이 키를 복구할 수 있습니다.

이 키 중 하나만 있으면 공격자는 은행이나 회사 API 같은 어떤 웹사이트든 인증서를 만들 수 있습니다. 여전히 eMudhra를 신뢰하는 앱은 그 인증서를 진짜로 받아들입니다.
대응은 빨랐습니다:
- Chrome과 Firefox는 인증서 8개를 차단했습니다. Microsoft와 Apple은 며칠 뒤 뒤따랐습니다.
- eMudhra는 이 인증서들을 폐기했고, Sectigo는 자신이 서명한 복사본들을 폐기했습니다.
따라서 최신 브라우저나 운영체제를 사용하고 있다면 보호받고 있습니다. 다만 한 가지 빈틈이 있었습니다. 바로 프록시입니다.
2. Proxyman을 통한 트래픽이 여전히 영향을 받은 이유
Proxyman은 앱과 서버 사이에 위치합니다. HTTPS 트래픽을 보여주기 위해 두 개의 연결을 만듭니다:
- 앱 → Proxyman: 앱은 Proxyman이 만든 인증서를 봅니다. 이 인증서는 여러분이 설치하고 신뢰한 Proxyman CA가 서명한 것입니다.
- Proxyman → 서버: Proxyman은 서버의 실제 인증서를 받습니다.
두 번째 연결에서 Proxyman은 어떤 인증서든 받아들였습니다. 이는 의도된 동작입니다. 로컬이나 스테이징 서버를 자체 서명 인증서로 디버깅하는 경우가 많고, Proxyman이 작업을 방해하면 안 되기 때문입니다.
문제는 여기에 있습니다. 앱은 서버의 실제 인증서를 전혀 보지 못합니다. 앱이 보는 것은 Proxyman의 인증서뿐입니다. 그래서 Apple, Google, Microsoft가 eMudhra 인증서를 차단한 뒤에도, 이 인증서를 사용하는 서버로 Proxyman을 통해 보낸 요청은 그대로 통과했습니다.
한 팀이 이슈 #2797에서 이 문제를 보고했습니다. 그 팀의 회사는 유출된 인증서에 대비한 보호 조치를 이미 마련해 두고 있었습니다. 누군가 Proxyman을 켠 뒤 끄는 것을 잊으면, 그 사람은 모르는 사이에 이 보호 조치를 우회하게 됩니다. 제보해 주시고 위험을 이렇게 명확하게 설명해 주셔서 감사합니다 🙏
3. Proxyman 26.3.0의 수정 방식
먼저 Proxyman이 사용하는 TLS 라이브러리(SwiftNIO SSL)에 수정 사항이 있는지 확인했습니다. 없었습니다. 어차피 라이브러리를 업데이트해도 도움이 되지 않았을 것입니다. Proxyman이 인증서 검사를 의도적으로 건너뛰고 있었기 때문입니다. 그래서 Proxyman 쪽에서 직접 수정했습니다.
Proxyman 26.3.0에는 침해된 eMudhra 인증서 8개의 차단 목록이 내장되어 있습니다. Sectigo가 서명한 복사본도 포함됩니다. SSL Proxying으로 HTTPS 또는 WebSocket(WSS) 트래픽을 복호화할 때, Proxyman은 모든 서버의 인증서 체인을 확인합니다:
- 체인의 인증서 중 하나가 유출된 키를 사용하면, Proxyman은 연결을 닫습니다.
- 서버가 자체 인증서만 보내는 경우, Proxyman은 누가 서명했는지 확인합니다. 유출된 키 중 하나로 서명되었다면, Proxyman은 마찬가지로 연결을 닫습니다.
- 그 밖의 모든 서버는 달라지는 것이 없습니다.
| 서버 인증서 | 26.3.0 이전 | Proxyman 26.3.0 |
|---|---|---|
| 침해된 eMudhra 인증서를 사용 | 연결됨 | 차단됨 |
| github.com 같은 일반 인증서 | 연결됨 | 연결됨 |
| 로컬 서버 같은 자체 서명 인증서 | 연결됨 | 연결됨 |
이 검사는 Proxyman이 서버에 연결할 때 한 번 실행되며, 매우 빠릅니다.
Proxyman이 서버를 차단하면, 앱은 이유가 적힌 502 Bad Gateway 응답을 받습니다. 다음 단계에서 이를 확인하게 됩니다.
4. 직접 테스트하기
연구원은 유출된 인증서를 사용하는 테스트 서버를 운영합니다. 이 중 하나를 사용해 환경을 확인할 수 있습니다:
- 다운로드 페이지에서 또는 **Proxyman → Check for Updates…**에서 Proxyman 26.3.0으로 업데이트하세요.
dv-g3b-emudhra.we-have-a-problem.com에 대해 SSL Proxying을 켜세요.- Proxyman을 통해 요청을 보내세요. Proxyman은 기본적으로 9090 포트에서 실행됩니다:
curl --proxy http://localhost:9090 https://dv-g3b-emudhra.we-have-a-problem.com/
다음과 같은 응답을 받습니다:
Bad Gateway: Blocked dv-g3b-emudhra.we-have-a-problem.com:443 because its certificate chain uses a compromised eMudhra CA key
https://github.com/으로 같은 명령을 실행해 보세요. 이전과 같이 동작합니다.
도메인에 대해 SSL Proxying이 꺼져 있으면 Proxyman은 트래픽을 복호화하지 않습니다. 암호화된 연결을 그대로 통과시키며, 앱은 Proxyman이 없는 것처럼 인증서를 직접 검사합니다.
5. 알아두면 좋은 내용
- Windows와 Linux: Windows와 Linux용 Proxyman은 이번 주에 같은 수정 사항을 받습니다.
- 자체 서명 인증서는 여전히 동작합니다. Proxyman은 유출된 eMudhra 인증서만 차단합니다. 로컬 및 스테이징 서버는 이전과 같이 동작합니다.
- Proxyman은 디버깅 도구입니다. 회사의 보안 검사를 대신하지 않습니다. 디버깅을 마치면 Proxyman을 종료하거나 시스템 프록시를 끄세요.
더 읽어보기
- eMudhra Intermediate CA Compromise: 전체 세부 정보와 영향을 받는 인증서 목록
- eMudhra의 사고 관련 공식 입장
- GitHub 이슈 #2797
- SSL Proxying 문서
- Proxyman 변경 로그

