Хардуерните уязвимости в процесорите - втора част
.td_uid_42_5cc6938ec2db5_rand.td-a-rec-img{text-align:left}.td_uid_42_5cc6938ec2db5_rand.td-a-rec-img img{margin:0 auto 0 0}
В първата част на този материал разгледахме някои от по-известните хардуерни уязвимости в процесорите, водещи до неточност в изчисленията или до приключване на сензитивна информация. Тук ще продължим с изброяването на хардуерните бъгове и уязвимости.
TLB бъгът в процесорите на AMD
През 2007 година AMD показа на пазара своите първи потребителски 4-ядрени процесори с архитектура K10, при които всичките ядра са ситуирани на един и същи кристал. Другият значим миг при тези чипове е съществуването на общ за всички ядра L3 кеш. Тези процесори станаха нелоши съперници на Intel Core 2 Quad, само че неточност в L3 кеша в първата версия (B2) на тези процесори, малко помрачи насладата на почитателите на AMD.
TLB значи translation look-aside buffer или буфер за бързо превръщане на виртуалните адреси във физически и при съществено натоварване на чипа, при което интензивно се употребява L3 кеша, системата от време на време бърка. Този бъг е изключително сериозен в сървърния сегмент и в последна сметка AMD се принуди да спре доставките на процесорите Opteron.
.td_uid_41_5cc6938ec2a7e_rand.td-a-rec-img{text-align:left}.td_uid_41_5cc6938ec2a7e_rand.td-a-rec-img img{margin:0 auto 0 0}
Този бъг се отстранява по софтуерен път посредством промяна в BIOS-а, само че се губят 10% от продуктивността, което се усеща. Бъгът бе отхвърлен на хардуерно равнище след половин година, когато излязоха новите процесори B3.
Бавно умиращите Intel Atom C2000
Едва ли някой към момента не знае, че силициевите чипове деградират с времето, освен това, колкото е по-малък софтуерния развой и по-високо нагряването, деградирането се реализира по-бързо. Но в случай че не се употребява екстремален овърклок със съществено повишение на захранващото напрежение, процесорите живеят десетилетия и морално остаряват по-бързо, в сравнение с престават да работят заради деградация на кристала.
Но не и при процесорите Atom C2000. Тези чипове излязоха през 2013 година и са предопределени на първо място за микросървъри, информационни устройства и за облачните складове – с други думи там, където е нужна висока продуктивност и по едно и също време с това студен процесор. Като се има поради невисоката цена, 8-те ядра и температурен коефициент под 20 W, тези процесори станаха доста известни измежду огромните сървърни компании. Но през 2017 година се разкри сериозен проблем – вътре в тези процесори като че ли тиктака бомба.
Проблемът се дължи на синтезатора LPC за честотите на шините. Само след година и половина този синтезатор деградира толкоз доста, че синхронизиращите импулси стартират да се губят, което води до цялостен срив в работата на цялото устройство. Проблемът съществено се задълбочи и от това, че синтезаторът е интегриран в процесора, а процесорът е непосредствено запоен към дънната платка и замяната е прекомерно сложна.
Уви, в този случай е явно, че няма по какъв начин казусът да бъде решен по програмен път и Intel оправи нещата посредством хардуерна смяна в тези процесори посредством прехода към новия степинг C0.
Овърклокът на Skylake
Създава се усещането, че бъговете в процесорите единствено тровят живота на потребителите. Това не е тъкмо по този начин и не трябва да забравяме, че е вероятен овърклокът на всички SkyLake процесори на дънни платки със Z чипсета.
Стандартно, Intel дава опция за овърклок единствено на процесорите с показател K на дъната със Z чипсети. Другите съчетания на дънни платки и процесори не дават опция за увеличение честотата на процесора. Но в този случай Intel е позволила неточност в микрокода на своите чипове и по този метод и елементарните процесори без показател К могат да се клокват, само че единствено при съществуването на Z чипсет и единствено по шина. Какво значи това?
Честотата на процесора се образува от два параметъра: това е FSB честотата на на шината и цифрата на множителя. В 99% от случаите шината по дифолт има закрепена периодичност с периодичност 100 MHz, а множителят може да се трансформира то единици до няколко десетици. Така да вземем за пример, процесорът Core i7-8700K има оптимален множител 43, което дава периодичност 43 х 10 MHz = 4300 MHz. Чрез увеличение на множителя до да вземем за пример 50, можем да получим 50 х 100 MHz = 5000 MHz.
Очевидно е, че може да се овърклоква и посредством нарастване честотата на шината: в случай че тя стане 120 MHz, при същия множител от 43, ще получим работна периодичност 43 х 120 MHz – 5160 MHz. Именно поради бъг в микрокода е допустимо клокването на SkyLake процесорите, които публично не подлежат на овърклок. Така да вземем за пример, същият Core i5-6400 с оптималната периодичност 31 х 100 MHz = 3100 MHz, след увеличение честотата на шината благодарение на Z чипсет, може да работи с тактова периодичност 31 х 130 MHz = 4030 MHz.
Разбира се, Intel прекомерно бързо обнови микрокода и той бе незабавно интегриран от другите производители на дънни платки. Само че надалеч не всички консуматори инсталираха и си оставиха този микрокод, което е напълно разумно, тъй като при неговото инсталиране изчезва евентуалният приръст на продуктивността с съвсем 30%.
Но и тук надалеч не всичко е наред. При сходен овърклок се изключват векторните AVX указания, тъй че при някои логаритми, след овърклока, продуктивността на клокнатите по шина процесори става даже и по-ниска. Но в игрите тези указания се употребяват прекомерно рядко, което дава опция на някои консуматори и до през днешния ден да употребяват този бъг.
Отключване на допълните ядра в процесорите на AMD
Вратичката, даваща опция за овърклок на централния процесор е в действителност прелестно нещо. Но 10 години преди този момент AMD прояви изключителна благотворителност: какво ще кажете за двойното нарастване броя на ядрата посредством смяна на две варианти в BIOS?
Причината за тази благотворителност е много банална: доста постоянно слабите процесори са мощни чипове, получени посредством орязване броя на ядрата, кеша и така нататък Това е напълно разумно: за какво да се изхвърля кристал, в който не работят едно или две процесорни ядра? Те просто могат напълно елементарно да бъдат изключени и същият процесор да бъде продаден при по-ниска цена. Така да вземем за пример, актуалният 8-ядрен Core i9-9900K има същия кристал като 6-ядрения Core i5-9600K. Точно по същия метод посредством изключването на 4 ядра и елементи от кеша, от Ryzen 7 се получава Ryzen 3.
Но от време на време годните кристали са толкоз доста, че се постанова да се блокират и напълно читавите. Всъщност, това се практикува от всички компании и този метод им е преференциален. Така да вземем за пример, всеки кристал условно коства на компанията 50 $, а топ-процесорът с него – почти $200. Очевидно е, че надалеч не всички ще купят топ-модела. По-изгодно е половината ядра да бъдат програмно изключени и чипът да се продаде примерно за $100. По този метод и потребителите са удовлетворени, а и компанията няма да остане без доход.
Пределно ясно е, че щом блокирането на половината ядра е програмно, то за какво да не се включи изключеното? Разбира се, може да се случи по този начин, че кристалът да си е бил бракуван и спомагателните ядра да се срутват, само че практиката сподели, че е доста огромен шансът вместо едноядрен Sempron, напълно гратис да получите двуядрен Athlon или Phenom. Това си е двукратно нарастване на продуктивността просто ей по този начин.
При това описът с тези процесори е много величествен. Това са Sempron 1xx, Athlon и Phenom II X2, X3 и X4 – всичките са няколко десетки модела!
Разбира се, в наши дни от всичко това няма смисъл, тъй като даже и топ-моделите Phenom от това време през днешния ден мъчно ще се оправят даже и със сърфирането в Глобалната мрежа.
Алчността на Intel
Милениумът при процесорите бе маркиран посредством конкуренцията за постигане на 1 GHz. Така да вземем за пример, Pentium III с тази тактова периодичност бе обявен на 8 март 2000 година. А през месец юли същата година Intel се устреми към още по-високи честоти – до 1,13 GHz.
Само че не се получи. При много високото напрежение от 1,75 V този процесор работи несигурно и през месец август Intel иззе тези чипове. Чак след две усъвършенствания, през 2001 година, процесорите на Intel към този момент можеха да работят устойчиво с периодичност 1,1 и 1,13 GHz.
Уязвимостта BranchScope
Уязвимостите Meltdown и Spectre отвориха кутията на Пандора и в този момент надали не всеки месец се появява информация за сходни хардуерни уязвимости, които Intel неведнъж не съумява да оправи.
Най-важните от тях си имат свои имена, а освен номера. Подобна е уязвимостта BranchScope , проявяваща се в процесорите Intel Core i5 и i7 от семействата Sandy Bridge, Haswell и Skylake. При това, уязвимостите могат да се употребяват даже и в случай че приложението е стартирано в анклава (защитения масив от код) Intel SGX.
Както и Spectre, при тази офанзива се употребява модулът за предсказание на условните преходи, който е предопределен да форсира работата на процесора посредством прогнозиране и отгатване на бъдещи преходи или указания. Но казусът е в това, че когато два процеса употребяват идно и също процесорно ядро, те взаимно употребяват модула за прогнозиране, което дава опция на единия развой да получи данните на другия. Добре е, че пачът за Spectre взема решение и казуса с BranchScope.
Бъгът в процесорите Tegra, дал опция за хакването на Nintendo Switch
Грешките в ARM процесорите са доста по-малко от тези в x86, само че също са съществени. Така да вземем за пример, преди към една година хакерите откриха хардуерна накърнимост в микрокода на на процесора Tegra X1, който се употребява в конзолата Nintendo Switch.
Тази накърнимост също е чисто хардуерна и няма по какъв начин да се оправи посредством софтуерни решения. Необходима е нова версия на процесора. Но до момента в който нов чип няма, с конзолата може да се прави всичко: по този начин да вземем за пример, неотдавна на нея бе стартиран общоприет пълностоен Linux.
Използването на тази неточност е много занимателно: би трябвало да се съединят изводите Joy-Con и този за контролиране силата на звука. Но би трябвало да се внимава доста: в случай че се объркат, изгаря LCD матрицата и пораждат и други повреди.
VME бъгът в процесорите Ryzen
В процесорите Ryzen също има неточности, които за благополучие не са изключително огромни и се оправят посредством възобновяване на AGESA библиотеките.
Една от по-интересните сходни неточности е VME. Тя е отпреди две години и се състои в неправилната реализация на инструкцията INT, генерираща програмно спиране. В последна сметка в режима на виртуален 8086 процесор (именно това е VME и този режим се поддържа 40 години след излизането на 8086), който се употребява за стартирането на старите 8086 стратегии в актуалните Оценка за съвместимост, процесорите Ryzen не работят правилно и това от време на време води до срив и BSOD.
Проблемът е настоящ за 32-битовите Windows XP и Windows Server 2003, които извършват 16-битов код в действително време. Изглежда че не е кой знае какво, изключително като се има поради, че при 64-битовите операционни системи бъгът не се демонстрира. Но има виртуални машини, които се употребяват за пускане на остарял програмен продукт, който не работи в средата на Windows 10. Но тези бъгове са лесни за оправяне, което AMD и направи в AGESA 1.0.0.6.
Уязвимостта на SkyLake-U процесорите при потребление на USB 3.0
Архитектурата SkyLake се оказа цялостна с неточности, а този проблем засегна нисковолтовите процесори с тази архитектура и устройствата с USB 3.0 порт – т.е. на процедура всички преносими компютри и таблети. За хакването са нужни единствено две неща: елементарен USB кабел и пакета за разработчици Intel System Studio дружно с Intel System Debugger и Intel DAL.
Те дават опция по хардуерен път да се получи достъп до ядрото на операционната система, хипервайзорите и драйверите, благодарение на интерфейса JTAG (Joint Test Action Group) и технологията Direct Connect Interface (DCI) – точно тя може да работи посредством USB 3.0 врата, което в действителност е накърнимост. Защитата не е комплицирана: би трябвало да се изключи DCI посредством USB портовете. Именно по този начин вършат множеството производители, посредством възобновяване BIOS-ите на своите системи.
Дотук изброихме съвсем 20 хардуерни уязвимости и бъгове в процесорите, което не е малко. Ако знаете за други сходни неточности – споделете, с цел да умножим познанието.
.td_uid_43_5cc6938ec2fed_rand.td-a-rec-img{text-align:left}.td_uid_43_5cc6938ec2fed_rand.td-a-rec-img img{margin:0 auto 0 0}
В първата част на този материал разгледахме някои от по-известните хардуерни уязвимости в процесорите, водещи до неточност в изчисленията или до приключване на сензитивна информация. Тук ще продължим с изброяването на хардуерните бъгове и уязвимости.
TLB бъгът в процесорите на AMD
През 2007 година AMD показа на пазара своите първи потребителски 4-ядрени процесори с архитектура K10, при които всичките ядра са ситуирани на един и същи кристал. Другият значим миг при тези чипове е съществуването на общ за всички ядра L3 кеш. Тези процесори станаха нелоши съперници на Intel Core 2 Quad, само че неточност в L3 кеша в първата версия (B2) на тези процесори, малко помрачи насладата на почитателите на AMD.
TLB значи translation look-aside buffer или буфер за бързо превръщане на виртуалните адреси във физически и при съществено натоварване на чипа, при което интензивно се употребява L3 кеша, системата от време на време бърка. Този бъг е изключително сериозен в сървърния сегмент и в последна сметка AMD се принуди да спре доставките на процесорите Opteron.
.td_uid_41_5cc6938ec2a7e_rand.td-a-rec-img{text-align:left}.td_uid_41_5cc6938ec2a7e_rand.td-a-rec-img img{margin:0 auto 0 0}
Този бъг се отстранява по софтуерен път посредством промяна в BIOS-а, само че се губят 10% от продуктивността, което се усеща. Бъгът бе отхвърлен на хардуерно равнище след половин година, когато излязоха новите процесори B3.
Бавно умиращите Intel Atom C2000
Едва ли някой към момента не знае, че силициевите чипове деградират с времето, освен това, колкото е по-малък софтуерния развой и по-високо нагряването, деградирането се реализира по-бързо. Но в случай че не се употребява екстремален овърклок със съществено повишение на захранващото напрежение, процесорите живеят десетилетия и морално остаряват по-бързо, в сравнение с престават да работят заради деградация на кристала.
Но не и при процесорите Atom C2000. Тези чипове излязоха през 2013 година и са предопределени на първо място за микросървъри, информационни устройства и за облачните складове – с други думи там, където е нужна висока продуктивност и по едно и също време с това студен процесор. Като се има поради невисоката цена, 8-те ядра и температурен коефициент под 20 W, тези процесори станаха доста известни измежду огромните сървърни компании. Но през 2017 година се разкри сериозен проблем – вътре в тези процесори като че ли тиктака бомба.
Проблемът се дължи на синтезатора LPC за честотите на шините. Само след година и половина този синтезатор деградира толкоз доста, че синхронизиращите импулси стартират да се губят, което води до цялостен срив в работата на цялото устройство. Проблемът съществено се задълбочи и от това, че синтезаторът е интегриран в процесора, а процесорът е непосредствено запоен към дънната платка и замяната е прекомерно сложна.
Уви, в този случай е явно, че няма по какъв начин казусът да бъде решен по програмен път и Intel оправи нещата посредством хардуерна смяна в тези процесори посредством прехода към новия степинг C0.
Овърклокът на Skylake
Създава се усещането, че бъговете в процесорите единствено тровят живота на потребителите. Това не е тъкмо по този начин и не трябва да забравяме, че е вероятен овърклокът на всички SkyLake процесори на дънни платки със Z чипсета.
Стандартно, Intel дава опция за овърклок единствено на процесорите с показател K на дъната със Z чипсети. Другите съчетания на дънни платки и процесори не дават опция за увеличение честотата на процесора. Но в този случай Intel е позволила неточност в микрокода на своите чипове и по този метод и елементарните процесори без показател К могат да се клокват, само че единствено при съществуването на Z чипсет и единствено по шина. Какво значи това?
Честотата на процесора се образува от два параметъра: това е FSB честотата на на шината и цифрата на множителя. В 99% от случаите шината по дифолт има закрепена периодичност с периодичност 100 MHz, а множителят може да се трансформира то единици до няколко десетици. Така да вземем за пример, процесорът Core i7-8700K има оптимален множител 43, което дава периодичност 43 х 10 MHz = 4300 MHz. Чрез увеличение на множителя до да вземем за пример 50, можем да получим 50 х 100 MHz = 5000 MHz.
Очевидно е, че може да се овърклоква и посредством нарастване честотата на шината: в случай че тя стане 120 MHz, при същия множител от 43, ще получим работна периодичност 43 х 120 MHz – 5160 MHz. Именно поради бъг в микрокода е допустимо клокването на SkyLake процесорите, които публично не подлежат на овърклок. Така да вземем за пример, същият Core i5-6400 с оптималната периодичност 31 х 100 MHz = 3100 MHz, след увеличение честотата на шината благодарение на Z чипсет, може да работи с тактова периодичност 31 х 130 MHz = 4030 MHz.
Разбира се, Intel прекомерно бързо обнови микрокода и той бе незабавно интегриран от другите производители на дънни платки. Само че надалеч не всички консуматори инсталираха и си оставиха този микрокод, което е напълно разумно, тъй като при неговото инсталиране изчезва евентуалният приръст на продуктивността с съвсем 30%.
Но и тук надалеч не всичко е наред. При сходен овърклок се изключват векторните AVX указания, тъй че при някои логаритми, след овърклока, продуктивността на клокнатите по шина процесори става даже и по-ниска. Но в игрите тези указания се употребяват прекомерно рядко, което дава опция на някои консуматори и до през днешния ден да употребяват този бъг.
Отключване на допълните ядра в процесорите на AMD
Вратичката, даваща опция за овърклок на централния процесор е в действителност прелестно нещо. Но 10 години преди този момент AMD прояви изключителна благотворителност: какво ще кажете за двойното нарастване броя на ядрата посредством смяна на две варианти в BIOS?
Причината за тази благотворителност е много банална: доста постоянно слабите процесори са мощни чипове, получени посредством орязване броя на ядрата, кеша и така нататък Това е напълно разумно: за какво да се изхвърля кристал, в който не работят едно или две процесорни ядра? Те просто могат напълно елементарно да бъдат изключени и същият процесор да бъде продаден при по-ниска цена. Така да вземем за пример, актуалният 8-ядрен Core i9-9900K има същия кристал като 6-ядрения Core i5-9600K. Точно по същия метод посредством изключването на 4 ядра и елементи от кеша, от Ryzen 7 се получава Ryzen 3.
Но от време на време годните кристали са толкоз доста, че се постанова да се блокират и напълно читавите. Всъщност, това се практикува от всички компании и този метод им е преференциален. Така да вземем за пример, всеки кристал условно коства на компанията 50 $, а топ-процесорът с него – почти $200. Очевидно е, че надалеч не всички ще купят топ-модела. По-изгодно е половината ядра да бъдат програмно изключени и чипът да се продаде примерно за $100. По този метод и потребителите са удовлетворени, а и компанията няма да остане без доход.
Пределно ясно е, че щом блокирането на половината ядра е програмно, то за какво да не се включи изключеното? Разбира се, може да се случи по този начин, че кристалът да си е бил бракуван и спомагателните ядра да се срутват, само че практиката сподели, че е доста огромен шансът вместо едноядрен Sempron, напълно гратис да получите двуядрен Athlon или Phenom. Това си е двукратно нарастване на продуктивността просто ей по този начин.
При това описът с тези процесори е много величествен. Това са Sempron 1xx, Athlon и Phenom II X2, X3 и X4 – всичките са няколко десетки модела!
Разбира се, в наши дни от всичко това няма смисъл, тъй като даже и топ-моделите Phenom от това време през днешния ден мъчно ще се оправят даже и със сърфирането в Глобалната мрежа.
Алчността на Intel
Милениумът при процесорите бе маркиран посредством конкуренцията за постигане на 1 GHz. Така да вземем за пример, Pentium III с тази тактова периодичност бе обявен на 8 март 2000 година. А през месец юли същата година Intel се устреми към още по-високи честоти – до 1,13 GHz.
Само че не се получи. При много високото напрежение от 1,75 V този процесор работи несигурно и през месец август Intel иззе тези чипове. Чак след две усъвършенствания, през 2001 година, процесорите на Intel към този момент можеха да работят устойчиво с периодичност 1,1 и 1,13 GHz.
Уязвимостта BranchScope
Уязвимостите Meltdown и Spectre отвориха кутията на Пандора и в този момент надали не всеки месец се появява информация за сходни хардуерни уязвимости, които Intel неведнъж не съумява да оправи.
Най-важните от тях си имат свои имена, а освен номера. Подобна е уязвимостта BranchScope , проявяваща се в процесорите Intel Core i5 и i7 от семействата Sandy Bridge, Haswell и Skylake. При това, уязвимостите могат да се употребяват даже и в случай че приложението е стартирано в анклава (защитения масив от код) Intel SGX.
Както и Spectre, при тази офанзива се употребява модулът за предсказание на условните преходи, който е предопределен да форсира работата на процесора посредством прогнозиране и отгатване на бъдещи преходи или указания. Но казусът е в това, че когато два процеса употребяват идно и също процесорно ядро, те взаимно употребяват модула за прогнозиране, което дава опция на единия развой да получи данните на другия. Добре е, че пачът за Spectre взема решение и казуса с BranchScope.
Бъгът в процесорите Tegra, дал опция за хакването на Nintendo Switch
Грешките в ARM процесорите са доста по-малко от тези в x86, само че също са съществени. Така да вземем за пример, преди към една година хакерите откриха хардуерна накърнимост в микрокода на на процесора Tegra X1, който се употребява в конзолата Nintendo Switch.
Тази накърнимост също е чисто хардуерна и няма по какъв начин да се оправи посредством софтуерни решения. Необходима е нова версия на процесора. Но до момента в който нов чип няма, с конзолата може да се прави всичко: по този начин да вземем за пример, неотдавна на нея бе стартиран общоприет пълностоен Linux.
Използването на тази неточност е много занимателно: би трябвало да се съединят изводите Joy-Con и този за контролиране силата на звука. Но би трябвало да се внимава доста: в случай че се объркат, изгаря LCD матрицата и пораждат и други повреди.
VME бъгът в процесорите Ryzen
В процесорите Ryzen също има неточности, които за благополучие не са изключително огромни и се оправят посредством възобновяване на AGESA библиотеките.
Една от по-интересните сходни неточности е VME. Тя е отпреди две години и се състои в неправилната реализация на инструкцията INT, генерираща програмно спиране. В последна сметка в режима на виртуален 8086 процесор (именно това е VME и този режим се поддържа 40 години след излизането на 8086), който се употребява за стартирането на старите 8086 стратегии в актуалните Оценка за съвместимост, процесорите Ryzen не работят правилно и това от време на време води до срив и BSOD.
Проблемът е настоящ за 32-битовите Windows XP и Windows Server 2003, които извършват 16-битов код в действително време. Изглежда че не е кой знае какво, изключително като се има поради, че при 64-битовите операционни системи бъгът не се демонстрира. Но има виртуални машини, които се употребяват за пускане на остарял програмен продукт, който не работи в средата на Windows 10. Но тези бъгове са лесни за оправяне, което AMD и направи в AGESA 1.0.0.6.
Уязвимостта на SkyLake-U процесорите при потребление на USB 3.0
Архитектурата SkyLake се оказа цялостна с неточности, а този проблем засегна нисковолтовите процесори с тази архитектура и устройствата с USB 3.0 порт – т.е. на процедура всички преносими компютри и таблети. За хакването са нужни единствено две неща: елементарен USB кабел и пакета за разработчици Intel System Studio дружно с Intel System Debugger и Intel DAL.
Те дават опция по хардуерен път да се получи достъп до ядрото на операционната система, хипервайзорите и драйверите, благодарение на интерфейса JTAG (Joint Test Action Group) и технологията Direct Connect Interface (DCI) – точно тя може да работи посредством USB 3.0 врата, което в действителност е накърнимост. Защитата не е комплицирана: би трябвало да се изключи DCI посредством USB портовете. Именно по този начин вършат множеството производители, посредством възобновяване BIOS-ите на своите системи.
Дотук изброихме съвсем 20 хардуерни уязвимости и бъгове в процесорите, което не е малко. Ако знаете за други сходни неточности – споделете, с цел да умножим познанието.
.td_uid_43_5cc6938ec2fed_rand.td-a-rec-img{text-align:left}.td_uid_43_5cc6938ec2fed_rand.td-a-rec-img img{margin:0 auto 0 0}
Източник: kaldata.com
КОМЕНТАРИ




