Como eu sei quais arquivos serão incluídos em um kernel do Linux antes de construí-lo?

5

Estou trabalhando em um projeto que inclui a construção de uma versão antiga do kernel do linux. Isso é bom, mas ainda preciso corrigir o kernel de todas as vulnerabilidades de segurança encontradas anteriormente com base nos CVEs. Eu tenho os CVEs e extraí os nomes dos arquivos vulneráveis mencionados neles, junto com as versões do kernel que ele afeta.

Até agora, encontrei cerca de 150 vulnerabilidades potenciais que podem afetar minha compilação, mas obviamente algumas delas afetam arquivos relevantes para os drivers gráficos que não uso. Até agora, acabei de percorrer a lista manualmente, verificando se os arquivos estão incluídos usando make menuconfig e cating Kconfig em pastas relevantes. Isso funcionou bem até agora, mas esses métodos não mostram os nomes de arquivos reais (por exemplo, ipc / sem.c), por isso é necessário mais trabalho do que o necessário.

Idealmente, gostaria de imprimir de alguma forma uma lista de todos os arquivos que serão incluídos na minha compilação e, em seguida, apenas escrever um script para verificar se os arquivos vulneráveis estão incluídos.

Como posso encontrar os nomes dos arquivos de origem (por exemplo, ipc / sem.c) que serão incluídos na minha compilação?

    
por Backus 07.07.2011 / 06:53

1 resposta

3

Faça a compilação e liste os arquivos .o . Acho que cada arquivo .c ou .S que faz parte da compilação é compilado em um arquivo .o com um nome correspondente. Isso não informará se um problema de segurança exigiu uma correção em um arquivo de cabeçalho incluído na compilação.

make vmlinux modules
find -name '*.o' -exec sh -c '
    for f; do for x in c S; do [ -e "${f%.o}.$x" ] && echo "${f%.o}.$x"; done; done
' _ {} +

Um método mais preciso é colocar as fontes em um sistema de arquivos onde os tempos de acesso são armazenados e fazer a compilação. Arquivos cujo tempo de acesso não é atualizado pela compilação não foram usados nessa compilação.

touch start.stamp
make vmlinux modules
find -type f -anewer start.stamp
    
por 07.07.2011 / 18:42