Читать «Журнал «Компьютерра» №43 от 22 ноября 2005 года» онлайн - страница 24

Журнал 615 Компьютерра

Жизнь насекомых

Вряд ли в далеких сороковых годах инженеры, доставшие из чрева компьютера Mark II виновницу замыкания - крохотную мошку, могли предвидеть, какая судьба уготована брошенному ими мимоходом словечку «bug». В наши дни, когда не в меру расплодившиеся компьютерные «насекомые» встречаются чуть ли не на каждом шагу, некоторые из них в буквальном смысле начинают влиять на вопросы жизни и смерти, а порой - даже на ход мировой истории. Чего стоит, к примеру, десятка крупнейших багов всех времен и народов, недавно составленная обозревателями журнала Wired.

1. Ошибка в программе расчета курса ракеты-носителя Mariner 1 (1962, первый американский аппарат, направленный к Венере), которая после схода с намеченной орбиты была уничтожена над Атлантическим океаном. Причиной инцидента послужила крошечная небрежность при переводе в машинный код формулы, наскоро набросанной на бумаге карандашом.

2. Коварный баг, затесавшийся в канадский пакет софта, управляющего контрольной системой газопровода. Возможно, обеспечил отечественный взнос в коллекцию: произошедшую якобы по его вине в 1982 году аварию участка Транссибирской газомагистрали сопровождал крупнейший из когда-либо зарегистрированных на земной поверхности неядерный взрыв. Увы, единого мнения по поводу причин катастрофы нет до сих пор: американские обозреватели записывают этот инцидент в актив бравых хакеров из ЦРУ, а кое-кто из отечественных экспертов начисто отрицает вмешательство «мировой закулисы», кивая на традиционное российское головотяпство (см.«КТ» #536).

3. Cбой в компьютерной системе настройки ускорителя Therac-25, используемого в радиационной терапии (1985-87). Оплошность при задании программных настроек привела к неверному размещению металлического защитного экрана, поглощающего электроны высоких энергий и генерирующего рентгеновское излучение (экран был подвижным, поскольку система предусматривала режим прямого облучения пациентов электронами низких энергий). В результате многие пациенты попали под высокоэнергетический электронный пучок ускорителя, получили удар электрическим током и сильные ожоги; по крайней мере пять человек умерло позже от лучевой болезни.

4. Ошибка переполнения буфера в берклиевской версии Unix при вызове функции gets(). Была использована при написании самого первого в истории компьютерного вируса - червя Морриса (1988). Просочившись в Сеть, всего за один день вирус-пионер отправил в нокаут примерно одну десятую часть тогдашнего Интернета (хотя червь Морриса и не содержал деструктивных функций, производительность пораженных им машин резко падала). С тех самых пор сквозь дыры, обнаруженные в фирменном софте, без помех шастают всевозможные черви и троянцы.

5. Дефект генератора ключей системы криптозащиты Kerberos - самый «долгоиграющий» баг, просуществовавший с 1988 по 1996 годы. Как выяснилось, грозный «Цербер» был лишен зубов: по программерскому недосмотру использованный в нем генератор случайных чисел оказался недостаточно «случайным». До сих пор неизвестно, удалось ли кому-нибудь из злоумышленников поставить этого «пса» себе на службу.