>  기사  >  운영 및 유지보수  >  C++ 프로그램 출시 이후 사용으로 인한 취약점 분석 구현 방법

C++ 프로그램 출시 이후 사용으로 인한 취약점 분석 구현 방법

WBOY
WBOY앞으로
2023-05-12 17:37:061502검색

1. 릴리스 후 사용

동적으로 할당된 메모리가 해제되면 해당 메모리의 내용은 정의되지 않으며 그대로 유지되어 액세스할 수 있습니다. 해제된 메모리 블록이 재할당되거나 재활용되면 메모리 관리가 프로그램에 의해 결정되기 때문입니다. 그러나 이 메모리의 내용이 변경되어 예기치 않은 프로그램 동작이 발생할 수도 있습니다. 따라서 메모리가 해제되면 더 이상 메모리에 쓰거나 읽을 수 없다는 것이 보장됩니다.

2. use-after-free의 위험

부적절한 메모리 관리로 인해 발생하는 문제는 C/C++ 프로그램의 일반적인 취약점입니다. 무료 이후에 사용하면 비정상적인 프로그램 종료, 임의 코드 실행, 서비스 거부 공격 등 잠재적인 악용 위험이 발생할 수 있습니다. 2018년 1월부터 11월까지 CVE에는 이와 관련된 취약점 정보가 총 134개 있었습니다. 일부 취약점은 다음과 같습니다.

CVE 취약점 개요
CVE-2018-1000051 fz_keep_key에 하나가 있습니다. _Artifex Mupdf의 저장 가능한 버전 Use-After-Free 서비스 거부 또는 코드 구현 문제로 이어질 수 있는 취약점입니다. 피해자를 속여 특수하게 조작된 PDF 파일을 열도록 하면 이 취약점을 악용할 수 있습니다.
CVE-2018-17474 Google Chrome 브라우저 70.0.3538.67 및 이전 버전에 있는 Blink 엔진의 HTMLImportsController에 use-after-free 취약점이 있으며, 이로 인해 원격 공격자가 힙 손상을 악용할 가능성이 높습니다. 특별히 구성된 HTML 페이지를 통해 발행합니다.
CVE-2018-15924 Adobe Acrobat 및 Reader 2018.011.20063 이하 버전, 2017.011.30102 이하 버전, 2015.006.30452 이하 버전에 use-after-free 취약점이 존재합니다. 원격 공격자는 이 취약점을 악용하여 임의 코드를 실행할 수 있습니다.

3. 샘플 코드

예제는 Samate Juliet TestSuite for C/C++ v1.3(https://samate.nist.gov/SARD/testsuite.php)에서 가져온 것입니다. 소스 파일 이름: CWE416_Use_After_Free__malloc_free_char_01 . 씨.

3.1 결함 코드

C++ 프로그램 출시 이후 사용으로 인한 취약점 분석 구현 방법

360 ​​코드 가드를 사용하면 위의 샘플 코드를 감지할 수 있으며 "출시 후 사용" 결함을 감지할 수 있으며 표시 수준이 높습니다. 그림 1과 같이:

C++ 프로그램 출시 이후 사용으로 인한 취약점 분석 구현 방법

그림 1: 릴리스 감지 후 사용 예

3.2 수리 코드

C++ 프로그램 출시 이후 사용으로 인한 취약점 분석 구현 방법

위 수리 코드에서 Samate가 제공한 수리 방법은 다음과 같습니다. 라인 30 malloc에서 사용 ()는 메모리를 할당하고 36행에서 free()를 사용하여 해제한 후에는 메모리에 대해 다른 작업을 수행하지 않습니다.

360 코드가드를 이용하여 수리된 코드를 검출해 보면 '출시 후 사용' 불량이 없는 것을 확인할 수 있습니다. 그림 2와 같이:

C++ 프로그램 출시 이후 사용으로 인한 취약점 분석 구현 방법

그림 2: 수리 후 감지 결과

4. 출시 후 사용을 피하는 방법

출시 후 사용을 피하려면 다음 사항에 주의해야 합니다.

(1) 메모리를 해제할 때 널 포인터를 반드시 설정하십시오. 이 방법은 다중 또는 복잡한 데이터 구조를 활용하는 데 효율성이 제한되지만 어느 정도 문제를 피할 수 있습니다.

(2) 루프 문에서 메모리를 할당하거나 해제할 때 문제가 있는지 주의 깊게 확인해야 합니다.

(3) 자동 감지를 위해 소스 코드 정적 분석 도구를 사용하면 소스 코드에서 출시 후 사용 문제를 효과적으로 발견할 수 있습니다.

위 내용은 C++ 프로그램 출시 이후 사용으로 인한 취약점 분석 구현 방법의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
이 기사는 yisu.com에서 복제됩니다. 침해가 있는 경우 admin@php.cn으로 문의하시기 바랍니다. 삭제