Циферкой ошиблись! Как мелкий баг в софте поставил подножку всему миру

Если не бояться метафизических аналогий, программное обеспечение можно представить как длинный-длинный рычаг: крохотная команда способна свернуть горы. К сожалению, ровно с той же холодной эффективностью рычаг работает и против своего создателя. Как это бывает, хорошо иллюстрирует совсем свежая история, произошедшая с немцем Дэвидом Криселем. Уцепившись за случайную и вроде бы ерундовую ошибку в софте — да не ошибку даже, а так, недосмотр! — он вышел на потенциальные последствия, на фоне которых меркнет и пресловутый Stuxnet. И хоть производитель пообещал патч, точку ставить рано.

А началось всё 24 июля, когда Крисель — никому не известный докторант, увлечённый самоорганизующимися компьютерными системами, а на жизнь зарабатывающий в американском консалтинговом и проектном гиганте WorleyParsons — столкнулся со странным поведением многофункциональных устройств Xerox. Изучая копию квартирного плана, сделанную на МФУ серии WorkCentre, Дэвид или кто-то из его коллег обнаружили, что жилая площадь указана неверно. Поскольку на оригинале стояла правильная цифра, было очевидно, что ошибка закралась в документ во время копирования. Чтобы убедиться, что им не померещилось, они изучили другие ранее откопированные документы, а также провели опыты на нескольких ксероксовских МФУ различных модификаций — с тем же результатом: цифры как будто кто-то подменял. Вот для примера отрывок из произвольной бухгалтерской ведомости, где хорошо заметно, как это происходило.

Example-1

После первых опытов появилась возможность утверждать две вещи. Прежде всего, речь не идёт о случайном шуме, возникшем вследствие некачественного сканирования — знаете, как если бы пятёрка, снятая при плохом освещении, начала бы казаться шестёркой. Символы именно подменялись: обратите внимание, как характерно проработана нижняя часть восьмёрки в фотографии выше — это явно восьмёрка, а не шестёрка с дорисованной дужкой! Во-вторых, это была не ошибка OCR-движка. Иначе говоря, подмена случилась не в процессе распознавания текста — потому что Крисель отключил распознавание для чистоты эксперимента!

Тут ребята впервые схватились за голову. Не нужно быть дотошным немцем, чтобы понять почему: последствия такой «мелочи» могут оказаться катастрофическими! Xerox WorkCentre — очень популярная марка: это офисные трудяги ценой под тысячу долларов, работающие по всему миру. Мне не удалось отыскать статистики продаж, но, думаю, не будет преувеличением предположить, что проданы миллионы таких устройств. Через них проходят счета, строительные планы, рецепты на лекарства, проектная документация на всевозможное оборудование — короче, документы, ошибки в которых могут стоить компаниям существования, а пользователям жизни. И Дэвид (ох уж эти логичные немцы!) кажется до сих пор не оправился от удивления: как же так Xerox, уже какое-то время знавшая о существовании ошибки, не пошевелила и пальцем, чтобы её устранить?

Example-2

Сделав своё открытие, Крисель первым делом поставил в известность производителя. Неделю спустя, когда стало ясно, что техподдержка Xerox, как говорится, ни сном ни духом, и решением даже не пахнет, он — подталкиваемый страхом, что для кого-то ошибка может аукнуться большими проблемами — подробно изложил всё на личном сайте. К этому моменту Дэвид уже провёл настоящее исследование и выяснил кое-какие новые детали. Так, стало ясно, что ошибке подвержены как самые старые модели WorkCentre, так и новейшие. И что самое важное, удалось максимально сузить круг «подозреваемых». В ходе дискуссии с подключившимися к обсуждению энтузиастами, Крисель пришёл к выводу, что винить следует алгоритм компрессии графики JBIG2, применённый в ксероксовских машинах.

