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

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

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

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

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

श्रेणियाँ

सभी श्रेणियाँ देखें
Loading categories
uaf-2023-28205 — PoC CVE-2023-28205: Apple WebKit Use-After-Free भेद्यता | Kitploit
उपकरण/GitHubGitHub/seregonwar/uaf-2023-28205
भेद्यता विश्लेषणशोषणवेब एप्लिकेशन शोषणलर्निंग और शिक्षापेलोड डेवलपमेंटबाइनरी शोषण
GitHubseregonwar/uaf-2023-28205

uaf-2023-28205

PoC CVE-2023-28205: Apple WebKit Use-After-Free भेद्यता

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

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

सभी देखें →

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

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

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

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

CVE-2023-28205: Apple WebKit उपयोग-के-बाद-मुक्त भेद्यता

यह भेद्यता Apple WebKit को प्रभावित करती है और दुर्भावनापूर्ण रूप से तैयार की गई वेब सामग्री के माध्यम से इसका शोषण किया जा सकता है, जो संभावित रूप से WebKit प्रक्रिया के संदर्भ में मनमाना कोड निष्पादन की अनुमति देता है।

इस रिपॉजिटरी में विश्लेषित प्रभावित WebKit बिल्ड WebKit-613.1.17.1 (PlayStation / Safari 15.4 वंशावली) पर आधारित है।


विवरण

प्रूफ ऑफ कॉन्सेप्ट संरचित क्लोनिंग ऑपरेशनों के दौरान Map और Date जैसी जावास्क्रिप्ट वस्तुओं के पंजीकरण को जानबूझकर विलंबित करके use-after-free (UAF) स्थिति को ट्रिगर करता है।

यह समय विंडो JavaScriptCore कचरा संग्राहक (GC) को उन वस्तुओं को पुनः प्राप्त करने की अनुमति देता है जो तार्किक रूप से अभी भी उपयोग में हैं, जिसके परिणामस्वरूप निष्पादन जारी रहने के दौरान पुराने पॉइंटर्स को डीरेफरेंस किया जाता है।


तकनीकी मूल कारण (CVE-2023-28205)

प्रभावित घटक

  • SerializedScriptValue
CloneDeserializer::deserialize()

मूल कारण

भेद्यता संरचित क्लोन डिसेरियलाइज़ेशन लॉजिक में निहित है, विशेष रूप से पुनरावर्ती डिसेरियलाइज़ेशन के दौरान नवनिर्मित जावास्क्रिप्ट वस्तुओं को ट्रैक करने के तरीके में।

SerializedScriptValue.cpp में, डिसेरियलाइज़र मानक WebKit कंटेनरों का उपयोग करता है जैसे:

root@kitploit:~
Vector<JSObject*, 32> outputObjectStack;
Vector<JSMap*, 4> mapStack;
Vector<JSSet*, 4> setStack;

ये Vector कंटेनर कचरा संग्राहक द्वारा स्कैन नहीं किए जाते हैं। यदि डिसेरियलाइज़ेशन के दौरान कचरा संग्रह चक्र ट्रिगर होता है (उदाहरण के लिए मेमोरी दबाव या पुनः प्रवेशी JS निष्पादन के माध्यम से), तो इन कंटेनरों द्वारा केवल संदर्भित वस्तुएं गलत तरीके से एकत्र की जा सकती हैं।

डिसेरियलाइज़र, हालांकि, इन लटकते पॉइंटर्स का उपयोग जारी रखता है, जिसके परिणामस्वरूप use-after-free स्थिति उत्पन्न होती है।

लापता फिक्स

आधिकारिक WebKit सुरक्षा पैच (कमिट c9880de) इन कंटेनरों को MarkedVector से बदल देता है, जो एक GC-जागरूक संरचना है जो अपनी सामग्री को GC रूट के रूप में ठीक से पंजीकृत करती है।

