문 하나만 잠그고 자물쇠는 고치지 않은 패치 — OFBiz 인증 우회, 세 번째 재발

문 하나만 잠그고 자물쇠는 고치지 않은 패치 — OFBiz 인증 우회, 세 번째 재발

분류: CVE · 웹·서버 · 인증우회 · CVE-2023-51467 [정보성]

덱. SonicWall이 공개한 CVE-2023-51467은 오픈소스 전사적자원관리(ERP) 솔루션 Apache OFBiz의 인증 우회 취약점으로, 인증 없이 원격 코드 실행(RCE)까지 이어질 수 있습니다. 흥미로운 점은 이 취약점이 새로운 버그가 아니라, 앞선 두 차례의 패치가 근본원인은 남겨둔 채 증상만 막았기 때문에 다른 자리에서 다시 열린 같은 구멍이라는 것입니다.

리드

패치가 “이 요청은 막는다”는 식으로 증상만 틀어막고 “왜 이 요청이 원래 통과됐는가”라는 근본 로직은 고치지 않으면, 공격자는 막힌 문 옆의 다른 문을 두드립니다. 근본원인이 여전히 살아있는 한, 우회 기법 자체는 재사용되고 대상 엔드포인트만 바뀌는 것입니다. OFBiz의 인증 우회 계열(CVE-2020-9496 → CVE-2023-49070 → CVE-2023-51467)이 바로 이 패턴의 교과서적인 사례입니다.

핵심 사실 요약

  • CVE-2023-51467 개요. SonicWall이 공개한 Apache OFBiz의 인증 우회 취약점으로, /webtools/control/programexport 엔드포인트에 인증 없이 접근해 Groovy 스크립트를 실행시킬 수 있으며, 이를 통해 시스템 명령 실행까지 이어질 수 있다고 원문은 설명합니다.
  • 근본원인은 로그인 검증 로직의 논리 결함. 원문에 따르면 OFBiz의 로그인 확인 함수(LoginWorkercheckLogin)는 요청에 담긴 username/password/token 값이 비어 있는지만 확인합니다. 이 값들이 존재하면서 동시에 requirePasswordChange=Y 같은 파라미터가 함께 전달되면, 로그인 실패를 알리는 에러 대신 “비밀번호 변경 필요” 상태로 처리가 넘어가면서 애플리케이션이 이를 유효한 로그인으로 착각한다고 원문은 서술합니다. 이 논리 결함이 애초에 지목된 것은 이전 취약점인 CVE-2023-49070에서입니다.
  • 이전 CVE와의 관계 — 증상만 막은 패치. CVE-2023-49070은 이 로그인 우회 기법으로 /webtools/control/xmlrpc 엔드포인트의 인증 요구를 무력화해 RCE로 이어졌습니다. 원문은 이때의 대응이 로그인 로직 자체를 고치지 않고, /webtools/control/xmlrpc 엔드포인트의 XML-RPC 처리 기능을 제거하는 방식이었다고 짚습니다. 그 결과 같은 로그인 우회 기법은 그대로 남았고, 다른 엔드포인트(/webtools/control/programexport)를 통해 CVE-2023-51467로 재발했다고 설명합니다.
  • 더 거슬러 올라가는 계열. 원문은 이 계열의 출발점을 XML-RPC 역직렬화 취약점인 CVE-2020-9496까지 추적합니다. 당시에는 commons-beanutils 라이브러리 의존성을 이용한 역직렬화 가젯 체인(ysoserial)으로 RCE가 가능했고, 이 엔드포인트가 실제로 Syssrv 봇넷에 의해 악용된 이력이 있다고 원문은 언급합니다.
  • 실제 코드 변경(패치). 원문은 CVE-2023-51467 대응 과정에서 LoginWorker.java의 신구 버전을 비교했고, 기존의 값 존재 여부 확인 방식이 UtilValidate.isEmpty를 쓰는 방식으로 바뀌었으며, 로그인이 실패했을 때 requirePasswordChange 처리로 넘어가지 않도록 흐름 자체를 바꿔 우회 경로를 막았다고 설명합니다.
  • 인증 요구 여부. 원문에 서술된 바에 따르면 세 취약점(CVE-2020-9496, CVE-2023-49070, CVE-2023-51467) 모두 사전 인증 없이 원격에서 트리거 가능합니다.
  • 영향받는 버전·CVSS. 원문은 재현 실험에 release18.12.05 버전을 사용했다고만 언급하고 정확한 영향 버전 범위나 CVSS 점수는 본문에서 밝히지 않습니다. 별도로 Apache OFBiz 프로젝트 공식 보안 페이지와 NVD 등 복수 출처를 확인한 결과, CVE-2023-51467은 18.12.11 이전 모든 릴리스가 영향을 받고 18.12.11에서 수정되었으며, CVSS v3.1 기준 **9.8(Critical)**로 확인됩니다.

짧은 논평

이 세 취약점을 나란히 놓고 보면, 패치의 “완전성”을 어떻게 판단해야 하는지가 드러납니다. /webtools/control/xmlrpc 하나를 막는 패치는 눈앞의 익스플로잇 재현 절차는 무력화하지만, “로그인 로직이 특정 파라미터 조합에서 착각을 일으킨다”는 진짜 원인에는 손대지 않았습니다. 그러니 같은 로그인 우회 기법을 그대로 쓰면서 목적지 엔드포인트만 바꾸면 다시 뚫립니다. 저희가 패치 diff를 볼 때 “이 패치가 증상을 막았나, 원인을 막았나”를 항상 구분해서 보는 이유가 여기 있습니다 — 엔드포인트 하나를 잠그는 패치와, 그 엔드포인트를 열어준 판단 로직을 고치는 패치는 전혀 다른 수준의 수정입니다. OFBiz는 결국 세 번째 CVE에서야 로그인 검증 함수 자체를 고쳤고, 그전까지는 같은 틈이 이름만 바꿔 계속 열려 있었습니다.

References / 참고자료

  1. Manisha Kelkar, SecureLayer7 Blog, “Analysis Of Multiple Vulnerabilities In Ofbiz” — 이 글이 재구성한 원 분석. CVE-2020-9496·CVE-2023-49070·CVE-2023-51467 세 취약점의 연쇄 관계와 각 패치의 한계를 다룸. https://blog.securelayer7.net/ofbiz-authentication-bypass-cve-2023-51467/

이 글은 위 원 분석을 우리 관점에서 다시 쓰고 짧은 논평을 더한 정보성 초안입니다. 특정 문장·요청 페이로드·코드를 그대로 옮기지 않았으며, 작동하는 재현 절차는 싣지 않았습니다. ⚠️미확인 표시 항목은 발행 전 독립 팩트체크에서 확증·정정되어야 합니다.