| Added |
Description |
|
Improper Neutralization of Input During Web Page Generation ('Cross-site Scripting') vulnerability in leandrocp MDEx allows stored or reflected cross-site scripting via attacker-controlled Markdown.
When syntax highlighting and full info-string forwarding (render: [full_info_string: true]) are enabled, the Lumis adapter copies the value of a code fence's highlight_lines_class info-string attribute, unescaped, into the class attribute of every rendered line. comrak_nif::lumis_adapter::LumisAdapter::parse_custom_attributes in native/comrak_nif/src/lumis_adapter.rs shlex-parses the info string and stores each key=value pair verbatim, highlight_lines_config pulls highlight_lines_class into the per-line class value, and write_highlighted interpolates that value directly into the class attribute of the per-line <div>. A single-quoted shell token preserves an inner double quote through shlex parsing, so a value such as '"><script>alert(1)</script>' terminates the class attribute early and the markup that follows is emitted as live HTML.
An attacker who can submit Markdown (through comments, posts, wiki pages, documentation, or any user-generated content) can inject arbitrary HTML and JavaScript that runs in the browser of every user who views the rendered output, enabling session theft, account takeover, and other client-side attacks. No authentication or special privileges are required.
The vulnerable native code originally shipped inside mdex (in native/comrak_nif/src/lumis_adapter.rs) and was later extracted into the separate mdex_native package (native/mdex_native_nif/src/lumis_adapter.rs), where it remains unpatched.
This issue affects mdex from 0.11.3 before 0.12.3, and mdex_native from 0.1.0 before 0.2.3.
|
| Added |
Affected |
|
[{"vendor":"leandrocp","product":"mdex","defaultStatus":"unaffected","collectionURL":"https://repo.hex.pm","packageName":"mdex","cpes":["cpe:2.3:a:leandrocp:mdex:*:*:*:*:*:*:*:*"],"modules":["'Elixir.MDEx'","comrak_nif"],"programFiles":["native/comrak_nif/src/lumis_adapter.rs"],"programRoutines":[{"name":"comrak_nif::lumis_adapter::LumisAdapter::parse_custom_attributes"},{"name":"comrak_nif::lumis_adapter::LumisAdapter::highlight_lines_config"},{"name":"comrak_nif::lumis_adapter::LumisAdapter::write_highlighted"},{"name":"'Elixir.MDEx':to_html/2"}],"repo":"https://github.com/leandrocp/mdex","packageURL":"pkg:hex/mdex","versions":[{"version":"0.11.3","lessThan":"0.12.3","versionType":"semver","status":"affected"}]},{"vendor":"leandrocp","product":"mdex","defaultStatus":"unaffected","collectionURL":"https://github.com","packageName":"leandrocp/mdex","cpes":["cpe:2.3:a:leandrocp:mdex:*:*:*:*:*:*:*:*"],"modules":["'Elixir.MDEx'","comrak_nif"],"programFiles":["native/comrak_nif/src/lumis_adapter.rs"],"programRoutines":[{"name":"comrak_nif::lumis_adapter::LumisAdapter::parse_custom_attributes"},{"name":"comrak_nif::lumis_adapter::LumisAdapter::highlight_lines_config"},{"name":"comrak_nif::lumis_adapter::LumisAdapter::write_highlighted"},{"name":"'Elixir.MDEx':to_html/2"}],"repo":"https://github.com/leandrocp/mdex","packageURL":"pkg:github/leandrocp/mdex","versions":[{"version":"0d7ffc84ea742e1daf666426814e5bb6d0499433","lessThan":"6ed94d905f97af188323f042698ae841c02293b4","versionType":"git","status":"affected"}]},{"vendor":"leandrocp","product":"mdex_native","defaultStatus":"unaffected","collectionURL":"https://repo.hex.pm","packageName":"mdex_native","cpes":["cpe:2.3:a:leandrocp:mdex_native:*:*:*:*:*:*:*:*"],"modules":["'Elixir.MDExNative.Comrak'","mdex_native_nif"],"programFiles":["native/mdex_native_nif/src/lumis_adapter.rs"],"programRoutines":[{"name":"mdex_native_nif::lumis_adapter::LumisAdapter::parse_custom_attributes"},{"name":"mdex_native_nif::lumis_adapter::LumisAdapter::highlight_lines_config"},{"name":"mdex_native_nif::lumis_adapter::LumisAdapter::write_highlighted"},{"name":"'Elixir.MDExNative.Native':document_to_html_with_options/2"},{"name":"'Elixir.MDExNative.Comrak':document_to_html/2"}],"repo":"https://github.com/leandrocp/mdex_native","packageURL":"pkg:hex/mdex_native","versions":[{"version":"0.1.0","lessThan":"0.2.3","versionType":"semver","status":"affected"}]},{"vendor":"leandrocp","product":"mdex_native","defaultStatus":"unaffected","collectionURL":"https://github.com","packageName":"leandrocp/mdex_native","cpes":["cpe:2.3:a:leandrocp:mdex_native:*:*:*:*:*:*:*:*"],"modules":["'Elixir.MDExNative.Comrak'","mdex_native_nif"],"programFiles":["native/mdex_native_nif/src/lumis_adapter.rs"],"programRoutines":[{"name":"mdex_native_nif::lumis_adapter::LumisAdapter::parse_custom_attributes"},{"name":"mdex_native_nif::lumis_adapter::LumisAdapter::highlight_lines_config"},{"name":"mdex_native_nif::lumis_adapter::LumisAdapter::write_highlighted"},{"name":"'Elixir.MDExNative.Native':document_to_html_with_options/2"},{"name":"'Elixir.MDExNative.Comrak':document_to_html/2"}],"repo":"https://github.com/leandrocp/mdex_native","packageURL":"pkg:github/leandrocp/mdex_native","versions":[{"version":"956528c5e31746253347029e810a969ab916fd27","lessThan":"798a363b4339f6f7162ec8437c4c9f9b5ae6fbf3","versionType":"git","status":"affected"}]}]
|