विश्लेषित बिल्ड में:

  • MarkedVector लागू नहीं है
  • CloneDeserializer अभी भी Vector का उपयोग करता है
  • GC इन अस्थायी वस्तु स्टैक को स्कैन नहीं करता है

यह पुष्टि करता है कि बिल्ड CVE-2023-28205 के लिए पूरी तरह से कमजोर है।


क्रैश विश्लेषण

पीओसी द्वारा निम्नलिखित क्रैश विश्वसनीय रूप से ट्रिगर किया गया था और यह पोस्ट-जीसी स्टेल पॉइंटर डीरेफरेंस के अनुरूप है।

मुख्य संकेतक

  • सिग्नल: SIGSEGV (11)
  • गलती पता: 0x0000000000000068
  • प्रक्रिया: SceNKWebProcess
  • मॉड्यूल: libSceNKWebKit.sprx

गलती पता 0x68 ऑब्जेक्ट-फील्ड ऑफसेट के साथ NULL बेस पॉइंटर डीरेफरेंस को इंगित करता है, जो एक मुक्त जावास्क्रिप्ट वस्तु तक पहुंचने का एक क्लासिक संकेत है।

रजिस्टर स्थिति पुष्टि करती है:

  • RAX = 0x0 (NULL ऑब्जेक्ट बेस)
  • निष्पादन पूरी तरह से WebKit यूज़रलैंड के भीतर
  • कोई कर्नेल या सिस्कॉल भागीदारी नहीं

यह क्रैश व्यवहार ऊपर वर्णित CloneDeserializer UAF की प्रत्यक्ष अभिव्यक्ति है।


क्रैश डंप

