
Demonio para aleatorizar tcp_challenge_ack_limit y prevenir ataques de canal lateral CVE-2016-5696
chackd es un demonio que aleatoriza cada segundo el parámetro del kernel tcp_challenge_ack_limit para prevenir ataques de canal lateral.
Un ataque de canal lateral presentado recientemente ha llamado fuertemente la atención de la comunidad [1]. Para muchos servidores o dispositivos smartphone, este ataque se considera peligroso para las conexiones IPv4. No hay duda de que el kernel corregirá este problema en las próximas versiones. Sin embargo, algunos administradores podrían no actualizar el kernel por razones específicas o simplemente por pereza.
Ajustar el parámetro a un valor muy alto [2] funcionará bien. Por otro lado, para aplicaciones de servidor podría resultar en una cantidad innecesaria de tráfico. Para evitar esto, he escrito el programa chackd. Es capaz de ser parametrizado para apuntar a la solución presentada en [1].
El demonio chack realiza este trabajo muy bien y manteniéndolo simple. Un concepto anterior mío era buscar un módulo kernel cargable, pero lo descarté porque existe una interfaz poderosa entre el espacio de usuario y el kernel llamada proc vfs. Con los archivos proc podemos hacer el trabajo con un demonio simple.
Este es mi primer proyecto de código abierto con un buen beneficio para los administradores que quieran protegerse contra ataques de challenge_ack_limit y no puedan actualizar su kernel. Solo compílelo y ejecútelo en su servidor.
Necesito ayuda de la comunidad para que este proyecto sea "estándar comunitario".
Por favor, busca PENDIENTES dentro de los archivos fuente para algunas cosas en las que me gustaría trabajar. Siéntete libre de bifurcar de la forma que quieras. Me gustaría aprender mucho de este proyecto.
Makefile - Mi deseo para el Makefile es que sea una especie de estándar con instalación, consultas de versión del kernel, etc.
start_daemon - Cualquier parte del código que pueda causar que el demonio se bloquee debe ser corregida.
stop_daemon - Cualquier parte del código que no sea un estándar debe ser corregida.
init_daemon - Cualquier parte del código que pueda causar que el demonio se bloquee debe ser corregida.
main - Mi intención es que los parámetros principales se den como un entero simple, actualmente funciona bien. Sin embargo, ¿quizás hay una forma mucho mejor de manejarlo?
Intervalo de 1 segundo de "sysctl net.ipv4.tcp_challenge_ack_limit"
net.ipv4.tcp_challenge_ack_limit = 222
net.ipv4.tcp_challenge_ack_limit = 227
net.ipv4.tcp_challenge_ack_limit = 191
net.ipv4.tcp_challenge_ack_limit = 178
net.ipv4.tcp_challenge_ack_limit = 229
net.ipv4.tcp_challenge_ack_limit = 167
net.ipv4.tcp_challenge_ack_limit = 189
net.ipv4.tcp_challenge_ack_limit = 229
Bastian Pukallus, por favor, envía un correo a [email protected]
[1] http://www.cs.ucr.edu/~zhiyunq/pub/sec16_TCP_pure_offpath.pdf
[2] https://www.mail-archive.com/[email protected]/msg705042.html