Multiple system messages in WikiLove can be abused by users with the editinterface permission to execute arbitrary JS.
wikilove-commons-text/wikilove-commons-url
- Edit MediaWiki:Wikilove-commons-text to <div class="$1">Hover over me!</div>
- Edit MediaWiki:Wikilove-commons-url to /onmouseenter=alert(1)//
- Make sure you have WikiLove enabled in your preferences
- Go to a user page
- Click on the heart icon next to the "View history" link
- Click on "Make your own"
- Hover over the text that says "Hover over me!"
wikilove-terms/wikilove-terms-url
The same steps as above can be done with wikilove-terms and wikilove-terms-url. The element is shown after previewing an award.
It's also possible to use a javascript: link in either wikilove-commons-url or wikilove-terms-url.
Cause
https://gerrit.wikimedia.org/g/mediawiki/extensions/WikiLove/+/93b9281a3f7f4d270cf510a3f28a48a6a6404d63/resources/ext.wikiLove.startup/WikiLoveDialog.vue#154
It's not safe to perform string replacements on HTML, especially when inserting another HTML element.
https://gerrit.wikimedia.org/r/plugins/gitiles/mediawiki/extensions/WikiLove/+/93b9281a3f7f4d270cf510a3f28a48a6a6404d63/resources/ext.wikiLove.startup/wikiLove.js#69
https://gerrit.wikimedia.org/r/plugins/gitiles/mediawiki/extensions/WikiLove/+/93b9281a3f7f4d270cf510a3f28a48a6a6404d63/resources/ext.wikiLove.startup/wikiLove.js#73
The URL protocol is not validated.
Additional information
MW: 1.46.0-alpha (2633444)
WikiLove: 1.3.1 (93b9281)
