美文网首页
第三十二章、java应用开发中的注入攻击

第三十二章、java应用开发中的注入攻击

作者: 小母牛不生产奶 | 来源:发表于2018-11-19 22:25 被阅读7次

    注入式攻击时一类非常常见的攻击方式,其基本特征时程序允许攻击者将不可信的动态内容注入到程序中,并将其执行,这就可能完全改变最初预计的执行过程,产生恶意效果;例如:sql注入

    操作系统命令注入,java语言提供了类似Runtime.exec(...)的API,可以执行特定命令;

    xml注入攻击,java核心类库提供了全面的XML处理、转换等各种API,而XML自身时可以包含动态内容的,例如XPATH,如果使用不当,可能导致访问恶意内容。还有类似LDAP等允许动态内容的协议,都是可能利用特定命令,构造注入攻击的,包括XSS(Cross-site Scripting)攻击,虽然并不和java直接相关,但也可能在JSP等动态页面中发生。


    java安全机制可以简单归为三个主要组成部分:

    1、运行时安全机制,可以简单认为,就是限制java运行时的行为,不要做越权或者不靠谱的事情,具体如下:

        在类加载过程中,进行字节码验证,以防止不合规的代码影响JVM运行或者载入其他恶意代码;

        类加载器本身也可以对代码之间进行隔离,例如,应用无法获取启动类加载器对象实例,不同的类加载器也可以起到容器的作用,隔离模块之间不必要的可见性等;

        利用SecurityManager机制和相关的组件,限制代码的运行时行为能力,其中,可以定制policy文件和各种粒度的权限定义,限制代码的作用域和权限,例如对文件系统的操作权限,或者监听某个网络端口的权限等

    可以看到,Java的安全模型时以代码为中心的,贯穿了从类加载,如URLClassLoader加载网络上的java类等,到应用程序运行时权限检查等全过程。

    另外,从原则上来说,java的GC等资源回收管理机制,都可以看作时运行时安全的一部分,如果相应机制失效,就会导致JVM出现OOM等错误,可看作是另类的拒绝服务;

    第二,java提供的安全框架API,这是构建安全通信等应用的基础。例如:

        加密、解密API

        授权、鉴权API

    安全通信相关的类库,比如基本HTTPS通信协议相关标准实现,如TLS1.3;或者附属的类似证书撤销状态判断(OSCP)等协议实现。

    第三,就是JDK集成的各种安全工具:

        keytool,这是个强大的工具,可以管理安全场景中不可或缺的密钥、证书,并且可以管理java程序使用的keystore文件。

        jarsigner,用于对jar文件进行签名或者验证。

    在应用实践中,如果对安全要求非常高,建议打开SecurityManager,请注意其开销,通常只要开启SecurityManager,就会导致10%~15%的性能下降,在JDK9以后,这个开销有所改善。


    安全漏洞

    按照传统的定义,任何可以用来绕过系统安全策略限制的程序瑕疵,都可以算作安全漏洞。具体原因可能非常多,设计或实现中的疏漏、配置错误等,任何不慎都又可能导致安全漏洞出现,例如恶意代码绕过了java沙箱的限制,获取了特权等

    相关文章

      网友评论

          本文标题:第三十二章、java应用开发中的注入攻击

          本文链接:https://www.haomeiwen.com/subject/ryrzfqtx.html