Graphiti - это фреймворк, который находится поверх моделей и выставляет их через интерфейс JSON:API-совместимый. Версии до 1.10.2 имеют уяз…
Graphiti - это фреймворк, который находится поверх моделей и выставляет их через интерфейс JSON:API-совместимый. Версии до 1.10.2 имеют уязвимость выполнения произвольного метода, которая влияет на функциональность записи JSONAPI от Graphiti. Злоумышленник может создать вредоносную полезную нагрузку JSONAPI с произвольными именами отношений, чтобы вызвать любой публичный метод в базовом экземпляре модели, классе или его ассоциациях. Любое приложение, разоблачающее конечные точки Graphiti (создать/обновить/удалить) ненадежным пользователям, затрагивается. Метод «Graphiti::Util::ValidationReponse#all_valid?` метод рекурсивно называет `model.send(name)`` с использованием имен отношений, взятых непосредственно из поставляемых пользователем полезных нагрузок JSONAPI, без проверки их на основе наложенных на основе побочных нагрузок ресурса. Это позволяет злоумышленнику потенциально запускать любой публичный метод в данном экземпляре модели, на классе экземпляров или связанных с ним случаях или классах, включая разрушительные операции. Это исправлено в Graphiti v1.10.2. Пользователи должны обновиться как можно скорее. Доступны некоторые обходные пункты. Убедитесь, что конечные точки записи Graphiti (создать / обновление) недоступны для ненадежных пользователей и/или применяют строгие проверки аутентификации и авторизации до обработки любой операции записи, например, используйте сильные параметры Rails для обеспечения обработки только действительных параметров.
Продукт не ограничивает должным образом чтение или запись динамически управляемых ресурсов кода — переменных, объектов, классов, атрибутов, функций или исполняемых инструкций и операторов.
https://cwe.mitre.org/data/definitions/913.html →Открыть в коллекции CWE →