FFRIエンジニアブログ

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

プログラミング・開発

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

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

Rust で Monad, Monad Transformer そして Free Monad をエミュレートする

こんにちは。基礎技術研究部の茂木です。今回は Rust の話をします。 11 月 3 日にリリースされた Rust v1.65.0 では Generic Associated Types(以下、GATs)が入りました。 これにより、Higher Kinded Types のエミュレートが比較的しやすくなります。 そう…

構造化例外処理の仕組みの解説

はじめに 前回の記事では、デバッガがいかにコールスタックを構築しているかについて解説しました。 今回は、前回の記事では詳しく取り上げることのできなかった、構造化例外処理に関して解説します。 Windows では、メモリ違反などの例外発生時にユーザーが…

64bitのPEにおけるコールスタック構築方法の解説

はじめに この記事を読まれる皆さんは、普段からデバッガーを使っているのではないでしょうか。 デバッガーを用いて関数の呼び出し履歴であるコールスタックを参照することは、ダンプファイルの解析やリバースエンジニアリングに役立ちます。 では、そんなデ…

「サイバーセキュリティプログラミング 第2版」翻訳記

はじめに FFRIセキュリティエンジニアの村上です。昨年から今年にかけて、案件の一環として、オライリー・ジャパン発行の「サイバーセキュリティプログラミング 第2版」(原書タイトルは "Black Hat Python 2nd Edition") の翻訳をする機会がありました。…

CDK で Windows EC2 インスタンスを作成する際に AMI を指定する方法

はじめに こんにちは、基礎技術研究室でリサーチエンジニアをやっている茂木です。 これまでは Terraform を使うことが多かったのですが、最近は Cloud Development Kit (以下 CDK) をよく触っています。 CDK は特に Lambda の取り回しがよく気に入っていま…

AtCoderで水色に到達するまでの感想

はじめに FFRIセキュリティ セキュリティエンジニアの大野です。本記事ではセキュリティからは離れて、AtCoder に関する感想を書きます。 AtCoder に参加し始めてから約 2 年半経過した 2021 年 6 月に目標としていた水色に到達出来たので、それまでの感…

Poetry と Docker を併用する試み

はじめに 基礎技術研究室リサーチエンジニアの茂木です。今回は、あまりこれまでの記事にはなかった、開発環境の話をします。 Poetry と Docker をいい感じに併用する方法を探った話です。 Poetry Poetry は、Python のパッケージ・仮想環境の管理ができます…

LIEF の紹介

はじめに 基礎技術研究室リサーチエンジニアの中川です。ブログシステム移行後記念すべき(?)第 1 回を担当します。 今回は FFRI Dataset 作成にあたっても利用している LIEF というライブラリについて紹介します。 LIEF は PE・ELF などの実行ファイルをパー…

npm パッケージの選定について:開発の活発さを可視化して比較する

はじめに FFRIリサーチエンジニアの茂木です。 現代のソフトウェア開発では、OSS を利用することが多くなっています。そうした OSS ライブラリを利用・管理するために、パッケージマネージャーが存在します。その中で、Node.js のパッケージマネージャーであ…

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

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