热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

C中未初始化的局部变量中包含的值究竟是什么?

如何解决《C中未初始化的局部变量中包含的值究竟是什么?》经验,为你挑选了1个好方法。

如果我们在C中有一个带有简单的单位化ìnt变量的函数,我们就知道这个变量可能并不总是初始化为零.相反,它可能包含一些"垃圾"值.

我的问题是:究竟什么代表这个价值?它可能是由之前终止的进程留下的一些信息(未同步的内存)?

如果是,那么这不是一个极其严重的安全漏洞吗?因为以这种方式,任何进程都可以读取使用与当前进程相同的地址空间的进程留下的信息(密码,令牌等).

我的假设是,对于每个新进程,内核将为该新进程分配的内存(至少对于堆栈)归零,然后将可执行文件加载到内存中.那些"垃圾"值实际上值由所产生的加载过程的的当前进程(使得没有办法来访问从使用相同的地址空间的其他进程的任何左数据).

我正在与一些研究员讨论这个话题,我真的想要一个清晰而全面的答案(我确信有一个).我们假设内核是基于debian/centos的.很高兴知道不同内核/ OS-es的行为是否存在差异.

谢谢你.



1> Eric Postpis..:

这应该分为两个问题:

C标准对未初始化对象的价值有何评价?

叫什么内存main

第一个问题在其他Stack Overflow问题和答案中讨论.一个完整的答案是复杂的,涉及到各种情况的讨论,这个问题似乎并没有特别提出这个问题,所以我将把它留给其他Stack Overflow问题.对于这个问题,足以说明使用未初始化对象的值很容易出现未定义的行为.此外,这不仅仅是因为对象的内存可能具有麻烦的值,而是因为C标准允许C实现以各种方式将读取未初始化值的程序视为行为不当的程序,然后优化可以进一步破坏程序.

就内存中的内容而言(假设我们有一种支持的方式来检查它,可能通过使用汇编语言而不是C),那么提供任何类型的安全性的每个多用户系统在创建之前都会擦除(或以其他方式初始化)内存可用于流程.main正如问题所设想的那样,当前在内存中调用的任何值都是加载过程的结果或操作系统初始化的结果.(请注意,加载过程的结果包括加载常量数据和程序文本 - 因此我们希望在那里找到定义的值 - 以及加载代码完成的工作中剩余的任何数据 - 其变量等等. )

这个问题要求一个明确的答案,所以让我澄清一下:一个操作系统,对用户进程提供安全,必须使内存供其它进程之前擦除存储器中的先前过程数据.通过信任程序不检查它给出的内存并用它做任何想做的事情,就不能提供安全性.

不打算由不受信任的用户共享的基本系统当然可以在创建新进程并为其分配内存时跳过内存的初始化.


