Java序列化的状态( 五 )

CATALINA_OPTS=-javaagent:/Users/ecostlow/Downloads/Contrast/contrast.jar

启动后 , Tomcat将会初始化运行时保护机制 , 并将其注入到应用程序中 。 关注点的分离让应用程序可以专注在业务逻辑上 , 而安全分析器可以在正确的位置处理安全性 。

其他有用的安全技术

在进行维护时 , 可以不需要手动列出一长串东西 , 而是使用像 OWASP Dependency-Check 这样的系统 , 它可以识别出已知安全漏洞的依赖关系 , 并提示进行升级 。 也可以考虑通过像DependABot这样的系统进行库的自动更新 。

虽然用意很好 , 但默认的 Oracle序列化过滤器 存在与SecurityManager和相关沙箱漏洞相同的设计缺陷 。 因为需要混淆角色权限并要求提前了解不可知的事物 , 限制了这个功能的大规模采用:系统管理员不知道代码的内容 , 所以无法列出类文件 , 而开发人员不了解环境 , 甚至DevOps团队通常也不知道系统其他部分(如应用程序服务器)的需求 。

移除未使用模块的安全隐患

Java 9的模块化JDK能够 创建自定义运行时镜像 , 移除不必要的模块 , 可以使用名为jlink的工具将其移除 。 这种方法的好处是黑客无法攻击那些不存在的东西 。

推荐阅读