FFRIエンジニアブログ

株式会社FFRIセキュリティのエンジニアが執筆する技術者向けブログです

プログラミング・開発-コンパイラ

AddressSanitizer の内部実装を読む 2-1 〜 LLVM 関数計装編

はじめに 1 概要・論文編 2-1 LLVM 関数計装編 (本記事) 基礎技術研究部の末吉です。 前回の記事では ASan の概要と使い方、論文について解説しました。 今回からは執筆時点最新版の 2024 年 5 月にリリースされた LLVM 18.1.5 のコードから、どのように ASa…

AddressSanitizer の内部実装を読む 1 〜 概要・論文編

はじめに 基礎技術研究部の末吉です。 バグを検知するツールにサニタイザー(Sanitizer)というものがあります。 英語で Sanitizer は「消毒剤」という意味で、Hand Sanitizer なら手指消毒剤を意味します。 ここで紹介するサニタイザーは、菌の代わりにバグを…

LLVM バックエンド書き換えによる独自命令の挿入

はじめに FFRIリサーチエンジニアの中川です。 以前投稿した記事「Shadow Stack を使った Stack Buffer Overflow 検知機構の実装」で 今回は LLVM バックエンドの書き換えにより、sspush sspop が関数のエピローグとプロローグに自動的に挿入されるようにし…