최근 리눅스의 대표적인 텍스트 편집기 Vim과 Neovim(nvim
)에서 심각한 보안 취약점이 공개되었고, 이 내용이 어제 데일리시큐 보안 뉴스 기사로도 올라왔습니다.
문제
쉽게 요약하자면, 임의의 코드를 내장한 문서를 Vim으로 읽게 하면 Vim 의 modelines
기능을 통해 이를 실행시킬 수 있다는 내용입니다. Armin Razmjou(@numirias
)가 자신의 깃헙 저장소에 해당 내용을 공유하였습니다. 아래는 공개된 PoC 데모입니다.
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