Jump to content

Ошибка Cyrix в виде комы

(Перенаправлено с ошибки Coma )

Ошибка Cyrix coma — это конструктивный недостаток процессоров Cyrix 6x86 (представленный в 1996 году), 6x86L и ранних версий 6x86MX, позволяет который непривилегированной программе зависать на компьютере.

Открытие

[ редактировать ]

По словам Андрея Бальсы, примерно в то же время, когда была обнаружена ошибка F00F в процессорах Intel Pentium , Сергей Штылёв из Москвы обнаружил ошибку в процессоре Cyrix при разработке драйвера диска IDE на языке ассемблера . Александр Коносевич из Омска дополнительно исследовал ошибку и вместе с Уве Постом стал соавтором статьи в немецком технологическом журнале c't , назвав ее «скрытой ошибкой CLI» (CLI — инструкция, отключающая прерывания в архитектуре x86 ). Бальса, как участник списка рассылки ядра Linux , подтвердил, что следующая программа на C (которая использует встроенный x86 , специфичный для язык ассемблера ) может быть скомпилирована и запущена непривилегированным пользователем:

unsigned char c[4] = {0x36, 0x78, 0x38, 0x36};
int main()
{
  asm (
  "        movl    $c, %ebx\n"
  "again:  xchgl   (%ebx), %eax\n"
  "        movl    %eax, %edx\n"
  "        jmp     again\n"
  );
}

Выполнение этой программы делает процессор полностью бесполезным до его перезагрузки, так как он входит в бесконечный цикл , который невозможно прервать . Это позволяет любому пользователю, имеющему доступ к системе Cyrix с этой ошибкой, выполнить атаку типа «отказ в обслуживании» .

Это похоже на выполнение инструкции «Остановить и загореться» , хотя ошибка комы не является какой-то одной конкретной командой.

Причина ошибки не в маске прерывания и не в явном отключении прерываний. Вместо этого аномалия в конвейере инструкций Cyrix не позволяет обслуживать прерывания на протяжении всего цикла; поскольку цикл никогда не заканчивается, прерывания никогда не будут обслуживаться. ХЧГ [ 1 ] Инструкция является атомарной , что означает, что другим инструкциям не разрешено изменять состояние системы во время ее выполнения. Чтобы обеспечить эту атомарность, разработчики Cyrix сделали xchg бесперебойным. из-за конвейеризации и прогнозирования ветвей Однако другой xchg входит в конвейер до завершения предыдущего, что приводит к взаимоблокировке .

Обходные пути

[ редактировать ]

Исправление непреднамеренных случаев ошибки заключается в вставке в цикл еще одной инструкции, причем nop хорошим кандидатом является инструкция . Cyrix предложил сериализовать опкод xchg, минуя конвейер. Однако эти методы не помогут предотвратить преднамеренные атаки.

Ошибку также можно предотвратить, отключив неявную блокировку шины, обычно выполняемую инструкцией xchg . Это достигается установкой четвертого бита (маски 0x10) в регистре конфигурации, CCR1.

См. также

[ редактировать ]

Примечания

[ редактировать ]
  1. ^ xchgl в исходном коде означает Exchange ( Long )
[ редактировать ]
Arc.Ask3.Ru: конец переведенного документа.
Arc.Ask3.Ru
Номер скриншота №: a14cb2f717cfc8cc9ab278e4a1153448__1724178240
URL1:https://arc.ask3.ru/arc/aa/a1/48/a14cb2f717cfc8cc9ab278e4a1153448.html
Заголовок, (Title) документа по адресу, URL1:
Cyrix coma bug - Wikipedia
Данный printscreen веб страницы (снимок веб страницы, скриншот веб страницы), визуально-программная копия документа расположенного по адресу URL1 и сохраненная в файл, имеет: квалифицированную, усовершенствованную (подтверждены: метки времени, валидность сертификата), открепленную ЭЦП (приложена к данному файлу), что может быть использовано для подтверждения содержания и факта существования документа в этот момент времени. Права на данный скриншот принадлежат администрации Ask3.ru, использование в качестве доказательства только с письменного разрешения правообладателя скриншота. Администрация Ask3.ru не несет ответственности за информацию размещенную на данном скриншоте. Права на прочие зарегистрированные элементы любого права, изображенные на снимках принадлежат их владельцам. Качество перевода предоставляется как есть. Любые претензии, иски не могут быть предъявлены. Если вы не согласны с любым пунктом перечисленным выше, вы не можете использовать данный сайт и информация размещенную на нем (сайте/странице), немедленно покиньте данный сайт. В случае нарушения любого пункта перечисленного выше, штраф 55! (Пятьдесят пять факториал, Денежную единицу (имеющую самостоятельную стоимость) можете выбрать самостоятельно, выплаичвается товарами в течение 7 дней с момента нарушения.)