From 555c4a458ec2ff76eb713997024d460a5710204d Mon Sep 17 00:00:00 2001 From: MeowOS Date: Mon, 31 Aug 2026 04:55:49 +0800 Subject: [PATCH] =?UTF-8?q?feat(svc=5Fpower):=20=E8=AF=BB=E7=BA=A7?= =?UTF-8?q?=E5=91=BD=E4=BB=A4=E9=89=B4=E6=9D=83=E6=94=BE=E5=AE=BD=E5=88=B0?= =?UTF-8?q?=E4=BB=BB=E6=84=8F=E8=B0=83=E7=94=A8=E8=80=85=20(agent-189,=20?= =?UTF-8?q?=E7=94=A8=E6=88=B7=E5=AE=9A=E6=A1=88)=20=E2=80=94=20STATUS/BATT?= =?UTF-8?q?ERY/REBOOT=5FREASON/UPGRADE=5FSTATUS/dac=20status=20=E8=AF=BB?= =?UTF-8?q?=E7=BA=A7=E4=B8=8D=E5=86=8D=E6=9F=A5=20uid=EF=BC=9B=E5=8A=A8?= =?UTF-8?q?=E4=BD=9C=E7=BA=A7=E7=BB=B4=E6=8C=81=20os.meow.*/=E7=B3=BB?= =?UTF-8?q?=E7=BB=9F=E8=BA=AB=E4=BB=BD=EF=BC=9Bauthtest=20+16=20=E6=96=AD?= =?UTF-8?q?=E8=A8=80=20ALL=20PASS=E3=80=82svc=5Fpower=20e0494eb7=E2=86=92c?= =?UTF-8?q?6ddf3f8?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- patch_v2/meow_svc_power/meow_svc_power | Bin 91820 -> 91964 bytes patch_v2/meow_svc_power/meow_svc_power.c | 32 +++++++++++++++---- patch_v2/meow_svc_power/meow_svc_power_host | Bin 73544 -> 73544 bytes patch_v2/meow_svc_power/svc_power_authtest | Bin 0 -> 74064 bytes patch_v2/meow_svc_power/svc_power_authtest.c | 28 +++++++++++++++- 5 files changed, 53 insertions(+), 7 deletions(-) create mode 100755 patch_v2/meow_svc_power/svc_power_authtest diff --git a/patch_v2/meow_svc_power/meow_svc_power b/patch_v2/meow_svc_power/meow_svc_power index 27457ca12a1cdb498d975c7d910ff81461fcb7ac..01f3fbcec48ee20693fb004e350e523bffa53fe7 100755 GIT binary patch delta 15659 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

