ஷ்ரோடிங்கரின் நம்பகமான பதிவிறக்கம். இன்டெல் பூட் காவலர்

ஷ்ரோடிங்கரின் நம்பகமான பதிவிறக்கம். இன்டெல் பூட் காவலர்
x86-இணக்கமான கணினி இயங்குதளங்களுக்கான ஃபார்ம்வேரின் பாதுகாப்பைப் பற்றி மீண்டும் ஒரு குறைந்த நிலைக்குச் செல்ல நாங்கள் முன்மொழிகிறோம். இந்த நேரத்தில், ஆய்வின் முக்கிய மூலப்பொருள் Intel Boot Guard (Intel BIOS Guard உடன் குழப்பமடைய வேண்டாம்!) - வன்பொருள்-ஆதரவு நம்பகமான BIOS துவக்க தொழில்நுட்பம், கணினி சிஸ்டம் விற்பனையாளர் உற்பத்தி நிலையில் நிரந்தரமாக இயக்கலாம் அல்லது முடக்கலாம். சரி, ஆராய்ச்சி செய்முறை ஏற்கனவே நமக்கு நன்கு தெரிந்ததே: ரிவர்ஸ் இன்ஜினியரிங் பயன்படுத்தி இந்த தொழில்நுட்பத்தை மெலிதாக நறுக்கி, அதன் கட்டமைப்பை விவரிக்கவும், ஆவணமற்ற விவரங்களை நிரப்பவும், சுவை மற்றும் கலக்கவும் தாக்குதல் திசையன்களுடன் அதை சீசன் செய்யவும். பல விற்பனையாளர்களின் உற்பத்தியில் பல ஆண்டுகளாக குளோன் செய்யப்பட்ட ஒரு பிழை, இந்த தொழில்நுட்பத்தைப் பயன்படுத்தி, அகற்ற முடியாத (புரோகிராமருடன் கூட) மறைந்திருக்கும் ரூட்கிட்டை உருவாக்க இந்த தொழில்நுட்பத்தைப் பயன்படுத்த அனுமதிக்கிறது என்ற கதைக்கு எரிபொருளைச் சேர்க்கலாம்.

சொல்லப்போனால், மாநாட்டில் இருந்து “On Guard of Rootkits: Intel BootGuard” என்ற அறிக்கையின் அடிப்படையில் கட்டுரை உருவாக்கப்பட்டுள்ளது. ஜீரோநைட்ஸ் 2016 மற்றும் 29வது கூட்டம் DefCon ரஷ்யா (இரண்டு விளக்கக்காட்சிகளும் இங்கே).

இன்டெல் 64 கட்டமைப்பைக் கொண்ட கணினி இயங்குதளத்திற்கான நிலைபொருள்

முதலில், கேள்விக்கு பதிலளிப்போம்: இன்டெல் 64 கட்டமைப்பைக் கொண்ட நவீன கணினி தளத்தின் ஃபார்ம்வேர் என்ன? நிச்சயமாக, UEFI பயாஸ். ஆனால் அத்தகைய பதில் துல்லியமாக இருக்காது. இந்த கட்டிடக்கலையின் டெஸ்க்டாப் (லேப்டாப்) பதிப்பைக் காட்டும் படத்தைப் பார்ப்போம்.

ஷ்ரோடிங்கரின் நம்பகமான பதிவிறக்கம். இன்டெல் பூட் காவலர்
அடிப்படை இணைப்பு:

  • செயலி (CPU, சென்ட்ரல் ப்ராசசிங் யூனிட்), இது முக்கிய கோர்களுக்கு கூடுதலாக உள்ளமைக்கப்பட்ட கிராபிக்ஸ் கோர் (அனைத்து மாடல்களிலும் இல்லை) மற்றும் மெமரி கன்ட்ரோலர் (IMC, ஒருங்கிணைந்த நினைவகக் கட்டுப்படுத்தி);
  • சிப்செட் (PCH, பிளாட்ஃபார்ம் கன்ட்ரோலர் ஹப்), புற சாதனங்களுடன் தொடர்புகொள்வதற்கும் துணை அமைப்புகளை நிர்வகிப்பதற்கும் பல்வேறு கட்டுப்படுத்திகளைக் கொண்டுள்ளது. அவற்றில் நன்கு அறியப்பட்ட இன்டெல் மேனேஜ்மென்ட் என்ஜின் (எம்இ) உள்ளது, இதில் ஃபார்ம்வேர் (இன்டெல் எம்இ ஃபார்ம்வேர்) உள்ளது.

மடிக்கணினிகளுக்கு, மேலே உள்ளவற்றைத் தவிர, ஒரு உள்ளமைக்கப்பட்ட கட்டுப்படுத்தி (ACPI EC, மேம்பட்ட கட்டுப்பாடு மற்றும் ஆற்றல் இடைமுகம் உட்பொதிக்கப்பட்ட கட்டுப்படுத்தி) தேவைப்படுகிறது, இது ஆற்றல் துணை அமைப்பு, டச்பேட், விசைப்பலகை, Fn விசைகள் (திரை பிரகாசம், ஒலி அளவு ஆகியவற்றின் செயல்பாட்டிற்கு பொறுப்பாகும். , விசைப்பலகை பின்னொளி, முதலியன ) மற்றும் பிற விஷயங்கள். மேலும் இது அதன் சொந்த ஃபார்ம்வேரையும் கொண்டுள்ளது.

எனவே, மேலே உள்ள ஃபார்ம்வேரின் மொத்தமானது கணினி இயங்குதளத்தின் (கணினி ஃபார்ம்வேர்) ஃபார்ம்வேர் ஆகும், இது பொதுவான SPI ஃபிளாஷ் நினைவகத்தில் சேமிக்கப்படுகிறது. இந்த நினைவகத்தின் பயனர்கள் அது எங்கே என்று குழப்பமடையாமல் இருக்க, இந்த நினைவகத்தின் உள்ளடக்கங்கள் பின்வரும் பகுதிகளாகப் பிரிக்கப்படுகின்றன (படத்தில் காட்டப்பட்டுள்ளபடி):

  • UEFI பயாஸ்;
  • ACPI EC firmware (Skylake processor microarchitecture (2015) உடன் ஒரு தனி பகுதி தோன்றியது, ஆனால் அதன் பயன்பாட்டின் உதாரணங்களை நாங்கள் இன்னும் பார்க்கவில்லை, எனவே உள்ளமைக்கப்பட்ட கன்ட்ரோலரின் ஃபார்ம்வேர் இன்னும் UEFI BIOS இல் சேர்க்கப்பட்டுள்ளது) ;
  • இன்டெல் எம்இ ஃபார்ம்வேர்;
  • உள்ளமைக்கப்பட்ட GbE (கிகாபிட் ஈதர்நெட்) நெட்வொர்க் அடாப்டரின் உள்ளமைவு (MAC முகவரி, முதலியன);
  • ஃபிளாஷ் டிஸ்கிரிப்டர்கள் ஃபிளாஷ் நினைவகத்தின் முக்கிய பகுதி ஆகும், இதில் மற்ற பகுதிகளுக்கான சுட்டிகள் மற்றும் அவற்றை அணுகுவதற்கான அனுமதிகள் உள்ளன.

ஷ்ரோடிங்கரின் நம்பகமான பதிவிறக்கம். இன்டெல் பூட் காவலர்
SPI பஸ் மாஸ்டர், சிப்செட்டில் கட்டமைக்கப்பட்ட SPI கட்டுப்படுத்தி, இதன் மூலம் இந்த நினைவகம் அணுகப்படுகிறது, பகுதிகளுக்கான அணுகலை (குறிப்பிட்ட அனுமதிகளின்படி) வரையறுக்கும் பொறுப்பாகும். இன்டெல்லின் பரிந்துரைக்கப்பட்ட (பாதுகாப்பு காரணங்களுக்காக) மதிப்புகளுக்கு அனுமதிகள் அமைக்கப்பட்டால், ஒவ்வொரு SPI ஃபிளாஷ் பயனருக்கும் அவர்களின் பகுதிக்கு மட்டுமே முழு அணுகல் (படிக்க/எழுத) இருக்கும். மீதமுள்ளவை படிக்க மட்டும் அல்லது அணுக முடியாதவை. நன்கு அறியப்பட்ட உண்மை: பல கணினிகளில், CPU ஆனது UEFI BIOS மற்றும் GbE க்கு முழு அணுகலைக் கொண்டுள்ளது, ஃபிளாஷ் டிஸ்கிரிப்டர்களுக்கு மட்டுமே படிக்க அணுகல் உள்ளது மற்றும் Intel ME பகுதிக்கான அணுகல் இல்லை. ஏன் பலவற்றில், மற்றும் அனைவருக்கும் இல்லை? பரிந்துரைக்கப்பட்டவை தேவையில்லை. கட்டுரையில் பின்னர் விரிவாகக் கூறுவோம்.

கணினி இயங்குதள ஃபார்ம்வேரை மாற்றத்திலிருந்து பாதுகாப்பதற்கான வழிமுறைகள்

