V5.5.1 Deserialization Prevention
Requirement:#
Verify that serialized objects use integrity checks or are encrypted to prevent hostile object creation or data tampering. (C5)
Explanation:#
Сериализованные объекты — это структуры данных, которые преобразуются в поток байтов для хранения или передачи между системами. Однако без надлежащих мер безопасности эти объекты могут быть уязвимы для подделки данных или создания враждебных объектов.
Remediation:#
Если доступно, используйте функции подписи/запечатывания языка программирования, чтобы убедиться, что десериализованные данные не были испорчены. Например, код проверки подлинности сообщений на основе хэша (HMAC) может использоваться для обеспечения того, чтобы данные не были изменены.
При десериализации данных заполняйте новый объект, а не просто десериализуйте. В результате данные проходят безопасную проверку входных данных и что функции безопасны
Явно определите конечный объект object(), чтобы предотвратить десериализацию.
Сделайте поля переходными, чтобы защитить их от десериализации. Попытка сериализации, а затем десериализации класса, содержащего переходные поля, приведет к созданию NULL, где должны находиться переходные данные. Это отличный способ предотвратить неправильную перенос и использование переменных времени, окружающей среды или чувствительных переменных.
Избегайте наличия ненужных типов или гаджетов, которые могут быть использованы для вредоносных целей. Это ограничивает вероятность использования злоумышленником непреднамеренных или несанкционированных типов и гаджетов. Добавляйте в список разрешений только допустимые классы. Примечание: новые гаджеты постоянно обнаруживаются, поэтому это само по себе не является достаточным смягчением.
Пример кода C:
В этом примере SerializedObject шифруется с использованием алгоритма AES и секретного ключа. Затем зашифрованный объект записывается в файл. Затем зашифрованный объект считывается из файла и расшифровывается с использованием того же секретного ключа. Это помогает обеспечить конфиденциальность и целостность данных.
Additional:#
CWE - CWE-502: Десериализация ненадежных данных (4.9) (mitre.org)