Небезпечна десеріалізація: коли дані стають кодом
Коротко: Під час десеріалізації збережені байти знову стають об’єктами; якщо вхід іде від зловмисників, деякі формати (pickle, серіалізація Java, YAML) можуть виконати довільний код.
Докладніше: Серіалізація перетворює об’єкти на байти/текст (зберігання, надсилання), десеріалізація — назад. Деякі формати можуть створювати об’єкти довільних класів і викликати методи: із недовіреними даними це ворота для віддаленого виконання коду (RCE).
Подробиці
Небезпечні формати
- Python
pickle(іshelve,joblib/torch.loadз pickle): ніколи не завантажуйте з недовірених джерел.
Захист: надавайте перевагу форматам лише для даних, як-от JSON, перевіряйте джерело.
Див. також: OWASP Top 10, ONNX та експорт моделей