APIC/EPIC! ইন্টেল চিপস ফাঁস গোপনীয়তা এমনকি কার্নেলও দেখা উচিত নয়... PlatoBlockchain ডেটা ইন্টেলিজেন্স। উল্লম্ব অনুসন্ধান. আ.

APIC/EPIC! ইন্টেল চিপস ফাঁস গোপনীয়তা এমনকি কার্নেলও দেখা উচিত নয়…

এখানে এই সপ্তাহের BWAIN, একটি জন্য আমাদের মজার শব্দ একটি চিত্তাকর্ষক নামের সঙ্গে বাগ.

BWAIN হল একটি প্রশংসা যা আমরা হস্তান্তর করি যখন একটি নতুন সাইবার নিরাপত্তা ত্রুটি শুধুমাত্র আকর্ষণীয় এবং গুরুত্বপূর্ণ হয়ে ওঠে না, বরং এর নিজস্ব লোগো, ডোমেন নাম এবং ওয়েবসাইটও আসে।

এই এক ডাব করা হয় ÆPIC লিক, শব্দের উপর একটি শ্লেষ APIC এবং EPIC.

প্রাক্তন জন্য সংক্ষিপ্ত অ্যাডভান্সড প্রোগ্রামেবল ইন্টারাপ্ট কন্ট্রোলার, এবং পরেরটি কেবল "মহাকাব্য" শব্দটি, যেমনটি দৈত্য, বৃহদায়তন, চরম, মেগা, hungous.

স্যাক্সন সময় থেকে লিখিত ইংরেজিতে Æ অক্ষরটি ব্যবহার করা হয়নি। এর নাম হল æsc, উচ্চারণ ছাই (গাছের মতো), এবং এটি আধুনিক শব্দ ASH-এ A-এর শব্দকে প্রায় প্রতিনিধিত্ব করে। কিন্তু আমরা ধরে নিচ্ছি আপনি শব্দটি উচ্চারণ করবেন ÆPIC এখানে হয় "APIC-slash-EPIC", অথবা "ah!-eh?-PIC" হিসাবে।

এটা সব কি সম্পর্কে?

এই সমস্ত পাঁচটি আকর্ষণীয় প্রশ্ন উত্থাপন করে:

  • একটি APIC কি?, এবং কেন আমি এটা প্রয়োজন?
  • কিভাবে আপনি যে তথ্য থাকতে পারে এমনকি কার্নেল উঁকি দিতে পারে না?
  • কি এই মহাকাব্য ব্যর্থতার কারণ APIC-তে?
  • এর ÆPIC লিক আমাকে আকর্ষণ করে?
  • কি করো এটা সম্পর্কে?

একটি APIC কি?

1981-এ রিওয়াইন্ড করা যাক, যখন IBM PC প্রথম হাজির হয়েছিল।

পিসি নামক একটি চিপ অন্তর্ভুক্ত ইন্টেল 8259A প্রোগ্রামেবল ইন্টারাপ্ট কন্ট্রোলার, অথবা PIC. (পরবর্তীতে মডেলগুলি, PC AT থেকে পরবর্তীতে, দুটি পিআইসি ছিল, একসঙ্গে শৃঙ্খলিত, আরও বাধামূলক ঘটনাকে সমর্থন করার জন্য।)

PIC এর উদ্দেশ্য ছিল আক্ষরিক অর্থে PC-এর সেন্ট্রাল প্রসেসরে (CPU) চলমান প্রোগ্রামটিকে বাধাগ্রস্ত করা যখনই সময়-সমালোচনামূলক কিছু ঘটে যা এখনই মনোযোগের প্রয়োজন।

এই হার্ডওয়্যার বাধাগুলির মধ্যে ইভেন্টগুলি অন্তর্ভুক্ত ছিল যেমন: কীবোর্ড একটি কীস্ট্রোক পাচ্ছে; সিরিয়াল পোর্ট একটি অক্ষর গ্রহণ; এবং একটি পুনরাবৃত্তি হার্ডওয়্যার টাইমার টিক টিক করছে।

