aboutsummaryrefslogtreecommitdiffstats
Commit message (Collapse)AuthorAgeFilesLines
* enh: lazy loading of cpu informationsStéphane Lesimple2018-02-021-18/+9
|
* feat: better cleanup routine on exit & interruptStéphane Lesimple2018-02-021-40/+12
|
* fix: ARM CPU display name & detectionStéphane Lesimple2018-02-021-5/+8
| | | | | | | Fix ARM CPU display name, and properly detect known vulnerable ARM CPUs when multiple different model cores are present (mostly Android phones)
* fix: --no-color workaround for android's sedStéphane Lesimple2018-02-021-2/+5
|
* release: bump to v0.34Stéphane Lesimple2018-01-311-1/+1
|
* enh: display ucode info even when not blacklistedStéphane Lesimple2018-01-311-3/+3
|
* cleanup: shellcheck passStéphane Lesimple2018-01-311-2/+5
|
* cleanup: remove superseded atom detection codeStéphane Lesimple2018-01-311-10/+1
| | | | | | This is now handled properly by checking the CPU vendor, family, model instead of looking for the commercial name of the CPU in /proc/cpuinfo
* feat: detect known speculative-execution free CPUsStéphane Lesimple2018-01-311-1/+40
| | | | | | Based on a kernel patch that has been merged to Linus' tree. Some of the detections we did by grepping the model name will probably no longer be needed.
* refacto: create a dedicated func to read cpuid bitsStéphane Lesimple2018-01-311-84/+63
|
* refacto: move cpu discovery bits to a dedicated functionStéphane Lesimple2018-01-311-35/+94
|
* fix(variant1): smarter lfence checkStéphane Lesimple2018-01-311-6/+8
| | | | | | Instead of just counting the number of LFENCE instructions, now we're only counting the those that directly follow a jump instruction.
* fix: regression introduced by previous commitStéphane Lesimple2018-01-311-0/+1
| | | | | | 449: ./spectre-meltdown-checker.sh: 3: parameter not set This happened only on blacklisted microcodes, fixed by adding set +u before the return
* update blacklisted ucode list from kernel sourceStéphane Lesimple2018-01-311-24/+28
|
* doc(disclaimer): Spectre affects all softwareStéphane Lesimple2018-01-302-4/+11
| | | | | | Add a paragraph in the disclaimer stating that this tool focuses on the kernel side of things, and that for Spectre, any software might be vulnerable.
* feat(variant1): detect vanilla mitigationStéphane Lesimple2018-01-301-26/+76
| | | | | | | | | | | Implement detection of mitigation for Variant 1 that is being pushed on vanilla kernel. Current name of the patch: "spectre variant1 mitigations for tip/x86/pti" (v6) Also detect some distros that already backported this patch without modifying the vulnerabilities sysfs hierarchy. This detection is more reliable than the LFENCE one, trust it and skip the LFENCE heuristic if a match is found.
* fix(cpu): Pentium Exxxx are vulnerable to MeltdownStéphane Lesimple2018-01-291-7/+9
|
* adjust: show how to enable IBRS/IBPB in -v onlyStéphane Lesimple2018-01-291-4/+19
|
* refacto: fix shellcheck warnings for better compatStéphane Lesimple2018-01-291-96/+140
| | | | | | Now `shellcheck -s sh` no longer shows any warnings. This should improve compatibility with exotic shells as long as they're POSIX compliant.
* Fix printing of microcode to use cpuinfo valuesJoseph Mulloy2018-01-261-3/+3
| | | | | | | | The values used should be the ones that come from cpuinfo instead of the test values. The following line will print the last tuple tested instead of the actual values of the CPU. Line 689: _debug "is_ucode_blacklisted: no ($model/$stepping/$ucode)"
* update: new screenshots for README.mdStéphane Lesimple2018-01-261-1/+11
|
* fix: report arch_capabilities as NO when no MSRStéphane Lesimple2018-01-261-2/+4
| | | | | | When the arch_capabilities MSR is not there, it means that all the features it might advertise can be considered as NO instead of UNKNOWN
* release: v0.33Stéphane Lesimple2018-01-261-1/+1
|
* feat: add blacklisted Intel ucode detectionStéphane Lesimple2018-01-261-0/+78
| | | | | | | Some Intel microcodes are known to cause instabilities such as random reboots. Intel advises to revert to a previous version if a newer one that fixes those issues is not available. Detect such known bad microcodes.
* fix: fallback to UNKNOWN when we get -EACCESStéphane Lesimple2018-01-261-8/+17
| | | | | For detection of IBRS_ALL and RDCL_NO, fallback to UNKNOWN when we were unable to read the CPUID or MSR.
* xen: detect if the host is a Xen Dom0 or PV DomU (fixes #83)Matthieu Cerda2018-01-251-22/+49
|
* fix(batch): fix regression introduced by acf12a6Stéphane Lesimple2018-01-241-14/+10
| | | | | | | In batch mode, $echo_cmd was not initialized early enough, and caused this error: ./spectre-meltdown-checker.sh: 899: ./spectre-meltdown-checker.sh: -ne: not found Fix it by initing echo_cmd unconditionally at the start
* feat(cpu) add STIBP, RDCL_NO, IBRS_ALL checksStéphane Lesimple2018-01-241-149/+235
| | | | | | | | | | Move all the CPU checks to their own section, for clarity. We now check for IBRS, IBPB, STIBP, RDCL_NO and IBRS_ALL. We also show whether the system CPU is vulnerable to the three variants, regardless of the fact that mitigations are in place or not, which is determined in each vuln- specific section.
* feat(stibp): add STIBP cpuid feature checkStéphane Lesimple2018-01-241-0/+38
|
* fix(cpuid): fix off-by-one SPEC_CTRL bit checkStéphane Lesimple2018-01-241-2/+2
|
* fix: don't make IBPB mandatory when it's not thereStéphane Lesimple2018-01-241-0/+4
| | | | | | On some kernels there could be IBRS support but not IBPB support, in that case, don't report VULN just because IBPB is not enabled when IBRS is
* fix(cosmetic): tiny msg fixesStéphane Lesimple2018-01-241-4/+5
|
* fix(cpu): trust is_cpu_vulnerable even w/ debugfsStéphane Lesimple2018-01-241-9/+6
| | | | | | For variant3 under AMD, the debugfs vulnerabilities hierarchy flags the system as Vulnerable, which is wrong. Trust our own is_cpu_vulnerable() func in that case
* fix(variant3): do our checks even if sysfs is hereStéphane Lesimple2018-01-241-1/+2
|
* fix(retpoline): retpoline-compiler detectionStéphane Lesimple2018-01-241-5/+5
| | | | | | | | | When kernel is not compiled with retpoline option, doesn't have the sysfs vulnerability hierarchy and our heuristic to detect a retpoline-aware compiler didn't match, change result for retpoline-aware compiler detection from UNKNOWN to NO. When CONFIG_RETPOLINE is not set, a retpoline-aware compiler won't produce different asm than a standard one anyway.
* feat(retpoline): check if retpoline is enabledStéphane Lesimple2018-01-241-0/+14
| | | | | | Before we would just check if retpoline was compiled in, now we also check that it's enabled at runtime (only in live mode)
* feat(sysfs): print details even with sysfsStéphane Lesimple2018-01-241-18/+53
| | | | | | | | | | Before, when the /sys kernel vulnerability interface was available, we would bypass all our tests and just print the output of the vulnerability interface. Now, we still rely on it when available, but we run our checks anyway, except for variant 1 where the current method of mitigation detection doesn't add much value to the bare /sys check
* feat(ibpb): now also check for IBPB on variant 2Stéphane Lesimple2018-01-241-41/+124
| | | | | | | | | | In addition to IBRS (and microcode support), IBPB must be used to mitigate variant 2, if retpoline support is not available. The vulnerability status of a system will be defined as "non vulnerable" if IBRS and IBPB are both enabled, or if IBPB is enabled with a value of 2 for RedHat kernels, see https://access.redhat.com/articles/3311301
* fix(offline): report unknown when too few infoStéphane Lesimple2018-01-231-3/+15
| | | | | | | | In offline mode, in the worst case where an invalid config file is given, and we have no vmlinux image nor System.map, the script was reporting Variant 2 and Variant 3 as vulnerable in the global status. Replace this by a proper pair of UNKNOWNs
* feat: detect invalid kconfig filesStéphane Lesimple2018-01-231-3/+11
|
* fix(dmesg): detect when dmesg is truncatedStéphane Lesimple2018-01-211-20/+34
| | | | | | | | | | | To avoid false negatives when looking for a message in dmesg, we were previously also grepping in known on-disk archives of dmesg (dmesg.log, kern.log). This in turn caused false positives because we have no guarantee that we're grepping the dmesg of the current running kernel. Hence we now only look in the live `dmesg`, detect if it has been truncated, and report it to the user.
* fix(cpu): Pentium Exxxx series are not vulnerableStéphane Lesimple2018-01-211-1/+6
| | | | | | Pentium E series are not in the vulnerable list from Intel, and Spectre2 PoC reportedly doesn't work on an E5200
* fix(display): use text-mode compatible colorsStéphane Lesimple2018-01-211-4/+4
| | | | | | | in text-mode 80-cols TERM=linux terminals, colors were not displaying properly, one had to use --no-color to be able to read some parts of the text.
* bump to v0.32Stéphane Lesimple2018-01-201-1/+1
|
* revert to a simpler check_vmlinux()Stéphane Lesimple2018-01-201-11/+1
|
* cache is_cpu_vulnerable result for performanceStéphane Lesimple2018-01-201-6/+18
|
* is_cpu_vulnerable: implement check for multi-arm systemsStéphane Lesimple2018-01-201-33/+64
|
* check_vmlinux: when readelf doesn't work, try harder with another wayStéphane Lesimple2018-01-201-2/+12
|
* be smarter to find a usable echo commandStéphane Lesimple2018-01-201-3/+17
|
* add pine64 vmlinuz locationStéphane Lesimple2018-01-201-0/+7
|