Under Construction
Sind die verwendeten Zertifikate echt?
Die Sicherheit das eine nicht-volatile Datei mit einem Eintrag in der TSD nicht durch einen Angreifer verändert wurde, basiert auf einer digitalen Signatur die von IBM erzeugt und in der TSD hinterlegt wurde. Hier z.B. für das Executable /usr/bin/ls:
# trustchk -q /usr/bin/ls
/usr/bin/ls:
owner = bin
group = bin
mode = 555
type = FILE
hardlinks =
symlinks =
size = 29389
cert_tag = 49424d4149583a30344232302d30334233303a324b3a41
signature = 20e9e76eae8cad24dd57a1076f4b4f08acfdd0984960c109cddc2e5d2f3696f4404515da159fa33aedae4d7af7416a30e9d1fabe1afd6c069e42bd582304d1b2dc7f397ac93f29fd65b85f0067be46b36f09edc9ce94b43159ae79ac9ffb280969a6ece7393e07e549fc82c4d746e8c813e6aba30e398aa33381961a53b8e2db895932890caa7fdf353f8a2380dbdb095bdfe2a02d2ce38ba6a4d4dde203ab65c75727f675907756c0fc185613956b0eeef2adadb6881998e68183d77c9400455972c012393a06738f4ea178d4f46cdd5d6655c4343b0386140a4afe51335ef0e1de287637bebe82cca91b23293f2c91292b3f1bb62296b756708c46ef230940
hash_value = df389b0e52e59ea8bee03e511d10efe6f86625578f9c8d3347b5f70b45b33da9
…
#
Die digitale Signatur ist im Attribut signature hinterlegt, das verwendete Zertifikat wird über das Attribut cert_tag referenziert. Dabei wird als Referenz die Seriennummer des Zertifikates benutzt. Alle von Trusted Execution verwendeten Zertifikate befinden sich im Verzeichnis /etc/security/certificates:
# ls -l /etc/security/certificates
total 112
-rw-r----- 1 root security 1009 Jul 07 2021 AIX_PSIRT_cert
-rw-r----- 1 root security 451 Jul 07 2021 AIX_PSIRT_pubkey.txt
-rw-r----- 1 root security 571 Jul 25 2020 certificate_61
-rw-r----- 1 root security 571 Jul 25 2020 certificate_610
-rw-r----- 1 root security 571 Jul 25 2020 certificate_71
-rw-r----- 1 root security 846 Jul 25 2020 certificate_72
-rw-r----- 1 root security 846 Mar 24 2021 certificate_73
-r-xr-xr-x 1 root system 933 Mar 12 2024 certificate_rsct_3.2
-r-xr-xr-x 1 root system 935 Mar 12 2024 certificate_rsct_3.3
-rw-r----- 1 root security 272 Mar 17 09:50 pubkey_71.pem
-rw-r----- 1 root security 451 Mar 17 09:50 pubkey_72.pem
-rw-r----- 1 root security 451 Mar 17 09:50 pubkey_73.pem
-rw-r----- 1 root security 451 Mar 17 09:50 pubkey_rsct_3.2.pem
-rw-r----- 1 root security 451 Mar 17 09:50 pubkey_rsct_3.3.pem
drwxr-x--- 2 root security 256 Oct 27 2022 tnc
#
Die Seriennummern der Zertifikate unter /etc/security/certificates können mit Hilfe von OpenSSL und einer kleinen for-Schleife leicht aufgelistet werden:
# for cert in /etc/security/certificates/* ; do echo $cert $( openssl x509 -in $cert -noout -serial 2>/dev/null ) ; done
/etc/security/certificates/AIX_PSIRT_cert serial=8CC6C56B2F01F0D0
/etc/security/certificates/AIX_PSIRT_pubkey.txt
/etc/security/certificates/certificate_61 serial=AF4B62B878AA47F7
/etc/security/certificates/certificate_610 serial=AF4B62B878AA47F7
/etc/security/certificates/certificate_71 serial=D3CBD2922627B209
/etc/security/certificates/certificate_72 serial=49424D4149583A31324331342D33314332303A324B3A41
/etc/security/certificates/certificate_73 serial=49424D4149583A30344232302D30334233303A324B3A41
/etc/security/certificates/certificate_rsct_3.2 serial=C7CD756D9B1BDFEE
/etc/security/certificates/certificate_rsct_3.3 serial=801AD49B5EA3532A
/etc/security/certificates/pubkey_71.pem
/etc/security/certificates/pubkey_72.pem
/etc/security/certificates/pubkey_73.pem
/etc/security/certificates/pubkey_rsct_3.2.pem
/etc/security/certificates/pubkey_rsct_3.3.pem
/etc/security/certificates/tnc
#
Hinweis: Nicht alle Dateien enthalten Zertifikate.
Achtung: Seriennummern sollten nicht doppelt vorkommen, da dann nicht klar ist, welches Zertifikat verwendet werden muss.
Die Seriennummer (cert_tag) „49424d4149583a30344232302d30334233303a324b3a41” aus dem Beispiel oben mit /usr/bin/ls gehört zur Zertifikatsdatei /etc/security/certificates/certificates_73. Die digitale Signatur von /usr/bin/ls lässt sich leicht überprüfen:
# trustchk -n /usr/bin/ls
#
Die digitale Signatur stimmt mit dem TSD-Eintrag für /usr/bin/ls überein. Bei dem ls-Kommando scheint es sich also um das original Executable von IBM zu handeln. Oder?
Ein Angreifer, der Zugriff auf ein System erlangt hat, könnte aber das Zertifikat und das /usr/bin/ls Executable ausgetauscht haben und anschließend den TSD-Eintrag mit der neuen digitalen Signatur aktualisieren. Eine Überprüfung mit „trustchk -n“ wäre dann weiterhin erfolgreich.
Es stellen sich daher mindestens die beiden folgenden Fragen:
- Welche Zertifikate werden aktuell von der TSD verwendet?
- Sind diese Zertifikate vertrauenswürdig und stammen wirklich von IBM?
Als erstes ermitteln wir einmal welche Zertifikate überhaupt über die TSD referenziert werden (Attribut cert_tag):
# trustchk -q ALL | grep cert_tag | sort -u
cert_tag =
cert_tag = 00801ad49b5ea3532a
cert_tag = 00af4b62b878aa47f7
cert_tag = 00d3cbd2922627b209
cert_tag = 49424d4149583a30344232302d30334233303a324b3a41
cert_tag = 49424d4149583a31324331342d33314332303a324b3a41
cert_tag = VOLATILE
#
Das sind konkret die folgenden Zertifikats-Dateien:
00801ad49b5ea3532a - certificate_rsct_3.3
00af4b62b878aa47f7 - certificate_61
00d3cbd2922627b209 - certificate_71
49424d4149583a30344232302d30334233303a324b3a41 - certificate_73
49424d4149583a31324331342d33314332303a324b3a41 - certificate_72
Eine Verifizierung der Zertifikate zeigt, das es sich in allen Fällen um self-signed Zertifikate handelt. Hier die Überprüfung für /etc/security/certificates/certificate_73:
# openssl verify /etc/security/certificates/certificate_73
C = US, ST = TX, L = Austin, O = IBM Corp., OU = AIX, CN = Security
error 18 at 0 depth lookup: self-signed certificate
error /etc/security/certificates/certificate_73: verification failed
#
Hinweis: Um ganz sicher zu gehen, könnte man die Zertifikate auf ein anderes, vertrauenswürdiges, System kopieren und dort überprüfen.
Aktuell (April 2025), verwendet IBM leider self-signed Zertifikate. Damit lässt sich auf diesem Wege („openssl verify“) die Echtheit der Zertifikate leider nicht bestätigen.
Hat man ein anderes AIX System, von dem man zu 100% weiß das dort keine Änderungen stattgefunden haben, z.B. weil dort von Anfang an Trusted Execution verwendet wurde, dann kann man natürlich die Zertifikate auch mit diesem System vergleichen.
Die Sicherheit von Trusted Execution basiert aber letztlich auf der Echtheit der verwendeten Zertifikate, daher sollte man auf einem schon länger laufenden System nicht einfach die Zertifikate als korrekt akzeptieren, ohne dies kontrolliert zu haben.
Nachfolgend sind Möglichkeiten der Überprüfung beschrieben: