ClickCease Binutils에 대한 Lifecycle 연장 지원 업데이트

인기 뉴스레터 구독하기

4,500명 이상의 Linux 및 오픈소스 전문가와 함께하세요!

한 달에 두 번. 스팸이 없습니다.

비누틸에 대한 Lifecycle 연장 지원 업데이트는 92개의 CVE를 포함합니다.

2021년 12월 27일 TuxCare 홍보팀

GNU Binutils는 개발 환경의 기본 패키지 중 하나로, 바이너리 생성 프로세스에서 중요한 ELF 파일, 오브젝트 파일 등을 조작하기 위한 여러 가지 도구가 포함되어 있습니다. 따라서 이 패키지에서 문제를 발견하고 수정하면 전체 프로세스가 강화되고 광범위한 이점을 얻을 수 있습니다.

 

지원되는 Linux 배포판에 대해 Lifecycle 연장 지원 팀에서 발표한 최신 업데이트 배치에서 90개 이상의 CVE가 GNU Binutils에서 수정되었습니다.

콘텐츠:
  1. Lifecycle 연장 지원 사용자 관점
  2. 더 깊은 수준에서
  3. 마무리 생각
  4. 부록

 

 

Lifecycle 연장 지원 사용자 관점

 

서비스 사용자는 보안 및 Linux 전문가로 구성된 전담 팀이 업데이트가 전혀 제공되지 않는 시스템에 대해 적절한 업데이트를 준비하므로 안심할 수 있습니다.

 

이 특정 사례에서 binutils는 개발 스택, 디버거, 코드 분석 등 개발 관련 도구가 아닌 다른 많은 도구가 의존하는 기본 패키지입니다. 따라서 보안을 유지하는 것은 전체 시스템 보안과 안정성에 직접적인 영향을 미칩니다.

 

 

더 깊은 수준에서

 

TuxCare의 Lifecycle 연장 지원 팀은 일반적으로 CVE 수정 코드를 테스트하고, 지원되는 Linux 배포판에 포함된 이전 버전의 패키지에 적용하고, 릴리스된 패키지가 실제로 해결되었다고 주장되는 취약점으로부터 사용자를 보호하는지 확인하느라 바쁩니다. 이 프로세스를 "백포팅"이라고 하는데, 이 프로세스는 최신 버전의 패키지에 적용되는 수정 사항을 가져와서 ELS가 적용되는 Linux 배포판에 포함된 것과 같은 이전 버전에서 작동하도록 조정하는 것으로 구성됩니다. 따라서 코드를 살펴보고 테스트를 실행하는 데 많은 시간이 소요됩니다.

 

CVE에 대해 작업할 때, 때때로 분석을 통해 처음 해결되었을 때 간과했던 새로운 문제를 발견할 수 있습니다. ELS 팀은 항상 업스트림 오픈 소스 프로젝트에 책임감 있게 정보를 제공하고 해당 프로젝트에 코드를 기여하기 위해 노력합니다. 이는 IT 에코시스템 전반의 보안을 개선하는 추가적인 이점이 있습니다. 물론 ELS 사용자가 실행 중인 시스템이 원래 공급업체의 지원을 받지 못하고 다른 방법을 통해서는 수정된 코드를 받을 수 없기 때문에 이러한 새로운 문제에 대한 수정 사항도 사용자에게 제공됩니다.

 

이 활동의 최신 결과 중 하나이며 이미 사용 가능한 업데이트에 포함된 이 업데이트는 바이너타일에서만 총 92개의 취약점을 해결합니다. 여기에는 '버퍼 오버플로'에서 '무료 사용 후 사용' 문제에 이르기까지 다양한 취약점이 포함되어 있으며, 모두 중요하지는 않지만 실제로 많은 취약점이 CVSS 점수에 포함되어 있습니다.

 