এই ধরণের হার্ডওয়্যার ইন্টারপ্ট সিস্টেম ছাড়া, নিয়মিতভাবে ইনকামিং কীস্ট্রোকগুলি পরীক্ষা করার জন্য অপারেটিং সিস্টেমটিকে ফাংশন কলের সাথে ঢেকে রাখতে হবে, যা কেউ টাইপ না করলে CPU পাওয়ারের অপচয় হবে, কিন্তু প্রতিক্রিয়াশীল হবে না। যথেষ্ট যখন তারা করেছিল।

আপনি কল্পনা করতে পারেন, PIC শীঘ্রই একটি আপগ্রেডেড চিপ দ্বারা অনুসরণ করা হয়েছিল যাকে বলা হয় APIC, একটি অগ্রসর সিপিইউ-এর মধ্যেই তৈরি করা পিআইসি।

আজকাল, APIC গুলি কীবোর্ড, সিরিয়াল পোর্ট এবং সিস্টেম টাইমার থেকে কেবল প্রতিক্রিয়ার চেয়ে আরও অনেক কিছু সরবরাহ করে।

এপিআইসি ইভেন্টগুলি অতিরিক্ত গরম হওয়ার মতো ইভেন্টগুলির দ্বারা ট্রিগার করা হয় (এবং সম্পর্কে রিয়েল-টাইম ডেটা সরবরাহ করে) এবং সমসাময়িক মাল্টিকোর প্রসেসরের বিভিন্ন কোরের মধ্যে হার্ডওয়্যার মিথস্ক্রিয়াকে অনুমতি দেয়।

এবং আজকের ইন্টেল চিপগুলি, যদি আমরা খুব সহজভাবে করতে পারি, সাধারণত দুটি ভিন্ন উপায়ে কাজ করার জন্য কনফিগার করা যেতে পারে, যা হিসাবে পরিচিত xAPIC মোড এবং x2APIC মোড.

এখানে, xAPIC ইন্টারাপ্ট কন্ট্রোলার থেকে ডেটা বের করার "লিগেসি" উপায়, এবং x2APIC এটি আরও আধুনিক উপায়।

আরও সরলীকরণ করে, xAPIC যা বলা হয় তার উপর নির্ভর করে MMIO, খুব ছোট মেমরি-ম্যাপ করা ইনপুট/আউটপুট, APIC থেকে ডেটা পড়ার জন্য যখন এটি আগ্রহের একটি ইভেন্ট নিবন্ধন করে।

MMIO মোডে, আপনি মেমরির একটি নির্দিষ্ট অঞ্চল (RAM) থেকে পড়ার মাধ্যমে একটি APIC ইভেন্টের সূত্রপাত কী তা খুঁজে বের করতে পারেন, যা APIC চিপের ইনপুট/আউটপুট রেজিস্টারকে মিরর করে।

এই xAPIC ডেটা কম্পিউটারের ফিজিক্যাল র‍্যামের কোথাও একটি 4096-বাইট মেমরি ব্লকে ম্যাপ করা হয়েছে।

এটি ডেটা অ্যাক্সেস করা সহজ করে, তবে এটির জন্য APIC চিপ এবং সিস্টেম মেমরির মধ্যে একটি বিরক্তিকর, জটিল (এবং, আমরা দেখতে পাব, সম্ভাব্য বিপজ্জনক) মিথস্ক্রিয়া প্রয়োজন।

বিপরীতে, x2APIC এর জন্য আপনার প্রয়োজন সরাসরি APIC ডেটা পড়ুন চিপ থেকে নিজেই, কি হিসাবে পরিচিত হয় ব্যবহার করে মডেল স্পেসিফিক রেজিস্টার (MSRs)।

ইন্টেলের মতে, প্রক্রিয়াটির MMIO অংশ এড়ানো "উল্লেখযোগ্যভাবে বর্ধিত প্রসেসর অ্যাড্রেসবিলিটি এবং ইন্টারাপ্ট ডেলিভারিতে কিছু বর্ধন প্রদান করে।"

উল্লেখযোগ্যভাবে, অন-চিপ রেজিস্টারগুলি থেকে সরাসরি APIC ডেটা বের করার অর্থ হল সমর্থিত ডেটার মোট পরিমাণ, এবং সর্বাধিক সংখ্যক CPU কোর যা একই সময়ে পরিচালনা করা যেতে পারে, তা MMIO মোডে উপলব্ধ 4096 বাইটের মধ্যে সীমাবদ্ধ নয়।

