Ich würde mich auch in Firmware nach dem 09.04.2018 (also ab 53696) nicht mehr darauf verlassen, daß der Rückweg immer so einfach ist - weiß es aber auch nicht sicher, weil ich das (prinzipiell) nicht "live" teste.
Da hat AVM jedenfalls in der Konfiguration einen neuen Schritt eingeführt:
Code:
vidar:/home/FritzBox/FB7490/firmware/113.06.98-53696 # cat etc/init.d/S09-0config_rekey
#! /bin/sh
if [ -x "/usr/www/cgi-bin/firmwarecfg" ] ; then
/usr/www/cgi-bin/firmwarecfg config_rekey &>/dev/null
local res="$?"
## echo "firmwarecfg config_rekey: returned '${res}'"
if [ "${res}" = "0" ] ; then
echo "firmwarecfg config_rekey: done"
else
if [ "${res}" -gt 0 ] && [ "${res}" -lt 128 ] ; then
echo "firmwarecfg config_rekey: nop"
else
echo "firmwarecfg config_rekey: failed"
fi
fi
fi
und wenn man das etwas genauer untersucht, wird (wieder "vermutlich") wohl eine neue Funktion aus der "libcfgimpexp.so" aufgerufen, die "rekey_config" heißt.
Was in dieser jetzt genau passiert und auf welche Dateien diese beim "Umschlüsseln" letztlich zugreift, kann man erst wieder auf der Box selbst ermitteln ... aber auch dazu braucht man die Tools für den passenden Kernel und die passende C-Library.
Die Konfiguration für diese und die Patches bzw. die kompletten Quellen hat AVM m.W. auch nach nunmehr 7 Monaten seit Beginn der Laborreihe noch nicht veröffentlicht (gut, die erste offizielle Labor 06.98 war wohl vom 08.12.2017, aber auch das sind inzwischen 5 Monate) - vielleicht hat ja tatsächlich noch niemand danach verlangt (gut, schreiben wir mal "darum gebeten", obwohl es keine Gefälligkeit seitens AVM ist, die einem mit der Bereitstellung der von passenden Lizenzen betroffenen Quelltexte erwiesen wird, sondern verbrieftes Recht) und so werde ich das gleich im Anschluß einfach mal machen. Über den Fortgang informiere ich dann hier.
Zurück zu diesem "rekey" ... es gibt in dieser "libcfgimpexp.so" schon länger diese zwei Funktionen:
Code:
0000c5dc T avmnexus_private_key_export_umschluesseln
0000c670 T avmnexus_private_key_import_umschluesseln
Was es mit denen auf sich hat, weiß ich auch noch nicht ... "avmnexus" ist halt das Mesh bei AVM bzw. wohl die Control-Instanz für dieses und dafür gibt es ja auch einen - wohl gemeinsam genutzten - RSA-Key in der "/var/flash/avmnexus.cfg" mit einem Zertifikat, dessen CN auf "avmnexus-<maca>" lautet:
Code:
root@FB7490:~ $ cat /var/flash/avmnexus.cfg
/*
* /var/flash/avmnexus.cfg
* Mon Mar 19 14:22:24 2018
*/
meta { encoding = "utf-8"; }
avmnexuscfg {
role = avmnexus_role_automatic;
master_address = 0.0.0.0;
own_key =
"Base64:LS0tLS1CRUdJTiBSU0EgUFJJVkFURSBLRVktLS0tLQpQcm9jLVR5cGU6IDQsRU5DUllQVEVECkRF
Sy1JbmZvOiBBRVMtMTI4LUNCQyw1OUMwNzUxRTk4RUU1NTM1N0RENENCODk1NzAwNDA5NQoKOTlt
WnIxTmgwODYrUUVjaktUOXVNeHJwYkdUd2FpNStpTXNwTzlOQ3dpYXRVQ1dZWWtkM2RQcnNZV3V4
aGZJVwpaQWxZOGdGNXE1SGlId0RYVHBDa3c2QmR6aXBqdVV3UU40N1c1a0M0Q1J4VFlzZm5DWG5X
RlZQWDdKYkgzSkVhCm5rbG5IckxvYUFyRFkxanhLUTRoQ3p3dDJmRFB0THpnOEc1QWNKQmV2ak1T
SU5Ibm5SbDhjN1hXdCtOM01sUngKZEFsNVE0Rlc1Y0RsQ05xY0taVzk4RDh3a0kvVVl0ODVDZ2I5
K1M1MWRYWTJ2STJ0c0JjRnFUNW9FZ3dQVEEwVwpJcDZNcDg5QWFqV05FRk5vNnQ4WHpnbUpYNzZ1
OURDbUxYenE0UVZwSUxCaUxzOHhGVlR6a3FSV3Z2dGFuaFRFCnQrUXN2WTJDNlA2SXlDS1Q4Q01F
dUtBTlp3aVJpYzZBaklPQjJyWThuc2xuS2Fkcmk2MHVEa3g0U1hCR0c1d3QKYU5Rem1LekNmOWRl
a0Erem0ybkRBM1MzbTV4N1VLRnlMTExFWVdhRTJWdEtRM2VVdHlFdytLQkxobW5vR3JvSwpYRTd3
ZzdFMmZDNXJHNUxoYUU2NXE4Wk40eStxMTlsVXJuaTJlZ2dIcm5ld09wTXRZaFNhdlIzVk1IbnRn
a1NFCnhmbHdzaVlya2YwYUlNUE0rcEFSNWFWaUptYW9yN2tYV3YwNWhyUndBeXNPc0R5Rk9VVVho
Sjk4R1ZkWFB6VTMKNGNyOUNjand3dThGMFVqSU1DWmc4WTNtYkdlbDVUQVBML3o2Zys2YWxxVS9s
SElIMDg1YWR4YWsvWlR6VHJTVgpvd0dza0pSVWQ5OWdhcmVkWFBpNXcvTHlGeHZyMzFSbnNUbVJr
Z1Y5UFBia2VpRE45ZHpZd1l3TDJSSWpZZ3BlCnM2VmhIb0ZPRzMvWkpPL2hqc3hwTlNkZytpNVZC
R2dMVnpRVGtRdE96bXdHZnI1TFN5VHlIbUVZMGdyS1Z0U0EKQXMzME9LSUlSWDViMjVHeHB5cUsv
UUNETHhaSXhqZk1pNXQzUXRlbmlGT3VLZnZ5djl1OHRzVENCYkxhWWhKSApFZVl6QVhxTXhUcm1H
bnd0R2M5VDVDb0g2dUo3alc3c050V0JXYUxsa2ZqWlNIUFhkZWlwMU45emFmQ29UcWY5CnlUbFZy
TzQwcWJPdHJPWVhDK2ZiQ2xIcXY1UGNQdmdYei9ydUpac2JFeHlZcWdpdTFjTDVFV2ZzeWYzLzRv
a0UKZkE5bUkwQUdPS2VDTFpsaVNYR2x2YXI0T1FzcnVRU3ltVm9ydlg0ci83c3dZWFRmNzF2M3I2
bkJBdTZOSFJUUQpnSGl0elhkNzI5ams1MHhpeEZjcUsvckgwenFuTkt5K1M0RjJ1SVJEWUozK3Y4
SVlrYjFDaTdXY3NOSHA2MkZICnZWai9lZXp0R20wQm1KWC9nMFpLbjkva3RYUG1TUllqN01zTlRK
WWV1M3lYZU12eVV5Y09iSGp6VEJrT01LVjEKS0hNWHpZOFFNc0Zjc0xrM3BxVEhOcXkvYmdvRTlG
NW1QTEpwZlFSVGxLQWJiM0FYZkJSWmoxNjNFUWFoRHdjWQpTY0RFek8rTkhLY3Z4K3EzR3BwOTd5
VEc4QkFYRFBXM25IdXJoSnQ4VUszZGJ5dFpJdHI4MndVNjdVYUE1S2dKCnRTQXVzZHNhSituR01a
bjB0TXJWOW9hcnZjMGE0aEw2aWxVdUovOHEyRHJrd25aMjdQamNNNHZlRUdZNytud08KVUNYekFL
R0srRlZRNXhWVWVuQTZ4UnVtRnEzSUJjOEN1aXFzdVFtL1hVZ3NzUWdESzJwWUEraU5VUWc5ZHFC
YgpUSkxDbktUNkVRS1BjMjR0aUZvdzB0cHpiZDBVRHR0OGNqTDA2R3psNEFYQ21uRlBQUWtZRGJh
anlHR1VzcHZqCjFHY2Y4Snd4akVwL3Fhb0ZlemlYdkhxdVJGeFlZRTdwczhLU2R3N1U3bFJNUzBy
VFZTOXJZdW5nL3plcTNJWWEKdHpYeWIrWnh4RVMzSzU1ZUd3VlFMWGUwOHhOaHd5N0FpenZVN09W
MEZEMnJmcHJIYjdGby8vVGY4a1RvcXF0NwotLS0tLUVORCBSU0EgUFJJVkFURSBLRVktLS0tLQo=";
own_cert =
"Base64:LS0tLS1CRUdJTiBDRVJUSUZJQ0FURS0tLS0tCk1JSURSVENDQWkyZ0F3SUJBZ0lKQUtOdWk4bG82
[...]
YU50cE8xUWZTUjdiUXFOUDdvZEtlYTh5clRBPT0KLS0tLS1FTkQgQ0VSVElGSUNBVEUtLS0tLQo=";
}
// EOF
root@FB7490:~ $
Ja, ich generiere da auch einen neuen, nachdem der hier im Beitrag steht und das Zertifikat habe ich auch nur deshalb verkürzt, weil da die MAC-Adresse meiner Test-Box drinsteht.
Diese Datei ist ja auch Bestandteil einer Export-Datei und wenn man den "own_key" oben dekodiert, ist das ein stinknormaler RSA-Key nach RFC 2313:
Code:
-----BEGIN RSA PRIVATE KEY-----
Proc-Type: 4,ENCRYPTED
DEK-Info: AES-128-CBC,59C0751E98EE55357DD4CB8957004095
99mZr1Nh086+QEcjKT9uMxrpbGTwai5+iMspO9NCwiatUCWYYkd3dPrsYWuxhfIW
ZAlY8gF5q5HiHwDXTpCkw6BdzipjuUwQN47W5kC4CRxTYsfnCXnWFVPX7JbH3JEa
nklnHrLoaArDY1jxKQ4hCzwt2fDPtLzg8G5AcJBevjMSINHnnRl8c7XWt+N3MlRx
dAl5Q4FW5cDlCNqcKZW98D8wkI/UYt85Cgb9+S51dXY2vI2tsBcFqT5oEgwPTA0W
Ip6Mp89AajWNEFNo6t8XzgmJX76u9DCmLXzq4QVpILBiLs8xFVTzkqRWvvtanhTE
t+QsvY2C6P6IyCKT8CMEuKANZwiRic6AjIOB2rY8nslnKadri60uDkx4SXBGG5wt
aNQzmKzCf9dekA+zm2nDA3S3m5x7UKFyLLLEYWaE2VtKQ3eUtyEw+KBLhmnoGroK
XE7wg7E2fC5rG5LhaE65q8ZN4y+q19lUrni2eggHrnewOpMtYhSavR3VMHntgkSE
xflwsiYrkf0aIMPM+pAR5aViJmaor7kXWv05hrRwAysOsDyFOUUXhJ98GVdXPzU3
4cr9Ccjwwu8F0UjIMCZg8Y3mbGel5TAPL/z6g+6alqU/lHIH085adxak/ZTzTrSV
owGskJRUd99garedXPi5w/LyFxvr31RnsTmRkgV9PPbkeiDN9dzYwYwL2RIjYgpe
s6VhHoFOG3/ZJO/hjsxpNSdg+i5VBGgLVzQTkQtOzmwGfr5LSyTyHmEY0grKVtSA
As30OKIIRX5b25GxpyqK/QCDLxZIxjfMi5t3QteniFOuKfvyv9u8tsTCBbLaYhJH
EeYzAXqMxTrmGnwtGc9T5CoH6uJ7jW7sNtWBWaLlkfjZSHPXdeip1N9zafCoTqf9
yTlVrO40qbOtrOYXC+fbClHqv5PcPvgXz/ruJZsbExyYqgiu1cL5EWfsyf3/4okE
fA9mI0AGOKeCLZliSXGlvar4OQsruQSymVorvX4r/7swYXTf71v3r6nBAu6NHRTQ
gHitzXd729jk50xixFcqK/rH0zqnNKy+S4F2uIRDYJ3+v8IYkb1Ci7WcsNHp62FH
vVj/eeztGm0BmJX/g0ZKn9/ktXPmSRYj7MsNTJYeu3yXeMvyUycObHjzTBkOMKV1
KHMXzY8QMsFcsLk3pqTHNqy/bgoE9F5mPLJpfQRTlKAbb3AXfBRZj163EQahDwcY
ScDEzO+NHKcvx+q3Gpp97yTG8BAXDPW3nHurhJt8UK3dbytZItr82wU67UaA5KgJ
tSAusdsaJ+nGMZn0tMrV9oarvc0a4hL6ilUuJ/8q2DrkwnZ27PjcM4veEGY7+nwO
UCXzAKGK+FVQ5xVUenA6xRumFq3IBc8CuiqsuQm/XUgssQgDK2pYA+iNUQg9dqBb
TJLCnKT6EQKPc24tiFow0tpzbd0UDtt8cjL06Gzl4AXCmnFPPQkYDbajyGGUspvj
1Gcf8JwxjEp/qaoFeziXvHquRFxYYE7ps8KSdw7U7lRMS0rTVS9rYung/zeq3IYa
tzXyb+ZxxES3K55eGwVQLXe08xNhwy7AizvU7OV0FD2rfprHb7Fo//Tf8kToqqt7
-----END RSA PRIVATE KEY-----
, verschlüsselt mit AES-128 und einem unbekannten Kennwort. Bisher habe ich auch noch nicht ernsthaft versucht, das hier verwendete Kennwort zu ermitteln ... nur das Kennwort für den privaten RSA-Key für das GUI habe ich getestet und das ist es wohl nicht. Ich rate mal (mehr ist es auch nicht), daß AVM da ursprünglich mit irgendeinem festen Wert verschlüsselt hat (das gibt es an anderen Stellen in der Firmware auch noch) und das nun lieber auf irgendetwas umstellt, was ein wenig gerätespezifisch ist, bevor man diese Keys am Ende im Klartext in jeder Sicherungsdatei stehen hat (denn mehr als "Verschleierung" ist das bei der Verwendung eines festen Kennworts auch wieder nicht, weil das schnell zu ermitteln ist).
Jedenfalls wäre das - derzeit - die einzige Stelle, wo ich mir ein "Umschlüsseln" (wie im Funktionsnamen oben) vorstellen kann ... und wenn das ein irreversibler Vorgang ist und das Ergebnis nicht kompatibel mit früheren Versionen sein sollte, dürfte zumindest die Mesh-Konfiguration darunter leiden, wenn der Schritt zurück (über "linux_fs_start") zu groß wird. Wenn man sich das Shell-Skript oben ansieht, ist das vermutlich ein nur einmalig notwendiger Vorgang (das erfolgt wohl kaum bei jedem Systemstart bzw. das "nop" deutet ja darauf hin, daß es auch mal "nichts tun" könnte).
Aber wenn es schlecht läuft, klappt es mit einer Version vor 53696 dann nicht mehr mit dem Entschlüsseln dieses Keys und in der Folge dürfte das gesamte Mesh-Netzwerk nicht mehr klarkommen, weil alle Slaves nur dann einen Master akzeptieren sollten, wenn der den Key zum Zertifikat vom "Einmeshen" auch kennt.
Das ist zwar alles nur Theorie - abgeleitet aus den Funktionsnamen in der "libcfgimpexp.so" und der Existenz dieser neuen "Operation" mit dem Namen "config_rekey" in "firmwarecfg" ... aber irgendeinen Grund dafür muß AVM ja haben, wenn man solchen Aufwand (Binary + Shell-Skript für "init") treibt.
//edit by stoney: fehlendes [CODE] gesetzt