SlideShare a Scribd company logo
CODE BLUE 2016.10.20
@st4g3r
Hiroki MATSUKUMA
(@st4g3r)
新米ペンテスター
 サイバーディフェンス研究所所属
CTF Player
 TokyoWesterns
興味のあること
 Exploitation
 GLIBC malloc (現時点では)
$whoami
tl;dr
Heap Exploitation(x64 Linux/Glibc malloc)
"House of Einherjar" とは?
 Glibc mallocにおける新しいheap exploitation手法で, malloc()
の戻り値をおおよそ任意なアドレスに強制させるものである.
 通常, ユーザはmalloc()の戻り値のアドレスに対して読み書きを行える.
 フラグメント防止のためにあるchunk同士の結合処理を利用する.
 Well-sizedなchunk上でのOff-by-one Overflowが直後のchunkの
prev_sizeとPREV_INUSEのコントロールをもたらす.
Proof of Concept
 http://ux.nu/6Rv6h
概要
Glibc malloc
 Chunk
 Bin
 Consolidating Chunks
House of Einherjar
 Flaw / Flow
 Demo
 Evaluation
 Countermeasures

Recommended for you

Deflate
DeflateDeflate
Deflate

ZIPなどに使われるDeflate圧縮アルゴリズムについての説明

zipdeflatecompression
PWNの超入門 大和セキュリティ神戸 2018-03-25
PWNの超入門 大和セキュリティ神戸 2018-03-25PWNの超入門 大和セキュリティ神戸 2018-03-25
PWNの超入門 大和セキュリティ神戸 2018-03-25

PWNの超入門 大和セキュリティ神戸 2018-03-25 microcorruption ctf

バイナリpwnエクスプロイト
NEDIA_SNIA_CXL_講演資料.pdf
NEDIA_SNIA_CXL_講演資料.pdfNEDIA_SNIA_CXL_講演資料.pdf
NEDIA_SNIA_CXL_講演資料.pdf

10/19 SNIA, 10/24 NEDIAで講演したCXLについての解説資料です。 CXL2.0までの仕様、CXL3.0の仕様、Linuxの開発状況やコミュニティの議論の内容などを説明しています。

cxlpciepmem
"struct malloc_chunk"
 メモリブロックはfree()される際にfree listへとつながれる.
 このとき, メモリブロックは"struct malloc_chunk"として扱われる.
 ChunkのサイズはSIZE_SZ*2にアライメントされる.
(prev_size)
size
fd
bk
(not used)
(prev_size)
size
data
+
pads
SIZE_SZ
=8byte
User's
space
(a) in-used (b) free
図1 struct malloc_chunk
Shared with
previous chunk
Glibc malloc Chunk
型 名称 説明
INTERNAL_SIZE_T prev_size 自身の直前にあるchunkのサイズ (shared)
INTERNAL_SIZE_T size 自身のサイズと現在の状態
struct malloc_chunk *fd (free list上で)前方につながっているchunkへのポインタ
struct malloc_chunk *bk (free list上で)後方につながっているchunkへのポインタ
表1: struct malloc_chunk
Glibc malloc Chunk
"struct malloc_chunk"
 メモリブロックはfreeされる際にfree listへとつながれる.
 このとき, メモリブロックは"struct malloc_chunk"として扱われる.
 ChunkのサイズはSIZE_SZ*2にアライメントされる.
(prev_size)
size
fd
bk
(not used)
(prev_size)
size
data
+
pads
SIZE_SZ
=8byte
PMA
User's
space
(a) in-used (b) free
図1 struct malloc_chunk
Low 3 bits
mean chunk
status
Shared with
previous chunk
Glibc malloc Chunk
"struct malloc_chunk"
 メモリブロックはfreeされる際にfree listへとつながれる.
 このとき, メモリブロックは"struct malloc_chunk"として扱われる.
 ChunkのサイズはSIZE_SZ*2にアライメントされる.
(prev_size)
size
fd
bk
(not used)
(prev_size)
size
data
+
pads
SIZE_SZ
=8byte
PMA
User's
space
(a) in-used (b) free
図1 struct malloc_chunk
Low 3 bits
mean chunk
status
 [P]REV_INUSE
 IS_[M]MAPPED
 NON_MAIN_[A]RENA
Shared with
previous chunk
Glibc malloc Chunk

Recommended for you

TEE (Trusted Execution Environment)は第二の仮想化技術になるか?
TEE (Trusted Execution Environment)は第二の仮想化技術になるか?TEE (Trusted Execution Environment)は第二の仮想化技術になるか?
TEE (Trusted Execution Environment)は第二の仮想化技術になるか?

第32回コンピュータシステム・シンポジウム(ComSys2020)招待講演で使ったスライドです。TEE(Trusted Execution Environment)のハードウェア実装(Arm TrustZone, Intel SGX, RISC-V Keystone)の解説から、それぞれのTEE上のソフトウェア実装が多く異なる話、仮想化(Arm v8.4AでのTEE内仮想化、Intel TDX: Trusted Domain Extensions、AMD SEV: Secure Encrypted Virtualization)が導入されてくる話をしました。また、TEEに対するアンチテーゼの研究や関連規格などを紹介しました。

tee: trusted execution environmenthypervisorarm trustzone
プログラムを高速化する話
プログラムを高速化する話プログラムを高速化する話
プログラムを高速化する話

プログラムを高速化するためのテクニックをまとめました。

ビット演算キャッシュメモリsimd
HTTP/2, QUIC入門
HTTP/2, QUIC入門HTTP/2, QUIC入門
HTTP/2, QUIC入門

HTTP/2, QUIC入門 セキュリティキャンプ2015

Free chunkはfree list(bin)につながれる
 Small bins
 MAX_FAST_SIZE < size < MIN_LARGE_SIZE
 MAX_FAST_SIZE: 0xa0
 MIN_LARGE_SIZE: 0x400
 Unsorted bins
 free()されたばかりのchunkが一時的に格納されるリスト.
 サイズによる制限は無い.
Glibc malloc Bin
(prev_size)
size
fd
bk
(not used)
bins[n-1]
bins[n]
bins[n+1]
FD
BK
図2. small binのfree list
bins
c
struct malloc_chunk
PMA
Glibc malloc Bin
Glibc malloc Consolidating Chunks
メモリ確保と解放を繰り返しているとフラグメント化を起こし
てしまう
 そこで, free()されるchunkと隣接するfree chunkの結合を考える.
 自身の直前のchunkと隣接している.
 自身の直後のchunkと隣接している.
PREV_INUSE bit
 自身の直前に隣接するchunkが使用中か否かを判断するためのフラグ.
 これが結��の際の判断基準となる.
Glibc malloc Consolidating Chunks
Chunkの結合処理はどこにある?
 Glibcを読む.
 free(p)
 __libc_free(p)
 _int_free(av, p, have_lock) <- これ!

Recommended for you

RSA暗号運用でやってはいけない n のこと #ssmjp
RSA暗号運用でやってはいけない n のこと #ssmjpRSA暗号運用でやってはいけない n のこと #ssmjp
RSA暗号運用でやってはいけない n のこと #ssmjp

2017/02/21 の #ssmjp で発表した際のスライドです。

cryptorsa暗号rsa
Master Canary Forging: 新しいスタックカナリア回避手法の提案 by 小池 悠生 - CODE BLUE 2015
Master Canary Forging: 新しいスタックカナリア回避手法の提案 by 小池 悠生 - CODE BLUE 2015Master Canary Forging: 新しいスタックカナリア回避手法の提案 by 小池 悠生 - CODE BLUE 2015
Master Canary Forging: 新しいスタックカナリア回避手法の提案 by 小池 悠生 - CODE BLUE 2015

Stack Smashing Protection(SSP)はエクスプロイトに対する古くからある根本的な防御機構の1つであり、現在多くのコンパイラやオペレーティングシステムがこの機能を提供している。 SSPの提供する機能の1つであるスタックカナリアはスタックバッファの直後に配置された番兵の値が変化していないかを調べることでスタックバッファがオーバーフローしているかどうかを確認することができる。 今まで、スタックカナリアの回避方法としては、番兵の値の確認処理が行われる前にエクスプロイト処理を終わらせてしまうか、番兵の値を漏洩させてからオーバーフローさせるものが主流であったが、本講演では、これらの回避方法とは違うアプローチを取った回避手法を紹介する。

binary analysiscode blue
ゼロから始める自作 CPU 入門
ゼロから始める自作 CPU 入門ゼロから始める自作 CPU 入門
ゼロから始める自作 CPU 入門

セキュリティ・キャンプフォーラム2015 ローレイヤー勉強会で発表した内容です。

(a) 始点
図3 _int_free()
(b) 結合箇所
図3 _int_free()
(c) 終点
図3 _int_free()
Glibc malloc Consolidating Chunks
(prev_size)
size
prev
p
(a) prev_inuseのチェック
図4 結合
size = p->size
If not prev_inuse(p):
prevsize = p->prev_size
size += prevsize
p += -(long)(prevsize)
fd
bk
(not used)
(prev_size)
size 0
data
+
pads
p

