2020年 (ISC)² Blog 和訳

2020年12月17日

ソフトウェア障害を回避するためのレシピ

 セキュリティの専門家であれば、問題を修正するために多くの修正が必要となり、たくさんのパッチによって本来の目的がどこかにいってしまい、早すぎるリリースを迎えたソフトウェアをいくつも挙げることができるでしょう。あるソースによると、2017年のソフトウェア障害(*1)は、1.7兆ドルを超える損失をもたらしたといいます。もちろん、障害のほとんどはセキュリティ上の脆弱性が原因でした。
 IoTデバイスの障害についても、多くの文書化された問題があります。インターネットに接続された電球(*2)、医療機器(*3)、スマートロック(*4)などの脆弱性から、消費者の信頼を失うという、より大きな問題へと発展していきます。場合によっては、説明通りに動作しない製品を販売すると、深刻な結果(*5)を招く可能性があります。非常に多くの障害の原因は「駆け込みリリース」にあることが多いです。急いでケーキを焼こうとすると、材料を見落としてしまうのと同じように、製品のリリース後にセキュリティを後付けしなければならない状況は、同じような恥ずべき失敗を引き起こす可能性があります。
 問題を修正するためにパッチを当て続けることは、かなり大変なことです。パッチ適用は、ほとんどの組織にとって業務の障害となるため、無視されることがあります。さらに大きな問題は、悪名高いEquifaxの侵害事件のように、パッチが適切に適用されなかった場合の不幸な結果(*6)です。
 時間が無い設計プロセスで発生する失敗を防ぐ方法はあるでしょうか?状況によってそれは変わりますが、確実に良い結果をもたらすのは、Certified Software Lifecycle Professional (CSSLP)(*7)と連携することです。CSSLPの資格を持っている人は、ソフトウェア開発ライフサイクル(SDLC)のすべてのフェーズにセキュリティを構築するための理解と、実践的なアプローチの両方について訓練を受けています。ケーキを作るには、材料をただ積み重ねるだけでは無いのと同じように、訓練を受けたソフトウェアセキュリティライフサイクルの専門家は、プログラミング以外の要素も理解しており、それが開始からリリース、レスポンスに至るまで、より安全なソフトウェアを生み出すことができるのです。

Mis en Place

 "Mis en Place"(メス・アン・プレースと発音)とは、料理用語で、始める前にすべてのものを準備しておくことを意味します。これはSDLCにも当てはまります。開発の初期段階には、セキュリティの基本が含まれていなければなりません。チームがウォーターフォール、アジャイル、その他の開発モデルを使用しているかどうかに関わらず、最終製品への期待だけでなく、必要とされるセキュリティの面からも、要件に対する評価を系統立てて行っていかなければなりません。適切な計画を立てることができないと、後の段階で修正するための時間とお金がかかることになります。このフェーズでは慎重に計画することが求められ、計画ができたのであれば、今度は慎重にそれを守っていかなければなりません。シェフのAnthony Bourdain氏はかつて "私のミスに影響されるな"と言っていました。 CSSLPの資格保持者は、現れる可能性のある多くの落とし穴を避けるために正しく計画する能力を持っています。
あなたのすべての鍋や調理器具が清潔であることを確認してください。
 食中毒ほど怖いものはありません。アメリカでは毎年4800万人以上が食中毒になっていると推定されています。ほとんどの場合、食中毒は、結果として食品中に作れられる汚染物質というよりも、細菌が原因であると言うことができます。同様に、SDLCは設計フェーズの進行に伴って汚染物質が増加する可能性があります。脅威のモデル化が不十分な場合、開発チェーン全体に沿って欠陥を引き起こす可能性のある問題を見落としてしまうことがあります。これは、あなたの夕食のゲストを食中毒で死なせてしまうのと同じように、最終的な製品にダメージを与える可能性があります。脅威のモデル化は、CSSLP 受験者が理解しなければならない重要な部分です。

