
Wazuh क्लस्टर कमजोरियों CVE-2026-25769 और CVE-2026-25770 के लिए प्रूफ-ऑफ-कॉन्सेप्ट एक्सप्लॉइट्स, जो असुरक्षित डिसीरियलाइज़ेशन और फ़ाइल ओवरराइट के माध्यम से रिमोट कोड एक्ज़ीक्यूशन और प्रिविलेज एस्केलेशन प्रदर्शित करते हैं।
चेतावनी: इस रिपॉजिटरी में सुरक्षा कमजोरियों से संबंधित जानकारी और कोड शामिल है। इसका उपयोग केवल शैक्षिक उद्देश्यों या अधिकृत वातावरण में करें।
Wazuh क्लस्टर कॉन्फ़िगरेशन (संस्करण ≥ 4.0.0) में दो गंभीर कमजोरियाँ पाई गई हैं। ये दोष उन डिप्लॉयमेंट्स को प्रभावित करते हैं जो क्षैतिज स्केलेबिलिटी, लोड बैलेंसिंग और उच्च उपलब्धता के लिए कई नोड्स का उपयोग करते हैं। यह कॉन्फ़िगरेशन Wazuh सर्वर पर प्रभाव डाले बिना कई एजेंटों के प्रबंधन की अनुमति देता है।
CVE-2026-25769
DAPi अनुरोध के माध्यम से master और worker के बीच संचार की अनुमति देता है। Worker LocalClient मॉड्यूल का उपयोग करके एक ऑब्जेक्ट भेजता है; master संदेश स्वीकार करता है और कमजोर फ़ंक्शन as_wazuh_object() के साथ ऑब्जेक्ट को deserialize करता है, जिससे master पर कमांड निष्पादित करना संभव हो जाता है।
CVE-2026-25770
यह कमजोरी पिछली कमजोरी की पूरक है, जो <command> और <localfile> टैग का उपयोग करके कमांड निष्पादन की अनुमति देती है। एक हमलावर हर बार /var/ossec/etc/ossec.conf कॉन्फ़िगरेशन फ़ाइल लोड होने पर कमांड निष्पादित कर सकता है।
दोनों क्लस्टर कार्यक्षमता का उपयोग करने वाले वातावरणों में [सामान्य प्रभाव: विशेषाधिकार वृद्धि, दूरस्थ निष्पादन, आदि] की अनुमति देते हैं।
Wazuh manager ≥ 4.0.0 (पैच किए गए संस्करण X.Y.Z तक)
सभी नोड्स जिनकी भूमिका master या worker है और जिनमें नोड्स के बीच संचार सक्षम है।
क्लस्टर कॉन्फ़िगरेशन का उपयोग बड़ी संख्या में एजेंटों वाले डिप्लॉयमेंट्स में किया जाता है। यह अनुमति देता है:
क्षैतिज स्केलिंग: लोड वितरित करने के लिए अधिक worker नोड्स जोड़ना।
उच्च उपलब्धता: यदि कोई worker नोड विफल हो जाता है, तो नोड बहाल होने तक अन्य कार्य करते रहते हैं।
लोड बैलेंसिंग: एजेंट workers के बीच वितरित किए जाते हैं।
यह आर्किटेक्चर, यदि ठीक से सुरक्षित नहीं है, तो यहाँ दस्तावेज़ित किए गए हमले के वेक्टरों को उजागर कर सकता है।
Master इस फ़ंक्शन को कॉल करता है, जो subprocess बनाने की अनुमति देता है जो मनमाने ढंग से कमांड निष्पादित करता है।
def as_wazuh_object(dct: Dict):
try:
if '__callable__' in dct:
encoded_callable = dct['__callable__']
funcname = encoded_callable['__name__'] #getoutput
if '__wazuh__' in encoded_callable:
# Encoded Wazuh instance method.
wazuh = Wazuh()
return getattr(wazuh, funcname)
else:
# Encoded function or static method.
qualname = encoded_callable['__qualname__'].split('.') # getoutput
classname = qualname[0] if len(qualname) > 1 else None
module_path = encoded_callable['__module__'] # subprocess
module = import_module(module_path) # ARBITRARY IMPORT
if classname is None:
return getattr(module, funcname) # RETURNS ARBITRARY FUNCTION
else:
return getattr(getattr(module, classname), funcname)
Wazuh क्लस्टर प्रोटोकॉल (TCP/1516) प्रक्रिया का उपयोग करके नोड्स के बीच फ़ाइलों को सिंक्रनाइज़ करता है। यह प्रक्रिया एक गैर-विशेषाधिकार प्राप्त उपयोगकर्ता के रूप में चलती है, सापेक्ष पते स्वीकार करती है।
"""Create a file descriptor to store the incoming file.
Parameters
----------
data : bytes
Relative path to the file.
Returns
-------
bytes
Result.
bytes
Response message.
"""
# VULNERABLE LINE: No validation of 'data', no checking for '../', direct file open.
self.in_file[data] = {'fd': open(common.WAZUH_PATH + data.decode(), 'wb'), 'checksum': hashlib.sha256()}
return b"ok ", b"Ready to receive new file"
इस कॉन्फ़िगरेशन का उपयोग करके, एक हमलावर कॉन्फ़िगरेशन निर्देशिका को अधिलेखित कर सकता है और कमांड निष्पादित कर सकता है।
एक हमलावर यह कर सकता है:
गोपनीयता, अखंडता, उपलब्धता, विशेषाधिकार वृद्धि को प्रभावित करना।
निगरानी की गई संपूर्ण बुनियादी ढांचे की अखंडता से समझौता करना।
मूल PoCs vikman90 द्वारा विकसित किए गए थे और इस विश्लेषण के आधार के रूप में कार्य किए। नीचे शोषण का एक उदाहरण दिखाया गया है:
# 1. init docker compose
docker compose up -d
# 2. wait init all clusters
# 3. Verify cluster is connected
docker exec poc-master /var/ossec/bin/cluster_control -l
# Expected output should show worker01 connected:
# worker01 172.28.0.11 active
# 4. Execute exploit from worker
docker exec poc-worker /var/ossec/framework/python/bin/python3 /scripts/poc.py
# 5. Verify RCE on master
docker exec poc-master cat /var/ossec/etc/ossec.conf