15

Click here to load reader

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

  • Upload
    -

  • View
    4.682

  • Download
    1

Embed Size (px)

Citation preview

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

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

高橋 明

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

自己紹介

4bitからサーバまで、いろいろ経験組込み系技術者のハズが最近色々あやしい目指せ生涯一プログラマ

高橋 明Twitter: @Talos208

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

フォントって何?文字をデバイス(画面、プリンタなど)に表示するときに使用するデータ

o 文字コードとグリフの対応表必ずしも 1vs1対応とは限らない日本語の縦書と横書き英文系での合字

o グリフ図形としての文字

あくまでプレゼンテーション層のモノ

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

だのに、何故Microsoftの場合

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

だのに、何故iOSの場合

……命令コード?

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

OpenTypeフォントAdobeとMicrosoftが策定したフォント形式基本は TrueTypeで、内部テーブルの種類が追加されている

ヘッダTabledirectory

タグ

チェックサム

オフセット

サイズ

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

CFFテーブルCFFフォントがまるごと入っている他のテーブルと情報が重複PDFに CFFグリフの OpenTypeを埋め込むと、ここだけ使われたりする

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

これが CFFフォントだHeader0000550: 0100 0404 ....

Name INDEX0000550: 0001 0101 ....

0000560: 0a55 6e74 6974 6c65 6431 .Untitled1

Top DICT INDEX0000560: 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

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

これが CFFフォントだString INDEX0000590: 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....".#..

Encoding00005f0: 00 00

Charset00005f0: 00 0022 0023

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

これが Type2 CharStringだCharString INDEX00005f0: 0003 titled1....".#..

0000600: 0200 0100 2300 5b01 06

.notdef CharString0000600: 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

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

Type2 CharString命令表

描画命令

スタックへのパラメータ投入

???

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

Type2 CharString命令表

演算

スタック操作

ストレージ操作制御命令

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

もう VMと呼んでもいいよね?

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

これが Type2 CharStringだA CharStringff 00  14 99  80 0x149980

76 -21

f7 33 159

f7 0f 118

f8 9e 522

77 -20

01 hstem

8b 0

04 vmoveto

f7 17 131

8b 0

d0 69

ff 00 9e 99 80 0x9e9980

f8 26 402

91 16

55 -54

f7  09 117

fb  c6 -562

      

        中略

fc 10

f9 b8

fb 1e

8b

05 rlineto

0e endchar

……

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

……とは言えいくら VM相当とは言え自由度は低い

メモリアクセスIO操作API呼び出し

…… 

本当に脆弱性が?

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

デモごめんなさい

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

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