ウェブアプリケーションのセキュリティ欠陥を引き起こす、忘れられた人的要因

2018年01月06日掲載
ピーテル・ダンヒョウ著
ケーススタディ

ウェブアプリケーションのセキュリティ欠陥を引き起こす、忘れられた人的要因

2018年01月06日掲載
ピーテル・ダンヒョウ著
リソースを見る
リソースを見る

2018年版ベライゾン・データ・ブレイク調査報告書」は、現在のサイバー犯罪の傾向やインシデントの要因、組織がセキュリティプログラムを成熟させるのに役立つ分析や洞察など、サイバーセキュリティに関する最新情報を提供する読み物として、今年も好評を博しています。今年、ベライゾンの調査員は、53,000件以上のインシデントと2,200件あまりのブリーチを分析し、何に気をつけるべきか、何をしてはいけないかについての具体的なヒントや、どこにセキュリティの取り組みを集中させるべきかについての貴重な提言が数多くあります。2018年版のレポートは、セキュリティの影響が広がる中で、より多くのビジネスパーソンに関連し、主流のビジネス問題として認識されるようになり、時代とともに進化してきたと感じます。

多くの興味深い発見の中でも、2018年のレポートでは、ほとんどのハッキングが依然としてウェブアプリケーションの侵害によって起こることが検証されています(これを示すクールなインタラクティブチャートもあります)。

Webアプリケーション攻撃とは、Webアプリケーションが攻撃の対象となったあらゆる事件を指します。これには、アプリケーションのコードレベルの脆弱性を利用したものや、認証機構を妨害するものが含まれます。注目すべきは、このパターンの侵害件数が減少していることです。これは、顧客が所有する機器から盗んだ認証情報を使ってウェブアプリケーションを攻撃するボットネット関連の攻撃がフィルタリングされているためです。Webアプリケーションを対象とした侵害におけるハッキングの種類としては、依然として「盗まれた認証情報の使用」が最も多く、次いで「SQLi」となっています(「SQL」については後述します...)。

今年の報告書で目立ったテーマは、セキュリティの方程式の中で、問題の一部としても解決策としても、「人的要因」がいかに重要であるかということです。今回のレポートでは、外部の人間と内部の人間の両方を対象としており、ほぼ5人に1人(17%)の割合でセキュリティ侵害の原因となっていることが報告されています。侵入は、従業員が機密情報のシュレッダー処理を怠った場合や、誤った相手に電子メールを送信した場合、ウェブサーバの設定を誤った場合などに発生しています。報告書では、これらはいずれも意図的なものではありませんでしたが、いずれもコストにつながる可能性があることを指摘しています。

しかし、多くのセキュリティ侵害を引き起こしている原因として、忘れられがちな人的要因があります。それは、開発者がセキュリティ上の欠陥を含むコードを作成する頻度が高く、それがWebアプリケーションの脆弱性につながり、結果的にこれらの事件や侵害につながっているということです。

過去5年間のアプリケーションテストでは、発見された脆弱性の数はあまり改善されておらず、同じような古い欠陥が何度も出てきます。40万件のアプリケーションスキャンを基にした2017年のVeracode社のレポートによると、アプリケーションがOWASPトップ10ポリシーに合格したのはわずか30%でした。驚くべきことに、昨年を含めた過去5年間に新たにスキャンされたアプリケーションのほぼ3つに1つにSQLインジェクションが出現しています。驚くべきことに、SQLインジェクションは1999年から存在しています。SQLインジェクションを含む同じ欠陥が常に見つかっているということは、開発者の間でこの「人的要因」の問題が十分に解決されていないという証拠です。

この時点で、私はこの議論の開発者側に立っていることを叫ぶ必要があります。なぜそれが重要なのか、安全でないコードがもたらす結果、そして最も重要なことですが、そもそもそれぞれのプログラミングフレームワークにこのような脆弱性を書かないようにするにはどうしたらいいのか、ということを誰も教えてくれないのであれば、開発者はどうやって安全なコードを書けばいいのでしょうか?

Secure Code Warrior で行っていることですが、開発者の日常生活に実践的な安全なコードトレーニングを組み込んでいる企業は、ウェブアプリケーションの脆弱性の数を減らしているという強い証拠を目の当たりにしています。 開発者が安全なコードを書くためには、安全なコーディングスキルを身につけるために積極的に参加できる実践的な学習に定期的にアクセスする必要があります。開発者は、最近確認された脆弱性について、実際のコードで、特に自分の言語/フレームワークで学ぶ必要があります。この学習経験は、既知の脆弱性を見つけ、特定し、修正する方法を理解するのに役立つはずです。 また、開発者は、セキュリティを簡単にし、スピードを落とさず、良いコーディングパターンと悪いコーディングパターンをリアルタイムに教えてくれる高品質なツールセットをプロセスに必要としています。