আপনার কাছে কীভাবে এমন ডেটা থাকতে পারে যা এমনকি কার্নেলও উঁকি দিতে পারে না?

আপনি সম্ভবত ইতিমধ্যেই অনুমান করেছেন যে আপনি যখন xAPIC মোড ব্যবহার করছেন তখন যে ডেটা MMIO মেমরি এলাকায় শেষ হয় তা সবসময় যতটা যত্ন সহকারে পরিচালনা করা উচিত ততটা হয় না...

…এবং এইভাবে সেই MMIO এলাকায় একধরনের "ডেটা লিক" এই সমস্যার মূল।

কিন্তু আপনি যে দিয়েছেন ইতিমধ্যে sysadmin-স্তরের ক্ষমতা প্রয়োজন প্রথম স্থানে MMIO ডেটা পড়তে, এবং তাই আপনি প্রায় নিশ্চিতভাবেই মেমরিতে যেকোন এবং সমস্ত ডেটা পেতে পারেন...

…কেন অন্য লোকের ডেটা ভুলবশত APIC MMIO ডেটা এলাকায় প্রদর্শিত হবে একটি প্রতিনিধিত্ব করে মহাকাব্য ফুটো?

এটি কিছু ধরণের ডেটা-চুরি বা র‌্যাম-স্ক্র্যাপিং আক্রমণকে অনুশীলনে কিছুটা সহজ করে তুলতে পারে, তবে অবশ্যই এটি আপনাকে আর কোনও মেমরি-স্নুপিং ক্ষমতা দেবে না যা আপনার ইতিমধ্যে তত্ত্বে ছিল?

দুর্ভাগ্যবশত, সেই অনুমানটি সত্য নয় যদি সিস্টেমের কোনো সফ্টওয়্যার ইন্টেলের SGX ব্যবহার করে, সংক্ষেপে সফ্টওয়্যার গার্ড এক্সটেনশনস.


SGX সম্পর্কে আরও জানুন


SGX সাম্প্রতিক অনেক ইন্টেল CPU দ্বারা সমর্থিত, এবং এটি অপারেটিং সিস্টেম কার্নেলকে কোড এবং ডেটার একটি অংশকে RAM এর একটি ফিজিক্যাল ব্লকে "সিল" করার একটি উপায় প্রদান করে যাতে একটি ছিটমহল হিসাবে পরিচিত যা তৈরি করা যায়।

এটি এটিকে অস্থায়ীভাবে অন্তত, মোবাইল ফোনের বিশেষ সুরক্ষা চিপগুলির মতো আচরণ করে যা ডিক্রিপশন কীগুলির মতো গোপনীয়তা সংরক্ষণ করতে ব্যবহৃত হয়।

একবার ছিটমহলের SGX "লক" সেট হয়ে গেলে, শুধুমাত্র সিল-অফ মেমরি এলাকার ভিতরে চলমান প্রোগ্রাম কোড সেই RAM-এর বিষয়বস্তু পড়তে এবং লিখতে পারে।

ফলস্বরূপ, ছিটমহল সক্রিয় হওয়ার পরে যে কোনও গণনার অভ্যন্তরীণ বিবরণ সিস্টেমের অন্য কোনও কোড, থ্রেড, প্রক্রিয়া বা ব্যবহারকারীর কাছে অদৃশ্য থাকে।

কার্নেল নিজেই সহ।

ছিটমহলে সীলমোহর করা কোডটিকে কল করার একটি উপায় রয়েছে এবং এটি যে গণনাগুলি সম্পাদন করতে পারে তার আউটপুট ফিরিয়ে দেওয়ার একটি উপায় রয়েছে, তবে কোডটি পুনরুদ্ধার করার, বা গুপ্তচরবৃত্তি বা ডিবাগ করার কোন উপায় নেই এবং এটি চালানোর সময় এর সম্পর্কিত ডেটা।

