Pull to refresh

Comments 88

Да по-моему было очевидно, что они не просто о ней знали — они ее и добавили.
Особенно удобно, что её можно использовать для взлома не только серверов, но и клиентов, подключенных к вредоносным серверам.
Думаю, у такого проекта как OpenSSL давно должны быть свои люди из спецслужб, иначе это был бы полный не зачет их работы.
Поставь себя на место спецслужбы с ее задачами и ее возможностями и ответ будет очевиден.
Ну есть такие вещи — очевидные. Типа приходишь домой, а там жена и собака и в углу кто-то написал. Конечно можно по-мужски поговорить с женой! )) Но вообще ответ очевиден.
то не очевиден, но это уже другая история.
Т.е. Вы хотите сказать, что АНБ — единственная заинтересованная в этом сила на этой планете?
Бритва оккама.
Впрочем против нее тут сражается бритва хэнлона.
«Фехтование на бритвах». Неплохое название процесса обсуждения практически любого критического бага в OpenSource проекте.
А может это любовник собаки испугался:)
— «на протяжении как минимум двух последних лет”

Уязвимости 2 года.
Если данную уязвимость пропустили на code review, то нет уверености в отсутствии подобных багов в openSSL или в том, что не появятся новые.
Уверенности нет никогда, всегда есть вероятность пропустить что-то. Но число участников review вероятно следовало бы расширить.
Если раньше достаточно было 2 агентов (коммитера и ревьюера), то в таком случае придется вводить новых ,)
Проблема не в ревью, проблема архитектурная. Не надо парсить протоколы руками. В любой современной какой-нибудь яве появление такой баги имеет почти нулевую вероятность — входной поток сервера читается и парсится штатными, сто раз проверенными средствами. Нет никаких OPENSSL_malloc, нет никаких, блин, int buffer_size.

Есть же ASN.1, есть средства их сериализации/десериализации всех возможных протоколов под все возможные языки и платформы. Вот как им еще не надоело это всё руками писать?
Проблема в том, что программистам OpenSSL было лень нормальный configure скрипт написать. В итоге архитектура и тип процессора не учитывался и они сделали malloc конкретно под несколько древних платформ на все платформы.
C Java и другими сложными вирт машинами проблема в возможных-таки закладках. В прочем закладки могут быть и в gcc/clang
С Java и сложными виртуальными машинами проблема в том, что в них потенциально уязвимого кода столько, что уже неважно сколько кода в, собственно, самом приложении.

А то, что OpenSSL написан ужасно — отдельная проблема, это от используемого языка не зависит. The determined Real Programmer can write FORTRAN programs in any language.
В любой современной какой-нибудь яве появление такой баги имеет почти нулевую вероятность — входной поток сервера читается и парсится штатными, сто раз проверенными средствами.
Точно! Такими супер-турбо-ультра-проверенными средствами, что ява перестала быть вектором заражения компьютров #1 только как раз примерно пару лет назад, когда начались широкомасштабные компании по её выкорчёвыванию.

Есть же ASN.1, есть средства их сериализации/десериализации всех возможных протоколов под все возможные языки и платформы.
Которые столь сложны и кривы, что сами по себе являются немалой проблемой и уже не так важно какой там у вас протокол.

Hint: обнаружение пары дырок в ведре не является поводом для замены его на дуршлаг, решето или сито. Эти инструменты — предназначены для других целей.
Вроде бы Java-апплетами не пользуются уже лет 15, а не 2 года. Целая жизнь прошла. Товарищ из топика явно писал не про апплеты.
1. Банковское барахло (лет 5 назад встречал апплет у Росбанка). Самое забавное было то, что подписали этот апплет невалидным сертификатом. Связаться с поддержкой не удалось.
2. KVM-консоли (хотя, часть использует jnlp + java web start)
3. Всякие консоли управления СХД (например, EMC VNX), свитчами (натыкался на оптических свитчах HP).
М-да.

Недавно чувак вполне серьезно хотел делать сайт на java-апплетах. Чтобы сэкономить время/стоимость разработки. (нужно сделать еще оффлайновую версию сайта). Вроде отговорил делать так, но не уверен, поциент нестабилен. Сан умер, а его маркетинг живёт…

