Рубрика «анализ кода» - 3

Табы или пробелы? Анализ 400 тысяч репозиториев GitHub, миллиарда файлов, 14 ТБ кода - 1

Для пытливых разработчиков до сих пор остается актуальным вопрос использования табуляции и пробелов для форматирования кода. Могут ли они быть взаимозаменяемы: например, 2 пробела на табуляцию или 4? Но единого стандарта нет, поэтому иногда между разработчиками возникает непонимание. Кроме того, различные IDE и их компиляторы обрабатывают табуляцию также по-своему.

Решением вопроса обычно становится соглашение о правилах форматирования в рамках проекта или языка программирования в целом.

Команда разработчиков из Google исследовала проекты в репозитории Github. Они проанализировали код, написанный на 14 языках программирования. Целью исследования было выявить соотношение табуляций и пробелов — то есть, наиболее популярный способ форматирования текста для каждого из языков.Читать полностью »

Продолжаем нашу серию заметок по статическому анализатору кода Kiuwan.

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

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

Написание кастомных правил для анализатора кода Kiuwan - 1
Читать полностью »

Анализируй это или о качестве программного обеспечения - 1 Почти всю свою сознательную карьеру разработчика, руководителя проектов, консультанта по процессам разработки я оставался в плену очень распространенного и простого заблуждения. Если программа выполняет требуемые функции, претензий к стабильности и производительности нет, то это «нормальная» программа. Прошу прощения за несколько утрированную формулировку, но так оно и есть, если разобраться.

За определениями термина «качество программного обеспечения» не грех обратиться к стандартам. Несколько определений из разных стандартов удобно приведены на одной странице wiki. И что же?! В фокусе способности программы удовлетворять потребностям Заказчика.
Читать полностью »

Комментарий к «Как попасть на дачу президента в пять часов утра» - 1Было бы странно, заниматься поиском ошибок в программах и при этом пройти мимо этой статьи.

Хочу оставить ряд комментариев. Основной их смысл, что это не похоже на страшные закладки. Мне этот код больше напоминает какой-то тестовый прототип, а не готовое приложение. Так что возможно не всё так страшно, как преподносит автор в статье. Во-первых, код содержит ошибку и случайные числа используются всегда. В реальности мимо такого вряд ли прошли в процессе тестировании системы. А во-вторых, существует такое понятие как «сертификация программ». И приведенный фрагмент кода — первый кандидат на обнаружение.
Читать полностью »

image

На конференции, посвящённой разработке и реализации языков программирования, команда компьютерных специалистов из Массачусетского технологического института (MIT) представила систему с удивительными характеристиками. По их утверждению, этот программный комплекс автоматически находит ошибки в программах, и исправляет их, подставляя на их место подходящие по функциональности куски от других программ. При этом для работы системе вовсе не нужно знакомиться с исходным кодом исправляемой программы — ей достаточно исполняемого файла.

Программисты-виртуозы назвали свою программу CodePhage (кодофаг). Разработчики поясняют, что их система «анализирует выполнение программы и характеризует типы проверок безопасности, которая та проводит». После чего кодофаг может взять такие же проверки у других программ-доноров, даже если те написаны на других языках программирования, и скормить их программе-реципиенту. Каким образом для этого выбираются программы-доноры, разработчики не уточнили.

«Программ с открытым кодом накопилось уже очень много — в репозиториях находятся миллионы проектов, и многие из них соответствуют сходным спецификациям,- говорит Стелиос Сидироглу-Дускос, под руководством которого был разработан CodePhage. — Даже если по сути программы разные, у них часто могут найтись компоненты со сходной функциональностью. При помощи CodePhage когда-нибудь можно будет создать такую гибридную систему, которая включает лучшие компоненты из всех доступных реализаций».
Читать полностью »

Недавно мне попался отличный инструмент для анализа PHP кода. Публикую перевод статьи с обзором этого инструмента.

PhpMetrics использует D3 и несколько сложных алгоритмов для сканирования кода вашего приложения и вывода замысловатых отчетов по результатам.
image
Читать полностью »

Не совсем известные решения по защите ИТ-инфраструктуры бизнеса - 1

Классический подход российского бизнеса сегодня — это установка файрволла, затем после первых попыток направленных атак — системы защиты от вторжений. И дальше спать спокойно. На практике это даёт хороший уровень защиты только против скрипткидди, при любой более-менее серьёзной угрозе (например, от конкурентов или атаке от недоброжелателей, либо направленной атаке от иностранной группы промшипонажа) нужно что-то дополнительное, помимо классических средств.

Я уже писал про профиль типовой направленной атаки на российское гражданское предприятие. Теперь расскажу о том, как меняется стратегия защиты в целом в нашей стране в последние годы, в частности, в связи со смещением векторов атак на 0-day и связанные с этим внедрения статических анализаторов кода прямо в IDE.

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

Этой статьёй мы начинаем серию материалов, посвященных поиску уязвимостей в популярных системах с открытым кодом. Ошибки в OpenSSL и glibc показали, что тысячи глаз, имеющих доступ к коду, — не гарантия безопасности open source. Конечно, и закрытый код не становится безопаснее от самого факта закрытости. Просто при наличии правильных инструментов доступность исходного кода позволяет выявить гораздо больше уязвимостей, чем при тестировании методом «чёрного ящика». Вопрос лишь в том, кто этим воспользуется раньше – разработчики или злоумышленники.

Последние два года в ходе разработки системы анализа исходных кодов PT Application Inspector мы проверяли на стендах и «в поле» сотни бесплатных и коммерческих, открытых и проприетарных приложений. В ходе этих тестов было найдено значительное число уязвимостей нулевого дня. Часть этих проблем была закрыта и известна по последним докладам о безопасности SCADA, часть ожидает своей погибели в ходе ответственного разглашения.

Воспользуемся же открытостью open source и покажем, как выявляются и анализируются уязвимости в исходном коде. В роли первого подопытного выступает бесплатная система управления сообществами InstantCMS, работающая на PHP и MySQL. На базе данного конструктора создано немало социальных сетей, сайтов знакомств, онлайн-клубов, городских порталов и государственных ресурсов. Читать полностью »

Одним из методов поиска уязвимостей в программном обеспечении является использование анализаторов исходных текстов. В данной посте хочу рассказать об одном из них, а именно о RATS (Rough Auditing Tool for Security). Начать именно с этой утилиты, решил потому что упоминания о ней встречались не раз в уважаемых мной источниках, а именно тут, тут и еще здесь. Однако реального примера использования нигде не было, поэтому я решил рассказать о RATS подробнее.
Читать полностью »


image
Меньше года назад мы рассказывали о разработке нашей новой веб-платформы для просмотра исходного кода.

За прошедшее время Upsource претерпел массу мелких и крупных изменений и стал, в частности, инструментом для code review. На днях же мы открыли программу EAP (Early Access Program), и предрелизные билды Upsource теперь доступны для всех желающих. На момент написания статьи число желающих стремительно приближается к тысяче, и не исключено, что вам тоже будет интересно лично познакомиться с нашим новым продуктом. Читать полностью »


https://ajax.googleapis.com/ajax/libs/jquery/3.4.1/jquery.min.js