ছিটমহলটি কার্যকরভাবে একটি কালো বাক্সে পরিণত হয় যেখানে আপনি ইনপুটগুলি ফিড করতে পারেন, যেমন একটি ব্যক্তিগত কী দিয়ে স্বাক্ষরিত ডেটা এবং আউটপুটগুলি বের করতে পারেন, যেমন ডিজিটাল স্বাক্ষর তৈরি করা হয়, কিন্তু যেখান থেকে আপনি ক্রিপ্টোগ্রাফিক কীগুলি বের করতে পারবেন না স্বাক্ষর প্রক্রিয়ায় ব্যবহৃত হয়।

আপনি যেমন কল্পনা করতে পারেন, যদি কোনো SGX ছিটমহলের ভিতরে সিল করে রাখা ডেটা ভুলবশত MMIO RAM-তে ডুপ্লিকেট হয়ে যায় যা আপনি xAPIC "মেমরি-ম্যাপড" মোড ব্যবহার করার সময় APIC ডেটাকে "মিরর" করতে ব্যবহৃত হয়...

…এটি SGX-এর নিরাপত্তা লঙ্ঘন করবে, যা বলে যে SGX ছিটমহল তৈরি হওয়ার পরে কোনও ডেটা কখনই বের হওয়া উচিত নয়, যদি না এটি ইচ্ছাকৃতভাবে ছিটমহলের ভিতরে ইতিমধ্যে চলমান কোড দ্বারা রপ্তানি করা হয়।

এপিআইসি-তে এই মহাকাব্য ব্যর্থতার কারণ কী?

এর পেছনে গবেষকরা ÆPIC ফাঁস কাগজ মেমরি অ্যাক্সেসের একটি ধূর্ত এবং অস্বাভাবিক ক্রমানুসারে APIC ডেটা পড়ার ব্যবস্থা করে আবিষ্কার করেছে...

…তারা প্রসেসরকে APIC MMIO স্পেস পূরণ করতে কৌশল করতে পারে শুধুমাত্র APIC থেকে নতুনভাবে প্রাপ্ত ডেটা দিয়েই নয়, এমন ডেটার সাথেও যা সম্প্রতি CPU দ্বারা অন্য কোনো উদ্দেশ্যে ব্যবহার করা হয়েছে।

এই আচরণটি এই সত্যটির একটি পার্শ্ব-প্রতিক্রিয়া যে যদিও APIC MMIO মেমরি পৃষ্ঠার আকার 4096 বাইট, xAPIC মোডে APIC চিপ আসলে 4096 বাইট মূল্যের ডেটা তৈরি করে না এবং CPU সবসময় সঠিকভাবে নিরপেক্ষ করে না MMIO অঞ্চলের অব্যবহৃত অংশগুলি প্রথমে শূন্য দিয়ে পূরণ করে।

পরিবর্তে, CPU ক্যাশে অবশিষ্ট পুরানো ডেটা APIC চিপ থেকে প্রাপ্ত নতুন ডেটার সাথে লেখা হয়েছিল।

গবেষকরা যেমন এটি রেখেছেন, বাগটি একটি নামে পরিচিত সূচনাবিহীন মেমরি পড়া, যেখানে আপনি ভুলবশত অন্য কারোর অবশিষ্ট ডেটা RAM এ পুনরায় ব্যবহার করেন কারণ তারা বা আপনি কেউই এটির পূর্ববর্তী গোপনীয়তাগুলি প্রথমে ফ্লাশ করেননি।

ÆPIC লিক কি আমাকে প্রভাবিত করে?

প্রভাবিত চিপগুলির একটি সম্পূর্ণ তালিকার জন্য, দেখুন ইন্টেলের নিজস্ব পরামর্শ.

যতদূর আমরা বলতে পারি, আপনার যদি 10 তম বা 11 তম প্রজন্মের ইন্টেল প্রসেসর থাকে তবে আপনি সম্ভবত প্রভাবিত হয়েছেন৷

কিন্তু যদি আপনার কাছে একটি নতুন 12 তম প্রজন্মের CPU থাকে (লেখার সময় একেবারে সর্বশেষ), তাহলে মনে হচ্ছে শুধুমাত্র সার্ভার-শ্রেণীর চিপগুলি প্রভাবিত হয়।

হাস্যকরভাবে, 12 তম-প্রজন্মের ল্যাপটপ চিপগুলিতে, ইন্টেল SGX ছেড়ে দিয়েছে, তাই এই বাগটি প্রযোজ্য নয় কারণ কোনও "সিল করা" SGX ছিটমহল থাকা অসম্ভব যা ফাঁস হতে পারে৷

