Укрепление отчетов о проверке SCA Проблема с журналированием при чтении переменных среды - PullRequest
0 голосов
/ 26 апреля 2019

Я использовал System.getenv("envVariableName"), и это вызвало у меня проблему с ковкой журналов. Я даже пытался кодировать возвращаемую строку, используя ESAPI-кодировщик, но это не помогло.

Мой фрагмент кода:

String envValue = encode(System.getenv("envVariableName"));

String encode(String message) {
        if (message != null) {
            String clean = message.replace('\n', '_').replace('\r', '_');
            if (ESAPI.securityConfiguration().getLogEncodingRequired()) {
                clean = ESAPI.encoder().encodeForHTML(message);
                if (!message.equals(clean)) {
                    clean += " (Encoded)";
                }
            }
            return clean;
        }
        return message;
    }

Любое предложение относительно того, что мне не хватает, будет оценено.

Ответы [ 3 ]

1 голос
/ 05 мая 2019

Fortify (используется по меньшей мере) распознал кодировщики ESAPI как устраняющие "паразитные" флаги заражения, но я думаю, что это было только в контексте правил XSS Fortify. Я не думаю, что они сделали это в контексте Forging Logging, хотя я почти уверен, что они признают, что регистрация ESAPI обеспечивает «безопасную регистрацию».

Если я понимаю ваше желание здесь, вы не просто хотите пометить этот конкретный экземпляр как «Не проблема» и подавить его, но вместо этого вы хотите, чтобы он сначала не распознал этот шаблон как экземпляры Log Forging. , К сожалению, вы не можете изменить правила HP (теперь Microfocus) Fortify. (Их пакеты правил даже зашифрованы, поэтому, за исключением запуска AWB под отладчиком, вы даже не можете просматривать их правила.) Если вы решите, что «переменные среды» являются «доверенными», я полагаю, вы могли бы установить и применить AWB набор фильтров, который будет игнорировать случаи, когда единственным признаком заражения на приемнике является «переменная окружения». (Или примените его только к этой категории ковки журналов.)

Но в целом вам придется либо жить с шумом (Fortify генерирует много ложных срабатываний), либо вам придется вручную проверять каждый из случаев и подавлять ложные срабатывания как «Не проблема». ». Это обычный способ работы, хотя иногда эта функция ограничена специалистами AppSec.

Надеюсь, это поможет.

0 голосов
/ 29 апреля 2019

Вопрос. Если вы уже используете ESAPI, то почему бы просто не использовать ведение журнала ESAPI, поскольку оно обеспечивает «безопасное ведение журнала», как при защите от атак на подделку журналов?

0 голосов
/ 26 апреля 2019

Строка, назначенная Fortify, действительно находится на String envValue = encode (System.getenv ("envVariableName"));?

Проблемы с формированием журнала обычно возникают, когда вы записываете некоторую информацию в журнал из ненадежного источника: https://vulncat.fortify.com/en/detail?id=desc.dataflow.java.log_forging#C%23%2FVB.NET%2FASP.NET

...