Recommended for you

3種類のTEE比較(Intel SGX, ARM TrustZone, RISC-V Keystone)
3種類のTEE比較(Intel SGX, ARM TrustZone, RISC-V Keystone)3種類のTEE比較(Intel SGX, ARM TrustZone, RISC-V Keystone)
3種類のTEE比較(Intel SGX, ARM TrustZone, RISC-V Keystone)

Hardware securityforum2019

teerisc-v keystonearm trustzone
CXL_説明_公開用.pdf
CXL_説明_公開用.pdfCXL_説明_公開用.pdf
CXL_説明_公開用.pdf

次世代インターコネクトであるCXLについて自分なりに理解した範囲で解説しています。 CXLの前提知識としてPCIやACPIの知識も必要なので、それについて知らない人にもわかるように説明を加えています。

cxlpersistent memory
プロセスとコンテキストスイッチ
プロセスとコンテキストスイッチプロセスとコンテキストスイッチ
プロセスとコンテキストスイッチ

プロセスディスクリプタなどのプロセスのサブシステムとコンテキストスイッチのお話。

linuxos
Glibc malloc Consolidating Chunks
(prev_size)
size
(b) 再配置
図4 結合
size = p->size
If not prev_inuse(p):
prevsize = p->prev_size
size += prevsize
p += -(long)(prevsize)
p
fd
bk
(not used)
(prev_size)
size 0
data
+
pads
prev
p
p
Glibc malloc Consolidating Chunks
(prev_size)
size 1
p
(c) 結果
図4 結合
p
(prev_size)
size
fd
bk
(not used)
fd
bk
(not used)
(prev_size)
size 0
data
+
pads
prev
p
p
House of Einherjar Flaw / Flow
今のところ, これらのことが既知である
 "p->prev_size"は, 直前に隣接するchunkと共有されうる.
 "p->size"のPREV_INUSE bitを基にchunkの結合の可否を決定する.
 新しいpの位置は"p->prev_size"により決定する.
 "p = chunk_at_offset(p, -((long)prevsize))"
House of Einherjar Flaw / Flow
今のところ, これらのことが既知である
 "p->prev_size"は, 直前に隣接するchunkと共有されうる.
 "p->size"のPREV_INUSE bitを基にchunkの結合の可否を決定する.
 新しいpの位置は"p->prev_size"により決定する.
 "p = chunk_at_offset(p, -((long)prevsize))"
ここで, 以下の条件について考える
 3つのchunkが存在する.
 p0: well-sizedなサイズをもつchunk(p1->prev_sizeを内包する).
 p1: small binサイズのchunk.
 (p2: malloc_consolidate()を抑制するためのchunk.)
 p0についてOff-by-oneでNUL byte('¥0')なOverflowが存在する.

Recommended for you

BoostAsioで可読性を求めるのは間違っているだろうか
BoostAsioで可読性を求めるのは間違っているだろうかBoostAsioで可読性を求めるのは間違っているだろうか
BoostAsioで可読性を求めるのは間違っているだろうか

Boost.Asio を読みやすくする。

c++11boostasio
WebAssemblyのWeb以外のことぜんぶ話す
WebAssemblyのWeb以外のことぜんぶ話すWebAssemblyのWeb以外のことぜんぶ話す
WebAssemblyのWeb以外のことぜんぶ話す

Kernel/Vm探検隊 online part2. 発表動画: https://youtu.be/brrm328XItM?t=8221

LLVMで遊ぶ(整数圧縮とか、x86向けの自動ベクトル化とか)
LLVMで遊ぶ(整数圧縮とか、x86向けの自動ベクトル化とか)LLVMで遊ぶ(整数圧縮とか、x86向けの自動ベクトル化とか)
LLVMで遊ぶ(整数圧縮とか、x86向けの自動ベクトル化とか)
House of Einherjar Flaw / Flow
(prev_size)
size
data
(prev_size)
size
data
+
pads
1
well-sized
shared
(a) Overflow前
図5 House of Einherjarの原理
p0 (used)
p1 (used)
(prev_size)
size
data
(prev_size)
size
data
+
pads
1
(b) Overflow
図5 House of Einherjarの原理
Overflown
House of Einherjar Flaw / Flow
(prev_size)
size
data
0xdeadbeef
size
data
+
pads
'¥0'
(c) Overflow後
図5 House of Einherjarの原理
p0 (free)
p1 (used)
shared
well-sized
House of Einherjar Flaw / Flow
House of Einherjar Flaw / Flow
(prev_size)
size
data
0xdeadbeef
size
data
+
pads
'¥0'
(c) Overflow後
図5 House of Einherjarの原理
p0 (free)
p1 (used)
shared
well-sized
size = p1->size
If not prev_inuse(p1):
prevsize = p1->prev_size
size += prevsize
p1 += -(long)(prevsize)

Recommended for you

ARM CPUにおけるSIMDを用いた高速計算入門
ARM CPUにおけるSIMDを用いた高速計算入門ARM CPUにおけるSIMDを用いた高速計算入門
ARM CPUにおけるSIMDを用いた高速計算入門

2021/4/28 に東京大学で開催された<AIセミナーシリーズ> 「Arm CPUにおけるSIMDを用いた高速計算入門」講演会で使用した資料になります。

armsimd高速化
ゼロからはじめるKVM超入門
ゼロからはじめるKVM超入門ゼロからはじめるKVM超入門
ゼロからはじめるKVM超入門

イベント名:設立3周年記念チャリティーセミナー 講師:日本仮想化技術 宮原 日時:2010/2/6 アジェンダ: • KVMの概要 • KVM仮想マシン作成のコツ • KVMベンチマークテスト 概要: リリース直後に異例の速さでカーネルに取り込まれたKVMですが、VMwareやXenに比べて、まだまだ活用術や情報が少ないのが現状です。本セッションでは、KVMの仕組み、活用方法、性能評価の結果について解説いたします。

kvm活用方法入門
関ジャバ JavaOne Tokyo 2012報告会
関ジャバ JavaOne Tokyo 2012報告会関ジャバ JavaOne Tokyo 2012報告会
関ジャバ JavaOne Tokyo 2012報告会
House of Einherjar Flaw / Flow
(prev_size)
size
data
0xdeadbeef
size
data
+
pads
'¥0'
(c) Overflow後
図5 House of Einherjarの原理
p0 (free)
p1 (used)
shared
well-sized
size = p1->size
If not prev_inuse(p1):
prevsize = 0xdeadbeef
size += prevsize
p1 += -(long)(prevsize)
House of Einherjar Flaw / Flow
House of Einherjarに必要なこと
 うまくサイズの調整されたchunkがOff-by-oneでOverflowを起こす.
 ターゲットとする領域の近くにfake chunkがある.
 fd, bkメンバはfake chunk自身を指すようにすると簡単である.
 ターゲットとする領域と"p1"のアドレスについての差分が計算可能である.
 このとき, これら2つのアドレスのleakが必要となる.
 free()時に"p1->size"が大きく変更されるのでその補正が可能である.
 ※fake chunkは何回か編集可能であると仮定する.
デモ
http://ux.nu/6Rv6h
House of Einherjar Evaluation
メリット
 メモリレイアウトにも依るがOff-by-oneなOverflowさえあればできる.
 "House of Force"のような巨大なmalloc()を必要としない.
デメリット
 fake chunkを置ける領域の近くしかmalloc()で取得できない.
 2つのアドレスのleakが必要となる.
評価: "悪くはない"

Recommended for you

ディープラーニングフレームワーク とChainerの実装
ディープラーニングフレームワーク とChainerの実装ディープラーニングフレームワーク とChainerの実装
ディープラーニングフレームワーク とChainerの実装

PPL2016@岡山 ディープラーニングの研究開発時には、計算を支援するためのフレームワークが用いられる。ChainerはPython上で動くディープラーニングフレームワークの一つである。他の多くのフレームワークと異なり、順伝播処理を行った時の実行履歴情報をもとに逆伝播のグラフを動的に構築するdefine-by-runという方式を採用している。この方式により、分岐や再帰を含むような複雑な構造のネットワークも直感的に構築でき、加えてデバッグが容易である。また、CuPyと呼ばれるNumPyサブセットのCUDAによる行列演算ライブラリを作成し、バックエンドとして利用している。本講演では、ディープラーニングフレームワークの基礎と実装、そして課題についてChainerを通して説明する。

深層学習chainerpython
Wavelet matrix implementation
Wavelet matrix implementationWavelet matrix implementation
Wavelet matrix implementation
wavelet matrix succinct vector
House of Einherjar Countermeasures
"struct malloc_chunk"がよくないのでは?
 そもそも"chunk->prev_size"が通常の書き込みにより上書きされること
がよくない.
 そもそもBoundary Tagアルゴリズムだから仕方がない.
