Debian Archiv Signaturprüfung
Debian hat schon seit Ewigkeiten von der Prüfung von Paketsignaturen auf die Validierung von ganzen Archiven umgestellt. Das ist zum einen performanter weil nur die Signatur beim Update der Repodaten geprüft werden muss, und zum anderen prüft das die Zusammenstellung aller Versionen von Paketen im Gegensatz zur Gültigkeit einzelner Pakete, was ja für „Downgrade Angriffe“ verwundbar ist.
Es funktioniert so, dass APT eine InRelease Datei aus dem Repository holt, und diese Datei ist mit dem Archivschlüssel PGP signiert. Nach der Prüfung der Signatur gegen bekannte Debian Schlüssel wird dann anhand der darin enthaltenen Prüfsumme das Paketfile heruntergeladen (und die Püfsumme stellt sicher, dass es das erwartete File ist). Dieses wiederum enthält eine Liste aller Pakete mit deren Prüfsummen. Wird über diesen Weg ein Paket geladen, dann ist es implizit von der Archivsignatur abgedeckt,
In einem Docker Image von Debian werden die bekannten Debian Archivschlüssel ausgeliefert und als trusted konfiguriert. Ich wollte jetzt die Schlüssel der älteren Distributionen entfernen und habe das Verzeichnis
Ein schneller Test mit „apt update“ hat mich dann aber ernüchtert: die Release files des Repositories für bookworm, bookworm-updates und bookworm-security wurden anstandslos refreshed. Mit etwas rumsuchen hab ich dann im Image ein zweites Verzeichnis von keyrings gefunden, und tatsächlich wenn man diese entfernt schlägt der update fehl.
Es war dann aber eine kleine Abenteurreise in die Untiefen von APT config (und apt-key und apt-secure(8) die alle teilweise veraltet sind) bis ich dann feststellte es liegt an der ausgelieferten /etc/apt/sources.d/debian.sources, da dort nicht nur die Paketquellen für die 3 Komponenten konfiguriert sind, sondern auch der keyring der zur Signaturprüfung verwendet werden soll. Und der zeigt auf /usr/share/keyrings/debian-archive-keyrings.gpg, was wiederum eine Sammlung aller (auch alten) Archiv keys ist.
Man kann jetzt entweder die „Signed-By“ Zeilen entfernen und das trusted-pgp.d aufräumen, oder man spezifiziert nicht den sammel-keyring, sondern einen der nur für die aktuelle Distribution gilt (wird aber nicht ausgeliefert). Noch kleinlicher ist es dann den genauen keying pro Komponente. Die beiden Suites bookworm-updates und bookworm-security können aber nicht mit einem gemeinsamen key geprüft werden, müssen also in 2 Sektionen im File aufgeteilt werden. Das sieht dann so aus:
Types: deb URIs: http://deb.debian.org/debian Suites: stable Components: main Signed-By: /usr/share/keyrings/debian-archive-bookworm-stable.gpg Types: deb URIs: http://deb.debian.org/debian Suites: stable-updates Components: main Signed-By: /usr/share/keyrings/debian-archive-bookworm-automatic.gpg Types: deb URIs: http://deb.debian.org/debian-security Suites: stable-security Components: main Signed-By: /usr/share/keyrings/debian-archive-bookworm-security-automatic.gpg
Ich hab das mal hier im Project das die £cripte betreut gemeldet.
Comments
Display comments as Linear | Threaded