LINUXTALKS.CO

Украинка нашла бекдор в синтезаторе Ямаха

 

L


0

0
Анна Антоненко, занимающаяся разработкой встраиваемых систем и в свободное время развивающая операционную систему BOSS (BEAM-based Operating System with Security), опубликовала результаты обратного инжиниринга музыкального синтезатора Yamaha PSR-E433. В ходе проведённой работы в синтезаторе был выявлен обфусцированный shell-интерфейс, позволивший организовать выполнение своего кода на уровне прошивки. Доступ к shell-интерфейсу осуществляется посредством отправки MIDI-пакетов с сообщениями SysEx, которые можно передать при подключении синтезатора через порт USB. Полученные в ходе обратного инжиниринга сведения о чипе и прошивках, а также примеры кода и отладочные дампы размещены на GitHub.

Дальнейшее изучение прошивки показало, что команды обрабатываются в пакетах, всегда начинающихся с одних и тех же 8 байт данных и заканчивающихся кодом 0xf7. Так как внешнее взаимодействие с синтезатором осуществляется только через MIDI, а в спецификации MIDI предусмотрен специальный служебный тип сообщений SysEx, было предположено, что именно он может использоваться для передачи команд. Догадку также подкрепляло то, что сообщения SysEx и пакеты, разбираемые оболочкой, начинались с одного кода 0xf0, за которым следовал идентификатор производителя 0x43 (Yamaha).

Для проверки гипотезы был написан Python-скрипт, который транслировал вводимые данные в пакеты протокола MIDI. И метод сработал:


   login
   passwd? #0000
   login OK
   > help
   logout
   help
   ?
   info
   ver
   stack
   perf-on
   perf-off
   perf-disp
   d
   dp
   d   xxxxx
   d/s xxxxx
   m   ADDRESS DATA
   m/b ADDRESS DATA
   m/w ADDRESS DATA
   m/l ADDRESS DATA
   > info
   DevelopName        PSR-E433
   DevelopNumber      #3341
   Main DevelopNumber #3341
   Make data & time   MAY 16 2012 19:00:57
   J/E Select         English
   > 
В подсказке, показанной при отправке команды "help", среди прочего присутствовали команды для изменения содержимого памяти. При помощи данных команд можно было загрузить произвольный код в память и передать на него управление, подменив указатель в стеке, используемый для возврата после завершения обработки команды. В качестве эксперимента в неиспользуемой области памяти было размещено написанное на ассемблере простейшее приложение, выводящее строку "HeloWrld" в 8-символьный индикатор ЖК-дисплея. Программа была оформлена в виде обычного MIDI-файла, который достаточно было передать на устройство.

Подробности

★★★☆☆
Ответ на: комментарий от Aleksandra

самоирония у меня не пропадала) не только интересуюсь, но и тебя даже заинтересовал)


а кроме того, сосискин - мамкин пирожок и вахтер

crypt    
★★★☆☆
Последнее исправление: crypt (всего исправлений: 1)

FreeBSD / Chrome (GB)
Ответ на: комментарий от JamesHolden

мы сейчас про хохлушек или про бекдоры? в данном конкретном случае я не занимаюсь ни музыкой, ни айтишницами. практического применения 0.0, просто интересный факт, как был найден отладочный интерфейс.


а кроме того, сосискин - мамкин пирожок и вахтер

crypt    
★★★☆☆
Последнее исправление: crypt (всего исправлений: 2)

FreeBSD / Chrome (GB)
Ответ на: комментарий от Aleksandra

Уважаемая александра, ты опять совершаешь свою обычную ошибку.) Не нужно разговаривать с людьми в указательном тоне. Увидишь ты или не увидишь - это имеет значение исключительно для тебя самой)


а кроме того, сосискин - мамкин пирожок и вахтер

crypt    
★★★☆☆
FreeBSD / Chrome (GB)
Ответ на: комментарий от Aleksandra

Завтра внимательно прочитаю и посмотрю, что она там нашла.

Хочешь перенять опыт? Гнобить бедных акынов из кафэшек за неправильные ноты?

Oberstserj    
★★★★★★
Ubuntu / Firefox (NL)
Ответ на: комментарий от JamesHolden

Тырить контеннт у студий, перепродавая конкурентам. Студии работающие со стриминговыми сервисами, оказывается, живут в лютейшей озлобленной конкуренции. Там экшн поживее любой реальной войны у них творится.

Oberstserj    
★★★★★★
Ubuntu / Firefox (NL)
Ответ на: комментарий от TheAnonymous

я сразу заподозрил, что нормальная украинка не будет писать код! [ убрал тег ]


а кроме того, сосискин - мамкин пирожок и вахтер

crypt    
★★★☆☆
Последнее исправление: crypt (всего исправлений: 2)

FreeBSD / Chrome (GB)