オーブンを予熱する

 食材が集められ、清潔な器具が設置されれば、オーブンは予熱されているはずです。これは重要なことですが、湿った材料と乾いた材料を混ぜると、様々な化学反応が起こり、長く放置すると最終製品に悪影響を及ぼすことがあります。 SDLCの実装フェーズでも同じことが言えます。ここですべてのパーツが一緒になり始め、ソフトウェアは、統合されるシステムの残りの部分と照らし合わせてチェックしなければなりません。すべてが完全な準備と設定が必要であり、すべての不測の事態をチェックし、監視しなければなりません。
串がきれいに出てくるか?
 上手に焼くために、テストは不可欠です。あなたの作品が「生焼け」と言われてしまうことがないようにしてください。 ケーキをテストする方法の1つに、細い串や爪楊枝で中央を突いて、棒がきれいに出てきたらケーキが完成している、というものがあります。リリース前のテストや検証は必須です。ソフトウェアの種類によって、製品の安心感を十分に得るためには、さまざまなテスト手法が必要になります。ソフトウェア開発のウォーターフォールモデルでは、テストは最も重要なフェーズの一つと考えられています。せっかくの努力が「生焼け」と評価されてしまったら、どれだけダメージを受けるか、特にセキュリティの観点から考えてみてください。

味覚テスト

 すべてが終わり、ケーキが冷め、すべてが完璧に見えた後、真実の瞬間は、ケーキを味わうときです。これはSDLCのリリースとレスポンスのフェーズです。完成したケーキの場合、味が悪ければほとんど救いようありません。次回から修正してみるしかないのです。ソフトウェア開発では、完成した製品に対する反応を受け取り、改善に向けて評価することができます。プロジェクト全体がゴミになることはほとんどありません。これまでの手順をすべて踏めば、結果は完璧ではないかもしれませんが、修正に耐えうる柔軟性を持っているはずです。SDLC のフェーズを理解し、熱心に適用することで、たとえ市場への投入が急務の製品であっても、可能な限り安全性を確保することができます。
 SDLC のすべてのフェーズにセキュリティを組み込むことの詳細については、ホワイトペーパー「How to Reap the Benefits of DevSecOps」(*8)をお読みください。
CSSLPはどのようにしてあなたが成功するのを助けることができるか
 ソフトウェアセキュリティの原則と実践の両方の知識を増やしたいと考えているセキュリティの専門家にとって、(ISC)² が提供するCSSLP(*9)は、それらを理解し、スキルを得るための完璧な手段と言うことができます。CSSLP資格は、設計から開発、評価、およびその他のすべてのセキュリティ上の考慮事項に至るまで、ソフトウェアセキュリティの最高レベルで機能するために必要なスキルを証明します。 また、この資格は、幅広く、変化し続ける情報セキュリティの分野で、専門的な知識と専門性を持っていることを雇用主に提示することができます。

*1:https://www.tricentis.com/blog/real-life-examples-of-software-development-failures/
*2:https://hotforsecurity.bitdefender.com/blog/has-your-smart-wifi-enabled-led-light-bulb-been-hacked-9487.html
*3:https://www.sciencemag.org/news/2015/02/could-wireless-pacemaker-let-hackers-take-control-your-heart
*4:https://www.tripwire.com/state-of-security/featured/tripwire-research-iot-smart-lock-vulnerability/
*5:https://www.bankinfosecurity.com/ftc-fines-software-vendor-over-encryption-claims-a-8782
*6:https://cybersecurity.att.com/blogs/security-essentials/was-the-largest-breach-in-history-a-misconfiguration-problem
*7:https://www.isc2.org/Certifications/CSSLP
*8:https://www.isc2.org/Landing/csslp-devsecops?utm_source=isc2&utm_medium=blog&utm_campaign=GBL-CSSLPdevsecops&utm_term=recipeavoidfailure-dec17&utm_content=whitepaper
*9:https://www.isc2.org/Certifications/CSSLP

原文記事: https://blog.isc2.org/isc2_blog/2020/12/a-recipe-for-avoiding-software-failures.html