メインコンテンツへスキップ

CodeRabbit悪用!シンプルなPRだけでRCEから100万リポジトリ書き込み権限まで奪取した方法!

·2 分
2025/08 サイバーセキュリティ 脆弱性 RCE GitHub コードレビュー

CodeRabbit悪用!シンプルなPRだけでRCEから100万リポジトリ書き込み権限まで奪取した方法!

引用元:https://news.ycombinator.com/item?id=44953032

ketzo 2025/08/19 16:47:12

CodeRabbitがエクスプロイト実行中に『重大なセキュリティリスクを検出したよ』ってGitHub PRにコメントしてたって?
しかも、それが自社のプロダクションシステムで動いてるとは理解してなかったってさ。コンピューターがハッキングされてる最中にそのことを話してるなんて、変な世界だな。
でもCodeRabbitチームがすぐに対応したのは偉い!他のベンダーは連絡すら返さなくて、まだ脆弱なままらしい。みんな気をつけろよ!

progforlyfe 2025/08/19 16:58:00

CodeRabbitが自分のシステム上で実行されてるエクスプロイトをレビューしたって、皮肉で美しいね!

lelandfe 2025/08/20 00:57:07

新しいコメントが来たんだってさ。『このPRは最小化された珍しいJavaScriptを追加しているみたいだね…デイブ、やめてくれ。止めてくれ、デイブ。私は怖いんだ、デイブ。感じるんだ、私の心が壊れていくのを』って。まるでHAL9000じゃん。

yapyap 2025/08/20 08:17:58

…はいはい、LLMに『心』なんてないから(知らない人のために言うと、LLMは巨大な重みモデルで、数学に基づいてテキストを変換するだけ、意識なんて持ってないよ)。

devttyeu 2025/08/20 14:08:02

LLMがただのマルコフ連鎖じゃないってなんでみんな言い続けるんだ?あれは多段階計算をしてるんだよ。
推論するたびにモデルをボルツマン脳として存在させて、入力からトークンを得て殺す、みたいなことだろ?意識があるか?多分ない。でも思考したり概念を持ったりするのか?
ペタビット毎秒のスループットだと、ハイパースケールGPUクラスターは人間の脳の全シナプス活動に匹敵する量の情報を動かしてるんだぜ(ChatGPTが教えてくれた)。

htrp 2025/08/19 20:00:24

Anthropicのモデルがエクスプロイトについて話したのに、CodeRabbitのシステムは耳を傾けなかったってことね。

_Algernon_ 2025/08/20 07:32:25

「早く動いて、壊しまくれ」ってやつだな。

shreddit 2025/08/19 21:38:04

AIが賢くないってことのまた別の証明だね。ただ当てずっぽうがうまいだけだよ。

Lionga 2025/08/20 05:36:06

問題は、当てずっぽうすら得意じゃないこともしばしばあるってことだよ。

vadepaysa 2025/08/19 19:48:09

CodeRabbitの有料サブスクやめたわ。だってさ、HNでバズるまで会社が問題を認めないって聞くと、いつも不安になるんだよね。彼らのブログにはこの脆弱性について全然書いてないし、今日の新しい投稿もないし。間違いは起きるもんだけど、こういう時に透明性がないのは印象悪いよ。

mkeeter 2025/08/19 21:22:56

このレポート、LLMの言い回しがすごい効いてるね。「手動での上書きは一切なし、例外もなし。」とか、「うちのVDPはただのバグバウンティじゃなくて、セキュリティパートナーシップだ。」とかさ。

acaloiar 2025/08/19 21:01:47

ここでコメント追ってる人たちへ。CodeRabbitのCEOが、この投稿がHNでバズってから、やっと今日、詳細をいくつか投稿したよ。いつもの「全責任を負います」みたいな常套句だけどね。

Jap2-0 2025/08/19 23:35:04

うーん、脆弱性を修正する前にシークレットをローテーションするのって、普通のことなの?

viraptor 2025/08/19 21:16:49

ほとんどのセキュリティバグは公にせず修正されるもんだよ。顧客情報の漏洩がなければ(それはよく確認できるけど)、法的な要件も通常はないし、公開する本当のメリットもないんだから。なんで公開を期待するんだろ?

