Глава 17. Часы
17.1.4
Выполнение транзакций в режиме реального времени
Следующий пример основан на опыте работы Нильса с системами элек-
тронных платежей. Чтобы обслуживать платежи “на лету”, банку нужна си-
стема финансовых транзакций, работающая в режиме реального времени.
Чтобы обеспечить возможность аудита, подобная система должна соответ-
ствовать нескольким требованиям. Прежде всего, в системе должна суще-
ствовать строгая последовательность транзакций. Для каждых двух тран-
закций
A
и
B
очень важно знать, какая из них была выполнена первой,
поскольку результат одной из них может зависеть от того, была ли уже вы-
полнена другая. Самый простой способ зафиксировать последовательность
выполнения транзакций — это присвоить каждой из них временн´ую метку.
Данный подход, однако, сработает только в том случае, если у нас будут
надежные часы.
Ненадежные часы могут показать неправильное время. Если часы слу-
чайно станут показывать время в прошлом, ничего не произойдет: легко про-
верить, что текущее время больше временн´ой метки последней выполненной
транзакции. Настоящие проблемы возникнут тогда, когда часы станут по-
казывать время в будущем. Предположим, в течение получаса выполнения
транзакций часы показывали 2020 год. Мы не можем просто изменить вре-
менн ´
ые метки этих транзакций: изменять финансовые записи вручную не
допускается. Мы также не можем выполнять новые транзакции, временн ´
ые
метки которых будут находиться ранее 2020 года, так как это нарушило бы
порядок выполнения транзакций, который определяется именно временн´ой
меткой. Данную проблему, разумеется, можно решить, однако иметь надеж-
ные часы все же предпочтительнее.
17.2
Использование микросхемы датчика времени
Большинство настольных компьютеров содержат микросхему датчика
времени и маленькую батарею. Это самые настоящие маленькие цифровые
часы. Именно с их помощью компьютер определяет, сколько сейчас времени,
когда его включают после ночного “сна”. Так почему же просто не восполь-
зоваться временем этих часов?
Микросхема датчика времени вполне пригодна для обычной жизни, одна-
ко в системе безопасности к часам предъявляются более строгие требования.
Будучи одним из элементов системы безопасности, часы должны показывать
точное время, даже если злоумышленник попытается ими манипулировать.
Вторая причина связана с последствиями, к которым может привести приме-
нение испорченных часов. В обычной жизни часы, показывающие неправиль-
17.3. Виды угроз
323
ное время, могут раздражать, но не более. Если же часы являются частью си-
стемы безопасности, их сбой может привести к значительным повреждениям.
Датчики времени, встроенные в б´ольшую часть аппаратного обеспече-
ния, не обладают той степенью надежности и защищенности, которая нам
нужна. На протяжении последних 10 лет мы несколько раз сталкивались со
сбоями микросхемы датчика времени. Что еще хуже, эти сбои происходили
спонтанно, без всякого участия злоумышленников, пытающихся повредить
наши часы. Большинство сбоев подобного рода довольно просты. В старом
компьютере батарея может “сесть” и часы остановятся либо будут “сброше-
ны” на 1980 год. Кроме того, в один прекрасный день вы можете включить
компьютер и обнаружить, что часы сами собой перевелись на какой-то день
2028 года.
Помимо случайных ошибок датчиков времени, необходимо учитывать и
возможность осуществления активных атак. Кто-нибудь может попытаться
манипулировать часами в своих интересах. В зависимости от специфики ком-
пьютера, изменить показания датчика времени может быть проще или слож-
нее. В одних системах для изменения времени пользователю требуются при-
вилегии администратора, в других перевести часы может каждый.
17.3
Виды угроз
Существует несколько типов атак на систему с часами.
17.3.1
Перевод часов назад
Предположим, злоумышленнику удалось перевести часы на какое-нибудь
произвольное время в прошлом. Это может повлечь за собой самые разные
неприятности. Компьютер ошибочно предполагает, что находится в прошлом.
Возможно, когда-то злоумышленник был нанят на временную работу и имел
доступ к определенным данным, но сейчас срок действия этого доступа истек.
Компьютер, часы которого показывают неправильное время, может предо-
ставить злоумышленнику доступ к важным данным. Эта проблема возникает
всякий раз, когда у пользователя отбирают какие-нибудь права доступа. В за-
висимости от архитектуры остальных частей системы, перевод часов назад
может восстановить этот доступ.
Не менее интересным объектом атак являются автоматизированные зада-
чи. Компьютер, стоящий в отделе кадров, автоматически начисляет зарплату
в конце каждого месяца, используя прямое зачисление на депозит по пла-
тежной ведомости. Выполнение автоматизированных задач наподобие этой
инициирует программа, которая проверяет текущее время и просматривает
список назначенных задач. Постоянный перевод часов назад может привести
324
Глава 17. Часы
к повторяющемуся выполнению одних и тех же задач. Если выполнение за-
дачи должно начаться в полночь, злоумышленник переводит часы на 23:55
(11:55 p.m.) и ждет, пока система начнет выполнять задачу. По окончании
выполнения задачи злоумышленник снова переводит часы назад. Это может
повторяться до тех пор, пока запасы средств на банковском счете компании
не будут исчерпаны.
Еще одна проблема, касающаяся перевода часов назад, свойственна фи-
нансовым системам. В подобных системах очень важно знать правильное
время выполнения транзакции, поскольку расчеты процентов дают различ-
ные результаты в зависимости от того, когда была выполнена транзакция.
Если на вашей кредитной карточке находится большая сумма, почему бы не
убедить компьютер вашего банка в том, что осуществленный несколько ми-
нут назад электронный платеж на самом деле произошел на шесть месяцев
раньше? Это бы избавило вас от уплаты процентов за целых шесть месяцев.
17.3.2
Остановка часов
Каждый разработчик живет с инстинктивным пониманием того, что вре-
мя не стоит на месте. Это негласное предположение слишком очевидно даже
для того, чтобы фиксировать его в документации. Системы, которые созда-
ют разработчики, основаны на нормальном поведении времени. Но, если часы
останавливаются, время будто бы замирает. Многие процессы не будут завер-
шены, а многие системы начнут вести себя непредсказуемо.
Наиболее простые проблемы, вызываемые остановкой часов, — это ошиб-
ки наподобие неправильного указания времени в отчетах и журналах аудита.
Точное время транзакции может иметь большие финансовые последствия,
и отправка официального документа с неправильной датой и временем мо-
жет привести к серьезным осложнениям.
Другие проблемы могут касаться программ, отображающих изменение
данных в режиме реального времени. Предположим, разработчик графиче-
ского интерфейса использует простую систему для отображения текущего по-
ложения дел на дисплее биржевого брокера. Каждые 10 секунд содержимое
дисплея обновляется. Но не все отчеты о выполнении финансовых транзак-
ций поступают с одинаковой скоростью из-за различных задержек. Простое
отображение полученных данных может создать несогласованное представле-
ние о сложившейся финансовой ситуации. Возможно, об одной части транзак-
ции уже был подан отчет, а о другой еще нет. Поступление денежных средств
на банковский счет может отобразиться еще до фактического перемещения
акций. Бухгалтеры не любят получать отчеты, суммы в которых не сходятся.
Во избежание подобных проблем разработчик применяет хитрый прием.
Каждому отчету о выполнении финансовой транзакции присваивается вре-
17.3. Виды угроз
325
менн´ая метка, после чего он помещается в базу данных. Чтобы создать согла-
сованный отчет, разработчик выбирает конкретный момент времени и отоб-
ражает финансовую ситуацию, соответствующую тому моменту. Например,
если отчет от самой медленной системы поступает с задержкой в пять се-
кунд, разработчик отображает положение дел, которое существовало семь
секунд назад. Это немного увеличивает задержку, с которой данные посту-
пают на дисплей брокера, однако гарантирует их согласованность. Если же
часы неожиданно остановятся, на дисплее будет постоянно отображаться од-
на и та же ситуация: положение дел по состоянию на семь секунд назад от-
носительно времени, которое показывают испорченные часы. Катастрофа!
17.3.3
Перевод часов вперед
Перевод часов вперед заставляет компьютер думать, что он живет в буду-
щем. Это приводит к появлению множества простых атак типа “отказ в обслу-
живании”. Если часы будут переведены на четыре года вперед, все транзак-
ции с участием кредитных карточек будут неожиданно отклонены, так как
карточки окажутся недействительными. Вы также не сможете заказать авиа-
билеты через Internet, поскольку расписания полетов на четыре года вперед
еще не существует.
Самые ожесточенные баталии на аукционах eBay происходят в послед-
ние секунды торгов. Если вам удастся перевести часы eBay немного вперед,
вы сможете неожиданно выбить из игры массу потенциальных покупателей
и приобрести товар по более низкой цене.
Наш друг однажды столкнулся с подобной проблемой при разработке бил-
линговой системы. Из-за ошибки в программном обеспечении часы переско-
чили на 30 лет вперед. Как следствие, биллинговая система начала предъяв-
лять своим клиентам горы неоплаченных счетов за 30 лет. В данном случае
это не привело к прямым финансовым потерям, но если бы система автома-
тически снимала деньги с банковских счетов или кредитных карточек, ре-
зультат был бы весьма плачевным. Разумеется, это никак не способствовало
установлению хороших отношений с клиентами.
Существуют и прямые угрозы безопасности, связанные с переводом часов
вперед. Довольно часто определенные данные должны храниться в секрете до
заданного момента времени, по достижении которого их следует открыть ши-
рокой общественности. В автоматизированной системе перевод часов вперед
позволяет получить доступ к таким данным. Если в секрете хранится преду-
преждение о том, что прибыль компании может оказаться ниже ожидаемой,
кто-нибудь изрядно наживется на продаже акций, получив преждевременный
доступ к этим данным.
326
Достарыңызбен бөлісу: |