
Danfoss AK-SM 8xxA CVE-2025-41450/-41451/-41452 के लिए PoC और डिटेक्शन टूलकिट: code-of-the-day प्रमाणीकरण बायपास, alarm-to-mail RCE, और nginx कॉन्फ़िग इंजेक्शन, Suricata/Sigma नियमों के साथ।
Claroty Team82 द्वारा प्रकट की गई और Danfoss द्वारा R4.2 / R4.3.1 में ठीक की गई तीन AK-SM 8xxA वेब इंटरफ़ेस कमज़ोरियों के लिए अनुसंधान/डिटेक्शन-इंजीनियरिंग PoC (DSA-2025-03-01, DSA-2025-08-01, CISA ICSA-25-140-03):
| CVE | कमज़ोरी | प्रभावित | ठीक किया गया |
|---|---|---|---|
| CVE-2025-41450 | xml.cgi?action=getauth पर छिपा हुआ "code-of-the-day" प्रमाणीकरण बायपास (datetime-व्युत्पन्न पासवर्ड) | < R4.2 | R4.2 |
| CVE-2025-41451 | alarm-to-mail / SMTP कॉन्फ़िग में प्रमाणीकरण-पश्चात OS कमांड इंजेक्शन (आइटम 0x1be1) | < 4.3.1 | 4.3.1 |
| CVE-2025-41452 | action=load_nginx_headers के माध्यम से प्रमाणीकरण-पश्चात nginx headers.conf प्रतिस्थापन → डायरेक्टिव इंजेक्शन + sm_app क्रैश DoS | < 4.3.1 | 4.3.1 |
emulator/aksm800a_emulator.py vulnerable-behavior emulator (127.0.0.1 only)
poc/cve_2025_41450_code_of_the_day.py
poc/cve_2025_41451_alarm_mail_cmd_injection.py
poc/cve_2025_41452_nginx_conf_injection.py
detection/suricata/danfoss-aksm-cves.rules Suricata rules (see in-file caveats)
detection/sigma/*.yml Sigma host/log rules
detection/test_rules_against_captures.py replay captures against the ruleset
captures/http-requests.jsonl full request log, tagged per CVE
WRITEUP.md FROMAGEGATE incident context + full research summary
केवल Python 3 stdlib; कोई निर्भरता नहीं।
python3 emulator/aksm800a_emulator.py 8080 & # start the target
python3 poc/cve_2025_41450_code_of_the_day.py # exit 0 = bypass works
python3 poc/cve_2025_41451_alarm_mail_cmd_injection.py
python3 poc/cve_2025_41452_nginx_conf_injection.py # add --no-dos to skip DoS
python3 detection/test_rules_against_captures.py # replay captures vs Suricata rules
41451 और 41452 PoC डिफ़ॉल्ट रूप से 41450 बायपास के माध्यम से चेन होते हैं (एक वास्तविक
हमलावर के पास कोई कॉन्फ़िगर किया गया क्रेडेंशियल नहीं होता); दोनों --user/--password
(41451) स्वीकार करते हैं ताकि इसके बजाय एक वैध सत्र से शुरुआत की जा सके। सभी PoC --target HOST:PORT स्वीकार करते हैं, इसलिए वे वास्तविक भेद्य फ़र्मवेयर के विरुद्ध भी काम करते हैं — लेकिन
code-of-the-day एल्गोरिदम और बायपास एट्रिब्यूट नामों को फ़र्मवेयर से प्राप्त मानों से
बदलना होगा (नीचे दी गई चेतावनियाँ देखें)।
प्रत्येक एमुलेटर अनुरोध को टैग के साथ captures/http-requests.jsonl में लॉग किया जाता है।
स्थिर, सिग्नेचर-योग्य नेटवर्क आर्टिफ़ैक्ट ये हैं:
CVE-2025-41450 (प्रमाणीकरण बायपास)
POST /xml.cgi?action=getauth जिसमें username/password से परे अप्रत्याशित एट्रिब्यूट
होते हैं (यहाँ: codeofday=1 / support=1; सार्वजनिक स्रोतों में वास्तविक नाम
छिपाए गए हैं — अंतिम नियमों के लिए फ़र्मवेयर से प्राप्त करें)।Server: nginx) अंतर्निहित रूप से भेद्य है — बैनर/संस्करण
डिटेक्शन सबसे उच्च-निष्ठा वाला सिग्नल है।CVE-2025-41451 (कमांड इंजेक्शन → RCE)
POST /xml.cgi?action=set_email_config जिसमें ईमेल पासवर्ड फ़ील्ड
(कॉन्फ़िग आइटम 0x1be1) में शेल मेटाकैरेक्टर (; | & $() `) होते हैं।
वैध SMTP पासवर्ड में शायद ही कभी ;+कमांड होता है।x'; <cmd> # / $(<cmd>) आदि — देखें टैग किए गए
constructed_cmd: लॉग लाइनें कि मान ठीक कैसे शेल में पहुँचता है।id, curl, ...) स्पॉन करना।CVE-2025-41452 (nginx कॉन्फ़िग इंजेक्शन → ट्रैफ़िक हेरफेर / DoS)
xml.cgi?action=load_nginx_headers (फ़ाइलनाम headers.conf) पर प्रमाणीकृत
मल्टीपार्ट अपलोड। दुर्लभ एडमिन रखरखाव के अलावा इस एंडपॉइंट को कॉल करने का
कोई सौम्य कारण नहीं है — वॉल्यूम-आधारित अलर्टिंग काम करती है।location, proxy_pass, rewrite,
add_header निर्देश होना।emulator/aksm800a_emulator.py:generate_code) प्रदान करता है जो दस्तावेज़ीकृत
गुण (कोड केवल डिवाइस तिथि से व्युत्पन्न) को संरक्षित रखता है। PoC और एमुलेटर
इसे साझा करते हैं, इसलिए चेन एंड-टू-एंड कार्यात्मक है। वास्तविक हार्डवेयर के लिए,
फ़र्मवेयर से check_code_of_day निकालें और इसे इसमें डालें।id → प्रूफ़ फ़ाइल)।
केवल 127.0.0.1 पर बाइंड/रन करें।