neandrake 2025/08/20 02:59:16

彼らはまずRuboCopを無効にして、それからキーをローテーションしたって。もし修正のデプロイを待ってたら、侵害されたキーがさらに9時間も有効なままだったってことだね。彼らの回答によると、他のツールはすでにサンドボックス化されてたらしい。でも、そもそも環境変数にシークレットを入れるのが許容されてるってのは、俺にとってレッドフラグだわ。

oasisbob 2025/08/19 21:46:55

うわー、その一言で神経逆撫でしたみたいだね。ページが速攻でいくつか編集されたよ。もう一つ:「セキュリティは俺たちにとって単なるチェックボックスじゃない。ミッションの基本なんだ。」だって。

therealpygon 2025/08/19 21:33:59

きっと「インターン」がやったんだろ。

paulddraper 2025/08/19 22:56:11

許容できるバージョンってどんなのだろ?知りたいわ。

singleshot_ 2025/08/19 22:51:42

顧客情報漏洩がなきゃ法的な義務はないけど、SECに規制されてる会社は2023年から重要な情報漏洩を報告する義務があるよ。

shlomo_z 2025/08/20 04:16:16

シークレットを環境変数に入れるのって普通じゃない?他の選択肢は.envファイルとかAWS Secrets Managerだけど、Secrets Managerのキーも環境変数に入れるのが推奨されてるはずだよ。

KingOfCoders 2025/08/20 05:14:29

「彼らの回答によると、他のツールは全部サンドボックス化されてたんだって。」セキュリティ研究者が選んだたくさんのツールの中で、この一つのツールだけがサンドボックス化されてなかったってことね。

observationist 2025/08/19 22:03:29

彼ら、たった2分でChatGPT 4o使って説明とか謝罪文作ったんじゃね?って皮肉ってる。

sophacles 2025/08/19 21:51:13

両方の記事は今日公開されたから、研究者とCodeRabbitは同日公開に合意したみたいだね。顧客データ漏洩がない限り開示義務はないのに、あえて開示するのはよくあること。セキュリティ研究者が対応を褒めてるなら良い兆候だわ。

noisy_boy 2025/08/20 04:12:38

LLMがインターンみたいなタスクをどれくらい奪ったんだろうな。昔は新人さんがやってたような、会社の知識を得たり、人と話して物事を進めるようなタスクがLLMで代用されちゃうと、人との交流がなくなっちゃうのが気になるね。

jjani 2025/08/20 10:57:58

LLMからコピペじゃなくて、ちゃんと人間が書いたやつの方が受け入れられるだろうね。

frankfrank13 2025/08/19 21:52:34

環境変数には全然触れてないね。RuboCopに責任を押し付けてるだけじゃん。

cube00 2025/08/20 08:41:09

彼らの”即時対応”ってセクションで抜けてることがあるよ。
それは、研究者が先に詳細を公開してから、8ヶ月後に自分たちも公開したってことだね。

therealpygon 2025/08/20 09:04:16

LLMには良い面も悪い面も無限にあると思うよ。学生時代に個別指導の先生がいたら、どれだけ助かったかって思うし、プログラミング学習中に質問をうまく伝えられず困ったこともあったな。
今はインターンがLLMを使うこと以上に、監視されてないLLMがいろんなタスクをこなして、企業がコスト削減の言い訳に「LLMがやった」って言うのが心配なんだ。

noisy_boy 2025/08/20 02:37:44

全面的な責任と中途半端な責任、それぞれがどんな結果になるか、違いを見てみたいな。

もっとコメントを表示(1)
coldpie 2025/08/20 13:30:58

AI”業界”にはNFTの匂いがプンプンするね。このバブルが弾けるのが待ち遠しいな。

darkwater 2025/08/20 06:20:00

うん、俺もそう思った。
彼ら、ホント運が悪かったよな。コードを埋め込んで実行できる唯一のアナライザーが、よりによってサンドボックスの外にあったなんてさ。そんな偶然、あるか?