А в апплетах еще остались настоящие уязвимости? Или их уже можно применить некромантию и оживить из мёртвых?
Не знаю, что значит «оффлайновая версия сайта», но если нужно делать и тонкий, и толстый клиент, то используют кучу вариантов. Начиная от gwt и заканчивая jsp/jsf + appсlient (с запуском через javaws). Зависит от окружения и махровости энтерпрайза.
надо чтобы вообще без клиента. Т.е. некое нативное приложение, полностью повторяющее дизайн и структуру сайта. Чтобы читать сайт можно было совершенно без интернета. Скачал дома через интернет один exe-файл, потом в метро едешь без инета, запустил его и читаешь. И никаких неудобств типа «страница появится, когда выйдете в онлайн» нету, потому что в приложении вообще никакого контакта с сетью не предусмотрено, единственная возможность обновления — заново целиком слить его с оффсайта (принести на флешке, итп). Практика выпуска «оффлайновых версий» принята в iOS/Android, но тут человек хочет для Windows/MacOSX/Linux. Апплеты кажутся логичными, но слишком хардкорными — пользователи сайта могут начать ненавидеть аффтаров.
Наверное пора создавать специальные фонды безопасности открытых криптографических решений, чтобы народ туда скидывался краудсорсингом и выплачивал деньги тем, кто будет находить серьезные уязвимости. Свободное ПО не значит бесплатное пиво, как говорится. Хочешь независимости и безопасности, вкладывайся. Вообще, мне кажется, что сейчас важно кидать деньги в те проекты, которые хотя бы заработать помогают. Я вот сделал себе по расписанию платеж по 10 баксов вроде с карточки в Perl foundation. Вроде и негусто, но если массово делиться, то люди, которые тратят свое время на разработку и поддержку будут получать достойное вознаграждение, а те же пентестеры вместо слива уязвимостей непонятно кому смогут надеть белую шляпу, получить «лавандос» и признание. (:
> чтобы народ туда скидывался краудсорсингом и выплачивал деньги тем, кто будет находить серьезные уязвимости

Если «зарплата» специалиста меньше его выгоды (не обязательно прямой материальной) от использования уязвимости — нет гарантии, что специалист сперва не воспользуется уязвимостью в личных целях. Если больше — неясна выгода от подобных синекур — сидят специалисты и читают код. Ну и не находят ничего. В некотором роде ваше предложение аналогично созданию «фонда для воров» — чтоб воры не крали, а брали денги из фонда для разработки защиты от воровства.
Людям в кайф ломать. Они это делают не затем, чтобы бабки получить, а потому что это интересно. Если бы за бабки — с давно бы уже в других сферах большими шишками стали. Но когда делаешь что-то исключительно за интерес — становится не на что жить. Банально заплатить за квартиру нечем, купить пожрать, за интернет заплатить. Ну да, если совсем на улицу не выходить и ни с кем вне форума не общаться, можно потреблять очень мало денег. Но это «очень мало» всё равно будет в районе десяти тысяч рублей в месяц. Их откуда-то надо взять. Но так, чтобы занимало мало времени и было не связано с думанием головой. Грузить вагоны на вокзале по ночам, например. В общем, не все готовы на подобные подвиги и лишения.
>Людям в кайф ломать. Они это делают не затем, чтобы бабки получить, а потому что это интересно.
Зато, прикинь, как было бы круто, если бы твоё хобби кто-то оплачивал! Тогда бы не пришлось заниматься скучной, неинтересной работой, а посвятить всё время на своё хобби.
Этим кем-то вполне может быть одна из гос. структур, например АНБ.
АНБ — это та компания, занимающаяся ограничением свободы людей и управлением ими? Когда ты каждый день не согласен с решениями абсолютно всех вокруг, начиная от своих подчиненных, и заканчивая начальством, и некому тебя поддержать? И нельзя уволиться? Ващеее здорово.

Сотруднику спецслужб России, читающему сейчас это сообщение:
Пожалуйста, всегда помни, что защита России, против любых врагов,
внешних и внутренних, требует от тебя поступать по примеру Сноудена.
>Когда ты каждый день не согласен с решениями абсолютно всех вокруг, начиная от своих подчиненных, и заканчивая начальством…
>И нельзя уволиться?…

Описанная ситуация — неграмотное управление людьми. Сам смысл работы организации теряется, если коллектив нелоялен. Для бизнеса такое положение вещей губительно, а для спец. структуры — катастрофично.
Очень важно чтобы сотрудники ощущали себя свободными, чтобы они считали важным и правильным то, что они делают. Для этого нужно врать, утаивать информацию, проводить идеалогическую работу и т.д.

Сноуден — фантастический, грандеознейший управленческий провал. Похоже, что руководители этой организации забыли, что они с людьми работают, а не с бездушными машинами.
идеалогическую работу
— Проводить нужно идеологическую работу, а идеалогическая работа — это диверсия, надо полагать.
ПС: с тезисами согласен.
Почему не густо? Я тоже отправляю $ 10 ежемесячно в Wikimedia Foundation и считаю, что пожертвование в $ 120 в год — очень хорошо. 200 человек — уже набегает средняя заработная плата одного специалиста.
200 человек это $24k в год? Почти наверняка в АНБ есть отдел человек из 10 которые целенаправленно занимаются поиском и внедрением подобных бекдоров и зарплата каждого из них едва ли меньше $250k в год.
Некоммерческим фондам, существующим на пожертвования бесперспективно соревноваться с целенаправленной коммерческой деятельностью или бюджетными организациями.
Кроме того, я привёл в пример среднюю зарплату по столице России, а вы про США.
Вдобавок, я думаю, вы очень серьёзно переоцениваете зарплатные возможности АНБ США.
Плюс ко всему, ваша мысль про внедрение бекдоров, по крайней мере на сегодня, ничем не подтверждена. Более того, я считаю, что это бред. Правительству никуда не нужно тайно внедряться, если возможно законодательно установить необходимость обеспечения технических средств на внедрение, как у нас с СОРМ(1,2,3) или CALEA и ECHELON у них. Это просто менее трудозатратно и более очевидно. Сами посудите, даже пропадать человека «без вести» ни к чему, был бы человек, а статья найдётся, как говорится.
UFO landed and left these words here
В России, в отличие от США, обычно не считают эквивалент в долларах в год, а считают в рублях в месяц.
Не понимаю, откуда вы такие зарплаты и коэффициенты берёте: средняя зарплата в столице — около 60 000 рублей (и это, похоже, без вычета налогов).
В регионах у специалистов зарплата ниже.
В Москве, с указанными вами коэффициентами зарплата старшего специалиста или начальника отдела, которых в количественном соотношении меньше, чем обычных специалистов.

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

Так всегда, если речь идёт о зарплате, люди ориентируются не на статистику, а на собственные пожелания.
UFO landed and left these words here
Программисты же в столице получают от 80 (и это джуниоры).
Откуда дровишки?
Или так: какой опыт работы у таких джуниоров за 80K?
От 80 — фантазия. Множество мест с меньшей зарплатой для программистов. 80 — неплохой середняк. Программисты, в принципе, не получают значительно больше всех остальных. 140 — почти фантастика. И вообще, программист — частный случай специалиста.
Мечтать не вредно. Ориентируйтесь на статистику (есть и профильная), а не на собственные представления о рынке труда в целом.
UFO landed and left these words here
За вас можно только порадоваться, если вы и ваши знакомые зарабатывают столько, сколько вы считаете нормой.
Могу вам сказать только то, что вы должны знать, что вы получаете больше среднего и советую вам держаться за эти места покрепче.
Рынок давно перегрет и у таких, как вы, завышены ожидания по заработной плате.
Напомню, что существует ещё множество бюджетных организаций с уровнем зарплаты ниже средней. А если чуточку отъехать от МКАД, хотя бы в область, зарплаты уже совсем другие, не говоря уже о регионах.

8-10 лет работы совсем не фантастика для людей постарше. Знаете, пенсия у нас не с 26-ти лет выплачивается.
5 лет стажа — обычно, всего около 2-х лет работы после ВУЗа или даже сразу после аспирантуры.

Судя по всему, вы просто не крутитесь в обществе олигархов, иначе ваши личные представления по уровню среднего дохода были бы ещё жирней.
UFO landed and left these words here
Нет, надо просто ввести в школах курс по основам компьютерной криптографии.
Надеюсь, вы в будущем не пойдёте в депутаты.
UFO landed and left these words here
Школьная информатика довольно спорный предмет
Да в России тоже, так что мы в одной лодке :)

Просто когда я вижу предложение ввести в школе очередной курс/урок, я сразу вспоминаю наших депутатов: то им кажется, что нужно ввести уроки по православию, то урок о Крыме, то урок о Москве и его мэре Сергей Семёныче. Сложилось впечатление, что наши депутаты — лучшие педагоги, и всегда знают, что хорошо для детей.
Депутаты, конечно, такие депутаты. Но ведь правда — на школьной информатике сейчас занимаются бредом. Лучше уж криптографию.
Криптография — штука слишком специфичная и сложная, чтобы преподавать её, во-первых, всем школьникам, а во-вторых, на достойном уровне. Поэтому в школе ей просто не место. А вот навык не называть системный блок процессором (читай: компьютерная грамотность) был бы чрезвычайно полезен.
Дело в том, что без знания основных принципов (не говорю — алгоритмов) криптографии, безопасность тоже будет на соответствующем уровне. А какая компьютерная грамотность, когда сам учитель обычно ни черта не знает.
Если нужны не алгоритмы, а просто принципы, то это правильнее назвать не криптографией, а информационной безопасностью и включить в курс информатики.
Да, что-то в этом роде я и имел ввиду. Но простые примеры алгоритмов (типа ChipherSaber) полезны для понимания принципов.
+1

Ежемесячно донейчу одному из свободных проектов, которыми пользуюсь. ИМХО правильнее, чтобы что-то перепадало всем, а не только самым известным.

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

