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 결함 코드
360 코드 가드를 사용하면 위의 샘플 코드를 감지할 수 있으며 "출시 후 사용" 결함을 감지할 수 있으며 표시 수준이 높습니다. 그림 1과 같이:
그림 1: 릴리스 감지 후 사용 예
3.2 수리 코드
위 수리 코드에서 Samate가 제공한 수리 방법은 다음과 같습니다. 라인 30 malloc에서 사용 ()는 메모리를 할당하고 36행에서 free()를 사용하여 해제한 후에는 메모리에 대해 다른 작업을 수행하지 않습니다.
360 코드가드를 이용하여 수리된 코드를 검출해 보면 '출시 후 사용' 불량이 없는 것을 확인할 수 있습니다. 그림 2와 같이:
그림 2: 수리 후 감지 결과
4. 출시 후 사용을 피하는 방법
출시 후 사용을 피하려면 다음 사항에 주의해야 합니다.
(1) 메모리를 해제할 때 널 포인터를 반드시 설정하십시오. 이 방법은 다중 또는 복잡한 데이터 구조를 활용하는 데 효율성이 제한되지만 어느 정도 문제를 피할 수 있습니다.
(2) 루프 문에서 메모리를 할당하거나 해제할 때 문제가 있는지 주의 깊게 확인해야 합니다.
(3) 자동 감지를 위해 소스 코드 정적 분석 도구를 사용하면 소스 코드에서 출시 후 사용 문제를 효과적으로 발견할 수 있습니다.
위 내용은 C++ 프로그램 출시 이후 사용으로 인한 취약점 분석 구현 방법의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

핫 AI 도구

Undresser.AI Undress
사실적인 누드 사진을 만들기 위한 AI 기반 앱

AI Clothes Remover
사진에서 옷을 제거하는 온라인 AI 도구입니다.

Undress AI Tool
무료로 이미지를 벗다

Clothoff.io
AI 옷 제거제

Video Face Swap
완전히 무료인 AI 얼굴 교환 도구를 사용하여 모든 비디오의 얼굴을 쉽게 바꾸세요!

인기 기사

뜨거운 도구

SublimeText3 중국어 버전
중국어 버전, 사용하기 매우 쉽습니다.

SublimeText3 영어 버전
권장 사항: Win 버전, 코드 프롬프트 지원!

SublimeText3 Linux 새 버전
SublimeText3 Linux 최신 버전

WebStorm Mac 버전
유용한 JavaScript 개발 도구

mPDF
mPDF는 UTF-8로 인코딩된 HTML에서 PDF 파일을 생성할 수 있는 PHP 라이브러리입니다. 원저자인 Ian Back은 자신의 웹 사이트에서 "즉시" PDF 파일을 출력하고 다양한 언어를 처리하기 위해 mPDF를 작성했습니다. HTML2FPDF와 같은 원본 스크립트보다 유니코드 글꼴을 사용할 때 속도가 느리고 더 큰 파일을 생성하지만 CSS 스타일 등을 지원하고 많은 개선 사항이 있습니다. RTL(아랍어, 히브리어), CJK(중국어, 일본어, 한국어)를 포함한 거의 모든 언어를 지원합니다. 중첩된 블록 수준 요소(예: P, DIV)를 지원합니다.
