首页 > 解决方案 > 在 C 中使用 realpath() 时潜在的缓冲区溢出

问题描述

我正在阅读与 C 中的安全编码相关的链接。它包含以下段落:

在 C 和 C++ 编程语言中,一些函数将字符串作为输入。示例包括 realpath()、syslog() 和 getopt()。当此类函数被注入大量输入缓冲区时,可能会发生缓冲区溢出攻击。因此,一个好的编码器将确定特定程序所需的此类输入字符串的最大可能长度,并在调用 realpath()、syslog() 和 getopt() 函数之前适当地缩短输入字符串。

realpath()函数签名为例:

char *realpath(const char *path, char *resolved_path);

根据函数签名,当有人调用它时,他们会为path参数分配并填充内存。如果为结果分配的内存resolved_path不够大,可能会导致溢出。这个分析正确吗?我不确定为什么我上面给出的链接说由于大量输入缓冲区导致缓冲区溢出。

标签: cbuffer-overflowrealpath

解决方案


推荐阅读