{"id":"CVE-2026-119338","aliases":["DEBIAN-CVE-2026-119338","EUVD-2026-114445","GHSA-vf7v-2h4f-6f4j","UBUNTU-CVE-2026-119338","openSUSE-SU-2026:12411-1"],"status":"published","title":"Tesseract: Double free and use after free in the PAGE XML renderer on right-to-left pages","description":"Tesseract is an open source OCR engine. From 5.4.0 until 5.5.4, AppendLinePolygon in src/api/pagerenderer.cpp destroys the caller-owned right-to-left Pta accumulator while receiving it by value, leaving line_top_rtl_pts and line_bottom_rtl_pts dangling. On an upright Hebrew or Arabic page at the default PAGE XML level, POLYGONFLAG with a false skewed_flag enters the vulnerable calls, while LEVELFLAG greater than zero provides an alternative gate. The calls repeatedly read and free the stale object, causing a double free and use after free and allowing corrupted coordinates to reach RecalcPolygonline. This issue is fixed in version 5.5.4.","severity":{"version":"4.0","score":6.9,"vector":"CVSS:4.0/AV:L/AC:L/AT:N/PR:N/UI:P/VC:L/VI:L/VA:H/SC:N/SI:N/SA:N","level":"medium","assessor":"cna","from":"cve"},"epss":{"day":"2026-11-11","score":0.00138,"percentile":0.03244,"model":"v2026.06.15"},"facts":{"in_kev":false,"known_exploited":false,"public_exploit":false,"fix_available":false},"cwes":["CWE-125","CWE-415","CWE-416"],"published":"2026-10-30T20:12:29Z","modified":"2026-11-06T01:07:28Z","affected":[{"source":"osv","ecosystem":"Debian:12","package":"tesseract","ranges":[{"type":"ECOSYSTEM","events":[{"introduced":"0"}]}],"versions":["5.3.0-2","5.3.3-1","5.3.4-1","5.3.4-1.1","5.3.4-1.2","5.3.4-1.3","5.3.4-1.4","5.5.0-1","5.5.0-1.1"]},{"source":"osv","ecosystem":"Debian:13","package":"tesseract","ranges":[{"type":"ECOSYSTEM","events":[{"introduced":"0"}]}],"versions":["5.5.0-1","5.5.0-1.1"]},{"source":"osv","ecosystem":"Debian:14","package":"tesseract","ranges":[{"type":"ECOSYSTEM","events":[{"introduced":"0"}]}],"versions":["5.5.0-1","5.5.0-1.1"]},{"source":"osv","ecosystem":"Ubuntu:Pro:14.04:LTS","package":"tesseract","ranges":[{"type":"ECOSYSTEM","events":[{"introduced":"0"}]}],"versions":["3.02.02-1","3.03.02-3","3.03.02-3ubuntu0.1~esm1"]},{"source":"osv","ecosystem":"Ubuntu:Pro:16.04:LTS","package":"tesseract","ranges":[{"type":"ECOSYSTEM","events":[{"introduced":"0"}]}],"versions":["3.04.00-5ubuntu1","3.04.01-2","3.04.01-4","3.04.01-4ubuntu0.1~esm1"]},{"source":"osv","ecosystem":"Ubuntu:Pro:18.04:LTS","package":"tesseract","ranges":[{"type":"ECOSYSTEM","events":[{"introduced":"0"}]}],"versions":["3.04.01-6","3.04.01-6build1","3.04.01-6build2","4.00~git2188-cdc35338-4build1","4.00~git2188-cdc35338-5","4.00~git2207-766b7bd6-3.1","4.00~git2219-40f43111-1.2","4.00~git2288-10f4998a-2","4.00~git2288-10f4998a-2ubuntu0.1~esm1"]},{"source":"osv","ecosystem":"Ubuntu:Pro:20.04:LTS","package":"tesseract","ranges":[{"type":"ECOSYSTEM","events":[{"introduced":"0"}]}],"versions":["4.1.0-1","4.1.0-2","4.1.1-1","4.1.1-2","4.1.1-2build1","4.1.1-2build2","4.1.1-2ubuntu0.1~esm1"]},{"source":"osv","ecosystem":"Ubuntu:Pro:22.04:LTS","package":"tesseract","ranges":[{"type":"ECOSYSTEM","events":[{"introduced":"0"}]}],"versions":["4.1.1-2.1","4.1.1-2.1build1","4.1.1-2.1ubuntu0.1~esm1"]},{"source":"osv","ecosystem":"Ubuntu:Pro:24.04:LTS","package":"tesseract","ranges":[{"type":"ECOSYSTEM","events":[{"introduced":"0"}]}],"versions":["5.3.0-2build1","5.3.3-1","5.3.3-1build1","5.3.4-1","5.3.4-1build3","5.3.4-1build4","5.3.4-1build5","5.3.4-1ubuntu0.1~esm1"]},{"source":"osv","ecosystem":"Ubuntu:26.10","package":"tesseract","ranges":[{"type":"ECOSYSTEM","events":[{"introduced":"0"}]}],"versions":["5.5.0-1build1","5.5.0-1.1"]},{"source":"osv","ecosystem":"Ubuntu:Pro:26.04:LTS","package":"tesseract","ranges":[{"type":"ECOSYSTEM","events":[{"introduced":"0"}]}],"versions":["5.5.0-1","5.5.0-1build1","5.5.0-1ubuntu0.1~esm1"]},{"source":"osv","ecosystem":"openSUSE:Tumbleweed","package":"tesseract-ocr","ranges":[{"type":"ECOSYSTEM","events":[{"introduced":"0"},{"fixed":"5.5.4-2.1"}]}],"bundled":4}],"products":[{"vendor":"tesseract-ocr","product":"tesseract"}],"references":[{"url":"https://github.com/tesseract-ocr/tesseract/security/advisories/GHSA-vf7v-2h4f-6f4j","tags":["x_refsource_CONFIRM","exploit","advisory","report"]},{"url":"https://github.com/tesseract-ocr/tesseract/pull/4647","tags":["x_refsource_MISC","fix","report"]},{"url":"https://github.com/tesseract-ocr/tesseract/commit/fa52414ff1fd13ae4b00048d2498f9141b0bc2eb","tags":["x_refsource_MISC","fix","report"]},{"url":"https://github.com/tesseract-ocr/tesseract/releases/tag/5.5.4","tags":["x_refsource_MISC","web","report"]},{"url":"https://github.com/CVEProject/cvelistV5/tree/main/cves/2026/119xxx/CVE-2026-119338.json","tags":["advisory"]},{"url":"https://nvd.nist.gov/vuln/detail/CVE-2026-119338","tags":["advisory"]},{"url":"https://security-tracker.debian.org/tracker/CVE-2026-119338","tags":["advisory"]},{"url":"https://ubuntu.com/security/CVE-2026-119338","tags":["report"]},{"url":"https://www.cve.org/CVERecord?id=CVE-2026-119338","tags":["report"]},{"url":"","tags":["advisory"]},{"url":"https://www.suse.com/security/cve/CVE-2026-119338","tags":["web"]},{"url":"https://www.suse.com/security/cve/CVE-2026-119339","tags":["web"]},{"url":"https://www.suse.com/security/cve/CVE-2026-119340","tags":["web"]},{"url":"https://www.suse.com/security/cve/CVE-2026-119341","tags":["web"]}],"sources":{"cve":[{"id":"CVE-2026-119338","title":"Tesseract: Double free and use after free in the PAGE XML renderer on right-to-left pages","description":"Tesseract is an open source OCR engine. From 5.4.0 until 5.5.4, AppendLinePolygon in src/api/pagerenderer.cpp destroys the caller-owned right-to-left Pta accumulator while receiving it by value, leaving line_top_rtl_pts and line_bottom_rtl_pts dangling. On an upright Hebrew or Arabic page at the default PAGE XML level, POLYGONFLAG with a false skewed_flag enters the vulnerable calls, while LEVELFLAG greater than zero provides an alternative gate. The calls repeatedly read and free the stale object, causing a double free and use after free and allowing corrupted coordinates to reach RecalcPolygonline. This issue is fixed in version 5.5.4.","status":"published","published":"2026-10-30T20:12:29.03Z","modified":"2026-11-05T02:41:13.497Z","cvss":[{"version":"4.0","score":6.9,"vector":"CVSS:4.0/AV:L/AC:L/AT:N/PR:N/UI:P/VC:L/VI:L/VA:H/SC:N/SI:N/SA:N","level":"medium","assessor":"cna"}],"cwes":["CWE-125","CWE-415","CWE-416"],"updated_at":"2026-11-05T06:56:15.67765Z"}],"euvd":[{"id":"EUVD-2026-114445","description":"Tesseract is an open source OCR engine. From 5.4.0 until 5.5.4, AppendLinePolygon in src/api/pagerenderer.cpp destroys the caller-owned right-to-left Pta accumulator while receiving it by value, leaving line_top_rtl_pts and line_bottom_rtl_pts dangling. On an upright Hebrew or Arabic page at the default PAGE XML level, POLYGONFLAG with a false skewed_flag enters the vulnerable calls, while LEVELFLAG greater than zero provides an alternative gate. The calls repeatedly read and free the stale object, causing a double free and use after free and allowing corrupted coordinates to reach RecalcPolygonline. This issue is fixed in version 5.5.4.","status":"published","published":"2026-10-30T20:12:29Z","modified":"2026-11-05T02:41:13Z","cvss":[{"version":"4.0","score":6.9,"vector":"CVSS:4.0/AV:L/AC:L/AT:N/PR:N/UI:P/VC:L/VI:L/VA:H/SC:N/SI:N/SA:N","level":"medium"}],"updated_at":"2026-11-05T06:54:34.509968Z"}],"nvd":[{"id":"CVE-2026-119338","description":"Tesseract is an open source OCR engine. From 5.4.0 until 5.5.4, AppendLinePolygon in src/api/pagerenderer.cpp destroys the caller-owned right-to-left Pta accumulator while receiving it by value, leaving line_top_rtl_pts and line_bottom_rtl_pts dangling. On an upright Hebrew or Arabic page at the default PAGE XML level, POLYGONFLAG with a false skewed_flag enters the vulnerable calls, while LEVELFLAG greater than zero provides an alternative gate. The calls repeatedly read and free the stale object, causing a double free and use after free and allowing corrupted coordinates to reach RecalcPolygonline. This issue is fixed in version 5.5.4.","status":"published","published":"2026-10-30T21:16:51.797Z","modified":"2026-11-05T03:17:19.86Z","cvss":[{"version":"4.0","score":6.9,"vector":"CVSS:4.0/AV:L/AC:L/AT:N/PR:N/UI:P/VC:L/VI:L/VA:H/SC:N/SI:N/SA:N/E:X/CR:X/IR:X/AR:X/MAV:X/MAC:X/MAT:X/MPR:X/MUI:X/MVC:X/MVI:X/MVA:X/MSC:X/MSI:X/MSA:X/S:X/AU:X/R:X/V:X/RE:X/U:X","level":"medium","assessor":"secondary"}],"cwes":["CWE-125","CWE-415","CWE-416"],"updated_at":"2026-11-05T06:56:50.540739Z"}],"osv":[{"id":"CVE-2026-119338","title":"Tesseract: Double free and use after free in the PAGE XML renderer on right-to-left pages","description":"Tesseract is an open source OCR engine. From 5.4.0 until 5.5.4, AppendLinePolygon in src/api/pagerenderer.cpp destroys the caller-owned right-to-left Pta accumulator while receiving it by value, leaving line_top_rtl_pts and line_bottom_rtl_pts dangling. On an upright Hebrew or Arabic page at the default PAGE XML level, POLYGONFLAG with a false skewed_flag enters the vulnerable calls, while LEVELFLAG greater than zero provides an alternative gate. The calls repeatedly read and free the stale object, causing a double free and use after free and allowing corrupted coordinates to reach RecalcPolygonline. This issue is fixed in version 5.5.4.","status":"published","published":"2026-10-30T20:12:29.03Z","modified":"2026-11-06T01:07:28.544314576Z","cvss":[{"version":"4.0","score":6.9,"vector":"CVSS:4.0/AV:L/AC:L/AT:N/PR:N/UI:P/VC:L/VI:L/VA:H/SC:N/SI:N/SA:N","level":"medium"}],"cwes":["CWE-125","CWE-415","CWE-416"],"updated_at":"2026-11-06T01:32:47.895286Z"},{"id":"DEBIAN-CVE-2026-119338","description":"Tesseract is an open source OCR engine. From 5.4.0 until 5.5.4, AppendLinePolygon in src/api/pagerenderer.cpp destroys the caller-owned right-to-left Pta accumulator while receiving it by value, leaving line_top_rtl_pts and line_bottom_rtl_pts dangling. On an upright Hebrew or Arabic page at the default PAGE XML level, POLYGONFLAG with a false skewed_flag enters the vulnerable calls, while LEVELFLAG greater than zero provides an alternative gate. The calls repeatedly read and free the stale object, causing a double free and use after free and allowing corrupted coordinates to reach RecalcPolygonline. This issue is fixed in version 5.5.4.","status":"published","published":"2026-10-30T21:16:51.797Z","modified":"2026-11-05T09:47:38.956129185Z","cvss":[{"version":"4.0","score":6.9,"vector":"CVSS:4.0/AV:L/AC:L/AT:N/PR:N/UI:P/VC:L/VI:L/VA:H/SC:N/SI:N/SA:N/E:X/CR:X/IR:X/AR:X/MAV:X/MAC:X/MAT:X/MPR:X/MUI:X/MVC:X/MVI:X/MVA:X/MSC:X/MSI:X/MSA:X/S:X/AU:X/R:X/V:X/RE:X/U:X","level":"medium"}],"updated_at":"2026-11-05T13:31:24.64316Z"},{"id":"UBUNTU-CVE-2026-119338","description":"Tesseract is an open source OCR engine. From 5.4.0 until 5.5.4, AppendLinePolygon in src/api/pagerenderer.cpp destroys the caller-owned right-to-left Pta accumulator while receiving it by value, leaving line_top_rtl_pts and line_bottom_rtl_pts dangling. On an upright Hebrew or Arabic page at the default PAGE XML level, POLYGONFLAG with a false skewed_flag enters the vulnerable calls, while LEVELFLAG greater than zero provides an alternative gate. The calls repeatedly read and free the stale object, causing a double free and use after free and allowing corrupted coordinates to reach RecalcPolygonline. This issue is fixed in version 5.5.4.","status":"published","published":"2026-10-30T21:16:00Z","modified":"2026-11-05T04:42:51Z","cvss":[{"version":"4.0","score":6.9,"vector":"CVSS:4.0/AV:L/AC:L/AT:N/PR:N/UI:P/VC:L/VI:L/VA:H/SC:N/SI:N/SA:N","level":"medium"}],"updated_at":"2026-11-05T13:33:25.727744Z"},{"id":"openSUSE-SU-2026:12411-1","title":"libtesseract5-5.5.4-2.1 on GA media","description":"These are all security issues fixed in the libtesseract5-5.5.4-2.1 package on the GA media of openSUSE Tumbleweed.","status":"published","published":"2026-11-03T00:00:00Z","modified":"2026-11-04T17:23:22.336521718Z","updated_at":"2026-11-04T17:43:22.558805Z"}]}}
