急変するデジタル環境において、ネットワークとシステムセキュリティが保有する脆弱性を事前に把握、対応するために、Criminal IPやShodanのようなプラットフォームが注目されています。Criminal IPは、インターネットに公開された機器、サービス、ネットワーク情報を収集・分析してセキュリティ脆弱性を検出し、検索エンジンの形で加工し、ユーザーが簡単に目的の情報にアクセスできるようにしたサイバー脅威インテリジェンスプラットフォームです。IoTプラットフォームであるShodanも同様の機能を提供し、これらのプラットフォームは共通してCVE(一般的な脆弱性とエクスポージャー)データを分析することに強みを持っています。今回の記事では、 Criminal IP vs Shodan をテーマにCriminal IPとShodanの2つのプラットフォームのAPIを通じて提供されるCVE関連のデータを比較分析します。
Criminal IP vs Shodan : 全体CVEデータの収集プロセス
CVEとは、特定のソフトウェアやシステムで発見されたセキュリティ脆弱性を標準化された方法で識別するためのシステムであり、セキュリティ管理者が資産の脆弱性を正確に理解し、対応策を策定するための重要な基準となります。本記事は、1999年から現在まで発生したすべてのCVEに対するCriminal IPとShodan、各プラットフォームの検索結果に基づいて、各CVEの検出結果数とデータの信頼性を評価し、セキュリティ管理者が最適な選択を下せるように支援することを目的としています。
今回、Criminal IP vs Shodanの分析のために使用された全CVEデータは公式データベースから抽出し、収集プロセスの詳細な手順は以下の通りです。
1. 現在まで発表されたすべてのCVEデータの出所
CVEデータは、アメリカの国家脆弱性データベース(National Vulunerability Database、以下NVD)が提供するデータフィードを活用しました。NVDは、世界的に一般的な脆弱性とエクスポージャー(CVE)を標準化された形式で提供する信頼できるソースです。
2. 含まれたCVEデータの範囲
NVDは、2002年からCVEデータを正式に提供し始めたが、データには1999年から発表された過去の脆弱性も含まれています。よって、今回の分析では、1999年から2024年までの全データを基準にしました。この間、発表されたすべてのCVEを対象に、Criminal IPとShodanで検出可能な脆弱性を比較しました。
3. CVEデータの最新化および基準時点
CVEデータは毎日更新され、新しい脆弱性が継続的に追加されます。今回の分析は、2024年11月を基準に、最新のデータを抽出して実施しました。この基準時点は、データを整理して分析を実施した日付に基づいています。
4. Criminal IPとShodan 分析のために抽出したCVEデータの項目
各CVE IDについて、次のような詳細情報を抽出しました:
- 修正日(Modified date):当CVEが最後に修正された日付で、脆弱性データの最新状態を把握するために活用されます。
- 発行日(Published date):CVEが最初に発表された日付で、その脆弱性がいつ最初に識別されたかを知ることができます。
今回の記事では、このようなデータを基に、各CVEの最新状態と初期発表時点の両方を確認し、分析の基準としました。NVDが提供する元のCVEデータは以下の通りです。

Criminal IPとShodanのCVEデータ検証に使用したAPI
Criminal IP APIは、以下のように/v1/banner/search?query= APIに「cve_id」フィルターを利用して結果を呼び出す形式で活用することができます。今回の分析では、これを利用して「cve_id: CVE-2012-1234」のような形で結果を呼び出し、より多くのフィルターとその使い方はフィルターページで確認することができます。
https://api.criminalip.io/v1/banner/search?query=cve_id:CVE-2021-1234
そして、Shodanのデータを呼び出すために使ったAPIは下記の通りです。/shodan/host/searchのクエリを使いました。フィルタークエリは、「vuln:」を使ってCVEが存在するかどうかを呼び出しました。
https://api.shodan.io/shodan/host/search?key={API_KEY}&query==vuln:CVE-2021-1234
上記のAPIを呼び出した後、当脆弱性が存在するIPアドレスが発見された場合、Criminal IPとShodanともに下記のような形のjson値を返します。この場合、値をカウントしてグラフにしてみました。

Criminal IP vs Shodan:CVEデータの一次検知結果とデータの信頼性
検知数自体は多いが、CVEデータの信頼性が低いShodan

上の図は、Criminal IPとShodanで年別のCVE脆弱性が発見された数をグラフ化した結果です。青いグラフがCriminal IPであり、赤いグラフはShodanで発見したCVE脆弱性の数です。2015年頃までは似たような傾向が見られましたが、その以降はShodanで検出できるCVEの数が多くなっていることが分かります。しかし、CVEシステムには、場合によって、データノイズが存在することがあります。例えば、以下のShodanのIPアドレスのケースでは、NetDataのバナーが存在することを確認でき、CVEが存在するという結果が出ています。この場合、CVEもNetDataに対する脆弱性が表示されるはずです。
しかし、Shodanでは以下のようにMySQLに対するCVEで結果を出力していました。CVEの数も、MySQLに対する実際のCVEとは異なり、過度に多くの結果を返しています。以下は、データの信頼性が低い一例です。


