可以在运行时更改argv(不能由应用程序本身更改)

问题描述 投票:2回答:1

我想知道是否可以在运行时更改main()的输入参数。换句话说,在argv中处理数据时,是否应保护应用程序免受可能的TOCTOU攻击。目前,我不知道更改argv中传递的数据的任何方法,但是我不确定这种方法不存在。

c++ c argv tocttou
1个回答
4
投票

这完全取决于您的threat model

我想说这里有两个主要选项:

  1. 您不信任环境,并假定计算机上的其他特权进程能够在程序运行时更改其内存内容。如果是这样,没有什么是安全的,可以将程序更改为按字面意思任何东西。在这种情况下,您甚至不能相信整数比较。
  2. 您相信程序在其中运行的环境。在这种情况下,您的程序是其数据的唯一所有者,并且只要您不明确决定更改argv或任何其他数据,就可以依赖它。

TOCTTOU类问题通常是由外部untrusted数据引起的,可以由其他人修改,并且从定义上不应该被信任。一个简单的例子就是文件的存在:您不能依赖它,因为计算机上的其他用户或程序可能会删除或移动它。您的问题只能由您自己回答:您将可信和不可信的界限放在哪里?

© www.soinside.com 2019 - 2024. All rights reserved.