Введення
Суперечки про те, наскільки реально фізичне руйнування тих чи інших вузлів комп'ютера і можливостей створення каналів несанкціонованого доступу до інформації з використанням вразливостей чіпсета в результаті дії шкідливих програм, почалися задовго до появи "Персональних комп'ютерів", мабуть відразу, після того як виникли поняття "процесор" і "програма". Разом з тим і сьогодні, коли світ вже багаторазово переживав атаку вірусів, що руйнують вміст ROM BIOS, зустрічаються люди, які заявляють про принципову неможливість такого сценарію. Існує і протилежна крайність - опис картин диму і вогню, що вириваються з системного блоку, нібито в результаті запуску таємничого фрагмента машинного коду розміром кілька десятків байт. br/>
Проникнення в BIOS ROM
Як відомо, автори вірусів почали використовувати цю уразливість ще близько 10 років тому, практично відразу після того, як у якості носія BIOS стали застосовуватися мікросхеми електрично перепрограмованих ПЗУ (Flash ROM). У сформованій ситуації, мінімізація загрози стала турботою не лише авторів антивірусних програм, але і розробників апаратного забезпечення, зокрема, материнських плат. Зазначимо, що повністю виключити небезпеку несанкціонованої модифікації BIOS неможливо, так як для цього довелося б відмовитися від "законною" можливості його поновлення. p align="justify"> Як приклад розглянемо платформу на чіпсеті Intel 815,, що використовує мікросхему BIOS SST 49LF004A. Перерахуємо всі дії програми, що виконуються при стирання сектора і запису даних в мікросхему Flash ROM для такої платформи. Протокол доступу до мікросхеми Flash ROM, описаний нижче, використовується як програмами відновлення BIOS, так і шкідливими програмами, мета яких - спотворення або стирання вмісту мікросхеми BIOS. p align="justify">) Мікросхема BIOS підключена до "південного моста" чіпсета допомогою інтерфейсу LPC (Low Pin Count). Для доступу до вмісту BIOS на предмет читання і запису, а також передачі керуючих команд і контролю поточного стану мікросхеми Flash ROM, використовується 16-мегабайтний діапазон FF000000h-FFFFFFFFh в адресному просторі пам'яті. Щоб програмні звернення до зазначеного діапазону транслювалися в фізичні цикли читання і запису на інтерфейсі LPC, конфігураційні регістри "південного моста" чіпсета повинні бути встановлені таким чином. p align="justify"> У 16-бітному регістрі BIOS_CNTL (його координати в конфігураційному просторі Bus = 0, Device = 1Fh, Function = 0, Register = 4Eh-4Fh) біт 0 потрібно встановити в "1". Це знімає блокування циклів запису і дозволяє їх трансляцію на інтерфейс LPC. p align="justify"> У 8-бітному регістрі FWH Decode Enable 1 (його координати в конфігураційному просторі Bus = 0, Device = 1Fh, Function = 0, Register = E3h) біти 7-0 потрібно встановити в "1" . Це забезпечує трансляцію циклів читання і запису на інтерфейс LPC для всіх ад...