SlideShare a Scribd company logo
1 of 22
Download to read offline
F*⾔語によるMQTTパケットパーサの開発と
安全性評価
⽴命館⼤学⼤学院︓喜多村卓
⽴命館⼤学情報理⼯学部︓上原哲太郎
原稿URLは最終ページに付属
アジェンダ
• 研究背景
• 研究⽬的
• 関連研究
• F*⾔語によるMQTTパケットパーサの開発
• 評価
• まとめ
2
研究背景
• 製品出荷後のバグ修正が困難なシステム開発に
は形式⼿法が有⽤
• だが実際の開発現場で⼗分に活⽤されていない
→ 潜在的なセキュリティリスクとなる
3
産業⽤制御システムの脆弱性対策情報件数
https://www.ipa.go.jp/security/vuln/report/JVNiPedia2020q3.html
増加傾向
研究⽬的
形式⼿法普及の阻害要因を明らかにする
1. 堅牢性が必須なシステム(a)を形式⼿法(b)
を⽤いて開発
2. システムの性能評価
3. 上記過程で明らかになった課題をもとに
形式⼿法普及の阻害要因を明らかに
4
本研究での採⽤
(a): MQTTパケットパーサ
(b): F*⾔語(形式⼿法を活⽤したプログラム検証⽤⾔語)
関連研究
• EverParse: Verified Secure Zero-Copy Parsers for
Authenticated Message Formats
•認証パケット向けパーサをF*⾔語を⽤いて堅牢な
パーサを実装する研究
• 独⾃に定義された形式仕様⾔語をもとにセキュアなパーサを⾃動⽣成
することで実現している
本研究のF*⾔語によるシステム開発で必要なのは
F*⾔語の学習コストのみであり、汎⽤性も⾼い
5
Tahina Ramananandro, Antoine Delignat-Lavaud, C ́edric Fournet, Nikhil Swamy,
Tej Cha jed, Nadim Kobeissi, Jonathan Protzenko, Proceedings of the 28th USENIX
Conference on Security Symposium pp.1465-1482(2019)
MQTT(IoT機器向け通信プロトコル)
近年IoT機器の普及に伴いサイバー攻撃対象となりうる
→ MQTT実装は堅牢であることが求められる
6
データ送信者
データ送信者
データ送信者
データ送信者
悪意ある
データ送信者
データ
中継者
データ受信者
データ受信者
データ受信者
データ受信者
データ受信者
MQTTの通信モデル ...
...
F*⾔語
7
1. 関数の返り値, 引数の制約条件記述
2. アルゴリズム部分の記述
3. F*により2. が制約と⽭盾がないか検証
4. F*⾔語からCコードを⾃動⽣成
x,yそれぞれを加算した結果を返す
エラーの場合は、-1を返す
ただしx,yの範囲は0以下5以上とする
0 ≦ x ≦ 5,
0 ≦ y ≦ 5,
0 ≦ 返り値 ≦ 10
正常処理の制約
返り値は-1
エラー処理の制約
プログラムの仕様
F*⾔語での開発の流れ
F*プログラム
1.制約記述
2.アルゴリズム記述
3.⽭盾検証
4.C⾃動⽣成
F*により⽣成された
制約条件と⽭盾がない
add関数
F*による
検証済みMQTTパケットパース関数
8
第⼀引数︓MQTTのパケットデータ
第⼆引数︓パケットサイズ
戻り値︓パース結果が格納された構造体
※PUBLISH, CONNECT, DISCONNECT
の3つのMQTTパケットにのみ対応
30 0F 00 05 74 6F 70 69 63 00 6D 65 73 73 61 67 65
PUBLISH control packet (rlength: 15)
Header: (type PUBLISH, retain 0, QoS 0, dup 0)
PUBLISH packet (id 0x0000): Str (5 bytes): topic
Properties with length VBInt: 0
Payload (length: 7)
関数のプロトタイプ宣⾔(C⾔語)
MQTTパケットデータ
関数の活⽤例
上のパケットをパースした結果
右のようなパース結果出⼒可能
parse result mqtt_packet_parse
(
uint8_t *packet_data,
uint32_t packet_size
);
半構造化インタビュー
• ⽬的
•形式⼿法を活⽤しているF*⾔語を⽤いた開発の利点
や・困難さを明らかにする
• インタビュー協⼒者
•F*⾔語の基礎知識を持つ3名
• インタビュー内容
•F*⾔語における開発について30分のインタビュー
9
※半構造化インタビュー:目的に合わせた大まかな質問を用意しておき、
ユーザーの回答に応じて質問内容を重ねたり、深掘りするインタビューの形式
分析結果のカテゴリ分け
インタビュー内容を分析した結果
1. F*⾔語の⽂法難易度
2. F*⾔語の保守性
3. 関数の制約条件の妥当性検証
という3つのカテゴリに関する分析結果を得た
10
1. F*⾔語の⽂法難易度
「F*⾔語はプログラミング⾔語の中で難しい部
類だ」という共通の回答を得た
• 分析結果
•「関数型⾔語」、「関数の制約条件」が F*⾔語の⽂
法を難しく感じさせる要因だと判明した
11
2. F*⾔語の保守性
「関数の制約条件」、「プログラム修正」の
観点でインタビュー内容を分析
• 分析結果
•F*⾔語で開発を⾏ったプログラムは、C⾔語など⼀般
的なプログラミング⾔語と⽐較して保守性が⾼いと評
価された
12
3. 関数の制約条件の妥当性検証
「関数の制約条件の妥当性検証」の観点でインタ
ビュー内容を分析
• 分析結果
•F*プログラムと、実際に求められているプログラムの
仕様との乖離が無いことの保証はできないと評価された
→ コードレビューや、テストには限界がある
13
計測環境
• 実機OS︓Ubuntu 20.04.1 LTS
• アーキテクチャ︓x86 64
• CPU︓Intel(R) Core(TM) i7 CPU 970 @ 3.20GHz
• メモリ容量︓8.00GB
• Docker Image OS︓Ubuntu 18.04.4 LTS
• アーキテクチャ︓x86 64
14
ソースコード⾏数の内訳(CLOC)
F*プログラムのソースコード
空⾏数: 304
コメント⾏数: 491
コード⾏数: 4454
⾃動⽣成されたCプログラムのソースコード
空⾏数: 1024
コメント⾏数: 120
コード⾏数: 5743
15
プログラム検証時間の計測
16
• F*⾔語によるプログラム検証時間の計測
•同⼀のMQTTパーサプログラムの検証を10回⾏った
平均プログラム検証時間は
約2分22秒となった
MQTTパーサのFuzzingテスト結果
• 7⽇間American Fuzzy
Lop(AFL)というFuzzing
ツールでテストを⾏った
•パーサに対し、Fuzzパケット
を無数に渡す
• クラッシュ/ハングともに
⼀切発⽣せず
17
AFLによるFuzzing結果
既存のパケットパーサとの⽐較対象
• MQTT5対応のパケットパーサ機能を持つ
「emqtt5」と呼ばれるオープンソースライブ
ラリ
• 「emqtt5」の機能は、パース結果を整形した
⽂字列を戻り値として返す
18
PUBLISH control packet (rlength: 15)
Header: (type PUBLISH, retain 0, QoS 0, dup 0)
PUBLISH packet (id 0x0000): Str (5 bytes): topic
Properties with length VBInt: 0
Payload (length: 7)
パース結果を整形した⽂字列の例
既存のパケットパーサとの⽐較⽅法
本研究で開発したパーサ関数は、
パース結果を格納した構造体を戻り値として返す
→ 本研究で開発したパーサをもとにemqtt5
の再現実装(構造体から整形された⽂字列を作成)
→ 事前に⽤意した複数のパケットをemqtt5と
再現実装それぞれで10万回パースし平均パース
時間を計測
19
既存のパケットパーサとの⽐較結果
平均パース時間(コンパイラ最適化レベル2)
•emqtt5(パース結果⽂字列を返すまでの時間) 5.119 μs
•再現実装(パース結果⽂字列を返すまでの時間) 24.375 μs
•参考︓再現実装(パース結果構造体を返すまで時間) 1.834 μs
→ F*⾔語を⽤いて作成したC ⾔語プログラムと、
C⾔語で作成したプログラムの性能に⼤きな差はない
20
※計測の開始はパケットパース開始時刻
開発過程で明らかになった課題
1. F*⾔語による開発では正しく関数が満たす
べき制約条件の記述を⾏うことが難しい
→ 対策としてテストも⾏う
2. F*⾔語を⽤いたプログラム開発コストが⼤
きい
→ 1年間の本研究で対応できたMQTTパ
ケットは15種中3つのみ
→ インタビュー結果からもF*⾔語は難し
いとの評価が
21
おわりに
形式⼿法導⼊の阻害要因を明らかに
•F*⾔語によるMQTTパケットパーサ開発・性能/安全性評価
→ F*⾔語を⽤いた形式⼿法の、普及阻害要因を明らかに
今後は形式⼿法普及の阻害要因を取り除く⼿法につい
て研究を進める
22
原稿
https://ipsj.ixsq.nii.ac.jp/ej/index.php?active_action=repository
_view_main_item_detail&block_id=8&item_id=209545

