ChatGPTでセキュリティ脆弱性のあるプラグインを代替し、登録スパムを阻止
オレゴン在住の開発者がChatGPTを利用し、セキュリティ上の脆弱性を抱えたプラグインを短時間で修復した話 6月初め、オレゴン在住のウェブサイト管理者である私(デイビッド・ゲワーツ)は、ホスティングプロバイダーから重大なセキュリティ問題があるため、使用していたプラグイン『Stop Spammer Registrations』の無効化を求められる通知を受け取った。このプラグインは、ユーザ登録スパムを防ぐのに不可欠だったが、更新がなく、WordPressプラグインリポジトリでもダウンロード禁止となっていた。 ユーザ登録スパムとは、偽のユーザアカウントを大量に作成することで、ウェブサイトのサーバ負荷を増加させ、管理者に迷惑メールを送りつけ、将来的な脆弱性利用を容易にする攻撃手法である。プラグインの無効化直後、私のサイトに大量の新たなユーザ登録通知が殺到した。これを即座に阻止するために、オープンソースの恩恵を利用して ChatGPTで独自のプラグインを開発することに決めた。 まず、ChatGPT Plus o3モデルのDeep Research機能を用いて、既存の脆弱なプラグインのコードを解析し、セキュリティ問題の所在と仕組みを詳細に調べた。結果、該当プラグインはクロスサイトスクリプティング(XSS)など多種の脆弱性を含んでおり、これらの問題がプラグインの禁止につながったことがわかった。 次に、解析結果を元に、基本的なスパム防止機能に特化した新しいプラグイン仕様をAIに作成させた。仕様には、以下のようなスパム防止メカニズムが含まれている: - ハニーポット形式の非表示フォームフィールド(プログラムによって埋められるとスパムとみなす) - スパム情報を集約する無料APIに対する問い合わせ(ユーザー名やIPアドレスが怪しいか判定) - MXレコードチェック(登録したいドメインが実在しているかどうか確認) また、WordPressプラグインのベストプラクティスにも従うよう指示した。具体的には、すべてのファイルに対してdefined( 'ABSPATH' ) || exit;を設定し、管理画面向けテキストにはesc_html()をエスケープ、check_admin_refererによるアクション担保、およびeval(), unserialize(), base64ブルブの使用禁止など。 その後、仕様書のPDFを再度ChatGPTに渡し、新規プラグインのコード生成依頼を行った。AIは21秒で Zipファイルを作成し、ダウンロードリンクを提供した。プラグインをサイトにインストール後、ユーザ登録スパムが劇的に減少した。通常の新規ユーザ登録にも影響はなく、プラグインは予想以上に効果的に機能している。 このプロジェクトは、単純なプロンプトだけでなく、コンテキストの管理によって成功した。各ステップでセッションを分けて前段の解析結果を適切に活用し、AIに新しい課題を与えられたことにより、スルースキルなコード生成が可能になった。 業界関係者の意見と背景 デイビッド・ゲワーツ氏の経験は、オープンソースソフトウェアと生成型AIの力が組み合わさることで、サーバ管理の課題に対処できる可能性を示している。AIによるコード解析と生成は、今後のソフトウェア開発において重要なツールとなる可能性がある。ただし、セキュリティにおける信頼性や品質には引き続き注意が必要だ。 デイビッド・ゲワーツ氏は、ZDNETの親会社であるZiff Davisの一員であり、ITセキュリティとソフトウェア開発の専門家として多数のプロジェクトを手がけている。彼の今回の取り組みは、技術者にとって有益な実例となり、他の開発者が似たような問題に直面した際の解決策の一つとして参考にできるだろう。