05.03.2013

Об анализе качества кода системно и архитектурно

К теме анализа качества кода я уже обращался неоднократно и буду и дальше эту тему поднимать. Но все это эпизодические вкрапления, несвязанные в единое целое. Как должен выглядеть процесс создания качественного кода у разработчика или у потребителя, имеющего собственное подразделение по разработке? Картинка достаточно "проста" ;-)

Она отражает все необходимые аспекты, которые надо учитывать при разработке качественного, надежного и безопасного кода. Тут и вопросы архитектуры и дизайна (включая и инструменты по моделированию атак), и требования к разработке (включая шаблоны /паттерны/ атак и уязвимостей), и требования к написанию кода, и вопросы управления проектом по созданию ПО, и вопросы приобретения стороннего ПО, проведения обучения персонала, создания бизнес-кейсов, и вопросы тестирования и анализа кода (включая столь любимые многими пентесты). Учтено все ;-)

В оригинале эта картинка является интерактивной - каждый ее элемент является ссылкой на подробное и детальное описание, содержащее лучшие практики, полезные сведения или инструменты, решающие ту или иную задачу в части повышения качества ПО. Оригинал расположен на одном из лучших сайтов по данной тематике - "Build Security In", запущенном и поддерживаемом Министерством национальной безопасности США (DHS). Там есть все - статьи, инструментарий, курсы, книги, ссылки, рекомендации и т.д. Является хорошей отправной точкой для погружения в тему повышения качества ПО с точки зрения ИБ.

Но это, разумеется, не все ресурсы, которые могут помочь в освоении описываемой темы. Еще одной классикой является сайт института Карнеги-Меллона, который одним из первых обратился к этой теме в контексте ИБ (аккурат в 1988-м году после эпидемии червя Морриса). Сегодня этот сайт содержит немалое количество полезных ресурсов по теме - подкасты, видео, тренинги, книги и т.д.

Еще одним ресурсом послужит Software Assurance Marketplace (SWAMP) - ресурс, помогающий разработчикам open source понять как правильно разрабатывать и, самое важное, тестировать свои приложения; особенно критические. SWAMP является хорошим примером государственно-частного партнерства, которого так не хватает в России. Может быть Digital Security, которая так часто заявляет о своей лидирующей и пионерской роли в части анализа качества ПО, перестать флеймить и возглавит такую публичную инициативу, создав схожий ресурс (но на русском языке)? Это поможет всем, а заодно и покажет, что Digital Security может не только болтать, пытаясь ужаться в 140 символов твита, но и реально что-то делает на благо России, о которой так пафосно говорит ее генеральный директор? Больших усилий по созданию первой версии такого ресурса (как аггрегатора ссылок и "советов бывалых") там не потребуется.

Наконец, последним интересным ресурсом по теме анализа качества ПО является специализированный портал МинОбороны США - Cyber Security and Information Systems Information Analysis Center. Сразу предупрежу, что на нем не так много открытой информации - много чего доступно только для представителей государственных и военных структур США. Но и того, что выложено в открытый доступ достаточно для понимания тех усилий, которые МинОбороны США прикладывают для решения поставленной задачи. Особенно мне нравится их картинка, отражающая структуру нормативных актов, связанных с ИБ и качеством ПО.


Всего 4 ресурса! Но какая кладезь полезной информации скрыта на них...

14 коммент.:

Rebz комментирует...

Это все теория!
От теории до практики - пропасть. К чему нужны эти все схемы, если они нигде реально не работают? Те же скрамы и эджайлы. Отличная методология разработки, но нормально работает она не везде, т.к. помимо методологий надо применять голову. А у нас часто кивают - вон, зарубежом так, особенно в Америках, вот они-то де, смотри каких высот добились, надо бы и нам что-нибудь эдакое у них перенять.
Не увидел системности и архитектурности, просто небольшой обзор на тему как это круто выглядит в теории.. в Америке.

ilya комментирует...

В целом, ты прав - такой русскоязычный ресурс (проект) нужен. Как и работа по продвижению и популяризации этой крайне важной темы. Спасибо.

Теперь, в частности, пара небольших комментов.

Ты знаешь, что мы очень давно (года с 06) специализируемся на безопасности бизнес приложений (начали с Oracle, потом SAP, потом и сейчас все остальное) и честно стараемся развивать эту область как можем. Кроме своих исследований, сотен найденных уязвимостей, выступлений, новостей, статей, публикаций и даже одной книги (Oracle глазами аудитора) коих было множество за последние более чем 6 лет (хотя это может и не считается, так как это "личное"), мы также реализовали и возглавили две относительно "общественные" инициативы в этой области:

