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

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

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

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

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

श्रेणियाँ

सभी श्रेणियाँ देखें
Loading categories
CVE-2026-64560-Analysis — Linux कर्नेल UAF विश्लेषण CVE-2026-64560 के लिए, जिसमें रेस-ट्रिगरिंग PoC, पैच समीक्षा, प्रभावित LTS/Android संस्करण मैट्रिक्स, और पैच किए गए डिवाइसों के लिए स्व-जांच शामिल है। | Kitploit
उपकरण/GitHubGitHub/villager1314/cve-2026-64560-analysis
एंड्रॉइड सुरक्षाभेद्यता विश्लेषणशोषणमोबाइल सुरक्षालर्निंग और शिक्षाबाइनरी शोषण
GitHubvillager1314/cve-2026-64560-analysis

CVE-2026-64560-Analysis

Linux कर्नेल UAF विश्लेषण CVE-2026-64560 के लिए, जिसमें रेस-ट्रिगरिंग PoC, पैच समीक्षा, प्रभावित LTS/Android संस्करण मैट्रिक्स, और पैच किए गए डिवाइसों के लिए स्व-जांच शामिल है।

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

सभी देखें →

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

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

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

सभी उपकरण देखें →
साझा करें
रिपॉजिटरी देखें
11451 महीना पहलेKitploit द्वारा समीक्षित

CVE-2026-64560 — Linux Kernel posix-cpu-timers गैर-लीडर exec() रेस UAF

Reproducer / PoC (ट्रिगर सत्यापन प्रकार): Linux और Android (NDK) यह रिपॉज़िटरी केवल अपने स्वयं के परीक्षण उपकरणों पर पैच स्थिति सत्यापित करने और शोध/सीखने के लिए है; इसमें कोई विशेषाधिकार वृद्धि/शोषण प्रिमिटिव शामिल नहीं है।

CVSS 3.1 CVSS 4.0 (SUSE) CWE-416 Fix


1. भेद्यता अवलोकन

फ़ील्डविवरण
CVE IDCVE-2026-64560
शीर्षकposix-cpu-timers: Prevent UAF caused by non-leader exec() race
प्रकारUse-After-Free (CWE-416), प्रतिस्पर्धा स्थिति
CNAkernel.org (Linux CNA)
CVSS v3.17.8 High — CVSS:3.1/AV:L/AC:L/PR:L/UI:N/S:U/C:H/I:H/A:H
CVSS v4.0 (SUSE)8.5 High — CVSS:4.0/AV:L/AC:L/AT:N/PR:L/UI:N/VC:H/VI:H/VA:H/SC:N/SI:N/SA:N
EPSS~0.12% (दूसरा परसेंटाइल, 2026-08 तक)
CISA KEVसूचीबद्ध नहीं
सार्वजनिक तिथि2026-07-29
फिक्स कमिट (मेनलाइन)920f893f735e92ba3a1cd9256899a186b161928d
समस्या पेश करने वाला कमिट (Fixes:)55e8c8eb2c7b (v5.7, 2020) — "posix-cpu-timers: Store a reference to a pid not a task"
फिक्स करने वालाThomas Gleixner <[email protected]>
रिपोर्ट करने वालेWongi Lee <[email protected]>, Jungwoo Lee <[email protected]>
प्रभावित फ़ाइलेंkernel/exit.c, kernel/signal.c, kernel/time/posix-cpu-timers.c

प्रभावित संस्करण

यह भेद्यता v5.7 (2020-05) में पेश की गई थी, और फिक्स को सभी स्थिर शाखाओं में बैकपोर्ट किया गया है:

ब्रांचप्रभावितफिक्स संस्करण (≥)स्थिर फिक्स कमिट
5.10 LTS5.7 ~ 5.10.2615.10.26267aa823e3e8c
5.15 LTS~ 5.15.2125.15.213d8bcb28abad8
6.1 LTS~ 6.1.1796.1.180cc35ddbc4973
6.6 LTS~ 6.6.1466.6.14712a891c773ae
6.12 LTS~ 6.12.996.12.100e74443f5db00
6.18~ 6.18.406.18.416a7ecc25abe6
7.1~ 7.1.47.1.5ad1cafa1bdaa
mainline< 7.2-rc37.2-rc3920f893f735e

Android संबंध

Android GKI कर्नेल 5.10 / 5.15 / 6.1 / 6.6 / 6.12 LTS पर आधारित हैं, और सभी प्रभावित सीमा में आते हैं। चूँकि मेनलाइन फिक्स कमिट 2026-07-29 को जारी किया गया था, 2026-08-01 या उससे पहले के SPL (सुरक्षा पैच स्तर) वाले Android डिवाइसों में अधिकतर यह फिक्स शामिल नहीं है। डिवाइस पर adb shell cat /proc/version और getprop ro.build.version.security_patch के द्वारा कर्नेल संस्करण और SPL की पुष्टि करें।


2. तकनीकी विवरण

2.1 पृष्ठभूमि: posix CPU टाइमर और sighand

POSIX CPU टाइमर (timer_create(CLOCK_PROCESS_CPUTIME_ID, ...) / timer_create(CLOCK_THREAD_CPUTIME_ID, ...)) कर्नेल में kernel/time/posix-cpu-timers.c द्वारा प्रबंधित किए जाते हैं। प्रत्येक k_itimer अपने it.cpu.pid के माध्यम से लक्ष्य कार्य (task) को याद रखता है; टाइमर संचालन के लिए timerqueue की सुरक्षा हेतु lock_task_sighand(p, &flags) से उस task का sighand->siglock प्राप्त करना आवश्यक है।

