Введение
Программные средства для вызова повреждений компьютерного оборудования
В компьютерном жаргоне, "убийственный прокол" (killer poke) – это метод нанесения физического повреждения компьютеру или его периферийным устройствам путем записи недопустимых значений, например, с помощью команды POKE в BASIC, в регистр управления, отображаемый в память. Этот термин обычно используется для описания ряда хорошо известных приемов, которые могут перегрузить аналоговую электронику в ЭЛТ-мониторах компьютеров, не имеющих аппаратной защиты от некорректных данных (яркими примерами являются IBM Portable и Commodore PET).
Zuse Z1/Z3
Компьютеры Z1 (1938) и Z3 (1941), построенные Конрадом Цузе, содержали недопустимые последовательности инструкций, которые могли повредить аппаратное обеспечение при случайном выполнении. Это позволило машине отображать текст и графику на экране на 106% быстрее. Достичь этого удалось, отключив предохранитель "ожидание завершения вывода на экран", предназначенный для снижения статических помех и шума за счет предотвращения одновременного чтения и записи в общую видеопамять (VRAM) процессором и дисплеем. При отключении этого предохранителя графика могла отображаться в два раза быстрее, но при этом появлялись небольшие статические помехи. Несмотря на это, некоторые игры для ранних моделей PET включали эту команду POKE в свой исходный код, чтобы воспользоваться более высокой скоростью графики. Это было связано с тем, что конкретный вывод (пин), на который воздействовала команда POKE, использовался для управления временными характеристиками отображения, но в обновленном видеочипе этот вывод контролировал вертикальную синхронизацию. Таким образом, выполнение команды POKE на новом оборудовании приводило к вертикальному сжатию графики, иногда до одной очень яркой горизонтальной линии. Опасения, что эта аномалия может привести к выгоранию изображения на дисплее, дали ей прозвище "killer poke" ("убийственный POKE").
Дисковый диск Commodore 1541
На Commodore 64 можно было подключить дополнительный внешний дисковод на дискетах 5 1/4". В Commodore 1541 содержался микропроцессор 6502, который использовался для запуска Commodore DOS, а также для управления механизмом дисковода. Данные на дискетах хранились на 35 дорожках (#0–34), а шаговым двигателем можно было управлять вручную через BASIC, отправляя команды "MEMORY WRITE" на дисковод (которые соответствуют команде POKE в BASIC, но записывают во внутреннюю память дисковода и регистры ввода-вывода, а не в память самого компьютера). Если головка дисковода находилась в конце диапазона (дорожка 0 или дорожка 39) и поступала команда продолжить движение, не существовало программного или прошивочного способа предотвратить повреждение дисковода. Продолжительное "стучание" головки о ограничитель приводило к нарушению центровки механизма. Проблема усугублялась методами защиты от копирования, которые использовали нестандартные форматы дисков с необычным количеством дорожек. В Commodore 1571 вместо механического ограничителя использовалась оптическая система.
TRS-80 Модель III
TRS 80 Model III обладала возможностью переключаться между дисплеем шириной 32 символа и дисплеем шириной 64 символа. Это включало реле в видеооборудовании, осуществляемое путем записи в определенный регистр управления, отображаемый в память. Программы, которые многократно переключались между 32- и 64-символьными режимами на высокой скорости (намеренно или случайно), могли необратимо повредить видеооборудование. Хотя это не единичный "критический прокол", он демонстрирует режим отказа программного обеспечения, способный привести к необратимому повреждению аппаратного обеспечения.
CD-ROM-накопители LG
Некоторые модели дисководов LG CD-ROM с определенной прошивкой использовали аномальную команду для "обновления прошивки": команду "очистить буфер", которая обычно применяется к дискам CD-RW. Linux использует эту команду для различения дисководов CD-ROM и CD-RW. Большинство дисководов CD-ROM корректно возвращают ошибку при получении неподдерживаемой команды CD-RW, но дефектные дисководы интерпретировали её как "обновление прошивки", что приводило к их выходу из строя (или, проще говоря, к "окирпичиванию").
Флэш-память
Ресурс флеш-памяти велик, но ограничен. Поскольку запись в хранилище — необходимая операция, большинство приложений обладают достаточными правами, чтобы истощить ресурс флеш-чипов в течение 24 часов, заполняя хранилище настолько, чтобы спровоцировать эффект записи и непрерывно переписывать небольшой файл.
MSi ноутбуки UEFI
Systemd монтирует переменные, используемые Unified Extensible Firmware Interface, в sysfs системы Linux с правами записи для пользователя root. В результате, пользователь root может полностью вывести из строя систему с несовместимой реализацией UEFI (в частности, некоторые ноутбуки MSI), используя команду rm для удаления каталога /sys/firmware/efi/efivars/ или рекурсивного удаления корневого каталога.