14 Фев, 2023

Десериализация ненадежных данных

Vulnerability Assessment as a Service (VAaaS)

Tests systems and applications for vulnerabilities to address weaknesses.

Десериализация ненадежных данных (DUD) это уязвимость, которая может возникнуть в программных системах, использующих сериализацию и десериализацию. Сериализация - это процесс преобразования состояния объекта в поток байтов, в то время как десериализация - это процесс воссоздания объекта из потока байтов.

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

Примеры уязвимого кода на разных языках программирования

C:

				
					#include <stdio.h>
#include <string.h>

void deserialize(char *data) {
  char buffer[100];
  strcpy(buffer, data);
  printf("Deserialized data: %s\n", buffer);
}

int main(int argc, char *argv[]) {
  if (argc < 2) {
    printf("Usage: %s <data>\n", argv[0]);
    return 1;
  }

  deserialize(argv[1]);
  return 0;
}
				
			

Этот код уязвим для атаки переполнения буфера, поскольку он использует strcpy функция для копирования данных из argv[1] к тому buffer массив без проверки размера данных. Злоумышленник может предоставить строку длиной более 100 символов, которая перезапишет смежную память и потенциально позволит им выполнять произвольный код.

C++:

				
					#include <iostream>
#include <string>
#include <sstream>

class Person {
 public:
  Person(std::string name, int age) : name_(name), age_(age) {}

  void Print() {
    std::cout << "Name: " << name_ << ", Age: " << age_ << std::endl;
  }

 private:
  std::string name_;
  int age_;
};

void Deserialize(std::string data) {
  std::stringstream ss(data);
  std::string name;
  int age;
  ss >> name >> age;
  Person p(name, age);
  p.Print();
}

int main(int argc, char *argv[]) {
  if (argc < 2) {
    std::cout << "Usage: " << argv[0] << " <data>" << std::endl;
    return 1;
  }

  Deserialize(argv[1]);
  return 0;
}

				
			

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

Python:

				
					import pickle

def deserialize(data):
    obj = pickle.loads(data)
    print("Deserialized object:", obj)

data = input("Enter serialized data:")
deserialize(data)
				
			

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

Ruby:

				
					require 'psych'

def deserialize(data)
  obj = Psych.load(data)
  puts "Deserialized object: #{obj}"
end

data = gets
deserialize(data)
				
			

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

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

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

Десериализация ненадежных данных (DUD) - это уязвимость, возникающая, когда приложение десериализует данные без надлежащей проверки. Это может привести к широкому спектру проблем безопасности, включая, но не ограничиваясь ими: удаленное выполнение кода, инъекционные атаки, подделка данных и отказ в обслуживании (DoS).

  1. Удаленное выполнение кода: злоумышленник может создать вредоносный сериализованный объект, который при десериализации целевым приложением будет выполнять произвольный код в системе. Например, злоумышленник может создать сериализованный объект в приложении .NET, который при десериализации загрузит и запустит вредоносный исполняемый файл.

  2. Инъекционные атаки: злоумышленник может создать сериализованный объект, который при десериализации будет внедрять код в целевое приложение. Например, злоумышленник может создать сериализованный объект в приложении Java, который при десериализации будет вводить SQL-запрос, который может быть использован для доступа к конфиденциальным данным, хранящимся в базе данных.

  3. Подделка данных: злоумышленник может создать сериализованный объект, который при десериализации будет изменять или манипулировать данными в целевом приложении. Например, злоумышленник может создать сериализованный объект в приложении Ruby on Rails, который при десериализации изменит состояние объекта в приложении, что приведет к неправильным результатам или неожиданному поведению.

  4. Отказ в обслуживании (DoS): злоумышленник может создать сериализованный объект, который при десериализации приведет к аварийному завершению работы целевого приложения или станет недоступным. Например, злоумышленник может создать сериализованный объект в приложении Python, который при десериализации вызовет переполнение буфера, что приведет к сбою или отказу в обслуживании.

Эти примеры иллюстрируют широкий спектр рисков безопасности, связанных с неисправными уязвимостями.

