TGViewer
.NET Kings .NET Kings @netskings · 7.34K subscribers
Post #746 337
👁‍🗨Hello world~

OWASP A08: Чем опасно доверие к чужому коду

• Software or Data Integrity Failures (нарушения целостности ПО или данных), восьмая категория в OWASP Top 10:2025. Сюда относятся ситуации, когда приложение принимает код или данные за доверенные, не проверив их происхождение и отсутствие подмены.

• Представим программу с автоматическим обновлением, она скачивает новую версию, распаковывает её и запускает установку. Всё удобно, но проверку подписи разработчик не предусмотрел.

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

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

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

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

• Например, сервер получает данные пользователя и восстанавливает из них объект через python библиотеку pickle:

profile = pickle.loads(request.data)


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

• Для обычного обмена полями профиля достаточно JSON, без восстановления произвольных Python-объектов. Но формат сам по себе не делает данные достоверными: структуру и значения проверяем отдельно, а права пользователя определяем на сервере, не по присланному role: admin.

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

#OWASP #ВебБезопасность

• Поддержать автора монеткой: @v_meshke
  • ❤ 6
  • ❤‍🔥 1
More from @netskings
  1. Oct 17, 2026👁‍🗨Hello world~ Изучаем сеть: Trunk и тегирование 802.1Q • В прошлом посте мы разделили…
  2. Oct 16, 2026👁‍🗨Hello world~ GEOINT на практике: От sample.mp4 до точки на карте • Сегодня на примере…
  3. Oct 16, 2026👁‍🗨Hello world~ Фишинг и MFA: Почему одноразовый код не всегда спасает • В посте про OWA…
  4. Oct 15, 2026👁‍🗨Hello world~ Rogue DHCP: Когда адреса раздаёт не тот сервер • В посте про DHCP Starva…
  5. Oct 14, 2026👁‍🗨Hello world~ GEOINT: Следы людей, судов и изменений природы • Геоданные создают не то…
  6. Oct 11, 2026👁‍🗨Hello world~ Pl@ntNet: Как растения помогают искать место съёмки • На фотографии нет…
Threads Profile ViewerView any public Threads profile without an account.Open ThreadLook →Writing with AI? Make it sound human.Metric37 rewrites AI drafts so they read naturally. Free AI detector, 1,500 words free.Try Metric37 →