28
4

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

この記事は デジタル創作サークル UniProject Advent Calendar 2025 23 日目および 本番環境などでやらかしちゃった人 Advent Calendar 2025 の 19 日目の記事です。

11 月 13 日、その出来事は突然おこる

11 月 13 日、14 時手前、事態は突然発生しました。
なんと弊サークルの Discord サーバーにて荒らしが発生したのです

スクリーンショット 2025-12-22 18.38.36.png

何が起こったのか

まずは、すぐさま止めてメンバーを落ち着かせた上で、何が起こったのかを整理しました。

わかることとしては、以下の 2 つだけでした...

  • Webhook が @everyone を連発した
  • だいぶ昔に使っていたものだった

残念ながら、Discord の仕様では Webhook の @everyone を無効化する方法はないようで、URL が漏れたら一発でやられる仕様になっていました。

どこから URL は漏れたのか

まずは、Discord のメッセージを洗ってみたものの、発見には至らず...

ありそうなところと言えば、

  • Discord に投稿してしまった
  • プログラムに意図せずに組み込んだ

の 2 択かなと考え、GitHub のコミットを洗ってみました。

消したはずのコミット

やはり発見...しかし、このコミットは今の main ブランチからは外れたものでした。
つまり、このコミットは消したはずのコミットだったのです。

なぜこんなことが起きたのか

GitHub のドキュメントに記述がありました。

履歴を書き換えてフォース プッシュするだけの場合、機密データを含むコミットは他の場所からアクセスできる可能性があります。

  • リポジトリのクローンまたはフォーク内
  • GitHub のキャッシュされたビューで SHA-1 ハッシュを使って、直接
  • それらを参照するプル リクエストを通じて。

つまり、消えたようで消えていなかったのです...

どうすればよかったのか

もちろんながら、Discord の WebhookURL を再発行すべきでした。

GitHub からデータを抹消するには、GitHub のサポートに問い合わせる方法も示されていますが、こちらは、機密情報のローテーションで対応できない場合のみです。
そもそも、クローンされているものに対して変更を加えられないので、そんなことは絶対に起こしてはいけませんし、普通に pre-commit などで検知してやるのがいいのかもしれません。

最後に

Credential を Slack に書くなという話も含め、機密情報の取り扱いには十分気をつけていきたいですね...

参考文献

28
4
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
28
4

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?