क्रैश डंप विस्तार से देखने के लिए क्लिक करें
root@kitploit:~
#
# A user thread receives a fatal signal
#
# signal: 11 (SIGSEGV)
# thread ID: 101395
# thread name: SceNKWebProcessMain
# proc ID: 88
# proc name: SceNKWebProcess
# reason: page fault (user read data, page not present)
# fault address: 0000000000000068
#
# registers:
# rax: 0000000000000000  rbx: 0000000000000000
# rcx: 000000020017e000  rdx: ffffffff00000000
# rsi: fffe000000000002  rdi: 0000000201d8c000
# rbp: 00000007eeff9f20  rsp: 00000007eeff9dc0
# r8 : 0000000200194c60  r9 : 00000002005ddc70
# r10: 0000000000000004  r11: 0000000000000000
# r12: 0000000200200000  r13: 0000000201d8c000
# r14: 0000000200880a00  r15: 0000000201d8c000
# rip: 0000000804d03bc1  eflags: 00010206
# BrF: 000000080424da9b  BrT: 0000000804d03aa0
#
# backtrace:
copyin: SceNKWebProcessMain has nonsleeping lock
# 000000080424daa0
# 00000008052127b1
# 0000000805224b1b
# 0000000805224b1b
# 0000000805224b92
# 0000000805224b1b
# 0000000805208549
# 00000008037cd403
# 0000000803ed90a5
# 0000000804c48bd2
# 00000008045e2295
# 0000000804073b3b
# 000000080337f214
# 0000000802c62f61
# 0000000803e2b04b
# 0000000804645f82
# 000000080306ddc0
# 0000000803a06adb
# 0000000802e77528
# 0000000804281a70
# 0000000803bff887
# 0000000000405181
# 0000000000403d84
# 00000000004045ef
# 0000000000000000
#
# dynamic libraries:
# /goHvLUnT0D/common/lib/NKWebProcess.self
#  text: 0000000000400000:0000000000408000 r-x
#  data: 000000000040c000:0000000000410000 rw-
#  fingerprint: 9f75275c0c9e6a8f512c46351676ba9c00000000
# /goHvLUnT0D/common/lib/libkernel_web.sprx
#  text: 0000000800000000:0000000800050000 r-x
#  data: 0000000800054000:000000080008c000 rw-
#  fingerprint: 5cc7d026be64eb384dc8edd813cf5dff00000000
# /goHvLUnT0D/common/lib/libSceLibcInternal.sprx
#  text: 000000080008c000:00000008001c0000 r-x
#  data: 00000008001c8000:00000008001e4000 rw-
#  fingerprint: 10c2fb20aecfba270ab36512cc6bcd3c00000000
# /goHvLUnT0D/common/lib/libSceSysmodule.sprx
#  text: 00000008001e4000:00000008001f0000 r-x
#  data: 00000008001f4000:0000000800200000 rw-
#  fingerprint: d53329218364300cfc9ac1ce2f5f319000000000
# /goHvLUnT0D/common/lib/libScePosixForWebKit.sprx
#  text: 0000000800200000:0000000800204000 r-x
#  data: 0000000800208000:000000080020c000 rw-
#  fingerprint: 2540b10c69fafebe19bf6c817f06a5dd00000000
# /goHvLUnT0D/common/lib/libcairo.sprx
#  text: 000000080020c000:0000000800318000 r-x
#  data: 0000000800320000:0000000800324000 rw-
#  fingerprint: 66924f66c3b2bcfd5877f0b6b53b17c800000000
# /goHvLUnT0D/common/lib/libcurl.sprx
#  text: 0000000800324000:00000008003d0000 r-x
#  data: 00000008003d4000:00000008003d8000 rw-
#  fingerprint: d07498e9ec79386fc781c8feeea9aa2800000000
# /goHvLUnT0D/common/lib/libfontconfig.sprx
#  text: 00000008003d8000:0000000800450000 r-x
#  data: 0000000800454000:0000000800458000 rw-
#  fingerprint: f588f705527618061e0a9e633018197300000000
# /goHvLUnT0D/common/lib/libfreetype.sprx
#  text: 0000000800458000:0000000800500000 r-x
#  data: 0000000800508000:000000080050c000 rw-
#  fingerprint: 55f0bf21e56f35c305acd791696e05b100000000
# /goHvLUnT0D/common/lib/libharfbuzz.sprx
#  text: 000000080050c000:00000008005cc000 r-x
#  data: 00000008005d0000:00000008005d4000 rw-
#  fingerprint: 0e11f91a091308d571226554af07ce4000000000
# /goHvLUnT0D/common/lib/libicu.sprx
#  text: 00000008005d4000:0000000802504000 r-x
#  data: 0000000802524000:0000000802528000 rw-
#  fingerprint: 1ef63fd860c70ff5f8744411e1ba581800000000
# /goHvLUnT0D/common/lib/libpng16.sprx
#  text: 0000000802528000:000000080255c000 r-x
#  data: 0000000802560000:0000000802564000 rw-
#  fingerprint: 1bb1e4c3acb314d2dd52df2ca6a7a03e00000000
# /goHvLUnT0D/common/lib/libSceIpmi.sprx
#  text: 0000000802564000:0000000802570000 r-x
#  data: 0000000802574000:0000000802588000 rw-
#  fingerprint: d5f95ff9044c26f90ff63c82fb0bbf5c00000000
# /goHvLUnT0D/common/lib/libSceSysCore.sprx
#  text: 0000000802588000:0000000802590000 r-x
#  data: 0000000802594000:0000000802598000 rw-
#  fingerprint: d577567a554a7563ef2327c820bf0ee200000000
# /goHvLUnT0D/common/lib/libSceNet.sprx
#  text: 0000000802598000:00000008025d0000 r-x
#  data: 00000008025d4000:00000008026e8000 rw-
#  fingerprint: 979f14da6d4c7aa75cdd4d4b2f3281c900000000
# /goHvLUnT0D/common/lib/libSceNetCtl.sprx
#  text: 00000008026e8000:00000008026f0000 r-x
#  data: 00000008026f4000:00000008026f8000 rw-
#  fingerprint: 162fbdf7aa83706cc0992108ca3393ae00000000
# /goHvLUnT0D/common/lib/libSceRandom.sprx
#  text: 00000008026f8000:00000008026fc000 r-x
#  data: 0000000802700000:0000000802704000 rw-
#  fingerprint: 976d3ebefe3870b97bfa1d8e82f1df2d00000000
# /goHvLUnT0D/common/lib/libSceLibreSsl3.sprx
#  text: 0000000802704000:000000080288c000 r-x
#  data: 00000008028ac000:00000008028b0000 rw-
#  fingerprint: bd895ec678ab2becafd45e954fba828400000000
# /goHvLUnT0D/common/lib/libSceRegMgr.sprx
#  text: 00000008028b0000:00000008028b4000 r-x
#  data: 00000008028b8000:00000008028bc000 rw-
#  fingerprint: 50fe32bc796e1dbda2337287e42091d100000000
# /goHvLUnT0D/common/lib/libSceSystemService.sprx
#  text: 00000008028bc000:00000008028f8000 r-x
#  data: 00000008028fc000:0000000802908000 rw-
#  fingerprint: 6fead8bbcbbf7002bee44d4d2104c8d300000000
# /goHvLUnT0D/common/lib/libSceMbus.sprx
#  text: 0000000802908000:0000000802914000 r-x
#  data: 0000000802918000:000000080291c000 rw-
#  fingerprint: eaf5e1ec79a60c0293ad42c039a9ff1a00000000
# /goHvLUnT0D/common/lib/libSceAvSetting.sprx
#  text: 000000080291c000:0000000802928000 r-x
#  data: 000000080292c000:0000000802930000 rw-
#  fingerprint: 6a745bdbf97da42d23745852daa2afc700000000
# /goHvLUnT0D/common/lib/libSceVideoOut.sprx
#  text: 0000000802930000:0000000802948000 r-x
#  data: 000000080294c000:0000000802950000 rw-
#  fingerprint: 504c9ecf78fdc9adf3fcd3721dc3975100000000
# /goHvLUnT0D/common/lib/libSceVideoCoreServerInterface.sprx
#  text: 0000000802950000:0000000802960000 r-x
#  data: 0000000802964000:000000080296c000 rw-
#  fingerprint: 4613f400001d613dda147326d8ef133900000000
# /goHvLUnT0D/common/lib/libSceNKWebKitRequirements.sprx
#  text: 000000080296c000:0000000802bdc000 r-x
#  data: 0000000802be0000:0000000802be8000 rw-
#  fingerprint: aa200eff9a5fd90b0c6f12853aa1cbd200000000
# /goHvLUnT0D/common/lib/libSceNKWebKit.sprx
#  text: 0000000802be8000:00000008060b8000 r-x
#  data: 00000008062c0000:00000008062f8000 rw-
#  fingerprint: bc8a78e3ddb906f6d0de352329701c2600000000
# /goHvLUnT0D/common/lib/libSceGLSlimClientVSH.sprx
#  text: 00000008062f8000:0000000806318000 r-x
#  data: 000000080631c000:0000000806320000 rw-
#  fingerprint: 1cea1ecf4ffd91dc02ca2b7bc92c3c0a00000000
<118>[Syscore App] App Crash : PID=0x58, reason=0xb
<118>[Syscore App] Syscore Event Queue Push : SCE_SYSCORE_EVENT_APP_CRASH
<118>[Syscore App] Syscore Event Queue Pop : SCE_SYSCORE_EVENT_APP_CRASH
<118>[SceLncService] AppCrash: pid={0x00000058} appId={0x60000201} appLocalPid={0x102012a5}
<118>[SceLncService] getCoredumpSequence() isDebuggable={0} isKeepProcess={1} isUserDebugRequest={0} isLimitKeepProcess={0} enableCrashReport={1}
<118>[SceLncService] CoredumpSequence = {DUMP_PROCESS}
<118>[SceLncService] getCoredumpMode() isSystem={0x00000001}, reason={0x0000000b}
<118>[SceLncService] notifyAppCrash() pid={0x00000058}, appId={0x60000201}, appLocalPid={0x102012a5}, coredump.path,name,mode={/user/data/sce_coredumps/NPXS20001_1767544376/,NPXS20001_1767544376.sorbisdmp,1}, enableCrashReport={1}, skipVshDump={0}
<118>[SceLncService] enableCrashReport={1}, crashReportMode={1}, isAllowed={0}
<118>[SceLncService] kick coredump is disabled.
<118>[Syscore App] Kill process: 0x58
<118>[VCS]closeSession() [APP->VCS] clientPid = 0x58.
<118>[Syscore App] EVFILT_PROC NOTE_EXIT received : pid=0x58
<118>[Syscore App] Kill process: 0x58 => 0
<118>[Syscore App] process delete event : pid=0x58
<118>[AppMgr Trace]: pid=0x58, deleted.
<118>[Syscore App] Syscore Event Queue Push : SCE_SYSCORE_EVENT_ON_PROCESS_UNLOADED
<118>[AppMgr] checkAppTerminated pid=0x2a is still alive in 0x60000201
<118>[Syscore App] Syscore Event Queue Pop : SCE_SYSCORE_EVENT_ON_PROCESS_UNLOADED
<118>[SceShellUI] W/PSM.UI : ** NOTICE: LoadSync : Parent_BrowserMain : FrameModalScene
<118>[SceShellUI] I/PSM.UI : OnFocusActiveSceneChanged [BrowserMain : MainScene] -> [Parent_BrowserMain : FrameModalScene]
<118>[SceShellUI] I/PSM.UI :      Scene [Parent_BrowserMain : FrameModalScene] : Alive
<118>SetDeviceIndexBehavior: mode=SpecificUser, param=0x1a599820
<118>[Theme/I] : Apply [RED] : [Option:111111]: with preloaded user
<118>[SceShellCore] Libc Heap Status: free 38%, in-use 3794.3 KB, trend +18.1 KB/min, peak 4267.3 KB, when 19698 [sec]
<118>[SceShellCore] VM Stats: RSS 533.4, kernel 271.1, wire count 332.2, swap out 24.2, page table CPU 2526/6144 GPU 271/2048

