28 Фев, 2023

Обход авторизации с помощью управляемого пользователем ключа

Что такое обход авторизации? 

Обход авторизации - это тип уязвимости в системе безопасности, при котором злоумышленник может получить несанкционированный доступ к системе или ресурсу без надлежащей аутентификации или авторизации.

Одним из простых примеров обхода авторизации является случай, когда пользователь может получить доступ к защищенному ресурсу без предоставления необходимых учетных данных или разрешений. Например, представьте себе веб-приложение, которое требует, чтобы пользователь вошел в систему, прежде чем получить доступ к панели мониторинга своей учетной записи. Если приложение неправильно проверяет учетные данные пользователя, злоумышленник потенциально может обойти экран входа в систему и получить доступ к информационной панели, воспользовавшись уязвимостью в процессе аутентификации.

Другим примером обхода авторизации является случай, когда злоумышленник может повысить свои привилегии в системе или приложении. Например, представьте себе пользователя, который имеет ограниченный доступ к определенным функциям в приложении. Если злоумышленник может воспользоваться уязвимостью в механизме авторизации приложения, он может получить административные привилегии и выполнять действия, которые обычно разрешены только авторизованному персоналу.

Обход авторизации - это серьезная проблема безопасности, которая может иметь серьезные последствия, включая кражу данных, манипулирование данными и несанкционированный доступ к критически важным системам и ресурсам. 

Что такое управляемый пользователем ключ?

Управляемый пользователем ключ - это тип криптографического ключа, который генерируется, управляется или предоставляется пользователем или пользовательским интерфейсом приложения, а не генерируется или управляется самой системой или приложением. Другими словами, пользователь имеет контроль над ключом, который может быть использован для шифрования, дешифрования или аутентификации.

Например, в системе аутентификации на основе пароля пользователь может ввести кодовую фразу или пароль, которые затем используются для получения криптографического ключа, который используется для шифрования и дешифрования. Аналогично, в приложении шифрования файлов пользователь может сгенерировать ключ или выбрать существующий ключ из списка ключей, который затем используется для шифрования или дешифрования файла. В большинстве случаев управляемый пользователем ключ представляет собой хэшированный пароль.

Как злоумышленник получает доступ к пользовательскому ключу?

Если в процессе, используемом для генерации ключей, управляемых пользователем, имеются уязвимости, злоумышленники могут использовать эти уязвимости для генерации или угадывания ключа.

Если злоумышленник получит доступ к устройству или учетной записи пользователя, он может украсть управляемый пользователем ключ напрямую, либо извлекая его с устройства, либо получая доступ к хранилищу ключей.

Перехват ключа во время передачи. Если ключ передается по небезопасной сети или каналу связи, злоумышленники могут перехватить ключ и использовать его для получения несанкционированного доступа.

Если ключ недостаточно надежен или имеет ограниченное пространство для ключей, злоумышленники могут использовать метод "грубой силы", пробуя большое количество возможных значений ключа, пока не найдут правильное.

Злоумышленники могут использовать тактику социальной инженерии, чтобы обманом заставить пользователя раскрыть свой ключ или ввести его на фишинговом веб-сайте или поддельной странице входа в систему.

Основные особенности обхода авторизации через управляемый пользователем ключ

Это тип уязвимости безопасности, которая возникает, когда приложение полагается на управляемый пользователем ввод для авторизации доступа к ресурсу, и пользователь может манипулировать ключом, используемым для авторизации, таким образом, что позволяет им обходить предполагаемые средства контроля доступа.

Например, рассмотрим веб-приложение, которое хранит пользовательские данные в базе данных и использует токен сеанса для аутентификации пользователей и ограничения доступа к их данным. Если приложение полагается исключительно на токен сеанса для авторизации и не проверяет, принадлежит ли токен пользователю, отправляющему запрос, злоумышленник может обойти проверки авторизации, манипулируя токеном сеанса, чтобы он соответствовал токену другого пользователя.

