
Proof-of-concept per CVE-2026-84361, che dimostra l'iniezione di comandi nel driver Perforce di Composer tramite un P4PORT dannoso, con verifica basata su Docker e indicazioni di mitigazione.
Usando Docker Compose puoi verificare in un ambiente isolato che include Composer 2.10.2 vulnerabile e il client Perforce p4. Il container di esecuzione ha rete disabilitata, filesystem in sola lettura e tutte le capability rimosse; solo le tmpfs /tmp e /work sono scrivibili.
# Build dell'immagine (p4 viene scaricato dalla distribuzione ufficiale e verificato tramite SHA-256)
docker compose build
# Verifica diretta del comportamento rsh: di p4 (predefinito)
docker compose run --rm poc
# Verifica tramite Composer vulnerabile
docker compose run --rm poc /usr/local/bin/run-composer-poc.sh
L'ultimo comando esegue composer update --prefer-source in un workspace temporaneo all'interno del container. Poiché viene usato un comando marcatore che non è un server Perforce, Composer stesso potrebbe fallire, ma se il marcatore viene creato il comando termina con successo mostrando .
[+] VULNERABLEPoC di verifica locale per CVE-2026-84361, presente nel driver VCS Perforce di Composer. Composer vulnerabile, quando il source.type del pacchetto è perforce, passa il source.url controllato dall'attaccante come P4PORT del client p4.
p4 tratta i P4PORT rsh: / jsh: come comandi locali, non come destinazioni di rete. Di conseguenza, installando una source da metadati di pacchetto non attendibili o da composer.lock, i comandi vengono eseguiti con i privilegi dell'utente che esegue Composer o dell'account CI.
Il payload di questo PoC crea solo un file marcatore vuoto in un'area temporanea.
Scoperto da: saku0512 (GitHub)
Utilizzare solo per scopi educativi e per verifiche di sicurezza in ambienti esplicitamente autorizzati. Non eseguire su sistemi o ambienti CI di terzi senza permesso.
>= 1.0, < 2.2.30 e >= 2.3.0, < 2.10.3Perché l'attacco riesca sono necessarie tutte le seguenti condizioni: p4 presente nel PATH, l'attaccante in grado di controllare i metadati della source Perforce e il pacchetto target installato dalla source. Packagist.org non consente metadati di source Perforce, quindi l'uso del solo Packagist non è vulnerabile.
p4php -v
p4 -V
Per impostazione predefinita non avvia p4, ma mostra solo il P4PORT pericoloso e il comando che verrebbe eseguito.
php poc.php
--execute passa a p4 un P4PORT rsh:. Il payload crea solo un marcatore univoco sotto sys_get_temp_dir() e per impostazione predefinita lo pulisce.
php poc.php --execute
Se appare [+] VULNERABLE, conferma che il comando locale è stato eseguito tramite P4PORT. Per conservare il marcatore, aggiungi --keep-marker.
Il composer.json incluso è un esempio minimale di inline package repository distribuito da un attaccante. In un ambiente isolato con Composer non corretto e p4, esegui:
composer update --prefer-source
Le versioni corrette rifiutano source.url come porta Perforce non valida prima di avviare p4.
Aggiorna Composer alla versione 2.2.30 o successiva, oppure 2.10.3 o successiva. Utilizza solo repository e lock file attendibili e rimuovi p4 dal PATH negli ambienti che non usano Perforce.