शोषण नोट्स

भेद्यता postMessage के माध्यम से पहुंचने योग्य एक स्थिर UAF प्रिमिटिव प्रदान करती है:

  1. एक जटिल ऑब्जेक्ट ग्राफ postMessage के माध्यम से भेजा जाता है
  2. डिसेरियलाइज़ेशन पुनरावर्ती ऑब्जेक्ट निर्माण को ट्रिगर करता है
  3. डिसेरियलाइज़ेशन के दौरान एक GC चक्र बलपूर्वक लाया जाता है
  4. केवल गैर-GC-सुरक्षित कंटेनरों में संदर्भित वस्तुएं मुक्त की जाती हैं
  5. डिसेरियलाइज़ेशन लटकते पॉइंटर्स का उपयोग करके जारी रहता है

यह JavaScriptCore आंतरिक संरचनाओं (जैसे StructureID, बटरफ्लाई पॉइंटर्स) के नियंत्रित मेमोरी भ्रष्टाचार की अनुमति देता है, जिससे यह बग उचित हीप शेपिंग के साथ विश्वसनीय शोषण के लिए एक मजबूत उम्मीदवार बन जाता है।


संदर्भ

  • WebKit सुरक्षा पैच: https://github.com/WebKit/WebKit/commit/c9880de4a28b9a64a5e1d0513dc245d61a2e6ddb

क्रेडिट

CVE-2023-28205 की खोज Clément Lecigne (Google Threat Analysis Group) और Donncha Ó Cearbhaill (Amnesty International Security Lab) द्वारा की गई थी।

मूल प्रूफ-ऑफ-कॉन्सेप्ट प्रेरणा के लिए abc का धन्यवाद।

ntfargo के पॉक रिपॉजिटरी uaf-2023-28205 पर आधारित।

टूल डाउनलोड करें