
tcp_challenge_ack_limit को रैंडमाइज़ करने के लिए डेमन ताकि साइड चैनल हमलों CVE-2016-5696 को रोका जा सके
chackd एक डेमॉन है जो साइड चैनल हमलों को रोकने के लिए हर सेकंड कर्नेल पैरामीटर tcp_challenge_ack_limit को रैंडमाइज़ करता है
हाल ही में प्रस्तुत एक साइड-चैनल हमले ने समुदाय का काफी ध्यान आकर्षित किया है [1]। कई सर्वरों या स्मार्टफोन उपकरणों के लिए यह हमला ipv4 कनेक्शनों के लिए खतरनाक माना जाता है। इसमें कोई संदेह नहीं है कि कर्नेल अगले संस्करणों में इस समस्या को ठीक कर देगा। हालाँकि, कुछ एडमिन विशिष्ट कारणों से या केवल आलस्य के कारण कर्नेल को अपडेट नहीं कर सकते हैं।
पैरामीटर को बहुत अधिक मान पर समायोजित करना [2] ठीक काम करेगा। दूसरी ओर, सर्वर अनुप्रयोग के लिए इसके परिणामस्वरूप अनावश्यक मात्रा में ट्रैफ़िक हो सकता है। इसे रोकने के लिए मैंने chackd प्रोग्राम लिखा है। इसे [1] में प्रस्तुत समाधान को लक्षित करने के लिए पैरामीटराइज़ किया जा सकता है।
chack डेमॉन इस काम को बहुत अच्छी तरह से करता है और इसे सरल रखता है। मेरी एक पुरानी अवधारणा लोड करने योग्य कर्नेल मॉड्यूल की तलाश में थी, लेकिन मैंने इसे छोड़ दिया, क्योंकि यूज़रस्पेस और कर्नेलस्पेस के बीच एक शक्तिशाली इंटरफ़ेस है जिसे proc vfs कहा जाता है। प्रोक फाइलों के साथ हम एक साधारण डेमॉन के साथ यह काम कर सकते हैं।
यह मेरा पहला ओपन-सोर्स प्रोजेक्ट है, जिसका एडमिन के लिए अच्छा लाभ है जो challenge_ack_limit हमलों से सुरक्षा चाहते हैं और अपने कर्नेल को अपडेट करने में सक्षम नहीं हैं। बस इसे कंपाइल करें और अपने सर्वर पर चलाएँ।
इस प्रोजेक्ट को "सामुदायिक मानक" बनाने के लिए मुझे समुदाय से मदद चाहिए।
कृपया src फाइलों के अंदर TODOs देखें, उन चीज़ों के लिए जिन पर मैं काम करना चाहूँगा। आप जिस भी तरह से branch करना चाहें, निःसंकोच करें। मैं इस प्रोजेक्ट से बहुत कुछ सीखना चाहूँगा।
Makefile - Makefile के लिए मेरी इच्छा है कि इसे इंस्टॉलेशन, कर्नेल-रिलीज़ क्वेरी आदि के साथ एक मानक जैसा बनाया जाए।
start_daemon - कोई भी कोड भाग जो डेमॉन को क्रैश कर सकता है, उसे ठीक किया जाना चाहिए
stop_daemon - कोई भी कोड भाग जो किसी प्रकार का मानक नहीं है, उसे ठीक किया जाना चाहिए
init_daemon - कोई भी कोड भाग जो डेमॉन को क्रैश कर सकता है, उसे ठीक किया जाना चाहिए
main - मेरा इरादा है कि 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