SlideShare a Scribd company logo
フォントと
カーネル /VM の
 あやしい関係
         高橋 明
自己紹介

   高橋 明
   Twitter : @Talos208

4bit からサーバまで、いろいろ経験
組込み系技術者のハズが最近色々あやしい
目指せ生涯一プログラマ
フォントって何?
文字をデバイス(画面、プリンタなど)に表示
するときに使用するデータ
 o 文字コードとグリフの対応表
   必ずしも 1vs1 対応とは限らない
   日本語の縦書と横書き
   英文系での合字
 o グリフ
   図形としての文字


あくまでプレゼンテーション層のモノ
だのに、何故
Microsoft の場合
だのに、何故
iOS の場合




…… 命令コード?
OpenType フォント
Adobe と Microsoft が策定したフォント形式
基本は TrueType で、内部テーブルの種類が追
 加されている
                          ヘッダ
                          Table
                          directory

                           タグ
                          サイズ

                          オフセット
                         チェックサム
CFF テーブル
CFF フォントがまるごと入っている
他のテーブルと情報が重複
PDF に CFF グリフの OpenType を埋め込むと
、ここだけ使われたりする
これが CFF フォントだ
Header
0000550:                     0100 0404                       ....


Name INDEX
0000550:                                 0001 0101                ....
0000560: 0a55 6e74 6974 6c65 6431                    .Untitled1


Top DICT INDEX
0000560:                            0001 0200 0100             ......
0000570: 2af8 0f00 f81b 01f8 1c02 f81d 03f8 1704     *...............
0000580: 8b8a f9e9 f9b8 051c 00a1 0f1c 0000 101c     ................
0000590: 00a6 111c 0023 1c01 b612
これが CFF フォントだ
String INDEX
0000590:                          0003 0200 0100   .....#..........
00005a0: 4100 4a00 5343 7265 6174 6564 2062 7920   A.J.SCreated by
00005b0: 5461 6c6f 732c 2c2c 2077 6974 6820 466f   Talos,,, with Fo
00005c0: 6e74 466f 7267 6520 322e 3020 2868 7474   ntForge 2.0 (htt
00005d0: 703a 2f2f 666f 6e74 666f 7267 652e 7366   p://fontforge.sf
00005e0: 2e6e 6574 2955 6e74 6974 6c65 6431 556e   .net)Untitled1Un
00005f0: 7469 746c 6564 31                         titled1....".#..


Encoding
00005f0:                  00 00


Charset
00005f0:                       00 0022 0023
これが Type2 CharString だ
CharString INDEX
00005f0:                                      0003    titled1....".#..
0000600: 0200 0100 2300 5b01 06


.notdef CharString
0000600:                       a0 8bbd f845 bd01      ....#.[......E..
0000610: bdbd f7c0 bd03 bd16 f824 f8a9 fc24 06bd      .........$...$..
0000620: fc77 15f8 45f7 c0fc 4507 0e


A CharString
                                       ff 0014 9980   .w..E...E.......
0000630: 76f7 33f7 0ff8 9e77 018b 04f7 178b d0ff      v.3....w........
0000640: 009e 9980 f826 9155 f709 fbc6 8bf7 27f8      .....&.U......'.
0000650: 08a9 88f7 c0fd 1ff7 1a8b fc10 f9b8 fb1e      ................
0000660: 8b05 0e
Type2 CharString 命令表

                描画命令




                スタックへの
                パラメータ投入
  ???
Type2 CharString 命令表

                 ストレージ操作
      演算
                 制御命令

まっとうな
2 スタックの
スタックマシン
                 スタック操作



もう VM と
呼んでもいいよね?
これが Type2 CharString だ
A CharString                     f8 26         402
ff 00   14 99   80    0x149980   91            16
                                 55            -54
76               -21             f7   09          117
f7 33            159             fb   c6          -562
f7 0f            118                             




                                              …
f8 9e            522
                                          中略
77               -20




                                              …
01               hstem
                                 fc 10
                                 f9 b8
8b               0
                                 fb 1e
04               vmoveto
                                 8b
                                 05           rlineto
f7 17            131
8b               0
                                 0e           endchar
d0               69
ff 00 9e 99 80   0x9e9980
とは言え……
いくら VM 相当とは言え自由度は低い
     メモリアクセス
     IO 操作
     API 呼び出し
      ……


本当に脆弱性が?
デモ
ごめんなさい