வெளிப்படையாக, ஒரு கணினி இயங்குதளத்தின் ஃபார்ம்வேர் சாத்தியமான சமரசத்திலிருந்து பாதுகாக்கப்பட வேண்டும், இது சாத்தியமான தாக்குதலாளியை அதில் காலூன்ற அனுமதிக்கும் (OS புதுப்பிப்புகள் / மறு நிறுவல்களைத் தக்கவைத்தல்), அவர்களின் குறியீட்டை மிகவும் சலுகை முறைகளில் செயல்படுத்துதல் போன்றவை. SPI ஃபிளாஷ் நினைவக பகுதிகளுக்கான அணுகலை கட்டுப்படுத்துவது நிச்சயமாக போதாது. எனவே, ஃபார்ம்வேரை மாற்றங்களிலிருந்து பாதுகாக்க, ஒவ்வொரு இயக்க சூழலுக்கும் குறிப்பிட்ட பல்வேறு வழிமுறைகள் பயன்படுத்தப்படுகின்றன.

எனவே, Intel ME ஃபார்ம்வேர் ஒருமைப்பாடு மற்றும் நம்பகத்தன்மையைக் கட்டுப்படுத்த கையொப்பமிடப்படுகிறது, மேலும் அது ME UMA நினைவகத்தில் ஏற்றப்படும் ஒவ்வொரு முறையும் ME கட்டுப்படுத்தியால் சரிபார்க்கப்படுகிறது. இந்த சரிபார்ப்பு செயல்முறை ஏற்கனவே எங்களால் ஒன்றில் விவாதிக்கப்பட்டது கட்டுரைகள், Intel ME துணை அமைப்பிற்கு அர்ப்பணிக்கப்பட்டது.

மற்றும் ACPI EC firmware, ஒரு விதியாக, ஒருமைப்பாட்டிற்காக மட்டுமே சரிபார்க்கப்படுகிறது. இருப்பினும், இந்த பைனரி UEFI BIOS இல் சேர்க்கப்பட்டுள்ளதால், UEFI BIOS பயன்படுத்தும் அதே பாதுகாப்பு வழிமுறைகளுக்கு இது எப்போதும் உட்பட்டது. அவர்களைப் பற்றி பேசலாம்.

இந்த வழிமுறைகளை இரண்டு வகைகளாகப் பிரிக்கலாம்.

UEFI BIOS பகுதியில் பாதுகாப்பு எழுதவும்

  1. எழுதும்-பாதுகாக்கும் ஜம்பருடன் SPI ஃபிளாஷ் நினைவகத்தின் உள்ளடக்கங்களின் உடல் பாதுகாப்பு;
  2. PRx சிப்செட் பதிவேடுகளைப் பயன்படுத்தி CPU முகவரி இடத்தில் UEFI BIOS பகுதியின் ப்ரொஜெக்ஷனைப் பாதுகாத்தல்;
  3. சிப்செட் பதிவேடுகளில் BIOS_WE/BLE மற்றும் SMM_BWP பிட்களை அமைப்பதன் மூலம் தொடர்புடைய SMI குறுக்கீட்டை உருவாக்கி செயலாக்குவதன் மூலம் UEFI BIOS பகுதிக்கு எழுதும் முயற்சிகளைத் தடுப்பது;
  4. இந்த பாதுகாப்பின் மேம்பட்ட பதிப்பு Intel BIOS Guard (PFAT) ஆகும்.

இந்த வழிமுறைகளுக்கு கூடுதலாக, விற்பனையாளர்கள் தங்கள் சொந்த பாதுகாப்பு நடவடிக்கைகளை உருவாக்கி செயல்படுத்தலாம் (உதாரணமாக, UEFI BIOS புதுப்பிப்புகளுடன் காப்ஸ்யூல்களில் கையொப்பமிடுதல்).

ஒரு குறிப்பிட்ட அமைப்பில் (விற்பனையாளரைப் பொறுத்து), மேலே உள்ள அனைத்து பாதுகாப்பு வழிமுறைகளும் பயன்படுத்தப்படாது, அவை பயன்படுத்தப்படாமல் இருக்கலாம் அல்லது அவை பாதிக்கப்படக்கூடிய வகையில் செயல்படுத்தப்படலாம் என்பதைக் கவனத்தில் கொள்ள வேண்டும். இந்த வழிமுறைகள் மற்றும் அவை செயல்படுத்தப்படும் சூழ்நிலையைப் பற்றி நீங்கள் மேலும் படிக்கலாம் இந்த கட்டுரையில். ஆர்வமுள்ளவர்கள், UEFI BIOS பாதுகாப்பு தொடர்பான கட்டுரைகளின் முழுத் தொடரையும் படிக்குமாறு பரிந்துரைக்கிறோம் கோட்ரஷ்.

UEFI பயாஸ் அங்கீகாரம்

நம்பகமான துவக்க தொழில்நுட்பங்களைப் பற்றி பேசும்போது, ​​முதலில் நினைவுக்கு வருவது பாதுகாப்பான துவக்கம். இருப்பினும், கட்டடக்கலை ரீதியாக இது UEFI BIOS (இயக்கிகள், பூட்லோடர்கள் போன்றவை) வெளிப்புற கூறுகளின் நம்பகத்தன்மையை சரிபார்க்க வடிவமைக்கப்பட்டுள்ளது, மேலும் firmware அல்ல.

எனவே, இன்டெல், பே டிரெயில் மைக்ரோஆர்கிடெக்சர் (2012) கொண்ட SoC களில், மேலே குறிப்பிட்டுள்ள செக்யூர் பூட் தொழில்நுட்பத்துடன் பொதுவானதாக இல்லாத வன்பொருள் முடக்கப்படாத செக்யூர் பூட் (சரிபார்க்கப்பட்ட பூட்) செயல்படுத்தப்பட்டது. பின்னர் (2013), ஹாஸ்வெல் மைக்ரோஆர்கிடெக்சருடன் டெஸ்க்டாப்புகளுக்கான இன்டெல் பூட் கார்டு என்ற பெயரில் இந்த வழிமுறை மேம்படுத்தப்பட்டு வெளியிடப்பட்டது.

Intel Boot Guard பற்றி விவரிப்பதற்கு முன், Intel 64 கட்டமைப்பில் செயல்படுத்தும் சூழல்களைப் பார்ப்போம், இவை இணைந்து, இந்த நம்பகமான துவக்க தொழில்நுட்பத்திற்கான நம்பிக்கையின் வேர்களாகும்.

இன்டெல் CPU

இன்டெல் 64 கட்டமைப்பில் செயலி முக்கிய செயலாக்க சூழல் என்று கேப் பரிந்துரைக்கிறது. இது ஏன் நம்பிக்கையின் வேர்? பின்வரும் கூறுகளின் உடைமையே அவரை அப்படி ஆக்குகிறது என்று மாறிவிடும்:

  • மைக்ரோகோட் ROM என்பது மைக்ரோகோடை சேமிப்பதற்கான ஒரு நிலையற்ற, மீண்டும் எழுத முடியாத நினைவகம். மைக்ரோகோட் என்பது எளிமையான வழிமுறைகளைப் பயன்படுத்தி செயலி கட்டளை அமைப்பை செயல்படுத்துவதாக நம்பப்படுகிறது. மைக்ரோகோடிலும் நடக்கும் பிழைகள். எனவே பயாஸில் நீங்கள் மைக்ரோகோட் புதுப்பிப்புகளுடன் பைனரிகளைக் காணலாம் (பூட் செய்யும் போது மேலெழுதப்பட்டது, ஏனெனில் ROM ஐ மேலெழுத முடியாது). இந்த பைனரிகளின் உள்ளடக்கங்கள் குறியாக்கம் செய்யப்பட்டுள்ளன, இது பகுப்பாய்வை பெரிதும் சிக்கலாக்குகிறது (எனவே, மைக்ரோகோடின் குறிப்பிட்ட உள்ளடக்கம் அதை உருவாக்குபவர்களுக்கு மட்டுமே தெரியும்), மேலும் ஒருமைப்பாடு மற்றும் நம்பகத்தன்மையைக் கட்டுப்படுத்த கையொப்பமிடப்பட்டது;
  • மைக்ரோகோட் புதுப்பிப்புகளின் உள்ளடக்கங்களை மறைகுறியாக்க AES விசை;
  • மைக்ரோகோட் புதுப்பிப்புகளின் கையொப்பத்தைச் சரிபார்க்கப் பயன்படுத்தப்படும் RSA பொது விசையின் ஹாஷ்;
  • RSA பொது விசை ஹாஷ், இது Intel-developed ACM (Authenticated Code Module) குறியீடு தொகுதிகளின் கையொப்பத்தை சரிபார்க்கிறது, இது CPU ஆனது BIOS இயக்கத்திற்கு முன் (ஹலோ மைக்ரோகோட்) அல்லது அதன் செயல்பாட்டின் போது, ​​சில நிகழ்வுகள் நிகழும்போது தொடங்கலாம்.

இன்டெல் எம்.ஈ

எங்கள் வலைப்பதிவு இந்த துணை அமைப்பிற்கு அர்ப்பணிக்கப்பட்டது இரண்டு கட்டுரைகள். இந்த இயங்கக்கூடிய சூழல் சிப்செட்டில் கட்டமைக்கப்பட்ட மைக்ரோகண்ட்ரோலரை அடிப்படையாகக் கொண்டது மற்றும் கணினியில் மிகவும் மறைக்கப்பட்ட மற்றும் சிறப்புரிமை பெற்றது என்பதை நினைவில் கொள்வோம்.

