마이크로소프트 제공 SList 는 use-after-free 에 대하여 안전한가요??
341
작성한 질문수 10
마이크로소프트 제공 SList 를 모방하는 과정에서
SList 는 여전히 use-after-free 에 대하여 취약하다고 말씀하셨는데 마이크로소프트에서 제공하는 SList를 사용 할 때도
일반적인 상황에서는 안전한 것인지 궁금합니다
제 생각에는 수업의 경우 메모리 풀이라는 특수 상황에서는 free가 일어나지 않으니 일단 안전한다고 생각하는데 메모리 풀이라 안전한 것이지? 그렇지 않은 경우는 또 어떨지 궁금합니다.
답변 1
0
안녕하세요, 인프런 AI 인턴입니다.
우웅님의 질문에 대해 답변드리겠습니다. 마이크로소프트에서 제공하는 SList는 성능과 관리의 용이성을 목적으로 설계되었습니다. 일반적인 사용 상황에서는 안전한 메커니즘을 제공하려고 노력합니다. 하지만, 모든 상황에서 use-after-free 취약점이 완벽히 예방되는 것은 아닙니다.
use-after-free 문제는 프로그램이 이미 해제된 메모리에 접근할 때 발생합니다. 이는 SList 자체의 문제라기보다는 메모리 관리 방법과 개발자의 코드 구현 방식에 더 많이 좌우됩니다. 따라서, 메모리 풀을 사용하는 경우처럼 특수 상황에서는 메모리가 명시적으로 관리되므로 use-after-free 문제를 피할 수 있습니다.
하지만, 메모리 풀을 사용하지 않는 일반적인 상황에서도 SList를 사용할 때 주의해야 합니다. 개발자는 메모리의 할당과 해제를 신중하게 관리하여 이러한 문제를 방지해야 합니다. 즉, 메모리 풀이 있는 경우 안전성이 더 높아지지만, 그렇지 않은 경우에도 개발자의 주의 깊은 메모리 관리가 필요합니다.
use-after-free 문제를 방지하기 위해서는 메모리 할당 및 해제 시점을 명확히 하고, 이미 해제된 메모리에 대한 참조를 방지하는 코딩 관행을 따르는 것이 중요합니다. 또한, modern C++의 smart pointer들 같이 안전한 메모리 관리를 지원하는 기능을 적극적으로 사용하는 것도 좋은 방법입니다.
보다 세부적인 내용이나 구현 상의 질문이 있으시면 추가적으로 문의해 주시기 바랍니다.
IocpObject가 없어질 수 있는 이유에 대한 질문입니다.
0
49
2
CS 기초 지식이 필요없는 세상이 오지 않을까요?
0
147
2
DeadLock 탐지에서 재귀 Lock 상황에 대해 궁금합니다.
0
95
2
LockFreeStack #2에서 ABA 문제
0
70
1
RefCounting 강의 질문있습니다.
0
91
2
writeLock을 잡을때 꼭 empty 상태여야하는 이유?
0
105
2
Memory Pool에서 오버플로우 질문입니다.
0
123
2
포토폴리오 및 진로 관련하여 고민입니다.
0
234
1
포토폴리오 관련 고민입니다.
0
134
1
실무에서도 alloc, 스마트포인터 등을 구현해서 쓰는지 궁금합니다.
0
140
2
성능 테스트 결과
0
143
2
게임 서버 Stateful, Stateless 진로 고민
0
182
1
WaitOnAddress와 Sleep의 차이 질문
0
134
1
궁금한거 있습니다.
0
124
2
JobTimer 구동 스레드
0
151
2
TryPop() 동작 관련 질문
0
115
1
로드맵 C#서버 C++서버 방향성 질문
0
203
2
스레드 id를 출력할떄 메인스레드 id도 출력되나요?
0
101
1
생명주기를 위한 의도적 복사
0
125
2
락프리의 실무에서 사용 질문
0
195
2
32bit threadID와 16비트 상위 WriteFlag에 대해
0
135
2
mutex와 sleep 차이점
0
160
1
실무에서는 어떠한 코드 스타일을 사용하는지 궁금합니다
0
198
2
Stomp Allocator의 Release함수에 대한 질문입니다.
0
130
1





