「C++」は非常に人気があるプログラミング言語だが、同言語の標準化に取り組んでいるグループが、C++の「メモリ安全性」を(新しいライバル言語である「Rust」のように)高めるための今後の道筋について議論する文書を発表した。
提供:Getty
Rustは、MicrosoftやAmazon Web Services(AWS)、Meta、GoogleのAndroid Open Source Project、主にC++で書かれている「Chromium」プロジェクト(まだ始まったばかりだが)、Linuxカーネルなど、多くの企業やプロジェクトで採用されており、メモリ関連のセキュリティホールを減らすのに役立っている。最近では、米国家安全保障局(NSA)までが、開発者に対してC++からC#やJava、Ruby、Rust、Swiftへの戦略的な移行を促す事態になっている。
C++の生みの親であるBjarne Stroustrup氏も所属するグループが、C++の標準化委員会である国際標準化機構(ISO)のワーキンググループ21(WG21)に「C++の安全性」を高めるための道筋を議論する文書を1月になって提出したのは、C++のセキュリティについて警告する声が広まったためだ。
この文書では、技術的な変更点について議論するとともに、C++の安全性に関する「イメージの問題」への対応についても検討している。
Appleも、最近になってOSのCやC++のコードに関するセキュリティの問題を取り上げた大手IT企業の1つだ。同社は、「iOS」「macOS」「watchOS」などのカーネルとして使われている「XNU」のメモリ安全性の問題を解決しようとしている。
Appleは、2022年10月に、「現在普及しているほとんどすべてのユーザーデバイスは、CやC++などの『メモリ安全性を備えていない』と見なされているプログラミング言語に依存している。メモリ安全性を備えていない言語は、特定のクラスのソフトウェアバグ回避できる強い保証を提供できない。メモリ安全性を改善することは、業界全体のエンジニアリングチームの重要な目標だ」と述べた。
C++は1985年に登場した言語で、その性能の高さから、現在でも非常によく使用されている。C++の標準化はISOで行われており、最新の標準である「C++20」は2020年12月にまとめられた。次の標準は、「C++2023」と呼ばれるものになる可能性が高い。一方、Rustがバージョン1.0に到達したのは2015年で、標準化はまだ行われておらず、コントリビューターのコミュニティによって動いている。
Stroustrup氏らが発表した文書では、組み込みシステムや医療、宇宙航空、航空電子工学などの安全性が重要な分野におけるC++の利用について議論している。同氏らは、自動運転車や、ネットワークに接続された重要インフラや、メッセージングアプリなどの重要性が高まっていることから、「安全性に関するフォーマルな制約に対する需要が高まっている」という認識を示した上で、次のように続けている。
「組み込みシステムや自動車、航空電子工学、医療、原子力などの応用分野では、C++でのプログラミングに安全性が求められることは明らかだ」
「そのため、これまでの間に、これらのほとんどの分野について安全性ガイドラインが定められている。インターネットの爆発的普及によってブラウザーを介した商取引が増加したことで、ブラウザーがハッキングの対象になることが増えたため、もともとはMozillaによってC++を基にして作られたRustが、安全なブラウザー開発言語として時代の寵児になった。また最近では、Rustの安全性に関する主張が、ドライバーやLinuxカーネルなどのブラウザー以外の応用分野でも試されるようになっている」