事例集です。
きのう、GitHubの通知を見たら、個人のリポジトリに My First PR というタイトルのPRが来ているのに気づいた。PR出すところを間違えたのかな、と思って見てみたがどうも様子がおかしい。
- prog という名前のバイナリファイルを置いている
- .github/workflows/ci.yml*1の中身をガッと書き換えている
on: [pull_request]
でworkflowを起動している- 20並列でjobが走るようにmatrixを設定している
fail-fast: false
なので、どれか1つのmatrixが失敗しても他のジョブは続行される
- base64 encodeした文字列をdecodeしてevalしている
- ドメインの名前解決を行ったあと
./prog
を実行するコマンドにdecodeされた
- ドメインの名前解決を行ったあと
- PRをめちゃくちゃな回数closeしてreopenしている
- PRを出したユーザーではなく、リポジトリのオーナーがcommitしたかのようにcommit logを偽装している
走ってるworkflowリストを見にいったらめっちゃenqueueされている!! ひとまず当該PRを出してきたユーザーをブロックして、enqueueされたworkflowを全部キャンセルした。
当該ユーザーのリポジトリ一覧を見ると、めちゃくちゃforkして同様のPRを出しまくっている*2。これはいかんなーと思ってabuse reportを書いて送信した。
他の人は認識してないのか、とちょっとTwitterを検索してみると、GitHub ActionsがDDoSに使われているという @github へのメンションがあった。
@github @natfriedman A button to cancel all running workflows would be kinda handy when GitHub Actions was used for some DDOS attacks
— Pascal Berger (@hereispascal) 2021年2月4日
これに対してGitHubの中の人が反応していた。
Well that sucks. Looking into it now. Did you report the user already?
— Martin Woodward (@martinwoodward) 2021年2月4日
どうやら状況を認識されたようで、中の人の反応から数十分ぐらい待ったら当該ユーザーのアカウントが消えた。
リプライツリーには、このリポジトリのスクリプトを使って攻撃を仕掛けているという報告もあった。片っ端からpublicなリポジトリを見つけてはforkしてPRを作りまくるというのをやっていたようだ。
GitHub Actionsについてちょっと考えてみると、任意コードをいくらでも並列に実行できる環境があちこちに転がっているということになって、攻撃者にとっては魅力的ではありそう。そういう使い方をしないでほしい。
しかし、生きてるといろいろありますね。