
authentik 安全披露与漏洞报告指南CVE 分类、CVSS 定级与预期功能边界【免费下载链接】authentikThe authentication glue you need.项目地址: https://gitcode.com/GitHub_Trending/au/authentik本文基于 authentik 仓库根目录的 SECURITY.md 编写系统梳理该开源身份认证平台的安全披露流程、漏洞CVE判定标准、受支持版本范围、CVSS 严重性分级以及一组被认定为预期功能、不应作为漏洞上报的行为边界并结合仓库源码给出底层实现佐证。读完本文你将掌握向 authentik 安全团队负责任地报告漏洞的完整流程、判断某一行为是否值得上报的标准以及从源码层面理解表达式执行、蓝图导入等高风险特性的设计意图。安全承诺负责任披露authentik 将安全置于非常高的优先级并遵循**负责任披露Responsible Disclosure**原则同时呼吁社区成员同样遵循该原则而不是公开披露漏洞。这样做的目的是让维护团队能够在问题公开之前快速完成修补、发布修复版本并对外公告从而最大限度降低漏洞被恶意利用的风险窗口。与之对应authentik 明确要求发现潜在漏洞时不要通过公开渠道Issue、论坛、社交媒体等披露而应通过仓库的私有安全通告Security Advisory门户提交报告。独立审计与渗透测试authentik 承诺定期开展外部渗透测试与安全审计并坚持固定的外部测试节奏cadence。这一制度化的安排用于提高代码库、功能特性与整体架构的安全性尽可能降低可被利用的可能性。官方安全文档中的 Audits and Certificates 一节记录了具体的审计与渗透测试细节涉及该项承诺的具体审计报告可在此处查阅。从源码结构看安全相关的配套治理在仓库中也有迹可循SECURITY.md位于仓库根目录与 AI_POLICY.md、CONTRIBUTING.md、CODE_OF_CONDUCT.md 等治理文档并列构成项目对外协作与安全响应的基础设施。authentik 眼中的 CVE 是什么CVECommon Vulnerabilities and Exposures公共漏洞和暴露是一套用于汇总漏洞的编号体系。authentik 遵循 NIST 对漏洞Vulnerability的定义信息系统中可被威胁源利用或触发的弱点包括系统安全程序、内部控制或实现中的薄弱环节。判定流程如下如果确认问题符合 CVE 标准会由 GitHub 为报告者签发一个 CVE 编号即使问题不构成 CVEauthentik 仍然非常感谢社区帮助加固项目hardening。受支持的版本SECURITY.md中通过支持矩阵明确列出了当前仍在安全维护范围内的版本其中.x表示各版本最新的补丁发布版本支持状态2026.5.x✅2026.8.x✅与仓库当前状态交叉验证仓库 internal/constants/VERSION 记录的开发版本为2026.11.0-rc1正处于 2026 年发布轨道的活跃迭代中与仅最新两条发布线获得安全修复的维护策略一致。如果你部署的是支持矩阵之外的老版本升级到受支持版本是获取安全修复的前提。如何报告漏洞报告入口发现潜在漏洞后请通过仓库的私有安全通告门户GitHub Security Advisory 的 New advisory 表单提交不要使用邮件报告漏洞。邮件仅用于一般性咨询见文末联系方式。报告中应包含的内容提交报告时尽可能提供以下细节受影响版本Affected version(s)发现问题的 authentik 具体版本复现步骤Steps to reproduce清晰的描述或 PoC概念验证帮助团队复现验证影响评估Impact assessment漏洞可能被如何利用以及潜在影响范围附加信息Additional information日志、相关配置如适用以及任何建议的缓解措施。报告后的响应承诺在问题被确认并处理完毕之前authentik 请求报告者不要公开披露该漏洞。安全团队将尽快确认收到报告持续同步调查与修复进展。研究人员致谢Researcher Recognitionauthentik 珍视安全社区贡献的价值。每一条有效的漏洞报告都会在官方 Security Advisory 页面上发布一条专属记录并可选地署名报告者的姓名或偏好的化名/别名。需要特别说明的是authentik 目前不提供金钱赏金monetary bounties但承诺通过上述署名方式给予研究人员与其贡献相称的公开认可。严重性分级基于 NVD CVSS 计算器为确定漏洞严重性authentik 使用 NVD美国国家漏洞数据库提供的 CVSS v3 计算器进行打分并保留必要时重新分类 CVSS 评级的权利。计算出的 CVSS 分数将被映射为以下等级分数严重性0.0None无0.1 – 3.9Low低4.0 – 6.9Medium中7.0 – 8.9High高9.0 – 10.0Critical严重这一分级直接决定了修复的优先级与公告的措辞级别也是你在评估自己报告的漏洞时可以参考的标尺。预期功能Intended functionality这些行为不是漏洞SECURITY.md专门列出了一组属于系统有意设计、不应作为安全漏洞上报的能力边界。理解这部分内容对于社区成员与安全研究员都极为重要——它划定了设计使然与真实缺陷之间的分界线。以下逐条结合仓库源码说明。1. 表达式Expressions可执行任意 Python 代码且不加防护预期行为属性映射property mappings、策略policies、提示prompts中的表达式可以执行任意 Python 代码且没有安全沙箱。任何拥有创建或修改含表达式字段对象的权限的用户都能编写在 authentik 内执行的代码。源码佐证authentik/lib/expression/evaluator.py 中的BaseEvaluator.evaluate()直接通过exec(ast_obj, self._globals, _locals)执行表达式且代码注释明确写道是的这是 exec是的它潜在有风险。由于我们限制了这里可用的变量而且这些策略只能由管理员编辑这是我们愿意承担的风险。# nosec标记表明该处 exec 是经过评估后的有意为之。同时该文件定义了可供表达式调用的受控全局函数集如ak_send_email、ak_create_jwt、regex_match、resolve_dns等见 evaluator.py。有效的漏洞报告标准如果存在某种漏洞允许没有相应权限的用户写入或修改代码并使其被执行那才是有效的安全报告。而表达式在正常运行中被执行这一事实本身不被视为权限提升或安全漏洞。2. 蓝图Blueprints可以访问文件系统上的所有文件预期行为蓝图可以读取宿主机文件系统中的任意文件。这一访问能力是有意为之用于支持合法的配置与部署任务例如批量导入配置、引用证书文件等其本身不构成安全问题。源码佐证蓝图文件通过文件系统观察器被持续监听并自动应用。authentik/blueprints/v1/tasks.py 中的blueprints_find()使用root.rglob(**/*.yaml)递归扫描配置目录BlueprintWatcherMiddleware通过 watchdog 监听CONFIG.get(blueprints_dir)目录下的文件创建与修改事件见 tasks.py修改后自动触发apply_blueprint任务。该目录的默认值blueprints_dir: /blueprints定义在 authentik/lib/default.yml。此外蓝图还支持通过 OCI 镜像分发见 authentik/blueprints/v1/oci.py 中的OCI_PREFIX及 tasks.py 中clear_failed_blueprints对 OCI 蓝图取消失效的特殊处理。3. 导入蓝图允许任意修改应用对象预期行为蓝图导入可以任意创建、修改、删除应用内的对象。这反映了蓝图导入的特权设计——它本质上是一个声明式的配置交付通道。SECURITY.md明确提示从不受信任的来源导入蓝图而不事先审查是可被利用的。仓库自带的系统级蓝图如 blueprints/system/、blueprints/default/以及 blueprints/schema.json 模式定义展示了蓝图可以覆盖从品牌、流程到提供商的各类对象。源码佐证蓝图导入核心在 authentik/blueprints/v1/importer.py 的Importer类其apply()与validate()分别负责执行变更与校验应用任务见 tasks.py 的apply_blueprint导入过程中可操作的对象包括用户、组、策略、权限、连接器等大量模型见 importer.py 的导入清单。有效的漏洞报告标准任何在没有所需权限的情况下创建、修改或执行蓝图的方法都是有效的安全报告。4. 流程导入Flow imports可能包含流程以外的对象预期行为流程导入文件中可以包含策略、用户、组等其他对象。因为流程导入本质上就是蓝图文件——两者使用同一套 v1 格式与导入管线。源码佐证流程导出确实复用蓝图机制authentik/flows/api/flows.py 导入了authentik.blueprints.v1.exporter.FlowExporter用于流程导出印证了流程即蓝图子集的设计。仓库 blueprints/ 下的流程示例如 blueprints/default/flow-default-authentication-flow.yaml、blueprints/example/flows-login-2fa.yaml也展示了流程文件的实际结构。5. Prompt 的 HTML 不进行转义预期行为Prompt提示字段有意允许原始 HTML包括script标签以便创建交互式或自定义的 UI 元素。因此prompt 中的脚本可以按设计影响或与周边页面交互。源码佐证Prompt 模型的核心字段定义在 authentik/stages/prompt/models.py其中initial_value支持纯文本与表达式两种填充模式initial_value_expression布尔字段见 models.py 与get_initial_value()方法渲染逻辑在 authentik/stages/prompt/stage.py 中通过field.get_initial_value(...)生成字段值并交由 Django Form 渲染未对 HTML 内容做消毒处理。这也意味着只有具备 Prompt 编辑权限的用户才应接触该能力权限边界是这一设计的安全前提。6. 不含令牌或敏感信息的开放重定向不视为漏洞预期行为仅改变导航流向、不暴露会话令牌session tokens、API 密钥或其他机密数据的重定向被认为是可接受的无需上报。源码佐证authentik 中的跳转多通过流程规划Flow Planner的to_redirect()实现如应用启动视图 authentik/core/views/apps.py 注释所说明的我们使用内存 stage 重定向而不是?next...因为启动 URL 不应包含令牌。这种设计从源头避免了在 URL 中暴露敏感信息。7. 出站网络请求不过滤预期行为authentik 通过 OAuth Sources、SSO Providers 等可配置对象发起的出站网络请求HTTP、TCP 等的目标地址不做校验。根据你的威胁模型这些请求应在网络层面通过合适的防火墙或网络策略进行限制。源码佐证表达式评估器中直接暴露了requestsHTTP 会话与resolve_dns/reverse_dns等网络相关函数见 evaluator.py表达式与各类 Source/Provider 均可在运行期发起外部连接印证了出站目标不受白名单约束的设计。判定原则小结一句话总结以上边界凡是在具备相应权限的前提下、按系统设计意图执行的行为均属预期功能凡是能让无权限者越权达成上述行为的漏洞均属有效安全报告。披露流程Disclosure processauthentik 的安全团队按以下 7 步推进漏洞处置漏洞通过 GitHub Security Advisory提交报告如前文所述authentik 安全团队尝试复现问题必要时向报告者索取更多信息为漏洞分配严重性等级CVSS 分级见上文表格创建修复补丁并在可能的情况下由报告者协助测试将修复反向移植backport到其他受支持版本尽可能为其他版本提供临时缓解方案workaround在修复版本发布至少 24 小时前发出包含修复发布日期与严重性等级的公告为所有受支持版本发布修复版本。获取安全通知如需第一时间获得安全公告可以订阅官方安全公告邮件列表加入官方Discord服务器。订阅入口见SECURITY.md原文 Getting security notifications 一节受支持版本的修复节奏与公告机制同上文的披露流程。联系方式一般性咨询可通过securitygoauthentik.io联系 authentik 安全团队漏洞报告请勿使用邮件务必通过仓库的私有安全通告门户提交以确保报告进入正式处置管道并被及时跟踪。结语SECURITY.md传达的核心信息是authentik 在安全上采取外部审计常态化 负责任披露 明确的边界定义的组合策略。对于部署者而言理解受支持版本矩阵与 CVSS 分级能帮助制定升级与应急计划对于安全研究员而言预期功能清单表达式、蓝图文件系统访问、蓝图导入、流程导入、Prompt HTML、开放重定向、出站请求与源码中对应的实现evaluator.py、importer.py、tasks.py、models.py则共同勾勒出设计使然与越权缺陷之间的分界线——判断一份报告是否有效关键不在于能力是否存在而在于是否绕过了权限边界。【免费下载链接】authentikThe authentication glue you need.项目地址: https://gitcode.com/GitHub_Trending/au/authentik创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考