재현 단계
1.2.21부터 시작하는 Angular 버전에서는 angular.copy() 유틸리티 함수를 통해 정규 표현식 서비스 거부(ReDoS) 공격을 수행할 수 있습니다. 악의적인 공격자가 안전하지 않은 정규식을 신중하게 작성하여 함수에 제공하면 치명적인 역추적을 유발하고 시스템 리소스를 독점할 수 있습니다. 이 익스플로잇을 시연하는 개념 증명은 StackBlitz에서 확인할 수 있습니다.
문제 해결
이 익스플로잇에 대한 수정 사항은 AngularJS XLTS 버전 1.9.1 및 1.5.17에서 사용할 수 있으며 사이트 소유자는 해당 버전으로 업데이트해야 합니다.
학습 및 예방
리도스 공격은 표적 시스템이 오랜 시간이 걸리는 정규식 패턴 일치를 해결하려고 시도하여 시스템의 합법적인 사용자에 대한 서비스를 거부합니다. 이는 서비스 거부(DDoS) 공격의 한 형태입니다.
공격에서 정규식 엔진은 일치하는 항목을 찾기 위해 일련의 단계를 실행합니다. 이러한 단계 중 일부는 빠르게 완료될 수 있지만 다른 단계, 특히 실패하는 단계는 훨씬 더 오래 걸립니다. 이 경우 공격자가 신중하게 만든 정규식을 브라우저가 해결하려고 시도할 때 브라우저는 다른 일치 항목을 역추적하여 결과를 반환하는 데 상당한 시간이 소요될 수 있습니다.
결론
이 취약점에 설명된 수정 사항은 1.9.1에 포함되어 있으며, 아직 Angular 1.5를 사용 중인 HeroDevs AngularJS 네버엔딩 서포트 고객도 즉시 사용할 수 있습니다. 히어로데브 네버엔딩 서포트 구독을 통해 안심하고 사용하려면 지금 바로 영업팀에 문의하세요.
리소스
저희가 지원하는 오픈 소스 소프트웨어에서 새로운 취약점이 수정될 때마다 알림을 받으세요.