ソフトウェア・インテグリティ

 

医療機器のUL(およびFDA)規格への適合を支援する方法

FDAが医療機器の市販前申請で参照可能な「Recognized Consensus Standards」としてUL 2900-2-1を採用したことは、世界がより良い方向に変わろうとしていることを意味しています。

接続された医療機器のサイバー・セキュリティを再整備するための努力は、かなりの時間とエネルギーを必要とします。医療機器の多くが過去数十年の間に作られたことを考えると、使用中にそれらがセキュアであることを担保するのは、まるで巨大なタンカーを軽々と取り回すことができないのと同じく現実的ではありません。
しかし、先月、連邦食品医薬品局(FDA)が医療機器の市販前申請を支援する規格としてANSI(米国規格協会)が承認したUL 2900-2-1の採用を発表したことは、世界が良い方向に変わろうとしていることを意味しています。特に患者さんのために。
これまで10年以上にわたって報道され、認知されてきたように、これらの医療機器は、患者の安全を確保するために設計されたものです。インターネットに接続することを意図したものではありませんでした。

しかし、将来的にはそうなるでしょう。

医療機器のセキュリティの未来

UL 2900-2-1 では、「構造化されたペネトレーション・テスト、製品ソースコードのレビュー、ソフトウェア部品表の分析」など、ソフトウェア開発ライフサイクル(SDLC)全体を通して、複数のレベルのセキュリティテストを実施することを求めています。また、FDAは基準を「ガイダンス」と呼んでいますが、それらは法的義務ではありません。準拠しない場合、承認手続きが今まで以上に面倒になる可能性あり、 製品を市場に出すことができないかもしれません。脆弱性があると、場合によっては患者を怪我や死亡の危険にさらすことになるものの、医療機器のサイバーセキュリティは長い間改善しないままでした。

WhiteScope の創設者である Billy Rios 氏と、現在 DigiCert 社の IoT セキュリティのグローバル・ディレクターであり、元シノプシス社のクリティカル・システム・セキュリティのグローバル・ディレクターだった Mike Ahmadi 氏が数年前のプレゼンテーションで述べていたように、テストは多くの理由から非常に重要です。

– すべてを検証し確認する必要があります。

– エンジニアと研究者(ハッカーであることもあります)は、時に異なる考えを持っています。エンジニアは物事を機能させることに焦点を当てていますが、ハッカーは物事を機能させないようにしたり、作成者が意図したものとは異なる方法で動作させることに焦点を当てています。

– サイバーセキュリティは、物事が常に変化し続けるダイナミックな環境です。

テストの推奨事項

では、新規格のテストの「推奨事項」(義務化)とは何でしょう。また、開発者はどのようにしてそれらに準拠することができるでしょうか?

FDAは、開発者が使用しなければならないツールを指定しているわけではなく、単に開発者が期待するさまざまな試験方法を規定しているだけです。、FDA/ULの「ガイダンス」をどのように適用すれば、開発者が自社製品にセキュリティを組み込むことができるのか、また、市販前申請をより速やかに通すことができるのかについて、専門家による分析と提言を紹介します。

マルウェアテスト

マルウェア・テストは、主に以下の二点に焦点をあてています。開発者がデプロイしようとしているライブラリや実行ファイルにマルウェアが含まれているかどうかを確認することと、ソフトウェアがデプロイされているシステムやサーバにマルウェアが含まれていないことを確認することです。

「最も基本的なマルウェア・スキャンツールは、シグネチャを用いてマルウェアを識別し、システムから削除します。」とKetkar氏は述べています。

より高度なツールでは、より洗練された振る舞いに基づいたアプローチを採用しています。「これらのツールはプロセスを監視し、マルウェアの兆候を示す既知の悪意のある行動のリストと比較します。」とも述べています。
このようなテストを行えるオープンソースや商用のマルウェア除去ツールは数多くあります。

不正入力テスト

