Allure 2 is the version 2.x branch of Allure Report, a multi-language test reporting tool. Prior to 2.39.0, the ansi.js helper at allure-generator/src/main/javascript/helpers/ansi.js passes attacker-influenced statusMessage and statusTrace values through AnsiToHtml without HTML escaping and wraps the result in Handlebars SafeString, disabling template auto-escaping in allure-generator/src/main/javascript/blocks/status-details/status-details.hbs. JunitXmlPlugin.java can populate these fields directly from crafted JUnit XML failure messages and traces, and equivalent input flows exist in the TRX, xUnit XML, xctest, and Allure1 and Allure2 plugins. When a user views the affected status details, unescaped markup executes arbitrary JavaScript in the report origin, which can expose report data and compromise sessions associated with that origin. This is an incomplete-fix case because PR 3271 escaped link helpers but did not address the ANSI helper. This issue is fixed in version 2.39.0.
{
"cna_assigner": "GitHub_M",
"cwe_ids": [
"CWE-79"
],
"osv_generated_from": "https://github.com/CVEProject/cvelistV5/tree/main/cves/2026/55xxx/CVE-2026-55847.json"
}{
"extracted_events": [
{
"range": [
{
"introduced": "0"
},
{
"fixed": "2.39.0"
}
],
"source": "AFFECTED_FIELD",
"strategy": "StringRangeExpression"
},
{
"range": [
{
"fixed": "1c5693933f519e64379f1a14eb3c7beeba7bc7cd"
}
],
"source": "REFERENCES_COMMIT"
},
{
"original_tag": "2.39.0",
"range": [
{
"fixed": "224d3dd5d6f6df30e8f9cbace62696d2c24d688f"
}
],
"source": "REFERENCES_TAG"
}
]
}
"https://storage.googleapis.com/cve-osv-conversion/osv-output/CVE-2026-55847.json"
[
{
"deprecated": false,
"digest": {
"line_hashes": [
"164115113833195878605718560645200923589",
"236808581582434323811328504488865048553",
"253563744498994906166297438595429637971",
"227728833836097553471102636505145488015",
"194556723267809436901538906352814835741",
"60970823427784967943410216988303571417",
"278338270219846018202975163879686022310",
"141144789634227975812171847811104239118"
],
"threshold": 0.9
},
"id": "CVE-2026-55847-09de1a2b",
"signature_type": "Line",
"signature_version": "v1",
"source": "https://github.com/allure-framework/allure2/commit/1c5693933f519e64379f1a14eb3c7beeba7bc7cd",
"target": {
"file": "allure-generator/src/test/java/io/qameta/allure/category/CategoriesPluginTest.java"
}
},
{
"deprecated": false,
"digest": {
"line_hashes": [
"285459869523392775136503668059868421909",
"74850335478855261361574745034667386411",
"130201538919399049413015082041479136053",
"19368722694557870374717986649072849541",
"116459958373384609789513513503724444636",
"168156004103218995636478586258291373712",
"142542362734892716974692047713093048001",
"47612815783932785444114820263230274777"
],
"threshold": 0.9
},
"id": "CVE-2026-55847-11463fdb",
"signature_type": "Line",
"signature_version": "v1",
"source": "https://github.com/allure-framework/allure2/commit/1c5693933f519e64379f1a14eb3c7beeba7bc7cd",
"target": {
"file": "allure-generator/src/main/java/io/qameta/allure/category/CategoriesPlugin.java"
}
},
{
"deprecated": false,
"digest": {
"line_hashes": [
"241210944552558531563526628397234718422",
"219580964178765273715271148067763794466",
"175307492224977463083968315576111807891"
],
"threshold": 0.9
},
"id": "CVE-2026-55847-144750cf",
"signature_type": "Line",
"signature_version": "v1",
"source": "https://github.com/allure-framework/allure2/commit/1c5693933f519e64379f1a14eb3c7beeba7bc7cd",
"target": {
"file": "allure-generator/src/test/java/io/qameta/allure/allure2/Allure2PluginTest.java"
}
},
{
"deprecated": false,
"digest": {
"function_hash": "3790290213821273761805122225097081319",
"length": 491
},
"id": "CVE-2026-55847-3faaff57",
"signature_type": "Function",
"signature_version": "v1",
"source": "https://github.com/allure-framework/allure2/commit/1c5693933f519e64379f1a14eb3c7beeba7bc7cd",
"target": {
"file": "allure-generator/src/main/java/io/qameta/allure/category/CategoriesPlugin.java",
"function": "readResults"
}
},
{
"deprecated": false,
"digest": {
"line_hashes": [
"60883449274262812147819999078535316930",
"94677989632604075294919441495831054376",
"203490631379613091738499971065452484776",
"324688223611233628107988215004195710797",
"300980071057100047023531572610277350096",
"3307096043996022276181603395077952460",
"6807080718866362769469909429315388788",
"86937419353926709854892346420965092214"
],
"threshold": 0.9
},
"id": "CVE-2026-55847-51f2a4c6",
"signature_type": "Line",
"signature_version": "v1",
"source": "https://github.com/allure-framework/allure2/commit/1c5693933f519e64379f1a14eb3c7beeba7bc7cd",
"target": {
"file": "allure-generator/src/main/java/io/qameta/allure/allure1/Allure1Plugin.java"
}
},
{
"deprecated": false,
"digest": {
"function_hash": "70546763740075469099732377519328624110",
"length": 685
},
"id": "CVE-2026-55847-68933e97",
"signature_type": "Function",
"signature_version": "v1",
"source": "https://github.com/allure-framework/allure2/commit/1c5693933f519e64379f1a14eb3c7beeba7bc7cd",
"target": {
"file": "allure-generator/src/main/java/io/qameta/allure/allure2/Allure2Plugin.java",
"function": "getTestStage"
}
},
{
"deprecated": false,
"digest": {
"function_hash": "203275256957059462519299476082341778110",
"length": 871
},
"id": "CVE-2026-55847-78cc98fe",
"signature_type": "Function",
"signature_version": "v1",
"source": "https://github.com/allure-framework/allure2/commit/1c5693933f519e64379f1a14eb3c7beeba7bc7cd",
"target": {
"file": "allure-generator/src/main/java/io/qameta/allure/allure2/Allure2Plugin.java",
"function": "convert"
}
},
{
"deprecated": false,
"digest": {
"line_hashes": [
"60551415276631098533815297610479538392",
"83186761732682352589320255613588853221",
"5870288768284359396777740322596133474"
],
"threshold": 0.9
},
"id": "CVE-2026-55847-b791438b",
"signature_type": "Line",
"signature_version": "v1",
"source": "https://github.com/allure-framework/allure2/commit/1c5693933f519e64379f1a14eb3c7beeba7bc7cd",
"target": {
"file": "allure-generator/src/test/java/io/qameta/allure/allure1/Allure1PluginTest.java"
}
},
{
"deprecated": false,
"digest": {
"function_hash": "62242621741391615457745905206055544556",
"length": 225
},
"id": "CVE-2026-55847-d3fa8d5b",
"signature_type": "Function",
"signature_version": "v1",
"source": "https://github.com/allure-framework/allure2/commit/1c5693933f519e64379f1a14eb3c7beeba7bc7cd",
"target": {
"file": "allure-generator/src/main/java/io/qameta/allure/allure1/Allure1Plugin.java",
"function": "getDescriptionHtml"
}
},
{
"deprecated": false,
"digest": {
"function_hash": "87986467399125809782419870433868120506",
"length": 1494
},
"id": "CVE-2026-55847-e56c0180",
"signature_type": "Function",
"signature_version": "v1",
"source": "https://github.com/allure-framework/allure2/commit/1c5693933f519e64379f1a14eb3c7beeba7bc7cd",
"target": {
"file": "allure-generator/src/main/java/io/qameta/allure/allure2/Allure2Plugin.java",
"function": "convert"
}
},
{
"deprecated": false,
"digest": {
"line_hashes": [
"279784319809601335477949458075482204122",
"193726468982003733773826688154286931143",
"38109736525506403667803860038663272819",
"90098918570003507843435407695168158129",
"149988046619593398835298567485333151067",
"57507052053662961761641451215209644926",
"156232949253455084215815192603707292533",
"338762480386574487404736533175613580095",
"16465014490079568101141260927144368117",
"36659172366245968302682169014439649285",
"317555416048100701322394809374377795968",
"318358392505428137974794491287874365142",
"328871130538548151866801864451057016807",
"323086549262266986237952772910943212146",
"26056142751383522338255772680345357117",
"70280790483645435551781969059298923943",
"65075074383220348913944094686414986424",
"70766102907853225889158705823920248815",
"178826113179697825152382617863933380332"
],
"threshold": 0.9
},
"id": "CVE-2026-55847-eb2bf4f0",
"signature_type": "Line",
"signature_version": "v1",
"source": "https://github.com/allure-framework/allure2/commit/1c5693933f519e64379f1a14eb3c7beeba7bc7cd",
"target": {
"file": "allure-generator/src/main/java/io/qameta/allure/allure2/Allure2Plugin.java"
}
}
]
"2026-10-28T11:15:03Z"