Identifying Linux Kernel Instability Due to Poor RCU Synchronization
Sullivan, Flanagan, Connell
Read-Copy-Update (RCU) is widely used in the Linux kernel to manage concurrent access to shared data structures.However, improper synchronization when removing RCU protected hash table entries can lead to stale pointers, inconsistent lookups, and critical use after free (UAF) vulnerabilities. This paper investigates a driver-level synchronization issue arising from the omission of explicit synchronize_rcu() calls during hash table updates, using a discovered weakness in the Intel ICE network drivers Virtual Function (VF) management. Previous kernel vulnerabilities, such as a bug in the Reliable Datagram Sockets (RDS) subsystem, show how improper RCU synchronization can directly cause kernel crashes. Experimental results demonstrate that removing VF entries without proper synchronization leaves transient stale entries, delays memory reclamation, and results in significant memory fragmentation under rapid insert/delete workloads. RCU hash tables are widely deployed in Linux kernel subsystems such as networking, virtualization, and file systems; improper synchronization can cause memory fragmentation, kernel instability, and out-of-memory (OOM) conditions. Mitigations are proposed, recommending explicit insertion of synchronize_rcu() calls to ensure timely and safe memory reclamation. These findings reinforce established best practices for RCU synchronization, highlighting their importance for maintaining kernel stability and memory safety.
Keywords: RCU, kernel synchronization, hash tables, ICE driver, memory fragmentation, use-after-free
academic
লিনাক্স কার্নেল অস্থিরতা চিহ্নিতকরণ দুর্বল RCU সিঙ্ক্রোনাইজেশনের কারণে
এই পেপারটি লিনাক্স কার্নেলে ব্যাপকভাবে ব্যবহৃত Read-Copy-Update (RCU) প্রক্রিয়ার সমসাময়িক ডেটা কাঠামো ব্যবস্থাপনায় সিঙ্ক্রোনাইজেশন সমস্যা নিয়ে গবেষণা করে। গবেষণায় দেখা যায় যে RCU-সুরক্ষিত হ্যাশ টেবিল থেকে এন্ট্রি মুছে ফেলার সময় যদি স্পষ্ট synchronize_rcu() কল অনুপস্থিত থাকে, তাহলে পুরানো পয়েন্টার, অসামঞ্জস্যপূর্ণ অনুসন্ধান এবং গুরুতর use-after-free (UAF) দুর্বলতা দেখা দেয়। লেখকরা Intel ICE নেটওয়ার্ক ড্রাইভারের ভার্চুয়াল ফাংশন (VF) ব্যবস্থাপনায় আবিষ্কৃত দুর্বলতাকে কেস স্টাডি হিসেবে ব্যবহার করে, পরীক্ষার মাধ্যমে প্রমাণ করে যে দ্রুত insert/delete কর্মভারের অধীনে অনুপযুক্ত RCU সিঙ্ক্রোনাইজেশন অস্থায়ী পুরানো এন্ট্রি, বিলম্বিত মেমরি পুনরুদ্ধার এবং গুরুতর মেমরি খণ্ডীকরণ সৃষ্টি করে, যা চূড়ান্তভাবে মেমরি সম্পূর্ণতা (OOM) এবং সিস্টেম ক্র্যাশ ঘটায়। পেপারটি স্পষ্ট synchronize_rcu() কল সন্নিবেশের প্রশমন পদ্ধতি প্রস্তাব করে, সঠিক RCU সিঙ্ক্রোনাইজেশনের গুরুত্ব কার্নেল স্থিতিশীলতা এবং মেমরি নিরাপত্তা বজায় রাখার জন্য জোর দেয়।
লিনাক্স কার্নেলে RCU প্রক্রিয়া লক-মুক্ত ডেটা কাঠামো অ্যাক্সেস বাস্তবায়নের জন্য ব্যাপকভাবে ব্যবহৃত হয়, যা পাঠকদের লক ছাড়াই ডেটা অ্যাক্সেস করতে এবং লেখকদের সমস্ত পাঠক সম্পন্ন না হওয়া পর্যন্ত ডেটা মুক্তি বিলম্ব করতে দেয়। তবে RCU-সুরক্ষিত হ্যাশ টেবিল থেকে এন্ট্রি মুছে ফেলার পরে, যদি উপযুক্ত সিঙ্ক্রোনাইজেশন প্রক্রিয়া (যেমন synchronize_rcu() বা call_rcu()) অনুপস্থিত থাকে, তাহলে নিম্নলিখিত ঘটতে পারে:
পুরানো পয়েন্টার সমস্যা: অন্যান্য CPU কোর মুছে ফেলা অবজেক্টের রেফারেন্স ধরে রাখতে পারে
Use-After-Free দুর্বলতা: মেমরি খুব তাড়াতাড়ি মুক্তি পায় কিন্তু এখনও অ্যাক্সেস করা হয়
মেমরি খণ্ডীকরণ: দ্রুত বরাদ্দ/মুক্তি চক্র মেমরি কার্যকরভাবে পুনরুদ্ধার করতে বাধা দেয়
সিস্টেম অস্থিরতা: চূড়ান্তভাবে OOM এবং কার্নেল ক্র্যাশ ঘটায়
লেখকরা Intel ICE নেটওয়ার্ক ড্রাইভারকে বাস্তব পরীক্ষার কেস হিসেবে নির্বাচন করেছেন, যা SR-IOV ভার্চুয়াল ফাংশন ব্যবস্থাপনায় RCU-সুরক্ষিত হ্যাশ টেবিল ব্যবহার করে। গবেষণায় দেখা যায় যে VF মুছে ফেলার সময় এটি hash_del_rcu() ব্যবহার করে কিন্তু synchronize_rcu() কল করে না, যা RCU সিঙ্ক্রোনাইজেশন অনুপস্থিতির প্রভাব সম্পর্কে সিস্টেমেটিক গবেষণার জন্য আদর্শ পরীক্ষামূলক প্ল্যাটফর্ম প্রদান করে।
১. দুর্বলতা আবিষ্কার এবং কেস স্টাডি: Intel ICE ড্রাইভার VF ব্যবস্থাপনায় RCU সিঙ্ক্রোনাইজেশন অনুপস্থিতি চিহ্নিত এবং বিস্তারিত বিশ্লেষণ, বাস্তব কার্নেল ড্রাইভার-স্তরের দুর্বলতার কেস প্রদান করে
२. সিস্টেমেটিক পরীক্ষামূলক মূল্যায়ন: ব্যাপক চাপ পরীক্ষা পদ্ধতি ডিজাইন এবং বাস্তবায়ন, যার মধ্যে রয়েছে:
দ্রুত VF তৈরি/মুছে ফেলা চক্র পরীক্ষা
মেমরি ব্যবহার এবং OOM পর্যবেক্ষণ
RCU grace period সময় বিশ্লেষণ
মেমরি খণ্ডীকরণ পরিমাণগত মূল্যায়ন
३. অভিজ্ঞতামূলক প্রমাণ: পরীক্ষার মাধ্যমে synchronize_rcu() অনুপস্থিতির তিনটি মূল পরিণতি প্রমাণ করে:
পুরানো এন্ট্রি সংক্ষিপ্তভাবে স্থায়ী থাকে
মেমরি পুনরুদ্ধার উল্লেখযোগ্যভাবে বিলম্বিত হয়
দ্রুত অপারেশনে OOM অবস্থা ঘটায় (এমনকি ১২০MB উপলব্ধ মেমরি থাকলেও)
४. প্রশমন পদ্ধতি এবং সর্বোত্তম অনুশীলন: স্পষ্ট সংশোধন সুপারিশ (synchronize_rcu() স্পষ্ট কল) এবং বিকল্প কৌশল (call_rcu(), হার সীমাবদ্ধতা) প্রস্তাব করে, RCU সিঙ্ক্রোনাইজেশনের সর্বোত্তম অনুশীলন শক্তিশালী করে
५. সাধারণ পদ্ধতিবিদ্যা: প্রদত্ত পরীক্ষা পদ্ধতি অন্যান্য কার্নেল সাবসিস্টেমে প্রসারিত করা যায়, RCU সিঙ্ক্রোনাইজেশন সমস্যার সিস্টেমেটিক সনাক্তকরণের জন্য একটি প্যারাডাইম প্রদান করে
१. দ্রুত বরাদ্দ চক্র: প্রতিটি VF তৈরি একাধিক কাঠামো বরাদ্দ করে
२. বিশৃঙ্খল মুক্তি: RCU সিঙ্ক্রোনাইজেশন ছাড়া মুক্তির সময় অনিশ্চিত
३. Buddy allocator চাপ: ছোট ব্লক বড় ব্লকে একত্রিত করতে অক্ষম
४. Compaction daemon বিলম্ব: kswapd/kcompactd গতির সাথে তাল মিলাতে পারে না
१. Linux Kernel Documentation - "What is RCU?" - RCU প্রক্রিয়ার কর্তৃপক্ষ ডকুমেন্টেশন
२. Xin Wangcong (२०१८) - RDS socket UAF সংশোধন প্যাচ - ঐতিহাসিক কেস তুলনা
३. McKenney et al. (२०१३) - "RCU usage in the Linux kernel: One decade later" - RCU ব্যবহার প্যাটার্ন গবেষণা
४. Mansi & Swift (२०२४) - "Characterizing physical memory fragmentation" - মেমরি খণ্ডীকরণ তাত্ত্বিক ভিত্তি
५. Yan et al. (२०१८) - "Spatio-Temporal Context Reduction" (ICSE) - UAF স্ট্যাটিক সনাক্তকরণ পদ্ধতি
এই পেপারটি একটি দৃঢ় সিস্টেম নিরাপত্তা গবেষণা কাজ, যা তাত্ত্বিক RCU সর্বোত্তম অনুশীলনকে বাস্তব কার্নেল ড্রাইভার দুর্বলতার সাথে সফলভাবে সংযুক্ত করে। Intel ICE ড্রাইভারের এই নির্দিষ্ট কেসের মাধ্যমে, লেখকরা সিস্টেমেটিকভাবে synchronize_rcu() কল অনুপস্থিতির গুরুতর পরিণতি প্রদর্শন করে: পুরানো পয়েন্টার থেকে মেমরি খণ্ডীকরণ থেকে সিস্টেম ক্র্যাশ পর্যন্ত।
সর্বোচ্চ হাইলাইট এর ব্যবহারিকতা এবং পুনরুৎপাদনযোগ্যতায় নিহিত। বিশুদ্ধ তাত্ত্বিক বিশ্লেষণের বিপরীতে, এই পেপার বিস্তারিত পরীক্ষামূলক সেটআপ, সম্পাদনযোগ্য পরীক্ষা স্ক্রিপ্ট এবং স্পষ্ট পরিমাণগত ডেটা প্রদান করে। OOM ঘটার সময় এখনও ১२०MB উপলব্ধ মেমরি থাকার এই বিরোধাভাসী আবিষ্কার, মেমরি খণ্ডীকরণের ক্ষতি জীবন্তভাবে প্রদর্শন করে।
প্রধান মূল্য তিনটি স্তরে প্রকাশিত: (१) Intel এবং অন্যান্য ড্রাইভার ডেভেলপারদের জন্য কার্যকর সংশোধন সুপারিশ প্রদান করে; (२) কার্নেল উন্নয়ন সম্প্রদায়ের জন্য RCU সিঙ্ক্রোনাইজেশনের সতর্কতা কেস প্রদান করে; (३) গবেষকদের জন্য প্রসারণযোগ্য পরীক্ষা পদ্ধতিবিদ্যা প্রদান করে।
উন্নতির স্থান প্রধানত পরীক্ষার প্রস্থ এবং গভীরতায়: আরও হার্ডওয়্যার প্ল্যাটফর্ম, গভীর কার্নেল অভ্যন্তরীণ বিশ্লেষণ, আরও ব্যাপক কর্মক্ষমতা ট্রেড-অফ মূল্যায়ন এবং শক্তিশালী UAF শোষণযোগ্যতা প্রমাণ, সবই পেপারের প্রভাবশীলতা বৃদ্ধি করবে।
সামগ্রিকভাবে, এটি কার্নেল উন্নয়ন এবং সিস্টেম নিরাপত্তা সম্প্রদায়ের জন্য বাস্তব অবদান সহ একটি চমৎকার কাজ, যার আবিষ্কার এবং পদ্ধতিবিদ্যা উভয়ই দীর্ঘমেয়াদী মূল্য রাখে।