対策方法は?
 Address checking
 結合後の新しいchunkのアドレスは正しいか?
 StackとHeapのアドレスは全然違う.
 Return addressは守れる.
 Heap内でのHouse of Einherjarには対応しきれない.
Thank You For Your Attention!
Any Questions?

More Related Content

What's hot

Zynq mp勉強会資料
Zynq mp勉強会資料Zynq mp勉強会資料
Zynq mp勉強会資料
一路 川染
 
競プロでGo!
競プロでGo!競プロでGo!
競プロでGo!
鈴木 セシル
 
Intro to SVE 富岳のA64FXを触ってみた
Intro to SVE 富岳のA64FXを触ってみたIntro to SVE 富岳のA64FXを触ってみた
Intro to SVE 富岳のA64FXを触ってみた
MITSUNARI Shigeo
 
Deflate
DeflateDeflate
Deflate
7shi
 
PWNの超入門 大和セキュリティ神戸 2018-03-25
PWNの超入門 大和セキュリティ神戸 2018-03-25PWNの超入門 大和セキュリティ神戸 2018-03-25
PWNの超入門 大和セキュリティ神戸 2018-03-25
Isaac Mathis
 
NEDIA_SNIA_CXL_講演資料.pdf
NEDIA_SNIA_CXL_講演資料.pdfNEDIA_SNIA_CXL_講演資料.pdf
NEDIA_SNIA_CXL_講演資料.pdf
Yasunori Goto
 
TEE (Trusted Execution Environment)は第二の仮想化技術になるか?
TEE (Trusted Execution Environment)は第二の仮想化技術になるか?TEE (Trusted Execution Environment)は第二の仮想化技術になるか?
TEE (Trusted Execution Environment)は第二の仮想化技術になるか?
Kuniyasu Suzaki
 
プログラムを高速化する話
プログラムを高速化する話プログラムを高速化する話
プログラムを高速化する話
京大 マイコンクラブ
 
HTTP/2, QUIC入門
HTTP/2, QUIC入門HTTP/2, QUIC入門
HTTP/2, QUIC入門
shigeki_ohtsu
 
RSA暗号運用でやってはいけない n のこと #ssmjp
RSA暗号運用でやってはいけない n のこと #ssmjpRSA暗号運用でやってはいけない n のこと #ssmjp
RSA暗号運用でやってはいけない n のこと #ssmjp
sonickun
 
Master Canary Forging: 新しいスタックカナリア回避手法の提案 by 小池 悠生 - CODE BLUE 2015
Master Canary Forging: 新しいスタックカナリア回避手法の提案 by 小池 悠生 - CODE BLUE 2015Master Canary Forging: 新しいスタックカナリア回避手法の提案 by 小池 悠生 - CODE BLUE 2015
Master Canary Forging: 新しいスタックカナリア回避手法の提案 by 小池 悠生 - CODE BLUE 2015
CODE BLUE
 
ゼロから始める自作 CPU 入門
ゼロから始める自作 CPU 入門ゼロから始める自作 CPU 入門
ゼロから始める自作 CPU 入門
Hirotaka Kawata
 
3種類のTEE比較(Intel SGX, ARM TrustZone, RISC-V Keystone)
3種類のTEE比較(Intel SGX, ARM TrustZone, RISC-V Keystone)3種類のTEE比較(Intel SGX, ARM TrustZone, RISC-V Keystone)
3種類のTEE比較(Intel SGX, ARM TrustZone, RISC-V Keystone)
Kuniyasu Suzaki
 
CXL_説明_公開用.pdf
CXL_説明_公開用.pdfCXL_説明_公開用.pdf
CXL_説明_公開用.pdf
Yasunori Goto
 
プロセスとコンテキストスイッチ
プロセスとコンテキストスイッチプロセスとコンテキストスイッチ
プロセスとコンテキストスイッチ
Kazuki Onishi
 
BoostAsioで可読性を求めるのは間違っているだろうか
BoostAsioで可読性を求めるのは間違っているだろうかBoostAsioで可読性を求めるのは間違っているだろうか
BoostAsioで可読性を求めるのは間違っているだろうか
Yuki Miyatake
 
WebAssemblyのWeb以外のことぜんぶ話す
WebAssemblyのWeb以外のことぜんぶ話すWebAssemblyのWeb以外のことぜんぶ話す
WebAssemblyのWeb以外のことぜんぶ話す
Takaya Saeki
 
LLVMで遊ぶ(整数圧縮とか、x86向けの自動ベクトル化とか)
LLVMで遊ぶ(整数圧縮とか、x86向けの自動ベクトル化とか)LLVMで遊ぶ(整数圧縮とか、x86向けの自動ベクトル化とか)
LLVMで遊ぶ(整数圧縮とか、x86向けの自動ベクトル化とか)
Takeshi Yamamuro
 
ARM CPUにおけるSIMDを用いた高速計算入門
ARM CPUにおけるSIMDを用いた高速計算入門ARM CPUにおけるSIMDを用いた高速計算入門
ARM CPUにおけるSIMDを用いた高速計算入門
Fixstars Corporation
 
ゼロからはじめるKVM超入門
ゼロからはじめるKVM超入門ゼロからはじめるKVM超入門
ゼロからはじめるKVM超入門
VirtualTech Japan Inc.
 

What's hot (20)

Zynq mp勉強会資料
Zynq mp勉強会資料Zynq mp勉強会資料
Zynq mp勉強会資料
 
競プロでGo!
競プロでGo!競プロでGo!
競プロでGo!
 
Intro to SVE 富岳のA64FXを触ってみた
Intro to SVE 富岳のA64FXを触ってみたIntro to SVE 富岳のA64FXを触ってみた
Intro to SVE 富岳のA64FXを触ってみた
 
Deflate
DeflateDeflate
Deflate
 
PWNの超入門 大和セキュリティ神戸 2018-03-25
PWNの超入門 大和セキュリティ神戸 2018-03-25PWNの超入門 大和セキュリティ神戸 2018-03-25
PWNの超入門 大和セキュリティ神戸 2018-03-25
 
NEDIA_SNIA_CXL_講演資料.pdf
NEDIA_SNIA_CXL_講演資料.pdfNEDIA_SNIA_CXL_講演資料.pdf
NEDIA_SNIA_CXL_講演資料.pdf
 
TEE (Trusted Execution Environment)は第二の仮想化技術になるか?
TEE (Trusted Execution Environment)は第二の仮想化技術になるか?TEE (Trusted Execution Environment)は第二の仮想化技術になるか?
TEE (Trusted Execution Environment)は第二の仮想化技術になるか?
 
プログラムを高速化する話
プログラムを高速化する話プログラムを高速化する話
プログラムを高速化する話
 
HTTP/2, QUIC入門
HTTP/2, QUIC入門HTTP/2, QUIC入門
HTTP/2, QUIC入門
 
RSA暗号運用でやってはいけない n のこと #ssmjp
RSA暗号運用でやってはいけない n のこと #ssmjpRSA暗号運用でやってはいけない n のこと #ssmjp
RSA暗号運用でやってはいけない n のこと #ssmjp
 
Master Canary Forging: 新しいスタックカナリア回避手法の提案 by 小池 悠生 - CODE BLUE 2015
Master Canary Forging: 新しいスタックカナリア回避手法の提案 by 小池 悠生 - CODE BLUE 2015Master Canary Forging: 新しいスタックカナリア回避手法の提案 by 小池 悠生 - CODE BLUE 2015
Master Canary Forging: 新しいスタックカナリア回避手法の提案 by 小池 悠生 - CODE BLUE 2015
 
ゼロから始める自作 CPU 入門
ゼロから始める自作 CPU 入門ゼロから始める自作 CPU 入門
ゼロから始める自作 CPU 入門
 
3種類のTEE比較(Intel SGX, ARM TrustZone, RISC-V Keystone)
3種類のTEE比較(Intel SGX, ARM TrustZone, RISC-V Keystone)3種類のTEE比較(Intel SGX, ARM TrustZone, RISC-V Keystone)
3種類のTEE比較(Intel SGX, ARM TrustZone, RISC-V Keystone)
 
CXL_説明_公開用.pdf
CXL_説明_公開用.pdfCXL_説��_公開用.pdf
CXL_説明_公開用.pdf
 
プロセスとコンテキストスイッチ
プロセスとコンテキストスイッチプロセスとコンテキストスイッチ
プロセスとコンテキストスイッチ
 
BoostAsioで可読性を求めるのは間違っているだろうか
BoostAsioで可読性を求めるのは間違っているだろうかBoostAsioで可読性を求めるのは間違っているだろうか
BoostAsioで可読性を求めるのは間違っているだろうか
 
WebAssemblyのWeb以外のことぜんぶ話す
WebAssemblyのWeb以外のことぜんぶ話すWebAssemblyのWeb以外のことぜんぶ話す
WebAssemblyのWeb以外のことぜんぶ話す
 
