Click here to load reader
Upload
-
View
4.682
Download
1
Embed Size (px)
Citation preview
フォントとカーネル /VMのあやしい関係
高橋 明
自己紹介
4bitからサーバまで、いろいろ経験組込み系技術者のハズが最近色々あやしい目指せ生涯一プログラマ
高橋 明Twitter: @Talos208
フォントって何?文字をデバイス(画面、プリンタなど)に表示するときに使用するデータ
o 文字コードとグリフの対応表必ずしも 1vs1対応とは限らない日本語の縦書と横書き英文系での合字
o グリフ図形としての文字
あくまでプレゼンテーション層のモノ
だのに、何故Microsoftの場合
だのに、何故iOSの場合
……命令コード?
OpenTypeフォントAdobeとMicrosoftが策定したフォント形式基本は TrueTypeで、内部テーブルの種類が追加されている
ヘッダTabledirectory
タグ
チェックサム
オフセット
サイズ
CFFテーブルCFFフォントがまるごと入っている他のテーブルと情報が重複PDFに CFFグリフの OpenTypeを埋め込むと、ここだけ使われたりする
これが 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
これが 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
これが 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
Type2 CharString命令表
描画命令
スタックへのパラメータ投入
???
Type2 CharString命令表
演算
スタック操作
ストレージ操作制御命令
まっとうな2スタックのスタックマシン
もう 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
……
……とは言えいくら VM相当とは言え自由度は低い
メモリアクセスIO操作API呼び出し
……
本当に脆弱性が?
デモごめんなさい
Windowsを OSごと落とすフォントを作るはずでしたが、まずかった点の詳細を忘れてて作れませんでした。
フォルダを開いただけでブルースクリーンすら出ずに落……ちるという、壮絶なモノをお見せできるはずが