리눅스의 보안강화 기능을 켠 상태에서만 동작하는 역설적인 보안취약점이 발견됐다. 주요 배포판에 탑재된 SE리눅스(SELinux) 기능이 설정된 시스템에만 먹히는 관리자 권한 상승 공격 취약점이다.
미국 지디넷은 5일(현지시간) SE리눅스 환경은 설정이 까다로워 엄격한 보안이 필요할 때만 시스템 관리자들에게 선택받곤 했는데 오히려 SE리눅스로 보호된 시스템에만 영향을 주는 취약점이 발견됐다고 보도했다. 취약점은 보안업체 퀄리스(Qualys)가 발견했다.
지난달말 공개된 퀄리스의 분석에 따르면 해당 취약점(CVE-2017-1000367)은 일반 사용자가 리눅스의 최고 관리자 권한으로 운영체제(OS) 기능을 사용케 하는 '슈퍼유저' 명령어(sudo)를 악용 이 취약점은 일반 리눅스가 아닌 SE리눅스에만 해당한다.
sudo는 사용자가 다른 사용자 또는 최고 관리자 권한으로 OS 명령어를 실행하려 할 때 쓰는 명령어다. 동시에 이런 명령어의 실행 내역을 추적 감사할 수 있는 이력도 제공한다. 이는 일상적으로 반복되는 리눅스 시스템 관리 업무의 기본요소다. 이런 요소에 보안취약점이 있었다.
SE리눅스가 켜진 시스템에서, 만일 어떤 사용자가 최상위 명령어 실행 권한을 얻지 못한 상태로 sudo 명령어를 사용하더라도, 이 취약점을 악용하면 파일시스템에 위치한 어떤 파일 내용이든 덮어쓸 수 있다. 최상위 관리자 권한 소유의 파일 내용도 조작될 수 있다는 얘기다.
공격자는 신뢰할 수 있는 사용자가 표준 출력이나 표준 에러 스트림에 임의의 파일을 덮어쓰게 만드는 방식을 쓸 수 있다. 이는 /etc/shadow 또는 /etc/sudoers같은 신뢰할 수 있는 파일을 재작성해 권한을 완전한 최고 관리자 수준으로 높이게 만들 수도 있다.
퀄리스는 이 취약점을 통한 공격이 작동하려면 사용자가 서버에 액세스할 수 있어야 하고 sudo 명령어를 실행할 수 있어야 한다고 덧붙였다. sudo 1.7.10부터 1.7.10p9 사이, sudo 1.8.5부터 1.8.20p1 사이 버전에 취약점이 존재한다.
미국 지디넷에 따르면 sudo 1.7.10 버전은 지난 2012년 9월 배포됐기 때문에, 연식이 5년 이상 된 리눅스 배포판은 모두 이 공격에 취약하다. sudo 1.8.20p1 버전은 취약점을 패치했지만 악성 명령어 관련 문제를 해결하지 못해 불완전하다.
퀄리스 측은 시스템 관리자들이 이 취약점을 패치할 시간이 충분히 지난 이후 sudo 명령어로 최고 관리자 권한을 얻을 수 있는 익스플로잇을 공개할 것이고, 해커들은 그 하루이틀 뒤면 이런 익스플로잇을 악용해 실행하기 쉬운 공격스크립트를 만들어낼 것이라고 지적했다.
보도는 웬만하면 당장 패치를 하라고 권했다. 패치를 하지 않을 경우 언젠가 이 취약점을 노린 공격에 당할 위험이 있기 때문이다. 현재 주요 서버용 리눅스 배포판은 모두 이 문제를 해결한 패치를 제공하고 있다. 데비안, 레드햇, 수세, 우분투에서 패치를 적용 가능하다.
취약점이 발견된 SE리눅스는 리눅스OS 커널의 보안 모듈을 가리킨다. 지난 1998년 1월 처음 등장했다. 초기 프로젝트는 미국 국가안보국(NSA)이 진행했는데, 이후 개발은 리눅스 및 오픈소스 소프트웨어 개발자 커뮤니티로 이관됐다.
관련기사
- 윈도가 PC 지배?…리눅스는 세상 삼켰다2017.06.06
- 리눅스 시대 "큰 힘엔 큰 책임 따른다"2017.06.06
- 30년묵은 윈도-리눅스 기술, 각자 세대교체2017.06.06
- 수천만 리눅스 서버 겨냥 취약점 주의...안드로이드도 사정권2017.06.06
SE리눅스 모듈은 바이너리 정책 관리용 라이브러리(libsepol), 정책 컴파일러(checkpolicy), 보안인지 애플리케이션용 라이브러리(libselinux), 정책관리툴 라이브러리(libsemanage), 여러 정책관련 유틸리티(policycoreutils)로 구성돼 있다.
NSA는 SE리눅스 핵심 코드를 제공하고, 주요 리눅스 배포판은 이를 각 환경에 맞게 지원한다. 배포판 공급업체에 따라 기본 기능으로 제공되거나 보조 패키지 형태로 추가해 쓸 수 있다. 오픈소스커뮤니티 코드는 깃허브 프로젝트 페이지에서 제공된다.