기본 패키지인 바이너타일에는 코드 분석, 디버깅 및 연결 작업에 광범위하게 사용되는 도구가 포함되어 있으며, 다른 많은 타사 도구에서도 사용됩니다. 실제 개발 작업을 수행하지 않아도 시스템에 binutils가 있을 수 있으며, 배포된 다른 애플리케이션이나 도구의 종속 요소로 포함될 수도 있습니다. binutils를 최신 상태로 유지하면 binutils 자체뿐만 아니라 그 이상의 것들이 정확하고 안전하게 작동합니다.

 

이러한 CVE 중 일부에서 팀은 원래의 CVE 수정으로 인해 정의되지 않은 동작이나 기타 보안 문제와 같은 새로운 문제가 발생하는 상황을 확인했습니다. 이러한 문제를 수정하려면 사내 코드 개발이 필요했습니다. 그런 다음 이러한 코드를 업스트림 오픈 소스 프로젝트에 제출하면 해당 프로젝트에서 이를 수락하여 커밋하거나 자체 코드를 준비하여 새로 보고된 문제를 해결했습니다.

 

그 예로 CVE-2018-7568을 들 수 있습니다. ELS 팀은 원래 제출된 코드 수정이 정의되지 않은 동작을 유발하는 상황을 확인했고, 이를 여기의 업스트림 프로젝트에 보고했습니다.

 

이 문제는 팀원인 니키타 포포프가 이전 Linux 배포판에서 문제가 발생하지 않고 나머지 코드와 "잘 작동"하는지 확인하기 위해 원래 CVE 수정에 적용된 변경 사항을 검토하는 과정에서 발견했습니다.

 

CVE-2018-7568에 대한 패치에는 블록 길이(block_len) 카운터로 사용되는 서명되지 않은 유형이 포함되어 있는 것으로 밝혀졌습니다. 다음과 같은 표현식에 사용될 경우

xptr + block_len < xptr

블록_렌이 부호화되지 않은 올바른 상황에서는 컴파일러가 이 줄을 완전히 생략하여 최적화할 수 있습니다. 이러한 유형의 표현식은 바로 이러한 이유로 ISO C 표준에서 명시적으로 금지하고 있으며, 다른 컴파일러 또는 다른 아키텍처/플랫폼에서 동일한 컴파일러가 이 상황에 다른 방식으로 접근하여 정의되지 않은 동작을 유발할 수 있습니다. 팀이 제출한 버그 보고서에는 문제에 대한 보다 포괄적인 설명과 이를 수정하는 코드 제출이 포함되어 있습니다.

 

이는 업스트림 코드 베이스에 수용되어 현재 binutils 패키지의 일부가 되었으며, 다른 개발자들에 의해 이미 더 개선되었습니다. 이는 오픈 소스 프로젝트 개발이 어떻게 올바르게 이루어질 수 있는지를 보여주는 교과서적인 사례이며, ELS 팀은 이 분야에서 활발히 활동하고 있습니다.

 

이 수정이 해결한다고 주장하는 상황을 방지하지 못하고 테스트에서도 여전히 트리거될 수 있는 CVE-2018-12700에 대한 수정 문제도 업스트림에 보고되었으며, 이에 대한 해명을 기다리고 있습니다.

 

이번 비누틸 업데이트 작업 후, 비누틸을 개발 중인 또 다른 개발자인 파벨 마요로프는 "제가 알기로는 비누틸에 대한 기존의 모든 CVE를 처리했지만, CVE-2018-12700의 문제에 대한 답변을 기다리고 있습니다"라고 언급했습니다.

 

 

마무리 생각

 

구형 시스템을 최신 상태로 유지하는 것은 그 자체로도 중요하지만, 보안과 관련된 엄격한 관점에서도 필수 요건입니다. 또한 패치 시간 지연에 관한 규정이 있는 여러 비즈니스 표준을 준수하고 이를 유지하기 위해서도 필요합니다.

 

보안 패치 및 업데이트의 소스로 ELS를 사용하면 팀이 수행하는 세세한 작업이 시스템의 보안 및 요구 사항 준수와 안심할 수 있는 시스템으로 직접 연결됩니다. 결과적으로 시스템이 보호되고 안정적으로 유지되므로 특정 비즈니스 요구 사항에 집중할 수 있습니다.

 

 

