Популярный текстовый редактор GNU nano, входящий в состав практически каждого дистрибутива Linux, содержит опасную уязвимость, связанную с некорректной обработкой прав доступа при создании пользовательских директорий. Проблема получила идентификатор CVE-2026-40556 и затрагивает системы, где утилита используется в средах с ослабленной политикой безопасности. Разработчики уже выпустили исправление в версии 9.0, однако многие пользователи могут оставаться под угрозой.
Уязвимость CVE-2026-40556
Суть уязвимости кроется в механизме создания каталога ~/.local. Когда этот каталог отсутствует в системе, GNU nano создаёт его с избыточно широкими правами доступа. При первом обращении к функциям, требующим хранения данных в соответствии со стандартом XDG (межплатформенная спецификация для организации пользовательских данных), редактор явно запрашивает режим 0777. Это означает, что директория становится доступной для записи любым пользователям системы, если значение umask (маска прав доступа к создаваемым файлам) не ограничивает такие разрешения.
Особую опасность ситуация представляет в окружениях с расслабленным или нулевым значением umask. Речь идёт о контейнерных средах, системах непрерывной интеграции и доставки (CI/CD), встроенных системах, а также о пользовательских оболочках, где umask установлен на 000. В таких условиях ~/.local создаётся как полностью общедоступный каталог, что открывает путь для локальной атаки.
Механизм эксплуатации уязвимости основан на состоянии гонки. Злоумышленник может воспользоваться временным окном между созданием ~/.local с правами 0777 и последующим созданием более строгих поддиректорий. В этот промежуток атакующий успевает записать контролируемые им файлы в иерархию XDG-директорий жертвы. С практической точки зрения это означает возможность подмены конфигурационных файлов приложений, внедрения вредоносных скриптов или вредоносной нагрузки, которая будет выполняться в контексте пользователя.
Важно понимать, что уязвимость CVE-2026-40556 не является дистанционной. Атакующий должен иметь локальный доступ к системе, то есть быть зарегистрированным пользователем на том же компьютере или виртуальной машине. Однако в многопользовательских средах, облачных сервисах или на shared-хостинге такая угроза становится вполне реальной. Например, если два разработчика работают на одном сервере, один из них может атаковать окружение другого через этот недостаток.
В контексте контейнерных технологий проблема усугубляется тем, что внутри контейнера umask часто устанавливается в нулевое значение для упрощения развёртывания. Сборщики образов, CI/CD-пайплайны и сценарии автоматизации нередко пренебрегают настройкой маски прав доступа. В результате любой пользователь, имеющий доступ к контейнеру, может перехватить управление над файловой структурой другого пользователя.
Следует отметить, что уязвимость затрагивает не только сам редактор, но и любые приложения, полагающиеся на XDG-спецификацию хранения данных. Если вредоносные файлы окажутся записаны в ~/.local, они могут быть автоматически загружены другими программами, работающими в сессии пользователя. Это расширяет поверхность атаки далеко за пределы непосредственного использования nano.
Разработчики GNU nano оперативно отреагировали на проблему. В версии 9.0 устранена опасная практика явного запроса режима 0777 для родительской директории. Теперь редактор создаёт каталог с более безопасными правами, полагаясь на корректную настройку umask системы. Пользователям настоятельно рекомендуется обновить nano до актуальной версии.
Тем не менее, одного обновления недостаточно. Системные администраторы должны проверить конфигурации umask в своих окружениях, особенно в контейнерах и средах разработки. Значение 000 недопустимо для production-систем, а любое отклонение от стандартных 022 требует обоснования и контроля. Кроме того, стоит провести аудит существующих директорий ~/.local на предмет подозрительных файлов или аномальных прав доступа.
Уязвимость CVE-2026-40556 получила низкий рейтинг опасности по шкале CVSS 4.0 - всего 2,1 балла. Это объясняется тем, что для эксплуатации требуется локальный доступ и специфические условия окружения. Однако на практике любой низкоуровневый недостаток, позволяющий записать файлы в каталог другого пользователя, может стать первым шагом в цепочке более серьёзной атаки. В мире кибербезопасности не бывает мелочей, и подобные "незначительные" проблемы регулярно используются для эскалации привилегий и развития вторжений.
Подводя итог, можно сказать, что инцидент с GNU nano - это очередное напоминание о важности корректной настройки прав доступа даже в, казалось бы, тривиальных компонентах системы. Разработчикам стоит внимательнее относиться к стандартным значениям разрешений при создании пользовательских директорий, а администраторам - не пренебрегать базовыми принципами безопасности, такими как минимально необходимые привилегии. Обновление до nano 9.0 закрывает конкретную брешь, но системный подход к управлению правами доступа остаётся единственной надёжной защитой от подобных атак в будущем.
Ссылки
- https://nvd.nist.gov/vuln/detail/CVE-2026-40556
- https://cgit.git.savannah.gnu.org/cgit/nano.git/commit/?id=cb43493e
- https://cert.pl/en/posts/2026/04/CVE-2026-40556/