Методы повышения привилегий Десериализация уязвимостей ненадежных данных

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

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

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

  2. Повторное использование объекта: злоумышленник может создать вредоносный сериализованный объект, который при десериализации будет повторно использовать существующий объект в целевом приложении. Например, злоумышленник может создать сериализованный объект в приложении .NET, который при десериализации будет повторно использовать существующий объект с более высокими привилегиями, позволяя злоумышленнику выполнять код с более высокими привилегиями.

  3. Путаница в типах: злоумышленник может создать вредоносный сериализованный объект, который при десериализации заставит целевое приложение обрабатывать объект с низкими привилегиями как объект с высокими привилегиями. Например, злоумышленник может создать сериализованный объект в приложении Ruby on Rails, который при десериализации заставит приложение обрабатывать объект с низкими привилегиями как пользователя с правами администратора, что позволит злоумышленнику получить доступ к конфиденциальным данным или выполнить код с более высокими привилегиями.

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

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

Вот подробный контрольный список для тестирования неисправных уязвимостей:

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

  2. Определение формата сериализации: следующим шагом является определение формата сериализации, используемого целевым приложением. Распространенные форматы включают форматы JSON, XML и двоичной сериализации, такие как сериализация Java и сериализация .NET.

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

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

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

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

Набор инструментов для использования уязвимостей десериализации ненадежных данных

Вот список популярных инструментов для использования уязвимостей десериализации ненадежных данных (DUD):

Ручные Инструменты:

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

  2. OWASP ZAP: OWASP ZAP (Zed Attack Proxy) - это сканер безопасности веб-приложений с открытым исходным кодом, который включает функции для тестирования неисправных уязвимостей. Его можно использовать для проверки неисправных уязвимостей путем перехвата и изменения сетевых запросов и ответов. Он также включает плагины для тестирования определенных типов неисправных уязвимостей.

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

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

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

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

  7. JsonView: JsonView - это плагин для браузера для тестирования неисправных уязвимостей в API-интерфейсах на основе JSON. Его можно использовать для просмотра данных JSON в браузере и для проверки на наличие неисправных уязвимостей путем создания и отправки вредоносных полезных нагрузок.

  8. XML Developer Tools:Инструменты разработчика XML - это плагин для браузера, предназначенный для тестирования уязвимостей в API на основе XML. Его можно использовать для просмотра XML-данных в браузере и для проверки на наличие неисправных уязвимостей путем создания и отправки вредоносных полезных нагрузок.

Автоматизированные инструменты:

  1. YSoSerial: YSoSerial - это инструмент для автоматического создания вредоносных полезных нагрузок для тестирования неисправных уязвимостей в приложениях .NET. Его можно использовать для создания полезных нагрузок, которые можно использовать для проверки на наличие неисправных уязвимостей в приложениях .NET.

  2. JRMPListener: JRMPListener - это инструмент для тестирования неисправных уязвимостей в приложениях Java. Его можно использовать для прослушивания входящих запросов RMI (Remote Method Invocation) и для проверки на наличие неисправных уязвимостей путем отправки вредоносных полезных нагрузок.

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

  4. SerializationDumper: SerializationDumper - это инструмент для тестирования неисправных уязвимостей в приложениях .NET. Его можно использовать для создания полезных нагрузок, которые можно использовать для проверки на наличие неисправных уязвимостей в приложениях .NET.

  5. Java Deserialization Scanner: Java Deserialization Scanner - это инструмент для тестирования неисправных уязвимостей в приложениях Java. Его можно использовать для сканирования Java-приложений на наличие неисправных уязвимостей и для создания отчетов с подробной информацией об обнаруженных уязвимостях.

  1. ysoserial.net : ysoserial.net это инструмент для тестирования неисправных уязвимостей в приложениях .NET. Его можно использовать для создания вредоносных полезных нагрузок, которые можно использовать для проверки на наличие неисправных уязвимостей в приложениях .NET.

  2. SerializeToFile: SerializeToFile - это инструмент для тестирования неисправных уязвимостей в приложениях .NET. Его можно использовать для создания вредоносных полезных нагрузок, которые можно использовать для проверки на наличие неисправных уязвимостей в приложениях .NET.

  3. SerializationTester: SerializationTester - это инструмент для тестирования неисправных уязвимостей в приложениях .NET. Его можно использовать для создания вредоносных полезных нагрузок, которые можно использовать для проверки на наличие неисправных уязвимостей в приложениях .NET.