このようなケースも存在します。下のケースは、ポート80のApacheサーバーにCVE脆弱性が存在すると表示されていますが、実際に表示されたCVEはApacheとは関係のないMySQLのCVEが出力されていることが分かります。このように、異なるセキュリティプラットフォームが提供するデータを一方的に信じ、そのCVEがあるとそのまま信じてしまうと、信頼性の問題が発生する可能性があります。

Criminal IP vs Shodan、データノイズを除去した実質的なCVEの検知数
このような部分は、Criminal IPとShodanの両方に存在する可能性があります。そこで、Criminal IPとShodanのAPIで次のような方法を利用して独自にフィルタリングをしてみました。
1. CVEを一つずつ呼び出す前に、その公式CVEに該当するproduct name(MySQLなど)とversionを抽出する
2. Criminal IPとShodanでそれぞれcve_id、vuln: フィルターを使用してCVEが存在する実際のIPアドレスを抽出する
3. 先ほど抽出したIPアドレスのパケットから実際に出力されるproduct nameとversionを抽出する
4. 1段階のCVEから出たproduct name、versionと3段階のIPアドレスから抽出したproduct name、versionが全て同じであれば、正確なデータと判断し、実際に存在するCVE脆弱性としてカウントし、それが一致しない場合はデータエラーと判断する
このように独自の検証ロジックを追加的なAPIを呼び出して作成した後、改めてCriminal IPとShodanの年別CVEグラフを作成してみました。青がCriminal IPのCVE検知数のグラフで、赤がShodanのものです。1次統計分析の結果ではShodanのCVE検知データがはるかに多かったが、データノイズを除去した後は、Criminal IPが検知するCVEの数がより多いことがわかります。

セキュリティ管理者は、CVE検出システムの特性を理解し、各プラットフォームのデータを比較し、慎重に活用する必要があります。Criminal IPやShodanなど、表面的には似ているように見える脆弱性サービスは、いずれも広範なデータ検出と迅速なスキャン機能を提供していますが、一部は、Shodanのように、検出結果に実際のサービスと関係のない脆弱性が含まれている可能性があります。そのため、このようなシステムを使用する際には、必ずサービスバナーと関連するproduct nameとversion情報を相互検証してデータの正確性を確保しなければなりません。
検証を行った結果、初期統計ではShodanが検出したCVEデータがCriminal IPよりはるかに多かったが、データノイズを除去した後は、むしろCriminal IPがより多くのCVEを検出したという事実が確認されました。青いグラフはCriminal IPのCVE検知数を、赤いグラフはShodanの検知数を示しており、精製されたデータを基に作成された最終結果は、Criminal IPの高い信頼性を視覚的にも示しています。
今回の検証から分かることは、APIが提供するデータをそのまま信頼するのではなく、APIの様々な機能と組み合わせを活用してデータを相互検証し、これに基づいて正確性を判断する過程が必要だということです。単に検出された結果を受け入れるのではなく、追加のフィルタリングと検証を通じてデータのノイズを除去し、実際に活用可能な情報を選別する必要があります。このような方法でCriminal IPの利点を最大限に活用すれば、より効果的で正確なセキュリティ管理が可能になるでしょう。
また、これまではCVEだけで脆弱性を評価する雰囲気がありましたが、最近ではCVEだけでなく、アメリカのサイバーセキュリティ及びインフラセキュリティ機関であるCISA(Cybersecurity & Infrastructure Security Agency)が管理するKEV(Known Exploit Vulnerability)が注目されています。KEVは、CVEとは異なり、実際に攻撃者が特定の脆弱性を利用して悪質な行為をした事例が確認された脆弱性のみが含まれるため、より正確で、優先的に注目すべき脆弱性のみを扱っています。Criminal IPは今後、KEV情報も一緒に提供する予定であり、この情報が含まれると、今後、脆弱性の優先順位と重要度をより効果的に考慮することができると期待されています。
著者について

現在、ExploitwareLabsの代表取締役として、韓国でOSINTとペンテスト分野の最高専門家として知られている。A3 Security、KEPCO KDN、SecureOneなどを経て、数百以上の機関・企業を対象にウェブ、インフラ診断、モバイルアプリ診断などのペンテストプロジェクトを遂行し、脅威インテリジェンス、攻撃対象領域管理(ASM)、ダークウェブ、サイバー脅威ハンティングの分野で20年以上にわたり数多くの特別講義とセッション発表を行った。韓国情報保護教育センターの講師、警察庁サイバーセキュリティハッキング組織研究会の諮問委員、国家捜査本部ハッキング研究会の諮問委員などを歴任し、サイバー犯罪予防のために様々な捜査機関に多くの技術的協業も支援している。
データの提供:https://www.dailysecu.com/news/articleView.html?idxno=161689、https://nvd.nist.gov/vuln/data-feeds
ご参照: