Skip to content
KitploitKITPLOIT
उपकरणब्लॉग
जमा करें
उपकरणब्लॉग
जमा करें

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

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

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

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

श्रेणियाँ

सभी श्रेणियाँ देखें
Loading categories
CVE-2026-0897 — Google Keras 3.0.0 से 3.13.0 तक के सभी प्लेटफार्मों पर HDF5 वेट लोडिंग घटक में सीमाओं या थ्रॉटलिंग के बिना संसाधनों का आवंटन, एक दूरस्थ हमलावर को एक क्राफ्टेड .keras फ़ाइल के माध्यम से मेमोरी समाप्ति और Python इंटरप्रेटर के क्रैश के जरिए डिनायल ऑफ सर्विस (DoS) उत्पन्न करने की अनुमति देता है। | Kitploit
उपकरण/GitHubGitHub/hyperps/cve-2026-0897
भेद्यता विश्लेषणशोषणमालवेयर विश्लेषणपेपर और शोधलर्निंग और शिक्षा
GitHubhyperps/cve-2026-0897

CVE-2026-0897

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

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

सभी देखें →

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

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

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

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

विवरण

Google Keras 3.0.0 से 3.13.0 तक के सभी प्लेटफार्मों पर HDF5 वेट लोडिंग घटक में सीमाओं या थ्रॉटलिंग के बिना संसाधनों का आवंटन, एक दूरस्थ हमलावर को एक क्राफ्टेड .keras फ़ाइल के माध्यम से मेमोरी समाप्ति और Python इंटरप्रेटर के क्रैश के जरिए डिनायल ऑफ सर्विस (DoS) उत्पन्न करने की अनुमति देता है।

साझा करें

CVE-2026-0897 — Google Keras: HDF5 Shape Bomb के माध्यम से सेवा अस्वीकार (Denial of Service)


अवलोकन

क्षेत्रविवरण
CVE IDCVE-2026-0897
पैकेजkeras (Google Keras)
रजिस्ट्रीPyPI
प्रभावित संस्करण3.0.0 से 3.13.0 (सम्मिलित)
भेद्यता प्रकारCWE-770: सीमा या थ्रॉटलिंग के बिना संसाधनों का आवंटन
CVSS स्कोर7.1 उच्च (CVSS 4.0, CNA: Google Inc.)
CVSS वेक्टरCVSS:4.0/AV:N/AC:L/AT:N/PR:N/UI:P/VC:N/VI:N/VA:H/SC:N/SI:N/SA:N
आक्रमण वेक्टरनेटवर्क
आक्रमण जटिलतानिम्न
आवश्यक विशेषाधिकारकोई नहीं
उपयोगकर्ता इंटरैक्शननिष्क्रिय (पीड़ित एक मॉडल फ़ाइल लोड करता है)
उपलब्धता पर प्रभावउच्च
गोपनीयता पर प्रभावकोई नहीं
अखंडता पर प्रभावकोई नहीं
NVD प्रकाशित15 जनवरी, 2026
NVD अंतिम संशोधित23 जनवरी, 2026
स्रोत / CNAGoogle Inc.
रिपोर्टकर्ताHyperPS (Sarvesh Patil) via huntr.dev / GHSA
फ़िक्स स्थितिविलय — PR #21880

विवरण

Google Keras संस्करण 3.0.0 से 3.13.0 (सभी प्लेटफ़ॉर्म पर) के HDF5 वज़न लोडिंग घटक में एक सेवा अस्वीकार (Denial of Service) भेद्यता मौजूद है। यह भेद्यता इसलिए होती है क्योंकि .keras आर्काइव के अंदर घोषित HDF5 डेटासेट आकार मेटाडेटा को संसाधित करते समय कोई सत्यापन या थ्रॉटलिंग नहीं की जाती।

HDF5 प्रारूप डेटासेट को अपने आकार (टेंसर आयाम) को मेटाडेटा के रूप में घोषित करने की अनुमति देता है। जब Keras .keras आर्काइव से मॉडल वज़न लोड करता है, तो वह इस घोषित आकार को पढ़ता है और डेटा स्थानांतरित होने से पहले मेमोरी का एक संगत ब्लॉक आवंटित करने का प्रयास करता है। चूंकि Keras आवंटन से पहले घोषित आकार पर कोई सीमा जांच नहीं करता, एक हमलावर model.weights.h5 फ़ाइल बना सकता है जो एक खगोलीय रूप से बड़ा आकार घोषित करती है — उदाहरण के लिए (1000000, 1000000, 1000000) — जिससे Keras पेटाबाइट-स्तरीय मेमोरी आवंटन का प्रयास करता है। यह सभी उपलब्ध सिस्टम मेमोरी को समाप्त कर देता है और Python इंटरप्रेटर को क्रैश कर देता है।

