Fornecemos a cada convidado um dispositivo de bloco secundário, somente leitura, anexado a um arquivo simples no host. O host da VM pode usar esse canal para transmitir informações específicas do convidado para o convidado de uma maneira unidirecional segura: em nossa instalação, é apenas um arquivo tar com personalizações do sistema de arquivos & scripts de inicialização. A superfície de ataque do host guest > é mínima e não temos que lidar com a sobrecarga significativa imposta pela libguestfs.
Aqui está o snippet XML de convidado libvirt que usamos:
<disk type='file' device='disk'>
<driver name='qemu' type='raw' cache='none' io='native'/>
<source file='/vm/hostconf/testhost.hostconf.tar'/>
<target dev='vdb' bus='virtio'/>
<readonly/>
<address type='pci' domain='0x0000' bus='0x00' slot='0x06' function='0x0'/>
</disk>
No convidado, um pequeno script de inicialização descompacta o arquivo tar e faz as alterações necessárias.