Возможно, вы знаете мифическую машинную инструкцию «остановиться и загореться» — ну, машина могла остановиться, но определенно не загорелась. На самом деле, найти программное обеспечение, которое может повредить оборудование, сложно — до сих пор. Современные блоки питания довольно легко взломать и запрограммировать так, чтобы они загорелись.
Вы могли бы начать с мысли «блоки питания — это еще один компьютер ?!», но да, это так. Фактически, компьютерные блоки питания — это давно забытое поле битвы в области высоких технологий. В «старые времена» источники питания были простыми — трансформатор для получения напряжения и выпрямитель для преобразования переменного тока в постоянный. Но этот простой дизайн крайне неэффективен. Вам нужен действительно большой трансформатор и много охлаждения. Это одна из причин того, что старые компьютеры, даже старые домашние, были огромными. Затем инженеры-электронщики задумались над этой проблемой и изобрели импульсный источник питания, который преобразует напряжение с помощью трансформатора гораздо меньшего размера или даже без трансформатора. Электроника также достаточно умна, чтобы контролировать выходное напряжение и регулировать его так, чтобы оно оставалось постоянным.
Импульсный источник питания — это то, что сделало возможными небольшие персональные компьютеры, а затем и телефоны и планшеты с их крошечными зарядными устройствами. Да, невоспетые герои компьютерной революции. Потом дело пошло еще дальше. Интеллект блоков питания увеличивался, пока они не захватили планету — не совсем, но это хороший сюжет для научной фантастики. То, что они сделали, было достаточно сложным, чтобы распознавать, когда устройство сигнализировало, что оно способно принять более быструю зарядку. Источник питания «разговаривает» с заряжаемым устройством, и они согласовывают напряжение, которое можно использовать для максимально быстрой зарядки. Да, правильно, ваш USB-кабель на 5 В может обеспечить до 20 В для более быстрой зарядки — это не в стандарте USB, но кого это волнует.
Исследователи из Xuanwu Lab, исследовательского подразделения китайского технологического гиганта Tencent, решили перепрограммировать прошивку блока питания, чтобы переговоры пошли не так, и устройство получало полную мощность, даже если оно не могло справиться с этим. Вы можете увидеть результат:
Вы даже можете увидеть это в действии на видео — на китайском языке, размещенном на Tencent:
Так стоит ли нам волноваться?
Только нечетко, теоретически. Поскольку источник питания не был подключен к Bluetooth или Wi-Fi, для загрузки новой прошивки потребовался физический доступ. Доказывая свою изобретательскую жилку, исследователи предполагают, что вы можете сделать перепрограммировщик похожим на телефон и перепрограммировать прошивку, притворившись, что одолжили зарядное устройство.
Итак, пока вы держите свой блок питания при себе и никому не одалживаете его, опасности нет. Однако по мере того, как становится все дешевле включать подключение — Pi Zero W стоит 10 долларов, имеет Wi-Fi и Bluetooth и работает под управлением Linux — в конечном итоге будет дешевле использовать что-то подобное, а не старомодную и более дорогую индивидуальную деталь. Когда это произойдет, источники питания будут находиться в облаке в IoT, и обновления по беспроводной сети будут возможны — и, если это возможно, это произойдет. Тогда эксплойт был бы гораздо серьезнее — действительно остановился и загорелся.
Гарри Фэйрхед — я программист, разбирающийся в аппаратном обеспечении. Автор книги The 386/486 PC: Power User’s Guide, его последние книги включают Raspberry Pi IoT на C, Micro: bit IoT на C и Exploring Edison in C. Его названия по программированию Fundamental C и Applying C для Интернета вещей с Linux принимают Углубленный и практический взгляд на C для использования в любом контексте, близком к аппаратному.