UAF(사용 후 해제) 취약점은 운영 체제에서 애플리케이션에 이르기까지 다양한 소프트웨어 플랫폼에 영향을 미치는 근본적인 문제입니다. 이 취약점은 프로그램이 동일한 애플리케이션의 다른 부분에서 이전에 릴리스한 위치에 저장된 데이터에 액세스하려고 시도할 때 발생하며, 이로 인해 오용될 수 있습니다.

미확인 리디렉션 및 전달(UAF) 취약점은 사용자를 잠재적으로 악의적인 웹사이트 또는 도메인으로 의도치 않게 리디렉션할 수 있는 보안 취약점 클래스를 나타냅니다. 이러한 유형의 취약점은 애플리케이션이 사용자에게 리디렉션 또는 전달을 표시하기 전에 리디렉션 또는 전달의 진위 여부를 제대로 검증하지 못할 때 발생합니다. 이러한 취약점을 해결하지 않고 방치하면 공격자가 피싱 공격을 실행하거나 민감한 정보를 훔치거나 영향을 받는 시스템을 제어하는 데 악용할 수 있습니다. UAF 취약점의 위험을 완화하기 위해 개발자는 모든 리디렉션과 포워드를 철저히 검증하고 의심스러운 동작을 즉시 감지하여 해결해야 합니다.

사용 후 무료(UAF) 취약점이란 무엇인가요?

먼저 단계를 되짚어보고 메모리 관리와 관련된 몇 가지 기본 원칙을 이해한 후 복잡한 사용 후 사용 취약점을 살펴봅시다. 프로그램이 시작되면 데이터와 코드가 메모리에 저장됩니다.

메모리 관리는 스택과 힙으로 구성된 스토리지 용량 내에서 정보 및 프로그래밍 요소의 할당과 해제를 최적화하는 것을 말합니다. 스택과 힙은 프로그램 데이터가 보관되는 주요 영역입니다.

프로그램에 대한 메모리 공간 할당은 스택에 배치되는 정적 할당과 힙에 배치되는 동적 할당 중 하나 일 수 있습니다. 개발자가 동적 메모리의 할당 및 할당 해제를 효과적으로 관리하지 못하면 힙 익스플로잇의 범주에 속하는 UAT(활용 후 종료) 취약점이 발생합니다. 이 취약점을 더 깊이 이해하려면 프로그래밍 내에서 포인터의 기능에 대해 잘 아는 것이 중요합니다.

사용 후 해제(UAF)로 알려진 현상은 시스템에서 이전에 해제된 객체를 프로그램에서 계속 액세스할 때 발생하는 일종의 메모리 손상 취약점을 악용하여 충돌을 일으키거나 메모리 누수, 권한 수준 상승 또는 임의 코드 실행과 같은 의도하지 않은 결과를 초래할 수 있는 가능성을 포함합니다. 효과적인 완화 전략을 위해서는 UAF 조건이 발생하는 상황과 이를 악용할 수 있는 방법을 이해하는 것이 중요합니다.

이 글도 확인해 보세요:  사기꾼이 iPhone으로 전화하는 것을 막는 방법

사용 후 무료(UAF)는 어떻게 악용되나요?

UAF(사용 후 해제)로 알려진 취약점은 프로그램이 이전에 릴리스된 메모리 위치에 액세스하는 것과 관련이 있습니다. 데모 코드는 다음과 같습니다:

 #include <stdio.h>
#include <stdlib.h>

int main() {
    int *All Things N = malloc(sizeof(int));
    *All Things N = 69420;
    printf("Value: %d\n", *All Things N);
    free(All Things N);
    printf("Value?: %d\n", *All Things N);
    return 0;
}

이 코드에서 잠재적인 취약점을 식별할 수 있나요? All Things N 포인터가 free() 함수를 통해 해제되었지만, 그 다음 줄에서 printf() 함수를 통해 다시 사용된다는 사실에 주목하세요. 이러한 불일치로 인해 예측할 수 없는 시스템 동작이 발생할 수 있으며, 잠재적으로 권한 상승 또는 메모리 누출을 위한 악용의 길을 제공할 수 있습니다.

유즈 애프터 프리를 완화하는 방법은 무엇인가요?

UAF의 발생은 애플리케이션 코딩 오류로 인해 발생합니다. 이러한 유형의 취약점의 위험을 완화하려면 소프트웨어 내에 특정 안전 장치를 구현하는 것이 좋습니다.

특정 모범 사례를 채택하면 소프트웨어 내에서 발생하는 메모리 손상 취약성의 가능성을 완화하는 데 도움이 될 수 있습니다:

메모리 안전(UAF), 버퍼 오버플로 등과 관련된 잠재적 취약성에 대한 강력한 안전장치를 통합한 Rust와 같은 메모리 안전 프로그래밍 언어를 사용하는 것이 C/C++와 같은 언어를 사용하는 것보다 개발자에게 신중한 선택입니다. 이러한 결정은 Windows 및 Linux와 같은 저명한 운영 체제에서도 받아들여져 점진적으로 Rust로 마이그레이션하기 시작했습니다. 저수준 프로그램을 만드는 것이 자신의 영역에 속한다는 점을 감안할 때, Rust에 익숙해지는 것이 현명할 것입니다.