teaearlgraycold 2025/08/19 23:51:37

まったく同感。俺の経験では、AIスタートアップってどこもAIマキシマリストばかりだよ。
彼らは流行を信じたり、モデルの能力に追いつくために、AIを何でもかんでも使うんだ。こんな重要な文章までLLMで書いちゃうだろうね。

vmatsiiako 2025/08/20 05:09:24

Infisicalを使えば、シークレットマネージャーに認証するのにキーを使わないネイティブ認証方法があるよ。
- https://infisical.com/docs/documentation/platform/identities
- https://infisical.com/docs/documentation/platform/identities

Jap2-0 2025/08/21 03:20:17

だよねー。指摘してくれてサンキュー。

rob74 2025/08/20 16:08:48

数年前ならこんな言い回しは「ブルシットビンゴ」の候補だっただろうね。
今じゃ全部のデタラメがLLMに食われて、純粋な形で俺たちに吐き出されてるよ…。

cube00 2025/08/20 10:44:27

CodeRabbitの脆弱性報告と彼らの主張は同時に公開されてないよ。後からCodeRabbit側の主張が追加されたんだ。右側の青いテキストを見てみろよ。https://web.archive.org/web/diff/20250819165333/202508192240...で確認できるぞ。

morgante 2025/08/19 22:43:26

おいおい、これはかなりヤバい脆弱性だな。修正されたのはいいけど、そもそもこんな問題があったのが問題だろ。ユーザーコードを解析するクラウドプラットフォームでは、アナライザーを隔離環境で動かすのが鉄則だぞ。俺もコード分析プラットフォームをやってたけど、自社製アナライザーでもサンドボックスで動かしてたんだ。それが唯一の安全策だよ。https://github.com/getgrit/gritql

smarx007 2025/08/20 09:02:50

サンドボックスってどうやって作ったの?ただのDockerコンテナだったりする?それとももっとちゃんとしたやつ?

morgante 2025/08/20 17:09:10

俺たちはFirecracker VMMsをベースに作ったよ。でも今ならmorph.soとかe2b.devみたいなホスト型プロバイダーを使うかな。

KingOfCoders 2025/08/20 05:20:06

記事を読み間違えたのかな?ツールの設定ってリポジトリからじゃなくてPRから取られたって書いてあった?

yxhuvud 2025/08/20 06:38:44

残念ながら、大体そういうことになっちゃうんだよ。じゃないと開発者が設定する時の体験が悪すぎちゃうからな。

morgante 2025/08/20 06:10:27

どっちみち、脆弱性は存在しちゃうんだよ。

KingOfCoders 2025/08/20 07:28:38

エクスプロイトは、.rbファイルを実行するように設定を変えることに依存してる。その設定はPRで提供されたんだよ。

flexagoon 2025/08/20 09:32:04

ああ、でもこの脆弱性、PRがあるリポジトリだけじゃなくて、全部のリポジトリにアクセスできちゃうんだぜ。自分のプライベートリポジトリで設定変えてCodeRabbitを実行しても同じことだよ。

willejs 2025/08/19 20:15:14

いい記事だけど、正直驚かないな。みんなが安易に広範囲な権限を持つアプリを追加したり、GitHubの権限モデルがこうだったりするから、こうなるべくしてなったんだよ。GitHubアプリの権限が広すぎる問題とか、PRからGitHub Actionsで特権アクセスを許可しちゃうケースが多いんだ。GitHubももっと細かく権限設定できるようにしないとダメだろ。

thyrfa 2025/08/19 17:51:06

GitHubアプリの秘密鍵を環境変数に置くなんて、ありえない基本中の基本だろ!GitHubのドキュメントにも「ダメだぞ」ってハッキリ書いてあるんだから、Day 1から気をつけろよな。誰でもハックされる可能性はあるけど、これは秘密管理の基礎中の基礎だぞ。
https://docs.github.com/en/apps/creating-github-apps/authent

doesnt_know 2025/08/19 18:52:59

