请选择 进入手机版 | 继续访问电脑版

专注代码检测 - 阅镜

 找回密码
 立即注册
热搜: 安装 代码
查看: 125|回复: 0

防止泄露指针(包括%p)的值

[复制链接]

70

主题

70

帖子

232

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
232
发表于 2021-9-10 14:27:25 | 显示全部楼层 |阅读模式
所有printf系列函数,要防止格式化完的字符串泄露程序布局信息。例如,如果将带有%p的字符串泄露给程序,则可能会破坏ASLR的防护效果。使得攻击者更容易攻破程序。

%p的值只应当在程序内使用,而不应当输出到外部或被外部以某种方式获取。

错误示例:

  1. // Bad
  2. // 如果这是暴露给客户的一个API:
  3. uint64_t GetUniqueObjectId(const Foo* pobject) {
  4.   return (uint64_t)pobject;
  5. }
复制代码


正确示例:

  1. // Good
  2. uint64_t g_object_id = 0;

  3. void Foo::Foo() {
  4.   this->object_id_ = g_object_id++;
  5. }

  6. // 如果这是暴露给客户的一个API:
  7. uint64_t GetUniqueObjectId(const Foo* object) {
  8.   if (object)
  9.     return object->object_id_;
  10.   else
  11.     error(...);
  12. }
复制代码

关联漏洞:

  1.   中风险-信息泄露
复制代码
回复

使用道具 举报

高级模式
B Color Image Link Quote Code Smilies |上传

本版积分规则

QQ|Archiver|手机版|小黑屋| 阅镜 ( 京ICP备2020034574号 )|网站地图|网站地图点击这里给我发消息

GMT+8, 2022-1-17 08:35 , Processed in 0.105548 second(s), 20 queries .

Powered by Discuz! X3.4

Copyright © 2001-2020, Tencent Cloud.

快速回复 返回顶部 返回列表