
Karonteは、組み込みファームウェアにおけるマルチバイナリ脆弱性を検出する静的解析ツールです。
masterブランチは、Python3に移植された最新バージョンのKaronteを提供します。論文で紹介した元の実装と実験については、IEEE-SP-20ブランチをチェックアウトし、dockerコンテナをご確認ください。
本手法と研究成果を以下の研究論文で発表しています:
KARONTE: Detecting Insecure Multi-binary Interactions in Embedded Firmware
[PDF]
Nilo Redini, Aravind Machiry, Ruoyu Wang, Chad Spensky, Andrea Continella, Yan Shoshitaishvili, Christopher Kruegel, Giovanni Vigna.
IEEE Symposium on Security & Privacy (S&P) 2020年5月の論文集に掲載
学術論文でKaronteを使用される場合は、以下のBibtexエントリを引用いただけると幸いです。
@inproceedings{redini_karonte_20,
author = {Nilo Redini and Aravind Machiry and Ruoyu Wang and Chad Spensky and Andrea Continella and Yan Shoshitaishvili and Christopher Kruegel and Giovanni Vigna},
booktitle = {In Proceedings of the IEEE Symposium on Security & Privacy (S&P)},
month = {May},
title = {KARONTE: Detecting Insecure Multi-binary Interactions in Embedded Firmware},
year = {2020}
}
主なディレクトリは以下の4つです:
Karonteを実行するには、ルートディレクトリから以下のコマンドを実行します:
概要 python tool/karonte.py JSON_CONFIG_FILE [LOG_NAME]
説明 JSON_CONFIG_FILEで指定されたファームウェアサンプルに対してKaronteを実行し、結果をLOG_NAMEに保存します。
例 python tool/karonte.py config/NETGEAR/r_7800.json R7800 NETGEARファームウェア上でKaronteを実行します。
デフォルトでは、結果は**/tmp/に接尾辞Karonte.txt**として保存されます。
生成されたアラートを確認するには、以下を実行します:
python tool/pretty_print.py LOG_NAME
Karonteの評価に使用したデータセットは、こちらのリンクから入手できます。