हांगकांग सुरक्षा सलाह पत्रिका Sheets2Table XSS(CVE20263619)

वर्डप्रेस Sheets2Table प्लगइन में क्रॉस साइट स्क्रिप्टिंग (XSS)
प्लगइन का नाम Sheets2Table
कमजोरियों का प्रकार क्रॉस-साइट स्क्रिप्टिंग (XSS)
CVE संख्या CVE-2026-3619
तात्कालिकता कम
CVE प्रकाशन तिथि 2026-03-23
स्रोत URL CVE-2026-3619

Sheets2Table (≤ 0.4.1) — प्रमाणित योगदानकर्ता स्टोर किया गया XSS (CVE-2026-3619): वर्डप्रेस साइट के मालिकों को क्या जानना चाहिए

द्वारा: हांगकांग सुरक्षा विशेषज्ञ • 2026-03-23

TL;DR

एक स्टोर किया गया क्रॉस-साइट स्क्रिप्टिंग (XSS) सुरक्षा दोष (CVE-2026-3619) Sheets2Table वर्डप्रेस प्लगइन के संस्करणों को 0.4.1 तक और शामिल करता है। एक प्रमाणित उपयोगकर्ता जिसके पास योगदानकर्ता विशेषाधिकार हैं, वह JavaScript को शीर्षकों शॉर्टकोड विशेषता के माध्यम से इंजेक्ट कर सकता है। जब प्रभावित शॉर्टकोड फ्रंटएंड पर प्रस्तुत किया जाता है, तो दुर्भावनापूर्ण स्क्रिप्ट आगंतुकों के ब्राउज़रों के संदर्भ में निष्पादित होती है — संभावित रूप से संपादकों, प्रशासकों, या साइट के आगंतुकों को शामिल करते हुए — सत्र चोरी, फ़िशिंग, सामग्री इंजेक्शन, या अन्य दुर्भावनापूर्ण कोड की स्थिरता को सक्षम बनाते हुए।.

यह पोस्ट स्पष्ट भाषा में सुरक्षा दोष को समझाती है, वास्तविक खतरे के परिदृश्यों को रेखांकित करती है, और चरण-दर-चरण शमन और सुधार मार्गदर्शन प्रदान करती है जिसे आप तुरंत लागू कर सकते हैं — जिसमें सर्वर-साइड हार्डनिंग और WAFs के लिए सामान्य वर्चुअल पैचिंग सिफारिशें शामिल हैं।.

पृष्ठभूमि — क्या हुआ

  • सॉफ़्टवेयर: Sheets2Table वर्डप्रेस प्लगइन
  • कमजोर संस्करण: ≤ 0.4.1
  • भेद्यता: संग्रहीत क्रॉस-साइट स्क्रिप्टिंग (XSS) के माध्यम से शीर्षकों शॉर्टकोड विशेषता
  • इंजेक्ट करने के लिए आवश्यक विशेषाधिकार: योगदानकर्ता (प्रमाणित)
  • CVSS (जैसा प्रकाशित): 6.5 (मध्यम)
  • शोषण: स्टोर किया गया XSS — पेलोड स्टोर किया जाता है और जब प्रभावित शॉर्टकोड प्रस्तुत किया जाता है तो निष्पादित होता है
  • उपयोगकर्ता इंटरैक्शन: आवश्यक (एक विशेषाधिकार प्राप्त उपयोगकर्ता को पृष्ठ को देखना या एक क्रिया करना आवश्यक है जो स्टोर किए गए पेलोड को ट्रिगर करता है)

योगदानकर्ता संपादकों या प्रशासकों की तुलना में कम विशेषाधिकार प्राप्त होते हैं, लेकिन कई संपादकीय कार्यप्रवाह योगदानकर्ता इनपुट को उच्च विशेषाधिकार प्राप्त उपयोगकर्ताओं द्वारा देखा जाने की अनुमति देते हैं — यही कारण है कि स्टोर किया गया XSS हमलावरों के लिए उपयोगी है।.

यह क्यों महत्वपूर्ण है — खतरे के परिदृश्य

स्टोर किया गया XSS एक स्थायी और शक्तिशाली वेक्टर है। एक योगदानकर्ता-स्तरीय हमलावर एक शॉर्टकोड विशेषता में एक पेलोड रख सकता है जो बाद में किसी भी व्यक्ति के ब्राउज़र में निष्पादित होता है जो पृष्ठ को देख रहा है — जिसमें प्रशासक और संपादक शामिल हैं। सामान्य शोषण परिणामों में शामिल हैं:

  • सत्र कुकी या प्रमाणीकरण टोकन चोरी (जिससे खाता अधिग्रहण होता है)।.
  • यदि शोषण एक प्रमाणित प्रशासक संदर्भ के भीतर ट्रिगर होता है तो प्रशासन UI में अनधिकृत क्रियाएँ।.
  • धोखाधड़ी वाले फॉर्म या HTML/JS का उपयोग क्रेडेंशियल या भुगतान विवरण एकत्र करने के लिए।.
  • SEO स्पैम, छिपे हुए लिंक, या मैलवेयर/फिशिंग पृष्ठों के लिए रीडायरेक्ट।.
  • बीकन का उपयोग करके दूसरे चरण के बैकडोर का वितरण या साइट विवरण का एक्सफिल्ट्रेशन।.