LLVMで遊ぶ(整数圧縮とか、x86向けの自動ベクトル化とか)
LLVMで遊ぶ(整数圧縮とか、x86向けの自動ベクトル化とか)LLVMで遊ぶ(整数圧縮とか、x86向けの自動ベクトル化とか)
LLVMで遊ぶ(整数圧縮とか、x86向けの自動ベクトル化とか)
 
ARM CPUにおけるSIMDを用いた高速計算入門
ARM CPUにおけるSIMDを用いた高速計算入門ARM CPUにおけるSIMDを用いた高速計算入門
ARM CPUにおけるSIMDを用いた高速計算入門
 
ゼロからはじめるKVM超入門
ゼロからはじめるKVM超入門ゼロからはじめるKVM超入門
ゼロからはじめるKVM超入門
 

Similar to [CB16] House of Einherjar :GLIBC上の新たなヒープ活用テクニック by 松隈大樹

関ジャバ JavaOne Tokyo 2012報告会
関ジャバ JavaOne Tokyo 2012報告会関ジャバ JavaOne Tokyo 2012報告会
関ジャバ JavaOne Tokyo 2012報告会
Koichi Sakata
 
ディープラーニングフレームワーク とChainerの実装
ディープラーニングフレームワーク とChainerの実装ディープラーニングフレームワーク とChainerの実装
ディープラーニングフレームワーク とChainerの実装
Ryosuke Okuta
 
Wavelet matrix implementation
Wavelet matrix implementationWavelet matrix implementation
Wavelet matrix implementation
MITSUNARI Shigeo
 
PyOpenCLによるGPGPU入門 Tokyo.SciPy#4 編
PyOpenCLによるGPGPU入門 Tokyo.SciPy#4 編PyOpenCLによるGPGPU入門 Tokyo.SciPy#4 編
PyOpenCLによるGPGPU入門 Tokyo.SciPy#4 編
Yosuke Onoue
 
コンテナのネットワークインターフェース その実装手法とその応用について
コンテナのネットワークインターフェース その実装手法とその応用についてコンテナのネットワークインターフェース その実装手法とその応用について
コンテナのネットワークインターフェース その実装手法とその応用について
Tomofumi Hayashi
 
DEXCS2022 for preCICE
DEXCS2022 for preCICEDEXCS2022 for preCICE
DEXCS2022 for preCICE
Etsuji Nomura
 
すごいH 第12章モノイド
すごいH 第12章モノイドすごいH 第12章モノイド
すごいH 第12章モノイド
Shinta Hatatani
 
CouchDB JP & BigCouch
CouchDB JP & BigCouchCouchDB JP & BigCouch
CouchDB JP & BigCouch
Yohei Sasaki
 
optimal Ate pairing
optimal Ate pairingoptimal Ate pairing
optimal Ate pairing
MITSUNARI Shigeo
 
FSI analysis with preCICE (OpenFOAM and CalculiX)
FSI analysis with preCICE (OpenFOAM and CalculiX) FSI analysis with preCICE (OpenFOAM and CalculiX)
FSI analysis with preCICE (OpenFOAM and CalculiX)
守淑 田村
 
Core Graphicsでつくる自作UIコンポーネント入門
Core Graphicsでつくる自作UIコンポーネント入門Core Graphicsでつくる自作UIコンポーネント入門
Core Graphicsでつくる自作UIコンポーネント入門
cocopon
 
論文紹介: Cuckoo filter: practically better than bloom
論文紹介: Cuckoo filter: practically better than bloom論文紹介: Cuckoo filter: practically better than bloom
論文紹介: Cuckoo filter: practically better than bloom
Sho Nakazono
 
【macOSにも対応】AI入門「第3回:数学が苦手でも作って使えるKerasディープラーニング」
【macOSにも対応】AI入門「第3回:数学が苦手でも作って使えるKerasディープラーニング」【macOSにも対応】AI入門「第3回:数学が苦手でも作って使えるKerasディープラーニング」
【macOSにも対応】AI入門「第3回:数学が苦手でも作って使えるKerasディープラーニング」
fukuoka.ex
 
条件分岐とcmovとmaxps
条件分岐とcmovとmaxps条件分岐とcmovとmaxps
条件分岐とcmovとmaxps
MITSUNARI Shigeo
 
lispmeetup#63 Common Lispでゼロから作るDeep Learning
lispmeetup#63 Common Lispでゼロから作るDeep Learninglispmeetup#63 Common Lispでゼロから作るDeep Learning
lispmeetup#63 Common Lispでゼロから作るDeep Learning
Satoshi imai
 
Introduction to NumPy & SciPy
Introduction to NumPy & SciPyIntroduction to NumPy & SciPy
Introduction to NumPy & SciPy
Shiqiao Du
 
怪しいWindowsプログラミング
怪しいWindowsプログラミング怪しいWindowsプログラミング
怪しいWindowsプログラミング
nagoya313
 

Similar to [CB16] House of Einherjar :GLIBC上の新たなヒープ活用テクニック by 松隈大樹 (20)

関ジャバ JavaOne Tokyo 2012報告会
関ジャバ JavaOne Tokyo 2012報告会関ジャバ JavaOne Tokyo 2012報告会
関ジャバ JavaOne Tokyo 2012報告会
 
ディープラーニングフレームワーク とChainerの実装
ディープラーニングフレームワーク とChainerの実装ディープラーニングフレームワーク とChainerの実装
ディープラーニングフレームワーク とChainerの実装
 
Objc lambda
Objc lambdaObjc lambda
Objc lambda
 
Wavelet matrix implementation
Wavelet matrix implementationWavelet matrix implementation
Wavelet matrix implementation
 
PyOpenCLによるGPGPU入門 Tokyo.SciPy#4 編
PyOpenCLによるGPGPU入門 Tokyo.SciPy#4 編PyOpenCLによるGPGPU入門 Tokyo.SciPy#4 編
PyOpenCLによるGPGPU入門 Tokyo.SciPy#4 編
 
JVM-Reading-ParalleGC
JVM-Reading-ParalleGCJVM-Reading-ParalleGC
JVM-Reading-ParalleGC
 
Jvm reading-parallel gc
Jvm reading-parallel gcJvm reading-parallel gc
Jvm reading-parallel gc
 
コンテナのネットワークインターフェース その実装手法とその応用について
コンテナのネットワークインターフェース その実装手法とその応用についてコンテナのネットワークインターフェース その実装手法とその応用について
コンテナのネットワークインターフェース その実装手法とその応用について
 
DEXCS2022 for preCICE
DEXCS2022 for preCICEDEXCS2022 for preCICE
DEXCS2022 for preCICE
 
すごいH 第12章モノイド
すごいH 第12章モノイドすごいH 第12章モノイド
すごいH 第12章モノイド
 
CouchDB JP & BigCouch
CouchDB JP & BigCouchCouchDB JP & BigCouch
CouchDB JP & BigCouch
 
optimal Ate pairing
optimal Ate pairingoptimal Ate pairing
optimal Ate pairing
 
FSI analysis with preCICE (OpenFOAM and CalculiX)
FSI analysis with preCICE (OpenFOAM and CalculiX) FSI analysis with preCICE (OpenFOAM and CalculiX)
FSI analysis with preCICE (OpenFOAM and CalculiX)
 
Core Graphicsでつくる自作UIコンポーネント入門
Core Graphicsでつくる自作UIコンポーネント入門Core Graphicsでつくる自作UIコンポーネント入門
Core Graphicsでつくる自作UIコンポーネント入門
 
論文紹介: Cuckoo filter: practically better than bloom
論文紹介: Cuckoo filter: practically better than bloom論文紹介: Cuckoo filter: practically better than bloom
論文紹介: Cuckoo filter: practically better than bloom
 
【macOSにも対応】AI入門「第3回:数学が苦手でも作って使えるKerasディープラーニング」
【macOSにも対応】AI入門「第3回:数学が苦手でも作って使えるKerasディープラーニング」【macOSにも対応】AI入門「第3回:数学が苦手でも作って使えるKerasディープラーニング」
【macOSにも対応】AI入門「第3回:数学が苦手でも作って使えるKerasディープラーニング」
 
条件分岐とcmovとmaxps
条件分岐とcmovとmaxps条件分岐とcmovとmaxps
条件分岐とcmovとmaxps
 
lispmeetup#63 Common Lispでゼロから作るDeep Learning
lispmeetup#63 Common Lispでゼロから作るDeep Learninglispmeetup#63 Common Lispでゼロから作るDeep Learning
lispmeetup#63 Common Lispでゼロから作るDeep Learning
 
Introduction to NumPy & SciPy
Introduction to NumPy & SciPyIntroduction to NumPy & SciPy
Introduction to NumPy & SciPy
 
怪しいWindowsプログラミング
怪しいWindowsプログラミング怪しいWindowsプログラミング
怪しいWindowsプログラミング
 

More from CODE BLUE

[cb22] Hayabusa Threat Hunting and Fast Forensics in Windows environments fo...
[cb22] Hayabusa  Threat Hunting and Fast Forensics in Windows environments fo...[cb22] Hayabusa  Threat Hunting and Fast Forensics in Windows environments fo...
[cb22] Hayabusa Threat Hunting and Fast Forensics in Windows environments fo...
CODE BLUE
 
