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

Технологии
автор: Евгений Золотов  15 августа 2013

Если не бояться метафизических аналогий, программное обеспечение можно представить как длинный-длинный рычаг: крохотная команда способна свернуть горы. К сожалению, ровно с той же холодной эффективностью рычаг работает и против своего создателя. Как это бывает, хорошо иллюстрирует совсем свежая история, произошедшая с немцем Дэвидом Криселем. Уцепившись за случайную и вроде бы ерундовую ошибку в софте (да не ошибку даже, а так, недосмотр!), он вышел на потенциальные последствия, на фоне которых меркнет и пресловутый 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 столь безответственна, что, зная о проблеме явно не первый год, лишь мельком помянула её в мануалах, но так и не потрудилась исправить, можно ли рассчитывать на понимание других производителей и разработчиков?

Поделиться
Поделиться
Tweet
Google
 
Читайте также
Вэлкам ту Раша, Эдвард, или Почему в списке Сноудена не хватает пары имён
Вэлкам ту Раша, Эдвард, или Почему в списке Сноудена не хватает пары имён
Электронный след в катастрофе Asiana 214: виноват человек — или машина?
Электронный след в катастрофе Asiana 214: виноват человек — или машина?
Чёрный день для «Андроида»: ошибка в системе ставит под удар один миллиард устройств
Чёрный день для «Андроида»: ошибка в системе ставит под удар один миллиард устройств
  • АндрейКа

    >последствия такой «мелочи» могут оказаться катастрофическими!
    Да ну, в бóльшую же сторону, не страшно.

    • Anthony Anikos

      в деньгах да, если это не убытки правда :))

      This has been demonstrated on construction blueprints and some tables of numbers; the potential impact of such substitution errors in documents such as medical prescriptions was briefly mentioned

      википедия, JBIg2

    • Stanislav Shevchuk

      Особенно когда вам в больнице инструкцию с дозировкой лекарства скопируют

      • Dmitriy_Sergeevich

        Ха-ха! Щас! Таки хай-тек далеко не до всех больниц дошёл. А если и дошел ,то он безвреден и бесполезен.

  • Vladimir Zamansky

    Встает вопрос — почему последствий пока не было? Ответ — эти документы ничего не значат, мы в Матрице.

    • Sergiy Skynin

      Последствия — были.
      Люди, видя несоответствие — идут в соответствующие службы и с первичными документами, вместе с клерком — пересчитывают и перепроверяют.
      Или — судятся с конторой которая не так посчитала.

  • Sergiy Skynin

    Отличный пример общего изъяна инструмента мышления — абстрагирования.
    Картинка на выходе отличная! Но не соответствует оригиналу, и даже не содержит намека на оригинал!

    • пМВ

      Это к вопросу о синтезе тестов — зияющая дыра налицо!!!

      • Sergiy Skynin

        Думается что тестирование в данном случае не выявит все возможные случаи, когда мы набор точек заменяем на объект более высокого уровня, по схожести.
        В OCR для валидации выбора прилагается словарь буков и слов.
        Но в данном случае данные то — хаотичны(платежки за услуги). Никакой системности они не имеют. Не имеют они и семантической связи между собой.

        То есть проблема неразрешима по определению — «сжатие с потерями».
        Но как в инженерии принято — а и не надо идеального, достаточно — «в границах предусмотренного допуска». Без фанатизма, «вечная игла для примуса» не нужна.

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

  • Саша

    Восстание машин. Начало.

    • пМВ

      Скорее раздолбайство людей…

  • Anatolij Petrakovskij

    Но для алгоритма это действительно не баг, а фича.

    Свойство алгоритма: при некоторых условиях он будет портить документы. Как, например, протокол UDP будет терять пакеты.

    Не устраивает? Использовать другие алгоритмы. Они плохо с сжимают? Поставьте больше памяти. За деньги.

    • Trept

      Классика: «к пуговицам претензии есть?».

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

      • Anatolij Petrakovskij

        Вы заголовок и первый абзац читали? Я про то, что они не соответствуют случившемуся. Не было ошибки в циферке и маленькой команде. Да и бага не было.

        То что устройство не оправдывает ожиданий, ну да… Но в компьютерной технике и не такое может случиться.

  • Anthony Anikos

    Однако это просто ужас! JBIG2 используется и в DjVU если я прав. И если это не баг, а фича — как можно тогда доверять JBIG2 и возможно ли вообще переделать алгоритм? Что даст патч???? Патч заменит весь JBIG2 на JBIG3?

  • Rigatt

    Кто-нибудь пробовал повторить эксперимент? А то я никак не могу вызвать этот баг :( Может, скинет кто скан документа, его вызывающий?
    У нас на работе штук пятьдесят Xerox WorkCentre 3045 стоят.

    • Sentinel

      Просто напечатайте лист цифири седьмым ариалом и скормите Воркцентру. Я так понял, Крисель именно с этого генеральную проверку начинал.
      А вообще у него на сайте всё подробно.

  • Dimon

    Сдается мне, что всё это заказуха… Много лет работаю на самых разных Xerox WC — ничего подобного не было. В статье есть подмена понятий: копирование с ошибкой и сканирование. При копировании никакого jbig2 нет. Только при сканировании. Только что проверил копирование на приведенных моделях WC и еще на 3-х. Никаких замен или нечитаемости (6 размер шрифта)… Всё это тянет на шутку к 1 апреля…

    • Школьник

      в оригинале речь шла о сканировании, а не копировании.

  • Максим Новгородцев

    Да. кто объяснит, для чего при КОПИРОВАНИИ такой эффективный алгоритм с глубоким анализом текста? Только для экономии памяти чтоль? За счет вычислительных ресурсов? Экономия-то получается на спичках, при нынешней цене на память.

  • Cerafim1

    у мну дома стоял х420 пользовался мало по малу 6 лет им, но стояло только отксерячить полис или паспорт, сразу серия и номер не соответствовали… только рукопись делал нормально

  • Я тут смотрю в комментах многие цепляются за «фичу». Типа бывает, нормально. Не суть важно, но если им в бухгалтерии при расчете зарплаты поменяют 7 на 2…. С ноликами после них, или налог не 6 а 8 тоже с ноликами… Думаю сразу скажут баг….
    Вообще проблема в том, что это реально массовые устройства, и если пока еще эти баги остаются мелочью, то не значит, что они останутся мелочью и в дальнейшем. Порой действительно одна цифра может стоить хороших денег или жизней

  • Сергей Кропачев

    Так вот почему наши ракеты падают и подлодки взрываются… )))

Хостинг "ИТ-ГРАД"
© ООО "Компьютерра-Онлайн", 1997-2016
При цитировании и использовании любых материалов ссылка на "Компьютерру" обязательна.
«Партнер Рамблера» Почта защищена сервером "СПАМОРЕЗ" Хостинг "Fornex"