Icônes SCW
héros bg sans séparateur
Blog

보안 코딩 기법: Zip 라이브러리의 기본 동작으로 인해 원격 코드 실행이 발생할 수 있습니다.

Pieter De Cremer
Publié le 13 novembre 2017
Dernière mise à jour le 9 mars 2026

이번 주에는 Zip 라이브러리의 기본 동작에 대해 이야기하겠습니다.응용 프로그램 개발자라면 이전에 이 기능을 사용해 보셨을 가능성이 큽니다.인터넷을 통해 다운로드되는 대부분의 리소스는 zip 형식이므로 의미가 있습니다. 압축된 데이터는 크기가 작기 때문에 다운로드 속도가 빠르고 대역폭을 적게 소비합니다.

좀 더 구체적인 예를 원한다면 게임용 텍스처, 키보드 자동 완성을 위한 언어 팩,...많은 리소스가 애플리케이션과 함께 자동으로 번들로 제공되지 않고 나중에 다운로드됩니다.

그러나 이 기능을 사용할 때는 주의해야 합니다. zip 아카이브의 파일 이름에 경로 탐색 정보가 포함될 수 있습니다.압축을 풀면 의도한 디렉토리 외부에 파일이 생성될 수 있습니다.이는 주로 기존 파일을 덮어쓰기 위한 목적으로 수행됩니다.

Archives Zip

다음 두 파일이 들어 있는 zip 아카이브가 있다고 가정해 보겠습니다.

파일 1
../파일2

이 아카이브를 추출하면 unzip 디렉터리에서 우리가 예상한 위치인 file1이 추출됩니다.하지만 file2는 zip 라이브러리에 아카이브의 압축을 풀도록 요청한 위치보다 한 디렉토리 위에 기록되었습니다.

따라서 zip 라이브러리가 이 문제를 제대로 처리하지 못하면 공격자가 시스템에 임의의 파일을 쓸 수 있으므로 주의하십시오.라이브러리가 안전한지 항상 확인하십시오. 이 규칙은 모든 라이브러리에 적용되지만, 특히 이러한 유형의 파일에 대해서는 zip 라이브러리의 기본 동작을 확인하는 것이 좋습니다.

Android에서 이 케이스가 제대로 처리되지 않을 때 어떤 결과가 발생하는지 설명해 보겠습니다.Android에서는 자바 Zip 라이브러리 (java.util.zip) 가 사용되며, 라이브러리는 기본적으로 위에서 설명한 대로 경로 탐사를 허용합니다.

Android Dalvik 실행 가능 형식 (.dex) 에는 단일 파일에 포함할 수 있는 클래스 수에 제한이 있습니다.클래스가 더 필요한 앱은 API 레벨 21 (Android 5.0 Lollipop) 이후 추가된 MultiDex 지원 라이브러리를 사용할 수 있습니다.이 라이브러리는 애플리케이션의 데이터 디렉터리에 보조.dex 파일을 저장합니다. 이 디렉터리는 앱 사용자가 쓸 수 있으며.dex 파일이 필요할 때 이 코드가 로드되어 실행됩니다.

즉, 공격자는 악의적인 zip 아카이브를 사용하여.dex 파일을 덮어써서 수정할 수 있으며, 심지어 이 파일이 로드되고 실행되어 원격 코드 실행에 취약해질 수 있습니다.이는 단순한 이론적인 예가 아니라 앱 스토어에서 1억 건 이상의 다운로드를 기록한 My Talking Tom 앱에서도 입증되었습니다.다음은 Black Hat에서 선보인 익스플로잇의 동영상입니다.

Talking Tom

항상 zip 라이브러리의 동작을 확인하여 안전하지 않은지 확인하십시오.zip 라이브러리에서 경로 탐색을 비활성화할 수 없는 경우 추출하기 전에 각 항목의 이름을 확인해야 합니다.이름은 정규화해야 하며 결과 경로는 아카이브를 추출하려는 디렉터리에 있어야 합니다.이 작업을 진행하는 동안 압축 폭탄이 발생하지 않도록 압축을 푼 아카이브의 전체 크기도 확인해야 합니다. 하지만 이 글은 앞으로 일주일 동안 게시할 예정입니다.

원하신다면 패스 트래버설에서 몇 가지 챌린지를 플레이하세요 또는 보안 코딩 기술을 테스트하고 싶다면 당사 플랫폼을 확인하세요.

다음에 만나요. 보안 코드 또는 노 코드 기억하세요!

