
Unverifizierter Linux-Kernel-Privilege-Escalation-PoC, der msg_msgseg-Cross-Cache-Reuse nutzt, um skb und pipe_buffer zu überlappen und durch Änderung der Pipe-Flags /etc/passwd zu lesen.
Nur für experimentelle Forschung gedacht; der Code für prefetch und nperm (mit dem einzustellenden Speicherreferenz-Set.gdb) ist nicht beigefügt, nicht optimiert, Trefferwahrscheinlichkeit gering.
Der Autor hat festgestellt, dass der Autor dieser Schwachstelle die entsprechenden Informationen bereits veröffentlicht hat: https://github.com/google/security-research/pull/414
Der Exploit-Ansatz ist völlig anders. Da der Ansatz nicht vollständig verifiziert wurde, wird eine konservative Einschätzung vertreten (hauptsächlich, ob der sock-Spinlock überhaupt in einen Wettlauf versetzt werden kann, hat der Autor nicht praktisch getestet; nach einseitigem Verständnis des Codes könnte über einen timerfd-Hard-Interrupt ein Wettlauf erzeugt werden).
Vorabanalyse: https://xz.aliyun.com/news/92649
Exploit-Ansatz: msg_msgseg nutzt tipc_sock über cross_cache wieder, fälscht einige Felder, passiert alle Checks und wird schließlich freigegeben. Dann wird ein Overlap von skb mit pipe_buffer konstruiert und die flags von pipe_buffer manipuliert (splice einer schreibgeschützten Datei /etc/passwd, dann flags manipulieren – der erweiterte Exploit-Ansatz von DirtyPipe). Da die Kernel-Heap-Adresse nicht geleakt wurde, kann das gefälschte sk->lock.wq nicht auf sich selbst zeigen; um den Check zu bestehen, wird curr->func (siehe Quellcode der __wake_up_common-Aufrufkette) als ret gefälscht, daher ist die Data-only-Implementierung nicht ganz vollständig.