WebP 0day analizi
(blog.isosceles.com)- Chrome kararlı güncellemesine dahil edilen tek güvenlik düzeltmesi CVE-2023-4863, WebP görüntü kütüphanesinde bir heap buffer overflow açığıdır ve Google, bunun gerçek ortamlarda çalışan bir exploit’inin zaten bulunduğunu açıkladı
- Apple SEAR’ın 6 Eylül 2023 tarihli bildirimi, Apple’ın CVE-2023-41064 kaydı ve Citizen Lab’in BLASTPASS bulguları bir araya geldiğinde, bunun büyük olasılıkla aynı hata olduğu görülüyor
- Açığın, WebP kayıpsız sıkıştırma biçimi VP8L’de Huffman tablosu oluşturma sürecinde önceden hesaplanan buffer boyutunu aşan yazmaya izin veren bir sorun olduğu analiz edildi
- Bunun sıradan fuzzing ile kolay yakalanamamasının nedeni, art arda birden çok en büyük boyutlu Huffman tablosu ve belirli bir geçersiz tablonun oluşturulmasını gerektiren zor tetikleme koşulları
- Upstream libwebp yaması yeterli görünüyor, ancak libwebp tarayıcılarda, işletim sistemlerinde ve uygulamalarda yaygın kullanıldığı için yamanın yayılması ve sandboxing kritik önem taşıyor
Chrome yamasının BLASTPASS ile bağlantılı görünmesinin nedeni
- Google, 2023 Eylül başındaki Chrome kararlı güncellemesinde Apple Security Engineering and Architecture (SEAR) tarafından bildirilen CVE-2023-4863 açığını düzeltti
- Açık, WebP görüntü kütüphanesinde bir heap buffer overflow’dur
- Google, “CVE-2023-4863 exploit’inin gerçek ortamlarda bulunduğunu” bildiğini açıkladı
- Aynı dönemde Citizen Lab, Washington DC merkezli bir sivil toplum kuruluşuna bağlı bir kişinin iPhone’unda şüpheli davranış tespit etti
- BLASTPASS, iMessage zero-click zero-day exploit’i üzerinden NSO Group’un Pegasus casus yazılımının dağıtıldığı bir vakayla ilişkilendirildi
- Citizen Lab teknik analiz sonuçlarını Apple’a ilettikten sonra Apple, 7 Eylül’deki güvenlik duyurusunda iki CVE yayımladı
- Apple’ın ilk CVE’si CVE-2023-41061, PassKit ek dosyasına bir görüntü exploit’i yerleştirerek iMessage’in BlastDoor sandbox’ını atlama izleriyle örtüşüyor
- Kötü amaçlı görüntü büyük olasılıkla sandbox’sız başka bir süreçte işlendi
- İkinci CVE olan CVE-2023-41064, Apple ImageIO’da bir buffer overflow açığıdır
- ImageIO, çeşitli görüntü biçimlerini tanımlayıp uygun decoder’a bağlayan Apple görüntü ayrıştırma framework’üdür
- Teknik ayrıntılar verilmediği için CVE-2023-41064’ün hangi görüntü biçimini etkilediği doğrulanamıyor
- Apple’ın yakın zamanda ImageIO’ya WebP desteği eklemesi, Apple güvenlik ekibinin 6 Eylül’de Chrome’a WebP açığını bildirmesi ve Google’ın 5 gün içinde acil yama çıkarıp bunu gerçek saldırılarda kullanılmış olarak işaretlemesi nedeniyle BLASTPASS ile CVE-2023-4863’ün aynı hata olma olasılığı yüksek görünüyor
libwebp yamasının işaret ettiği açık noktası
- Chrome güvenlik duyurusundaki hata kimliği ile libwebp açık kaynak commit’i karşılaştırıldığında, Fix OOB write in BuildHuffmanTable yamasının CVE-2023-4863’e karşılık geldiği görülüyor
- Yama, Apple bildiriminden bir gün sonra, 7 Eylül 2023’te oluşturuldu
- Açık, WebP’nin kayıpsız sıkıştırma desteği olan VP8L içinde bulunuyor
- WebP kayıpsız sıkıştırma, pikselleri %100 doğrulukla depolayıp geri yüklemek için Huffman coding kullanır
- Modern uygulama, kavramsal ağaç yapısı yerine tablo kullanarak decoding’i optimize eder
- Savunmasız sürüm, sabit tablolardan alınan önceden hesaplanmış buffer boyutu ile bellek ayırdıktan sonra Huffman tablosunu doğrudan bu alanda kuruyordu
- Yeni sürümde ilk geçiş, çıktı tablosu için gereken toplam boyutu hesaplıyor ancak gerçek yazma işlemi yapmıyor
- Toplam boyut önceden hesaplanan buffer’dan büyükse daha büyük bir allocation oluşturulacak şekilde değiştirildi
- Temel akış,
src/dec/vp8l_dec.ciçindekiReadHuffmanCodesfonksiyonunda ayrılanhuffman_tablesileReadHuffmanCodeiçindekiVP8LBuildHuffmanTable/BuildHuffmanTableçağrılarıdır- Huffman tabloları, farklı alfabet boyutlarına sahip 5 segmente ayrılır
- Overflow oluşturmak için bu 5 tablonun tamamının hassas biçimde kurgulanması gerekir
Tetikleyici dosyanın oluşturulma süreci
- WebP kayıpsız sıkıştırma, giriş piksellerinin frekans analizine göre sık görülen değerlere kısa bit dizileri, seyrek görülenlere uzun bit dizileri atar
- Decoder’ın bit dizisi uzunluklarını her zaman ayırt edebilmesi için kodlar buna göre oluşturulur
- Sıkıştırılmış görüntü, kodlarla değerler arasındaki eşlemeyi yeniden kurmak için istatistiksel bilgi ve kod atama bilgisi içermelidir
- WebP, Huffman tablosunun kendisini de dosya boyutunu küçültmek için Huffman coding ile sıkıştırır
- Bu yapı, açığın analiz ve tetikleme sürecini daha da karmaşık hale getirir
@mistymntncop, rastgele Huffman coding verisi yani code lengths içeren geçerli biçimde bir WebP üretmek için harness kodu sağladı- Bu harness ile hedef
BuildHuffmanTableçağrısına rastgelecode_lengthsdizileri verilebildi
- Bu harness ile hedef
- Elle yapılan deneylerde,
BuildHuffmanTableiçindeki histogram,num_open,num_nodesveReplicateValueiçin başlangıç konumunu izleyenkeydeğeri arasındaki etkileşim son derece karmaşıktıcount[0]ilecount[8]arasındaki root table,total_sizeüzerinde doğrudan büyük etki yaratmasa da sonraki iç durumu değiştirebilircount[9]ilecount[15]arasındaki second level tables, nihaitotal_sizeüzerinde doğrudan etkilidir
- Mark Adler’in enough.c aracı, alfabet boyutu, root table boyutu ve azami kod uzunluğu için mümkün olan en büyük Huffman tree lookup table histogramını üretir
- Yorumlara göre libwebp’deki
kTableSizebu araçla hesaplanan değerlerden alınmıştır - Bu araçla önceden hesaplanan buffer boyutu yeniden üretilebildi ve
@mistymntncoparacının, “enough” tarafından üretilen code lengths ilehuffman_tablesallocation’ını %100 doldurduğu da doğrulandı
- Yorumlara göre libwebp’deki
Gerçek overflow’un oluştuğu koşullar
enougharacı, geçerli ve tam kodlar için azami değeri hesaplar- Küçük tablolardan biri olan sembol boyutu 40, root table 8 bit ve azami kod uzunluğu 15 için azami boyut 410’dur
BuildHuffmanTabletarafından geçerli kabul edilen kodlar arasında 410’dan büyük boyut üreten bir örnek bulunamadı
- Overflow, yalnızca geçerli Huffman ağaçlarıyla değil, son aşamada geçersiz bir Huffman ağacı eklendiğinde ortaya çıkar
- Önce 4 geçerli Huffman ağacıyla azami boyutta çıktı tablosu oluşturulur
- Son tabloya geçersiz bir Huffman ağacı konduğunda, nihai tutarlılık kontrolünden önce
ReplicateValuesınır dışına yazabilir
- Yeniden üretim için savunmasız libwebp commit’i
7ba44f80f3b94fc0138db159afea770ef06532a0checkout edilip AddressSanitizer etkinleştirildikten sonra,@mistymntncopun PoC koduylabad.webpüretiliyor ve bu dosyadwebpile decode ediliyor- AddressSanitizer,
BuildHuffmanTableiçindeheap-buffer-overflowraporluyor - Raporlanan yazma işlemi, 11816 baytlık bölgenin hemen arkasındaki adreste gerçekleşiyor
- AddressSanitizer,
huffman_tablesüzerinde overflow yaratan birden fazla giriş mevcut- Bulunan code lengths örnekleri arasında,
huffman_tablesallocation sonundan 400 bayt sonrasına kadar yazan vakalar var - Yazılan değerler üzerindeki kontrol kısmi olsa da exploit mümkün görünüyor
- Bulunan code lengths örnekleri arasında,
- Geçersiz girdideki Huffman ağacı kısmen dengesizdir ve dengesiz dalın bir bölümünde çocuğu olmayan çok sayıda iç düğüm bulunur
- Bu yapı, geçerli bir ağaçla erişilemeyecek
keyindeksleri oluşturur
- Bu yapı, geçerli bir ağaçla erişilemeyecek
Yamanın overflow’u engelleme biçimi
- İlk bakışta yama, heap overflow’u önlemek için buffer’ı gereken boyuta göre dinamik olarak büyütüyormuş gibi görünüyordu
- Gerçekte yamalı sürümün ilk geçişi
BuildHuffmanTableçalıştırarak gereken toplam boyutu hesaplıyor ancak tabloya yazmıyor- Overflow’a neden olan geçersiz girdi için
BuildHuffmanTable, bu ilk geçişte başarısız olup 0 döndürüyor - İlk geçiş yazma yapmadığından, geçersiz ağaç kısmen işlense bile sınır dışı yazma oluşmuyor
- Overflow’a neden olan geçersiz girdi için
- Aynı overflow’u tetikleyen geçerli ve tam kod örneği bulunamadığı için bu yama yeterli görünüyor
Fuzzing’in bunu yakalamasının neden zor olduğu
- libwebp uzun süredir Google OSS-Fuzz içinde fuzz ediliyordu ve WebP kayıpsız desteği de kapsamlı biçimde fuzzing’e tabi tutuluyordu
- Temel zorluk hem formatın hem de tetikleme koşullarının karmaşık olması
- Milyarlarca olasılık arasından önce alfabet boyutları 280 ve 256 için azami boyutta 4 Huffman tablosu kurulması gerekiyor
- Ardından alfabet boyutu 40 için çok belirli bir biçimde geçersiz bir Huffman tablosu oluşturulmalı
- Herhangi bir adımda tek bir bit bile yanlış olursa görüntü decoder’ı hata verip güvenli şekilde sonlanır
- Google, WebP 0day düzeltmesinden sonra WebP Huffman rutinlerine özel yeni bir fuzzer yayımladı
- Bu fuzzer çalıştırıldığında da CVE-2023-4863 bulunamadı
- Standart bit-flip mutasyonları, code coverage geri bildirim döngüsü ve AFL++’ın CmpLog gibi girdi-durum temelli yaklaşımlar da bu uç duruma giderken gerekli ara adımları geçmekte zorlanıyor
- Quarkslab’ın TritonDSE gibi dinamik sembolik yürütme teknikleri işe yarayabilir, ancak bu doğrulanmış değil
- Bu durum FreeType’taki Load_SBit_Png açığıyla aynı karakterde değil
- Load_SBit_Png, fuzzing harness’inin API kullanım biçimini yeterince yansıtmaması nedeniyle bulunamamıştı
- CVE-2023-4863 ise harness eksikliğinden çok, açığın kendi kısıtları nedeniyle fuzzing’in zorlaştığı bir örneğe daha yakın
Etki alanı ve müdahale durumu
- Citizen Lab, gerçek ortamda kullanılan gelişmiş bir exploit yakaladı ve Apple ile Chrome birkaç gün içinde milyarlarca kullanıcıya güncelleme dağıtmış görünüyor
- Android o sırada hâlâ etkilenme ihtimali taşıyordu
- Android’in BitmapFactory bileşeni, Apple ImageIO gibi görüntü decoding işlemini yürütür ve libwebp desteği sağlar
- O tarihte Android güvenlik duyurusunda CVE-2023-4863 düzeltmesi yer almıyordu, ancak düzeltme AOSP’ye merge edilmişti
- Android etkileniyorsa bu durum Signal veya WhatsApp gibi uygulamalarda uzaktan exploit’e yol açabilir
- Düzeltmenin Ekim güvenlik bülteninde gelmesi bekleniyordu
- Upstream libwebp yaması doğru uygulanmış görünüyor ve gerekli yerlere yayılıyor
- libwebp çok geniş kullanım alanına sahip olduğu için yamanın her yere yeterince ulaşması zaman alabilir
- Görüntü decoding gibi zero-click uzaktan exploit saldırı yüzeyine yakın karmaşık parser kodlarında, yalnızca fuzzing ile güvenliği garanti etmek zor; proaktif kaynak kod incelemesi ve uygun sandboxing yatırımı gerekiyor
Teknik bilgi paylaşımındaki asimetri
- Üreticiler teknik ayrıntıları yeterince paylaşmadığında savunma ekiplerinin açığın etkisini doğrulaması zorlaşıyor
- Saldırganlar N-day açıkları izleyip exploit etmeye güçlü biçimde motive olduklarından, ayrıntılar yayımlanmasa da genellikle ciddi biçimde yavaşlamıyorlar
- Savunmacılar ise bu düzeyde teknik analiz yapacak kaynağa çoğu zaman sahip değil
- Temel saldırı davranışı bilgisi bile gizlendiğinde, saldırganların açık ve exploit hakkında savunmacılardan daha fazla içgörüye sahip olduğu bir asimetri ortaya çıkıyor
1 yorum
Hacker News yorumları
Bu hata en çok 2015’teki Timsort hatasına benziyor gibi görünüyor [1]
Timsort, CPython’dan çıkan akıllı bir hibrit sıralama algoritmasıydı; OpenJDK dâhil birçok uygulama bunu neredeyse kaynak düzeyinde çeviri olarak benimsedi. Sıralı run yığınını tutuyor ve yapısı gereği olası en büyük yığın boyutu için yeterince küçük sonlu bir üst sınır olduğuna dair bir kanıt vardı; ancak özgün CPython uygulaması kanıtla tam örtüşmediği için nadir durumlarda yığın taşması mümkün oluyordu. Bu yüzden CPython’da ciddi bir güvenlik hatasıydı; Java ise bu durumda istisna fırlattığından OpenJDK’da aynı türden bir güvenlik sorunu değildi.
Benzer şekilde bu WebP hatası da maksimum tablo boyutunun biçimsel olarak kanıtlanmış olmasına rağmen, gerçek kaynak koda giren değerle uyuşmamasından kaynaklandı. Bu tür hataları doğrulamak da incelemek de zor. Bir kanıt var ve kaynak da o kanıtla uyumlu görünüyor; bu yüzden her şeyin yolunda olduğunu düşünmek kolay. İnsan incelemesinden ziyade erişilebilir biçimsel doğrulamaya ve bellek güvenli dillerin kullanımına güçlü biçimde ihtiyaç olduğunun bir işareti gibi görünüyor. Tip sistemleri de biçimsel doğrulamanın zayıf bir biçimi olarak görülebilir.
[1] http://envisage-project.eu/wp-content/uploads/2015/02/sortin...
https://github.com/google/wuffs
Aynı kontrolleri açıkça yazarak bu gereksinimi karşılamak da mümkün; ancak yüksek performanslı yazılım olduğu için kontrole gerek olmadığına inanıyorsanız, WUFFS aracının kodu kabul etmediği noktada yanıldığınızı fark etme olasılığınız yüksek. Tam biçimsel doğrulamadan daha zayıf olsa da program güvenliği amacı açısından büyük bir iyileştirme ve bir insanın “LGTM” demesinden çok daha iyi.
Bu yazıda “şu anda neyi yamalamalıyız” dışında da birkaç ilginç nokta vardı. Zafiyetin yerini ve düzeltmeyi bilseniz bile bir exploit PoC’yi yeniden üretmek epey çalışma gerektirebilir; ayrıca bir görüntü kod çözücünün içindeki kayıpsız sıkıştırma açıcı, fuzzing’e karşı oldukça dayanıklı olabilir. Güvenlik alanındakiler için bunlar bariz olabilir ama uzman olmayan biri olarak okuması keyifliydi.
Net yanıt bulamadığım birkaç soru var. 1) Brave gibi diğer Chrome tabanlı tarayıcılar da etkileniyor mu? 2) Masaüstü Chrome da etkileniyor mu, yoksa sorun yalnızca mobilde mi? 3) WebP’yi neden hiç duymamış olabilirim? Dünyadan kopuk muydum, yoksa bu mobil öncelikli bir teknoloji mi merak ediyorum.
Masaüstü Chrome da hem Linux hem Windows’ta etkilenmişti. Chrome kendi libwebp’sini paketlediği için Linux dağıtımı henüz yama geçmemiş olsa bile Chrome güncelse en azından tarayıcı saldırıları açısından sorun yok.
Büyük tarayıcılar ve işletim sistemleri şaşırtıcı ölçüde çok sayıda az bilinen görüntü formatını destekliyor. Örneğin MacOS’te KTX2 (Khronos Texture Container), Android’de ise DNG (Adobe Digital Negative) yüklenebiliyor. Saldırganların keşfedebileceği ilginç ve yüksek maruziyetli çok sayıda saldırı yüzeyi var.
Hata codec kitaplığında ve WebP, uygulaması fiilen tekilleşmiş bir ekosistem olduğu için herkes aynı kitaplığı kullanıyor; dolayısıyla herkesin yama geçmesi gerekiyor.
Google 10 yıl önce WebP’yi öne çıkardı ama uzun süre Chrome’a özgü kaldığı için fazla güç kazanamadı. Doğru düzgün standartlaştırılmış da değildi, ancak açık kaynaklıydı. Düşük kaliteli görüntüleri JPEG’den daha iyi sıkıştırıyor; fakat yüksek kaliteli görüntülerde renklerin akma ve bulanıklaşma eğilimi var. İronik biçimde WebP yaygın şekilde desteklenmeye başladığında, AVIF ve JPEG XL tarafından teknik olarak zaten eskimeye başlamıştı.
Android cihazınız destek sonu durumundaysa, şu anda fiilen ortalıkta dolaşan bir 0 tıklama exploite maruz kalmış sayılır mısınız? Yoksa SMS uygulamasını, Chrome’u, WhatsApp’ı, Signal’i vb. güncellemek başlıca giriş yollarını yeterince kapatır mı, merak ediyorum.
Destek sonu cihazlarda Chrome’u güncellerseniz Chrome sorunu düzelir, ancak Signal veya WhatsApp gibi uygulamaları düzeltmek için Android OS yükseltmesi gerekir. Chrome kendi libwebp’sini paketliyor, fakat mesajlaşma uygulamaları ve Gmail gibi yüksek maruziyetli uygulamalar görüntüleri göstermek için işletim sisteminin sağladığı arayüzleri kullanıyor. Güvenlik desteği alan Android cihazlar için ekim başından itibaren güncellemelerin çıkmasını bekliyorum.
“huffman_tables’ı gerçekten overflow’a uğratan çok sayıda girdi var” ifadesi daha genel bir sorun gibi görünüyor. Yazılım A, arama tablosu B’yi oluşturuyor ve bu tablo giriş veri akışını işlemek için kullanılıyor.
Artık güvenlik veya doğruluğa az da olsa önem veren bir geliştiricinin iki şeyden birini garanti etmesi gerekir: A) yazılım, hiçbir giriş verisi arama tablosunu yanlış kullanamaz veya başarısızlığa uğratamaz şekilde yazılmıştır ya da B) yalnızca kontrollü bir ortamda, örneğin iki iletişim tarafının da güvenildiği noktadan noktaya iletişimde kullanılır ve akışın arama tablosunu asla yanlış kullanmayacağı ya da anormalliğe yol açmayacağı garanti edilir.
B, küçük bir grup veya ofis dışında neredeyse imkânsızdır; internet ölçeğinde ise gerçekten imkânsızdır, dolayısıyla geriye yalnızca A kalır. Geleceğin yazılım mühendisliğinde genelleştirilmiş iyi uygulama şu olmalı: Herhangi bir nedenle arama tablosu kullanılıyorsa, geliştirici bu tablonun tüm veri türlerinde doğru çalıştığını garanti etmeli ya da hatalı veriyi tabloya ulaşmadan önce tespit edip uygun şekilde işlemelidir.
Ciddi bir güvenlik araştırmacısı olsam ve vaktim olsa, geçmişte arama tablolarıyla herhangi bir şekilde ilişkili tüm güvenlik açıklarının listesini toplayıp tek tek okur, ortak noktalarını karşılaştırırdım. Muhtemelen bir örüntü vardır. Ardından veri akışlarında arama tablosu kullanan tüm yazılımları tarayıp zafiyet denetimi yapardım; ama bu tek bir kişinin ömrü boyunca yapabileceği bir iş değil, bir takım sporu.
NSO’nun bu hatayı bulmasında kaynak kodunun açık olması ne kadar yardımcı olmuş olabilir? Kod yalnızca binary blob olsaydı, modern decompiler’lar tek başına kodu anlayıp böyle anlaşılması güç bir hatayı bulmaya yeter miydi, merak ediyorum.
Bunun görüntü formatının “yeni” bir parçası olmaması şaşırtıcı. Huffman sıkıştırması 70 yıldan uzun süredir var; kanonik Huffman da ondan yalnızca birkaç on yıl daha genç, hatta JPEG bile Huffman kullanıyor. On yıllardır var olan bir teknoloji ve uygulanma biçimini anlatan sayısız yazı var; artık birçok uygulamada hataları ayıklanmış olması gereken bir teknoloji gibi görünüyor.
Daha önce JPEG spesifikasyonunu okuyup bir decoder da yazmış olduğum için WebP spesifikasyonuna baktım: https://developers.google.com/speed/webp/docs/webp_lossless_...
Önemli kısım 6. bölümde. İlk göze çarpan şey, kodun nasıl kurulduğunun JPEG spesifikasyonundaki kadar açık olmaması. JPEG’de süreçle ilgili okunması kolay çok sayıda akış diyagramı var. WebP, LZH/deflate(zlib)’a benziyor ve bir “spesifikasyon”dan çok, açıklama eklenmiş bazı kaynak kod parçalarının derlemesi gibi duruyor.
GIF, JPEG, PNG’den sonra bir WebP decoder da yazmayı düşünüyorum, ama yukarıdaki “spesifikasyon”a bakınca neredeyse yazma diyor gibi hissettiriyor.
Huffman ağacı uygulamalarında çok farklı ödünleşimler olduğu için, eski bir teknoloji diye hatalarının tamamen ayıklandığını söylemek zor. Charles Bloom, 1997 tarihli Huffman optimizasyonu üzerine belirleyici makalenin [1] bile 2010 itibarıyla iyi bilinmediğini ve birçok optimizasyonun yeniden keşfedilip sonra unutulduğunu söylemişti. Bu yüzden verimsiz uygulamaların çok olması muhtemel.
[1] https://cbloomrants.blogspot.com/2010/08/08-12-10-lost-huffm...
Artık görüntüye bakarken bile güvenlik endişesi duymadan edemiyoruz gibi.
Güvenli olmayan bir dil olan C’yi kullanmanın tipik büyüme sancıları gibi geliyor. Tarayıcı hızı nedeniyle cazip olduğunu anlıyorum, ancak sektörün C kullanmaya başladığından beri tekrarladığı aynı hataları teşvik eden yaklaşımdan uzaklaşmasını isterim.
Daha hızlı diye perçin yerine kendinden kılavuzlu vidalarla köprü yapmak gibi. Köprü sarkmaya başlayınca daha fazla vida takmak yeterliymiş gibi.
“İyi haber şu ki Apple ve Chrome, bu meselenin aciliyetine uygun şekilde harika tepki verdi” denmesi pek ikna edici değil. Bu sorunu yalnızca Chrome’a özgü olarak sınıflandıran Google’dı. Sadece son 7 güne bakıldığında bile tüm büyük Linux dağıtımlarının güncelleme yayınlaması gerekti ve Red Hat buna 9,6 puan verdi. 1 milyardan fazla kez pull edilmiş Python Docker imajları, Puppeteer, WordPress, Node.js vb. de etkilendi; buna rağmen CRBug hâlâ gizli
BleepingComputer gibi siteler, araştırmadan gördükleri gibi haber yaptı; bu konuyu üçüncü tarafmış gibi ele alan birçok güvenlik şirketi de aynı şeyi yaptı. Karşı tarafın durum tespiti yapmadığını biliyorsanız güven inşa etmek gerçekten zor
Adam Caudill, 1Password’ün erken dönemde yama yaptığı örnekle birlikte “Whose CVE is it anyway?”[0] başlıklı iyi bir yazı yazdı ve burada bahsedilen sorunu iyi yakaladı. Citizen Lab iki meselenin bağlantılı olup olmadığına yanıt vermeyi reddetti ama bazı şeyleri görmek için dahi olmaya gerek yok
[0]: https://adamcaudill.com/2023/09/14/whose-cve-is-it-anyway/
Yazar da başka birçok sistemin yama yapması gerektiğini söylüyor. Ancak 1 milyar kez pull edilmiş Python Docker imajlarının kaç tanesi güvenilmeyen WebP görüntülerini render ediyor? Node vb. için de aynı. Elbette hızlıca yamalanmaları gerekir ama iOS/Android/Chrome ile aynı seviyede değiller
Dünya çapında yüz milyonlarca kişi bu kütüphaneden etkileniyor; kullandıkları her cihaz ve uygulamayla etki katlanıyor
C’yi seviyorum ama dünya çapında yüz milyonlarca kişinin kullandığı kütüphanelerde C kullanılmaması gerektiğini düşünüyorum. Bu tür temel kütüphanelerde risk oranı çok yüksek. C uzmanı olsanız bile bir gün hata yaparsınız
Düzeltme bu gibi görünüyor https://github.com/webmproject/libwebp/commit/dce8397fec159c...
“malloc fail” denmesi sinir bozucu. Slack, Discord, Teams ve tüm modern işletim sistemleri etkileniyor
C/C++ ve dinamik diller, tanımsız davranış ve ince hatalar için yüzeyi büyütür; en zeki geliştiriciler için bile lint etmek zor ve yükü ağırdır. Temel kütüphaneler seL4’ye benzer bir yaklaşımla biçimsel olarak doğrulanmalı
Bir başka sorun da FOSS genelinde yayılmış amatörlük ve titizlik, kalite, doğruluk ile güvenliğin önemsenmemesi. Bugünkü gibi kumun üzerine imparatorluk kurma yaklaşımı aptalca