GitHubの削除されたリポジトリや非公開のリポジトリに誰でもアクセスできてしまうのは仕様通り

GitHubの削除されたリポジトリや非公開のリポジトリに誰でもアクセスできてしまうのは仕様通り - 画像


GitHubでは削除されていたりプライベートに設定されていたりするフォークやリポジトリに誰でもアクセスでき、さらにその動作が欠陥ではなく仕様通りであるとオープンソースセキュリティ企業のTruffle Securityがブログに投稿しました。
Anyone can Access Deleted and Private Repository Data on GitHub ◆ Truffle Security Co.
https://trufflesecurity.com/blog/anyone-can-access-deleted-and-private-repo-data-github

GitHubの削除されたリポジトリや非公開のリポジトリに誰でもアクセスできてしまうのは仕様通り - 画像


GitHubでの一般的なワークフローとして、「新しいフォークを作成する」「コミットする」「フォークを削除する」というものを考えてみます。

GitHubの削除されたリポジトリや非公開のリポジトリに誰でもアクセスできてしまうのは仕様通り - 画像


この時、削除したはずのフォークの中身を誰でも確認できてしまうとのこと。Truffle Securityが大手AI企業のリポジトリを調査した結果では、削除済みのフォークから40個の有効なAPIキーを発見しています。フォーク後、確認のために一時的にAPIキーをハードコードしてしまうパターンが多い模様。

GitHubの削除されたリポジトリや非公開のリポジトリに誰でもアクセスできてしまうのは仕様通り - 画像


もう一つのケースとして、「リポジトリをフォークする」「元のリポジトリに新たなコミットを行う」「元のリポジトリを削除する」という場合を考えます。

GitHubの削除されたリポジトリや非公開のリポジトリに誰でもアクセスできてしまうのは仕様通り - 画像


一見するとフォークの後に行われたコミットへのアクセスは不可能に見えますが、リポジトリネットワークの仕組みを通して永続的にアクセス可能な状態になっているとのこと。

GitHubの削除されたリポジトリや非公開のリポジトリに誰でもアクセスできてしまうのは仕様通り - 画像


さらに、新たなツールをオープンソース化する場合、「新たなツール用のリポジトリをプライベート設定で作成」「プライベートなフォークを作成」「フォークをプライベートにしたままリポジトリを公開設定に変更」という手順を踏むことは多いもの。

GitHubの削除されたリポジトリや非公開のリポジトリに誰でもアクセスできてしまうのは仕様通り - 画像


この場合も、フォークがプライベートであるかどうかに関わらず全てのコミットが誰からでもアクセス可能な状態になっています。

GitHubの削除されたリポジトリや非公開のリポジトリに誰でもアクセスできてしまうのは仕様通り - 画像


上記のような「隠れたコミット」にアクセスするには、当該コミットのコミットハッシュを取得すれば良いとのこと。

GitHubの削除されたリポジトリや非公開のリポジトリに誰でもアクセスできてしまうのは仕様通り - 画像


リポジトリのURLに直接コミットハッシュを入力することで当該コミットを表示することが可能です。

GitHubの削除されたリポジトリや非公開のリポジトリに誰でもアクセスできてしまうのは仕様通り - 画像


Truffle SecurityがGitHubにバグとして報告したところ、GitHubからは「仕様通り」と返答があったとのこと。実際、GitHubのドキュメントを確認すると「フォークネットワーク内のどのリポジトリへのコミットも、アップストリームリポジトリを含むフォークネットワーク内全てのリポジトリからアクセスできる」と書かれています。

GitHubの削除されたリポジトリや非公開のリポジトリに誰でもアクセスできてしまうのは仕様通り - 画像


Truffle Securityは「プライベートリポジトリであってもコミット内容が外部に公開されている場合がある」「リポジトリやフォークの削除はコミットデータを実際に削除するわけではない」とまとめ、GitHubの仕様について「設計上の欠陥」と指摘。多くのGitHubユーザーがリポジトリネットワークの仕組みを理解しておらず、安全性が低下していると述べました。

ジャンルで探す