보안 코딩 기술: Zip 라이브러리의 기본 동작으로 원격 코드 실행으로 이어질 수 있습니다.
이번 주에 우리는 Zip 라이브러리의 기본 동작에 대해 이야기 할 것입니다. 응용 프로그램 개발자인 경우 이전에 이 것을 사용한 가능성이 매우 높습니다. 인터넷을 통해 다운로드되는 대부분의 리소스는 zip 형식으로 되어 있습니다. 압축 된 데이터는 작기 때문에 더 빨리 다운로드되고 대역폭을 적게 소비합니다.
좀 더 구체적인 예를 원한다면: 게임 텍스처, 키보드에서 자동 완성을 위한 언어 팩, ... 많은 리소스가 응용 프로그램과 함께 자동으로 번들로 제공되는 것이 아니라 나중에 다운로드됩니다.
그러나 이 기능을 사용할 때는 zip 아카이브의 파일 이름에 경로 통과 정보가 포함될 수 있습니다. 추출하면 의도한 디렉터리 외부에서 파일이 생성됩니다. 이것은 종종 기존 파일을 덮어 쓰려는 의도로 수행됩니다.
다음 두 파일이 포함된 zip 아카이브가 있다고 가정해 보겠습니다.
파일1
.. /file2
이 아카이브를 추출하면 zip 디렉토리에서 file1이 예상되는 곳에서 추출됩니다. 그러나 file2는 지퍼 라이브러리에 아카이브를 추출하도록 요청한 곳보다 높은 하나의 디렉터리로 작성되었습니다.
따라서 zip 라이브러리가 이 경우를 제대로 처리하지 않으면 공격자가 시스템에 임의파일을 작성할 수 있습니다. 라이브러리가 안전한지 항상 확인하면 이 엄지 손가락 규칙은 라이브러리에 유효하지만 특히 이러한 유형의 파일에 대해 zip 라이브러리의 기본 동작을 확인하는 것을 알고 있습니다.
이 사례가 Android에서 제대로 처리되지 않을 때 결과를 입증할 수 있습니다. Android에서는 Java Zip 라이브러리(java.util.zip)가 사용되며, 라이브러리는 기본적으로 위에서 설명한 대로 경로를 통과할 수 있도록 합니다.
Androids Dalvik 실행 형식(.dex)은 단일 파일이 가질 수 있는 클래스의 양에 제한이 있습니다. 더 많은 클래스가 필요한 앱은 API 레벨 21(Android 5.0 롤리팝)부터 추가된 MultiDex 지원 라이브러리를 사용할 수 있습니다. 이 라이브러리는 응용 프로그램의 데이터 디렉터리에서 보조 .dex 파일을 저장하고, 이 디렉토리는 앱 사용자가 writable이며.dex 파일이 필요할 때이 코드를 로드하고 실행합니다.
즉, 공격자가 악의적인 zip 아카이브를 사용하여 오버라이팅하여 .dex 파일을 수정할 수 있으며, 더 나쁜 경우 이 파일이 로드되고 실행되어 원격 코드 실행 취약점이 발생합니다. 이것은 단지 이론적 예가 아니라 앱 스토어에서 1억 다운로드를 기록한 앱 마이 토킹 톰(My Talking Tom)에서 입증되었습니다. 다음은 블랙 햇에서 선보인 악용 동영상입니다.
항상 zip 라이브러리의 동작을 확인하여 불안감을 인식하십시오. zip 라이브러리에서 경로 통과를 비활성화할 수 없는 경우 각 항목을 추출하기 전에 각 항목의 이름을 유효성검사해야 합니다. 이름은 정식화되어야 하며 결과 경로는 아카이브를 추출하려는 디렉터리에 있어야 합니다. 우리는 그것에 있는 동안, 당신은 또한 zip 폭탄을 방지 하기 위해 추출 된 아카이브의 총 크기를 확인 해야, 하지만이 또 다른 주에 대 한 게시물 될 것입니다.
경로 통과에 대한 몇 가지 문제를 해결하거나 보안 코딩 기술을 테스트하려면 플랫폼을 확인하십시오.
다음에 당신을 보고, 기억, 보안 코드 또는 아니 코드!
- 임의의 수의 "로 이름이 미리 고정된 지퍼에 파일을 삽입할 수 있습니다. / "
- 지퍼 라이브러리가이 경우를 제대로 처리하지 않으면 의도 된 추출 디렉토리 외부에서 작성 할 수 있습니다.
- zip 파일이 신뢰할 수 없는 경우 공격자에게 임의쓰기 취약점이 제공됩니다.
응용 프로그램 보안 연구원 - R&D 엔지니어 - 박사 후보
Secure Code Warrior 는 전체 소프트웨어 개발 수명 주기에서 코드를 보호하고 사이버 보안을 최우선으로 생각하는 문화를 조성할 수 있도록 도와드립니다. 앱 보안 관리자, 개발자, CISO 등 보안과 관련된 모든 사람이 안전하지 않은 코드와 관련된 위험을 줄일 수 있도록 도와드릴 수 있습니다.
데모 예약응용 프로그램 보안 연구원 - R&D 엔지니어 - 박사 후보
이번 주에 우리는 Zip 라이브러리의 기본 동작에 대해 이야기 할 것입니다. 응용 프로그램 개발자인 경우 이전에 이 것을 사용한 가능성이 매우 높습니다. 인터넷을 통해 다운로드되는 대부분의 리소스는 zip 형식으로 되어 있습니다. 압축 된 데이터는 작기 때문에 더 빨리 다운로드되고 대역폭을 적게 소비합니다.
좀 더 구체적인 예를 원한다면: 게임 텍스처, 키보드에서 자동 완성을 위한 언어 팩, ... 많은 리소스가 응용 프로그램과 함께 자동으로 번들로 제공되는 것이 아니라 나중에 다운로드됩니다.
그러나 이 기능을 사용할 때는 zip 아카이브의 파일 이름에 경로 통과 정보가 포함될 수 있습니다. 추출하면 의도한 디렉터리 외부에서 파일이 생성됩니다. 이것은 종종 기존 파일을 덮어 쓰려는 의도로 수행됩니다.
다음 두 파일이 포함된 zip 아카이브가 있다고 가정해 보겠습니다.
파일1
.. /file2
이 아카이브를 추출하면 zip 디렉토리에서 file1이 예상되는 곳에서 추출됩니다. 그러나 file2는 지퍼 라이브러리에 아카이브를 추출하도록 요청한 곳보다 높은 하나의 디렉터리로 작성되었습니다.
따라서 zip 라이브러리가 이 경우를 제대로 처리하지 않으면 공격자가 시스템에 임의파일을 작성할 수 있습니다. 라이브러리가 안전한지 항상 확인하면 이 엄지 손가락 규칙은 라이브러리에 유효하지만 특히 이러한 유형의 파일에 대해 zip 라이브러리의 기본 동작을 확인하는 것을 알고 있습니다.
이 사례가 Android에서 제대로 처리되지 않을 때 결과를 입증할 수 있습니다. Android에서는 Java Zip 라이브러리(java.util.zip)가 사용되며, 라이브러리는 기본적으로 위에서 설명한 대로 경로를 통과할 수 있도록 합니다.
Androids Dalvik 실행 형식(.dex)은 단일 파일이 가질 수 있는 클래스의 양에 제한이 있습니다. 더 많은 클래스가 필요한 앱은 API 레벨 21(Android 5.0 롤리팝)부터 추가된 MultiDex 지원 라이브러리를 사용할 수 있습니다. 이 라이브러리는 응용 프로그램의 데이터 디렉터리에서 보조 .dex 파일을 저장하고, 이 디렉토리는 앱 사용자가 writable이며.dex 파일이 필요할 때이 코드를 로드하고 실행합니다.
즉, 공격자가 악의적인 zip 아카이브를 사용하여 오버라이팅하여 .dex 파일을 수정할 수 있으며, 더 나쁜 경우 이 파일이 로드되고 실행되어 원격 코드 실행 취약점이 발생합니다. 이것은 단지 이론적 예가 아니라 앱 스토어에서 1억 다운로드를 기록한 앱 마이 토킹 톰(My Talking Tom)에서 입증되었습니다. 다음은 블랙 햇에서 선보인 악용 동영상입니다.
항상 zip 라이브러리의 동작을 확인하여 불안감을 인식하십시오. zip 라이브러리에서 경로 통과를 비활성화할 수 없는 경우 각 항목을 추출하기 전에 각 항목의 이름을 유효성검사해야 합니다. 이름은 정식화되어야 하며 결과 경로는 아카이브를 추출하려는 디렉터리에 있어야 합니다. 우리는 그것에 있는 동안, 당신은 또한 zip 폭탄을 방지 하기 위해 추출 된 아카이브의 총 크기를 확인 해야, 하지만이 또 다른 주에 대 한 게시물 될 것입니다.
경로 통과에 대한 몇 가지 문제를 해결하거나 보안 코딩 기술을 테스트하려면 플랫폼을 확인하십시오.
다음에 당신을 보고, 기억, 보안 코드 또는 아니 코드!
- 임의의 수의 "로 이름이 미리 고정된 지퍼에 파일을 삽입할 수 있습니다. / "
- 지퍼 라이브러리가이 경우를 제대로 처리하지 않으면 의도 된 추출 디렉토리 외부에서 작성 할 수 있습니다.
- zip 파일이 신뢰할 수 없는 경우 공격자에게 임의쓰기 취약점이 제공됩니다.
이번 주에 우리는 Zip 라이브러리의 기본 동작에 대해 이야기 할 것입니다. 응용 프로그램 개발자인 경우 이전에 이 것을 사용한 가능성이 매우 높습니다. 인터넷을 통해 다운로드되는 대부분의 리소스는 zip 형식으로 되어 있습니다. 압축 된 데이터는 작기 때문에 더 빨리 다운로드되고 대역폭을 적게 소비합니다.
좀 더 구체적인 예를 원한다면: 게임 텍스처, 키보드에서 자동 완성을 위한 언어 팩, ... 많은 리소스가 응용 프로그램과 함께 자동으로 번들로 제공되는 것이 아니라 나중에 다운로드됩니다.
그러나 이 기능을 사용할 때는 zip 아카이브의 파일 이름에 경로 통과 정보가 포함될 수 있습니다. 추출하면 의도한 디렉터리 외부에서 파일이 생성됩니다. 이것은 종종 기존 파일을 덮어 쓰려는 의도로 수행됩니다.
다음 두 파일이 포함된 zip 아카이브가 있다고 가정해 보겠습니다.
파일1
.. /file2
이 아카이브를 추출하면 zip 디렉토리에서 file1이 예상되는 곳에서 추출됩니다. 그러나 file2는 지퍼 라이브러리에 아카이브를 추출하도록 요청한 곳보다 높은 하나의 디렉터리로 작성되었습니다.
따라서 zip 라이브러리가 이 경우를 제대로 처리하지 않으면 공격자가 시스템에 임의파일을 작성할 수 있습니다. 라이브러리가 안전한지 항상 확인하면 이 엄지 손가락 규칙은 라이브러리에 유효하지만 특히 이러한 유형의 파일에 대해 zip 라이브러리의 기본 동작을 확인하는 것을 알고 있습니다.
이 사례가 Android에서 제대로 처리되지 않을 때 결과를 입증할 수 있습니다. Android에서는 Java Zip 라이브러리(java.util.zip)가 사용되며, 라이브러리는 기본적으로 위에서 설명한 대로 경로를 통과할 수 있도록 합니다.
Androids Dalvik 실행 형식(.dex)은 단일 파일이 가질 수 있는 클래스의 양에 제한이 있습니다. 더 많은 클래스가 필요한 앱은 API 레벨 21(Android 5.0 롤리팝)부터 추가된 MultiDex 지원 라이브러리를 사용할 수 있습니다. 이 라이브러리는 응용 프로그램의 데이터 디렉터리에서 보조 .dex 파일을 저장하고, 이 디렉토리는 앱 사용자가 writable이며.dex 파일이 필요할 때이 코드를 로드하고 실행합니다.
즉, 공격자가 악의적인 zip 아카이브를 사용하여 오버라이팅하여 .dex 파일을 수정할 수 있으며, 더 나쁜 경우 이 파일이 로드되고 실행되어 원격 코드 실행 취약점이 발생합니다. 이것은 단지 이론적 예가 아니라 앱 스토어에서 1억 다운로드를 기록한 앱 마이 토킹 톰(My Talking Tom)에서 입증되었습니다. 다음은 블랙 햇에서 선보인 악용 동영상입니다.
항상 zip 라이브러리의 동작을 확인하여 불안감을 인식하십시오. zip 라이브러리에서 경로 통과를 비활성화할 수 없는 경우 각 항목을 추출하기 전에 각 항목의 이름을 유효성검사해야 합니다. 이름은 정식화되어야 하며 결과 경로는 아카이브를 추출하려는 디렉터리에 있어야 합니다. 우리는 그것에 있는 동안, 당신은 또한 zip 폭탄을 방지 하기 위해 추출 된 아카이브의 총 크기를 확인 해야, 하지만이 또 다른 주에 대 한 게시물 될 것입니다.
경로 통과에 대한 몇 가지 문제를 해결하거나 보안 코딩 기술을 테스트하려면 플랫폼을 확인하십시오.
다음에 당신을 보고, 기억, 보안 코드 또는 아니 코드!
- 임의의 수의 "로 이름이 미리 고정된 지퍼에 파일을 삽입할 수 있습니다. / "
- 지퍼 라이브러리가이 경우를 제대로 처리하지 않으면 의도 된 추출 디렉토리 외부에서 작성 할 수 있습니다.
- zip 파일이 신뢰할 수 없는 경우 공격자에게 임의쓰기 취약점이 제공됩니다.
이번 주에 우리는 Zip 라이브러리의 기본 동작에 대해 이야기 할 것입니다. 응용 프로그램 개발자인 경우 이전에 이 것을 사용한 가능성이 매우 높습니다. 인터넷을 통해 다운로드되는 대부분의 리소스는 zip 형식으로 되어 있습니다. 압축 된 데이터는 작기 때문에 더 빨리 다운로드되고 대역폭을 적게 소비합니다.
좀 더 구체적인 예를 원한다면: 게임 텍스처, 키보드에서 자동 완성을 위한 언어 팩, ... 많은 리소스가 응용 프로그램과 함께 자동으로 번들로 제공되는 것이 아니라 나중에 다운로드됩니다.
그러나 이 기능을 사용할 때는 zip 아카이브의 파일 이름에 경로 통과 정보가 포함될 수 있습니다. 추출하면 의도한 디렉터리 외부에서 파일이 생성됩니다. 이것은 종종 기존 파일을 덮어 쓰려는 의도로 수행됩니다.
다음 두 파일이 포함된 zip 아카이브가 있다고 가정해 보겠습니다.
파일1
.. /file2
이 아카이브를 추출하면 zip 디렉토리에서 file1이 예상되는 곳에서 추출됩니다. 그러나 file2는 지퍼 라이브러리에 아카이브를 추출하도록 요청한 곳보다 높은 하나의 디렉터리로 작성되었습니다.
따라서 zip 라이브러리가 이 경우를 제대로 처리하지 않으면 공격자가 시스템에 임의파일을 작성할 수 있습니다. 라이브러리가 안전한지 항상 확인하면 이 엄지 손가락 규칙은 라이브러리에 유효하지만 특히 이러한 유형의 파일에 대해 zip 라이브러리의 기본 동작을 확인하는 것을 알고 있습니다.
이 사례가 Android에서 제대로 처리되지 않을 때 결과를 입증할 수 있습니다. Android에서는 Java Zip 라이브러리(java.util.zip)가 사용되며, 라이브러리는 기본적으로 위에서 설명한 대로 경로를 통과할 수 있도록 합니다.
Androids Dalvik 실행 형식(.dex)은 단일 파일이 가질 수 있는 클래스의 양에 제한이 있습니다. 더 많은 클래스가 필요한 앱은 API 레벨 21(Android 5.0 롤리팝)부터 추가된 MultiDex 지원 라이브러리를 사용할 수 있습니다. 이 라이브러리는 응용 프로그램의 데이터 디렉터리에서 보조 .dex 파일을 저장하고, 이 디렉토리는 앱 사용자가 writable이며.dex 파일이 필요할 때이 코드를 로드하고 실행합니다.
즉, 공격자가 악의적인 zip 아카이브를 사용하여 오버라이팅하여 .dex 파일을 수정할 수 있으며, 더 나쁜 경우 이 파일이 로드되고 실행되어 원격 코드 실행 취약점이 발생합니다. 이것은 단지 이론적 예가 아니라 앱 스토어에서 1억 다운로드를 기록한 앱 마이 토킹 톰(My Talking Tom)에서 입증되었습니다. 다음은 블랙 햇에서 선보인 악용 동영상입니다.
항상 zip 라이브러리의 동작을 확인하여 불안감을 인식하십시오. zip 라이브러리에서 경로 통과를 비활성화할 수 없는 경우 각 항목을 추출하기 전에 각 항목의 이름을 유효성검사해야 합니다. 이름은 정식화되어야 하며 결과 경로는 아카이브를 추출하려는 디렉터리에 있어야 합니다. 우리는 그것에 있는 동안, 당신은 또한 zip 폭탄을 방지 하기 위해 추출 된 아카이브의 총 크기를 확인 해야, 하지만이 또 다른 주에 대 한 게시물 될 것입니다.
경로 통과에 대한 몇 가지 문제를 해결하거나 보안 코딩 기술을 테스트하려면 플랫폼을 확인하십시오.
다음에 당신을 보고, 기억, 보안 코드 또는 아니 코드!
- 임의의 수의 "로 이름이 미리 고정된 지퍼에 파일을 삽입할 수 있습니다. / "
- 지퍼 라이브러리가이 경우를 제대로 처리하지 않으면 의도 된 추출 디렉토리 외부에서 작성 할 수 있습니다.
- zip 파일이 신뢰할 수 없는 경우 공격자에게 임의쓰기 취약점이 제공됩니다.