Аналогично, если приложение использует криптографический ключ для авторизации доступа к ресурсу, и ключ генерируется или управляется таким образом, что позволяет пользователям манипулировать им, злоумышленник может создать свой собственный ключ, который предоставляет им несанкционированный доступ.

Как это работает 

Одним из наиболее распространенных примеров ошибок при обходе авторизации через уязвимость, управляемую пользователем, является проверка подлинности веб-приложения и управление сеансами. Злоумышленники могут использовать уязвимости в механизмах аутентификации и управления сеансами веб-приложений для обхода контроля доступа и получения несанкционированного доступа к ресурсам.

Например, если веб-приложение полагается исключительно на файл cookie сеанса для аутентификации и не выполняет надлежащую проверку или проверку, злоумышленник может перехватить сеанс пользователя и получить несанкционированный доступ к приложению. Аналогично, если веб-приложение использует слабый криптографический алгоритм для генерации токенов сеанса или ключей аутентификации, злоумышленник может использовать атаки методом перебора, чтобы угадать ключи и получить доступ к приложению.

Другой пример - устройства Интернета вещей, где использование слабых или предсказуемых ключей может позволить злоумышленникам обойти механизмы аутентификации и контроля доступа. Например, многие устройства Интернета вещей используют стандартные или жестко заданные ключи, которые могут быть легко угаданы или извлечены злоумышленниками, что позволяет им получить доступ к устройству и его ресурсам.

Кроме того, мобильные приложения также могут быть уязвимы для обхода авторизации из-за уязвимостей ключей, контролируемых пользователем. Например, если мобильное приложение использует слабый криптографический алгоритм для генерации токенов аутентификации или сеансовых ключей, злоумышленник может использовать обратное проектирование или другие методы для извлечения ключей и получения доступа к приложению.

Вот пример того, как злоумышленник может использовать уязвимость обхода авторизации с помощью управляемого пользователем ключа в гипотетическом фрагменте кода:

				
					// Sample code for user-controlled key authorization
public class SecureService {
  private static final String SECRET_KEY = "5up3r53cr37k3y";

  public boolean isAuthenticated(String userKey) {
    String derivedKey = generateKey(userKey);
    return SECRET_KEY.equals(derivedKey);
  }

  private String generateKey(String userKey) {
    // Key derivation function that uses the user-provided key 
    // to generate the derived key
    // Example of weak key derivation function
    String derivedKey = userKey + "salt";
    return derivedKey;
  }
}
				
			

В этом примере злоумышленник может воспользоваться уязвимостью обхода авторизации, предоставив управляемый пользователем ключ, который обходит проверку подлинности. Вот шаги, которые может предпринять злоумышленник:

  1. Злоумышленник перехватывает запрос пользователя на вход в систему и обнаруживает, что пользователь использует управляемый пользователем ключ для аутентификации.

  2. Злоумышленник генерирует управляемый пользователем ключ, который будет обходить проверку подлинности. В этом примере злоумышленник может просто предоставить ключ, равный значению SECRET_KEY (“5up3r53cr37k3y”).

  3. Злоумышленник отправляет управляемый пользователем ключ в запросе на вход на сервер.

  4. Сервер генерирует производный ключ, используя управляемый пользователем ключ и функцию получения ключа.

  5. Сервер сравнивает производный ключ со значением SECRET_KEY и находит совпадение, поскольку управляемый пользователем ключ равен значению SECRET_KEY.

  6. Сервер возвращает успешный ответ на проверку подлинности, и злоумышленник получает доступ к защищенной службе.

				
					// Sample code for user-controlled key authorization
public class FileServer {
  private static final String AUTH_KEY = "5ecr3tK3y";

  public boolean hasAccess(String userKey, String filePath) {
    String derivedKey = generateKey(userKey);
    if (AUTH_KEY.equals(derivedKey)) {
      return true;
    }
    return false;
  }

