アプリ開発のセキュリティ対策
―シフトレフトでコスト削減と品質向上アプリ開発のセキュリティ対策―

Share

アプリ開発環境では各開発フェーズのセキュリティ確保が重要です。セキュリティを度外視した開発を行っていると、インシデント発生を招き、結果的に事業継続を脅かす恐れがあります。アプリ開発のセキュリティ対策で有効な、「シフトレフト」の考え方を実践されていますでしょうか? 本記事では、シフトレフトの考え方に基づいた、対策実施のポイントを解説します。

アプリ開発におけるセキュリティリスク

建物や乗り物、日用品や食品といった、身の回りの製品が安心して利用できるものでなければならないように、我々が日々利用している様々なアプリケーションもまた、安全なものでなければなりません。

とにかく早くリリースすることのみを優先したり、労力を極限まで削ったりするなど、セキュリティを度外視したアプリケーション開発を行っていると、セキュリティインシデントが発生するのは時間の問題です。情報漏洩を起こしてしまった結果、ユーザや委託元企業への損害賠償、信用失墜による取引停止など、事業継続自体を脅かす危機に陥る恐れもあります。

設計・開発フェーズにおける脆弱性対処

とはいえ、アプリケーション開発におけるセキュリティについて、何がポイントなのか、どこから手を着けたらよいかわからない……ということもあるかもしれません。

IPA発行「脆弱性対処に向けた製品開発者向けガイド」(2020年8月)には、「リソースに限りのある製品開発者が、脆弱性への対処についてどれから着手してよいか判断に迷う」といった困りごとに対応するためのヒントが記載されています。

例えば、「設計・開発」フェーズにおける脆弱性対処として以下の項目が挙げられています。

脆弱性対処の不備によるリスク

では、開発工程において脆弱性対処が十分でないと、どのような影響があるか、確認してみましょう。

構成要素に脆弱性があると…

OS、アプリケーション、プログラム言語、またはライブラリ等の構成要素に既知の脆弱性が存在すると、これを悪用したサイバー攻撃を受ける可能性があります。日々、新しい脆弱性が報告されており、その情報が公開されています(下記例)。CVSSスコアの部分を見ると、深刻度の高い脆弱性も報告されていることがわかります。

▼オープンソースのプログラミング言語PHP関連で報告されている脆弱性の例

オープンソースのプログラミング言語PHP関連で報告されている脆弱性の例の画像
IPAのJVN iPedia 脆弱性対策情報データベース「PHP」検索結果より

▼JavaScriptライブラリjQuery関連で報告されている脆弱性の例

JavaScriptライブラリjQuery関連で報告されている脆弱性の例の画像
IPAのJVN iPedia 脆弱性対策情報データベース「jquery」検索結果より

後から脆弱性が発覚した場合、その対処には多くのコストがかかります。開発にあたってはあらかじめ構成管理体制ができており、それが継続して可能な状態であることが重要です。

セキュアコーディングでないと…

開発担当者のスキルに依存することなく、セキュリティレベルが適切に保持されるよう、セキュアコーディング規約を策定して、これをもとに開発を行うことが重要です。

脆弱性が作り込まれた状態で運用されていると、サイバー攻撃による情報漏洩・改ざんやシステム停止といった被害に遭う恐れがあります。実際に、国内でも次のようなインシデントが報告されています。

年月事例
2022年 5月フリマアプリより個人情報約275万件以上漏洩の可能性*1
原因:SQLインジェクション
2022年 6月資格検定申込サイトよりメールアドレス29万件以上漏洩の可能性*2
原因:SQLインジェクション
2022年 12月無線Wi-Fi製品問い合わせフォームに入力されたメールアドレス千件以上漏洩の可能性*3
原因:SQLインジェクション
2023年 4月共同研究機関より研究参加者のメール5千件以上漏洩の可能性*4
原因:SQLインジェクション

デジタル庁発行「政府情報システムにおけるセキュリティ・バイ・デザインガイドライン」(2022年6月30日)によると、脆弱性を作り込まないようにセキュアコーディングを実施するにあたり、次のような対応が推奨されています。

● セキュリティ実装においては、担当者によるミスやばらつきの発生を防止することが重要であるため、セキュリティ関連のコーディングや設定は、テンプレートの使用や、自動化機能を用いて対応することが望ましい。

● アプリケーション開発は、安全で利便性の高い、セキュアコーディングをサポートするような機能を有した開発用ツールやフレームワークを活用することで、人為的なミスを抑え、セキュリティ確保することが有効である。

開発環境のセキュリティが確保されていないと…

工場に不審者の出入りが自由だったり、製造ラインが汚染されていたりすることで製品の安全性が脅かされるのと同様、アプリケーション開発においても開発環境のセキュリティ確保が重要です。

開発環境に係るセキュリティインシデント例として、次のようなものがあります。

[事例1]

自動車メーカーの委託先企業がGitHubにソースコードを公開し、5年間近くアクセス可能な状態に。個人情報29万件以上漏洩の恐れ。

開発環境に係るセキュリティインシデント[事例1]の画像

[事例2]

クラウド型CI/CDツール(ソフトウェア開発支援ツール)のCircleCIにおいて、ユーザが利用するGitHub等のサードパーティリポジトリサービスに不正アクセス発生。

開発環境に係るセキュリティインシデント[事例2]の画像

ソースコードリポジトリやCI/CDツールは今や効率的に開発を進めるのに欠かせないサービスである一方で、セキュリティ上の問題が発生すると、組織全体にその影響が及びかねないという側面もあります。サービス自体に潜む脆弱性やクラウド設定等、利用するサービスの特性を理解した上で十分注意を払う必要があります。