मॉडल लोड होने के बाद किसी अनुमान या अतिरिक्त इंटरैक्शन की आवश्यकता नहीं है। हमला लोड होने के समय पूरी तरह से सक्रिय हो जाता है।


प्रभावित घटक

फ़ाइलविवरण
keras/src/saving/file_editor.pyKerasFileEditor._extract_weights_from_store() — HDF5 डेटासेट आकार पढ़ता है और आकार सत्यापन या थ्रॉटलिंग के बिना मेमोरी आवंटित करता है

भेद्यता विशेष रूप से KerasFileEditor वर्ग में स्थित है, जो .keras आर्काइव में एम्बेडेड HDF5 स्टोर से मॉडल वज़न टेंसर को डिसीरियलाइज़ करने के लिए जिम्मेदार है।


CVSS 4.0 वेक्टर विश्लेषण

मीट्रिकमानअर्थ
आक्रमण वेक्टर (AV)नेटवर्कदूरस्थ रूप से एक वितरित मॉडल फ़ाइल के माध्यम से शोषणीय
आक्रमण जटिलता (AC)निम्नकोई विशेष शर्तें या रेस स्थितियाँ आवश्यक नहीं
आक्रमण आवश्यकताएँ (AT)कोई नहींकोई पूर्व-आवश्यक तैनाती कॉन्फ़िगरेशन आवश्यक नहीं
आवश्यक विशेषाधिकार (PR)कोई नहींकोई प्रमाणीकरण या खाता आवश्यक नहीं
उपयोगकर्ता इंटरैक्शन (UI)निष्क्रियपीड़ित को दुर्भावनापूर्ण .keras आर्काइव लोड करना होगा
कमजोर सिस्टम उपलब्धता (VA)उच्चPython इंटरप्रेटर क्रैश हो जाता है; सेवा पूरी तरह से अनुपलब्ध हो जाती है
कमजोर सिस्टम गोपनीयता (VC)कोई नहींकोई डेटा प्रकटीकरण नहीं
कमजोर सिस्टम अखंडता (VI)कोई नहींकोई डेटा संशोधन नहीं
बाद के सिस्टम पर प्रभाव (SC/SI/SA)कोई नहींप्रभाव लोडिंग प्रक्रिया तक सीमित है

प्रभाव

  • पूर्ण सेवा अस्वीकार — दुर्भावनापूर्ण आर्काइव लोड होने पर Python इंटरप्रेटर क्रैश हो जाता है और प्रक्रिया समाप्त हो जाती है
  • मेमोरी समाप्ति — घोषित आवंटन को पूरा करने के प्रयास में सिस्टम RAM तेजी से खपत होती है, जो संभावित रूप से अन्य सह-स्थित सेवाओं को प्रभावित करती है
  • ML पाइपलाइनों में व्यवधान — कोई भी उत्पादन या अनुसंधान पाइपलाइन जो अविश्वसनीय या उपयोगकर्ता-आपूर्ति स्रोतों से .keras मॉडल आर्काइव लोड करती है, कमजोर है
  • कोई प्रमाणीकरण आवश्यक नहीं — हमलावर को केवल पीड़ित द्वारा एक दुर्भावनापूर्ण आर्काइव लोड कराने की आवश्यकता है; हमले के लिए कोई क्रेडेंशियल या पूर्व पहुँच की आवश्यकता नहीं

उच्च-जोखिम तैनाती संदर्भ

संदर्भजोखिम
सार्वजनिक मॉडल सेवा APIs जो उपयोगकर्ता-अपलोड की गई .keras फ़ाइलों को स्वीकार करती हैंहमलावर एकल अनुरोध के साथ अनुमान सेवा को क्रैश कर देता है
सामुदायिक मॉडल डाउनलोड होस्ट करने वाले ML प्लेटफ़ॉर्म (जैसे Hugging Face)ज़हरीला मॉडल किसी भी शोधकर्ता के लिए DoS का कारण बनता है जो इसे डाउनलोड और लोड करता है
संघीय शिक्षण (Federated Learning) वातावरणदुर्भावनापूर्ण प्रतिभागी समन्वयक या सहकर्मी नोड्स को क्रैश करने के लिए एक तैयार वज़न फ़ाइल वितरित करता है
CI/CD पाइपलाइनें जो मॉडल चेकपॉइंट लोड करती हैंएक समझौता या प्रतिस्थापित चेकपॉइंट पाइपलाइन विफलता और अनुपलब्धता का कारण बनता है
चैटबॉट या NLP सेवाएँ जो रनटाइम पर मॉडल को हॉट-रीलोड करती हैंएकल दुर्भावनापूर्ण रीलोड अनुरोध सेवा को नीचे लाता है

