Arduinoは、デジタル機器を構築するためのユビキタスなシングルボード・マイクロコントローラーおよびマイクロコントローラー・キットを設計・製造するイタリアの大手企業である。Arduinoの製品は歴史的にオープンソースで開発されており、シンプルで費用対効果が高く、使用や導入が簡単です。
最近、ArduinoはArduino Optaという新製品を発表した。産業用IoT 機能を備えたマイクロPLC(プログラマブル・ロジック・コントローラ)である。このデバイスは、産業用オートメーション設備や制御システム・アーキテクチャへの導入を想定している。ソフトウェア開発者がデバイスを利用し、展開できるように、ArduinoはIDE(統合開発環境)内に配布されるライブラリの大規模なセットを提供し、カスタマイズされたアプリケーションを書くために使用されます。Arduino Optaは、この開発プラットフォームに完全に統合されています。
Nozomi Networks ラボはOptaデバイスの潜在的な脆弱性を分析し、ベンダーとユーザー・コミュニティに開示する。
当社のセキュリティ調査により、Arduino Create Agentソフトウェア(Arduino Optaデバイスの設定に使用)に、ローカルユーザーの特権昇格や保護されたファイルの任意の削除につながる4つの脆弱性があることが明らかになりました。私たちの情報開示を受けて、ArduinoはオープンソースのArduino Create Agentリポジトリに必要なパッチを適用しました。更新されたソフトウェアバージョンは公式ウェブサイトからダウンロードできます。
背景
Arduino IDEソフトウェアには、ローカルでダウンロードする方法と、Arduinoクラウドインフラストラクチャからウェブ接続でアクセスする方法があります。Arduinoデバイスをウェブ経由で接続するには、Arduino Create Agentと呼ばれるエージェントサービスが必要です。このエージェントサービスは、ブラウザとUSBケーブルでワークステーションに接続されたArduinoデバイス間の通信ブリッジとして機能します。Arduinoウェブプラットフォームからアクセス可能なクラウドベースのIDEを図1に示します。
Arduino Create Agentソフトウェアはオープンソースのアプリケーションで、ローカルにインストールすると、ウェブブラウザがArduino接続デバイスに対して低レベルの操作(USBインターフェイスを介した新しいファームウェアのフラッシュなど)を実行するために必要なHTTP/HTTPS APIのセットを公開します。主なアーキテクチャを図2に示します。
Arduino Create Agentのインストールは、ユーザーがWebベースのArduino IDEと対話すると自動的に促されます(図3)。
インストールすると、Arduino Create Agentはローカルで動作するWebサービスとして実行され、localhostインターフェイスにバインドされます。ブラウザとローカルエージェント間の通信はHTTPベースで、オプションでHTTPSを有効にすることもできます。
Arduino Create Agentの脆弱性が見つかった:
以下は、Nozomi Networks Labs によって発見された全 4 件の脆弱性のリストです(深刻度順):
ハイリスク
- CVE-2023-43802:パストラバーサル (CWE-35), CVSS v3.1 ベーススコア 7.3 (CVSS:3.1/A AV:L/AC:L/PR:L/UI:N/S:U/C:H/I:H/A:L)
- CVE-2023-43800データ真正性の不十分な検証 (CWE-345)、CVSS v3.1 基本スコア 7.3 (CVSS:3.1/ AV:L/AC:L/PR:L/UI:N/S:U/C:H/I:H/A:L)
ミディアム・リスク
- CVE-2023-43801:パストラバーサル (CWE-35)、CVSS v3.1 基本スコア 6.1 (CVSS:3.1/ AV:L/AC:L/PR:L/UI:N/S:U/C:N/I:H/A:L)
- CVE-2023-43803:パストラバーサル (CWE-35)、CVSS v3.1 ベーススコア 6.1 (CVSS:3.1/ AV:L/AC:L/PR:L/UI:N/S:U/C:N/I:H/A:L)
すべての脆弱性は、バージョン1.3.2までのArduino Create Agentに影響します(解析時の最新バージョン)。
影響
最もリスクの高い脆弱性は、CVE-2023-43802 と CVE-2023-43800 です。どちらも、システムにアクセスできる攻撃者が、Arduino Create Agentサービスの認証情報を持つユーザーに特権を昇格させることができます。特権昇格の影響は、Arduino Create Agentサービスが実行されているワークステーションの設定によって異なります。エンジニアのワークステーションには複数のオペレータが異なるアカウントでアクセスするため、これは一般的なシナリオです。標準的なアカウントを持つユーザーが別のアカウントになりすまそうとしたり、最終的にはより高い特権アカウントを取得して、システムのシャットダウンなど、通常は拒否されるべき特権操作をシステム上で実行できるようになったりする可能性があります。この問題は、物理的なユーザー(例えばワークステーションの操作者)だけでなく、システムに感染して脆弱性を悪用するマルウェアのような、ローカル特権を持つ別のソフトウェアが実行することによっても悪用される可能性がある。
脆弱性 CVE-2023-43802 は、システム上で任意のファイルを上書きされるパストラバーサルであり、脆弱性 CVE-2023-43800 は、攻撃者が Arduino Create Agent サービスのコンポーネントを置き換え、その後に実行を呼び出すことを可能にするデータ認証の不十分な検証です。両方の脆弱性が悪用されると、攻撃者はシステム上で実行されている Arduino Create Agent サービスのコンテキストで任意のコードを実行できるようになり、前述の特権昇格シナリオにつながります。
CVE-2023-43801 および CVE-2023-43803 は、同じように悪用される可能性のある 2 つの Path Traversal 脆弱性です。システムにアクセスできる低特権ユーザがこれらの脆弱性を悪用することで、Arduino Create Agentサービスを実行するユーザが所有する任意のファイルやフォルダを削除することができます。この場合、これらの脆弱性は、ワークステーションとやり取りする物理的なユーザーによって悪用されるだけでなく、システムに感染したマルウェアによって、保護されたリソースを削除することで可用性の面でシステムを破壊することも可能です。
説明した脆弱性はすべて、Arduino Create Agentに実装されているCORSポリシー(Cross-Origin Resource Sharing)により、デバイスへのローカルアクセス(システムと対話するユーザーまたはシステム上で動作する悪意のあるソフトウェア)を必要とします。脅威行為者は、ワークステーションのマシン上でローカルに実行されているArduino Create Agentサービスとリモートで対話するために、信頼されたHTTPリクエスト(create.arduino.cc Webアプリケーションに対するクロスサイトスクリプティング攻撃など)を生成できる追加の脆弱性を悪用する可能性があります。この手順と攻撃の連鎖により、説明した脆弱性をリモートから悪用できるようになります。
Nozomi Networks Labsはドメイン*.arduino.ccでホストされているウェブアプリケーションのセキュリティ調査を実施しておらず、クラウドベースのArduinoウェブエディタのセキュリティ態勢はこのブログの範囲外です。
推奨される緩和策
私たちの情報公開後、ArduinoはArduino Create Agentサービスに適切な修正を迅速に適用し、公式アップデート1.3.3がリリースされ、公式リポジトリからダウンロードできるようになりました。Arduino Web Editorをお使いの方は、システムの悪用を防ぐため、Arduino Create Agentを最新バージョンにアップグレードすることをお勧めします。
概要
PLC デバイスは産業オートメーション設備で広く使用されており、そのセキュリティレベルは、外部エンティティによって保護されるべきサービスまたはリソースへの不正アクセスを回避するために非常に重要です。Arduino Create Agentサービスは、エンジニアがPLCデバイスをプログラムするために使用する産業施設のワークステーション内にインストールされる可能性があり、システム、サービス、またはリソースにアクセスして操作するために悪用される攻撃対象となります。
このブログでは、Arduino Opta microPLC デバイスをプログラムするためにクラウドベースの Arduino ウェブエディタ IDE を利用するために必要な必須ソフトウェアコンポーネントである Arduino Create Agent サービスに影響を及ぼす 4 つの脆弱性を明らかにしました。資産所有者の皆様には、開発エコシステムを見直し、公式サイトから最新の Arduino Create Agent ソフトウェアをダウンロードしてインストールしていただくようお願いいたします。