summaryrefslogtreecommitdiff
path: root/automated/linux/spectre-meltdown-checker-test/spectre-meltdown-checker-test.sh
diff options
context:
space:
mode:
authorNaresh Kamboju <naresh.kamboju@linaro.org>2018-11-19 16:43:40 +0530
committerNaresh Kamboju <naresh.kamboju@linaro.org>2018-11-26 13:18:44 +0530
commitf0810544e860d8a050cc4edf0e647455529c4c8e (patch)
tree2e77822e1a7a92e4301d8e08b9972bf56dfd1624 /automated/linux/spectre-meltdown-checker-test/spectre-meltdown-checker-test.sh
parent22650ef4070c8e39743ff5294ab4f2f143c7132b (diff)
linux: Adding spectre meltdown checker test suite
Spectre & Meltdown Checker description, A shell script to tell if your system is vulnerable against the several "speculative execution" CVEs that were made public in 2018. CVE-2017-5753 [bounds check bypass] aka 'Spectre Variant 1' CVE-2017-5715 [branch target injection] aka 'Spectre Variant 2' CVE-2017-5754 [rogue data cache load] aka 'Meltdown' aka 'Variant 3' CVE-2018-3640 [rogue system register read] aka 'Variant 3a' CVE-2018-3639 [speculative store bypass] aka 'Variant 4' CVE-2018-3615 [L1 terminal fault] aka 'Foreshadow (SGX)' CVE-2018-3620 [L1 terminal fault] aka 'Foreshadow-NG (OS)' CVE-2018-3646 [L1 terminal fault] aka 'Foreshadow-NG (VMM)' Ref: Add spectre-meltdown-checker to LKFT https://projects.linaro.org/browse/KV-125 Change-Id: I1fdc3120cc575bf37bcea7f2cf0b02c3ad30e38a Signed-off-by: Naresh Kamboju <naresh.kamboju@linaro.org>
Diffstat (limited to 'automated/linux/spectre-meltdown-checker-test/spectre-meltdown-checker-test.sh')
-rwxr-xr-xautomated/linux/spectre-meltdown-checker-test/spectre-meltdown-checker-test.sh69
1 files changed, 69 insertions, 0 deletions
diff --git a/automated/linux/spectre-meltdown-checker-test/spectre-meltdown-checker-test.sh b/automated/linux/spectre-meltdown-checker-test/spectre-meltdown-checker-test.sh
new file mode 100755
index 0000000..b54d591
--- /dev/null
+++ b/automated/linux/spectre-meltdown-checker-test/spectre-meltdown-checker-test.sh
@@ -0,0 +1,69 @@
+#!/bin/sh
+
+# shellcheck disable=SC1091
+. ../../lib/sh-test-lib
+OUTPUT="$(pwd)/output"
+RESULT_FILE="${OUTPUT}/result.txt"
+LOG_FILE="smc_logfile"
+export RESULT_FILE
+SMC_VERSION=v0.40
+SKIP_INSTALL="False"
+WGET_UPSTREAM="False"
+SMC_PATH=/opt/spectre-meltdown-checker
+
+usage() {
+ echo "Usage: $0 [-s <true|false>] [-v <smc_version>] [-w <true|false>]" 1>&2
+ exit 1
+}
+
+while getopts "s:v:w:h" o; do
+ case "$o" in
+ s) SKIP_INSTALL="${OPTARG}" ;;
+ v) SMC_VERSION="${OPTARG}" ;;
+ w) WGET_UPSTREAM="${OPTARG}" ;;
+ h|*) usage ;;
+ esac
+done
+
+smc_install() {
+ mkdir -p "${SMC_PATH}"
+ # shellcheck disable=SC2164
+ cd "${SMC_PATH}"
+ info_msg "Download spectre meltdown checker source code"
+ # shellcheck disable=SC2140
+ wget https://github.com/speed47/spectre-meltdown-checker/archive/"${SMC_VERSION}".tar.gz
+ tar --strip-components=1 -xf "${SMC_VERSION}".tar.gz
+}
+
+# Parse SMC output
+parse_smc_output() {
+ grep "SUMMARY" "$1" \
+ | cut -d' ' -f3-12 \
+ | sed -e's/ /\n/g' \
+ | sed 's/OK/pass/; s/KO/fail/' >> "${RESULT_FILE}"
+}
+
+smc_run() {
+ ./spectre-meltdown-checker.sh | tee "${OUTPUT}/${LOG_FILE}.log"
+ parse_smc_output "${OUTPUT}/${LOG_FILE}.log"
+}
+
+# Create output directory
+create_out_dir "${OUTPUT}"
+
+if [ "${SKIP_INSTALL}" = "True" ] || [ "${SKIP_INSTALL}" = "true" ]; then
+ info_msg "install skipped"
+ # shellcheck disable=SC2164
+ cd "${SMC_PATH}"
+elif [ "${WGET_UPSTREAM}" = "True" ] || [ "${WGET_UPSTREAM}" = "true" ]; then
+ info_msg "install spectre meltdown checker"
+ smc_install
+else
+ # Use the pre-copied spectre-meltdown-checker.sh from
+ # cd test-definitions/automated/linux/spectre-meltdown-checker-test/bin
+ # shellcheck disable=SC2164
+ cd bin
+fi
+
+# Test run
+smc_run