일회성 할당(OTA) 및 엄격한 객체 수명 주기 정책과 같은 기술을 구현하면 공격자가 이전에 해제된 메모리 객체에 액세스하는 위험을 완화하는 데 도움이 될 수 있습니다. 그러나 이러한 구현으로 인해 메모리 및 성능 오버헤드가 증가할 수 있다는 점에 유의해야 합니다.

사용 후 해제(UAF) 취약점의 실제 사례

웹 브라우저, Android 커널, 일반 애플리케이션 등 다양한 실제 환경에서 사용 후 해제(UAF) 취약점이 드러나면서 시스템 보안을 위한 사전 조치의 중요성이 강조되고 있습니다. 이러한 유형의 취약성을 보여주는 예시적인 사례는 다음과 같이 다양하고 많습니다:

인터넷 브라우저의 사용으로 인해 임의 코드 실행, 사용자 개인 정보 침해, 원격 코드 실행 공격과 같은 악의적인 활동을 초래할 수 있는 다양한 신뢰할 수 없는 동작 위조(UAF) 취약점이 발견되었습니다. 주목할 만한 사례 중 하나는 공격자가 Google Chrome의 UAF 결함을 악용하여 원격 위치에서 표적 시스템에서 승인되지 않은 코드를 실행할 수 있도록 하는 CVE-2021-38008입니다.

이 글도 확인해 보세요:  좋아하는 YouTube 채널의 비정상적인 동영상을 믿지 말아야 하는 이유

Windows, Linux 및 Android 운영 체제의 커널 내에서 다양한 유형의 UAF(범용 액세스 기능) 취약점이 발견되어 공격자가 상승된 권한을 획득하고 보안 조치를 우회하며 지속성을 달성할 수 있게 되었습니다. 현재도 운영 체제 커널 내에서 이러한 취약점이 계속 발견되고 있습니다. 최근에는 권한 상승으로 이어지는 Linux 커널의 UAF 취약점의 또 다른 사례인 CVE-2023-3269가 공개되었습니다. Windows 커널의 UAF 취약점을 나타내는 CVE-2022-23270의 존재는 다양한 운영 체제에서 이러한 취약점이 널리 퍼져 있다는 것을 더욱 강조합니다.

소프트웨어 프로그램 내의 신뢰할 수 없는 애플리케이션 결함(UAF)을 악용하면 프로그램 동작을 무단으로 조작하여 기밀 데이터 노출, 악성 코드 실행, 시스템 충돌, 극단적인 경우 권한 상승을 초래할 수 있습니다. 수많은 소프트웨어 애플리케이션이 이러한 공격에 취약한 상태로 남아 있으며, 주로 결함이 있고 위험한 메모리 관리 기법으로 만들어진 C/C++ 프로그램으로 구성되어 있습니다.

실제 애플리케이션의 사용 후 취약점에 대해 자세히 알아보려면 공식 MITRE CVE 목록 페이지에서 사용 후 취약점 키워드로 정렬하여 확인할 수 있습니다.

효율적인 메모리 할당으로 소프트웨어 보안 강화

효과적이고 신중하게 계획된 메모리 할당 전략은 일반적인 원시 메모리 손상 문제에 대한 애플리케이션 취약성 위험을 크게 줄일 수 있습니다.

앞서 언급한 UAF, TOCTOU, 경쟁 조건, BOF는 익스플로잇으로 이어질 수 있는 널리 퍼진 메모리 취약점입니다. 프로그램이 실행되는 플랫폼의 메모리 관리 관행을 포괄적으로 이해하면 이러한 취약점을 피하는 데 도움이 될 수 있습니다. 이러한 지식은 운영 체제의 메모리 할당에 대한 통찰력을 제공하고 최적의 성능뿐만 아니라 안전한 소프트웨어를 개발할 수 있게 해줍니다.

주어진 문장을 정교한 방식으로 적절하게 표현하면 다음과 같습니다: “전 세계적으로 가장 널리 사용되는 서버 플랫폼이라고 자부하는 Linux 운영 체제 내에서 메모리 관리의 복잡성을 이해하는 것은 통찰력 있는 출발점이 될 수 있습니다.

By 이지원

상상력이 풍부한 웹 디자이너이자 안드로이드 앱 마니아인 이지원님은 예술적 감각과 기술적 노하우가 독특하게 조화를 이루고 있습니다. 모바일 기술의 방대한 잠재력을 끊임없이 탐구하고, 최적화된 사용자 중심 경험을 제공하기 위해 최선을 다하고 있습니다. 창의적인 비전과 뛰어난 디자인 역량을 바탕으로 All Things N의 잠재 독자가 공감할 수 있는 매력적인 콘텐츠를 제작합니다.