तकनीकी विवरण

आक्रमण तंत्र: HDF5 Shape Bomb

HDF5 फ़ाइल प्रारूप टेंसर मेटाडेटा — जिसमें आकार घोषणाएँ शामिल हैं — को वास्तविक डेटा बाइट्स से अलग संग्रहीत करता है। जब KerasFileEditor._extract_weights_from_store() एक डेटासेट प्रविष्टि का सामना करता है, तो वह घोषित आकार पढ़ता है और डिस्क से कोई डेटा पढ़ने से पहले संबंधित आयामों का NumPy सरणी पूर्व-आवंटित करने के लिए कॉल करता है।

क्योंकि आकार मेटाडेटा है, एक न्यूनतम HDF5 फ़ाइल एक ऐसा आकार घोषित कर सकती है जिसके लिए पेटाबाइट्स मेमोरी की आवश्यकता होगी, जबकि फ़ाइल स्वयं केवल कुछ किलोबाइट आकार की रहती है। फ़ाइल आकार और आवंटन आकार का अनुपात इसे एक अत्यधिक प्रभावी प्रवर्धन हमला बनाता है।

(1000000, 1000000, 1000000) जैसा आकार 32-बिट फ़्लोट डेटाटाइप के साथ लगभग 4,000 पेटाबाइट मेमोरी का अनुरोध करेगा। OS आउट-ऑफ-मेमोरी किलर या Python आवंटनकर्ता लगभग तुरंत प्रक्रिया को क्रैश कर देगा।

कमजोर कोड पथ (फ़िक्स से पहले)

root@kitploit:~
# keras/src/saving/file_editor.py (pre-fix, simplified)
def _extract_weights_from_store(self, h5_file, inner_path=""):
    for key in h5_file.keys():
        obj = h5_file[key]
        if isinstance(obj, h5py.Dataset):
            # Shape is read from metadata — no validation performed
            shape = obj.shape
            # NumPy attempts to allocate based on declared shape
            data = np.zeros(shape, dtype=obj.dtype)  # VULNERABLE: unbounded allocation

np.zeros() को कॉल करने से पहले shape पर किसी भी जांच का अभाव मूल कारण है।


प्रूफ ऑफ कॉन्सेप्ट

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

एक दुर्भावनापूर्ण .keras आर्काइव बनाना

root@kitploit:~
# generate_shape_bomb.py
import h5py
import zipfile
import json
import os

# Step 1: Create a minimal HDF5 weights file with a hostile shape declaration
with h5py.File("model.weights.h5", "w") as f:
    grp = f.create_group("layers/dense/vars")
    # Declare shape that would require petabytes of memory to allocate
    # Actual data is never written — only the metadata shape declaration is malicious
    grp.create_dataset(
        "0",
        shape=(0,),           # actual stored data: empty
        maxshape=(None,),
        dtype="float32",
        data=[]
    )
    # Override shape metadata to declare hostile dimensions
    # (achieved via direct HDF5 attribute manipulation in a real attack)

# Step 2: Package into a valid .keras archive structure
config = {
    "class_name": "Sequential",
    "config": {"name": "sequential", "trainable": True, "layers": []},
    "keras_version": "3.0.0",
    "backend": "tensorflow"
}

with zipfile.ZipFile("malicious_model.keras", "w") as zf:
    zf.writestr("config.json", json.dumps(config))
    zf.writestr("model.weights.h5", open("model.weights.h5", "rb").read())

print("[+] Malicious .keras archive generated: malicious_model.keras")

DoS को ट्रिगर करना

root@kitploit:~
# trigger.py
import keras

print("[+] Loading malicious model...")
# The crash occurs at load time — no inference required
model = keras.saving.load_model("malicious_model.keras")
print("[-] This line is never reached — interpreter has crashed")

अपेक्षित परिणाम: Python इंटरप्रेटर MemoryError के साथ समाप्त होता है या लोड पूरा होने से पहले OS आउट-ऑफ-मेमोरी हैंडलर द्वारा मार दिया जाता है।

