Предупреждать о безопасности
Я так переживаю за то, что люди регистрируют конфиденциальную информацию в журналах сервера. Я видел журналы сервера в производстве. Некоторые разработчики случайно регистрируют информацию, связанную с безопасностью, такую как пароль, clientId, clientSecret и т. Д.
Есть ли способ, как плагин Eclipse или любой инструмент, предупредить разработчиков при написании их кода?
`ex : log.info("usernam = " + username + "password = " + password) ;` //
Warn that confidential info is getting logged.
Я провел некоторые исследования... Я видел такие инструменты, как sonarLint и FindBug
но эти плагины не могут решить мою проблему.
5 ответов
SonarLint предлагает правило S2068: учетные данные не должны быть жестко закодированы, что нацелено на использование жестко закодированных учетных данных, и это похоже на то, чего вы пытаетесь достичь, хотя этого может быть недостаточно для ваших нужд.
Однако, как указывалось в других ответах, выявление таких дыр в безопасности может быть в конечном счете трудным, и тщательный анализ кода, безусловно, является хорошим шагом для снижения рисков.
Теперь, если вы действительно боитесь использования регистраторов, уже знаете о потенциальных проблемах и о том, какие данные могут утечь, я бы предложил написать ваше собственное пользовательское правило Java для SonarQube.
Пользовательские правила поддерживаются SonarLint и могут применяться на уровне предприятия после развертывания пользовательского подключаемого модуля, содержащего его, на сервере SonarQube. Это решение позволит вам четко определить, на что вы хотите ориентироваться, и настроить правило в зависимости от ваших потребностей и специфики предприятия. Написание таких правил не сложно и задокументировано в следующем руководстве: Пользовательские правила для Java.
Существует много разных способов появления дыр в безопасности. Регистрация данных в консоли браузера - это только один из них.
Насколько мне известно, не существует инструмента, который может автоматически обнаруживать эти проблемы безопасности. Программист несет ответственность за то, чтобы не раскрывать личную информацию пользователя на странице.
В этом случае совет: никогда не записывайте пароли (особенно незашифрованные) в консоль браузера! Вместо этого зашифруйте свои пароли в базе данных с помощью алгоритма, который не может быть расшифрован.
Я бы не стал затаить дыхание для какого-то нестандартного решения на этот раз. Помимо вашей собственной регистрации, вы также должны заботиться о регистрации ваших зависимостей. Тем не менее, у вас есть две области для работы: что входит в журналы и кто имеет доступ к журналам.
Что касается того, что входит в журналы, ваши лучшие инструменты для борьбы с этой проблемой - это образование и сотрудничество (включая вышеупомянутые обзоры кода). Начните с написания списка нефункциональных требований для ведения журнала, который включает в себя безопасность, в которой указывается, что регистрировать и как регистрировать (маркеры, уровни, конфиденциальные параметры и т. Д.) Я рекомендую поработать с коллегами над определением этого списка, чтобы он не стал известен как "крестовый поход журналирования Рави" вместо "того, что нам действительно нужно сделать".
Как только этот список будет определен, и вы получите вступительный взнос вашего коллеги и / или руководства, вы можете написать оболочки для журналов реализаций, которые поддерживают список собранных вами нефункциональных требований к журналированию. Если действительно необходимо регистрировать конфиденциальные параметры, предоставьте способ асимметричного шифрования параметров для последующего извлечения корневой учетной записью: например, ключ шифрования, хранящийся в файле, доступном только для root / контейнера. Для руководства вам, возможно, придется потратить некоторое время на написание ценных предложений, описывающих, почему ваша инициатива ценна для вашей компании.
Следующая работа с тем, кто определяет ваш SLDC - убедитесь, что изменения в вашем SDLC переданы извне. Пусть они создадут контрольный список безопасного кодирования для вашей компании, который будет реализован с одним элементом, на котором будет написано: Все ведение журнала ведется с использованием OurCompanySecureLogger. Теперь вы можете начать работу по реализации инициативы. Я рекомендую написать на сервере сборки проверку, которая проверяет зависимости и завершает сборку, если находит прямую ссылку на log4j, slf4j, logback и т. Д.
Что касается другой половины проблемы, работайте с вашей командой SysOps, чтобы определить правила разделения обязанностей. То есть разработчики программного обеспечения не должны иметь доступа к серверам, на которых ведется регистрация. Если на данный момент вы недостаточно укомплектованы персоналом, чтобы поддержать это понятие, вам, возможно, придется проявить творческий подход.
Другой подход заключается в создании пользовательского приложения журнала, которое ищет определенные контрольные шаблоны (например, работает как "пароль" и "пароль") и уничтожает сообщения или выдает ошибку.
Однако это может быть опасно. Если плохие парни знали, что вы делаете это, они могли бы попытаться использовать это, чтобы скрыть свои следы или даже сломать ваш сервер.
Может быть, вы должны попробовать контрастный инструмент. Это хорошо, и мы используем его с давних пор.
Он заботится обо всех обновленных 10 лучших выпусках owasp.
Очень хорошо для нахождения дыр в безопасности в корпоративных приложениях.
Их поддержка тоже хороша.