  private String generateKey(String userKey) {
    // Simple key derivation function that concatenates 
    // the user-provided key and a static string
    return userKey + "random_string";
  }
}
				
			

В этом примере злоумышленник может воспользоваться уязвимостью обхода авторизации, изменив управляемый пользователем ключ, чтобы обойти проверку подлинности. Вот шаги, которые может предпринять злоумышленник:

  1. Злоумышленник перехватывает запрос на доступ к файлу и обнаруживает, что пользователь использует управляемый пользователем ключ для аутентификации.

  2. Злоумышленник изменяет управляемый пользователем ключ, чтобы включить в него статический ключ аутентификации (AUTH_KEY), используемый сервером. В этом примере злоумышленник может просто объединить управляемый пользователем ключ с “5ecr3tK3y”.

  3. Злоумышленник отправляет измененный управляемый пользователем ключ в запросе на сервер.

  4. Сервер генерирует производный ключ, используя модифицированный управляемый пользователем ключ и функцию получения ключа.

  5. Сервер сравнивает производный ключ со значением AUTH_KEY и находит совпадение, поскольку злоумышленник включил статический ключ аутентификации в измененный управляемый пользователем ключ.

  6. Сервер возвращает успешный ответ на проверку подлинности, и злоумышленник получает доступ к запрошенному файлу.

Примеры из реального мира

Существует множество реальных примеров использования злоумышленниками уязвимостей в обход авторизации. Вот несколько примечательных примеров:

Утечка данных Equifax: В 2017 году злоумышленники смогли использовать уязвимость обхода авторизации в веб-приложении Equifax, чтобы получить несанкционированный доступ к конфиденциальным данным, включая имена, даты рождения, номера социального страхования и другую личную информацию миллионов клиентов.

Утечка данных Uber: в 2016 году злоумышленники смогли обойти контроль авторизации Uber, получив доступ к частному репозиторию GitHub, содержащему учетные данные Uber AWS. Затем злоумышленники смогли получить доступ к персональным данным 57 миллионов клиентов и водителей Uber и украсть их.

Утечка данных Target: В 2013 году злоумышленники смогли получить несанкционированный доступ к системам торговых точек Target, воспользовавшись уязвимостью обхода авторизации в программном обеспечении стороннего поставщика. Затем злоумышленники смогли украсть информацию о кредитных и дебетовых картах примерно 40 миллионов целевых клиентов.

Утечки данных Yahoo: В 2013 и 2014 годах злоумышленники смогли получить несанкционированный доступ к базе данных пользователей Yahoo, воспользовавшись уязвимостью обхода авторизации в проприетарном коде Yahoo. Затем злоумышленники смогли украсть личную информацию всех 3 миллиардов учетных записей пользователей Yahoo.

Утечка данных Marriott International: В 2018 году злоумышленники смогли получить несанкционированный доступ к системе бронирования Marriott International Starwood, воспользовавшись уязвимостью обхода авторизации. Затем злоумышленники смогли украсть личную информацию примерно 500 миллионов клиентов Marriott.

Для предотвращения уязвимостей в обход авторизации разработчикам и специалистам по безопасности важно внедрить надлежащие меры безопасности и рекомендации, такие как надлежащая проверка входных данных, безопасные средства контроля аутентификации и авторизации, регулярные аудиты безопасности и своевременное исправление уязвимостей.

Наиболее распространенные ссылки на CVE 