- ZeroNights, где тема безопасности бизнес приложений является основной, начиная с первой конфереции 2011 года. На третьей ZN в 2013 году она также будет основной

- OWASP Enterprise Application Security Project (https://www.owasp.org/index.php/OWASP_Enterprise_Application_Security_Project) - международный проект по безопасности бизнес приложений плюс англоязычный ресурс аналогичный тем, о которых ты пишешь, который мы возглавляем и развиваем по мере сил последние года 3 (точно не помню). Просто сильно об этом не кричим, да и, как и всегда, сделать там хотелось бы гораздо больше.

Я все это кратко перечислил не чтобы как-то похвастаться, чтобы не складывалось неверное ощущение, что мы только в тви говорим и ничего не делаем, как можно случайно неверно трактовать твою мысль в блоге. Ты же там, понятно, говорил совсем о другом.

Что же касается обсуждений этой темы в различных источниках, то да, нам, как практикам, очень интересна эта тема, больше скажу - мы ее фанаты, да и в спорах рождается истина, что важно; кроме того убежден, что подобные обсуждения в профессиональной среде очень полезны для популяризации самой темы, которая, повторюсь, является крайне важной с точки зрения практической (технической) безопасности.

Алексей Лукацкий комментирует...

Безусловно у меня сложилось неверное ощущение, что ты написал это, чтобы похвастаться. Т.к. ничего конкретного для продвижения этой темы именно в России я от тебя не услышал (что было, в общем-то, предсказуемо).

Что же касается EAS, то вся мировая общественность с нетерпением ждет, когда вы выпустите обещанное руководство по анализу защищенности корпоративных приложений и опубликуете бесплатные инструменты по оценке корпоративных приложений. Ну и обещанного дашборда тоже ждем.

ilya комментирует...

Видимо под понятием "делать" мы понимаем все-таки несколько разные вещи.
С моей скромной точки зрения "просто" написать только одну книгу на русском по этой теме - это уже много чего сделать.

Я вроде все КОНКРЕТНО перечислил, что мы КОНКРЕТНОГО сделали по развитию и продвижению этой темы в последние годы. Нет? Чем этот конкретный перечень тебя не устраивает? Конкретно, чем? Чем это не вклад в развитие темы?

Если весь этот перечень - это ничего конкретного, то, повторюсь, у нас с тобой совершенно разное понимание, что такое на практике безопасность бизнес приложений; что такое "делать" и "развивать"; и что такое "продвигать".

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

Мы же считаем, что в основе всего должны лежать собственные ЗНАНИЯ и ОПЫТ, полученные на глубоких исследованиях предметной области - это наш конек, хоть это сложно и дорого. Это основа, это наша база. И на основе этой базы уже затем генерится все остальное (исследования, стандарты, статьи, книги, выступления и тд). Чем мы и занимаемся. Уж как можем. Вот это наш подход.

А в остальном, работаем. Планы есть разные. Всему свое время :)

Алексей Лукацкий комментирует...

Илья, ты видимо даже не кликал по ссылкам в посте. Это и есть порталы с множеством материалов по теме, которые и сводят все в одном месте. Зайдя на buildsecurity, можно неделями читать то, что на эту тему написано. И институт Карнеги-Меллона тоже у себя много информации свел в одном месте. Так что не стоит говорить, что этого никто не сделал.

Что касается КОНКРЕТНОГО перечисления, то в Twitter'е тебе toxa написал, что вы это сделали ДЛЯ СЕБЯ (да и ты в последнем абзаце это подтверждаешь). Не для России, не для сегмента повышения качества ПО. Твой посыл достаточно четкий и не вызывает нареканий - "Приходите к нам и мы вам все сделаем за ваши деньги". Обычная позиция коммерческой компании. Если бы ты так и говорил, то никаких вопросов бы не было. Вон Positive Technologies не кричат, что они отрасль с колен поднимают, что они так устали на мировых конференциях одни Россию представлять, что они... и т.д. Они просто делают дело и зарабатывают на нем (хотя и у них есть ряд проектов, о которых они просто не кричат). Ты же постоянно бьешь себя пяткой в грудь, ссылаясь на свое лидерство, пионерство, патриотизм... Ну так я и предлагаю сделать что-то не для своего бизнеса, а для России. Сделаешь - честь и хвала.

