On 01/31/2018 10:43 PM, Ken Moffat wrote:
If anybody wants to add full retpoline mitigation (against Spectre
v2) to an older system, the following works on x86_64 (I no longer
have i686 systems to test on).

I have tested this on my oldest available system (LFS-7.6, using
gcc-4.9.1 and which had used a 3.18 kernel) to prove the approach.
That system will never be used to connect to anything external (too
many vulnerabilities, in particular its version of openssl is no
longer maintained), it  is only there in case I want to see if such
an old system can build current LFS.

So, if it works there it will also work on newer systems!

What I do is build a minimal gcc-7.3 in /opt/kgcc and then use that
to compile a supported kernel.  On that oldest system I used the
latest 4.4 kernel, on a less old system I have used the latest 4.9
kernel, and for more recent systems I either use the latest 4.14 or
(recent test systems) 4.5.0.

If anybody used the HJL gcc patches I posted at the start of the
month, using gcc-7.3 provides no benefit.  But for everybody else,
it will help reduce the attack surface for Spectre v2.

1. gcc-7.3

I based my build on what is in BLFS for gcc-7.2, with the following
variations:

1.1 In the configure I changed the prefix and languages to
  --prefix=/opt/kgc --enable-languages=c
and added
  --disable-bootstrap.

Some of the other things can probably be turned off (compare LFS gcc
pass 2, e.g. libssp), but this is minimal enough for my purpose.

1.2 Do NOT run the tests - the proof of the pudding is in the
eating, either it will compile your kernel successfully, or it
won't.

2. The kernel

2.1 Fix up the config (normally, make oldconfig - I keep my configs
in the kernel, in /proc/config.gz so I can initialise .config for
this).  Ensure that retpoline support is selected (it defaults to Y,
like PTI).

2.2 If you have configured this source tree before (e.g. for an
earlier point release of the same minor version), make clean so that
the build-system files where compiler lack of support for retpoline
was recorded will be cleared out.

2.3 build the kernel using
  PATH=/opt/kgcc/bin:$PATH make -jN (N for numbner of cores).

2.4 install modules, if used, and the kernel, add it to grub.cfg so
that you can revert to an older kernel if problems.

3. Reboot.

You should be able to see the result by running
  cat /sys/devices/system/cpu/vulnerabilities/spectre_v2

Assuming it worked, run your usual acceptance tests to check that
everything you rely on still works.

That just leaves Spectre v1 to be addressed.

Thanks a million times, my systems are not that old, but a full upgrade of system gcc to 7.3.0 is still too painful for me. Did your proposed /opt/kcc installation and worked like a charm for 4.14.16. I now can relax a bit, as all my system now have at least two of the three vulnerabilities mitigated.


Bye
Tim

--
http://lists.linuxfromscratch.org/listinfo/lfs-support
FAQ: http://www.linuxfromscratch.org/blfs/faq.html
Unsubscribe: See the above information page

Do not top post on this list.

A: Because it messes up the order in which people normally read text.
Q: Why is top-posting such a bad thing?
A: Top-posting.
Q: What is the most annoying thing in e-mail?

http://en.wikipedia.org/wiki/Posting_style

Reply via email to