48 Commits
v0.15 ... v0.22

Author SHA1 Message Date
74bc7ba637 add --variant to specify what check we want to run 2018-01-10 15:22:30 +01:00
5389ac6844 Merge pull request #41 from bang-communications/master
NRPE mode
2018-01-10 15:11:45 +01:00
36fb83215a Merge pull request #42 from simon-vasseur/style
added some style (screenshot in readme)
2018-01-10 15:07:34 +01:00
59fe8c2ad8 Error on unknown batch format 2018-01-10 13:57:10 +00:00
b8d28e7f61 added some style 2018-01-10 14:55:58 +01:00
7c11d07865 Stray tab 2018-01-10 11:59:33 +00:00
7c5cfbb8c3 batch nrpe 2018-01-10 11:57:45 +00:00
381038eceb NRPE mode 2018-01-10 11:18:45 +00:00
d6e4aa43f0 Merge pull request #37 from deufrai/better-dmesg-support
Improve PTI detection
2018-01-09 19:52:45 +01:00
e5e09384f0 typofix 2018-01-09 18:54:35 +01:00
7222367f04 add disclaimer and bump to 0.21 2018-01-09 18:52:21 +01:00
ab512687cf Merge pull request #38 from Alkorin/fixARM
Fix ARM checks
2018-01-09 18:47:25 +01:00
a5aaa790a0 Merge pull request #39 from Alkorin/typo
Fix small typo in error message
2018-01-09 18:45:58 +01:00
335439dee0 Fix small typo in error message 2018-01-09 18:44:15 +01:00
45297b6f7d Fix ARM checks 2018-01-09 18:41:48 +01:00
a7b14306d5 Improve PTI detection even more
when PTI detection relies on dmesg, dmesg output is checked first
then /var/log/dmesg if dmesg output lacks boot time messages
2018-01-09 18:26:32 +01:00
608952ff71 Improve PTI detection
In case of a busy or misconfigured server, kernel message buffer loop
can be filled with messages broadcasted later than boot time. So dmesg
command wont return boot time messages.

Grepping /var/log/dmesg fixes it and this log file location semms pretty
standard across many common distros
2018-01-09 18:17:39 +01:00
1c3d349667 Merge pull request #31 from Feandil/batch
Add a "batch" and "verbose" mode
2018-01-09 18:12:39 +01:00
b93b13263d fix(pti): remove escapes since we use grep -E now 2018-01-09 16:01:44 +01:00
ad342cab06 Introduce "verbose" and "batch" modes
Rewrite the way the output is processed:
- Define verbosity level (currently warn, info (default) & verbose)
- Add a batch mode, for simple machine parsing
2018-01-09 15:58:13 +01:00
5fd85e288b No-color: interpret string (-e) to be able to mach \x1B 2018-01-09 15:57:10 +01:00
322f4efc8f fix broken logic of 68961f9, increment version to 0.20 2018-01-09 14:55:12 +01:00
b6bfcdbd45 Move configuration at the beginning of the script 2018-01-09 14:18:02 +01:00
19b01078c2 Merge pull request #32 from speed47/arm
adding known non-vulnerable ARM chips
2018-01-09 13:57:27 +01:00
68961f98c2 adding known non-vulnerable ARM chips 2018-01-09 13:11:48 +01:00
f0f2ea9b11 v0.19: introduce --no-color 2018-01-09 10:32:51 +01:00
6f1bdba1d9 bump to v0.18 to reflect changes 2018-01-09 09:21:42 +01:00
7b05105a54 Merge pull request #25 from Feandil/proc_config
When using /proc/config.gz, indicate it more clearly
2018-01-09 09:19:36 +01:00
8aed2d4086 Merge pull request #26 from Feandil/proc_kallsym
Use /proc/kallsyms to get symbols, if available
2018-01-09 09:17:18 +01:00
f4140a992a Use /proc/kallsyms to get symbols, if available 2018-01-09 08:58:09 +01:00
2c51b00a90 When using /proc/config.gz, indicate it more clearly 2018-01-09 08:54:07 +01:00
2d94514c07 adding mention of heuristic for variant 1 check 2018-01-09 08:43:52 +01:00
0e8f97afbc Merge pull request #24 from angus-p/Remove-extra-space
remove superfluous space from test line 315
2018-01-09 08:34:10 +01:00
70323a30da Merge pull request #23 from mradcliffe/issue-22
Increases tmp directory uniqueness to 6 characters to support Slackware
2018-01-09 08:33:32 +01:00
cc0b325383 remove superfluous space from test line 315
Extra space was causing non-existent variable to be tested resulting in 'YES' if running in live mode and IBRS compiled in
2018-01-09 03:47:25 +00:00
4454f03136 Increases tmp directory uniqueness to 6 characters to support Slackware 2018-01-08 22:28:55 -05:00
949f316f89 missed version bump + README typofix 2018-01-08 23:15:42 +01:00
5082afae61 Merge pull request #19 from speed47/offline_mode
implement offline mode and help
2018-01-08 23:13:19 +01:00
d73a24cb5b implement offline mode and help 2018-01-08 23:09:17 +01:00
75332e6e0f Merge pull request #18 from GrimKriegor/linux-libre_support
Linux-libre support
2018-01-08 23:07:41 +01:00
2d33a4369e Linux-libre support 2018-01-08 21:56:11 +00:00
8d4d295309 bump to v0.16 to reflect changes 2018-01-08 17:48:20 +01:00
1ff437edbb Merge pull request #16 from Alkorin/fixes
Fixes
2018-01-08 17:45:59 +01:00
8c8a8d35fd Detect if 'readelf' is present 2018-01-08 16:52:09 +01:00
debd10b517 Detect if 'strings' is present 2018-01-08 16:51:20 +01:00
21f81ff5c9 Detect if uncompress binaries are present 2018-01-08 16:51:14 +01:00
1a14483c98 Use 'readelf' instead of 'file' to detect kernel 2018-01-08 15:56:19 +01:00
26564206db Do not execute checks if we already found that PTI is enabled 2018-01-08 15:56:19 +01:00
2 changed files with 756 additions and 305 deletions

