事例から学ぶ、GitHubの使用に伴う危険性

# はじめに
　コード管理ツールとしてGitHubを活用する人は多く、新規で利用する人も年々増加しています。しかし、扱う中での危険性もあります。
本記事では、GitHubの扱い方について、事例をもとに考えていきたいと思います。

■新規ユーザーの増加グラフ（[100 million developers and counting](https://github.blog/2023-01-25-100-million-developers-and-counting/)）
<img width="60%" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3497194/d29f5bd3-b964-b17d-9f0c-f23277149853.jpeg">

# 目次
* 事例①：機密性の高いソースコード流出問題
    * ■概要
    * ■その他のソースコード流出事件
* 事例②：リポコンフュージョン
    * ■概要
    * ■手口
* アクションプラン
    * アクションプラン①：リポジトリの設定や情報の扱いの見直し
    * アクションプラン②：セキュリティソフトの見直し
    * アクションプラン③：仕事で使うツールのセキュリティ関連のニュースを追う
* まとめ
* おわりに

# 事例①：機密性の高いソースコード流出問題

### ■概要
　[**CNBC**](https://www.cnbc.com/2023/03/26/twitter-source-code-leaked-online-court-filings-show-.html)の記事によると、Twitterのソースコードの一部がGitHubでリークされ、数カ月間公開されていたことが発覚した。

　Twitterのイーロン・マスクCEOが、[**Twitter**](https://twitter.com/elonmusk/status/1636835209587949570)でツイートをおすすめするために使われているコードを2023年3月31日にオープンソース化するとTwitterで発表した。しかしその動きとは無関係に、GitHubでTwitterのソースコードの一部が公開されていたことが判明した。

 　Twitterはこの事実を2023年3月24日に気付き、GitHubにリポジトリの削除を要求。GitHubはこれを受け入れ、当該リポジトリを削除した。
  <font color="red">※公開していたユーザー（FreeSpeechEnthusiast(言論の自由愛好家)）の正体は不明</font>

### ■その他のソースコード流出事件
1. [**GitHub上に三井住友銀の一部コードが流出（日経XTECH 2021.01.29）**](https://xtech.nikkei.com/atcl/nxt/news/18/09551/?n_cid=nbpnxt_twbn)
    * 三井住友銀行のシステム開発に関係した人物が、事務支援系システムの1つに含まれるエラーチェック処理の一部のコード（セキュリティに影響はない部分）をGitHubに投稿した
    * 考えられる原因は、GitHubに外注で依頼をうけたソースコードを、個人的な目的のためにUPした。それにより、ソースコードが多数の人の目にふれ、保存されてしまった
2. [**Microsoft従業員がGitHub上で誤って38TB分のデータを流出させる(Ubergizmo Japan 2023.09.28)**](https://jp.ubergizmo.com/2023/09/28/23171/)
    * Microsoft従業員の不注意から生まれたミスにより、MicrosoftのAI GitHubリポジトリにて、38TBもの膨大なプライベートデータが流出してしまった
    * Microsoftはリスクを最小限にするため、以下の方法を推奨した
        1. URLを重要なリソースに制限
        1. 権限を必要最小限に制限
        1. SAS URLの有効期限を短く設定


# 事例②：リポコンフュージョン
GitHubのリポジトリを本物に見せかける問題（リポコンフュージョン）が激化しました。

### ■概要
　[**記事（ITmedia NEWS 2024.03.11）**](https://www.itmedia.co.jp/news/articles/2403/11/news060.html)によると、本物のように見えるGitHubのリポジトリを作成し、マルウェアを仕込むような手口が10万件以上見つかったとサイバーセキュリティ企業が注意を呼び掛けた。

### ■手口
セキュリティ企業の[**Apiiro**](https://apiiro.com/)の研究者によると、攻撃は以下のような手順で悪意のあるリポジトリをGitHub上で氾濫させていた。
1. **GitHubにて別のリポジトリを用意し、攻撃対象のリポジトリを複製する**
1. **マルウェアローダーを埋め込む**
    * マルウェアローダー：マルウェアをインストールするプログラム
    * 例えば、情報を抜き取るソフトウェアやランサムウェアを追加するなど
1. **悪意のあるリポジトリを既存リポジトリと同じ名前でGitHubにアップロードし直す**
    * 誰かがそのリポジトリ名で検索した場合、元の安全なリポジトリと悪意あるリポジトリの両方が検索結果に現れる可能性があり、混乱を招く設計になる
1. **フォーラムやDiscordでひっそりと悪意のあるリポジトリを宣伝する**
    * 自動化の仕組みを使って何千回もフォークし、Web上のフォーラムなどで宣伝していた
    * 何も知らないユーザーが、悪質なリポジトリをフォークしてしまう

# アクションプラン
前述した事例をもとに、

1. **GitHubをどう扱うべきなのか**
1. **マルウェアをどう対処するべきか**

これらについてのアクションプランを提示します。

## アクションプラン①：リポジトリの設定や情報の扱いの見直し
### ■概要
　GitHubのリポジトリの設定や、情報漏洩があってもリスクを最小限にする方法を考えましょう。

### ■例
**▼GitHubのリポジトリの設定**
1. リポジトリの性質を考慮し、「Public」のものは「Private」に変更する
   * アクセスユーザーを制限し、<font color="red">**個人情報などの情報漏洩を防ぐ**</font>
   * 定期的にアクセス権限を見直す習慣をあるとなお良し
2. コミット前に、機密情報が含まれていないかを確認する
    * 『Gitleaks』というツールを使うと、<font color="red">**機密情報をハードコードするのを防いでくれます**</font>
3. 二要素認証を有効化する
    * 不正アクセスのリスクを大幅に減少することができる
4. リポジトリのURLや開発者情報をクローン前に必ず確認する
    * <font color="red">**信頼できるソースからのみ**</font>コードをクローンするようにする

**▼情報漏洩があってもリスクを最小限にする方法**
1. ソースコードに機密情報をできる限り書かない
    * ツールを使って、<font color="red">**機密情報の選別をする**</font>ようにする
    * Microsoftの事例から、以下の部分についても見直してみる
        1. URLを重要なリソースに制限
        2. 権限を必要最小限に制限
        3. SAS URLの有効期限を短く設定
1. 情報漏洩につながる事をしてしまった人の話を調べる
    * 自身がそうなっても冷静に対応できるよう、事前に調べておく


## アクションプラン②：セキュリティソフトの見直し

この章では、以下のYoutube動画を参考に作っています。

[【騙されるな】ウイルスセキュリティーソフトは買うな！（パソコン博士TAIKI 2022.02.27）](https://youtu.be/4abg4t0Vmj8?list=LL)

### ■概要
マルウェアをブロックするために、自身のPCで使用されているセキュリティソフトについて、以下の点を見直しましょう。
1. 使用しているセキュリティソフトは何か
1. セキュリティレベルはどの程度か
1. 複数のセキュリティソフトによって無効になっていないか
1. そのセキュリティソフトをより活用できないか

#### 1. 使用しているセキュリティソフトは何か
設定画面から確認することができます。

**■参考文献**
[[Windows 11] セキュリティ対策ソフトがインストールされているかどうかを確認する方法を教えてください。（FUJITSU 2022.08.31）](https://www.fmworld.net/cs/azbyclub/qanavi/jsp/qacontents.jsp?PID=5611-3388)

#### 2. セキュリティレベルはどの程度か
　セキュリティソフトの検証を行う第三者機関のサイトを確認します。例えば、[**AV-Comparatives**](https://www.av-comparatives.org/)や[**AV-TEST**](https://www.av-test.org/en/)のようなサイトです。
　これらのサイトは、セキュリティソフトのメーカーがお金を払って検証し、性能をランキング化したものになります。そのため、利用しているセキュリティソフトが<font color="red">**①ランキング下位**</font>であったり、<font color="red">**②ランキングに載っていない**</font>場合は、変更を検討してみましょう。

#### 3. 複数のセキュリティソフトによって無効になっていないか
　セキュリティ対策の基本であるウイルス対策ソフトは、１つに限定して導入することが推奨されています。もしソフトが複数あると以下の危険性があります。
1. **メモリ消費量が増える**
    * スキャンする対象が増えるため
2. **セキュリティ機能がオフになる**
    * セキュリティソフトによっては、別のソフトが入ると自動でセキュリティ機能をオフにするものがある
    * 例えば「Windows Defender」

#### 4. そのセキュリティソフトをより活用できないか
　標準設定を見直し、より性能を上げられないか検討してみましょう。特に、後述するWindowsセキュリティを活用し、chromeブラウザを使用する場合は以下の拡張機能を追加しましょう。
 
 * [Microsoft Defender Browser Protection](https://chromewebstore.google.com/detail/microsoft-defender-browse/bkbeeeffjjeopflfhgeknacdieedcoml?hl=ja)

この拡張機能は、EdgeにあるWindows Defender SmartScreen の機能をChrome と共有するものになります。セキュリティが上がるのでお勧めです。

<hr />

### ■Windowsセキュリティ(Windows Defender)で十分
　AV-Comparativesが2021年8月から11月の期間に行った[**セキュリティの性能に関する報告**](https://www.av-comparatives.org/tests/business-security-test-2021-august-november/)によると、Microsoftのセキュリティソフト（Windows Defender）が群を抜いて性能が高いと評価された。

 WindowsセキュリティはWindowsに標準で搭載されていますが、<font color="red">**市販のセキュリティソフトが入っている場合は機能が停止している可能性があります。**</font>設定画面から見直しましょう。

#### ■性能報告
* 棒グラフの概要
    * 赤いエリア：ウイルスの侵入を許してしまった割合
    * 灰色のエリア：ウイルスをブロックした割合
* オレンジの線の概要
    * 誤認識率を表す
* 性能の高いもの
    * 赤いエリアの割合が少なく、オレンジ色の線が低いもの

**▼ウイルス除外テスト**
![スクリーンショット 2024-05-05 154232.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3497194/1797bdfb-93d0-d7d2-31fe-ca31aefa4f29.png)

**▼マルウェア除外テスト**
![スクリーンショット 2024-05-05 173903.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3497194/32ea0836-e2af-9c2d-ee6f-b4db57f2abbe.png)

## アクションプラン③：仕事で使うツールのセキュリティ関連のニュースを追う
　普段私たちが利用する一般的なツールには、GitHub以外にもchatGPTやVSCodeなどがあげられます。これらの危険性を事例をもとに紹介したサイトを探しましょう。

### ■例
* 「GitHub 危険性 事例」
    * 本記事の紹介した事例については、このような検索方法によって見つけることができました

※私が以前に投稿した、『事例から学ぶ、chatGPTの使用に伴う危険性』も紹介します。

https://qiita.com/Cookie_Iwate/items/7b86cf1bd9e33fdbe462

# まとめ
GitHubの利用に伴う危険性には、主に以下の事例がありました。
1. **ソースコードの流出**
1. **マルウェアを仕込んだリポジトリの大量検出**

この事例から、ユーザーは以下のようなアクションプランでリスクを減らすことができます。
1. **リポジトリの設定や情報の扱いの見直し**
1. **セキュリティソフトの見直し**
1. **仕事で使うツールのセキュリティ関連のニュースを追う**

# おわりに
 　この記事を執筆する過程で、GitHubを使って情報漏洩を防ぐための新しい工夫を学ぶことができました。また、自分が使用していると思っていたWindowsのセキュリティ機能が停止していることに気づき、その設定を見直す機会にもなりました。
  
  今回の経験から、セキュリティについて積極的に学ぶ姿勢がなければ、無自覚にリスクにさらされてしまうと痛感させられました。
  
  皆さんにも、使用しているツールのセキュリティを見直すきっかけになればと思います。