A Lesson in HTML Injection & Content Spoofing

Not every vulnerability comes from new features.

Sometimes, it comes from fixes themselves.

In 2016, after HackerOne patched an HTML injection issue, I decided to test the fix instead of moving on. The idea was simple:

What if the patch introduced something new?

Testing the Markdown Parser

HackerOne relies on Markdown to render user input. A typical Markdown link looks like this:


[text](url "title")

The parser expects clean input and properly closed quotes. I wanted to see what would happen if I added extra quotes and unexpected attributes.

The Payload

I submitted this input:

[test](http://www.torontowebsitedeveloper.com "test ismap="alert xss" yyy="test"")

This included:

• additional double quotes

• ismap (a valid HTML attribute)

• yyy (an invalid attribute)

The goal wasn't XSS – it was to test how flexible (or fragile) the parser really was.

What Happened

The Markdown editor generated unexpected HTML and accepted arbitrary attributes inside the <a> tag.

Even though the issue wasn't directly exploitable, it proved something important:

the fix introduced unintended HTML injection behavior.

Because arbitrary HTML generation can lead to content spoofing and client-side issues, HackerOne reverted the fix and implemented a safer solution.

The report was accepted, and a $500 bounty was awarded.

Strong Takeaways

• Fixes can introduce new vulnerabilities

• Markdown parsers are easy to confuse with malformed input

• HTML Injection doesn't require <script> to be dangerous

• Content spoofing can be just as impactful as XSS

• Always test after a fix, not just before