Skip to content

Security: JNTMTMTM/eIsland

.github/SECURITY.md

Python-island 安全政策

项目地址:https://github.com/Python-island/Python-island

项目名称:Pyisland - 现代 Windows 灵动岛控制中心

本文件定义了 Python-island 项目的安全策略、漏洞报告流程以及安全开发规范,所有项目维护者和贡献者均须遵守。


目录


安全漏洞报告

报告渠道

Python-island 项目非常重视安全问题。若你发现任何安全漏洞或安全隐患,请不要在公开的 Issue 或社区讨论中提及,请通过以下方式私下报告:

  • 发送邮件至项目维护者邮箱(详见项目主页)
  • 在 GitHub 项目页面提交 Private Security Advisory(推荐)

Private Security Advisory 使用方法

  1. 进入项目 GitHub 页面,点击 Security 标签页;

  2. 点击 Report a vulnerability;

  3. 填写漏洞详情,包括:

    • 漏洞描述与影响
    • 复现步骤与攻击场景
    • 受影响的版本范围
    • 建议的修复方案(可选)
  4. 提交后,项目维护者会在 48 小时内 确认收到报告,并在一周内提供初步评估和修复计划。

报告要求

有效的漏洞报告应包含以下信息:

信息项 说明
漏洞类型 如命令注入、权限提升、信息泄露、拒绝服务等
漏洞位置 受影响的具体文件、函数或模块
复现步骤 清晰、可操作的复现步骤
影响评估 对用户系统、数据或隐私的潜在危害
修复建议 建议的修复方案(可选)

响应承诺

  • 48 小时内:确认收到报告并开始评估;
  • 1 周内:提供初步评估结果和预计修复时间;
  • 修复发布前:与报告者保持沟通,同步修复进度;
  • 修复发布后:在安全公告中致谢报告者(经其同意)。

支持版本

Python-island 会对以下版本提供安全更新:

版本 支持状态 安全更新
最新 Release 版本 积极维护 提供安全补丁
历史 Release 版本 有限维护 仅在必要时提供关键安全补丁
更早版本 不维护 不提供安全更新

建议:始终使用项目的最新 Release 版本,以获得最新的安全修复和稳定性改进。


安全开发规范

为确保项目代码的安全性,所有贡献者在开发和提交代码时,必须严格遵循以下安全规范。

1. 命令执行安全

Python-island 需要调用 Windows PowerShell 命令与系统交互,命令执行是项目的高风险区域,必须遵守以下要求:

  1. 禁止直接执行用户输入的字符串:所有来自外部输入(如 URL 检测、配置文件、剪贴板内容)的数据,在作为命令或参数传递给 PowerShell/subprocess 之前,必须进行严格校验和转义;

  2. 使用参数化执行:调用 PowerShell 时,优先使用列表形式传递参数,避免字符串拼接:

    # 错误示例(禁止):直接拼接用户输入
    import subprocess
    user_input = user_url
    subprocess.run(f'powershell -Command "echo {user_input}"', shell=True)
    
    # 正确示例:使用参数化列表
    subprocess.run(['powershell', '-Command', 'echo', user_input], check=True)
  3. 避免 shell=True:除非绝对必要,禁止使用 subprocess.run(..., shell=True),shell=True 会增加命令注入风险;

  4. 命令白名单:对于需要调用 PowerShell 的场景,建议维护一个命令白名单,仅允许执行预定义的、经过安全审查的 PowerShell 命令。

2. 文件操作安全

  1. 路径规范化:处理文件路径时,使用 os.path.normpath() 或 pathlib.Path.resolve() 规范化路径,防止路径遍历攻击(如 ../../../etc/passwd);

  2. 禁止使用用户输入直接拼接路径:所有来自外部的文件路径输入,必须进行严格校验,禁止直接拼接到文件操作函数中;

  3. 资源文件完整性:图标、样式文件等资源仅从项目内置路径加载,禁止动态加载用户指定路径的文件。

3. 网络请求安全

  1. URL 检测与请求:仅对用户主动输入或剪贴板中的 URL 进行检测,请求前必须校验 URL 格式,禁止向未经验证的地址发送请求;

  2. 无网络权限声明:项目作为轻量化本地工具,不应主动发起网络请求,所有网络行为仅限于 URL 格式校验;

  3. 禁止硬编码凭据:代码中禁止硬编码任何 API Key、Token、密码或其他凭据。

4. 权限与提权安全

  1. 最小权限原则:项目运行时请求的 Windows 系统权限应限于功能所需的最小范围;

  2. 避免持久化提权:不以持久化方式(如注册表、服务)提升权限,避免对系统安全策略造成长期影响;

  3. 管理员权限说明:部分功能(如亮度调节)需要管理员权限运行,应在文档中明确说明,并在 UI 层提示用户。

5. 日志与调试信息

  1. 禁止记录敏感信息:日志中禁止记录用户密码、API Key、Token、文件路径以外的个人数据;

  2. 异常信息脱敏:在向用户展示错误信息或控制台输出时,对可能包含敏感信息的部分进行脱敏处理;

  3. 日志级别管理:生产环境下,应关闭调试级日志输出。


