Забавные компьютерные ошибки

    Следующие забавные и интересные компьютерные (а по сути — человеческие) ошибки когда-то имели место и оставили свой след в мифологии информационных технологий.

    Паук смерти


    Эта уже старая (примерно 8 лет давности) история прекрасно иллюстрирует, как легко тотальное головотяпство может всё испортить. Джош Брекмэн работал в компании, которая получила крупный заказ на разработку системы управления содержимым для сайта государственной структуры. CMS была нужна для того, чтобы работники могли редактировать контент на сайте. У заказчика уже был крупный сайт, поэтому для переноса старого контента потребовалось какое-то время. Через несколько месяцев новый сайт был готов к запуску.

    Всё прошло успешно, и веб-сайт работал без каких-либо проблем. Но через шесть суток весь контент полностью исчез. Остались только стандартные сообщения о пустоте баз данных, призывающие добавить контент на только что созданный сайт. Результат расследования показал, что всё содержимое было удалено с одного IP-адреса.

    Злостным хакером оказался не кто-то из-за океана — из Китая, России, Индии или ещё какого-нибудь известного своими недружелюбными хакерами государства. Это был googlebot.com. Нет, компания Google не занимается и занималась взломом сайтов госаппарата для того, чтобы вот так глупо нахулиганить. Как выяснилось позже, участия человека не было в принципе. Вот, что произошло на самом деле:

    • Кнопки редактирования и удаления использовали метод GET, а не POST. Это означает, что URL кнопок «Удалить» и «Редактировать» содержали все необходимые идентификаторы для доступа к ним.
    • Эти URL каким-то образом попали на страницы сайта — наверное, один из сотрудников, наполнявших сайт, случайно их скопировал.
    • Проверка, залогинен ли пользователь, включала в себя чтение куки isLoggedOn. Если её значение установлено на false, то получить доступ к защищённому содержимому не удастся. Но бот-паук Google не использует куки, поэтому он легко обошёл эту «защиту».
    • Боту было всё равно до Javascript-кода, который должен был перенаправить пользователя на страницу авторизации. Его интересовали все ссылки на странице, включая ссылки на кнопках удаления.
    • Не было на сайте и нормального robots.txt. И бот перешёл по всем ссылкам кнопок «Удалить», сводя долгую работу контент-менеджеров на ноль.

    К счастью, Джошу удалось восстановить из бэкапов более раннюю версию сайта. Его руководству не было понятно, что не так в этой системе, где для проверки входа используются куки и Javascript-код перенаправления на страницу авторизации. Вместо исправления этого недочёта клиенту просто запретили копировать и вставлять контент через буфер обмена.

    Электронное письмо на 500 миль


    Эта история датируется 24 ноября 2002 года, когда она была впервые опубликована. На самом деле она произошла раньше, примерно в периоде 1994—1997 годов, просто её автор — Трей Харрис — предпочитал оставлять её в качестве особо интересного анекдота для общения на деловых и не очень встречах. Несколько моментов в ней изменены (к примеру, сначала он исправил проблему, а лишь позже начал расследование), но, как утверждает автор, она действительно случилась.

    Харрис обслуживал работу электронной почты кампуса университета Северной Каролины в Чапел-Хилл. Большая часть почтовых серверов кампуса обслуживалась Sendmail с конфигурационными файлами, которые были написаны Харрисом. Однажды системному администратору позвонил глава отдела статистики.

    — У нас возникли проблемы с отсылкой писем отдела.
    — Какие проблемы? — спросил я.
    — Мы не можем отослать электронное письмо дальше, чем на 500 миль, — ответил он.
    Я поперхнулся кофе.
    — Что?
    — Мы можем слать электронные письма только на 500 миль. Вообще, немного больше. Скажем, 520. Но не дальше.
    — Ну-у… Электронная почта так не работает, в общем-то, — ответил я, пытаясь сдержать замешательство в собственном голосе. Замешательство показывать начальнику отдела нельзя, пусть это и какой-то захудалый отдел статистики. — Что заставляет Вас думать, что письма не идут дальше 500 миль?
    — Это не то, что я думаю, — вспыльчиво начал он. — Видите ли, когда мы впервые заметили это несколько дней назад…
    — Вы ждали дни? — прервал я его со звоном в голосе. — И вы не могли слать имейлы всё это время?
    — Мы могли. Просто не дальше…
    — …чем на 500 миль, — закончил я. — Я понял. Но почему вы раньше не позвонили?
    — Ну, до этого момента у нас было недостаточно данных для уверенности в том, что происходит на самом деле, — ага. Это отдел статистики. — Так вот, я попросил одну из наших геостатистиков посмотреть, что…
    — Геостатистик…
    — …да, она сделала карту с радиусом, по который мы можем слать письма, и получилось чуть больше 500 миль. Однако внутри этого радиуса есть точки, до которых мы посылать письма не можем, а до некоторых можем, но не всегда. Дальше этого радиуса не получается.
    — Понятно, — ответил я и обхватил голову руками. — А когда это началось? Вы сказали, что несколько дней назад. Что-то с системой менялось в тот период?
    — Ну, приходил работник, пропатчил наш сервер и перезагрузил его. Но я ему уже звонил, и он сказал, что почтовик не трогал.
    — Ладно, сейчас гляну и перезвоню, — я положил трубку, с трудом пытаясь убедить себя, что это была не шутка. Нет, это было не первое апреля. Я пытался вспомнить, не должен ли кто-то меня разыграть.

    Харрис немедленно попробовал отослать несколько писем. Письма без проблем шли до Исследовательского треугольника Северной Каролины, Ричмонда, Атланты, Вашингтона и Принстона. Но до Мемфиса письмо не шло. Аналогичная ситуация случилась с серверами в Бостоне и Детройте. Харрис начал сужать поиск: Нью-Йорк (420 миль) работал, но Провиденс (580) — нет.

    Здесь ему начало казаться, что он теряет рассудок, но после провалившейся попытки отослать письмо другу в Северной Каролине, сетевой провайдер которого имел соединение в Сиэтле, стало ясно, что дело не в географии.

    Проверка конфигурационного файла sendmail.cf показала, что его не редактировали, это был тот же файл, который написал Харрис. Опции FAIL_MAIL_OVER_500_MILES там тоже не было и быть не могло. Администратор соединился с SMTP-портом по Telnet, и он радостно ответил баннером Sendmail SunOS.

    И лишь здесь начала обнаруживаться причина всех проблем. В то время Sun всё ещё включала Sendmail 5 в свою операционную систему, несмотря на хорошую степень работоспособности Sendmail 8. Харрис неплохо разбирался в этом вопросе, поэтому поставил новую версию и написал к ней конфигурационные файлы. Само собой разумеется, что они включали переменные только для Sendmail 8.

    Детали головоломки встали на своё место: тот работник пропатчил сервер и обновил версию SunOS, чем откатил версию Sendmail. Файл sendmail.cf остался без изменений, и по какой-то причине Sendmail 5 мог частично использовать эту новую версию конфигурационного файла. Новые, незнакомые настройки пропускались. Незаданные опции приравнивались нулю.

    Одной из этих настроек было значение таймаута для подключения к удалённому SMTP-серверу. После экспериментов на конкретно этом сервере стало ясно, что нулевой таймаут означает прерывание соединения через 3 миллисекунды. Вся сеть кампуса была построена полностью с помощью свичей, благодаря чему не было никаких задержек, кроме задержки скорости света.

    Харрис открыл консоль.

    $ units
    1311 units, 63 prefixes
    
    You have: 3 millilightseconds
    You want: miles
            * 558.84719
            / 0.0017893979

    «…500 миль. Вообще, немного больше.»

    Падение почтового сервера


    Очень часто корпоративные и публичные почтовые сервера забиваются копиями писем при неправильной настройке каких-то фильтров, автоответов или правил. Кэролайн Зилонка приводит типичный пример подобной ситуации. Она отослала письмо с темой “Fuck this shit”, и на него сработал языковой фильтр.

    Этот фильтр выслал типичное предупреждение о том, что использование подобной лексики недопустимо. Но письмо-ответ имело тему “Re: Fuck that shit”, поэтому уже на это письмо фильтр сработал опять, ответив письмом “Re: Re: Fuck that shit”. Цикл продолжился.

    На следующий день по прибытии на работу сотрудница обнаружила, что её почтовый ящик забит до отказа. Остальные работники отвечали на это письмо, что забивало до отказа и их ящики, поэтому почта лежала полностью. После этого происшествия политика в отношении ругательств в письмах была ослаблена.

    Целочисленное переполнение


    Традиционную в США и Канаде песенку «99 бутылок пива» в контексте этой ошибки дают в таком виде:

    0 бутылок пива на стене
    0 бутылок пива!
    Возьми одну, пусти по кругу
    4 294 967 295 бутылок пива на стене!

    Это шутка об ошибке integer overflow, целочисленном переполнении (или недополнении?). 32-битное беззнаковое целое число не может хранить отрицательные значения, и здесь не проверяется на корректность, когда мы вычитаем из него единицу. В результате получается 232−1, или 4 294 967 295.

    Эта ошибка распространена повсеместно, но наиболее известным её проявлением является поведение Махатма Ганди в самой первой игре легендарной серии «Цивилизация» (Civilization).

    В этих пошаговых стратегиях каждая из наций имеет свою персонификацию — одного из наиболее известных правителей. Целью игры является победа по различным параметрам — это может быть время, завоевание, политика, научные, культурные или какие-то иные показатели.

    Игрок может управлять целым государством. Геополитика, культура, наука, религия, индустрия, международные отношения, войны и другие аспекты игры имеют сложную математическую модель с множеством параметров.

    Реальный Ганди являлся автором философии ненасилия в борьбе за независимость Индии от Великобритании. И создатели игры решили отразить это: его параметр агрессии был равен 1 по шкале от 1 до 10, что значило минимальный уровень насилия с его стороны.

    Проблема проявлялась при принятии демократического строя, которое снижало уровень агрессии на 2 единицы. Переменная, отвечавшая за хранение этого параметра, была беззнаковой короткой целой, поэтому уровень агрессии возрастал до 255 из 10 возможных, что делало Индию максимально агрессивным государством. Ганди сходил с ума и немедленно развязывал вооружённый конфликт со всем остальным игровым миром.

    Конечно же, этот баг был исправлен в следующих играх серии. В последней, пятой «Цивилизации» его решили добавить, но в виде «пасхального яйца»: Ганди действительно ведёт себя мирно, но он куда более всех остальных лидеров (их значение находится в районе 4—6, максимум 8) склонен использовать ядерное вооружение (значение 12). После достижения атомной эры Индия легко может сделать несколько ядерных ударов.
    Ads
    AdBlock has stolen the banner, but banners are not teeth — they will be back

    More

    Comments 34

      +34
      Тут очень сложно не пошутить про политику, но видимо при принятии демократии это работает и в реальном мире :)
        +17
        <irony>Осмелюсь даже предположить, что "это не баг - это фича"</irony>
          +1
          Обратите внимание на позиции России и арабов! Даже через такие игры детей учат кого боятся надо… :(
          +4
          А ещё вспоминается баг с переполнением в первой игре серии X-COM (позже пофиксили… вроде). Могу путать уже цифры, но там навыки и параметры вроде качались от 1 до 255. Потом переполнялись до 0… и в результате, например, боец не мог ходить по карте, т.к. имел 0 очков действия. Зато мог без ограничений стрелять, т.к. на выстрел тратился определённый процент от числа очков хода, а раз очков 0, то и требование очков для выстрела — тоже 0. Правда, перезарядить пушку было нельзя — там нужно было определённое число очков, а не процент.
            +3
            я с этой багой сталкивался, когда сделал программку для взлома сохранений. она давала кучу денег, добавляла нужное количество элириума на базы и ставила всем солдатам характеристики по 200
            получались такие себе терминаторы, способные забить шоковой дубинкой кибердиск, но по мере прокачки их характеристики превышали 255 и они становились сильно беспомощными
              +7
              Перегорели. С солдатами такое бывает.
              +2
              да было такое. Был неприятный сюрприз.
              +9
              Еще на ZX-Spectrum в Hero Quest наблюдал баг — если величина жизни NPC становилась очень маленькой, то при удачном мощном ударе врага мы получали непробиваемого терминатора, с которым дальнейшее прохождение уровня, наполненного орками и троллями, напоминало избиение младенцев.

              • UFO just landed and posted this here
                  +12
                  Первые 4 часа было интересно, потом не очень.
                    +1
                    Мопед не мой, я только разместил.
                      +2
                      Я к тому, что надо было указать где именно в этом видео можно увидеть описанный баг «удачного мощного удара врага.»
                        –1
                        Я привел видео для того, чтобы дать общую картину, чтобы у читающего комментарий человека было представление о какой игре идет речь. События были давно и выросло уже много людей, которые ZX-Spectrum в живую не видели. Почему вы посчитали, что видео обязательно демонстрирует описанный баг мне не понятно.
                          +3
                          Комментарий перед видео говорит о баге. Пары слов объяснения явно не хватает.
                  –3
                  Во второй истории кажется слегка приврали, так как скорость распространения сигнала в проводнике ниже чем скорость света. Даже если допустить что магистрали сплошь из оптоволокна, локалка и ДЦ серверов скорее всего вполне себе на меди.
                    +2
                    На самом деле в оптоволокне сигнал идёт медленнее, чем по меди, по крайней мере так говорит автор истории в отдельном FAQ, созданном специально для этих вопросов.
                      +1
                      электрический сигнал распространяется со скоростью света в вакууме. Это максимальная возможная скорость. Скорость излучения в веществе ниже. Недавно была статья о скорости света в веществе всего несколько сантиметров в секунду.
                      Сходу не нашлоь, может на хабре видел. По теории нашлось это geektimes.ru/post/237071/
                      Нам удалось запустить фотон внутрь специального кристалла, который его поглотил. Сделав это, кристалл вибрирует специальным образом, который кодирует информацию о фотоне (цвет и все такое). Спустя некоторое время, кристалл испускает новый фотон, с теми же свойствами, что и ранее поглощенный, потому что вибрации «хранили» эти свойства.

                      Нигде в это время мы не останавливали фотон. Грубо говоря, мы его убили, а потом клонировали.

                      Это важное открытие, например, позволяет нам использовать оптику в ИТ. Мы здорово умеем передавать информацию при помощи света, но нельзя хранить такую информацию, если только не потратить время на ее преобразование в электричество.
                        +1
                        С оптикой дело немного в другом — там сигнал идет не по прямой, а (грубо говоря) немного зигзагом, «отскакивая» от стенок.
                          +1
                          Лучи не отражаются, а преломляются, за исключением некоторых случаев — xakep.ru/60373/

                          Достоинством одномодовых световодов являются малая дисперсия (искажение сигналов), большая информационно-пропускная способность и большая дальность передачи. Одномодовые системы являются наиболее перспективным направлением развития техники передачи ин формации.
                          В многомодовых световодах импульс на приеме уширяется и искажается. Дисперсия в многомодовых световодах существенно ограничивает полосу передаваемых частот и дальность передачи.


                          Лучи теперь изгибаются в направлении градиента показателя преломления (вместо преломления либо полного отражения, как в случае волокна со ступенчатым профилем).


                          СПЕЦИАЛЬНЫЕ ВОЛОКОННЫЕ СВЕТОВОДЫ
                          pstu.ru/files/file/FPMM/of/shumkova_specialnye_volokonnye_svetovody.pdf
                          Рассмотрены физические и математические основы оптики, а также принципы передачи сигнала в волоконном световоде. Исследованы варианты конструкции, технологии, производства и проектирования специальных типов оптических волокон, таких как активные, анизотропные, микроструктурированные световоды, а также световоды для волоконных лазеров.
                          Предназначено для студентов технических вузов, соответствует образовательным программам по направлению подготовки «Фотоника и оптоинформатика» (профиль «Волоконная оптика»). Может быть использовано аспирантами вузов соответствующих специальностей, а также специалистами, работающими
                          в области лазерной физики, фотоники, волоконной оптики и оптоэлектронного приборостроения.
                            +1
                            Насколько я помню из квантовой оптики, там почти всё сводится к
                            Нигде в это время мы не останавливали фотон. Грубо говоря, мы его убили, а потом клонировали.

                            Т.е. я хочу сказать, что фотон, попадая на, скажем, отражающую поверхность, поглощается ионом кристаллической решетки. Этот ион соответствующим образом возбуждается за счет поглощенной энергии. Долго в таком состоянии он находится не может, и он скидывает этот энергетический избыток вовне в виде фотона.
                            В зависимости от свойств материала — мы наблюдаем отражение или, скажем, нагрев материала из-за поглощения (энергетический избыток идет в тепло (повышение скорости движения частиц)).
                            Для отражающей поверхности — у фотона почти все характеристики сохраняются за исключением направления его движения. При этом в зависимости от угла падения на границу преломления/отражения у потока фотонов могут меняться: коэффициенты отражения/преломления/поглощения (в сумме они равны 1, ибо закон сохранения энергии), изменение поляризации у отраженного пучка света и т.п.

                            Таким образом, надо не забывать смотреть на причуды света с точки зрения не только как на световой волны, но и как частицы…
                        0
                        Если я правильно помню, в меди скорость распространения сигнала где-то 0.7 от скорости света.
                      +21
                      А в русском языке есть такое…

                      «Ноль программистов ругал сердитый шеф,
                      Потом уволил одного — и стало их FF».
                        +2
                        На лекции по вышке сидят 8 учеников.
                        Вдруг 16 из них встают и уходят.

                        Препод заявляет: Ну вот, сейчас ещё 8 придёт, и вообще никого не останется!
                        +1
                        «Кнопки редактирования и удаления использовали метод GET, а не POST»

                        3 дня как переехали на гиктаймс, а Хабр уже не торт. Какая разница? Одного факта, что страница вообще грузилась незалогиненоному пользователю достаточно для проблем.
                          +3
                          googlebot не ходит по post
                            +10
                            Он не ходит, другой сходит.
                            +4
                            Да ладно вам, не торт.
                            Был бы не торт, был бы пост в стиле ализара «Как Google удаляет сайты на проприетарных CMS».
                            • UFO just landed and posted this here
                                +1
                                Если вы про ASP, то видимо достаточно послать заголовок с «HTTP_AUTH_USER». Впрочем, виндовую авторизацию так не обойти.
                              +1
                              Про письмо на 500 миль уже когда-то читал на Хабре, а не так давно пытался загуглить эту историю, не получалось, так как не помнил упоминавшиеся детали и расстояние. Большое спасибо автору!
                                +1
                                Мне больше нравятся истории программных ошибок у военных. Например, как самолеты попереворачивались, пролетая экватор.
                                Чтобы никого не рекламировать, просто гуглите «Истории о сбоях программного обеспечения военной техники»

                                Там, все-таки, обычно отлаживают (ну или должны хотя бы) гораздо качественные, но и там кучу огрехов.
                                  +1
                                  Интересующимся в помощь книга «Наука отладки», а тем, кому хочется только фактов — «Глава 2. Изучение знаменитых (и не очень знаменитых) ошибок»: citforum.ru/programming/digest/scofdebug/
                                  +1
                                  Первая история была про какое-то СМИ и там был бекдор для удаления, служебная ссылка. И ее кто-то отправил в письме на gmail и google забрал.

                                Only users with full accounts can post comments. Log in, please.