
Este repositorio contiene mi artículo y las diapositivas de la presentación sobre CVE-2016-5195, una vulnerabilidad de escalada de privilegios en Linux, escritos para el curso Operating Systems: Design And Security en la FMI, Universidad de Bucarest.
En mi artículo afirmé que se puede usar Dirty COW para colar silenciosamente puertas traseras en binarios sin escalar de inmediato a root para hacer más difícil su detección.
Esto no es realmente cierto porque al intentar hacer writeback de la página modificada, el kernel se da cuenta de que la página está sucia (lo que nunca debería ocurrir) y entra en pánico, provocando que el sistema se bloquee.
Para evitarlo, hay que escalar inmediatamente a root y desactivar el writeback automático con "echo 0 > /proc/sys/vm/dirty_writeback_centisecs". Mi prueba de concepto no hace eso, por lo que se bloquea rápidamente al probarla en una máquina virtual, tras modificar con éxito /etc/passwd (que no se persiste en el disco).
https://www.exploit-db.com/exploits/40847 es un ejemplo de código de exploit que sobrescribe /etc/passwd y luego desactiva el writeback para evitar que se bloquee.
Otros métodos incluyen parchear vDSO (https://github.com/scumjr/dirtycow-vdso) en lugar de una página respaldada por un archivo, lo que afecta a todos los procesos del sistema y no provoca un bloqueo, y tiene otras ventajas, como también escapar de contenedores y no verse afectado por las restricciones de SELinux que podrían impedir incluso abrir /etc/passwd en modo solo lectura para el ataque.
Si bien ciertamente se puede comprometer el sistema tras escalar a root (igual que con cualquier otro método de escalada de privilegios), eso implicaría operaciones normales del sistema de archivos y podría ser detectado por sistemas de detección de intrusiones, mientras que si el writeback hubiera funcionado como pensaba originalmente, podría eludir la monitorización de las operaciones de escritura, ya que el kernel simplemente haría writeback de la página sin que intervenga ninguna llamada al sistema write, pero en realidad solo entra en pánico.