Насчет уязвмимостей. Офигенная работа. Честно. Снимаю шляпу. И? Как это помогает повысить качество ПО в России? Бифит, R-Style, ЦФТ, 1C стали лучше писать и тестить код от того, что вы нашли сотню дыр в SAP? Что-то берут меня сомнения. Я даже не буду приводить твои же высказывания из интервью bankur.ru, где ты говоришь, что забесплатно ты для российских разработчиков ДБО работать не будешь. И про дискуссию в LinkedIn'e тоже не буду напоминать, где ты говорил, что в России этот сегмент рынка убогий и развивать его шансов нет, поэтому надо смотреть на Запад. Наверное я неправильно тебя понял - ты патриот ;-)

Ваших выступлений про software assurance не слышал, к своему глубокому сожалению. Много публикаций тоже не видел. Видимо мы разные конференции посещаем и разные источники читаем. Вполне допускаю. За Сашину книгу ему респект и уважуха.

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

Алексей Лукацкий комментирует...

Что у нас там еще из ваших конкретных действий осталось? OWASP EAS. Из пяти десятков активных и трех десятков неактивных проектов OWASP найти его нелегко. Но ничего, в разделе "Инкубатор" мы его находим. Заходим, смотрим. Раздел "Development of guides". Will be added soon. Десятка EASAD и EASFD интересна. Но где подробное описание каждой из уязвимостей? Хотелось бы видеть такое же, как и в классической десятке OWASP (https://www.owasp.org/index.php/Top10#OWASP_Top_10_for_2010). Статистика? Ее там почти нет. Enterprise Business Application Security Implementation Assessment Guide и Enterprise Business Application Security Vulnerability Testing Guide v1 еще нет. Бесплатных тулзов тоже пока нет. Вообще по многим разделам EAS - "coming soon" (хотя ты пишешь, что уже 3 года его развиваете).

Может я не ценю ваши усилия по EAS? Ни в коем случае. Это будет достойный проект, я уверен. В нем задействованы классные специалисты, но... статус "Инкубаторский" означает, что он в самой начальной стадии. Может стрельнет, может нет (надеюсь что первое). Говорить "мы реализовали" в данном контексте как-то несолидно, чтоли (если не сказать по-другому). Я думаю, что ты просто в горячке так написал.

Что осталось? А больше ничего ;-( Так что же вы все-таки для России сделали? На невысказанный вопрос о том, что никто в России ничего в этой области не сделал, сразу отвечу - это неправда.

Руст про анализ кода постоянно на конференциях говорит, приводит различные примеры, описывает проблемы, кейсы и т.д. Он хочет повторить успех Инфовотч в DLP-сегменте и я верю, что он это сделает. Женя Родыгин постоянно пишет в блоге про это. Позитивщики, которых ты не любишь, ведут несколько проектов в интересах некоторых некоммерческих организаций по данной тематике (вот они про эти проекты действительно не кричат). Я вот пописываю помаленьку про эту тему. Не могу сказать, что это моя личная заслуга, но в документы ФСТЭК тема анализа качества ПО в контексте ИБ (анализ кода, пентесты, SDLC) попала не без моего участия. Ассоциация РусКрипто будет секцию в рамках "РусКрипто 2013" (http://www.ruscrypto.ru/conference/program/protection-technologies/) проводить, посвященную именно анализу кода.

Все что-то делают, но не кричат, что они лидеры, пионеры, патриоты. Может и тебе перестать? И все само собой устаканится и уляжется. Этот сегмент будет развиваться (с вами или без вас) - все будут довольны.

ilya комментирует...

Леша, я не кричу, а говорю спокойно.
Про лидерство это ты сам сказал, не я, но все равно - тем более, тебе за это спасибо :).
Что касается дел - мы делаем то что мы считаем нужным и так как считаем нужным. По мере сил, что называется - мы коммерческая компания. И мы считаем, что для рынка ИБ в РФ это тоже полезно, как и многое другое, собственно. Но мы не говорим, что мы альтруисты, хотя это не значит, что мы не болеем за индустрию.
Почему полезно, то что мы делаем - потому что это развивает техническое сообщество. Волки, санитары леса, становятся более злые и умелые, наши разрабы и безопасники более умные - все это автоматом выводит индустрию ИБ на более высокий уровень и делает нащи системы более защищенными. "Кто предупрежден - тот вооружен" - это лозунг первой Атаки.

А что касается вопросов про то как защищать и что ZN для хакеров, как и все что мы делаем, Леша, ну это разговоры времен 96-97 года и первой Атаки, когда мне говорили, а зачем вы рассказываете в деталях механизмы атак. А я отвечал на это - а вы хотите быть страусом? Ведь очевидно, чтобы уметь защищаться, надо знать и понимать от чего именно.

Поэтому давай оставим этот спор. Он совершенно ни о чем.
Просто не стоит при таких раскладах категорично в ультимативной форме да еще и предельно саркастично в который раз уже говорить, что от нашей деятельности нет никакого проку с точки зрения развития рынка ИБ. Это, мягко говоря, СПОРНОЕ утвержение, сродни "хакеры никому не нужны". Это ОЧЕНЬ спорно, если говорить предельно мягко.

И хочешь простой пример. Я всегда был и хакером и остаюсь им так или иначе. Так вот на 100% хакерская "Атака через Интернет" от 97 и 99 годов - как ты считаешь, повлияла она тогда на развитие рынка ИБ в РФ? Оставила она свой след в целом поколении спецов того времнеи? Дала ли она что-то для развития рынка? Ну на этот вопрос можно и не отвечать, потому что тут нет предмета спора - в целом в этой дискуссии. Она, пардон, ни о чем.

Я считаю и всегда считал, что хакеры развивают индустрию ИБ. Это мое мнение и думаю, что я тут не одинок. Ты считаешь иначе - имеешь право. Но, повторяю, не стоит говорить целой индустрии хакеров-исследователей, что они никому не нужны и не развивают рынок. Это, как минимум, не есть истина в последней инстанции, а всего лишь твое частное мнение, и, самое главное, это не очень корректно по отношению к талантливым людям. Поэтому подобное твое частное мнение, на которое ты БЕЗУСЛОВНО имеешь право, лучше выражать в более спокойной и дискуссионой форме, не столь резко и ультимативно. Это просто совет, уж извини.
И тем более не стоит упрекать ПРАКТИКОВ в отсутствии дел, влияния на развитие и тд - это как-то странно звучит и очень режет мне слух.

А влияют эти дела или нет на отрасль - да какая разница в конце концов?? Упрекать нас, что нет - ну нет, так и нет - отрасли виднее. К чему упреки то? Работаем всю сознательную жизнь (уже 20 лет), что-то делаем, что нам интересно и прикольно, и если это еще и полезно другим людям - да и хорошо. И делаем мы это не с целью развить что-то там мифическое и кому-то там понравиться. А потому что нам это по фану; и за этот фан нам еще и платят, потому что ценят то что мы умеем.
А быть хакером - это фан! Уж поверь :). Я за 20 лет ни разу не пожалел.

Алексей Лукацкий комментирует...

Я смотрю тебя задело, когда стали разбирать конкретные факты ;-) Так я тебе лишний раз поясню причину моего столь активного внимания к твоей персоне. Именно ты постоянно возмущаешься, что я про вас не пишу и не упоминаю, говоря про качество ПО в контексте ИБ. Именно ты говоришь, что вы пионеры и лидеры этого сегмента. Именно ты говоришь, что вы делаете очень много для развития этого сегмента в России. Не я - ты! И именно поэтому я постоянно с тобой дисскутирую, потому что мне лично не нравится такое восхваление себя без конкретизации фактов, доказывающих это восхваление. Вот собственно и все.

