Вернуться к статьям

GNU IFUNC — настоящий виновник CVE-2024-3094, а вовсе не XZ

8 мая 2026
1 мин чтения
GNU IFUNC — настоящий виновник CVE-2024-3094, а вовсе не XZ

Разработчик нарыл, что корень уязвимости CVE-2024-3094 — не только в XZ, но и в древнем механизме IFUNC, который позволяет подменять функции на лету.

Помните скандал с CVE-2024-3094, из-за которого весь интернет перетряхивал свои XZ-библиотеки? Оказывается, настоящий злодей — не сам XZ, а древний механизм GNU IFUNC, который словно дверь без замка в мире ELF-бинарников.

Исследователь Роберт Френч ткнул пальцем в IFUNC и обнаружил, что эта фича, предназначенная для выбора оптимальной реализации функции под конкретный процессор, идеально подходит для внедрения бэкдоров. Это как если бы в вашем автомобиле был штатный люк для доступа механика, а кто-то использовал его для угона.

Суть в том, что IFUNC позволяет динамически выбирать, какую версию функции загрузить — и злоумышленник может подсунуть свою вредоносную версию, которая обходит все проверки. В случае с XZ, бэкдор использовал IFUNC для перехвата вызовов OpenSSH, и это оставалось незаметным для стандартных анализаторов.

Разработчикам стоит задуматься: сколько ещё «удобных» механизмов в наших тулчейнах на самом деле являются бомбами замедленного действия? IFUNC — мощный инструмент, но без контроля он превращается в кошмар безопасности. Как говорится, с большой силой приходит большая ответственность (и много костылей).

Комментарий студии METABYTE: Мы всегда говорили, что безопасность — это не фича, а процесс. Если ваш код использует IFUNC или подобные «магические» механизмы, не поленитесь провести аудит — иначе однажды вы рискуете обнаружить, что ваш «оптимизированный» бинарник уже давно работает на дядю.

GNU IFUNC — истинная причина CVE-2024-3094 | METABYTE — METABYTE