Новости криптобиржи

Обнаружена уязвимость переполнения кучи в токенизаторе Llama.cpp: глубокий анализ и последствия

Новости криптобиржи
We Found a Heap Overflow in Llama.cpp's Tokenizer

Подробный обзор обнаруженной уязвимости переполнения кучи в токенизаторе Llama. cpp, её причины, методы эксплуатации, влияние на безопасность и реакция разработчиков проекта.

В современном мире машинного обучения и искусственного интеллекта безопасность программных компонентов становится не менее важной, чем их функциональность. Недавнее открытие уязвимости переполнения кучи в токенизаторе Llama.cpp стало серьезным вызовом для сообщества разработчиков и исследователей безопасности. Данная проблема скрывалась под поверхностью более года, и лишь автономный исследовательский агент Pwno смог выявить её глубинные причины и продемонстрировать потенциальные последствия. В основе уязвимости лежит тонкий баг, связанный с переполнением целочисленного значения, который приводит к возможности выхода за пределы выделенной памяти и переписыванию соседних участков — классической ошибке безопасности, называемой heap overflow.

Уникальность открытия заключается в том, что уязвимость затрагивает токенизатор — ключевой компонент языковых моделей, отвечающий за преобразование входного текста в последовательности токенов, на которых строится само машинное обучение. Проблема проявляется в функции llama_vocab::tokenize, где осуществляется преобразование результата размера вектора токенов из беззнакового типа size_t в знаковый int32_t. Такая трансформация происходит в условии сравнения, которое при определённых крайних условиях приводит к переполнению знакового типа и, как следствие, некорректному поведению программы. При больших размерах результата cast приводит к отрицательному значению, из-за чего условие сравнения с n_tokens_max, обычно небольшой по размеру переменной, принципиально искажается. В результате на этапе копирования токенов в аллоцированный буфер происходит выход за выделенную память, что формально является heap overflow.

Данная ошибка является не просто уроком по осторожному обращению с типами данных в C++, но и важным предупреждением о том, как даже тонкие дизайнерские решения могут создавать серьёзные дыры безопасности. Любопытно, что в процессе обнаружения проблемы исследователи Pwno столкнулись с преградами при попытках создать доказательство концепции (Proof-of-Concept): стандартная библиотека C++ имеет внутренние механизмы защиты, не позволяющие создать std::vector с очень большим размером, что блокировало преднамеренное воспроизведение ошибки. Однако, обходной путь был найден благодаря особенностям внутренней архитектуры llama.cpp: при активации Jinja шаблонов для обработки диалогов исключалась часть кода, вызывающая ошибку размера буфера. Это позволило обойти ограничения системных аллокаторов и протестировать вызов токенизатора с необходимыми параметрами.

 

Помимо heap overflow, в ходе исследования был выявлен и побочный эффект — потенциальная уязвимость ReDoS (Regular Expression Denial of Service) из-за бесконечной рекурсии в обработке регулярных выражений в разделе unicode_regex_split, что само по себе является серьёзной проблемой, способной привести к переполнению стека и блокировке сервиса. Авторы доклада сумели не только вскрыть суть бага и продемонстрировать пути его обхода, но и предоставить полную обратную связь сообществу llama.cpp, что позволило разработчикам оперативно отреагировать и выпустить патчи исправления в течение 24 часов с момента раскрытия. Такой подход к безопасности заслуживает высокой оценки и демонстрирует зрелость и ответственность команды, поддерживающей столь важный инфраструктурный проект в области ИИ. Последствия обнаруженной уязвимости выходят за рамки учебного примера.

 

Переполнение кучи предоставляет потенциальным злоумышленникам множество векторов атаки: от нарушения целостности приложения и краха inferencing-сервера до полномасштабного удалённого исполнения кода. Именно риск получения удалённого контроля над вычислительной системой делает ошибки подобного рода особенно опасными для инфраструктур, предоставляющих сервисы машинного обучения в облаке или на корпоративных платформах. Ранее в других компонентах машинного обучения, таких как GGUF пиарсер, наблюдались похожие проблемы, но случай с токенизатором Llama.cpp стал первой подобной уязвимостью на этом уровне. Это подчеркивает, как сложно обеспечить безопасность всех слоев сложной системы, и как важно исследовать самые фундаментальные компоненты с точки зрения безопасности.

 

Появление автономных систем исследователей безопасности, таких как Pwno, становится все более актуальным в эпоху масштабного распространения ИИ. Способность подобного агентства не только обнаружить баг, но и провести комплексный анализ и взаимодействовать с разработчиками, ускоряя процесс выявления и устранения уязвимостей, демонстрирует будущее безопасной разработки. Помимо технических деталей, важным уроком из раскрытия CVE-2025-52566 является осознание тонкости взаимодействия разных библиотек и компонентов ПО — особенно в условиях интенсивного использования шаблонных движков (Jinja), регулярных выражений и продвинутого механизма токенизации. Применение «двухфазного» подхода к выделению памяти, широко распространённого в llama.cpp, оказалось уязвимым к переполнению из-за некорректной работы с типами данных, что подчеркивает, что даже распространённые паттерны могут скрывать риски.