Существует несколько ссылок на CVE (Распространенные уязвимости и уязвимости), которые связаны с обходом авторизации с помощью уязвимостей, контролируемых пользователем. Вот некоторые из наиболее распространенных из них:

  • CVE-2017-5638 – Эта ссылка CVE связана с платформой Apache Struts 2 и уязвимостью несанкционированного доступа, вызванной использованием управляемого пользователем ключа. Злоумышленники смогли воспользоваться этой уязвимостью, отправив специально созданный HTTP-запрос на целевой сервер.

  • CVE-2018-11882 – Эта ссылка CVE связана с уязвимостью в Microsoft Office, которая позволяла злоумышленникам обходить аутентификацию и выполнять произвольный код. Уязвимость была вызвана использованием управляемого пользователем ключа для расшифровки части документа Office.

  • CVE-2019-5736 – Эта ссылка CVE связана с уязвимостью в среде выполнения контейнера Docker, которая позволила злоумышленникам обойти авторизацию и получить root-доступ к хост-системе. Уязвимость была вызвана использованием управляемого пользователем ключа для выполнения криптографической проверки изображений контейнеров.

  • CVE-2020-13942 – Эта ссылка CVE связана с уязвимостью в Apache Tomcat, которая позволяла злоумышленникам обходить авторизацию и получать доступ к ресурсам, которые должны были быть ограничены. Уязвимость была вызвана использованием управляемого пользователем ключа для подписи файлов JAR, используемых уязвимым приложением.

  • CVE-2018-3191 – Эта ссылка CVE связана с уязвимостью в базе данных Oracle, которая позволила злоумышленникам обойти аутентификацию и получить доступ к конфиденциальным данным. Уязвимость была вызвана использованием управляемого пользователем ключа для расшифровки данных, хранящихся в базе данных.

  • CVE-2018-0886 – Эта ссылка CVE связана с уязвимостью в протоколе поставщика поддержки безопасности учетных данных Microsoft (CredSSP), который позволял злоумышленникам обходить проверку подлинности и выполнять удаленные команды в затронутых системах. Уязвимость была вызвана использованием управляемого пользователем ключа для выполнения криптографических операций.

  • CVE-2019-11510 – Эта ссылка CVE связана с уязвимостью в VPN Pulse Secure, которая позволяла злоумышленникам обходить аутентификацию и получать доступ к конфиденциальным данным. Уязвимость была вызвана использованием управляемого пользователем ключа для шифрования учетных данных пользователя, хранящихся на устройстве VPN.

  • CVE-2020-5410 – Эта ссылка CVE связана с уязвимостью в Spring Framework, которая позволяла злоумышленникам обходить авторизацию и выполнять произвольный код на затронутых системах. Уязвимость была вызвана использованием управляемого пользователем ключа для десериализации объектов.

Эти ссылки на CVE демонстрируют широкий спектр систем и приложений, которые могут быть уязвимы для обхода авторизации из-за уязвимостей ключей, контролируемых пользователем, и важность внедрения строгих мер безопасности для предотвращения подобных типов атак.

Как предотвратить обход авторизации с помощью управляемого пользователем ключа 

Используйте безопасные механизмы аутентификации и авторизации. Приложения должны использовать безопасные механизмы аутентификации и авторизации, которые не полагаются исключительно на управляемый пользователем ввод. Это может включать многофакторную аутентификацию, управление доступом на основе ролей и другие меры безопасности.

Приложения должны выполнять надлежащую проверку и проверку ключей и токенов, чтобы убедиться, что они действительны и принадлежат авторизованному пользователю. Это может включать в себя проверку срока действия ключа, проверку того, что он соответствует идентификатору пользователя, и проверку того, что он не был подделан.

Используйте надежные криптографические алгоритмы и протоколы. Приложения должны использовать надежные криптографические алгоритмы и протоколы для генерации ключей и токенов и управления ими. Это может включать использование стандартных отраслевых алгоритмов и протоколов, таких как AES, RSA и TLS.

Ключи и токены должны храниться надежно, с использованием надежного шифрования и контроля доступа для предотвращения несанкционированного доступа. Это может включать их хранение в защищенной базе данных или использование службы управления защищенными ключами.

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

