Wins blog

글로벌 정보보안 파트너! Global Security  No.1 윈스는 국가대표 정보보안 기업에서 글로벌 강소기업으로 도약합니다.

보안 정보

앞 내용 보기 다음 내용 보기
취약점 정보수천개의 프로젝트에 영향을 미치는 Zip Slip 취약점
작성일 2018-06-12 조회 81

 

보안회사인 Snyk의 조사에 따르면 수천건의 프로젝트가 심각한 취약성의 영향을받을 수 있다는 사실이 밝혀졌습니다.


공격자는 Path Travel 취약점을 악용하는 Zip 압축파일을 만들어 타겟시스템의 중요 파일을 OverWrite 할 수 있습니다.  웹사이트 또는 실행중인 PC의 유명한 어플리케이션이나 시스템파일을 타겟으로 OverWrite 공격해 원격코드를 실행 할 수 있습니다.

Zip Slip 취약점은  Zip file format과 상관없이 발생하며, 많은 수의 프로젝트를 통해 취약한 몇몇 프로그램에서 반복적으로 발생해 문제를 일으킵니다.

취약한 코드는 다양한 언어로 다수의 소프트웨어 라이브러리에 존재하며 영향을 받는 범위가 넒이짐에 따라 취약점의 수정을 더욱 어렵게 만들고 있습니다.

 

이러한 취약점은 JavaScript, Ruby, Java, .NET, Go 등의 다양한 프로그래밍 언어로 작성 된 Google, Oracle, IBM, Apache, Amazon, Spring/Pivotal, Linkedin, Twitter, Alibaba, Eclipse, OWASP, ElasticSearch, JetBrains 등의 수 천 개의 프로젝트가 취약한 코드 및 라이브러리를 포함하고 있습니다.

본 취약점은 압축 파일의 압축을 해제할 때 디렉토리 탐색(Directory traversal) 공격을 통해 촉발 되는 임의 파일 덮어쓰기 취약점이며 tar, jar, war, cpio, apk, rar, 7z를 포함한 많은 압축 포맷에 영향을 미칩니다.
공격자는 디렉토리 탐색이 가능한 파일명을 사용하는 특별히 제작 된 압축 파일을 사용함으로써 타겟시스템에서 중요 파일을 덮어씌어 임의 코드를 실행할 수 있다.

 

 

$ 7z l zip-slip.zip
   Date      Time    Attr         Size   Compressed  Name
------------------- ----- ------------ ------------  ------------------------
2018-04-15 22:04:29 .....           19           19  good.txt
2018-04-15 22:04:42 .....           20           20  ../../../../../../../../../../../../../../../../../../../../../../../../../../../../../../../../
../../../../../../../../tmp/evil.txt
------------------- ----- ------------ ------------  ------------------------
2018-04-15 22:04:42                 39           39  2 files

 

 

 

 

 

 

 

 

 

타겟 시스템의 사용자는 취약한 코드나 라이브러리를 통해 압축이 해제 될 경우 공격자들이 지정 된 폴더의 외부에 악성 파일이 설치됩니다. 구성 파일이나 다른 민감한 리소스를 덮어쓰기 함으로써 데미지를 입힐 수 있습니다. 

Zip Slip 취약점은 ../../evil.sh. 우편 슬립 취약점을 포함, 다수의 아카이브 형식에 영향을 미칠 수 있습니다. (ar, jar, war, cpio, apk, rar,7z 등)

 

다음은 ZipEntry경로 유효성 검사없이 대상 디렉터리에 연결 되는 경로 를 보여주는 취약한 코드 예 입니다. 수천 개의 응용 프로그램이 사용하는 라이브러리를 비롯하여 많은 저장소에서 이와 유사한 코드가 발견되었습니다

 

 

   Enumeration entries = zip.getEntries();
   while (entries.hasMoreElements()) {
      ZipEntry e = entries.nextElement();
      File f = new File(destinationDir, e.getName());
      InputStream input = zip.getInputStream(e);
      IOUtils.copy(input, write(f));
   }

 

 

 


영향을 받는 라이브러리

 

Affected Libraries (https://github.com/snyk/zip-slip-vulnerability)

 

 

Projects Affected and Fixed (https://github.com/snyk/zip-slip-vulnerability)

 

 

WINS Sniper 제품군 대응 방안

Sniper-UTM

[805374587] Zip Slip Achiver Library Directory Traversal
[805374588] Zip Slip Achiver Library Directory Traversal.A

Wins권고 Snort 사용자 정의 패턴 

alert tcp any 80 -> any any (msg:"Zip Slip Achiver Library Directory Traversal"; flow:to_client; content:"|00 00 00 2E 2E 2F 2E 2E 2F 2E 2E 2F 2E 2E 2F 2E 2E 2F 2E 2E 2F 2E 2E 2F 2E 2E 2F 2E 2E 2F 2E 2E 2F 2E 2E 2F 2E 2E 2F 2E 2E 2F|"; content:"Content-Type|3A 20|application|2F|zip|0D 0A|"; priority:1; sid:0;)
alert tcp any 80 -> any any (msg:"Zip Slip Achiver Library Directory Traversal.A"; flow:to_client; content:"|00 00 00 2E 2E 5C 2E 2E 5C 2E 2E 5C 2E 2E 5C 2E 2E 5C 2E 2E 5C 2E 2E 5C 2E 2E 5C 2E 2E 5C 2E 2E 5C 2E 2E 5C 2E 2E 5C 2E 2E 5C|"; content:"Content-Type|3A 20|application|2F|zip|0D 0A|"; priority:1; sid:0;)

 

 

 

 

해결방안

각 벤더사에서 제공하는 최신의 패치를 적용한다.
https://github.com/snyk/zip-slip-vulnerability

 

 

 

참조
https://github.com/snyk/zip-slip-vulnerability
https://snyk.io/research/zip-slip-vulnerability

첨부파일 첨부파일이 없습니다.
태그 Zip Slip