
【CODE BLUE 2024】サンジュン・パク+ユンジン・パク+ジョンソン・キム / Sangjun Park+Yunjin Park+Jongseong Kim - 講演関連資料 / Presentation resources -
●講演概要 / Abstract
[ja] 1-Click-Fuzz:シンボリック実行を用いたWindowsカーネルドライバーの体系的ファジング
Windows OSは、個人ユーザーから産業用アプリケーションまで幅広いデスクトップ環境で使用されており、信頼性の高いドライバー動作に依存している。本講演では、Windowsドライバーの脆弱性を体系的に発見するために、シンボリック実行とカーネルファジングを活用した高度なツール「MS-Fuzzer」を紹介する。
Windowsドライバーは、一般的にInBufferLengthやOutBufferLengthのような特定の制約を持つIOCTL(Input Output Control)コードを通してユーザーとやりとりする。これらの多くのIOCTLコードを分析することは、その数と複雑さゆえに非常に細心の注意を要する作業である。われわれは、Angrベースのシンボリック実行を使用して、各IOCTLコードの制約を自動的に解析し、この自動化により手作業の労力を大幅に削減し、ファジング中のコードカバレッジを向上させている。
さらに、組み込みドライバーにはカスタムファジングハーネスが必要である。効率的なハーネスの作成方法についても議論し、これらが脆弱性発見に果たす役割を紹介する。1ヵ月の分析期間中に、例えば「usbprint」などの複数のドライバーで脆弱性が発見された。これらの脆弱性を発見した手法を紹介するケーススタディを発表する。
100日間にわたる取り組みの結果、100件の脆弱性を発見し、Microsoft、AMD、Siemens、MSI、三菱、Sophosなどの主要ベンダーに関連する21件のCVEおよび10件のKVE(韓国のCVE)をカタログ化した。セキュリティ研究コミュニティにとって重要なケースのいくつかも紹介する。
また、継続的なセキュリティ研究の支援として、使用したツールや主要な脆弱性のPoC(概念実証)例(NDAに準拠したもの)、ファジングハーネス用のサンプルコードをすべてオープンソースとしてhttps://github.com/0dayResearchLab/msFuzz で公開する予定である。
このセッションは、Windowsカーネルドライバーの動作原理を解明し、Windowsドライバーにおける脆弱性を発見するための包括的なガイドをセキュリティ研究コミュニティに提供することを目指している。
[en] 1-Click-Fuzz: Systematically Fuzzing the Windows Kernel Driver with Symbolic Execution
As the dominant platform for desktops ranging from individual users to industrial applications, Windows OS relies heavily on robust driver operations. Our presentation introduces MS-Fuzzer, a sophisticated tool that leverages Symbolic Execution and Kernel Fuzzing to systematically uncover vulnerabilities in Windows Drivers.
Windows Drivers commonly interact with the user through IOCTL (Input Output Control) codes, each with specific constraints like InBufferLength and OutBufferLength. Analyzing multiple IOCTL codes is a meticulous task due to their sheer number and complexity. We utilize Angr-based Symbolic Execution to automate the analysis of each IOCTL code’s constraints. This automation significantly reduces manual effort and enhances code coverage during fuzzing processes.
Additionally, built-in drivers require custom fuzzing harnesses. We will discuss efficient strategies to produce these harnesses, highlighting their role in identifying vulnerabilities. During our one-month analysis, several drivers, such as ‘usbprint’, were found to contain vulnerabilities. We will present a case study detailing the methods used to discover these vulnerabilities.
Over a span of 100 days, our efforts led to the discovery of 100 vulnerabilities. We cataloged 21 CVEs and 10 KVEs (Korean CVEs) involving key vendors like Microsoft, AMD, Siemens, MSI, Mitsubish and antivirus companies including Sophos. Selected cases of significant interest to the security research community will be showcased.
In support of ongoing security research, we commit to releasing all utilized tools, proof-of-concept examples for major vulnerabilities (subject to NDA terms), and sample code for fuzzing harnesses as open-source resources available at https://github.com/0dayResearchLab/msFuzz.
This session aims to illuminate the operational principles of Windows Kernel Drivers and provide a comprehensive guide for the security research community in discovering vulnerabilities in Windows drivers.
●略歴 / Bio
[ja] サンジュン・パク
KAIST(韓国科学技術院)修士課程
サンジュン・パクは、KAIST(韓国科学技術院)でサイバーセキュリティとソフトウェア工学を専攻する修士課程の学生である。彼の研究は、プログラムを分析し、自動化された手法を用いてそのセキュリティを評価することに焦点を当てている。彼は2024年にスンシル大学でコンピューターサイエンスと工学の学士号を取得している。現在、彼はKAISTのソフトウェアセキュリティ研究室のメンバーである。
[ja] ユンジン・パク
ユンジン・パクは、韓国のソウル女子大学で情報セキュリティを専攻する学士課程の学生である。彼女は、さまざまな企業のペネトレーションテストプロジェクトや研究開発の取り組みに技術ライターとして参加してきた。また、KITRI(韓国情報技術研究院)および韓国政府が主催する「Best of the Best」次世代セキュリティリーダー育成プログラムでトップ10に選ばれたことがある。さらに、BoBの「Windowsドライバー0-dayリサーチ」プロジェクトではプロジェクトマネージャーおよびコンサルタントとして活動している。最近では、企業のセキュリティ、特にレッドチームに対して新たな情熱を抱いている。
[ja] ジョンソン・キム
亜洲大学校(Ajou University)、ENKI WhiteHat セキュリティ・リサーチャー
ジョンソン・キムは現在、亜洲大学校の学生であり、ENKI WhiteHatでセキュリティ・リサーチャーとして働いている。彼はWindowsの攻撃的セキュリティに強い関心を持っており、現在はWindowsカーネルおよびHyper-Vに関する研究に取り組んでいる。
[en] Sangjun Park
Master Student, KAIST
Sangjun Park is a Master’s student at KAIST, specializing in cybersecurity and software engineering. His research focuses on analyzing programs and assessing their security through automated methods. He received his B.S. in Computer Science and Engineering from Soongsil University in 2024. He is currently a member of the KAIST Software Security Lab.
[en] Yunjin Park
Yunjin Park is a B.S. student majoring in Information Security at Seoul Women's University in South Korea. She has participated as a Technical Writer in a variety of corporate penetration testing projects and R&D initiatives.
and she was also recognized as a Best 10 participant in the “Best of the Best” next-generation security leader development program hosted by the KITRI and Korean government. and has served as both Project Manager and Consultant for the 'Windows Driver 0-day Research' project in BoB.
Recently, she has developed a renewed passion for corporate security, particularly in Red Teaming.
[en] Jongseong Kim
Ajou University, ENKI WhiteHat security researcher
Jongseong Kim is currently a student at Ajou University and works as a security researcher at ENKI WhiteHat.
He has a deep interest in Windows Offensive Security, with his current focus on researching Windows Kernel and Hyper-V.
●事前インタビュー / Pre-Event Interview
[ja] インタビュー
Q1 あなたがこのトピックに取り組むようになったきっかけは何ですか?
私がWindowsカーネルドライバーに興味を持ち始めたのは、YouTubeでさまざまなWindowsカーネルに関する研究発表を見つけたことがきっかけです。最初に私の好奇心に火をつけたのは、Windowsカーネルがクローズドソースシステムであり、そのソースコードが公開されていないという点でした。それゆえに、取り組みがいがあり、解決することが楽しく、魅力的な問題だと感じました。その結果、Windowsカーネルドライバーのセキュリティを自動化された技術を用いて評価する方法に取り組みはじめました。
Q2 研究の過程でどのような点で苦労しましたか?
われわれが直面した大きな課題の1つは、Windowsカーネルドライバーに関する前提の知識がほとんどなかったことと、ベテランのWindowsカーネル研究者との交流があまりなかったことです。そのため、われわれのファザーの着想の元となったkAFL/nyx-fuzzerを独学でかなりの時間をかけて学ぶ必要がありました。また、ファザーの設計には特に力を入れ、自動化とユーザーフレンドリーさを重視しました。われわれは、このファザーをセキュリティ研究者だけでなく、開発者にも役立つオープンソースツールとして公開し、誰でもアクセスしやすく、使いやすいものにすることを目指しました。
Q3 CODEBLUEの参加者、参加を検討している人に向けてメッセージをお願いします。
この講演は、Windowsカーネルドライバーの脆弱性を見つけたい方や、ファジングに関する新しいアイデアを得たい方を対象としています。Windowsカーネルドライバーの基本を解説し、脆弱性を見つける方法を紹介します。特に、アナリストや開発者が効率的に分析できるようサポートすることに焦点を当てています。また、他のプラットフォームやシステムを対象としたファジングに取り組んでいる研究者にも役立つ内容です。
[en] Interview
Q1 What led you to making this presentation?
My interest in Windows kernel drivers began when I stumbled upon various research presentations on Windows kernel on YouTube. What initially sparked my curiosity was the fact that the Windows kernel is a closed-source system, meaning its source code is not publicly available. This made it a challenge I wanted to tackle, and I saw it as a fun and engaging problem to solve. As a result, I started working on methods to assess the security of Windows kernel drivers using automated techniques.
Q2 What were some challenges you faced during this research?
One major challenge I faced was my lack of prior experience with Windows kernel drivers and the limited communication I had with seasoned Windows kernel researchers. This meant I had to invest a significant amount of time independently studying kAFL/nyx-fuzzer, which served as the inspiration for our fuzzer. Additionally, I focused heavily on the design of the fuzzer, emphasizing automation and user-friendliness. We aimed to release the fuzzer as an open-source tool to benefit not only security researchers but also developers, making it accessible and easy to use.
Q3 What message would you like to convey to those considering attending this talk?
This talk is intended for anyone who wants to find vulnerabilities in the Windows Kernel Driver and is interested in gaining new ideas about Fuzzing. I will cover the basics of Windows kernel drivers and show how to find vulnerabilities, with a focus on helping analysts and developers efficiently analyze them. It will also be beneficial for researchers working on Fuzzing targeting other platforms or systems.
●講演動画 / Presentation video
●講演スライド / Presentation slide

(Click the image to open the PDF via an external link)
●写真 / Photo

(In the bottom photo, from left to right: Johnson Kim, Sanjun Park, and Yunjin Park.)