ほとんどのソフトプロジェクトでは、セキュリティは見落されているか、後付けになっていることが多い。ほとんどの開発チームは、セキュリティ侵害が起こるのを避けるために時間を費やすよりも、机上の機能を実現することに注力する。そこで開発者が頑丈なソフトウェアの重要性とそこへ至る道筋について自覚するのに役立つよう、Joshua Corman氏、David Rice氏、Jeff Williams氏は「頑丈なソフトウェアマニフェスト(Rugged Software Manifesto)」を策定した。
頑丈とは壊れないことを意味しているわけではない、とBill Brener氏は語る。これは以前よりもずっと改善されることを意味している。これは堅牢性と改善に対するコミットメントに基づいていたソフトウェア開発者の間に、新たな文化を築くものだ。Bill氏はこう付け加える。BSIMM(Building Security In Maturity Model)やSecurity Development Lifecycle (SDL)など、ソフトウェア開発にセキュリティを強いる取り組みはいくつかあるが、頑丈という考えの方が望ましい。
頑丈というのはさらに一歩進んだところにあります。コードをセキュアにする以前に、開発者自身を強くしなければならない、と考えるのです。脆弱性の原因はヒューマンエラーにあります。考え方を変えれば改善されます。とにかく、それを期待してます。
Jeremiah Grossman氏はこう語る。現在のソフトウェア開発には、開発者がコードにセキュリティを組み込む動機がない。ステークホルダーはたいてい、セキュリティよりも機能に時間を費やしたいと考えている。そして、もしセキュリティ侵害があっても、それで開発者が罰せられることはほとんどない。と言っても、彼は罰則を与えることを推奨しているわけでない。頑丈なソフトウェアマニフェストのようなものがあれば相手のプレッシャーになり、よい仕事をすることを誇りに感じ、そうでないと恥ずかしく感じるようになると言う。
Kelly Jackson Higgis氏は、CTOの言葉を引用しつつ、頑丈さという考えに賛同した。
VaracodeのCTOであるChris Wysopal氏は、開発者はセキュリティ問題に対する解決策の一部でなければならないと言っています。「残念なことに、ほとんどの開発者はセキュアなコードを書くことの意味がわかっていません。さらに悪いことに、ハイクオリティなコードを書けばセキュアなコードを書いてることになると思っているのです。ソフトウェアセキュリティ実践者たちはこのような考え方を必死に払拭しようとしてきました。頑丈なコードというのは、こうした考えを打ち破り、セキュアなコードはエレガントでハイパフォーマンスでハイクオリティなコードと同じくらい誇りにすべきだ、という考えを植え付けるひとつの方法です。」
頑丈なソフトウェアマニフェストは次のように主張する。
- 私は頑丈です。それはさておき、私のコードは頑丈です。
- 私はソフトウェアが現代世界の基盤になっていると認識しています。
- 私はその基盤としての役割に課せられた畏怖すべき責任を認識しています。
- 私は自分のコードが予期せぬ方法で、意図していない方法で、意図していた以上に長期にわたり使われることを認識しています。
- 私は自分のコードが、物理的、経済的、国家的セキュリティを脅かす有能で粘り強い敵対者によって攻撃されることを認識しています。
- 私はこれらを認識しています。だから、私は頑丈にすることを選択します。
- 私が頑丈なのは、脆弱性や弱点の原因になることを拒むためです。
- 私が頑丈なのは、自分のコードがその任務遂行を確実に支援するためです。
- 私が頑丈なのは、自分のコードがこれら課題に直面しながらも生き残れるようにするためです。
- 私が頑丈なのは、それが簡単だからではありません。それは必要とされており、挑戦に受けて立つためです。
多くの人がこの取り組みを支援しているが、すべての人が賞賛しているわけではないようだ。
Pete McBreen氏はこう語る。頑丈なソフトウェアマニフェストはパロディだと言わざるを得ない。立派なものもいくつかあるが、全体的に大げさすぎる。
同じように、Jim Bird氏も次のように語っている。頑丈なソフトウェアマニフェストはアジャイルマニフェストの成功をまねようとしている。アジャイルマニフェストは成功したが、これはKent Beck氏やWard Cunningham氏といった実際にソフトウェアを開発している人たちが推進してきたおかげだ。頑丈なソフトウェアマニフェストが成功するためには、アプリケーションセキュリティコミュニティからだけでなくソフトウェア開発コミュニティからのサポートが必要だ。さらにJim氏は、これに関連した活動が不足していることについて、次のようにコメントした。
私は頑丈なソフトウェアのフォーラム、ブログ、メーリングリストに登録しました。すると、そこにはアナウンスといくつかの業界報道がありました。それから、頑丈さについてのマニフェストと、空っぽのブログと空っぽのフォーラム。私が見つけたのはそれだけです。たぶん私は先走りすぎたんだと思います。もう少し待って、本当にここにチャンスがあるのか、ソフトウェア開発コミュニティに語りかける自発性があるのか、成功する見込みが本当にあるのかを見たいと思います。
アジャイルとの共存に関する疑問について、Corman氏はこう言った。
「これについては活発な議論があります。急いで、作って、繰り返すというアジャイルの考え方は、実際ひどいセキュリティ問題をもたらすことがあります。私たちは会話をする必要があります。ちょうどそれを始めたところです。」
Andrew Fried氏は、10のマニフェストを3つの大きな考えに要約した。Andrew氏は次のように言っている。
- ソフトウェアはやると宣伝したことをやらなくてはならない。
- ソフトウェアは、ほぼ毎日毎分インターネットを攻撃する中国製およびロシア製マルウェアによって、私のシステムへの入口を作ってはならない。
- ソフトウェアはソフトウェア自身からユーザを守らなくてはならない。
したがって、ソフトウェアの機能を開発するにはかなりお金がかかるが、ソフトウェアを頑丈にすることに注力するためには、その機運が高まる必要がある。頑丈なソフトウェアマニフェストが開発者に正しい方向を示すかどうかはまだ不明だが、これは出発点のように見える。Joshua Corman氏は次のように言っている。
開発者は、唯一のタスクは機能を実行させることだと考えてコードを書いています。でも、それはプログラムを脆弱性で穴だらけにして、やがて経済的ダメージ、データの損失、生産性の損失をもたらします。自分のコードが有能で粘り強い敵対者によって攻撃され破壊されることをまったく自覚していない多くのプログラマに対して、私たちは働きかける必要があります。