2020-04-02 02:45 (목)
Sudo CVE-2019-18634 결함으로 권한 없는 리눅스 및 macOS 사용자가 루트로 명령 실행 가능
상태바
Sudo CVE-2019-18634 결함으로 권한 없는 리눅스 및 macOS 사용자가 루트로 명령 실행 가능
  • hsk 기자
  • 승인 2020.02.06 13:15
이 기사를 공유합니다

애플의 보안 전문가 Joe Vennix가 CVE-2019-18634로 추적된, 권한이 없는 리눅스 및 macOS 사용자가 루트로 명령을 실행할 수 있게 해주는 ‘sudo’ 유틸리티의 중요한 취약점을 발견했다. 이 결함은 특정 구성에서만 악용될 수 있다.

Sudo는 macOS 및 거의 모든 유닉스, 리눅스 기반 운영체제에 사전 설치된 핵심 명령으로, 가장 중요하고 강력하며 일반적으로 사용되는 유틸리티 중 하나이다. Sudo는 유닉스와 유사한 컴퓨터 운영체제용 프로그램으로, 기본적으로 수퍼 유저인 다른 사용자의 보안 권한으로 실행할 수 있다. 이전 버전의 sudo는 수퍼 유저로서만 명령을 실행하도록 설계되었기 때문에 ‘superuser do’를 나타낸다.

Sudoers 구성 파일에서 pwfeedback 옵션이 활성화된 경우에만 취약점을 익스플로잇할 수 있다. Sudo의 pwfeedback 옵션을 사용하면, 사용자가 비밀번호를 입력할 때 시각적 피드백을 제공할 수 있다.

NIST가 게시한 설명에 따르면 “1.8.26 이전 sudo에서 /etc/sudoers에서 pwfeedback을 활성화하면, 사용자는 권한 있는 sudo 프로세스에서 스택 기반 버퍼오버플로우를 트리거할 수 있다. (Pwfeedback은 리눅스 Mint와 기본 OS의 기본 설정이지만, 업스트림 및 기타 여러 패키지의 기본값은 아니며, 관리자가 활성화한 경우에만 존재한다.). 공격자는 tgetpass.c에 있는 getln()의 stdin에 긴 문자열을 전달해야한다.”고 한다.

전문가는 sudoers 파일에 나열되지 않은 사용자도 이 취약점을 유발할 수 있다고 설명했다. Sudo 개발자인 Todd C. Miller는 “버그를 없애려면 sudo 권한이 필요하지 않고 다만 pwfeedback을 활성화해야 한다. 파이프가 암호를 물을 때, 파이프를 통해 sudo에 큰 입력값을 전달함으로써 버그를 재현할 수 있다.”고 말했다.

이 결함에 기여하는 두가지 취약점이 있다.

- pwfeedback 옵션은 터미널 장치 이외 다른 것을 읽을 때처럼 무시되지 않는다. 터미널이 없기 때문에 저장된 라인을 지우는 character가 초기화된 값 0으로 유지된다.

- *(asterisk) 줄을 지우는 코드는 쓰기 오류가 있는 경우 버퍼 위치를 올바르게 재설정하지 않지만, 나머지 버퍼 길이를 재설정한다. 결과적으로 genIn() 함수는 버퍼의 끝을 지날 수 있다.

옵션이 활성화된 경우 sudoers 구성 파일에서 Defaults pwfeedback을 Defaults!pwfeedback으로 변경하여 비활성화할 수 있다. Sudo 관리자는 1.8.31 버전 릴리즈를 통해 취약점을 패치했다.

Miller는 “로직 버그는 1.8.26 버전부터 1.8.30까지 존재하지만 1.8.26에 도입된 EOF 처리의 변경으로 인해 익스플로잇될 수 없다.”고 말했다.

2019년 10월, Vennix는 Sudo 유틸리티에서 루트 접근을 제한했음에도 의도하지 않은 사용자나 악성 프로그램이 리눅스 시스템에서 루트 권한으로 임의 명령을 실행할 수 있는 보안 정책 우회 이슈를 발견한 바 있다.

★정보보안 대표 미디어 데일리시큐!★