부록

 

Lifecycle 연장 지원 서비스를 통해 제공되는 최신 바이너타일 업데이트에 포함된 전체 CVE 목록이 CVE 연도별로 그룹화되어 있습니다.

 

CVE-2016-2226: cplus-dem.c의 string_appends 함수에서 정수 오버플로 수정

CVE-2016-4487: 자유의 사용 후 무료 취약점 수정

CVE-2016-4488: 자유의 사용 후 무료 취약점 수정

CVE-2016-4489: 리버리티에서 정수 오버플로 수정

CVE-2016-4490: cp-demangle.c의 정수 오버플로 수정

CVE-2016-4492: cplus-dem.c의 do_type 함수에서 버퍼 오버플로 수정

CVE-2016-4493: demangle_template_value_parm 및 do_hpacc_template_literal에서 범위를 벗어난 읽기 수정

CVE-2016-6131: 무한 루프, 스택 오버플로 수정

 

CVE-2017-7223: 전역 버퍼 오버플로(크기 1) 수정

CVE-2017-7224: 디스어셈블리 중 잘못된 쓰기(크기 1) 수정

CVE-2017-7225: NULL 포인터 역참조 및 유효하지 않은 쓰기 수정

CVE-2017-7226: 크기 4049의 힙 기반 버퍼 초과 읽기 수정

CVE-2017-7227: 힙 기반 버퍼 오버플로 수정

CVE-2017-7299: ELF 재배치 섹션에서 유효하지 않은 읽기(크기 8) 수정

CVE-2017-7300: 힙 기반 버퍼 초과 읽기(오프-바이-원) 수정

CVE-2017-7301: 오프-바이-원 취약점 수정

CVE-2017-7302: 유효하지 않은 읽기(크기 4) 수정

CVE-2017-7614: 정의되지 않은 동작 문제 수정

CVE-2017-8393: 전역 버퍼 초과 읽기 오류 수정

CVE-2017-8394: NULL 포인터 역참조로 인한 크기 4의 유효하지 않은 읽기 수정

CVE-2017-8396: 크기 1의 유효하지 않은 읽기 수정

CVE-2017-8398: 디버그 정보 덤핑 중 크기 1의 잘못된 읽기 수정

CVE-2017-8421: 메모리 누수 취약점 수정

CVE-2017-9742: 버퍼 오버플로 수정

CVE-2017-9744: 버퍼 오버플로 수정

CVE-2017-9747: 버퍼 오버플로 수정

CVE-2017-9748: 버퍼 오버플로 수정

CVE-2017-9749: 버퍼 오버플로 수정

CVE-2017-9753: 버퍼 오버플로 수정

CVE-2017-9754: 버퍼 오버플로 수정

CVE-2017-12448: 무료 이후 사용 수정

CVE-2017-12449: 범위를 벗어난 힙 읽기 수정

CVE-2017-12455: 범위를 벗어난 힙 읽기 수정

CVE-2017-12457: NULL 역참조 수정

CVE-2017-12458: 범위를 벗어난 힙 읽기 수정

CVE-2017-12459: 범위를 벗어난 힙 쓰기 수정

CVE-2017-12450: 범위를 벗어난 힙 쓰기 수정

CVE-2017-12452: 범위를 벗어난 힙 읽기 수정

CVE-2017-12453: 범위를 벗어난 힙 읽기 수정

CVE-2017-12454: 임의 메모리 읽기 수정

CVE-2017-12456: 범위를 벗어난 힙 읽기 수정

CVE-2017-14333: 정수 오버플로 수정, 시간이 많이 걸리는 루프로 인한 중단

CVE-2017-12451: 범위를 벗어난 스택 읽기 수정

CVE-2017-12799: 버퍼 오버플로 수정

CVE-2017-13710: NULL 포인터 역참조 수정

