【问题标题】:Information Exposure Through an Error Message in checkmarx通过 checkmarx 中的错误消息暴露信息
【发布时间】:2016-12-26 09:57:45
【问题描述】:
try {
    //code
} catch (ParseException e) {
    e.printStackTrace();
} catch (MalformedURLException e) {
    LOG.error("Error in finding Resource Bundle", e);
}

我是这样写的,但是当我使用 Checkmarx 代码分析工具时,我得到“通过错误消息暴露信息”。如何解决以及何时解决。

【问题讨论】:

  • 在我们的项目中我们也面临同样的问题吗?你找到解决办法了吗?

标签: java spring


【解决方案1】:

什么是通过错误消息公开信息

该软件会生成一条错误消息,其中包含有关其环境、用户或相关数据的敏感信息。

敏感信息本身可能是有价值的信息(例如密码),也可能有助于发起其他更致命的攻击。如果攻击失败,攻击者可能会利用服务器提供的错误信息发起另一次更有针对性的攻击。

(引用自CWE-209: Information Exposure Through an Error Message

您没有指定,但我假设 Checkmarx 工具指向 printStackTrace() 作为流程的有问题的端点。

通过使用此方法,异常(包括其整个堆栈跟踪)将被打印到标准错误流中。这可能包括本身可能很敏感的信息(如用户名或密码)或至少披露一些环境数据。如果此数据暴露给用户,则可能会被滥用或恶意使用以进行更有效的攻击。

还有很多其他原因不以这种方式使用printStackTrace(),如下所示:Why is exception.printStackTrace() considered bad practice?

【讨论】:

  • 感谢重播,但我没有使用任何地方 printStackTrace(),我正在使用 Logger.fatal 方法。我该怎么做...
  • ` LOG.error("Error in find Resource Bundle", e);` 还会为Information Exposure 生成复选标记
  • @KalluriNarasimha 您正在使用 printStackTrace(),请查看您提供的代码 :)
  • @atulquest93 将错误写入日志可能会产生类似但不同的结果:Information Exposure Through Server Log
  • @yaloner 我实际上是在写答案时查看复选标记报告。 Information Exposure Through an Error Message 这是生成的准确复选标记。可能是不同的版本可能会生成一些特定的复选标记。
【解决方案2】:

首先删除e.printStackTrace();

现在,由于必须记录错误,因此您不能删除 LOG.error("Error in finding Resource Bundle", e);

所以,只需为这个 .. 那个 Logs are being generated 提供闭包。因为这是LOW 关键,所以它们不是大问题。

我们的项目每次都会发生这种情况:P。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-04-12
    • 1970-01-01
    • 2018-06-15
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多