Ноябрь 2007

«Поиск и исправление проблемы программного обеспечения после доставки часто в 100 раз дороже, чем поиск и устранение во время требований и проектирования».

Список Топ-10 снижение дефектов программного обеспечения

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

Несмотря на это открытым исходным кодом разработчики до сих пор находят их качество кода и безопасности, оспаривается вопрос, который следил за ними с самого начала: «Если это бесплатно, как хорошо может это быть?»

Сканирование на наличие дефектов

Короткий ответ на этот вопрос является «Достаточно хорошо», благодаря решимости из разработчиков открытого исходного кода и успех проверки проекта совместного предприятия между Coverity, Inc и Стэнфордского университета.

Созданная в начале 2006 года, Scan является ключевым компонентом в «Уязвимости обнаружение и исправление открыть исходный закаливания проект», три года инициатива, финансируемая США министерства национальной безопасности для выявления и устранения уязвимости широко используются проекты с открытым исходным кодом.

Цель сканирования Coverity's является для укрепления безопасности и повышения общего качества ПСОК. Применяя новейшие достижения в области обнаружения автоматических дефектов, сайт сканирования обнаружили некоторые из наиболее критических ошибок в OSS. Технологические основы сканирования является Coverity предотвратить SQS (система качества программного обеспечения) решение, которое автоматически идентифицирует и помогает разработчикам устранить дефекты в исходном коде. Запретить использование анализа статического исходного кода, и позволяет разработчикам находить и устранять дефекты на ранней стадии цикла разработки программного обеспечения. В статическом анализе кода анализируется не выполняется; Таким образом тестовые случаи и специально разработанные входные наборы данных не являются обязательными и проверки кода на наличие дефектов не только строки кода, которые выполняются в течение некоторого числа казней программы.

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

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

Первоначальный план был для выполнения ежедневных проверок безопасности приблизительно 40 самых популярных открытым исходным кодом пакетов программного обеспечения, включая Linux, Apache, MySQL, Sendmail, FreeBSD, Mozilla и Samba. Стэнфордский университет будет проводить подробный анализ результатов и поддерживать базу данных выводов. С самого начала мы намеревались сделать результаты доступными для каждого проекта разработчиков; как они выбрали, чтобы ответить было до них.

В Coverity мы выполняли ранее, неправительственных финансируемых сканирование ядра Linux и MySQL. Ответ разработчика был многообещающим. Например первоначально 2004 исследование ядра Linux показали пять файловой системы буфера переполнения условия и одно условие переполнения буфера сети, оба из которых были сочтены серьезными дефектами. 2005 года исследования, спустя шесть месяцев показал ноль дефектов такого же типа: все были решены. Несмотря на то, что за эти шесть месяцев значительно увеличился размер ядра Linux, было значительное увеличение числа потенциально серьезных дефектов, благодаря реакции разработчиков Linux.

Многообещающее начало

В первоначальном анализе мы сканировали более чем 17,5 миллионов строк кода из 32 open source проектов. В среднем мы нашли 0.434 ошибок на 1000 строк кода, которые побудили ответ от разработчиков других проектов с открытым кодом. Более чем 200 разработчиков, зарегистрированных для доступа к онлайновой базе данных сканирования в неделю после того, как мы опубликовали наши результаты первоначального анализа.

В течение следующих семи дней более чем 900 дефектов были разрешены, или в среднем более чем 5 ошибок в час. После одной недели плотность дефекта же 32 проектов упала с 0.434 дефектов на тысячу строк кода 0.371. Самба, популярная программа, которая позволяет конечным пользователям получить доступ и использовать файлы, принтеры и другие ресурсы компании сети, показали быстрый ответ разработчика, что снижает их дефекты от 216 до 18 в первые семь дней. «Coverity нашли ошибки в частях Samba что мы ранее считали абсолютно надежный и проверенный,» сказал Джереми Эллисон, руководитель группы развития Samba. «Coverity вносит крупный вклад качества кода проекта Samba.»

Аманда проект был еще один четкий успех. Аманда является расширенный Мэриленд автоматический сетевой диск архиватор, система резервного копирования, которая позволяет администратору создать один главный сервер резервного копирования для резервного копирования нескольких хостов в сети на ленту или оптических носителей. Первоначальное сканирование кода Аманда показал 108 дефектов. В течение первой недели Аманда разработчикам решить все вопросы, то, что было проверено путем сканирования, выявления ноль дефектов.

