워드프레스는 다양한 플러그인을 사용하여 웹사이트를 제작하고 관리할 수 있는 인기 있는 콘텐츠 관리 시스템입니다. 60,000만 개 이상의 웹사이트에서 널리 사용되는 플러그인 중 하나는 "워드프레스 온라인 예약 및 일정 관리 플러그인 - Bookly"입니다. Bookly는 온라인 예약을 간소화하고 예약 프로세스를 자동화합니다. 하지만 다른 많은 워드프레스 플러그인과 마찬가지로 Bookly 역시 공격자의 악용에 취약할 수 있습니다.
2023년 3월, Quick Heal Security Labs는 Bookly 플러그인의 취약점을 발견했습니다. 취약점을 발견하자마자, 저희는 취약점이 신속하게 해결될 수 있도록 책임 있는 정보 공개 절차를 시작했습니다. 2023년 2023월 1172일, 저희는 취약점을 발견한 후 Bookly 플러그인 지원팀에 연락하여 모든 기술적인 세부 정보를 제공했습니다. 또한 plugins@wordpress.org와 Wordfence(CNA)에도 이 취약점을 알렸습니다. 해당 취약점은 신속하게 확인되었으며, CVE-9-2023 식별자가 지정되었습니다. Bookly 팀은 패치 개발을 진행하여 21.5.1년 XNUMX월 XNUMX일 버전 XNUMX로 출시했습니다.
이 게시물에서는 Bookly 플러그인에서 발견된 취약점의 근본 원인에 대한 철저한 분석을 수행하고, 이 문제를 해결하기 위해 발표된 패치를 살펴보겠습니다.
CVE 분석 – 2023-1172 – 이름 기반 인증되지 않은 저장형 크로스 사이트 스크립팅:
저희 조사 결과, Bookly 플러그인의 "성함" 필드는 부적절한 입력 데이터 정제 및 출력 이스케이프 처리로 인해 저장된 크로스 사이트 스크립팅(XSS) 공격에 취약한 것으로 나타났습니다. 추가 조사 결과, 이 플러그인은 사용자의 "성함" 입력을 여러 파일에서 재사용하여 악성 코드 삽입을 방지하기 위해 입력 데이터를 제대로 정제하고 이스케이프 처리하지 않을 경우 보안 침해 위험이 크게 증가한다는 사실을 발견했습니다. 아래 코드 조각은 "성함" 필드 값이 어떻게 활용되는지 보여줍니다.

아래에 표시된 것처럼 "전체 이름" 필드 값은 $codes 변수에 저장됩니다.

이후, 변수 $codes가 달력의 툴팁에 활용됩니다.

그러나 프로그램의 후반부에서 $codes 변수를 활용할 때 적절한 정리 조치가 부족한 것으로 보입니다.

문제 해결: 패치 살펴보기
취약점을 해결하는 패치를 검토한 결과, $codes 변수가 프로그램 내 잠재적인 보안 침해를 방지하기 위해 적절히 처리되었음을 확인했습니다. 특히, 이 패치는 PHP의 "strip_tags" 함수를 사용하여 $codes 변수를 처리하고 코드의 다른 곳에서 사용되기 전에 공격을 완화합니다.

맺음말
이 게시물에서는 Bookly 플러그인의 취약점을 강조했습니다. 이 취약점은 인증되지 않은 공격자가 악성 스크립트를 삽입하여 플러그인을 통해 캘린더 툴팁에 접근할 경우 사이트 소유자의 사이트 전체를 침해할 수 있습니다. 다행히 이 취약점은 21.5.1 버전에서 완전히 해결되었습니다. WordPress 사이트 소유자는 잠재적인 공격을 방지하기 위해 플러그인의 최신 패치 버전(본 게시 시점 기준 21.6 버전)으로 사이트를 업데이트할 것을 강력히 권장합니다.
전부의 SEQRITE Quick Heal 고객은 다음 시그니처를 통해 이 취약점을 악용한 모든 공격으로부터 보호됩니다.
- HTTP/CVE-2023-1172!VK.46842
- HTTP/CVE-2023-1172!VK.47543


