[하루한줄] CVE-2021-21972: VMware vCenter의 인증되지 않은 시스템 권한의 원격 코드 실행 취약점

URL

Unauthorized RCE in VMware vCenter

Target

  • vmware vcenter_server 7.0 U1c 이전
  • vmware vcenter_server 6.7 U3l 이전
  • vmware vcenter_server 6.5 U3n 이전

Explain

VMware 중앙 집중식 관리 유틸리티이며 여러 가상 시스템 및 ESXi 호스트와 구성 요소를 관리하는 vCenter에서 unrestricted file upload, path traversal 취약점을 이용한 원격 코드 실행 취약점에 대한 세부 정보가 공개되었습니다.

취약점이 존재하는 uploadova 엔드포인트의 경로인 /ui/vropspluginui/rest/services/* 는 인증 없이 접근할 수 있습니다.

@RequestMapping(value = {"/uploadova"}, method = {RequestMethod.POST})
    public void uploadOvaFile(@RequestParam(value = "uploadFile",required = true) CommonsMultipartFile uploadFile, HttpServletResponse response) throws Exception {
...
        if (!uploadFile.isEmpty()) {
            try {
                ...
                InputStream inputStream = uploadFile.getInputStream();
                File dir = new File("/tmp/unicorn_ova_dir");
                if (!dir.exists()) {
                    dir.mkdirs();
                } else {
                    String[] entries = dir.list();
                    String[] var9 = entries;
                    int var10 = entries.length;

                    for(int var11 = 0; var11 < var10; ++var11) {
                        String entry = var9[var11];
                        File currentFile = new File(dir.getPath(), entry);
                        currentFile.delete();
                    }

                    logger.info("Successfully cleaned : /tmp/unicorn_ova_dir");
                }

                TarArchiveInputStream in = new TarArchiveInputStream(inputStream);
                TarArchiveEntry entry = in.getNextTarEntry();
                ArrayList result = new ArrayList();
...

uploadova 는 아카이브 파일을 받아 /tmp/unicorn_ova_dir 경로에 해당 아카이브 파일을 열어 파일을 생성하는데, 생성되는 아카이브 내부의 파일 이름에 대한 검증이 없어 ../ 을 포함하여 원하는 위치에 파일 업로드가 가능합니다.

Windows의 경우 해커가 .jsp 형식의 웹 쉘을 마찬가지로 인증 없이 접근 가능한 엔드포인트 경로인 C:\ProgramData\VMware\vCenterServer\data\perfcharts\tc-instance\webapps\statsreport\ 에 업로드하고 접근하면 시스템 권한으로 vCenter 호스트에서 원격 코드 실행이 가능합니다.

이후 모든 엔드포인트가 인증 후 접근이 가능하도록 패치되었지만 여전히 파일 업로드 및 path traversal 취약점은 남아있기 때문에 인증된 클라이언트에 의한 공격에는 PoC가 유효한 것으로 알려졌습니다.