このようにして、ウェブアプリケーションの侵害件数に具体的かつ積極的な変化をもたらすことができるのです。

セキュリティ意識向上のためのトレーニングを全社的に強化する必要があるというベライゾン社の意見には、激しく同意します。 CIOとCISOに対する私の追伸は、「開発者を忘れてはいけない」ということです。 現代ビジネスの設計者である開発者は、ハッカーのアクセスポイントを日常的に生み出している重要な「人的要因」である場合もあれば、最初の防衛線であるセキュリティ・ヒーローである場合もあります。

開発者に対する効果的なセキュリティアップスキルは、ベライゾンが今後の報告書で報告する結果に大きな違いをもたらす可能性があります。 2019年の報告書では、開発者のセキュリティトレーニングが、企業が取ることのできる重要なリスク低減戦略として反映されているといいですね。私は楽観主義者ですが、もし企業が開発者にインジェクションの欠陥を作らない方法を学ばせれば、今回のレポートに掲載されているWebアプリケーションの脆弱性の数は大幅に減少するだろうと私は思います。

ゲーム化された理想的なトレーニング環境で、開発者がいかに迅速にスキルアップできるか、当社のプラットフォームを実際にご覧ください。

セキュア・コーディング・チャレンジで遊ぶ

無料の学習リソースを見る

なぜそれが重要なのか、安全でないコードがもたらす結果、そして最も重要なことは、そもそもそれぞれのプログラミングフレームワークにこのような脆弱性を書かないようにするにはどうしたらいいのか、ということを誰も教えてくれないとしたら、開発者はどうやって安全なコードを書けばいいのでしょうか?
リソースを見る
リソースを見る

著者

ピーテル・ダンヒユー

Pieter Danhieuxは、セキュリティコンサルタントとして12年以上の経験を持ち、SANSの主席講師として8年間、組織、システム、個人をターゲットにしてセキュリティの弱点を評価する方法に関する攻撃的なテクニックを教えている、世界的に有名なセキュリティエキスパートです。2016年には、オーストラリアで最もクールな技術者の一人として認められ(Business Insider)、Cyber Security Professional of the Yearを受賞(AISA - Australian Information Security Association)、GSE、CISSP、GCIH、GCFA、GSEC、GPEN、GWAPT、GCIA認定を保有している。

もっと知りたい?

セキュアコーディングに関する最新の知見をブログでご紹介しています。

当社の豊富なリソースライブラリは、安全なコーディングアップスキルに対する人間的なアプローチを強化することを目的としています。

ブログを見る
もっと知りたい?

開発者主導のセキュリティに関する最新の研究成果を入手する

ホワイトペーパーからウェビナーまで、開発者主導のセキュアコーディングを始めるために役立つリソースが満載のリソースライブラリです。今すぐご覧ください。

リソース・ハブ

ウェブアプリケーションのセキュリティ欠陥を引き起こす、忘れられた人的要因

2018年01月06日掲載
Pieter Danhieux著

2018年版ベライゾン・データ・ブレイク調査報告書」は、現在のサイバー犯罪の傾向やインシデントの要因、組織がセキュリティプログラムを成熟させるのに役立つ分析や洞察など、サイバーセキュリティに関する最新情報を提供する読み物として、今年も好評を博しています。今年、ベライゾンの調査員は、53,000件以上のインシデントと2,200件あまりのブリーチを分析し、何に気をつけるべきか、何をしてはいけないかについての具体的なヒントや、どこにセキュリティの取り組みを集中させるべきかについての貴重な提言が数多くあります。2018年版のレポートは、セキュリティの影響が広がる中で、より多くのビジネスパーソンに関連し、主流のビジネス問題として認識されるようになり、時代とともに進化してきたと感じます。

多くの興味深い発見の中でも、2018年のレポートでは、ほとんどのハッキングが依然としてウェブアプリケーションの侵害によって起こることが検証されています(これを示すクールなインタラクティブチャートもあります)。

Webアプリケーション攻撃とは、Webアプリケーションが攻撃の対象となったあらゆる事件を指します。これには、アプリケーションのコードレベルの脆弱性を利用したものや、認証機構を妨害するものが含まれます。注目すべきは、このパターンの侵害件数が減少していることです。これは、顧客が所有する機器から盗んだ認証情報を使ってウェブアプリケーションを攻撃するボットネット関連の攻撃がフィルタリングされているためです。Webアプリケーションを対象とした侵害におけるハッキングの種類としては、依然として「盗まれた認証情報の使用」が最も多く、次いで「SQLi」となっています(「SQL」については後述します...)。

