Выбрать главу

Наконец новые машины добрались и до школы, в которой учился Хью, однако к ним были прикреплены рукописные объявления: «Только 25-центовые монеты США». Когда Хью вместе со своими страдавшими от жажды друзьями добрался до одной из этих машин, ни у кого не оказалось американских четвертаков, и ребята начали экспериментировать. Один бросил в прорезь металлическую шайбу в надежде, что это каким-то волшебным образом поможет получить газировку. Шайба тут же выскочила обратно. Тогда они засунули в прорезь американский 10-центовик. Ничего. Багамский 25-центовик. Безрезультатно. Кто-то вспомнил, что в таких ситуациях иногда помогает соленая вода. Из этого тоже ничего не вышло, не считая того, что машина оказалась полностью мокрой. В течение получаса ребята запихивали в машину все, что только могли найти в карманах (в их защиту стоит сказать, что они к тому моменту еще не достигли пубертатного возраста). Ничего не получалось до тех пор, пока кто-то не бросил в прорезь багамскую монету в 10 центов.

Эта монета ничуть не похожа на 25-центовую американскую монету. Она обрезана по краям, что делает ее немного похожей на серебряный цветок. К немалому удивлению Хью и его друзей, на дисплее высветилась цифра «25» – машина ошибочно приняла монету за американский четвертак. Они пошарили по карманам и нашли еще три монетки в 10 центов. На дисплее последовательно высветились цифры «0,50», «0,75» и, наконец, «1,00» (на острове довольно высокие цены). Они нажали кнопку «Выбрать», и – ба-бам! – из ящика вылетела бутылка газировки. Это был один из самых примечательных моментов в детстве Хью.

Много лет спустя Хью узнал, что машина измеряла диаметр и вес каждого объекта, попадавшего в прорезь. По стечению обстоятельств, багамские 10-центовики имели почти тот же вес и диаметр, что и американские четвертаки. Не понимая механики машины, Хью и его друзья применили по сути метод случайных входных параметров в надежде на то, что это приведет к чему-то интересному. В этом и состоит суть фаззинга: применение входных параметров с тем или иным элементом случайности и последующим изучением неожиданных исходов.

Машина, торговавшая газировкой, нормально реагировала на обычное использование, однако отказала, столкнувшись с необычным сценарием. С этой проблемой сталкивалось множество систем, начиная от атомной станции в Фукусиме и заканчивая «Титаником». Люди, оценивающие подобные системы, обычно ограничены правилами логики, но реальный мир редко бывает столь же негибким. Говоря иными словами, системы немеют.

Перед каждым сиденьем самолета был небольшой экран, вмонтированный в спинку. Пассажиры во время рейса могли смотреть один из нескольких телевизионных каналов или играть в несколько простых игр. Одна из игр выглядела поразительно похожей на классическую стратегическую игру «Тетрис», в которой игроки пытаются перемещать падающие объекты так, чтобы они образовывали завершенные горизонтальные линии. Причем предлагалось указать количество элементов, которые можно было заранее увидеть в ходе игры: «ноль» означал полную непредсказуемость, а «четыре» позволяло планировать на несколько шагов вперед. Для того чтобы получить максимальное преимущество, Хью начал нажимать большую кнопку со знаком «+» на экране и постепенно дошел до максимального значения, равного четырем.

вернуться

26

Детальное техническое описание ошибки в машине по продаже напитков (и фаззинга в целом) приведено в статье, написанной Хью: Herbert H. Thompson, «Secure Software Needs Careful Testing – and Lots Of It», Information Week, November 28, 2009.

вернуться

27

Узнать дополнительные детали этой истории можно в статье: Hugh Thompson, «How to Crash an In-Flight Entertainment System», CSO Online, February 9, 2007. blogs.csoonline.com/how_to_crash_an_in_flight_entertainment_system.