Initial Commit
This commit is contained in:
commit
e26c12fb8f
21
LICENSE
Normal file
21
LICENSE
Normal file
@ -0,0 +1,21 @@
|
|||||||
|
MIT License
|
||||||
|
|
||||||
|
Copyright (c) 2024 KalpaDesktop
|
||||||
|
|
||||||
|
Permission is hereby granted, free of charge, to any person obtaining a copy
|
||||||
|
of this software and associated documentation files (the "Software"), to deal
|
||||||
|
in the Software without restriction, including without limitation the rights
|
||||||
|
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
||||||
|
copies of the Software, and to permit persons to whom the Software is
|
||||||
|
furnished to do so, subject to the following conditions:
|
||||||
|
|
||||||
|
The above copyright notice and this permission notice shall be included in all
|
||||||
|
copies or substantial portions of the Software.
|
||||||
|
|
||||||
|
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
||||||
|
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
||||||
|
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
||||||
|
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
||||||
|
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
||||||
|
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
|
||||||
|
SOFTWARE.
|
8
README.md
Normal file
8
README.md
Normal file
@ -0,0 +1,8 @@
|
|||||||
|
# kalpa-check
|
||||||
|
|
||||||
|
Initial design thoughts https://en.opensuse.org/Portal:Aeon/DevelopmentThoughts#aeon-check. This should be considered this project's long term goal.
|
||||||
|
|
||||||
|
Short term goal - Local checks only directly executing fixes for resolving specific bugs in Aeon RC3 and later
|
||||||
|
|
||||||
|
## Bugs Addressed
|
||||||
|
- Check existing Aeon Default Mode installations and confirm the TPM enrolment is using pcrlock not PCR hashes after incase enrolment steps occurred in an imperfect order (boo#1228416)
|
47
kalpa-check
Executable file
47
kalpa-check
Executable file
@ -0,0 +1,47 @@
|
|||||||
|
#!/bin/bash
|
||||||
|
# SPDX-License-Identifier: MIT
|
||||||
|
# SPDX-FileCopyrightText: Copyright 2024 SUSE LLC
|
||||||
|
# SPDX-FileCopyrightText: Copyright 2024 Richard Brown
|
||||||
|
# SPDX-FileCopyrightText: Copyright 2024 Shawn W Dunn
|
||||||
|
|
||||||
|
set -euo pipefail
|
||||||
|
|
||||||
|
# Setup logging
|
||||||
|
exec 3>&1 4>&2
|
||||||
|
trap 'exec 2>&4 1>&3' 0 1 2 3
|
||||||
|
exec 1>>/var/log/kalpa-check.log 2>&1
|
||||||
|
|
||||||
|
boo1228416() {
|
||||||
|
# Determine root device
|
||||||
|
rootdev=/dev/$(dmsetup deps -o devname /dev/mapper/kalpa_root | cut -d '(' -f2 | cut -d ')' -f1)
|
||||||
|
# Check for failure conditions
|
||||||
|
tpm2hashpcrs=$(cryptsetup luksDump ${rootdev} | grep 'tpm2-hash-pcrs:' | tr -d ' \t' | cut -d ':' -f2)
|
||||||
|
tpm2pcrlock=$(cryptsetup luksDump ${rootdev} | grep 'tpm2-pcrlock:' | tr -d ' \t' | cut -d ':' -f2)
|
||||||
|
# For boo1228416 to be an issue hashpcrs must be 7 and pcrlock must be false. Be paranoid, only match on both
|
||||||
|
if [ "${tpm2hashpcrs}" == "7" ] && [ "${tpm2pcrlock}" == "false" ]; then
|
||||||
|
echo "boo1228416 detected - TPM2 using pcr hashes not pcrlock - correcting"
|
||||||
|
|
||||||
|
# Need a keyfile to avoid requesting the recovery key when re-enrolling
|
||||||
|
keyfile=/tmp/aeon-check-keyfile
|
||||||
|
dd bs=512 count=4 if=/dev/urandom of=${keyfile} iflag=fullblock
|
||||||
|
chmod 400 ${keyfile}
|
||||||
|
|
||||||
|
# Should be slot 2, but better to check and be sure
|
||||||
|
tpm2slot=$(systemd-cryptenroll ${rootdev} | grep tpm2 | xargs | cut -d ' ' -f1)
|
||||||
|
|
||||||
|
# Writing keyfile to slot 31 (end of the LUKS2 space) to avoid clashes with any customisation/extra keys
|
||||||
|
cryptsetup luksAddKey --token-only --batch-mode --new-key-slot=31 ${rootdev} ${keyfile}
|
||||||
|
|
||||||
|
# Drop existing enrollment and re enroll
|
||||||
|
systemd-cryptenroll --wipe-slot=${tpm2slot} ${rootdev}
|
||||||
|
systemd-cryptenroll --unlock-key-file=${keyfile} --tpm2-device=auto ${rootdev}
|
||||||
|
|
||||||
|
# Wipe out keyfile and keyfile keyslot
|
||||||
|
systemd-cryptenroll --wipe-slot=31 ${rootdev}
|
||||||
|
rm ${keyfile}
|
||||||
|
|
||||||
|
echo "boo1228416 corrected"
|
||||||
|
fi
|
||||||
|
}
|
||||||
|
|
||||||
|
boo1228416
|
9
kalpa-check.service
Normal file
9
kalpa-check.service
Normal file
@ -0,0 +1,9 @@
|
|||||||
|
[Unit]
|
||||||
|
Description=Kalpa Check Tool
|
||||||
|
|
||||||
|
[Service]
|
||||||
|
Type=oneshot
|
||||||
|
ExecStart=/usr/sbin/kalpa-check
|
||||||
|
|
||||||
|
[Install]
|
||||||
|
WantedBy=default.target
|
Loading…
x
Reference in New Issue
Block a user