অবশ্যই, এমনকি একটি সম্ভাব্য দুর্বল চিপেও, আপনি যদি SGX ব্যবহার করে এমন কোনো সফ্টওয়্যারের উপর নির্ভর না করেন, তাহলে বাগটিও প্রযোজ্য হবে না।

এবং বাগ, ডাব জন্য CVE-2022-21233, শুধুমাত্র একজন আক্রমণকারী দ্বারা শোষিত হতে পারে যার ইতিমধ্যেই আপনার কম্পিউটারে স্থানীয়, অ্যাডমিন-লেভেল (রুট) অ্যাক্সেস রয়েছে৷

নিয়মিত ব্যবহারকারীরা APIC MMIO ডেটা ব্লক অ্যাক্সেস করতে পারে না, এবং তাই সেখানে কিছুতেই উঁকি দেওয়ার কোনো উপায় নেই, গোপন ডেটা যা একটি SGX ছিটমহল থেকে ফাঁস হয়ে থাকতে পারে।

এছাড়াও, গেস্ট ভার্চুয়াল মেশিন হাইপারভি, ভিএমওয়্যার বা ভার্চুয়ালবক্সের মতো হাইপারভাইজারে হোস্ট অপারেটিং সিস্টেমের নিয়ন্ত্রণে চলমান (ভিএম) প্রায় নিশ্চিতভাবেই অন্য অতিথি বা হোস্টের কাছ থেকে গোপনীয়তা লুণ্ঠনের জন্য এই কৌশলটি ব্যবহার করতে পারে না।

কারণ গেস্ট ভিএমগুলি সাধারণত হোস্ট প্রসেসরের আসল APIC সার্কিট্রিতে অ্যাক্সেস পায় না; পরিবর্তে, প্রতিটি অতিথি তার নিজস্ব সিমুলেটেড APIC পায় যা সেই VM-এর জন্য অনন্য।

কি করো?

আতঙ্কিত হবেন না।

একটি ল্যাপটপ বা ডেস্কটপ কম্পিউটারে, আপনার কাছে একটি পুরানো (অথবা, ভাগ্যবান আপনি, একেবারে নতুন!) কম্পিউটার থাকার কারণে, অথবা আপনি SGX-এর উপর নির্ভর করছেন না বলে মোটেও ঝুঁকিতে নাও থাকতে পারেন৷

এবং এমনকি যদি আপনি ঝুঁকিপূর্ণ হন, তবে যে কেউ অ্যাডমিন/রুট হিসাবে আপনার ল্যাপটপে প্রবেশ করে তার সম্ভবত ইতিমধ্যেই আপনাকে সমস্যায় ফেলার জন্য যথেষ্ট শক্তি রয়েছে।

আপনার যদি দুর্বল সার্ভার থাকে এবং আপনি আপনার অপারেশনাল সিকিউরিটির অংশ হিসেবে SGX এর উপর নির্ভর করে থাকেন, তাহলে Intel সিকিউরিটি অ্যাডভাইজরি চেক করুন ইনটেল-এসএ -00657 সুরক্ষা এবং প্রশমন তথ্যের জন্য।

গবেষকদের মতে যারা এটি লিখেছেন, "ইস্যুটি সমাধান করতে ইন্টেল মাইক্রোকোড এবং SGX সফ্টওয়্যার ডেভেলপমেন্ট কিট আপডেট প্রকাশ করেছে।"

লিনাক্স কার্নেল টিমও মনে হচ্ছে এই মুহূর্তে একটি প্যাচের উপর কাজ করছে যা আপনাকে আপনার সিস্টেমকে কনফিগার করার অনুমতি দেবে যাতে এটি সর্বদা x2APIC ব্যবহার করবে (যা আপনি আগে থেকে মনে রাখবেন, ভাগ করা মেমরির মাধ্যমে APIC ডেটা প্রেরণ করে না), এবং বুটআপের পরে সিস্টেমটিকে জোরপূর্বক xAPIC মোডে ফেরত যাওয়া প্রতিরোধ করবে।


সময় স্ট্যাম্প:

থেকে আরো নগ্ন সুরক্ষা