அதன் இரகசியம் இருந்தபோதிலும், Intel ME நம்பிக்கையின் ஒரு வேர், ஏனெனில் இது:

  • ME ROM - இன்டெல் ME ஃபார்ம்வேரின் கையொப்பத்தை சரிபார்க்கும் RSA பொது விசையின் SHA256 ஹாஷ் மற்றும் தொடக்கக் குறியீட்டைக் கொண்ட நிலையற்ற, மீண்டும் எழுத முடியாத நினைவகம் (புதுப்பிப்பு முறை வழங்கப்படவில்லை);
  • இரகசிய தகவலை சேமிப்பதற்கான AES விசை;
  • கம்ப்யூட்டர் சிஸ்டம் விற்பனையாளரால் குறிப்பிடப்பட்டவை உட்பட சில தகவல்களை நிரந்தரமாக சேமிப்பதற்காக சிப்செட்டில் ஒருங்கிணைக்கப்பட்ட உருகிகளின் (FPFகள், ஃபீல்டு புரோகிராமபிள் ஃப்யூஸ்கள்) அணுகல்.

இன்டெல் பூட் கார்டு 1.x

ஒரு சிறிய மறுப்பு. இந்த கட்டுரையில் நாம் பயன்படுத்தும் Intel Boot Guard தொழில்நுட்ப பதிப்பு எண்கள் தன்னிச்சையானவை மற்றும் இன்டெல்லின் உள் ஆவணத்தில் பயன்படுத்தப்படும் எண்களுடன் எந்த தொடர்பும் இல்லாமல் இருக்கலாம். கூடுதலாக, இந்த தொழில்நுட்பத்தை செயல்படுத்துவது பற்றி இங்கு வழங்கப்பட்டுள்ள தகவல்கள் தலைகீழ் பொறியியலின் போது பெறப்பட்டன, மேலும் Intel Boot Guardக்கான விவரக்குறிப்புடன் ஒப்பிடும்போது தவறுகள் இருக்கலாம், இது எப்போதும் வெளியிடப்பட வாய்ப்பில்லை.

எனவே, Intel Boot Guard (BG) என்பது வன்பொருள்-ஆதரவு UEFI BIOS அங்கீகார சரிபார்ப்பு தொழில்நுட்பமாகும். [பிளாட்ஃபார்ம் உட்பொதிக்கப்பட்ட செக்யூரிட்டி டெக்னாலஜி ரிவீல்ட், அத்தியாயம் பூட் இன்டக்ரிட்டி அல்லது நாட் பூட்] புத்தகத்தில் உள்ள அதன் சுருக்கமான விளக்கத்தை வைத்து ஆராயும்போது, ​​இது நம்பகமான துவக்க சங்கிலியாக செயல்படுகிறது. அதிலுள்ள முதல் இணைப்பு CPU க்குள் இருக்கும் துவக்க குறியீடு (மைக்ரோகோட்) ஆகும், இது ரீசெட் நிகழ்வால் தூண்டப்படுகிறது (பயாஸில் உள்ள ரீசெட் வெக்டருடன் குழப்பமடைய வேண்டாம்!). SPI ஃபிளாஷ் நினைவகத்தில் Intel (Intel BG ஸ்டார்ட்அப் ACM) உருவாக்கி கையொப்பமிடப்பட்ட குறியீடு தொகுதியை CPU கண்டறிந்து, அதன் தற்காலிக சேமிப்பில் ஏற்றுகிறது, சரிபார்க்கிறது (ACM ஐச் சரிபார்க்கும் பொது விசையின் ஹாஷ் CPU இல் உள்ளது என்பது ஏற்கனவே மேலே குறிப்பிடப்பட்டுள்ளது. கையொப்பம்) மற்றும் தொடங்குகிறது.

ஷ்ரோடிங்கரின் நம்பகமான பதிவிறக்கம். இன்டெல் பூட் காவலர்

UEFI BIOS இன் சிறிய தொடக்கப் பகுதியைச் சரிபார்க்க இந்தக் குறியீடு தொகுதி பொறுப்பாகும் - ஆரம்ப துவக்கத் தொகுதி (IBB), இது UEFI BIOS இன் முக்கிய பகுதியைச் சரிபார்க்கும் செயல்பாட்டைக் கொண்டுள்ளது. எனவே, OS ஐ ஏற்றுவதற்கு முன், BIOS இன் நம்பகத்தன்மையை சரிபார்க்க Intel BG உங்களை அனுமதிக்கிறது (இது பாதுகாப்பான துவக்க தொழில்நுட்பத்தின் மேற்பார்வையின் கீழ் செய்யப்படலாம்).

இன்டெல் பிஜி தொழில்நுட்பம் இரண்டு இயக்க முறைகளை வழங்குகிறது (மற்றும் ஒன்று மற்றொன்றில் தலையிடாது, அதாவது இரண்டு முறைகளையும் கணினியில் இயக்கலாம் அல்லது இரண்டையும் முடக்கலாம்).

அளவிடப்பட்ட துவக்கம்

அளவிடப்பட்ட துவக்க (MB) பயன்முறையில், ஒவ்வொரு துவக்க கூறுகளும் (CPU பூட் ROM இல் தொடங்கி) TPM (Trusted Platform Module) இன் திறன்களைப் பயன்படுத்தி அடுத்ததை "அளவை" செய்கிறது. தெரியாதவர்களுக்கு விளக்கம் தருகிறேன்.

TPM இல் PCRகள் (பிளாட்ஃபார்ம் உள்ளமைவுப் பதிவுகள்) உள்ளன, அதில் ஹாஷிங் செயல்பாட்டின் முடிவு சூத்திரத்தின்படி எழுதப்பட்டுள்ளது:

ஷ்ரோடிங்கரின் நம்பகமான பதிவிறக்கம். இன்டெல் பூட் காவலர்

அந்த. தற்போதைய PCR மதிப்பு முந்தையதைச் சார்ந்தது, மேலும் கணினி ரீசெட் ஆகும்போது மட்டுமே இந்தப் பதிவேடுகள் மீட்டமைக்கப்படும்.

இவ்வாறு, MB பயன்முறையில், ஒரு கட்டத்தில், PCRகள் "அளக்கப்பட்ட" குறியீடு அல்லது தரவின் தனித்துவமான (ஹாஷிங் செயல்பாட்டின் திறன்களுக்குள்) அடையாளங்காட்டியை பிரதிபலிக்கின்றன. PCR மதிப்புகள் சில தரவு குறியாக்க (TPM_Seal) செயல்பாட்டில் பயன்படுத்தப்படலாம். இதற்குப் பிறகு, ஏற்றுவதன் விளைவாக PCR மதிப்புகள் மாறவில்லை என்றால் மட்டுமே அவற்றின் மறைகுறியாக்கம் (TPM_Unseal) சாத்தியமாகும் (அதாவது, ஒரு "அளவிடப்பட்ட" கூறு கூட மாற்றப்படவில்லை).

சரிபார்க்கப்பட்ட துவக்கம்

UEFI BIOS ஐ மாற்ற விரும்புவோருக்கு மிகவும் மோசமான விஷயம், சரிபார்க்கப்பட்ட துவக்க (VB) பயன்முறையாகும், இதில் ஒவ்வொரு துவக்க கூறுகளும் கிரிப்டோகிராஃபிக்கலாக அடுத்த ஒன்றின் ஒருமைப்பாடு மற்றும் நம்பகத்தன்மையை சரிபார்க்கிறது. சரிபார்ப்பு பிழை ஏற்பட்டால், (இதில் ஒன்று) நடக்கும்:

  • 1 நிமிடம் முதல் 30 நிமிடங்கள் வரை காலக்கெடுவுடன் பணிநிறுத்தம் (இதனால் பயனருக்கு தனது கணினி ஏன் துவக்கப்படவில்லை என்பதைப் புரிந்து கொள்ள நேரம் கிடைக்கும், மேலும் முடிந்தால், பயாஸை மீட்டெடுக்க முயற்சிக்கிறது);
  • உடனடி பணிநிறுத்தம் (அதனால் பயனருக்கு எதையும் புரிந்து கொள்ள நேரம் இல்லை, எதையும் செய்ய முடியாது);
  • அமைதியான வெளிப்பாட்டுடன் தொடர்ந்து பணியாற்றுவது (பாதுகாப்புக்கு நேரமில்லாத போது, ​​இன்னும் முக்கியமான விஷயங்கள் செய்ய வேண்டியிருக்கும் என்பதால்).

செயலின் தேர்வு குறிப்பிட்ட Intel BG உள்ளமைவைப் பொறுத்தது (அதாவது, அமலாக்கக் கொள்கை என்று அழைக்கப்படுபவை), இது கணினி இயங்குதள விற்பனையாளரால் சிறப்பாக வடிவமைக்கப்பட்ட சேமிப்பகத்தில் நிரந்தரமாக பதிவு செய்யப்படுகிறது - சிப்செட் உருகிகள் (FPFs). இந்த விஷயத்தில் நாம் பின்னர் விரிவாக வாழ்வோம்.

கட்டமைப்புக்கு கூடுதலாக, விற்பனையாளர் இரண்டு RSA 2048 விசைகளை உருவாக்கி இரண்டு தரவு கட்டமைப்புகளை உருவாக்குகிறார் (படத்தில் காட்டப்பட்டுள்ளது):

  1. விற்பனையாளரின் ரூட் கீ மேனிஃபெஸ்ட் (KEYM, OEM ரூட் கீ மேனிஃபெஸ்ட்), இந்த அறிக்கையின் SVN (பாதுகாப்பு பதிப்பு எண்), அடுத்த அறிக்கையின் பொது விசையின் SHA256 ஹாஷ், RSA பொது விசை (அதாவது பொதுப் பகுதி விற்பனையாளரின் மூல விசை) இந்த அறிக்கையின் கையொப்பத்தையும் கையொப்பத்தையும் சரிபார்க்க;
  2. இந்த அறிக்கையின் SVN, IBB இன் SHA256 ஹாஷ், இந்த அறிக்கையின் கையொப்பத்தையும் கையொப்பத்தையும் சரிபார்ப்பதற்கான பொது விசையை உள்ளடக்கிய IBB மேனிஃபெஸ்ட் (IBBM, ஆரம்ப பூட் பிளாக் மேனிஃபெஸ்ட்).

