7 puan yazan xguru 2024-07-05 | 2 yorum | WhatsApp'ta paylaş
  • HTMX, AJAX istekleri üzerinden DOM öğelerini dinamik verilerle değiştirmeyi sağlayan bir JavaScript framework'üdür
  • HTMX, özel niteliklere sahip sıradan HTML etiketlerini kullanarak sayfaya dinamik davranış eklediği için, cross-site scripting (XSS) saldırılarına karşı ek güvenlik sağlamak zordur
  • Genel olarak Content Security Policy (CSP), çalıştırılabilecek JavaScript'i kısıtlamaya yardımcı olabilir
  • Ancak HTMX çalışmaya devam ederken aynı zamanda cross-site scripting'e karşı koruma sağlayan bir CSP yapılandırmak zordur

Kötü amaçlı fragment yükleme

  • HTMX enjeksiyon yöntemlerinden biri, kötü amaçlı bir hosta istek göndermektir
  • HTMX, JavaScript içerebilen HTML fragment'lerini alıp sayfaya yerleştirir
  • Bu, web uygulamasının alan adı dışındaki alan adlarına yönelik istekleri tetikleyerek kötü amaçlı script'lerin yüklenmesinde kullanılabilir

Güvensiz eval

  • HTMX, dinamik olarak kod üretir ve çalıştırır
  • Bunu yapan HTMX özellikleri şunlardır: trigger filter'lar, hx-on niteliği, js:/javascript: önekine sahip hx-vals veya hx-headers
  • Bu özelliklerin çalışabilmesi için uygulamanın, dinamik kod değerlendirmesine izin veren unsafe-eval CSP seçeneğini kullanması gerekir
  • Ancak unsafe-eval etkinleştirildiğinde, HTMX özellikleri kullanılarak JavaScript anında enjekte edilebilir

hx-disable ile HTMX'i devre dışı bırakma

  • hx-disable niteliği kullanılarak sayfanın bazı bölümlerinde HTMX işlevleri devre dışı bırakılabilir
  • Dokümantasyon bunun ek güvenlik sağlayabileceğini iddia eder
  • Ancak bu kolayca aşılabilir: div etiketini `

ile kapatıp,hx-disable` niteliğine sahip öğenin dışına payload enjekte etmek yeterlidir

Inline script'ler için nonce

  • CSP'de nonce kullanmak, script enjeksiyonunu önlemenin en güvenli yoludur
  • Uygulama rastgele bir nonce üretir ve bunu uygulamanın parçası olan tüm script'lere ekler
  • Saldırgan tarafından enjekte edilen script'ler doğru nonce'a sahip olmayacağı için çalıştırılmaz
  • HTMX, aldığı inline script'lere doğru nonce'u otomatik olarak ekleyen bir özelliğe sahiptir
  • Bu kullanışlı olsa da, nonce kullanan CSP'nin güvenlik modelini tamamen bozar
  • HTMX, bulduğu tüm script'lere doğru nonce'u ekleyerek nonce'un sağladığı güvenliği tamamen ortadan kaldırır
  • Nonce'un otomatik eklenmesi htmx.config.inlineScriptNonce parametresi üzerinden yapılır

Yapılandırma meta etiketleri

  • HTMX'te `` etiketi ile yapılandırılabilen çeşitli seçenekler bulunur
  • XSS saldırılarında doğru `` etiketi enjekte edilerek HTMX yapılandırması değiştirilebilir
  • Örneğin yukarıda, hx-disable niteliğinin HTMX işlemesini devre dışı bıraktığından bahsedildi
  • Ancak yapılandırmada bu niteliğin adı değiştirilebilir
  • hx-disable yerine başka bir ad ayarlanırsa, hx-disable işlevi etkisiz hale getirilebilir

Sonuç

  • Bir sitede HTMX kullanılması, HTML enjeksiyonunun saldırı yüzeyini önemli ölçüde artırır
  • Content Security Policy kullanılarak XSS riski sınırlandırılabilir, ancak HTMX'in tüm özellikleri kullanılmaya devam ederken enjeksiyona karşı güvenlik sağlamak imkânsızdır

2 yorum

 
galadbran 2024-07-06

Bu yazıya karşı çıkan görüşler ya da güvenli kullanım yöntemleri hakkında bir şeyler de olabilirdi doğrusu...