コンテンツへスキップ


外部侵入テスト脆弱性

是正報告

最終更新日 2025/08/01

報告概要

1. 基本情報

背景:2024年6月から2025年7月までの間、外部機関と当社が継続的にセキュリティ監視および侵入テスト作業を実施し、その中でいくつかのセキュリティリスクが発見されました;

範囲:FJDynamics AT2デバイスおよび関連コンポーネント(ファームウェア、MQTTブローカー、Androidアプリケーション、オペレーティングシステムなどを含む)の外部アクセス可能なインターフェースと機能.

2. 侵入の概要

脆弱性番号

脆弱性名

CVSSスコア

重大度

影響を受けるコンポーネント

1-1

ファームウェアが内部サービスへのアクセスを許可する

9.2

重大

RTKシェルファームウェア

1-2

MQTTブローカーが他のデバイスからのデータの読み書きを許可する

9.1

重大

MQTTブローカー

1-3

ファームウェアの更新により、アプリケーションの検証が不足しているため、リモートコード実行が発生します

-

重大

OTA Androidアプリ更新機能

1-4

古いシステムでは、Bluetooth経由で実行可能なコードを実行できます

8.7

FJDynamics AT2(Androidシステム)

1-5

キオスクモードからの脱出により、デバイス上でルート権限を取得できます

7

FJDynamics AT2

1-6

プレーンテキスト通信により、資格情報が露出します

7

バックエンドとの通信プロセス

1-7

ログファイルには資格情報とトークンが含まれています

6.8

Androidタブレットに保存されたログ

1-8

TLS検証なしのMQTT接続

6

MQTT接続

1-9

バックドアアカウントの脆弱性(非機能的欠陥を含む)

5.1

アプリログイン機能

1-10

パスワードのハードコーディング

2.4

FJDynamics AT2

1-11

弱いパスワードポリシー

-

暗号化メカニズムを適用する


脆弱性の説明と修正提案

1. 重大な脆弱性

1-1 ファームウェアが内部サービスへのアクセスを許可する
  • 前提条件: 攻撃者はRKファームウェアのURLを知っている必要があります
  • 問題の説明: RTK Shellファームウェアは静的SSHキーを埋め込んでおり、このキーは複数のファームウェアイストールインスタンスで同一です。このキーが任意のデバイスから抽出されると、無許可のユーザーはこれを使用してこのファームウェアに依存するサーバーに対してインタラクティブなアクセス権を取得し、任意のコマンドを実行したり、機密データにアクセスしたり、権限を昇格させたりすることができます。
  • 修正提案: 各デバイスが独立したSSHキーを使用するように、デバイスの初期設定時にユニークなキー生成メカニズムを実装し、単一のキーの漏洩による大規模システムへの広範な損害のリスクを低減します。

1-2 MQTTブローカーが他のデバイスからのデータの読み書きを許可する

  • 前提条件: なし
  • 問題の説明: MQTTブローカーの設定により、機密データ(GPS座標など)への無制限アクセスが許可され、すべての接続デバイスへのコマンドの送信が可能になります。これにより、プライバシー侵害(デバイスや個人の物理的な場所の露出など)、無許可のシステム制御、ビジネス機能の中断が引き起こされます。
  • 修正提案:
    • MQTTブローカーのセキュリティ設定を直ちに見直し、ロールベースのアクセス制御(RBAC)を実装し、ユーザーがGPSデータを読み取り、コマンドを送信することのみを許可します。
    • すべてのデバイス接続と操作に厳格な本人確認を必要とするように、認証メカニズムを強化します。

1-3 ファームウェアの更新は、アプリケーション検証の欠如によりリモートコード実行(RCE)を引き起こします

  • 前提条件:攻撃者は中間者(MitM)の位置にいる必要があります
  • 問題の説明:Androidアプリケーションの通信チャネルはTLS暗号化を有効にせず、デバイスはAPKファイルの署名を検証しません。攻撃者はMitM攻撃を通じて通信を傍受または改ざんし、悪意のあるAPKファイルを注入できます。署名検証がないため、デバイスは悪意のあるコードを実行し、デバイスの不正制御、データ盗難、またはさらなる悪意のある活動を引き起こす可能性があります。
  • 修正提案:
    • すべての通信チャネルに対してエンドツーエンドのTLS暗号化を実装し、サーバーをTLS 1.2以上をサポートするように構成し、信頼できる証明書機関から発行された証明書を使用します。
    • APK署名の検証を強制的に有効にし、信頼できるソースによって署名されたアプリのインストールのみを許可し、有効な署名のないAPKは拒否します。


