Uma vez iniciado, encontrar caminho completo da imagem do kernel?

1

Eu sei que você pode deduzir qual imagem do kernel está atualmente rodando, verificando / proc / cmdline e assumindo que é a mesma no ponto de montagem / boot. Mas isso não é garantido.

Então, existe uma maneira de saber qual imagem é de qual partição com certeza?

O arquivo de imagem está disponível para inspeção pelo initramfs em um caminho conhecido?

    
por patrick h 24.02.2018 / 19:43

1 resposta

2

Obter a imagem do kernel para a RAM do sistema é o trabalho do bootloader; somente o bootloader sabe ao certo de onde veio a imagem do kernel. Se o sistema for inicializado pela rede, a imagem do kernel pode não estar presente como um arquivo no sistema.

O número da versão e o registro de data e hora de compilação relatados por uname -a podem ser úteis na identificação do arquivo de imagem do kernel. A mesma informação pode ser lida a partir de um arquivo de imagem do kernel usando o comando file :

$ uname -a
Linux hostname 4.9.80-atom #1 SMP Mon Feb 5 13:26:54 EET 2018 x86_64 GNU/Linux

$ file /boot/vmlinuz-4.9.80-atom 
/boot/vmlinuz-4.9.80-atom: Linux kernel x86 boot executable bzImage, version 4.9.80-atom (user@hostname) #1 SMP Mon Feb 5 13:26:54 EET 2018, RO-rootFS, swap_dev 0x3, Normal VGA

Em sistemas UEFI, é possível visualizar a variável de inicialização UEFI BootCurrent para ver qual das opções de inicialização da NVRAM foi escolhida. Mas esta não é uma prova muito strong, já que a opção de inicialização pode ter sido editada após a inicialização, e se ela apontar para um gerenciador de inicialização que pode oferecer várias opções de inicialização, ela será ambígua de qualquer maneira.

A única prova strong que eu conheço seria usar um sistema com um chip TPM e um carregador de inicialização compatível com TPM: ele armazenará um hash criptograficamente strong do kernel originalmente carregado no registro PCR apropriado do TPM. Você poderia, então, seguir as mesmas regras, recalcular o hash e ver se ele corresponde; caso contrário, alguém adulterou o kernel ou o valor do registro de PCR. E o firmware sempre preencherá outro registro de PCR com um hash do código de inicialização realmente usado, para que você possa ver qualquer adulteração do bootloader também.

(Os registradores PCR são implementados de tal forma que você não pode simplesmente configurá-los em um valor de sua escolha: o novo valor será sempre um hash criptograficamente strong do valor antigo + quaisquer novos dados inseridos, configurando assim um PCR registrar para um valor conhecido específico quando ele já tiver algum outro valor diferente de zero será extremamente difícil.)

TrustedGRUB é uma versão com reconhecimento de TPM do bootloader GRUB. Certa vez experimentei [uma versão antiga dele, baseada no GRUB Legacy] ( link . Atualmente há parece ser uma nova implementação baseada no GRUB 2 mas parece suportar apenas o estilo legado de inicialização até o momento. não testei, porque todos os sistemas compatíveis com TPM disponíveis para teste agora são baseados em UEFI.

    
por 25.02.2018 / 01:31