2020 के कमिट 55e8c8eb2c7b ने टाइमर में कैश्ड task पॉइंटर को pid संदर्भ से बदल दिया (2010 के workaround e0a70217107e द्वारा पेश की गई समस्या को ठीक करने के लिए), और प्रत्येक संचालन से पहले pid_task(pid, type) लुकअप किया गया। इस परिवर्तन ने इस CVE के लिए रेस विंडो छोड़ दी।

2.2 रेस परिदृश्य (गैर-लीडर थ्रेड exec)

जब execve() गैर-लीडर थ्रेड द्वारा शुरू किया जाता है, तो de_thread() → switch_leader() TGID को पुराने लीडर से नए लीडर में स्थानांतरित करता है, और पुराना लीडर release_task() → __exit_signal() से गुजरता है, जिसमें old_leader->sighand = NULL सेट किया जाता है और unhash_task(old_leader) किया जाता है।

इसी समय, दूसरे CPU पर निष्पादित sys_timer_delete() → posix_cpu_timer_del():

 sys_timer_delete()                        exec()
   posix_cpu_timer_del()
   // 观察到旧 leader
   p = pid_task(pid, pid_type);            de_thread()
                                             switch_leader();
                                             release_task(old_leader)
                                               __exit_signal(old_leader)
                                                 sighand = lock(old_leader, sighand);
                                                 posix_cpu_timers*_exit();
   sighand = lock_task_sighand(p)            unhash_task(old_leader);
     sh = lock(p, sighand)                   old_leader->sighand = NULL;
                                               unlock(sighand);
     (p->sighand == NULL)
       unlock(sh)
       return NULL;

   // 直接返回,没有摘链!
   if (!sighand)
      return 0;
   free_posix_timer();   // ← k_itimer 被释放

posix_cpu_timer_del() द्वारा प्राप्त p पुराना लीडर है, और इस समय p->sighand == NULL है; फ़ंक्शन मानता है कि "कार्य बाहर निकल रहा है, exit पथ लिंक हटाने का ध्यान रखेगा", इसलिए कुछ भी किए बिना सफलता लौटाता है। उसके बाद free_posix_timer() k_itimer को मुक्त कर देता है।

मुख्य बिंदु: exec() और exit() अलग हैं — exec() में TGID अपरिवर्तित रहता है, और प्रोसेस-स्तर (p->signal->cpu_timers) पर जुड़े armed टाइमर विरासत में मिलते हैं और अभी भी कतार में बने रहते हैं। इस प्रकार:

  • run_posix_cpu_timers() (tick में timerqueue ट्रैवर्सल) मुक्त वस्तु के timerqueue_node तक पहुँचता है → UAF पढ़ना/लिखना;
  • अन्य टाइमरों पर add/delete संचालन भी इस डैंगलिंग नोड युक्त rbtree को ट्रैवर्स करेंगे → UAF।

इसी प्रकार की समस्याएँ निम्न में भी मौजूद हैं:

  • posix_cpu_timer_set(): सामान्य टाइमर केवल अस्थायी रूप से -ESRCH लौटाता है; लेकिन कर्नेल आंतरिक do_cpu_nanosleep() स्टैक पर आवंटित k_itimer का उपयोग करता है, यह वही UAF है।
  • posix_cpu_timer_rearm(): चुपचाप rearm विफल हो जाता है, टाइमर फिर कभी समाप्त नहीं होता (कार्यात्मक बग)।

2.3 कमजोर-क्रम आर्किटेक्चर पर द्वितीयक समस्या

Frederic Weisbecker ने बताया: __exit_signal() में tsk->sighand = NULL एक साधारण स्टोर है; ARM64 जैसे कमजोर-क्रम आर्किटेक्चर पर, जब posix_cpu_timer_del() sighand == NULL देखता है, तो यह गारंटी नहीं है कि वह posix_cpu_timers*_exit() से पहले के अनलिंक लेखन को देखेगा, जिससे WARN_ON_ONCE(timer_queued(tmr)) गलत तरीके से ट्रिगर हो सकता है।

2.4 फिक्स दृष्टिकोण

  1. __exit_signal() में smp_store_release(&tsk->sighand, NULL) का उपयोग करें;
  2. lock_task_sighand() के !sighand पथ में smp_acquire__after_ctrl_dep() जोड़ें;
  3. नया हेल्पर timer_lock_sighand() जोड़ें: task खोजें + sighand लॉक करें; यदि sighand == NULL है तो वापस लौटने के बजाय खोज फिर से करें — exec परिदृश्य में नया लीडर मिलेगा, exit परिदृश्य में खोज विफल होने पर ही छोड़ें;
  4. तीनों प्रभावित फ़ंक्शन (_del / _set / _rearm) समान रूप से इस हेल्पर का उपयोग करें।

पूर्ण diff के लिए patches/920f893f735e.patch देखें।


3. PoC विवरण (ट्रिगर सत्यापन, विशेषाधिकार वृद्धि शोषण नहीं)

poc/ में एक प्रतिस्पर्धा ट्रिगर प्रदान किया गया है: दो थ्रेड उच्च तीव्रता पर लूप चलाते हैं

  • थ्रेड A (टाइमर थ्रेड): बार-बार timer_create(CLOCK_PROCESS_CPUTIME_ID) → arm (बहुत छोटा प्रारंभिक समाप्ति समय) → व्यस्त-प्रतीक्षा ट्रिगर → timer_delete();
  • थ्रेड B (exec थ्रेड): बार-बार fork() → चाइल्ड प्रोसेस में एक गैर-लीडर थ्रेड बनाएं, और वह थ्रेड execve() को कॉल करे (गैर-लीडर exec इस भेद्यता के लिए आवश्यक शर्त है), माता-पिता तुरंत waitpid() से रीसाइकिल करता है।
टूल डाउनलोड करें