SHOEISHA iD

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

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

【デブサミ2020】セッションレポート (AD)

ソフトウェアの品質とセキュリティを担保するためのヒントとは【デブサミ2020】

【13-F-2】アプリケーションやシステムが悪い奴らに攻撃されたらどうなる?

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

 個人情報や機密情報の漏えい、システム障害など、毎年システムやアプリケーションの不備・欠陥に起因するインシデントが発生している。インシデントは、サイバー攻撃を受けて発覚するものや、攻撃につながるシステムやアプリケーション自体の問題を調査するセキュリティリサーチャーなどから報告を受けて判明するものがある。いずれも共通点は、システムやアプリケーションを支えるソフトウェアに何らかの脆弱性が存在することだ。デジタル化が進み、大半のものがソフトウェアベースで動く昨今、こうしたインシデントを防ぐにはソフトウェアの脆弱性を開発段階できちんとつぶすことが重要となる。では、リリース前になぜすべてをつぶすことができないのか。日本シノプシスの松岡正人氏がセキュア開発のポイントを解説した。

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

日本シノプシス合同会社 ソフトウェアインテグリティグループ シニアプロダクトマーケティングマネージャー 松岡正人氏
日本シノプシス合同会社 ソフトウェアインテグリティグループ シニアプロダクトマーケティングマネージャー 松岡正人氏

コードの品質がセキュリティリスクに直結する背景

 家電やスマホ、テレビなどの身の回りのものから、自動車や電車、スーパーのレジ、工場まで、あらゆるものにコンピューターが組み込まれる現代において、これらを制御するソフトウェア・コードの品質向上および管理は重要な課題だ。今や製品の基本動作から新しい機能やサービスの追加まで、ソフトウェア・コードで行う。不具合や欠陥が見過ごされたまま提供、利用されて重大な事故が発生すれば取り返しの付かないことになる。

 例えば、「ソフトウェアの塊」の自動車では、昨年4月に国土交通省が発表したリコール対象台数において、最も多かった原因がコンピュータープログラムの不具合だったと松岡氏は紹介する。最もリコール対象台数が多かったのは、トヨタのプリウスとプリウスα、OEM供給先のダイハツ工業のメビウスで合計124万台以上。

 原因は、異常判定の制御プログラムのバグで、走行不能になる恐れがあったと言う。飛行機も同様だ。2018年10月と2019年3月に発生したボーイング737MAXの墜落事故も、ソフトウェアの不具合が原因だった。こうした不具合は最悪の場合、乗客や乗務員、歩行者などの命に関わる事態に発展する可能性がある。

 不具合や欠陥は、大きく2つに分類することができる。1つは、自社やサードパーティのソフトウェア・コードの脆弱性。もう1つは、ネットワーク設定やアクセス制御、サイバーセキュリティ対策など、システム上の誤設定だ。そして最近はこうした「欠陥」部分を狙ったサイバー攻撃が増えている。

 「サイバー攻撃者は、ソフトウェアのバグや脆弱性を入念に調査し、コードや変数のふるまいや特性で問題があるところを特定し、そこを足がかりにシステムへ侵入したり、サービスを停止させたりする。攻撃者の目的が何であれ、ビジネスリスクであることは間違いない。こうした背景から、最近はセキュリティのコンテキストでソフトウェア・コードの品質が語られることが増えた」(松岡氏)

 だが、どんなに脆弱性が指摘され、対策が公表されても、パッチをあてないまま放置されるシステムも少なくない。2014年4月に発覚したOpenSSLの脆弱性「Heartbleed」も、なかなか修正されないまま運用されるサーバーが数年後も多数存在したという報告もある。

 「こうした情報を知りながら改修せずに運用し続ける判断をしたのであれば、それは道義的・倫理的に問題だ。もしも経営層が技術面で理解できずに修正できていないのであれば、開発者や運用者がリスクをきちんと伝える必要がある」(松岡氏)

 しかし、セキュリティの視点に立ったソフトウェア・コードの品質向上は、言うほど簡単ではない。松岡氏はその理由として、「コード量」「複雑度」「開発速度」「リスク」の4つを挙げた。

ソフトウェア・コードの品質向上が難しい4つの理由
ソフトウェア・コードの品質向上が難しい4つの理由

 コード量は、大規模なシステムやサービスになるほど増えていく。また、ML・AIやクラウド、IoTなどを活用して複数の異なるプラットフォームや言語、サービスを連携させながら1つのシステムを構築することが多い昨今、システム全体だけでなく、品質管理も複雑だ。そのような状況で、アジャイル開発やCI/CD、DevOpsで開発スピードを上げつつ、高度化するサイバー攻撃のリスク軽減に向けた施策も実施する必要がある。

次のページ
セキュアなアプリケーションを開発するポイント

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

  • このエントリーをはてなブックマークに追加
【デブサミ2020】セッションレポート 連載記事一覧

もっと読む

この記事の著者

CodeZine編集部(コードジンヘンシュウブ)

CodeZineは、株式会社翔泳社が運営するソフトウェア開発者向けのWebメディアです。「デベロッパーの成長と課題解決に貢献するメディア」をコンセプトに、現場で役立つ最新情報を日々お届けします。

※プロフィールは、執筆時点、または直近の記事の寄稿時点での内容です

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

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

この記事をシェア

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

おすすめ

アクセスランキング

アクセスランキング

イベント

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

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

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

メールバックナンバー

アクセスランキング

アクセスランキング