Комментарии 49
Астрологи объявили неделю эксплойтов Apple.
Продажи конкурентов увеличились вдвое.
Продажи конкурентов увеличились вдвое.
+53
Баг работает на всех версиях операционок Mac OS X, где изменение настроек системных часов не требует ввода пароля. Подобная проблема существует и в ОС Linux. Радует то, что такой метод получения прав доступа к файлам имеет достаточно серьезные ограничения. Злоумышленник должен иметь физический или удаленный доступ к системе с правами администратора, а также хотя бы раз запустить команду sudo ранее. © iguides.ru
+8
А можно подробностей то=), причем тут часы?
+4
Если установить часы компьютера на 1 января 1970 года, то Unix в этом случае сбрасывает счетчик и отсчет времени начинается с нуля. См. UNIX-время
Именно благодаря этой особенности, защиту прав доступа к файлам можно обойти.
Именно благодаря этой особенности, защиту прав доступа к файлам можно обойти.
-12
sudo позволяет опускать ввод пароля, если он был недавно введен
вероятно, если sudo никогда не использовался (или есть другие причины?), то время его последнего использования — 0 по unix time. если установить часы в это время (как раз 1 января 1970), то sudo опустит ввод пароля и сразу даст права.
в линуксах такой проблемы нету, т.к. в них нельзя изменить дату без административных прав
вероятно, если sudo никогда не использовался (или есть другие причины?), то время его последнего использования — 0 по unix time. если установить часы в это время (как раз 1 января 1970), то sudo опустит ввод пароля и сразу даст права.
в линуксах такой проблемы нету, т.к. в них нельзя изменить дату без административных прав
+23
А если поменять дату в CMOS? Надо попробовать.
+1
Тоесть это надо запустить sudo в туже секунду что и изменение времени в ноль?
0
На Metasploit советуют выполнить «sudo -k» — это «убивает сессию» sudo. Видимо, это реализуется именно путём замены времени последнего использования на 0.
0
Если прислать нулевое время по NTP, то можно взломать и Linux?
+4
Уже «взламывали», вроде, сбросом времени в биосе. Не могу найти ссылок
0
С БИОСОМ все же ограничений довольного много. На него еще и пароль можно сделать. Если же есть физ. доступ к машине (как это нужно в случае с БИОС), то подключить в ее свою сетку, где будет «правильный» NTP сервер — вообще элементарно.
0
по идеи ntpd не должен дать изменить время на такую дельту, разве нет?
+2
Если на сырой машине у которой села батарейка в биосе стоит 0, то ntpd должен дать изменить время на 2013 год, такая же дельта.
0
Возможно. Однако, я пролистал ман и википедию перед тем, как писать первое сообщение, и ничего по этому поводу не нашел.
0
из мана по ntpd:
-g
Normally, ntpd exits with a message to the system log if the offset exceeds the panic threshold, which is 1000 s by default. This option allows the time to be set to any value without restriction; however, this can happen only once. If the threshold is exceeded after that, ntpd will exit with a message to the system log. This option can be used with the -q and -x options. See the tinker command for other options.
-g
Normally, ntpd exits with a message to the system log if the offset exceeds the panic threshold, which is 1000 s by default. This option allows the time to be set to any value without restriction; however, this can happen only once. If the threshold is exceeded after that, ntpd will exit with a message to the system log. This option can be used with the -q and -x options. See the tinker command for other options.
+2
Если есть доступ к биосу и время на ребуты, проще подключить флешку и слить инфу.
Или же запустить в single user mode
Или же запустить в single user mode
+3
НЛО прилетело и опубликовало эту надпись здесь
НЛО прилетело и опубликовало эту надпись здесь
Заставить sudo спрашивать пароль при каждом запуске?
для этого добавить в sudoers:
upd. Или timestamp_timeout не влияет на уязвимость?
для этого добавить в sudoers:
Defaults:ALL timestamp_timeout=0
upd. Или timestamp_timeout не влияет на уязвимость?
+3
Как насчет просто добавить в sudo дополнительную проверку? Аля if (systemtime() < 10000) forceAskPassword();
+4
но это ухудшение юзабилити
Как часто вы меняете системное время? Настолько часто, что лень вводить пароль? :)
+5
Элементарно — просто избавиться от костылей. Нужно различать состояния «пароль никогда не был введен» и «пароль был введен 1 января 1970 года».
+6
Раз sudo запоминает когда был введен пароль крайний раз, то сделать проверку не в будущем ли это.
-2
Странно как-то, что она вообще есть. По логике вещей, если был ребут, то пароль нужно спрашивать всегда, даже если таймаут еще не прошел. Как писали выше, так делается в дебиане и производных. Чтобы проверить, не прошел ли таймаут безпарольного доступа, можно опираться не на системное время от начала unix эпохи, а, например, на аптайм. Т.е. хранить где-нибудь запись о том, что пароль вводился на n-ной секунде аптайма, и спрашивать пароль, если время прошло.
0
Для этого нужен не uptime, a habrahabr.ru/post/192054/#comment_6673490.
0
Есть предназначенные именно для таких случаев
clock_gettime(CLOCK_MONOTONIC_RAW)
(>=linux-2.6.28, ниже CLOCK_MONOTONIC
) и mach_absolute_time()
(Mac OS X). В отличие от обычных, эти часы никогда не убывают и не имеют никакого отношения к мировому или местному времени: man clock_gettime:CLOCK_MONOTONIC
Часы, которые не могут быть настроены и показывают монотонный ход времени отсчитываемой с некой неопределённой начальной точки. Эти часы не подвержены скачкам системного времени (например, системный
администратор вручную изменил время), но на них влияет постепенная подгонка, выполняемая adjtime(3) и NTP.
CLOCK_MONOTONIC_RAW (начиная с Linux 2.6.28; есть только в Linux)
Похожи на CLOCK_MONOTONIC, но предоставляют прямой доступ к аппаратным часам, которые не подводятся NTP или постепенной подгонкой, выполняемой adjtime(3).
0
Опять «полгода назад»?
+1
10.8.4 — требует пароль для смены времени…
+2
Зарегистрируйтесь на Хабре, чтобы оставить комментарий
Получение root доступа в Mac OS X без пароля