SlideShare a Scribd company logo
1 of 20
2分探索を用いたグラフ列挙
によるAttack surfaceの削減
安藤類央 国立情報学研究所
須崎有康 産業技術総合研究所
4E1 脆弱性解析・対策 1月27日(金) 9:00--11:00
2017年暗号と情報セキュリティシンポジウム
Attack surface (攻撃対象領域)
① システムの設計または導入時に、脅威モデリング(threat modeling)と並行して検討される項目。Software Development
Security (Microsoft Security Development Lifecycle)では特に重要視されている。
https://www.microsoft.com/en-us/sdl/default.aspx
② ソフトウェアが外界(相互作用しているシステムまたはmanipulatorからの入力ソースになる部分)に接している部分はす
べて攻撃対象領域 (Attack surface)になり得る。
③ クラウドの普及により、業務系も含めたアプリケーションがホスティングされる事が多くなっている。その結果、攻撃者
は標的にしているシステムへのコネクティビティ、地理的位置、デバイス特有の情報を得ることなく、攻撃が可能になって
しまう場合が増えており、この点では攻撃対象領域は増加していると言える。
④ ②より厳密な攻撃対象領域の定義
【A】アプリケーションにデータやコマンドが出入りする経路のすべて
【B】それらの経路を保護するコード (リソース接続と認証、認可、アクティビティロギング、データの検証とエンコーディ
ングを含む)
【C】アプリケーションで使用する重要データのすべて (シークレットとキー、知的財産、クリティカルなビジネスデータ、
個人データと PII を含む)
【D】重要データを保護するコード (暗号とチェックサム、アクセス監査、データ完全性、運用上のセキュリティ制御を含む)
https://jpcertcc.github.io/OWASPdocuments/CheatSheets/AttackSurfaceAnalysis.html
本手法が対象とする項目
関連研究
ITS4
ACSAC 2000
MOPS(1)
CCS 2002
MC Meta-Level
Compilation
OSDI 2000
MACE(Symbolic Execution)
USENIX SEC 2011
COTS (ROP)
Usenix 2013
Automated BOF detection
NDSS 2000
Format String
USENIX SEC 2001
MOPS (2)
CCS 2004
CHUCKY
CCS 2013
Computational Verification
(using proverif)
CCS 2012
ConfAid
OSDI 2011
Metal Compiler
Extention
SSP 2002
SLAM microsoft
POPL 2002
ForNox
Hot SDN 2012
Dowser (Guided Fuzzer)
USENIX SEC 2013
F7 verification
CCS 2010
StackGuard
USENIX SEC 1998
Branch Tracing (ROP)
Usenix Sec 2013
Proverif
SSP 2006
Fuzzing
(入出力自動生成)
形式手法
(モデル駆動)
ANGR
2015
Automatic Exploit Generation
NDSS 2012
MetaSymsploit
USENIX SEC 2013
抽象構文木
コンパイラ拡張
静的・整合性
動的・coverage
KLEE
OSDI 2008
Redundant State Detection
USENIX SEC 2013
User constrained
USENIX SEC 2015
Symbolic Execution
提案手法
KLEE2
POPL 2012
Signature拡張
RATS/flaw finder
High coverage / 大規模被覆
Buffer overflow
Signature自動生成
プロトコル検証
背景:本手法で扱う脆弱性
①攻撃手法が未知で、探索・検証対象が未知
量子暗号・新しい理論モデルへの攻撃等
②攻撃対象が既知で、探索・検証対象が既知
検出・対策済み
③攻撃対象が未知で、探索・検証対象が既知
ハッキング・新しいデバイス特有の攻撃 Android stagefright
④攻撃対象が既知で、探索・検証対象が未知
Use-after-free (heap spray) -> CVE-2013-4371 / CVE-2014-1950
Assertion-failure -> CVE-2015-5722
攻撃対象 探索対象
未知 未知 理論・PoC
既知 未知 未知の脆弱性
未知 既知 ハッキング・PoC
既知 既知 既知の脆弱性 http://slideplayer.us/slide/703331/
As of January 2013, GitHub had grown to 3
million users and 4.9 million repositories
(repositories are histories of code shared
on the site). [9] And by December of this
year, the company hit 10 million
repositories.
本手法が対象とする項目
概要:本研究の目的・解析対象・適用手法
本論文では、ソースコードの静的解析による
Attack surface(攻撃対象領域)とコールグラフと対応付け、
削減手法を提案する。
①脆弱性のある関数の検出
■Assertion-failure
Patch(diff)解析による検出
CVE-2015-5722
Parsing malformed keys may cause BIND to exit due
to a failed assertion in buffer.c
■Use-after-free
LALR(最右導出法)による検出
CVE-2013-4371
Use-after-free Xen Hypervisor under high memory
pressure
②コールグラフの列挙による攻撃可能パスの検出と削除、
ノードとエッジ数の算出と考察
CVE-2015-5722 Parsing
malformed keys may
cause BIND to exit due to a
failed assertion in buffer.c
Attack surface
Vulnerable function
提案手法のアルゴリズム
①関数列 routine(R[I], N[J], F[K])を列挙
②呼び出し列 invocation(I[O], M[P], F[Q])を列挙
③Fごとに(R,N)をリストにする
F[k] {(R[i1], N[j1]), (R[i2], N[j2]) . . }
④呼び出し列(I[O], M[P], F[K])について、
M[P]のリストF[k]{R[i]N[j]..}内における位置S[x]を2分探索で特定
⑤S[x-1]の関数(R[I], S[x-1], F[k])と(I[O],F[Q])を結合する。
⑥ ④と⑤を繰り返して、E({(R[i], S[x-1], F[k]), (I[O], M[P], F[K])} ...)を作成する。
CGは全数列挙可能(⑥は必ず終了する)
⑦脆弱性のある関数を起点にして、 E({(R[i], S[x-1], F[k]),(I[O], M[P], F[K])} ...)からコールグラフCG
を列挙する。
終了条件1:エッジの終点がEMPTYである。
終了条件2:エッジの終点がMAINである。
https://github.com/RuoAndo/Saturator/blob/master/postgres/ex.py
検出対象
[1] Assertion failure CVE-2015-5722 (DNS BIND series)
[2] User-after-free CVE-2013-4371 Xen hypervisor
[1] Assertion failure CVE-2015-5722 (DNS BIND series)
表明(assertion):そのプログラムの前提条件を示すのに使われる。表明は、プログラムのその箇所で必ず真で
あるべき式の形式をとる。表明が偽となった場合、プログラムにバグが潜在していることを示している。これを
assertion failureと呼ぶ。
■エラー処理ルーチン:通常発生しうるエラーを処理する
■表明(アサーション):論理的にありえない状況をチェックするのに使う
int *ptr = malloc(sizeof(int) * 10);
assert(ptr != NULL);
mallocの失敗はプログラム内では、論理的にはまず起こりえないことになっているが、オペレーティングシステ
ムは malloc が常に成功することは保証していない。システム上ではmallocが失敗して、ptrにnullが入ることが
ある。
int *ptr;
assert(ptr = malloc(sizeof(int) * 10)); // malloc() が失敗するとNULLを返す。
この文は特定のオプションでコンパイルすると実行されなくなり、結果としてptrが初期化されずに参照されるこ
とになる。
検出対象①
CVE-2015-5722 Parsing malformed keys may
cause BIND to exit due to a failed assertion in buffer.c
isc_result_t
isc_buffer_allocate(isc_mem_t *mctx, isc_buffer_t
**dynbuffer, unsigned int length)
{
isc_buffer_t *dbuf;
REQUIRE(dynbuffer != NULL);
REQUIRE(*dynbuffer == NULL);
dbuf = isc_mem_get(mctx, length +
sizeof(isc_buffer_t));
if (dbuf == NULL)
return (ISC_R_NOMEMORY);
isc_buffer_init(dbuf, ((unsigned char *)dbuf) +
sizeof(isc_buffer_t), length);
dbuf->mctx = mctx;
ENSURE(ISC_BUFFER_VALID(dbuf));
*dynbuffer = dbuf;
return (ISC_R_SUCCESS);
}
bind-9.9.9-P3/lib/isc/include/isc/assertions.h:101:#define
ISC_ENSURE(cond) ((void) 0)
94#if ISC_CHECK_ENSURE != 0
95#define ISC_ENSURE(cond) ¥
96 ((void) ((cond) || ¥
97 ((isc_assertion_failed)(__FILE__, __LINE__, ¥
98 isc_assertiontype_ensure, ¥
99 #cond), 0)))
100#else
101#define ISC_ENSURE(cond) ((void) 0)
102#endif /* ISC_CHECK_ENSURE */
diff -ur bind-9.9.8/lib/isc/buffer.c bind-9.9.9-P3/lib/isc/buffer.c
--- bind-9.9.8/lib/isc/buffer.c 2015-09-09 11:23:50.000000000 +0900
+++ bind-9.9.9-P3/lib/isc/buffer.c 2016-09-09 11:47:21.000000000
+0900
@@ -1,5 +1,5 @@
@@ -462,6 +462,8 @@
+ ENSURE(ISC_BUFFER_VALID(dbuf));
+
*dynbuffer = dbuf;
return (ISC_R_SUCCESS);
上記パッチより、 bind-9.9.8に脆弱性があることが確認できる。
Attack surfaceの削減: 削除可能パスの検出
/bind-9.9.9-P2# global -rx setup_system
setup_system 1897 bin/dig/dig.c setup_system();
setup_system 898 bin/dig/host.c setup_system();
setup_system 333 bin/dig/include/dig/dig.h setup_system(void);
setup_system 913 bin/dig/nslookup.c setup_system();
setup_system 3147 bin/nsupdate/nsupdate.c setup_system();
削除可能パス
CVE-2015-5722 Parsing
malformed keys may cause
BIND to exit due to a failed
assertion in buffer.c
version node invocation edge H M S version node invocation edge H M S
bind9102rc2 11787 106456 100659 1 49 44bind920b1 6442 41734 39355 0 39 41
bind900b2 4254 32096 29479 0 27 42bind9110a2 12630 114127 107958 1 55 1
bind999b2 11272 100576 94936 1 41 19bind942b1 7780 59699 55687 0 58 11
bind982b1 10184 91489 86145 1 31 33bind936 7232 55115 51350 0 54 8
bind900b2 4254 32096 29479 0 27 32bind971rc1 8093 68882 64561 1 39 42
bind9102rc2 11787 106456 100659 1 48 33bind911rc4 5415 36636 34316 0 34 57
bind982b1 10184 91489 86145 1 33 35bind940b2 7750 59431 55412 0 57 31
bind960rc1 7325 58219 54117 0 57 20bind932 7035 53399 49664 0 51 36
bind932b1 7035 53381 49645 0 51 35bind900rc2 4571 31946 29875 0 30 3
bind992rc1 10485 95002 89598 1 35 32bind950a5 7943 60970 56877 0 59 11
bind9110a3 12725 115128 108835 1 58 19bind997b1 10955 98939 93386 1 41 22
bind997rc2 10952 98836 93287 1 38 43bind900b3 4344 31189 29196 0 27 50
bind9110b3 12697 116168 109852 1 57 17bind9103 11839 106791 100980 1 49 50
bind933 7130 54242 50493 0 51 40bind900 4575 32051 29979 0 29 11
bind932b2 7035 53380 49644 0 51 19bind972 8178 69652 65349 1 10 56
bind986 10311 92495 87097 1 32 45bind900rc5 4572 32000 29929 0 29 10
bind9100b1 11544 104543 98833 1 45 41bind911rc7 5416 36661 34341 0 35 39
bind924rc5 6508 48193 44755 0 46 15bind982rc2 10192 91581 86233 1 30 58
bind990rc2 10402 94005 88653 1 34 10bind940b4 7749 59440 55421 0 57 37
bind9101rc2 11726 106065 100295 1 47 14bind960 7325 58219 54117 0 56 30
bind953b1 8194 63151 58987 1 0 36bind931 7008 53389 49673 0 51 7
bind932rc1 7035 53399 49664 0 52 23bind960rc2 7325 58219 54117 0 56 40
bind9102b1 11783 106536 100735 1 50 37bind911rc2 5414 36626 34306 0 36 54
bind921rc2 6573 42562 40026 0 43 12bind993rc2 10580 95791 90330 1 35 24
bind920a1 6284 42327 40062 0 41 22bind927 6618 49626 46177 0 47 5
bind913rc2 5426 36652 34332 0 35 12bind935 7161 54491 50749 0 52 28
bind943rc1 7847 60269 56235 0 57 45bind921 6574 42570 40034 0 40 21
CVE-2015-5722 Parsing malformed keys may cause BIND to exit due to a failed assertion in buffer.c
version search-depth leaf(empty) edge version search-depth leaf(empty) edge
bind920rc9 1 0 14bind940rc1 1 0 14
bind920rc9 2 4 97bind940rc1 2 0 106
bind920rc9 3 7 190bind940rc1 3 2 242
bind999b1 1 0 14bind970b1 1 0 14
bind999b1 2 0 92bind970b1 2 0 106
bind999b1 3 1 290bind970b1 3 2 264
bind912rc1 1 0 14bind9110p1 1 0 1
bind912rc1 2 3 94bind9110p1 2 0 1
bind912rc1 3 11 202bind9110p1 3 0 1
bind924rc8 1 0 14bind950rc1 1 0 14
bind924rc8 2 4 98bind950rc1 2 0 106
bind924rc8 3 7 191bind950rc1 3 2 242
bind900b2 1 0 10bind960rc1 1 0 14
bind900b2 2 6 94bind960rc1 2 0 106
bind900b2 3 12 364bind960rc1 3 2 242
bind922rc1 1 0 14bind976 1 0 14
bind922rc1 2 4 97bind976 2 0 106
bind922rc1 3 7 190bind976 3 2 264
bind9110rc1 1 0 14bind995rc2 1 0 14
bind9110rc1 2 0 114bind995rc2 2 0 104
bind9110rc1 3 1 300bind995rc2 3 1 276
bind925 1 0 14bind961rc1 1 0 14
bind925 2 4 98bind961rc1 2 0 106
bind925 3 7 191bind961rc1 3 2 263
bind927 1 0 14bind953b1 1 0 14
bind927 2 3 104bind953b1 2 0 106
bind927 3 3 206bind953b1 3 2 255
bind932b1 1 0 14bind900rc2 1 0 20
bind932b1 2 0 109bind900rc2 2 4 97
bind932b1 3 2 239bind900rc2 3 9 151
version
search-
depth
empty
(leaf)
edge
bind920rc9 3 7 190
bind920rc9 4 8 258
bind920rc9 5 9 328
bind999b1 3 1 290
bind999b1 4 29 1209
bind999b1 5 60 2119
bind912rc1 3 11 202
bind912rc1 4 23 386
bind912rc1 5 27 461
bind924rc8 3 7 191
bind924rc8 4 8 299
bind924rc8 5 9 383
bind900b2 3 12 364
bind900b2 4 15 568
bind900b2 5 15 675
bind922rc1 3 7 190
bind922rc1 4 8 301
bind922rc1 5 9 385
bind9110rc1 3 1 300
bind9110rc1 4 1 423
bind9110rc1 5 49 2250
bind925 3 7 191
bind925 4 8 299
bind925 5 9 383
bind927 3 3 206
bind927 4 3 317
bind927 5 3 400
bind932b1 3 2 239
bind932b1 4 2 378
bind932b1 5 5 538
bind940rc1 3 2 242
bind940rc1 4 3 356
bind940rc1 5 3 463
bind970b1 3 2 264
bind970b1 4 3 387
bind970b1 5 3 475
課題: search depth > 4 での探索パス数の爆発
[2] User-after-free (aka heap spray) : CVE-2013-4371 Xen hypervisor
http://blog.tempest.com.br/breno-cunha/perspectives-
on-exploit-development-and-cyber-attacks.html
create()
free()
realloc() use()
Jump to payload
on heap
ROP + Shellcode
int *tmp = (int*)realloc(k,(N+1)*sizeof(int));
if( tmp!=NULL ){
k = tmp;
puts("________realloc(k)_________");
for(i=0; i<N+1; i++){
printf("&k[%d]:%p ,
k[%d]=%d¥n",i,&k[i],i,k[i]);
}
}
realloc関数は第一引数で渡したポインタのアドレス位置
から拡張できない場合は新しい場所にメモリ確保を行う。
結果として、内容は保持されるがアドレスが変わる場合がある。
弊害:フラグメンテーションの深刻化・確保された場所は初期化が保障されない。
検査対象② CVE-2013-4371
Use-after-free Xen Hypervisor
402 tmp = realloc(ptr, (i + 1) * sizeof(libxl_cpupoolinfo));
388libxl_cpupoolinfo * libxl_list_cpupool(libxl_ctx *ctx, int *nb_pool)
389{
390 libxl_cpupoolinfo *ptr, *tmp;
397 poolid = 0;
398 for (i = 0;; i++) {
399 info = xc_cpupool_getinfo(ctx->xch, poolid);
400 if (info == NULL)
401 break;
402 tmp = realloc(ptr, (i + 1) * sizeof(libxl_cpupoolinfo));
403 if (!tmp) {
404 LIBXL__LOG_ERRNO(ctx, LIBXL__LOG_ERROR, "allocating cpupool
info");
405 free(ptr);
406 xc_cpupool_infofree(ctx->xch, info);
407 return NULL;
408 }
409 ptr = tmp;
410 ptr[i].poolid = info->cpupool_id;
411 ptr[i].sched_id = info->sched_id;
412 ptr[i].n_dom = info->n_dom;
413 if (libxl_cpumap_alloc(ctx, &ptr[i].cpumap)) {
414 xc_cpupool_infofree(ctx->xch, info);
415 break;
416 }
417 memcpy(ptr[i].cpumap.map, info->cpumap, ptr[i].cpumap.size);
418 poolid = info->cpupool_id + 1;
419 xc_cpupool_infofree(ctx->xch, info);
realloc use-after-free vulnerability
Use-after-free vulnerability in the
libxl_list_cpupool function in the libxl
toolstack library in Xen 4.2.x and 4.3.x,
when running "under memory pressure,"
returns the original pointer when the
realloc function fails, which allows local
users to cause a denial of service (heap
corruption and crash) and possibly
execute arbitrary code via unspecified
vectors.
At line 402, Xen uses realloc for
reallocating the memory. Note that the
address of libxl_cpupoolinfo is already
assigned outside of this routine. Under high
pressure, realloc can not extend the
memory from the original pointer which is
already obtained. in this case, realloc newly
yielding the address which remaining the
data to be written.
Boundary(終了条件)が
緩いループ (pressureを
かけやすい)
Reallocの返り値がポインタ
検査方法の分類
■構文主導型 (Syntax Directed Translation)
- This translator consists of a parser (or grammar) with embedded actions that immediately
generate output.
正規表現、有限オートマトン
ITS4: a static vulnerability scanner for C and C++ code, Computer Security Applications, ACSAC 2002
Chucky: exposing missing checks in source code for vulnerability discovery ccs 2013
■ルール方式 (Rule Based Translation)
- Rule-based translators use the DSL of a particular rule engine to specify a set of “this goes to that”
translation rules.
遷移規則、プッシュダウンオートマトン
Using programmer-written compiler extensions to catch security holes SSP 2002
Checking system rules using system-specific, programmer-written compiler extensions OSDI 2000
■モデル駆動方式 (Model Driven Translation)
- From the input model, a translator can emit output directly, build up strings, build up templates
(documents with “holes” in them where we can stick values), or build up specialized output objects
モデル検査・Concolic execution
MOPS: an infrastructure for examining security properties of software CCS2002
KLEE: Unassisted and Automatic Generation of High-Coverage Tests for Complex Systems Programs,
Usenix Sec 2011
LALR 上昇型最右導出法
for ( i = 0 ;; i ++ )
++
{ }
i=0
assign; φ; increment
loop pattern C
=
statement
https://github.com/RuoAndo/Saturator/tree/master/Saturator-14
Loop block
realloc ( )
statement
expression
block
pattern
Attack surfaceの削減: 削除可能パスの検出 # global -t cmdtable_lookup
cmdtable_lookup tools/libxl/xl_cmdtable.c 390
20struct cmd_spec cmd_table[] = {
34 { "list",
35 &main_list,
36 "List information about all/some domains",
37 "[options] [Domain]¥n",
38 "-l, --long Output all VM details¥n"
39 "-v, --verbose Prints out UUIDs",
40 },
134 { "migrate-receive",
135 &main_migrate_receive,
136 "Restore a domain from a saved state",
137 "- for internal use only",
138},
341 { "cpupool-create",
342 &main_cpupoolcreate,
343 "Create a CPU pool based an ConfigFile",
344 "[options] <ConfigFile> [vars]",
345 "-h, --help Print this help.n"
346 "-f=FILE, --defconfig=FILE Use the given
configuration file.n"
347 "-n, --dryrun Dry run - prints the
resulting configuration."
348 },
削除可能パス
node invocation edge H M S
xen401 1111 193297 7149 2 45 48
xen451 1792 406859 11513 6 5 27
xen420 1542 344695 9566 5 3 49
xen434 1630 367031 10077 5 28 54
xen403 1123 193480 7191 2 44 41
xen461 1783 435286 11795 6 41 25
xen441 1676 389811 10516 5 56 40
xen342 907 163628 5070 2 27 8
xen410 1302 195986 7977 2 54 28
xen343 908 163832 5082 2 26 36
xen453 1795 407036 11546 6 16 7
xen464 1783 436076 11809 6 34 9
xen341 906 163088 5036 2 28 40
xen412 1309 196290 8008 2 54 49
xen415 1384 197232 8560 2 57 32
xen471 2281 466237 16291 7 13 20
xen413 1310 196503 8024 2 56 9
xen340 906 1628849 7250 30 11 28
xen442 1679 389955 10554 5 47 17
xen480 2299 442614 15769 7 51 48
xen423 1550 345345 9670 5 12 36
CVE-2013-4371: realloc Use-after-free vulnerability
Xen 3.4.0 Released
Submitted by stacklet on Tue, 05/26/2009 -
2:34pm
in Xen 3 domU kernel
The latest open source release of Xen is now
available. The new version is 3.4.0:
http://www.xen.org/download
Stacklet has pre-compiled 32 and 64-bit domU
kernels for installation into images that do not
provide a Xen 3 kernel. Please note that these
domU kernels are backward compatible with
earlier 3.* releases of Xen, eg. you can run these
domU kernels with a 3.3.1 hypervisor.
http://stacklet.com/downloads/kernels/xen/xen
domU32bit
http://stacklet.com/downloads/kernels/xen/xen
domU64bit
Linux 2.6.18 with Xen 3.4.0
Linux 2.6.18 with Xen 3.4.0 support
source tarball
version search depth
EMPTY
(LEAF)
EDGE version search depth
EMPTY
(LEAF)
EDGE
xen440 1 1 15xen433 1 1 7
xen440 2 6 62xen433 2 5 36
xen440 3 68 876xen433 3 74 998
xen412 1 0 8xen453 1 1 15
xen412 2 1 17xen453 2 6 65
xen412 3 10 119xen453 3 11 208
xen414 1 0 8xen432 1 1 7
xen414 2 1 17xen432 2 5 36
xen414 3 10 119xen432 3 88 1223
xen410 2 1 17xen450 1 1 15
xen410 3 10 122xen450 2 6 65
xen441 1 1 15xen450 3 11 203
xen441 2 6 62xen451 1 1 15
xen441 3 83 1068xen451 2 6 65
xen415 1 0 8xen451 3 10 201
xen415 2 1 17xen434 1 1 7
xen415 3 10 119xen434 2 5 36
xen422 1 0 8xen434 3 81 1043
xen422 2 3 36xen455 1 1 15
xen422 3 87 1525xen455 2 6 65
xen424 1 0 8xen455 3 12 217
xen424 2 3 36xen430 1 1 7
xen424 3 80 1476xen430 2 5 36
xen413 1 0 8xen430 3 62 761
xen413 2 1 17xen442 1 1 15
xen413 3 10 119xen442 2 6 62
xen425 1 0 8xen442 3 68 876
xen440 :
libxl_list_cpupool : 3 :
68 : 876
psycopg2.Operational
Error: FATAL: sorry,
too many clients
already
FATAL: sorry, too
many clients already
xen440 :
libxl_list_cpupool : 4 :
297 : 4811
xen414 :
libxl_list_cpupool : 3 :
10 : 119
xen414 :
libxl_list_cpupool : 4 :
10 : 123
xen414 :
libxl_list_cpupool : 5 :
10 : 127
課題: search depth > 4 での探索パス数の爆発
まとめと今後の課題
■本論文では、ソースコードの静的解析によるAttack surfaceの削減のためのアルゴリズムを提案し、
実装評価を行った。
■提案アルゴリズムでは、関数呼び出しをエッジとして表現し、終端がEMPTYまたはMAINになるま
でコールグラフを列挙することで、Attack surfaceとなるパスを検出することが可能である。
■評価実験では下記の脆弱性を対象にノード、エッジ、LEAF(空ノード)数の算出等を行った。
CVE-2015-5722 :Parsing malformed keys may cause BIND to exit due to a failed assertion in buffer.c
CVE-2013-4371:Use-after-free vulnerability of Xen Hypervisor under high memory pressure
■今後の課題(1)
探索深さ4以上でのパス数とLeaf node数爆発を抑えるアルゴリズムやシステム構成の提案
■今後の課題(2)
Assertion failureの上昇型最右導出構文解析系での表現形式の実装
■今後の課題(3)
Leaf nodeになっている関数の条件分岐の解析による重みづけグラフの生成と、Leaf node周辺に範囲を絞った効
率的なsymbolic executionの実装

More Related Content

Viewers also liked

[中1英語] 01_英語の勉強の仕方
[中1英語] 01_英語の勉強の仕方[中1英語] 01_英語の勉強の仕方
[中1英語] 01_英語の勉強の仕方curio-e
 
[C13] フラッシュドライブで挑むOracle超高速化と信頼性の両立 by Masashi Fukui
[C13] フラッシュドライブで挑むOracle超高速化と信頼性の両立 by Masashi Fukui[C13] フラッシュドライブで挑むOracle超高速化と信頼性の両立 by Masashi Fukui
[C13] フラッシュドライブで挑むOracle超高速化と信頼性の両立 by Masashi FukuiInsight Technology, Inc.
 
情報技術の基本と仮想化について
情報技術の基本と仮想化について情報技術の基本と仮想化について
情報技術の基本と仮想化についてrookwin
 
情報セキュリティと標準化I 第1回-公開用
情報セキュリティと標準化I 第1回-公開用情報セキュリティと標準化I 第1回-公開用
情報セキュリティと標準化I 第1回-公開用Ruo Ando
 
基本情報技術者試験 勉強会
基本情報技術者試験 勉強会基本情報技術者試験 勉強会
基本情報技術者試験 勉強会Yusuke Furuta
 
4_C言語入門 - n進数と基数変換について
4_C言語入門 - n進数と基数変換について4_C言語入門 - n進数と基数変換について
4_C言語入門 - n進数と基数変換についてbc_rikko
 
講演資料 201606 web公開版
講演資料 201606 web公開版講演資料 201606 web公開版
講演資料 201606 web公開版Ruo Ando
 
オペレーティングシステム 第1回-公開用
オペレーティングシステム 第1回-公開用オペレーティングシステム 第1回-公開用
オペレーティングシステム 第1回-公開用Ruo Ando
 
How to use continuous improvement kungfu to pay down technical debt - Kevin B...
How to use continuous improvement kungfu to pay down technical debt - Kevin B...How to use continuous improvement kungfu to pay down technical debt - Kevin B...
How to use continuous improvement kungfu to pay down technical debt - Kevin B...Devopsdays
 
kagami_comput2015_1
kagami_comput2015_1kagami_comput2015_1
kagami_comput2015_1swkagami
 
12_C言語入門 - 読みやすいソースコードを書く
12_C言語入門 - 読みやすいソースコードを書く12_C言語入門 - 読みやすいソースコードを書く
12_C言語入門 - 読みやすいソースコードを書くbc_rikko
 
kagami_comput2016_12
kagami_comput2016_12kagami_comput2016_12
kagami_comput2016_12swkagami
 
kagami_comput2016_13
kagami_comput2016_13kagami_comput2016_13
kagami_comput2016_13swkagami
 
「情報処理技術者試験。H28年度春期からの“情報セキュリティマネジメント試験”と,SC試験合格者“登録制度”の動向」
「情報処理技術者試験。H28年度春期からの“情報セキュリティマネジメント試験”と,SC試験合格者“登録制度”の動向」「情報処理技術者試験。H28年度春期からの“情報セキュリティマネジメント試験”と,SC試験合格者“登録制度”の動向」
「情報処理技術者試験。H28年度春期からの“情報セキュリティマネジメント試験”と,SC試験合格者“登録制度”の動向」Naoki MURAYAMA
 
1-1_C言語入門 - C言語について
1-1_C言語入門 - C言語について1-1_C言語入門 - C言語について
1-1_C言語入門 - C言語についてbc_rikko
 
株式会社リアルワールド 会社案内
株式会社リアルワールド 会社案内株式会社リアルワールド 会社案内
株式会社リアルワールド 会社案内Daisuke Nakamura
 
情報処理技術者試験キックオフ
情報処理技術者試験キックオフ情報処理技術者試験キックオフ
情報処理技術者試験キックオフHideyuki Shimada
 
kagami_comput2016_08
kagami_comput2016_08kagami_comput2016_08
kagami_comput2016_08swkagami
 
kagami_comput2016_09
kagami_comput2016_09kagami_comput2016_09
kagami_comput2016_09swkagami
 

Viewers also liked (20)

[中1英語] 01_英語の勉強の仕方
[中1英語] 01_英語の勉強の仕方[中1英語] 01_英語の勉強の仕方
[中1英語] 01_英語の勉強の仕方
 
[C13] フラッシュドライブで挑むOracle超高速化と信頼性の両立 by Masashi Fukui
[C13] フラッシュドライブで挑むOracle超高速化と信頼性の両立 by Masashi Fukui[C13] フラッシュドライブで挑むOracle超高速化と信頼性の両立 by Masashi Fukui
[C13] フラッシュドライブで挑むOracle超高速化と信頼性の両立 by Masashi Fukui
 
情報技術の基本と仮想化について
情報技術の基本と仮想化について情報技術の基本と仮想化について
情報技術の基本と仮想化について
 
情報セキュリティと標準化I 第1回-公開用
情報セキュリティと標準化I 第1回-公開用情報セキュリティと標準化I 第1回-公開用
情報セキュリティと標準化I 第1回-公開用
 
基本情報技術者試験 勉強会
基本情報技術者試験 勉強会基本情報技術者試験 勉強会
基本情報技術者試験 勉強会
 
4_C言語入門 - n進数と基数変換について
4_C言語入門 - n進数と基数変換について4_C言語入門 - n進数と基数変換について
4_C言語入門 - n進数と基数変換について
 
講演資料 201606 web公開版
講演資料 201606 web公開版講演資料 201606 web公開版
講演資料 201606 web公開版
 
オペレーティングシステム 第1回-公開用
オペレーティングシステム 第1回-公開用オペレーティングシステム 第1回-公開用
オペレーティングシステム 第1回-公開用
 
How to use continuous improvement kungfu to pay down technical debt - Kevin B...
How to use continuous improvement kungfu to pay down technical debt - Kevin B...How to use continuous improvement kungfu to pay down technical debt - Kevin B...
How to use continuous improvement kungfu to pay down technical debt - Kevin B...
 
kagami_comput2015_1
kagami_comput2015_1kagami_comput2015_1
kagami_comput2015_1
 
Web 2.0
Web 2.0Web 2.0
Web 2.0
 
12_C言語入門 - 読みやすいソースコードを書く
12_C言語入門 - 読みやすいソースコードを書く12_C言語入門 - 読みやすいソースコードを書く
12_C言語入門 - 読みやすいソースコードを書く
 
kagami_comput2016_12
kagami_comput2016_12kagami_comput2016_12
kagami_comput2016_12
 
kagami_comput2016_13
kagami_comput2016_13kagami_comput2016_13
kagami_comput2016_13
 
「情報処理技術者試験。H28年度春期からの“情報セキュリティマネジメント試験”と,SC試験合格者“登録制度”の動向」
「情報処理技術者試験。H28年度春期からの“情報セキュリティマネジメント試験”と,SC試験合格者“登録制度”の動向」「情報処理技術者試験。H28年度春期からの“情報セキュリティマネジメント試験”と,SC試験合格者“登録制度”の動向」
「情報処理技術者試験。H28年度春期からの“情報セキュリティマネジメント試験”と,SC試験合格者“登録制度”の動向」
 
1-1_C言語入門 - C言語について
1-1_C言語入門 - C言語について1-1_C言語入門 - C言語について
1-1_C言語入門 - C言語について
 
株式会社リアルワールド 会社案内
株式会社リアルワールド 会社案内株式会社リアルワールド 会社案内
株式会社リアルワールド 会社案内
 
情報処理技術者試験キックオフ
情報処理技術者試験キックオフ情報処理技術者試験キックオフ
情報処理技術者試験キックオフ
 
kagami_comput2016_08
kagami_comput2016_08kagami_comput2016_08
kagami_comput2016_08
 
kagami_comput2016_09
kagami_comput2016_09kagami_comput2016_09
kagami_comput2016_09
 

Similar to Scis2017 2007-01-27-02

文献紹介:SegFormer: Simple and Efficient Design for Semantic Segmentation with Tr...
文献紹介:SegFormer: Simple and Efficient Design for Semantic Segmentation with Tr...文献紹介:SegFormer: Simple and Efficient Design for Semantic Segmentation with Tr...
文献紹介:SegFormer: Simple and Efficient Design for Semantic Segmentation with Tr...Toru Tamaki
 
Maatkit で MySQL チューニング
Maatkit で MySQL チューニングMaatkit で MySQL チューニング
Maatkit で MySQL チューニングKensuke Nagae
 
そうだ 検証、しよう。
そうだ 検証、しよう。そうだ 検証、しよう。
そうだ 検証、しよう。健一 三原
 
ftp.jaist.ac.jpの低レイヤーの話 on 第九回 カーネル/VM探検隊
ftp.jaist.ac.jpの低レイヤーの話 on 第九回 カーネル/VM探検隊ftp.jaist.ac.jpの低レイヤーの話 on 第九回 カーネル/VM探検隊
ftp.jaist.ac.jpの低レイヤーの話 on 第九回 カーネル/VM探検隊Kazuhiro Fujieda
 
DBP-013_Cortana Intelligence に切り込む! ~未来予測の仕組みと実装~
DBP-013_Cortana Intelligence に切り込む! ~未来予測の仕組みと実装~DBP-013_Cortana Intelligence に切り込む! ~未来予測の仕組みと実装~
DBP-013_Cortana Intelligence に切り込む! ~未来予測の仕組みと実装~decode2016
 
M08_あなたの知らない Azure インフラの世界 [Microsoft Japan Digital Days]
M08_あなたの知らない Azure インフラの世界 [Microsoft Japan Digital Days]M08_あなたの知らない Azure インフラの世界 [Microsoft Japan Digital Days]
M08_あなたの知らない Azure インフラの世界 [Microsoft Japan Digital Days]日本マイクロソフト株式会社
 
RとStanでクラウドセットアップ時間を分析してみたら #TokyoR
RとStanでクラウドセットアップ時間を分析してみたら #TokyoRRとStanでクラウドセットアップ時間を分析してみたら #TokyoR
RとStanでクラウドセットアップ時間を分析してみたら #TokyoRShuyo Nakatani
 
[db tech showcase Tokyo 2015] A14:Amazon Redshiftの元となったスケールアウト型カラムナーDB徹底解説 その...
[db tech showcase Tokyo 2015] A14:Amazon Redshiftの元となったスケールアウト型カラムナーDB徹底解説 その...[db tech showcase Tokyo 2015] A14:Amazon Redshiftの元となったスケールアウト型カラムナーDB徹底解説 その...
[db tech showcase Tokyo 2015] A14:Amazon Redshiftの元となったスケールアウト型カラムナーDB徹底解説 その...Insight Technology, Inc.
 
Ipmaster1040a config 9.0
Ipmaster1040a config 9.0Ipmaster1040a config 9.0
Ipmaster1040a config 9.0bgnos
 
"商用ホワイトボックス暗号方式" に対する "鍵回復攻撃" by アン・サンファン
"商用ホワイトボックス暗号方式" に対する "鍵回復攻撃" by アン・サンファン"商用ホワイトボックス暗号方式" に対する "鍵回復攻撃" by アン・サンファン
"商用ホワイトボックス暗号方式" に対する "鍵回復攻撃" by アン・サンファンCODE BLUE
 
Memoizeの仕組み(第41回PostgreSQLアンカンファレンス@オンライン 発表資料)
Memoizeの仕組み(第41回PostgreSQLアンカンファレンス@オンライン 発表資料)Memoizeの仕組み(第41回PostgreSQLアンカンファレンス@オンライン 発表資料)
Memoizeの仕組み(第41回PostgreSQLアンカンファレンス@オンライン 発表資料)NTT DATA Technology & Innovation
 
xtsパッケージで時系列解析
xtsパッケージで時系列解析xtsパッケージで時系列解析
xtsパッケージで時系列解析Nagi Teramo
 
Linux Performance Analysis in 15 minutes
Linux Performance Analysis in 15 minutesLinux Performance Analysis in 15 minutes
Linux Performance Analysis in 15 minutesYohei Azekatsu
 
[Azure Antenna] クラウドで HPC ~ HPC 環境の構築から、アプリケーションの実行まで ~
[Azure Antenna] クラウドで HPC ~ HPC 環境の構築から、アプリケーションの実行まで ~ [Azure Antenna] クラウドで HPC ~ HPC 環境の構築から、アプリケーションの実行まで ~
[Azure Antenna] クラウドで HPC ~ HPC 環境の構築から、アプリケーションの実行まで ~ Shuichi Gojuki
 
Simulation_assignment9
Simulation_assignment9Simulation_assignment9
Simulation_assignment9T2C_
 
Windowsでも使えるシェル
Windowsでも使えるシェルWindowsでも使えるシェル
Windowsでも使えるシェルTetsuya Hasegawa
 
文献紹介:Deep Analysis of CNN-Based Spatio-Temporal Representations for Action Re...
文献紹介:Deep Analysis of CNN-Based Spatio-Temporal Representations for Action Re...文献紹介:Deep Analysis of CNN-Based Spatio-Temporal Representations for Action Re...
文献紹介:Deep Analysis of CNN-Based Spatio-Temporal Representations for Action Re...Toru Tamaki
 
文献紹介:CutDepth: Edge-aware Data Augmentation in Depth Estimation
文献紹介:CutDepth: Edge-aware Data Augmentation in Depth Estimation文献紹介:CutDepth: Edge-aware Data Augmentation in Depth Estimation
文献紹介:CutDepth: Edge-aware Data Augmentation in Depth EstimationToru Tamaki
 
伝統的工芸品の世界販売戦略を支援するためのバーチャルショウケース~テクスチャ・ツール~
伝統的工芸品の世界販売戦略を支援するためのバーチャルショウケース~テクスチャ・ツール~伝統的工芸品の世界販売戦略を支援するためのバーチャルショウケース~テクスチャ・ツール~
伝統的工芸品の世界販売戦略を支援するためのバーチャルショウケース~テクスチャ・ツール~Shogo Muramatsu
 

Similar to Scis2017 2007-01-27-02 (20)

文献紹介:SegFormer: Simple and Efficient Design for Semantic Segmentation with Tr...
文献紹介:SegFormer: Simple and Efficient Design for Semantic Segmentation with Tr...文献紹介:SegFormer: Simple and Efficient Design for Semantic Segmentation with Tr...
文献紹介:SegFormer: Simple and Efficient Design for Semantic Segmentation with Tr...
 
Maatkit で MySQL チューニング
Maatkit で MySQL チューニングMaatkit で MySQL チューニング
Maatkit で MySQL チューニング
 
そうだ 検証、しよう。
そうだ 検証、しよう。そうだ 検証、しよう。
そうだ 検証、しよう。
 
ftp.jaist.ac.jpの低レイヤーの話 on 第九回 カーネル/VM探検隊
ftp.jaist.ac.jpの低レイヤーの話 on 第九回 カーネル/VM探検隊ftp.jaist.ac.jpの低レイヤーの話 on 第九回 カーネル/VM探検隊
ftp.jaist.ac.jpの低レイヤーの話 on 第九回 カーネル/VM探検隊
 
AHC
AHCAHC
AHC
 
DBP-013_Cortana Intelligence に切り込む! ~未来予測の仕組みと実装~
DBP-013_Cortana Intelligence に切り込む! ~未来予測の仕組みと実装~DBP-013_Cortana Intelligence に切り込む! ~未来予測の仕組みと実装~
DBP-013_Cortana Intelligence に切り込む! ~未来予測の仕組みと実装~
 
M08_あなたの知らない Azure インフラの世界 [Microsoft Japan Digital Days]
M08_あなたの知らない Azure インフラの世界 [Microsoft Japan Digital Days]M08_あなたの知らない Azure インフラの世界 [Microsoft Japan Digital Days]
M08_あなたの知らない Azure インフラの世界 [Microsoft Japan Digital Days]
 
RとStanでクラウドセットアップ時間を分析してみたら #TokyoR
RとStanでクラウドセットアップ時間を分析してみたら #TokyoRRとStanでクラウドセットアップ時間を分析してみたら #TokyoR
RとStanでクラウドセットアップ時間を分析してみたら #TokyoR
 
[db tech showcase Tokyo 2015] A14:Amazon Redshiftの元となったスケールアウト型カラムナーDB徹底解説 その...
[db tech showcase Tokyo 2015] A14:Amazon Redshiftの元となったスケールアウト型カラムナーDB徹底解説 その...[db tech showcase Tokyo 2015] A14:Amazon Redshiftの元となったスケールアウト型カラムナーDB徹底解説 その...
[db tech showcase Tokyo 2015] A14:Amazon Redshiftの元となったスケールアウト型カラムナーDB徹底解説 その...
 
Ipmaster1040a config 9.0
Ipmaster1040a config 9.0Ipmaster1040a config 9.0
Ipmaster1040a config 9.0
 
"商用ホワイトボックス暗号方式" に対する "鍵回復攻撃" by アン・サンファン
"商用ホワイトボックス暗号方式" に対する "鍵回復攻撃" by アン・サンファン"商用ホワイトボックス暗号方式" に対する "鍵回復攻撃" by アン・サンファン
"商用ホワイトボックス暗号方式" に対する "鍵回復攻撃" by アン・サンファン
 
Memoizeの仕組み(第41回PostgreSQLアンカンファレンス@オンライン 発表資料)
Memoizeの仕組み(第41回PostgreSQLアンカンファレンス@オンライン 発表資料)Memoizeの仕組み(第41回PostgreSQLアンカンファレンス@オンライン 発表資料)
Memoizeの仕組み(第41回PostgreSQLアンカンファレンス@オンライン 発表資料)
 
xtsパッケージで時系列解析
xtsパッケージで時系列解析xtsパッケージで時系列解析
xtsパッケージで時系列解析
 
Linux Performance Analysis in 15 minutes
Linux Performance Analysis in 15 minutesLinux Performance Analysis in 15 minutes
Linux Performance Analysis in 15 minutes
 
[Azure Antenna] クラウドで HPC ~ HPC 環境の構築から、アプリケーションの実行まで ~
[Azure Antenna] クラウドで HPC ~ HPC 環境の構築から、アプリケーションの実行まで ~ [Azure Antenna] クラウドで HPC ~ HPC 環境の構築から、アプリケーションの実行まで ~
[Azure Antenna] クラウドで HPC ~ HPC 環境の構築から、アプリケーションの実行まで ~
 
Simulation_assignment9
Simulation_assignment9Simulation_assignment9
Simulation_assignment9
 
Windowsでも使えるシェル
Windowsでも使えるシェルWindowsでも使えるシェル
Windowsでも使えるシェル
 
文献紹介:Deep Analysis of CNN-Based Spatio-Temporal Representations for Action Re...
文献紹介:Deep Analysis of CNN-Based Spatio-Temporal Representations for Action Re...文献紹介:Deep Analysis of CNN-Based Spatio-Temporal Representations for Action Re...
文献紹介:Deep Analysis of CNN-Based Spatio-Temporal Representations for Action Re...
 
文献紹介:CutDepth: Edge-aware Data Augmentation in Depth Estimation
文献紹介:CutDepth: Edge-aware Data Augmentation in Depth Estimation文献紹介:CutDepth: Edge-aware Data Augmentation in Depth Estimation
文献紹介:CutDepth: Edge-aware Data Augmentation in Depth Estimation
 
伝統的工芸品の世界販売戦略を支援するためのバーチャルショウケース~テクスチャ・ツール~
伝統的工芸品の世界販売戦略を支援するためのバーチャルショウケース~テクスチャ・ツール~伝統的工芸品の世界販売戦略を支援するためのバーチャルショウケース~テクスチャ・ツール~
伝統的工芸品の世界販売戦略を支援するためのバーチャルショウケース~テクスチャ・ツール~
 

More from Ruo Ando

KISTI-NII Joint Security Workshop 2023.pdf
KISTI-NII Joint Security Workshop 2023.pdfKISTI-NII Joint Security Workshop 2023.pdf
KISTI-NII Joint Security Workshop 2023.pdfRuo Ando
 
Gartner 「セキュリティ&リスクマネジメントサミット 2019」- 安藤
Gartner 「セキュリティ&リスクマネジメントサミット 2019」- 安藤Gartner 「セキュリティ&リスクマネジメントサミット 2019」- 安藤
Gartner 「セキュリティ&リスクマネジメントサミット 2019」- 安藤Ruo Ando
 
解説#86 決定木 - ss.pdf
解説#86 決定木 - ss.pdf解説#86 決定木 - ss.pdf
解説#86 決定木 - ss.pdfRuo Ando
 
SaaSアカデミー for バックオフィス アイドルと学ぶDX講座 ~アイドル戦略に見るDXを専門家が徹底解説~
SaaSアカデミー for バックオフィス アイドルと学ぶDX講座  ~アイドル戦略に見るDXを専門家が徹底解説~SaaSアカデミー for バックオフィス アイドルと学ぶDX講座  ~アイドル戦略に見るDXを専門家が徹底解説~
SaaSアカデミー for バックオフィス アイドルと学ぶDX講座 ~アイドル戦略に見るDXを専門家が徹底解説~Ruo Ando
 
解説#83 情報エントロピー
解説#83 情報エントロピー解説#83 情報エントロピー
解説#83 情報エントロピーRuo Ando
 
解説#82 記号論理学
解説#82 記号論理学解説#82 記号論理学
解説#82 記号論理学Ruo Ando
 
解説#81 ロジスティック回帰
解説#81 ロジスティック回帰解説#81 ロジスティック回帰
解説#81 ロジスティック回帰Ruo Ando
 
解説#74 連結リスト
解説#74 連結リスト解説#74 連結リスト
解説#74 連結リストRuo Ando
 
解説#76 福岡正信
解説#76 福岡正信解説#76 福岡正信
解説#76 福岡正信Ruo Ando
 
解説#77 非加算無限
解説#77 非加算無限解説#77 非加算無限
解説#77 非加算無限Ruo Ando
 
解説#1 C言語ポインタとアドレス
解説#1 C言語ポインタとアドレス解説#1 C言語ポインタとアドレス
解説#1 C言語ポインタとアドレスRuo Ando
 
解説#78 誤差逆伝播
解説#78 誤差逆伝播解説#78 誤差逆伝播
解説#78 誤差逆伝播Ruo Ando
 
解説#73 ハフマン符号
解説#73 ハフマン符号解説#73 ハフマン符号
解説#73 ハフマン符号Ruo Ando
 
【技術解説20】 ミニバッチ確率的勾配降下法
【技術解説20】 ミニバッチ確率的勾配降下法【技術解説20】 ミニバッチ確率的勾配降下法
【技術解説20】 ミニバッチ確率的勾配降下法Ruo Ando
 
【技術解説4】assertion failureとuse after-free
【技術解説4】assertion failureとuse after-free【技術解説4】assertion failureとuse after-free
【技術解説4】assertion failureとuse after-freeRuo Ando
 
ITmedia Security Week 2021 講演資料
ITmedia Security Week 2021 講演資料 ITmedia Security Week 2021 講演資料
ITmedia Security Week 2021 講演資料 Ruo Ando
 
ファジングの解説
ファジングの解説ファジングの解説
ファジングの解説Ruo Ando
 
AI(機械学習・深層学習)との協働スキルとOperational AIの事例紹介 @ ビジネス+ITセミナー 2020年11月
AI(機械学習・深層学習)との協働スキルとOperational AIの事例紹介 @ ビジネス+ITセミナー 2020年11月AI(機械学習・深層学習)との協働スキルとOperational AIの事例紹介 @ ビジネス+ITセミナー 2020年11月
AI(機械学習・深層学習)との協働スキルとOperational AIの事例紹介 @ ビジネス+ITセミナー 2020年11月Ruo Ando
 
【AI実装4】TensorFlowのプログラムを読む2 非線形回帰
【AI実装4】TensorFlowのプログラムを読む2 非線形回帰【AI実装4】TensorFlowのプログラムを読む2 非線形回帰
【AI実装4】TensorFlowのプログラムを読む2 非線形回帰Ruo Ando
 
Intel Trusted Computing Group 1st Workshop
Intel Trusted Computing Group 1st WorkshopIntel Trusted Computing Group 1st Workshop
Intel Trusted Computing Group 1st WorkshopRuo Ando
 

More from Ruo Ando (20)

KISTI-NII Joint Security Workshop 2023.pdf
KISTI-NII Joint Security Workshop 2023.pdfKISTI-NII Joint Security Workshop 2023.pdf
KISTI-NII Joint Security Workshop 2023.pdf
 
Gartner 「セキュリティ&リスクマネジメントサミット 2019」- 安藤
Gartner 「セキュリティ&リスクマネジメントサミット 2019」- 安藤Gartner 「セキュリティ&リスクマネジメントサミット 2019」- 安藤
Gartner 「セキュリティ&リスクマネジメントサミット 2019」- 安藤
 
解説#86 決定木 - ss.pdf
解説#86 決定木 - ss.pdf解説#86 決定木 - ss.pdf
解説#86 決定木 - ss.pdf
 
SaaSアカデミー for バックオフィス アイドルと学ぶDX講座 ~アイドル戦略に見るDXを専門家が徹底解説~
SaaSアカデミー for バックオフィス アイドルと学ぶDX講座  ~アイドル戦略に見るDXを専門家が徹底解説~SaaSアカデミー for バックオフィス アイドルと学ぶDX講座  ~アイドル戦略に見るDXを専門家が徹底解説~
SaaSアカデミー for バックオフィス アイドルと学ぶDX講座 ~アイドル戦略に見るDXを専門家が徹底解説~
 
解説#83 情報エントロピー
解説#83 情報エントロピー解説#83 情報エントロピー
解説#83 情報エントロピー
 
解説#82 記号論理学
解説#82 記号論理学解説#82 記号論理学
解説#82 記号論理学
 
解説#81 ロジスティック回帰
解説#81 ロジスティック回帰解説#81 ロジスティック回帰
解説#81 ロジスティック回帰
 
解説#74 連結リスト
解説#74 連結リスト解説#74 連結リスト
解説#74 連結リスト
 
解説#76 福岡正信
解説#76 福岡正信解説#76 福岡正信
解説#76 福岡正信
 
解説#77 非加算無限
解説#77 非加算無限解説#77 非加算無限
解説#77 非加算無限
 
解説#1 C言語ポインタとアドレス
解説#1 C言語ポインタとアドレス解説#1 C言語ポインタとアドレス
解説#1 C言語ポインタとアドレス
 
解説#78 誤差逆伝播
解説#78 誤差逆伝播解説#78 誤差逆伝播
解説#78 誤差逆伝播
 
解説#73 ハフマン符号
解説#73 ハフマン符号解説#73 ハフマン符号
解説#73 ハフマン符号
 
【技術解説20】 ミニバッチ確率的勾配降下法
【技術解説20】 ミニバッチ確率的勾配降下法【技術解説20】 ミニバッチ確率的勾配降下法
【技術解説20】 ミニバッチ確率的勾配降下法
 
【技術解説4】assertion failureとuse after-free
【技術解説4】assertion failureとuse after-free【技術解説4】assertion failureとuse after-free
【技術解説4】assertion failureとuse after-free
 
ITmedia Security Week 2021 講演資料
ITmedia Security Week 2021 講演資料 ITmedia Security Week 2021 講演資料
ITmedia Security Week 2021 講演資料
 
ファジングの解説
ファジングの解説ファジングの解説
ファジングの解説
 
AI(機械学習・深層学習)との協働スキルとOperational AIの事例紹介 @ ビジネス+ITセミナー 2020年11月
AI(機械学習・深層学習)との協働スキルとOperational AIの事例紹介 @ ビジネス+ITセミナー 2020年11月AI(機械学習・深層学習)との協働スキルとOperational AIの事例紹介 @ ビジネス+ITセミナー 2020年11月
AI(機械学習・深層学習)との協働スキルとOperational AIの事例紹介 @ ビジネス+ITセミナー 2020年11月
 
【AI実装4】TensorFlowのプログラムを読む2 非線形回帰
【AI実装4】TensorFlowのプログラムを読む2 非線形回帰【AI実装4】TensorFlowのプログラムを読む2 非線形回帰
【AI実装4】TensorFlowのプログラムを読む2 非線形回帰
 
Intel Trusted Computing Group 1st Workshop
Intel Trusted Computing Group 1st WorkshopIntel Trusted Computing Group 1st Workshop
Intel Trusted Computing Group 1st Workshop
 

Scis2017 2007-01-27-02

  • 1. 2分探索を用いたグラフ列挙 によるAttack surfaceの削減 安藤類央 国立情報学研究所 須崎有康 産業技術総合研究所 4E1 脆弱性解析・対策 1月27日(金) 9:00--11:00 2017年暗号と情報セキュリティシンポジウム
  • 2. Attack surface (攻撃対象領域) ① システムの設計または導入時に、脅威モデリング(threat modeling)と並行して検討される項目。Software Development Security (Microsoft Security Development Lifecycle)では特に重要視されている。 https://www.microsoft.com/en-us/sdl/default.aspx ② ソフトウェアが外界(相互作用しているシステムまたはmanipulatorからの入力ソースになる部分)に接している部分はす べて攻撃対象領域 (Attack surface)になり得る。 ③ クラウドの普及により、業務系も含めたアプリケーションがホスティングされる事が多くなっている。その結果、攻撃者 は標的にしているシステムへのコネクティビティ、地理的位置、デバイス特有の情報を得ることなく、攻撃が可能になって しまう場合が増えており、この点では攻撃対象領域は増加していると言える。 ④ ②より厳密な攻撃対象領域の定義 【A】アプリケーションにデータやコマンドが出入りする経路のすべて 【B】それらの経路を保護するコード (リソース接続と認証、認可、アクティビティロギング、データの検証とエンコーディ ングを含む) 【C】アプリケーションで使用する重要データのすべて (シークレットとキー、知的財産、クリティカルなビジネスデータ、 個人データと PII を含む) 【D】重要データを保護するコード (暗号とチェックサム、アクセス監査、データ完全性、運用上のセキュリティ制御を含む) https://jpcertcc.github.io/OWASPdocuments/CheatSheets/AttackSurfaceAnalysis.html 本手法が対象とする項目
  • 3. 関連研究 ITS4 ACSAC 2000 MOPS(1) CCS 2002 MC Meta-Level Compilation OSDI 2000 MACE(Symbolic Execution) USENIX SEC 2011 COTS (ROP) Usenix 2013 Automated BOF detection NDSS 2000 Format String USENIX SEC 2001 MOPS (2) CCS 2004 CHUCKY CCS 2013 Computational Verification (using proverif) CCS 2012 ConfAid OSDI 2011 Metal Compiler Extention SSP 2002 SLAM microsoft POPL 2002 ForNox Hot SDN 2012 Dowser (Guided Fuzzer) USENIX SEC 2013 F7 verification CCS 2010 StackGuard USENIX SEC 1998 Branch Tracing (ROP) Usenix Sec 2013 Proverif SSP 2006 Fuzzing (入出力自動生成) 形式手法 (モデル駆動) ANGR 2015 Automatic Exploit Generation NDSS 2012 MetaSymsploit USENIX SEC 2013 抽象構文木 コンパイラ拡張 静的・整合性 動的・coverage KLEE OSDI 2008 Redundant State Detection USENIX SEC 2013 User constrained USENIX SEC 2015 Symbolic Execution 提案手法 KLEE2 POPL 2012 Signature拡張 RATS/flaw finder High coverage / 大規模被覆 Buffer overflow Signature自動生成 プロトコル検証
  • 4. 背景:本手法で扱う脆弱性 ①攻撃手法が未知で、探索・検証対象が未知 量子暗号・新しい理論モデルへの攻撃等 ②攻撃対象が既知で、探索・検証対象が既知 検出・対策済み ③攻撃対象が未知で、探索・検証対象が既知 ハッキング・新しいデバイス特有の攻撃 Android stagefright ④攻撃対象が既知で、探索・検証対象が未知 Use-after-free (heap spray) -> CVE-2013-4371 / CVE-2014-1950 Assertion-failure -> CVE-2015-5722 攻撃対象 探索対象 未知 未知 理論・PoC 既知 未知 未知の脆弱性 未知 既知 ハッキング・PoC 既知 既知 既知の脆弱性 http://slideplayer.us/slide/703331/ As of January 2013, GitHub had grown to 3 million users and 4.9 million repositories (repositories are histories of code shared on the site). [9] And by December of this year, the company hit 10 million repositories. 本手法が対象とする項目
  • 5. 概要:本研究の目的・解析対象・適用手法 本論文では、ソースコードの静的解析による Attack surface(攻撃対象領域)とコールグラフと対応付け、 削減手法を提案する。 ①脆弱性のある関数の検出 ■Assertion-failure Patch(diff)解析による検出 CVE-2015-5722 Parsing malformed keys may cause BIND to exit due to a failed assertion in buffer.c ■Use-after-free LALR(最右導出法)による検出 CVE-2013-4371 Use-after-free Xen Hypervisor under high memory pressure ②コールグラフの列挙による攻撃可能パスの検出と削除、 ノードとエッジ数の算出と考察 CVE-2015-5722 Parsing malformed keys may cause BIND to exit due to a failed assertion in buffer.c Attack surface Vulnerable function
  • 6. 提案手法のアルゴリズム ①関数列 routine(R[I], N[J], F[K])を列挙 ②呼び出し列 invocation(I[O], M[P], F[Q])を列挙 ③Fごとに(R,N)をリストにする F[k] {(R[i1], N[j1]), (R[i2], N[j2]) . . } ④呼び出し列(I[O], M[P], F[K])について、 M[P]のリストF[k]{R[i]N[j]..}内における位置S[x]を2分探索で特定 ⑤S[x-1]の関数(R[I], S[x-1], F[k])と(I[O],F[Q])を結合する。 ⑥ ④と⑤を繰り返して、E({(R[i], S[x-1], F[k]), (I[O], M[P], F[K])} ...)を作成する。 CGは全数列挙可能(⑥は必ず終了する) ⑦脆弱性のある関数を起点にして、 E({(R[i], S[x-1], F[k]),(I[O], M[P], F[K])} ...)からコールグラフCG を列挙する。 終了条件1:エッジの終点がEMPTYである。 終了条件2:エッジの終点がMAINである。 https://github.com/RuoAndo/Saturator/blob/master/postgres/ex.py
  • 7. 検出対象 [1] Assertion failure CVE-2015-5722 (DNS BIND series) [2] User-after-free CVE-2013-4371 Xen hypervisor
  • 8. [1] Assertion failure CVE-2015-5722 (DNS BIND series) 表明(assertion):そのプログラムの前提条件を示すのに使われる。表明は、プログラムのその箇所で必ず真で あるべき式の形式をとる。表明が偽となった場合、プログラムにバグが潜在していることを示している。これを assertion failureと呼ぶ。 ■エラー処理ルーチン:通常発生しうるエラーを処理する ■表明(アサーション):論理的にありえない状況をチェックするのに使う int *ptr = malloc(sizeof(int) * 10); assert(ptr != NULL); mallocの失敗はプログラム内では、論理的にはまず起こりえないことになっているが、オペレーティングシステ ムは malloc が常に成功することは保証していない。システム上ではmallocが失敗して、ptrにnullが入ることが ある。 int *ptr; assert(ptr = malloc(sizeof(int) * 10)); // malloc() が失敗するとNULLを返す。 この文は特定のオプションでコンパイルすると実行されなくなり、結果としてptrが初期化されずに参照されるこ とになる。
  • 9. 検出対象① CVE-2015-5722 Parsing malformed keys may cause BIND to exit due to a failed assertion in buffer.c isc_result_t isc_buffer_allocate(isc_mem_t *mctx, isc_buffer_t **dynbuffer, unsigned int length) { isc_buffer_t *dbuf; REQUIRE(dynbuffer != NULL); REQUIRE(*dynbuffer == NULL); dbuf = isc_mem_get(mctx, length + sizeof(isc_buffer_t)); if (dbuf == NULL) return (ISC_R_NOMEMORY); isc_buffer_init(dbuf, ((unsigned char *)dbuf) + sizeof(isc_buffer_t), length); dbuf->mctx = mctx; ENSURE(ISC_BUFFER_VALID(dbuf)); *dynbuffer = dbuf; return (ISC_R_SUCCESS); } bind-9.9.9-P3/lib/isc/include/isc/assertions.h:101:#define ISC_ENSURE(cond) ((void) 0) 94#if ISC_CHECK_ENSURE != 0 95#define ISC_ENSURE(cond) ¥ 96 ((void) ((cond) || ¥ 97 ((isc_assertion_failed)(__FILE__, __LINE__, ¥ 98 isc_assertiontype_ensure, ¥ 99 #cond), 0))) 100#else 101#define ISC_ENSURE(cond) ((void) 0) 102#endif /* ISC_CHECK_ENSURE */ diff -ur bind-9.9.8/lib/isc/buffer.c bind-9.9.9-P3/lib/isc/buffer.c --- bind-9.9.8/lib/isc/buffer.c 2015-09-09 11:23:50.000000000 +0900 +++ bind-9.9.9-P3/lib/isc/buffer.c 2016-09-09 11:47:21.000000000 +0900 @@ -1,5 +1,5 @@ @@ -462,6 +462,8 @@ + ENSURE(ISC_BUFFER_VALID(dbuf)); + *dynbuffer = dbuf; return (ISC_R_SUCCESS); 上記パッチより、 bind-9.9.8に脆弱性があることが確認できる。
  • 10. Attack surfaceの削減: 削除可能パスの検出 /bind-9.9.9-P2# global -rx setup_system setup_system 1897 bin/dig/dig.c setup_system(); setup_system 898 bin/dig/host.c setup_system(); setup_system 333 bin/dig/include/dig/dig.h setup_system(void); setup_system 913 bin/dig/nslookup.c setup_system(); setup_system 3147 bin/nsupdate/nsupdate.c setup_system(); 削除可能パス CVE-2015-5722 Parsing malformed keys may cause BIND to exit due to a failed assertion in buffer.c
  • 11. version node invocation edge H M S version node invocation edge H M S bind9102rc2 11787 106456 100659 1 49 44bind920b1 6442 41734 39355 0 39 41 bind900b2 4254 32096 29479 0 27 42bind9110a2 12630 114127 107958 1 55 1 bind999b2 11272 100576 94936 1 41 19bind942b1 7780 59699 55687 0 58 11 bind982b1 10184 91489 86145 1 31 33bind936 7232 55115 51350 0 54 8 bind900b2 4254 32096 29479 0 27 32bind971rc1 8093 68882 64561 1 39 42 bind9102rc2 11787 106456 100659 1 48 33bind911rc4 5415 36636 34316 0 34 57 bind982b1 10184 91489 86145 1 33 35bind940b2 7750 59431 55412 0 57 31 bind960rc1 7325 58219 54117 0 57 20bind932 7035 53399 49664 0 51 36 bind932b1 7035 53381 49645 0 51 35bind900rc2 4571 31946 29875 0 30 3 bind992rc1 10485 95002 89598 1 35 32bind950a5 7943 60970 56877 0 59 11 bind9110a3 12725 115128 108835 1 58 19bind997b1 10955 98939 93386 1 41 22 bind997rc2 10952 98836 93287 1 38 43bind900b3 4344 31189 29196 0 27 50 bind9110b3 12697 116168 109852 1 57 17bind9103 11839 106791 100980 1 49 50 bind933 7130 54242 50493 0 51 40bind900 4575 32051 29979 0 29 11 bind932b2 7035 53380 49644 0 51 19bind972 8178 69652 65349 1 10 56 bind986 10311 92495 87097 1 32 45bind900rc5 4572 32000 29929 0 29 10 bind9100b1 11544 104543 98833 1 45 41bind911rc7 5416 36661 34341 0 35 39 bind924rc5 6508 48193 44755 0 46 15bind982rc2 10192 91581 86233 1 30 58 bind990rc2 10402 94005 88653 1 34 10bind940b4 7749 59440 55421 0 57 37 bind9101rc2 11726 106065 100295 1 47 14bind960 7325 58219 54117 0 56 30 bind953b1 8194 63151 58987 1 0 36bind931 7008 53389 49673 0 51 7 bind932rc1 7035 53399 49664 0 52 23bind960rc2 7325 58219 54117 0 56 40 bind9102b1 11783 106536 100735 1 50 37bind911rc2 5414 36626 34306 0 36 54 bind921rc2 6573 42562 40026 0 43 12bind993rc2 10580 95791 90330 1 35 24 bind920a1 6284 42327 40062 0 41 22bind927 6618 49626 46177 0 47 5 bind913rc2 5426 36652 34332 0 35 12bind935 7161 54491 50749 0 52 28 bind943rc1 7847 60269 56235 0 57 45bind921 6574 42570 40034 0 40 21 CVE-2015-5722 Parsing malformed keys may cause BIND to exit due to a failed assertion in buffer.c
  • 12. version search-depth leaf(empty) edge version search-depth leaf(empty) edge bind920rc9 1 0 14bind940rc1 1 0 14 bind920rc9 2 4 97bind940rc1 2 0 106 bind920rc9 3 7 190bind940rc1 3 2 242 bind999b1 1 0 14bind970b1 1 0 14 bind999b1 2 0 92bind970b1 2 0 106 bind999b1 3 1 290bind970b1 3 2 264 bind912rc1 1 0 14bind9110p1 1 0 1 bind912rc1 2 3 94bind9110p1 2 0 1 bind912rc1 3 11 202bind9110p1 3 0 1 bind924rc8 1 0 14bind950rc1 1 0 14 bind924rc8 2 4 98bind950rc1 2 0 106 bind924rc8 3 7 191bind950rc1 3 2 242 bind900b2 1 0 10bind960rc1 1 0 14 bind900b2 2 6 94bind960rc1 2 0 106 bind900b2 3 12 364bind960rc1 3 2 242 bind922rc1 1 0 14bind976 1 0 14 bind922rc1 2 4 97bind976 2 0 106 bind922rc1 3 7 190bind976 3 2 264 bind9110rc1 1 0 14bind995rc2 1 0 14 bind9110rc1 2 0 114bind995rc2 2 0 104 bind9110rc1 3 1 300bind995rc2 3 1 276 bind925 1 0 14bind961rc1 1 0 14 bind925 2 4 98bind961rc1 2 0 106 bind925 3 7 191bind961rc1 3 2 263 bind927 1 0 14bind953b1 1 0 14 bind927 2 3 104bind953b1 2 0 106 bind927 3 3 206bind953b1 3 2 255 bind932b1 1 0 14bind900rc2 1 0 20 bind932b1 2 0 109bind900rc2 2 4 97 bind932b1 3 2 239bind900rc2 3 9 151 version search- depth empty (leaf) edge bind920rc9 3 7 190 bind920rc9 4 8 258 bind920rc9 5 9 328 bind999b1 3 1 290 bind999b1 4 29 1209 bind999b1 5 60 2119 bind912rc1 3 11 202 bind912rc1 4 23 386 bind912rc1 5 27 461 bind924rc8 3 7 191 bind924rc8 4 8 299 bind924rc8 5 9 383 bind900b2 3 12 364 bind900b2 4 15 568 bind900b2 5 15 675 bind922rc1 3 7 190 bind922rc1 4 8 301 bind922rc1 5 9 385 bind9110rc1 3 1 300 bind9110rc1 4 1 423 bind9110rc1 5 49 2250 bind925 3 7 191 bind925 4 8 299 bind925 5 9 383 bind927 3 3 206 bind927 4 3 317 bind927 5 3 400 bind932b1 3 2 239 bind932b1 4 2 378 bind932b1 5 5 538 bind940rc1 3 2 242 bind940rc1 4 3 356 bind940rc1 5 3 463 bind970b1 3 2 264 bind970b1 4 3 387 bind970b1 5 3 475 課題: search depth > 4 での探索パス数の爆発
  • 13. [2] User-after-free (aka heap spray) : CVE-2013-4371 Xen hypervisor http://blog.tempest.com.br/breno-cunha/perspectives- on-exploit-development-and-cyber-attacks.html create() free() realloc() use() Jump to payload on heap ROP + Shellcode int *tmp = (int*)realloc(k,(N+1)*sizeof(int)); if( tmp!=NULL ){ k = tmp; puts("________realloc(k)_________"); for(i=0; i<N+1; i++){ printf("&k[%d]:%p , k[%d]=%d¥n",i,&k[i],i,k[i]); } } realloc関数は第一引数で渡したポインタのアドレス位置 から拡張できない場合は新しい場所にメモリ確保を行う。 結果として、内容は保持されるがアドレスが変わる場合がある。 弊害:フラグメンテーションの深刻化・確保された場所は初期化が保障されない。
  • 14. 検査対象② CVE-2013-4371 Use-after-free Xen Hypervisor 402 tmp = realloc(ptr, (i + 1) * sizeof(libxl_cpupoolinfo)); 388libxl_cpupoolinfo * libxl_list_cpupool(libxl_ctx *ctx, int *nb_pool) 389{ 390 libxl_cpupoolinfo *ptr, *tmp; 397 poolid = 0; 398 for (i = 0;; i++) { 399 info = xc_cpupool_getinfo(ctx->xch, poolid); 400 if (info == NULL) 401 break; 402 tmp = realloc(ptr, (i + 1) * sizeof(libxl_cpupoolinfo)); 403 if (!tmp) { 404 LIBXL__LOG_ERRNO(ctx, LIBXL__LOG_ERROR, "allocating cpupool info"); 405 free(ptr); 406 xc_cpupool_infofree(ctx->xch, info); 407 return NULL; 408 } 409 ptr = tmp; 410 ptr[i].poolid = info->cpupool_id; 411 ptr[i].sched_id = info->sched_id; 412 ptr[i].n_dom = info->n_dom; 413 if (libxl_cpumap_alloc(ctx, &ptr[i].cpumap)) { 414 xc_cpupool_infofree(ctx->xch, info); 415 break; 416 } 417 memcpy(ptr[i].cpumap.map, info->cpumap, ptr[i].cpumap.size); 418 poolid = info->cpupool_id + 1; 419 xc_cpupool_infofree(ctx->xch, info); realloc use-after-free vulnerability Use-after-free vulnerability in the libxl_list_cpupool function in the libxl toolstack library in Xen 4.2.x and 4.3.x, when running "under memory pressure," returns the original pointer when the realloc function fails, which allows local users to cause a denial of service (heap corruption and crash) and possibly execute arbitrary code via unspecified vectors. At line 402, Xen uses realloc for reallocating the memory. Note that the address of libxl_cpupoolinfo is already assigned outside of this routine. Under high pressure, realloc can not extend the memory from the original pointer which is already obtained. in this case, realloc newly yielding the address which remaining the data to be written. Boundary(終了条件)が 緩いループ (pressureを かけやすい) Reallocの返り値がポインタ
  • 15. 検査方法の分類 ■構文主導型 (Syntax Directed Translation) - This translator consists of a parser (or grammar) with embedded actions that immediately generate output. 正規表現、有限オートマトン ITS4: a static vulnerability scanner for C and C++ code, Computer Security Applications, ACSAC 2002 Chucky: exposing missing checks in source code for vulnerability discovery ccs 2013 ■ルール方式 (Rule Based Translation) - Rule-based translators use the DSL of a particular rule engine to specify a set of “this goes to that” translation rules. 遷移規則、プッシュダウンオートマトン Using programmer-written compiler extensions to catch security holes SSP 2002 Checking system rules using system-specific, programmer-written compiler extensions OSDI 2000 ■モデル駆動方式 (Model Driven Translation) - From the input model, a translator can emit output directly, build up strings, build up templates (documents with “holes” in them where we can stick values), or build up specialized output objects モデル検査・Concolic execution MOPS: an infrastructure for examining security properties of software CCS2002 KLEE: Unassisted and Automatic Generation of High-Coverage Tests for Complex Systems Programs, Usenix Sec 2011
  • 16. LALR 上昇型最右導出法 for ( i = 0 ;; i ++ ) ++ { } i=0 assign; φ; increment loop pattern C = statement https://github.com/RuoAndo/Saturator/tree/master/Saturator-14 Loop block realloc ( ) statement expression block pattern
  • 17. Attack surfaceの削減: 削除可能パスの検出 # global -t cmdtable_lookup cmdtable_lookup tools/libxl/xl_cmdtable.c 390 20struct cmd_spec cmd_table[] = { 34 { "list", 35 &main_list, 36 "List information about all/some domains", 37 "[options] [Domain]¥n", 38 "-l, --long Output all VM details¥n" 39 "-v, --verbose Prints out UUIDs", 40 }, 134 { "migrate-receive", 135 &main_migrate_receive, 136 "Restore a domain from a saved state", 137 "- for internal use only", 138}, 341 { "cpupool-create", 342 &main_cpupoolcreate, 343 "Create a CPU pool based an ConfigFile", 344 "[options] <ConfigFile> [vars]", 345 "-h, --help Print this help.n" 346 "-f=FILE, --defconfig=FILE Use the given configuration file.n" 347 "-n, --dryrun Dry run - prints the resulting configuration." 348 }, 削除可能パス
  • 18. node invocation edge H M S xen401 1111 193297 7149 2 45 48 xen451 1792 406859 11513 6 5 27 xen420 1542 344695 9566 5 3 49 xen434 1630 367031 10077 5 28 54 xen403 1123 193480 7191 2 44 41 xen461 1783 435286 11795 6 41 25 xen441 1676 389811 10516 5 56 40 xen342 907 163628 5070 2 27 8 xen410 1302 195986 7977 2 54 28 xen343 908 163832 5082 2 26 36 xen453 1795 407036 11546 6 16 7 xen464 1783 436076 11809 6 34 9 xen341 906 163088 5036 2 28 40 xen412 1309 196290 8008 2 54 49 xen415 1384 197232 8560 2 57 32 xen471 2281 466237 16291 7 13 20 xen413 1310 196503 8024 2 56 9 xen340 906 1628849 7250 30 11 28 xen442 1679 389955 10554 5 47 17 xen480 2299 442614 15769 7 51 48 xen423 1550 345345 9670 5 12 36 CVE-2013-4371: realloc Use-after-free vulnerability Xen 3.4.0 Released Submitted by stacklet on Tue, 05/26/2009 - 2:34pm in Xen 3 domU kernel The latest open source release of Xen is now available. The new version is 3.4.0: http://www.xen.org/download Stacklet has pre-compiled 32 and 64-bit domU kernels for installation into images that do not provide a Xen 3 kernel. Please note that these domU kernels are backward compatible with earlier 3.* releases of Xen, eg. you can run these domU kernels with a 3.3.1 hypervisor. http://stacklet.com/downloads/kernels/xen/xen domU32bit http://stacklet.com/downloads/kernels/xen/xen domU64bit Linux 2.6.18 with Xen 3.4.0 Linux 2.6.18 with Xen 3.4.0 support source tarball
  • 19. version search depth EMPTY (LEAF) EDGE version search depth EMPTY (LEAF) EDGE xen440 1 1 15xen433 1 1 7 xen440 2 6 62xen433 2 5 36 xen440 3 68 876xen433 3 74 998 xen412 1 0 8xen453 1 1 15 xen412 2 1 17xen453 2 6 65 xen412 3 10 119xen453 3 11 208 xen414 1 0 8xen432 1 1 7 xen414 2 1 17xen432 2 5 36 xen414 3 10 119xen432 3 88 1223 xen410 2 1 17xen450 1 1 15 xen410 3 10 122xen450 2 6 65 xen441 1 1 15xen450 3 11 203 xen441 2 6 62xen451 1 1 15 xen441 3 83 1068xen451 2 6 65 xen415 1 0 8xen451 3 10 201 xen415 2 1 17xen434 1 1 7 xen415 3 10 119xen434 2 5 36 xen422 1 0 8xen434 3 81 1043 xen422 2 3 36xen455 1 1 15 xen422 3 87 1525xen455 2 6 65 xen424 1 0 8xen455 3 12 217 xen424 2 3 36xen430 1 1 7 xen424 3 80 1476xen430 2 5 36 xen413 1 0 8xen430 3 62 761 xen413 2 1 17xen442 1 1 15 xen413 3 10 119xen442 2 6 62 xen425 1 0 8xen442 3 68 876 xen440 : libxl_list_cpupool : 3 : 68 : 876 psycopg2.Operational Error: FATAL: sorry, too many clients already FATAL: sorry, too many clients already xen440 : libxl_list_cpupool : 4 : 297 : 4811 xen414 : libxl_list_cpupool : 3 : 10 : 119 xen414 : libxl_list_cpupool : 4 : 10 : 123 xen414 : libxl_list_cpupool : 5 : 10 : 127 課題: search depth > 4 での探索パス数の爆発
  • 20. まとめと今後の課題 ■本論文では、ソースコードの静的解析によるAttack surfaceの削減のためのアルゴリズムを提案し、 実装評価を行った。 ■提案アルゴリズムでは、関数呼び出しをエッジとして表現し、終端がEMPTYまたはMAINになるま でコールグラフを列挙することで、Attack surfaceとなるパスを検出することが可能である。 ■評価実験では下記の脆弱性を対象にノード、エッジ、LEAF(空ノード)数の算出等を行った。 CVE-2015-5722 :Parsing malformed keys may cause BIND to exit due to a failed assertion in buffer.c CVE-2013-4371:Use-after-free vulnerability of Xen Hypervisor under high memory pressure ■今後の課題(1) 探索深さ4以上でのパス数とLeaf node数爆発を抑えるアルゴリズムやシステム構成の提案 ■今後の課題(2) Assertion failureの上昇型最右導出構文解析系での表現形式の実装 ■今後の課題(3) Leaf nodeになっている関数の条件分岐の解析による重みづけグラフの生成と、Leaf node周辺に範囲を絞った効 率的なsymbolic executionの実装