flawopen.com/Incidents/wordpress-stored-xss-admin-session-campaign-october-2026
WordPress Stored XSS अभियान: दो प्लगइन, एक स्थायी पहुँच श्रृंखला
Patchstack ने WordPress की दो Stored XSS खामियों के माध्यम से एक ही post-exploitation implant का उपयोग करने के प्रयास देखे। दोनों प्लगइन अपडेट करें और persistence की जाँच करें; अपडेट पहले से compromised साइट को साफ नहीं करता।[1], [2], [3], [4], [5]
दो सार्वजनिक सुझाव-पेटियों की कल्पना करें, जिनकी पर्चियाँ बाद में साइट का व्यवस्थापक खोलता है। यदि साइट पर्ची को साधारण पाठ की जगह चलने योग्य markup के रूप में सहेजती है, तो उसे खोलने पर वह व्यवस्थापक के ब्राउज़र अधिकारों से काम कर सकती है। अभियान रिपोर्ट के अनुसार, दो अलग प्लगइन खामियाँ प्रवेश-बिंदु बनीं और फिर अपडेट के बाद भी पहुँच बनाए रखने के प्रयास हुए।[1], [8], [9]
इस पेज के मुख्य शब्द
Stored XSS- हमलावर के नियंत्रण वाला पाठ सहेजा जाता है और बाद में ब्राउज़र में चलने योग्य markup के रूप में दिखता है। यहाँ WordPress प्रशासनिक स्क्रीन महत्वपूर्ण संदर्भ थी।[2], [3], [8], [9]
Same-origin session- ब्राउज़र उसी origin की requests के साथ साइट का session अपने-आप भेजता है। उस साइट में पहले से चल रहा script HttpOnly cookie पढ़े बिना पेज के माध्यम से कार्रवाई कर सकता है।[1], [17], [18]
Persistence- प्रारंभिक खामी ठीक होने के बाद भी बचा हुआ access, जैसे अनधिकृत खाते या फ़ाइलें। सामान्य अपडेट इन बदलावों को हटाता नहीं है।[1]
CVSS स्कोर का स्रोत- Wordfence CNA रिकॉर्ड दोनों CVE के लिए CVSS 3.1 स्कोर 7.2 देते हैं। WPC Product Bundles पर Patchstack का advisory 7.1 दिखाता है; यह लेख CVE रिकॉर्ड का स्कोर इस्तेमाल करता है और स्रोत स्पष्ट करता है।[2], [3], [6]
स्रोत कोड संदर्भ- Wordfence CNA के संदर्भ WPC Product Bundles और Ninja Forms की version-pinned फ़ाइलों की ओर संकेत करते हैं, जो validation, storage और admin rendering से संबंधित हैं। ये जाँच के लिए स्रोत-संकेत हैं, सत्यापित patch diff नहीं। ऊपर का PHP जोड़ा output-encoding का उदाहरण है, प्लगइन का पुनर्निर्मित code नहीं।[8], [9], [10], [11], [12], [13], [14], [15], [16]
फ्रेमवर्क मैपिंग
- इस गाइड में बताई गई कमजोरी के लिए CWE संदर्भ: CWE-79
- OWASP Top 10:2025 — A05:2025 Injection
घटना का समयक्रम (Timeline)
Patchstack ने उसी post-exploitation चरण वाले प्रयास पहले WPC Product Bundles और फिर Ninja Forms के ज़रिए देखे। Patchstack ने 6 अक्टूबर को विश्लेषण प्रकाशित किया।[1]
हमले का चरण-दर-चरण प्रवाह
सोर्स कोड: कमज़ोर बनाम सुरक्षित कार्यान्वयन
यह सामान्य मॉडल नहीं, बल्कि Ninja Forms के Textarea::admin_form_element() में स्रोत कोड का बदलाव है। संस्करण 3.15.3 सबमिशन के संग्रहीत पाठ को textarea के HTML बॉडी में सीधे जोड़ता था; 3.15.4 आउटपुट से पहले esc_textarea() लागू करता है। इससे इस संदर्भ में सामग्री को मार्कअप के रूप में समझे जाने का रास्ता बंद होता है। यह उदाहरण केवल CVE-2026-94504 के Ninja Forms पथ को दिखाता है; यह CVE-2026-93836 के लिए WPC Product Bundles का पैच नहीं है। अन्य संदर्भों में उपयुक्त escaping का उपयोग करें।[13], [15], [16]
public function admin_form_element( $id, $value )
{
return "<textarea class='widefat' name='fields[$id]'>$value</textarea>";
}public function admin_form_element( $id, $value )
{
return "<textarea class='widefat' name='fields[$id]'>" . esc_textarea( $value ) . "</textarea>";
}इंजीनियरिंग और सिस्टम सुरक्षा चेकलिस्ट
- ✓
CVE-2026-93836के लिए WPC Product Bundles को कम-से-कम 8.6.7 पर अपडेट करें; 11 अक्टूबर 2026 की जाँच में WordPress.org ने 8.7.4 को वर्तमान संस्करण बताया। 8.7.3 changelog में Stored XSS सुरक्षा मज़बूत करने का अलग उल्लेख भी है, पर उसे इस CVE से नहीं जोड़ा गया है; वर्तमान संस्करण लगाएँ।CVE-2026-94504के लिए Ninja Forms को कम-से-कम 3.15.4 पर अपडेट करें; 11 अक्टूबर 2026 की जाँच में WordPress.org ने 3.15.5 को वर्तमान बताया। 3.15.5 changelog में Paragraph Text (Rich Text) submissions के लिए Stored XSS सुरक्षा का एक अलग सुधार है; यह 3.15.4 के CVE fix से अलग है। सभी production साइटों पर दोनों प्लगइन के installed versions जाँचें।[2], [3], [4], [5] - ✓यदि vulnerable संस्करण बाहर से उपलब्ध था, recovery घोषित करने से पहले जाँच करें: database के administrators को dashboard से मिलाएँ और must-use plugins सहित अनपेक्षित plugins देखें।[1]
- ✓Web, WordPress और hosting logs में अनपेक्षित admin actions, plugin installation तथा order या form submission देखने के समय हुए बदलाव खोजें।[1]
- ✓FlawOpen की परिचालन सलाह: विश्वसनीय incident-response प्रक्रिया के तहत अनधिकृत पहुँच हटाएँ; containment के बाद privileged credentials और WordPress authentication salts बदलें और अन्य उपलब्ध secrets की समीक्षा करें।
- ✓FlawOpen की परिचालन सलाह: स्वच्छ backup रखें और सेवा लौटाने से पहले database, plugin files तथा checkout/forms सत्यापित करें; केवल update से persistence हटने की पुष्टि नहीं होती।
स्रोत
- Patchstack — Four ways back in: the WordPress XSS campaign that hides its own admin account (2026-10-06)
- CVE-2026-93836 — CVE record (Wordfence CNA)
- CVE-2026-94504 — CVE record (Wordfence CNA)
- WPC Product Bundles for WooCommerce — WordPress.org changelog
- Ninja Forms — WordPress.org changelog
- Patchstack — WPC Product Bundles advisory
- NCSA Qatar — Cybersecurity advisories (October 7, 2026)
- Wordfence CNA — CVE-2026-93836 vulnerability record
- Wordfence CNA — CVE-2026-94504 vulnerability record
- CVE-2026-93836 — WPC Product Bundles 8.6.5 source pointer: class-woosb.php
- CVE-2026-93836 — WPC Product Bundles 8.6.5 source pointer: class-backend.php
- CVE-2026-94504 — Ninja Forms 3.15.3 source pointer: Submission.php
- CVE-2026-94504 — Ninja Forms 3.15.3 source pointer: Textarea.php
- CVE-2026-94504 — Ninja Forms 3.15.3 source pointer: admin submission template
- Ninja Forms 3.15.3 to 3.15.4 changeset referenced by CVE-2026-94504
- Ninja Forms 3.15.4 स्रोत सुधार — Textarea::admin_form_element()
- MDN — समान-मूल नीति