Skip to main content
セキュリティエンジニアの夢!
CVE、JVN番号の取得経験者になろう!
(私の経験談)
2020/12/09
パナソニック株式会社
製品セキュリティセンター 検証対策部
前田 朋久
『総関西サイバーセキュリティLT大会(第24回)』
自己紹介
■名前
前田 朋久(Maeda Tomohisa)
Twitter: @kazkiti_ctf
■職業
本業:セキュリティエンジニア(会社員)
副業:バグハンター(個人事業主)
兼業:米国株式投資家
■本業の経歴
パナソニック株式会社に入社
・設計/製造品質コンサルタント(プロセス改善活動) 9年
・システムエンジニア(SIer) ※IT系へ異動希望 2年
・セキュリティエンジニア 6.5年
(現職)脆弱性診断、脅威分析、OAuth2.0/OIDCの設計支援
Web脆弱性診断スペシャリストの育成の仕組み(kazkitiCTF)構築
マネージメントなどに従事
RCEを狙っていく
↓
RCEを報告し
報奨金獲得
実績と経験 ※業務除く
■セキュリティ関連
SECCON
国内決勝進出
準優勝 準優勝 優勝
医療セキュリティハッキングコンテスト
2016 2017 20182015
国内CTFを開始
海外CTFを開始
バグ
バウンティ
開始
弊社CTFチーム(Pwnasonic)発足
2019 2020
SECCON
国内決勝進出
CVE取得
RCE、XSS
バグバウンティ
RCEなど報告
CVE
JVN
取得
目標達成
目標達成
目標達成
RCEを狙っていく
↓
【RCE】
・CVE-2020-5593
【XSS】
・CVE-2020-5592
目標達成
セキュリティエンジニアになってから実現したい目標はおよそ達成!
この実績の中で簡単にとれる
を紹介します
遅い 速い
まず実績の難易度の見える化!
求められる
技術レベル
低
高
求められる
速度レベル
C
V
E
・
J
V
N
取
得
SECCON
国内決勝
ハッキング
大会優勝
ハッキング
大会準優勝
遅い 速い
CVE、JVN取得は意外と簡単なのでオススメ!!
求められる
技術レベル
低
高
求められる
速度レベル
SECCON
国内決勝
ハッキング
大会優勝
ハッキング
大会準優勝
この辺が
オススメ!
C
V
E
・
J
V
N
取
得
CVE、JVN番号とは?
■共通脆弱性識別子CVE(Common Vulnerabilities and Exposures)
『プログラム上のセキュリティ問題』を一意に識別するために付けら
れる識別番号。
■JVN(Japan Vulnerability Notes)
脆弱性識別番号は、「情報セキュリティ早期警戒パートナーシップ」
制度に基づいて、調整・公表された脆弱性情報。
CVE、JVNを同時に取得するには?(1/2)
▼前提条件1
IPAの「脆弱性関連情報の届出受付」から報告する
【およその流れ】
脆弱性を発見する
↓
IPAの「脆弱性関連情報の届出受付」へ報告
https://www.ipa.go.jp/security/vuln/report/
↓
IPAから開発担当者へ連絡し、間に入って調整してくれる
※英語わからなくても大丈夫(私は途中から英語でやりとりした)
↓
開発担当者の質問などに対応
↓
開発担当者が修正完了&新バージョン公開
↓
CVE、JVNが発行&公開される
開発担当者
報告者
IPA
JPCERT
CVE、JVNを同時に取得するには?(2/2)
▼前提条件2.
日本国内で利用されているor日本国内からアクセスするものである
対象の絞り方
よし!やるぞ!
まず注意点!!
注意点1
報告しても修正されない場合がある!
⇒CVE、JVN番号が発行されない!
注意点2
報告後の修正が遅い場合がある!
⇒数年後に対応という場合もある!
商品によって対応が異なる!!(人が違うので当然…ほぼ運!?)
↓
CVE、JVN番号を取得したいものからしたら死活問題!!
せっかく
報告したのに…
運に左右されないための解決策!
過去にJVN番号が発行された実績のある商品を対象にする!
https://jvndb.jvn.jp/
(検索例)WebアプリでPHPを利用しているサイトを探したい!
⇒「XSS PHP」など代表する脆弱性で探すとよい。
ソフトウェア一覧が検索される
JVNが発行された (修正対応してくれる開発者のいる)
ソフトウェア一覧が取得できた!
このリストから
対象を選ぶときのPoint!
【Point1】バグバウンティに公開されている商品は避ける!
有名な商品は避けましょう!
難易度が
格段に上
がります
「簡単」という
前提条件が
崩れてます!
【Point2】ソースコードが確認できるOSSが理想!
OSS(Open Source Software)は、
下記の両方のアプローチが取れて、それぞれのメリットを活かせる!
理由1:ソースコードから静的解析(目grep)できる!
⇒プログラミングが得意な人向け
ソース単体での脆弱性を発見しやすい
理由2:環境構築すれば脆弱性診断もできる!
⇒脆弱性診断が得意な人向け
複合的に関係している脆弱性も発見できる
二刀流
私が対象としたソフトウェア
たまたま「Zenphoto」というソフトウェアを選択
【私の目標】
最強の脆弱性RCE(リモートコード実行)でCVE,JVNを取得したい!
【追加条件】
「アップロード機能のあるOSS」を探しました。
ここは人それぞれ、得意分野(武器)が異なると思います。
自分に合ったやり方を選択してください!
【結果】
数個確認したところで「Zenphoto」を発見!
環境構築
【Point1】Dockerで構築しておく!
OSSはgithubに公開されていることが多いです!
修正対応された後に、githubの内容が修正されることになります。
その時に、迅速に再現性のある環境構築ができるように
Dockerで環境構築しておくことをオススメします!!
gitとDockerは必須スキルでもあり、
基本スキルでもあるので習得しましょう!
とにかく、独学でいいので勉強すべし!
githubからソースコードを取得して、
必要な設定をDockerfileに書いて作っていく!(意外と簡単です)
環境構築し
脆弱性を探した結果
無事、RCEとXSSを発見しCVE,JVN番号を取得!
■JVN#32252648 (RCE)CVE-2020-5592、(XSS)CVE-2020-5593
謝辞に名前も掲載されます!
※未掲載も可
https://jvn.jp/jp/JVN32252648/
スケジュール感
100日間!(報告からCVE,JVN番号発行まで)
■具体的な進捗
0日目 2020/03/02 某バグハンター仲間にCVE,JVN取得を勧めてもらい、即実施!
(対象ソフトウェアの選定&環境構築&脆弱性探索)
1日目 2020/03/03 XSSを発見し、IPAに報告
2日目 2020/03/04 IPAからお礼の返答
3日目 2020/03/05 RCEを発見し、IPAに報告
4日目 2020/03/06 IPAからお礼の返答
11日目 2020/03/13 IPAから受理証明書発行
42日目 2020/04/13 開発者の質問が返ってくる
(複数回やりとり~修正確認)
100日目 2020/06/11 脆弱性が開示され、CVE,JVNが発行される
■昨年度の公表日数実績と比較
1
出典:ソフトウェア等の脆弱性関連情報に関する届出状況[2019年第4四半期(10月~12月)]
100日は
ほぼ平均的な日数
最後に…
裏話
実は…
3月初旬は16連休で旅行予定だった…
↓
しかし!コロナの影響で、急遽、自宅待機!!
↓
これは16連休で取得したCVE,JVNです!!
コロナ自粛
頑張りました
(裏話)
まとめ
CVE、JVN番号を取得し
楽しみながら
技術力を向上させていきましょう!
CVE、JVN番号の取得経験者になろう!