フリーワード検索


タグ検索

  • 注目キーワード
    業種
    目的・課題
    専門家
    国・地域

NRI トップ ナレッジ・インサイト コラム コラム一覧 リスクが増大するソフトウェアサプライチェーンとセキュリティ対策(後編)

リスクが増大するソフトウェアサプライチェーンとセキュリティ対策(後編)

~ソフトウェアの開発プロセスを中心に~

2024/08/27

  • Facebook
  • Twitter
  • LinkedIn

前回は、ソフトウェアサプライチェーンの多層化・複雑化を背景に、攻撃手法の変化やセキュリティ対策の難しさについて述べました。本稿では、ソフトウェアの開発プロセスにおけるリスクと具体的なセキュリティ対策を紹介していきます。

前ページ:リスクが増大するソフトウェアサプライチェーンとセキュリティ対策(前編)

開発プロセスにおけるリスク

今回は、開発プロセス(調達から製造)の過程で対策が可能なリスクに絞って説明します(上記の図の網掛け部分)。具体的には、開発者による不正なプログラムの混入やバックドア※1の埋め込み、OSSに存在する不正な改造を取り上げます。“不正な改造”には、内部の情報を不正に送信する仕組みや、外部から不正にログインする仕組みなど、様々な手法が存在します。ここでは、これらをまとめて不正プログラムと呼び、対策を紹介します。
不正プログラムの手法は様々ですが、共通して言えることは、いずれも仕様書には明記されず、コード上に存在するということです。そのため、対策はコードレベルで行うことが重要です。
不正プログラムが混入するケースには大きく2つあります。
① 開発者自身が開発するソースコードに不正プログラムを埋め込む
② 不正プログラムを含むモジュールを外部から調達し、(意図せず)埋め込む
次に、それぞれの対策方法について紹介していきます。

図:ソフトウェアの開発プロセスにおけるソフトウェアサプライチェーンリスク

開発プロセスにおけるセキュリティ対策

① 開発者自身が開発するソースコードに不正プログラムを埋め込むことへの対策

SAST(Static Application Security Testing)を活用しつつ、不正プログラムを埋め込まれるリスクの高い機能に焦点を当てて深くコードレビューを行うこと、また検証したプログラムの管理を行うことで、効果的な対策が可能です。
以下にそれぞれの対策を説明します。

  • コードレビュー
    現状最も効果的な対策はコードレビューです。不正プログラムは仕様書にないプログラムなので、コードレビューによって想定外の動作をするコードを検知することができます。ただし、コードレビューはコストがかかるため、全てのコードに対してのレビューが難しいプロジェクトも存在します。
  • SAST
    コードレビューをより効率的に行うためのツールとして、SASTの活用があります。SASTはコードの記載内容を確認して脆弱性等を検知するツールです。不正プログラムに見られる特徴(内部の情報を送信する処理など)を検知するシグネチャ(ルール)を作成することで、コードレビュー対象の絞り込みを行うことができます。洗い出したコードに注目してレビューすることで効率的なレビューが実施できます。
  • プログラム管理
    SASTの活用やコードレビューの徹底によって不正プログラムを排除できたとしても、その後でレビュー済みのコードを改ざんされてしまうと対策を回避されてしまいます。不正プログラムが含まれていないことを継続的に保障するためには、コードをリポジトリで管理し、コミット履歴を確認できるようにすることが大切です。それによって不正なコミットが行われていないことを監視することができるようになります。
    また、完成したソフトウェアの配布にあたっては、バイナリやファイルが改ざんされていないことをデジタル署名によって証明するコードサイニングも対応策としてあげられます。

② 不正プログラムを含むモジュールを外部から調達し、(意図せず)埋め込むことへの対策

現在のアプリケーション開発において、OSSや他社製モジュールの活用は、必要な機能をゼロから作り上げる必要なくコスト面でも効果的であるため、必要不可欠となっています。一方でそれらの外部から調達したモジュールをソースコードレベルで確認し、安全を担保するのは困難です。例えば、OSSの場合は膨大な量のソースコードから成り立っており、全てのソースコードを把握することは現実的ではありません。また、他社製のモジュールはソースコードが開示されていないケースが殆どです。このような理由から脆弱性を含んだソースコードを見逃してしまい、意図せず不正プログラムを埋め込んでしまうことが起こりえます。例えば、2021年12月にApache Log4jに脆弱性が発見された際には、多くの企業が影響範囲の調査や自プロジェクトの対応方針の検討を強いられることになり、甚大な影響を受けました。

