Java序列化的状态( 四 )

通过运行时保护来减少序列化暴露

一个可以监控风险并自动化可重复安全专业知识的系统对于很多企业来说都是很有用的 。 Java应用程序可以将JVMTI工具嵌入到安全监控系统中 , 通过插桩的方式将传感器植入到应用程序中 。 Contrast Security是这个领域的一个免费产品 , 它是JavaOne大会的Duke's Choice大奖得主 。 与其他软件项目(如MySQL或GraalVM)类似 , Contrast Security的社区版 对开发人员是免费的 。

将运行时插桩应用在Java安全性上的好处是它不需要修改代码 , 并且可以直接集成到JRE中 。

它有点类似于面向切面编程 , 将非侵入式字节码嵌入到源端(远程数据进入应用程序的入口)、接收端(以不安全的方式使用数据)和转移(安全跟踪需要从一个对象移动到另一个对象) 。

通过集成每个“接收端”(如ObjectInputStream) , 运行时保护机制可以添加额外的功能 。 在从JDK 9移植反序列化过滤器之前 , 这个功能对序列化和其他攻击的类型(如SQL注入)来说至关重要 。

集成这个运行时保护机制只需要修改启动标志 , 将javaagent添加到启动选项中 。 例如 , 在Tomcat中 , 可以在bin/setenv.sh中添加这个标志:

推荐阅读