보안 제품정보


2년 동안 방치됐던 리눅스 커널 취약점, 패치됐다 2017.09.28

2015년 4월에 첫 커밋 나와...그러나 당시엔 심각한 취약점 아니라 방치

[보안뉴스 문가용 기자] 권한을 상승시킬 수 있는 치명적인 취약점이 리눅스 커널에서 발견된 지 2년 만에 패치됐다. 보안 업체 퀄리스(Qualys)가 처음 발견한 이 버그에 대한 커밋은 2015년 4월 14일에 나왔으나, 당시에는 이 오류가 심각한 보안 취약점이라고 여겨지지 않은 탓에 리눅스 3.10.77 버전으로 백포트된 건 한 달이나 지난 후였다.

[이미지 = iclickart]


이 때문에 1708 버전 이전의 센트OS(CentOS) 7 버전들 전부, 7.4 버전 이전의 레드햇 엔터프라이즈 리눅스 7(Red Hat Enterprise Linux 7) 전부, 센트OS 6의 모든 버전, 레드햇 엔터프라이즈 리눅스 6 모든 버전이 취약한 상태가 되어버렸다. 현재 해당 취약점에는 CVE-2017-1000253이라는 번호가 달렸고 CVSS3 베이스 스코어 점수를 7.8점 기록했다.

이 취약점은 리눅스 커널이 ELF 실행파일들을 로딩하는 방식 때문에 존재하는 것으로, 포지션 인디펜던트 실행파일(PIE)을 통해 발동시킬 수 있다고 퀄리스는 설명한다. “해당 버그 때문에 커널의 execve() 코드가 PIE의 읽기-쓰기 세그먼트를 스택 메모리 영역 위로 매핑합니다. 즉 메모리 커럽션의 위험이 생기는 것이죠.”

퀄리스는 “SUID에 대한 접근 권한만 있으면 어떤 로컬 사용자라도 자기의 권한을 높일 수 있다”고 레드햇에 포스팅했다. 해당 취약점의 영향력을 약화 및 축소시키려면 기존의 mmap 레이아웃으로 돌아가야 한다. “mmap은 프로세스 주소 공간의 낮은 부분에서부터 시작합니다. 공간 할당은 밑에서 위로 가는 방향으로 진행되고요. PIE 실행파일은 스택 영역에서부터 먼 곳에 매핑됩니다. 그러므로 서로 방해할 수가 없게 되죠.”

퀄리스에 의하면 이 취약점은 128MB 이상의 읽기-쓰기 세그먼트를 포함한 PIE로만 발동되는 건 아니다. “128MB는 mmap_base와 스택의 가장 높은 부분에 할당된 주소 사이의 최소 거리만을 나타내는 숫자입니다. 그러므로 아규먼트 열을 1.5GB 이상 execve()로 전달하면 PIE가 스택 바로 아랫부분으로 매핑될 수 있습니다. 그리고 CVE-2017-1000253이 발동되는 것입니다.

퀄리스의 전문가들은 개념증명용 익스플로잇도 개발했고, 이는 센트OS-7 커널 3.10.0-514.21.2el7.x86_64와 3.10.0-514.26.1.el7.x86_64 버전에서 잘 작동했다. 3.10.0-693 이후에 나온 커널 버전들은 더 이상 이 취약점을 가지고 있지 않다.
[국제부 문가용 기자(globoan@boannews.com)]

<저작권자: 보안뉴스(www.boannews.com) 무단전재-재배포금지>