Skip to content
This repository was archived by the owner on Apr 11, 2026. It is now read-only.

Commit a2a26d1

Browse files
committed
Merge remote-tracking branch 'upstream/live' into live
2 parents 3c5e847 + 0c9b633 commit a2a26d1

35 files changed

Lines changed: 175 additions & 40 deletions

‎.github/workflows/build.yml‎

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -90,13 +90,14 @@ jobs:
9090
echo "${KERNEL_PRIVKEY}" > ./files/scripts/certs/private_key.priv
9191
9292
- name: Build secureblue
93-
uses: blue-build/github-action@ad830f3f1bd888c5e0b730c18a23388ffcb69022 # v1.8.2
93+
uses: blue-build/github-action@968216e45d3f5f23de24f7804259e1384cf5f358 # v1.8.3
9494
with:
95-
cli_version: v0.9.17
95+
cli_version: v0.9.19
9696
recipe: ${{ matrix.recipe }}
9797
cosign_private_key: ${{ secrets.SIGNING_SECRET }}
9898
registry_token: ${{ github.token }}
9999
pr_event_number: ${{ github.event.number }}
100100
maximize_build_space: true
101101
squash: true
102102
skip_checkout: true
103+
use_cache: false

‎.github/workflows/linkspector.yml‎

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -29,7 +29,7 @@ jobs:
2929
persist-credentials: false
3030

3131
- name: Run linkspector
32-
uses: umbrelladocs/action-linkspector@e2ccef58c4b9eb89cd71ee23a8629744bba75aa6 # v1.3.5
32+
uses: umbrelladocs/action-linkspector@3a951c1f0dca72300c2320d0eb39c2bafe429ab1 # v1.3.6
3333
with:
3434
filter_mode: nofilter
3535
reporter: github-pr-review

‎.github/workflows/pull_request.yml‎

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -85,7 +85,7 @@ jobs:
8585
run: |
8686
docker create \
8787
--name blue-build-installer \
88-
ghcr.io/blue-build/cli:v0.9.10-installer
88+
ghcr.io/blue-build/cli:v0.9.19-installer
8989
docker cp blue-build-installer:/out/bluebuild /usr/local/bin/bluebuild
9090
docker rm blue-build-installer
9191
bluebuild --version

‎.github/workflows/trivy.yml‎

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -37,7 +37,7 @@ jobs:
3737
persist-credentials: false
3838

3939
- name: Run Trivy vulnerability scanner
40-
uses: aquasecurity/trivy-action@76071ef0d7ec797419534a183b498b4d6366cf37 # v0.31.0
40+
uses: aquasecurity/trivy-action@dc5a429b52fcf669ce959baa2c2dd26090d2a6c4 # v0.32.0
4141
with:
4242
image-ref: 'ghcr.io/secureblue/silverblue-main-hardened:latest'
4343
format: template
@@ -51,7 +51,7 @@ jobs:
5151
TRIVY_JAVA_DB_REPOSITORY: ghcr.io/aquasecurity/trivy-java-db,public.ecr.aws/aquasecurity/trivy-java-db
5252

5353
- name: Upload Trivy scan results to GitHub Security tab
54-
uses: github/codeql-action/upload-sarif@39edc492dbe16b1465b0cafca41432d857bdb31a # v3.29.1
54+
uses: github/codeql-action/upload-sarif@181d5eefc20863364f96762470ba6f862bdef56b # v3.29.2
5555
with:
5656
sarif_file: trivy-results.sarif
5757