2. 高リスクの脆弱性

1-4 古いシステムはBluetooth経由で実行可能なコードを実行できる

  • 前提条件:攻撃者はBluetooth Low Energy(BLE)の範囲内にいる必要があります
  • 問題の説明: テストデバイス上で実行されているAndroidシステムのバージョンはサポートが終了しており、複数のセキュリティバグが存在します。その中には、Bluetoothを介して実行可能なコードをリモート実行できる重大な欠陥があります。Bluetooth範囲内の攻撃者はユーザーの操作なしに任意のコードを実行でき、デバイスの完全な制御を取得し、敏感なデータにアクセスしたり、悪意のあるソフトウェアをインストールしたり、さらにはデバイスの操縦機能を操作したりする可能性があります。
  • 修正提案:
    • 既知のBluetoothの脆弱性を修正するために、Androidデバイスを最新のサポートされているバージョンに直ちにアップグレードしてください。
    • デバイスとアプリケーションが継続的にセキュリティ更新を受け取ることを保証するために、定期的な更新およびパッチ管理ポリシーを確立してください。

1-5 キオスクモードの脱出によりデバイスのルート権限を取得可能

  • 前提条件: なし
  • 問題の説明: アプリケーションによって実装されたキオスクモードは脱出可能であり、基盤となるAndroid機能にアクセスできます。デバイスはデフォルトでルート化されているため、デバイスに物理的にアクセスできる攻撃者は、以下の方法で権限を取得できます: アプリケーションおよび関連する敏感な情報へのアクセス、メモリの読み取り、さらには特定の状況下でのアプリケーション機能の操作。Android UIを介して開発者オプションに入り、ADBを有効にすると、攻撃者はルートとしてシステムコマンドを直接実行できます。
  • 修正提案: キオスクモードを見直して脱出を防止し、機能への不正アクセスを制限するためにハードニング対策(アプリケーションホワイトリストなど)を実施してください。

1-6 プレーンテキスト通信は資格情報を露出させる

  • 前提条件: 攻撃者は受動的なMitMポジションにいる必要があります
  • 問題の説明: AndroidアプリケーションのHTTP通信はTLSを有効にしておらず、攻撃者はネットワークトラフィックを傍受し、機密情報(認証トークンやユーザーパスワードなど)をキャプチャできます。例えば、JWTトークンはプレーンテキストで送信され、アカウントのなりすましに使用される可能性があります。
  • 修正提案:
    • すべてのHTTP通信に対してTLS 1.2以上の使用を強制し、強力な暗号スイートを採用してください。
    • すべてのAPIエンドポイントを設定して非TLS接続を拒否し、不正な証明書攻撃を防ぐために証明書ピンニングを実装してください。


3. 中リスクの脆弱性

1-7 ログファイルに資格情報とトークンが含まれています

  • 前提条件: 攻撃者はローカルログにアクセスできます
  • 問題の説明: Androidアプリケーションは、ログディレクトリ内のログファイルにパスワードなどの機密データをプレーンテキストで保存します。SDカードのアクセス可能性により、他のアプリケーション、管理者、または無許可の第三者がこの情報を取得する可能性があり、アカウントの盗難やコンプライアンスリスク(GDPRやHIPAAの違反など)につながります。
  • 修正提案:
    • すぐに機密情報の記録を停止し、コードレビューを通じて関連するログステートメントを削除してください。
    • ログをクリーンアップし、機密データを削除または安全にアーカイブしてください。
    • ログは暗号化され、非感知化される必要があります。

