調べていたら次々と新しい事実が見つかり、ふと気づいたら想定外の大発見や、思わぬ深部まで到達していた。そんな、不思議の国でアリスがウサギの穴に落ちて大冒険をするような研究結果の公表が Black Hat USA 2025 で発表された。
発表者は、ドイツの Limes Security 社から、脆弱性リサーチ部門責任者のフェリックス・エベルステイラー氏(写真)と IT / OT セキュリティスペシャリストのバーナード・ラーダー氏。

Limes Security は、産業制御システムや OT 環境のセキュリティに特化したドイツのセキュリティ企業で、自動車産業や製造業向けのペネトレーションテストや脆弱性診断で知られている。特に欧州の重要インフラや産業システムのセキュリティ評価において実績があり、今回の農業機械への着目も、彼らの OT セキュリティの専門性が活かされた研究といえる。
講演タイトルは「Tracking the Tractors(トラクターの追跡)」 “Hacking” ではなく “Tracking” である点が重要である。要は、単にトラクターの制御を奪って見せびらかすような繊細さに欠けるマッチョな技術自慢ではない。彼らが見せたのはもっと恐ろしいものだった。
● 東ヨーロッパで普及する後付け自動操舵システム
二人が最初に着目したのは、東ヨーロッパで急速に普及する自動走行トラクターだ。FJ Dynamics社( FJD )製の後付け自動操舵システム AT2 は、既存のトラクターに数千ドルで取り付けられる。
システムの核心は、RTK( Real Time Kinematic )補正付き GPS による精密測位だ。センチメートル級の精度で位置を把握し、農場主がタブレットで設定した作業開始点と終了点、そして耕作パターン(直線、曲線、螺旋など)に従って自動走行する。既存のステアリングホイールに強力なモーターを装着し、物理的にハンドルを回転させる仕組みだ。ECU(電子制御ユニット)が頭脳として機能し、IMU( Inertial Measurement Unit:慣性計測装置)で車体の傾きや方向を常時監視、これらの情報を統合して「耕作」「種まき」「刈り取り」といった単調だが精密さが求められる農作業を自動化する。高度な障害物認識や自律判断はできないが、広大な圃場での反復作業には十分な性能を持つシンプルなシステムだ。

● 中国のサーバーに集約される世界中のトラクターデータ
システムの通信構造を調査すると、操作用のタブレットは HTTPS と IoT 機器用のメッセージ交換プロトコル MQTTで FJ Dynamics のクラウドサーバーと通信していた。
MQTT は、IoT 機器のために設計された軽量なメッセージングプロトコルだ。その中心となるのが「 MQTT ブローカー」で、いわば巨大な郵便局のような存在である。ブローカーは世界中のトラクター(パブリッシャー)が送信する位置情報や状態データを受け取り、それを必要とする管理システムやアプリ(サブスクライバー)に配信する。トラクターは「私は今ここにいて、こんな作業をしています」とブローカーに報告し、管理者は「このトラクターを停止させろ」という命令をブローカー経由で送る仕組みだ。
このブローカーは中国に設置された FJ Dynamics のサーバー上で稼働し、世界中のトラクターの制御メッセージや位置情報を一元管理していた。つまり、すべての通信がこの一点を通過する。それは効率的である反面、もしそこが突破されれば、全システムが丸裸になることをも意味していた。
通信は TLS で暗号化されてはいたが、彼らが Frida Toolkit(実行中のアプリに動的にコードを注入して解析する定番ツール)でクライアント証明書を解析すると、ブローカーへの認証が驚くほど脆弱だった。旧型の MQTT ブローカーのパスワードは「 2 文字 + 2020 」という推測可能なもので、新しい MQTT ブローカーも「Bring your own password」方式でセキュリティは形骸化していた。さらに深刻だったのは、遠隔でソフトウェアを更新する機能だ。ファームウェアのアップデートが「平文 HTTP 」「署名検証なし」「 MD5 チェックサム」のみ。
「これは IoT セキュリティの教科書に載せるべき反面教師だ」と彼らは苦笑した。中間者攻撃で任意のコードを実行できた 10 年前の IoT 機器レベルの脆弱性が、2025 年の農業機械に存在していたのだ。
しかし本当の発見はここからだった。
● ウサギの穴への入口「takePhoto」関数の発見
MQTT のワイルドカード(すべてのデータを指定する特殊文字)を使って全メッセージを取得していた二人は、その中に「takePhoto」という見慣れない関数があることを見逃さなかった。MQTT では、トピック(メッセージの宛先)を階層構造で管理する。たとえば、
/sys/製品ID/default/シリアル番号/event/workLog
のような形式だ。ワイルドカードは「+」(当該階層分の任意文字)と「#」(それ以降すべて)の 2 種類が存在し、
/sys/+/default/+/#
と指定すれば、全製品・全シリアル番号・全メッセージを一括購読できる。本来は開発者がデバッグ用に使う機能だが、アクセス制限が甘いとこの機能で全トラクターの情報を根こそぎ取得できてしまう。彼らはまさにこの手法で、約 4 万 6,000 台分のデータの沃野へアクセスを果たした。
その膨大なデータの中で見つけたのが「takePhoto」という見慣れない関数だ。「トラクターにカメラ?」そう思って調査を進めると、同じクラウドインフラを使う別の農機である芝刈り機がどこかのスタジアムの写真を撮影していた。






