HTMX, CSP (Content Security Policy) ile iyi uyumlu değil
(sjoerdlangkemper.nl)- 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-onniteliği,js:/javascript:önekine sahiphx-valsveyahx-headers - Bu özelliklerin çalışabilmesi için uygulamanın, dinamik kod değerlendirmesine izin veren
unsafe-evalCSP seçeneğini kullanması gerekir - Ancak
unsafe-evaletkinleştirildiğinde, HTMX özellikleri kullanılarak JavaScript anında enjekte edilebilir
hx-disable ile HTMX'i devre dışı bırakma
hx-disableniteliğ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.inlineScriptNonceparametresi ü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-disableniteliğinin HTMX işlemesini devre dışı bıraktığından bahsedildi - Ancak yapılandırmada bu niteliğin adı değiştirilebilir
hx-disableyerine başka bir ad ayarlanırsa,hx-disableiş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
Bu yazıya karşı çıkan görüşler ya da güvenli kullanım yöntemleri hakkında bir şeyler de olabilirdi doğrusu...
Htmx 2.0.0 sürümü yayınlandı
htmx - HTML için yüksek güçlü araçlar