意見:私はきっと苦痛を甘受するタイプなのでしょう。最初のプログラミング言語はIBM 360アセンブラ、2番目の言語はCでした。これらの言語で何かをプログラミングするのは簡単ではありませんでした。どちらにしても、安全にプログラミングするのはさらに困難です。
そのため、米国サイバーセキュリティ・インフラストラクチャセキュリティ庁(CISA)とFBIが、ソフトウェアメーカーに対し、少なくとも新しいコードではCやC++などの「メモリが安全でない」プログラミング言語を放棄するよう説得する取り組みを強化すると発表したとき、それは驚くには当たらなかった。
新しいプログラムでは C と C++ を廃止して Rust に切り替える時期が来ているのでしょうか?
続きを読む
製品セキュリティの不適切な実践に関する報告書では、ソフトウェア メーカーに対し、「重要なインフラストラクチャまたは [国家の重要な機能] NCF のサービスで使用するための新しい製品ラインを、メモリが安全でない言語 (C または C++ など) で開発する場合、代替のメモリが安全な言語が容易に利用できるのに、開発するのは危険であり、国家の安全保障、国家の経済安全保障、および国民の公衆衛生と安全に対するリスクが大幅に高まります」と警告しています。
つまり、CやC++は使わないということです。確かに、そうなるでしょう。
もしこの話に聞き覚えがあるとしたら、それはCISAが長年この点を説いてきたからです。2024年初頭、CISAはFBI、オーストラリア通信信号局のオーストラリアサイバーセキュリティセンター、カナダサイバーセキュリティセンター(通称ファイブアイズ)などのパートナー機関と共同で、「重要なオープンソースプロジェクトにおけるメモリ安全性の調査」という報告書を発表しました。この報告書では、172の重要なオープンソースプロジェクトを分析しています。調査結果によると、これらのプロジェクトの半数以上にメモリ安全性に問題のある言語で記述されたコードが含まれており、調査対象プロジェクト全体のコード行数の55%を占めていることが明らかになりました。
具体的には、「メモリ安全でない言語では、開発者はメモリの使用と割り当てを適切に管理する必要があります。避けられないミスは、バッファオーバーフローや解放後使用(use-after-free)といったメモリ安全性に関する脆弱性につながる可能性があります。こうした脆弱性を悪用されると、攻撃者がソフトウェア、システム、そしてデータを制御できるようになる可能性があります。」
私たちが知らなかったことを教えてください。
CISAはさらに、メモリ安全性の脆弱性がセキュリティ脆弱性の70%を占めていると指摘しました。この懸念に対処するため、CISAは開発者に対し、Rust、Java、C#、Go、Python、Swiftといったメモリセーフなプログラミング言語への移行を推奨しています。これらの言語には、一般的なメモリ関連エラーに対する保護機能が組み込まれているため、コードベースでより安全なものとなっています。
いいですね。
指をパチンと鳴らすだけで、コードベースを魔法のようにCからRustに変換できるなんて、そんな簡単なことだったらいいのに。ネタバレ注意:そんなわけないんです。
LinuxにおけるRustを例に挙げましょう。Linuxの開発者であるLinus Torvalds氏の支援があるにもかかわらず、RustのLinuxへの導入は遅々として進んでいません。
問題は、Torvalds氏がOpen Source Summit Europe 2024で述べたように、「Rust対Cの議論は宗教的な色合いを帯びている」ことです。厳しい議論のせいで、LinuxにおけるRustのメンテナーの一人が嫌悪感を露わにして手を上げて立ち去る事態にまで至りました。何年も、時には何十年もかけてCを習得してきた人たちが、全く異なるRustを習得しようとしないのです。彼らには意味が分からないのです。結局のところ、Cでメモリセーフなコードを書けるのに、なぜあなたにはできないのでしょうか?
落ち着いてRustを学びましょう。近いうちにLinuxでこの言語がもっと使われるようになるでしょう。
続きを読む
そうですね、第一に、彼らにはそれほどの長年の経験がないからです。
問題は、単に年老いて気難しい開発者だけではありません。既存の大規模なコードベースをメモリセーフな言語に変換するのは、途方もない作業になる可能性があります。時間とリソースを大量に消費し、機能を維持するために綿密な計画が必要で、率直に言って、非常に面倒です。
もう一つの問題は、メモリセーフ言語はC言語やC++言語に比べてパフォーマンスが低下する可能性があることです。何十年も前に開発された難解な言語であるにもかかわらず、今でもこれらの言語が使われているのには理由があります。開発者はこれらの言語を使うことで、最速のプログラムを開発できるからです。速度とセキュリティのどちらかを選ばなければならない場合、プログラマーや彼らを採用する企業は常に最速のコードを選びます。
移行コストそのものに加え、企業は既存の開発ツール、デバッガ、テストフレームワークを新しい言語に対応するために置き換える費用にも直面します。そして当然のことながら、新しいプログラムを古いコードやライブラリに統合する必要もあります。
CISAは、この取り組みの実施を強く求めています。少なくとも、企業は2026年1月1日までに既存のコードベースを移行するためのロードマップを策定する必要があります。CISAは、脆弱性の低減とセキュリティの向上という長期的なメリットが初期投資を上回ると主張しています。
とはいえ、この主張は提案であり、コメントの要請が伴います。このアプローチに賛成または反対であり、最終決定が下されるか規則が導入される前にアメリカ政府に知らせたい場合は、連邦官報を参照してください。
- オープンウォッシングの公然の秘密 – 企業がオープンソースを装う理由
- インテルのプロセッサの失敗:ビジネスとエンジニアリングの教訓
- 高齢化が進むオープンソースコミュニティには新鮮な血が必要だ
- Windows: 設計上安全ではない
企業の事情は分かっています。彼らはこの議論を受け入れないでしょう。現代の企業社会では、次の四半期の利益を最大化することが全てです。2027年にお金を節約するために、今日お金を使うなんて?そんなことはできません。
最終的には、苦労しながらもゆっくりと、メモリセーフな言語に移行するでしょう。それは本当に良い考えです。しかし、個人的には、この10年で実現するとは思っていません。2030年代ならいいでしょうが、2020年代ならいいえ。
企業もプログラマーも、移行する十分な理由がありません。申し訳ありませんが、CISAさん、それが現状です。®