grsec으로 인해 애플리케이션 코어 덤프 및 커널 패닉 발생

grsec으로 인해 애플리케이션 코어 덤프 및 커널 패닉 발생

임베디드 Linux에서 실행되는 사용자 정의 애플리케이션(Buildroot를 사용하여 생성됨)이 있습니다. grsec로 커널을 패치하고 linux-menuconfig에서 GRsecurity를 ​​활성화합니다. 더 이상 Grsec 관련 옵션을 활성화하지 않았습니다(코드 재사용 방지 제외).

코어 덤프와 충돌하여 커널 패닉을 일으키는 한 응용 프로그램을 제외하고 모든 것이 잘 작동합니다.

커널에서 Grsecurity를 ​​활성화하지 않고(그러나 여전히 커널을 패치하는 중) 동일한 애플리케이션을 시도했는데 제대로 작동했습니다.

응용 프로그램에는 특수 장치(예: /dev/mydev) 및 시작 시 /etc/rc 파일에 로드된 모듈을 통한 하드웨어 액세스가 필요합니다.

내 생각에는 lsmod 또는 modinfo가 모듈을 올바르게 표시하더라도 grsec이 모듈 로딩을 차단하거나 변경하는 것일 수 있습니다.

가장 골치 아픈 점은 커널 패닉으로 인해 장치가 재부팅되기 때문에 이에 대한 자세한 정보를 얻기가 어렵다는 것입니다(그래서 메시지의 마지막 줄만 읽을 수 있습니다).

오류 메시지는 다음과 같습니다.

worker_thread+0x58/0x490
process_one_work+0x3b0/0x3b0
kkthread_create_on_node+0x1b0/0x1b0

트리 외부 모듈을 올바르게 로드할 수 있도록 커널에서 무언가를 구성해야 하는지 아는 사람이 있나요?

공식 위키를 읽어봤는데 대부분 RBAC에 관한 내용이고, 애플리케이션을 실행해도 RBAC가 활성화되지 않습니다.

답변1

까다롭지만, 아직 이해하려고 노력 중인데도 문제의 원인을 찾았습니다.

따라서 커널 구성에는 기본적으로 활성화되는 "코드 재사용 공격 방지" 옵션이 있습니다. 나는 그것을 비활성화했고 훌륭하게 작동합니다.

나는 여전히 그것이 실제로 무엇을 위해 사용되는지 더 잘 이해하려고 노력하고 있지만 공유 라이브러리가 사용되는 방식을 바꿀 것이라고 추측합니다(아마도).

어쨌든 비활성화하면 문제가 해결되었습니다. 그래서 내 문제가 해결되었다고 생각합니다.

추가 정보: https://grsecurity.net/rap_faq.php

관련 정보