React2shell脆弱性
運営しているサイトがハッキングの標的になり、ほぼ一日をかけて検証していました。
まず12月09日、Reactというフレームワークに致命的な脆弱性があると発表されました(IPAのニュースリリース )。
自分がwebアプリ開発に使っている「Next.js」はReactのフレームワークであり、これの影響を受けます。
この最初の報道を見かけたときは「週末くらいにバージョンを確認して該当していたらアップデートするか」
というくらいの気持ちでいました。すぐに攻撃が来るとは思わなかったからです。
ところが今朝、VPSをホストしている会社から自動送信メールが。
「あなたのサーバーがCPUを占有しており、他ユーザーに影響が出かねないためシャットダウンしました」と。
ホスティング会社から怒られたのはWP時代を含めると2回目、VPS運用後では初です。
これはもう今回のReact2shell絡みで自分のサイトが標的にされ、攻撃されているとしか思えませんでした。
これを受けて、急遽半日くらいLinuxと格闘していました。
まずtopやps auxコマンドでプロセスのCPU使用率を確認したところ、再起動時点では攻撃されてなさそう。
見覚えのないユーザー名やプロセスが稼働しているということもぱっと見では無い。lastコマンドで直近の成功ログインをチェックしても、自分のIPアドレスしかなく管理者権限で入り込まれた形跡は無い。
ちなみにlastbコマンドでログイン失敗履歴が見れますが、これは恐ろしいほどたくさんありました。
が、これが直接的にCPUを焼いているとは思えません。
crontab -lで現在動いているcron(自動実行スクリプト)に不審なものがないかチェック。
また、journalctlでシステムログを確認するも、こちらも特に怪しいものはなし。
システム内で最近更新されたファイルの一覧を出力してみるも、こちらも不審なものはなし。
ただ、nginxのアクセスログをみると大量のアクセスが試行されていることがわかりました。
おそらくですが、これにfail2banが都度反応したためにfail2banがCPUリソースを食ってしまったのだと思われます。
今回のReact2shell脆弱性に関わっているバージョンはかなり限られていて、
Pages Routerを使っている少し古いアプリは対象外となっています。
自分が運営しているサイトでは、大規模で他人のデータも預かっているピクチャレ大会はPages Routerなので対象外。
しかし2024年開設の4代目本家ブログが比較的新しいApp Routerを使っており、
ちょうどピンポイントで脆弱性のあるバージョンを使っていました。
そのため今回は、ピクチャレ大会ではなくこのブログが標的にされたものと見られます。
ただ、かなり探しても侵入された形跡や不審なファイルなどが見当たらないこと、
もともとサーバーにはWAFやfail2banなどの防御システムが作動していたことなどから、
「アクセス過多によってCPUが焼かれたが、セキュリティは突破されなかった」と結論づけました。
より正確には、セキュリティが突破されなかった証拠は無いが、突破された証拠も見つかってないだけですが。
今回、VPS導入後初めてwebサイトがハッキングされるという事件が起き、いろいろ学びもありました。
まずIPA(情報処理推進機構)がリリースするようなセキュリティニュースはすぐ動かないとダメということですね。
今回も脆弱性のニュースはホスティング会社から怒られる前に知っていたのですが、
「まさか自分のサイトは数日では攻撃されないだろう」という慢心がありました。
実際、ピクチャレ大会の10分の1程度のアクセス数しかないブログが攻撃されたのは驚きですが、
こういう重大な脆弱性は規模関係なく警戒する必要がありそうです。
あとセキュリティリスクに対応するためにはLinuxの知識が絶対不可欠であることも痛感しました。
今回は自前の基礎知識+ChatGPTのアシストで対応しましたが、
自前の基礎知識というのは6年前に読んだ『Linuxの教科書』という本で止まっており、危機感を感じます。
ChatGPTの提案するコマンドを何も理解せずコピペするだけというのはかなりのリスクがあります。
こうなると、インフラ関係もどこかで機会を作ってアップデートする必要はありそう……。
むしろフロントエンドやバックエンドの知識を深めるよりもはるかに大切のような気がします。