不正入力テストは、「ファジング」と呼ばれる自動テストの一種で、多くの場合、攻撃者がターゲットに対して最初に使用する評価方法です。ファジングは、プログラムにランダムな入力を送り、異常な動作を引き起こすテストケースを見つけます。
ファジングには多くのタイプがありますが、FDA/ULの基準では2つのタイプに焦点を当てています。より基本的な方法は変異ファジング(Mutational Fuzzing)です。変異ファザーは、有効なサンプル入力を種として使用し、それをランダムに変更してターゲットがどのように変異するかを確認します。
より洗練された方法は生成ファジング(Generational Fuzzing)です。既存の入力を変異させるのではなく、生成ファザーは状態エンジンを使用してゼロから入力を生成します。
Ketkar氏は、ターゲット・デバイス上の「カスタム・プロトコルをテストするために使用されるファザーである」と述べています。

ソフトウェアの弱点分析

ソフトウェアの弱点分析は、一般的なカテゴリの欠陥を排除することよりも、最も一般的な弱点を排除することを目的としています。Synopsysのビジネスデベロップメント・マネージャである Chris Clark は、これらのカテゴリは、CWE トップ 25CWE/SANS On the Cusp listOWASP トップ 10 としてカタログ化されているものを指していると述べています。これらの欠陥を発見し、削減するための方法は多岐にわたっています。しかし、Ketkar氏は、ソフトウェアの弱点分析のためのツールがいくつか存在する一方で、現在ではほとんどが専門家によって行われていると述べています。

静的ソースコード解析

静的コード解析とは、ツールによるデバッグの一種で、プログラムを実行せずにコードをスキャンするもので、コードは実行されません。静的解析を行うツールは複数あります。最も基本的なものは、空のキャッチブロックや呼び出し元で戻り値が処理されていない関数など、ソースコードから特定のパターンを検索して報告するだけのものです。より高度なツールでは、汚染、データフロー、制御フローなどの解析といった高度な技術を用いて、より複雑な欠陥を発見します。

静的バイナリおよびバイトコード解析

バイナリコード解析は、コンパイラが生成した機械語をスキャンします。ソースコードが入手できず、ベンダーのライブラリや実行ファイルしかアクセスできない場合に便利です。しかし、Ketkar氏によれば、バイナリ解析は非常に有用な結果が得られると多くの専門家が強く信じているとのことです。たとえソースコードにアクセスできたとしてもです。「例えば、Javaのようなプログラミング言語では、一見単純なコードでも、メモリ内にオブジェクトのコピーが作成され、それが攻撃者に盗み出される可能性があります」とも述べています。

Rios氏とAhmadi氏は、詳細なバイナリ解析は、バックドア、設計上の欠陥、実装上の問題や設定上の問題を検出するのに役立つと述べています。

バイトコード解析は、「実際の」コンピュータやハードウェアプロセッサではなく、通常は仮想マシンと呼ばれるプログラムによって処理されるコンピュータのオブジェクトコードをスキャンします。

次に何をするか

FDA/UL が期待するテスト手法のリストは、重要かつ困難なものに見えるかもしれません。しかし、専門家によれば、脅威の状況を考えると、特に医療機器が関与している場合には、どのようなソフトウェア開発プロセスにおいてもセキュリティテストは標準作業手順書(SOP)に含められるべきだとのことです。そして、いくつかのツールは他のツールよりも効果があり、それは自動化が鍵であることに留意すべきとのことです。

「企業は、認証プロセスが日常業務の一部となるように、どうしたらこれらの認証要件を生産パイプラインに組み込むことができるかを検討すべきです。」とClarkは述べています。

「これにはかなりの先行投資が必要になりますが、比較的短期間でより多くのサイバー・レジリエンスのあるソリューションを実現することができるでしょう。」

規格に適合する医療業界のソフトウェアセキュリティ・テスト

 

この著者によるその他の情報