java - 强化 : Resource Injection

标签 java spring jakarta-mail fortify

我有以下代码,并且在 copyMessages() 处遇到资源注入(inject)问题。
我不知道如何解决这个问题?

Abstract: Attackers are able to control the resource identifier argument to copyMessages() at MailboxProcessorServiceImpl.java line 77, which could enable them to access or modify otherwise protected system resources. 
FileName: 
LineNo: 77
Sink: javax.mail.Folder.copyMessages() 
Folder inboxFolder = mailUtil.openFolder(store, "INBOX");
        Folder processedFolder = mailUtil.openFolder(store, "Processed");
        try {

            Flags flaggedFlags = new Flags(Flags.Flag.FLAGGED);
            Flags deletedFlags = new Flags(Flags.Flag.DELETED);
            Message[] msgs = inboxFolder.search(new FlagTerm(flaggedFlags, false));
            log.info("# of new Emails received: " + Integer.toString(msgs.length));
            if (msgs.length > 0) {
                for (Message msg : msgs) {
                    log.info(msg.getSubject());
                    Map<String, InputStream> mis = getAttachments(msg);
                    if (!CollectionUtils.isEmpty(mis))
                        saveAndProcessAttachment(mis, msg);

                    Message[] processedMsgs = { msg };
                    if (processedMsgs.length > 0) {
                        inboxFolder.copyMessages(processedMsgs, processedFolder);
                    }
                    msg.setFlags(deletedFlags, true);
                }
            }
            inboxFolder.close(true);
            processedFolder.close();

最佳答案

我认为由于参数“存储”而报告了资源注入(inject)问题。它将确定您的处理后的消息将被存储的资源位置。而且似乎这个参数取自不可信的来源。也许来自请求参数?

所以想象一下有人给你“../../somewere”之类的“商店”参数。用户可以使用任何其他客户端来执行此操作,而不仅仅是您永远不会允许的前端应用程序。

  • 这会转到父目录的父目录并将消息放入“/somewere/Processed”吗?
  • 此功能是否可以代表您用于运行服务器的用户覆盖一些重要的系统文件?
  • 如果期望“商店”包含一个用户可以轻松猜到的字符串,他是否可以欺骗它提供错误的“商店”作为参数?例如,如果 store 实际上是用户名。 (您可以举例说明 'store' 包含什么。)

  • 通常,您应该从受信任的来源获取位置,或者清理输入参数并告诉扫描工具您已对其进行清理。例如只允许字母数字字符。

    这有帮助吗?

    关于java - 强化 : Resource Injection,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/61141966/

    相关文章:

    java - 广度优先搜索算法JAVA 8-puzzle

    java - 协助通用服务/dao 层

    Spring boot-绑定(bind)属性【配置属性】

    java - 从JAVA邮件发送到IMAP邮箱时附件文件名发生变化

    java - 同步。使用 imap java 发送电子邮件

    java - 在启动另一个函数的同时在后台运行一个函数

    java - 从 JDK 1.7 开始,从 catch block 中抛出异常对象不需要 throws 子句!!!为什么会这样?

    java - Parcel.readHashMap 使用什么类加载器?

    java - 如何从React前端使用Spring后端将文件上传到S3存储桶?

    java - 发送电子邮件 phpmailer 和 javax.mail