CVE-2024-53140 in Linux정보

요약

\~에 의해 VulDB • 2026. 05. 29.

리눅스 커널에서 다음 취약점이 해결되었습니다:

netlink: 소켓 닫기 시 미완료된 덤프 종료

Netlink는 데이터의 반복적 덤프를 지원합니다. 이는 다음 연산(families ops)을 제공합니다: - start - (선택 사항) 덤프 프로세스를 시작 - dump - 실제 덤프 헬퍼 함수로, 0을 반환할 때까지 계속 호출됨 - done - (선택 사항) .start와 쌍을 이루며 정리 작업에 사용 가능

전체 프로세스는 비동기적이며, .dump에 대한 반복 호출은 엄격한 루프(tight loop)에서 발생하는 것이 아니라 소켓에서 recvmsg()가 호출될 때 트리거됩니다.

이로 인해 사용자가 덤프를 완전히 제어할 수 있지만, 덤프가 완료되기 전에 소켓을 닫을 수도 있음을 의미합니다. .start가 항상 .done과 쌍을 이루도록 보장하기 위해, 소켓을 해제하기 전에 진행 중인 덤프가 있는지 확인하고 있다면 .done을 호출합니다.

문제는 소켓이 BH(Bottom Half) 컨텍스트에서 해제될 수 있고 .done은 수면(sleep)을 허용할 수 있다는 점입니다. 따라서 필요한 경우 호출을 지연시키기 위해 작업 큐(workqueue)를 사용합니다.

불행히도 이 방법은 올바르게 작동하지 않습니다. 우리가 지연시키는 것은 정리가 아니라 소켓에 대한 참조(reference) 해제입니다. 마지막 참조를 소유하고 있다는 보장이 없으며, 다른 쪽에서 소켓을 보유하고 있다면 BH에서 이를 해제할 수 있어 문제는 여전히 해결되지 않습니다.

그러나 이러한 복잡한 절차는 불필요해 보입니다. 덤프와 상호작용할 수 있는 것은 사용자만 있으므로, 소켓이 닫힐 때 정리할 수 있습니다. 그리고 close()는 항상 프로세스 컨텍스트에서 발생합니다. close() 이후에도 일부 비동기 코드가 소켓에 접근하거나 알림 skbs를 큐에 추가하는 등의 작업을 수행할 수 있지만, 새로운 덤프는 시작되거나 진행될 수 없습니다.

작업 큐를 삭제하고, release 핸들러에서 덤프 상태를 직접 플러시합니다. -next 버전에서는 추가 정리가 가능할 수 있습니다. 예를 들어, 이제 메인 모듈 참조를 해제하기 전에 항상 .done을 호출하므로, 덤프가 자체 참조를 가져갈 필요가 없습니다.

If you want to get best quality of vulnerability data, you may have to visit VulDB.

책임이 있는

Linux

예약하다

2024. 11. 19.

모더레이션

수락

항목

VDB-286894

EPSS

0.00244

출처

Might our Artificial Intelligence support you?

Check our Alexa App!