More Related Content

Similar to F*言語によるMQTTパケットパーサの開発と安全性評価

ブロックチェーンアプリケーションプラットフォームの現在と未来
ブロックチェーンアプリケーションプラットフォームの現在と未来ブロックチェーンアプリケーションプラットフォームの現在と未来
ブロックチェーンアプリケーションプラットフォームの現在と未来dmm-smacon
 
Uber 社の自動運転車の安全保証のための Safety Case Framework と ANSI/UL 4600 との適合性ギャップ分析: 安全コンセ...
Uber 社の自動運転車の安全保証のための Safety Case Framework と ANSI/UL 4600 との適合性ギャップ分析: 安全コンセ...Uber 社の自動運転車の安全保証のための Safety Case Framework と ANSI/UL 4600 との適合性ギャップ分析: 安全コンセ...
Uber 社の自動運転車の安全保証のための Safety Case Framework と ANSI/UL 4600 との適合性ギャップ分析: 安全コンセ...Kenji Taguchi
 
クラウドファースト時代における重要インフラを守るセキュリティ・ゲートウェイ
クラウドファースト時代における重要インフラを守るセキュリティ・ゲートウェイクラウドファースト時代における重要インフラを守るセキュリティ・ゲートウェイ
クラウドファースト時代における重要インフラを守るセキュリティ・ゲートウェイEiji Sasahara, Ph.D., MBA 笹原英司
 
