Кратко

  • В рабочем проекте YAML-LD 1.0 от 24 сентября 2026 года W3C конкретизировал два риска: псевдонимы способны сильно увеличить внутреннее дерево, а некоторые теги в отдельных парсерах — вызвать неожиданное выполнение кода.
  • Раздел о безопасности не является нормативным. В RFC 9512 эти угрозы рассматривались ещё в 2024 году; текст W3C от 20 сентября ссылался на них менее определённо.
  • Соответствие формату обмена и безопасная настройка программы, читающей чужой файл, требуют разных доказательств.

Поставщик передаёт небольшой YAML-LD-файл для загрузки в каталог. В нём удобно повторно использовать одно определение: якорь отмечает узел, а псевдонимы на него ссылаются. Для редактора это означает меньше строк. Для парсера — последовательность операций по построению внутренней структуры. Проект спецификации предписывает считать каждую такую ссылку копией узла при создании представления JSON-LD. Объём исходного файла поэтому не равен расходу памяти после раскрытия ссылок.

Рабочая группа JSON-LD в редакции от 24 сентября вывела эту особенность в раздел о безопасности. По сравнению с версией от 20 сентября там появилась прямая ссылка на RFC 9512 и два предметных предупреждения. Даже граф без циклов может превратиться в гораздо более крупное дерево из-за псевдонимов. Теги YAML в некоторых парсерах могут привести к неожиданному выполнению кода; пример в тексте — !!python/object. Ранее раздел ограничивался общей отсылкой к безопасности JSON-LD и суффиксу +yaml.

Нельзя выдавать уточнение формулировки за обнаружение нового класса атак. Информационный RFC 9512, опубликованный IETF в феврале 2024 года для регистрации медиатипа YAML и структурного суффикса, уже разбирал истощение ресурсов и произвольное выполнение кода. Нынешние документы не сообщают о взломе названной системы, не оценивают распространённость проблемы и не подтверждают защиту конкретной библиотеки. W3C выпустил рабочий проект, который может меняться; сама публикация не означает одобрения W3C или его участников.

Задача YAML-LD — дать возможность записывать связанные данные в YAML и представлять их в JSON-LD без потери смысла. Якоря и псевдонимы разрешены в сериализации, но циклы в графе представления запрещены. Имена якорей и форма ссылок не сохраняются как смысловые данные. Поэтому корректное отклонение циклического файла ещё не доказывает, что ациклический файл не породит чрезмерное число копий.

В проекте есть обязательные условия совместимости: UTF-8, обработка по YAML 1.2 либо более поздней совместимой версии, строковые ключи отображений и прохождение указанных тестовых наборов. Авторы также отмечают ловушку старых библиотек YAML 1.1: слова no и on могут стать логическими значениями, нарушив согласованность данных. Эти требования уточняют результат преобразования, но не устанавливают лимит памяти сервиса и не отключают конструкторы языка программирования в выбранной библиотеке. Новый текст раздела 6 прямо помечен как ненормативный.

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

Источники