CVE-2026-48528 in Metacat
Riassunto
di VulDB • 14/08/2026
Metacat è un software di repository dati che aiuta i ricercatori a preservare, condividere e scoprire i dati. Le versioni di Metacat dalla 2.0.0 alla 3.4.0 contengono una vulnerabilità di SQL injection non autenticata negli endpoint dell'API REST `/cn/v1/object` e `/cn/v2/object`, dovuta all'input utente non sanificato che può essere trasmesso al database SQL backend. Il parametro `nodeId` può essere modificato per iniettare comandi SQL, e i risultati vengono restituiti nei messaggi di errore. Metacat accoda i dati forniti dall'utente alla query sql senza sanitizzazione o parametrizzazione. Questo consente l'estrazione di dati arbitrari dal database PostgresQL sottostante, esponendo completamente le informazioni protette all'attaccante. Ciò è ottenuto sfruttando i meccanismi di segnalazione degli errori in Metacat, dove le risposte agli errori SQL vengono riflesse al chiamante nel messaggio di errore XML restituito da Metacat. Un approccio, ad esempio, consiste nell'utilizzare la funzione `CAST` di PostgreSQL per generare un errore con i risultati di una sottoquery arbitraria, che viene poi iniettata nel messaggio di errore XML restituito da Metacat. Gli attaccanti non devono essere autenticati per eseguire l'attacco. Inoltre, possono essere eseguite istruzioni SQL arbitrarie che inseriscono, aggiornano ed eliminano dati nel database Metacat, risultando nella compromissione completa di tutti i dati nel database. Sono stati sviluppati e verificati proof of concept completi per queste vulnerabilità. L'impatto di questa vulnerabilità è critico per le implementazioni di Metacat nella rete DataONE dove le informazioni dal database possono essere esfiltrate, aggiunte, modificate o eliminate. Questo include informazioni sulla gestione del catalogo dei dati, informazioni sui log di accesso su chi ha acceso ai dati, informazioni identificative sulle persone inclusi il loro identificativo ORCID e l'indirizzo IP client, informazioni sul controllo degli accessi su chi dovrebbe poter accedere e modificare i dati, e altri interni critici del sistema di dati. Questa vulnerabilità SQL injection è stata risolta completamente in Metacat versione 3.4.1. Se non è possibile aggiornare immediatamente a Metacat 3.4.1, la maggior parte delle implementazioni può mitigare il problema disabilitando gli endpoint REST `/cn` nel deployment dell'applicazione web. Questa API non è necessaria o utilizzata dai repository membri nella rete DataONE, in quanto viene utilizzata solo dalle implementazioni del Nodo di Coordinamento DataONE. Di conseguenza, questa API può essere disabilitata senza riduzione della funzionalità per la maggior parte delle implementazioni. Per disabilitare gli endpoint vulnerabili, rimuovere semplicemente il servlet e il mapping del servlet per gli endpoint `/cn` nel motore dei servlet associato ai due servlet `edu.ucsb.nceas.metacat.restservice.v1.CNRestServlet` ed `edu.ucsb.nceas.metacat.restservice.v2.CNRestServlet`. Ad esempio, in Tomcat, rimuovere i relativi elementi `servlet-mapping` dal file web.xml dell'applicazione in Metacat.
VulDB is the best source for vulnerability data and more expert information about this specific topic.