Fighting advanced malware using machine learning (Japanese)
Fighting advanced malware using machine learning (Japanese)Fighting advanced malware using machine learning (Japanese)
Fighting advanced malware using machine learning (Japanese)FFRI, Inc.
 
OpenID BizDay #9 - 松尾真一郎氏 プレゼン資料
OpenID BizDay #9 - 松尾真一郎氏 プレゼン資料OpenID BizDay #9 - 松尾真一郎氏 プレゼン資料
OpenID BizDay #9 - 松尾真一郎氏 プレゼン資料OpenID Foundation Japan
 
パケットキャプチャの勘どころ Ssmjp 201501
パケットキャプチャの勘どころ Ssmjp 201501パケットキャプチャの勘どころ Ssmjp 201501
パケットキャプチャの勘どころ Ssmjp 201501稔 小林
 
4 Enemies of DevSecOps 2016
4 Enemies of DevSecOps 20164 Enemies of DevSecOps 2016
4 Enemies of DevSecOps 2016Riotaro OKADA
 
初心者向けCTFのWeb分野の強化法
初心者向けCTFのWeb分野の強化法初心者向けCTFのWeb分野の強化法
初心者向けCTFのWeb分野の強化法kazkiti
 
サイバーセキュリティ錬金術
サイバーセキュリティ錬金術サイバーセキュリティ錬金術
サイバーセキュリティ錬金術Isao Takaesu
 
SQuaRE に基づくソフトウェア品質評価枠組みと品質実態調査
SQuaRE に基づくソフトウェア品質評価枠組みと品質実態調査SQuaRE に基づくソフトウェア品質評価枠組みと品質実態調査
SQuaRE に基づくソフトウェア品質評価枠組みと品質実態調査Hironori Washizaki
 
