(19)【発行国】日本国特許庁(JP)
(12)【公報種別】特許公報(B2)
(11)【特許番号】
(24)【登録日】2024-09-06
(45)【発行日】2024-09-17
(54)【発明の名称】通信装置、制御方法、プログラム
(51)【国際特許分類】
H04L 69/163 20220101AFI20240909BHJP
H04L 47/36 20220101ALI20240909BHJP
【FI】
H04L69/163
H04L47/36
(21)【出願番号】P 2020143831
(22)【出願日】2020-08-27
【審査請求日】2023-08-22
(73)【特許権者】
【識別番号】000001007
【氏名又は名称】キヤノン株式会社
(74)【代理人】
【識別番号】100126240
【氏名又は名称】阿部 琢磨
(74)【代理人】
【識別番号】100223941
【氏名又は名称】高橋 佳子
(74)【代理人】
【識別番号】100159695
【氏名又は名称】中辻 七朗
(74)【代理人】
【識別番号】100172476
【氏名又は名称】冨田 一史
(74)【代理人】
【識別番号】100126974
【氏名又は名称】大朋 靖尚
(72)【発明者】
【氏名】内川 慎一
【審査官】羽岡 さやか
(56)【参考文献】
【文献】特開2012-205248(JP,A)
【文献】特開2012-160901(JP,A)
(58)【調査した分野】(Int.Cl.,DB名)
H04L 12/00-12/66
41/00-101/695
(57)【特許請求の範囲】
【請求項1】
外部装置とTCP(Transmission Control Protocol)通信を行う通信装置であって、
ユーザ操作に基づき、前記TCP通信に使用するMSS(Maximum Segment Size)の下限値を設定する設定手段と、
外部装置からTCP通信の開始要求を受け付けた場合に、前記外部装置から受け取った受け入れ可能なMSSの候補値が、前記設定手段で設定された前記MSSの下限値以上である場合に、前記候補値を前記TCP通信で使用するMSSとして決定し、前記外部装置とTCP通信を確立する通信制御手段と、
を有し、前記通信制御手段は、外部装置からTCP通信の開始要求を受け付けた場合に、前記外部装置から受け取った受け入れ可能なMSSの候補値が、前記設定手段で設定された前記MSSの下限値より小さい場合に前記外部装置と、前記MSSの下限値を用いてTCP通信の確立を試みる制御を行うことを特徴とする通信装置。
【請求項2】
外部装置とTCP(Transmission Control Protocol)通信を行う通信装置であって、
ユーザ操作に基づき、前記TCP通信に使用するMSS(Maximum Segment Size)の下限値を設定する設定画面を表示する表示制御手段と、
前記MSSの下限値を設定する設定手段と、
外部装置からTCP通信の開始要求を受け付けた場合に、前記外部装置から受け取った受け入れ可能なMSSの候補値が、前記設定手段で設定された前記MSSの下限値以上である場合に、前記候補値を前記TCP通信で使用するMSSとして決定し、前記外部装置とTCP通信を確立する通信制御手段と、
を有し、前記設定画面には前記下限値の入力を受け付ける表示アイテムと、前記下限値の入力可能範囲を示す情報とが少なくとも表示される
することを特徴とする通信装置。
【請求項3】
外部装置からTCP通信の開始要求を受け付けた場合に、前記外部装置から受け取った受け入れ可能なMSSの候補値が、前記設定手段で設定された前記MSSの下限値より小さい場合に、前記外部装置とのTCP通信を確立しないよう制御する第2の通信制御手段を有することを特徴とする請求項2に記載の通信装置。
【請求項4】
前記第2の通信制御手段は、パケットフィルタリング機能を用いて前記下限値より小さいMSSの候補値を含む前記開始要求を破棄することで、前記外部装置とのTCP通信の確立を確立しないよう制御することを特徴とする請求項3に記載の通信装置。
【請求項5】
前記通信制御手段は、外部装置からTCP通信の開始要求を受け付けた場合に、前記外部装置から受け取った受け入れ可能なMSSの候補値が、前記設定手段で設定された前記MSSの下限値より小さい場合に前記外部装置と、前記MSSの下限値を用いてTCP通信の確立を試みる制御を行うことを特徴とする請求項2に記載の通信装置。
【請求項6】
前記通信装置は、印刷装置であることを特徴とする請求項1乃至5のいずれか1項に記載の情報処理装置。
【請求項7】
前記MSSの下限値を設定する設定画面を表示する表示制御手段を更に有し、
前記設定画面には前記下限値の入力を受け付ける表示アイテムと、前記下限値の入力可能範囲を示す情報とが少なくとも表示されることを特徴とする請求項1に記載の情報処理装置。
【請求項8】
外部装置からTCP通信の開始要求を受け付けた場合に、前記外部装置から受け取った受け入れ可能なMSSの候補値が、前記設定手段で設定された前記MSSの下限値より小さい場合に、所定の通知を行う通知手段を更に有することを特徴とする請求項1乃至7のいずれか1項に記載の情報処理装置。
【請求項9】
外部装置とTCP(Transmission Control Protocol通信を行う通信装置の制御方法であって、
ユーザ操作に基づき、前記TCP通信に使用するMSS(Maximum Segment Size)の下限値を設定する設定工程と、
外部装置からTCP通信の開始要求を受け付けた場合に、前記外部装置から受け取った受け入れ可能なMSSの候補値が、前記設定工程で設定された前記MSSの下限値以上である場合に、前記候補値を前記TCP通信で使用するMSSとして決定し、前記外部装置とTCP通信を確立する通信制御工程と、
を有し、前記通信制御工程では、外部装置からTCP通信の開始要求を受け付けた場合に、前記外部装置から受け取った受け入れ可能なMSSの候補値が、前記設定
工程で設定された前記MSSの下限値より小さい場合に前記外部装置と、前記MSSの下限値を用いてTCP通信の確立を試みる制御を行うことを特徴とする制御方法。
【請求項10】
請求項9に記載の通信装置の制御方法をコンピュータに実行させるためのプログラム。
【発明の詳細な説明】
【技術分野】
【0001】
本発明は、通信を行う通信装置、制御方法、及びプログラムに関する。
【背景技術】
【0002】
通信装置間でTCP通信を行う場合、TCP通信の確立時に通信でやりとりするTCPセグメントの最大サイズであるMSS(Maximum Segment Size)を決定することが知られている。
【0003】
具体的には、通信装置間でそれぞれが受け入れ可能なMSSを通知し、お互いのMSSのうち、小さい値をTCP通信で使用するMSSとして決定する仕組みが知られている。しかし、近年、このTCP通信におけるMSSの決定に関する脆弱性が報告されている(非特許文献1)。
【0004】
この脆弱性を利用した攻撃手法は、任意の通信装置のサービス拒否や、サービス遅延を引き起こす可能性がある。例えば、攻撃を行う通信装置は、攻撃対象の通信装置(対向機とも呼ぶ)に対してMSS値を50等の小さいサイズに指定してTCPデータを分割送信する。続けて通信シーケンスにおいて、意図的に改ざんしたSACK(Selective ACK)を送信することで対向機の受信バッファを枯渇させる。この手法で攻撃された対向機は、受信バッファの枯渇に起因してカーネルパニックを引き起こしたり、受信バッファの枯渇やバッファのリソース管理に起因したサービス遅延を引き起こしたりする。また、攻撃を行う通信装置は、単純にMSSを小さいサイズに指定したTCPデータを大量送信することで、相手先装置のリソースを消費させ、サービス遅延を引き起こしたりする。
【0005】
この攻撃を回避する方法として、SACK機能を無効化したり、一定のMSSに満たないMSSを通知した通信装置とはTCP通信を確立しないよう制御したりといった回避方法が知られている。
【先行技術文献】
【特許文献】
【0006】
【文献】CVE-2019-11478、 [令和2年7月9日検索](https://nvd.nist.gov/vuln/detail/CVE-2019-11478]
【発明の概要】
【発明が解決しようとする課題】
【0007】
通信装置において前述の脆弱性対応を行うために、TCP通信を何らかの制限を加えるかどうかの判断に用いる閾値(下限値)を設けることが考えられる。しかしながら、当該閾値を通信装置の設計時等に所定の閾値を採用してしまうと以下の問題が発生する恐れがある。
【0008】
例えば、下限値が小さ過ぎると、攻撃に対する保護の効果が得られない可能性がある。一方、下限値が大き過ぎると、攻撃に対する保護の効果は適切に得られるものの、正常に確立したいTCP通信にも影響を与えてしまうといった恐れがある。
【0009】
本発明は上述の問題点の少なくとも1つを鑑みなされたものである。本発明の1つの側面としては、TCP通信に関する下限値を設定する設定画面を介して、通信装置が使用されるユーザ環境に応じて適切に下限値を設定できる仕組みを提供することを目的の1つとする。また、本発明の1つの側面としては、TCP通信に関する下限値を設定する際に適切にユーザをガイドする情報を提供することを目的の1つとする。
【課題を解決するための手段】
【0010】
上記の少なくとも1つの目的を達成するために本発明の1つの側面としての通信装置は、外部装置とTCP(Transmission Control Protocol)通信を行う通信装置であって、ユーザ操作に基づき、前記TCP通信に使用するMSS(Maximum Segment Size)の下限値を設定する設定手段と、外部装置からTCP通信の開始要求を受け付けた場合に、前記外部装置から受け取った受け入れ可能なMSSの候補値が、前記設定手段で設定された前記MSSの下限値以上である場合に、前記候補値を前記TCP通信で使用するMSSとして決定し、前記外部装置とTCP通信を確立する通信制御手段と、を有し、前記通信制御手段は、外部装置からTCP通信の開始要求を受け付けた場合に、前記外部装置から受け取った受け入れ可能なMSSの候補値が、前記設定手段で設定された前記MSSの下限値より小さい場合に前記外部装置と、前記MSSの下限値を用いてTCP通信の確立を試みる制御を行うことを特徴とする。
【発明の効果】
【0011】
本発明の1つの側面としてはTCP通信に関する下限値を設定する設定画面を介して、通信装置が使用されるユーザ環境に応じて適切に下限値を設定できる仕組みを提供できるようになる。
【図面の簡単な説明】
【0012】
【
図2】通信装置200のハードウェア構成の一例を示す図である。
【
図3】通信装置200のソフトウェア構成の一例を示す図である。
【
図4】通信装置200の設定画面の一例を示す図である。
【
図5】通信装置200の制御の一例を示すフローチャートである。
【
図6】通信装置200の制御の一例を示すフローチャートである。
【
図7】パケットを破棄するルールの一例を説明する図である。
【
図8】通信装置200の制御の一例を示すフローチャートである。
【
図9】通信装置200の制御の一例を示すフローチャートである。
【
図10】第2の実施形態における通信装置200のソフトウェア構成の一例を示す図である。
【
図11】第2の実施形態における通信装置200の設定画面の一例を示すフローチャートである。
【
図12】第2の実施形態における通信装置200の制御の一例を示すフローチャートである。
【
図13】パケットログを取得するルールの一例を説明する図である。
【
図14】第2の実施形態における通知の一例を示す図である。
【発明を実施するための形態】
【0013】
<第1の実施形態>
まず、
図1を用いて、本発明に係る通信システムの構成を説明する。本実施形態に係る通信システムは、通信装置200、デバイス300、301がネットワーク100に接続されている。
【0014】
なお、本実施形態では、通信装置200の一例として、印刷機能やスキャン機能を有するMFP(Multi Function Peripheral)を例示している。しかしながら、本実施形態を適用できる通信装置は、MFPに限定されるものではない。単機能の印刷装置の通信制御に適用することもできる。更に、例えば、IoTデバイスやパーソナルコンピューター、エッジサーバ、スマートフォンなどにおける通信制御に適用することもできる。また、デバイス300、デバイス301は、例えばファイルサーバや、通信装置200の情報を管理する情報管理サーバ、プリントサービスを提供するサーバなどを想定している。しかしながらこれに限定されるものではなく、基幹業務システムのサーバやクラウドサーバなどであってもよい。
【0015】
通信装置200は、外部装置にスキャンして得られた画像に基づくデータを送信したり、通信装置200が収集したデータを外部サーバに送信したりすることができる。また、通信装置200は、Webサーバ機能を備え、外部装置のWebブラウザ上に通信装置200の動作設定を表示したり、変更指示を受け付けたりするWeb画面を提供することもできる。
【0016】
続けて、
図2を用いて、通信装置200の構成について説明する。
図2は、通信装置200のハードウェア構成を示すブロック図である。通信装置200はシート上の画像を読み取る読取機能、当該読み取った画像を外部の通信装置に送信可能なファイル送信機能などを有している。また、シートに画像を印刷する印刷機能も有する。
【0017】
CPU(Central Processing Unit)202を含む制御部201は、通信装置200全体の動作を制御する。ROM(Read Only Memory)204又はHDD205に記憶された制御プログラムは、RAM203に展開される。CPU202は、RAM203に展開された制御プログラムを読み出して、印刷制御や読取制御などの各種制御を行う。ROM204は、CPU202で実行可能な制御プログラムを格納する。RAM(Random Access Memory)203は、CPU202の主記憶メモリであり、ワークエリア又は各種制御プログラムを展開するための一時記憶領域として用いられる。HDD(Hard Disk Drive)205は、印刷データ、画像データ、各種プログラム、及び各種設定情報を記憶する不揮発性の記憶領域である。このように、CPU202、ROM204、RAM203、HDD205等のハードウェアは、いわゆるコンピュータを構成している。
【0018】
なお、本実施形態の通信装置200では、1つのCPU202が1つのメモリ(RAM203)を用いて後述するフローチャートに示す各処理を実行するものとするが、他の様態であっても構わない。例えば複数のプロセッサ、メモリ、及びストレージを協働させて後述するフローチャートに示す各処理を実行することもできる。また、ハードウェア回路を用いて一部の処理を実行するようにしてもよい。
【0019】
プリンタI/F206は、プリンタ207(プリンタエンジン)と制御部201とを接続する。プリンタ207は、プリンタI/F206を介して入力された印刷データに基づいて、不図示の給紙カセットから給紙されたシートに画像を印刷する。印刷の方式はトナーを紙に転写して定着させる電子写真方式であってもよいし、紙にインクを吐出して印刷するインクジェット方式であってもよい。また、プリンタ207は造形材料を用いて3次元形状の出力物を生成する3Dプリンタであってもよい。この場合、印刷データは3D形状を示す印刷データとなり、トナーやインク等の色材に代えて造形材やサポート材を用いて3次元形状の出力物を生成する。
【0020】
スキャナI/F208は、スキャナ209と制御部201とを接続する。スキャナ209は、載置された原稿を読み取り、そして画像データを生成する。スキャナ209が生成した画像データは、プリンタ207で印刷されたり、HDD205に記憶されたり、FAX I/F214や通信I/F212を介して外部装置に送信されたりする。なお、本実施形態では原稿を読み取るスキャナ209を例示しているがこれに限定されるものではない。立体物の形状データを読みとる三次元スキャナであってもよい。この場合、プリンタ207は、前述した3Dプリンタとして機能する。スキャナ209が三次元スキャナの場合、画像データに代えて形状データが生成される。生成された形状データは外部装置に送信されたり、3Dプリンタによる立体物の複製(3Dコピー)に利用されたりする。
【0021】
操作パネルI/F210は、操作パネル211と制御部201とを接続する。操作パネル211には、タッチパネル機能を有する液晶表示部や各種ハードキーなどが備えられている。操作パネル211は、情報を表示する表示部やユーザの指示を受け付ける受付部として機能する。CPU202は、操作パネル211と協働して情報の表示制御やユーザ操作の受け付け制御を行う。
【0022】
通信I/F212には、RJ45コネクタ形状又はGG(GgigaGate)45コネクタ形状のネットワークケーブルが接続され、外部装置とネットワークを経由した通信を実行することができる。通信装置200は、通信I/F212を介してネットワーク100に接続される。なお、通信方式は一例であり、通信I/F212の物理レイヤにおける通信方式は、IEEE802.11シリーズの無線通信規格に準拠する無線通信方式であってもよい。
【0023】
<情報処理装置103のソフトウェア構成>
続けて、
図3を用いて、通信装置200のソフトウェアモジュールの一例について説明する。情報処理装置103は、OS(Operating System)1020とOSと協働するミドルウェアを有する。
【0024】
まず、OS1020を構成する個々の要素について説明する。OS1020は、通信装置200全体を統括して管理するシステムソフトウェアである。具体的には、入出力の制御、メモリやハードディスクなどのハードウェアの管理、プロセスの管理といった、コンピュータの基本的な管理・制御を提供する。更に本実施形態のOS1020は、パケットフィルタリング部1021及びプロトコルスタック部1022を備える。
【0025】
フィルタリング部1021は一般的にはファイアウォールと呼ばれる機能を提供しており、指定されたルールに従ってパケット通信を許可、破棄するパケットフィルタリング機能を提供する。プロトコルスタック部1022は、TCP/IP通信を実現するための一連の制御を行うモジュールである。プロトコルスタック部1022は、デバイス300やデバイス301等の外部装置との間でスリーウェイハンドシェイクを行ってTCP通信を確立したり、通信セッションの維持、管理を行ったりする。TCP(Transmission Control Protocol)通信は通信相手(例えばデバイス300や301)とコネクションを確立して、当該確立した通信路を介してデータを送受信する通信方式である。
【0026】
続いて、ミドルウェアについて説明する。設定制御部1010は、操作パネル211に設定画面を表示し、当該画面を介したユーザ操作に基づき通信装置の動作設定の変更を受け付けるモジュールである。設定制御部1010は、設定変更操作を受け付けると、当該設定に従って設定値DB1011の設定を更新(変更)する。
【0027】
設定値DB1011には、通信装置200の各種動作設定が記憶される。当該設定は後述のフローチャートにて適宜参照されたり、変更されたりする。MSS制御部1040は、MSS(Maximum Segment Size)に関する設定をOS1020の各モジュールに反映するモジュールである。MSS下限値自動設定部1050は、後述する設定画面でMSSを自動設定する動作設定がなされた場合に、下限値を動的に決定する処理を行うモジュールである。
【0028】
<MSSの下限値の設定>
続けて、本実施形態におけるMSSの設定について
図4を用いて説明する。
図4(A)に示す設定画面2000は、設定制御部1010が操作パネル211上に表示する設定画面の一例である。
【0029】
管理者権限を有するユーザは、画面2000を介して、通信装置200がTCP通信で許容するMSSの下限値や、設定したMSSの範囲外の通信に対する防御方法(制限方法)などを設定することができる。
【0030】
キー2010、2011はMSSの下限値を自動で設定するか、手動で設定するかを選択するための表示アイテムである。キー2010、2011はいずれか一方が有効状態にセットされ、他方は無効状態にセットされる。画面2000は、キー2011が有効に設定されており、領域2012のMSS下限値として、48が設定されている場合に表示される画面を例示している。
【0031】
また設定画面2000には、入力可能範囲を示す情報2013が表示される。当該情報は設定を行える下限値と上限値が存在することをユーザに通知するための情報である。
【0032】
なお、本実施形態の通信装置200には、Ethernet(登録商標)フレームが最大1518byteであることを鑑み、最大フレームサイズから各種ヘッダを除いた1460byteをMSSの候補として相手先に提示する設定がなされているものとする。また、当該設定は設定値DB1011に記憶される。
【0033】
キー2020、2021はMSSの下限値に満たない、範囲外のMSS通信を要求された場合の対処方法を選択するための表示アイテムである。キー2020、2021はいずれか一方が有効にセットされ、他方は無効にセットされる。本実施形態ではキー2021が有効に設定されている場合を例示している。
【0034】
キー2020の「強制する」が選択された場合は、通信相手のMSSが装置200に設定されたMSS下限値に満たない場合、領域2012のMSS下限値で指定されたMSSでTCP通信の確立を試みる動作設定が設定される。なお、本実施形態での「強制する」とは、相手先とMSS下限値でのネゴシエーションを試みる、相手先から拒否された場合は、通信をエラー終了することを含みうる。
【0035】
一方、キー2021の「破棄する」が選択された場合は、通信相手のMSSが装置200に設定されたMSS下限値に満たない場合、パケットフィルタリング部1021を用いて該当する通信を破棄する制御を行う動作設定が設定される。
【0036】
なお、本実施形態において、表示アイテムとは、ユーザ操作を受け付けるためのキー、ボタン、情報表示のためのラベル、表示領域、描画オブジェクトなどを含む表示オブジェクトの総称を意味する。以降、説明のため通信装置200の操作パネル211上に設定画面を表示する場合を例に説明する。しかしながらこれに限定されるものではない。クライアント端末のWebブラウザから、通信装置200のWebサーバ機能が提供するWebページにアクセスすることで同様の設定を行うように構成することもできる。
【0037】
キー2100は設定を破棄し、1つ上の階層の画面に遷移する場合に使用するキーである。キー2101は、画面2000を介してなされた設定を反映する場合に使用するキーである。設定制御部1010は、キー2101が押下されたことを検知すると、画面2000を介してなされた各設定に基づき設定DB1011の設定値を更新する。これらの設定値は後述のフローチャートにて適宜参照される。
【0038】
次に、
図5のフローチャートを用いてMSS下限値の手動設定の制御について説明する。
図5は設定制御部1010が設定値を受け付ける受付処理の制御を示すフローチャートである。
【0039】
なお、
図5、6、8、9及び12のフローチャートに示す各動作は、
図3で説明した各モジュール(制御部)を実現するプログラムコードをRAM203に読み出し、CPU202で実行することにより実現される。なお、処理の主体を明確にするため、必要に応じて、各ソフトウェアモジュールである各制御部を主語として説明する。
【0040】
S100において、設定制御部1010は、操作パネル211と協働して領域2012に対するMSS下限値の入力操作を受け付ける。続けて、S101において、MSS下限値の決定方法を示す動作設定が、手動か自動のいずれに設定されているかを判断する。
【0041】
動作設定として自動が設定されている場合、入力された下限値の値を動作設定に反映することなくS104のエラー処理に進む。一方、動作設定として手動が設定されている場合、処理をS102に進める。
【0042】
S102において、設定制御部1010は、S100で入力を受け付けたMSS下限値が妥当な範囲であるかを確認する。具体的には、設定制御部1010は、設定値DB1011からMSS下限値の設定可能範囲を取得する。本実施形態では、一例として設定可能範囲として48~1000が工場出荷時に格納されているものとする。続けて、設定制御部1010は、受け付けたMSS下限値と取得した設定可能範囲を比較する。比較の結果、設定可能範囲に収まっていると判断すると、処理をS103に進め、設定可能範囲に収まっていないと判断すると、処理をS104に進める。S103において、設定制御部1010は、S100で入力を受け付けたMSS下限値を設定値DB1011に保存し、一連の処理を終了する。
【0043】
S104において、設定制御部1010は、操作パネル211と協働してユーザにエラーを通知する。
図4(B)に示すポップアップ画面2200はS104において表示されるエラー通知の一例であり、設定エラーであることをユーザに通知するメッセージが含まれている。設定制御部1010は、エラー通知を閉じるユーザ操作を受け付けると、S100に戻り、更なる変更操作を待ち受ける。
【0044】
なお、本実施形態では、MSS下限値の決定方法を示す動作設定に自動設定が設定されている場合にもMSS下限値の入力を受け付け可能に制御する場合を例示したが、これに限定されるものではない。例えば、MSS下限値の決定方法を示す動作設定に自動設定が設定されている場合、2012の表示アイテムをグレーアウト状態、且つ入力操作を受け付けない状態で表示するよう制御してもよい。
【0045】
また、設定可能範囲に収まっている場合であっても、更にその数値範囲によって確認通知を行うよう構成してもよい。例えば、MSS下限値の入力として60以下を受け付けた場合、適切な防御の効果が得られないかもしれないことを示す確認メッセージを表示するよう構成してもよい。また、例えば、MSS下限値の入力として900以上を受け付けた場合、正常に行うべきTCP通信が行えなくなる可能性があることを示す確認メッセージを表示するよう構成してもよい。
【0046】
続いて、
図4、
図5で説明した動作設定に基づいてプロトコルスタック部に対する設定制御を行う方法について
図6のフローチャートを用いて説明する。
図6は設定画面2000のMSS範囲外の防御方法として、キー2020の“強制する”か、キー2021の“破棄する”の何れかの選択が行われている場合の通信制御の一例を示している。
図6のフローチャートに示す各制御は、
図4で示したMSSに関する設定が変更された場合、通信装置200に電源が投入された場合、NW設定が変更された場合、通信装置200がスリープ状態から復帰する場合に実行される。
【0047】
S200において、MSS制御部1040は、設定DB1011を参照し、MSSに関する設定を取得する。ここでは、MSS下限値と、防御方法の動作設定が取得される。
【0048】
続けて、S201において、MSS制御部1040は、取得した防御方法の動作設定として「強制する」設定がなされている場合、処理をS202に進め、取得した防御方法の動作設定として「破棄する」設定がなされている場合、処理をS203に進める。
【0049】
S202において、MSS制御部1040は、プロトコルスタック部1022の設定を、下限値未満のMSSを提示した相手先装置とMSS下限値を用いて通信の確立を試みる動作設定に変更する。
【0050】
この設定がなされた場合のプロトコルスタック部1022の通信制御について説明する。スタック部1022は、通信相手が提示した受け入れ可能なMSSの候補値が、S202で設定されたMSS下限値に満たない場合、MSS下限値での通信確立を試みる。即ち、通信相手が提示した候補値を意図的に無視し、候補値より大きいMSS下限値での通信確立を試みることになる。相手先とTCP通信が確立できた場合、当該下限のMSS値を用いて通信制御を行う。
【0051】
一方、スタック部1022は、通信相手が提示したMSS値がMSS下限値以上である場合は、通常のTCP通信の確立シーケンスに則った制御を行う。即ち、通信装置200と対向の通信装置が提示したMSSを比較し、より小さいMSSを利用してTCP通信を確立する制御を行う。
【0052】
図6の説明に戻り、S203において、MSS制御部1040はパケットフィルタリング部1021に対して、MSSの下限値に満たない通信は受信時に破棄するルールを登録する制御を行う。フィルタリング部1021は一般的にはファイアウォールと呼ばれる機能を提供しており、指定されたルールに従って通信を許可、破棄する機能を提供する。本実施形態では、一例としてパケットフィルタリング部の内部実装としてiptablesを採用する場合の具体例を説明する。S200で取得したMSSの下限値が「500」である場合、MSS制御部1040は、
図7に示すコマンドをOS1020のパケットフィルタリング部1021に対して発行する。当該コマンドは、TCPで接続を確立する際に相手先から送られるパケットであって、MSSに1~499が指定されたパケットを破棄するといったルール(ポリシ)追加することを意味するコマンドである。フィルタリング部1021は、当該コマンドに基づきフィルタリングテーブルを更新する。
【0053】
フィルタリング部1021は、更新されたフィルタリングテーブルに基づき通信の許可、破棄を制御する。従って、通信装置200において、下限値未満のMSS(例えば、500より小さいMSS)を提示した相手先装置とのTCP通信を一律に禁止することができるようになる。
【0054】
続いて、通信装置200における通信制御について
図8、
図9のフローチャートを用いて説明する。
図8のフローチャートに示す各処理は、通信装置200が通常モードでユーザに機能を提供している場合に繰り返し実行される。
【0055】
S301において、MSS制御部1040は、MSS下限値の決定方法を示す動作設定が、手動か自動のいずれに設定されているかを判断する。MSS下限値の決定方法を示す動作設定として手動が設定されている場合、処理をS308に進め、MSS下限値の決定方法を示す動作設定として自動が設定されている場合、処理をS302に進める。
【0056】
S302において、MSS制御部1040は、OS1020と協働しポーリング間隔に相当する所定時間が経過したかどうか判断する。リソースの使用状況の確認を行うポーリング間隔は、例えば、30秒等を採用することができる。制御部1040は、所定時間が経過したと判断すると、S303の処理に進め、所定時間が経過していないと判断すると処理をS308に進める。
【0057】
S303において、MSS制御部1040は、自動設定部1050に対してリソースの使用状況の確認要求を依頼する。確認要求の依頼を受け付けた自動設定部1050は、OS1020と協働して、プロトコルスタック部1022のデータ受信メモリ資源の使用状況を取得する。具体的には、選択的応答(SACK)用に確保されたメモリリソースの使用状況が取得される。
【0058】
S304において、自動設定部1050は、S303で使用した使用状況が所定の閾値を超えているか否かを判断する。所定の閾値を超えている場合、処理をS305に進め、所定の閾値を超えていない場合、処理をS306に進める。
【0059】
S305において、自動設定部1050は、MSSの下限値を1000に設定すると決定する。一方、S306において、自動設定部1050は、MSSの下限値を48に設定すると決定する。なお、CVE-2019-11478の脆弱性を利用した攻撃は、例えば、SACK用に確保されたメモリリソースである再転送キューを断片化するよう加工したパケットを送信することで引き起こされる。従って、本実施形態では、SACK用に確保されたメモリリソースが過剰に消費されている場合は、S305で説明した下限値を自動的に引き上げる制御を行う。この処理により、脆弱性を利用した更なる攻撃が行われることを抑制でき、情報処理装置における処理負荷が増大することを抑制することができる。なお、通信装置200は、S305でMSS下限値を1000に変更した場合に、外部装置と確立済みのTCP通信をリセットする処理を行うように構成してもよい。
【0060】
S307において、自動設定部1050は、MSS制御部1040並びにOS1020と協働し、MSSに関する設定の更新処理を実行する。まず、自動設定部1050は、S305又はS306で決定した下限値を確認要求の結果としてMSS制御部1040に通知する。確認要求の結果を受信したMSS制御部1040は、設定DB1011のMSSの下限値を更新する。続けてMSS制御部1040は、OS1020と協働して
図6のフローチャートのS200~S203で説明した設定変更制御を行う。この処理により、プロトコルスタック部1022やパケットフィルタリング部1021の通信動作を、リソースの使用状況に応じて動的に切り替えることが可能となる。
【0061】
一方、S308において、OS1020は、動作設定に基づきTCP通信の通信制御及びパケットフィルタリング制御を行う。
図9を用いて通信制御及びパケットフィルタリング制御について説明する。
【0062】
S401において、OS1020はパケットを受信したか否かを判断する。パケットを受信した場合は、処理をS402に進め、受信していない場合は処理をS309に進める。
【0063】
S402において、フィルタリング部1021は、受信したパケットが破棄ルールに該当するかどうかを判断する。フィルタリング部1021は、破棄ルールに該当する場合は、処理をS410に進める。一方、フィルタリング部1021は、破棄ルールに該当しない場合は、受信パケットをプロトコルスタック部1022に転送し、処理をS402に進める。なお、フィルタリング部1021は、
図7で例示した破棄ルールがフィルタリングルールに登録されている場合、MSSが下限値未満の接続確立要求が破棄ルールに該当すると判断する。一方、フィルタリング部1021は、
図7で例示した破棄ルールがフィルタリングルールに登録されていない場合、MSSが下限値未満の接続確立要求が破棄ルールに該当しないと判断する。
【0064】
S410において、フィルタリング部1021は、受信したパケットを破棄し、処理をS309に進める。
【0065】
S403において、プロトコルスタック部1022は、受信したパケットが接続確立要求のパケットであるか否かを判断する。接続確立要求のパケットであると判断すると処理をS404に進め、接続確立要求のパケットでないと判断すると処理をS409に進める。
【0066】
S409において、OS1020並びに図示省略のアプリケーションは受信したパケットに応じた処理を実行する。OS1020は、受信したパケットに応じた処理が完了すると処理をS309へ進める。例えば、印刷データに関する一連のパケットを受信した場合、当該パケットに含まれる印刷データに基づく印刷処理を行う。また、例えば、通信装置200がWebサーバ機能を有する場合であって、HTTPリクエストのパケットを受信した場合、通信装置200は、HTTPリクエストに対応するWebデータを提供する処理を行う。
【0067】
S404において、プロトコルスタック部1022は、設定値DB1011を参照し、下限値未満のMSSを提示した相手先装置とMSS下限値を用いて通信の確立を試みる動作設定がなされているか否かを判断する。下限値未満のMSSを提示した相手先装置とMSS下限値を用いて通信の確立を試みる動作設定がなされている場合は、処理をS406に進める。一方、下限値未満のMSSを提示した相手先装置とMSS下限値を用いて通信の確立を試みる動作設定がなされていない場合は、処理をS405に進める。
【0068】
S405において、プロトコルスタック部1022は、接続確立の開始要求に含まれる相手先装置が提示したMSSの値と、通信装置200に設定されたMSSの値(例えば、1460Byte)を比較する。続けてプロトコルスタック部1022は、比較した結果より小さい値を用いて相手先装置とのTCP通信の確立を試行する。
【0069】
S406において、プロトコルスタック部1022は、設定DB1011を参照し、MSS下限値の値を取得する。続けて、接続確立要求に含まれる相手先装置が提示したMSSの値が、取得したMSS下限値未満であるか判断する。相手先装置が提示したMSSの値が、取得したMSS下限値未満である場合、処理をS407に進め、相手先装置が提示したMSSの値が、取得したMSS下限値以上である場合、処理をS405に進める。
【0070】
S407において、プロトコルスタック部1022は、S406の処理で取得したMSS下限値を用いて相手先装置とのTCP通信の確立を試行する。以上、
図9で説明した処理を行うことにより、動作設定に基づく通信制御を行うことができるようになる。
【0071】
図8の説明に戻り、S309において、OS1020は、シャットダウン操作を受け付けたか否かを判断する。具体的には、OS1020は、操作パネル211を介してシャットダウンの操作がなされた場合、通信装置200が有するハードウェア電源ボタンや電源キーが押下された場合に、シャットダウン操作を受け付けたと判断する。OS1020は、シャットダウン操作を受け付けていない場合、S301に戻り、通信制御やリソースの確認処理を繰り返す。一方、OS1020は、シャットダウン操作を受け付けた場合、シャットダウン制御を行い、一連の制御を終了する。
【0072】
以上説明した処理により、MSSに関する下限値を設定する設定画面を介して、通信装置が使用されるユーザ環境に応じて適切に下限値を設定できる仕組みを提供できるようになる。
【0073】
<第2の実施形態>
第1の実施形態では脆弱性を利用した攻撃が行われた場合に、通信装置200を保護する制御について説明した。第2の実施形態では、第1の実施形態で説明した制御に加えて、脆弱性を利用した攻撃が行われている可能性があることを示すアラート通知を行える仕組みを提供する。なお、第2の実施形態におけるハードウェア構成は第1の実施形態と同様であるため、説明を省略する。
【0074】
以下具体的に説明する。
図10は、第2の実施形態におけるソフトウェア構成を示す図である。第1の実施形態で説明した構成との差異は、通知制御部1030を有している点である。通知制御部1030は、パケットフィルタリング部1021に対し、所定の条件を満たすパケットについてログ出力を行うルールを追加する機能、並びにログを解析し、所定の条件を満たすパケットログが存在する場合にアラートを通知する機能を備えている。
【0075】
続けて、通知制御部1030に関連する動作設定について
図11を用いて説明する。
【0076】
図11に示す設定画面は、設定制御部1010が操作パネル211上に表示する設定画面の一例である。この画面は第1の実施形態において
図4(A)で例示した画面に代えて表示される画面である。なお、第1の実施形態と同様の表示項目については説明を省略する。
図11の設定画面は、アラート通知に関する設定項目を有する点で
図4(A)の設定画面と差異がある。
【0077】
図11の画面には、「MSS範囲外の通信が試行された場合にアラートを通知する」といった情報を含む設定項目を示すラベルと、キー2030、2031が含まれる。
【0078】
キー2030は、MSSの下限値に満たない範囲外のMSS通信を検知した場合に、該当する通信が発生していることを通知するか選択するための表示アイテムである。キー2030、2031はいずれか一方が有効にセットされ、他方は無効にセットされる。本実施形態ではキー2031が有効に設定されている場合を例示している。
図11の画面を介してなされた各設定は設定値DB1011に記憶され、後述のフローチャートにて適宜参照される。
【0079】
通信装置200は、この設定が有効に設定されている場合に通知処理を行う仕組みを提供する。具体的な制御について
図12(A)~(C)を用いて説明する。
【0080】
図12(A)は、
図10で示したMSSに関する設定が変更された場合、通信装置200に電源が投入された場合、NW設定が変更された場合、通信装置200がスリープ状態から復帰する場合に実行される各処理を説明するフローチャートである。一方、
図12(B)に示すフローチャートは、通信制御を行う際にログを記録する処理を説明するフローチャートの一例である。また、
図13(C)に示すフローチャートは、通信装置200が通常モードでユーザに機能を提供している場合に、通知制御部1030により繰り返し実行される各処理を説明するフローチャートである。なお、
図12(B)のフローチャートに示す各処理と
図12(C)のフローチャートに示す各処理は、並列に実行されるものとする。
【0081】
まず、動作設定について
図12(A)を用いて説明する。S501において、通知制御部1030は、設定DB1011を参照し、通信アラート通知を行う動作設定がなされているかどうかを判断する。通信アラート通知を行う動作設定がなされている場合、処理をS502に進め、なされていない場合、一連の処理を終了する。
【0082】
S502において、通知制御部1030は、パケットフィルタリング部1021に対して、S200で取得したMSSの下限値に満たない通信のログを取得するルールを設定する。例えば、設定値DB1011に格納されているMSSの下限値が「500」である場合、MSS制御部1040は、
図13に示すコマンドをOS1020のパケットフィルタリング部1021に対して発行する。当該コマンドは、TCPで接続を確立する際に相手先から送られるパケットであって、MSSに1~499が指定されたパケットをログファイルに書き出することを意味するコマンドである。フィルタリング部1021は、当該コマンドに基づきフィルタリングテーブルを更新する。従って、MSS範囲外の通信が試行された場合に、当該試行が発生したことを示すログを記憶することが可能となる。
【0083】
ログの記憶について
図12(B)を用いて説明する。
図12(B)は、第1の実施形態の
図9のフローチャートで説明した各処理に加えて、パケットフィルタリング部1021が追加で行う処理を示している。第2の実施形態では、
図9のS401でパケットを受信したと判定した場合に、S511の処理を実行する。S511において、フィルタリング部1021は、受信したパケットがログ出力ルールに該当するかどうかを判断する。ログ出力ルールに該当する場合は処理をS512に進め、ログ出力ルールに該当しない場合は第1の実施形態の破棄ルールに該当するかどうかの判断処理(
図9のS402)を行う。
【0084】
S512において、パケットフィルタリング部1021は、OS1020が提供するシステムログデーモンと協働して、所定の格納領域に受信パケットに関するログを記録する。当該ログは
図12(C)で説明するフローチャートの各処理で適宜参照される。ログの記憶処理が完了すると、
図9のS402以降の各処理が実行される。
【0085】
最後に
図12(C)を用いて、ログの監視並びにアラート通知を行う仕組みについて説明する。S521において、通知制御部1030は、OS1020と協働しポーリング間隔に相当する所定時間が経過したかどうか判断する。リソースの使用状況の確認を行うポーリング間隔は、例えば、5分等を採用することができる。制御部1030は、所定時間が経過したと判断すると、S522の処理に進め、所定時間が経過していないと判断すると所定時間の経過を待つ。
【0086】
S522において、通知制御部1030は、パケットフィルタリング部1021により生成されるログファイル(ログデータ)を参照する。続いて、当該ログファイル内にMSS下限値未満の通信が試行されたことを示すログが残っているかどうかを判断する。MSS下限値未満の通信が試行されたことを示すログが残っている場合、処理をS523に進める。一方、MSS下限値未満の通信が試行されたことを示すログが残っていない場合、処理をS524に進める。具体的には、ポーリング間隔を5分ごとに設定している場合、通知制御部1030は、OS1020から現在時刻を取得し、当該現在時刻を基準として5分前までのログ情報を抽出する。続いて、通知制御部1030は、抽出したログの中に、MSS下限値未満の通信が試行されたことを示すログが残っているかどうか判定する。
【0087】
S523において、通知制御部1030は、操作パネル211と協働して通信アラートをユーザに対して通知する。
図13の画面2300は、通信装置200が備える操作パネル211上の下部に配置示されるステータス通知領域2310に通知を行う場合を例示している。ユーザは当該領域2210に表示されるメッセージ2311を確認することで、攻撃が行われている可能性を認識できるようになる。
【0088】
なお、通知の方法は一例であり、例えばPCなどの装置の場合、トースト等の通知バナーを用いた通知を行ってもよい。また例えばスマートフォン等の装置の場合、OS1020が提供するノーティフィケーション機能を用いて通知領域に通知を発行してもよい。
【0089】
更には、通知の方法は表示に限定されるものではない。例えば、通信装置200に対して事前に、通信装置200で発生したイベントの通知する通知先メールアドレス等を登録しておき、当該通知先メールアドレスに対して通信アラートを通知するよう構成することもできる。
【0090】
また、通信装置200が管理サーバ等で管理されている場合、管理サーバに当該通信アラートを通知するよう構成することもできる。具体的には、通信装置200がActive Director(登録商標)等のディレクトリサービスで管理されている場合、当該ディレクトリサービスを提供するサーバに対して通信アラートを通知することができる。これらの通知により、通信装置200を統括的に管理するIT管理者やネットワーク管理者に対して、攻撃が行われている可能性を通知できるようになる。
【0091】
図12(C)の説明に戻り、S524において、OS1020は、シャットダウン操作を受け付けたか否かを判断する。当該制御は、
図8で説明したS309と同様である。シャットダウン操作を受け付けた場合、シャットダウン処理を実行し一連の処理を終了し、シャットダウン操作を受け付けた場合、S521に戻りログの監視処理を繰り返す。
【0092】
以上説明した処理により脆弱性を利用した攻撃が行われている可能性があることを示すアラート通知を行えるようになる。
【0093】
<変形例>
第1及び第2の実施形態では、
図4に例示したようにMSS下限値をユーザ操作に基づき変更できるように構成する場合を例示した。しかしながら、これに限定されるものではない。例えば、イーサネットの最大データグラムを示すMTU(Maximum Transmission Unit)の下限値をユーザ操作で変更可能に構成するように適宜変形することもできる。この場合、設定制御部1010は、ユーザ操作で受け付けたMTU下限値からIPヘッダ、TCPヘッダのサイズである40byteを減算した値をMSS下限値として設定DB1011に記憶するよう構成すればよい。
【0094】
<その他の実施形態>
本発明は、上述の各実施形態の1以上の機能を実現するプログラムを、ネットワーク又は記憶媒体を介してシステム又は装置に供給し、そのシステム又は装置のコンピュータにおける1つ以上のプロセッサがプログラムを読出し実行する処理でも実現可能である。また、1以上の機能を実現する回路(例えば、ASICやFPGA)によっても実現可能である。
【符号の説明】
【0095】
100 ネットワーク
200 通信装置
300 デバイス