On Tue, Aug 8, 2023 at 2:33 PM Siddhesh Poyarekar <siddh...@gotplt.org> wrote: > > On 2023-08-08 04:16, Richard Biener wrote: > > On Mon, Aug 7, 2023 at 7:30 PM David Edelsohn via Gcc-patches > > <gcc-patches@gcc.gnu.org> wrote: > >> > >> FOSS Best Practices recommends that projects have an official Security > >> policy stated in a SECURITY.md or SECURITY.txt file at the root of the > >> repository. GLIBC and Binutils have added such documents. > >> > >> Appended is a prototype for a Security policy file for GCC based on the > >> Binutils document because GCC seems to have more affinity with Binutils as > >> a tool. Do the runtime libraries distributed with GCC, especially libgcc, > >> require additional security policies? > >> > >> [ ] Is it appropriate to use the Binutils SECURITY.txt as the starting > >> point or should GCC use GLIBC SECURITY.md as the starting point for the GCC > >> Security policy? > >> > >> [ ] Does GCC, or some components of GCC, require additional care because of > >> runtime libraries like libgcc and libstdc++, and because of gcov and > >> profile-directed feedback? > > > > I do think that the runtime libraries should at least be explicitly > > mentioned > > because they fall into the "generated output" category and bugs in the > > runtime are usually more severe as affecting a wider class of inputs. > > Ack, I'd expect libstdc++ and libgcc to be aligned with glibc's > policies. libiberty and others on the other hand, would probably be > more suitably aligned with binutils libbfd, where we assume trusted input. > > >> Thoughts? > >> > >> Thanks, David > >> > >> GCC Security Process > >> ==================== > >> > >> What is a GCC security bug? > >> =========================== > >> > >> A security bug is one that threatens the security of a system or > >> network, or might compromise the security of data stored on it. > >> In the context of GCC there are two ways in which such > >> bugs might occur. In the first, the programs themselves might be > >> tricked into a direct compromise of security. In the second, the > >> tools might introduce a vulnerability in the generated output that > >> was not already present in the files used as input. > >> > >> Other than that, all other bugs will be treated as non-security > >> issues. This does not mean that they will be ignored, just that > >> they will not be given the priority that is given to security bugs. > >> > >> This stance applies to the creation tools in the GCC (e.g., > >> gcc, g++, gfortran, gccgo, gccrs, gnat, cpp, gcov, etc.) and the > >> libraries that they use. > >> > >> Notes: > >> ====== > >> > >> None of the programs in GCC need elevated privileges to operate and > >> it is recommended that users do not use them from accounts where such > >> privileges are automatically available. > > > > I'll note that we could ourselves mitigate some of that by handling > > privileged > > invocation of the driver specially, dropping privs on exec of the sibling > > tools > > and possibly using temporary files or pipes to do the parts of the I/O that > > need to be privileged. > > It's not a bad idea, but it ends up giving legitimizing running the > compiler as root, pushing the responsibility of privilege management to > the driver. How about rejecting invocation as root altogether by > default, bypassed with a --run-as-root flag instead? > > I've also been thinking about a --sandbox flag that isolates the build > process (for gcc as well as binutils) into a separate namespace so that > it's usable in a restricted mode on untrusted sources without exposing > the rest of the system to it.
There's probably external tools to do this, not sure if we should replicate things in the driver for this. But sure, I think the driver is the proper point to address any of such issues - iff we want to address them at all. Maybe a nice little google summer-of-code project ;) Richard. > > Thanks, > Sid