CVE-2026-74506 in Linux
요약
\~에 의해 VulDB • 2026. 08. 16.
리눅스 커널에서 다음 취약점이 해결되었습니다:
afs: 메시지 전송 시 UAF(Use-After-Free) 수정
`afs_make_call()` 함수 내에서 비동기 호출 수신 및 소멸 간에 경합 조건(race condition)이 발생합니다. `call->write_iter`(FS.StoreData의 데이터 콘텐츠를 지정하는 데 사용됨)가 설정되지 않은 호출이 디스패치되면, 첫 번째 `rxrpc_kernel_send_data()` 호출은 msghdr에서 MSG_MORE 플래그를 설정하지 않습니다.
`rxrpc_send_data()`가 마지막 요청 패킷을 큐에 넣으면 응답이 언제든지 도착하여 호출 완료 및 put 작업을 유발할 수 있습니다. 그러나 `afs_make_call()`은 다시 해당 호출을 확인하여 ->write_iter 처리 여부를 판단하려 합니다. 이는 호출 자체의 참조(reference)를 보유하고 있을 때만 허용되는 작업입니다. 동기식 호출의 경우 이것이 성립하지만, FS.FetchData와 같은 비동기 호출에는 적용되지 않습니다.
또한 `afs_make_call()` 내에서 잠재적인 UAF가 발생할 수 있습니다. 이는 비동기 호출이 전송되지만 어떤 이유로든(예: 서버에서 중단됨) 실패하는 경우에 해당합니다. 문제는 `rxrpc` 전송 실패 시 `afs_make_call()`이 호출을 중단하려고 시도하지만, `rxrpc`로부터의 비동기 알림으로 인해 이미 afs_call이 해제되었을 수 있다는 점입니다.
generic/650 테스트는 CPU를 무작위로 오프라인 상태로 전환하며 상당한 지연을 유발할 수 있습니다. 이로 인해 `afs_make_call()`이 call->write_iter를 확인하기 전에 호출 객체가 할당 해제되어 UAF가 발생합니다(KASAN으로 포착됨).
BUG: KASAN: slab-use-after-free in afs_make_call+0x1c90/0x2210 [kafs]
Read of size 8 at addr ffff888035e050e8 by task fsstress/1409
이 문제를 해결하기 위해 `afs_make_op_call()` 함수가 호출자의 참조를 전달한 후 `afs_make_call()` 반환 시 참조를 해제하는 대신, op->call에 자체 참조를 부여하도록 수정했습니다.
이를 통해 `afs_make_call()` 함수는 이제 더 이상 호출 객체에 대한 자신의 참조를 잃지 않게 됩니다.
If you want to get best quality of vulnerability data, you may have to visit VulDB.