依赖安全管理

1. 依赖来源

项目所有 Python 依赖必须从官方渠道安装:

  • PyPI(Python Package Index):pip install
  • GitHub 官方仓库:源码安装

禁止使用来源不明的第三方包,禁止从非 HTTPS 渠道下载安装包。

2. 依赖版本管理

  1. 固定版本号:在 requirements.txt 中明确指定依赖版本范围,避免使用 >= 等宽泛版本约束导致自动升级引入安全风险;

  2. 定期检查依赖安全:项目维护者应定期使用以下工具检查依赖的安全性:

    # 安装 pip-audit(依赖安全扫描工具)
    pip install pip-audit
    
    # 扫描项目依赖中的已知漏洞
    pip-audit
  3. 及时更新依赖:当依赖包发布安全补丁时,应尽快评估并更新,优先选择安全版本。

3. PyInstaller 打包安全

项目使用 PyInstaller 打包为可执行文件,打包过程中需注意:

  1. 官方 PyInstaller:仅使用官方发布的 PyInstaller,不使用来路不明的修改版本;

  2. 打包后验证:打包完成后,验证生成的可执行文件无异常行为,无额外的网络连接或文件操作;

  3. upx 压缩:若使用 UPX 压缩工具,确保 UPX 工具本身来源可信。

4. 已知安全依赖

以下列出项目核心依赖的安全备注:

依赖 用途 安全注意事项
PySide6 GUI 框架 仅从 PyPI 安装,防范供应链攻击
comtypes Windows COM 调用 仅处理预定义系统调用,禁止动态加载任意 COM 组件
screen_brightness_control 亮度控制 仅用于亮度读取和设置,禁止用于其他系统操作

数据隐私与本地处理

1. 数据处理原则

Python-island 作为本地桌面工具,遵循以下数据处理原则:

  1. 本地优先:所有数据处理均在用户本地计算机完成,不上传任何用户数据到远程服务器;

  2. 无追踪无遥测:项目代码中不包含任何用户行为追踪、数据采集或遥测上报功能;

  3. 最小数据收集:仅收集运行功能所必需的数据,不收集与功能无关的用户信息。

2. 敏感数据处理

数据类型 处理方式
用户配置文件 仅存储在本地,不上传
系统状态信息 仅在本地内存中使用,不持久化
URL 检测内容 仅在内存中临时处理,不存储
用户文件路径 仅作为配置参数使用,不上传

3. 托盘与系统集成

  1. 托盘图标仅用于显示应用状态,不执行任何隐蔽的系统操作;

  2. 不在系统启动项中强制注册(如需开机启动,应由用户主动配置);

  3. 不在用户不知情的情况下创建计划任务或服务。


Windows 平台安全注意事项

1. PowerShell 执行策略

  1. 项目依赖 PowerShell 执行系统命令,应在文档中说明所需的 PowerShell 执行策略(建议为 RemoteSigned 或 Restricted);

  2. 不尝试绕过或修改系统的 PowerShell 执行策略。

2. 防病毒软件兼容性

  1. 项目作为非知名软件,首次运行时可能被 Windows Defender 或第三方防病毒软件标记;

  2. 若项目被误报为恶意软件,项目维护者应:

    • 提供软件的源代码供安全审查;
    • 向相关防病毒厂商提交申诉;
    • 在文档中提供防病毒白名单添加指南。

3. 用户权限提示

  1. 需要管理员权限的功能(如亮度调节、系统状态读取),应在 UI 层明确提示用户;

  2. 禁止在用户不知情的情况下以管理员权限执行任何操作。


安全事件响应

当发生安全事件(如漏洞被公开、依赖包发现安全缺陷、发布版本存在安全问题)时,项目维护者将按以下流程响应:

1. 漏洞评估与修复

  1. 收到安全报告后,在 48 小时内确认并启动评估;
  2. 确定漏洞影响范围和严重程度(参照 CVSS 评分标准);
  3. 制定修复方案并实施补丁开发;
  4. 在修复完成后,发布包含安全补丁的新版本。

2. 安全公告发布

  1. 修复版本发布时,同步发布安全公告,说明:
    • 漏洞描述与影响
    • 受影响的版本
    • 修复措施
    • 升级建议
  2. 安全公告发布在 GitHub Releases 和项目主页。

3. 版本安全策略

  1. 关键/高危漏洞:尽快发布补丁版本,通知用户尽快升级;
  2. 中危漏洞:在下一个计划版本中修复;
  3. 低危漏洞:在常规版本迭代中修复。

4. 漏洞公开政策

  • 在修复版本发布之前,不公开漏洞细节;
  • 修复发布后,与报告者协商公开细节的时机和方式;
  • 始终保护报告者的隐私,未经其同意不公开报告者身份。

致谢

感谢以下安全研究者对 Python-island 项目安全作出的贡献:

若你报告了安全漏洞并希望被致谢,请在报告中说明是否愿意公开你的姓名或昵称。


Python-island 社区

2026

There aren't any published security advisories