
PoC non verificato di escalation dei privilegi nel kernel Linux che utilizza il riutilizzo cross-cache di msg_msgseg per sovrapporre skb e pipe_buffer, alterando i flag della pipe per leggere /etc/passwd.
Solo per ricerca sperimentale. Il codice di prefetch e nperm (richiede il riferimento di memoria impostato da set.gdb) non è allegato; non essendo stato ottimizzato, la probabilità di successo è bassa.
L'autore ha notato che l'autore della vulnerabilità ha già pubblicato le informazioni relative: https://github.com/google/security-research/pull/414
L'approccio di sfruttamento è completamente diverso; poiché non è stato verificato in modo completo, l'autore mantiene un'opinione prudente (principalmente perché l'autore non ha testato concretamente se lo spinlock di sock possa essere soggetto a race condition; in base a una comprensione parziale del codice, è possibile innescare una race condition tramite l'interrupt hardware di timerfd).
Analisi preliminare: https://xz.aliyun.com/news/92649
Approccio di sfruttamento: msg_msgseg riutilizza tipc_sock attraverso cross_cache, falsifica alcuni campi per superare tutti i check e infine eseguire la free; quindi costruisce un overlap tra skb e pipe_buffer, manipolando i flags di pipe_buffer (usa splice su /etc/passwd in sola lettura e poi altera i flags, estensione dell'approccio di sfruttamento di dirtypipe). Poiché l'indirizzo dell'heap del kernel non è stato leakato, il falso sk->lock.wq non può puntare a se stesso; per superare i check, curr->func (vedere la catena di chiamate di __wake_up_common nel codice sorgente) viene falsificato come ret, quindi l'implementazione dataonly non è particolarmente completa.