SHOEISHA iD

※旧SEメンバーシップ会員の方は、同じ登録情報(メールアドレス&パスワード)でログインいただけます

CodeZine編集部では、現場で活躍するデベロッパーをスターにするためのカンファレンス「Developers Summit」や、エンジニアの生きざまをブーストするためのイベント「Developers Boost」など、さまざまなカンファレンスを企画・運営しています。

Developers Summit 2023 セッションレポート(AD)

肥大化したソースコードのセキュリティ対策、DevSecOpsとシフトレフトで対処する方法とは

【10-C-2】DevSecOps&シフトレフトで楽々セキュリティを実装しちゃおう

  • このエントリーをはてなブックマークに追加

 脆弱性診断サービスなどを利用すれば、専門家などに見てもらえることで高いセキュリティレベルが確保できる。一方で、開発の最後のステップで診断することとなり、何らかの脆弱性が見つかればセキュリティ対策の手戻りは多くなってしまう。これに対し、適宜セキュリティツールに任せてシフトレフトで対策することで、手戻りを最小化するためのセキュリティの実践方法をデモを交えて解説した。

  • このエントリーをはてなブックマークに追加

サイバー攻撃のおよそ8割がアプリケーションレイヤー

 フォーティネットと言えば、次世代ファイアウォールのFortiGateが有名だ。これは統合脅威管理(UTM)機器で、「ネットワークにFortiGateを置くだけで、セキュリティは何でも来いという製品です」と川原氏。FortiGateは次世代ファイアウォールとしてだけでなく、SD-WANとしても機能し、多くの企業が導入している。フォーティネットでは他にもアクセスポイントやスイッチ、エンドポイントセキュリティやクラウドセキュリティなど幅広いセキュリティソリューションを提供している。

 これらで多様なセキュリティの課題に対し「何かしら答えを出せるのが、フォーティネットです」と川原氏。米国本社の企業だが、国内に300名以上のメンバーがおり日本語でのサポートサービスも提供する。このフォーティネットで最近力を入れているのが、今回のテーマでもあるアプリケーションセキュリティだ。

 今や、人々の生活は膨大なソフトウェアで実装されている。多様な情報デバイスが使われており、それらがインターネットなどを介してつながるIoTの時代となっている。生活家電やPC、スマートフォンなどのスマートデバイスがあり、それらはソフトウェアの宝庫だ。また発電所などのインフラ設備、電車やバス、航空機などの公共交通機関の制御、工場の生産ラインなどもソフトウェアなしでは稼働できない。

 さらにクルマの自動運転や医療現場の医師の診断補助など、より重要な領域にソフトウェアが入り込んでおり「今やソフトウェアがないと人々の生活が成り立ちません。ソフトウェアが社会基盤や人々の命をも担う存在となっています」と川原氏は言う。このような状況の中、さまざまなソフトウェアを狙ったサイバー攻撃が増えている。結果的にサイバー攻撃は、社会基盤の安全性を脅かしている。実際に発電所がサイバー攻撃の標的となり、公共交通機関やクルマを狙ったサイバー攻撃手法も明らかになっている。ウクライナ問題をきっかけに、この傾向はより顕著となっているのだ。

 そして、サイバー攻撃のおよそ8割がアプリケーションレイヤー、つまりソフトウェアの脆弱性を狙った攻撃だと言われている。攻撃者は目的を達成するために日々ソフトウェアの脆弱性を探しており、脆弱性が修正される前に攻撃が実行されている。

 アプリケーションレイヤーへの対策は重要だが、企業が考えるセキュリティ投資は、ファイアウォールやUTMなどのネットワークセキュリティ、もしくはアンチウイルスなどのエンドポイントセキュリティに多くの予算が割かれている。「アプリケーションのセキュリティには、あまりお金がかけられておらず、十分に対策が実装されていません」と川原氏。