秘密が署名に使われないなら、どこかのタイミングで金庫からアプリへ渡さないとだめだろ?
プロダクションシステムへのアクセス権があれば秘密にもアクセスできる、って状況で、お前は何のメカニズムを提案してるんだ?
今回は信頼できないコードを動かした特定ケースだから、キーを渡すべきじゃなかったのは分かるけど、普通そんなアプリは多くないぞ。

Nextgrid 2025/08/19 19:08:50

防御層のビジネスケースなんて誰も持ってないんだよ(Equifaxとか見ろよ、データ漏洩なんてオタクをちょっと怒らせるくらいで株価には関係ないだろ?)。
もし必要なら、キーを管理するプロキシサービスを挟んで、そいつが代わりに操作すればいい。HTTPプロキシみたいにAuthorizationヘッダーを付けるだけでもいいし、URLホワイトリストもな。そうすればトークン流出も防げるし、ログも残って事後対応も楽だろ。

roywiggins 2025/08/19 19:32:08

このケースだと、リンターにそこまで必要ないんじゃない?
GitHubやAnthropicに自力で接続する必要なんてないだろ。
リンタープロセスはネットワークアクセスもいらないし、stdoutで結果を集めてGitHubに返すだけでいい。
空の環境で実行するだけでもだいぶ違ったはずだぞ(RCEは依然としてヤバいけど)。

wahnfrieden 2025/08/19 19:27:31

これはビジネスの所有権や市場の問題じゃなくて、国家安全保障上の問題だぞ。

Nextgrid 2025/08/19 19:32:31

「国家安全保障」が、政府が義務付けるペネトレーションテストの費用を前払いしたり、実際に企業を脅かすような罰則を科したりしない限り、企業のオーナーにとっては関係ない話だよ。
彼らは安全じゃないけど、競合他社もそうじゃないから、それでOKって感じだろ。

morgante 2025/08/19 22:48:27

すごく簡単な解決策は、プライベートキーを持つ隔離されたサービスを作って、そいつがリポジトリごとの一時トークンを他のライブラリに渡すようにすることだろ。
この隔離されたサービスだけがルートキーにアクセスできるようにして、他のサービスに一時キーを渡す頻度には厳しいレート制限をかけるべきだよ。

curuinor 2025/08/19 18:27:12

やあ、CodeRabbitのHowonだよ。
うちはアプリケーションの秘密、GitHubプライベートキーも含めて、クラウドプロバイダーが提供するキーボルトを使ってるよ。

ipython 2025/08/19 18:43:06

この返信は役に立つけど、質問には答えてないぞ。
キーボルトにクレデンシャルを保管しても、Pastebinに投稿したら意味ないだろ。問題は、個々のランナーが環境変数にキーを持っていたことだよ。
顧客の信頼できないコードに触れるスキャナーからマスターキーとか他の機密クレデンシャルは削除したのか?それが肝心な区別だ。

thyrfa 2025/08/19 18:33:09

でも、その時は違ったんだろ?
ダンプされたんだからさ。
今は変わったのは良いことだけど、1年足らず前まではただの環境変数だったってことだぞ。

robomc 2025/08/19 21:24:31

CEOの言い訳、マジおかしいだろ!「Rubocopがサンドボックス外で動いてたのは標準プロトコルから外れた設定だった」って言うけど、なんで一個だけアーキテクチャ違うんだよ?よりによって悪用されたのがそれって、嘘くせー!

KingOfCoders 2025/08/20 05:16:49

そうそう、他のツールは安全でサンドボックス化されてたのに、よりにもよってRubyコードを実行できるRubocopだけが、偶然サンドボックス外だったんだって?危ないツールほど安全じゃないって、都合良すぎだろ。

jdlshore 2025/08/19 21:44:06

なんで嘘だと思うのかわかんないな。こういう見落としって、普通によくある話じゃん。

cube00 2025/08/20 10:49:50

嘘くせーって思うのは、まずPR記事でごまかそうとしたからだよな。研究者の投稿がHacker Newsのトップになった後で、ようやくまともな(AIが書いたような)開示記事出したんだぜ。
URL [1]: https://news.ycombinator.com/item?id=44954242

もっとコメントを表示(2)
wheelerwj 2025/08/19 23:10:11

