当心僵尸:过时Linux内核的安全风险

news2024/11/17 0:19:12
导读设备年年新,内核永不换。早该被淘汰的Linux内核版本,依然阴魂不散地扎根在各种各样的设备中,驱动着这些设备如同《行尸走肉》的丧尸游荡在世界各地。

Linux内核安全漏洞是新闻头条常客。最近又有一个隐身十年之久的严重内核漏洞被曝光了。但是,这到底代表着什么现实意义呢?为什么Linux内核安全很重要?老旧内核上的漏洞在众多设备中苟延残喘到底有什么影响?

Linux是操作系统的王者

毋庸置疑,Linux系操作系统的流行度无人能出其右:3/4的IoT设备运行Linux;2/3的在线服务器用Linux;70%的平板基于安卓系统(修改版Linux内核)——Linux简直无处不在!

这里面有部分是因为Linux是开源系统,开发者不用付授权费,很乐于取用。Linux是电子芯片生产商常会附带的软件开发包(SDK)。这为开发者提供了工作参考平台,以及硬件能力演示平台。

有了参考开发平台,制造商便只需操起该操作系统和SDK,编译自有应用程序,然后就可以准备发售新产品了。然而,不幸的是,这些超方便的样例和操作系统往往十分老旧,而且通常早就不被支持了。

但是,为什么老旧内核问题大大呢?IoT烤箱或者车载娱乐系统不是最先进科技又何妨嘛?

2015年的一份研究论文揭示:家用和小型办公室路由器中,有3/4都装的是过时Linux内核固件。其中大多数设备漏洞密布,很多漏洞都没打补丁,也就是说,这些设备很容易被漏洞利用。

我们可以深入探讨一下Linux内核基础。为什么它很重要?它到底是做什么的?当内核不再受支持,会发生什么?为什么老旧内核会对设备和网络安全造成严重影响?

内核是操作系统的心脏

我们很容易就会忘了,全功能操作系统其实不仅仅局限在桌面电脑和服务器上;操作系统根本就是到处都是。车载卫星导航系统能用,联网冰箱会发来邮件,机上娱乐系统还能追美剧,这一切似乎都太自然了。

但是,即便家里的路由器只有个Web界面和几盏小灯闪个不停,IoT儿童玩具就是唱唱摇篮曲和监视孩子状况,它们依然有很多共性,比如全都运行有操作系统,而且很大可能是基于Linux的操作系统。几乎所有这些设备都可以运行其他软件,至于这“其他”软件的功能,那可就包罗万象没有做不到只有想不到了。

您设备上操作系统的心脏当然就是内核了。它是掌管一切的看门人。硬件、用户许可、权限、内存、软件和接口,统统由它掌控。内核是操作系统的核心,其安全性至关重要。

内核的作用就是让事情易于操作。它让组件间交互变得抽象,比如,软件开发者不用知道硬件或RAM内部运行机制就可以读写文件。

无论用哪种编程语言,保存文本文件的步骤基本一致:

以写权限打开“芝士蛋糕配方.txt”将配方写入文件关闭“芝士蛋糕配方.txt”

这背后的动作其实很复杂。如果你想的是CPU实际执行的指令和所有设备间交互操作,那真是相当、非常、极度复杂。有板砖厚的教科书专门详解内核驱动,也有一整学期的大学课程带你浅尝操作系统。

就保存文件这个例子,写文件的过程就涉及到管理内存分配的内核组件和驱动、文件系统结构、硬盘驱动、字符驱动、块驱动、芯片驱动等等等等。内核管理着所有这些交互,这样程序员才能方便地打开文件,并保存他们的芝士蛋糕配方……

如果这些内核组件中有哪个出了问题,黑客就能以此为桥头堡,侵入你的系统。举个例子,如果文件系统驱动处理不了超长文件名,黑客就可利用该漏洞来突破系统。

只要内核某部分出了漏洞,很多安全因素就会粉墨登场了。突然之间,你的整个操作系统和设备,都有可能因为这个似乎不起眼的问题,而沦为漏洞利用的猎物。

内核的问题在于版本过多

Linux内核可不止一个,内核也不过是个软件,与其他任何软件应用一样,它也是有很多版本的。事实上,官方Linux内核版本就不下几十个,非官方版本更是不计其数。开源,就意味着任何设备工程师、程序员或业余黑客,都可以下载、鼓捣和打造自己的定制版内核。

仔细观察,你就发现,Linux内核编号也跟其他软件一样,是有规律的。有内核版本、主版本、次版本和补丁版本。当然,也可以加其他字母和数字,标识是贝塔版还是预发行版,或者定制版内核。

编译Linux内核的过程并不特别复杂。业余玩家在读几个小时指南,指天咒地一番,顺带干掉几杯咖啡之后,也是能从源代码编译出一个Linux内核的(软件大神圣光普照)。

但很不幸,也正是这个容易的过程,为漏洞和配置问题洞开了大门。

既然也是软件,漏洞是免不了的。常见的“长期支持”内核版本是 2.6.32,路由器、IoT设备,甚至某些宝马车载娱乐系统中都能找到。

对 2.6.32 版Linux内核来个快速漏洞扫描,你会发现182个已知漏洞,其中数十个都相当严重。

但是,首先,别紧张,这些漏洞并非总是应用到所有内核配置上的。比如说,如果你的设备不用蓝牙,那么蓝牙组件中的漏洞就不会影响到你(虽然有时候很难知道内核组件交互情况)。

然后,你需要谨记的,是哪些内核版本已经打上了已知漏洞补丁。比如说,Linux网卡驱动组件里发现了L2TP相关漏洞。但只要我们查阅受影响内核版本列表,就会看到 2.6.32.20 已经是最后一个脆弱版本了。这意味着,官方维护的Linux内核 2.6.32.21 及其以后版本,均不受该漏洞影响。

修补漏洞成为老大难

受影响内核自然要被更新。但是,内核 2.6.32 身上发生了什么呢?官方宣布它已“寿终正寝”。也就是说,该版本内核不再受支持,而最新的官方更新,是在2016年年中。

想象一下,“寿终正寝”对于新发现的漏洞是个什么意思?Linux社区不可能无限期更新老版内核,于是,最有可能的情况,是新漏洞永远不会被修复。这种情况下,更新内核的责任就落到了设备制造商身上。然而,针对特定漏洞手动修复内核,比简单下载最新版受支持的内核,要复杂得多。

有些厂商订阅第三方服务提供内核补丁,其他可能自己修复。

或者,如调查发现的,大多数设备就这么干脆不更新了,甚至上周刚买的全新路由器,都有可能运行的是漏成筛子的老旧内核。

对路由器内核版本来个现场抽样速查。时下4种型号的固件镜像中,3个跑的是过时内核,其中一个的内核还是2009年发布的;最新的内核(新发布的设备上的)倒是挺新,但也是在下个月就不再支持了。

制造商和开发者是最终责任人

内核版本真的很重要!内核是操作系统的心脏,管理着包括硬件、内存、应用和用户权限在内的所有东西。如果内核存在漏洞,设备就有可能被黑。内核漏洞经常被发现,但只有当前内核版本才会被更新和修复。

落实到设备上,制造商和开发者,是提供维护良好的安全操作系统的最终责任人。最近,技术巨头华硕才与美国联邦贸易委员会就不安全路由器和云服务达成了和解。对很多制造商来说,该案件传达的消息似乎尚未落地。可能还需更多法律诉讼,甚或立法,才能迫使制造商严肃对待设备安全问题。

随着联网设备的激增,技术产业的每个人,都应将眼光投注在安全上。推出令人激动的新技术,却沿用已知漏洞肆虐的老旧内核,太不应该!

 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/712804.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

layer做阻塞式弹出层的方法

今天遇到一个问题:文章来源地址https://www.yii666.com/article/301050.html?actiononAll layer弹出一个confirm提示窗,然后confirm还没有点击对应的按钮的时候,就已经执行了后续代码,我这里做出的判断是,是否需要进行…