Тестовые фреймворки:

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

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

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

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

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

Средний балл CVSS Десериализация уязвимостей ненадежных данных

Общая система оценки уязвимостей (CVSS) является стандартом для оценки серьезности уязвимостей безопасности в диапазоне от 0 до 10. Оценка основана на различных показателях, включая влияние уязвимости на конфиденциальность, целостность и доступность, а также возможность использования уязвимости.

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

Общее перечисление слабых мест (CWE)

Общее перечисление слабых мест (CWE) - это разработанный сообществом список распространенных слабых мест безопасности программного обеспечения. CWE включает категорию для десериализации уязвимостей ненадежных данных, и в топ-10 наиболее часто регистрируемых уязвимостей при десериализации ненадежных данных в CWE входят:

CWE-502: Десериализация ненадежных данных
CWE-501: Нарушение границ доверия с помощью десериализации, контролируемой пользователем
CWE-506: Встроенный вредоносный код
CWE-512: Несоответствующие процедуры управления памятью
CWE-513: Неконтролируемое разыменование указателя
CWE-117: Неправильная нейтрализация выходных данных для журналов
CWE-78: Неправильная нейтрализация специальных элементов, используемых в команде операционной системы
CWE-119: Неправильное ограничение операций в пределах буфера памяти
CМЫ-434: Неограниченная загрузка файла с опасным типом
CWE-190: Целочисленное переполнение или обтекание

Десериализация ненадежных эксплойтов данных

  1. Уязвимости десериализации Java: эти уязвимости возникают, когда ненадежные данные десериализуются в приложении Java, что может привести к выполнению вредоносного кода.

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

  3. Внедрение внешней сущности XML (XXE): эта уязвимость возникает при анализе ненадежных XML-данных в приложении, что может привести к раскрытию конфиденциальной информации или выполнению произвольного кода.

  4. Десериализация Ruby on Rails YAML: эта уязвимость возникает, когда ненадежные данные десериализуются в приложении Ruby on Rails с использованием YAML, что может привести к выполнению произвольного кода.

  5. Десериализация Python Pickle: эта уязвимость возникает, когда ненадежные данные десериализуются в приложении Python с использованием модуля pickle, что может привести к выполнению произвольного кода.

  6. Десериализация .NET BinaryFormatter: эта уязвимость возникает, когда ненадежные данные десериализуются в приложении .NET с помощью BinaryFormatter, что может привести к выполнению произвольного кода.

Практика в тестировании на десериализацию уязвимостей ненадежных данных

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

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

  2. Определите уязвимый код: просмотрите код приложения, чтобы выявить любые случаи десериализации ненадежных данных. Ищите места, где приложение использует библиотеки сериализации или десериализации, такие как ObjectInputStream Java или BinaryFormatter .NET.

  3. Создание вредоносного ввода: создание вредоносного ввода, который может быть использован для использования уязвимости. Это может быть связано с созданием вредоносного сериализованного объекта или XML-документа, содержащего вредоносные данные.

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

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

Для изучения Десериализации уязвимостей ненадежных данных

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

  1. OWASP Deserialization Cheat Sheet: Это всеобъемлющее руководство, которое охватывает все, от основ сериализации и десериализации до подробной информации о конкретных уязвимостях и способах их предотвращения. Он также включает в себя примеры кода и примеры эксплойтов.

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

  3. Обнаружение и использование уязвимостей десериализации Java: это презентация исследователя безопасности Криса Фрохоффа, в которой подробно рассматриваются уязвимости десериализации Java и способы их использования. Он также включает примеры эксплойтов и рекомендации по предотвращению этих типов уязвимостей.

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

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