今年の報告書で目立ったテーマは、セキュリティの方程式の中で、問題の一部としても解決策としても、「人的要因」がいかに重要であるかということです。今回のレポートでは、外部の人間と内部の人間の両方を対象としており、ほぼ5人に1人(17%)の割合でセキュリティ侵害の原因となっていることが報告されています。侵入は、従業員が機密情報のシュレッダー処理を怠った場合や、誤った相手に電子メールを送信した場合、ウェブサーバの設定を誤った場合などに発生しています。報告書では、これらはいずれも意図的なものではありませんでしたが、いずれもコストにつながる可能性があることを指摘しています。

しかし、多くのセキュリティ侵害を引き起こしている原因として、忘れられがちな人的要因があります。それは、開発者がセキュリティ上の欠陥を含むコードを作成する頻度が高く、それがWebアプリケーションの脆弱性につながり、結果的にこれらの事件や侵害につながっているということです。

過去5年間のアプリケーションテストでは、発見された脆弱性の数はあまり改善されておらず、同じような古い欠陥が何度も出てきます。40万件のアプリケーションスキャンを基にした2017年のVeracode社のレポートによると、アプリケーションがOWASPトップ10ポリシーに合格したのはわずか30%でした。驚くべきことに、昨年を含めた過去5年間に新たにスキャンされたアプリケーションのほぼ3つに1つにSQLインジェクションが出現しています。驚くべきことに、SQLインジェクションは1999年から存在しています。SQLインジェクションを含む同じ欠陥が常に見つかっているということは、開発者の間でこの「人的要因」の問題が十分に解決されていないという証拠です。

この時点で、私はこの議論の開発者側に立っていることを叫ぶ必要があります。なぜそれが重要なのか、安全でないコードがもたらす結果、そして最も重要なことですが、そもそもそれぞれのプログラミングフレームワークにこのような脆弱性を書かないようにするにはどうしたらいいのか、ということを誰も教えてくれないのであれば、開発者はどうやって安全なコードを書けばいいのでしょうか?

Secure Code Warrior で行っていることですが、開発者の日常生活に実践的な安全なコードトレーニングを組み込んでいる企業は、ウェブアプリケーションの脆弱性の数を減らしているという強い証拠を目の当たりにしています。 開発者が安全なコードを書くためには、安全なコーディングスキルを身につけるために積極的に参加できる実践的な学習に定期的にアクセスする必要があります。開発者は、最近確認された脆弱性について、実際のコードで、特に自分の言語/フレームワークで学ぶ必要があります。この学習経験は、既知の脆弱性を見つけ、特定し、修正する方法を理解するのに役立つはずです。 また、開発者は、セキュリティを簡単にし、スピードを落とさず、良いコーディングパターンと悪いコーディングパターンをリアルタイムに教えてくれる高品質なツールセットをプロセスに必要としています。

このようにして、ウェブアプリケーションの侵害件数に具体的かつ積極的な変化をもたらすことができるのです。

セキュリティ意識向上のためのトレーニングを全社的に強化する必要があるというベライゾン社の意見には、激しく同意します。 CIOとCISOに対する私の追伸は、「開発者を忘れてはいけない」ということです。 現代ビジネスの設計者である開発者は、ハッカーのアクセスポイントを日常的に生み出している重要な「人的要因」である場合もあれば、最初の防衛線であるセキュリティ・ヒーローである場合もあります。

開発者に対する効果的なセキュリティアップスキルは、ベライゾンが今後の報告書で報告する結果に大きな違いをもたらす可能性があります。 2019年の報告書では、開発者のセキュリティトレーニングが、企業が取ることのできる重要なリスク低減戦略として反映されているといいですね。私は楽観主義者ですが、もし企業が開発者にインジェクションの欠陥を作らない方法を学ばせれば、今回のレポートに掲載されているWebアプリケーションの脆弱性の数は大幅に減少するだろうと私は思います。

ゲーム化された理想的なトレーニング環境で、開発者がいかに迅速にスキルアップできるか、当社のプラットフォームを実際にご覧ください。

セキュア・コーディング・チャレンジで遊ぶ

無料の学習リソースを見る

なぜそれが重要なのか、安全でないコードがもたらす結果、そして最も重要なことは、そもそもそれぞれのプログラミングフレームワークにこのような脆弱性を書かないようにするにはどうしたらいいのか、ということを誰も教えてくれないとしたら、開発者はどうやって安全なコードを書けばいいのでしょうか?

弊社製品や関連するセキュアコーディングのトピックに関する情報をお送りする許可をお願いします。当社は、お客様の個人情報を細心の注意を払って取り扱い、マーケティング目的で他社に販売することは決してありません。

送信
フォームを送信するには、「Analytics」のCookieを有効にしてください。完了したら、再度無効にしてください。