SQuaREに基づくソフトウェア品質評価枠組みと品質実態調査
SQuaREに基づくソフトウェア品質評価枠組みと品質実態調査SQuaREに基づくソフトウェア品質評価枠組みと品質実態調査
SQuaREに基づくソフトウェア品質評価枠組みと品質実態調査Hironori Washizaki
 
【第17回セキュリティ共有勉強会】WAF導入で見えた脆弱性管理のあれこれ
【第17回セキュリティ共有勉強会】WAF導入で見えた脆弱性管理のあれこれ【第17回セキュリティ共有勉強会】WAF導入で見えた脆弱性管理のあれこれ
【第17回セキュリティ共有勉強会】WAF導入で見えた脆弱性管理のあれこれHibino Hisashi
 
[CB16] IoTとしての自動車とセキュリティ: リモートサービスのセキュリティ評価とその対策の検討 - by 和栗直英
[CB16] IoTとしての自動車とセキュリティ: リモートサービスのセキュリティ評価とその対策の検討 - by 和栗直英[CB16] IoTとしての自動車とセキュリティ: リモートサービスのセキュリティ評価とその対策の検討 - by 和栗直英
[CB16] IoTとしての自動車とセキュリティ: リモートサービスのセキュリティ評価とその対策の検討 - by 和栗直英CODE BLUE
 
ソフトウェアサプライチェーンセキュリティの最新技術動向.pdf
ソフトウェアサプライチェーンセキュリティの最新技術動向.pdfソフトウェアサプライチェーンセキュリティの最新技術動向.pdf
ソフトウェアサプライチェーンセキュリティの最新技術動向.pdfFumieNakayama
 
Jenkinsを使った継続的セキュリティテスト
Jenkinsを使った継続的セキュリティテストJenkinsを使った継続的セキュリティテスト
Jenkinsを使った継続的セキュリティテストichikaway
 
機械学習応用システムセキュリティガイドライン―背景と公開について
機械学習応用システムセキュリティガイドライン―背景と公開について機械学習応用システムセキュリティガイドライン―背景と公開について
機械学習応用システムセキュリティガイドライン―背景と公開についてNobukazu Yoshioka
 
ブロックチェーンを用いたソフトウェア情報の組織間共有
ブロックチェーンを用いたソフトウェア情報の組織間共有ブロックチェーンを用いたソフトウェア情報の組織間共有
ブロックチェーンを用いたソフトウェア情報の組織間共有奈良先端大 情報科学研究科
 

Similar to F*言語によるMQTTパケットパーサの開発と安全性評価 (20)

ブロックチェーンアプリケーションプラットフォームの現在と未来
ブロックチェーンアプリケーションプラットフォームの現在と未来ブロックチェーンアプリケーションプラットフォームの現在と未来
ブロックチェーンアプリケーションプラットフォームの現在と未来
 
Uber 社の自動運転車の安全保証のための Safety Case Framework と ANSI/UL 4600 との適合性ギャップ分析: 安全コンセ...
Uber 社の自動運転車の安全保証のための Safety Case Framework と ANSI/UL 4600 との適合性ギャップ分析: 安全コンセ...Uber 社の自動運転車の安全保証のための Safety Case Framework と ANSI/UL 4600 との適合性ギャップ分析: 安全コンセ...
Uber 社の自動運転車の安全保証のための Safety Case Framework と ANSI/UL 4600 との適合性ギャップ分析: 安全コンセ...
 
クラウドファースト時代における重要インフラを守るセキュリティ・ゲートウェイ
クラウドファースト時代における重要インフラを守るセキュリティ・ゲートウェイクラウドファースト時代における重要インフラを守るセキュリティ・ゲートウェイ
クラウドファースト時代における重要インフラを守るセキュリティ・ゲートウェイ
 
Fighting advanced malware using machine learning (Japanese)
Fighting advanced malware using machine learning (Japanese)Fighting advanced malware using machine learning (Japanese)
Fighting advanced malware using machine learning (Japanese)
 
