
NVD CVE-2018-1000529: https://nvd.nist.gov/vuln/detail/CVE-2018-1000529
MITRE CVE-2018-1000529: https://cve.mitre.org/cgi-bin/cvename.cgi?name=2018-1000529
このリポジトリは、Grails チームへの責任ある開示のために、脆弱性の概念実証を実証するために使用されました。
この XSS 脆弱性は、影響を受ける Grails Fields プラグイン v2.2.7 以下を含むため、Grails v3.3.5 以下のすべてのプロジェクトに存在します。これは Grails Fields プラグイン v2.2.8 で修正され、Grails v3.3.6 で使用されています。
Grails v3.3.5 以下を使用するすべてのプロジェクトは、少なくとも v3.3.6 にアップグレードするか、build.gradle 内の Grails Fields プラグイン依存関係のバージョンを v2.2.8 以上に指定することを推奨します。
Grails Fields プラグインは Grails Scaffolding で広く使用されているため、Grails v3.3.5 以下を使用するすべてのスキャフォールディングアプリケーションは潜在的に脆弱です。 Grails にはデフォルトで優れた XSS 対策 が施されていますが、Grails Fields プラグインのタグで表示される HTML や JavaScript コードを含むドメインオブジェクトはエンコードまたは検証されず、ブラウザで実行されます。
このプロジェクトをクローンし、以下のコマンドでアプリケーションをローカルで起動します:
コマンドプロンプト/PowerShell で:
grailsw.bat run-app
ターミナルウィンドウで:
./grailsw run-app
Grails アプリケーションが完全に初期化されると、以下のように表示されます:
Grails application running at http://localhost:8080 in environment: development
myapp.TestController リンクをクリックXSS の JavaScript 警告ダイアログが開きます。ドメインオブジェクト Test1 は初期化中に作成され、grails-app/init/myapp/BootStrap.groovy ファイルで定義されています。
脆弱性は BootStrap 中にオブジェクトが作成される場合だけでなく、スキャフォールディング GUI でユーザー入力によって作成される場合も存在します。
これは Test1 オブジェクトを削除し、Test1<script>alert('XSS');</script> という名前の新しい Test オブジェクトを追加することでテストできます。
この脆弱性を迅速に解決してくださった Grails チームに多大な感謝を捧げます。メンバー: