「ソフトウェアが世界を飲み込む」という有名な言葉があります。ベンチャーキャピタリストのマーク・アンドリーセン氏による、ソフトウェアが各業界全体のバリューチェーンを奪うというこの仮説は、日々証明されています。
医療機器も例外ではありません。医療機器は、他の方法では実現できない機能性・柔軟性を得るために、ソフトウェアへの依存を強めています。ソフトウェアは最先端技術のように見えますが、実は規制対象のソフトウェアの中核を成す主要なツールの多くは 1980 年代に開発されたもので、いまだに重大な欠陥があり、大きなリスクの元となっているのです。
メモリ安全性の問題は、あらゆる種類のソフトウェアで欠陥の主な原因の 1 つであり、多くの場合、悪意ある不正行為を行う側がシステムを支配する鍵となります。今やこの問題が注目され、米国や英国、オーストラリア、カナダ、ニュージーランドのサイバーセキュリティ機関が各組織に対して「直ちに行動を起こし、最終的には製品からメモリ安全性の脆弱性を排除するよう」促すまでになっています。
メモリ安全性の高いプログラミング言語を採用する医療機器メーカーは、より安全で信頼性の高い製品を顧客に提供できるだけでなく、高額なセキュリティ侵害のリスクを減らし、自社製品の差別化に注力できるようになります。
「メモリ安全性」とは?
診断装置上で実行されるソフトウェアを想像してみてください。現在の時刻やプローブの温度、患者 ID など、多くの情報を追う必要があります。
この情報は、特定のアドレスのメモリで保存されます。それぞれの情報を図書館の棚にある本だとしましょう。「メモリセーフ」システムを使用すると、ある本で読んだり書き込んだりするときは、他の本では読み書きできません。
システムがこのような保護を行わなければ、画面の色がおかしくなるといった小さな問題から、機密情報の漏洩、ハッカーによる不正アクセスといった大きな問題まで、さまざまな深刻な問題を引き起こすおそれがあります。

2019 年の マイクロソフトによるレポートでは、同社のソフトウェア内の重大なセキュリティ脆弱性の 70% が、メモリ安全性の問題に起因すると推定されています。
2024 年 7 月のクラウドストライク社のソフトウェアのメモリ安全性のエラーでは、世界中で病院や航空会社、企業が機能停止に陥り、数十億ドルの被害が発生しました。この事件は、攻撃者にシステムや個人情報への完全なアクセスを許してしまう一連の問題の中で、Heartbleed、Slammer Worm、LogoFAIL などに続く、まさに最新の事例です。
どんなソリューションがあるのか?
こうした背景から、規制当局は産業界に対し、メモリ安全性のエラーを有効に防止できないことがわかっているツールを使用しないよう勧告しています。これは主として、数十年にわたって規制対象のソフトウェア開発に用いられてきた C 言語や C++ 言語を対象としています。これら言語を使っても、チェックや検査を積み重ねることでリスクを軽減することは可能ですが、ケブラーがとっくに発明されているのに古いキルトで身を守ろうとするような遅れた行為です。
ハードウェア側では特に興味深い Cheri をはじめとしたいくつかの取り組みが、またソフトウェア側でもメモリ安全性に直接関与するイノベーションが存在します。ソフトウェアで最も優れたソリューションは、Rust プログラミング言語です。
メモリ安全性を中核的な基本コンセプトの 1 つとする Rust は急速に普及しており、大手ソフトウェアベンダーや規制対象の機器での使用が増加しています。Google は現在、Android の大部分を Rust で書き、その結果メモリ安全性のバグの発生数が急速に減少しています。Microsoft と Amazon も Rust を自社システムに統合しており、同言語の改善とコード化に取り組む Rust Foundation の主要なスポンサーとなっています。
これら大手ソフトウェア会社の取り組みは、医療機器用ソフトウェアでも活用できます。まずシステムの一部を Rust で構築し、その後全体へと拡張していくことで、多くのチームが成功を収めています。
Rust が C/C++ と違うのは、主にメモリの観点から「安全でない」コードの部分を明確に示せる点です。Rust のコードは、デフォルトで確実かつ安全にメモリの読み書きを行うことができます。「安全でない」と記されたコードは、全コード中のごく一部のため、エンジニアが慎重に確認することで対処できます。C/C++ では、「安全でない」なコードがどこにでも現れる可能性があります。C/C++ 言語は、こうしたエラーを防ぐための支援をエンジニアにほとんど提供していないのです。
最初にすべきこと
各企業は、必要なエンジニアリングスキルや新しいプロセスを開発するために、まずこれらの新しいツールを試せるプロジェクトを特定すれば良いでしょう。たとえば、過去にメモリの安全性に問題があった、またはシステムのセキュリティ上重要なソフトウエアのコンポーネントを書き直し、メモリセーフな実装と比べて効果を評価することができます。
医療機器には、ハードウェアサポートと規制対象のツールチェーンという、考慮すべき重要な要素が2つあります。ほとんどの医療機器は、通常のコンピュータを使わず、マイクロコントローラなどの専用チップを使用します。
従来、ベンダーは自社のチップ向けのハードウェアサポートを C 言語で提供してきましたが、Rust のハードウェアサポートの大部分は、開発者コミュニティによって開発されています。現時点では、このサポートはベンダー提供のものほど充実しておらず、規制対応のプロセスで課題となっています。各企業は、これが自社のソフトウェアにどう影響するを調べ、ベンダーと連携してサポートの改善をはかる必要があります。
規制対応のツールチェーンは、主に自動車業界の牽引によってオンライン化が進んでいます。代表的な実装例は Ferrocene で、すでにIEC 62304 に対応したサポートドキュメントが提供されています。需要の増大に伴い、さらなるハードウェアサポートや規制対象のツールチェーンが登場することが期待されます。
今後の見通し
将来の医療機器には、中核コンポーネントとしてのソフトウェアが組み込まれ、製品のライフサイクルを通して新機能の追加やアップデートが可能になるでしょう。規制当局は、顧客を悪質なデータハッキングや予期せぬ機器のクラッシュから守るため、ソフトウェアとサイバーセキュリティに重点を置いています。したがって、医療機器の設計・開発に携わる組織は、当初からメモリの安全性を考慮して設計された新しいツールに移行することが不可欠です。Rust プログラミング言語は、メモリセーフなソフトウェアの重要な要素として有力な候補です。Rust を自社ソフトウェアに統合する方法を見つけることで、各企業は規制を先取りし、顧客に最良の体験を提供、競合他社よりも優位に立つことができます。