GitHubとGitLabの「公式」リンクに潜むマルウェア

GitHubにあるMicrosoftのリポジトリからファイルをダウンロードすることで、マルウェアに感染する可能性があることがわかりました。

「ソフトウェアをダウンロードするときはメーカーや開発元の公式ソースから」というヒントは前々から繰り返し言われています。「公式ソース」とは通常、各プラットフォームの主要なアプリストアを指しますが、無料で便利な何百万ものオープンソースアプリの場合、最も「公式」なソースはGitHubやGitLabのような専用サイトにある開発者のリポジトリです。そこでは、プロジェクトのソースコード、コードの修正と追加、そして多くの場合、すぐに使用できるアプリのビルドを見つけることができます。これらのサイトは、パソコンやソフトウェア、プログラミングに少しでも興味のある人なら誰でも知っていることでしょう。しかし最近、github{.}com/{User_Name}/{Repo_Name}/files/{file_Id}/{file_name}のようなリンクからアクセス可能なファイルを開発者以外の誰かが公開したり、任意のオブジェクト(マルウェアなど)が仕込まれたりする可能性があることがわかりました。これは、多くの関係者(ITセキュリティ担当者や開発者自身も含めて)にとってあまり良くない発見でした。

サイバー犯罪者はすでにこれを悪用し始めています。

問題を細分化

GitHubとその関連サービスであるGitLabは、ソフトウェア開発プロジェクトにおける共同作業を目的に構築されています。開発者は自ら作成したコードをアップロードしたり、別の開発者がそれに追加や修正を加えたり、またアプリやライブラリの代替バージョンであるフォークを作成することもできます。そして、ユーザーがアプリにバグを見つけた場合は、問題レポートを作成して開発者に報告することができます。他のユーザーは、コメント欄で問題点を確認したり、アプリの新しいバージョンについてコメントを残すこともできます。必要に応じて、エラーを示すスクリーンショットや、アプリをクラッシュさせるドキュメントなどのファイルをコメントに添付することが可能です。これらのファイルは、上記の種類のリンクを使用してGitHubサーバーに保存されます。

しかし、GitHubにはある特徴があります。ユーザーがコメントを作成し、添付ファイルをアップロードしたにもかかわらず、[Publish](公開する)をクリックしなかった場合、その情報は下書きに「残ったまま」になり、アプリケーションの所有者からも他のGitHubユーザーからも見えなくなってしまいます。それにもかかわらず、コメントにアップロードされたファイルへの直接リンクは作成され、正常に動作します。このリンクをたどった人は誰でも、GitHubのCDNからファイルを受け取ることになります。

GitHubの未公開コメントへのファイル追加後に生成される悪意のあるファイルのダウンロードリンク

一方、このファイルがコメントに投稿されたリポジトリの所有者は、このファイルを削除したりブロックしたりすることができません。ファイルが追加されたことさえ、知ることがないのです。また、リポジトリ全体でこのようなファイルのアップロードを制限する設定もありません。唯一の解決策は、コメントを完全に無効にすることです(GitHubでは、最長6か月間コメントの無効化が可能です)。しかし、この状態では開発者はフィードバックを受けることができません。

GitLabのコメントの仕組みも似たようなもので、下書きのコメントを通じてファイルを公開することができます。ファイルには、gitlab.com/{User_Name}/{Repo_Name}/uploads/{file_Id}/{file_name} のようなリンクからアクセスできます。

もっともこの場合は、ファイルをアップロードできるのは登録済みでログイン中のGitLabユーザーのみとなるため、問題はいくらか軽減されます。

フィッシングキャンペーンにとっての好機

「GitHub/GitLab」から始まり、評価が高い開発者や人気のあるプロジェクトの名前を含むリンクで任意のファイルを公開できる(ファイル付きの未公開コメントはほぼすべてのリポジトリに残すことができるため)おかげで、サイバー犯罪者は非常に高い説得力を持たせたフィッシング攻撃を実行する機会に恵まれることになります。悪意のあるキャンペーンは既に発見されています。ゲーム用の不正アプリが含まれていると想定される「コメント」が、Microsoftのリポジトリに残されているのです。

注意深いユーザーなら、なぜゲームの不正コードがMicrosoftのリポジトリ(https://github{.}com/microsoft/vcpkg/files/…../Cheat.Lab.zip)にあるのか、疑問に思うかもしれません。しかし、「GitHub」や「Microsoft」というキーワードによって被害者が安心してしまい、リンクをそれ以上精査しないという可能性の方がはるかに高いでしょう。さらに巧妙な犯罪者であれば、マルウェアをもっと慎重に偽装する可能性があります。たとえば、マルウェアをGitHubやGitLabを通じて配布されているアプリの新バージョンとして提示し、そのアプリの「コメント」という形でリンクを投稿するのです。

GitHubとGitLab上の悪意のあるコンテンツから身を守る方法

この設計上の欠陥は依然として修正されておらず、誰でも自由にGitHubやGitLabのCDNに任意のファイルをアップロードすることが可能となっています。そのため、これらのプラットフォームのユーザーは細心の注意を払う必要があります。

  • 公式以外のWebサイトやメール、チャットなどの外部のソースから見つけたGitHub/GitLabへの直接リンクからは、ファイルをダウンロードしないようにしましょう。代わりに、プロジェクトのページ(github{.}com/{User_Name}/{Repo_Name}またはgitlab{.}com/{User_Name}/{Repo_Name})を開き、そこから実際にファイルをダウンロードできることを確認してください。開発者からの公式ファイルは、リポジトリで公開され、見えるようになっているはずです。
  • 正規の開発者ページにアクセスしていることを確認しましょう。GitHubやGitLab、その他のオープンソースのリポジトリには、タイポスクワッティングがよく仕掛けられています。これは、元の名前を1文字か2文字だけ変えた名前で偽のプロジェクトを作成する行為です(たとえば、「Chatdev」の代わりに「Chaddev」)。
  • 星(「高評価」)の数が少なく、最近作成されたアプリケーションはダウンロードしないようにしましょう。
  • すべてのパソコンとスマホで、マルウェアやフィッシングから保護するソフトウェアを使用しましょう。カスペルスキー プレミアムなら、ゲームプレーヤーやパソコン愛好家のデバイスを包括的に保護することができます。
ヒント