Как стать автором
Обновить

Комментарии 49

Астрологи объявили неделю эксплойтов Apple.
Продажи конкурентов увеличились вдвое.
Это… это прекрасно, спасибо.
Баг работает на всех версиях операционок Mac OS X, где изменение настроек системных часов не требует ввода пароля. Подобная проблема существует и в ОС Linux. Радует то, что такой метод получения прав доступа к файлам имеет достаточно серьезные ограничения. Злоумышленник должен иметь физический или удаленный доступ к системе с правами администратора, а также хотя бы раз запустить команду sudo ранее. © iguides.ru
НЛО прилетело и опубликовало эту надпись здесь
Как можно быть уверенным, если не проверили?
НЛО прилетело и опубликовало эту надпись здесь
Ерунду говорите.
НЛО прилетело и опубликовало эту надпись здесь
подтверждаю, в 10.9 не работает :(
Ну вот так бы сразу. =)
А можно подробностей то=), причем тут часы?
Если установить часы компьютера на 1 января 1970 года, то Unix в этом случае сбрасывает счетчик и отсчет времени начинается с нуля. См. UNIX-время
Именно благодаря этой особенности, защиту прав доступа к файлам можно обойти.
sudo позволяет опускать ввод пароля, если он был недавно введен

вероятно, если sudo никогда не использовался (или есть другие причины?), то время его последнего использования — 0 по unix time. если установить часы в это время (как раз 1 января 1970), то sudo опустит ввод пароля и сразу даст права.

в линуксах такой проблемы нету, т.к. в них нельзя изменить дату без административных прав
А если поменять дату в CMOS? Надо попробовать.
Во всяких дебианах есть сервис, который не позволяет sudo запоминать пароли между ребутами. Как в остальных — не знаю, правда :)
Тоесть это надо запустить sudo в туже секунду что и изменение времени в ноль?
Необязательно в ту же секунду. Таймаут обычно стоит в 10-15 минут.
Ага, я и забыл совсем, про таймаут.
На Metasploit советуют выполнить «sudo -k» — это «убивает сессию» sudo. Видимо, это реализуется именно путём замены времени последнего использования на 0.
Если прислать нулевое время по NTP, то можно взломать и Linux?
Уже «взламывали», вроде, сбросом времени в биосе. Не могу найти ссылок
С БИОСОМ все же ограничений довольного много. На него еще и пароль можно сделать. Если же есть физ. доступ к машине (как это нужно в случае с БИОС), то подключить в ее свою сетку, где будет «правильный» NTP сервер — вообще элементарно.
по идеи ntpd не должен дать изменить время на такую дельту, разве нет?
Если на сырой машине у которой села батарейка в биосе стоит 0, то ntpd должен дать изменить время на 2013 год, такая же дельта.
Но с обратным знаком.
ntpd не поменяет при этом время (см. мой коммент ниже), а вот ntpdate — за милую душу. вопрос в том, что именно используется в конкретной ОС
Возможно. Однако, я пролистал ман и википедию перед тем, как писать первое сообщение, и ничего по этому поводу не нашел.
из мана по 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.
Если есть доступ к биосу и время на ребуты, проще подключить флешку и слить инфу.
Или же запустить в single user mode
НЛО прилетело и опубликовало эту надпись здесь
НЛО прилетело и опубликовало эту надпись здесь
Аха, а потом как путешествия во времени изобретут все будут плеваться и придумывать костыли, как бы обходить это ограничение. Нет уж, не надо!
Перенесся в 01.01.1970 и поделил на 0
Заставить sudo спрашивать пароль при каждом запуске?
для этого добавить в sudoers:
Defaults:ALL timestamp_timeout=0

upd. Или timestamp_timeout не влияет на уязвимость?
НЛО прилетело и опубликовало эту надпись здесь
Не хотят — пускай отключают. Их безопасность — их проблемы.
«sudo -i» можно использовать, если несколько административных задач надо выполнить.
Как насчет просто добавить в sudo дополнительную проверку? Аля if (systemtime() < 10000) forceAskPassword();
но это ухудшение юзабилити

Как часто вы меняете системное время? Настолько часто, что лень вводить пароль? :)
Элементарно — просто избавиться от костылей. Нужно различать состояния «пароль никогда не был введен» и «пароль был введен 1 января 1970 года».
Раз sudo запоминает когда был введен пароль крайний раз, то сделать проверку не в будущем ли это.
Странно как-то, что она вообще есть. По логике вещей, если был ребут, то пароль нужно спрашивать всегда, даже если таймаут еще не прошел. Как писали выше, так делается в дебиане и производных. Чтобы проверить, не прошел ли таймаут безпарольного доступа, можно опираться не на системное время от начала unix эпохи, а, например, на аптайм. Т.е. хранить где-нибудь запись о том, что пароль вводился на n-ной секунде аптайма, и спрашивать пароль, если время прошло.
Есть предназначенные именно для таких случаев 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).
Опять «полгода назад»?
10.8.4 — требует пароль для смены времени…
это если у Вас замочек стоит внизу, тогда спрашивает. А если разлочить замок — спрашивать больше не будет.
спасибо — поставил замочек )
Зарегистрируйтесь на Хабре, чтобы оставить комментарий

Публикации