以下に、OSSや他社製のモジュールに埋め込まれた脆弱性への対策について記載します。

  • 外部の脆弱性情報の活用
    OSSやモジュールに含まれる不正プログラム情報等、様々な脆弱性が日々報告され、公開されています。これらの情報を活用することでOSSやモジュールを採用する際、または採用した後であっても脆弱性を確認し、既知の脆弱性を避けて開発することができます。もちろん、ゼロデイ攻撃のように顕在化する前の脆弱性を利用する攻撃は防げない可能性もあるため、万全な対策とは言えません。しかし、発見された脆弱性に対して、すぐに対策を検討することで、リスクを大きく抑えることができます。
    OSSの場合、ソフトウェアコンポジション解析(SCA:Software Composition Analysis)のツールを活用することが有効です。これらのツールは、アプリケーションが利用しているOSSの一覧を洗い出し、公開されている脆弱性情報と突合せ、脆弱性を含むOSSを利用していないかをチェックすることが可能です。
  • 脆弱性への対応ポリシーの策定
    外部の脆弱性情報を活用することでリスクを大きく抑えることができますが、報告されている脆弱性は膨大であり、全てが自社のシステムに影響があるわけではないため、一つ一つに対策を行う必要はありません。そのため、全ての脆弱性に対して対応を実施するのではなく、脆弱性に応じて対応要否を判断していくことが必要になります。
    したがって、脆弱性のリスクに応じて対策の優先順位付けや絞り込みのルールを定めたポリシーを策定することが推奨されます。例えば、脆弱性にはCVSS(Common Vulnerability Scoring System)スコアという深刻度を評価する基準があります。CVSSスコアが一定以上の場合は対策を検討する等もポリシーの一つになり得ます。そして、脆弱性レポートを確認し、自社システムでの利用方法において影響有無を確認することも必要です。

ソフトウェアサプライチェーン対策には多層防御の考え方が必要

ここまで、ソフトウェアサプライチェーンの中で不正プログラムを埋め込まない方法をご紹介してきました。しかし、脆弱性の混入を100%防ぐことができる対策は存在しません。
そのため、埋め込まない対策だけでなく、埋め込まれたとしても不正プログラムの実行を防御する対策など複数の対策を組み合わせることが重要です。対策はアプリケーションが稼働する環境だけでは不十分です。開発環境を攻撃される可能性もあるため、セキュアな開発環境の構築も必要です。また、前述の通り、不正プログラム混入を防ぐことは、ソフトウェアサプライチェーンリスク対策のほんの一部でしかありません。ソフトウェアサプライチェーンについて全体を把握しどこに注力するのか検討しながら進めていく必要があります。

NRIグループの取り組み

ソフトウェアサプライチェーンのリスクは今後も増大し、対策は必須のものとなってきます。NRIグループでは、ソフトウェアサプライチェーンのセキュリティ対策サービスを提供できるよう活動しています。

  • ※1  

    バックドアとは、「システムに含まれる仕様書にはない、隠された、悪意ある処理を実行するプログラムが不正に埋め込まれたソフトウェア」を指します。

執筆者プロフィール

岩松 航輝:
ITコンサルタントとして先端技術を用いた保険業界向けDXなどの企画・実行支援。またNRIでのスタートアップの活用や投資検討を手掛ける。2019年より米国で活動し2021年より現職。専門はソフトウェアアーキテクチャ、インフラ基盤。

宮原 俊介:
DevSecOpsを活用した開発生産性向上と高いセキュリティレベルの実現の支援を推進。過去には、JIRAやConfluence等を利用した開発管理効率化支援や、DevOpsによる開発業務効率化支援を経験。これらの経験に基づいて開発プロセスを総合的に改善するサポートを実施中。

  • Facebook
  • Twitter
  • LinkedIn

新着コンテンツ