🇰🇷 한글 설명
Linux 커널의 virtio-crypto 드라이버에서 virtqueue 알림 처리 시 스핀락(spinlock) 보호가 누락되어 발생하는 취약점입니다. 멀티 프로세스로 암호화 벤치마크를 실행할 경우 데이터 큐의 무결성이 깨지며 프로세스가 중단되거나 오류가 발생할 수 있습니다.
💡 쉬운 설명
가상 머신에서 여러 개의 암호화 작업을 동시에 처리할 때, 데이터가 엉키면서 시스템이 멈추거나 오류가 발생하는 문제입니다. 데이터가 서로 충돌하지 않도록 안전하게 순서를 정해주는 장치가 부족하여 발생했습니다.
🇺🇸 원문 (English)
In the Linux kernel, the following vulnerability has been resolved:
crypto: virtio - Add spinlock protection with virtqueue notification
When VM boots with one virtio-crypto PCI device and builtin backend,
run openssl benchmark command with multiple processes, such as
openssl speed -evp aes-128-cbc -engine afalg -seconds 10 -multi 32
openssl processes will hangup and there is error reported like this:
virtio_crypto virtio0: dataq.0:id 3 is not a head!
It seems that the data virtqueue need protection when it is handled
for virtio done notification. If the spinlock protection is added
in virtcrypto_done_task(), openssl benchmark with multiple processes
works well.
📍 영향받는 시스템
virtio-crypto 드라이버를 사용하는 Linux 커널 기반 가상 머신 환경
⚔️ 공격 벡터
로컬 시스템에서 다중 프로세스를 이용한 암호화 연산 수행 시 시스템 교착 상태 유발 가능
🛡️ 대응 방법
virtcrypto_done_task() 함수에 스핀락 보호가 적용된 최신 Linux 커널로 업데이트
🔧 검증 코드
출력된 커널 버전이 해당 패치가 적용된 보안 업데이트 버전인지 확인