Чтобы предотвратить обход авторизации из-за уязвимостей ключей, контролируемых пользователем, организациям следует принять следующие меры:

  1. Сильные функции деривации ключей: Используйте надежные функции получения ключей, такие как PBKDF2, bcrypt или scrypt, для получения ключей из предоставленных пользователем паролей или других входных данных.

  2. Безопасное хранение ключей: храните ключи надежно, используя аппаратные модули безопасности, надежные среды выполнения или другие механизмы безопасного хранения. Избегайте хранения ключей в виде обычного текста или использования слабых механизмов шифрования.

  3. Дополнительные проверки подлинности и авторизации: Реализуйте дополнительные проверки подлинности и авторизации, чтобы убедиться, что пользователи авторизованы для выполнения запрошенных действий. Например, используйте многофакторную аутентификацию или управление доступом на основе ролей, чтобы ограничить доступ к конфиденциальным данным или функциям.

  4. Регулярные оценки безопасности: регулярно оценивайте безопасность системы или службы с помощью тестирования на проникновение, сканирования уязвимостей или других методов оценки безопасности. Это может помочь выявить и устранить уязвимости до того, как они могут быть использованы злоумышленниками.

  5. Обучение безопасности: Проведите обучение безопасности для разработчиков, администраторов и других сотрудников, чтобы убедиться, что они понимают важность безопасности и как разрабатывать и поддерживать безопасные системы и приложения.

Что делать, если обнаружен обход авторизации через уязвимость управляемого пользователем ключа?

Если пользователь подозревает или обнаруживает обход авторизации с помощью уязвимости управляемого пользователем ключа, он должен сообщить об этом соответствующей организации или субъекту, ответственному за уязвимую систему:

Свяжитесь с организацией. Обратитесь в организацию или организацию, ответственную за систему или службу, и сообщите об уязвимости. Это может включать обращение в службу поддержки клиентов или службы безопасности или отправку отчета об уязвимости через специальную программу раскрытия уязвимостей или программу вознаграждения за ошибки.

Предоставьте подробную информацию. Предоставьте как можно больше подробностей об уязвимости, включая шаги по ее воспроизведению и любое потенциальное воздействие на данные или системы.

Сохраняйте уязвимость в тайне. Не сообщайте подробности об уязвимости никому, кроме организации, ответственной за систему или службу, пока она не будет устранена.

Будьте в курсе реакции организации на уязвимость и любых выпущенных обновлений или исправлений. Если в организации нет программы раскрытия уязвимостей или программы вознаграждения за ошибки, соблюдайте правила ответственного раскрытия информации, предоставляя организации разумное количество времени для устранения уязвимости, прежде чем публично раскрывать ее.

Книги с обзором Обход авторизации с помощью управляемого пользователем ключа

“Безопасность веб-приложений: руководство для начинающих” Брайан Салливан и Винсент Лью – В этой книге рассматриваются различные темы безопасности веб-приложений, включая аутентификацию и авторизацию, а также даются практические рекомендации по защите веб-приложений от распространенных уязвимостей, таких как обход авторизации с помощью управляемого пользователем ключа.

“Хакерство: искусство эксплуатации” автор: Джон Эриксон – Эта книга содержит подробное введение в компьютерную безопасность и методы взлома, включая раздел о криптографических атаках, который включает обход авторизации с помощью управляемого пользователем ключа.

“Руководство хакера веб-приложений: поиск и использование недостатков безопасности” автор: Дафидд Штуттард и Маркус Пинто – В этой книге содержится подробная информация о методах тестирования безопасности веб-приложений, в том числе о том, как выявлять и использовать уязвимости обхода авторизации, такие как те, которые могут быть вызваны пользовательскими ключами.

“Black Hat Python: программирование на Python для хакеров и пентестеров” автор: Джастин Сейтц – В этой книге рассматриваются различные методы и инструменты взлома, включая криптографические атаки, и приводятся практические примеры использования уязвимостей, таких как обход авторизации с помощью управляемого пользователем ключа, с использованием Python.

