CVE-2023-52813 in Linux정보

요약

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

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

crypto: pcrypt - PADATA_RESET 관련 hungtask 수정

다음과 같은 test_aead_vec_cfg 내 hungtask 버그를 발견했습니다:

INFO: task cryptomgr_test:391009 blocked for more than 120 seconds. "echo 0 > /proc/sys/kernel/hung_task_timeout_secs" disables this message. Call trace: __switch_to+0x98/0xe0 __schedule+0x6c4/0xf40 schedule+0xd8/0x1b4 schedule_timeout+0x474/0x560 wait_for_common+0x368/0x4e0 wait_for_completion+0x20/0x30 wait_for_completion+0x20/0x30 test_aead_vec_cfg+0xab4/0xd50 test_aead+0x144/0x1f0 alg_test_aead+0xd8/0x1e0 alg_test+0x634/0x890 cryptomgr_test+0x40/0x70 kthread+0x1e0/0x220 ret_from_fork+0x10/0x18 Kernel panic - not syncing: hung_task: blocked tasks

padata_do_parallel의 경우, 반환 에러가 0 또는 -EBUSY일 때 test_aead_vec_cfg에서 wait_for_completion(&wait->completion)를 호출합니다. 정상적인 경우, pcrypt_aead_serial에서 aead_request_complete()가 호출되며 padata_do_parallel의 반환 에러는 0이 됩니다. 그러나 pinst->flags가 PADATA_RESET일 경우, padata_do_parallel의 반환 에러는 -EBUSY가 되며 aead_request_complete()가 호출되지 않습니다. 따라서 test_aead_vec_cfg는 wait_for_completion(&wait->completion)에서 멈추게 되어 hungtask가 발생합니다.

문제는 다음과 같이 발생합니다: (padata_do_parallel) | rcu_read_lock_bh(); | err = -EINVAL; | (padata_replace) | pinst->flags |= PADATA_RESET; err = -EBUSY | if (pinst->flags & PADATA_RESET) | rcu_read_unlock_bh() | return err

이 문제를 해결하기 위해 반환 에러 -EBUSY를 -EAGAIN으로 대체했습니다. 이는 병렬 데이터가 변경 중임을 의미하며, 호출자는 이를 다시 호출해야 합니다.

v3: 재시도 제거 및 반환 에러만 변경. v2: hungtask를 해결하기 위해 pcrypt_aead_encrypt 및 pcrypt_aead_decrypt에 padata_try_do_parallel() 도입.

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

출처

Are you interested in using VulDB?

Download the whitepaper to learn more about our service!