Why mmap Shared Memory Is More Dangerous Than malloc – Hidden Security Risks Explained
This article explains how using mmap for shared memory in C/C++ can break process isolation, introduce permission‑related code‑injection vulnerabilities, and cause multithreading synchronization issues, making it a riskier choice than the traditional malloc allocation.
In system programming, memory management is a core issue for C/C++ developers, who commonly use malloc (heap) and mmap (shared/file‑mapped memory).
Although both allocate memory, from a system‑risk perspective mmap is more dangerous because it can break process isolation and lead to severe security or stability problems.
mmap shared memory can crash other processes
mmapallows multiple processes to read/write the same physical memory, so a bug in one process (e.g., an out‑of‑bounds write) can corrupt data or crash other processes. In contrast, malloc ’s memory is confined to the allocating process.
Permission risks of mmap
mmapcan set memory permissions such as PROT_EXEC. Misconfiguration may enable code‑injection attacks, for example a network service allocating a buffer with PROT_EXEC and copying unchecked input, allowing malicious shellcode execution.
void *mem_start = mmap(NULL, 4096, PROT_READ | PROT_WRITE | PROT_EXEC, MAP_PRIVATE | MAP_ANONYMOUS, -1, 0);When an attacker sends an oversized packet containing malicious machine code, the overflow can overwrite return addresses to point to the executable mmap region, leading to arbitrary code execution. The same issue does not arise with malloc ‑allocated heap memory.
Multithreading and synchronization risks
Using mmap shared memory across processes or threads requires explicit synchronization (semaphores, locks). Without it, data races or dirty reads can occur, affecting all processes sharing the memory. malloc is thread‑safe via internal locks, but developers still need to manage concurrent access; its impact remains limited to the single process.
Signed-in readers can open the original source through BestHub's protected redirect.
This article has been distilled and summarized from source material, then republished for learning and reference. If you believe it infringes your rights, please contactand we will review it promptly.
Java Tech Enthusiast
Sharing computer programming language knowledge, focusing on Java fundamentals, data structures, related tools, Spring Cloud, IntelliJ IDEA... Book giveaways, red‑packet rewards and other perks await!
How this landed with the community
Was this worth your time?
0 Comments
Thoughtful readers leave field notes, pushback, and hard-won operational detail here.
