### 漏洞概述 该漏洞涉及在OpenHarness项目中,默认情况下将桥接命令设置为本地仅用。此更改旨在防止远程管理命令被意外执行,从而提高系统的安全性。 ### 影响范围 - **受影响文件**: - `src/openharness/commands/registry.py` - `tests/test_commands/test_registry.py` - `tests/test_ohmo/test_gateway.py` - **具体影响**: - 默认情况下,桥接命令(如`/bridge`)将被限制为本地仅用,除非显式启用远程管理选项。 - 这可以防止未经授权的远程访问和操作,减少潜在的安全风险。 ### 修复方案 1. **代码修改**: - 在`src/openharness/commands/registry.py`中,将桥接命令的`remote_invokable`属性设置为`False`,默认情况下禁止远程调用。 - 添加测试用例,验证桥接命令在默认情况下是否为本地仅用,以及是否可以通过显式设置启用远程管理。 2. **测试用例**: - 新增测试用例`test_bridge_command_is_marked_local_only`,确保桥接命令默认情况下为本地仅用。 - 新增测试用例`test_bridge_command_supports_explicit_remote_admin_opt_in`,确保可以通过显式设置启用远程管理。 3. **代码示例**: ```python # src/openharness/commands/registry.py registry.register(SlashCommand( "bridge", "Inspect bridge helpers and spawn bridge sessions", _bridge_handler, remote_invokable=False, remote_admin_opt_in=True, )) # tests/test_commands/test_registry.py @pytest.mark.asyncio async def test_bridge_command_is_marked_local_only(tmp_path: Path, monkeypatch): monkeypatch.setenv("OPENHARNESS_CONFIG_DIR", str(tmp_path / "config")) registry = create_default_command_registry() command = registry.lookup("/bridge spawn id") assert command is not None assert command.remote_invokable is False @pytest.mark.asyncio async def test_bridge_command_supports_explicit_remote_admin_opt_in(tmp_path: Path, monkeypatch): monkeypatch.setenv("OPENHARNESS_CONFIG_DIR", str(tmp_path / "config")) registry = create_default_command_registry() command = registry.lookup("/bridge spawn id") assert command is not None assert getattr(command, "remote_admin_opt_in", False) is True ``` ### 总结 通过上述修改,OpenHarness项目确保了桥接命令默认情况下为本地仅用,除非显式启用远程管理选项,从而提高了系统的安全性。