Было бы странно, если бы утверждал иное.
http://lenta.ru/news/2014/04/12/dropbox/

«Интернет-активисты призвали к бойкоту сервиса для хранения и синхронизации данных Dropbox после того, как стало известно, что в совет директоров компании вошла бывший глава Госдепартамента США Кондолиза Райс, сообщает Fox News.

Недовольство пользователей кандидатурой Райс связано с тем, что в свое время в администрации Буша она поддержала программу, которая позволяла Агентству национальной безопасности прослушивать граждан без санкции суда.»
А ещё можно бойкотировать тетрис, ибо его автор из страны, которая себя плохо повела с Крымом. Ну или ещё с чем-нибудь.
Что-то мне все больше хочется скинуться по 100 $ на серьезный аудит Open Source проектов связанных с безопасностью, есть уверенность, что это лишь вершина того айсберга, который был создан известными силовыми структурами некоторых государств…
Сложно даже оценить сколько будет стоить адекватный аудит хотя бы одного open ssl. Ведь в него бекдоры внедряют очень продвинутые программёры (которым платят за это $200-300k в год) и делают это так, чтобы найти бекдор было сложно. На поиски бекдора придётся потратить во много раз больше времени (хотя бы потому что непонятно где именно его искать) и вероятно поиск должен осуществлять ещё более продвинутый программёр. В этом open ssl пол миллиона строчек кода; если считать, что на внимательный анализ 15 строчек кода (одна функция) нужен 1 час (оценка взята с потолка, но имхо 15 строчек кода в open ssl будут весьма сложны и для их анализа потребуется провести анализ зависимостей), то на весь проект уйдёт где то 20 лет анализа (и то при условии что open ssl писался хорошо и с его ростом число зависимостей росло линейно) и каждый год будет стоить $400k (учитываем что искать бекдоры сложнее чем их внедрять). Итого стоить всё будет в районе $10 миллионов (понятное дело, что придётся найти несколько человек для этой цели, а то за 20 лет анализа open ssl разрастётся вдвое). Вообщем если каждый пожертвует $100 то потребуется 100 тыщ пожертвований. Сомневаюсь, что найдётся столько людей которые не только знают что это за open ssl такой, но и могут и хотят пожертвовать денег на аудит. Да, и это один только o open ssl :)
UFO landed and left these words here
Так это давно не новость, открытый код не гарантирует безопасность если не проводятся исследования качества этого кода, и поиск уязвимостей. Тоже самое, впрочем, касается и закрытого кода. Для любого софта необходимо производить тщательное тестирование, и поиск уязвимостей. Чем больше подобных мероприятий проводится, тем меньше шансов, что ошибка останется не замеченной. С открытым кодом проще проводить сторонний аудит, поскольку не требуется кого то уговаривать на открытие исходников для проверяющей организации. В тоже время закрытый код сложнее изучать злоумышленникам по той же причине. Везде свои плюсы и минусы. В общем никакого удара по репутации свободного ПО не произошло — люди ошибаются, и продолжат ошибаться.
UFO landed and left these words here
Ну не знаю, серьёзные специалисты всегда понимали, что проблемы везде есть, просто разные, на то они и специалисты. Мнение не серьёзных специалистов, в общем то не интересно, ибо среди них в принципе много заблуждений. Мнение начинающих специалистов, возможно, и то не факт, чуть изменилось, но совсем скоро, с опытом, они по настоящему осознают, что баги есть везде.

