1

谷歌安全的2规则:三个选择中只能取两个

 7 months ago
source link: https://www.jdon.com/72373.html
Go to the source link to view the article. You can view the picture content, updated content and better typesetting reading experience. If the link is broken, please click the button below to view the snapshot at that time.
neoserver,ios ssh client

谷歌安全的2规则:三个选择中只能取两个 - 极道

当您编写代码来解析、评估或以其他方式处理来自互联网的不可信输入时,我们希望遵循一个简单的规则,以确保这样做足够安全!

我们喜欢遵循一条简单的规则,以确保这样做足够安全。

2规则是从以下选项中选择不超过 2 个,如果三种选择都发生,则不安全,安全漏洞发生!

  1. 不可信的输入;(坏人来了)
  2. 不安全的执行语言;(坏保安)
  3. 权限。(所有房间都没有门,让进来的人立即获得畅通无阻的高权限)
2-rule.png

1、不可信的输入
不可信的输入是指以下输入

  • 具有 non-trivial语法;and/or
  • 来源不可信。

如果有一种输入类型非常简单,可以直接为它编写内存安全的处理程序,那么我们就不需要为了内存安全而担心它的来源,因为我们确信我们可以处理它。当然,我们仍然需要在解析后将输入视为不可信的。

不幸的是,我们很少能找到足够琐碎的语法,让我们相信自己能成功或安全地解析它。

互联网上的任何任意对等点都是不可信的来源,除非我们能获得一些证明其可信性的证据(其中至少包括对来源身份的有力断言)。

如果我们能确定输入来自与应用程序本身相同的来源(例如 Chrome 浏览器的来源是 Google,火狐浏览器的来源是 Mozilla),并且传输是受完整性保护的(例如 HTTPS),那么即使是来自该来源的复杂输入,我们也可以接受解析。

在可行的情况下,理想的做法仍然是降低我们对来源的信任度,例如在沙箱中解析输入。

2、不安全的实现语言
不安全的实现语言是指缺乏内存安全性的语言,至少包括 C、C++ 和汇编语言。

内存安全语言包括 Go、RustPythonJava、JavaScript、Kotlin 和 Swift。

由于不安全代码超出了内存安全语言的正常预期,因此它必须遵循严格的规则,以避免未定义的行为和违反内存安全的行为,而这些规则并不总是容易验证的。需要由一位或多位不安全语言子集方面的专家进行仔细审查。在高权限环境中使用内存安全语言的任何代码都应该是安全的。因此,对内存安全语言实现的要求更高:内存安全语言中的所有代码(包括任何不安全代码)都必须能够在高权限上下文中满足第 2 条规则,才能在项目的任何地方使用或允许使用。

3、高度特权
高权限是一个相对术语。权限最高的程序包括计算机固件、引导加载程序、内核、任何管理程序或虚拟机监控程序等。其次是以操作系统级账户代表个人运行的进程,包括 Chrome 浏览器进程和 Gpu 进程。我们认为此类进程具有很高的权限。(毕竟,它们可以做任何个人可以做的事情,使用个人的所有宝贵数据和账户)。

权限略微降低的进程将(希望很快)包括网络进程。这些仍然是相当高权限的流程。我们一直在寻找既能降低它们的权限,又不会破坏它们的方法。

低权限进程包括沙箱实用程序和具有站点隔离(非常好)或起源隔离(更好)功能的渲染器进程。


About Joyk


Aggregate valuable and interesting links.
Joyk means Joy of geeK