XStream 的安全框架未初始化,XStream 可能存在漏洞
Security framework of XStream not initialized, XStream is probably vulnerable
Security framework of XStream not initialized, XStream is probably vulnerable
我在使用 XStream (1.4.10)
时一直收到红色的控制台错误
我尝试了以下方法:
XStream.setupDefaultSecurity(xs);
和
xs.addPermission(AnyTypePermission.ANY);
xs.addPermission(NoTypePermission.NONE);
none 其中去掉了。
我不需要任何花哨的安全设置,我只想让那个警告静音。也许还准备 1.5.x
的代码
我有相同的 "problem" 并通过允许相关类型解决了它:
Class<?>[] classes = new Class[] { ABC.class, XYZ.class };
XStream xStream = new XStream();
XStream.setupDefaultSecurity(xStream);
xStream.allowTypes(classes);
也许这对您的情况也有帮助。
祝你好运!
在处理安全问题时,我不会掉以轻心。首先,人们会了解问题的严重性,这里是 good write up or another one.
然后了解人们如何推荐解决方案。好的起点是 xstream 网站本身。 xstream security page.
上有一个示例,您可以将其用作起点
这是我的设置,基本上允许您的大部分代码。
XStream xstream = new XStream();
// clear out existing permissions and set own ones
xstream.addPermission(NoTypePermission.NONE);
// allow some basics
xstream.addPermission(NullPermission.NULL);
xstream.addPermission(PrimitiveTypePermission.PRIMITIVES);
xstream.allowTypeHierarchy(Collection.class);
// allow any type from the same package
xstream.allowTypesByWildcard(new String[] {
"com.your.package.**"
});
然而,在深入研究他们的源代码之后,这是我的看法:
XStream.setupDefaultSecurity(this); // to be removed after 1.5
xstream.allowTypesByWildcard(new String[] {
"com.your.package.**"
});
所以基本上,升级到 1.5 后您只需要一行。
请注意,您可能需要更多的通配符来适应您的应用反序列化场景。这不是一个放之四海而皆准的答案,而是一个很好的起点恕我直言。
它也可以通过为允许的 类:
指定一个包罗万象的模式来工作
xstream.allowTypesByRegExp(new String[] { ".*" });
对于遇到此问题的任何人,这可能是由于 CVE-2021-21351
XStream早期版本存在RCE漏洞。您应该立即升级到 1.46.1 或更高版本。
Security framework of XStream not initialized, XStream is probably vulnerable
我在使用 XStream (1.4.10)
时一直收到红色的控制台错误我尝试了以下方法:
XStream.setupDefaultSecurity(xs);
和
xs.addPermission(AnyTypePermission.ANY);
xs.addPermission(NoTypePermission.NONE);
none 其中去掉了。
我不需要任何花哨的安全设置,我只想让那个警告静音。也许还准备 1.5.x
的代码我有相同的 "problem" 并通过允许相关类型解决了它:
Class<?>[] classes = new Class[] { ABC.class, XYZ.class };
XStream xStream = new XStream();
XStream.setupDefaultSecurity(xStream);
xStream.allowTypes(classes);
也许这对您的情况也有帮助。
祝你好运!
在处理安全问题时,我不会掉以轻心。首先,人们会了解问题的严重性,这里是 good write up or another one.
然后了解人们如何推荐解决方案。好的起点是 xstream 网站本身。 xstream security page.
上有一个示例,您可以将其用作起点这是我的设置,基本上允许您的大部分代码。
XStream xstream = new XStream();
// clear out existing permissions and set own ones
xstream.addPermission(NoTypePermission.NONE);
// allow some basics
xstream.addPermission(NullPermission.NULL);
xstream.addPermission(PrimitiveTypePermission.PRIMITIVES);
xstream.allowTypeHierarchy(Collection.class);
// allow any type from the same package
xstream.allowTypesByWildcard(new String[] {
"com.your.package.**"
});
然而,在深入研究他们的源代码之后,这是我的看法:
XStream.setupDefaultSecurity(this); // to be removed after 1.5
xstream.allowTypesByWildcard(new String[] {
"com.your.package.**"
});
所以基本上,升级到 1.5 后您只需要一行。
请注意,您可能需要更多的通配符来适应您的应用反序列化场景。这不是一个放之四海而皆准的答案,而是一个很好的起点恕我直言。
它也可以通过为允许的 类:
指定一个包罗万象的模式来工作xstream.allowTypesByRegExp(new String[] { ".*" });
对于遇到此问题的任何人,这可能是由于 CVE-2021-21351
XStream早期版本存在RCE漏洞。您应该立即升级到 1.46.1 或更高版本。