Мнение же простых пользователей, т.е. обывателей, не особо интересно, ибо большинство в принципе не понимает как работает вся эта программная магия.

Если смотреть именно в корень проблемы, то она очень простая и понятная — баги есть везде, абсолютно везде. Можете спросить habrahabr.ru/users/Andrey2008/ он, и его коллеги могут много интересного рассказать и показать :)

p.s: вот пример бага в компиляторе VS (пример 2011 года, от 2010 студии, сейчас, возможно, и не актуальный уже, код максимально упрощён). Ошибка приводит к неопределённому поведению (тогда, когда откопал баг, при сборке в релизе — портилась память кучи, но приложение продолжало работать, и это ошибка из серии — большинство тестов её не покажет, или покажет в другом месте):

// Test VS Error.cpp: Defines the entry point for the console application.
//

#include «stdafx.h»
#include int _tmain(int argc, _TCHAR* argv[])
{
int simple_var = simple_var + 1; /* VC++ compiler warning: warning C4700: uninitialized local variable 'simple_var' used */
std::string string_var = string_var + " "; /* fully succes! */

return 0;
}
Есть такая концепция — слишком большой, чтобы упасть.
Данный случай можно охарактеризовать как — слишком открытый, чтобы искать баги. В отрицательную сторону сработал имидж opensource.
Возможно это так, но мне видится другой факт — баг не очевидный, и довольно сложный, поэтому найти его могут лишь те, кто глубоко понимает суть реализованных механизмов, и хорошо знает саму библиотеку habrahabr.ru/post/218691/
Отсутствие проверки входных данных — неочевидный баг?
Там не полное отсутствие проверки входных данных, а код довольно сложный, если смотреть его целиком, а не отрывками из уже сделанных анализов.

Ошибка идеологически довольно частая — заявленную протоколом длину данных учли и выделили запрошенный кусок памяти, но в другом месте фактическую длину забыли проверить.
Причём здесь код вообще? Есть поведение программы, есть спек. В спеке чёрным по белому написано:
If the payload_length of a received HeartbeatMessage is too large, the received HeartbeatMessage MUST be discarded silently.
Для нахождения бага можно (и всегда нужно!) просто проверить поведение библиотеки на соответствие спеку. Не нужно понимать алгоритм работы TLS, не нужно знать, как устроена библиотека.

А если уж смотреть код, то всё не становится сколько-нибудь менее очевидно. Прочитав запись выше в спеке надо хотя бы попытаться найти ответственные строки. Смотрим обработку heartbeat здесь. Комментарий «Read type and payload length first» даёт прекрасно понять, где длина. И она не проверяется. Абсолютно очевидный баг.
Если бы такая уязвимость существовала в закрытом ПО, то какова вероятность ее обнародования?
Людей нацеленных на то, чтобы найти такую уязвимость в закрытом ПО не меньше чем в открытом. Более того, этим людям платят за это деньги и в этом их работа. Более того, найденные уязвимости не публикуются, а используются в своих целях.

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

Вот Вам и ответ почему открытое ПО имеет выше вероятность быть более надежным чем закрытое.

Каков бы ни был их ответ, им никто не поверит. Вот до чего доводит испорченный имидж.
А какая в принципе разница? АНБ — это, вообще-то, не Amnesty и не Greenpeace, им доверие в той или иной степени до лампочки.
UFO landed and left these words here
UFO landed and left these words here
Нет, статические анализаторы очень плохо детектят такого рода баги. Это одна из причина, почему два года её не могли найти.
Стандартный вопрос на интервью про самый необычный баг в вашем коде, интересно посмотреть на реакцию господина Робина…
В том-то и ужас, что ничего «необычного» в этом баге нету… кроме последствий. Таких багов в разных других программах — тысячи (если не миллионы).
Кстати тут недавно была новость про сбор денег на аудит безопасности TrueCrypt. Кто нибудь в курсе-что аудит показал?
Sign up to leave a comment.

Articles