Хардуерните бъгове и уязвимости в процесорите в историята на компютрите

4
1416

Софтуерните бъгове отдавна не учудват никого: ние почти ежедневно се сблъскваме със сривове в работата на програмните продукти и операционните системи. Много по-рядко, но все пак възникват и хардуерни проблеми – прегряване на чип, късо съединение или поливане с някаква течност – причини, поради които са се повредили немалко устройства.

Но има и един друг особен клас грешки, характерни само за процесорите. Те освен че водят до неправилно функциониране на програмите, но и дават възможност за достъп до най-чувствителната информация на потребителите – паролите, данните за онлайн банкирането и т.н. За Spectre и Meltdown навярно вече всички знаят, но през многогодишната компютърната история са се натрупали немалко хардуерни уязвимости в процесорите. Именно върху това ще се спрем този път.

Двойната сигма

Това е един от най-древните от по-известните процесорни бъгове. Работата е в това, че някои процесори Intel 80386 (още преди появата на 386DX и 386SX) внезапно спират да работят при изпълнението на 32-битов код. А основният проблем тук бе, че Intel не намери начин как да открива бъгавите процесори при производството и че нямаше възможност да бъдат излекувани с обновяване на микрокода.

В крайна сметка компанията се принуди да изземе всички вече продадени процесори и да прави съвместни тестове с току що произведените. След това Intel раздели чиповете на две категории – със и без проявата на бъга. Процесорите, които без проблем работеха с 32-битовите приложения се маркираха с две сигми (ΣΣ), а лошите получиха името 16 BIT S/W ONLY и се продаваха при твърде намалена цена. Като се има предвид, че в края на 80-те години 32-битов софтуер почти няма, тези процесори масово се купуваха. А в наши дни за подобен процесор колекционерите са готови да дадат една немалка сума.

Бъгът F00F

Това е една от достатъчно сериозните хардуерни уязвимости в процесорите на Intel, която води до срив на системата. Името идва от последователността байтове, които формират убийствената за Pentium MMX и Pentium OverDrive команда: F0 0F C7 C8.

Самата инструкция е lock cmpxchg8b eax. Вместо eax може да бъде друг операнд. Втората част от тази процесорна команда е сравнение на двойката 32-битови регистри eax и edx с 8 байта от съдържанието на някакъв участък от паметта, като се прави опит 8-байтовият резултат да бъде поместен в 4-байтов регистър.

В обикновени условия тази инструкция би довела до изключение, което се обработва отделно и няма да има срив. Но всичко променя префиксът lock – той обикновено се използва, за
да се предотврати едновременното обръщение на два процеса към един и същ участък на паметта.

Използването на префикса в този случай води до мъртъв процесор и съответно, до мъртъв компютър, който трябва да се рестартира. За изпълнението на тази инструкция не са необходими никакви привилегии и тя може да се изпълни на всеки компютър с тези процесори. Този проблем, за разлика от многото други, може да се оправи по програмен път без загуба на производителността, а и Intel го оправи още в Pentium Pro.

Грешката Pentium FDIV

Известна и като аритметичната грешка на процесорите Pentium, скрита в модула за математическите операции с плаваща запетая, възникваща в първите процесори Pentium с честота 60/66 MHz. Грешката се проявява в това, че при деленето на числа с плаваща запетая с помощта на командата FDIV, резултатът може да бъде некоректен.

Интересно е, че Intel е знаел за този проблем, но си е траел. След като всичко стана ясно процесорният гигант заяви, че проблемът възниква веднъж на 9 милиарда случая, но след това, под натиска на обществеността, корпорацията започна да обменя тези процесори на нормални. Това й струваше $475 милиона – половината от дохода на цялата компания за последното тримесечие на 1994 година.

Как изглежда проблема? Ако пресметнете на калкулатора 4195835*3145727/3145727, то ще получите числото 4195835. Но Pentium при използването на своя математически копроцесор получава 4195579, а това е съществена разлика.

Intel не предложи решение за този проблем. Но някои компилатори, като например Delphi и Visual Basic правеха проверка и можеха да определят бъгавия процесор и да не допускат проявата на тази грешка.

God Mode за x86 процесорите

През 2015 година специалистът по информационна безопасност Крис Домас разкри сериозна и доста стара уязвимост в процесорите на Intel, произвеждани от 1977 до 2010 години (до втророто поколение Intel Core i — Sandy Bridge). Сериозността на този бъг е в това, че даваше възможност за изпълняването на произволен код на x86 процесорите произведени през тези години.

