Notepad++ sürüm 8.5.7, birden çok sıfır gün arabellek taşmasına yönelik düzeltmelerle birlikte yayımlandı; bunlardan biri, kullanıcıları özel hazırlanmış dosyaları açmaya kandırarak kod yürütmeye yol açma potansiyeli olarak işaretlendi.
Notepad++, birçok programlama dilini destekleyen, eklentiler yoluyla genişletilebilen ve çok sekmeli düzenleme ve sözdizimi vurgulama gibi verimliliği artıran özellikler sunan popüler bir ücretsiz kaynak kodu düzenleyicisidir.
GitHub’ın güvenlik araştırmacısı Jaroslav Lobačevski, geçtiğimiz birkaç ay içinde Notepad++ sürüm 8.5.2’deki güvenlik açıklarını geliştiricilere bildirdi.
Araştırmacının kamuya açık danışma belgesinde bu kusurlara yönelik kavram kanıtı istismarları da yayınlandı, bu da kullanıcıların programı mümkün olan en kısa sürede güncellemesini gerekli kılıyor.
Notepad++’daki güvenlik kusurları
Keşfedilen güvenlik açıkları, Notepad++ tarafından kullanılan çeşitli işlevlerde ve kitaplıklarda yığın arabelleği yazma ve okuma taşmalarını içeriyor.
GitHub araştırmacısının keşfettiği dört kusurun özeti:
- CVE-2023-40031: UTF16’dan UTF8’e kodlama dönüşümleri hakkındaki yanlış varsayımlar nedeniyle Utf8_16_Read::convert işlevinde arabellek taşması.
- CVE-2023-40036: CharDistributionAnalytics::HandleOneChar’daki genel arabellek okuma taşması, arabellek boyutuna dayalı bir dizi dizini sırasının neden olduğu ve uchardet kitaplığının kullanılmasıyla daha da kötüleşen bir durum.
- CVE-2023-40164: nsCodingStateMachine::NextState’te genel arabellek okuma taşması. Bu, CharLenTable arabelleğinin boyutuna bağımlılığı nedeniyle savunmasız olan, Notepad++ tarafından kullanılan uchardet kitaplığının belirli bir sürümüyle bağlantılıdır.
- CVE-2023-40166: Dosya dili algılaması sırasında arabellek uzunluklarının kontrol edilememesi nedeniyle FileManager::detectLanguageFromTextBegining’de yığın arabellek okuma taşması meydana geliyor.
Bu kusurlardan en ciddi olanı, CVSS v3 derecesi 7,8 (yüksek) olarak atanan CVE-2023-40031’dir ve potansiyel olarak rastgele kod yürütülmesine yol açmaktadır.
Ancak kullanıcı, hatanın türü nedeniyle bu kusuru kullanarak kod yürütmenin mümkün olabileceğine itiraz ediyor.
Kusurlarla ilgili olarak GitHub’da açılan bir konuya yapılan yorumda “Teknik olarak bir ‘arabellek taşması’ olsa da” aslında rastgele kod yürütülmesine izin verme şansı neredeyse sıfır olan ikişer ikişer bir hatadır,” yazıyor.
Diğer üç sorun, Lobačevski’nin dahili bellek ayırma bilgilerini sızdırmak için kullanılabileceğini söylediği orta şiddette (5.5) sorunlardır.
Düzeltme geliyor
Lobačevski’nin blogu ve kavram kanıtlarının 21 Ağustos 2023’te yayınlanmasına rağmen Notepad++ geliştirme ekibi, kullanıcı topluluğu çözüm için baskı yapana kadar duruma yanıt vermek için acele etmedi.
Sonunda, 30 Ağustos 2023’te sorunu kabul etmek için genel bir sorun oluşturuldu ve dört kusura yönelik düzeltmeler, 3 Eylül 2023’te ana kod dalına eklendi.
Notepad++ 8.5.7 artık yayımlandı ve değişiklik günlüğünde listelenen dört güvenlik açığını ve diğer hataları düzeltmek için yüklenmesi gerekiyor.