[cb22] Tales of 5G hacking by Karsten Nohl
[cb22] Tales of 5G hacking by Karsten Nohl[cb22] Tales of 5G hacking by Karsten Nohl
[cb22] Tales of 5G hacking by Karsten Nohl
CODE BLUE
 
[cb22] Your Printer is not your Printer ! - Hacking Printers at Pwn2Own by A...
[cb22]  Your Printer is not your Printer ! - Hacking Printers at Pwn2Own by A...[cb22]  Your Printer is not your Printer ! - Hacking Printers at Pwn2Own by A...
[cb22] Your Printer is not your Printer ! - Hacking Printers at Pwn2Own by A...
CODE BLUE
 
[cb22] "The Present and Future of Coordinated Vulnerability Disclosure" Inter...
[cb22] "The Present and Future of Coordinated Vulnerability Disclosure" Inter...[cb22] "The Present and Future of Coordinated Vulnerability Disclosure" Inter...
[cb22] "The Present and Future of Coordinated Vulnerability Disclosure" Inter...
CODE BLUE
 
[cb22] 「協調された脆弱性開示の現在と未来」国際的なパネルディスカッション(4) by 板橋 博之
[cb22] 「協調された脆弱性開示の現在と未来」国際的なパネルディスカッション(4) by 板橋 博之[cb22] 「協調された脆弱性開示の現在と未来」国際的なパネルディスカッション(4) by 板橋 博之
[cb22] 「協調された脆弱性開示の現在と未来」国際的なパネルディスカッション(4) by 板橋 博之
CODE BLUE
 
[cb22] "The Present and Future of Coordinated Vulnerability Disclosure" Inter...
[cb22] "The Present and Future of Coordinated Vulnerability Disclosure" Inter...[cb22] "The Present and Future of Coordinated Vulnerability Disclosure" Inter...
[cb22] "The Present and Future of Coordinated Vulnerability Disclosure" Inter...
CODE BLUE
 
[cb22] 「協調された脆弱性開示の現在と未来」国際的なパネルディスカッション(3) by Lorenzo Pupillo
[cb22] 「協調された脆弱性開示の現在と未来」国際的なパネルディスカッション(3) by Lorenzo Pupillo[cb22] 「協調された脆弱性開示の現在と未来」国際的なパネルディスカッション(3) by Lorenzo Pupillo
[cb22] 「協調された脆弱性開示の現在と未来」国際的なパネルディスカッション(3) by Lorenzo Pupillo
CODE BLUE
 
[cb22] ”The Present and Future of Coordinated Vulnerability Disclosure” Inte...
[cb22]  ”The Present and Future of Coordinated Vulnerability Disclosure” Inte...[cb22]  ”The Present and Future of Coordinated Vulnerability Disclosure” Inte...
[cb22] ”The Present and Future of Coordinated Vulnerability Disclosure” Inte...
CODE BLUE
 
[cb22] 「協調された脆弱性開示の現在と未来」国際的なパネルディスカッション(2)by Allan Friedman
[cb22]  「協調された脆弱性開示の現在と未来」国際的なパネルディスカッション(2)by Allan Friedman [cb22]  「協調された脆弱性開示の現在と未来」国際的なパネルディスカッション(2)by Allan Friedman
[cb22] 「協調された脆弱性開示の現在と未来」国際的なパネルディスカッション(2)by Allan Friedman
CODE BLUE
 
[cb22] "The Present and Future of Coordinated Vulnerability Disclosure" Inter...
[cb22] "The Present and Future of Coordinated Vulnerability Disclosure" Inter...[cb22] "The Present and Future of Coordinated Vulnerability Disclosure" Inter...
[cb22] "The Present and Future of Coordinated Vulnerability Disclosure" Inter...
CODE BLUE
 
[cb22] 「協調された脆弱性開示の現在と未来」国際的なパネルディスカッション (1)by 高橋 郁夫
[cb22] 「協調された脆弱性開示の現在と未来」国際的なパネルディスカッション (1)by  高橋 郁夫[cb22] 「協調された脆弱性開示の現在と未来」国際的なパネルディスカッション (1)by  高橋 郁夫
[cb22] 「協調された脆弱性開示の現在と未来」国際的なパネルディスカッション (1)by 高橋 郁夫
CODE BLUE
 
[cb22] Are Embedded Devices Ready for ROP Attacks? -ROP verification for low-...
[cb22] Are Embedded Devices Ready for ROP Attacks? -ROP verification for low-...[cb22] Are Embedded Devices Ready for ROP Attacks? -ROP verification for low-...
[cb22] Are Embedded Devices Ready for ROP Attacks? -ROP verification for low-...
CODE BLUE
 
[cb22] Wslinkのマルチレイヤーな仮想環境について by Vladislav Hrčka
[cb22] Wslinkのマルチレイヤーな仮想環境について by Vladislav Hrčka [cb22] Wslinkのマルチレイヤーな仮想環境について by Vladislav Hrčka
[cb22] Wslinkのマルチレイヤーな仮想環境について by Vladislav Hrčka
CODE BLUE
 
[cb22] Under the hood of Wslink’s multilayered virtual machine en by Vladisla...
[cb22] Under the hood of Wslink’s multilayered virtual machine en by Vladisla...[cb22] Under the hood of Wslink’s multilayered virtual machine en by Vladisla...
[cb22] Under the hood of Wslink’s multilayered virtual machine en by Vladisla...
CODE BLUE
 
[cb22] CloudDragon’s Credential Factory is Powering Up Its Espionage Activiti...
[cb22] CloudDragon’s Credential Factory is Powering Up Its Espionage Activiti...[cb22] CloudDragon’s Credential Factory is Powering Up Its Espionage Activiti...
[cb22] CloudDragon’s Credential Factory is Powering Up Its Espionage Activiti...
CODE BLUE
 
[cb22] From Parroting to Echoing: The Evolution of China’s Bots-Driven Info...
[cb22]  From Parroting to Echoing:  The Evolution of China’s Bots-Driven Info...[cb22]  From Parroting to Echoing:  The Evolution of China’s Bots-Driven Info...
[cb22] From Parroting to Echoing: The Evolution of China’s Bots-Driven Info...
CODE BLUE
 
[cb22] Who is the Mal-Gopher? - Implementation and Evaluation of “gimpfuzzy”...
[cb22]  Who is the Mal-Gopher? - Implementation and Evaluation of “gimpfuzzy”...[cb22]  Who is the Mal-Gopher? - Implementation and Evaluation of “gimpfuzzy”...
[cb22] Who is the Mal-Gopher? - Implementation and Evaluation of “gimpfuzzy”...
CODE BLUE
 
[cb22] Mal-gopherとは?Go系マルウェアの分類のためのgimpfuzzy実装と評価 by 澤部 祐太, 甘粕 伸幸, 野村 和也
[cb22] Mal-gopherとは?Go系マルウェアの分類のためのgimpfuzzy実装と評価 by 澤部 祐太, 甘粕 伸幸, 野村 和也[cb22] Mal-gopherとは?Go系マルウェアの分類のためのgimpfuzzy実装と評価 by 澤部 祐太, 甘粕 伸幸, 野村 和也
[cb22] Mal-gopherとは?Go系マルウェアの分類のためのgimpfuzzy実装と評価 by 澤部 祐太, 甘粕 伸幸, 野村 和也
CODE BLUE
 
[cb22] Tracking the Entire Iceberg - Long-term APT Malware C2 Protocol Emulat...
[cb22] Tracking the Entire Iceberg - Long-term APT Malware C2 Protocol Emulat...[cb22] Tracking the Entire Iceberg - Long-term APT Malware C2 Protocol Emulat...
[cb22] Tracking the Entire Iceberg - Long-term APT Malware C2 Protocol Emulat...
CODE BLUE
 
[cb22] Fight Against Malware Development Life Cycle by Shusei Tomonaga and Yu...
[cb22] Fight Against Malware Development Life Cycle by Shusei Tomonaga and Yu...[cb22] Fight Against Malware Development Life Cycle by Shusei Tomonaga and Yu...
[cb22] Fight Against Malware Development Life Cycle by Shusei Tomonaga and Yu...
CODE BLUE
 

More from CODE BLUE (20)

[cb22] Hayabusa Threat Hunting and Fast Forensics in Windows environments fo...
[cb22] Hayabusa  Threat Hunting and Fast Forensics in Windows environments fo...[cb22] Hayabusa  Threat Hunting and Fast Forensics in Windows environments fo...
[cb22] Hayabusa Threat Hunting and Fast Forensics in Windows environments fo...
 
[cb22] Tales of 5G hacking by Karsten Nohl
[cb22] Tales of 5G hacking by Karsten Nohl[cb22] Tales of 5G hacking by Karsten Nohl
[cb22] Tales of 5G hacking by Karsten Nohl
 