シフトレフト導入による効果

前述のIPA「脆弱性対処に向けた製品開発者向けガイド」では、「Ⅰ.方針・組織」「Ⅱ.設計・開発」「Ⅲ.出荷後の対応」の各段階におけるセキュリティ対策が解説されています。

開発ライフサイクルのより早い段階で、セキュリティに対する考慮を組み入れるのが、「シフトレフト」と呼ばれる考え方です。リリースの直前など、開発サイクルの後工程で脆弱性が発覚すると、その対処には時間も労力もかかるでしょう。とはいえ、対処しないわけにもいきません。手戻りを未然に防ぐことで、結果的に全体の開発期間を短縮し、コスト効率と品質向上を図る効果が期待できます。

シフトレフトは、もとはソフトウェア開発におけるプログラムの不具合(バグ)への対処において提唱されたものです。下記のような実態がみられるため、工程を前倒しにし(シフトレフト)、静的コードテストや単体テスト等を開発の前段階に組み込んでいくと、コスト削減効果がある、となったわけです。

ソフトウェアのバグとその修正対応の関係

● バグの多くがコーディング段階で作り込まれる(青い線)

● テストが後になるとバグの発見も後になる(オレンジ色の線)

● バグの修正対応は後になればなるほどコストが増大する(赤い線)

ソフトウェアのバグとその修正対応の関係の画像
Capers Jones「 Applied Software Measurement: Global Analysis of Productivity and Quality
https://www.stickyminds.com/article/shift-left-approach-software-testing

では、バグへの対処をセキュリティ上の課題への対処に置き換えるとどうでしょうか。実際に、セキュリティにおいてシフトレフトを実践したGoogleが、トータルコストの減少効果があったと発表しています。*5下図で、シフトレフト導入前後で、セキュリティ上の欠陥に対処するコストを示している赤い線の状況が大きく異なることがわかります。

▼従来のセキュリティテストパターン

従来のセキュリティテストパターンの画像
https://cloud.google.com/blog/ja/products/identity-security/shift-left-on-google-cloud-security-invest-now-save-later

▼シフトレフト導入後のセキュリティの状況

シフトレフト導入後のセキュリティの状況の画像
https://cloud.google.com/blog/ja/products/identity-security/shift-left-on-google-cloud-security-invest-now-save-later

セキュリティにおけるシフトレフトの実施内容

アプリケーション開発において、より早い段階でセキュリティへの考慮を組み入れる、とはどういうことでしょう。具体的な実施内容は、こちらのようなイメージになります。

セキュリティにおけるシフトレフトの実施内容の画像

これを実現するためには、開発の企画・設計段階からセキュリティを考慮する「セキュリティ・バイ・デザイン」の概念に基づいて、開発チーム(Developer)とセキュリティチーム(Security)と運用チーム(Operations)が、互いに協力し合うことで品質向上を実現する、「DevSecOps」の体制を組んで臨むことが肝要です。

実装工程におけるソースコード診断

アプリケーション開発のセキュリティ対応の実施において、たびたび登場するのが脆弱性検査です。検査の種類はいくつかあります。

● ソースコード診断

● Webアプリケーション脆弱性診断

● ネットワーク脆弱性診断(プラットフォーム脆弱性診断)

● スマホアプリ脆弱性診断

● IoT脆弱性診断

● ペネトレーションテスト 等

このうち、実装工程でソースコードに作り込んでしまった脆弱性を検出するのが、「ソースコード診断」です。他の種類の脆弱性診断では検出しづらい潜在的な脆弱性を、開発ライフサイクルのより早い工程で洗い出すことが目的です。他の脆弱性診断に先駆けて実施されるべき診断と言えます。

セキュアコーディングを実践しつつ、ソースコード診断を効率的に行うためには、自動診断ツールを利用するのも有効です。静的コード解析を行うソースコード診断ツールの選定においては、以下のような点がポイントとなるでしょう。

BBSecでは

BBSecでは以下のようなご支援が可能です。 お客様のご状況に合わせて最適なご提案をいたします。

ソースコード自動診断

システムの開発段階から対策を行うことで、リリース直前での手戻りを防ぎませんか?BBSecのCracker Probing-Eyes® Coreはソースコードに潜む脆弱性を具体的に特定することで、根本的な問題解決ができます。安価でできるツール診断により、スケジュールに余裕 のない場合でもお気軽に、短時間で安全性の確認ができます。また新規設備投資も不要のため、コストや労力の削減にもつながります。

ソースコード自動診断のサムネ

Cracker Probing-Eyes Core® キャンペーン近日開始予定!
詳細につきましては、お問い合わせフォームからお問い合わせをお願いいたします。
お問い合わせはこちら

<次回ウェビナー開催のお知らせ>

・2023年9月27日(木)14:00~15:00
知っておきたいIPA『情報セキュリティ10大脅威 2023』
~セキュリティ診断による予防的コントロール~

最新情報はこちら

Security Report TOPに戻る
TOP-更新情報に戻る


資料ダウンロードボタン
年二回発行されるセキュリティトレンドの詳細レポート。BBSecで行われた診断の統計データも掲載。
お問い合わせボタン
サービスに関する疑問や質問はこちらからお気軽にお問合せください。

Security Serviceへのリンクバナー画像
BBsecコーポレートサイトへのリンクバナー画像
セキュリティ緊急対応のバナー画像
セキュリティトピックス動画申し込みページリンクへのバナー画像