CVE-2018-16396: tainted 플래그가 Array#pack, String#unpack의 일부 형식에서 전파되지 않는 취약점

Array#packString#unpack의 일부 형식에서 원본 데이터의 tainted 플래그가 반환되는 값에 전파되지 않았습니다. 이 취약점은 CVE 아이디 CVE-2018-16396으로 할당되었습니다.

세부 내용

Array#pack 메서드에서는 인수로 지정된 형식에 따라서 수신자인 배열의 내용을 문자열로 변환하여 반환합니다. 만약 수신자가 오염된 객체를 가지고 있는 경우, 반환하는 문자열도 오염되어 있어야 합니다. 수신자를 배열로 변환하는 String#unpack 메서드 역시 자신의 tainted 플래그를 변환 후의 배열에 전파해야 합니다. 하지만 B, b, H, h 형식을 사용하는 경우, 오염 정보가 전파되지 않았습니다. 그러므로 만약 스크립트가 신뢰할 수 없는 입력을 Array#pack이나 String#unpack을 통해 해당 형식으로 처리하고, 신뢰성을 오염 플래그로 확인하고 있었다면, 그 처리는 동작하지 않았을 가능성이 있습니다.

해당 버전을 사용하는 모든 사용자는 즉시 업그레이드하기 바랍니다.

해당 버전

  • 루비 2.3 버전대: 2.3.7 이하
  • 루비 2.4 버전대: 2.4.4 이하
  • 루비 2.5 버전대: 2.5.1 이하
  • 루비 2.6 버전대: 2.6.0-preview2
  • 리비전 65125 이전의 트렁크

도움을 준 사람

이 문제는 Chris Seaton이 보고했습니다.

수정 이력

  • 2018-10-17 23:00:00 (KST) 최초 공개