eMudhra 중간 인증서 8개의 개인키가 1바이트 값이라 밀리초 만에 복구됨, 비브라우저 TLS 클라이언트가 특히 위험
- eMudhra 중간 인증서 8개의 개인키가 P-384 곡선에서 4, 56, 115 같은 1바이트 값이라 255번 안에 무차별 대입으로 복구됨
- Mozilla가 10월 20일 NSS 업데이트로 eMudhra 루트를 제거했고, Chrome은 Chrome Root Store v43에서 루트를 빼기로 함
- 8개 중간 인증서는 TLS 발급 CA 6개와 코드 서명 CA 2개이며, 2025년 4월 생성 후 Sectigo의 AAA Certificate Services 루트로 5월에 교차 서명됨
- 키가 인증서 발급 때부터 사실상 공개 상태였어서 약 17개월 동안 누가 복구했는지 알 방법이 없음
- 브라우저는 CT와 폐지 확인으로 막히지만 curl, Python, Node, Go, Java 같은 비브라우저 클라이언트는 기본 설정에서 둘 다 안 해서 노출됨
Hacker News 의견들
8비트짜리 키를 CA가 썼다는 건 그냥 실수로 넘기기엔 너무 심함. 키 생성 과정에 단위 테스트 하나만 있었어도 걸렸을 거임.
바이트 잘림 버그일 가능성이 높다고 봄. 32바이트 버퍼에 한 글자만 복사되는 식으로 망가졌을 수도 있음.
두 개가 연속된 숫자라서 순서 번호를 키로 쓴 거 아니냐는 추측도 있음. 무작위로 뽑았을 때 그렇게 나올 확률이 18%쯤이라더라.
CA가 너무 많아서 문제라는 말이 있는데, 루트 기준으로 350개쯤이고 중간 인증서까지 치면 3,600개 넘는다고 함.
의도적이었다는 건 좀 아닌 듯함. 의도였으면 본인만 아는 키를 썼어야지 누구나 짐작할 수 있는 숫자를 쓰진 않음.
Flatpak이나 컨테이너는 호스트 신뢰 저장소를 안 따라가서 시스템 패키지만 업데이트하면 안 고쳐질 수도 있음.
이미 eMudhra 키 파일이 GitHub에 올라와 있다는 얘기도 있음. 이건 진짜 바로 악용 가능한 상태임.
발급된 인증서가 하나도 없는 CA를 브라우저가 왜 신뢰하냐는 질문이 나왔는데, 중간 인증서라 루트 신뢰를 그대로 물려받는다는 답이 달림.