ネットサービス

GitHubに公開するとアカウント凍結される「毒リポジトリ」を作成する方法

by Nick Quaranto

GitHubで公開されていた動画ダウンローダー「youtube-dl」は、全米レコード協会(RIAA)からの要請でオリジナルのリポジトリは削除されたものの、各所で有志によるミラーリングが行われています。そうしたミラーリング活動に対するGitHubの動きを利用し、GitHubに公開するとアカウントが凍結される危険なリポジトリを作成する方法を、エンジニアのJoey Hess氏が公開しています。

how to publish git repos that cannot be republished to github
http://joeyh.name/blog/entry/how_to_publish_git_repos_that_cannot_be_republished_to_github/

How to publish Git repos that cannot be republished to GitHub | Hacker News
https://news.ycombinator.com/item?id=24974208

youtube-dlのリポジトリ削除に対し、ジャーナリストやオープンソースコミュニティの開発者たちは強く反発。GitHubのナット・フリードマンCEOも開発者の集まるIRCチャットで「リポジトリをできる限り早く復活させたい」という意思を示していましたが、GitHub上では有志によってyoutube-dlをミラーリングした多数のリポジトリが作成されるという、収拾がつかない状況となっていました。

GitHubのCEOが削除された「youtube-dl」のリポジトリ復活に向けて動く - GIGAZINE


こうした状況を受け、2020年11月1日にGitHubのDMCAポリシーが改訂されました。改訂後のポリシーには「削除対象となったコンテンツとまったく同じものを再アップロードすることは、GitHubのDMCAポリシーと利用規約に違反することになりますのでご注意ください。利用規約に違反するコンテンツをこのリポジトリに投稿した場合、当社はそのコンテンツを削除し、アカウントへのアクセスを停止することがあります」という文言が追記されています。


Hess氏はこのポリシー改訂から「GitHub上で特定のコミットハッシュ値を含むコンテンツを公開した場合、アカウント凍結の対象になっていく」と推測。その推測をもとに、Hess氏は自らホスティングするgitリポジトリに「毒」を仕込んだ方法を解説しています。

その方法は簡単で、違法なリポジトリをサブモジュールとして自身のリポジトリに追加し、「.gitmodules」ファイルを削除した上でコミット。その後サブモジュールのディレクトリも削除して、もう一度コミットを行います。すると、「.gitmodules」ファイルやサブモジュールのディレクトリを消しつつ、違法なリポジトリのコミットハッシュ値のみ残すことができるとのこと。このリポジトリを第三者がGitHubにプッシュすると、そのアカウントは凍結されてしまうというわけです。


ローカルのgitリポジトリで「毒リポジトリ」を作成するためのシェルスクリプトまで用意されています。

#!/bin/sh
printf "Enter the url of the illegal repo, Citizen: "
read wha
git submodule add "$wha" wha
git rm .gitmodules
git commit -m wha
git rm wha
git commit -m wha


なお、実際にはこの方法でアカウントが凍結される可能性は低いようで、今回の「毒リポジトリ」はyoutube-dlのミラーリング増殖に対するHess氏のユーモアとなっています。

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

・関連記事
「GitHubに削除されたYouTube動画ダウンローダーは著作権侵害用ツールではない」とオープンソース団体やジャーナリストが反発 - GIGAZINE

YouTube動画ダウンローダーのリポジトリをGitHubが削除、音楽業界団体からの要請に基づき - GIGAZINE

GitHubのCEOが削除された「youtube-dl」のリポジトリ復活に向けて動く - GIGAZINE

GitHubコミュニティが世界中に拡大していることを示す年次レポートが公開される - GIGAZINE

in ネットサービス, Posted by darkhorse_log

You can read the machine translated English article here.