usrbin
컴퓨터 일기
usrbin
전체 방문자
오늘
어제

공지사항

  • whoami
  • 분류 전체보기 (127)
    • 깔짝할짝 (61)
    • 잡지식 (30)
    • Network (7)
      • Programming (3)
      • Study (4)
    • Mobile (13)
    • Reversing (5)
      • Win API (2)
      • 분석 (0)
    • Kernel (4)
      • linux (1)
      • Windows (3)
    • Programming (5)

블로그 메뉴

  • 홈
  • 방명록

인기 글

태그

  • monitor mode
  • Scapy
  • pcapng
  • x64dbg
  • forensics
  • BOF
  • Follina
  • sql injection
  • pwntools
  • HEVD
  • System
  • nethunter
  • pwnable.kr
  • Hive Ransomware
  • network
  • suninatas
  • HackCTF
  • PWN
  • Packet
  • Android
  • xcz.kr
  • libpcap
  • Network Programming
  • Pwnable
  • ftz
  • Digital Forensics
  • qt
  • System Hacking
  • pcap
  • Reversing

최근 댓글

최근 글

티스토리

hELLO · Designed By 정상우.
usrbin

컴퓨터 일기

깔짝할짝

2021-01-03 Mon

2022. 1. 3. 11:37

1. CVE-2021-45960

Reference: https://github.com/libexpat/libexpat/issues/531

libexpat은 C로 작성된 XML parser이다. lib/xmlparse.c/storeAtts 함수의 취약점이며 조작된 XML 파일을 input으로 했을 때 발생한다. 29bit 이상의 값에서 left shfit를 할 경우 너무 작은 크기를 할당하거나, 메모리를 free 시키는 등의 의도하지 않은 작업을 수행하게 된다. 31bit보다 큰 값에서 signed int에 대한 left shift(<<)를 할 때, sizeof(int)==4 라면 예상되지 않은 결과가 나올 수 있다.

int nsAttsSize = (int)1 << parser->m_nsAttsPower;
[..]
nsAttsSize = (int)1 << parser->m_nsAttsPower;
[..]
temp = (NS_ATT *)REALLOC(parser, parser->m_nsAtts,
                         nsAttsSize * sizeof(NS_ATT));

nsAttSize*sizeof(NS_ATT) 이 계산을 할 때 sizeof 는 머신의 아키텍처에 따라 다른 값을 나타낸다. ntAttSize 는 m_nsAttsPower 값에 의해 결정되고, m_nsAttsPower 값은 input으로 사용되는 XML의 단일 태그의 접두사 속성의 개수에 의해 결정된다.

m_nsAttsPower 의 계산식은 m_nsAttsPower := int(math.log2(attsCount - 1)) + 2 이다. 속성의 개수가 여기서 사용되며, 따라서 m_nsAttsPower 가 29이려면 2^(29-2)+1 의 attsCount 값을 가져야 한다.

                  |  x86 (32bit int and size_t)        |  amd64 (32bit int, 64bit size_t)
------------------+------------------------------------+---------------------------------
m_nsAttsPower 29  |  (size_t)(1 << 29) * (4+4+4)       |  (size_t)(1 << 29) * (8+8+8)
                  |  => 2_147_483_648, mult overflow   |  >= 12_884_901_888
                  |  => allocating too few bytes       |  => mallocs okay or returns NULL
                  |                                    |
m_nsAttsPower 30  |  (size_t)(1 << 30) * (4+4+4)       |  (size_t)(1 << 30) * (8+8+8)
                  |  => 0, mult overflow               |  => 25_769_803_776
                  |  => realloc acts as free           |  => mallocs okay or returns NULL
                  |                                    |
m_nsAttsPower 31  |  (size_t)(1 << 31) * (4+4+4)       |  (size_t)(1 << 31) * (8+8+8)
                  |  => undefined behavior             |  => undefined behavior
                  |                                    |
  • m_nsAttsPower ≤ 28 :
  • m_nsAttsPower == 29 : 32bit에서는 너무 작은 크기의 할당, 64bit에서는 문제 없음
  • m_nsAttsPower == 30 : 32bit에서는 0 할당 즉 free, 64bit에서는 문제 없음
  • m_nsAttsPower ≥ 31 : 32/64bit 모두에서 예측할 수 없는 결과(ex: DoS)

2. CVE-2021-34423

Reference: https://bugs.chromium.org/p/project-zero/issues/detail?id=2223

zoom buffer overflow

3. CVE-2021-34424

Reference: https://bugs.chromium.org/p/project-zero/issues/detail?id=2235

zoom info leak

저작자표시 비영리 변경금지 (새창열림)

'깔짝할짝' 카테고리의 다른 글

2022-01-09 Sun  (0) 2022.01.10
2022-01-07 Fri  (0) 2022.01.07
2021-01-05 Wed  (0) 2022.01.05
2022-01-04 Tue  (0) 2022.01.04
2021-01-02 Sun  (0) 2022.01.02
    usrbin
    usrbin
    컴퓨터 할거야

    티스토리툴바