Также в течение первой недели, сканирование показало уязвимость безопасности в X Windows программное обеспечение, графическая оконная система, используемая в большинстве дистрибутивов Linux и Unix систем. Уязвимость позволяет любому пользователю с именем входа для выполнения произвольного кода с привилегиями root или вызвать отказ в обслуживании с привилегиями root. X.org, разработчики X Windows, немедленно отреагировали путем выпуска советов по безопасности, которая включала патч, чтобы исправить проблему.

Сканирование празднует свой первый день рождения

К концу первого года Coverity был свидетелем некоторых замечательных успехов в области ПСОК развития: Разработчики фиксированные 6,132 дефекты программного обеспечения через 53 open source проектов, в том числе 13 проектов, которые устранены все выдающиеся дефекты. Сотни разработчиков используют проверки анализа для совершенствования своих проектов, и многие другие обратились к нам с просьбой включить в проверку. Исходя из спроса из сообщества open source, мы решили расширить программу. На первый летний юбилей 6 марта 2007 года, мы открыли расширение проверки проекта. В дополнение к редизайн сайта были добавлены 100 новых проектов. Дополнительная информация стала доступной для разработчиков и других заинтересованных в понимании сканирования является и как разработчики используют его.

Мы также создали новые рамки для разработчиков открытого исходного кода узнать, как использовать результаты сканирования, постепенно вводя их более продвинутые особенности Coverity's предотвращения SQS решения. Проекты, которые активно используют результаты сканирования стали имеют право двигаться вверх по лестнице «ступеньками» и получить доступ к дополнительным возможностям. И наконец в рамках новой лестницы сканирования, результаты дополнительного анализа, которые не были включены во время сканирования в первый год были представлены для разработчиков. Ответ был чрезвычайно положительные.

Лестница сканирования растет

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

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

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

  • Ступень 0: первая ступень включает проекты, которые были построены и проанализированы, однако представители проекта еще не зарегистрироваться для доступа к результатам
  • Ступень 1: после того, как проект предоставляет набор официальных контактов для представления проекта Coverity, разработчики имеют доступ к списку рассылки, предназначен для облегчения обсуждения результатов и вопросов, связанных с функции сканирования и предотвращения SQS

В ближайшем будущем ряд проектов готовы продвинуться дальше первого rung, как 14 оригинального сканирования члена проекты успешно достигли нуля дефектов в течение первого года.

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

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

Заглядывая в будущее

Сайт сканирования в настоящее время анализирует более 32 миллионов строк кода ежедневно. Там были более 7500 дефектов, зафиксированные в open source проектов с момента проверки проекта, который приравнивается к более чем одной Исправлена ошибка каждые два часа.

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

По мнению некоторых людей OSS не должны иметь каких-либо ошибок, поскольку исходный код является открытым, и многие люди могут смотреть на него. Эта теория не принимает во внимание, что многие из «глаза» не принадлежат к программистам с доменными знаниями и интерес тратить время работы этого кода.

Открытым исходным кодом разработчики регулярно дать мне обратную связь о том, насколько полезной службы сканирования, поэтому у меня нет сомнений, что он вносит значение для проектов. Лица сообщили, что их кодирования методы изменились, как они знают, что некоторые небрежный привычки программирования будут вызываться анализа, и они чувствуют, что они стали лучше программистов, исправляя эти привычки. Сканирования разработчики видели, что запретить можно определить посредством статического анализа кода. В результате когда все дефекты, выявленные на сайте сканирования были исправлены, они имеют высокую степень доверия в отношении безопасности и качества их кода. Цель проверки проекта проста: для дальнейшего повышения качества и безопасности ПСОК. Если, при этом, мы можем лучше понять, как сочетание нашей технологии и открытым исходным кодом модели развития приводит к дефектов, фиксировано на такой огромной скорости, мы считаем, что мы сможем применить то, что мы узнали для улучшения процесса развития и безопасности всего программного обеспечения, открытым исходным кодом и проприетарные. Пока что сканирование принял нас долгий путь к достижению этой цели.

Доля этой статьи:

Цитируете эту статью:

Оцените содержание: 
Нет голосов были поданы еще. Скажи свое слово!