CVE-2020-15211
Açıklama
TensorFlow Lite 1.15.4, 2.0.3, 2.1.2, 2.2.1 ve 2.3.1 versiyonlarından önceki sürümlerde, flatbuffer formatındaki kaydedilmiş modeller çift indeksleme şeması kullanır: bir modelin alt grafikler seti vardır, her alt grafiğin operatörler seti vardır ve her operatörün giriş/çıkış tensörleri seti vardır. Flatbuffer formatı, tensörler için indeksler kullanarak alt grafiğe ait olan bir tensör dizisi üzerinden indeksleme yapar. Bu durum, her bir tensörün verisini almaya çalışırken çift dizi indeksleme desenine yol açar. Ancak, bazı operatörlerde bazı tensörler isteğe bağlı olabilir. Bu senaryoyu yönetmek için flatbuffer modeli, bu tensörlerin indeksi olarak negatif `-1` değerini kullanır. Bu durum, model yükleme sırasındaki doğrulama sırasında özel durumların oluşmasına neden olur. Maalesef bu, `-1` indeksinin, isteğe bağlı girişler beklemeyenler ve çıkış tensörleri dahil olmak üzere herhangi bir operatör için geçerli bir tensör indeksi olduğu anlamına gelir. Böylece, yalnızca bu dizilerin başlangıcından belirli bir ofsette olmak kaydıyla, heap üzerinde tahsis edilen dizilerin sınırları dışına yazılmasına ve okunmasına izin verir. Bu durum, kapsamı oldukça sınırlı olsa da hem okuma hem de yazma gadget'larına yol açar. Sorun birkaç commit ile (46d5b0852, 00302787b7, e11f5558, cd31fd0ce, 1970c21 ve fff2c83) düzeltilmiştir ve TensorFlow 1.15.4, 2.0.3, 2.1.2, 2.2.1 veya 2.3.1 versiyonlarında yayınlanmıştır. Potansiyel bir geçici çözüm, sadece isteğe bağlı girişleri kabul eden operatörlerin `-1` özel değerini kullandığından ve bunu yalnızca isteğe bağlı olmasını bekledikleri tensörler için yaptığından emin olmak adına model yükleme koduna özel bir `Verifier` eklemek olacaktır. Bu izin listesi tipi yaklaşım hataya açık olduğundan, yamalanmış koda yükseltme yapılması önerilir.
Nasıl düzeltilir
- google tensorflow1.15.4, 2.0.3, 2.1.2, 2.2.1, 2.3.1 ya da sonraki bir sürüm
- tensorflow1.15.4, 2.0.3, 2.1.2, 2.2.1, 2.3.1 ya da sonraki bir sürüm
- tensorflow-cpu1.15.4, 2.0.3, 2.1.2, 2.2.1, 2.3.1 ya da sonraki bir sürüm
- tensorflow-gpu1.15.4, 2.0.3, 2.1.2, 2.2.1, 2.3.1 ya da sonraki bir sürüm
Etkilenen ürünler
| Ürün | Etkilenen sürümler | Düzeltildiği sürüm |
|---|---|---|
| google tensorflow | v < 1.15.4, 2.0.0 ≤ v < 2.0.3, 2.1.0 ≤ v < 2.1.2, 2.2.0 ≤ v < 2.2.1, 2.3.0 ≤ v < 2.3.1 | 1.15.4, 2.0.3, 2.1.2, 2.2.1, 2.3.1 |
| opensuse leap | 15.2 | — |
| tensorflowPyPI | v < 1.15.4, 2.0.0 ≤ v < 2.0.3, 2.1.0 ≤ v < 2.1.2, 2.2.0 ≤ v < 2.2.1, 2.3.0 ≤ v < 2.3.1 | 1.15.4, 2.0.3, 2.1.2, 2.2.1, 2.3.1 |
| tensorflow-cpuPyPI | v < 1.15.4, 2.0.0 ≤ v < 2.0.3, 2.1.0 ≤ v < 2.1.2, 2.2.0 ≤ v < 2.2.1, 2.3.0 ≤ v < 2.3.1 | 1.15.4, 2.0.3, 2.1.2, 2.2.1, 2.3.1 |
| tensorflow-gpuPyPI | v < 1.15.4, 2.0.0 ≤ v < 2.0.3, 2.1.0 ≤ v < 2.1.2, 2.2.0 ≤ v < 2.2.1, 2.3.0 ≤ v < 2.3.1 | 1.15.4, 2.0.3, 2.1.2, 2.2.1, 2.3.1 |
Sürümünüzü kontrol edin
Ürünü seçin ve kullandığınız sürümü yazın; sürümün etkilenen aralıkta olup olmadığını görün.
Attack Surface Management
Alan adlarınıza bağlı varlıkları, bu varlıklarda çalışan teknolojileri ve bilinen zafiyetleri tek listede görün.