7 पॉइंट द्वारा xguru 2024-07-05 | 2 टिप्पणियां | WhatsApp पर शेयर करें
  • HTMX एक JavaScript framework है, जो AJAX requests के ज़रिए DOM elements को dynamic data से replace करने देता है
  • HTMX custom attributes वाले सामान्य HTML tags का उपयोग करके page में dynamic behavior जोड़ता है, इसलिए cross-site scripting (XSS) attacks के ख़िलाफ़ अतिरिक्त सुरक्षा देना कठिन हो जाता है
  • सामान्य तौर पर Content Security Policy (CSP) का उपयोग करके चलने वाले JavaScript को सीमित किया जा सकता है
  • ऐसा CSP configure करना मुश्किल है जो HTMX को काम करते रहने दे और साथ ही cross-site scripting से भी सुरक्षा दे

दुर्भावनापूर्ण Fragment लोडिंग

  • HTMX injection का एक तरीका यह है कि किसी malicious host के लिए request कराई जाए
  • HTMX ऐसा HTML fragment fetch करता है जिसमें JavaScript शामिल हो सकता है, और उसे page में रख देता है
  • इसका उपयोग web application के domain के बाहर किसी दूसरे domain पर request trigger करके malicious script लोड करने के लिए किया जा सकता है

असुरक्षित eval

  • HTMX dynamically code generate और execute करता है
  • HTMX की ये features ऐसा करती हैं: trigger filters, hx-on attribute, और js:/javascript: prefix वाले hx-vals या hx-headers
  • इन features के काम करने के लिए application में unsafe-eval CSP option का उपयोग कर dynamic code evaluation की अनुमति देनी पड़ती है
  • लेकिन unsafe-eval की अनुमति देने पर HTMX features का उपयोग करके तुरंत JavaScript inject किया जा सकता है

hx-disable का उपयोग करके HTMX को disable करना

  • hx-disable attribute का उपयोग करके page के किसी हिस्से में HTMX features को disable किया जा सकता है
  • दस्तावेज़ों में दावा किया गया है कि इससे अतिरिक्त सुरक्षा मिल सकती है
  • लेकिन इसे आसानी से bypass किया जा सकता है: `

से div tag बंद करें औरhx-disable` attribute वाले element के बाहर payload inject कर दें

inline scripts के लिए nonce

  • CSP में nonce का उपयोग script injection रोकने का सबसे सुरक्षित तरीका है
  • Application एक random nonce generate करता है और उसे application का हिस्सा होने वाली सभी scripts में जोड़ता है
  • हमलावर द्वारा inject की गई script के पास सही nonce नहीं होगा, इसलिए वह execute नहीं होगी
  • HTMX में fetched inline scripts में सही nonce अपने-आप जोड़ने की एक feature है
  • यह सुविधाजनक है, लेकिन nonce वाले CSP के security model को पूरी तरह तोड़ देता है
  • मिलने वाली हर script में सही nonce जोड़कर HTMX, nonce से मिलने वाली सुरक्षा को पूरी तरह कमज़ोर कर देता है
  • nonce auto-addition htmx.config.inlineScriptNonce parameter के ज़रिए की जाती है

configuration meta tag

  • HTMX में कई configuration options हैं जिन्हें `` tag का उपयोग करके configure किया जा सकता है
  • XSS attack में सही `` tag inject करके HTMX की configuration बदली जा सकती है
  • उदाहरण के लिए, ऊपर बताया गया कि hx-disable attribute HTMX processing को disable करता है
  • लेकिन configuration में उस attribute का नाम बदला जा सकता है
  • hx-disable की जगह कुछ और सेट करके hx-disable feature को disable किया जा सकता है

निष्कर्ष

  • किसी site में HTMX का उपयोग करने से HTML injection की attack surface काफ़ी बढ़ जाती है
  • Content Security Policy का उपयोग करके XSS risk को सीमित किया जा सकता है, लेकिन HTMX की सभी features का उपयोग करते हुए injection के ख़िलाफ़ सुरक्षा देना संभव नहीं है

2 टिप्पणियां

 
galadbran 2024-07-06

लगता है इस लेख पर कोई खंडन या इसे सुरक्षित तरीके से इस्तेमाल करने के बारे में भी बात होनी चाहिए थी...