🇰🇷 한글 설명
Vim 9.1.0648 미만 버전의 dialog_changed() 함수에서 발생하는 double-free 취약점입니다. 수정되지 않은 버퍼를 저장하려 할 때 버퍼 이름을 'Unnamed'로 설정하면 포인터를 중복 해제하게 되며, 이는 힙 사용 후 해제(use-after-free)로 이어져 프로그램 충돌을 유발할 수 있습니다.
💡 쉬운 설명
텍스트 편집기 Vim에서 파일을 저장하는 과정 중 메모리 관리 오류가 발생하는 문제입니다. 이 오류로 인해 프로그램이 갑자기 종료되거나 시스템에 예기치 않은 동작이 발생할 수 있습니다.
🇺🇸 원문 (English)
Vim is an open source command line text editor. double-free in dialog_changed() in Vim < v9.1.0648. When abandoning a buffer, Vim may ask the user what to do with the modified buffer. If the user wants the changed buffer to be saved, Vim may create a new Untitled file, if the buffer did not have a name yet. However, when setting the buffer name to Unnamed, Vim will falsely free a pointer twice, leading to a double-free and possibly later to a heap-use-after-free, which can lead to a crash. The issue has been fixed as of Vim patch v9.1.0648.
📍 영향받는 시스템
Vim version < v9.1.0648
⚔️ 공격 벡터
사용자가 수정된 버퍼를 저장하는 과정에서 특정 조건(버퍼 이름이 Unnamed인 경우)을 유도하여 발생
🛡️ 대응 방법
Vim을 최신 버전인 v9.1.0648 이상으로 업데이트하십시오.
🔧 검증 코드
출력된 버전 번호가 9.1.0648보다 낮으면 취약한 버전입니다.
vim --version | head -n 1 | grep -oE 'Vim (9\.[0-9]+\.[0-9]+)'