情報処理安全確保支援士の令和4年度 秋季試験 午後Ⅰ問1の解説を行っていきます。
出題テーマ:ファームウェアの改ざん対策・Webアプリケーションプログラムのセキュリティ
出題テーマとしては『ファームウェアの改ざん対策・Webアプリケーションプログラムのセキュリティ』でした。
セキュリティの攻撃手法やその対策について出題されていました。
攻撃手法に関しては名前だけでなく、どうやって攻撃が行われるかまで知識がないと解答することが難しかったとと思います。
総じて、基本的ではあるが知識が必要な問題だったかと思います。
設問1 (1)
知識が必要な問題となります。
【a】の部分として、『DNSキャッシュサーバが権威DNSサーバにWサーバの名前解決要求を行ったときに、攻撃者が偽装したDNS応答を送信するという手法を使って攻撃を行うケースがある。この攻撃手法は【a】と呼ばれる。』とあります。
このような攻撃手法を『DNSキャッシュポイズニング(14文字)』と呼びます。
どういう攻撃なのかという詳細については、このあとの問題で問われていますのでそのとき解説します。
設問1 (2)
こちらもDNSキャッシュポイズニングに関する知識が必要となる問題となります。
【b】の部分として、『DNSキャッシュサーバが通信プロトコル【b】を使って』とあります。
DNSの問い合わせには一般的にUDPが用いられますが、問い合わせのサイズが大きい場合などにはTCPが用いられる場合もります。
そして、DNSキャッシュポイズニングにおいて攻撃が成立するためにはUDPが用いられている必要がありますので、解答は『エ:UDP』となります。
なぜTCPではな攻撃が成り立たず、UDPである必要があるかはこの後の問題で解説します。
設問1 (3)
下線部①として、『攻撃者が送信したDNS応答が、当該DNSキャッシュサーバに到達できることに加えて、いくつかの条件を満たした場合に成功する。』とあります。
DNSキャッシュポイズニングの説明を行ってきます。
まず、DNSキャッシュサーバが権威DNSサーバに対して名前解決要求を行います。
通常であれば、権威DNSサーバからの応答を受信して、その内容をキャッシュします。
この権威DNSサーバの応答よりも早く攻撃者が偽の応答がDNSキャッシュサーバに到着した場合、DNSキャッシュサーバは偽の応答をキャッシュしてしまうというのがDNSキャッシュポイズニングとなります。
同じDNSの問い合わせでも、TCPでは攻撃が成り立たず、UDPでないと攻撃が成立しません。
というのも、TCPはSYN、SYN+ACK、ACKというようにコネクションを確立してから通信を行います。
コネクションを確立していない状態で、SYN以外を受信した場合DropやRSTの返答が行われたりします。
UDPはコネクションを確立しませんので、送信元IPアドレスなども含めて権威DNSサーバの応答を偽って、いきなりDNS応答が送信可能となっております。
ということで解答例としては、『本物の権威DNSサーバの応答よりも早く応答を到達させること(29文字)』となります。
設問1 (4)
下線部②として、『製品Rは、Wサーバとの間の通信においてHTTPSを適切に実装している』とあります。
HTTPSで通信を行う場合、詳細なシーケンスは省略しますが、サーバ側からサーバ証明書が提示され、クライアント側ではその証明書の検証を行います。
検証の内容としては、サーバ証明書と一緒に送られてくる認証局の証明書、ルート証明書が信頼された認証局で証明されたものなのかを確認します。
通常ブラウザの中には事前に認証局の証明書、ルート証明書がインストールされており、このインストール済の証明書と一致するのかを確認します。
このとき、Wサーバ自身が認証局となり証明書を発行することも可能で、自分自身が自分の証明書の認証局となって発行された証明書を一般にオレオレ証明書と呼びます。
製品RにこのWサーバが発行したオレオレ証明書のみをインストールし、信頼済に登録しておくことで、HTTPSでWサーバ以外のサイトにHTTPSでアクセスしようとすると証明書エラーが発生するという状態を作り出すことができます。
ということで解答例としては、『サーバ証明書を検証する際にWサーバ以外ではエラーが発生するようにする実装(34文字)』と考えることができます。
設問1 (5)
知識の問題となっています。
【c】の部分として、『ファームウェアに【c】を導入しましょう。まず、製品Rでは【c】証明書がJ社のものであることを検証します。その上で、検証された【c】証明書を使って、ダウンロードしたファームウェアの真正性を検証しましょう。』とあります。
解答例としては『コードサイニング(8文字)』となります。
コードサイニング証明書はソフトウェアにデジタル署名を行う証明書です。
ソフトウェアの配布元が正しいこと、なりすまし、改ざんがされていないことを保証します。
設問2
重要な部分としては、『IPアドレス設定機能には、任意のコマンドを実行してしまう脆弱性がある。(中略)setvalueが図3中のパラメータを含むコマンド文字列をシェルにわたすと、図4のIPアドレス設定を行うコマンドなどが実行される。』とあります。
【d】の部分として、『リクエストに対するsetvlaueの処理には、【d】しまうという問題点があるので、setvalueに対して、図5に示す細工されたリクエストが送られると、製品Rは想定外のコマンドを実行してしまう。』とあります。
正しく利用されれば図3、4のようにIPアドレスの設定のみ行われるのですが、パラメータに細工されたリクエストが送られると、OSがコマンドと理解してしまい、図5に記載があるようにpingと入力されれば、pingが実行可能な状況となっています。
ということで解答例としては、『細工することで任意のシェルのコマンドをパラメータに入力できて(30文字)』と考えることができます。
設問3 (1)
下線部⑥としては、『図⑥の攻撃リクエストを送信させると』とあります。
脆弱性Bとしては『IPアドレス設定機能には、ログイン済の利用者が攻撃者によって設置された罠サイトにアクセスし、利用者が意図せず悪意のあるリクエストをWebアプリRに送信させられた場合に、WebアプリRがそのリクエストを受け付けて処理してしまう脆弱性がある。』とあります。
このような攻撃をクロスサイトリクエストフォージェリと呼びます、頭文字だけとってCSRFと呼ばれることもあります。
利用者がリクエストを送信するので、製品R上のログから攻撃者を特定できなかったり、正常な通信として認識してしまうというように、見つけづらいという特徴があります。
今回の場合ですと攻撃リクエストはPOSTで送られますので、罠サイトではそれを行うスクリプトを仕込んでおき、利用者がクリックしたら実行されるというような場合が想定できます。
ということで解答例としては、『攻撃リクエストをPOSTで送信させるスクリプトを仕込んだページを表示させる仕組み(40文字)』となります。
設問3 (2)
【e】の部分として、『利用者からのリクエストのパラメータに、セッションにひも付けられ、かつ、【e】という特徴をもつトークンを付与し、WebアプリRはそのトークンを検証するように修正した。』とあります。
こちらはクロスサイトリクエストフォージェリの対策の1種となります。
トークンは数字の羅列で、トークンを検証することで、本当に利用者からの適切なリクエストなのかを確認することができます。
トークンも偽装されてしまうことが予想されますので、推測困難なトークンを用いることで、偽装されにくくするすることができます。
ということで解答例としては、『推測困難(4文字)』と考えることができます。
設問4
脆弱性Aとしては、『IPアドレス設定機能には、任意のコマンドを実行してしまう脆弱性がある。』、脆弱性Bとしては、『IPアドレス設定機能には、ログイン済の利用者が攻撃者によって設置された罠サイトにアクセスし、利用者が意図せず悪意のあるリクエストをWebアプリRに送信させられた場合に、WebアプリRがそのリクエストを受け付けて処理してしまう脆弱性がある。』とあります。
これらの攻撃手法名としては『脆弱性A:ア OSコマンドインジェクション、脆弱性B:オ クロスサイトリクエストフォージェリ』となります。
SQLインジェクションはDBに関するものですし、コードインジェクションはWeb、JavaSprictに関連する内容となりますので、今回のコマンドが仕込まれる内容とそぐわないと判断することができたかと思います。
クロスサイトサイトスクリプティング(XSS)は利用者が攻撃者のサイトにアクセスして、利用者自身がマルウェアなどに感染することとなります。
また、サーバサイドリクエストフォージェリ(SSRF)はアクセス可能なサーバを利用して、アクセス不可のサーバを攻撃する内容となりますので、どちらも似ている内容とはなりますが、正しい攻撃手法名を解答できるように、この機会に覚えておきましょう。
公式解答例との比較
私の解答と公式解答を比較してみました。
満点ではないにせよ、少なくとも7割~8割程度は取れているかと思いますので合格ラインには達していると思います。
予想配点はあくまで予想ですので参考程度でお願いします。
出題テーマは『ファームウェアの改ざん対策・Webアプリケーションプログラムのセキュリティ』でした。
DNSキャッシュポイズニング、OSコマンドインジェクション、クロスサイトリクエストフォージェリといった攻撃手法の名称、そしてどのように攻撃が行われるかまで理解が問われいてる知識の問題でした。
どれもよく出題される攻撃手法なので、分からなかった方はこの機会に覚えておきましょう。
総じて、難易度としては普通~やや難しいだと思います。
配点 |
|||
設問1 (1) | DNSキャッシュポイズニング(14文字) | DNSキャッシュポイズニング | |
設問1 (2) | エ | エ | |
設問1 (3) | 本物の権威DNSサーバの応答よりも早く応答を到達させること(29文字) | 権威DNSサーバからの応答よりも早く到達する。 | |
設問1 (4) | サーバ証明書を検証する際にWサーバ以外ではエラーが発生するようにする実装(36文字) | サーバ証明書を検証し、通信相手がWサーバであることを確認する実装 | |
設問1 (5) | コードサイニング(8文字) | コードサイニング | |
設問2 | 任意のシェルのコマンドをパラメータで入力できて(23文字) | シェルが実行するコマンドをパラメータで不正に指定できて | |
設問3 (1) | 攻撃リクエストをPOSTで送信させるスクリプトを仕込んだページを表示させる仕組み(40文字) | 攻撃リクエストをPOSTメソッドで送信させるスクリプトを含むページを表示 | |
設問3 (2) | 推測困難(4文字) | 推測困難である | |
設問4 | 脆弱性A:ア 脆弱性B;オ |
脆弱性A:ア 脆弱性B;オ |
引用元
問題および解答例に関しては、独立行政法人 情報処理推進機構(IPA)より引用しています。
YouTube解説動画
情報処理安全確保支援士の問題解説
その他の年度、問題解説は以下のページにまとめております。