ネットサービス

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


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


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


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


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


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


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


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


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


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

この記事のタイトルとURLをコピーする

・関連記事
GitHubに100種類以上の機能を追加し、インターフェースを使いやすく改良するブラウザ拡張機能「Refined GitHub」 - GIGAZINE

GitHubに数百万件もの「悪意のあるコードを埋め込んだ既存リポジトリのコピー」がアップロードされていたという報告 - GIGAZINE

著作権違反で削除通知を送られたGitHubプロジェクトは1年で2万件以上 - GIGAZINE

GitHubがサイバー犯罪者によるマルウェア配信の温床として悪用されているという指摘 - GIGAZINE

GitHubで「偽のスター」を購入して信用度を偽装しているプロジェクトの見分け方 - GIGAZINE

in ソフトウェア,   ネットサービス, Posted by log1d_ts

You can read the machine translated English article here.