터키어 문자 ı와 보안 취약점

해커뉴스를 통해 재밌는 을 읽었다. case mapping collision이라고 해서, 자바스크립트에서 ‘ß’.toLowerCase()가 ‘ss’가 되는 등 유니코드 일부 문자의 대소문자가 일반 로마자와 같은 것으로 취급된다고 한다. 터키어의 ‘ı'(“점 없는 i”)의 경우 소문자로 변환하면 ‘i’와 같아진다고 한다.

그래서 다음과 같은 상황이 벌어질 수 있다고 한다. 예컨대 깃허브에서는 패스워드 리셋을 요청할 때, string으로 입력받은 이메일 주소에 toLowerCase를 씌워 소문자로 변환한 후 깃허브에 가입되어있는지를 체크한다고 한다. 여기서 만약 그 이메일 주소가 db에 존재한다면 깃허브는 패스워드 리셋 메일을 보내는데, 이 메일을 리셋 요청하면서 입력한 이메일 주소로 보낸다고 한다. 이 때, 이메일 주소를 ABCABC@gıthub.com와 같이 ‘i’를 ‘ı’로 바꿔 입력하면 깃허브에서는 ABCABC@github.com 유저의 비밀번호 리셋 메일을 다른 이메일 주소로 보낼 가능성이 있다는 것. 참고로 깃허브는 이 문제점을 인지하고 입력된 메일이 아니라 db에 저장된 메일 주소로 리셋 메일을 보내는 식으로 픽스했다고.

트윗 타래를 정리. (2019/12/16)

답글 남기기

아래 항목을 채우거나 오른쪽 아이콘 중 하나를 클릭하여 로그 인 하세요:

WordPress.com 로고

WordPress.com의 계정을 사용하여 댓글을 남깁니다. 로그아웃 /  변경 )

Twitter 사진

Twitter의 계정을 사용하여 댓글을 남깁니다. 로그아웃 /  변경 )

Facebook 사진

Facebook의 계정을 사용하여 댓글을 남깁니다. 로그아웃 /  변경 )

%s에 연결하는 중