OEM ரூட் கீ பொது விசையின் SHA256 ஹாஷ், Intel BG உள்ளமைவைப் போலவே, சிப்செட் ஃப்யூஸ்களில் (FPFs) நிரந்தரமாக பதிவு செய்யப்படுகிறது. இன்டெல் பிஜி உள்ளமைவு இந்த தொழில்நுட்பத்தைச் சேர்ப்பதற்கு வழங்கினால், இனி OEM ரூட் கீயின் தனிப்பட்ட பகுதியின் உரிமையாளர் மட்டுமே இந்த கணினியில் BIOS ஐப் புதுப்பிக்க முடியும் (அதாவது, இந்த வெளிப்பாடுகளை மீண்டும் கணக்கிட முடியும்), அதாவது. விற்பனையாளர்.

ஷ்ரோடிங்கரின் நம்பகமான பதிவிறக்கம். இன்டெல் பூட் காவலர்

படத்தைப் பார்க்கும்போது, ​​இவ்வளவு நீண்ட சரிபார்ப்புச் சங்கிலியின் தேவை குறித்து உடனடியாக சந்தேகம் எழுகிறது - அவர்கள் ஒரு மேனிஃபெஸ்ட்டைப் பயன்படுத்தியிருக்கலாம். விஷயங்களை ஏன் சிக்கலாக்க வேண்டும்?

உண்மையில், இன்டெல் அதன் தயாரிப்புகளின் வெவ்வேறு வரிகளுக்கு வெவ்வேறு ஐபிபி விசைகளைப் பயன்படுத்துவதற்கான வாய்ப்பை விற்பனையாளருக்கு வழங்குகிறது மற்றும் ஒன்றை ரூட் கீயாக வழங்குகிறது. IBB விசையின் தனிப்பட்ட பகுதி (இதன் மூலம் இரண்டாவது மேனிஃபெஸ்ட் கையொப்பமிடப்பட்டுள்ளது) கசிந்தால், அந்தச் சம்பவம் ஒரு தயாரிப்பு வரிசையை மட்டுமே பாதிக்கும், மேலும் விற்பனையாளர் ஒரு புதிய ஜோடியை உருவாக்கும் வரை மற்றும் அடுத்த BIOS புதுப்பிப்பில் மீண்டும் கணக்கிடப்பட்ட மேனிஃபெஸ்ட்களை உள்ளடக்கும் வரை மட்டுமே.

ஆனால் ரூட் கீ (முதல் மேனிஃபெஸ்ட் கையொப்பமிடப்பட்ட) சமரசம் செய்யப்பட்டால், அதை மாற்ற முடியாது; திரும்பப்பெறும் நடைமுறை எதுவும் வழங்கப்படவில்லை. இந்த விசையின் பொது பகுதியின் ஹாஷ் FPF இல் ஒருமுறை மற்றும் அனைவருக்கும் திட்டமிடப்பட்டுள்ளது.

இன்டெல் பூட் கார்டு உள்ளமைவு

இப்போது இன்டெல் பிஜி உள்ளமைவு மற்றும் அதை உருவாக்கும் செயல்முறையை விரிவாகப் பார்ப்போம். இன்டெல் சிஸ்டம் டூல் கிட் (STK) இலிருந்து ஃப்ளாஷ் இமேஜ் டூல் பயன்பாட்டின் GUI இல் தொடர்புடைய தாவலைப் பார்த்தால், Intel BG உள்ளமைவில் விற்பனையாளரின் ரூட் கீயின் பொதுப் பகுதியின் ஹாஷ் உள்ளடங்கியிருப்பதை நீங்கள் கவனிப்பீர்கள். தெளிவற்ற மதிப்புகள், முதலியன இன்டெல் பிஜி சுயவிவரம்.

ஷ்ரோடிங்கரின் நம்பகமான பதிவிறக்கம். இன்டெல் பூட் காவலர்

இந்த சுயவிவரத்தின் அமைப்பு:

typedef struct BG_PROFILE
{
	unsigned long Force_Boot_Guard_ACM : 1;
	unsigned long Verified_Boot : 1;
	unsigned long Measured_Boot : 1;
	unsigned long Protect_BIOS_Environment : 1;
	unsigned long Enforcement_Policy : 2; // 00b – do nothing
                                              // 01b – shutdown with timeout
                                              // 11b – immediate shutdown
	unsigned long : 26;
};

பொதுவாக, Intel BG கட்டமைப்பு மிகவும் நெகிழ்வான அமைப்பாகும். உதாரணமாக Force_Boot_Guard_ACM கொடியைக் கவனியுங்கள். அது அகற்றப்படும் போது, ​​SPI ஃபிளாஷில் BG ஸ்டார்ட்அப் ACM தொகுதி காணப்படவில்லை என்றால், நம்பகமான துவக்கம் எதுவும் ஏற்படாது. அவள் நம்பிக்கையற்றவளாக இருப்பாள்.

VB பயன்முறைக்கான அமலாக்கக் கொள்கையை உள்ளமைக்க முடியும் என்று நாங்கள் ஏற்கனவே மேலே எழுதியுள்ளோம், இதனால் சரிபார்ப்பு பிழை இருந்தால், நம்பத்தகாத பதிவிறக்கம் ஏற்படும்.

இதுபோன்ற விஷயங்களை விற்பனையாளர்களின் விருப்பப்படி விட்டுவிடுங்கள்...

GUI பயன்பாடு பின்வரும் "தயாரான" சுயவிவரங்களை வழங்குகிறது:

எண்
ஆட்சி
விளக்கம்

0
எண்_FVME
இன்டெல் பிஜி தொழில்நுட்பம் முடக்கப்பட்டுள்ளது

1
VE
VB பயன்முறை இயக்கப்பட்டது, நேரம் முடிந்தவுடன் பணிநிறுத்தம் செய்யப்படுகிறது

2
VME
இரண்டு முறைகளும் இயக்கப்பட்டன (VB மற்றும் MB), காலாவதியானால் பணிநிறுத்தம்

3
VM
கணினியை அணைக்காமல் இரண்டு முறைகளும் இயக்கப்படுகின்றன

4
FVE
VB பயன்முறை இயக்கப்பட்டது, உடனடி பணிநிறுத்தம்

5
FVME
இரண்டு முறைகளும் இயக்கப்பட்டன, உடனடி பணிநிறுத்தம்

ஏற்கனவே குறிப்பிட்டுள்ளபடி, Intel BG உள்ளமைவு கணினி விற்பனையாளரால் சிப்செட் உருகிகளில் (FPFs) ஒருமுறை எழுதப்பட வேண்டும் - இது ஒரு சிறிய (சரிபார்க்கப்படாத தகவலின் படி, 256 பைட்டுகள் மட்டுமே) சிப்செட்டிற்குள் உள்ள தகவல்களின் வன்பொருள் சேமிப்பு, இது நிரல்படுத்தப்படலாம். இன்டெல்லின் உற்பத்தி வசதிகளுக்கு வெளியே (அதனால்தான் சரியாக புலம் நிரல்படுத்தக்கூடியது உருகிகள்).

கட்டமைப்பை சேமிப்பதற்கு இது சிறந்தது, ஏனெனில்:

  • தரவைச் சேமிப்பதற்கான ஒரு முறை நிரல்படுத்தக்கூடிய பகுதியைக் கொண்டுள்ளது (இன்டெல் பிஜி உள்ளமைவு எழுதப்பட்ட இடத்தில்);
  • Intel ME ஆல் மட்டுமே அதைப் படித்து நிரல்படுத்த முடியும்.

எனவே, ஒரு குறிப்பிட்ட அமைப்பில் Intel BG தொழில்நுட்பத்திற்கான உள்ளமைவை அமைக்க, உற்பத்தியின் போது விற்பனையாளர் பின்வருவனவற்றைச் செய்கிறார்:

  1. ஃப்ளாஷ் இமேஜ் டூல் பயன்பாட்டைப் பயன்படுத்தி (இன்டெல் STK இலிருந்து), இது Intel ME பகுதியில் உள்ள மாறிகள் வடிவில் கொடுக்கப்பட்ட Intel BG உள்ளமைவுடன் ஒரு ஃபார்ம்வேர் படத்தை உருவாக்குகிறது (FPFகளுக்கான தற்காலிக கண்ணாடி என்று அழைக்கப்படும்);
  2. ஃப்ளாஷ் புரோகிராமிங் டூல் பயன்பாட்டைப் பயன்படுத்தி (இன்டெல் STK இலிருந்து), இது இந்த படத்தை கணினியின் SPI ஃபிளாஷ் நினைவகத்திற்கு எழுதி, அழைக்கப்படுவதை மூடுகிறது. உற்பத்தி முறை (இந்த வழக்கில், தொடர்புடைய கட்டளை Intel ME க்கு அனுப்பப்படுகிறது).

