Re: Increased SECURITY RISCS from omitting some compikler options when building PG with meson; e.g. -fcf-protection=full

Peter Eisentraut <peter@eisentraut.org>

From: Peter Eisentraut <peter@eisentraut.org>
To: Hans Buschmann <buschmann@nidsa.net>, "pgsql-hackers@postgresql.org" <pgsql-hackers@postgresql.org>
Date: 2026-07-07T12:25:49Z
Lists: pgsql-hackers
On 07.07.26 11:59, Hans Buschmann wrote:
> Some days ago I stumbled over the following Phoronix article with a 
> proposal for Fedora 45:
> 
> Fedora 45 Considering x86_64 Shadow Stack Usage By Default <https:// 
> www.phoronix.com/news/Fedora-45-Consider-Shadow-Stack>

> I exemplary checked both the Fedora provided packages and the PGDG 
> provided packages  of pg18 that they are build with Schadow Stack 
> (SHSTK) and Indirect Branch Tracking  (IBT) activated which is true.

> It may sometimes be necessary that a quick fix of an apparent bug 
> encourages the user to recomple the specific component of postgres. The 
> different compile options result in  that the operating system provided 
> protection can not be guaranteed.
> 
> I have discovered this case on x86_64 pg18 on linux built with meson but 
> I don't know if other architectures have similar mitigations enabled in 
> the distributed binaries.
> 
> As I am not an experienced C-Programmer, there may be other compile 
> options for other vulnerabilities.
> 
> I propose to activate all compiler options as default that are used in 
> the binary releases of postgres, preferrably in both built systems 
> (autoconfigure and meson)
> 
> Please consider different operating systems (red hat, debian etc), all 
> supported pg versions, different architectures, different compilers, 
> different built systems etc.

I don't think this would be a good direction.  Distributions are in many 
cases better placed to decide when and how to activate certain 
protections.  The case you point out here is a good example.  The 
-fcf-protection option was already activated in Fedora 28, but it is 
only now that they are considering switching over the base layers of the 
OS to activate this facility.  It would be unreasonable to expect 
PostgreSQL and any other open-source project to track this and sync up 
with this.  Consider this to see the amount of information that would 
need to be tracked and implemented: 
https://github.com/jvoisin/compiler-flags-distro