Сейчас ты признал, что вы не альтруисты и хотите на своей компетенции зарабатывать деньги. Ну и замечательно. Кто вас осудит за это? Никто! Все только скажут: молодцы ребята. Они умные и получают за это свои деньги. Но только без пафоса про лидерство без доказательств (в LI ты так и не привел ни одного доказательства на эту тему), патриотизм и пионерию. И все будет нормально, как и было раньше - тихо и спокойно.

Спор про ZN действительно ни о чем - я остался при своем мнении и ты меня ни сейчас ни тогда не переубедил. И именно поэтому ни CISO, ни менеджеры к вам и не пойдут - даже озвученные тобой в Твиттере 5% - это потолок, выше которого не прыгнешь. Да и не надо, наверное. У вас и так желающих будет немало. Но только опять - давай без пафоса и разговоров о том, что без ZN CISO прожить не смогут. Смогут. И живут. И будут жить. Это не их тусовка. Особенно после обещаний молодых писателей сплойтов посетить конференцию "бумажных безопасников", чтобы "порыбачить" и показать, кто "настоящий" безопасник.

ilya комментирует...

Совершенно не задело - наоборот. Факты я люблю - их у нас много и все с доказательствами причем. Практики мы - у нас все ходы записаны :)

"Именно ты говоришь, что вы "пионеры" и "лидеры" этого сегмента" - откуда ты все это берешь, Леш :)? Где я это сказал "лидеры", "пионеры", "патриотизм"? Я такими словами вообще не пользуюсь. И где ты вообще увидел у нас пафос - ты часом не перепутал с другой, дословно, "эпической" конференцией :)? Честно, не было пафоса. Гордость за то что мы сделали и делаем, да есть, но и то не здесь. Но пафоса точно нет. Спокойный тон. Может ты просто через определенную призму смотришь не ту - так смени давно ее и все. Осенние баталии в LI давно в прошлом. Мы вообще совершенно не пафосные, а вполне себе нормальные.

