Новости
Fastjson: RCE-дыра в парсере JSON
Критическая уязвимость при разборе JSON: как одна библиотека снова показала, что опасен не формат, а его небезопасный разбор.
В конце июля 2026 года базы вроде NVD и GitHub Advisory Database за пару дней пополнились серией устрашающих записей: use-after-free в JSON-функциях SQLite, оценки вплоть до «критических». Но у этой истории есть вторая сторона — сами разработчики SQLite подобные CVE не признают уязвимостями, а как минимум одну запись из свежей серии уже успели отозвать.
Коротко: 27–28 июля 2026 против SQLite 3.41 подали около десятка CVE (CVE-2026-51291 … 51304) об use-after-free в разборе JSON и вычислении выражений. Команда SQLite такие сторонние CVE считает низкокачественными, запись CVE-2026-51298 уже отозвана как «не проблема безопасности», а версия 3.41 вышла ещё в 2023 году. Практический вывод — просто держите SQLite актуальным (3.53.2).

SQLite — это самый распространённый в мире движок баз данных: он встроен в браузеры, мобильные приложения, операционные системы и тысячи настольных программ, а данные хранит в одном компактном файле .sqlite, .db или .sqlite3. Именно поэтому любая новость про «дыру в SQLite» моментально расходится по лентам.
27 и 28 июля 2026 года в публичных базах уязвимостей появилась серия из примерно десятка записей — CVE-2026-51291 … CVE-2026-51304. Все они описывают ошибки класса use-after-free (обращение к уже освобождённой памяти) в старой версии SQLite 3.41: часть — в функциях разбора JSON, часть — в механизме вычисления выражений. Некоторым записям сторонние аналитики присвоили статус «критических» с оценкой CVSS до 9.8.
На первый взгляд — повод для паники. На деле это классический случай, когда громкая формулировка CVE и реальная картина расходятся. Разберём по порядку.
Записи описывают ошибки работы с памятью в конкретных внутренних функциях SQLite. По описаниям в GitHub Advisory Database и агрегаторах, среди затронутых участков называют:
jsonParseFree(), jsonCacheInsert(), jsonRemove() и связанные с ними;sqlite3ReleaseTempReg() и exprComputeOperands(), где, по версии авторов, регистр освобождается раньше, чем к нему обращаются.Теоретический сценарий во всех записях примерно одинаков: специально составленный JSON или SQL-запрос заставляет движок обратиться к освобождённой памяти, что «может привести» к отказу в обслуживании, утечке данных или выполнению кода. Важная оговорка — эксплуатация требует, чтобы приложение выполняло недоверенный SQL или разбирало недоверенный JSON внутри самой СУБД. Для подавляющего большинства программ, которые просто читают и пишут собственный файл базы, это нетипичный сценарий.
Одной и той же серии сторонние источники ставят очень разные баллы: от «критических» CVSS 9.8 (например, CVE-2026-51302) до «средних» 6.2 (CVE-2026-51298). Такой разброс сам по себе — признак того, что записи составлены наспех и без единой методики.
У SQLite давно есть публичная и жёсткая позиция по CVE. На официальной странице о безопасности команда прямо пишет, что не ведёт CVE и не считает их достоверным источником. Дословно:
«Почти все ошибки, о которых сообщают CVE, — это просто ошибки, а не настоящие уязвимости. Называть их уязвимостями — значит растягивать смысл слова, и разработчики SQLite не хотят участвовать в этом обмане».
Там же уточняется, что все CVE об SQLite создаются третьими сторонами, часто без участия основной команды, и «нередко содержат неточности». Проще говоря, появление записи в NVD ещё не означает, что SQLite действительно опасен, — многие такие «уязвимости» ссылаются на давно исправленные баги.
Свежая серия — наглядная иллюстрация. Запись CVE-2026-51298, опубликованная 27 июля, уже к 31 июля была отозвана регистратором с формулировкой: «Дальнейшее расследование показало, что это не проблема безопасности». То есть часть «десятка критических уязвимостей» на поверку оказывается вовсе не уязвимостями.
Заголовок «критическая уязвимость SQLite» — ещё не приговор. Смотрите на первоисточник: признаёт ли проблему сам вендор, какая версия затронута и не отозвана ли запись. Голая строчка CVSS 9.8 из агрегатора ничего не гарантирует.
Ещё одна деталь, которую теряют пугающие заголовки: вся серия нацелена на SQLite 3.41. Эта версия вышла в начале 2023 года, и с тех пор проект выпустил десятки релизов. Актуальная стабильная версия на момент новости — SQLite 3.53.2 (выпущена 3 июня 2026 года), и в списке официально признанных проблем этих записей нет.
Практический смысл простой: даже если отдельные ошибки в коде трёхлетней давности реальны, современных сборок SQLite они не касаются. А поскольку SQLite почти всегда поставляется «встроенным» внутри другой программы — вместе с браузером, мессенджером или мобильным приложением — свежую версию движка вы получаете вместе с обычными обновлениями софта, часто даже не подозревая об этом.
Отдельной «заплатки для файла базы» тут не нужно — данные в .db или .sqlite сами по себе безопасны. Реагировать стоит только разработчикам и администраторам, у которых SQLite встроен в их продукт:
SELECT sqlite_version(); или по версии подключённой библиотеки.Обычным пользователям, которые открывают файл базы просмотрщиком, делать вообще ничего не нужно. Если же вы только разбираетесь, что за файл перед вами и чем его открыть, пригодятся наши справки — чем открыть файл базы данных MDF и чем открыть файл JSON.
Главный вывод у этой истории тот же, что и у недавней шумихи вокруг библиотеки Fastjson: опасность живёт не в формате файла, а в программе, которая его читает. Файл SQLite или документ JSON — это просто структурированные данные; риск появляется лишь тогда, когда их обрабатывает устаревший или уязвимый код.
Но у SQLite есть и второй урок — об информационной гигиене. Поток CVE давно превратился в шумный канал, где рядом с реальными проблемами соседствуют дубликаты, ошибки и уже исправленные баги. Умение отличить настоящую угрозу от раздутого заголовка — такой же навык безопасности, как своевременные обновления. Больше практических правил проверки данных и загрузок — в разделе безопасность файлов.