DevOpsでのセキュリティの欠如
DevOpsでのセキュリティの欠如

 とはいえアプリケーションの対策に予算を割けば、それで全てが解決できるわけでもない。昨今は、アプリケーションの開発と運用のサイクルを継続的に回す、DevOpsの手法が用いられるようになった。これはビジネスの変化にも柔軟、迅速に対応するためのもので、DevOpsの中にセキュリティが統合されていないのだ。その理由は予算をかけていないだけでなく、「残念ながら開発者の方々に十分なセキュリティの知識があるわけではないことと、プロジェクトの中でセキュリティに取り組まなければならないとの認識と重要性が共有できていないのです」と川原氏は指摘する。

 今すぐeBookをダウンロード!

増大化、複雑化するソースコード、セキュリティ対策は人手では不可能

 アプリケーション開発でセキュリティ対策をする際には、リリース直前のタイミングにスポットで外部サービスを用い脆弱性の診断をすることがある。その結果レポートが出て、100個、200個とたくさんの脆弱性が指摘されるかもしれない。開発者は、リリースまでの限られた時間で、それらの対策に追われることとなる。このように「セキュリティ対策がDevOpsのスピードを止めてしまうのです」と川原氏は言う。

 前述のように、アプリケーションが生活に深く関連し、機能要求などがどんどん高まっている。高付加価値のアプリケーションが求められ、セキュリティの課題も膨れ上がる。アプリケーションは大きくなり複雑化して、ソースコードの量も増えセキュリティ対策の工数も爆発的に増大化する。ソースコードが膨大になれば、脆弱性が入り込むのも避けられない。

 通常のアプリケーション開発では、コードを書きテストのフェーズで脆弱性を探す。テストで脆弱性が見つかれば、それを修正するために開発に手戻りが発生する。見つかった脆弱性を開発で修正し、再度テストをする。これを繰り返せば、開発工数はさらに膨れ上がる。

 より運が悪いのは、製品リリース後に脆弱性が発見されることだ。修正パッチを配信して対応できるかもしれないが、できなければリコールで製品回収となり大きなコストが発生する。脆弱性が見つかるのが、製品開発フェーズの後ろになればなるほどコストは増大し、場合によっては会社の命運にも関わるリスクとなる。

後工程ほど肥大化するコスト
後工程ほど増大するコスト

 また肥大化だけでなく、コードの中身の複雑化にも目を向ける必要がある。現状のソフトウェアは、さまざまなパーツで構成されている。独自開発のコードもあれば、オープンソースのライブラリを利用するのも主流となっている。他にもサードパーティーのコードやアウトソースで作ったもの、大昔に書いたコードで既に開発した人がいないこともある。ネットからコピーしたもの、最近なら「ChatGPTのようなAIのエンジンで書いてもらうこともできます」と川原氏。多様なコードがあると、人手でチェックするのは難しいと指摘する。

 さらにオープンソースのコードの場合は、生み出されてから時間が経過すると脆弱性がどんどん見つかり、当初安全だったコードが脆弱性だらけになることもある。そのため、オープンソースのライブラリは、コードの安全性を継続的に確認しなければならない。また1つのオープンソースのライブラリが複数のオープンソースのライブラリで構成されているのが普通だ。場合によっては1つのオープンソースライブラリが、依存関係をたどると数百のライブラリで構成されることも珍しくない。それら全てのライブラリの安全性をトラッキングするのは、もはや人手では不可能なのだ。

 今すぐeBookをダウンロード!