А то что мы не альтруисты - так я этого никогда не скрывал. Не бывает компаний-альтруистов. Мы просто фанаты.

ilya комментирует...

Просто за наш фанатизм нам еще и платят. Иногда :).

Алексей Лукацкий комментирует...

И напоследок. Кто тебе вообще сказал, что я считаю, что хакеры никому не нужны и ничего там не развивают? Где я это вообще говорил. Первичный спор начался из-за того, что какой-то безбашенный неудовлетворенный пацан (который мне почти в сыновья годится, что характерно) наехал на меня, высказав мнение, что я не специалист. Я даже не ставлю вопрос из "Золотого теленка" "да ты кто такой". У меня претензия к его безапелляционности и непонимании той простой мысли, которой в мое время учили в классе 2-м или 3-м - "все профессии нужны, все профессии важны". Это стишок Джанни Родари очень хорошо показывает, что ИБ - это не только (а в России и не столько) написание сплойтов. Это администрирование СЗИ, это обучение по ИБ, это написание политик, это общение с руководством, это расчет рисков, это разработка законодательства. Это то, что молодая поросль, которой ты потакаешь, называет "бумажной безопасностью". И проблема не в том, что, как ты почему решил, я против технарей и хакеров, а в том, что кучка школоты, занимающейся деятельностью на грани и за гранью закона, считает вправе учить других, что такое безопасность, даже не пытась понять точку зрения оппонента.

На Хабре, в Твиттере, в блоге кто-то считает, что я испугался, что я признал правоту этой школоты, что я начал оправдываться и т.д. Я всех разочарую - моя мотивация совершенно иная. Я вступал в дискуссию в Твиттере только с одной целью - все-таки попробовать донести свою идею, что ИБ - это многогранная задача, в которой есть место и поиску дыр и написанию законов и обсуждению терминов. Увы. Тут я просчитался. Сначала мне показалось, что надежда есть и отдельные личности все-таки признали и мое право быть правым. Но почитав вчера и позавчера высказывания этих "молодых дарований" в Твиттере, направленных не мне, а своим "френдам", я понял, что сильно заблуждался. Они считают себя безоговорочно правыми. При этом, повторюсь, позволяют себе хамить оппоненту, использовать ненормативную лексику, полностью игнорировать правила русского языка. И это, к сожалению, не поддается лечению. Именно им посвящен 10-й слайд с презентации "Как стать звездой ИБ" (http://lukatsky.blogspot.com/2013/02/blog-post_18.html). Они никогда не осознают своей некомпетентности и никогда не обратятся за внешней оценкой. Им это не дано в этом возрасте. И именно поэтому я их внес в черный список - не хочу тратить свое время на общение с такими представителями высших приматов и не хочу, чтобы они засоряли мне твиттер.

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

ilya комментирует...

И еще момент.
" Именно ты говоришь, что вы делаете очень много для развития этого сегмента в России. Не я - ты!"

В том то и дело, что это ты :)
Я первый никогда не говорю на эту тему (или почти никогда) - только когда меня спрашивают и просто оперирую фактами на основе того, что мы реально сделали и кем мы реально являемся - без каких-либо прекрас.
Я в данном конкретном случае просто отвечаю на твои очередные упреки в бездействии - и кратко перечисляю что конкрентного мы сделали - ты сам просил, я тут не причем.

А ты это воспринимаешь, так как воспринимаешь. Так смени уже призму восприятия и все будет ок ;). Не надо так кидаться: "Сложно найти черную кошку в темной комнате, особенно когда ее там нет". Нет пафоса, нет :). И не было.

Мы уважаем, что ты делаешь на своем поприще. Ты нас, надеюсь, все-таки тоже за наши дела. "А это значит мы уважаемые люди" :). На этом можно и остановиться. И не искать черную кошку, которой нет.

ilya комментирует...

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

Rebz комментирует...

Алексей Лукацкий, аплодирую :)
По крайне мере в аргументах, Вы убедительнее, нежели Илья.