Skip to content
KitploitKITPLOIT
StrumentiExploitsBlog
Log in
Invia
StrumentiExploitsBlog
Invia

Strumenti di Hacking, PenTest e Cybersecurity per il tuo Arsenale di Sicurezza!

Kitploit è una directory di strumenti di hacking, cybersecurity e pentesting. Scopri gli ultimi aggiornamenti dei progetti per trovare vulnerabilità, analizzare sistemi, automatizzare i test e rafforzare la tua sicurezza.

FeedContattoPrivacy© 2026 Kitploit

Directory degli strumenti

Categorie

Vedi tutte le categorie
Loading categories
CVE-2026-0897 — Allocazione di risorse senza limiti o limitazioni di velocità nel componente di caricamento dei pesi HDF5 in Google Keras 3.0.0 fino alla 3.13.0 su tutte le piattaforme consente a un attaccante remoto di causare una Denial of Service (DoS) tramite l'esaurimento della memoria e il crash dell'interprete Python attraverso un file .keras appositamente predisposto. | Kitploit
Strumenti/GitHubGitHub/hyperps/cve-2026-0897
Analisi delle VulnerabilitàExploitAnalisi MalwarePaper e RicercaApprendimento e Formazione
GitHubhyperps/cve-2026-0897

CVE-2026-0897

Vedi Repository
1296 mesi faNon ancora revisionato

Più Popolari

Vedi tutti →

Scopri gli strumenti più utilizzati dalla nostra community.

Esplora tutti gli strumenti

Sfoglia la nostra collezione di strumenti

Vedi tutti gli strumenti →

Informazioni

Allocazione di risorse senza limiti o limitazioni di velocità nel componente di caricamento dei pesi HDF5 in Google Keras 3.0.0 fino alla 3.13.0 su tutte le piattaforme consente a un attaccante remoto di causare una Denial of Service (DoS) tramite l'esaurimento della memoria e il crash dell'interprete Python attraverso un file .keras appositamente predisposto.

Condividi

CVE-2026-0897 — Google Keras: Denial of Service tramite Shape Bomb HDF5 nel caricamento dei pesi


Panoramica

CampoDettagli
CVE IDCVE-2026-0897
Pacchettokeras (Google Keras)
RegistroPyPI
Versioni interessate3.0.0 fino a 3.13.0 (incluse)
Tipo di vulnerabilitàCWE-770: Allocazione di risorse senza limiti o throttling
Punteggio CVSS7.1 Alto (CVSS 4.0, CNA: Google Inc.)
Vettore CVSSCVSS:4.0/AV:N/AC:L/AT:N/PR:N/UI:P/VC:N/VI:N/VA:H/SC:N/SI:N/SA:N
Vettore di attaccoRete
Complessità dell'attaccoBassa
Privilegi richiestiNessuno
Interazione dell'utentePassiva (la vittima carica un file di modello)
Impatto sulla disponibilitàAlto
Impatto sulla riservatezzaNessuno
Impatto sull'integritàNessuno
Pubblicato su NVD15 gennaio 2026
Ultima modifica NVD23 gennaio 2026
Fonte / CNAGoogle Inc.
Segnalato daHyperPS (Sarvesh Patil) tramite huntr.dev / GHSA
Stato della correzioneIntegrata — PR #21880

Descrizione

Una vulnerabilità di tipo Denial of Service è presente nel componente di caricamento dei pesi HDF5 di Google Keras versioni 3.0.0 fino a 3.13.0 su tutte le piattaforme. La vulnerabilità è causata dall'assenza di qualsiasi validazione o limitazione (throttling) durante l'elaborazione dei metadati di forma (shape) dei dataset HDF5 dichiarati all'interno di un archivio .keras.

Il formato HDF5 consente ai dataset di dichiarare la propria forma (dimensioni dei tensori) come metadati. Quando Keras carica i pesi del modello da un archivio .keras, legge questa forma dichiarata e tenta di allocare un blocco di memoria corrispondente prima che qualsiasi dato venga trasferito. Poiché Keras non esegue alcun controllo dei limiti sulla forma dichiarata prima dell'allocazione, un attaccante può creare un file model.weights.h5 che dichiara una forma astronomicamente grande — ad esempio (1000000, 1000000, 1000000) — inducendo Keras a tentare un'allocazione di memoria su scala petabyte. Questo esaurisce tutta la memoria di sistema disponibile e provoca il crash dell'interprete Python.

