🇰🇷 한글 설명
Nokogiri는 Ruby용 오픈소스 XML/HTML 라이브러리입니다. 1.19.4 이전 버전에서 Nokogiri::XML::Document#root= 메서드가 새 루트가 Nokogiri::XML::Node인지만 검사하여 DTD 노드를 문서 루트로 설정할 수 있었습니다. 이로 인해 가비지 컬렉션이나 finalization 중 힙 use-after-free가 발생하여 잘못된 메모리 읽기 또는 세그멘테이션 폴트가 유발될 수 있습니다. 1.19.4 버전에서 수정되었습니다.
💡 쉬운 설명
XML을 처리하는 Ruby 도구의 입력 검사가 부족해서 프로그램 메모리를 잘못 사용하는 문제입니다. 이 문제로 프로그램이 비정상 종료되거나 서비스가 중단될 수 있습니다.
🇺🇸 원문 (English)
Nokogiri is an open source XML and HTML library for the Ruby programming language. Prior to 1.19.4, Nokogiri::XML::Document#root= validated only that the new root was a Nokogiri::XML::Node, allowing a DTD node to be set as the document root. The result is a heap use-after-free during garbage collection or finalization, leading to an invalid memory read or potentially a segfault. This vulnerability is fixed in 1.19.4.
📍 영향받는 시스템
Ruby Nokogiri 1.19.4 미만 버전을 사용하는 모든 시스템
⚔️ 공격 벡터
조작된 DTD 노드를 포함한 XML 입력을 Nokogiri의 root= 메서드에 전달하여 메모리 손상 및 충돌을 유발
🛡️ 대응 방법
Nokogiri를 1.19.4 이상으로 업데이트 (예: bundle update nokogiri)
🔧 검증 코드
출력된 버전이 1.19.4 이상이면 취약하지 않고, 그보다 낮으면 업데이트가 필요합니다.
gem list nokogiri 2>/dev/null | grep nokogiri