「シフトレフト」でセキュアコーディング まずやるべき基本は?:セキュアコーディングの極意【第3回】
アプリケーションセキュリティを強化する開発手法「セキュアコーディング」の実践には、何が必要なのか。開発プロジェクトを進める上で意識すべきことを、有識者が解説する。
コンサルティング企業Ernst & Young Global(以下、EY)は2023年4月、米国IT企業の責任者254人を対象に、企業のIT戦略に関するオンライン調査を実施した。その結果から見えてきたのは、サイバーセキュリティへの関心の高まりだった。
アプリケーションセキュリティを向上させる施策の一つが、開発の早期段階からセキュリティを意識する「セキュアコーディング」だ。どのようなものなのか。
企業が目指すべき「シフトレフト」の基本
併せて読みたいお薦め記事
連載:セキュアコーディングの極意
事例から開発手法を学ぶ
セキュアコーディングの出発点は、アプリケーションの設計時にセキュリティを念頭に置くことだ。EYで西部地域担当サイバーセキュリティ責任者を務めるアヤン・ロイ氏は、「企業がアプリケーション開発においてセキュリティを考慮するようになってきた」と感じている。そうした企業の考え方を体現するのが、開発サイクルの終了後ではなく、要件定義や設計といった初期段階でセキュリティを組み込む開発手法「シフトレフト」だ。
シフトレフトにおいて、アプリケーション開発者は全てのソースコードの出どころが信頼できるソースかどうかを確認する必要がある。英国コンピュータ協会(BCS:British Computer Society)でボランティアとして働くペトラ・ウェナム氏によると、セキュアなアプリケーション開発には、アプリケーションの入力データに制限を設ける必要がある。条件を満たしていない入力データは、完全に破棄しなければならない。
こうしたチェックは、「バッファオーバーフロー攻撃」を抑えることにつながる。バッファオーバーフロー攻撃は、一時的な記憶領域である「バッファ」をあふれさせて、プログラムの不具合を引き起こす攻撃手法だ。攻撃者は、アプリケーションのデータ入力フィールドに膨大なデータを書き込むことで、バッファオーバーフローを引き起こすことができる。アプリケーションが入力データを検証しなければ、バッファオーバーフローが発生し、攻撃者が任意の操作を実行できるようになる恐れがある。
ウェナム氏は「アプリケーションが出力するデータは、アプリケーション本体からのみ出力されるようにすべきだ」と指摘。出力データの送信先は信頼できる宛先のみに限定したり、アプリケーション用に割り当てられないメモリを使用不可にしたりといった対処が必要だ。アプリケーションを実行するOSには、使用メモリを割り当て、メモリの状況を監視、制御する役割がある。あるアプリケーションに割り当て済みのメモリが、別のアプリケーションに使用されないように阻止しなければならない。「OSが実行を許可するアプリケーションは、認証済みのアプリケーションに限定する。未検証のアプリケーションは実行環境から切り離し、エラーを出力する措置が必要だ」(同氏)
次回は、セキュアコーディングの実践例を紹介する。
Computer Weekly発 世界に学ぶIT導入・活用術
米国TechTargetが運営する英国Computer Weeklyの豊富な記事の中から、海外企業のIT製品導入事例や業種別のIT活用トレンドを厳選してお届けします。
Copyright © ITmedia, Inc. All Rights Reserved.