1-8 TLS検証なしのMQTT接続

  • 前提条件:攻撃者は中間者の位置にいる必要があります
  • 問題の説明:AndroidアプリケーションのMQTT接続はTLS証明書を検証せず、攻撃者がMitM攻撃を行い、データ転送を傍受、変更、再ターゲットすることを可能にし、IoTシステム内の機密データ(ユーザー情報や制御コマンドなど)の機密性、完全性、真正性を危険にさらします。
  • 修正提案:
    • すべてのMQTT接続に対してTLS証明書の検証を実装し、サーバー証明書が信頼できるCAからのものであるかを検証し、その有効性(例:有効期限、取り消し状況)を確認します。
    • 証明書ピンニング技術を使用して、MQTTサーバーの有効な証明書をアプリケーションにハードコーディングし、一致しない証明書からの接続を拒否します。

1-9 バックドアアカウントの脆弱性(非機能的欠陥を含む)

  • 前提条件:攻撃者はタブレットデバイスにアクセスする必要があります
  • 問題の説明:アプリケーションにはバックドアアカウントが存在し、通常の認証メカニズムを回避することを意図していますが、実装上の欠陥(パスワードを16進数のハッシュに変換する際に小文字とスペースを生成する)により現在は利用できません。バックドアアカウントの存在は、システム内に他の潜在的な悪意のあるコードが存在する可能性を示しており、欠陥が修正されると重大なセキュリティ侵害につながる可能性があります。
  • 修正提案:
    • バックドアアカウントと関連コードを直ちに特定し、削除します。
    • 他の悪意のあるコンポーネントや脆弱性を特定するために、包括的なコードレビューを実施します。


4. 低リスク脆弱性

1-10 パスワードのハードコーディング

  • 前提条件: 攻撃者はソースコードを入手する必要があります
  • 問題の説明: アプリケーションのソースコード内で「テクニカルサポート」メニューのパスワードをプレーンテキストでハードコーディングすると、攻撃者による特権昇格のリスクが高まります。このようなパスワードは簡単に侵害され、アクセス制御の保護が不足しています。
  • 修正提案:
    • キーを保存する必要があるかどうかを評価します。保存が必要な場合は、プレーンテキストの保存を避けるために、ソルトを使用したSHA-512などの強力なハッシュアルゴリズムを使用してください。
    • パスワードの保存場所を制限し、厳格なファイル権限を設定し、異なるクライアントに対して独立した認証情報を使用します。
    • 更新スクリプト内のパスワードは使用後すぐに削除されます。

1-11 不適切なパスワードポリシー

  • 前提条件: なし
  • 問題の説明: システムは最大パスワード長を8文字に制限しており、パスワードの複雑さとブルートフォース攻撃への耐性を大幅に低下させ、アカウントへの不正アクセスのリスクを高めています。
  • 修正提案:
    • パスワードポリシーを見直し、少なくとも16文字のパスワードをサポートし、パスフレーズの使用を促進します。
    • パスワードの複雑さ要件(大文字と小文字の文字、数字、特殊文字の組み合わせなど)を強制し、パスワードセキュリティのベストプラクティスに沿ったものとします。

脅威とリスク評価

横方向の拡散リスク

  • 1-1、1-2、および1-3の脆弱性は、すべての関連デバイス/サーバーに影響を与えます。

物理的接触は危険を増幅させます

  • 1-5(キオスク逃避)および1-7(ログアクセス)は、オフラインデバイスに直接的な脅威をもたらします。

コンプライアンス高圧ゾーン

  • 1-6(平文送信)および1-7(ログストレージ)は、GDPR/HIPAAに違反する可能性があり、法的リスクを引き起こす可能性があります。

 

脆弱性修正措置

1. プラットフォーム

2025年7月23日までにMQTT TLS 1.2 + RBACサービスのグローバル展開を完了してください。


2. アプリリリース計画

バージョン

リリース日

ユーザーアップグレード計画

23.103.3.99

2025/7/28

• 2025/07/28: アップグレードの重要性をエージェントに通知

• 2025/07/31: アップグレード構成を完了

• 顧客のアップグレードをサポートするために特別プロジェクトFAEチームを設立

24.103.3.99

2025/7/28

前回の段階的進展と同じ

25.103.1

2025/7/28

前回の段階的進展と同じ


3. ファームウェア

2025年7月31日までに、ファームウェアバージョンが1.0.3.20241209未満のデバイスの構成をアップグレードしてください。


