
Linux के लिए एक उपयोगिता जो `AF_ALG`/`algif_aead` की उपलब्धता की जाँच करती है और `CVE-2026-31431` के जोखिम का आकलन करने में मदद करती है।
Linux के लिए डायग्नोस्टिक उपयोगिता, जो जाँच करती है:
AF_ALG / algif_aead की उपलब्धता और CVE-2026-31431 (copy-fail) के जोखिम का आकलन करने में मदद करती है;xfrm-ESP Page-Cache Write + RxRPC Page-Cache Write श्रृंखला) के लिए हमले की सतह की उपस्थिति, esp4, esp6, rxrpc घटकों के आधार पर, और mitigation प्रिंट करती है।यह उपकरण defensive-जाँच के लिए है और यह एक exploit नहीं है।
AF_ALG AEAD के लिए runtime-प्रोब socket + bind निष्पादित करता है;/proc/modules, modules.builtin, modules.builtin.modinfo के माध्यम से कर्नेल घटकों का विश्लेषण करता है;rpm/Debian changelog) के आधार पर vendor backport-फिक्स की उपस्थिति का पता लगाने का प्रयास करता है;AF_ALG-सॉकेट रखती हैं (/proc/*/fd, best effort);Dirty Frag के लिए अतिरिक्त:
esp4, esp6, rxrpc की उपस्थिति की जाँच करता है (loaded / built-in / unknown);socket(AF_NETLINK, NETLINK_XFRM) और socket(AF_RXRPC) के runtime-प्रोब निष्पादित करता है;1.24+;/proc/*/fd के पूर्ण स्कैन के लिए root से चलाना बेहतर है।Entrypoint प्रोजेक्ट की जड़ में है, निर्माण जड़ से किया जाता है:
go build -o itsumma-afalg-check .
./itsumma-afalg-check
प्रारंभ में:
Itsumma Security Check — AF_ALG / CVE-2026-31431
इसके बाद:
AF_ALG (socket + bind) के runtime-प्रोब का परिणाम;modules.builtin की उपलब्धता;af_alg और algif_aead की स्थिति (loaded / built-in / unknown);CVE-2026-31431 के लिए अंतिम मूल्यांकन (vendor backport निर्धारित करने के प्रयास सहित);AF_ALG-सॉकेट वाली वर्तमान प्रक्रियाओं की सूची (यदि पाई गई हों);cat /proc/cmdline
echo 3 | sudo tee /proc/sys/vm/drop_caches
modprobe -n -v algif_aead
lsmod | grep '^algif_aead\b' || echo 'algif_aead not loaded'
./itsumma-afalg-check
Built-in परिदृश्य के लिए modprobe/lsmod के बजाय अतिरिक्त रूप से जाँच करना उपयोगी है:
dmesg | grep -i 'algif_aead\|initcall_blacklist'
सार्वजनिक Dirty Frag runbook से कमांड (esp4, esp6, rxrpc की लोडिंग अक्षम करता है और पहले से लोड मॉड्यूल को अनलोड करने का प्रयास करता है)।
यदि IPSec / XFRM उपयोग में है (उदाहरण के लिए, strongSwan के माध्यम से), मॉड्यूल अनलोड करने से पहले flush करने की सिफारिश की जाती है:
sudo ip xfrm state flush
sudo ip xfrm policy flush
echo 3 | sudo tee /proc/sys/vm/drop_caches
यदि esp4/esp6/rxrpc built-in के रूप में संकलित हैं (केवल modules.builtin में दिखाई देते हैं), तो modprobe blacklist और rmmod उन्हें अक्षम नहीं करेंगे: इस मामले में कर्नेल अपडेट/पुनर्निर्माण आवश्यक है।
strongSwan के लिए libcharon-extra-plugins स्थापित करने के बाद kernel-libipsec सक्षम करें:
sudo sed -i 's/^\s*load\s*=\s*no/load = yes/' /etc/strongswan.d/charon/kernel-libipsec.conf
sudo systemctl restart strongswan || sudo systemctl restart strongswan-starter
lsmod | egrep '^(esp4|esp6|rxrpc)\b' || echo 'esp4/esp6/rxrpc not loaded'
sudo modprobe esp4 esp6 rxrpc || true
sudo modprobe -r esp6 rxrpc
sudo modprobe -r esp4 || true
sudo rmmod -f esp4
sudo sh -c "printf 'install esp4 /bin/false\ninstall esp6 /bin/false\ninstall rxrpc /bin/false\n' > /etc/modprobe.d/dirtyfrag.conf; rmmod esp6 rxrpc 2>/dev/null; rmmod -f esp4 2>/dev/null; true"
पोस्ट-जाँच:
modprobe -n -v esp4 esp6 rxrpc
lsmod | egrep '^(esp4|esp6|rxrpc)\b' || echo 'esp4/esp6/rxrpc not loaded'
./itsumma-afalg-check
algif_aead की उपस्थिति attack surface को दर्शाती है, लेकिन अंतिम निष्कर्ष कर्नेल संस्करण और डिस्ट्रीब्यूशन के backport-पैच पर निर्भर करता है।AF_ALG AEAD सफल नहीं होता है, तो इस जाँच के दायरे में वेक्टर को अनुपलब्ध माना जाता है।