文标题【Confluence 安全概述和建议】
换从区溢出
Confluence 100% 的纯 Java 应用程序而没有使用本地组件。因此应用程序对缓冲区溢出有比较强抵抗力——可能的缓冲区溢出将会被限制在 Java 运行环境(Java Runtime Environment)本身。
SQL 注入
Confluence 是通过 Hibernate Object-Relational 映射进行交互的。数据库的查询使用标准的 APIs 来生成,是使用参数进行替换的,而不是使用字符串连接的的。因此,Confluence 能够具有很高的 SQL 注入攻击抵抗性。
脚本(Script )注入
Confluence 是一个自容器的 Java 应用程序,并不能运行在外部的进程中。因此 Confluence 能够对脚本注入攻击具有很高的抵抗性。
跨站点脚本
作为一个内容管理系统,允许用户能够在系统中创建内容,并且将创建的内容发布在网络上。我们将会对跨站点脚本攻击进行更多的关注:
- Confluence 中的 Wiki 标记语言不支持危险 HTML 标记
- 在默认的情况下,你不能向宏中插入 原生 HTML 标记
- HTML 作为附件上传到服务器上话,这个文件将会在下载的时候保存为 content-type 类型,而不是在浏览器中显示。
- 只有系统管理员级别的用户才可以对应用程序进行 HTML-level 级别的自定义
当跨平台脚本安全漏洞在 Confluence 被发现后,我们将会以最快的速度对这个漏洞进行修复。
传输层安全
Confluence 并不直接支持 SSL/TLS。Confluence 的管理员如果对传输层安全性有所顾虑的话,应该考虑在 Java 应用服务器级别设置 SSL/TLS 或者在 Confluence 应用服务器前面使用 HTTP 方向代理。
有关如何在 Confluence 中配置 SSL 的信息,请参考 Running Confluence Over SSL or HTTPS 页面中的内容。
会话管理
Confluence 使用 Java 应用服务器的会话管理。在现有的情况下,我们并没有获得任何有关会话劫持针对 Confluence 的攻击。如果你现在正在将 Confluence 部署到其他的一些应用服务器上,你应该确保会话不会被劫持。
插件安全
管理员在 Confluence 安装第三方插件所带来的风险为自负风险( at their own risk)。安装的插件将会与 Confluence 在相同的虚拟机上运行,同时也能够访问所有的 Java Runtime 环境,包括 Confluence 服务器 API。
管理员在 Confluence 安装插件的时候应该对插件的来源进行校验,确保安装的插件来源。
管理员信任模型
Confluence 是基于所有具有 System Administrator privileges 都是可以被信任的。系统管理员可以直接安装插件,对 Confluence 的性能和配置进行调整。
与其他任何应用程序一样,你不应该将 Confluence 在 root/Administrator 用户权限运行。如果你希望你的 Confluence 监听私有的网络端口,你应该配置 Confluence 使用端口转移(port forwarding)或者使用反向代理,而不是给 Confluence 添加其他的权限。当你考虑让 Confluence 在 chroot 下运行的话,你需要非常小心。
堆栈跟踪
希望对 Confluence 的问题进行调试,当出现问题的时候 Confluence 将会在界面中提供错误的堆栈信息。这些堆栈的信息包括了 Confluence 在运行的时候的信息,同时还包括了有关你开发服务器的一些信息。
只有非个人信息在堆栈中显示,例如操作系统的版本和 Java 的版本。针对正确的网络设置,这些信息将会不足够对错误的问题进行诊断。用户的用户名和密码将不会显示出来。
找到和报告安全漏洞
Atlassian 有关安全漏洞的报告细节,请参考如何报告一个安全问题(How to Report a Security Issue)链接。
发布 Confluence 安全公共
Atlassian 有关发布安全漏洞的细节,请参考安全建议发布策略(Security Advisory Publishing Policy)链接。
严重程度
Atlassian 有关安全问题的严重程度排列,请参考针对安全问题的严重程度(Severity Levels for Security Issues)链接。
我们的安全缺陷修复策略
我们有关安全缺陷问题修复的补丁发布信息,请参考安全缺陷修复策略(Security Bugfix Policy)链接。