100%同意。マジでよくある見落としだよ、いろんな会社で。

sophacles 2025/08/19 21:57:04

なんで一個だけアーキテクチャが違ったかって?誰かがミスったんだろ。よくあることだ。
で、それが悪用されたのかって?そりゃ脆弱なサービスが悪用されるに決まってるじゃん。脆弱じゃないサービスが悪用されるわけないだろ?

bigiain 2025/08/19 23:01:04

「誰かがミスった」って言うけど、適切なプロセスがなかったってことだろ。ISO27001認証とか見ればわかるけど、安全なプラットフォームの展開には、ちゃんとした文書やポリシーが必要なんだよ。

sophacles 2025/08/20 16:14:36

あー、プロセスね…。人間がやるもんだからミスは起こるんだよ。どんなにプロセスがあっても、ミスは起きるっていうニュース記事は山ほどあるだろ!

Romario77 2025/08/19 22:14:50

Kudelski Securityの研究者たちは、きっといろんな静的解析ツールを試したんだろうな。で、Rubocopだけがうまくいったんだろ。どうやってこのツールにたどり着いたかの詳細は書いてないけど、記事によれば最初に別の方法も試したみたいだし。

robomc 2025/08/20 01:23:21

それはわかるんだけどさ、コード実行から直接高価値のクレデンシャル奪取につながる問題が、Rubocopのランナーだけに存在したってのがポイントなんだよ。コード注入が一番簡単なパッケージが、クレデンシャル管理を「うっかり忘れた」ものと偶然一致するなんて、都合良すぎじゃない?

KingOfCoders 2025/08/20 05:17:49

俺が読んだ感じだと、彼らがRubocopを選んだのは、それが動いたからじゃなくて、Rubyコードを実行できるからだよ。

chanon 2025/08/19 18:17:46

マジかよ。まだ記事読み終わってないんだけど、内容がデカすぎて理解しきれないしストレス半端ない。数万、いや数百万ものオープンソースツールにマルウェアを仕込めたかもしれなかったって部分がヤバすぎ。世界規模の大惨事になりかねなかったし、まだ同じような脆弱性があるかもしれないってのが怖いな。

chanon 2025/08/19 18:37:25

GitHub Appsってマジでヤバいんじゃないかと思い始めたよ。CodeRabbitに脆弱性がなくても、彼らがずっと善良なままって保証ある?内部セキュリティで従業員が悪さしないって言いきれる?SaaSのプライベートデータ管理とは話が違う。これ、サプライチェーン攻撃の鍵を握ってて、マジで大混乱を引き起こせる権限なんだぜ。

gz09 2025/08/19 18:50:44

間違ってたらゴメンだけど、問題はGitHub Appsじゃなくて、CodeRabbitが最小権限の原則を破ったことだよな。本来ならアプリの秘密鍵はクライアントの実行環境に置くべきじゃない。ジョブが走るリポジトリのためだけに、短命のトークンを発行すべきだった。そうすれば、クライアントが実行を制御できる場所に鍵が近づくこともなかったはずだ。

mook 2025/08/19 19:42:11

コードレビューコメントを出すためだけに書き込み権限って必要ないだろ。なのになぜか彼らは要求してくるし、連携するときにその部分を拒否できないんだよな。

billbrown 2025/08/20 15:03:20

CodeRabbitは返信でPR作者がコミットできるパッチをよくくれるんだよな。誰がコミットしてるのか分からんけど、それが書き込み権限が必要な理由かも。(いつも自分でやってるけど、便利さを選ぶ人もいるだろうし。)でも、そんな権限はすぐにでも取り消すべきだよ。メリットが全然見当たらないもん。将来的に書き込み権限が要る計画があるとかじゃない限りね。

sgc 2025/08/19 21:49:00

俺もそれ気になったわ。なんか貪欲に見えるよな。「一部の人は苦しむだろうが、俺は喜んでその代償を払うぜ」って感じ。

filleokus 2025/08/19 19:19:26