Windows を OS ごと落とすフォントを作るは
ずでしたが、まずかった点の詳細を忘れてて作
れませんでした。

 フォルダを開いただけでブルースクリーンすら出ずに落
 ちるという、壮絶なモノをお見せできるはずが……

More Related Content

Similar to フォントとカーネル Vmのあやしい関係

Fbx解説 (1 構文編) (1)
Fbx解説 (1  構文編) (1)Fbx解説 (1  構文編) (1)
アセンブラ短歌(第2回APASEC+第2期サイボウズ・ラボユース合同勉強会)
アセンブラ短歌(第2回APASEC+第2期サイボウズ・ラボユース合同勉強会)アセンブラ短歌(第2回APASEC+第2期サイボウズ・ラボユース合同勉強会)
アセンブラ短歌(第2回APASEC+第2期サイボウズ・ラボユース合同勉強会)
kozossakai
 
Osc2012 tokyo fall_home_san_nayamaguti
Osc2012 tokyo fall_home_san_nayamagutiOsc2012 tokyo fall_home_san_nayamaguti
Osc2012 tokyo fall_home_san_nayamagutiNoriyuki Yamaguchi
 
201407 seccon2014オンライン予選(日本語) write-up
201407 seccon2014オンライン予選(日本語)  write-up201407 seccon2014オンライン予選(日本語)  write-up
201407 seccon2014オンライン予選(日本語) write-up恵寿 東
 
Moony li pacsec-1.5_j4-truefinal
Moony li pacsec-1.5_j4-truefinalMoony li pacsec-1.5_j4-truefinal
Moony li pacsec-1.5_j4-truefinal
PacSecJP
 
Windowsのパケットモニタ作成
Windowsのパケットモニタ作成Windowsのパケットモニタ作成
Windowsのパケットモニタ作成
Shinichi Hirauchi
 
Capture the flag write up q13,q20,q21 for ss
Capture the flag write up q13,q20,q21 for ssCapture the flag write up q13,q20,q21 for ss
Capture the flag write up q13,q20,q21 for ss
Masahiro Fukuda
 
ただのリンカを書いた話.pdf
ただのリンカを書いた話.pdfただのリンカを書いた話.pdf
ただのリンカを書いた話.pdf
simotin13 Miyazaki
 
第10回 計算機構成
第10回 計算機構成第10回 計算機構成
第10回 計算機構成
眞樹 冨澤
 

Similar to フォントとカーネル Vmのあやしい関係 (9)

Fbx解説 (1 構文編) (1)
Fbx解説 (1  構文編) (1)Fbx解説 (1  構文編) (1)
Fbx解説 (1 構文編) (1)
 
アセンブラ短歌(第2回APASEC+第2期サイボウズ・ラボユース合同勉強会)
アセンブラ短歌(第2回APASEC+第2期サイボウズ・ラボユース合同勉強会)アセンブラ短歌(第2回APASEC+第2期サイボウズ・ラボユース合同勉強会)
アセンブラ短歌(第2回APASEC+第2期サイボウズ・ラボユース合同勉強会)
 
Osc2012 tokyo fall_home_san_nayamaguti
Osc2012 tokyo fall_home_san_nayamagutiOsc2012 tokyo fall_home_san_nayamaguti
Osc2012 tokyo fall_home_san_nayamaguti
 
201407 seccon2014オンライン予選(日本語) write-up
201407 seccon2014オンライン予選(日本語)  write-up201407 seccon2014オンライン予選(日本語)  write-up
201407 seccon2014オンライン予選(日本語) write-up
 
Moony li pacsec-1.5_j4-truefinal
Moony li pacsec-1.5_j4-truefinalMoony li pacsec-1.5_j4-truefinal
Moony li pacsec-1.5_j4-truefinal
 
Windowsのパケットモニタ作成
Windowsのパケットモニタ作成Windowsのパケットモニタ作成
Windowsのパケットモニタ作成
 
Capture the flag write up q13,q20,q21 for ss
Capture the flag write up q13,q20,q21 for ssCapture the flag write up q13,q20,q21 for ss
Capture the flag write up q13,q20,q21 for ss
 
ただのリンカを書いた話.pdf
ただのリンカを書いた話.pdfただのリンカを書いた話.pdf
ただのリンカを書いた話.pdf
 
第10回 計算機構成
第10回 計算機構成第10回 計算機構成
第10回 計算機構成
 

フォントとカーネル Vmのあやしい関係