Adobe的AEM团队一直在与开源项目密切合作 NotSoSerial 以协助缓解 CVE-2015-7501. NotSoSerial是在 Apache 2许可证 并包含根据其自己的 类似BSD的许可证.
此包中包含的代理jar是Adobe修改的NotSoSerial分发。
NotSoSerial是Java级别问题的Java级解决方案,并不特定于AEM。 它会在尝试反序列化对象时添加预检检查。 此检查将针对防火墙样式的允许列表和/或阻止列表测试类名称。 由于默认阻止列表中类的数量有限,因此不太可能对系统或代码造成影响。
默认情况下,代理将针对当前已知的易受攻击类执行阻止列表检查。 此阻止列表旨在保护您免受使用此类型漏洞的当前漏洞攻击列表的攻击。
可以按照 配置代理 本文章的章节。
代理旨在帮助缓解最新已知的易受攻击类。 如果您的项目正在反序列化不可信的数据,它仍可能容易受到拒绝服务攻击、内存不足攻击和未知的未来反序列化攻击。
Adobe正式支持Java 6、7和8,但我们的理解是NotSoSerial也支持Java 5。
如果您之前已安装AEM 6.1的序列化修补程序,请从java执行行中删除代理启动命令。
安装 com.adobe.cq.cq-serialization-tester 捆绑。
转到“捆绑Web控制台”(位于 https://server:port/system/console/bundles
查找序列化包并启动它。 这应会动态自动加载NotSoSerial代理。
NotSoSerial代理未包含在应用程序服务器的AEM的标准分发中。 但是,您可以从AEM jar分发中提取它,并将其用于应用程序服务器设置:
首先,下载AEM快速入门文件并将其解压缩:
java -jar aem-quickstart-6.2.0.jar -unpack
转到新解压缩的AEM快速启动程序的位置,然后复制 crx-quickstart/opt/notsoserial/
文件夹 crx-quickstart
AEM应用程序服务器安装的文件夹。
更改 /opt
对运行服务器的用户:
chown -R opt <user running the server>
配置并检查代理是否已正确激活,如本文的以下部分所示。
默认配置适用于大多数安装。 这包括已知远程执行易受攻击类的阻止列表,以及包的允许列表,其中可信数据的反序列化应该相对安全。
防火墙配置是动态的,可随时通过以下方式进行更改:
转到Web控制台(位于 https://server:port/system/console/configMgr
搜索并单击 反序列化防火墙配置。
您还可以通过访问以下URL直接访问配置页面:
https://server:port/system/console/configMgr/com.adobe.cq.deserfw.impl.DeserializationFirewallImpl
此配置包含允许列表、阻止列表和反序列化日志记录。
允许列表
在允许列表部分中,这些是允许反序列化的类或包前缀。 请务必注意,如果您正在反序列化自己的类,则需要将类或包添加到此允许列表。
阻止列表
在块列表部分中,是不允许反序列化的类。 这些类的初始集仅限于发现容易遭受远程执行攻击的类。 阻止列表在任何允许列出的条目之前应用。
诊断日志记录
在诊断日志记录的部分中,您可以选择在发生反序列化时进行日志记录的多个选项。 这些用户仅在首次使用时登录,而不会在后续使用时再次登录。
默认 class-name-only 将通知您正在反序列化的类。
您还可以设置 全栈 选项,该选项将记录第一次反序列化尝试的java堆栈,以通知您反序列化的发生位置。 这可用于查找和删除使用中的反序列化。
您可以通过浏览到以下URL来验证反序列化代理的配置:
https://server:port/system/console/healthcheck?tags=deserialization
访问URL后,将显示与代理相关的运行状况检查列表。 您可以通过验证运行状况检查是否已通过来确定是否正确激活了代理。 如果失败,您可能需要手动加载代理。
有关对代理问题进行故障诊断的详细信息,请参阅 处理Dynamic Agent加载时的错误 下。
如果添加 org.apache.commons.collections.functors
对于允许列表,运行状况检查将始终失败。
如果日志中显示错误或验证步骤检测到加载代理时出现问题,则可能需要手动加载代理。 如果您使用的是JRE(Java运行时环境)而不是JDK(Java开发工具包),则也建议使用此工具,因为没有用于动态加载的工具。
要手动加载代理,请按照以下说明操作:
修改CQ jar的JVM启动参数,并添加以下选项:
-javaagent:<aem-installation-folder>/crx-quickstart/opt/notsoserial/notsoserial.jar
这还需要使用 — nofork CQ/AEM选项以及相应的JVM内存设置,因为不会在分支JVM上启用代理。
NotSoSerial代理jar的Adobe分发可在 crx-quickstart/opt/notsoserial/
文件夹。
停止并重新启动JVM;
按照 验证代理的激活.
如果您是在IBM JVM上运行,请查阅有关支持Java Attach API的文档,网址为 此位置.