[cb22] Your Printer is not your Printer ! - Hacking Printers at Pwn2Own by A...
[cb22]  Your Printer is not your Printer ! - Hacking Printers at Pwn2Own by A...[cb22]  Your Printer is not your Printer ! - Hacking Printers at Pwn2Own by A...
[cb22] Your Printer is not your Printer ! - Hacking Printers at Pwn2Own by A...
 
[cb22] "The Present and Future of Coordinated Vulnerability Disclosure" Inter...
[cb22] "The Present and Future of Coordinated Vulnerability Disclosure" Inter...[cb22] "The Present and Future of Coordinated Vulnerability Disclosure" Inter...
[cb22] "The Present and Future of Coordinated Vulnerability Disclosure" Inter...
 
[cb22] 「協調された脆弱性開示の現在と未来」国際的なパネルディスカッション(4) by 板橋 博之
[cb22] 「協調された脆弱性開示の現在と未来」国際的なパネルディスカッション(4) by 板橋 博之[cb22] 「協調された脆弱性開示の現在と未来」国際的なパネルディスカッション(4) by 板橋 博之
[cb22] 「協調された脆弱性開示の現在と未来」国際的なパネルディスカッション(4) by 板橋 博之
 
[cb22] "The Present and Future of Coordinated Vulnerability Disclosure" Inter...
[cb22] "The Present and Future of Coordinated Vulnerability Disclosure" Inter...[cb22] "The Present and Future of Coordinated Vulnerability Disclosure" Inter...
[cb22] "The Present and Future of Coordinated Vulnerability Disclosure" Inter...
 
[cb22] 「協調された脆弱性開示の現在と未来」国際的なパネルディスカッション(3) by Lorenzo Pupillo
[cb22] 「協調された脆弱性開示の現在と未来」国際的なパネルディスカッション(3) by Lorenzo Pupillo[cb22] 「協調された脆弱性開示の現在と未来」国際的なパネルディスカッション(3) by Lorenzo Pupillo
[cb22] 「協調された脆弱性開示の現在と未来」国際的なパネルディスカッション(3) by Lorenzo Pupillo
 
[cb22] ”The Present and Future of Coordinated Vulnerability Disclosure” Inte...
[cb22]  ”The Present and Future of Coordinated Vulnerability Disclosure” Inte...[cb22]  ”The Present and Future of Coordinated Vulnerability Disclosure” Inte...
[cb22] ”The Present and Future of Coordinated Vulnerability Disclosure” Inte...
 
[cb22] 「協調された脆弱性開示の現在と未来」国際的なパネルディスカッション(2)by Allan Friedman
[cb22]  「協調された脆弱性開示の現在と未来」国際的なパネルディスカッション(2)by Allan Friedman [cb22]  「協調された脆弱性開示の現在と未来」国際的なパネルディスカッション(2)by Allan Friedman
[cb22] 「協調された脆弱性開示の現在と未来」国際的なパネルディスカッション(2)by Allan Friedman
 
[cb22] "The Present and Future of Coordinated Vulnerability Disclosure" Inter...
[cb22] "The Present and Future of Coordinated Vulnerability Disclosure" Inter...[cb22] "The Present and Future of Coordinated Vulnerability Disclosure" Inter...
[cb22] "The Present and Future of Coordinated Vulnerability Disclosure" Inter...
 
[cb22] 「協調された脆弱性開示の現在と未来」国際的なパネルディスカッション (1)by 高橋 郁夫
[cb22] 「協調された脆弱性開示の現在と未来」国際的なパネルディスカッション (1)by  高橋 郁夫[cb22] 「協調された脆弱性開示の現在と未来」国際的なパネルディスカッション (1)by  高橋 郁夫
[cb22] 「協調された脆弱性開示の現在と未来」国際的なパネルディスカッション (1)by 高橋 郁夫
 
[cb22] Are Embedded Devices Ready for ROP Attacks? -ROP verification for low-...
[cb22] Are Embedded Devices Ready for ROP Attacks? -ROP verification for low-...[cb22] Are Embedded Devices Ready for ROP Attacks? -ROP verification for low-...
[cb22] Are Embedded Devices Ready for ROP Attacks? -ROP verification for low-...
 
[cb22] Wslinkのマルチレイヤーな仮想環境について by Vladislav Hrčka
[cb22] Wslinkのマルチレイヤーな仮想環境について by Vladislav Hrčka [cb22] Wslinkのマルチレイヤーな仮想環境について by Vladislav Hrčka
[cb22] Wslinkのマルチレイヤーな仮想環境について by Vladislav Hrčka
 
[cb22] Under the hood of Wslink’s multilayered virtual machine en by Vladisla...
[cb22] Under the hood of Wslink’s multilayered virtual machine en by Vladisla...[cb22] Under the hood of Wslink’s multilayered virtual machine en by Vladisla...
[cb22] Under the hood of Wslink’s multilayered virtual machine en by Vladisla...
 
[cb22] CloudDragon’s Credential Factory is Powering Up Its Espionage Activiti...
[cb22] CloudDragon’s Credential Factory is Powering Up Its Espionage Activiti...[cb22] CloudDragon’s Credential Factory is Powering Up Its Espionage Activiti...
[cb22] CloudDragon’s Credential Factory is Powering Up Its Espionage Activiti...
 
[cb22] From Parroting to Echoing: The Evolution of China’s Bots-Driven Info...
[cb22]  From Parroting to Echoing:  The Evolution of China’s Bots-Driven Info...[cb22]  From Parroting to Echoing:  The Evolution of China’s Bots-Driven Info...
[cb22] From Parroting to Echoing: The Evolution of China’s Bots-Driven Info...
 
[cb22] Who is the Mal-Gopher? - Implementation and Evaluation of “gimpfuzzy”...
[cb22]  Who is the Mal-Gopher? - Implementation and Evaluation of “gimpfuzzy”...[cb22]  Who is the Mal-Gopher? - Implementation and Evaluation of “gimpfuzzy”...
[cb22] Who is the Mal-Gopher? - Implementation and Evaluation of “gimpfuzzy”...
 
[cb22] Mal-gopherとは?Go系マルウェアの分類のためのgimpfuzzy実装と評価 by 澤部 祐太, 甘粕 伸幸, 野村 和也
[cb22] Mal-gopherとは?Go系マルウェアの分類のためのgimpfuzzy実装と評価 by 澤部 祐太, 甘粕 伸幸, 野村 和也[cb22] Mal-gopherとは?Go系マルウェアの分類のためのgimpfuzzy実装と評価 by 澤部 祐太, 甘粕 伸幸, 野村 和也
[cb22] Mal-gopherとは?Go系マルウェアの分類のためのgimpfuzzy実装と評価 by 澤部 祐太, 甘粕 伸幸, 野村 和也
 
[cb22] Tracking the Entire Iceberg - Long-term APT Malware C2 Protocol Emulat...
[cb22] Tracking the Entire Iceberg - Long-term APT Malware C2 Protocol Emulat...[cb22] Tracking the Entire Iceberg - Long-term APT Malware C2 Protocol Emulat...
[cb22] Tracking the Entire Iceberg - Long-term APT Malware C2 Protocol Emulat...
 
[cb22] Fight Against Malware Development Life Cycle by Shusei Tomonaga and Yu...
[cb22] Fight Against Malware Development Life Cycle by Shusei Tomonaga and Yu...[cb22] Fight Against Malware Development Life Cycle by Shusei Tomonaga and Yu...
[cb22] Fight Against Malware Development Life Cycle by Shusei Tomonaga and Yu...
 

Recently uploaded

論文紹介:Coarse-to-Fine Amodal Segmentation with Shape Prior
論文紹介:Coarse-to-Fine Amodal Segmentation with Shape Prior論文紹介:Coarse-to-Fine Amodal Segmentation with Shape Prior
論文紹介:Coarse-to-Fine Amodal Segmentation with Shape Prior
Toru Tamaki
 
MySQLの文字コードと照合順序について 2024/07/05の勉強会で発表されたものです。
MySQLの文字コードと照合順序について 2024/07/05の勉強会で発表されたものです。MySQLの文字コードと照合順序について 2024/07/05の勉強会で発表されたものです。
MySQLの文字コードと照合順序について 2024/07/05の勉強会で発表されたものです。
iPride Co., Ltd.
 
2024/07/04 Blazor+ローコードで実現する.NET資産のモダナイズ
2024/07/04 Blazor+ローコードで実現する.NET資産のモダナイズ2024/07/04 Blazor+ローコードで実現する.NET資産のモダナイズ
2024/07/04 Blazor+ローコードで実現する.NET資産のモダナイズ
Tatsuya Ishikawa
 
MOSHI: 革新的な音声AI QAIが開発した次世代のコミュニケーションツール
MOSHI: 革新的な音声AI QAIが開発した次世代のコミュニケーションツールMOSHI: 革新的な音声AI QAIが開発した次世代のコミュニケーションツール
MOSHI: 革新的な音声AI QAIが開発した次世代のコミュニケーションツール
TsuyoshiSaito7
 
