公的機関、商業施設を問わず、あらゆる組織を見てみると、2つのことが保証されています。1つ目は、製品やサービスのデジタル化が進んでいること、つまり、ソフトウェア開発者がコードを作成していることです。第二に、これらのデジタルビジネスは、よりダイナミックでグローバルな世界で活動している従来の競合他社や非従来の競合他社からのプレッシャーにさらされています。
このような環境の中で、CIOは新たなイノベーターとなり、権力と影響力を持つ立場となっています。しかし、市場投入までの時間を短縮し、品質を向上させ、柔軟性を高めなければならないという強いプレッシャーから、複雑な分散型の開発チームが形成され、機能や特徴を迅速に開発することに集中し、その結果、脆弱性を生み出す可能性があることを認識していません。
今まで以上に、新しい働き方が求められています。最近のEquifax社の情報漏えい事件では、安全ではないコーディングが原因で核被害が発生したことを見ればわかるでしょう。CIOやCISOは、開発チームがリスクの第一線なのか、それとも会社のセキュリティ・チャンピオンであり、会社の真の「第一防衛線」なのかをよく考えるべきです。
私は、CIOやCISOが、自社の開発チームが、より速く、より良く、より安全なコードでイノベーションを起こすことができるセキュアコーディングのチャンピオンになれているかどうかを検討するために、このセキュアコーディング・チェックリストを作成しました。
1.従来のネットワークセキュリティでは不十分であることをCレベルの役員は認識していますか?
従来のセキュリティ対策でネットワーク層を保護することはもはや十分ではなく、セミプロのハッカーに対しても成功することはほとんどありませんでした。ベライゾンの「2017 Data Breach Investigations Report」では、今日のデータ漏洩の35%がWebアプリケーションの脆弱性によって引き起こされていると報告されています。Webアプリケーションのセキュリティは、ネットワークセキュリティと同様に重要です。
2.最初からセキュリティを考えていますか?
現在のアプリケーション・セキュリティ・ツールは、ソフトウェア開発ライフサイクル(SDLC)の右から左への移行に重点を置いています。このアプローチは、セキュリティチームが記述されたコードの脆弱性を検出し、それを修正するために反応するという、検出と反応をサポートするものです。米国国立標準技術研究所(NIST)によると、コミットされたコードの脆弱性を検出して修正するには、IDEでコードを書くときに脆弱性を防ぐのに比べて30倍のコストがかかります。言うまでもなく、問題の解決には時間的な遅れが生じます。セキュアコードチャンピオンは、SDLCの最左端からスタートし、開発者にセキュアコーディングのトレーニングを継続的に行うことに注力します。そうすることで、開発者は組織の最初の防衛線となり、そもそも脆弱性を防ぐことができます。
3.知識だけを与えるのではなく、実際にセキュリティスキルを身につけているか?
ほとんどのトレーニングソリューション(オンラインおよび教室でのトレーニング)は、スキルの習得よりも知識の習得に重点を置いています。 開発者が安全なコードを書くためには、積極的に学習し、安全なコーディングスキルを身につけることができる実践的な学習に定期的にアクセスする必要があります。開発者は、最近確認された脆弱性について、実際のコードや自分の言語/フレームワークを使って学ぶ必要があります。この学習経験は、コード内の既知の脆弱性を見つけ、特定し、修正する方法を理解するのに役立つはずです。
4.自分のセキュアコーディングスキルをリアルタイムの指標で測定していますか?
開発者のセキュアコーディングスキルが向上していることを、開発者とその組織に証明する証拠を作ることが重要です。測定できないものは改善できません。評価は、開発チームの進捗状況をリアルタイムに把握し、セキュアコーディングの強みと弱みをベンチマークするのに役立つものでなければなりません。
5.外部委託先が安全なコーディング技術を適用していることを確認していますか?
多くの企業は、開発作業を大規模なオンショアまたはオフショアの開発会社に委託することを決定します。最良のケースでは、組織がセキュリティに関して求める唯一の保証は、契約書の中で成果物が「安全」であることを要求する文言だけである。これらの開発会社のスキルを前もって検証する人はほとんどおらず、最終的には優れた安全なコーディング・プラクティスに従っていないソフトウェアが提供されます。最悪のシナリオは、彼らがそれらを知らずにアプリケーションを稼動させてしまうことです。 最も一般的なシナリオは、専門のスペシャリストが(そのための費用を)負担して、稼動開始の遅れや、これらのセキュリティ上の弱点を修正するために誰が支払うべきかという契約上の議論に直面することです。前もって賢くなって、次のアプリケーションを作る開発者のアプリケーション・セキュリティ・スキルを評価しましょう。
6.開発者は、最も一般的なセキュリティ上の弱点を認識していますか?
Web アプリケーションの脆弱性の 85.5%は、OWASP のトップ 10 と呼ばれる 10 個の既知の脆弱性に起因しています。アプリケーション・セキュリティのトレーニングでは、最低でもこれらをカバーし、さらに多くの種類の脆弱性をカバーする必要があります。開発者がこなす課題は、新しいコーディングフレームワークや新しい脆弱性の種類に応じて、継続的に修正・更新される必要があります。
7.社内にセキュリティ・チャンピオンはいるか?
開発者が多い組織では、開発チームの中でセキュリティを擁護する人に投資すべきである。彼らの目的は、セキュリティに関する質問をする人のサポート窓口となるだけでなく、チーム内でのセキュアコーディングやセキュアアーキテクチャの実践を推奨することです。
8.安全なコーディングを容易にするために、開発者向けのツールに投資していますか?
アプリケーションの変更が多い環境や、アジャイル開発が行われている環境では、セキュリティの一部を自動化することが、そのペースとボリュームに対応するために不可欠です。開発ライフサイクルの各段階で、アドバイザー、品質ゲート、または検出ツールとしての役割を果たすツールがあります。特定の種類のセキュリティ・バグに焦点を当て、開発者がコードを書いているときにスペル・チェッカーのように機能するIDEプラグインがあるとよいでしょう。また、ビルドプロセスと統合して、コードがコードリポジトリに提出される際に特定のタイプの弱点を検出するツールもあります。また、コードの自動テストを実行し、ソフトウェアの運用開始後にハッキング技術をシミュレートするツールもあります。いずれもメリットと課題があり、セキュリティ上の問題がないことを100%保証するものではありません。基本的には、弱点を早期に発見できれば、ビジネスへの影響を最小限に抑えながら、より早く、より安く弱点を修正することができます。
CIOがエンタープライズ・アジャイル能力を積極的に構築する中で、セキュア・コーディング・スキルはイノベーションの武器となり、それを持たないことは破壊の道具となります。 この重要な能力をスキップする前に、よく考えてください。
このチェックリストに対して、あなたの組織はどうだったのでしょうか?
CIOがエンタープライズ・アジャイル能力を積極的に構築する中で、セキュア・コーディング・スキルはイノベーションの武器となり、それを持たないことは破壊の道具となります。この重要な能力をスキップする前に、よく考えてください。