SonarQube规则:Spring Boot应用程序中的“使用命令行参数对安全敏感”

2022-09-01 01:09:51

SonarQube只是在非常基本的Spring Boot应用程序中显示了一个关键的安全问题。在主方法中。

@SpringBootApplication
public class Application {

    public static void main(String[] args) {
        SpringApplication.run(Application.class, args);
    }

}

SonarQube希望我Make sure that command line arguments are used safely here.

我在StackOverflow和Google上搜索了这个,我很惊讶我找不到任何关于这个问题的评论。我几乎可以肯定,该方法内部已经进行了一些安全检查。而且,我甚至不记得有人在调用之前清理了主要方法参数。我只是想将其标记为误报并继续前进。SpringApplication.runSpringApplication.run

这里也提出了这个问题的一部分:SonarQube在Spring Framework控制器和Spring Framework Application主类中显示了一个secuirty错误

是误报吗?


答案 1

如果您没有使用任何命令行参数,则可以避免在run方法中提及args参数。就像下面的代码一样。

@SpringBootApplication
public class Application {

    public static void main(String[] args) {
        SpringApplication.run(Application.class);
    }

}

这将消除声纳库热点问题。


答案 2

如果您确定,则可以包括以下内容以解决问题。

@SpringBootApplication
public class Application {

    public static void main(String[] args) {
        SpringApplication.run(Application.class);
    }

}

这似乎被标记为根据声纳文档。它指出security hotspot

与漏洞不同,安全热点不一定是容易受到攻击的问题。相反,安全热点会突出显示需要手动检查的安全敏感代码段。经过审查,您会发现需要修复的漏洞或没有威胁。

您可以在此处阅读有关它的更多信息 安全热点

根据此规则 RSPEC-4823S4823,命令行参数的评估基于

  • 使用任何命令行参数时,都不会先进行清理。
  • 应用程序通过命令行参数接受敏感信息。

如果您的应用程序属于此类别,则它们绝对是应用程序可能存在的安全问题。


推荐