GitHub に潜む偽 PoC エクスプロイト:騙されてマルウェアを配信される確率は 10.3%

Thousands of GitHub repositories deliver fake PoC exploits with malware

2022/10/23 BleepingComputer — Leiden Institute of Advanced Computer Science の研究者たちは、様々な脆弱性に対する偽の PoC エクスプロイトを提供する、GitHub 上の数千のリポジトリを発見した。それらのリポジトリには、マルウェアも含まれていたという。GitHub は最大のコード・ホスティング・プラットフォームの1つである。そして、研究者たちが GitHub を用いて PoC エクスプロイトを公開し、セキュリティ・コミュニティが脆弱性の修正を検証することで、脆弱性の影響と範囲を判断できるようにしている。


Leiden Institute of Advanced Computer Science の研究者たちの技術レポートによると、PoC を取得する代わりにマルウェアに感染する可能性は、実証済みのフェイク/プランクウェアを除くと、10.3% にも上るという。

データの収集と分析

研究者たちは、2017年〜2021年に開示された脆弱性のエクスプロイトを広告する 47,300件強のリポジトリを、以下の3つのメカニズムで分析した。

  • IPアドレス解析:PoC の発行元 IP を公開ブロックリスト/VT/AbuseIPDB と比較する。
  • バイナリ解析:提供された実行ファイルとハッシュに対して、VirusTotal チェックを実行する。
  • 16 進数/Base64 解析:バイナリ/IP チェックを実行する前に、難読化されたファイルをデコードする。
Method of analysis
データ解析方法 (Arxiv.org)

抽出された 150,734 個のユニーク IP のうち、2,864 個がブロックリストのエントリと一致し、Virus Total のアンチウイルス・スキャンで 1,522 個が悪意あるものとして検出された。そして、1,069 個が AbuseIPDB データベースに存在していたという。

IP addresses found on various blocklists
各種ブロックリストに掲載された IP アドレス (Arxiv.org)

バイナリ解析では、6,160 個の実行ファイルのセットを調査し、1,398 個のリポジトリでホストされている合計 2,164 個の悪意のサンプルを発見した。

テストした 47,313 個のリポジトリのうち、合計で 4,893 個のリポジトリが悪意があると判断され、その大半が 2020年以降の脆弱性に関するものだった。

Malicious repositories per year
年別の悪質なリポジトリ数 (Arxiv.org)

このレポートには、マルウェアを配信する偽の PoC を持つリポジトリが、僅かだが含まれている。そして研究者たちは、まだアクティブで、GitHub 上で削除される過程にある、少なくとも 60 個の例を BleepingComputer に公開した。

PoC に含まれるマルウェア

研究者たちが、これらの事例のいくつかを詳しく調べたところ、リモート・アクセス型トロイの木馬から Cobalt Strike にいたるまでの、さまざまなマルウェア/有害スクリプトを発見した。

興味深い事例の1つが、通称 BlueKeep と呼ばれる CVE-2019-0708 の PoC だ。この偽 PoC には、Pastebin から VBScript をフェッチする、base64 難読化 Python スクリプトが含まれている。

以下のスクリプトは、Windows CMD を介したリモート・コマンド実行をサポートする、古い JavaScript ベースのトロイの木馬 Houdini RAT である。

Obfuscated script and de-obfuscated Houdini
難読化されたスクリプトと難読化解除された Houdini

また、システム情報/IP アドレス/ユーザー・エージェントを収集する情報窃取ツールである、偽の PoC が発見されたケースもある。

それは、以前に別の研究者が、セキュリティ実験として作成したものだった。つまり、自動化ツールにより発見されたことは、研究者にとって自分たちのアプローチが有効であることの証明となった。

Fake PoC exfiltration example
偽の PoC の流出例 (Arxiv.org)

研究チームの一員で、Darktrace のセキュリティ研究者でもある El Yadmani Soufianは、Virus Total で悪意があると判定された、base64 エンコード・バイナリを含む PowerShell PoC の例を BleepingComputer に提供してくれた。それは、テクニカル・レポートに含まれていないものだという。

Fake PowerShell PoC
偽の PowerShell の PoC

この Python PoC は、Virus Total で悪意あるものとしてフラグが付けられた、base64 エンコードされたペイロードをデコードする one-liner を含む。

Malicious one-liner payload posing as a PoC
PoC を装った悪質なワンライナー型ペイロード

偽の BlueKeep エクスプロイトは、ほとんどのアンチウイルス・エンジンで悪意のフラグが立てられ、Cobalt Strike として識別される、実行ファイルを含んでいる。

Cobalt Strike dropped via fake PoC
偽の PoC 経由でドロップされる Cobalt Strike

以下の偽 PoC に潜むスクリプトは、作者が望めば被害を出す可能性のある、不活性な悪意のコンポーネントを含んでいる。

Harmless but fake PoC
無害だが偽の PoC

安全性を保つには

GitHub にある、未検証ソースのリポジトリを、盲目的に信用するのは望ましくない。なぜなら、そのコンテンツはモデレート前のものだり、ユーザーが使用する前にレビューされる必要があるからだ。

ソフトウェア・テスターは、ダウンロードした PoC を慎重に精査し、実行する前に可能な限り多くのチェックを行うことを推奨する。

Soufian は、すべてのテスターが以下の3つのステップを踏むべきだと考えている。

  1. 自分や顧客のネットワーク上で実行しようとしているコードを、注意深く読むこと。
  2. コードが難解で、手動で分析するのに時間がかかる場合は、分離された仮想マシンなどのサンドボックス環境で、疑わしいトラフィックの有無を確認して、ネットワークをチェックする。
  3. VirusTotal のようなオープンソースのインテリジェンス・ツールを使用して、バイナリを分析する。

研究者たちは、すべての発見された悪意のリポジトリを GitHub に報告したが、すべてのリポジトリがレビュー/削除されるまでには時間がかかるため、まだ多くが公開された状態にある。

Soufian が説明するように、彼らの研究の目的は、GitHub 上で1回限りのクリーニングを行うだけでなく、アップロードされたコード内の悪意の命令にフラグを付けるという、自動化されたソリューションを開発するきっかけとして機能させることだ。

これはチームによる研究の1段階であり、より強力に難読化されたコードは、現状の検出ツールでは見逃されるため、彼らは検出ツールの改良に取り組んでいるという。

つい先日の 10月3日のことですが、「Microsoft Exchange のゼロデイ脆弱性:ProxyNotShell の偽 PoC が販売されている」という記事をポストしています。詐欺師たちがセキュリティ研究者になりすまし、新たに発見された Microsoft Exchange のゼロデイ脆弱性に対する、偽の PoC エクスプロイト ProxyNotShell を販売しているというものです。とても珍しい話だと思っていたら、GitHub では日常茶飯事なのですね。マルウェアを忍び込ませる GitHub と、騙して対価を得ようとする ProxyNotShell では、脅威アクターの狙いは異なりますが、闇雲に PoC エクスプロイトを信じてはいけないという点では、同じです。よろしければ、PoC で検索も、ご利用ください。