இந்த செயல்பாடுகளின் விளைவாக, Intel ME குறிப்பிட்ட மதிப்புகளை ME பிராந்தியத்தில் உள்ள FPF களுக்கான கண்ணாடியிலிருந்து FPF களாக மாற்றும், SPI ஃபிளாஷ் விளக்கங்களில் தீர்மானங்களை இன்டெல் பரிந்துரைத்த மதிப்புகளுக்கு அமைக்கும் (ஆரம்பத்தில் விவரிக்கப்பட்டுள்ளது கட்டுரை) மற்றும் கணினி ரீசெட் செய்யவும்.

இன்டெல் பூட் கார்டு செயல்படுத்தலின் பகுப்பாய்வு

ஒரு குறிப்பிட்ட எடுத்துக்காட்டைப் பயன்படுத்தி இந்த தொழில்நுட்பத்தை செயல்படுத்துவதை பகுப்பாய்வு செய்வதற்காக, இன்டெல் பிஜி தொழில்நுட்பத்தின் தடயங்களுக்கு பின்வரும் அமைப்புகளை நாங்கள் சோதித்தோம்:

அமைப்பு
கருத்து

ஜிகாபைட் GA-H170-D3H
ஸ்கைலேக், ஆதரவு உள்ளது

ஜிகாபைட் GA-Q170-D3H
ஸ்கைலேக், ஆதரவு உள்ளது

ஜிகாபைட் GA-B150-HD3
ஸ்கைலேக், ஆதரவு உள்ளது

MSI H170A கேமிங் ப்ரோ
ஸ்கைலேக், ஆதரவு இல்லை

லெனோவா திங்க்பேட் 460
ஸ்கைலேக், ஆதரவு, தொழில்நுட்பம் இயக்கப்பட்டது

லெனோவா யோகா 2 புரோ
ஹஸ்வெல், ஆதரவு இல்லை

லெனோவா U330p
ஹஸ்வெல், ஆதரவு இல்லை

"ஆதரவு" என்பதன் மூலம், Intel BG ஸ்டார்ட்அப் ACM மாட்யூல், மேலே குறிப்பிட்டுள்ள மேனிஃபெஸ்டுகள் மற்றும் BIOS இல் தொடர்புடைய குறியீடு இருப்பதைக் குறிக்கிறோம், அதாவது. பகுப்பாய்வுக்கான செயல்படுத்தல்.

உதாரணமாக, அலுவலகத்தில் இருந்து பதிவிறக்கம் செய்யப்பட்டதை எடுத்துக் கொள்வோம். ஜிகாபைட் GA-H170-D3H க்கான SPI ஃபிளாஷ் நினைவகத்தின் விற்பனையாளர் இணையதளப் படம் (பதிப்பு F4).

இன்டெல் CPU துவக்க ரோம்

முதலில், இன்டெல் பிஜி தொழில்நுட்பம் இயக்கப்பட்டிருந்தால், செயலியின் செயல்களைப் பற்றி பேசலாம்.

மறைகுறியாக்கப்பட்ட மைக்ரோகோடின் மாதிரிகளைக் கண்டறிய முடியவில்லை, எனவே கீழே விவரிக்கப்பட்டுள்ள செயல்கள் எவ்வாறு செயல்படுத்தப்படுகின்றன (மைக்ரோகோடு அல்லது வன்பொருளில்) என்பது ஒரு திறந்த கேள்வி. இருப்பினும், நவீன இன்டெல் செயலிகள் இந்த செயல்களை "செய்ய முடியும்" என்பது ஒரு உண்மை.

ரீசெட் நிலையில் இருந்து வெளியேறிய பிறகு, செயலி (ஃபிளாஷ் நினைவகத்தின் உள்ளடக்கங்கள் ஏற்கனவே முகவரி இடத்தில் மேப் செய்யப்பட்டுள்ளன) FIT (Firmware Interface Table) அட்டவணையைக் கண்டறிகிறது. அதைக் கண்டுபிடிப்பது எளிது; அதற்கான சுட்டி FFFF FFC0h என்ற முகவரியில் எழுதப்பட்டுள்ளது.

ஷ்ரோடிங்கரின் நம்பகமான பதிவிறக்கம். இன்டெல் பூட் காவலர்
கருத்தில் உள்ள எடுத்துக்காட்டில், இந்த முகவரியில் FFD6 9500h மதிப்பு உள்ளது. இந்த முகவரியை அணுகுவதன் மூலம், செயலி FIT அட்டவணையைப் பார்க்கிறது, அதன் உள்ளடக்கங்கள் பதிவுகளாக பிரிக்கப்படுகின்றன. முதல் நுழைவு பின்வரும் கட்டமைப்பின் தலைப்பு:

typedef struct FIT_HEADER
{
	char           Tag[8];     // ‘_FIT_   ’
	unsigned long  NumEntries; // including FIT header entry
	unsigned short Version;    // 1.0
	unsigned char  EntryType;  // 0
	unsigned char  Checksum;
};

ஷ்ரோடிங்கரின் நம்பகமான பதிவிறக்கம். இன்டெல் பூட் காவலர்
சில அறியப்படாத காரணங்களுக்காக, இந்த அட்டவணையில் செக்சம் எப்போதும் கணக்கிடப்படுவதில்லை (புலம் பூஜ்ஜியமாக உள்ளது).

மீதமுள்ள உள்ளீடுகள் பல்வேறு பைனரிகளை சுட்டிக்காட்டுகின்றன, அவை பயாஸ் செயல்படுத்தப்படுவதற்கு முன்பு பாகுபடுத்தப்பட வேண்டும்/செயல்படுத்தப்பட வேண்டும், அதாவது. மரபு ரீசெட் வெக்டருக்கு மாறுவதற்கு முன் (FFFF FFF0h). அத்தகைய ஒவ்வொரு பதிவின் அமைப்பும் பின்வருமாறு:

typedef struct FIT_ENTRY
{
	unsigned long  BaseAddress;
	unsigned long  : 32;
	unsigned long  Size;
	unsigned short Version;     // 1.0
	unsigned char  EntryType;
	unsigned char  Checksum;
};

ஷ்ரோடிங்கரின் நம்பகமான பதிவிறக்கம். இன்டெல் பூட் காவலர்
EntryType புலம் இந்த நுழைவுப் புள்ளிகளின் வகையைச் சொல்கிறது. எங்களுக்கு பல வகைகள் தெரியும்:

enum FIT_ENTRY_TYPES
{
	FIT_HEADER = 0,
	MICROCODE_UPDATE,
	BG_ACM,
	BIOS_INIT = 7,
	TPM_POLICY,
	BIOS_POLICY,
	TXT_POLICY,
	BG_KEYM,
	BG_IBBM
};

இப்போது உள்ளீடுகளில் ஒன்று இன்டெல் பிஜி ஸ்டார்ட்அப் ஏசிஎம் பைனரியின் இருப்பிடத்தை சுட்டிக்காட்டுகிறது என்பது தெளிவாகிறது. இந்த பைனரியின் தலைப்பு அமைப்பு Intel (ACMகள், மைக்ரோகோட் புதுப்பிப்புகள், Intel ME குறியீடு பிரிவுகள், ...) உருவாக்கிய குறியீடு தொகுதிகளுக்கு பொதுவானது.

typedef struct BG_ACM_HEADER
{
	unsigned short ModuleType;     // 2
	unsigned short ModuleSubType;  // 3
	unsigned long  HeaderLength;   // in dwords
	unsigned long  : 32;
	unsigned long  : 32;
	unsigned long  ModuleVendor;   // 8086h
	unsigned long  Date;           // in BCD format
	unsigned long  TotalSize;      // in dwords
	unsigned long  unknown1[6];
	unsigned long  EntryPoint;
	unsigned long  unknown2[16];
	unsigned long  RsaKeySize;     // in dwords
	unsigned long  ScratchSize;    // in dwords
	unsigned char  RsaPubMod[256];
	unsigned long  RsaPubExp;
	unsigned char  RsaSig[256];
};

ஷ்ரோடிங்கரின் நம்பகமான பதிவிறக்கம். இன்டெல் பூட் காவலர்
செயலி இந்த பைனரியை அதன் தற்காலிக சேமிப்பில் ஏற்றுகிறது, அதை சரிபார்த்து அதை இயக்குகிறது.

இன்டெல் பிஜி ஸ்டார்ட்அப் ஏசிஎம்

இந்த ACM இன் வேலையைப் பகுப்பாய்வு செய்ததன் விளைவாக, அது பின்வருவனவற்றைச் செய்கிறது என்பது தெளிவாகியது:

  • சிப்செட் உருகிகளில் (FPFs) எழுதப்பட்ட Intel ME இலிருந்து Intel BG உள்ளமைவைப் பெறுகிறது;
  • KEYM மற்றும் IBBM ஐக் கண்டறிந்து அவற்றைச் சரிபார்க்கிறது.

இந்த மேனிஃபெஸ்ட்களைக் கண்டறிய, ACM FIT அட்டவணையையும் பயன்படுத்துகிறது, இது கட்டமைப்புத் தரவைக் குறிக்க இரண்டு நுழைவு வகைகளைக் கொண்டுள்ளது (மேலே FIT_ENTRY_TYPES ஐப் பார்க்கவும்).

அறிக்கைகளை கூர்ந்து கவனிப்போம். முதல் மேனிஃபெஸ்ட்டின் கட்டமைப்பில், பல தெளிவற்ற மாறிலிகள், இரண்டாவது மேனிஃபெஸ்ட்டிலிருந்து பொது விசையின் ஹாஷ் மற்றும் பொது OEM ரூட் கீ ஆகியவை உள்ளமைக்கப்பட்ட கட்டமைப்பாக கையொப்பமிடப்பட்டதைக் காண்கிறோம்:

typedef struct KEY_MANIFEST
{
	char           Tag[8];          // ‘__KEYM__’
	unsigned char  : 8;             // 10h
	unsigned char  : 8;             // 10h
	unsigned char  : 8;             // 0
	unsigned char  : 8;             // 1
	unsigned short : 16;            // 0Bh
	unsigned short : 16;            // 20h == hash size?
	unsigned char  IbbmKeyHash[32]; // SHA256 of an IBBM public key
	BG_RSA_ENTRY   OemRootKey;
};

typedef struct BG_RSA_ENTRY
{
	unsigned char  : 8;             // 10h
	unsigned short : 16;            // 1
	unsigned char  : 8;             // 10h
	unsigned short RsaPubKeySize;   // 800h
	unsigned long  RsaPubExp;
	unsigned char  RsaPubKey[256];
	unsigned short : 16;            // 14
	unsigned char  : 8;             // 10h
	unsigned short RsaSigSize;      // 800h
	unsigned short : 16;            // 0Bh
	unsigned char  RsaSig[256];
};

ஷ்ரோடிங்கரின் நம்பகமான பதிவிறக்கம். இன்டெல் பூட் காவலர்
OEM ரூட் கீ பொது விசையை சரிபார்க்க, நாங்கள் SHA256 ஹாஷ் உருகிகளைப் பயன்படுத்துகிறோம் என்பதை நினைவில் கொள்கிறோம், இது ஏற்கனவே Intel ME இலிருந்து பெறப்பட்டது.

இரண்டாவது அறிக்கைக்கு செல்லலாம். இது மூன்று கட்டமைப்புகளைக் கொண்டுள்ளது:

typedef struct IBB_MANIFEST
{
	ACBP Acbp;         // Boot policies
	IBBS Ibbs;         // IBB description
	IBB_DESCRIPTORS[];
	PMSG Pmsg;         // IBBM signature
};

முதலாவது சில மாறிலிகளைக் கொண்டுள்ளது:

typedef struct ACBP
{
	char           Tag[8];          // ‘__ACBP__’
	unsigned char  : 8;             // 10h
	unsigned char  : 8;             // 1
	unsigned char  : 8;             // 10h
	unsigned char  : 8;             // 0
	unsigned short : 16;            // x & F0h = 0
	unsigned short : 16;            // 0 < x <= 400h
};

இரண்டாவதாக IBB இன் SHA256 ஹாஷ் மற்றும் IBB இன் உள்ளடக்கங்களை விவரிக்கும் விளக்கங்களின் எண்ணிக்கை (அதாவது, ஹாஷ் எதிலிருந்து கணக்கிடப்படுகிறது):

typedef struct IBBS
{
	char           Tag[8];            // ‘__IBBS__’
	unsigned char  : 8;               // 10h
	unsigned char  : 8;               // 0
	unsigned char  : 8;               // 0
	unsigned char  : 8;               // x <= 0Fh
	unsigned long  : 32;              // x & FFFFFFF8h = 0
	unsigned long  Unknown[20];
	unsigned short : 16;              // 0Bh
	unsigned short : 16;              // 20h == hash size ?
	unsigned char  IbbHash[32];       // SHA256 of an IBB
	unsigned char  NumIbbDescriptors;
};

IBB விளக்கங்கள் ஒன்றன் பின் ஒன்றாக இந்தக் கட்டமைப்பைப் பின்பற்றுகின்றன. அவற்றின் உள்ளடக்கங்கள் பின்வரும் வடிவத்தைக் கொண்டுள்ளன:

typedef struct IBB_DESCRIPTOR
{
	unsigned long  : 32;
	unsigned long  BaseAddress;
	unsigned long  Size;
};

இது எளிது: ஒவ்வொரு விளக்கமும் IBB துண்டின் முகவரி/அளவைக் கொண்டுள்ளது. இவ்வாறு, இந்த விவரிப்பாளர்களால் சுட்டிக்காட்டப்பட்ட தொகுதிகளின் ஒருங்கிணைப்பு (விளக்கிகளின் வரிசையில்) IBB ஆகும். மேலும், ஒரு விதியாக, IBB என்பது SEC மற்றும் PEI கட்டங்களின் அனைத்து தொகுதிகளின் தொகுப்பாகும்.

IBB பொது விசை (முதல் மேனிஃபெஸ்டில் இருந்து SHA256 ஹாஷ் மூலம் சரிபார்க்கப்பட்டது) மற்றும் இந்த மேனிஃபெஸ்ட்டின் கையொப்பம் ஆகியவற்றைக் கொண்ட ஒரு கட்டமைப்பால் இரண்டாவது மேனிஃபெஸ்ட் நிறைவு செய்யப்படுகிறது:

typedef struct PMSG
{
	char           Tag[8];            // ‘__PMSG__’
	unsigned char  : 8;               // 10h
	BG_RSA_ENTRY   IbbKey;
};

ஷ்ரோடிங்கரின் நம்பகமான பதிவிறக்கம். இன்டெல் பூட் காவலர்
எனவே, UEFI BIOS இயங்கத் தொடங்குவதற்கு முன்பே, செயலி ACM ஐத் தொடங்கும், இது SEC மற்றும் PEI கட்டக் குறியீட்டைக் கொண்டு பிரிவுகளின் உள்ளடக்கங்களின் நம்பகத்தன்மையை சரிபார்க்கும். அடுத்து, செயலி ACM இலிருந்து வெளியேறி, ரீசெட் வெக்டரைப் பின்தொடர்ந்து பயாஸை இயக்கத் தொடங்குகிறது.

சரிபார்க்கப்பட்ட PEI பகிர்வில் மீதமுள்ள BIOS (DXE குறியீடு) சரிபார்க்கும் ஒரு தொகுதி இருக்க வேண்டும். இந்த தொகுதி ஏற்கனவே IBV (சுதந்திர BIOS விற்பனையாளர்) அல்லது கணினி விற்பனையாளரால் உருவாக்கப்பட்டு வருகிறது. ஏனெனில் லெனோவா மற்றும் ஜிகாபைட் அமைப்புகள் மட்டுமே எங்கள் வசம் இருந்தன மற்றும் இன்டெல் பிஜி ஆதரவைக் கொண்டிருந்தன; இந்த அமைப்புகளிலிருந்து பிரித்தெடுக்கப்பட்ட குறியீட்டைப் பார்ப்போம்.

UEFI பயாஸ் தொகுதி LenovoVerifiedBootPei

லெனோவாவைப் பொறுத்தவரை, இது லெனோவாவால் உருவாக்கப்பட்ட LenovoVerifiedBootPei தொகுதி {B9F2AC77-54C7-4075-B42E-C36325A9468D} ஆனது.

DXEக்கான ஹாஷ் அட்டவணையைப் பார்த்து (GUID மூலம்) DXEஐச் சரிபார்ப்பதே இதன் வேலை.

if (EFI_PEI_SERVICES->GetBootMode() != BOOT_ON_S3_RESUME)
{
	if (!FindHashTable())
		return EFI_NOT_FOUND;
	if (!VerifyDxe())
		return EFI_SECURITY_VIOLATION;
}

Хеш таблица {389CC6F2-1EA8-467B-AB8A-78E769AE2A15} имеет следующий формат:

typedef struct HASH_TABLE
{
	char          Tag[8];            // ‘$HASHTBL’
	unsigned long NumDxeDescriptors;
	DXE_DESCRIPTORS[];
};

typedef struct DXE_DESCRIPTOR
{
	unsigned char BlockHash[32];     // SHA256
	unsigned long Offset;
	unsigned long Size;
};

UEFI பயாஸ் தொகுதி BootGuardPei

ஜிகாபைட்டைப் பொறுத்தவரை, இது AMI ஆல் உருவாக்கப்பட்ட BootGuardPei தொகுதி {B41956E1-7CA2-42DB-9562-168389F0F066} ஆக மாறியது, எனவே, Intel BG ஆதரவுடன் எந்த AMI BIOSலும் உள்ளது.

அதன் இயக்க அல்காரிதம் சற்று வித்தியாசமானது, இருப்பினும், இது ஒரே விஷயத்தைக் குறைக்கிறது:

int bootMode = EFI_PEI_SERVICES->GetBootMode();

if (bootMode != BOOT_ON_S3_RESUME &&
    bootMode != BOOT_ON_FLASH_UPDATE &&
    bootMode != BOOT_IN_RECOVERY_MODE)
{
	HOB* h = CreateHob();
	if (!FindHashTable())
		return EFI_NOT_FOUND;
	WriteHob(&h, VerifyDxe());
	return h;
}

இது தேடும் ஹாஷ் அட்டவணை {389CC6F2-1EA8-467B-AB8A-78E769AE2A15} பின்வரும் வடிவமைப்பைக் கொண்டுள்ளது:

typedef HASH_TABLE DXE_DESCRIPTORS[];

typedef struct DXE_DESCRIPTOR
{
	unsigned char BlockHash[32];     // SHA256
	unsigned long BaseAddress;
	unsigned long Size;
};

இன்டெல் பூட் கார்டு 2.x

