
Daemon zum Randomisieren von tcp_challenge_ack_limit, um Seitenkanalangriffe zu verhindern CVE-2016-5696
chackd ist ein Daemon, der jede Sekunde den Kernelparameter tcp_challenge_ack_limit zufällig ändert, um Seitenkanalangriffe zu verhindern.
Ein kürzlich vorgestellter Seitenkanalangriff hat große Aufmerksamkeit in der Community erregt [1]. Für viele Server oder Smartphone-Geräte gilt dieser Angriff als gefährlich für IPv4-Verbindungen. Es besteht kein Zweifel, dass der Kernel dieses Problem in den nächsten Versionen beheben wird. Einige Administratoren könnten den Kernel jedoch aus bestimmten Gründen oder einfach aus Bequemlichkeit nicht aktualisieren.
Das Anpassen des Parameters auf einen sehr hohen Wert [2] funktioniert gut. Auf der anderen Seite kann es bei Serveranwendungen zu unnötigem Datenverkehr führen. Um dies zu verhindern, habe ich das Programm chackd geschrieben. Es kann parametriert werden, um die in [1] vorgestellte Lösung zu erreichen.
Der chack-Daemon erledigt diese Aufgabe sehr gut und hält sie einfach. Ein früheres Konzept von mir sah ein ladbares Kernelmodul vor, aber ich habe es verworfen, weil es eine leistungsstarke Schnittstelle zwischen Benutzer- und Kernelraum namens proc vfs gibt. Mit proc-Dateien können wir die Aufgabe mit einem einfachen Daemon erledigen.
Dies ist mein erstes Open-Source-Projekt mit einem netten Nutzen für Administratoren, die sich vor challenge_ack_limit-Angriffen schützen möchten und ihren Kernel nicht aktualisieren können. Kompilieren Sie es einfach und führen Sie es auf Ihrem Server aus.
Ich brauche Hilfe von der Community, um dieses Projekt auf "Community-Standard" zu bringen.
Bitte suchen Sie in den Quellcodedateien nach TODOs für einige Dinge, an denen ich gerne arbeiten würde. Fühlen Sie sich frei, auf jede gewünschte Weise zu forken. Ich möchte viel von diesem Projekt lernen.
Makefile - Mein Wunsch für das Makefile ist, es zu einer Art Standard mit Installation, Kernel-Release-Abfragen usw. zu machen.
start_daemon - Jeder Codeteil, der möglicherweise einen Absturz des Daemons verursachen könnte, muss behoben werden.
stop_daemon - Jeder Codeteil, der nicht dem Standard entspricht, muss behoben werden.
init_daemon - Jeder Codeteil, der möglicherweise einen Absturz des Daemons verursachen könnte, muss behoben werden.
main - Meine Absicht ist, dass Hauptparameter als einfache Ganzzahl übergeben werden, derzeit funktioniert es gut. Vielleicht gibt es jedoch eine viel bessere Art der Handhabung?
1-Sekunden-Intervall von "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, bitte mailen Sie an [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