FIT-HAC CTF
FIT-HAC CTFFIT-HAC CTF
FIT-HAC CTF
 
OpenID BizDay #9 - 松尾真一郎氏 プレゼン資料
OpenID BizDay #9 - 松尾真一郎氏 プレゼン資料OpenID BizDay #9 - 松尾真一郎氏 プレゼン資料
OpenID BizDay #9 - 松尾真一郎氏 プレゼン資料
 
パケットキャプチャの勘どころ Ssmjp 201501
パケットキャプチャの勘どころ Ssmjp 201501パケットキャプチャの勘どころ Ssmjp 201501
パケットキャプチャの勘どころ Ssmjp 201501
 
Saisyu
SaisyuSaisyu
Saisyu
 
医療機器人財育成教育セミナー イン 九州
医療機器人財育成教育セミナー イン 九州医療機器人財育成教育セミナー イン 九州
医療機器人財育成教育セミナー イン 九州
 
4 Enemies of DevSecOps 2016
4 Enemies of DevSecOps 20164 Enemies of DevSecOps 2016
4 Enemies of DevSecOps 2016
 
初心者向けCTFのWeb分野の強化法
初心者向けCTFのWeb分野の強化法初心者向けCTFのWeb分野の強化法
初心者向けCTFのWeb分野の強化法
 
サイバーセキュリティ錬金術
サイバーセキュリティ錬金術サイバーセキュリティ錬金術
サイバーセキュリティ錬金術
 
SQuaRE に基づくソフトウェア品質評価枠組みと品質実態調査
SQuaRE に基づくソフトウェア品質評価枠組みと品質実態調査SQuaRE に基づくソフトウェア品質評価枠組みと品質実態調査
SQuaRE に基づくソフトウェア品質評価枠組みと品質実態調査
 
SQuaREに基づくソフトウェア品質評価枠組みと品質実態調査
SQuaREに基づくソフトウェア品質評価枠組みと品質実態調査SQuaREに基づくソフトウェア品質評価枠組みと品質実態調査
SQuaREに基づくソフトウェア品質評価枠組みと品質実態調査
 
【第17回セキュリティ共有勉強会】WAF導入で見えた脆弱性管理のあれこれ
【第17回セキュリティ共有勉強会】WAF導入で見えた脆弱性管理のあれこれ【第17回セキュリティ共有勉強会】WAF導入で見えた脆弱性管理のあれこれ
【第17回セキュリティ共有勉強会】WAF導入で見えた脆弱性管理のあれこれ
 
[CB16] IoTとしての自動車とセキュリティ: リモートサービスのセキュリティ評価とその対策の検討 - by 和栗直英
[CB16] IoTとしての自動車とセキュリティ: リモートサービスのセキュリティ評価とその対策の検討 - by 和栗直英[CB16] IoTとしての自動車とセキュリティ: リモートサービスのセキュリティ評価とその対策の検討 - by 和栗直英
[CB16] IoTとしての自動車とセキュリティ: リモートサービスのセキュリティ評価とその対策の検討 - by 和栗直英
 
ソフトウェアサプライチェーンセキュリティの最新技術動向.pdf
ソフトウェアサプライチェーンセキュリティの最新技術動向.pdfソフトウェアサプライチェーンセキュリティの最新技術動向.pdf
ソフトウェアサプライチェーンセキュリティの最新技術動向.pdf
 
Jenkinsを使った継続的セキュリティテスト
Jenkinsを使った継続的セキュリティテストJenkinsを使った継続的セキュリティテスト
Jenkinsを使った継続的セキュリティテスト
 
機械学習応用システムセキュリティガイドライン―背景と公開について
機械学習応用システムセキュリティガイドライン―背景と公開について機械学習応用システムセキュリティガイドライン―背景と公開について
機械学習応用システムセキュリティガイドライン―背景と公開について
 
ブロックチェーンを用いたソフトウェア情報の組織間共有
ブロックチェーンを用いたソフトウェア情報の組織間共有ブロックチェーンを用いたソフトウェア情報の組織間共有
ブロックチェーンを用いたソフトウェア情報の組織間共有
 

F*言語によるMQTTパケットパーサの開発と安全性評価