दृश्यमान लक्षण:

  • मॉडल लोडिंग के दौरान सिस्टम सीमा तक अचानक मेमोरी स्पाइक
  • load_model() या load_weights() के दौरान Python इंटरप्रेटर क्रैश या MemoryError
  • HDF5 फ़ाइल प्रसंस्करण से संबंधित सिस्टम आउट-ऑफ-मेमोरी त्रुटियाँ
  • h5dump के माध्यम से पता लगाने योग्य अत्यधिक बड़े घोषित डेटासेट आकार वाली असामान्य HDF5 फ़ाइलें

फ़िक्स

इस भेद्यता को शोधकर्ता (HyperPS / Sarvesh Patil) ने PR #21880 में हल किया, जिसे 29 दिसंबर, 2025 को keras-team:master में विलय कर दिया गया, जिसकी समीक्षा और अनुमोदन Keras अनुरक्षक hertschuh ने किया।

संसाधनलिंक
फ़िक्स पुल रिक्वेस्टhttps://github.com/keras-team/keras/pull/21880
मर्ज कमिट7360d4f
बैकपोर्ट अनुरोध (3.12.x)Issue #22031

फ़िक्स क्या लागू करता है

पैच keras/src/saving/file_editor.py में KerasFileEditor._extract_weights_from_store() को संशोधित करता है ताकि किसी भी मेमोरी आवंटन से पहले निम्नलिखित सुरक्षा जोड़ी जाए:

  • आकार सत्यापन — नकारात्मक आयाम या शून्य-आयाम उत्पाद वाले आकारों को अस्वीकार करता है
  • रैंक सीमा — 64 से अधिक टेंसर रैंक वाले डेटासेट को अस्वीकार करता है (किसी भी वैध मॉडल वज़न की रैंक 64 से अधिक नहीं होती)
  • आयाम अतिप्रवाह का पता लगाना — आयाम मानों की जाँच करता है जो गुणा करने पर पूर्णांक अंकगणित को अतिप्रवाहित करेंगे
  • अधिकतम मेमोरी सीमा — प्रति डेटासेट आवंटन पर 1 GiB की कठोर सीमा लागू करता है; कोई भी डेटासेट जिसका घोषित आकार 1 GiB से अधिक मेमोरी की आवश्यकता होगी, उसे आवंटन का प्रयास करने से पहले त्रुटि के साथ अस्वीकार कर दिया जाता है
  • पुनरावृत्ति पथ सुधार — HDF5 स्टोर के पुनरावर्ती ट्रैवर्सल के दौरान inner_path हैंडलिंग को ठीक करता है

फ़िक्स सभी वैध Keras वज़न फ़ाइलों के साथ पश्चगामी संगत है।

पैच (सरलीकृत उदाहरण)

root@kitploit:~
# keras/src/saving/file_editor.py (post-fix logic, simplified)

MAX_BYTES = 1 * 1024 ** 3  # 1 GiB hard cap per dataset
MAX_RANK = 64

def _validate_hdf5_dataset_shape(shape, dtype):
    """Reject hostile HDF5 shape declarations before any allocation."""
    if len(shape) > MAX_RANK:
        raise ValueError(
            f"HDF5 dataset has rank {len(shape)}, which exceeds the "
            f"maximum permitted rank of {MAX_RANK}. This may indicate "
            "a malicious file."
        )
    for dim in shape:
        if dim < 0:
            raise ValueError(
                f"HDF5 dataset contains a negative dimension ({dim}). "
                "This may indicate a malicious file."
            )
    import math, numpy as np
    try:
        total_elements = math.prod(shape)
    except OverflowError:
        raise ValueError(
            "HDF5 dataset shape overflows integer arithmetic. "
            "This may indicate a malicious file."
        )
    itemsize = np.dtype(dtype).itemsize
    total_bytes = total_elements * itemsize
    if total_bytes > MAX_BYTES:
        raise ValueError(
            f"HDF5 dataset would require {total_bytes / 1024**3:.2f} GiB to "
            f"load, which exceeds the 1 GiB safety limit. This may indicate "
            "a malicious file."
        )

निवारण

