CVE-2025-71069 in Linux
सारांश
द्वारा VulDB • 03/06/2026
Linux kernel में निम्नलिखित कमजोरी को हल किया गया है:
f2fs: विफल whiteout निर्माण पर dentry कैश अमान्य करें (invalidate)
F2FS ऐसे फाइल सिस्टम माउंट कर सकता है जिनमें दायरे की गहराई के मान खराब होते हैं, जो रनटाइम पर MAX_DIR_HASH_DEPTH तक सीमित हो जाते हैं। जब इस प्रकार के निर्देशिकाओं (directories) पर RENAME_WHITEOUT संचालन किए जाते हैं, तो f2fs_rename फ़ंक्शन f2fs_add_link के माध्यम से whiteout प्रविष्टि जोड़ने का प्रयास करने से पहले निर्देशिका संशोधन (लक्ष्य प्रविष्टि को अपडेट करना और स्रोत प्रविष्टि हटाना) करता है।
यदि f2fs_add_link खराब निर्देशिका संरचना के कारण विफल हो जाता है, तो फ़ंक्शन VFS को एक त्रुटि लौटाता है, लेकिन आंशिक निर्देशिका संशोधन पहले ही डिस्क पर संचित (committed) कर दिए गए होते हैं। VFS मान लेता है कि पूरा रीनेम ऑपरेशन विफल रहा और dentry कैश को अपडेट नहीं करता है, जिससे पुराने या अमान्य मैपिंग्स बने रहते हैं।
त्रुटि मार्ग पर, VFS dentry कैश को अपडेट करने के लिए d_move() कॉल नहीं करता है। इसके परिणामस्वरूप new_dentry अभी भी उस पुराने inode (new_inode) की ओर इंगित कर रहा होता है जिसका i_nlink पहले ही शून्य तक कम किया जा चुका होता है। अमान्य कैश के कारण बाद में किए जाने वाले संचालन मुक्त हुए inode को गलत तरीके से संदर्भित करते हैं।
इससे बाद की प्रक्रियाएं ऐसी cached dentry जानकारी का उपयोग करती हैं जो डिस्क पर मौजूद स्थिति से मेल नहीं खाती है। जब दूसरा रीनेम उसी प्रविष्टि को लक्ष्य बनाता है, तो VFS अमान्य inode पर i_nlink कम करने की कोशिश करता है, जिसका i_nlink पहले ही 0 हो सकता है, और इससे drop_nlink() में एक WARNING ट्रिगर होती है।
उदाहरण क्रम: 1. पहला रीनेम (RENAME_WHITEOUT): file2 → file1 - f2fs डिस्क पर file1 प्रविष्टि को अपडेट करता है (inode 8 की ओर इंगित करता है) - f2fs डिस्क से file2 प्रविष्टि हटा देता है - f2fs_add_link(whiteout) विफल हो जाता है (खराब निर्देशिका) - VFS को त्रुटि लौटाता है - त्रुटि के कारण VFS d_move() कॉल नहीं करता है - VFS कैश में अभी भी यह होता है: file1 → inode 7 (पुराना/अमान्य!) - inode 7 का i_nlink=0 हो चुका है (पहले ही कम किया गया)
2. दूसरा रीनेम: file3 → file1 - VFS पुरानी कैश का उपयोग करता है: file1 → inode 7 - inode 7 पर drop_nlink करने की कोशिश करता है (i_nlink पहले से ही 0 है) - drop_nlink() में WARNING
इस समस्या को हल करने के लिए, जब whiteout निर्माण के दौरान f2fs_add_link विफल होता है तो old_dentry और new_dentry को स्पष्ट रूप से अमान्य करें। इससे VFS को बाद की प्रक्रियाओं पर डिस्क से रीफ्रेश करना पड़ता है, जिससे भले ही रीनेम आंशिक रूप से सफल हो जाए, कैश सुसंगत बना रहती है।
पुनरुत्पादक (Reproducer): 1. खराब i_current_depth के साथ F2FS इमेज माउंट करें 2. renameat2(file2, file1, RENAME_WHITEOUT) 3. renameat2(file3, file1, 0) 4. सिस्टम drop_nlink() में WARNING ट्रिगर करता है
If you want to get best quality of vulnerability data, you may have to visit VulDB.