![Linux 커널을 빌드하기 전에 어떤 파일이 Linux 커널에 포함될지 어떻게 알 수 있나요?](https://linux55.com/image/2685/Linux%20%EC%BB%A4%EB%84%90%EC%9D%84%20%EB%B9%8C%EB%93%9C%ED%95%98%EA%B8%B0%20%EC%A0%84%EC%97%90%20%EC%96%B4%EB%96%A4%20%ED%8C%8C%EC%9D%BC%EC%9D%B4%20Linux%20%EC%BB%A4%EB%84%90%EC%97%90%20%ED%8F%AC%ED%95%A8%EB%90%A0%EC%A7%80%20%EC%96%B4%EB%96%BB%EA%B2%8C%20%EC%95%8C%20%EC%88%98%20%EC%9E%88%EB%82%98%EC%9A%94%3F.png)
저는 이전 Linux 커널 버전을 구축하는 것과 관련된 프로젝트를 진행하고 있습니다. 괜찮습니다. 하지만 CVE에 따라 이전에 발견된 모든 보안 취약점에 대해 커널을 패치해야 합니다. 나는 CVE를 가지고 있었고 거기에 언급된 취약한 파일의 이름과 영향을 받은 커널 버전을 추출했습니다.
지금까지 약 150개를 찾았습니다.잠재적인내 빌드에 영향을 미칠 수 있는 취약점이 있지만 그 중 일부는 내가 사용하지 않는 그래픽 드라이버와 관련된 파일에 영향을 미치는 것으로 보입니다. 지금까지는 make menuconfig
파일이 Kconfig
관련 폴더에 포함되어 있는지 확인하기 위해 및 를 사용하여 수동으로 목록을 살펴봤습니다 . 지금까지는 잘 작동하지만 이러한 방법은 실제 파일 이름(예: ipc/sem.c)을 표시하지 않으므로 추가 작업이 필요합니다.
이상적으로는 내 빌드에 포함될 모든 파일 목록을 인쇄한 다음 취약한 파일이 포함되어 있는지 확인하는 스크립트를 작성하고 싶습니다.
내 빌드에 포함될 소스 파일(예: ipc/sem.c)의 이름을 어떻게 찾나요?
답변1
빌드한 다음 .o
파일을 나열합니다. .c
빌드에 관련된 각 또는 파일은 해당 이름의 파일로 컴파일된다고 생각합니다 . 보안 문제로 인해 빌드에 포함된 헤더 파일을 수정해야 하는지 여부는 알 수 없습니다..S
.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
' _ {} +
보다 정확한 접근 방식은 액세스 시간이 저장되는 파일 시스템에 소스를 배치한 다음 빌드하는 것입니다. 빌드에 의해 업데이트되지 않은 액세스 시간이 있는 파일은 이 빌드에서 사용되지 않습니다.
touch start.stamp
make vmlinux modules
find -type f -anewer start.stamp