vue新特性

vue3 ref、reactive toRefs setup ref reactive 实现了数据响应式,不能使用 ES6 解构,会消除响应特性。所以需要 toRefs 解构,使用时,需要先引入。 let me reactive({single:true,want:"暖的像火炉的暖男" }) //运…

小黑收到阿黄宴请潮汕牛肉火锅,跟淹哥包鹏拉面,明日飞新疆乌鲁木齐地窝堡的leetcode之旅:剑指 Offer II 016. 不含重复字符的最长子字符串

小黑代码&#xff08;与官方题解思路一致&#xff09; class Solution:def lengthOfLongestSubstring(self, s: str) -> int:# 字符串长度n len(s)# 定义双指针head 0tail 0# 窗口集合set_ set()# 结果变量result 0while tail < n:# 该字符不在集合里if s[tail] no…

【数据结构】队列——顺序实现+链式实现(带头结点+不带头结点)入队 出队 初始化 判空 双端队列 完整代码

文章目录 四 队列1.基本概念2.队列的顺序存储3.队列的链式实现3.1 定义3.2 带头结点3.2.1 初始化3.2.2 判空3.2.3 入队3.2.4 出队3.2.5 完整代码 3.3 不带头结点3.3.1 初始化3.3.2 入队3.3.3 出队3.3.4 完整代码 4.双端队列 四 队列 1.基本概念 定义 只允许在一端进行插入&…

代理服务器拒绝连接怎么办

在使用代理服务器时&#xff0c;有时我们可能会遇到代理服务器拒绝连接的问题。这种情况可能会阻止我们访问被封锁的内容或绕过地理限制。下面&#xff0c;我们来一起探讨一下。 1. 配置错误 代理服务器拒绝连接的一个常见原因是配置错误。请确保您已正确输入代理服务器的地址和…

64MHz 闪存STM32G0B1CEU6(STM32G0B1CCU6)STM32G0B1CBU6引脚配置图、32位微控制器

STM32G0B1 32位微控制器具有最高512KB嵌入式闪存和144kB RAM存储器。该器件采用48-UFQFPN 引脚封装。它支持USB全速主机/设备、集成USB Type-C控制器和收发器、FDCAN协议以及多达8个UART。 STM32G0 32位微控制器 (MCU) 适合用于消费、工业和家电领域的应用&#xff0c;并可随时…

el-carousel和el-image组合实现swiper左右滑动图片,点击某张图片放大预览的效果

<template><el-carousel class"image-swiper" :height"100%" :indicator-position"swiperItems.length < 1 ? none : ":arrow"swiperItems.length < 1 ? never : "><el-carousel-item v-for"(a, $i) in s…

尚硅谷Docker实战教程-笔记06【Docker容器数据卷】

尚硅谷大数据技术-教程-学习路线-笔记汇总表【课程资料下载】视频地址&#xff1a;尚硅谷Docker实战教程&#xff08;docker教程天花板&#xff09;_哔哩哔哩_bilibili 尚硅谷Docker实战教程-笔记01【理念简介、官网介绍、平台入门图解、平台架构图解】尚硅谷Docker实战教程-笔…

移动端H5实现自定义拍照界面

一、实现思路 手机端 H5 实现自定义拍照界面也可以使用 MediaDevices API 和 <video> 标签来实现。 首先&#xff0c;使用 MediaDevices.getUserMedia() 方法获取摄像头媒体流&#xff0c;并将其传递给 <video> 标签进行渲染。 接着&#xff0c;使用 HTML 的 <…

手把手教你搭建SpringCloudAlibaba之Sentinel注解SentinelResource

SpringCloud Alibaba全集文章目录&#xff1a; 零、手把手教你搭建SpringCloudAlibaba项目 一、手把手教你搭建SpringCloud Alibaba之生产者与消费者 二、手把手教你搭建SpringCloudAlibaba之Nacos服务注册中心 三、手把手教你搭建SpringCloudAlibaba之Nacos服务配置中心 …

