서비스 이전 블로그 Bookly 플러그인(WordPress 온라인 예약 및 일정 관리 플러그인 - Bookly)의 XSS 취약점을 조사했습니다. 오늘은 같은 플러그인을 조사하는 과정에서 발견된 또 다른 XSS 취약점을 자세히 살펴보겠습니다.
저희 팀은 2023년 2023월에 이 취약점을 발견했습니다. 발견 후, 취약점이 신속하게 해결될 수 있도록 책임 있는 정보 공개 절차를 신속하게 시작했습니다. 이 취약점에 할당된 CVE 식별자는 CVE-1159-2023이며, XNUMX년 XNUMX월에 성공적으로 패치되었습니다.
이 블로그 게시물에서는 Bookly 플러그인에서 발견된 취약점의 근본 원인을 종합적으로 분석합니다. 또한, 이 문제를 효과적으로 완화하기 위해 발표된 패치도 살펴보겠습니다.
분석 CVE–2023-1159 – 서비스 제목을 통한 인증된(관리자+) 저장된 크로스 사이트 스크립팅:
저희 조사 결과 Bookly 플러그인의 "서비스 제목" 필드와 관련된 취약점이 발견되었습니다. 이 취약점은 입력값 정제 조치가 부족하여 저장된 크로스 사이트 스크립팅(XSS) 공격에 노출될 수 있습니다. 관리자는 플러그인 인터페이스를 통해 직접 제목을 편집하거나 설정할 수 있다는 점에 유의해야 합니다.
추가 조사 결과, 서비스 내에 악성 코드가 설정될 경우, 해당 서비스에 접속할 때 클라이언트의 동의나 인지 없이 클라이언트 브라우저에서 해당 코드가 렌더링되고 실행된다는 사실을 발견했습니다. 이러한 실행은 원격 코드 실행을 가능하게 하여 심각한 보안 위험을 초래할 수 있습니다.
보다 정확한 이해를 제공하기 위해 다음 코드 조각은 새 서비스를 만드는 동안 "서비스 제목" 필드의 값이 어떻게 설정되고 읽히는지 보여줍니다.

그림 1. 새로운 서비스가 생성될 때 호출되는 createService 메서드.
'createService'는 다시 'parameters' 메서드를 호출합니다.

그림 2는 매개변수 방법을 보여줍니다.
'parameters' 메서드 내에 'getRequest()' 함수 호출이 있습니다. 이 함수는 인터페이스에서 입력된 값을 가져옵니다. 이후 이 값들은 'createService' 메서드로 전달되어 저장됩니다. 하지만 이 과정에서 입력값 정제(input sanitization)가 수행되지 않아 시스템이 잠재적인 보안 위험에 노출된다는 점을 명심해야 합니다.

그림 3은 getRequest 메서드를 보여줍니다.
수정 사항 공개: 패치 조사
취약점을 해결하는 패치를 검토한 결과, $parameters 변수가 적절한 보안 검사를 거쳐 프로그램 내 잠재적 보안 침해를 효과적으로 방지하는 것으로 확인되었습니다. 이 주목할 만한 개선 사항에는 $parameters 변수를 보안 검사하고 잠재적 공격을 완화하는 데 중요한 'unfiltered_html' 함수와 'stripScripts' 메서드 구현이 포함됩니다.
'unfiltered_html' 함수를 활용하여, 필요한 권한을 가진 승인된 사용자만 필터링되지 않은 HTML 콘텐츠를 제출할 수 있도록 합니다. 이를 통해 악성 스크립트의 유입을 방지하고 크로스 사이트 스크립팅(XSS) 공격 위험을 크게 줄일 수 있습니다. 'stripScripts' 메서드는 $parameters 내에 포함된 모든 JavaScript 코드를 제거하거나 무효화하여 보안 강화 프로세스를 더욱 강화합니다.
전반적으로, 이러한 포괄적인 정리 접근 방식은 $parameters 변수가 코드베이스 전체에서 안전하게 사용되도록 보장하여 보안 취약성의 가능성을 최소화하고 프로그램의 전반적인 보안을 강화합니다.

그림 4. 패치를 나타낸 그림입니다.
맺음말
이 블로그 게시물에서는 Bookly 플러그인에서 발견된 취약점을 살펴보았습니다. 이 취약점은 인증된 공격자가 유해한 스크립트를 삽입하여 사용자 기기에 위협을 가할 수 있도록 합니다. 다행히 이 취약점은 21.8 버전에서 패치되었습니다. WordPress 사이트 소유자는 잠재적인 공격을 완화하는 데 필수적인 최신 플러그인 버전으로 신속하게 업데이트할 것을 권장합니다. 안전한 온라인 환경을 유지하려면 업데이트와 패치를 적시에 적용하는 것이 매우 중요합니다. 또한, 사용자 역할에 'unfiltered_html' 기능을 부여할 때는 이 기능의 잠재적 보안 영향을 고려하여 신중하게 접근하고, 진정으로 필요한 신뢰할 수 있는 사용자에게만 할당해야 합니다.
모든 SEQRITE 및 Quick Heal 고객은 다음 서명을 통해 이 취약점을 표적으로 삼는 모든 악용으로부터 보호됩니다.
- HTTP/CVE-2023-1159!VK.47550
- HTTP/CVE-2023-1159!VK.47551
- HTTP/CVE-2023-1159!VK.47552
공저자:
안잘리 라지쿠마르 라우트