Книги с обзором Десериализация уязвимостей ненадежных данных

  1. “Защита Java: переход к бизнесу с помощью мобильного кода, 2-е издание” Гэри Макгроу: Эта книга охватывает широкий спектр тем безопасности Java, включая уязвимости десериализации. В нем содержится подробная информация о том, как работают уязвимости десериализации и как их можно использовать, а также рекомендации по предотвращению этих типов уязвимостей.

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

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

  4. “Разоблаченный взлом 7: секреты и решения сетевой безопасности” Стюарта Макклюра, Джоэла Скамбрея и Джорджа Курца: Эта книга представляет собой всеобъемлющее руководство по сетевой безопасности, включая безопасность веб-приложений. Он включает в себя подробный раздел об уязвимостях десериализации, в том числе о том, как их можно использовать и как их предотвратить.

  5. “Безопасность веб-приложений: всеобъемлющее руководство по обеспечению безопасности вашего приложения” Эндрю Хоффмана и Тао Вана: Эта книга представляет собой практическое руководство по безопасности веб-приложений, в том числе по выявлению и устранению уязвимостей десериализации. Он включает в себя реальные примеры уязвимостей десериализации и практические советы по обеспечению безопасности веб-приложений.

Список полезных нагрузок Десериализация уязвимостей ненадежных данных

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

  1. Java: rO0ABQXr...

  2. PHP: O:+5:"Пользователь":25:{...}

  3. Python: cos \nsystem \n(Очень уязвимый \ntR.

  4. Ruby: --- !ruby/объект:OpenStruct\n ...

  5. JSON: {"имя": "пользователь", "данные": {...}}

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

Как защититься от Десериализация уязвимостей ненадежных данных

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

  1. Правило брандмауэра: блокируйте весь трафик из ненадежных источников или IP-адресов.

  2. Правило сигмы: заголовок: Обнаружение ненадежной десериализации данных в Java \n \nlogsource:\n категория: брандмауэр \n \ ndetection:\n выбор: \n - "сообщение": "* java.lang.ClassNotFoundException *"\ n - "сообщение": "* java.io.InvalidClassException *"\n\nfalsepositives: \ n - Возможны ложные срабатывания, проверьте, проверив код.\n \ nlуровень: высокий \n \ n рекомендация:\n - Исследуйте источник трафика и убедитесь, что трафик является законным.\ n - Проверьте наличие обновлений и исправлений для уязвимой библиотеки.\n\n

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

  4. Правило сигмы: заголовок: Обнаружение ненадежной десериализации данных в PHP \n \nlogsource:\n категория: веб-сервер \n \ обнаружение: \n выбор: \n - "сообщение": "* unserialize()*"\ n - "сообщение": "* __wakeup()*"\n \nfalsepositives:\n - Возможны ложные срабатывания, проверьте, проверив код.\n\ nlуровень: высокий \n\ nрекомендации:\n - Проверьте наличие обновлений и исправлений для уязвимой библиотеки.\n - Реализуйте проверку и фильтрацию входных данных, чтобы предотвратить десериализацию ненадежных данных.\n \ n

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

Меры по смягчению последствий для Десериализация уязвимостей ненадежных данных

  1. Избегайте или сведите к минимуму использование десериализации, когда это возможно.

  2. Десериализуйте данные только из надежных источников.

  3. Используйте защищенный протокол сериализации, такой как буферы протокола JSON или Google, который менее подвержен атакам.

  4. Внедрите проверку входных данных для предотвращения вредоносного ввода, например проверку типов данных, длины и формата.

  5. Используйте белый список, чтобы ограничить классы, которые могут быть десериализованы.

  6. Реализуйте сглаживание графа объектов, чтобы избежать десериализации сложных графов объектов.

  7. Используйте изолированную среду или виртуализацию, чтобы изолировать процесс десериализации.

  8. Отслеживайте и регистрируйте действия по десериализации для обнаружения атак и реагирования на них.

Заключение

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

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

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

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