2 पॉइंट द्वारा GN⁺ 2023-11-15 | 1 टिप्पणियां | WhatsApp पर शेयर करें

CPU रहस्य की खोज

  • अगर आपको आधुनिक CPU के अंदर होने वाली त्रुटियों में रुचि है, तो आगे पढ़ना उचित होगा।
  • अगर आपने x86 assembly लिखी है, तो आप मेमोरी को स्थानांतरित करने के लिए इस्तेमाल होने वाले rep movsb कमांड से परिचित होंगे।
  • source, destination, direction, और count सेट करने के बाद processor बाकी सभी विवरण स्वयं संभाल लेता है।

कमांड prefix की व्याख्या

  • x86 की एक विशेषता यह है कि instruction decoding सामान्यतः बहुत लचीली होती है।
  • ऐसे prefix जिनका कोई अर्थ नहीं है या जो अन्य prefix से टकराते हैं, उन्हें भी अधिकांश मामलों में नज़रअंदाज़ कर दिया जाता है।
  • compiler मनचाही alignment boundary से मेल कराने के लिए अनावश्यक prefix का उपयोग कर सकता है।

REX prefix

  • i386 में 8 general-purpose register थे, इसलिए register को निर्दिष्ट करने के लिए 3 bit पर्याप्त थे।
  • x86-64 ने 8 अतिरिक्त general-purpose register जोड़े, इसलिए अधिक bit की आवश्यकता हुई।
  • rex prefix अगली instruction को अतिरिक्त bit उधार लेने देता है, जिससे 16 general-purpose register की encoding संभव होती है।

encoding नियम

  • rex prefix operand को encode करने के लिए उपलब्ध स्थान बढ़ाता है।
  • अनावश्यक या duplicate prefix को x86 में अधिकांशतः नज़रअंदाज़ कर दिया जाता है।
  • rex.rxb rep movsb कमांड में कोई operand नहीं होता, इसलिए rex bit का कोई अर्थ नहीं है और processor rex prefix को नज़रअंदाज़ कर देता है।

Fast Short Repeat Move (FSRM)

  • FSRM Ice Lake में पेश किया गया एक नया फीचर है, जो ERMS की कमियों को दूर करता है।
  • ERMS में buffer को align करके सबसे चौड़े संभव store का उपयोग करना, efficient string move का कठिन हिस्सा होता है।
  • FSRM का उद्देश्य 128 byte या उससे छोटे string को अधिक तेज़ी से move करना है।

खोज

  • Oracle Serialization नामक processor verification तकनीक का उपयोग करके यह जाँचा गया कि random तरीके से बनाए गए program के दो रूप समान final state तक पहुँचते हैं या नहीं।
  • अगस्त में verification pipeline ने पाया कि FSRM-optimized rep movs ऑपरेशन में duplicate rex.r prefix जोड़ने से अप्रत्याशित परिणाम उत्पन्न हो सकते हैं।
  • यह भी पुष्टि हुई कि जब multi-core एक ही bug को trigger करते हैं, तो processor machine check exception रिपोर्ट करके रुक जाता है।

पुनरुत्पादन

  • शोध परिणामों को security research repository में सार्वजनिक किया गया।
  • vulnerability को reproduce करने के लिए icebreak टूल का उपयोग किया जा सकता है।
  • अप्रभावित system पर कोई output नहीं आना चाहिए, लेकिन प्रभावित system पर हर सफल reproduction के साथ . प्रिंट होगा।

विश्लेषण

  • आधुनिक system में microcode कैसे काम करता है, यह गोपनीय रखा जाता है, इसलिए केवल अवलोकन-आधारित सिद्धांत ही संभव हैं।
  • अनुमान है कि bug frontend को movsb instruction के आकार की गलत गणना करने पर मजबूर करता है, जिससे ROB (reorder buffer) की बाद की entries गलत address से जुड़ जाती हैं।

प्रश्न

  • इस अप्रत्याशित "glitch" state में क्या-क्या संभव है, यह स्वाभाविक प्रश्न हो सकता है।
  • यह ज्ञात है कि system state को इतना क्षतिग्रस्त किया जा सकता है कि machine check त्रुटि हो जाए, और कोई thread अपने SMT sibling processor के execution को प्रभावित कर सकता है।
  • μop execution को debug करने का कोई तरीका नहीं है, इसलिए यह नहीं कहा जा सकता कि privilege escalation हासिल की जा सकती है या नहीं।

