보안 코딩 기술: 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 파일이 신뢰할 수 없는 경우 공격자에게 임의쓰기 취약점이 제공됩니다.
블로그에서 최신 보안 코딩 인사이트에 대해 자세히 알아보세요.
Atlassian의 광범위한 리소스 라이브러리는 안전한 코딩 숙련도를 확보하기 위한 인적 접근 방식을 강화하는 것을 목표로 합니다.
개발자 중심 보안에 대한 최신 연구 보기
광범위한 리소스 라이브러리에는 개발자 중심의 보안 코딩을 시작하는 데 도움이 되는 백서부터 웨비나까지 유용한 리소스가 가득합니다. 지금 살펴보세요.
보안 코딩 기술: 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 파일이 신뢰할 수 없는 경우 공격자에게 임의쓰기 취약점이 제공됩니다.