यहां तक कि जब सलाहकार किसी मामले को “कम” या “मध्यम” लेबल करते हैं, तो संग्रहीत XSS त्वरित ध्यान की मांग करता है क्योंकि यह अधिक गंभीर समझौतों में श्रृंखला बना सकता है।.

भेद्यता कैसे काम करती है (उच्च स्तर, गैर-शोषणकारी)

  1. प्लगइन एक शॉर्टकोड को उजागर करता है जैसे कि [sheets2table titles="..."] जो एक स्वीकार करता है शीर्षकों 2. पोस्ट डेटाबेस में सहेजी जाती है (बाद में एक संपादक द्वारा प्रकाशित या ड्राफ्ट पूर्वावलोकन में दिखाई देती है)।.
  2. इनपुट जो शीर्षकों विशेषता में आउटपुट पर अपर्याप्त रूप से साफ किया गया है और इसे पोस्ट सामग्री या मेटा के हिस्से के रूप में डेटाबेस में संग्रहीत किया जा सकता है।.
  3. जब पृष्ठ प्रस्तुत किया जाता है, तो प्लगइन विशेषता मान को DOM में उचित एस्केपिंग या फ़िल्टरिंग के बिना आउटपुट करता है, जिससे एम्बेडेड स्क्रिप्ट या इवेंट हैंडलर्स (जैसे, <img onerror="...">, ">, या जावास्क्रिप्ट: URI) निष्पादित हो सकते हैं।.
  4. क्योंकि पेलोड संग्रहीत है, इसलिए यह दृश्य के बीच बना रहता है जब तक कि संग्रहीत सामग्री को साफ नहीं किया जाता।.

यहां कोई प्रमाण-का-धारणा प्रदान नहीं की गई है। जिम्मेदार प्रकटीकरण और सुधार प्राथमिकताएँ हैं। निम्नलिखित अनुभाग पहचान, तात्कालिक निवारण और दीर्घकालिक सुधार पर चर्चा करते हैं।.

किसे जोखिम है?

यदि निम्नलिखित तीनों आपके साइट पर लागू होते हैं तो जोखिम मानें:

  1. आपकी साइट Sheets2Table संस्करण 0.4.1 या उससे पहले चलाती है।.
  2. आप योगदानकर्ता (या उच्च) खातों को सामग्री बनाने की अनुमति देते हैं जिसमें शॉर्टकोड शामिल हो सकते हैं।.
  3. आपके पास ऐसे पृष्ठ या पोस्ट हैं जो Sheets2Table शॉर्टकोड को शामिल करते हैं शीर्षकों 2. पोस्ट डेटाबेस में सहेजी जाती है (बाद में एक संपादक द्वारा प्रकाशित या ड्राफ्ट पूर्वावलोकन में दिखाई देती है)।.

यदि कोई भी स्थिति सत्य है, तो तुरंत कार्रवाई करें। यहां तक कि यदि योगदानकर्ता सीधे प्रकाशित नहीं कर सकते, तो संग्रहीत पेलोड अभी भी सामग्री समीक्षकों द्वारा देखे जा सकते हैं और निष्पादित हो सकते हैं।.

तत्काल कार्रवाई (अभी क्या करें)

  1. परिवर्तन करने से पहले अपनी साइट (फाइलें और डेटाबेस) का बैकअप लें।.
  2. जब तक एक सुरक्षित अपडेट उपलब्ध न हो, तब तक Sheets2Table प्लगइन को अक्षम या निष्क्रिय करें। यदि आप इसे निष्क्रिय नहीं कर सकते हैं, तो शॉर्टकोड को प्रस्तुत करने वाले पृष्ठों को हटा दें या निष्क्रिय करें।.
  3. उपयोगकर्ता भूमिकाओं को प्रतिबंधित या अस्थायी रूप से बदलें: हाल की सामग्री की समीक्षा करने तक संदिग्ध योगदानकर्ता खातों को निलंबित या पदावनत करें।.
  4. संग्रहीत पेलोड्स के लिए स्कैन करें और उन्हें साफ करें (नीचे “डेटाबेस सफाई और फोरेंसिक पहचान” देखें)।.
  5. यदि आपके पास वेब एप्लिकेशन फ़ायरवॉल उपलब्ध है तो WAF आभासी पैचिंग लागू करें (नीचे मार्गदर्शन)।.
  6. यदि आपको शोषण के सबूत मिलते हैं तो प्रशासकों और संपादकों के लिए पासवर्ड रीसेट करने के लिए मजबूर करें।.
  7. सभी विशेषाधिकार प्राप्त खातों के लिए दो-कारक प्रमाणीकरण (2FA) सक्षम करें या आवश्यक करें।.

WAF और आभासी पैचिंग मार्गदर्शन (सामान्य)

यदि आप एक वेब एप्लिकेशन फ़ायरवॉल (WAF) संचालित करते हैं, तो आप सामान्य शोषण पैटर्न को अवरुद्ध करने के लिए अस्थायी नियम लागू कर सकते हैं जबकि आप सफाई करते हैं। नीचे दिए गए नियमों का उपयोग प्रारंभिक बिंदु के रूप में करें और लागू करने से पहले पहचान/लॉग मोड में परीक्षण करें।.

शोषण को अवरुद्ध करने के लिए अनुशंसित नियम पैटर्न शीर्षकों विशेषता:

  • REST या प्रशासनिक अंत बिंदुओं पर POST/PUT अनुरोधों को अवरुद्ध करें जो शामिल करते हैं शीर्षकों संदिग्ध पेलोड्स के साथ पैरामीटर (जैसे कि स्ट्रिंग्स जैसे 9. या विशेषताओं जैसे onload=, त्रुटि होने पर=, 11. साइट मालिकों के लिए तात्कालिक कदम, जावास्क्रिप्ट:, दस्तावेज़.कुकी, eval(, window.location).
  • उन GET अनुरोधों को अवरुद्ध या चिह्नित करें जो पृष्ठों को प्रस्तुत करते हैं जहां HTML में शामिल हैं 9. या विशेषताओं जैसे onload= शॉर्टकोड संदर्भों में टुकड़े।.
  • उन अनुरोधों को अस्वीकार करें जो संदिग्ध base64-कोडित पेलोड्स या ज्ञात अस्पष्टता पैटर्न शामिल करते हैं।.

उदाहरण ModSecurity-शैली का हस्ताक्षर (चित्रणात्मक - अपने WAF सिंटैक्स के अनुसार अनुकूलित करें और पहले परीक्षण करें):

SecRule ARGS_NAMES|ARGS "@rx (?i)(शीर्षक).*(

Notes:

  • Test any rule in log/detect mode to avoid false positives.
  • Refine rules to target untrusted users or public requests if possible; avoid breaking legitimate admin workflows.
  • WAF rules are temporary mitigations — they do not replace proper code fixes and content cleanup.

Short-term developer mitigations (apply now)

If you are a developer and cannot wait for a plugin update, add a server-side filter that sanitizes the titles attribute when shortcode attributes are parsed. Use WordPress APIs such as wp_kses, esc_attr, and sanitize_text_field, and prefer a whitelist where feasible.

Example safe filter for the sheets2table shortcode (place in an mu-plugin or your theme's functions.php; mu-plugin preferred):

<?php
/**
 * Emergency mitigation: sanitize sheets2table shortcode titles attribute.
 * Create as mu-plugin (wp-content/mu-plugins/sheets2table-sanitize.php)
 */

add_filter('shortcode_atts_sheets2table', function($out, $pairs, $atts, $shortcode){
    if ( isset($out['titles']) ) {
        // Remove any HTML tags and decode common entities.
        $clean = wp_kses( $out['titles'], array() ); // strips all tags
        $clean = trim( sanitize_text_field( html_entity_decode( $clean, ENT_QUOTES | ENT_HTML5 ) ) );
        // Limit length to reduce potential encoding abuse
        $out['titles'] = mb_substr( $clean, 0, 1024 );
    }
    return $out;
}, 10, 4);

Notes:

  • Adjust the filter name if the shortcode differs — pattern is shortcode_atts_{$shortcode}.
  • Sanitizing attributes at parse time helps neutralize stored payloads upon rendering.
  • Also ensure admin/editor previews and any front-end rendering escape output appropriately.

Database cleanup and forensic detection

If you suspect exploitation, search the database for suspicious patterns associated with the titles attribute or shortcodes. Always run these commands on a backed-up copy of your database.

Search for <script> or event handlers inside content fields. WP-CLI examples (adjust quoting for your shell):

# Find posts containing 'sheets2table' shortcode
wp post list --post_type=post,page --format=ids --field=ID --post_status=any | \
xargs -n 50 -I % bash -c "wp post get % --field=post_content | grep -i 'sheets2table' && echo '--- post % ---'"

# Search DB for occurrences of