4. ユーザーアップグレードガイド

4.1 一般プロセス


4.1.1 SNコードの見つけ方

ステッカーから

  • FJD AT1 バックプレーン


  • FJD AT2 バックプレーン


オペレーティングインターフェースから

  • 旧ユーザーインターフェース_旧バージョン

  • 旧ユーザーインターフェース_新バージョン

  • 新ユーザーインターフェース

4.1.2 アップグレードアクティベーション位置

  • 旧ユーザーインターフェース。オーバーザエアのアップデートがある場合、クリックボタンは検出中に変更されますアップグレード .

  • 新ユーザーインターフェース

4.2 アップデート前

  1. ネットワーク接続を確認してください。
  2. データが欠落している場合、データ同期を確認してください。

FJD AT1バージョン218-およびFJD AT2バージョン412-の場合、ベースラインアイコンをクリックしてクイックモードを試してください。

 

4.3 アップグレードプロセス

4.3.1 アップグレードAPP + シェルの削除

システムにシェルバージョンがない場合は、ステップ4に直接進んでください。

FAEがOTAアップデートを確認した後、設定 - システム設定に移動し、クリックしますアップデート, そしてアップデートのプロンプトが表示されます。

旧ユーザーインターフェース

新ユーザーインターフェース

アップグレードをクリックすると、システムがアップデートプロセスを開始します。

4.3.2 シェルバージョンを確認

注意: APPのインストールが完了した後、再度アカウントにログインする必要がある場合があります。

更新が完了したら、再起動してシェルのバージョンが消えたかどうか確認してください。消えていた場合は、ステップ3に進んでください。消えていない場合は、ステップ4.


4.3.3 削除 シェル

シェルが削除されていない場合、FAEは別の更新を送信します。ステップ1とステップ2を繰り返してください。


4.3.4 APP + ECU + RTK + IMU + MOTORの更新(AT1 V219未満)

シェルが削除された後、FAEは別の更新を送信します。

更新が始まると、最初にAPPがダウンロードされます。続行するには「インストール」をクリックする必要があります。以下を参照してください。

  • APPのダウンロードが始まります

  • APPのダウンロードが完了しました。「インストール」をクリックしてAPPをインストールしてください

 

  • 「開く」をクリックしてアプリケーションに再度入ります

  • システムに再入した後、残りの更新が継続して処理されます。

  • 更新が進行中です...

  • 更新が完了しました。

古いUIから新しいUIに更新している場合、新しいアプリをインストールした後、次の更新はすぐには表示されません。システムページで再度更新を確認する必要があります。


4.4 アップグレード後

更新が完了したら、必ず30秒間電源を切ってから再起動してください。そうしないと、一部の自動操舵の問題が発生する可能性があります。

 

更新後に一部のフィールドのデータが消える場合は、同期ボタンをクリックしてみてください。

まだ動作しない場合は、

  1. 正しいアカウントにログインしていることを確認してください;
  2. 初めてログインする際は、正しい国/地域を選択したことを確認してください(新しいUI);
  3. アカウント名とSNコードをFAEに送信して、回復を支援してください。

概要と謝辞

FJDynamics AT2デバイスの外部ペネトレーションテスト中に、ファームウェア、MQTTブローカー、Androidアプリケーション、オペレーティングシステムなど、複数のコンポーネントにわたって合計11件のセキュリティバグが発見されました。修正作業は上記のリスク脆弱性を対象にし、ユニークなキー生成、厳格なアクセス制御、TLS暗号化、署名検証などの対策を実施することで、デバイスのセキュリティを体系的に強化しました。同時に、データ保護規制に準拠するために、定期的なシステムアップデート、コード監査、パスワードポリシーの最適化を含む長期的なセキュリティメカニズムが確立されました。

このペネトレーションテストにおける専門的な努力に感謝します。彼らは綿密な技術分析を通じて、FJDynamics AT2デバイスにおける複数のセキュリティ脆弱性を特定し、実用的な修理提案を提供しました。これはデバイスのセキュリティ強化のための重要な基盤となっています。

双方の協力を通じて、脆弱性の徹底的な修復を共同で促進し、ユーザーデータのセキュリティとデバイスの安定した運用を確保します。