情報処理安全確保支援士試験 令和5年度 秋期 午後 問3
【出典:情報処理安全確保支援士試験 令和5年度 秋期 午後 問3(一部、加工あり)】
[N社の顧客での対応]
Nサービスの顧客企業の一つに、従業員1,000名の資金決済事業者であるP社がある。P社は、決済用のアプリ(以下、Pアプリという)を提供しており、スマートフォンOS開発元のJ社が運営するアプリ配信サイトであるJストアを通じて、Pアプリの利用者(以下、Pアプリ利用者という)に配布している。P社はNサービスを、最新版ソースコードのコンパイル及びJストアへのコンパイル済みアプリのアップロードのために利用している。P社には開発部及び運用部がある。
Jストアへのアプリのアップロードは、J社の契約者を特定するための認証用APIキーをHTTPヘッダーに付加し、JストアのREST APIを呼び出して行う。認証用APIキーはJ社が発行し、契約者だけがJ社のWebサイトから取得及び削除できる。また、Jストアは、アップロードされる全てのアプリについて、J社が運営する認証局からのコードサイニング証明書の取得と、対応する署名鍵によるコード署名の付与を求めている。Jストアのアプリを実行するスマートフォンOSは、各アプリを起動する前にコード署名の有効性を検証しており、検証に失敗したらアプリを起動しないようにしている。
P社は、Nサービスのソースコード取得機能に、Pアプリのソースコードを保存しているVCSのホスト名とリポジトリの認証用SSH鍵を登録している。Nサービスのシークレット機能には、表3に示す情報を登録している。
Pアプリのビルドスクリプトには、図3に示すコマンドが記述されている。
1月4日、P社運用部のKさんがN社からの通知を受信した。それによると、ソースコード及びシークレットが漏えいしたおそれがあるとのことだった。Kさんは、⑦Pアプリ利用者に被害が及ぶ攻撃が行われることを予想し、すぐに二つの対応を開始した。
Kさんは、一つ目の対応として、⑧漏えいしたおそれがあるので、STORE_API_KEYとして登録されていた認証用APIキーに必要な対応を行った。また、二つ目の対応として、APP_SIGN_KEYとして登録されていたコードサイニング証明書について認証局に失効を申請するとともに、新たな鍵ペアを生成し、コードサイニング証明書の発行申請及び受領を行った。鍵ペア生成時、Nサービスが一時停止しており、鍵ペアの保存に代替手段が必要になった。FIPS 140-2 Security Level 3の認証を受けたハードウェアセキュリティモジュール(HSM)は、⑨コード署名を付与する際にセキュリティ上の利点があるので、それを利用することにした。さらに、二つの対応とは別に、リポジトリの認証用SSH鍵を無効化した。
その後、開発部と協力しながら、P社内のPCでソースコードをコンパイルし生成されたバイナリコードに新たなコード署名を付与した。JストアへのPアプリのアップロード履歴を確認したが、異常はなかった。新規の認証用APIキーを取得し、署名済みのバイナリコードをJストアにアップロードするとともに、⑩Kさんの二つの対応によってPアプリ利用者に生じているかもしれない影響、及びそれを解消するためにPアプリ利用者がとるべき対応について告知した。さらに、外部委託先であるN社に起因するインシデントとして関係当局に報告した。
下線⑦について、Kさんが開始した対応を踏まえ、予想される攻撃を、40字以内で答えよ。:有効なコード署名が付与された偽のPアプリをJストアにアップロードする攻撃
「Kさんは、⑦Pアプリ利用者に被害が及ぶ攻撃が行われることを予想し、すぐに二つの対応を開始した。」
二つの対応については、「Kさんは、一つ目の対応として、⑧漏えいしたおそれがあるので、STORE_API_KEYとして登録されていた認証用APIキーに必要な対応を行った。」と「また、二つ目の対応として、APP_SIGN_KEYとして登録されていたコードサイニング証明書について認証局に失効を申請するとともに、新たな鍵ペアを生成し、コードサイニング証明書の発行申請及び受領を行った。」とあります。
STORE_API_KEYとAPP_SIGN_KEYは、表3にそれぞれ以下の説明があります。
- STORE_API_KEY:Jストアにアプリをアップロードするための認証用APIキー
- APP_SIGN_KEY:コード署名の付与に利用する署名鍵とコードサイニング証明書
また、これらの情報に関して、「Jストアへのアプリのアップロードは、J社の契約者を特定するための認証用APIキーをHTTPヘッダーに付加し、JストアのREST APIを呼び出して行う。認証用APIキーはJ社が発行し、契約者だけがJ社のWebサイトから取得及び削除できる。また、Jストアは、アップロードされる全てのアプリについて、J社が運営する認証局からのコードサイニング証明書の取得と、対応する署名鍵によるコード署名の付与を求めている。」とあります。
つまり、Jストアへのアプリのアップロードを行うためには、認証用APIキーとコードサイニング証明書及び署名鍵が必要となります。
Pアプリに関するこれらの情報が漏えいしたとのことですから、攻撃者によって偽のPアプリをJストアにアップロードが可能となります。
下線⑧について、必要な対応を、20字以内で答えよ。:J社のWebサイトから削除する。
「Kさんは、一つ目の対応として、⑧漏えいしたおそれがあるので、STORE_API_KEYとして登録されていた認証用APIキーに必要な対応を行った。」
前の設問のとおり、STORE_API_KEYはJ社が契約者であるP社に発行するものであり、Jストアにアプリをアップロードするための認証用APIキーとなります。
そして、この認証用APIキーは、契約者だけがJ社のWebサイトから取得及び削除できるものです。
このSTORE_API_KEYが漏えいしたおそれがあり、攻撃者に悪用される可能性があるのであれば、P社の対応としては、J社のWwbサイトから認証用APIキーであるSTORE_API_KEYを削除することになります。
下線⑨について、コード署名を付与する際にHSMを使うことによって得られるセキュリティ上の利点を、20字以内で答えよ。:秘密鍵が漏れないという利点
「FIPS 140-2 Security Level 3の認証を受けたハードウェアセキュリティモジュール(HSM)は、⑨コード署名を付与する際にセキュリティ上の利点があるので、それを利用することにした。」
FIPS(Federal Information Processing Standards)とは、米国政府機関が利用する情報・通信機器に対して満たすべき技術標準を定めたもので、FIPS 140-2でセキュリティ要件が規定されています。
HSM(Hardware Security Module)とは、暗号化や電子署名に用いる暗号鍵を安全に保管し、その鍵を利用した暗号処理を行うことができるICチップのことです。
FIPS 140-2 Security Level 3の認証を受けたHSMは、外部から内部構造や記録されたデータなどを解析・読み取り・改ざんされにくい状態である耐タンパ性(tamper resistance)を備えたデバイスです。
したがって、鍵ペアの保存にHSMを使うことで、秘密鍵が外部に漏れるリスクを抑えることができます。
下線⑩について、影響と対応を、それぞれ20字以内で答えよ。:(影響)Pアプリを起動できない。(対応)Pアプリをアップデートする。
「新規の認証用APIキーを取得し、署名済みのバイナリコードをJストアにアップロードするとともに、⑩Kさんの二つの対応によってPアプリ利用者に生じているかもしれない影響、及びそれを解消するためにPアプリ利用者がとるべき対応について告知した。」
Pアプリの利用については、「Jストアのアプリを実行するスマートフォンOSは、各アプリを起動する前にコード署名の有効性を検証しており、検証に失敗したらアプリを起動しないようにしている。」とあるように、コード署名の有効性が必要です。
Kさんの対応のうち、「また、二つ目の対応として、APP_SIGN_KEYとして登録されていたコードサイニング証明書について認証局に失効を申請するとともに、新たな鍵ペアを生成し、コードサイニング証明書の発行申請及び受領を行った。」については、コードサイニング証明書が失効状態、つまり、コード署名が使えなくなります。
したがって、Pアプリ利用者に生じている影響としては、Pアプリを起動できないことであり、その対応としては、Pアプリをアップデートして再生成した鍵でコード署名できる状態にすることが必要となります。