推荐阅读
  • FIN7后门工具伪装成白帽工具进行传播
    fin7,后门,工具,伪装,成,白, ... [详细]
  • Linux神奇漏洞:长按回车键70秒 即可轻松拿到Root权限
    一般来说获取系统root权限是很困难的,尤其是加密系统中,但西班牙安全研究员hectormarco、ismaelripoll发现,linux系统下只需按住回车键70秒钟,就能轻 ... [详细]
  • Centos7.6安装Gitlab教程及注意事项
    本文介绍了在Centos7.6系统下安装Gitlab的详细教程,并提供了一些注意事项。教程包括查看系统版本、安装必要的软件包、配置防火墙等步骤。同时,还强调了使用阿里云服务器时的特殊配置需求,以及建议至少4GB的可用RAM来运行GitLab。 ... [详细]
  • Ubuntu 9.04中安装谷歌Chromium浏览器及使用体验[图文]
    nsitionalENhttp:www.w3.orgTRxhtml1DTDxhtml1-transitional.dtd ... [详细]
  • 如何在服务器主机上实现文件共享的方法和工具
    本文介绍了在服务器主机上实现文件共享的方法和工具,包括Linux主机和Windows主机的文件传输方式,Web运维和FTP/SFTP客户端运维两种方式,以及使用WinSCP工具将文件上传至Linux云服务器的操作方法。此外,还介绍了在迁移过程中需要安装迁移Agent并输入目的端服务器所在华为云的AK/SK,以及主机迁移服务会收集的源端服务器信息。 ... [详细]
  • CentOS7.8下编译muduo库找不到Boost库报错的解决方法
    本文介绍了在CentOS7.8下编译muduo库时出现找不到Boost库报错的问题,并提供了解决方法。文章详细介绍了从Github上下载muduo和muduo-tutorial源代码的步骤,并指导如何编译muduo库。最后,作者提供了陈硕老师的Github链接和muduo库的简介。 ... [详细]
  • ShiftLeft:将静态防护与运行时防护结合的持续性安全防护解决方案
    ShiftLeft公司是一家致力于将应用的静态防护和运行时防护与应用开发自动化工作流相结合以提升软件开发生命周期中的安全性的公司。传统的安全防护方式存在误报率高、人工成本高、耗时长等问题,而ShiftLeft提供的持续性安全防护解决方案能够解决这些问题。通过将下一代静态代码分析与应用开发自动化工作流中涉及的安全工具相结合,ShiftLeft帮助企业实现DevSecOps的安全部分,提供高效、准确的安全能力。 ... [详细]
  • 目录浏览漏洞与目录遍历漏洞的危害及修复方法
    本文讨论了目录浏览漏洞与目录遍历漏洞的危害,包括网站结构暴露、隐秘文件访问等。同时介绍了检测方法,如使用漏洞扫描器和搜索关键词。最后提供了针对常见中间件的修复方式,包括关闭目录浏览功能。对于保护网站安全具有一定的参考价值。 ... [详细]
  • 本文探讨了容器技术在安全方面面临的挑战,并提出了相应的解决方案。多租户保护、用户访问控制、中毒的镜像、验证和加密、容器守护以及容器监控都是容器技术中需要关注的安全问题。通过在虚拟机中运行容器、限制特权升级、使用受信任的镜像库、进行验证和加密、限制容器守护进程的访问以及监控容器栈,可以提高容器技术的安全性。未来,随着容器技术的发展,还需解决诸如硬件支持、软件定义基础设施集成等挑战。 ... [详细]
  • 系统安装Debian系统的安装方式和Ubuntu系统的安装方式几乎是一样的,毕竟Ubuntu系统是基于Debian的,就如同CentOS基于Redhat ... [详细]
  • 如何查看电脑系统版本_腾讯云服务器系统版本怎么看?Windows和Centos版本怎么选?...
    腾讯云服务器系统版本怎么看?想要知道自己的腾讯云服务器系统版本是哪个,可以登录云服务器后台管理系统查看,或者使用命令行查询,如果不会操作& ... [详细]
  • 腾讯安全平台部招聘安全工程师和数据分析工程师
    腾讯安全平台部正在招聘安全工程师和数据分析工程师。安全工程师负责安全问题和安全事件的跟踪和分析,提供安全测试技术支持;数据分析工程师负责安全产品相关系统数据统计和分析挖掘,通过用户行为数据建模为业务决策提供参考。招聘要求包括熟悉渗透测试和常见安全工具原理,精通Web漏洞,熟练使用多门编程语言等。有相关工作经验和在安全站点发表作品的候选人优先考虑。 ... [详细]
  • Windows7企业版怎样存储安全新功能详解
    本文介绍了电脑公司发布的GHOST WIN7 SP1 X64 通用特别版 V2019.12,软件大小为5.71 GB,支持简体中文,属于国产软件,免费使用。文章还提到了用户评分和软件分类为Win7系统,运行环境为Windows。同时,文章还介绍了平台检测结果,无插件,通过了360、腾讯、金山和瑞星的检测。此外,文章还提到了本地下载文件大小为5.71 GB,需要先下载高速下载器才能进行高速下载。最后,文章详细解释了Windows7企业版的存储安全新功能。 ... [详细]
  • 【CTF 攻略】第三届 SSCTF 全国网络安全大赛—线上赛 Writeup
    【CTF 攻略】第三届 SSCTF 全国网络安全大赛—线上赛 Writeup ... [详细]
  • docker安装到基本使用
    记录docker概念,安装及入门日常使用Docker安装查看官方文档,在"Debian上安装Docker",其他平台在"这里查 ... [详细]
author-avatar
沈晓燕-东东
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有