- 이름 앞에 임의의 숫자가 "../“인 파일을 삽입할 수 있습니다.
- zip 라이브러리가 이 경우를 제대로 처리하지 않으면 의도한 추출 디렉토리 외부에서 쓸 수 있습니다.
- zip 파일을 신뢰할 수 없는 경우 공격자에게 임의 쓰기 취약점이 생깁니다.

https://www.blackhat.com/docs/ldn-15/materials/london-15-Welton-Abusing-Android-Apps-And-Gaining-Remote-Code-Execution.pdf

Consulter les ressources
Consulter les ressources

이름에 접두사가 붙은 zip에 파일을 삽입할 수 있습니다.

Souhaitez-vous en savoir davantage ?

Chercheur en sécurité applicative - Ingénieur R&D - Doctorant

En savoir plus

Secure Code Warrior est là pour aider les organisations à protéger leur code tout au long du cycle de vie du développement logiciel et à instaurer une culture qui accorde la priorité à la cybersécurité. Que vous soyez responsable de la sécurité des applications, développeur, responsable de la sécurité des systèmes d'information ou tout autre professionnel de la sécurité, nous pouvons aider votre organisation à réduire les risques liés au code non sécurisé.

Veuillez prendre rendez-vous pour une démonstration.
Destinataires :
marques LinkedInSocialLogo x
Auteur
Pieter De Cremer
Publié le 13 novembre 2017

Chercheur en sécurité applicative - Ingénieur R&D - Doctorant

Destinataires :
marques LinkedInSocialLogo x

이번 주에는 Zip 라이브러리의 기본 동작에 대해 이야기하겠습니다.응용 프로그램 개발자라면 이전에 이 기능을 사용해 보셨을 가능성이 큽니다.인터넷을 통해 다운로드되는 대부분의 리소스는 zip 형식이므로 의미가 있습니다. 압축된 데이터는 크기가 작기 때문에 다운로드 속도가 빠르고 대역폭을 적게 소비합니다.

좀 더 구체적인 예를 원한다면 게임용 텍스처, 키보드 자동 완성을 위한 언어 팩,...많은 리소스가 애플리케이션과 함께 자동으로 번들로 제공되지 않고 나중에 다운로드됩니다.

그러나 이 기능을 사용할 때는 주의해야 합니다. zip 아카이브의 파일 이름에 경로 탐색 정보가 포함될 수 있습니다.압축을 풀면 의도한 디렉토리 외부에 파일이 생성될 수 있습니다.이는 주로 기존 파일을 덮어쓰기 위한 목적으로 수행됩니다.

Archives Zip

다음 두 파일이 들어 있는 zip 아카이브가 있다고 가정해 보겠습니다.

파일 1
../파일2

이 아카이브를 추출하면 unzip 디렉터리에서 우리가 예상한 위치인 file1이 추출됩니다.하지만 file2는 zip 라이브러리에 아카이브의 압축을 풀도록 요청한 위치보다 한 디렉토리 위에 기록되었습니다.

따라서 zip 라이브러리가 이 문제를 제대로 처리하지 못하면 공격자가 시스템에 임의의 파일을 쓸 수 있으므로 주의하십시오.라이브러리가 안전한지 항상 확인하십시오. 이 규칙은 모든 라이브러리에 적용되지만, 특히 이러한 유형의 파일에 대해서는 zip 라이브러리의 기본 동작을 확인하는 것이 좋습니다.

Android에서 이 케이스가 제대로 처리되지 않을 때 어떤 결과가 발생하는지 설명해 보겠습니다.Android에서는 자바 Zip 라이브러리 (java.util.zip) 가 사용되며, 라이브러리는 기본적으로 위에서 설명한 대로 경로 탐사를 허용합니다.

Android Dalvik 실행 가능 형식 (.dex) 에는 단일 파일에 포함할 수 있는 클래스 수에 제한이 있습니다.클래스가 더 필요한 앱은 API 레벨 21 (Android 5.0 Lollipop) 이후 추가된 MultiDex 지원 라이브러리를 사용할 수 있습니다.이 라이브러리는 애플리케이션의 데이터 디렉터리에 보조.dex 파일을 저장합니다. 이 디렉터리는 앱 사용자가 쓸 수 있으며.dex 파일이 필요할 때 이 코드가 로드되어 실행됩니다.

즉, 공격자는 악의적인 zip 아카이브를 사용하여.dex 파일을 덮어써서 수정할 수 있으며, 심지어 이 파일이 로드되고 실행되어 원격 코드 실행에 취약해질 수 있습니다.이는 단순한 이론적인 예가 아니라 앱 스토어에서 1억 건 이상의 다운로드를 기록한 My Talking Tom 앱에서도 입증되었습니다.다음은 Black Hat에서 선보인 익스플로잇의 동영상입니다.