Lines changed: 58 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,58 @@
1+
# Copyright 2025 The Secureblue Authors
2+
#
3+
# Licensed under the Apache License, Version 2.0 (the "License");
4+
# you may not use this file except in compliance with the License.
5+
# You may obtain a copy of the License at
6+
#
7+
# http://www.apache.org/licenses/LICENSE-2.0
8+
#
9+
# Unless required by applicable law or agreed to in writing, software distributed under the License is
10+
# distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
11+
# See the License for the specific language governing permissions and limitations under the License.
12+
13+
name: validate-exec-bit
14+
permissions: {}
15+
on:
16+
pull_request:
17+
branches:
18+
- live
19+
- staging
20+
jobs:
21+
validate-exec-bit:
22+
name: Validate exec bit
23+
runs-on: ubuntu-24.04
24+
permissions:
25+
contents: read
26+
steps:
27+
- uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # v4.2.2
28+
with:
29+
persist-credentials: false
30+
31+
- name: Validate exec bit
32+
shell: bash
33+
run: |
34+
executable_paths=(
35+
"files/system/usr/libexec/*.sh"
36+
"files/system/usr/libexec/secureblue/*"
37+
"files/system/usr/bin/*"
38+
"files/system/kinoite/usr/libexec/secureblue/*"
39+
)
40+
41+
files_missing_exec=()
42+
43+
for executable_path in "${executable_paths[@]}"; do
44+
for file in $executable_path; do
45+
if [ -f "$file" ] && [ ! -x "$file" ]; then
46+
files_missing_exec+=("$file")
47+
fi
48+
done
49+
done
50+
51+
if [ ${#files_missing_exec[@]} -ne 0 ]; then
52+
for file in "${files_missing_exec[@]}"; do
53+
echo "File missing exec bit: $file"
54+
done
55+
exit 1
56+
else
57+
exit 0
58+
fi

‎docs/README.md‎

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
<p align="center">
2-
<a href="https://github.com/secureblue/secureblue">
2+
<a href="https://secureblue.dev">
33
<img src="https://github.com/secureblue/secureblue/blob/live/docs/secureblue.png" href="https://github.com/secureblue/secureblue" alt="secureblue logo" width=180 />
44
</a>
55
</p>

‎docs/example.butane‎

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
variant: fcos
2-
version: 1.5.0
2+
version: 1.6.0
33
passwd:
44
users:
55
- name: core

‎files/justfiles/hardening.just‎

Lines changed: 8 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -95,10 +95,11 @@ flatpak-permissions-lockdown:
9595
kKnownSessionBusNames=("org.xfce.ScreenSaver" "org.mate.ScreenSaver" "org.cinnamon.ScreenSaver" "org.gnome.ScreenSaver" "org.kde.kwalletd6" "org.gnome.Mutter.IdleMonitor.*" "org.gnome.ControlCenter" "org.gnome.Settings" "org.gnome.SettingsDaemon.MediaKeys" "org.gnome.SessionManager" "org.gnome.Shell.Screenshot" "org.kde.kiod5" "org.kde.kwin.Screenshot" "org.kde.JobViewServer" "org.gtk.vfs.*" "org.freedesktop.secrets" "org.kde.kconfig.notify" "org.kde.kpasswdserver" "org.kde.*" "org.kde.StatusNotifierWatcher" "org.kde.kded6" "org.kde.kpasswdserver6" "org.kde.kiod6" "com.canonical.Unity" "org.freedesktop.Notifications" "org.freedesktop.FileManager1" "org.freedesktop.impl.portal.PermissionStore" "org.freedesktop.Flatpak" "com.canonical.AppMenu.Registrar" "org.kde.KGlobalSettings" "org.kde.kded5" "com.canonical.Unity.LauncherEntry" "org.kde.kwalletd5" "org.gnome.SettingsDaemon" "org.a11y.Bus" "com.canonical.indicator.application" "org.freedesktop.ScreenSaver" "ca.desrt.dconf" "org.freedesktop.PowerManagement" "org.gnome.Software" "org.freedesktop.Tracker3.Writeback" "io.missioncenter.MissionCenter.Gatherer")
9696
kKnownSystemBusNames=("org.bluez" "org.freedesktop.home1" "org.freedesktop.hostname1" "org.freedesktop.import1" "org.freedesktop.locale1" "org.freedesktop.LogControl1" "org.freedesktop.machine1" "org.freedesktop.network1" "org.freedesktop.oom1" "org.freedesktop.portable1" "org.freedesktop.resolve1" "org.freedesktop.sysupdate1" "org.freedesktop.timesync1" "org.freedesktop.timedate1" "org.freedesktop.systemd1" "org.freedesktop.Avahi" "org.freedesktop.Avahi.*" "org.freedesktop.login1" "org.freedesktop.NetworkManager" "org.freedesktop.UPower" "org.freedesktop.UDisks2" "org.freedesktop.fwupd")
9797
kFlatsealNameAccess=("org.gnome.Software" "org.freedesktop.impl.portal.PermissionStore")
98+
kWarehouseNameAccess=("org.freedesktop.Flatpak")
9899
confirmation=""
99100

100101
echo "This will configure flatpak to automatically reject most permissions (with the exception of the Wayland socket and the Dri device, since these are commonly used and ensure at the very least most apps will work without crashing)."
101-
echo "This will also grant Flatseal access to certain permissions to allow it to operate and make reconfiguring much easier."
102+
echo "This will also grant Flatseal and Warehouse access to certain permissions to allow them to operate and make reconfiguring much easier."
102103
echo "NOTE: This will break just about all Flatpaks by default, it is ON YOU to configure them to work with this configuration."
103104
echo "NOTE 2: This DOES NOT enable hardened_malloc, use the harden-flatpak ujust command."
104105
echo ""
@@ -171,6 +172,12 @@ flatpak-permissions-lockdown:
171172
$kCommand --talk-name="$i" com.github.tchx84.Flatseal
172173
done
173174
echo ""
175+
echo "-- Granting Warehouse Access to Bus Names --"
176+
for i in "${kWarehouseNameAccess[@]}"; do
177+
echo " Granting $i..."
178+
$kCommand --talk-name="$i" io.github.flattool.Warehouse
179+
done
180+
echo ""
174181
echo "Done"
175182
fi
176183

‎files/justfiles/kargs.just‎

Lines changed: 7 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -63,7 +63,10 @@ set-kargs-hardening:
6363
--append-if-missing=l1d_flush=on \
6464
--append-if-missing=l1tf=full,force \
6565
--append-if-missing=kvm-intel.vmentry_l1d_flush=always \
66-
--append-if-missing=loglevel=0
66+
--append-if-missing=loglevel=0 \
67+
--append-if-missing=rd.shell=0 \
68+
--append-if-missing=rd.emergency=halt
69+
6770
echo "Hardening kargs applied."
6871

6972
# Remove all hardening boot parameters (requires reboot)
@@ -98,7 +101,9 @@ remove-kargs-hardening:
98101
--delete-if-present="kvm-intel.vmentry_l1d_flush=always" \
99102
--delete-if-present="nosmt=force" \
100103
--delete-if-present="oops=panic" \
101-
--delete-if-present="loglevel=0"
104+
--delete-if-present="loglevel=0" \
105+
--delete-if-present="rd.shell=0" \
106+
--delete-if-present="rd.emergency=halt"
102107
echo "Hardening kargs removed."
103108

104109
# Set nvidia kargs

‎files/justfiles/toggles.just‎

Lines changed: 14 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -17,20 +17,27 @@ toggle-cups:
1717
firewall-cmd --permanent --remove-port=631/tcp
1818
firewall-cmd --permanent --remove-port=631/udp
1919
firewall-cmd --reload
20-
systemctl mask cups
21-
systemctl disable cups
22-
systemctl stop cups
20+
systemctl disable --now cups.socket
21+
systemctl mask cups.socket
22+
systemctl disable --now cups.service
23+
systemctl mask cups.service
24+
systemctl mask --now avahi-daemon.socket
25+
systemctl mask --now avahi-daemon.service
2326
systemctl daemon-reload
24-
echo "CUPS disabled."
27+
echo "CUPS & avahi-daemon disabled"
2528
else
2629
firewall-cmd --permanent --add-port=631/tcp
2730
firewall-cmd --permanent --add-port=631/udp
2831
firewall-cmd --reload
29-
systemctl unmask cups
30-
systemctl enable cups
31-
systemctl start cups
32+
systemctl unmask cups.socket
33+
systemctl unmask cups.service
34+
systemctl enable --now cups.socket
35+
systemctl enable --now cups.service
36+
systemctl unmask avahi-daemon.service
37+
systemctl unmask avahi-daemon.socket
3238
systemctl daemon-reload
3339
echo "CUPS enabled."
40+
echo "avahi-daemon is unmasked & will be started as needed on an on-demand basis."
3441
echo "Note: cups-browsed, the printer discovery service, is still disabled for"
3542
echo " security reasons. New network printers will need to be added manually."
3643
echo " If you absolutely need network discovery, you can enable the cups-browsed"

0 commit comments

Comments
 (0)