Arduino IDEのセキュアな開発プロセスについて学びます。
AUTHOR: Arduino Security Team、LAST REVISION: 2024/02/17
Arduino IDE 2.xは、Arduinoプログラミングツールの最新バージョンで、IDE構築のためのオープンソースフレームワークの、Eclipse Theia上に構築されています。
Arduinoは、検出された全ての脅威や脆弱性から適切に保護するために、Arduino IDEに適用されるセキュリティ対策を定期的に監視し、更新しています。
ハードウェアとシステム、ソフトウェアやオープンソースのArduinoソフトウェアのセキュアな開発ライフサイクルが従っているArduinoの原則と要求には例外はありません。特に、Arduinoは、ソフトウェア開発の全ての段階でセキュア・バイ・デザインの原則と、セキュアな開発のライフサイクルで以下に示すセキュリティ原則に従っています。
- 多層防御の適用(Apply Defense in Depth): 全体としてセキュリティを高めるために、階層化したセキュリティ機構を導入しています。
- ポジティブセキュリティモデルの使用(Use a Positive Security Model): ポジティブセキュリティモデルでは、許可されることを定義し、それ以外は拒否します。
- フェイルセキュリティ(Fail Securely): 例外が好ましくない振る舞いをしないように、失敗を取り扱うことは重要です。
- 最小権限での実行(Run with Least Privileges): 最小権限の原則は、すべてのビジネスプロセスに要求されます。
- 隠蔽によるセキュリティの排除(Avoid Security through Obscurity): 隠蔽によるセキュリティの排除それ自身は、弱いセキュリティ機構です。しかし、全ての原則と組み合わせると追加のセキュリティレイヤとして利用できます。
- 単純なセキュリティを保つ(Keep Security Simple): アプリケーションのセキュリティを単純に保つことは、複雑な設計にするよりもいい選択です。
- 危急化を前提とする(Assuming compromise): 危急化を前提とする原則は、セキュリティイベントがセキュリティインシデントに発展する前に、予測・修復するために、検知・対応力を向上するのに有用です。
- 人をデータから遠ざける(Keep people away from data): メカニズムやパターン、ツールを利用し、データへの直接アクセスやデータの手動操作の必要性を低減あるいは削減します。これは、機密データを扱う際の誤操作や修正、ヒューマンエラーを削減することを目的としています。
さらに、Arduinoメンバーは、Arduinoのセキュアなソフトウェア開発のライフサイクルの一部として、以下の柱に配慮しています。
- 教育と指導(Education and Guidance): 開発者は特定のノウハウを持っていて、セキュアなアーキテクチャとコーディング標準のトレーニングを受けます。
- セキュアなデータ管理(Secure Data Management): 個人識別情報のような機密データは、法令に従って適切に管理され、セキュリティ標準が適切に実装されます。
- セキュアなリポジトリ管理(Secure Repository Management): 最小権限と職務の分離の原則により、ソフトウェアリポジトリは保護されます。
- セキュアな環境(Secure Environment): サービスとデータは、異なる環境間(開発とステージング、本番)で分離されます。
- セキュアな開発(Secure Development): 全ての開発ライフサイクルの全ての段階で、セキュリティ要件とベストプラクティスが考慮されています。
- セキュリティテスト(Security Testing): 成果物が開発された結果残存する脆弱性を特定するために、セキュリティチームにより実施される活動です。
セキュリティテスト活動の一部として、Arduinoは、Arduino IDEに対して、定期的に以下の活動を行います。
- セキュアコードレビュー(Secure Code Review (SCR)): 主なセキュリティ脆弱性や脅威遺体して、安全であることを保障するために、コードレビューを行います。
- セキュアコンポーネント分析(Secure Component Analysis (SCA)): TheiaのnpmパッケージとElectronに関連するコンポーネントを、セキュリティエンジニアが評価します。
- シークレットスキャン分析(Secrets scanning analysis): リポジトリから、秘密情報が不用意に漏れないための活動です。
最後に、Arduinoユーザーや顧客が、脆弱性やセキュリティ問題を疑ったときは、協調的静寂性開示(Coordinated Vulnerability Disclosure)ポリシー(https://www.arduino.cc/en/security_cvd)に記述されているように、報告することを推奨しています。
サードパーティコンポーネント
セキュアコンポーネント分析を行う過程で、前述した外部依存性(Eclipse TheiaとOpenJS Electron)に特に注意を払い、見つけた脆弱性をそれぞれのプロジェクト管理者に報告します。
- Eclipse Theiaは、https://www.eclipse.org/security で説明されているプロセスに従い、脆弱性を管理します。
- OpenJS Electronは、https://www.electronjs.org/docs/latest/tutorial/security で説明されているプロセスに従い、脆弱性を管理します。
各管理者によりサードパーティーのコンポーネントの脆弱性が修正された場合は、特定された脆弱性の重大度に基づき、商業的に合理的な機関で、必要に応じて関係するコンポーネントを更新します。
バージョン管理
Arduino IDEの複数バージョンを管理する必要があるときは、以下の方針を適用します。
- プロセス(設計、開発、テスト、リリース)に適用する全てのセキュリティ原則を、全ての開発中のバージョンに適用します。
- 脆弱性の発見と修正に関連する考慮と、そのセキュリティ修正の提供を、Arduinoの最新の安定版のリリースに適用します。さらに、
- ナイトリービルドにセキュリティ修正は適用しません。
- arduino.cc/en/softwareに記載の、“過去のバージョン"と記されているArduino IDEに、セキュリティ修正は適用しません。
一般的に、既存のバージョンにセキュリティ修正を適用するよりは、必要なセキュリティ修正を適用した新しいバージョンのArduino IDEをリリースすることを、Arduinoは選びます。ユーザーは、最新の安定版のArduino IDEを利用することが推奨されます。また、ソフトウェア自身が提供する自動更新機能により、最新かつ最高の機能とセキュリティ更新を保証します。
オリジナルのページ
https://docs.arduino.cc/software/ide-v2/tutorials/ide-v2-security/
最終更新日
February 17, 2024