By looking around I found three vulnerabilities due to improper escaping of system messages. All of these need changing such messages and thus aren't too big, but still it's possible to inject custom javascript there. As I was suggested to do the last time I reported a problem like this, I'm listing the proposed changes that would fix the issue. Also note that while the proposed solutions fix the problems, I don't know whether they may broke something elsewhere.
1
Problem: group-*-member messages aren't properly escaped in logs and user rights pages
Solution: Escape the message in UserGroupMembership.php line 449:
return $msg->isBlank() ? $group : $msg->escaped();
2
Problem: Months abbreviation aren't escaped, tested in Special:AbuseLog and Special:CheckUser at least
Solution: Escape message in language.php at line 909:
return $this->msg( $msg )->escaped();
3
Problem: Section names in Special:Preferences aren't escaped.
Solution: Escape them in HTMLForm.php line 1820:
return $this->msg( "{$this->mMessagePrefix}-$key" )->escaped();