Non è richiesta alcuna inferenza né ulteriore interazione dopo il caricamento del modello. L'attacco viene completamente innescato al momento del caricamento.


Componente interessato

FileDescrizione
keras/src/saving/file_editor.pyKerasFileEditor._extract_weights_from_store() — legge la forma dei dataset HDF5 e alloca memoria senza validazione delle dimensioni o limitazioni (throttling)

La vulnerabilità è situata in particolare nella classe KerasFileEditor, responsabile della deserializzazione dei tensori dei pesi del modello dagli archivi HDF5 incorporati negli archivi .keras.


Analisi del vettore CVSS 4.0

MetricaValoreSignificato
Vettore di attacco (AV)ReteSfruttabile da remoto tramite un file di modello distribuito
Complessità dell'attacco (AC)BassaNessuna condizione speciale o race condition richiesta
Requisiti di attacco (AT)NessunoNessuna configurazione di distribuzione prerequisita necessaria
Privilegi richiesti (PR)NessunoNessuna autenticazione o account richiesto
Interazione dell'utente (UI)PassivaLa vittima deve caricare l'archivio .keras dannoso
Disponibilità del sistema vulnerabile (VA)AltaL'interprete Python va in crash; il servizio diventa completamente non disponibile
Riservatezza del sistema vulnerabile (VC)NessunaNessuna divulgazione di dati
Integrità del sistema vulnerabile (VI)NessunaNessuna modifica dei dati
Impatto sui sistemi successivi (SC/SI/SA)NessunoL'impatto è limitato al processo di caricamento

Impatto

  • Denial of Service completo — L'interprete Python viene mandato in crash e il processo viene terminato quando viene caricato l'archivio dannoso
  • Esaurimento della memoria — La RAM di sistema viene rapidamente consumata nel tentativo di soddisfare l'allocazione dichiarata, influenzando potenzialmente altri servizi co-localizzati
  • Interruzione delle pipeline ML — Qualsiasi pipeline di produzione o ricerca che carichi archivi modello .keras da fonti non attendibili o fornite dall'utente è vulnerabile
  • Nessuna autenticazione richiesta — Un attaccante ha bisogno solo che la vittima carichi un archivio dannoso; l'attacco non richiede credenziali né accesso preliminare

Contesti di distribuzione ad alto rischio

ContestoRischio
API pubbliche di servizio dei modelli che accettano file .keras caricati dagli utentiL'attaccante manda in crash il servizio di inferenza con una singola richiesta
Piattaforme ML che ospitano download di modelli dalla community (es. Hugging Face)Un modello avvelenato causa DoS per qualsiasi ricercatore che lo scarichi e lo carichi
Ambienti di apprendimento federatoUn partecipante malintenzionato distribuisce un file di pesi appositamente creato per mandare in crash il coordinatore o i nodi peer
Pipeline CI/CD che caricano checkpoint di modelliUn checkpoint compromesso o sostituito causa il fallimento della pipeline e l'indisponibilità
Chatbot o servizi NLP che ricaricano i modelli a caldo in esecuzioneUna singola richiesta di ricaricamento dannosa manda giù il servizio

Dettagli tecnici

Meccanismo di attacco: Shape Bomb HDF5

Il formato file HDF5 memorizza i metadati dei tensori — incluse le dichiarazioni di forma — separatamente dai byte di dati effettivi. Quando KerasFileEditor._extract_weights_from_store() incontra una voce di dataset, legge la forma dichiarata e chiama NumPy per pre-allocare un array con le dimensioni corrispondenti prima di leggere qualsiasi dato dal disco.

Poiché la forma è un metadato, un file HDF5 minimale può dichiarare una forma che richiederebbe petabyte di memoria mentre il file stesso rimane di soli pochi kilobyte. Il rapporto tra dimensione del file e dimensione dell'allocazione rende questo un attacco di amplificazione estremamente efficace.

Una forma come (1000000, 1000000, 1000000) con un dtype float a 32 bit richiederebbe circa 4.000 petabyte di memoria. L'out-of-memory killer del sistema operativo o l'allocatore di Python manderanno in crash il processo quasi istantaneamente.

Percorso del codice vulnerabile (prima della correzione)

# 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

L'assenza di qualsiasi controllo su shape prima di chiamare np.zeros() è la causa principale.


Proof of Concept

Queste informazioni sono fornite esclusivamente a scopo educativo e difensivo. Non testare sistemi che non possiedi o per i quali non hai un'autorizzazione esplicita a testare.

Generazione di un archivio .keras dannoso

Scarica lo strumento