DevSecOpsとシフトレフトのセキュリティを実現する方法

 これら問題の解決には、DevSecOpsで対応する。これは開発、運用のフェーズ全体に亘りアプリケーションセキュリティを統合するものだ。「通常はセキュリティと開発のスピードは相反するものですが、DevSecOpsはこれら2つを実現するものになります」と川原氏は言う。

 もう1つ、セキュリティ対策を開発工程の最初のほうに持ってくるシフトレフトでの対応が重要だ。「コードを変更したその場でタイムリーに脆弱性を潰すことで脆弱性をゼロにしながら開発を進め、手戻りゼロで開発を完了させましょうというのがシフトレフトの概念です」と川原氏。DevSecOpsとシフトレフトで、セキュリティを堅牢化させながら開発を高速化できると説明する。

 これを実践するには、コードを変えたらその場でセキュリティチェックを行い、タイムリーに対処し脆弱性をゼロ件に抑える。次にプロジェクトで利用するオープンソースソフトウェアの脆弱性を、継続的にモニタリングして対策し続ける。最後に、開発されたソフトウェアに徹底したセキュリティチェックをかける。

 タイムリーに脆弱性を取り除くには、静的アプリケーション解析(SAST)手法が使われる。オープンソースソフトウェアの継続的なモニタリングには、ソフトウェア・コンポジション解析(SCA)で対処する。開発したもののチェックには、動的アプリケーション解析(DAST)を使う。これらを補足するものとして、シークレットスキャンやIaC(Infrastructure as Code)スキャンを適宜組み合わせる。

SAST
アプリケーションセキュリティテストの種類

 SASTは、コードだけを見てセキュリティを解析し、例外が発生するものやSQLインジェクションが起きるような問題のあるコードを発見する。これを日々のコード開発の中に取り込み、脆弱性を毎日潰す。SCAはソースコードを解析し、利用しているオープンソースソフトウェアを発見する。発見したオープンソースに脆弱性が報告されていれば、安全なものにバージョンアップするかそのオープンソースを利用しないなどで対処する。

 DASTはアプリケーションに対し、外部からさまざまな攻撃を行いそのレスポンスから脆弱性を発見する。「これらをCI/CDのパイプラインに入れることで、アプリケーションのセキュアなリリースが可能になります」と川原氏は言う。シークレットスキャンは、ソースコードにハードコーディングされたパスワードなどの資格情報を見つけ、不適切な資格情報の取り扱いを抑止する。IaCスキャンはインフラ構築における不適切な設定などを発見し、インフラ面の安全性を担保する。

 フォーティネットではFortiDevSecで、これら5つの対策を可能にしている。FortiDevSecは、簡単に導入できる統合型のアプリケーションセキュリティテストツールで5つのスキャンに1つのツールで対応する。たとえばSASTとSCAが別々のツールだと、それぞれの導入とメンテナンスに手間がかかり使い方も憶えなければならない。FortiDevSecで運用を最適化し、SaaS型なので管理サーバーを立てて管理する必要もない。セッションでは実際にFortiDevSecでスキャンをする様子がデモで紹介された。見つかった脆弱性は1つの画面で一覧でき、危険度などに応じ適切な対処方法を判断できる。

 DevSecOpsでは、運用フェーズでのアプリケーションのリアルタイムな保護も重要だ。FortiWebは動いているWebアプリケーションを脅威から保護するもので、アプリケーションを稼働させながら機械学習を活用して未知の脅威にも対応する。これでOps部分のセキュリティ対策も強化することができる。「FortiDevSecとFortiWebを組み合わせることで、本当の意味でのDevSecOpsを実現できます。是非とも今回紹介した手法を使って、アプリケーションセキュリティを実現させて欲しい」と川原氏は言い、セッションを締めくくった。

 今すぐeBookをダウンロード!

この記事は参考になりましたか?

  • このエントリーをはてなブックマークに追加

提供:フォーティネットジャパン株式会社

【AD】本記事の内容は記事掲載開始時点のものです 企画・制作 株式会社翔泳社

この記事は参考になりましたか?

この記事をシェア

  • このエントリーをはてなブックマークに追加
CodeZine(コードジン)
https://codezine.jp/article/detail/17412 2023/04/18 12:00

イベント

CodeZine編集部では、現場で活躍するデベロッパーをスターにするためのカンファレンス「Developers Summit」や、エンジニアの生きざまをブーストするためのイベント「Developers Boost」など、さまざまなカンファレンスを企画・運営しています。

新規会員登録無料のご案内

  • ・全ての過去記事が閲覧できます
  • ・会員限定メルマガを受信できます

メールバックナンバー

アクセスランキング

アクセスランキング