vFeedの調査その1の続きです。
AdventCalendarドリブンで普段調査してくてもできていなかったことを調べてメモっていくシリーズ。
2017年12月時点でのVulsは、インターネット上に公開されているNVD, JVN, OVALの脆弱性データベースを利用している。これらの脆弱性データベースは、対応しているアプリケーションなどの種類が多ければ多いほど、脆弱性情報の掲載が早ければ早いほどVulsにとっては有益であり、具体的には
検知精度が向上(CPENameを使った脆弱性情報の検索時)する
レポートに表示する情報がリッチになる
という利点がある。
今回はvFeedという脆弱性データベースがあるという情報を入手したので、vFeedについて調べた結果をメモ代わりに書いておく。
get_certvn : retrieve information related to advisories issued by the CERT-VN
https://vfeed.io/docs/#3614
CERT/CCのリンクを取得可能。
python vfeedcli.py --method get_certvn CVE-2013-3611 Wed Dec 13 15:20:33 2017
[
{
"id": "VU#705004",
"url": "http://www.kb.cert.org/vuls/id/705004"
}
]
このCERT/CCのリンクは、NVDのデータにも存在するのでVulsではCERT/CCのリンクをレポートに表示してもよいかもしれない。
CERT/CCの情報をVulsでキャッシュしてレポートに組み込みたいけど、APIもないしファイルとしても存在しない(見つけられなかった)、残念。
http://www.kb.cert.org/vuls/
vFeedのget_severityのtopValunerableとtopAlertの意味が判明
前回のvFeed調査その1で謎だった、この2つの意味がわかった。
topAlert
- OWASP Top 10や、CWE 2011 Top 25に該当するCWE場合にこのフラグがTrueになる
top_category = ['CWE-929', 'CWE-930', 'CWE-931', 'CWE-932', 'CWE-933', 'CWE-934', 'CWE-935', 'CWE-936',
'CWE-937', 'CWE-938', 'CWE-810', 'CWE-811', 'CWE-812', 'CWE-813', 'CWE-814', 'CWE-815',
'CWE-816', 'CWE-817', 'CWE-818', 'CWE-819', 'CWE-864', 'CWE-865', 'CWE-691']
"""
CWE-864 --> 2011 Top 25 - Insecure Interaction Between Components
CWE-865 --> 2011 Top 25 - Risky Resource Management
CWE-691 --> Insufficient Control Flow Management
CWE-810 --> OWASP Top Ten 2010 Category A1 - Injection
CWE-811 --> OWASP Top Ten 2010 Category A2 - Cross-Site Scripting (XSS)
CWE-812 --> OWASP Top Ten 2010 Category A3 - Broken Authentication and Session Management
CWE-813 --> OWASP Top Ten 2010 Category A4 - Insecure Direct Object References
CWE-814 --> OWASP Top Ten 2010 Category A5 - Cross Site Request Forgery (CSRF)
CWE-815 --> OWASP Top Ten 2010 Category A6 - Security Misconfiguration
CWE-816 --> OWASP Top Ten 2010 Category A7 - Insecure Cryptographic Storage
CWE-817 --> OWASP Top Ten 2010 Category A8 - Failure to Restrict URL Access
CWE-818 --> OWASP Top Ten 2010 Category A9 - Insufficient Transport Layer Protection
CWE-819 --> OWASP Top Ten 2010 Category A10 - Unvalidated Redirects and Forwards
CWE-929 --> OWASP Top Ten 2013 Category A1 - Injection
CWE-930 --> OWASP Top Ten 2013 Category A2 - Broken Authentication and Session Management
CWE-931 --> OWASP Top Ten 2013 Category A3 - Cross-Site Scripting (XSS)
CWE-932 --> OWASP Top Ten 2013 Category A4 - Insecure Direct Object References
CWE-933 --> OWASP Top Ten 2013 Category A5 - Security Misconfiguration
CWE-934 --> OWASP Top Ten 2013 Category A6 - Sensitive Data Exposure
CWE-935 --> OWASP Top Ten 2013 Category A7 - Missing Function Level Access Control
CWE-936 --> OWASP Top Ten 2013 Category A8 - Cross-Site Request Forgery (CSRF)
CWE-937 --> OWASP Top Ten 2013 Category A9 - Using Components with Known Vulnerabilities
CWE-938 --> OWASP Top Ten 2013 Category A10 - Unvalidated Redirects and Forwards
"""
VulsとしてはOWASP TOP 10 -2017 PDFに載ってるCWEをマークしてレポート時に表示してもいいかもな。
topVulunerable
- base scoreと、exploitabilityと、impactが全部10のときにTrueになる
elif cvss_data[0]["base"] == "10.0" and cvss_data[0]["exploitability"] == "10.0" and cvss_data[0][
"impact"] == "10.0":
self.level = "high"
self.top_vulnerable = True
VulsとしてはExploitability, impactの値が、2017/12時点でVulsが参照する脆弱性DBである、NVD, JVN, OVALにはないので、vFeedをデータソースとすることではじめて付加できる情報。
だが、この情報を出す意味がそれほどあるのか、ユーザの意見を聞きたいところ。
あとは、この辺のExploitのあるなしが使えるかな〜。
-
Exploit-Database
- CVE-IDとのマッピングができるのはいいなぁー
- と思ったけど、NVDにも情報あるね。でもNVDは更新が遅いんだろうな(予想)
<vuln:references xml:lang="en" reference_type="UNKNOWN">
<vuln:source>EXPLOIT-DB</vuln:source>
<vuln:reference href="https://www.exploit-db.com/exploits/41363/" xml:lang="en">41363</vuln:reference>
</vuln:references>
- Metasploit FW
- get_msf : retrieve the appropriate information about the Metasploit exploit or plugin.
- https://github.com/rapid7/metasploit-framework
python vfeedcli.py --method get_msf CVE-2010-2743 [
{
"file": "metasploit-framework/modules/post/windows/escalate/ms10_073_kbdlayout.rb",
"id": "ms10_073_kbdlayout.rb",
"title": "Windows Escalate NtUserLoadKeyboardLayoutEx Privilege Escalation"
}
]
他にはとくにvFeedで使えそうな情報はなさげかなー。
というわけでvFeed特有の情報はそれほどないので、VulsをvFeedに対応させるぜ!というモチベーションはそれほどなくなっちゃったけど、
- Exploitの有無の情報がNVDよりも爆速
- CVE脆弱性情報がNVDよりも爆速
- 言語系ライブラリの掲載件数めっさ多い
なら対応してもいいかもなぁーくらいですが、このへんはやっぱりVulnDBが最強なのかなー。高いけど。
まとめ
その1, その2の二日間でvFeedの調査をしてきて、思いついたVuls改善策をメモっとくよ。
- レポートにCERT/CCのリンク入れる
- CWE情報(英語日本語の説明)をgo-cve-dictionaryにテーブル追加、さらにOWASP TOP 10 - 2017に対応するCWEですよって警告
- Exploit-DBのリンクは目立たせてもよい(CVE-IDとの関連はNVDのreferencesで可能。ほかのソースでExploit-DBとCVE-IDのヒモ付ができて、NVDよりもフレッシュならそっちでやる)
- MetasploitFWのリンクも目立たせたい。コマンドか、metasploitのDB検索すりゃできそう。
- metasploitのDBはSQLite3を選択できそう
- http://www.computerweekly.com/tip/Metasploit-tutorial-3-Database-configuration-post-exploit-affairs
そろそろvFeed飽きてきたので、次はVulDB(VulnDBではない)の調査をする。