Talking Tom

항상 zip 라이브러리의 동작을 확인하여 안전하지 않은지 확인하십시오.zip 라이브러리에서 경로 탐색을 비활성화할 수 없는 경우 추출하기 전에 각 항목의 이름을 확인해야 합니다.이름은 정규화해야 하며 결과 경로는 아카이브를 추출하려는 디렉터리에 있어야 합니다.이 작업을 진행하는 동안 압축 폭탄이 발생하지 않도록 압축을 푼 아카이브의 전체 크기도 확인해야 합니다. 하지만 이 글은 앞으로 일주일 동안 게시할 예정입니다.

원하신다면 패스 트래버설에서 몇 가지 챌린지를 플레이하세요 또는 보안 코딩 기술을 테스트하고 싶다면 당사 플랫폼을 확인하세요.

다음에 만나요. 보안 코드 또는 노 코드 기억하세요!

- 이름 앞에 임의의 숫자가 "../“인 파일을 삽입할 수 있습니다.
- zip 라이브러리가 이 경우를 제대로 처리하지 않으면 의도한 추출 디렉토리 외부에서 쓸 수 있습니다.
- zip 파일을 신뢰할 수 없는 경우 공격자에게 임의 쓰기 취약점이 생깁니다.

https://www.blackhat.com/docs/ldn-15/materials/london-15-Welton-Abusing-Android-Apps-And-Gaining-Remote-Code-Execution.pdf

Consulter les ressources
Consulter les ressources

Veuillez remplir le formulaire ci-dessous pour télécharger le rapport.

Nous sollicitons votre consentement pour vous envoyer des informations sur nos produits et/ou sur des sujets liés au codage sécurisé. Nous traitons toujours vos informations personnelles avec la plus grande attention et ne les vendons jamais à d'autres entreprises à des fins marketing.

Soumission
icône de réussite scw
icône d'erreur scw
Veuillez activer le cookie « Analytics » pour soumettre le formulaire. Une fois terminé, vous pouvez le désactiver à tout moment.

이번 주에는 Zip 라이브러리의 기본 동작에 대해 이야기하겠습니다.응용 프로그램 개발자라면 이전에 이 기능을 사용해 보셨을 가능성이 큽니다.인터넷을 통해 다운로드되는 대부분의 리소스는 zip 형식이므로 의미가 있습니다. 압축된 데이터는 크기가 작기 때문에 다운로드 속도가 빠르고 대역폭을 적게 소비합니다.

좀 더 구체적인 예를 원한다면 게임용 텍스처, 키보드 자동 완성을 위한 언어 팩,...많은 리소스가 애플리케이션과 함께 자동으로 번들로 제공되지 않고 나중에 다운로드됩니다.

그러나 이 기능을 사용할 때는 주의해야 합니다. zip 아카이브의 파일 이름에 경로 탐색 정보가 포함될 수 있습니다.압축을 풀면 의도한 디렉토리 외부에 파일이 생성될 수 있습니다.이는 주로 기존 파일을 덮어쓰기 위한 목적으로 수행됩니다.

Archives Zip

다음 두 파일이 들어 있는 zip 아카이브가 있다고 가정해 보겠습니다.

파일 1
../파일2

이 아카이브를 추출하면 unzip 디렉터리에서 우리가 예상한 위치인 file1이 추출됩니다.하지만 file2는 zip 라이브러리에 아카이브의 압축을 풀도록 요청한 위치보다 한 디렉토리 위에 기록되었습니다.

따라서 zip 라이브러리가 이 문제를 제대로 처리하지 못하면 공격자가 시스템에 임의의 파일을 쓸 수 있으므로 주의하십시오.라이브러리가 안전한지 항상 확인하십시오. 이 규칙은 모든 라이브러리에 적용되지만, 특히 이러한 유형의 파일에 대해서는 zip 라이브러리의 기본 동작을 확인하는 것이 좋습니다.

Android에서 이 케이스가 제대로 처리되지 않을 때 어떤 결과가 발생하는지 설명해 보겠습니다.Android에서는 자바 Zip 라이브러리 (java.util.zip) 가 사용되며, 라이브러리는 기본적으로 위에서 설명한 대로 경로 탐사를 허용합니다.

