The vulnerability stems from the article name field value being used in HTML output without proper escaping. The commit shows:
- A @psalm-taint-source annotation was added to getName(), marking it as an input source requiring sanitization
- The actual XSS occurred in content.php where $OOArt->getName() was used in rex_view::title() without escaping
- The fix added rex_escape() around the getName() call in content.php
While the direct vulnerable usage is in content.php, the root cause function is getName() in structure_element.php as it provides raw user-controlled data to output contexts. The high confidence comes from the commit explicitly marking getName() as a taint source and the XSS proof-of-concept demonstrating its unescaped usage.