ASRock J4205-IT - ASRock JXNUMX-IT உடன் Intel SoC ஐ அடிப்படையாகக் கொண்ட இன்டெல் பூட் கார்டின் மற்றொரு செயலாக்கத்தைப் பற்றி சுருக்கமாகப் பேசுவோம்.

இந்த பதிப்பு SoC களில் மட்டுமே பயன்படுத்தப்படும் (Kaby Lake ப்ராசசர் மைக்ரோஆர்கிடெக்சர் கொண்ட புதிய அமைப்புகள் Intel Boot Guard 1.xஐ தொடர்ந்து பயன்படுத்துகின்றன), குறிப்பிடத்தக்க மாற்றங்களைக் கண்ட Intel SoC இயங்குதளங்களுக்கான புதிய கட்டிடக்கலை விருப்பத்தைப் படிப்பதில் அதிக ஆர்வம் உள்ளது. உதாரணமாக:

  • BIOS மற்றும் Intel ME பகுதிகள் (அல்லது Intel TXE, Intel SoCக்கான சொற்களின் படி) இப்போது ஒரு IFWI பகுதி;
  • இன்டெல் பிஜி இயங்குதளத்தில் இயக்கப்பட்டிருந்தாலும், FIT, KEYM, IBBM போன்ற கட்டமைப்புகள் ஃபிளாஷ் நினைவகத்தில் காணப்படவில்லை;
  • TXE மற்றும் ISH கோர்கள் (x86) கூடுதலாக, சிப்செட்டில் மூன்றாவது கோர் சேர்க்கப்பட்டது (ARC மீண்டும், மூலம்) - PMC (பவர் மேனேஜ்மென்ட் கன்ட்ரோலர்), இது சக்தி துணை அமைப்பின் செயல்பாட்டை உறுதி செய்வதோடு தொடர்புடையது மற்றும் செயல்திறன் கண்காணிப்பு.

ஷ்ரோடிங்கரின் நம்பகமான பதிவிறக்கம். இன்டெல் பூட் காவலர்
புதிய IFWI பகுதியின் உள்ளடக்கம் பின்வரும் தொகுதிக்கூறுகளின் தொகுப்பாகும்:

சார்பு
பெயர்
விளக்கம்

0000 2000 மணி
SMIP
ஒரு குறிப்பிட்ட இயங்குதள கட்டமைப்பு, விற்பனையாளரால் கையொப்பமிடப்பட்டது

0000 6000 மணி
RBEP
இன்டெல் TXE ஃபார்ம்வேர் குறியீடு பிரிவு, x86, இன்டெல் கையொப்பமிட்டது

0001 0000 மணி
PMCP
இன்டெல் பிஎம்சி ஃபார்ம்வேர் குறியீடு பிரிவு, ஏஆர்சி, இன்டெல் கையொப்பமிட்டது

0002 0000 மணி
FTPR
இன்டெல் TXE ஃபார்ம்வேர் குறியீடு பிரிவு, x86, இன்டெல் கையொப்பமிட்டது

0007 B000h
UCOD
இன்டெல் கையொப்பமிட்ட CPUக்கான மைக்ரோகோட் புதுப்பிப்புகள்

0008 0000 மணி
IBBP
UEFI BIOS, SEC/PEI கட்டங்கள், x86, விற்பனையாளரால் கையொப்பமிடப்பட்டது

0021 8000 மணி
ISHC
Intel ISH ஃபார்ம்வேர் குறியீடு பிரிவு, x86, விற்பனையாளரால் கையொப்பமிடப்பட்டது

0025 8000 மணி
NFTP
இன்டெல் TXE ஃபார்ம்வேர் குறியீடு பிரிவு, x86, இன்டெல் கையொப்பமிட்டது

0036 1000 மணி
ஐ.யு.என்.பி
தெரியாத

0038 1000 மணி
OBBP
UEFI BIOS, DXE கட்டம், x86, கையொப்பமிடப்படவில்லை

TXE ஃபார்ம்வேரின் பகுப்பாய்வின் போது, ​​ரீசெட் செய்த பிறகு, CPU (FIT, ACM, RESET vector ...)க்கான முகவரி இடத்தின் அடிப்படை உள்ளடக்கங்களைத் தயாரிக்கும் வரை TXE செயலியை இந்த நிலையில் வைத்திருக்கிறது என்பது தெளிவாகத் தெரிந்தது. மேலும், TXE இந்தத் தரவை அதன் SRAM இல் வைக்கிறது, அதன் பிறகு அது தற்காலிகமாக செயலிக்கு அணுகலை அளித்து அதை ரீசெட்டில் இருந்து "வெளியிடுகிறது".

ரூட்கிட்களுக்கு எதிராக பாதுகாப்பு

சரி, இப்போது "சூடான" விஷயத்திற்கு செல்லலாம். பல கணினிகளில், SPI ஃபிளாஷ் டிஸ்கிரிப்டர்கள் SPI ஃபிளாஷ் நினைவகத்தின் பகுதிகளை அணுகுவதற்கான அனுமதிகளைக் கொண்டிருப்பதை நாங்கள் ஒருமுறை கண்டுபிடித்தோம், இதனால் இந்த நினைவகத்தின் அனைத்து பயனர்களும் எந்தப் பகுதியையும் எழுதலாம் மற்றும் படிக்கலாம். அந்த. வழி இல்லை.

MEinfo பயன்பாட்டுடன் (Intel STK இலிருந்து) சரிபார்த்த பிறகு, இந்த அமைப்புகளில் உற்பத்தி முறை மூடப்படவில்லை, எனவே, சிப்செட் உருகிகள் (FPF கள்) வரையறுக்கப்படாத நிலையில் விடப்பட்டுள்ளன. ஆம், இதுபோன்ற சந்தர்ப்பங்களில் Intel BG ஆன் அல்லது ஆஃப் செய்யப்படவில்லை.

நாங்கள் பின்வரும் அமைப்புகளைப் பற்றி பேசுகிறோம் (இன்டெல் பிஜி மற்றும் கட்டுரையில் பின்னர் விவரிக்கப்படும், ஹாஸ்வெல் செயலி மைக்ரோஆர்கிடெக்சர் மற்றும் அதற்கு மேற்பட்ட அமைப்புகளைப் பற்றி பேசுவோம்):

  • அனைத்து ஜிகாபைட் தயாரிப்புகள்;
  • அனைத்து MSI தயாரிப்புகள்;
  • லெனோவா மடிக்கணினிகளின் 21 மாடல்கள் மற்றும் லெனோவா சர்வர்களின் 4 மாடல்கள்.

நிச்சயமாக, கண்டுபிடிப்பை இந்த விற்பனையாளர்களுக்கும், இன்டெல்லுக்கும் தெரிவித்தோம்.

போதுமான எதிர்வினை மட்டுமே இருந்து வந்தது லெனோவாயார் பிரச்சனையை அங்கீகரித்தார்கள் மற்றும் ஒரு பேட்சை வெளியிட்டது.

ஜிகாபைட் அவர்கள் பாதிப்பு பற்றிய தகவலை ஏற்றுக்கொண்டதாகத் தோன்றியது, ஆனால் எந்த வகையிலும் கருத்து தெரிவிக்கவில்லை.

உடன் தொடர்பு MSI உங்கள் பொது PGP விசையை அனுப்புவதற்கான எங்கள் கோரிக்கையின் பேரில் முற்றிலும் நிறுத்தப்பட்டது (அவர்களுக்கு மறைகுறியாக்கப்பட்ட வடிவத்தில் பாதுகாப்பு ஆலோசனையை அனுப்ப). அவர்கள் "ஒரு வன்பொருள் உற்பத்தியாளர் மற்றும் PGP விசைகளை உற்பத்தி செய்யவில்லை" என்று கூறினர்.

ஆனால் விஷயத்திற்கு வருவோம். உருகிகள் குறிப்பிடப்படாத நிலையில் விடப்படுவதால், பயனர் (அல்லது தாக்குபவர்) அவற்றை சுயாதீனமாக நிரல் செய்யலாம் (மிகவும் கடினமான விஷயம் Intel STK ஐக் கண்டறியவும்) இதைச் செய்ய, நீங்கள் பின்வரும் படிகளை முடிக்க வேண்டும்.

1. Windows OS இல் துவக்கவும் (பொதுவாக, நீங்கள் விரும்பிய OS க்கு Intel STK இன் அனலாக் உருவாக்கினால், கீழே விவரிக்கப்பட்டுள்ள செயல்களை Linux இன் கீழ் செய்ய முடியும்). MEinfo பயன்பாட்டைப் பயன்படுத்தி, இந்த கணினியில் உருகிகள் திட்டமிடப்படவில்லை என்பதை உறுதிப்படுத்தவும்.

ஷ்ரோடிங்கரின் நம்பகமான பதிவிறக்கம். இன்டெல் பூட் காவலர்
2. ஃபிளாஷ் புரோகிராமிங் கருவியைப் பயன்படுத்தி ஃபிளாஷ் நினைவகத்தின் உள்ளடக்கங்களைப் படிக்கவும்.

ஷ்ரோடிங்கரின் நம்பகமான பதிவிறக்கம். இன்டெல் பூட் காவலர்
3. ஏதேனும் UEFI BIOS எடிட்டிங் கருவியைப் பயன்படுத்தி படிக்கும் படத்தைத் திறக்கவும், தேவையான மாற்றங்களைச் செய்யவும் (உதாரணமாக ரூட்கிட்டை அறிமுகப்படுத்தவும்), ME பகுதியில் இருக்கும் KEYM மற்றும் IBBM கட்டமைப்புகளை உருவாக்கவும்/திருத்தவும்.