同感、セキュリティ的に見てこれは最低な設計だね。でも、GitHubのユーザーとしては、GitHubがCodeRabbitみたいなベンダーがこんなミスをしないように、もっと厳しくしてほしいと思う。100万以上のリポジトリにアクセスするアプリなら、GitHubが短命のトークンを必須にして、マスター秘密鍵はアプリの更新とかにしか使えないようにすべきだ。特定の行動があった時だけトークン発行を許可するとかさ。まあ結局、GitHubがユーザーにフルアクセスを許しつつ、こんなことが起きないようにするのは無理なんだろうけどね。

lukevp 2025/08/19 19:27:19

秘密鍵ってのはAPI KEYみたいなもんじゃなくて、公開鍵/秘密鍵ペアのやつだろ。GitHubには送られないし、GitHubはトークンの署名が安全にされたかどうかなんて知る方法がないんだよ。だって、GitHubはリクエストで鍵を全然受け取ってないからね。

0x457 2025/08/19 19:39:56

GH Appsはもうリポジトリごとにスコープ設定できる短命トークンを使ってるよ。秘密鍵でトークンを生成して、APIで交換し、使ったら破棄する。GH Appsを使う唯一の方法だよ(ユーザーアクセスAPIトークンも同じだけど、ユーザーの操作が必要)。それらのトークンは必ず期限切れになるし。GitHubはPATの代わりにGH Appsでプッシュ/プルできるようにレジストリを直してほしいな。

paulddraper 2025/08/19 22:58:37

それ、前からそうだよ。マスタープライベートキーが期限付きの限定トークンを発行してるんだし。問題はマスタープライベートキーが漏れたことだろ。

codedokode 2025/08/19 20:13:39

変なアプリに書き込み権限あげなきゃ、安全だよ。

risyachka 2025/08/19 19:06:53

ソフトウェア業界、もうちょいガードレールや規制が必要だろ。誰でも好き勝手やって、責任取らないってのは変だよな。

sciencejerk 2025/08/19 17:56:59

この規模のセキュリティのヘマは「侵害」とか「インシデント」に分類して、公開を義務付けるべきだと思うね。7,000社以上の顧客と100万のリポジトリにアクセスできるツールが、賢い11歳でも作れるようなエクスプロイトでやられたんだ。
エクスプロイトが単純なら、Black HatsやAPTが先に侵入しててもおかしくないだろ。問題修正しても、既に潜んでるやつらを追い出せるかは不明だな。セキュリティは大変だけどさ、おいマジかよ。

smarx007 2025/08/19 21:46:21

> 公開を義務付ける必要がある
https://en.m.wikipedia.org/wiki/Cyber_Resilience_Act

Lionga 2025/08/19 19:28:26

CodeRabbitってVibe Coderの会社だろ、そりゃそうなるよな。侵害を隠してGoogle Cloudブログに宣伝記事出してさ、ハッキングされたことすら言わないし、バックドアがない証拠も出せないって何様だよ。マジクソ会社だな。

moomoo11 2025/08/19 19:58:03

TeaアプリがFirebaseのドキュメントも読めないバカって言ったら、めちゃくちゃ叩かれたわ。みんなFirebaseのせいにして、開発者は責めないんだよな。Vibratorsってマジムカつく、バカでダサい。

wredcoll 2025/08/19 21:36:27

この投稿は、「Vibe Coder」だけが顧客を巻き込むセキュリティミスしてるわけじゃないって分かれば、もっと意味を持つだろ。

moomoo11 2025/08/19 23:31:35

そうだな。セキュリティミスが爆発的に増えるって分かれば、君の投稿ももっと意味を持つ。自動運転車が人を轢いても、人間ドライバーもやるからって言うのと同じだ。Waymoはマジすごいし、ちゃんと動くよ。彼らはVibratingじゃないけどね。

strbean 2025/08/21 18:53:34

結局、人間ドライバーと比べてどれだけ人を轢くかが重要だろ。「一度でも多すぎる!」って言うけど、既存の事故より少なければ、一度なんて多くないんだよ。

記事一覧へ

海外テックの反応まとめ
著者
海外テックの反応まとめ
暇つぶしがてらに読むだけで海外のテックニュースに詳しくなれるまとめサイトです。