Android Dalvik 실행 가능 형식 (.dex) 에는 단일 파일에 포함할 수 있는 클래스 수에 제한이 있습니다.클래스가 더 필요한 앱은 API 레벨 21 (Android 5.0 Lollipop) 이후 추가된 MultiDex 지원 라이브러리를 사용할 수 있습니다.이 라이브러리는 애플리케이션의 데이터 디렉터리에 보조.dex 파일을 저장합니다. 이 디렉터리는 앱 사용자가 쓸 수 있으며.dex 파일이 필요할 때 이 코드가 로드되어 실행됩니다.

즉, 공격자는 악의적인 zip 아카이브를 사용하여.dex 파일을 덮어써서 수정할 수 있으며, 심지어 이 파일이 로드되고 실행되어 원격 코드 실행에 취약해질 수 있습니다.이는 단순한 이론적인 예가 아니라 앱 스토어에서 1억 건 이상의 다운로드를 기록한 My Talking Tom 앱에서도 입증되었습니다.다음은 Black Hat에서 선보인 익스플로잇의 동영상입니다.

Talking Tom

항상 zip 라이브러리의 동작을 확인하여 안전하지 않은지 확인하십시오.zip 라이브러리에서 경로 탐색을 비활성화할 수 없는 경우 추출하기 전에 각 항목의 이름을 확인해야 합니다.이름은 정규화해야 하며 결과 경로는 아카이브를 추출하려는 디렉터리에 있어야 합니다.이 작업을 진행하는 동안 압축 폭탄이 발생하지 않도록 압축을 푼 아카이브의 전체 크기도 확인해야 합니다. 하지만 이 글은 앞으로 일주일 동안 게시할 예정입니다.

원하신다면 패스 트래버설에서 몇 가지 챌린지를 플레이하세요 또는 보안 코딩 기술을 테스트하고 싶다면 당사 플랫폼을 확인하세요.

다음에 만나요. 보안 코드 또는 노 코드 기억하세요!

- 이름 앞에 임의의 숫자가 "../“인 파일을 삽입할 수 있습니다.
- zip 라이브러리가 이 경우를 제대로 처리하지 않으면 의도한 추출 디렉토리 외부에서 쓸 수 있습니다.
- zip 파일을 신뢰할 수 없는 경우 공격자에게 임의 쓰기 취약점이 생깁니다.

https://www.blackhat.com/docs/ldn-15/materials/london-15-Welton-Abusing-Android-Apps-And-Gaining-Remote-Code-Execution.pdf

Veuillez consulter le webinaire.
Commencer
En savoir plus

Veuillez cliquer sur le lien ci-dessous pour télécharger le PDF de cette ressource.

Secure Code Warrior est là pour aider les organisations à protéger leur code tout au long du cycle de vie du développement logiciel et à instaurer une culture qui accorde la priorité à la cybersécurité. Que vous soyez responsable de la sécurité des applications, développeur, responsable de la sécurité des systèmes d'information ou tout autre professionnel de la sécurité, nous pouvons aider votre organisation à réduire les risques liés au code non sécurisé.

Consulter le rapportVeuillez prendre rendez-vous pour une démonstration.
Télécharger le PDF
Consulter les ressources
Destinataires :
marques LinkedInSocialLogo x
Souhaitez-vous en savoir davantage ?

Destinataires :
marques LinkedInSocialLogo x
Auteur
Pieter De Cremer
Publié le 13 novembre 2017

Chercheur en sécurité applicative - Ingénieur R&D - Doctorant

Destinataires :
marques LinkedInSocialLogo x

이번 주에는 Zip 라이브러리의 기본 동작에 대해 이야기하겠습니다.응용 프로그램 개발자라면 이전에 이 기능을 사용해 보셨을 가능성이 큽니다.인터넷을 통해 다운로드되는 대부분의 리소스는 zip 형식이므로 의미가 있습니다. 압축된 데이터는 크기가 작기 때문에 다운로드 속도가 빠르고 대역폭을 적게 소비합니다.

좀 더 구체적인 예를 원한다면 게임용 텍스처, 키보드 자동 완성을 위한 언어 팩,...많은 리소스가 애플리케이션과 함께 자동으로 번들로 제공되지 않고 나중에 다운로드됩니다.

그러나 이 기능을 사용할 때는 주의해야 합니다. zip 아카이브의 파일 이름에 경로 탐색 정보가 포함될 수 있습니다.압축을 풀면 의도한 디렉토리 외부에 파일이 생성될 수 있습니다.이는 주로 기존 파일을 덮어쓰기 위한 목적으로 수행됩니다.

Archives Zip

