CVE-2021-41817: 날짜 구문 분석 메서드의 정규표현식 서비스 거부(DoS) 취약점

date gem의 날짜 구문 분석 메서드에 정규표현식 서비스 거부(ReDoS) 취약점이 있어, 해당 취약점의 보안 수정을 포함한 3.2.1, 3.1.2, 3.0.2, 2.0.1 버전을 릴리스했습니다. 공격자는 이 취약점을 이용해 유효한 DoS 공격을 수행할 수 있습니다. 이 취약점은 CVE 번호 CVE-2021-41817에 할당되었습니다.

세부 내용

Date.parse를 포함한 Date의 구문 분석 메서드는 내부적으로 정규표현식을 사용하고, 그중 일부는 정규표현식 서비스 거부 공격에 취약합니다. 신뢰할 수 없는 입력에 해당 메서드를 적용 중인 애플리케이션 및 라이브러리는 영향을 받을 수 있습니다.

이 수정은 정규표현식을 변경하는 대신 기본 입력 길이를 128 바이트로 제한합니다. 이는 Date gem이 많은 정규표현식을 사용하고 있고, 아직 발견되지 않은 취약한 정규표현식이 있을 수 있기 때문입니다. 호환성을 위해 Date.parse(str, limit: nil) 등으로 limit 키워드에 nil을 명시적으로 넘겨 제한을 없앨 수 있습니다. 하지만 구문 분석에 오랜 시간이 걸릴 수 있게 됩니다.

date gem을 3.2.1, 3.1.2, 3.0.2, 2.0.1 이상 버전으로 업데이트하시기 바랍니다. gem update date를 사용해 업데이트할 수 있습니다. bundler를 사용한다면, Gemfilegem "date", ">= 3.2.1"을 추가하세요. 다른 방법으로 Ruby 3.0.3, 2.7.5, 2.6.9 이상 버전으로 업데이트할 수도 있습니다.

해당 버전

  • date gem 2.0.0 이하 (Ruby 2.6.9 이하의 Ruby 2.6 버전대에 포함된 버전)
  • date gem 3.0.1 이하 (Ruby 2.7.5 이하의 Ruby 2.7 버전대에 포함된 버전)
  • date gem 3.1.1 이하 (Ruby 3.0.3 이하의 Ruby 3.0 버전대에 포함된 버전)
  • date gem 3.2.0 이하

도움을 준 사람

이 문제를 발견해 준 svalkanov에게 감사를 표합니다.

수정 이력

  • 2021-11-15 08:00:00 (UTC) 최초 공개
  • 2021-11-24 13:20:00 (UTC) 새 Ruby 릴리스 언급