PoC, JavaScript yürütmesi için yayınlandı PDF.js’deki güvenlik açığı


PoC, JavaScript yürütmesi için yayınlandı PDF.js'deki güvenlik açığı

Mozilla tarafından yaygın olarak kullanılan, JavaScript tabanlı bir PDF görüntüleyici olan PDF.js’de CVE-2024-4367 adlı kritik bir güvenlik açığı keşfedildi.

Sorun, 126’nın altındaki sürümlere sahip tüm Firefox kullanıcılarını ve PDF önizleme işlevi için PDF.js’yi kullanan çok sayıda web ve Electron tabanlı uygulamayı etkilemektedir.

PDF.js, yerleşik PDF görüntüleyicisi olarak Firefox’a entegre edilmiştir ve aynı zamanda NPM’de yaklaşık 2,7 milyon haftalık indirmeye sahip olan pdfjs-dist adlı bir Node modülü olarak da mevcuttur.

ANYRUN malware sandbox’s 8th Birthday Special Offer: Grab 6 Months of Free Service

Codean Labs, saldırganların kötü amaçlı bir PDF dosyası açıldığında rastgele JavaScript kodu yürütmesine olanak tanıyan bu güvenlik açığını buldu.

Çeşitli web siteleri bu modülü gömülü PDF önizleme işlevi sağlamak için kullanır ve bu güvenlik açığının etkisinin geniş kapsamlı olmasını sağlar.

PDF.js Güvenlik Açığı
PDF.js Güvenlik Açığı

CVE-2024-4367 – Teknik Ayrıntılar ve Kullanım

Güvenlik açığı, PDF.js’nin yazı tipi oluşturma kodundaki bir hatadan kaynaklanmaktadır.

Spesifik olarak, bir JavaScript Function nesnesi kullanılarak her glif için bir yol oluşturucu fonksiyonunun önceden hesaplanmasını içerir.

Bir saldırgan, İşlev gövdesine giden komutları (cmd’ler) kontrol edebiliyorsa, isteğe bağlı kod ekleyip çalıştırabilir.

İşte savunmasız kodun bir kısmı:

// If we can, compile cmds into JS for MAXIMUM SPEED...

if (this.isEvalSupported && FeatureTest.isEvalSupported) {

  const jsBuf = [];

  for (const current of cmds) {

    const args = current.args !== undefined ? current. args.join(","): "";

    jsBuf.push("c.", current.cmd, "(", args, ");\n");

  }

  // eslint-disable-next-line no-new-func

  console.log(jsBuf.join(""));

  return (this.compiledGlyphs[character] = new Function(

    "c",

    "size",

    jsBuf.join("")

  ));

}

Güvenlik açığı, PDF meta verilerinde belirtilebilen fontMatrix dizisinin değiştirilmesiyle tetikleniyor.

Saldırgan, bu diziye bir dize değeri ekleyerek JavaScript sözdizimini bozabilir ve isteğe bağlı kod çalıştırabilir.

Örneğin, aşağıdaki FontMatrix tanımı bir uyarıyı tetikleyebilir:

/FontMatrix [1 2 3 4 5 (0\); alert\('foobar')]

Bu güvenlik açığını azaltmak için PDF.js’nin 4.2.67 veya daha yüksek bir sürüme güncellenmesi önerilir.

Reaksiyon-pdf gibi sarmalayıcı kitaplıkların çoğu yamalı sürümler de yayınladı.

Geliştiriciler, güvenlik açığı bulunan bir sürümü kullanmadıklarından emin olmak için node_modules klasörlerinde pdf.js adlı dosyalar olup olmadığını tekrar tekrar kontrol etmelidir.

Ayrıca, PDF.js ayarı isEvalSupported’ın false olarak ayarlanması, güvenlik açığı bulunan kod yolunu devre dışı bırakabilir.

eval ve İşlev yapıcısının kullanımını devre dışı bırakan sıkı bir içerik güvenliği politikasının uygulanması da güvenlik açığından yararlanılmasını önleyebilir.

Free Webinar on Live API Attack Simulation: Book Your Seat | Start protecting your APIs from hackers



Source link