Uno Kim
by Uno Kim

Categories

Tags

최근 리눅스의 대표적인 텍스트 편집기 Vim과 Neovim(nvim)에서 심각한 보안 취약점이 공개되었고, 이 내용이 어제 데일리시큐 보안 뉴스 기사로도 올라왔습니다.

문제

쉽게 요약하자면, 임의의 코드를 내장한 문서를 Vim으로 읽게 하면 Vim 의 modelines 기능을 통해 이를 실행시킬 수 있다는 내용입니다. Armin Razmjou(@numirias)가 자신의 깃헙 저장소에 해당 내용을 공유하였습니다. 아래는 공개된 PoC 데모입니다.

Vim Security Vulnerability

Neovim 은 Vim을 기반으로 만들어졌기 때문에, 동일한 취약점을 가지고 갑니다.

취약점 대상

Vim < 8.1.1365, Neovim < 0.3.6

위에 표시한 Vim, Neovim의 이전 버전은 모두 취약점을 가지고 있습니다.

취약점 상태 확인 방법

자신의 Vim, Neovim 이 해당 보안 문제에 취약한 상태인지 확인하려면, 먼저 버전을 확인합니다.

vim --version
nvim -v

취약점 패치 이전 버전이라면, Vim 에디터 안에서 커맨드라인 모드(:)에 다음의 명령어를 입력하여 modelines 기능이 활성화 되어있는지를 점검해볼 수 있습니다.

set modeline?

명령어 리턴 결과가 nomodeline이라면, 해당 기능이 활성화되지 않은 것입니다. 따라서 취약점 문제가 없습니다.

해결 방법

Vim, Neovim 모두 해당 보안 취약점 패치가 이루어졌습니다. Vim 8.1.1365, Neovim 0.3.6 이상의 최신 버전으로 업그레이드 하시면 됩니다.

버전을 올리지 않고 사용하시려는 경우, 해당 옵션을 끄는 것을 권장드립니다. 이는 Vim 에디터 안에서 :키를 눌러 커맨드라인 모드로 진입 후 매번 입력할 수도 있고, 설정이 계속 적용되도록 하려면 Vim 설정파일 ~/.vimrc 에 작성할 수도 있습니다.

set modelines=0
set nomodeline

Reference