Scribble at 2025-01-06 09:15:05 Last modified: unmodified
I gained remote code execution via MIDI messages to trick my synth into playing Bad Apple on its LCD. This blog post is about my journey with this reverse engineering project.
MIDI は DTM の国際的なメッセージング規格であるから、通信プロトコルでもあるわけで、当然ながら通信先をメッセージによって応答させるという意味では制御しうる。したがって、このような攻撃手法が考案されても不思議ではないのだが、MIDI の規格ができてから20年以上も攻撃手法が見つからなかったというのは意外だった。
もちろん、その決定的な理由は音響機器のメッセージング環境が大半の事例において閉じていたからだ。簡単に言えば MIDI に対応する音響機器は、入力機器(マイクや楽器など)から出力機器(レコーダーやスピーカーなど)への閉じたネットワークで利用されてきたため、外部から通信環境へ侵入するのが物理的に困難だったからだ。レコーディング・スタジオの内部にある音響機材や設備の中で閉じているネットワークに外部から侵入することは難しい。もちろん、ネットワークへの侵入を防ぐだけでなくアイドルおたくなどの侵入も防ぐ必要があるから、もともとレコード会社や業務用のレコーディング・スタジオの警備は厳重である。
ところが、やはりインターネット通信を介して制作実務を進行するようになると、とりわけコロナ禍でリモートでの共同作業が盛んに進められるようになった数年のあいだに、こういう従来のネットワークが(ネットワークであるから移行するのは簡単なわけで)インターネットも含めた開放系に移行したという事情が、こういう攻撃手法を考案させる動機づけになり、そしてそれが現実に実行できる環境を整えたのであろう。
そして、これまで音楽編集機器への攻撃手法が考案されなかった他の理由として、通信環境と別の技術的な理由があろう。それは、音響機器のハードウェアの大半がメーカー独自の仕様で開発されていて、ファームウェアの解析すら非常に手間のかかる作業だからだ。そもそも仕様はたいてい公開されていないので、リバース・エンジニアリングするしかなく、もちろんプログラムを手に入れる場合の規約によってリバース・エンジニアリングは禁止されている。仮に規約を無視してやったとしても、多くの人が誤解しているようだが、リバース・エンジニアリングで元のソース・コードを復元などできるものではない。したがって、推測できる範囲でプログラムの挙動に応じたコードを書くという、なかば当てずっぽうのようなことをやって攻撃コードがやっと動くわけである。