(toppers-users 38) Re: TINET TCPスタックの脆弱性に対する対応について

阿部 司 abe @ tomakomai-ct.ac.jp
2020年 8月 7日 (金) 08:20:55 JST


明京電機株式会社 駒込様

苫小牧高専の阿部です。

> On 2020/07/28 17:00, 駒込 豊 wrote:
>> TINETご担当様
>>
>> 明京電機株式会社の駒込と申します。
>>
>> TINET 1.7(JSP版) を使用し、
>> IPv4/6 デュアルスタックを搭載した装置ソフトの開発を行っております。
>> 昨年末にも質問をさせていただいたときには迅速にご対応いただきありがとう 
>> ございました。
>>
>> さて、弊社の現行装置はオリジナルのTCPスタックを使用していますが、
>> 最近、お客様より以下の脆弱性問題に関する対応を尋ねられました。
>>
>> ========
>> 「TCP/IPに係る既知の脆弱性に関する調査報告書(改訂第5版)」(*)に記載の、
>> 「1).TCPの初期シーケンス番号予測の問題」 (pp.4-12)
>> (*)独立行政法人 情報処理推進機構 セキュリティセンター発行,
>>   https://www.ipa.go.jp/security/vuln/documents/vuln_TCPIP.pdf
>> ========
>>
>> 弊社TCPスタックについては対応済と判断できましたが、
>> 今後使用する予定のTINETについても確認しておきたいと考えております。
>>
>> かなり前から存在する問題であるためご確認済とは思いますが、
>> 対応状況をご教示いただければ幸いです。
>>

TINET の TCP の ISS の生成方法について解説させていただきます。
ISS の脆弱性に関しては、この方面における専門家ではないため、
わかる範囲でお答えします。

まず、私が把握している事項です。

(1) 対象とする組込みプロセッサやターゲットシステムにおいて、
     品質の良い乱数を得ることが困難です。

(2) TINET の TCP は、FreeBSD 3.4-RELEASE(1999年12月)の
     ソースコードを基にしているため、その当時のセキュリティ
     設計に従っています。
     FreeBSD 3.4 のソースコード netinet/tcp_seq.h、tcp_input.c で
     キーワード tcp_iss により検索すると設計内容が分かると思います。
     この当時の ISS は 前の ISS に乱数値を加算することで生成しています。
     TINET もアルゴリズム的には同じです。

以下に TINET の乱数値の生成を示します。

(1) net/net_subr.c の net_srand 関数(乱数の初期化)
     ISS の生成には net_rand 関数(乱数を返す)を使っていますが、
     その乱数を初期化する関数です。
     引数の seed に IF_SRAND() を加算しています。
     IF_SRAND はマクロで、ether_srand 関数に展開されます。

(2) net/ethernet.c の ether_srand 関数
     マクロ ETHER_CFG_COLLECT_ADDR が定義されていれば、
     収集した MAC アドレスを加算して値を返します。

(3) net/ethernet.c の ether_input_task タスク
     フレームの入力ごとに毎回収集するのではなく、
     256 回に 1 回の周期で、MAC アドレスを収集します。

TINET の TCP の ISS の脆弱性の改良に関しては、
ISS の生成を完全にランダムにすることです。
問題は品質の良い乱数を得ることで、
私の使っている組込みシステムの範囲では困難です。

添付したファイル「20200806_TINETのISS生成.pdf」は、
ISS の生成状況を調査したファイルです。
(C2) 送信時間(システム時間)
(C3) 前の送信時間からの経過時間
(C4) 生成した ISS
(C5) 前に生成した ISS との差分
(C6) C5/C3 で、はランダムな値になっています。
参考になれば幸いです。

-- 
.\" 苫小牧工業高等専門学校 創造工学科 情報科学・工学系
.\" 教授 阿部 司
.\" 〒059-1275 北海道苫小牧市字錦岡443番地
.\" E-mail: abe @ tomakomai-ct.ac.jp  TEL/FAX: 0144-67-8937
-------------- next part --------------
テキスト形式以外の添付ファイルを保管しました...
ファイル名: 20200806_TINETのISS生成.pdf
型:         application/pdf
サイズ:     52336 バイト
説明:       無し
URL:        <http://www.toppers.jp/pipermail/users/attachments/20200807/f5fa928a/attachment-0001.pdf>


USERS メーリングリストの案内