समाधान

  • Intel ने सभी प्रभावित processor के लिए updated microcode जारी किया है।
  • संभव है कि operating system या BIOS vendor ने पहले से ही यह update उपलब्ध करा दिया हो।

विकल्प

  • यदि update संभव नहीं है, तो IA32_MISC_ENABLE model-specific register के माध्यम से fast strings को disable किया जा सकता है।
  • इससे प्रदर्शन में उल्लेखनीय गिरावट आती है, इसलिए इसका उपयोग केवल अत्यावश्यक स्थिति में ही किया जाना चाहिए।

GN⁺ की राय

इस लेख का सबसे महत्वपूर्ण बिंदु यह है कि यह आधुनिक CPU में उत्पन्न होने वाली अप्रत्याशित "glitch" स्थिति की खोज को दिखाता है और यह भी बताता है कि इससे सुरक्षा कमजोरियाँ पैदा हो सकती हैं। यह लेख software engineers के लिए रोचक हो सकता है और CPU की जटिलता तथा system की कमजोरियों के प्रति जागरूकता बढ़ाने में मदद करता है। साथ ही, यह समझने में भी सहायता करता है कि ऐसी खोजें कैसे वास्तविक security threat में बदल सकती हैं, और updated microcode के महत्व को रेखांकित करता है।

1 टिप्पणियां

 
GN⁺ 2023-11-15
Hacker News राय
  • Konrad Magnusson की टीम ने mimalloc से जुड़ी समस्या खोजी।

    • Paradox Interactive के Konrad Magnusson ने mimalloc से संबंधित एक issue पाया, और यह Google शोधकर्ताओं द्वारा खोजी गई नई CPU vulnerability से जुड़ा हो सकता है।
  • Google की कई research teams ने स्वतंत्र रूप से bug खोजा।

    • Google की silifuzz टीम और Google Information Security Engineering टीम समेत कई research teams ने उसी bug को स्वतंत्र रूप से खोजा।
  • प्रोसेसर ने machine check exception रिपोर्ट किया और रुक गया।

    • प्रोसेसर में machine check exception रिपोर्ट होने और उसके काम करना बंद कर देने की घटना का उल्लेख किया गया।
  • हार्डवेयर के बारे में अपनी समझ की कमी का एहसास हुआ।

    • यह महसूस किया गया कि हार्डवेयर के बारे में ज्ञान कम है, और पूछा गया कि instruction के व्यवहार को बदलने के लिए "prefix" की ज़रूरत क्यों पड़ती है।
  • qemu के repz ret समस्या का निदान याद आया।

    • उस स्थिति को याद किया गया जब qemu ने repz ret समस्या का diagnosis किया था।
  • Intel के अपने कर्मचारियों और Google कर्मचारियों ने समस्या रिपोर्ट की।

    • Intel ने अपने कर्मचारियों और Google कर्मचारियों को इस समस्या को आंतरिक रूप से खोजने और रिपोर्ट करने के लिए धन्यवाद दिया।
  • Google के लेख से कहीं अधिक दिलचस्प।

    • यह व्यक्त किया गया कि संबंधित चर्चा Google के लेख से कहीं अधिक रोचक है।
  • क्या out-of-order और speculative execution वाले CPU को security समस्या के बिना डिज़ाइन करना संभव है, इस पर सवाल।

    • out-of-order execution और speculative execution वाले CPU को डिज़ाइन करते समय पैदा होने वाली security समस्याओं पर सवाल उठाया गया, और पूछा गया कि क्या भविष्य में दिशा ऐसी हो सकती है जहाँ हर A55 core स्वतंत्र रूप से एक application चलाए।
  • Intel की security advisory का विवरण।

    • Intel की security advisory में बताया गया कि कुछ Intel processors में instruction sequence का एक ऐसा पैटर्न है जो अनपेक्षित व्यवहार पैदा कर सकता है, और इसके माध्यम से authenticated user privilege escalation, information disclosure, और denial of service का कारण बन सकता है।