登录
注册
开源
企业版
高校版
搜索
帮助中心
使用条款
关于我们
开源
企业版
高校版
私有云
模力方舟
AI 队友
登录
注册
12月21日就在北京,来看大模型推理 + 国产硬件生态 + 开源社区分享,一起搞技术、聊开源、领福利~~
代码拉取完成,页面将自动刷新
开源项目
>
其他开源
>
操作系统
&&
捐赠
捐赠前请先登录
取消
前往登录
扫描微信二维码支付
取消
支付完成
支付提示
将跳转至支付宝完成支付
确定
取消
Watch
不关注
关注所有动态
仅关注版本发行动态
关注但不提醒动态
45
Star
128
Fork
110
嵌入式软件部
/
Phytium-Linux-Kernel
代码
Issues
0
Pull Requests
0
Wiki
统计
流水线
服务
JavaDoc
PHPDoc
质量分析
Jenkins for Gitee
腾讯云托管
腾讯云 Serverless
悬镜安全
阿里云 SAE
Codeblitz
SBOM
我知道了,不再自动展开
更新失败,请稍后重试!
移除标识
内容风险标识
本任务被
标识为内容中包含有代码安全 Bug 、隐私泄露等敏感信息,仓库外成员不可访问
关于power minitor功能的问询
已完成
#IDD1VL
需求
Yurii
创建于
2025-12-15 15:10
感谢对Phytium Embedded 项目的支持与关注。 ### 复现方法 我正在查找关于非破坏性安全性的 FTE2000Q 平台,供电状态获取办法。 我现在的现状,内核开启如下选项: ``` CONFIG_DEVMEM=y CONFIG_STRICT_DEVMEM=n CONFIG_IO_STRICT_DEVMEM=n ``` 具有用户态代码: ``` #include <stdio.h> #include <stdlib.h> #include <unistd.h> #include <getopt.h> #include <fcntl.h> #include <string.h> #include <sys/mman.h> #include <errno.h> #include <sys/time.h> void * gpio_base; unsigned int * base; unsigned int * base2; #define GPIO_BASE_ADDR 0x28036000 #define GPIO_DR 0x00 #define GPIO_DDR 0x04 #define GPIO_EXT 0x08 int main(int argc, char **argv){ char *device_name = "/dev/mem"; int fd; int value, value2; fd = open("/dev/mem", O_RDWR|O_SYNC); if (fd < 0) { perror(strerror(errno)); return (-1); } gpio_base = mmap(NULL, 0x1000, PROT_READ|PROT_WRITE, MAP_SHARED, fd, GPIO_BASE_ADDR); if ((gpio_base == 0) || ((unsigned long)gpio_base == (unsigned long)-1)) { printf("mmap error,NULL pointer! %x\n",GPIO_BASE_ADDR); return 1; } base = gpio_base + GPIO_DDR; * base &= ~(0x01<<6); * base &= ~(0x01<<7); base2 = gpio_base + GPIO_EXT; value = (*base2 >> 6) & 0x01; value2 = (*base2 >> 7) & 0x01; printf("GPIO2_6 input value = %d \n\r GPIO2_7 input value = %d \n\r", value, value2); munmap(gpio_base, 0x1000); close(fd); return 0; } ``` 它是肯定能获取到供电状态的。但 ``` CONFIG_STRICT_DEVMEM=n CONFIG_IO_STRICT_DEVMEM=n ``` 在开源系统openEuler上、UOS内核上均不开启。 开启选项导致存在内核安全性风险: 1. 安全风险:物理内存 / 硬件资源被恶意利用 /dev/mem 会开放全物理内存、硬件 I/O 区域的读写权限(包括内核内存、设备寄存器等)。 非特权用户(或恶意程序)可通过它直接修改内核数据、篡改硬件配置,甚至获取敏感信息(如密码、密钥)。 相当于给系统开了 “后门”,极易被用于提权、注入恶意代码,或破坏系统完整性。 2. 稳定性风险:系统崩溃 / 硬件损坏 错误读写物理内存(比如覆盖内核关键数据、干扰硬件寄存器)会直接导致内核崩溃、进程异常终止。 随意修改硬件 I/O 区域(如 PCI 设备、BIOS 内存),可能造成硬件工作异常、甚至物理损坏(比如错误改写 BIOS 固件)。 当系统遇到了类似HIC病毒、恶意程序时损坏固件程序而变砖。 ### 我的期望 有没有更好的实现源码作为参考,比如实现ko进行内核态隔离。 ### 操作系统 openeuler 20.03 LTS SP4 ### 硬件环境 FT-E2000Q 
感谢对Phytium Embedded 项目的支持与关注。 ### 复现方法 我正在查找关于非破坏性安全性的 FTE2000Q 平台,供电状态获取办法。 我现在的现状,内核开启如下选项: ``` CONFIG_DEVMEM=y CONFIG_STRICT_DEVMEM=n CONFIG_IO_STRICT_DEVMEM=n ``` 具有用户态代码: ``` #include <stdio.h> #include <stdlib.h> #include <unistd.h> #include <getopt.h> #include <fcntl.h> #include <string.h> #include <sys/mman.h> #include <errno.h> #include <sys/time.h> void * gpio_base; unsigned int * base; unsigned int * base2; #define GPIO_BASE_ADDR 0x28036000 #define GPIO_DR 0x00 #define GPIO_DDR 0x04 #define GPIO_EXT 0x08 int main(int argc, char **argv){ char *device_name = "/dev/mem"; int fd; int value, value2; fd = open("/dev/mem", O_RDWR|O_SYNC); if (fd < 0) { perror(strerror(errno)); return (-1); } gpio_base = mmap(NULL, 0x1000, PROT_READ|PROT_WRITE, MAP_SHARED, fd, GPIO_BASE_ADDR); if ((gpio_base == 0) || ((unsigned long)gpio_base == (unsigned long)-1)) { printf("mmap error,NULL pointer! %x\n",GPIO_BASE_ADDR); return 1; } base = gpio_base + GPIO_DDR; * base &= ~(0x01<<6); * base &= ~(0x01<<7); base2 = gpio_base + GPIO_EXT; value = (*base2 >> 6) & 0x01; value2 = (*base2 >> 7) & 0x01; printf("GPIO2_6 input value = %d \n\r GPIO2_7 input value = %d \n\r", value, value2); munmap(gpio_base, 0x1000); close(fd); return 0; } ``` 它是肯定能获取到供电状态的。但 ``` CONFIG_STRICT_DEVMEM=n CONFIG_IO_STRICT_DEVMEM=n ``` 在开源系统openEuler上、UOS内核上均不开启。 开启选项导致存在内核安全性风险: 1. 安全风险:物理内存 / 硬件资源被恶意利用 /dev/mem 会开放全物理内存、硬件 I/O 区域的读写权限(包括内核内存、设备寄存器等)。 非特权用户(或恶意程序)可通过它直接修改内核数据、篡改硬件配置,甚至获取敏感信息(如密码、密钥)。 相当于给系统开了 “后门”,极易被用于提权、注入恶意代码,或破坏系统完整性。 2. 稳定性风险:系统崩溃 / 硬件损坏 错误读写物理内存(比如覆盖内核关键数据、干扰硬件寄存器)会直接导致内核崩溃、进程异常终止。 随意修改硬件 I/O 区域(如 PCI 设备、BIOS 内存),可能造成硬件工作异常、甚至物理损坏(比如错误改写 BIOS 固件)。 当系统遇到了类似HIC病毒、恶意程序时损坏固件程序而变砖。 ### 我的期望 有没有更好的实现源码作为参考,比如实现ko进行内核态隔离。 ### 操作系统 openeuler 20.03 LTS SP4 ### 硬件环境 FT-E2000Q 
评论 (
10
)
登录
后才可以发表评论
状态
已完成
需求确认
设计中
设计确认
开发中
开发完成
测试中
验收中
已完成
已拒绝
负责人
未设置
标签
未设置
项目
未立项任务
未立项任务
里程碑
未关联里程碑
未关联里程碑
Pull Requests
未关联
未关联
关联的 Pull Requests 被合并后可能会关闭此 issue
分支
未关联
分支 (6)
标签 (40)
linux-5.10
linux-6.6-rt
linux-6.6
linux-4.19
linux-4.19-rt
linux-5.10-rt
kernel-6.6-rt_v3.3
kernel-6.6_v3.3
kernel-6.6-rt_v3.2
kernel-6.6_v3.2
kernel-4.19-rt_v2.3
kernel-4.19_v2.3
kernel-5.10-rt_v2.3
kernel-5.10_v2.3
kernel-6.6-rt_v3.1
kernel-6.6_v3.1
kernel-5.10-rt_v2.2
kernel-5.10_v2.2
kernel-4.19-rt_v2.2
kernel-4.19_v2.2
kernel-6.6-rt_v3.0
kernel-6.6_v3.0
kernel-5.10-rt_v2.1
kernel-5.10_v2.1
kernel-4.19-rt_v2.1
kernel-4.19_v2.1
kernel-4.19-rt_v2.0
kernel-4.19_v2.0
kernel-5.10-rt_v2.0
kernel-5.10_v2.0
kernel_4.19-rt-v1.1
kernel_4.19-v1.1
kernel_5.10-rt-v1.1
kernel_5.10-v1.1
kernel_5.10-rt_phytiumpios-v1.0
kernel_5.10_phytiumpios-v1.0
kernel_4.19-rt_phytiumpios-v1.0
kernel_4.19_phytiumpios-v1.0
kernel_4.19-rt_2023-v1.0-GA
kernel_4.19_2023-v1.0-GA
kernel_5.10-rt_2023-v1.0-GA
kernel_5.10_2023-v1.0-GA
kernel_4.19-rt_2023-v1.0-RC1
kernel_4.19_2023-v1.0-RC1
kernel_5.10-rt_2023-v1.0-RC1
kernel_5.10_2023-v1.0-RC1
开始日期   -   截止日期
-
置顶选项
不置顶
置顶等级:高
置顶等级:中
置顶等级:低
优先级
不指定
严重
主要
次要
不重要
预计工期
(小时)
参与者(1)
1
https://gitee.com/phytium_embedded/phytium-linux-kernel.git
git@gitee.com:phytium_embedded/phytium-linux-kernel.git
phytium_embedded
phytium-linux-kernel
Phytium-Linux-Kernel
点此查找更多帮助
搜索帮助
Git 命令在线学习
如何在 Gitee 导入 GitHub 仓库
Git 仓库基础操作
企业版和社区版功能对比
SSH 公钥设置
如何处理代码冲突
仓库体积过大,如何减小?
如何找回被删除的仓库数据
Gitee 产品配额说明
GitHub仓库快速导入Gitee及同步更新
什么是 Release(发行版)
将 PHP 项目自动发布到 packagist.org
评论
仓库举报
回到顶部
登录提示
该操作需登录 Gitee 帐号,请先登录后再操作。
立即登录
没有帐号,去注册