🇰🇷 한글 설명
Linux 커널의 bnx2x 드라이버에서 bnx2x_init_firmware() 함수 오류 경로 발생 시 메모리 해제 후 포인터를 NULL로 설정하지 않는 문제가 발견되었습니다. 이로 인해 bnx2x_release_firmware()가 호출될 때 이미 해제된 메모리를 다시 해제하려는 Double Free 취약점이 발생할 수 있습니다.
💡 쉬운 설명
프로그램이 이미 사용이 끝난 메모리 공간을 실수로 두 번 지우려고 시도할 때 발생하는 오류입니다. 이 과정에서 시스템이 예상치 못하게 멈추거나 보안 문제가 생길 수 있습니다.
🇺🇸 원문 (English)
In the Linux kernel, the following vulnerability has been resolved:
bnx2x: fix double free in bnx2x_init_firmware() error path
bnx2x_init_firmware() frees bp->init_ops, bp->init_data and
bp->init_ops_offsets in its error path without setting them to NULL.
The cleanup function bnx2x_release_firmware() frees the same three
pointers unconditionally, so if init_firmware fails and
release_firmware is later called (e.g. from __bnx2x_remove or through
the function state machine), all three are freed a second time.
Set each pointer to NULL after kfree() in the error path so that the
subsequent kfree(NULL) in bnx2x_release_firmware() is a safe no-op.
📍 영향받는 시스템
Linux kernel (bnx2x driver 포함 버전)
⚔️ 공격 벡터
드라이버 초기화 과정에서 의도적으로 오류를 유발하여 메모리 해제 로직을 실행시키는 방식
🛡️ 대응 방법
Linux 커널을 최신 보안 패치가 적용된 버전으로 업데이트하십시오.
🔧 검증 코드
출력된 커널 버전이 해당 취약점이 수정된 패치 버전 이후인지 확인하십시오.