다음 두 파일이 들어 있는 zip 아카이브가 있다고 가정해 보겠습니다.

파일 1
../파일2

이 아카이브를 추출하면 unzip 디렉터리에서 우리가 예상한 위치인 file1이 추출됩니다.하지만 file2는 zip 라이브러리에 아카이브의 압축을 풀도록 요청한 위치보다 한 디렉토리 위에 기록되었습니다.

따라서 zip 라이브러리가 이 문제를 제대로 처리하지 못하면 공격자가 시스템에 임의의 파일을 쓸 수 있으므로 주의하십시오.라이브러리가 안전한지 항상 확인하십시오. 이 규칙은 모든 라이브러리에 적용되지만, 특히 이러한 유형의 파일에 대해서는 zip 라이브러리의 기본 동작을 확인하는 것이 좋습니다.

Android에서 이 케이스가 제대로 처리되지 않을 때 어떤 결과가 발생하는지 설명해 보겠습니다.Android에서는 자바 Zip 라이브러리 (java.util.zip) 가 사용되며, 라이브러리는 기본적으로 위에서 설명한 대로 경로 탐사를 허용합니다.

Android Dalvik 실행 가능 형식 (.dex) 에는 단일 파일에 포함할 수 있는 클래스 수에 제한이 있습니다.클래스가 더 필요한 앱은 API 레벨 21 (Android 5.0 Lollipop) 이후 추가된 MultiDex 지원 라이브러리를 사용할 수 있습니다.이 라이브러리는 애플리케이션의 데이터 디렉터리에 보조.dex 파일을 저장합니다. 이 디렉터리는 앱 사용자가 쓸 수 있으며.dex 파일이 필요할 때 이 코드가 로드되어 실행됩니다.

즉, 공격자는 악의적인 zip 아카이브를 사용하여.dex 파일을 덮어써서 수정할 수 있으며, 심지어 이 파일이 로드되고 실행되어 원격 코드 실행에 취약해질 수 있습니다.이는 단순한 이론적인 예가 아니라 앱 스토어에서 1억 건 이상의 다운로드를 기록한 My Talking Tom 앱에서도 입증되었습니다.다음은 Black Hat에서 선보인 익스플로잇의 동영상입니다.

Talking Tom

항상 zip 라이브러리의 동작을 확인하여 안전하지 않은지 확인하십시오.zip 라이브러리에서 경로 탐색을 비활성화할 수 없는 경우 추출하기 전에 각 항목의 이름을 확인해야 합니다.이름은 정규화해야 하며 결과 경로는 아카이브를 추출하려는 디렉터리에 있어야 합니다.이 작업을 진행하는 동안 압축 폭탄이 발생하지 않도록 압축을 푼 아카이브의 전체 크기도 확인해야 합니다. 하지만 이 글은 앞으로 일주일 동안 게시할 예정입니다.

원하신다면 패스 트래버설에서 몇 가지 챌린지를 플레이하세요 또는 보안 코딩 기술을 테스트하고 싶다면 당사 플랫폼을 확인하세요.

다음에 만나요. 보안 코드 또는 노 코드 기억하세요!

- 이름 앞에 임의의 숫자가 "../“인 파일을 삽입할 수 있습니다.
- zip 라이브러리가 이 경우를 제대로 처리하지 않으면 의도한 추출 디렉토리 외부에서 쓸 수 있습니다.
- zip 파일을 신뢰할 수 없는 경우 공격자에게 임의 쓰기 취약점이 생깁니다.

https://www.blackhat.com/docs/ldn-15/materials/london-15-Welton-Abusing-Android-Apps-And-Gaining-Remote-Code-Execution.pdf

Table des matières

Télécharger le PDF
Consulter les ressources
Souhaitez-vous en savoir davantage ?

Chercheur en sécurité applicative - Ingénieur R&D - Doctorant

En savoir plus

Secure Code Warrior est là pour aider les organisations à protéger leur code tout au long du cycle de vie du développement logiciel et à instaurer une culture qui accorde la priorité à la cybersécurité. Que vous soyez responsable de la sécurité des applications, développeur, responsable de la sécurité des systèmes d'information ou tout autre professionnel de la sécurité, nous pouvons aider votre organisation à réduire les risques liés au code non sécurisé.

Veuillez prendre rendez-vous pour une démonstration.Télécharger
Destinataires :
marques LinkedInSocialLogo x
Centre de ressources

Ressources utiles pour débuter

Plus d'articles
Centre de ressources

Ressources utiles pour débuter

Plus d'articles