← На главную

Писатель Bob Johnson представил уязвимый веб-сервер ymawky для ARM64

10.05.2026 03:01 · hackernews

Писатель Bob Johnson представил ymawky — веб-сервер, написанный полностью на ассемблере ARM64 для процессоров Apple Silicon. Проект разработан исключительно для macOS и требует установки командной строки Xcode. Сервер использует только системные вызовы, отказывается от библиотек libc и создает новый процесс (fork) для каждого подключения. Запуск производится через команду make, а документация хранится в каталоге www по умолчанию. При ошибке 404 или 500 сервер отдает файлы из папки err, например err/404.html.

Утилита поддерживает методы HTTP GET, PUT, DELETE, OPTIONS и HEAD. Она автоматически кодирует URL и блокирует попытки выхода за пределы корневой директории. Например, запрос к ../../../etc/passwd получит статус 403, тогда как ./../src/file.txt отработает корректно. Загружать файлы можно до 1 гигабайта, причём запись происходит в виде временного файла, чтобы не повредить существующие данные. Если клиент отправляет запрос слишком медленно, связь разрывается через 10 секунд для защиты от атак типа slowloris.

Сервер сам определяет типы файлов по расширению, например .mp4 для видео или .jpg для изображений, и ставит соответствующий заголовок Content-Type. Он умеет отдавать частичный контент при Range-запросах. В коде реализованы специальные конструкции для обработки сигналов и работы с файловыми системами Apple, что делает его неподходящим для Linux без глубокой переписи на языке ассемблера. Автор честно предупреждает, что в коде много уязвимостей, которые он мог не заметить, но постарался сделать его максимально безопасным.

Настройка размера буферов и времени ожидания осуществляется в файле config.S. Там можно задать размер файла, максимальное количество одновременных процессов и таймауты. Для создания красивых страниц с ошибками есть скрипт build_err_pages.sh, использующий шаблоны из файла err/template.html. Проект — это интересная демонстрация возможностей чистого ассемблера, но для продакшена лучше использовать более безопасные и проверенные решения.

Читать оригинал →