Skip to content
KitploitKITPLOIT
उपकरणब्लॉग
जमा करें
उपकरणब्लॉग
जमा करें

हैकिंग, पेनटेस्ट और साइबर सुरक्षा उपकरण आपके सुरक्षा शस्त्रागार के लिए!

Kitploit हैकिंग, साइबर सुरक्षा और पेंटेस्टिंग टूल्स की एक निर्देशिका है। कमजोरियों को खोजने, सिस्टम का विश्लेषण करने, परीक्षण को स्वचालित करने और अपनी सुरक्षा को मजबूत करने के लिए नवीनतम प्रोजेक्ट अपडेट खोजें।

··फ़ीड·संपर्क·गोपनीयता·© 2026 Kitploit

टूल निर्देशिका

श्रेणियाँ

सभी श्रेणियाँ देखें
Loading categories
KVM-Januscape — CVE-2026-53359 भेद्यता पैच | Kitploit
उपकरण/GitHubGitHub/xj2268-ta/kvm-januscape
भेद्यता विश्लेषणशोषणबाइनरी विश्लेषण
GitHubxj2268-ta/kvm-januscape

KVM-Januscape

CVE-2026-53359 भेद्यता पैच

रिपॉजिटरी देखें
21 महीना पहलेअभी तक समीक्षित नहीं

सबसे लोकप्रिय

सभी देखें →

हमारे समुदाय द्वारा सबसे अधिक उपयोग किए जाने वाले उपकरण खोजें।

सभी उपकरण खोजें

हमारे उपकरणों का संग्रह ब्राउज़ करें

सभी उपकरण देखें →
साझा करें

KVM-XJ हॉट पैच

dump_tool.py ऑफ़सेट स्वतः खोजता है; इसका उपयोग कैसे करें, यह समझने के लिए कोड खुद देखें।

भेद्यता सिंहावलोकन

CVE-2026-53359 (Januscape) Linux कर्नेल KVM शैडो MMU में उपयोग-के-बाद-मुक्त (UAF) भेद्यता है।

  • अव्यक्त अवधि: 16 वर्ष (अगस्त 2010 से जुलाई 2026)
  • प्रभाव क्षेत्र: सभी Intel/AMD x86 सिस्टम जिनमें नेस्टेड वर्चुअलाइज़ेशन सक्षम है
  • खतरा स्तर: उच्च जोखिम; VM के अंदर root उपयोगकर्ता होस्ट में पलायन कर सकता है और होस्ट root अनुमतियाँ प्राप्त कर सकता है
  • शोषण विधि: होस्ट कर्नेल पैनिक (DoS) या पूर्ण वर्चुअल मशीन पलायन (कोई सार्वजनिक POC नहीं)

भेद्यता का सिद्धांत

kvm_mmu_get_page() फ़ंक्शन हैश तालिका में पुनः उपयोग योग्य शैडो पेज टेबल खोजते समय केवल gfn (अतिथि भौतिक पृष्ठ फ्रेम संख्या) की तुलना करता है, role (पेज टेबल भूमिका/MMU भूमिका) की तुलना नहीं करता, जिससे भूमिका मेल न खाने वाली पेज टेबल गलत तरीके से पुनः उपयोग होती है और UAF उत्पन्न होता है।

root@kitploit:~
修复前(有漏洞):
┌──────────────────────────────────────┐
│ kvm_mmu_get_page()                   │
│   遍历哈希表                          │
│   if (child->gfn == gfn)             │
│       return child  ← 只比较gfn!     │
│       角色不匹配也复用 → UAF!         │
│   分配新页(安全)                     │
└──────────────────────────────────────┘

अपस्ट्रीम कर्नेल commit 81ccda30b4e8 में एक role तुलना पंक्ति जोड़ी गई:

root@kitploit:~
// 修复前
if (... && spte_to_child_sp(*sptep)->gfn == gfn)

// 修复后
if (... && spte_to_child_sp(*sptep)->gfn == gfn
       && spte_to_child_sp(*sptep)->role.word == role.word)

मेरी मरम्मत विधि

विधि: text_poke बाइनरी हॉट पैच (NOP पैच)

यह कर्नेल स्रोत कोड को संशोधित नहीं करता, फ़ंक्शन को प्रतिस्थापित नहीं करता, बल्कि सीधे चालू कर्नेल की मेमोरी में भेद्य इंस्ट्रक्शन को संशोधित करता है।

सिद्धांत

root@kitploit:~
二进制层面:
偏移 0x104: 49 39 47 28          cmp %rax, 0x28(%r15)   ← 比较 gfn
偏移 0x108: 0f 84 9f 01 00 00    je   +0x19f            ← 匹配就跳转复用

