検索
特集/連載

アプリ開発者が実践すべきセキュアコーディングの初歩の初歩安全なWeb/モバイルアプリ開発【前編】

Webアプリケーションやモバイルアプリケーションの脆弱性のほとんどは、ごく当たり前な処理の欠落に起因しているという。開発者が絶対にやるべきこととは何か。

PC用表示 関連情報
Share
Tweet
LINE
Hatena

 Webアプリケーションやモバイルアプリケーションを高度に統合している企業は、パンデミックによって生じた経済の混乱をうまく乗り切っている。だが、攻撃者にとってWebアプリケーションは格好の標的だ。

 Forrester Researchがセキュリティに関する意思決定者を対象に行った調査で、攻撃者が最も一般的に使う攻撃ベクトルはWebアプリケーションであることが明らかになった。世界のセキュリティ意思決定者の28%が、今後12カ月間の最優先事項はアプリケーションセキュリティの機能とサービスを改善することだと考えているという。

 社内アプリケーションを社外と接続するAPI、社内アプリケーション、Webに公開するアプリケーションを保護する必要がある。攻撃された場合に備えて、許容可能なダウンタイムを決める事業継続性ポリシーも用意しておかなければならない。

セキュアコーディング

 ユーザー名とパスワードの登録を求めるWebサイトがあまりにも多い。セキュリティの専門家はそれぞれ異なるパスワードを使うことをユーザーに強く勧める。強力なパスワードを自動的に生成して保存するWebブラウザもある。

 だが、ユーザーが選ぶのは覚えやすいパスワードだ。複数のWebサイトに同じパスワードを設定することも多い。結果、パスワードが簡単に解読されるだけでなく、ハッカーが同じパスワードを使って他のサイトを標的にする恐れも高くなる。

 OAuthは、認証を必要とするWebサイトが利用可能なアプローチの一つだ。OAuthはFacebookとGoogleのバックエンド認証を使う。この便利さの代償として、Webサイトを運用する企業とGoogleおよびFacebookがユーザーの情報の一部を共有することになる。

 OWASP(Open Web Application Security Project)は、「Application Security Verification Standard」(以下ASVS)の一環としてガイドラインを作成している。

 OWASPはその勧告の中で、ユーザー認証のセキュリティを確保するために多要素認証、生体認証、ワンタイムパスワードなどの使用を提唱している。勧告には他にも、データの損失防止を目的とする強力な暗号化、アクセス制御、ユーザーが生成するコンテンツ(Webアプリケーションやモバイルアプリケーションのテキストボックスにユーザーが入力すると想定されるデータなど)のサニタイズと検証などがある。

 Webアプリケーションやモバイルアプリケーションの開発者は入力検証コントロールを実装する必要があるとASVSは規定している。OWASPによると、インジェクション攻撃の90%は、アプリケーションが入力データを正しくチェックしていないことに起因しているという。ASVSのバージョン4.0.2には次のように記載されている。「入力データの長さと範囲をチェックすればインジェクション攻撃を大きく削減できる。アプリケーションの設計スプリント、コーディング、単体テスト、統合テストに入力バリデーション(検証)を組み込む必要がある」

 インジェクション攻撃は、巧妙に組み立てたデータを使ってエラーを発生させ、アプリケーションがそのデータを別のプログラムとして実行するように仕向ける。入力データが想定しているデータかどうかをチェックすれば、この種の攻撃を防ぐことが可能だ。数値の入力を想定しているなら、数値として意味を成さないデータは全て拒否する。住所や生年月日にも標準形式があるのでチェックは可能だ。

 プログラマーは、インジェクション攻撃やバッファーオーバーフロー攻撃を防ぐセキュアなコードを作成しようとして多くの課題に直面する。課題の一つは、ソフトウェア開発の性質が大きく変わってしまったことだ。Accentureのオーウェン・ライト氏(保険部門マネージングディレクター)は言う。「バッファーオーバーフロー攻撃やインジェクション攻撃を本当に阻止しようとするなら、そうした攻撃の作成を不可能にする必要がある」

 最新のソフトウェア開発手法はサードパーティーのフレームワーク、ライブラリ、クラウドサービスとの統合に大きく依存しているとライト氏は話す。ソフトウェアを市販する大手プロバイダーならば、専任チームを用意してコーディングのセキュリティを確保しているかもしれない。だが「よく使われているオープンソースライブラリの中には1人か2人だけでメンテナンスされているものもある。にもかかわらず、ユーザーはそれが十分管理されているものと想定している」と同氏は話す。

 セキュリティに「シフトレフト」が採用され始めているとライト氏は指摘する。このアプローチでは、セキュアなコードの作成に開発者がより多くの責任を負う。

 速度、コスト、品質の間には絶えず緊張関係がある。これまでは開発者がアプリケーションをテストチームにリリースした後にペネトレーションテストが行われていた。だが、ソフトウェアプロジェクトをDevSecOpsに移行すれば、開発者はこれまでよりも早く問題のあるコードを修正できるとライト氏は考えている。

 ライト氏の経験によれば、シフトレフトによってソフトウェア開発サイクルの後半にセキュリティのエラーを修正するよりもはるかに安価になるという。アプリケーションのセキュリティ確保を目的とするテンプレートを作成し、その後のプロジェクトに適用することを同氏は提案する。

後編では、クラウドWAF(Webアプリケーションファイアウォール)の効果と注目すべきクラウドWAFプロバイダーを紹介する。

Copyright © ITmedia, Inc. All Rights Reserved.

ページトップに戻る