🇰🇷 한글 설명
Notepad++ 8.9.8 이전 버전에서 NPPM_SAVESESSION 핸들러가 lParam을 세션 정보 포인터로 변환할 때 null 체크를 수행하지 않는 취약점이 존재합니다. 동일하거나 더 높은 권한을 가진 프로세스가 null lParam을 포함한 메시지를 전송하면 프로그램이 즉시 종료되어 서비스 거부 및 저장되지 않은 문서 손실이 발생할 수 있습니다.
💡 쉬운 설명
컴퓨터 내의 다른 프로그램이 Notepad++에 잘못된 신호를 보내 프로그램을 강제로 종료시킬 수 있는 문제입니다. 이로 인해 작업 중이던 문서가 저장되지 않고 갑자기 꺼질 수 있습니다.
🇺🇸 원문 (English)
Notepad++ is a free and open-source source code editor. Prior to 8.9.8, the NPPM_SAVESESSION handler in PowerEditor/src/NppBigSwitch.cpp converts lParam to a sessionInfo pointer and dereferences its nbFile, files, and sessionFilePathName members without checking for null. A process running at the same or a higher Windows integrity level on the same desktop can send NPPM_SAVESESSION with a null lParam, immediately terminating Notepad++ and causing denial of service and loss of unsaved documents. This issue is fixed in version 8.9.8.
📍 영향받는 시스템
Notepad++ 8.9.8 미만 모든 버전
⚔️ 공격 벡터
동일하거나 높은 권한을 가진 로컬 프로세스가 NPPM_SAVESESSION 메시지를 전송
🛡️ 대응 방법
Notepad++를 최신 버전인 8.9.8 이상으로 업데이트
🔧 검증 코드
출력된 버전 번호가 8.9.8보다 낮으면 취약한 상태입니다.
notepad++ --version 2>/dev/null || powershell "(Get-ItemProperty 'HKLM:\SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall\*' | Where-Object { $_.DisplayName -like '*Notepad++*' }).DisplayVersion"