UK — The Register
과도하게 긴 비밀번호로 musl 리눅스 시스템의 root 권한 얻기
보안2분 읽기
musl C 라이브러리를 쓰는 일부 리눅스 시스템에서, 256바이트보다 긴 비밀번호를 넣으면 관리자 권한(root)을 얻을 수 있는 취약점이 발견되었다는 소식입니다. 이 문제는 OpenSSH에 10년 넘게 숨어 있었고, 이제 수정되었습니다.
무슨 일이 있었나
보안 연구원 Özgün Kültekin이 OpenSSH에서 취약점을 찾았습니다. 이름은 *sshole입니다. 특정 조건에서 공격자가 아주 긴 비밀번호를 입력하면, 비밀번호가 없어야 하는 계정에 로그인할 수 있습니다. 가장 강력한 root 계정도 대상이 될 수 있습니다. 다만 조건이 매우 까다로워서, 아무 리눅스나 위험한 것은 아닙니다.
꼭 알아야 할 숫자와 사실
- 공격에 쓰이는 비밀번호 길이는 257~1,024자입니다.
- musl은 비밀번호를 256바이트까지만 처리하도록 제한되어 있습니다.
- 취약점의 뿌리는 2016년 OpenSSH 변경에서 시작되었습니다.
- Alpine Linux는 AWS와 Azure에서 쓰는 공식 클라우드 이미지를 제공합니다.
왜 이런 문제가 생겼나
비밀번호는 원래 그대로 저장하지 않고, 해시라는 암호화된 값으로 바꿔 저장합니다. 1980년대 BSD 유닉스에서는 별표(*) 하나가 '이 계정은 비밀번호로 로그인할 수 없음'이라는 뜻이었습니다. 지금도 별표는 그런 계정 표시로 남아 있지만, 완벽한 방어막은 아닙니다. musl은 해시 계산이 실패하면 NULL 대신 별표를 돌려줬는데, 이 값을 제대로 확인하지 않은 프로그램에서 문제가 생길 수 있었습니다. 2016년 OpenSSH가 사용자 이름을 추측하기 어렵게 바꾸면서, 이 틈이 더 커졌습니다.
왜 중요한가
musl은 용량이 작아서 임베디드 기기에 많이 쓰입니다. 또 Alpine Linux의 기본 C 라이브러리이고, Alpine은 주요 클라우드에서 널리 쓰입니다. 그래서 설정에 따라 많은 서버가 영향을 받을 수 있습니다. 관리자는 OpenSSH를 최신 버전으로 업데이트하는 것이 좋습니다.
앞으로 지켜볼 점
- OpenSSH 수정 버전이 여러 배포판에 적용되는 속도
- Alpine과 클라우드 이미지 제공자의 업데이트 여부
- 임베디드 기기 제조사들의 보안 패치 발표
용어 풀이
- OpenSSH
- 원격으로 안전하게 컴퓨터에 접속하게 해 주는 무료 보안 연결 프로그램입니다.
- root
- 리눅스에서 시스템 전체를 마음대로 다룰 수 있는 최고 권한 계정입니다.
- Alpine Linux
- 작고 가볍게 만든 리눅스 배포판으로, 클라우드와 컨테이너에서 많이 쓰입니다.
- 해시
- 비밀번호를 알아보기 어려운 값으로 바꾼 것으로, 원래 비밀번호 대신 저장합니다.