【智慧交通项目实战】《 OCR车牌检测与识别》(四):基于Pyqt的项目可视化

&#x1f468;‍&#x1f4bb;作者简介&#xff1a; CSDN、阿里云人工智能领域博客专家&#xff0c;新星计划计算机视觉导师&#xff0c;百度飞桨PPDE&#xff0c;专注大数据与AI知识分享。✨公众号&#xff1a;GoAI的学习小屋 &#xff0c;免费分享书籍、简历、导图等&#xf…

SpringBoot 限流方案

一、背景 限流对于一个微服务架构系统来说具有非常重要的意义&#xff0c;否则其中的某个微服务将成为整个系统隐藏的雪崩因素&#xff0c;为什么这么说&#xff1f; 举例来讲&#xff0c;某个SAAS平台有100多个微服务应用&#xff0c;但是作为底层的某个或某几个应用来说&…

【前端】运行一个vue项目

如何运行一个vue项目 首先cd到要运行的vue文件夹下&#xff0c;或者是在webstorm下面的终端直接打开&#xff0c;就会自动开启在这个文件夹下的终端安装项目中所有需要的依赖包 sudo npm install运行项目 sudo npm run serve到这里项目就运行起来了 4. 打开项目 点击网址打…

html实现视频网站,仿爱奇艺,搜狐,迅雷看看(附源码)

文章目录 1.功能模板1.1 仿爱奇艺1.2 仿搜狐视频1.3 仿迅雷看看1.4 视频播放1.5 影视公司官网 2.效果和源码2.1 源代码2.2 模板目录 源码下载 作者&#xff1a;xcLeigh 文章地址&#xff1a;https://blog.csdn.net/weixin_43151418/article/details/131516313 html实现视频网站…

c++ 内存管理二:重载(接管内存管理工具)

文章目录 前言1 重载全局的 ::operator new 运算符2 重载类的 operator new 运算符3 重载类的带有额外参数的 operator new 运算符 前言 重载 operator new 运算符来自定义内存分配的行为。重载 operator new 运算符允许我们使用自定义的内存分配逻辑&#xff0c;例如使用池分…

压测工具哪个好?LoadRunner、Jmeter、Locust、Wrk 全方位对比....

当你想做性能测试的时候&#xff0c;你会选择什么样的测试工具呢&#xff1f;是会选择wrk&#xff1f;jmeter&#xff1f;locust&#xff1f;还是loadrunner呢&#xff1f;今天&#xff0c;笔者将根据自己使用经验&#xff0c;针对jmeter、locust、wrk和loadrunner常用的性能测…

【数据结构与算法】内排序算法比较(C\C++)

实践要求 1. 问题描述 各种内部排序算法的时间复杂度分析结果只给出了算法执行时间的阶&#xff0c;或大概执行时间&#xff0c;试通过随机的数据比较各算法的关键字比较次数和关键字移动次数&#xff0c;以取得直观感受。 2. 基本要求 对以下10种常用的内部排序算法进行比较…

MySQL更改表结构语句

一、MySQL表结构变更语句 1. 新增字段 语法&#xff1a; &#xff08;1&#xff09;在末尾添加字段 ALTER TABLE <表名> ADD <新字段名><数据类型>[约束条件]; &#xff08;2&#xff09;在开头添加字段 ALTER TABLE <表名> ADD <新字段名> <…

[C++]lambda

目录 前言&#xff1a; 1 认识lambda 2 lambda语法 3 lambda的类型 4 lambda的底层 前言&#xff1a; 本篇讲解了C11当中新添加的lambda语法&#xff0c;以及lambda的底层 1 认识lambda lambda的出现方便了很多我们写程序的地方&#xff0c;例如下面这个样例…

C++图形开发(2):最基本的图形界面

文章目录 1.构成2.内容介绍2.1 initgraph()2.2 _getch()2.3 closegraph() 3.总结 今天来简单介绍下最基本的图形界面~ 1.构成 输入以下内容并编译&#xff1a; 这就是一个最基本的图形界面了 #include<graphics.h> #include<conio.h>int main() {initgraph(600, …