Successfully reported this slideshow.
We use your LinkedIn profile and activity data to personalize ads and to show you more relevant ads. You can change your ad preferences anytime.

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

5,748 views

Published on

  • Be the first to comment

  • Be the first to like this

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

  1. 1. フォントとカーネル /VM の あやしい関係 高橋 明
  2. 2. 自己紹介 高橋 明 Twitter : @Talos2084bit からサーバまで、いろいろ経験組込み系技術者のハズが最近色々あやしい目指せ生涯一プログラマ
  3. 3. フォントって何?文字をデバイス(画面、プリンタなど)に表示するときに使用するデータ o 文字コードとグリフの対応表 必ずしも 1vs1 対応とは限らない 日本語の縦書と横書き 英文系での合字 o グリフ 図形としての文字あくまでプレゼンテーション層のモノ
  4. 4. だのに、何故Microsoft の場合
  5. 5. だのに、何故iOS の場合…… 命令コード?
  6. 6. OpenType フォントAdobe と Microsoft が策定したフォント形式基本は TrueType で、内部テーブルの種類が追 加されている ヘッダ Table directory タグ サイズ オフセット チェックサム
  7. 7. CFF テーブルCFF フォントがまるごと入っている他のテーブルと情報が重複PDF に CFF グリフの OpenType を埋め込むと、ここだけ使われたりする
  8. 8. これが CFF フォントだHeader0000550: 0100 0404 ....Name INDEX0000550: 0001 0101 ....0000560: 0a55 6e74 6974 6c65 6431 .Untitled1Top 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
  9. 9. これが CFF フォントだString INDEX0000590: 0003 0200 0100 .....#..........00005a0: 4100 4a00 5343 7265 6174 6564 2062 7920 A.J.SCreated by00005b0: 5461 6c6f 732c 2c2c 2077 6974 6820 466f Talos,,, with Fo00005c0: 6e74 466f 7267 6520 322e 3020 2868 7474 ntForge 2.0 (htt00005d0: 703a 2f2f 666f 6e74 666f 7267 652e 7366 p://fontforge.sf00005e0: 2e6e 6574 2955 6e74 6974 6c65 6431 556e .net)Untitled1Un00005f0: 7469 746c 6564 31 titled1....".#..Encoding00005f0: 00 00Charset00005f0: 00 0022 0023
  10. 10. これが 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 0eA 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
  11. 11. Type2 CharString 命令表 描画命令 スタックへの パラメータ投入 ???
  12. 12. Type2 CharString 命令表 ストレージ操作 演算 制御命令まっとうな2 スタックのスタックマシン スタック操作もう VM と呼んでもいいよね?
  13. 13. これが Type2 CharString だA CharString f8 26 402ff 00   14 99   80 0x149980 91 16 55 -5476 -21 f7   09 117f7 33 159 fb   c6 -562f7 0f 118        …f8 9e 522          中略77 -20 …01 hstem fc 10 f9 b88b 0 fb 1e04 vmoveto 8b 05 rlinetof7 17 1318b 0 0e endchard0 69ff 00 9e 99 80 0x9e9980
  14. 14. とは言え……いくら VM 相当とは言え自由度は低い メモリアクセス IO 操作 API 呼び出し  ……本当に脆弱性が?
  15. 15. デモごめんなさいWindows を OS ごと落とすフォントを作るはずでしたが、まずかった点の詳細を忘れてて作れませんでした。 フォルダを開いただけでブルースクリーンすら出ずに落 ちるという、壮絶なモノをお見せできるはずが……

×