[SECURITY] Heap Use-After-Free in FT_Bitmap_Copy
Ze Sheng via FreeType development <[email protected]> Tue, 27 Jan 2026 18:08:15 -0600
| Newsgroups | gmane.comp.fonts.freetype.devel |
|---|---|
| Message-ID | <CAAy5SpT5q4n0T6z5jfvrrFopy0soNGeNMKyqbFqV4hEnqshT6g@mail.gmail.com> |
--0000000000001c3a2b0649678aff Content-Type: multipart/alternative; boundary="0000000000001c3a290649678afd" --0000000000001c3a290649678afd Content-Type: text/plain; charset="UTF-8" Hey FreeType, We have located a potential vulnerability: Heap Use-After-Free in FT_Bitmap_Copy via Lazy Bitmap Ownership Transfer. We did not find a security report page for FreeType so we sent this email to you. Here is an md file of this bug with PoC and a Fix. Best, Ze Sheng --0000000000001c3a290649678afd Content-Type: text/html; charset="UTF-8" Content-Transfer-Encoding: quoted-printable <div dir=3D"ltr">Hey FreeType,<br><div><br></div><div>We have located a pot= ential vulnerability:=C2=A0Heap Use-After-Free in FT_Bitmap_Copy via Lazy B= itmap Ownership Transfer.<br></div><div><br></div><div>We did not find a se= curity report page for FreeType so we sent this email to you. Here is an md= file of this bug with PoC and a Fix.</div><div><br></div><div>Best,</div><= div>Ze Sheng</div></div> --0000000000001c3a290649678afd-- --0000000000001c3a2b0649678aff Content-Type: application/octet-stream; name="issue.md" Content-Disposition: attachment; filename="issue.md" Content-Transfer-Encoding: base64 Content-ID: <f_mkx9nxrt0> X-Attachment-Id: f_mkx9nxrt0 IyBIZWFwIFVzZS1BZnRlci1GcmVlIGluIEZUX0JpdG1hcF9Db3B5IHZpYSBMYXp5IEJpdG1hcCBP d25lcnNoaXAgVHJhbnNmZXIKCiMjIFN1bW1hcnkKCkZyZWVUeXBlIGhhcyBhIGhlYXAgdXNlLWFm dGVyLWZyZWUgdnVsbmVyYWJpbGl0eSBpbiBgRlRfQml0bWFwX0NvcHlgIHdoZW4gYEZUX0dldF9H bHlwaGAgaXMgY2FsbGVkIHR3aWNlIG9uIHRoZSBzYW1lIHJlbmRlcmVkIGdseXBoIHNsb3QuIFRo ZSBmaXJzdCBjYWxsIHRyYW5zZmVycyBiaXRtYXAgYnVmZmVyIG93bmVyc2hpcCB2aWEgbGF6eSBj b3B5LCBhbmQgYWZ0ZXIgYEZUX0RvbmVfR2x5cGhgIGZyZWVzIHRoZSBidWZmZXIsIHRoZSBzZWNv bmQgYEZUX0dldF9HbHlwaGAgY2FsbCBhY2Nlc3NlcyBmcmVlZCBtZW1vcnkuCgojIyBSb290IENh dXNlCgpUaGUgbGF6eSBjb3B5IG1lY2hhbmlzbSBpbiBgZnRfYml0bWFwX2dseXBoX2luaXRgIHRy YW5zZmVycyBvd25lcnNoaXAgYnV0IGRvZXNuJ3QgbnVsbCBvdXQgdGhlIHNsb3QncyBiaXRtYXAg cG9pbnRlcjoKCiMjIyBWdWxuZXJhYmxlIENvZGUgKGZ0Z2x5cGguYzo3OC04MykKYGBgYwovKiBk byBsYXp5IGNvcHlpbmcgd2hlbmV2ZXIgcG9zc2libGUgKi8KaWYgKCBzbG90LT5pbnRlcm5hbC0+ ZmxhZ3MgJiBGVF9HTFlQSF9PV05fQklUTUFQICkKewogIGdseXBoLT5iaXRtYXAgICAgICAgICAg PSBzbG90LT5iaXRtYXA7ICAgICAgIC8vIEp1c3QgY29waWVzIHRoZSBwb2ludGVyIQogIHNsb3Qt PmludGVybmFsLT5mbGFncyAmPSB+RlRfR0xZUEhfT1dOX0JJVE1BUDsgIC8vIENsZWFycyBvd25l cnNoaXAgZmxhZwogIC8vIEJVRzogc2xvdC0+Yml0bWFwLmJ1ZmZlciBpcyBOT1Qgc2V0IHRvIE5V TEwhCn0KYGBgCgojIyBQb0MKCiMjIyBUcmlnZ2VyIGZpbGUKCkEgY3JhZnRlZCBmb250IGZpbGUg YGNyYXNoX2lucHV0LmJpbmAgKDU4MzAgYnl0ZXMpIHRoYXQgdHJpZ2dlcnMgdGhlIFVBRiB3aGVu IHByb2Nlc3NlZCB3aXRoIHRoZSBnbHlwaCBmdXp6ZXIuCgojIyMgSG93IHRvIGdlbmVyYXRlIFBv QwoKYGBgYwovLyBmdGZ1enplcl9nbHlwaC5jIC0gS2V5IHNlcXVlbmNlIHRoYXQgdHJpZ2dlcnMg dGhlIGJ1ZwpGVF9SZW5kZXJfR2x5cGgoZmFjZS0+Z2x5cGgsIG1vZGUpOyAgICAgICAgICAgLy8g TGluZSAxMDM6IEFsbG9jYXRlcyBiaXRtYXAKCi8vIEZpcnN0IEZUX0dldF9HbHlwaCAtIGxhenkg Y29weSB0cmFuc2ZlcnMgb3duZXJzaGlwCkZUX0dseXBoIGdseXBoOwplcnJvciA9IEZUX0dldF9H bHlwaChmYWNlLT5nbHlwaCwgJmdseXBoKTsgICAgLy8gTGluZSAxMzAKRlRfRG9uZV9HbHlwaChn bHlwaCk7ICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBMaW5lIDEzNjogRnJlZXMgYnVmZmVy CgovLyBTZWNvbmQgRlRfR2V0X0dseXBoIC0gYWNjZXNzZXMgZnJlZWQgbWVtb3J5IQplcnJvciA9 IEZUX0dldF9HbHlwaChmYWNlLT5nbHlwaCwgJmdseXBoKTsgICAgLy8gTGluZSAxNDM6IFVBRiBo ZXJlIQpgYGAKCmBgYGJhc2gKIyBCdWlsZCBGcmVlVHlwZSB3aXRoIEFTQU4KY2QgZnJlZXR5cGUg JiYgbWtkaXIgYnVpbGQgJiYgY2QgYnVpbGQKY21ha2UgLi4gLURDTUFLRV9DX0ZMQUdTPSItZnNh bml0aXplPWFkZHJlc3MgLWciCm1ha2UKCiMgQ29tcGlsZSBmdXp6ZXIKY2xhbmcgLWZzYW5pdGl6 ZT1hZGRyZXNzLGZ1enplciAtSS4uL2luY2x1ZGUgZnRmdXp6ZXJfZ2x5cGguYyAtTC4gLWxmcmVl dHlwZSAtbyBmdGZ1enplcl9nbHlwaAoKIyBSdW4gd2l0aCBjcmFzaCBpbnB1dAouL2Z0ZnV6emVy X2dseXBoIGNyYXNoX2lucHV0LmJpbgpgYGAKCi0tLQoKIyMgVHJpZ2dlciBNZXRob2QgMTogRGly ZWN0IEFQSSBVc2FnZQoKYGBgYwojaW5jbHVkZSA8ZnQyYnVpbGQuaD4KI2luY2x1ZGUgRlRfRlJF RVRZUEVfSAojaW5jbHVkZSBGVF9HTFlQSF9ICgppbnQgbWFpbigpIHsKICAgIEZUX0xpYnJhcnkg bGlicmFyeTsKICAgIEZUX0ZhY2UgZmFjZTsKICAgIEZUX0dseXBoIGdseXBoOwoKICAgIEZUX0lu aXRfRnJlZVR5cGUoJmxpYnJhcnkpOwogICAgRlRfTmV3X0ZhY2UobGlicmFyeSwgIm1hbGljaW91 cy50dGYiLCAwLCAmZmFjZSk7CiAgICBGVF9TZXRfQ2hhcl9TaXplKGZhY2UsIDAsIDE2KjY0LCA3 MiwgNzIpOwoKICAgIEZUX0xvYWRfR2x5cGgoZmFjZSwgMCwgRlRfTE9BRF9ERUZBVUxUKTsKICAg IEZUX1JlbmRlcl9HbHlwaChmYWNlLT5nbHlwaCwgRlRfUkVOREVSX01PREVfTk9STUFMKTsKCiAg ICAvLyBGaXJzdCBjYWxsIC0gdHJhbnNmZXJzIG93bmVyc2hpcAogICAgRlRfR2V0X0dseXBoKGZh Y2UtPmdseXBoLCAmZ2x5cGgpOwogICAgRlRfRG9uZV9HbHlwaChnbHlwaCk7ICAvLyBGcmVlcyBi dWZmZXIKCiAgICAvLyBTZWNvbmQgY2FsbCAtIFVBRiEKICAgIEZUX0dldF9HbHlwaChmYWNlLT5n bHlwaCwgJmdseXBoKTsKCiAgICByZXR1cm4gMDsKfQpgYGAKCioqT3V0cHV0OioqCmBgYAo9PTE2 NzU0NTY9PUVSUk9SOiBBZGRyZXNzU2FuaXRpemVyOiBoZWFwLXVzZS1hZnRlci1mcmVlIG9uIGFk ZHJlc3MgMHg1MDIwMDAwMDBhMzAKUkVBRCBvZiBzaXplIDEyIGF0IDB4NTAyMDAwMDAwYTMwIHRo cmVhZCBUMAogICAgIzAgbWVtY3B5CiAgICAjMSBGVF9CaXRtYXBfQ29weSBmdGJpdG1hcC5jOjEy Mzo5CiAgICAjMiBmdF9iaXRtYXBfZ2x5cGhfaW5pdCBmdGdseXBoLmM6ODc6MTUKICAgICMzIEZU X0dldF9HbHlwaCBmdGdseXBoLmM6NjgwOjEzCmBgYAoKLS0tCgojIyBUcmlnZ2VyIE1ldGhvZCAy OiBGdXp6ZXIgKGxpYkZ1enplcikKCmBgYGMKI2luY2x1ZGUgPGZ0MmJ1aWxkLmg+CiNpbmNsdWRl IEZUX0ZSRUVUWVBFX0gKI2luY2x1ZGUgRlRfR0xZUEhfSAoKaW50IExMVk1GdXp6ZXJUZXN0T25l SW5wdXQoY29uc3QgdWludDhfdCAqZGF0YSwgc2l6ZV90IHNpemUpIHsKICAgIEZUX0xpYnJhcnkg bGlicmFyeTsKICAgIEZUX0ZhY2UgZmFjZTsKCiAgICBpZiAoc2l6ZSA8IDEwKSByZXR1cm4gMDsK CiAgICBGVF9Jbml0X0ZyZWVUeXBlKCZsaWJyYXJ5KTsKICAgIGlmIChGVF9OZXdfTWVtb3J5X0Zh Y2UobGlicmFyeSwgZGF0YSwgc2l6ZSwgMCwgJmZhY2UpKSB7CiAgICAgICAgRlRfRG9uZV9GcmVl VHlwZShsaWJyYXJ5KTsKICAgICAgICByZXR1cm4gMDsKICAgIH0KCiAgICBGVF9TZXRfQ2hhcl9T aXplKGZhY2UsIDAsIDE2KjY0LCA3MiwgNzIpOwoKICAgIGZvciAoRlRfVUxvbmcgaSA9IDA7IGkg PCBmYWNlLT5udW1fZ2x5cGhzICYmIGkgPCA1MDsgaSsrKSB7CiAgICAgICAgaWYgKEZUX0xvYWRf R2x5cGgoZmFjZSwgaSwgRlRfTE9BRF9ERUZBVUxUKSkgY29udGludWU7CgogICAgICAgIGlmIChm YWNlLT5nbHlwaC0+Zm9ybWF0ID09IEZUX0dMWVBIX0ZPUk1BVF9PVVRMSU5FKSB7CiAgICAgICAg ICAgIEZUX1JlbmRlcl9HbHlwaChmYWNlLT5nbHlwaCwgRlRfUkVOREVSX01PREVfTk9STUFMKTsK CiAgICAgICAgICAgIEZUX0dseXBoIGdseXBoOwogICAgICAgICAgICBpZiAoIUZUX0dldF9HbHlw aChmYWNlLT5nbHlwaCwgJmdseXBoKSkgewogICAgICAgICAgICAgICAgRlRfRG9uZV9HbHlwaChn bHlwaCk7ICAvLyBGcmVlcyBidWZmZXIKICAgICAgICAgICAgfQoKICAgICAgICAgICAgLy8gU2Vj b25kIGNhbGwgdHJpZ2dlcnMgVUFGCiAgICAgICAgICAgIGlmICghRlRfR2V0X0dseXBoKGZhY2Ut PmdseXBoLCAmZ2x5cGgpKSB7CiAgICAgICAgICAgICAgICBGVF9Eb25lX0dseXBoKGdseXBoKTsK ICAgICAgICAgICAgfQogICAgICAgIH0KICAgIH0KCiAgICBGVF9Eb25lX0ZhY2UoZmFjZSk7CiAg ICBGVF9Eb25lX0ZyZWVUeXBlKGxpYnJhcnkpOwogICAgcmV0dXJuIDA7Cn0KYGBgCgoqKkJ1aWxk IGFuZCBydW46KioKYGBgYmFzaApjbGFuZyAtZnNhbml0aXplPWFkZHJlc3MsZnV6emVyIGZ0ZnV6 emVyX2dseXBoLmMgLUkvcGF0aC90by9mcmVldHlwZS9pbmNsdWRlIFwKICAgIC1ML3BhdGgvdG8v ZnJlZXR5cGUvYnVpbGQgLWxmcmVldHlwZSAtbyBmdGZ1enplcl9nbHlwaAouL2Z0ZnV6emVyX2ds eXBoIGNyYXNoX2lucHV0LmJpbgpgYGAKCi0tLQoKIyMgSW1wYWN0Cgp8IEFzcGVjdCB8IERldGFp bHMgfAp8LS0tLS0tLS18LS0tLS0tLS0tfAp8ICoqVHlwZSoqIHwgSGVhcCBVc2UtQWZ0ZXItRnJl ZSAoQ1dFLTQxNikgfAp8ICoqU2V2ZXJpdHkqKiB8IENyaXRpY2FsIHwKfCAqKkF0dGFjayBWZWN0 b3IqKiB8IE1hbGljaW91cyBmb250IGZpbGUgfAp8ICoqQWZmZWN0ZWQgQ29tcG9uZW50cyoqIHwg YEZUX0dldF9HbHlwaGAsIGBGVF9CaXRtYXBfQ29weWAsIGBmdF9iaXRtYXBfZ2x5cGhfaW5pdGAg fAp8ICoqQWZmZWN0ZWQgVmVyc2lvbnMqKiB8IExhdGVzdCAodGVzdGVkIG9uIGN1cnJlbnQgbWFz dGVyKSB8CnwgKipDV0UqKiB8IENXRS00MTYgKFVzZSBBZnRlciBGcmVlKSB8CgoqKlJlYWwtd29y bGQgaW1wYWN0OioqCi0gRnJlZVR5cGUgaXMgdXNlZCBpbiBDaHJvbWUsIEZpcmVmb3gsIEFuZHJv aWQsIGFuZCBtYW55IFBERiByZWFkZXJzCi0gVUFGIGNhbiBsZWFkIHRvIGFyYml0cmFyeSBjb2Rl IGV4ZWN1dGlvbgotIFBvdGVudGlhbCBmb3IgYnJvd3NlciBzYW5kYm94IGVzY2FwZSB2aWEgbWFs aWNpb3VzIHdlYiBmb250cwoKLS0tCgojIyBTdWdnZXN0ZWQgRml4CgpTZXQgYHNsb3QtPmJpdG1h cC5idWZmZXJgIHRvIE5VTEwgYWZ0ZXIgdGhlIGxhenkgY29weSBpbiBgZnRfYml0bWFwX2dseXBo X2luaXRgOgoKYGBgYwovKiBkbyBsYXp5IGNvcHlpbmcgd2hlbmV2ZXIgcG9zc2libGUgKi8KaWYg KCBzbG90LT5pbnRlcm5hbC0+ZmxhZ3MgJiBGVF9HTFlQSF9PV05fQklUTUFQICkKewogIGdseXBo LT5iaXRtYXAgICAgICAgICAgPSBzbG90LT5iaXRtYXA7CiAgc2xvdC0+aW50ZXJuYWwtPmZsYWdz ICY9IH5GVF9HTFlQSF9PV05fQklUTUFQOwogIHNsb3QtPmJpdG1hcC5idWZmZXIgICAgPSBOVUxM OyAgLy8gRklYOiBQcmV2ZW50IGRhbmdsaW5nIHBvaW50ZXIKfQpgYGAKCkFsdGVybmF0aXZlbHks IHJldHVybiBhbiBlcnJvciBpZiBgRlRfR2V0X0dseXBoYCBpcyBjYWxsZWQgb24gYSBzbG90IHdo b3NlIGJpdG1hcCBoYXMgYmVlbiB0cmFuc2ZlcnJlZC4KCi0tLQoKQ29udHJpYnV0aW9uOiBUaGlz IHBvdGVudGlhbCBpc3N1ZSBpcyBmb3VuZCBieSBGdXp6aW5nQnJhaW4gQCBPMkxhYiwgYW4gQUkt YmFzZWQgVnVsbmVyYWJpbGl0eSBEZXRlY3Rpb24gU3lzdGVtLgo= --0000000000001c3a2b0649678aff--