Skip to content
KitploitKITPLOIT
StrumentiBlog
Invia
StrumentiBlog
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.

··Feed·Contatto·Privacy·© 2026 Kitploit

Directory degli strumenti

Categorie

Vedi tutte le categorie
Loading categories
CVE-2026-51992 — Proof-of-concept e analisi dettagliata per CVE-2026-51992, una vulnerabilità di SQL injection nei dizionari PostgreSQL di ClickHouse che consente l'esecuzione di comandi arbitrari. | Kitploit
Strumenti/GitHubGitHub/theliimbo/cve-2026-51992
Analisi delle VulnerabilitàAnalisi del CodiceExploitPenetration TestingApprendimento e FormazioneSicurezza dei Database
GitHubtheliimbo/cve-2026-51992

CVE-2026-51992

Proof-of-concept e analisi dettagliata per CVE-2026-51992, una vulnerabilità di SQL injection nei dizionari PostgreSQL di ClickHouse che consente l'esecuzione di comandi arbitrari.

Vedi Repository
24 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-51992

All'interno di ClickHouse esiste una funzionalità che consente a un utente con i permessi corretti di creare dizionari per interagire con diversi database ed eseguire query specifiche su di essi. Per PostgreSQL, le query SELECT vengono racchiuse in un'istruzione COPY( {QUERY} ) TO STDOUT prima di essere eseguite sul database. Aggiungendo una parentesi a un dizionario creato, è possibile uscire dall'istruzione COPY( {QUERY} ) TO STDOUT ed eseguire istruzioni SQL arbitrarie, che a loro volta possono portare all'esecuzione di comandi arbitrari sul server del database.

Dettagli

I dizionari PostgreSQL vengono creati con la seguente struttura:

root@kitploit:~
SOURCE(POSTGRESQL(
    port 5432
    host 'postgresql-hostname'
    user 'postgres_user'
    password 'postgres_password'
    db 'db_name'
    table 'table_name'
    replica(host 'example01-1' port 5432 priority 1)
    replica(host 'example01-2' port 5432 priority 2)
    where 'id=10'
    invalidate_query 'SQL_QUERY'
    query 'SELECT id, value_1, value_2 FROM db_name.table_name'
))

La documentazione per i motori PostgreSQL utilizzati nei dizionari menziona quanto segue:

Le query SELECT sul lato PostgreSQL vengono eseguite come COPY (SELECT ...) TO STDOUT all'interno di una transazione PostgreSQL di sola lettura con commit dopo ogni query SELECT.

Poiché non viene eseguita alcuna validazione aggiuntiva sulle query definite nel dizionario prima che vengano inviate all'istanza Postgres, è possibile uscire da "COPY(...) TO STDOUT" facendo iniziare la query con una ")", creando una transazione che non è di sola lettura. Ad esempio, la seguente query può essere utilizzata in ClickHouse per creare un dizionario Postgres "maligno":

CREATE DICTIONARY exec_dict(id UInt64, value UInt64 DEFAULT 0) PRIMARY KEY id SOURCE(POSTGRESQL(port 5432 host '172.17.0.3' user 'postgres' password 'password' db 'postgres' query 'SELECT 1) TO PROGRAM \'id>/tmp/test\';-- ')) LAYOUT(DIRECT())

Una volta creato il dizionario, è possibile caricarlo all'interno di ClickHouse facendo riferimento al dizionario stesso. ClickHouse restituirà un errore, indicando che la funzione COPY attesa da ClickHouse è fallita. Tuttavia, il resto della query verrà comunque eseguito sul database PostgreSQL sottostante. Abusando della funzionalità PROGRAM di PostgreSQL, è possibile eseguire comandi arbitrari.

mostra-esecuzione-codice-in-container

Contesto

Sebbene il test originale sia stato effettuato sulla versione 25.8.10.7, quando il report è stato inviato il 30 gennaio 2025, la versione più recente all'epoca era la 26.3.9.8 e la vulnerabilità era ancora presente. Dopo la revisione, il problema è stato etichettato come "non applicabile" il 10 aprile 2026, con la seguente dichiarazione:

no - questo non è dovuto a un motivo di sicurezza ma soprattutto a un motivo di efficienza. Un utente con credenziali postgres + remote table function può già fare molto o connettersi direttamente al database postgresql ed eseguire queste query.

Pertanto questo non è un rischio; l'attaccante richiede credenziali valide per il database postgresql, un utente valido su CLickHouse e il permesso di utilizzare la postgresql table function.

Per quanto riguarda la protezione del database Postgresql, gli utenti dovrebbero utilizzare permessi ragionevoli per qualsiasi credenziale postgresql usata dall'utente CLickHouse - e ciò significa permessi limitati, ambito limitato e non direttamente le credenziali predefinite "postgres".

Di conseguenza, questo problema è ancora presente nelle versioni più recenti di ClickHouse al momento della stesura di questo report:

mostra-stessa-query-per-clickhouse

versione-più-recente-per-clickhouse

mostra-vulnerabilità-ancora-presente-ultima-versione

Non sembra probabile che venga rilasciata una correzione, il che significa che tutte le versioni attuali e possibilmente future di ClickHouse saranno interessate.

Scarica lo strumento