pg_stat_activityの不可解な観測結果の謎 (第47回 PostgreSQLアンカンファレンス@オンライン 発表資料)
pg_stat_activityの不可解な観測結果の謎 (第47回 PostgreSQLアンカンファレンス@オンライン 発表資料)pg_stat_activityの不可解な観測結果の謎 (第47回 PostgreSQLアンカンファレンス@オンライン 発表資料)
pg_stat_activityの不可解な観測結果の謎 (第47回 PostgreSQLアンカンファレンス@オンライン 発表資料)
NTT DATA Technology & Innovation
 
【GPT4-o越えのリアルタイム会話AI】kyutai labsのMoshiデモ動画を解説
【GPT4-o越えのリアルタイム会話AI】kyutai labsのMoshiデモ動画を解説【GPT4-o越えのリアルタイム会話AI】kyutai labsのMoshiデモ動画を解説
【GPT4-o越えのリアルタイム会話AI】kyutai labsのMoshiデモ動画を解説
TsuyoshiSaito7
 
第10回 Gen AI 勉強会「人材育成・教育WG活動報告」とChatGPTでピアノライブ♪
第10回 Gen AI 勉強会「人材育成・教育WG活動報告」とChatGPTでピアノライブ♪第10回 Gen AI 勉強会「人材育成・教育WG活動報告」とChatGPTでピアノライブ♪
第10回 Gen AI 勉強会「人材育成・教育WG活動報告」とChatGPTでピアノライブ♪
嶋 是一 (Yoshikazu SHIMA)
 
能動的サイバー防御の時代へ - GPTsから垣間見えた私達と未来のAIについて
能動的サイバー防御の時代へ - GPTsから垣間見えた私達と未来のAIについて能動的サイバー防御の時代へ - GPTsから垣間見えた私達と未来のAIについて
能動的サイバー防御の時代へ - GPTsから垣間見えた私達と未来のAIについて
Tetsuya Nihonmatsu
 
VRM*VOICEVOX*GoogleCloudを使って自分だけのAIパートナーを作る話
VRM*VOICEVOX*GoogleCloudを使って自分だけのAIパートナーを作る話VRM*VOICEVOX*GoogleCloudを使って自分だけのAIパートナーを作る話
VRM*VOICEVOX*GoogleCloudを使って自分だけのAIパートナーを作る話
company21
 
内製化 × グローバル化を通じた 世界水準の IT 組織づくり - ファーストリテイリング・デジタル変革の挑戦
内製化 × グローバル化を通じた 世界水準の IT 組織づくり - ファーストリテイリング・デジタル変革の挑戦内製化 × グローバル化を通じた 世界水準の IT 組織づくり - ファーストリテイリング・デジタル変革の挑戦
内製化 × グローバル化を通じた 世界水準の IT 組織づくり - ファーストリテイリング・デジタル変革の挑戦
Fast Retailing Co., Ltd.
 
「スマートエスイー」におけるスマートシステム&サービスおよびDX推進人材の産学連携育成ならびに参照モデルに基づく育成プログラム分析
「スマートエスイー」におけるスマートシステム&サービスおよびDX推進人材の産学連携育成ならびに参照モデルに基づく育成プログラム分析「スマートエスイー」におけるスマートシステム&サービスおよびDX推進人材の産学連携育成ならびに参照モデルに基づく育成プログラム分析
「スマートエスイー」におけるスマートシステム&サービスおよびDX推進人材の産学連携育成ならびに参照モデルに基づく育成プログラム分析
Hironori Washizaki
 
PostGISの落とし穴 (第47回 PostgreSQLアンカンファレンス@オンライン 発表資料)
PostGISの落とし穴 (第47回 PostgreSQLアンカンファレンス@オンライン 発表資料)PostGISの落とし穴 (第47回 PostgreSQLアンカンファレンス@オンライン 発表資料)
PostGISの落とし穴 (第47回 PostgreSQLアンカンファレンス@オンライン 発表資料)
NTT DATA Technology & Innovation
 

Recently uploaded (12)

論文紹介:Coarse-to-Fine Amodal Segmentation with Shape Prior
論文紹介:Coarse-to-Fine Amodal Segmentation with Shape Prior論文紹介:Coarse-to-Fine Amodal Segmentation with Shape Prior
論文紹介:Coarse-to-Fine Amodal Segmentation with Shape Prior
 
MySQLの文字コードと照合順序について 2024/07/05の勉強会で発表されたものです。
MySQLの文字コードと照合順序について 2024/07/05の勉強会で発表されたものです。MySQLの文字コードと照合順序について 2024/07/05の勉強会で発表されたものです。
MySQLの文字コードと照合順序について 2024/07/05の勉強会で発表されたものです。
 
2024/07/04 Blazor+ローコードで実現する.NET資産のモダナイズ
2024/07/04 Blazor+ローコードで実現する.NET資産のモダナイズ2024/07/04 Blazor+ローコードで実現する.NET資産のモダナイズ
2024/07/04 Blazor+ローコードで実現する.NET資産のモダナイズ
 
MOSHI: 革新的な音声AI QAIが開発した次世代のコミュニケーションツール
MOSHI: 革新的な音声AI QAIが開発した次世代のコミュニケーションツールMOSHI: 革新的な音声AI QAIが開発した次世代のコミュニケーションツール
MOSHI: 革新的な音声AI QAIが開発した次世代のコミュニケーションツール
 
pg_stat_activityの不可解な観測結果の謎 (第47回 PostgreSQLアンカンファレンス@オンライン 発表資料)
pg_stat_activityの不可解な観測結果の謎 (第47回 PostgreSQLアンカンファレンス@オンライン 発表資料)pg_stat_activityの不可解な観測結果の謎 (第47回 PostgreSQLアンカンファレンス@オンライン 発表資料)
pg_stat_activityの不可解な観測結果の謎 (第47回 PostgreSQLアンカンファレンス@オンライン 発表資料)
 
【GPT4-o越えのリアルタイム会話AI】kyutai labsのMoshiデモ動画を解説
【GPT4-o越えのリアルタイム会話AI】kyutai labsのMoshiデモ動画を解説【GPT4-o越えのリアルタイム会話AI】kyutai labsのMoshiデモ動画を解説
【GPT4-o越えのリアルタイム会話AI】kyutai labsのMoshiデモ動画を解説
 
第10回 Gen AI 勉強会「人材育成・教育WG活動報告」とChatGPTでピアノライブ♪
第10回 Gen AI 勉強会「人材育成・教育WG活動報告」とChatGPTでピアノライブ♪第10回 Gen AI 勉強会「人材育成・教育WG活動報告」とChatGPTでピアノライブ♪
第10回 Gen AI 勉強会「人材育成・教育WG活動報告」とChatGPTでピアノライブ♪
 
能動的サイバー防御の時代へ - GPTsから垣間見えた私達と未来のAIについて
能動的サイバー防御の時代へ - GPTsから垣間見えた私達と未来のAIについて能動的サイバー防御の時代へ - GPTsから垣間見えた私達と未来のAIについて
能動的サイバー防御の時代へ - GPTsから垣間見えた私達と未来のAIについて
 
VRM*VOICEVOX*GoogleCloudを使って自分だけのAIパートナーを作る話
VRM*VOICEVOX*GoogleCloudを使って自分だけのAIパートナーを作る話VRM*VOICEVOX*GoogleCloudを使って自分だけのAIパートナーを作る話
VRM*VOICEVOX*GoogleCloudを使って自分だけのAIパートナーを作る話
 
内製化 × グローバル化を通じた 世界水準の IT 組織づくり - ファーストリテイリング・デジタル変革の挑戦
内製化 × グローバル化を通じた 世界水準の IT 組織づくり - ファーストリテイリング・デジタル変革の挑戦内製化 × グローバル化を通じた 世界水準の IT 組織づくり - ファーストリテイリング・デジタル変革の挑戦
内製化 × グローバル化を通じた 世界水準の IT 組織づくり - ファーストリテイリング・デジタル変革の挑戦
 
「スマートエスイー」におけるスマートシステム&サービスおよびDX推進人材の産学連携育成ならびに参照モデルに基づく育成プログラム分析
「スマートエスイー」におけるスマートシステム&サービスおよびDX推進人材の産学連携育成ならびに参照モデルに基づく育成プログラム分析「スマートエスイー」におけるスマートシステム&サービスおよびDX推進人材の産学連携育成ならびに参照モデルに基づく育成プログラム分析
「スマートエスイー」におけるスマートシステム&サービスおよびDX推進人材の産学連携育成ならびに参照モデルに基づく育成プログラム分析
 
PostGISの落とし穴 (第47回 PostgreSQLアンカンファレンス@オンライン 発表資料)
PostGISの落とし穴 (第47回 PostgreSQLアンカンファレンス@オンライン 発表資料)PostGISの落とし穴 (第47回 PostgreSQLアンカンファレンス@オンライン 発表資料)
PostGISの落とし穴 (第47回 PostgreSQLアンカンファレンス@オンライン 発表資料)
 

