
HikCentral Professional - प्री-ऑथ लाइसेंस एक्टिवकोड लीक
कुछ भी डाउनलोड करने से पहले, पहले से सार्वजनिक क्या है:
| स्रोत | यह हमें क्या बताता है |
|---|---|
| Hikvision सुरक्षा सलाह | "API एंडपॉइंट पर प्रमाणीकरण जाँच गायब", V2.6.3 / V3.0.1 में अपग्रेड करने की सलाह |
| NVD CVE-2025-39247 | CVSS मेट्रिक्स; वेक्टर network, no auth, scope-changed, confidentiality-high है |
| Wiz, ZeroPath, SentinelOne, OffSeq, gbhackers, cybersecuritynews सारांश | सभी सलाह को दोहराते हैं; कोई तकनीकी विवरण नहीं, कोई PoC नहीं, कोई प्रभावित एंडपॉइंट नाम नहीं |
| GitHub PoC एग्रीगेटर (poc-in-github, 0xMarcio/cve, आदि) | कोई PoC अनुक्रमित नहीं |
| फ़ोरम (ipcamtalk, cctvforum, reddit), टोरेंट इंडेक्सर | कोई PoC नहीं, कोई लीक हुआ इंस्टॉलर नहीं; ipcamtalk पर HikCentral उपयोग थ्रेड है लेकिन एक्सप्लॉइट-संबंधित कुछ भी नहीं |
तो विश्लेषण तिथि के अनुसार, कोई सार्वजनिक तकनीकी लेख बग को उजागर नहीं करता है। कोई भी पुनरुत्पादन बाइनरी डिफिंग से शुरू होता है।
CVE-2025-39247 प्रकाशित होने के बाद V2.6.2 डाउनलोड पृष्ठ को हटा दिया गया, लेकिन CDN पर फ़ाइल कभी शुद्ध नहीं की गई। फ़ाइल नाम एक तृतीय-पक्ष मिरर से प्राप्त किया जा सकता है जिसने हटाने से पहले पृष्ठ को अनुक्रमित किया था (FileHorse — प्रकाशित फ़ाइल नाम और MD5)। उस फ़ाइल नाम के साथ, Hikvision के CDN पर एक साधारण GET — केवल एक सामान्य ब्राउज़र User-Agent और एक मेल खाते Referer हेडर का उपयोग करके — अभी भी इसे प्रस्तुत करता है।```bash
curl -A "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 Chrome/120.0"
-H "Referer: https://www.hikvision.com/en/support/download/software/hikcentral-professional-v2-6-2/"
-O
"https://www.hikvision.com/content/dam/hikvision/en/support/download/vms/hcp-2-6-2/HikCentral-Professional_Full-Pack_V2.6.2.202501211507_Win_x64_Installer.exe"
आकार: 1,314,043,792 बाइट्स (1.22 जीबी)
- MD5: `76d42e7cb16dc0e177b9a35d0fed7ced` — FileHorse-प्रकाशित मान से मेल खाता है, जो वास्तविक Hikvision-हस्ताक्षरित इंस्टॉलर की पुष्टि करता है (तीसरे पक्ष का रीबंडल नहीं)
- CDN प्रतिक्रिया हेडर: `HTTP/2 200`, `content-type: application/x-msdownload`, `eo-cache-status: HIT`, `age: 2520395` (लगभग 29 दिन Tencent EdgeOne एज कैश में बिना निष्कासन के)
**Hikvision PSIRT को रिपोर्ट करने योग्य पार्श्व अवलोकन:** V2.6.2 पृष्ठ का "डीलिस्टिंग" सतही है। अनाथ फ़ाइल बिना प्रमाणीकरण और बिना signed-URL गेट के CDN पर पहुंच योग्य है। V2.5.1 और V2.6.0 फुल पैक उसी तरह प्रतिक्रिया देते हैं।
### 2.2 पैच किया गया इंस्टॉलर (V2.6.3 बेस पैक)
वर्तमान में V2.6.3 डाउनलोड पृष्ठ से लिंक किया गया है; वही पुनर्प्राप्ति विधि:```
https://www.hikvision.com/content/dam/hikvision/en/support/download/vms/hcp-2-6-3/HikCentral-Professional_Base-Pack_V2.6.3.202508280142_Win_x64_Installer.exe
अभी भी V2.6.2 डाउनलोड पृष्ठ से लिंक किया गया है (Hikvision चाहता है कि उपयोगकर्ता इसे लागू करें):``` https://www.hikvision.com/content/dam/hikvision/en/support/download/vms/cve-2025-39247-security-vulnerability-patch/HikCentral-Professional_CVE-2025-39247_FixPack_V2.3.1-V2.6.2V3.0.0_20250904.exe
- आकार: 32,599,504 बाइट्स (31 MB)
---
## 3. स्थैतिक निष्कर्षण
ये तीनों InstallShield-शैली के PE रैपर हैं। `7z` इन्हें दो पासों में अलग करता है:```bash
# pass 1 — extract PE resources
7z x -o./extracted/v262/pe downloads/<v2.6.2 installer>
7z x -o./extracted/v263/pe downloads/<v2.6.3 installer>
# pass 2 — extract the nested 7-Zip streams hiding in PE resources
# (note: the resource-type label says "ZIP" but the byte signature is 7-Zip)
for ver in v262 v263; do
for z in extracted/$ver/pe/.rsrc/2052/ZIP/*; do
sz=$(stat -c %s "$z"); [ "$sz" -lt 1048576 ] && continue
7z x -o"extracted/$ver/payload/$(basename $z)" "$z"
done
done
दोनों इंस्टॉलर लगभग दो दर्जन नामित पेलोड आर्काइव में विस्तारित होते हैं। शीर्ष-स्तरीय निर्देशिकाएँ आर्किटेक्चर दिखाती हैं:
| Archive | Contents |
|---|---|
246/Nginx + 246/www | Nginx वेब टियर (सामने का दरवाजा) और SPA वेब UI |
244/bin | नेटिव C++ सेवा बाइनरी + प्रमाणपत्र |
240 | बंडल PostgreSQL + डीबी इनिशियलाइज़ेशन स्क्रिप्ट |
238 | Bee* रनटाइम (BeeAgent, BeeGuard, …) |
282 | एप्लिकेशन सेवाएं और ऐडऑन (C++ बैकएंड कोड का बड़ा हिस्सा) |
281, 283-284, 396, 398-399, 513, 520, 538-541, 573 | छोटे ऐडऑन, प्लगइन, अपग्रेड/अनइंस्टॉल स्टब्स |
महत्वपूर्ण बात यह है कि कहीं भी कोई Java JARs/WARs नहीं हैं। बैकएंड Nginx पर C++ है — यह महत्वपूर्ण है क्योंकि यह तुरंत बताता है कि कोई भी प्रमाणीकरण दोष संकलित बाइनरी में होगा, न कि WAR/JAR बाइटकोड में जहाँ डीकंपिलेशन आसान होता है।
for ver in v262 v263: find . -type f -print0 | xargs -0 md5sum | sort -k2 > inv_$ver.txt
v262 = {ln[34:]: ln[:32] for ln in open("inv_v262.txt")} v263 = {ln[34:]: ln[:32] for ln in open("inv_v263.txt")} common = set(v262) & set(v263) changed = [p for p in common if v262[p] != v263[p]]
परिणाम: सामान्य पथों में 239 बदली हुई फ़ाइलें। वितरण:
| बकेट | गणना | टिप्पणी |
|---|---|---|
| `246/www/*.js` (Web UI चंक) | ~200 | अधिकतर वर्शन-बढ़ाए गए एसेट हैश; उपेक्षा करें |
| `246/Nginx/conf/nginx_location.conf` | **1** | **एकल-फ़ाइल Nginx कॉन्फिग डेल्टा — यहाँ से शुरू करें** |
| `246/Nginx*/install.bat` | 6 | इंस्टॉल स्क्रिप्ट, असंबंधित |
| `244/bin/*.{exe,dll}` | 6 | नेटिव बाइनरी (`DistributionFilter.dll`, `FilterChain.dll`, मीडिया उपकरण) |
| `282/*.{exe,dll}` | 55 | एप्लिकेशन सेवाएँ (सबसे बड़ा क्लस्टर — `platform.dll`, `PersonCredential.dll`, `baseacs.*`, …) |
| `240/bin/pg_*` | 6 | Postgres पुनर्निर्माण, असंबंधित |
| `284/hplugin/dahua_plugin/*` | 4 | विक्रेता SDK रीफ्रेश (+10.97 MB) — असंबंधित |
| `284/hplugin/onvif_plugin/*` | 4 | विक्रेता SDK रीफ्रेश (+0.99 MB) — असंबंधित |
| अपग्रेड/अनइंस्टॉल स्टब्स, क्रैश रिपोर्टर्स | ~30 | समान आकार के PE टाइमस्टैम्प पुनर्निर्माण, उपेक्षा करें |
विक्रेता SDK रीफ्रेश, बिल्ड-सिस्टम टाइमस्टैम्प ड्रिफ्ट, और विशुद्ध कॉस्मेटिक एसेट बढ़ोतरी को फ़िल्टर करने के बाद, *वास्तविक* सुरक्षा-प्रासंगिक डेल्टा इस प्रकार कम हो जाते हैं:
- एक Nginx कॉन्फिग फ़ाइल
- `282/` में C++ बाइनरी की एक छोटी संख्या (सबसे प्रमुख रूप से `platform.dll`, HCMP बैकएंड सेवा, +57 KB)
---
## 5. Nginx डिफ़: मुफ़्त बग स्थान
V2.6.2 और V2.6.3 के बीच `diff -u nginx_location.conf` चलाने पर ठीक एक हंक उत्पन्न होता है: V2.6.3 में एक बिल्कुल नया `location =` ब्लॉक।```nginx
#禁止非127.0.0.1和::1的重置密码 ← "Forbid non-127.0.0.1/::1 password reset"
location = /ISAPI/Bumblebee/Platform/V0/Permission/ChangeDefaultUserPassword {
if ($remote_addr ~ ^(127\.0\.0\.1|::1)$) { set $allowed 1; }
if ($allowed != "1") { return 403; }
if ($scheme = "http") { proxy_pass http://http_backend; }
if ($scheme = "https") { proxy_pass http://http2_backend; }
}
वह एकल 21-पंक्ति जोड़, फ्रंट-डोर स्तर पर CVE-2025-39247 का संपूर्ण फिक्स है, और यह आपको सब कुछ बताता है:
PUT /ISAPI/Bumblebee/Platform/V0/Permission/ChangeDefaultUserPassword/ISAPI/Bumblebee/Platform/V0/* प्रॉक्सी निर्देश से होते हुए बैकएंड तक पहुंचता है जिसमें कोई रिमोट-एड्रेस प्रतिबंध और कोई Nginx-स्तरीय प्रमाणीकरण जांच नहीं है।चीनी टिप्पणी महत्वपूर्ण है: इसका शाब्दिक अनुवाद है "गैर-127.0.0.1/::1 से पासवर्ड रीसेट निषिद्ध करें"।
वेब UI जावास्क्रिप्ट (minified, 246/www/Portal/*.js में) एंडपॉइंट को इस प्रकार कॉल करता है: