MySQL 로그인 인증 프로토콜의 치명적 취약점

MySQL 로그인 인증 프로토콜의 치명적 취약점
안내: 본 포스트의 한글 요약 및 분석 리포트는 AI 기술을 통해 자동 생성되었습니다. 정보의 정확성을 위해 하단의 [원본 논문 뷰어] 또는 ArXiv 원문을 반드시 참조하시기 바랍니다.

초록

MySQL의 챌린지‑응답 인증 방식이 수학적으로 안전하지 않음이 증명되었다. 공격자는 몇 차례의 인증 교환을 엿듣고, 동일한 사용자로 가장할 수 있는 알고리즘을 제시한다. 논문은 공격 절차를 상세히 설명하고, 실제 구현에서 관측된 성공률과 통계적 분석을 제공한다.

상세 분석

본 논문은 MySQL이 채택한 4.1 버전 이후의 인증 프로토콜, 즉 서버가 무작위 20바이트 챌린지를 전송하고 클라이언트가 이를 자신의 비밀번호 해시와 결합해 SHA1 해시를 두 번 수행한 결과를 응답으로 보내는 방식을 분석한다. 저자들은 이 구조가 “one‑way” 함수라기보다 “pseudo‑random 함수”에 가깝다고 지적한다. 핵심은 클라이언트가 전송하는 응답 값이 실제 비밀번호 해시와 서버 챌린지의 XOR 연산을 포함한다는 점이다. 이때 XOR 연산은 선형성을 가지므로, 여러 번의 인증 교환을 관찰하면 동일한 비밀번호에 대한 응답값들의 차이를 통해 서버 챌린지와 비밀번호 해시 사이의 관계식을 구축할 수 있다. 논문은 이러한 관계식을 이용해, 최소 2~3회의 인증 시도만으로도 비밀번호 해시를 추정하는 알고리즘을 제시한다. 구체적으로, 공격자는 다음과 같은 단계로 진행한다. 1) 인증 세션을 가로채어 서버 챌린지와 클라이언트 응답을 기록한다. 2) 두 세션 간의 챌린지 차이와 응답 차이를 XOR 연산으로 결합해 비밀번호 해시의 후보군을 도출한다. 3) 도출된 후보를 서버에 재전송하여 인증 성공 여부를 확인한다. 이 과정은 비밀번호 자체를 복원하지 않아도 인증이 가능하므로, 전통적인 “비밀번호 추출” 공격보다 효율적이다. 또한, SHA1의 충돌 저항성이 이 공격에 직접적인 방어가 되지 않으며, 오히려 해시 연산이 두 번 수행되는 구조가 공격 표면을 확대한다는 점을 강조한다. 저자들은 MySQL 5.0 이후에도 이 프로토콜이 크게 변경되지 않았으며, 기존 배포 환경에서 광범위하게 사용되고 있음을 지적한다. 따라서 실무에서는 즉각적인 패치 적용과 더 강력한 인증 메커니즘(예: SCRAM‑SHA‑256, TLS 기반 인증)으로 전환이 요구된다. 논문은 또한 공격 성공률을 시뮬레이션을 통해 95% 이상으로 보고, 실제 기업 환경에서도 1시간 이내에 인증을 탈취할 수 있음을 실험 데이터로 제시한다. 이러한 결과는 데이터베이스 보안 설계 시 “챌린지‑응답”만으로는 충분하지 않으며, 전송 채널의 암호화와 다중 팩터 인증 도입이 필수임을 시사한다.


댓글 및 학술 토론

Loading comments...

의견 남기기