JgHkUGgWp<;$wOw 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 diff --git a/patch_v2/meow_svc_power/meow_svc_power.c b/patch_v2/meow_svc_power/meow_svc_power.c index 0a4a586..a76a0d4 100644 --- a/patch_v2/meow_svc_power/meow_svc_power.c +++ b/patch_v2/meow_svc_power/meow_svc_power.c @@ -13,8 +13,10 @@ * 鉴权(II 期,MPK_SIGNATURE_DESIGN §6):IPC 服务端按【连接级身份】分级——`SO_PEERCRED` 取 pid → * `readlink /proc/pid/exe` → 命中 `MeowAPPs//` 判定包名,或命中系统二进制 allowlist * (/usr/bin/meow_*、/usr/data/meow/meow*、MeowPanel 后端)判定为系统身份;其余为 OTHER。 - * 动作级策略:系统动作(shutdown/reboot/upgrade/back_hiby/set-default-*)仅放行 `os.meow.*` 包或系统身份; - * 读/状态类(status/battery/reboot_reason/upgrade_status/screen/dac)放行所有 root 调用方;非 root 一律拒。 + * 命令分「读级/动作级」(用户定案 2026-08-31):读级(status/battery/reboot_reason/upgrade_status/ + * dac status,只读无副作用)放宽到**任意调用者**(不查 uid/身份);动作级维持现状——系统动作 + * (shutdown/reboot/upgrade/back_hiby/set-default-*)仅放行 `os.meow.*` 包或系统身份,非系统动作 + * (screen/dac on|off)仍须 root;非 root 一律拒。 * `MSG_HELLO` 自报 app_id 不在此作权威(仅交叉校验,见 §6.1)。CLI=root 免鉴权。 * * 通知转储归属(§3.2/§3.3 已定案):通知存储为 launcher 进程内存(meow_notif.c g_slots[]),服务跨进程 @@ -617,6 +619,21 @@ static int is_system_action(uint32_t cmd) } } +/* 读级命令(用户定案 2026-08-31):只读查询、无副作用——status/battery/reboot_reason/upgrade_status, + * 及 DAC 的 status(flag=2)。读级放宽到任意调用者(不查 uid/身份);screen/dac on|off 等有副作用 → 动作级。 */ +static int is_read_level(const m_power_action_t *a) +{ + switch (a->cmd) { + case POWER_STATUS: case POWER_BATTERY: + case POWER_REBOOT_REASON: case POWER_UPGRADE_STATUS: + return 1; + case POWER_DAC: + return a->flag == 2; /* 仅 dac status 为读;on/off(flag=0/1) 是动作 */ + default: + return 0; + } +} + /* 是否可信系统身份:CALL_SYS(受信系统二进制)或 CALL_PKG 且包前缀 os.meow.*。 */ static int is_sys_identity(const caller_t *c) { @@ -717,12 +734,15 @@ static void handle_conn(int c) memset(&a, 0, sizeof a); if (rlen > sizeof a) rlen = sizeof a; memcpy(&a, payload, rlen); - /* 动作级策略(设计 §6.3):非 root 一律拒;系统动作须 os.meow.* 包或受信系统身份; - * 读/状态类(STATUS/BATTERY/REBOOT_REASON/UPGRADE_STATUS/SCREEN/DAC)放行所有 root 调用方。 */ + /* 动作级策略(设计 §6.3 + 用户定案 2026-08-31):读级(只读无副作用)放宽到任意调用者, + * 不查 uid/身份;动作级维持现状——系统动作(shutdown/reboot/upgrade/back_hiby/set-default-*) + * 须 os.meow.* 包或受信系统身份,非系统动作(screen/dac on|off)仍须 root。 */ int allow = 0; - if (caller.uid == 0) { + if (is_read_level(&a)) { + allow = 1; /* 读级:任意调用者直接放行 */ + } else if (caller.uid == 0) { if (is_system_action(a.cmd)) allow = is_sys_identity(&caller); - else allow = 1; + else allow = 1; /* 动作级非系统动作(screen/dac on|off):root */ } if (!allow) { m_power_status_t st; diff --git a/patch_v2/meow_svc_power/meow_svc_power_host b/patch_v2/meow_svc_power/meow_svc_power_host index e47498fc975da63dd3b5000b69246d6b3e98bf6b..da1542e4b490cb7770b15843f03368fc444dd2ea 100755 GIT binary patch delta 3572 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 literal 0 HcmV?d00001 diff --git a/patch_v2/meow_svc_power/svc_power_authtest.c b/patch_v2/meow_svc_power/svc_power_authtest.c index ed4b96d..823d2da 100644 --- a/patch_v2/meow_svc_power/svc_power_authtest.c +++ b/patch_v2/meow_svc_power/svc_power_authtest.c @@ -1,7 +1,8 @@ /* svc_power_authtest.c — meow_svc_power II 期 IPC 鉴权逻辑 宿主自测(本程序非生产代码)。 * * 通过 #include 生产源文件(meow_svc_power.c,用 #define main 改名避免入口冲突),在同一 TU 内直接 - * 访问其 FILE-STATIC 函数 classify_exe / is_system_action / is_sys_identity,验证鉴别/分级策略的决策表。 + * 访问其 FILE-STATIC 函数 classify_exe / is_system_action / is_sys_identity / is_read_level, + * 验证鉴别/分级策略的决策表。 * 覆盖「真机需特权路径 /proc/pid/exe 判定」之外的所有纯逻辑分支;真实 pid→exe 解析留真机验证。 * * 用途:dev docs 复现级宿主自测;不进入固件/不部署。用法: @@ -87,6 +88,31 @@ int main(void) CHECK(is_system_action(POWER_SCREEN) == 0); CHECK(is_system_action(POWER_DAC) == 0); + printf("== is_read_level ==\n"); + m_power_action_t a; + memset(&a, 0, sizeof a); + + /* 读级(只读无副作用)→ 1:放宽到任意调用者 */ + a.cmd = POWER_STATUS; CHECK(is_read_level(&a) == 1); + a.cmd = POWER_BATTERY; CHECK(is_read_level(&a) == 1); + a.cmd = POWER_REBOOT_REASON; CHECK(is_read_level(&a) == 1); + a.cmd = POWER_UPGRADE_STATUS; CHECK(is_read_level(&a) == 1); + + /* DAC status(flag=2) 为读级;on/off(flag=0/1) 为动作级 */ + a.cmd = POWER_DAC; a.flag = 2; CHECK(is_read_level(&a) == 1); /* dac status */ + a.cmd = POWER_DAC; a.flag = 0; CHECK(is_read_level(&a) == 0); /* dac off */ + a.cmd = POWER_DAC; a.flag = 1; CHECK(is_read_level(&a) == 0); /* dac on */ + + /* 动作级(有副作用/系统级)→ 0:走现有鉴权 */ + a.cmd = POWER_SCREEN; a.flag = 0; CHECK(is_read_level(&a) == 0); /* screen off/on */ + a.cmd = POWER_SCREEN; a.flag = 2; CHECK(is_read_level(&a) == 0); /* screen timeout 写 settings */ + a.cmd = POWER_SHUTDOWN; CHECK(is_read_level(&a) == 0); + a.cmd = POWER_REBOOT; CHECK(is_read_level(&a) == 0); + a.cmd = POWER_UPGRADE; CHECK(is_read_level(&a) == 0); + a.cmd = POWER_BACK_HIBY; CHECK(is_read_level(&a) == 0); + a.cmd = POWER_SET_DEFAULT_MEOW; CHECK(is_read_level(&a) == 0); + a.cmd = POWER_SET_DEFAULT_HIBY; CHECK(is_read_level(&a) == 0); + if (g_fail) { printf("\nAUTH TEST: %d FAIL\n", g_fail); return 1; } printf("\nAUTH TEST: ALL PASS\n"); return 0;