ஷ்ரோடிங்கரின் நம்பகமான பதிவிறக்கம். இன்டெல் பூட் காவலர்
ஷ்ரோடிங்கரின் நம்பகமான பதிவிறக்கம். இன்டெல் பூட் காவலர்
படம் RSA விசையின் பொதுப் பகுதியை எடுத்துக்காட்டுகிறது, அதன் ஹாஷ் மற்ற Intel BG உள்ளமைவுடன் சிப்செட் உருகிகளில் நிரல்படுத்தப்படும்.

4. ஃப்ளாஷ் படக் கருவியைப் பயன்படுத்தி, புதிய ஃபார்ம்வேர் படத்தை உருவாக்கவும் (இன்டெல் பிஜி உள்ளமைவை அமைப்பதன் மூலம்).

ஷ்ரோடிங்கரின் நம்பகமான பதிவிறக்கம். இன்டெல் பூட் காவலர்
5. ஃபிளாஷ் புரோகிராமிங் கருவியைப் பயன்படுத்தி நினைவகத்தை ப்ளாஷ் செய்ய புதிய படத்தை எழுதவும், மேலும் ME பகுதியில் இப்போது Intel BG உள்ளமைவு உள்ளதா என்பதை MEinfo ஐப் பயன்படுத்தி சரிபார்க்கவும்.

ஷ்ரோடிங்கரின் நம்பகமான பதிவிறக்கம். இன்டெல் பூட் காவலர்
6. உற்பத்தி பயன்முறையை மூட ஃப்ளாஷ் புரோகிராமிங் கருவியைப் பயன்படுத்தவும்.

ஷ்ரோடிங்கரின் நம்பகமான பதிவிறக்கம். இன்டெல் பூட் காவலர்
7. கணினி மறுதொடக்கம் செய்யப்படும், அதன் பிறகு நீங்கள் MEinfo ஐப் பயன்படுத்தி FPFகள் இப்போது நிரல்படுத்தப்பட்டுள்ளனவா என்பதைச் சரிபார்க்கலாம்.

ஷ்ரோடிங்கரின் நம்பகமான பதிவிறக்கம். இன்டெல் பூட் காவலர்
இந்த நடவடிக்கைகள் என்றென்றும் இந்த கணினியில் Intel BG ஐ இயக்கவும். செயலைச் செயல்தவிர்க்க முடியாது, அதாவது:

  • ரூட் கீயின் தனிப்பட்ட பகுதியின் உரிமையாளர் (அதாவது Intel BG ஐ இயக்கியவர்) மட்டுமே இந்த கணினியில் UEFI BIOS ஐ புதுப்பிக்க முடியும்;
  • இந்த அமைப்பிற்கு அசல் ஃபார்ம்வேரை நீங்கள் திரும்பப் பெற்றால், எடுத்துக்காட்டாக, ஒரு புரோகிராமரைப் பயன்படுத்தி, அது இயக்கப்படாது (சரிபார்ப்புப் பிழை ஏற்பட்டால் அமலாக்கக் கொள்கையின் விளைவு);
  • அத்தகைய UEFI BIOS இல் இருந்து விடுபட, நீங்கள் சிப்செட்டை புரோகிராம் செய்யப்பட்ட FPFகளுடன் "சுத்தமான" ஒன்றை மாற்ற வேண்டும் (அதாவது, அகச்சிவப்பு சாலிடரிங் நிலையத்தை அணுகினால் சிப்செட்டை மறுவிற்பனை செய்யுங்கள், அல்லது மதர்போர்டை மாற்றவும். )

அத்தகைய ரூட்கிட் என்ன செய்ய முடியும் என்பதைப் புரிந்து கொள்ள, UEFI BIOS சூழலில் உங்கள் குறியீட்டை இயக்குவது என்ன என்பதை நீங்கள் மதிப்பீடு செய்ய வேண்டும். மிகவும் சலுகை பெற்ற செயலி பயன்முறையில் - எஸ்எம்எம் என்று சொல்லலாம். அத்தகைய ரூட்கிட் பின்வரும் பண்புகளைக் கொண்டிருக்கலாம்:

  • OS உடன் இணையாக செயல்படுத்தப்பட்டது (நீங்கள் SMI குறுக்கீட்டை உருவாக்க செயலாக்கத்தை உள்ளமைக்கலாம், இது ஒரு டைமரால் தூண்டப்படும்);
  • SMM பயன்முறையில் இருப்பதன் அனைத்து நன்மைகளும் உள்ளன (ரேம் மற்றும் வன்பொருள் வளங்களின் உள்ளடக்கங்களுக்கான முழு அணுகல், OS இலிருந்து இரகசியம்);
  • ரூட்கிட்டின் நிரல் குறியீடு எஸ்எம்எம் பயன்முறையில் தொடங்கப்படும் போது குறியாக்கம் மற்றும் மறைகுறியாக்கம் செய்யப்படலாம். SMM பயன்முறையில் மட்டுமே கிடைக்கும் எந்தத் தரவையும் குறியாக்க விசையாகப் பயன்படுத்தலாம். எடுத்துக்காட்டாக, SMRAM இல் உள்ள முகவரிகளின் தொகுப்பிலிருந்து ஒரு ஹாஷ். இந்த விசையைப் பெற, நீங்கள் SMM இல் சேர வேண்டும். மேலும் இதை இரண்டு வழிகளில் செய்யலாம். SMM குறியீட்டில் RCE ஐக் கண்டுபிடித்து அதைப் பயன்படுத்திக் கொள்ளுங்கள் அல்லது உங்கள் சொந்த SMM தொகுதியை BIOS இல் சேர்க்கவும், இது நாம் பூட் கார்டை இயக்கியதால் சாத்தியமற்றது.

எனவே, இந்த பாதிப்பு தாக்குபவர் ஒருவரை அனுமதிக்கிறது:

  • கணினியில் அறியப்படாத நோக்கத்தின் மறைக்கப்பட்ட, நீக்க முடியாத ரூட்கிட்டை உருவாக்கவும்;
  • Intel SoC இல் உள்ள சிப்செட் கோர்களில் ஒன்றில், அதாவது Intel ISH இல் உங்கள் குறியீட்டை இயக்கவும் (படத்தை கவனமாகப் பாருங்கள்).

ஷ்ரோடிங்கரின் நம்பகமான பதிவிறக்கம். இன்டெல் பூட் காவலர்
ஷ்ரோடிங்கரின் நம்பகமான பதிவிறக்கம். இன்டெல் பூட் காவலர்
Intel ISH துணை அமைப்பின் திறன்கள் இன்னும் ஆராயப்படவில்லை என்றாலும், Intel MEக்கு இது ஒரு சுவாரஸ்யமான தாக்குதல் வெக்டராகத் தோன்றுகிறது.

கண்டுபிடிப்புகள்

  1. இன்டெல் பூட் கார்ட் தொழில்நுட்பத்தின் செயல்பாட்டின் தொழில்நுட்ப விளக்கத்தைப் பெற இந்த ஆய்வு சாத்தியமாக்கியது. தெளிவற்ற மாதிரி மூலம் இன்டெல்லின் பாதுகாப்பில் இரண்டு ரகசியங்களைக் கழித்தல்.
  2. கணினியில் நிறுவல் நீக்க முடியாத ரூட்கிட்டை உருவாக்க உங்களை அனுமதிக்கும் தாக்குதல் காட்சி வழங்கப்படுகிறது.
  3. நவீன இன்டெல் செயலிகள் BIOS இயங்கத் தொடங்குவதற்கு முன்பே நிறைய தனியுரிம குறியீட்டை இயக்கும் திறன் கொண்டவை என்பதை நாங்கள் பார்த்தோம்.
  4. Intel 64 கட்டமைப்பு கொண்ட இயங்குதளங்கள் இலவச மென்பொருளை இயக்குவதற்கு ஏற்றதாக மாறி வருகின்றன: வன்பொருள் சரிபார்ப்பு, பெருகிவரும் தனியுரிம தொழில்நுட்பங்கள் மற்றும் துணை அமைப்புகள் (SoC சிப்செட்டில் மூன்று கோர்கள்: x86 ME, x86 ISH மற்றும் ARC PMC).

தணிப்புகள்

வேண்டுமென்றே உற்பத்தி முறையைத் திறந்து வைக்கும் விற்பனையாளர்கள் அதை மூடுவதை உறுதி செய்ய வேண்டும். இதுவரை, அவர்களின் கண்கள் மட்டுமே மூடப்பட்டுள்ளன, புதிய கேபி ஏரி அமைப்புகள் இதைக் காட்டுகின்றன.

-closemnf அளவுருவுடன் Flash Programming Tool ஐ இயக்குவதன் மூலம் பயனர்கள் தங்கள் கணினிகளில் Intel BG ஐ முடக்கலாம் (விவரப்பட்ட பாதிப்புக்கு ஆளாகும்). முதலில், ME பகுதியில் உள்ள Intel BG கட்டமைப்பு FPF களில் நிரலாக்கத்திற்குப் பிறகு இந்த தொழில்நுட்பத்தை முடக்குவதற்கு வழங்குகிறது என்பதை (MEinfo ஐப் பயன்படுத்தி) உறுதிசெய்ய வேண்டும்.

ஆதாரம்: www.habr.com

கருத்தைச் சேர்