Ruby의 pthread 기반 `getaddrinfo` 타임아웃 핸들러에서 use-after-free 취약점이 발견되었습니다. 이 취약점은 CVE 번호 [CVE-2026-46727](https://www.cve.org/CVERecord?id=CVE-2026-46727)으로 등록되었습니다. 이 문제는 Ruby 4.0.5에서 수정되었습니다. Ruby 업그레이드를 권장합니다.

## 세부 내용

`Addrinfo.getaddrinfo(..., timeout:)`와 `Socket.tcp(..., resolv_timeout:)`가 사용하는 `rb_getaddrinfo`의 타임아웃 취소 경로에 경쟁 조건이 존재합니다. 지정된 타임아웃 부근에서 DNS 응답을 지연시킬 수 있는 원격 공격자는 Ruby 프로세스가 해제된 메모리를 역참조하여 충돌하도록 만들 수 있습니다.

## 권장 조치

Ruby 4.0.5 이상으로 업데이트해 주세요.

## 우회 방법

즉시 업그레이드할 수 없는 경우, `Addrinfo.getaddrinfo`에 `timeout:`을 전달하거나 `Socket.tcp`에 `resolv_timeout:`을 전달하는 것을 피해 주세요.

## 해당 버전

* Ruby 4.0.0부터 4.0.4까지
* 수정 전 Ruby 4.1.0-dev (master)

Ruby 3.4 버전대와 이전 버전은 영향을 받지 않습니다.

## 도움을 준 사람

이 문제를 발견해 준 [cantina-security](https://hackerone.com/cantina-security)에게 감사를 표합니다. 또한 패치를 작성해 준 [shioimm](https://github.com/shioimm)에게도 감사를 표합니다.

## 수정 이력

* 2026-05-20 00:00:00 (UTC) 최초 공개
