[PATCH v1] libio: validate and mangle the wide vtable

Florian Weimer fweimer@redhat.com
Mon Aug 24 15:33:44 GMT 2026


* Alessandro Schino:

> Calls dispatched through _IO_wide_data._wide_vtable (the WJUMP* macros)
> were not validated, unlike the narrow vtable which goes through
> IO_validate_vtable.  This asymmetry is the primitive used by the FSOP
> family known publicly as "House of Apple 2" / angry-FSROP: point the
> checked narrow vtable at _IO_wfile_jumps to pass the existing check,
> then hide a forged function pointer in the unchecked wide vtable,
> reached via _IO_wfile_overflow -> _IO_wdoallocbuf -> _IO_WDOALLOCATE.

I think you can just store the vtable array index there and perform a
bounds check as the validation.  There is no need to preserve any form
of ABI compatibility.

Thanks,
Florian



More information about the Libc-alpha mailing list