JBIG2 — простая и удивительно эффективная штука. Умеющий сжимать графические файлы как с потерями, так и без, он особенно хорош (да, собственно, и предназначен) для сканов текстовых документов. Приступая к сжатию очередного файла, JBIG2 создаёт своего рода картотеку самых часто встречающихся графических образов, то есть, скажем, запоминает, как выглядит буква «A», как выглядит буква «Б» и так далее. И каждый раз, встретив что-то похожее на «A», просто подставляет готовый образ из словаря. Такой подход не только позволяет сжимать сырые графические файлы в десятки раз, но и даёт поразительный эффект: с повышением качества исходного документа, размер сжатого файла уменьшается! К сожалению, как выяснилось теперь, это может выйти боком.

Скажем, шестёрка на скане среднего качества похожа на восьмёрку — и если видимая разница между ними не слишком велика, JBIG2 может её восьмёркой и заменить. А удастся, так и двойку заменит семёркой, и даже единичку поменяет на тройку.

Not-a-bug

Xerox упиралась до последнего. Первым делом, когда Крисель таки достучался до руководства компании, его попытались убедить, что он имеет дело не с багом, а с «фичей» (поистине канонический ответ, так что простите за картинку, не удержался). Лишь после двух недель препирательств, компания выпустила первый пресс-релиз, в котором предупредила пользователей об опасности и предложила обходной путь (выставить в свойствах компрессии «higher» вместо «normal», а также сканировать документы с качеством выше 200 DPI). Увы, Крисель немедленно воспроизвёл ошибку и при таких параметрах — и лишь 12 августа отпраздновал полную победу: Xerox признала баг и пообещала патч в ближайшем будущем.

Что ж, осталось всего ничего: достучаться до всех покупателей WorkCentre (а также WorkCentrePro, ColorQube, BookMark) и заставить их инсталлировать апдейт. Учитывая, что по некоторым данным треть компьютерного мира всё ещё работает под Windows XP, реально ли это?

Но аппараты Xerox — это даже не полбеды. JBIG2, стандартизованный тринадцать лет назад, запатентован (IBM, Mitsubishi), но условия лицензирования легки, так что алгоритм распространён чрезвычайно широко. Фактически он используется сегодня в тысячах программ и аппаратных продуктов по всему миру и всем платформам, от MS Windows до Linux. Простой поиск по термину «JBIG2» в Гугле даёт сотни тысяч упоминаний, по большей части в связи со спецификациями или девелоперскими аспектами, ибо конечного пользователя такие подробности не интересуют, да и не должны интересовать. При этом один из читателей Криселя уже сообщил о воспроизведении ошибки с подменой цифр на МФУ фирмы Brother (популярная в России марка). А кто проверит продукты Adobe, а нашей ABBYY (и там, и там JBIG2 применяется)?

Если даже Xerox столь безответственна, что зная о проблеме явно не первый год, лишь мельком помянула её в мануалах, но так и не потрудилась исправить, можно ли рассчитывать на понимание других производителей и разработчиков?








Интересные новости
Незавершенная версия Windows 7 работает лучше Vista
Программист открыл заблокированные возможности Windows 7
Quick Slide Show 2.32: создание flash-презентаций
Покупатели гоняются за старыми компьютерами ради Windows XP
Визуализатор V-Ray 1.5 Service Pack 2 с поддержкой 3ds Max 2009
Блок рекламы


Похожие новости

Блокировщик рекламы в Chrome заработает по всему миру с 9 июля
Интернет-пользователи усомнились в способностях модели Victoria’s Secret писать код. Она поставила их на место
Украинец, который программирует Falcon: Алексей Пахунов, старший инженер полетного ПО в SpaceX
Skype вышел из строя по всему миру
Open Source-проект Apache Spark поставил новый мировой рекорд в сортировке 100 терабайт данных
Спецслужбы США инфицировали тысячи компьютеров по всему миру, - The Washington Post
"Доктор Веб" информирует об обнаружении нового бэкдора для Windows
Почти половина пользователей компьютеров не видит проблемы в пиратском софте
Microsoft поставил "Газпрому" софт оптом
Microsoft мочит Apple за мелкий шрифт
Последние новости

Подгружаем последние новости