कार्रवाईविवरण
Keras अपग्रेड करेंPR #21880 से फ़िक्स शामिल करने वाले संस्करण (3.13.0 के बाद के master बिल्ड या कोई आधिकारिक पैच रिलीज़) में अपडेट करें
अविश्वसनीय मॉडल फ़ाइलें लोड न करेंपूर्व अखंडता सत्यापन के बिना अविश्वसनीय, असत्यापित या सामुदायिक-स्रोत स्थानों से .keras या .weights.h5 फ़ाइलें कभी न लोड करें
फ़ाइल अखंडता सत्यापित करेंलोड करने से पहले प्रकाशक-प्रदान हैश के विरुद्ध मॉडल आर्काइव के SHA-256 चेकसम को मान्य करें
h5dump से पूर्व-स्कैन करेंKeras में लोड करने से पहले HDF5 फ़ाइलों में डेटासेट आकार मेटाडेटा का निरीक्षण करने के लिए h5dump --header <file> का उपयोग करें
न्यूनतम विशेषाधिकारमॉडल-सेवा प्रक्रियाओं को प्रतिबंधित OS उपयोगकर्ता के अंतर्गत चलाएँ जिसमें cgroups या ulimit के माध्यम से मेमोरी सीमाएँ लागू हों ताकि विस्फोट त्रिज्या को सीमित किया जा सके
कंटेनरीकरणमॉडल लोडिंग को एक सैंडबॉक्स कंटेनर में अलग करें जिसमें मेमोरी सीमाएँ हों ताकि एक क्रैश अन्य सेवाओं को प्रभावित न करे
मेमोरी की निगरानी करेंअसामान्य मेमोरी आवंटन पैटर्न पर सतर्क करने के लिए मॉडल लोडिंग ऑपरेशनों को इंस्ट्रूमेंट करें

pip के माध्यम से अपग्रेड करें:

root@kitploit:~
pip install --upgrade keras

स्थापित संस्करण सत्यापित करें:

root@kitploit:~
python -c "import keras; print(keras.__version__)"

संदिग्ध आकारों के लिए HDF5 वज़न फ़ाइल को पूर्व-स्कैन करें:

root@kitploit:~
h5dump --header model.weights.h5 | grep -i "DATASPACE"

समयरेखा

तारीखघटना
29 नवंबर, 2025फ़िक्स PR #21880 HyperPS द्वारा keras-team/keras में प्रस्तुत किया गया
1 दिसंबर, 2025Keras अनुरक्षक hertschuh संदर्भों का अनुरोध करता है; समीक्षा शुरू होती है
26 दिसंबर, 2025अनुरक्षक समीक्षा पूर्ण; अंतिम फीडबैक संबोधित किया गया
29 दिसंबर, 2025PR #21880 अनुमोदित और keras-team:master में विलय
15 जनवरी, 2026CVE-2026-0897 NVD पर प्रकाशित
19 जनवरी, 2026Keras 3.12.x में बैकपोर्ट अनुरोध खोला गया (Issue #22031)
23 जनवरी, 2026NVD रिकॉर्ड अंतिम संशोधित

संदर्भ

संसाधनलिंक
NVD प्रविष्टिhttps://nvd.nist.gov/vuln/detail/CVE-2026-0897
आधिकारिक CVE रिकॉर्डhttps://cve.org/CVERecord?id=CVE-2026-0897
GitHub सलाहकार (GHSA)https://github.com/advisories/GHSA-xfhx-r7ww-5995
फ़िक्स पुल रिक्वेस्टhttps://github.com/keras-team/keras/pull/21880
मर्ज कमिटhttps://github.com/keras-team/keras/commit/7360d4f0d764fbb1fa9c6408fe53da41974dd4f6
बैकपोर्ट अनुरोधhttps://github.com/keras-team/keras/issues/22031
PyPI पर Kerashttps://pypi.org/project/keras/
CWE-770https://cwe.mitre.org/data/definitions/770.html
HDF5 प्रारूप दस्तावेज़ीकरणhttps://www.hdfgroup.org/solutions/hdf5/

अस्वीकरण

यह रिपॉज़िटरी CVE-2026-0897 को कड़ाई से शैक्षिक, अनुसंधान और रक्षात्मक सुरक्षा उद्देश्यों के लिए दस्तावेज़ित करती है। प्रूफ-ऑफ-कॉन्सेप्ट कोड और तकनीकी विवरण डेवलपर्स, सुरक्षा इंजीनियरों और सिस्टम प्रशासकों को इस भेद्यता को समझने, मूल्यांकन करने और निवारण करने में सहायता करने के लिए प्रदान किए गए हैं।

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

योगदानकर्ता: @mohitf070304

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