CVE-2017-14130: bfd_elf_attr_strdup 힙 기반 버퍼 초과 읽기 수정

CVE-2017-14932: 무한 루프 수정

CVE-2017-14938: 과도한 메모리 할당 수정

CVE-2017-14940: NULL 포인터 역참조 수정

CVE-2017-15020: parse_die 힙 기반 버퍼 초과 읽기 수정

CVE-2017-15022: bfd_hash_hash NULL 포인터 역참조 수정

CVE-2017-15225: 0으로 나누기 오류 수정

CVE-2017-15938: find_abstract_instance_name 잘못된 메모리 읽기, 세분화 오류 수정

CVE-2017-15939: NULL 포인터 역참조 수정

CVE-2017-15996: 퍼지 아카이브 헤더의 버퍼 오버플로 수정

CVE-2017-16826: 잘못된 메모리 액세스 수정

CVE-2017-16827: 슬러프 심탭이 유효하지 않음

CVE-2017-16828: 정수 오버플로 및 힙 기반 버퍼 초과 읽기 수정

CVE-2017-16831: 정수 오버플로 또는 과도한 메모리 할당 수정

CVE-2017-17080: bfd_getl32 힙 기반 버퍼 초과 읽기 수정

CVE-2017-17121: 메모리 액세스 위반 수정

CVE-2017-17123: NULL 포인터 역참조 수정

CVE-2017-17124: 과도한 메모리 소비 또는 힙 기반 버퍼 오버플로 수정

CVE-2017-17125: 버퍼 초과 읽기 수정

 

CVE-2018-6323: 부호 없는 정수 오버플로 수정

CVE-2018-6543: 정수 오버플로 수정

CVE-2018-6759: 세분화 오류 수정

CVE-2018-7208: 세분화 오류 수정

CVE-2018-7568: 정수 오버플로 수정

CVE-2018-7569: 정수 언더플로 또는 오버플로 수정

CVE-2018-7642: aout_32_swap_std_reloc_out NULL 포인터 역참조 수정

CVE-2018-7643: 정수 오버플로 수정

CVE-2018-8945: 세분화 오류 수정

CVE-2018-13033: 과도한 메모리 할당 수정

CVE-2018-10373: NULL 포인터 역참조 수정

CVE-2018-10535: NULL 포인터 역참조 수정

CVE-2018-18309: 잘못된 메모리 주소 역참조 수정

CVE-2018-18605: 섹션 병합을 잘못 처리하는 문제 수정

CVE-2018-18606: NULL 포인터 역참조 수정

CVE-2018-18607: elf_link_input_bfd에서 NULL 포인터 역참조 수정

CVE-2018-19931: bfd_elf32_swap_phdr_in에서 힙 기반 버퍼 오버플로 수정

CVE-2018-19932: 정수 오버플로 및 무한 루프 수정

CVE-2018-20002: 메모리 소비 수정

CVE-2018-20623: 오류 함수에서 사용 후 무료 수정

 

CVE-2018-20671: 정수 오버플로 취약점 수정

CVE-2018-1000876: 정수 오버플로 트리거 힙 오버플로 수정

 

CVE-2019-9073: 과도한 메모리 할당 수정

CVE-2019-9075: bfd_archive_64_bit_slurp_armap에서 힙 기반 버퍼 오버플로 수정

CVE-2019-9077: process_mips_specific에서 힙 기반 버퍼 오버플로 수정

CVE-2019-12972: bfd_doprnt에서 힙 기반 버퍼 오버-읽기 수정

CVE-2019-14444: 정수 오버플로 수정

CVE-2019-17450: 무한 재귀 수정

Kernel 재부팅, 시스템 다운타임 또는 예정된 유지 보수 기간 없이 취약성 패치를 자동화하고 싶으신가요?

TuxCare로 라이브 패치에 대해 알아보기

TuxCare 게스트 작가 되기

시작하기

메일

가입

4,500

Linux & 오픈 소스
전문가!


뉴스레터 구독하기