打补丁后:
偏移 0x108: 66 0f 1f 44 00 00    NOP × 6               ← 什么也不做
root@kitploit:~
修复后:
┌──────────────────────────────────────┐
│ kvm_mmu_get_page()                   │
│   遍历哈希表                          │
│   if (child->gfn == gfn)             │
│       NOP(跳转被抹掉,滑过去)        │
│   分配新页(强制走安全路径)            │
│   → 不复用 = 不触发 UAF = 漏洞修复     │
└──────────────────────────────────────┘

तकनीकी कार्यान्वयन

  1. kallsyms_lookup_name के माध्यम से kvm_mmu_get_page फ़ंक्शन का पता खोजें
  2. kallsyms_lookup_name के माध्यम से text_poke फ़ंक्शन खोजें (कर्नेल कोड हॉट-संशोधन API)
  3. सभी CPU को रोकने के लिए stop_machine का उपयोग करें, यह सुनिश्चित करें कि संशोधन सुरक्षित है
  4. text_poke से 6-बाइट je इंस्ट्रक्शन को 6-बाइट NOP से बदलें
  5. अनलोड करते समय text_poke से मूल इंस्ट्रक्शन को पुनर्स्थापित करें

अन्य समाधान क्यों नहीं

प्रभाव आकलन

परिनियोजन आवश्यकताएँ

शर्तविवरण
कर्नेल संस्करणLinux 4.18+ (CentOS 8 / RHEL 8 / Rocky 8 आदि)
कंपाइलेशन वातावरणkernel-devel + gcc + make

कंपाइल और लोड करना

root@kitploit:~
# 编译
make

# 加载热补丁
insmod KVM-XJ.ko

# 查看状态
dmesg | grep KVM-XJ
cat /sys/module/kvm_intel/parameters/nested   # 应该还是 1
lsmod | grep KVM_XJ

# 卸载(恢复原始代码)
rmmod KVM_XJ

अन्य कर्नेल के लिए अनुकूलन

विभिन्न कर्नेल संस्करणों में कंपाइलर ऑप्टिमाइज़ेशन अलग होता है, और je इंस्ट्रक्शन का ऑफ़सेट भी अलग होता है। स्वचालित विश्लेषण के लिए dump_tool.py का उपयोग करें:

root@kitploit:~
# 1. 从母鸡下载 kvm.ko
scp root@母鸡:/lib/modules/.../kvm.ko.xz .
xz -d kvm.ko.xz

# 2. 运行分析工具
python dump_tool.py kvm.ko

# 3. 工具会输出 patch 偏移,修改 KVM-XJ.c 中的 0x108

सत्यापित कर्नेल

कर्नेल संस्करणje ऑफ़सेटस्थिति
4.18.0-496.el8.x86_640x108परीक्षण किया गया
4.18.0-358.el8.x86_640xe8परीक्षण किया गया

सावधानियाँ

  1. जो लोग इसका उपयोग करना नहीं जानते या कोड नहीं समझ सकते, उन्हें इसका उपयोग न करने की सलाह दी जाती है।
टूल डाउनलोड करें
समाधानसमस्या
कर्नेल अपग्रेड करके रिबूटहोस्ट को रिबूट करना पड़ता है, सभी VM बंद हो जाते हैं
nested=0 (नेस्टेड वर्चुअलाइज़ेशन बंद करना)नेस्टेड वर्चुअलाइज़ेशन क्षमता समाप्त, VM के अंदर VM नहीं चला सकते
kpatch विधिkernel-debuginfo चाहिए, कंपाइलेशन में 10-20 मिनट लगते हैं, निर्भरताएँ जटिल हैं
ftrace फ़ंक्शन प्रतिस्थापनkvm_mmu_get_child_sp GCC द्वारा inline कर दिया गया है, कोई स्वतंत्र फ़ंक्शन प्रवेश बिंदु नहीं है
मेरी text_poke विधि10 सेकंड में कंपाइल होती है, एक .c फ़ाइल, सीधे भेद्य इंस्ट्रक्शन को संशोधित करती है
कार्यक्षमताप्रभाव
होस्ट रिबूटआवश्यक नहीं
VM रिबूट/माइग्रेशनआवश्यक नहीं
नेस्टेड वर्चुअलाइज़ेशन (VM के अंदर VM चलाना)संरक्षित, सामान्य रूप से कार्य करता है
वर्चुअल मशीन बनाना/शुरू करनासामान्य
KSM मेमोरी मर्जिंगकोई प्रभाव नहीं, स्वतंत्र कार्यक्षमता
CPU प्रदर्शनलगभग कोई प्रभाव नहीं (NOP CPU उपभोग नहीं करता)
मेमोरीशैडो पेज टेबल फिर से उपयोग नहीं होतीं, हर बार नया पेज आवंटित होता है, थोड़ी अतिरिक्त मेमोरी लेता है
KVM मॉड्यूल अनलोडसामान्य (rmmod मूल कोड को स्वचालित रूप से पुनर्स्थापित करता है)
होस्ट रिबूट
आवश्यक नहीं
VM बंद करनाआवश्यक नहीं
नेस्टेड वर्चुअलाइज़ेशनसंरक्षित