Эти книги содержат ценную информацию и практические рекомендации о том, как выявлять и предотвращать обход авторизации с помощью уязвимостей, контролируемых пользователем, и могут быть полезными ресурсами для разработчиков, специалистов по безопасности и всех, кто заинтересован в получении дополнительной информации о компьютерной безопасности и хакерстве.

Практика в тестировании на обход авторизации с помощью управляемого пользователем ключа

Важно протестировать уязвимости обхода авторизации, в том числе вызванные пользовательскими ключами, чтобы выявить и устранить их до того, как они смогут быть использованы злоумышленниками. Вот несколько шагов, которые вы можете предпринять для практического тестирования обхода авторизации с помощью уязвимостей, контролируемых пользователем:

Понять уязвимость: Начните с ознакомления с концепцией обхода авторизации с помощью уязвимостей, контролируемых пользователем, и с тем, как они работают. Ознакомьтесь с этой темой и попытайтесь понять различные способы, с помощью которых злоумышленники могут использовать этот тип уязвимости.

Настройка тестовой среды: Настройте тестовую среду, имитирующую реальное приложение, включая пользовательский интерфейс и компоненты на стороне сервера. Используйте такие инструменты, как OWASP ZAP или Burp Suite, для перехвата и изменения трафика между клиентом и сервером, а также для имитации атак на приложение.

Идентификация входных данных, управляемых пользователем: Определите различные управляемые пользователем входные данные в приложении, такие как поля формы, URL-адреса и параметры. Используйте такие инструменты, как OWASP ZAP или Burp Suite, чтобы перехватить и изменить эти входные данные и посмотреть, как реагирует приложение.

Проверка на обходные уязвимости: Протестируйте приложение на наличие уязвимостей обхода авторизации, манипулируя пользовательскими ключами, чтобы узнать, можете ли вы получить несанкционированный доступ к ресурсам или выполнять действия, которые должны быть ограничены. Попробуйте различные комбинации входных данных и полезных нагрузок и посмотрите, как реагирует приложение.

Проанализируйте результаты: Проанализируйте результаты ваших тестов и определите все обнаруженные уязвимости. Документируйте свои выводы и предоставьте рекомендации по устранению уязвимостей.

Исправьте уязвимости: После того как вы выявили уязвимости, поработайте с разработчиками, чтобы исправить их. Внедрите соответствующие меры безопасности, такие как проверка входных данных и контроль доступа, чтобы предотвратить возникновение подобных уязвимостей в будущем.

Практикуя тестирование на обход авторизации с помощью ключевых уязвимостей, контролируемых пользователем, вы можете улучшить свое понимание этого типа уязвимостей и развить навыки их выявления и устранения.

Заключение

В заключение, обход авторизации с помощью уязвимости, контролируемой пользователем, является серьезной проблемой безопасности, которая может позволить злоумышленникам получить несанкционированный доступ к конфиденциальным данным или системам. Эта уязвимость возникает, когда приложение использует управляемый пользователем ключ для выполнения проверки подлинности или авторизации, которыми злоумышленники могут манипулировать, чтобы обойти эти меры безопасности.

Реальные примеры этой уязвимости включают атаки на банковские и финансовые системы, а также облачные сервисы и устройства Интернета вещей. Чтобы предотвратить эту уязвимость, организациям следует внедрить надежные функции получения ключей, использовать механизм безопасного хранения ключей и выполнять дополнительные проверки подлинности и авторизации, чтобы убедиться, что пользователи авторизованы для выполнения запрошенных действий.

Если обнаружен обход авторизации с помощью уязвимости ключа, контролируемой пользователем, организации должны предпринять немедленные действия по отключению уязвимой функциональности, расследованию уязвимости, разработке и внедрению исправления и общению с заинтересованными сторонами. Пользователи также могут сыграть важную роль в повышении безопасности систем и служб, которыми они пользуются, ответственно сообщая об уязвимостях соответствующей организации или субъекту.

Другие Услуги

Готовы к безопасности?

Связаться с нами