FFRIエンジニアブログ

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

プログラミング・開発

FFRI AMC へのパスキー実装

はじめに こんにちは、製品開発部の柳です。 私は、当社の主要セキュリティプロダクトである FFRI yarai を集中管理する FFRI AMC(以下、AMC)という Web アプリケーションの開発・保守業務を行っています。 現在 AMC には、ワンタイムパスワードを用いた多要…

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

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

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 が関数のエピローグとプロローグに自動的に挿入されるようにし…