CVE-2021-4231

사이트 간 스크립팅
영향
Angular
<=11.1.0
in
Angular
패치 사용 가능
이 취약점은 HeroDevs에서 제공하는 네버엔딩 지원(NES) 버전에서 수정되었습니다.

재현 단계

문제가 있는/보통으로 분류된 오랜 취약점이 여러 버전의 Angular 라이브러리에서 발견되었습니다. CVE-2021-4231은 버전 6에서 처음 등장한 크로스 사이트 스크립팅(XSS) 취약점으로, 최근까지 발견되지 않았습니다.

이 문제는 서버 측 렌더링(SSR) 중에 코드 주석이 파싱되는 방식과 관련이 있습니다. 파서가 주석을 조기에 닫아(아래 재현 단계 참조) 취약점이 노출될 수 있습니다. 이 취약점이 악용되면 악성 스크립트가 실행되어 민감한 데이터에 무단으로 액세스하거나 사용자 세션을 탈취할 수 있습니다.

다른 보안 권고에서는 이 문제를 해결하기 위해 버전 10.2.5 및 11.0.5로 업그레이드할 것을 권장하지만, 이 취약점은 버전 6, 7, 8 및 9에도 존재합니다.

아래에는 큰따옴표 사이에 닫는 댓글 마커가 텍스트로 추가되었습니다:

'<!-- The way you close a comment is with "-->". -->'

그러나 구문 분석기는 "-->"가 실제 닫는 주석 마커가 아니라 텍스트임을 구분할 수 없습니다. 구문 분석기가 주석을 조기에 닫아 코드가 잠재적인 XSS 취약점에 노출됩니다. 추가 주석 닫기 마커로는 ' -->'(초기 공백 포함) 및 '--!>'가 있으며, 이 두 가지 모두 취약점을 유발합니다.

문제 해결

패치는 텍스트 내의 닫는 주석 마커에 보이지 않는 공백 '-_-_>'(여기서 '_'는 폭이 0인 공백 '\u200B'입니다)를 추가하여 파서가 이를 실제 닫는 주석 마커로 식별하지 못하도록 합니다.

이 취약점은 처음에 Google에서 Angular v11 이상 버전에서 발견하여 수정했습니다. HeroDevs의 조사에 따르면 이 취약점은 LTS가 종료되어 더 이상 보안 업데이트를 받지 않는 이전 버전에도 영향을 미치는 것으로 확인되었습니다. HeroDevs Angular NES 클라이언트는 이 보안 패치에 대한 알림을 받고 안전한 버전의 Angular 6, 7, 8, 9, 10을 받았습니다. 아직 최신 버전을 설치하지 않았거나 도움이 필요한 경우 지원팀에 문의하여 도움을 받으세요.

다른 Angular 사용자는 즉시 업데이트해야 하며, 향후 취약점에 대해 HeroDevs로부터 신속한 Angular 보안 지원을 받는 것을 고려할 수 있습니다.

학습 및 예방

CVE-2021-4231은 식별 및 수정되기 전까지 많은 버전에서 탐지되지 않았기 때문에 유익한 정보입니다. 일반적으로 보안 버전을 최신으로 유지하는 것이 모범 사례로 간주됩니다. 하지만 이 취약점은 오랫동안 지속되어 온 취약점이었기 때문에 그것만으로는 충분하지 않았을 것입니다. 특히 이 경우에는 취약점에 대한 신속한 알림을 받고 프로덕션 코드를 매우 빠르게 업데이트할 수 있는 것이 중요합니다.

결론

오래된 코드는 '실전 테스트'를 거쳤기 때문에 특히 가치가 있다고 여겨지지만, 오래된 소프트웨어의 구 버전에 숨어 있는 취약점을 발견할 수 있습니다. 히어로데브스는 네버엔딩 서포트 제품에서 발견된 모든 취약점을 지속적으로 파악하여 신속한 조치가 필요할 때 신속하게 알림을 받을 수 있도록 합니다.

Angular 및 지원 라이브러리에 대한 보안, 규정 준수 및 호환성 지원에 관심이 있으시면 지금 바로 문의해 주세요.

히어로데브의 최신 패치를 통해 시스템을 안전하게 보호하고 업데이트하세요. 더 많은 인사이트와 보안 업데이트를 확인하려면 블로그를 계속 팔로우하세요.

리소스