
Демон для рандомизации tcp_challenge_ack_limit с целью предотвращения атак по сторонним каналам CVE-2016-5696
chackd — это демон, который каждую секунду рандомизирует параметр ядра tcp_challenge_ack_limit для предотвращения атак по побочным каналам
Недавно представленная атака по побочному каналу привлекла большое внимание сообщества [1]. Для многих серверов и смартфонов эта атака считается опасной для IPv4-соединений. Нет сомнений, что ядро исправит эту проблему в следующих версиях. Однако некоторые администраторы могут не обновлять ядро по особым причинам или просто из-за лени.
Установка параметра на очень высокое значение [2] будет работать нормально. С другой стороны, для серверных приложений это может привести к лишнему объему трафика. Чтобы предотвратить это, я написал программу chackd. Она может быть настроена для реализации решения, представленного в [1].
Демон chack отлично справляется с этой задачей, оставаясь простым. Моя предыдущая концепция заключалась в поиске загружаемого модуля ядра, но я отказался от неё, потому что существует мощный интерфейс между пользовательским пространством и пространством ядра, называемый proc vfs. С помощью proc-файлов мы можем выполнить задачу простым демоном.
Это мой первый проект с открытым исходным кодом, который приносит пользу администраторам, желающим защититься от атак challenge_ack_limit и не имеющим возможности обновить ядро. Просто скомпилируйте и запустите его на своём сервере.
Мне нужна помощь сообщества, чтобы сделать этот проект «стандартом сообщества».
Пожалуйста, ищите TODO внутри исходных файлов для некоторых вещей, над которыми я хотел бы поработать. Не стесняйтесь создавать ответвления (форки) любым способом. Я хотел бы многому научиться из этого проекта.
Makefile - Моё пожелание для Makefile — сделать его своего рода стандартом с установкой, запросами версии ядра и так далее.
start_daemon - Любая часть кода, которая может привести к сбою демона, должна быть исправлена.
stop_daemon - Любая часть кода, которая не является стандартной, должна быть исправлена.
init_daemon - Любая часть кода, которая может привести к сбою демона, должна быть исправлена.
main - Я намеревался, чтобы основные параметры передавались в виде простых целых чисел, в настоящее время это работает хорошо. Однако, возможно, есть гораздо лучший способ обработки?
Интервал в 1 секунду "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, пожалуйста, пишите на [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