View File

@ -1,51 +1,34 @@
Spectre & Meltdown Checker Spectre & Meltdown Checker
========================== ==========================
A simple shell script to tell if your Linux installation is vulnerable A simple shell script to tell if your Linux installation is vulnerable against the 3 "speculative execution" CVEs.
against the 3 "speculative execution" CVEs:
CVE-2017-5753 bounds check bypass (Spectre Variant 1) Without options, it'll inspect you currently running kernel.
You can also specify a kernel image on the command line, if you'd like to inspect a kernel you're not running.
The script will do its best to detect mitigations, including backported non-vanilla patches, regardless of the advertised kernel version number.
## Example of script output
![checker](https://framapic.org/FjroIZximyoM/EO5msoSMKb6L.png)
## Quick summary of the CVEs
**CVE-2017-5753** bounds check bypass (Spectre Variant 1)
- Impact: Kernel & all software - Impact: Kernel & all software
- Mitigation: recompile software *and* kernel with a modified compiler that introduces the LFENCE opcode at the proper positions in the resulting code - Mitigation: recompile software *and* kernel with a modified compiler that introduces the LFENCE opcode at the proper positions in the resulting code
- Performance impact of the mitigation: negligible - Performance impact of the mitigation: negligible
CVE-2017-5715: branch target injection (Spectre Variant 2) **CVE-2017-5715** branch target injection (Spectre Variant 2)
- Impact: Kernel - Impact: Kernel
- Mitigation 1: new opcode via microcode update that should be used by up to date compilers to protect the BTB (by flushing indirect branch predictors) - Mitigation 1: new opcode via microcode update that should be used by up to date compilers to protect the BTB (by flushing indirect branch predictors)
- Mitigation 2: introducing "retpoline" into compilers, and recompile software/OS with it - Mitigation 2: introducing "retpoline" into compilers, and recompile software/OS with it
- Performance impact of the mitigation: high for mitigation 1, medium for mitigation 2, depending on your CPU - Performance impact of the mitigation: high for mitigation 1, medium for mitigation 2, depending on your CPU
CVE-2017-5754: rogue data cache load (Meltdown) **CVE-2017-5754** rogue data cache load (Meltdown)
- Impact: Kernel - Impact: Kernel
- Mitigation: updated kernel (with PTI/KPTI patches), updating the kernel is enough - Mitigation: updated kernel (with PTI/KPTI patches), updating the kernel is enough
- Performance impact of the mitigation: low to medium - Performance impact of the mitigation: low to medium
Example of the output of the script:
```
$ sudo ./spectre-meltdown-checker.sh
Spectre and Meltdown mitigation detection tool v0.07
CVE-2017-5753 [bounds check bypass] aka 'Spectre Variant 1'
* Kernel compiled with LFENCE opcode inserted at the proper places: NO (only 38 opcodes found, should be >= 60)
> STATUS: VULNERABLE
CVE-2017-5715 [branch target injection] aka 'Spectre Variant 2'
* Mitigation 1
* Hardware (CPU microcode) support for mitigation: NO
* Kernel support for IBRS: NO
* IBRS enabled for Kernel space: NO
* IBRS enabled for User space: NO
* Mitigation 2
* Kernel compiled with retpolines: NO
> STATUS: VULNERABLE (IBRS hardware + kernel support OR kernel with retpolines are needed to mitigate the vulnerability)
CVE-2017-5754 [rogue data cache load] aka 'Meltdown' aka 'Variant 3'
* Kernel supports Page Table Isolation (PTI): YES
* PTI enabled and active: YES
> STATUS: NOT VULNERABLE (PTI mitigates the vulnerability)
```

File diff suppressed because it is too large Load Diff