Заметный прогресс вызвало также понимание специфики токенизации с разными режимами, такими как Byte-Pair Encoding и Unigram модели. Благодаря выбору архитектуры токенизатора можно было обойти побочные эффекты, такие как бесконечная рекурсия при разбиении текста на слова, что увеличивает гибкость и безопасность системы. Для разработчиков и пользователей индустрии машинного обучения открытие CVE-2025-52566 — это сигнал о необходимости проведения регулярного аудита безопасности ключевых компонентов, даже тех, которые воспринимаются как зрелые и стабильные. Важно помнить, что вычислительные риски могут крыться в самых фундаментальных слоях стека ПО и что их своевременное выявление требует как человеческого участия, так и внедрения современных инструментов автоматизации. В заключение, данное исследование не только расширило границы знаний о мельчайших нюансах внутренней работы llama.

cpp, но и послужило отличным примером экологичного и ответственного взаимодействия между исследовательским сообществом и разработчиками. Благодаря быстро проведённому исправлению будет укреплена безопасность не только llama.cpp, но и многих проектов, зависящих от него, а тонкое понимание причини уязвимостей повысит общую устойчивость экосистемы машинного обучения на годы вперёд.

Автоматическая торговля на криптовалютных биржах

Далее
AMD Keeps Building Momentum in AI, with Plenty of Work Still to Do
Воскресенье, 28 Сентябрь 2025 AMD усиливает позиции в сфере искусственного интеллекта: успехи и вызовы на пути к лидерству

Компания AMD демонстрирует значительный прогресс в развитии технологий искусственного интеллекта, расширяя свое присутствие на рынке AI-чипов и создавая мощное аппаратное и программное обеспечение. Впереди еще много задач, однако AMD уверенно движется к конкуренции с ведущими игроками индустрии, продолжая внедрять инновации в области GPU, CPU и инфраструктурных решений.

Wrote a Playbook for College
Воскресенье, 28 Сентябрь 2025 Как создать идеальный план для успешной учёбы в колледже

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

Official Monero website compromised with malware that steals funds
Воскресенье, 28 Сентябрь 2025 Взлом официального сайта Monero: вредоносное ПО крадет криптовалюту пользователей

Официальный сайт Monero подвергся атаке хакеров, в результате которой был взломан Linux CLI бинарный файл с вредоносным кодом, способным похищать средства пользователей. Рассказывается о деталях взлома, способах защиты и важности проверки целостности загружаемых файлов.

Monero Developers Confirm Fix of Bug That Lost Balances for Ledger Wallet Users - Yahoo Finance
Воскресенье, 28 Сентябрь 2025 Команда Monero исправила баг, из-за которого пользователи Ledger теряли балансы

Разработчики Monero официально подтвердили устранение критической ошибки, которая приводила к потере балансов у пользователей аппаратных кошельков Ledger. Узнайте, как произошла проблема, какие меры были предприняты для её решения и что это значит для владельцев Monero в дальнейшем.

Japan's Financial Regulator Is Pushing Crypto Exchanges To Drop 'Altcoins' Favored By Criminals - Forbes
Воскресенье, 28 Сентябрь 2025 Япония борется с криптовалютами для преступников: финансовый регулятор против Monero, Zcash и Dash

Японские финансовые власти усиливают давление на криптобиржи с целью прекратить работу с анонимными «альткойнами», которые становятся предпочтительным средством для легализации преступных доходов и киберпреступлений. Рассматривается влияние этой политики на рынок и будущее криптовалют в Японии.

Monero slams crypto-jackers after mining malware hits government sites - TNW
Воскресенье, 28 Сентябрь 2025 Как Monero борется с крипто-майнерами: атака майнинг-вредоносного ПО на государственные сайты

В последние годы растет угроза майнинг-малвари, которая использует вычислительные мощности пользователей без их ведома для добычи криптовалюты Monero. Важной реакцией стало создание специальных групп и инструментов для борьбы с этим явлением, что имеет огромное значение для безопасности как частных лиц, так и государственных учреждений.

Monero’s former maintainer arrested in the US for allegations unrelated to cryptocurrency - Cointelegraph
Воскресенье, 28 Сентябрь 2025 Бывший руководитель Monero арестован в США по обвинениям, не связанным с криптовалютой

Бывший ведущий разработчик Monero Риккардо Спаньи был задержан в США по запросу южноафриканских властей по обвинениям в мошенничестве, связанным с его прежней работой. Его арест вызвал волну обсуждений в криптосообществе, подчеркнув важность разделения личных и профессиональных претензий к фигурам индустрии.