понедельник, 21 апреля 2014 г.

Скрытая и неустранимая угроза (размышления на тему Heartbleed)

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

И вот все это натолкнуло меня на размышления на тему возможности включения недекларируемых возможностей (закладок) в программный код.  В этой ситуации история с Heartbleed очень показательна, уязвимость появилась в одном из обновлений пакета OpenSSL несколько лет назад и с тех пор благополучно ждала своего часа чтобы быть открытой и наделать много шума.  Кроме того, появляется информация что агентство NSA якобы знало про эту уязвимость (чему я склонен верить) и использовало ее в своих интересах (что тоже вполне логично).

Теперь давайте посмотрим с другой стороны, со стороны разработчика коммерческого программного обеспечения (в т.ч. и средств защиты информации).  Практически никто сейчас не разрабатывает программное обеспечение с нуля в полном вакууме. В любом случае используются какие-то IDE, компиляторы, программные библиотеки, готовые компоненты, базы данных наконец.  Возьмите любую более-менее сложную программную систему (или средство защиты) и вы увидите что в сердце него обязательно есть какая-то база данных (MS SQL, MySQL, Oracle и пр.).    Помните этот вирус, который несколько лет назад наделал много шума среди разработчиков ?  Вредонос заражал компилятор и в итоге все созданные с помощью этого компилятора программы становились носителями вируса. Неплохо ?  Как знать, может быть это были полевые испытания ?

Таким образом мы имеем то, что практически в любой программный код можно встроить скрытую уязвимость (она же закладка) через сторонние компоненты, используемые при его разработке и/или функционировании.   Можно ли от этого защититься ?   Давайте рассмотрим типовые предложения:

1) Использовать только опенсорс ?  Нет, не поможет. Хотя у нас вот уже сколько всего государственного все порываются создать на базе опенсорса (и отечественную ОС и вот теперь вроде как защищенные мобильники для госслужащих  и проч.)  Да только будет ли это действительно безопасно ? История с Heartbleed очень четко показала, что нет. Современные программные компоненты содержат такое количество кода, что никто либо не в состоянии его проанализировать, либо просто не готов тратить на это время / ресурсы и деньги наконец. 

2) Сертифицировать продукт на отсутствие НДВ ?  Тоже не поможет. Потому что сертификацию эту проводят тоже люди. Смогут они найти скрытую уязвимость (или несколько уязвимостей) в программном коде ?  Да бьюсь об заклад что скорее всего нет.  А если к этому еще прибавить то, как это в принципе делается у нас, то тут вообще без шансов. 

Единственный выход (по крайней мере, как мне видится) это создание всех компонентов используемых при разработке и функционировании ПО с нуля.  Но разве могут это позволить коммерческие компании ?  Однозначно нет.  Более того большинству частных потребителей (их клиентам) это и не нужно.

Я считаю что подобными разработками могут и должны заниматься специально созданные компании (ФГУПы или что-то подобное), причем их разработки должны быть предназначены в первую очередь для военных целей (включая вопросы защиты гостайны и проч.). Такие компании за счет финансирования государства смогут себе позволить вести разработки с нуля. Более того они могли бы привлекать к этим разработкам существующие в России ВУЗы, обучающие по направлению информационной безопасности, прикладной математики, программирования. Т.е получится что-то вроде военных заводов, если проводить аналогию с разработкой оружия, только по производству программного обеспечения. При этом результат их разработки можно будет продавать и коммерческим структурам, которые посчитают для себя угрозу внедрения скрытых уязвимостей / закладок недопустимой и требующей минимизации.  Вот куда лучше потратить деньги, а не на переделку под защиту гостайны очередной модификации Android или Linux. Но это если конечно мы хотим добиться реального результата, а не просто освоить бюджет. 

Есть у нас подобные компании?   Я не слышал, возможно и есть, но в лучшем случае они разрабатывают средства защиты каналов связи. Но ведь есть еще антивирусы, средства контроля доступа, системы фильтрации трафика и проч. А надеяться, что коммерческая компания разработает программную систему или средство защиты для широкого рынка, а потом за счет сертификации полностью исключит все скрытые уязвимости, просто наивно (хотя именно так сейчас это и "работает").

6 комментариев:

  1. Кроме санкций и heartbleed есть еще и 3 история, эффект от которой перекрывает предыдущие. Один западный вендор из-за своей непомерной жадности оставил с голым задом 300 миллионов компьютеров, которые с 8 апреля до конца времен теперь беззащиты.
    Нужно сказать, что подобная история с опенсорсом уж точно исключена.

    По поводу закладок, человека, который внес злосчастный коммит, сразу вычислили (ибо опенсорсные репозитории это умеют). Им оказался студент Robin Seggelmann. Связей с АНБ не обнаружено.

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

    ОтветитьУдалить
  2. Разработка с нуля также не выход, поскольку вопрос доверия остается открытым.

    ОтветитьУдалить
  3. Саша, такое ощущение, что ты живешь в безвоздушном пространстве - как удается то, поделись :)? Все уже месяца 3-4 это обсуждают где только можно, а тебя вдруг опс, озарило прям :)). Тактика давно ясна еще с дела Сноудена: "Проверяй чужое, создавая свое". Но для этого нужна гос программа лет так на 10.

    ОтветитьУдалить
  4. Создать безопасную государственную операционную систему на которой будет свой браузер, word и 1С невозможно в ближайшие 20 лет в текущих условиях, а если у нас такие квалифицированные коллективы имеются, то проект будет совершенно убыточным.
    Считаю что коммерческие организации продолжат использовать зарекомендовавшие себя на практике системы безопасности и выстраивать эшелонированную защиту, а госы - с ними все будет по-прежнему

    ОтветитьУдалить
  5. > По поводу закладок, человека, который внес злосчастный коммит, сразу вычислили (ибо опенсорсные репозитории это умеют). Им оказался студент Robin Seggelmann. Связей с АНБ не обнаружено.

    Вы серьезно в это верить что какие то разработчики смогут обнаружить факт вербовки? Они в коде своем разобраться не могут, а вы про вербовку и агентов рассказываете нам.

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

    ОтветитьУдалить
  6. > Один западный вендор из-за своей непомерной жадности оставил с голым задом 300 миллионов компьютеров, которые с 8 апреля до конца времен теперь беззащиты. Нужно сказать, что подобная история с опенсорсом уж точно исключена.

    Затраты на поддержку вкладываются в стоимость продукта. Стандартный срок поддержки 10 лет. А "жадный" вендор почему поддерживает продукт уже 12 лет. Несет финансовые потери чтобы слоупоки всего мира могли поливать его грязью как это делаете вы сейчас.

    Рассказы что с опенсорсом такой ситуации не будет это враньё. Возьмите Redhat. RHEL ведь опенсорс, но почему то срок поддержки ограничен и не вечен? Вот сюрприз то!

    https://access.redhat.com/site/support/policy/updates/errata/

    ОтветитьУдалить