Software security
Aleksey Cheusov, Minsk, Belarus
LVEE Winter 2012
System techniques and methods are reviewed for securing the software in UNIX World.
Язык программирования С, на десятилетия определивший успех операционных систем класса UNIX, на протяжении последних лет все чаще
становится источником проблем в области безопасности программного
обеспечения. Появившись как язык системного программирования, язык С
широко применяется также и для разработки прикладного ПО, что, ввиду принципиальной “небезопасности” этого языка, приводит к многочисленным проблемам, таким как получение доступа к системе злоумышленником, повышению привилегий процесса до уровня суперпользователя, rootkit-ам, нестабильности работы ОС и т.п. То же относится и к языку программирования С++.
В ближайшее время вряд ли стоит ожидать значительного падения популярности этих языков в области разработки как системного, так и прикладного ПО, поэтому
актуальной становится разработка средств и методов борьбы с
перечисленными выше проблемами менее радикальными, чем смена языка
программирования, средствами. Таким средствам и технологиям, существующим и развивающимся в различных UNIX-подобных системах, посвящен настоящий краткий обзор.
К числу рассматриваемых технологий защиты можно среди прочих отнести следующие:
- безопасные функции strl{cat,cpy} для работы со строками,
- SSP (stack smashing protection) – защита от переполнения стека,
- ASLR (address space layout randomization) – рандомизация базовых адресов сегментов виртуальной памяти процесса,
- PIE (position independent executable) – позиционно-независимые исполняемые файлы,
- hardened chroot – усиленный chroot,
- W^X – защита исполняемых сегментов памяти от записи и записываемых (стек и данные) от исполнения,
- PaX MPROTECT – защита mprotect(2),
- PaX Segvgard – защита от перебора адресов сегментов памяти приложения,
- Information filtering – сокрытие информации, доступной пользователям и процессам,
- per-user /tmp directory – размещение подкаталога временных файлов в домашней директории пользователя,
- SUID/SGIG executables – избавление от исполняемых файлов с установленным битом SUID,
- PAM tcb – замена PAM unix как средство избавления от бита SUID у passwd(8)
- capsicum – расширение POSIX API для обеспечения лучшей безопасности в системе UNIX.
- FUSE, PUFFS – подсистемы для реализации файловых систем в пространстве пользователя
- Микроядерные ОС – класс операционных систем, в которых основные сервисы работают на уровне пользователя, на уровне ядра же работает лишь самое необходимодое, за счет чего достигается надежность и безопасность
- RUMP – подсистема для запуска ядерного кода в пользовательском приложении
- SE Linux – подсистема контроля доступа в Linux
- kauth(9) – подсистема авторизации ядра NetBSD
- jail – система изоляции и виртуализации FreeBSD
Текст тезисов доступен под лицензией Creative Commons Attribution-ShareAlike 3.0.