[CB16] House of Einherjar :GLIBC上の新たなヒープ活用テクニック by 松隈大樹

  • 2. Hiroki MATSUKUMA (@st4g3r) 新米ペンテスター  サイバーディフェンス研究所所属 CTF Player  TokyoWesterns 興味のあること  Exploitation  GLIBC malloc (現時点では) $whoami
  • 3. tl;dr Heap Exploitation(x64 Linux/Glibc malloc) "House of Einherjar" とは?  Glibc mallocにおける新しいheap exploitation手法で, malloc() の戻り値をおおよそ任意なアドレスに強制させるものである.  通常, ユーザはmalloc()の戻り値のアドレスに対して読み書きを行える.  フラグメント防止のためにあるchunk同士の結合処理を利用する.  Well-sizedなchunk上でのOff-by-one Overflowが直後のchunkの prev_sizeとPREV_INUSEのコントロールをもたらす. Proof of Concept  http://ux.nu/6Rv6h
  • 4. 概要 Glibc malloc  Chunk  Bin  Consolidating Chunks House of Einherjar  Flaw / Flow  Demo  Evaluation  Countermeasures
  • 5. "struct malloc_chunk"  メモリブロックはfree()される際にfree listへとつながれる.  このとき, メモリブロックは"struct malloc_chunk"として扱われる.  ChunkのサイズはSIZE_SZ*2にアライメントされる. (prev_size) size fd bk (not used) (prev_size) size data + pads SIZE_SZ =8byte User's space (a) in-used (b) free 図1 struct malloc_chunk Shared with previous chunk Glibc malloc Chunk
  • 6. 型 名称 説明 INTERNAL_SIZE_T prev_size 自身の直前にあるchunkのサイズ (shared) INTERNAL_SIZE_T size 自身のサイズと現在の状態 struct malloc_chunk *fd (free list上で)前方につながっているchunkへのポインタ struct malloc_chunk *bk (free list上で)後方につながっているchunkへのポインタ 表1: struct malloc_chunk Glibc malloc Chunk
  • 7. "struct malloc_chunk"  メモリブロックはfreeされる際にfree listへとつながれる.  このとき, メモリブロックは"struct malloc_chunk"として扱われる.  ChunkのサイズはSIZE_SZ*2にアライメントされる. (prev_size) size fd bk (not used) (prev_size) size data + pads SIZE_SZ =8byte PMA User's space (a) in-used (b) free 図1 struct malloc_chunk Low 3 bits mean chunk status Shared with previous chunk Glibc malloc Chunk
  • 8. "struct malloc_chunk"  メモリブロックはfreeされる際にfree listへとつながれる.  このとき, メモリブロックは"struct malloc_chunk"として扱われる.  ChunkのサイズはSIZE_SZ*2にアライメントされる. (prev_size) size fd bk (not used) (prev_size) size data + pads SIZE_SZ =8byte PMA User's space (a) in-used (b) free 図1 struct malloc_chunk Low 3 bits mean chunk status  [P]REV_INUSE  IS_[M]MAPPED  NON_MAIN_[A]RENA Shared with previous chunk Glibc malloc Chunk
  • 9. Free chunkはfree list(bin)につながれる  Small bins  MAX_FAST_SIZE < size < MIN_LARGE_SIZE  MAX_FAST_SIZE: 0xa0  MIN_LARGE_SIZE: 0x400  Unsorted bins  free()されたばかりのchunkが一時的に格納されるリスト.  サイズによる制限は無い. Glibc malloc Bin
  • 10. (prev_size) size fd bk (not used) bins[n-1] bins[n] bins[n+1] FD BK 図2. small binのfree list bins c struct malloc_chunk PMA Glibc malloc Bin
  • 11. Glibc malloc Consolidating Chunks メモリ確保と解放を繰り返しているとフラグメント化を起こし てしまう  そこで, free()されるchunkと隣接するfree chunkの結合を考える.  自身の直前のchunkと隣接している.  自身の直後のchunkと隣接している. PREV_INUSE bit  自身の直前に隣接するchunkが使用中か否かを判断するためのフラグ.  これが結合の際の判断基準となる.
  • 12. Glibc malloc Consolidating Chunks Chunkの結合処理はどこにある?  Glibcを読む.  free(p)  __libc_free(p)  _int_free(av, p, have_lock) <- これ!
  • 16. Glibc malloc Consolidating Chunks (prev_size) size prev p (a) prev_inuseのチェック 図4 結合 size = p->size If not prev_inuse(p): prevsize = p->prev_size size += prevsize p += -(long)(prevsize) fd bk (not used) (prev_size) size 0 data + pads p
  • 17. Glibc malloc Consolidating Chunks (prev_size) size (b) 再配置 図4 結合 size = p->size If not prev_inuse(p): prevsize = p->prev_size size += prevsize p += -(long)(prevsize) p fd bk (not used) (prev_size) size 0 data + pads prev p p
  • 18. Glibc malloc Consolidating Chunks (prev_size) size 1 p (c) 結果 図4 結合 p (prev_size) size fd bk (not used) fd bk (not used) (prev_size) size 0 data + pads prev p p
  • 19. House of Einherjar Flaw / Flow 今のところ, これらのことが既知である  "p->prev_size"は, 直前に隣接するchunkと共有されうる.  "p->size"のPREV_INUSE bitを基にchunkの結合の可否を決定する.  新しいpの位置は"p->prev_size"により決定する.  "p = chunk_at_offset(p, -((long)prevsize))"
  • 20. House of Einherjar Flaw / Flow 今のところ, これらのことが既知である  "p->prev_size"は, 直前に隣接するchunkと共有されうる.  "p->size"のPREV_INUSE bitを基にchunkの結合の可否を決定する.  新しいpの位置は"p->prev_size"により決定する.  "p = chunk_at_offset(p, -((long)prevsize))" ここで, 以下の条件について考える  3つのchunkが存在する.  p0: well-sizedなサイズをもつchunk(p1->prev_sizeを内包する).  p1: small binサイズのchunk.  (p2: malloc_consolidate()を抑制するためのchunk.)  p0についてOff-by-oneでNUL byte('¥0')なOverflowが存在する.
  • 21. House of Einherjar Flaw / Flow (prev_size) size data (prev_size) size data + pads 1 well-sized shared (a) Overflow前 図5 House of Einherjarの原理 p0 (used) p1 (used)
  • 22. (prev_size) size data (prev_size) size data + pads 1 (b) Overflow 図5 House of Einherjarの原理 Overflown House of Einherjar Flaw / Flow
  • 23. (prev_size) size data 0xdeadbeef size data + pads '¥0' (c) Overflow後 図5 House of Einherjarの原理 p0 (free) p1 (used) shared well-sized House of Einherjar Flaw / Flow
  • 24. House of Einherjar Flaw / Flow (prev_size) size data 0xdeadbeef size data + pads '¥0' (c) Overflow後 図5 House of Einherjarの原理 p0 (free) p1 (used) shared well-sized size = p1->size If not prev_inuse(p1): prevsize = p1->prev_size size += prevsize p1 += -(long)(prevsize)
  • 25. House of Einherjar Flaw / Flow (prev_size) size data 0xdeadbeef size data + pads '¥0' (c) Overflow後 図5 House of Einherjarの原理 p0 (free) p1 (used) shared well-sized size = p1->size If not prev_inuse(p1): prevsize = 0xdeadbeef size += prevsize p1 += -(long)(prevsize)
  • 26. House of Einherjar Flaw / Flow House of Einherjarに必要なこと  うまくサイズの調整されたchunkがOff-by-oneでOverflowを起こす.  ターゲットとする領域の近くにfake chunkがある.  fd, bkメンバはfake chunk自身を指すようにすると簡単である.  ターゲットとする領域と"p1"のアドレスについての差分が計算可能である.  このとき, これら2つのアドレスのleakが必要となる.  free()時に"p1->size"が大きく変更されるのでその補正が可能である.  ※fake chunkは何回か編集可能であると仮定する.
  • 28. House of Einherjar Evaluation メリット  メモリレイアウトにも依るがOff-by-oneなOverflowさえあればできる.  "House of Force"のような巨大なmalloc()を必要としない. デメリット  fake chunkを置ける領域の近くしかmalloc()で取得できない.  2つのアドレスのleakが必要となる. 評価: "悪くはない"
  • 29. House of Einherjar Countermeasures "struct malloc_chunk"がよくないのでは?  そもそも"chunk->prev_size"が通常の書き込みにより上書きされること がよくない.  そもそもBoundary Tagアルゴリズムだから仕方がない. 対策方法は?  Address checking  結合後の新しいchunkのアドレスは正しいか?  StackとHeapのアドレスは全然違う.  Return addressは守れる.  Heap内でのHouse of Einherjarには対応しきれない.
  • 30. Thank You For Your Attention! Any Questions?