Самата уязвимост е свързана с функционалността, реализирана в x86 архитектурата през 1977 година и дава възможност за получаването на достъп до режима System Management Mode (SMM). В този режим се спира изпълнението на какъвто и да било код и се стартира специална програма, записана в защитената област на паметта. SMM е необходим за настройка на процесора и достъпът до него наистина може да се нарече Божествен режим или God Mode. Получените по този начин права са по-високи от който и да било системен достъп, а това дава възможност да се прави всичко угодно: да се презаписва BIOS-а, да се четат всички области на паметта, независимо от процесорната защита, съвършено невидимо за операционната система да се получават данните при натискане на клавиш от клавиатурата и какво ли още не. Разбира се, преинсталирането на операционната система не помага, понеже проблемът е по-дълбок и просто е от друго ниво.

Проблемът на хакерите в този случай е само един: необходим е физически достъп до компютърното устройство – ако има физически достъп, данните биха могли да бъдат откраднати и по друг начин. Но Intel реагира общо взето сериозно и представи обновяване на микрокода за повечето стари чипове. Само че тази уязвимост си остана и все още се експлоатира, понеже са твърде малко хората, които ще инсталират това обновяване на компютри отпреди 10 години.

Бъг в процесорите на MediaTek

Разбира се, с развитието на ARM процесорите, специалистите започнаха да търсят бъгове и в тях, и намериха. В старите ARM процесори на тази компания бе допусната грешка, очевидно по банално недоглеждане.

В SoC на MediaTek са вградени възможности за настройка, които са необходими на мобилните оператори за тестване на различните мрежови устройства в своите мрежи. В потребителските устройства този режим трябва да е изключен, но това не бе направено и на практика компанията остави задна врата, чрез която могат да бъдат получени всички лични данни на потребителя  – съобщения, контакти, снимки и т.н.

Известно е, че проблемът се проявява в SoC MediaTek MT6582 под Android 4.4. Само че за това се разбра през 2016 година. MediaTek съобщи за бъга на всички производители, но никой не си направи труда да прави обновявания за тези стари устройства.

Получаване на root достъп в процесорите Snapdragon

През 2016 година не само MediaTek имаше проблеми с безопасността. При Qualcomm те са по-глобални и по-дълбоки. Уязвими са флагманските процесори Snapdragon 800, 805 и 810, работещи с модифицираното Linux ядро на от Android с 4.4 до 6.0.1, а това са на практика всички флагмани от това време.

Получаването на root правата става с помощта на две уязвимости. Едната е CVE-2016-0819, заради която определена област от паметта може да бъде повредена. Втората уязвимост CVE-2016-0805 е свързана с функцията get_krait_evtinfo в процесорите на Qualcomm и може да предизвика препълване на буфера. Едновременното използване на тези два бъга дава възможност за получаването на достъп до всички потребителски данни.

Qualcomm и Google само за два месеца решиха проблема, но уви, далеч не всички устройства получиха необходимия пач.

Spectre и Meltdown

Най-известните към днешен ден хардуерни уязвимости в повечето процесори, произведени след 1995 година. Има ги в процесорите на Intel и частично в чиповете на AMD и 64-битовите ARM процесори. Повечето от тях могат да бъдат премахнати по софтуерен път, но това води до огромна загуба на производителността. Ние вече подробно разгледахме начина на работа на тези твърде коварни хардуерни уязвимости.

 


Виждаме, че процесорите имат немалък брой най-различни бъгове и уязвимости. Изброеното дотук съвсем не е целия списък. Следващия път ще се спрем на грешките в работата на Hyper-Threading при процесорната фамилия SkyLake. Ще обърнем внимание на TLB в някои Phenom чипове и редица други.

4
ДОБАВИ КОМЕНТАР

avatar
2 Коментари
2 Отговори на коментарите
2 Последователи
 
Коментарът с най-много реакции
Най-горещият коментар
  Абонирай се  
нови стари оценка
Извести ме за
saentist
saentist

Хардуерните бъгове и уязвимости в процесорите ОТ компютърната история.

Нека да пишеме по граматично 😉

Иво
Иво

Процесорите на Intel които нямат Hyper-Threading, са доста по защитени от тези уязвимости. Добре че моят процесор на Intel 7300HQ я няма тази технология.

(*)
(*)

Ауу, браво на теб, паролата ти за замунда няма да бъде открадната!
Може да спиш спокойно вече.

Иво
Иво

Май не си от най умните, но много са като теб.