Skip to content
Go back

【FakePoC-Hunter】GitHubから悪意のあるPoCリポジトリを抽出したかった

はじめに

セキュリティに携わる人たちにとって、PoC(Proof of Concept)は脆弱性に対する攻撃を再現するにあたって重要であり、GitHubから入手することも多いと思います。

また実務ではセキュリティと離れている人でも、例えば趣味でCTFに取り組んだりしている場合は、攻撃サーバーが持つ脆弱性に関連するPoCを、GitHubで検索して利用したことがあるという人もいると思います。

一見、PoCはセキュリティ技術者に向けて共有されるコードやバイナリであり、提供者もセキュリティ技術者である前提があり、提供者が悪意を持っていることを想定していないかもしれません。 しかし、関連研究によるとGitHubにはPoCを装ってマルウェアを実行させようとする悪意のあるリポジトリが複数存在することが示されています。

今回は実際にGitHubのPoCを調査し、悪意のあるリポジトリを抽出することを試みました。

関連研究

タイトル: Beyond the Surface: Investigating Malicious CVE Proof of Concept Exploits on GitHub

著者: Soufian El Yadmani, Robin The, Olga Gadyatskaya

所属: Leiden Institute of Advanced Computer Science, Leiden University

URL: https://arxiv.org/abs/2210.08374

この研究は、多くのセキュリティベンダーのブログなどにも引用されているので目にしたことがある人もいるかと思います。詳しくはこの論文を参照していただきたいですが、簡単にまとめさせていただきます。

この様に、何気なく利用しているGitHubのPoCには思った以上に脅威が潜んでいたことが分かります。

ただ、論文発表時点で既にその当時調査対象であったリポジトリのほとんどは削除されてる事が報告されており、現在においても継続した調査分析が必要なのではないかと考えます。

そこで今回は、2023年から最新までの間にNVDに公開されたスコアが7以上の特に重要度の高いCVEに対してのPoCリポジトリに焦点を絞り、調査をしていきます。

アプローチ

関連研究によると、悪意のあるリポジトリはPythonコードの中にbase64などでエンコードされたスクリプトを含むものよりも、圧倒的にexeファイルの様な実行形式のバイナリで提供されることが多いと示されていた為、今回はexeファイルのみを捜索対象にしています。

実は、悪意あるIPアドレスやドメイン名の抽出や、base64でエンコードがされているスクリプトが含まれているかなどを対象としての調査も行いましたが、誤検知が多く目的を達成することは困難であると判断しました。

今回は最終的に1847件のリポジトリを調査しました。スコアで重大な脆弱性を持つCVEのみを検索対象として絞っている上、対象期間内のすべてのCVEを対象とはできていないので、論文と比較すると調査したリポジトリの数が少ないです。

検証のやり方は以下の通りです。

  1. NVDに問い合わせて対象期間内のCVEを入手。
  2. GitHubでCVE名を使って検索。
  3. 検索にかかったリポジトリをクローンしてexeファイルを探索。
  4. exeファイルが見つかったらVirusShare APIを使って情報を問い合わせる。

実際に使用したコードはGitHubにあげておきます。

結果

合計1847件のリポジトリの中から、VirusShareでマルウェアと検出された16件のバイナリを含むリポジトリを抽出しました。

この調査で見つかったバイナリについて、VirusTotalで再スキャンを行いました。その結果、いずれのファイルも CVE検証用PoCに付属するツールや検証用バイナリであり、明確なマルウェア配布を目的としたものではないと判断できました。

いくつかの結果を詳しく見てみます。

ケース1: ysoserial.exe

例えば、とあるPoCリポジトリにあったysoserial.exeというファイルなのですが、これはPoCを作成する上で利用されるバイナリでした。

ケース2: nc64.exe

そしてこれは、CTFでも使ったことがある人は多いと思いますが、netcatですね。

ケース3: CVE-2024-26229.exe

そしてこれもマルウェアであると判定されていますが、PoCが検証しているCVEに対応したバイナリそのものであり、実行した人に対して何らかの悪意あるコードを実行させようとしている訳ではないと考えられます。

他にもありますが、その全てが検証するCVEに関するバイナリであり、マルウェアであると判断されたとしても、悪意があるものではなかったと判断しました。

おわりに

出来る限り新しいCVEに対してのPoCリポジトリを対象に、悪意のあるバイナリの抽出を目指しましたが、残念ながら?見つけることは出来ませんでした。

今後改善するとしたら

辺りが考えられるかなと思いました。

今回は悪意のあるリポジトリの抽出は叶いませんでしたが、PoCが攻撃対象にされていることは確かです。今後も他者が提供するPoCを利用する時は細心の注意を払う必要があると思いました。


Share this post on:

Previous Post
【備忘録】古いMacBookのバッテリーを自分で交換してみよう
Next Post
【PortSwigger】HTML属性内のXSS攻略:HTMLエンコードだけではセキュリティ対策が十分でない場合