🇰🇷 한글 설명
pam_usb 0.9.1 및 이전 버전에서 usb_get_process_parent_id() 함수가 실패 시 부모 프로세스 ID(*ppid)를 초기화하지 않아 무한 루프가 발생할 수 있습니다. 인증 과정 중 조상 프로세스가 종료되어 /proc/<pid>/stat 파일을 읽을 수 없게 되면 PID가 업데이트되지 않아 인증 프로세스가 종료되지 않고 멈추는 서비스 거부(DoS) 상태가 됩니다.
💡 쉬운 설명
USB를 이용한 로그인 인증 중에 특정 시스템 정보가 갑자기 사라지면, 컴퓨터가 인증 과정을 끝내지 못하고 무한히 대기하는 상태에 빠질 수 있습니다. 이로 인해 sudo나 ssh 같은 중요한 로그인 명령어가 먹통이 될 수 있습니다.
🇺🇸 원문 (English)
pam_usb provides hardware authentication for Linux using removable media. In pam_usb 0.9.1 and earlier, usb_get_process_parent_id() can cause an infinite loop DoS because it does not initialize *ppid on failure. In pusb_local_login(), the same variable is reused as input and output in a process-tree while loop; if /proc/<pid>/stat cannot be read (for example, when an ancestor process exits during authentication), the PID is not updated and the loop does not terminate. This hangs the authenticating process (such as sudo, sshd, or login) until it is forcibly terminated. This issue has been fixed in version 0.9.2.
📍 영향받는 시스템
pam_usb 0.9.1 및 그 이전 버전
⚔️ 공격 벡터
인증 과정 중 조상 프로세스를 강제로 종료시켜 시스템의 무한 루프 유도 (DoS)
🛡️ 대응 방법
pam_usb를 0.9.2 이상의 버전으로 업데이트하십시오.
🔧 검증 코드
출력된 버전 번호가 0.9.2보다 낮으면 취약한 상태입니다.
dpkg -l | grep pam-usb 2>/dev/null | awk '{print $3}'