FFmpeg

Проекты, которые следуют приведенным ниже лучшим практикам, могут добровольно и самостоятельно оценить себя и продемонстрировать, что они получили значок Open Source Security Foundation (OpenSSF).

Если это ваш проект, пожалуйста, покажите свой значок на странице проекта! Статус значка выглядит следующим образом: Уровень значка для проекта 235 - in_progress Вот как вставить его:

Это критерии уровня Passing. Вы также можете просмотреть критерии уровня Silver или Gold.

        

 Основы 13/13

  • Идентификация

    FFmpeg is the leading multimedia framework, able to decode, encode, transcode, mux, demux, stream, filter and play pretty much anything that humans and machines have created. It supports the most obscure ancient formats up to the cutting edge. No matter if they were designed by some standards committee, the community or a corporation. It is also highly portable: FFmpeg compiles, runs, and passes our testing infrastructure [FATE](fate.ffmpeg.org) across Linux, Mac OS X, Microsoft Windows, the BSDs, Solaris, etc. under a wide variety of build environments, machine architectures, and configurations.

    It contains libavcodec, libavutil, libavformat, libavfilter, libavdevice, libswscale and libswresample which can be used by applications. As well as ffmpeg, ffserver, ffplay and ffprobe which can be used by end users for transcoding, streaming and playing.

    Какие языки программирования используются для реализации проекта?
  • Основная информация на веб-сайте проекта


    Веб-сайт проекта ОБЯЗАН кратко описывать, что делает программное обеспечение (какую проблему решает?). [description_good]

    Веб-сайт проекта ОБЯЗАН предоставлять информацию о том, как: получать и предоставлять обратную связь (например, отчеты об ошибках или улучшения) и вносить свой вклад в программное обеспечение. [interact]

    В описании того, как сделать вклад, НЕОБХОДИМО объяснить процесс внесения вклада (например, используются ли pull request'ы). (Требуется URL) [contribution]

    https://ffmpeg.org/developer.html

    The above URL gives complete information regarding the contribution process. As a short summary: although mirrored on GitHub at https://github.com/FFmpeg/FFmpeg, the project does not accept pull requests as explained in https://github.com/FFmpeg/FFmpeg/pull/153. We instead use a mailing list ffmpeg-devel@ffmpeg.org instead; exact details are provided in the developer documentation link at the top.



    В информацию о том, как внести вклад, СЛЕДУЕТ включать требования к приемлемым взносам (например, ссылку на любой требуемый стандарт кодирования). (Требуется URL) [contribution_requirements]
  • Свободная лицензия

    Под какой/какими лицензией/ями выпускается проект?



    ПО, создаваемое проектом, ОБЯЗАНО быть выпущено под свободной лицензией. [floss_license]

    https://ffmpeg.org/legal.html provides complete information regarding the licensing of FFmpeg.

    A short summary quoted from the above is:

    FFmpeg is licensed under the GNU Lesser General Public License (LGPL) version 2.1 or later. However, FFmpeg incorporates several optional parts and optimizations that are covered by the GNU General Public License (GPL) version 2 or later. If those parts get used the GPL applies to all of FFmpeg.

    Read the license texts to learn how this affects programs built on top of FFmpeg or reusing FFmpeg. You may also wish to have a look at the GPL FAQ.

    Note that FFmpeg is not available under any other licensing terms, especially not proprietary/commercial ones, not even in exchange for payment.



    ЖЕЛАТЕЛЬНО, чтобы все лицензии для ПО, создаваемого проектом, были одобрены Open Source Initiative (OSI). [floss_license_osi]


    Проект ОБЯЗАН публиковать лицензию или лицензии своих результатов в стандартном расположении в своем репозитории исходного кода. (Требуется URL) [license_location]
  • Документация


    Проект ОБЯЗАН предоставлять базовую документацию для программного обеспечения, создаваемого проектом. [documentation_basics]

    The documentation for FFmpeg is built from: https://git.ffmpeg.org/gitweb/ffmpeg.git/tree/HEAD:/doc. The documentation for the FFmpeg website is built from: https://git.ffmpeg.org/ffmpeg-web.

    As such, the recommended starting point for exploring the docs is: https://ffmpeg.org/documentation.html.

    FFmpeg provides security information such as CVE numbers and commits addressing them at: https://ffmpeg.org/security.html.



    Проект ОБЯЗАН предоставлять справочную документацию, описывающую внешний интерфейс (как входной, так и выходной) программного обеспечения, создаваемого проектом. [documentation_interface]

    https://ffmpeg.org/documentation.html - the starting reference for documentation.

    For some community documentation, please see: https://trac.ffmpeg.org/wiki. For a short tutorial, please see: http://dranger.com/ffmpeg/. For a short book, please see: http://ffmpeg.tv/.


  • Другое


    Сайты проекта (веб-сайт, репозиторий и URL-адреса для загрузки) ОБЯЗАНЫ поддерживать HTTPS с использованием TLS. [sites_https]

    Проект ОБЯЗАН иметь один или несколько механизмов для обсуждения (включая предлагаемые изменения и проблемы), которые доступны для поиска, позволяют ссылаться на сообщения и темы по URL, позволяют новым людям участвовать в некоторых обсуждениях и не требуют установки на стороне клиента проприетарного программного обеспечения. [discussion]

    Проекту СЛЕДУЕТ предоставлять документацию на английском языке и иметь возможность принимать отчеты об ошибках и комментарии о коде на английском языке. [english]

    As can be seen at https://ffmpeg.org/documentation.html, all FFmpeg documentation is in English.



    НЕОБХОДИМО, чтобы проект поддерживался. [maintained]


(Дополнительно) Какие другие пользователи имеют дополнительные права на редактирование этой записи значка? В настоящее время: []



  • Публичное хранилище исходного кода с поддержкой версий


    Проект ОБЯЗАН иметь репозиторий (хранилище) исходного кода с управлением версиями, который является общедоступным и имеет URL. [repo_public]

    Проектный репозиторий исходного кода ОБЯЗАН отслеживать, какие изменения были внесены, кто внес изменения и когда изменения были сделаны. [repo_track]

    https://git.ffmpeg.org/ffmpeg.git - it uses Git, and as such keeps track of the revisions. Note that revisions may also be viewed at the FFmpeg cvslog archives: https://lists.ffmpeg.org/pipermail/ffmpeg-cvslog/. Remark: The name cvslog dates to when the project used CVS. Now, the project uses Git.



    Чтобы обеспечить возможность для проверки другими участниками, проектный репозиторий исходного кода ОБЯЗАН включать промежуточные версии для проверки между релизами; НЕДОПУСТИМО хранить в репозитории лишь финальные версии. [repo_interim]

    FFmpeg's repository is public, so in addition to the release branches (e.g https://git.ffmpeg.org/gitweb/ffmpeg.git/shortlog/refs/heads/release/3.0), we have a branch for master (https://git.ffmpeg.org/gitweb/ffmpeg.git/shortlog/refs/heads/master). Developers also sometimes maintain their own private forks for work in progress, e.g https://github.com/gajjanag/FFmpeg).



    Для хранилища проектного исходного кода ЖЕЛАТЕЛЬНО использовать типовое ПО для распределенного управления версиями (например, git). [repo_distributed]

    Git is currently used, as reflected by https://git.ffmpeg.org/ffmpeg.git .


  • Уникальная нумерация версий


    Результаты проекта ОБЯЗАНЫ иметь уникальный идентификатор версии для каждой версии, предназначенной для конечных пользователей. [version_unique]

    https://ffmpeg.org/developer.html#Release-process-1 - this describes the release process. In particular, major and minor version numbers are maintained for releases.



    Для выпусков ЖЕЛАТЕЛЬНО использовать семантическую либо календарную нумерацию версий. При использовании календарной нумерации к версии ЖЕЛАТЕЛЬНО добавлять микро-компоненту. [version_semver]


    Проектам ЖЕЛАТЕЛЬНО идентифицировать каждый выпуск в своей системе управления версиями. Например, при использовании git ЖЕЛАТЕЛЬНО идентифицировать каждую версию, используя теги git. [version_tags]
  • Примечания к выпуску


    Проект ОБЯЗАН предоставлять с каждой выпускаемой версией замечания к выпуску - удобочитаемые человеком сведения об основных изменениях в этом выпуске, помогающие пользователям определить, должны ли они обновляться и какими будут последствия обновления. НЕДОПУСТИМО делать замечания к выпуску сырым выводом журнала управления версиями (например, результаты команды «git log» не являются замечаниями к выпуску). Проекты, результаты которых не предназначены для повторного использования в нескольких местах (например, программное обеспечение для одного веб-сайта или службы) И выдаются через непрерывную доставку (continuous delivery) МОГУТ выбрать «неприменимо» (N/A). (Требуется URL) [release_notes]

    https://git.ffmpeg.org/gitweb/ffmpeg.git/blob/HEAD:/Changelog - this file keeps track of the release notes.



    В замечаниях о выпуске НЕОБХОДИМО упоминать каждую общеизвестную уязвимость, исправленную ​​в каждой новой версии, для которой существует CVE или аналогичная публичная запись. Критерий может быть отмечен как неприменимый (N/A), если у пользователей обычно нет практической возможности обновить данное ПО самостоятельно (это часто относится к, например, обновлениям ядра операционной системы). Если замечаний о выпуске не публиковалось или не было обнародованных уязвимостей, отвечайте "неприменимо". [release_notes_vulns]

    https://ffmpeg.org/security.html - FFmpeg associates public vulnerabilities with the release that fixes them here.


  • Процесс сообщения об ошибках


    Проект ОБЯЗАН предоставить пользователям возможность отправлять сообщения об ошибках (например, используя систему отслеживания ошибок или список рассылки). (Требуется URL) [report_process]

    https://trac.ffmpeg.org/ - the bug tracker for FFmpeg.



    СЛЕДУЕТ использовать трекер вопросов (issue tracker) для отслеживания отдельных вопросов. [report_tracker]

    https://trac.ffmpeg.org/ticket/5689 - an illustration of an individual ticket.



    Проект ОБЯЗАН подтверждать получение большинства сообщений об ошибках, отправленных за последние 2-12 месяцев (включительно); подтверждение не обязательно включает исправление. [report_responses]

    Проекту СЛЕДУЕТ реагировать на большинство (>50%) запросов на улучшения в течение последних 2-12 месяцев (включительно). [enhancement_responses]

    https://trac.ffmpeg.org/query?status=closed&status=new&status=open&desc=1&order=priority - as can be seen here, all incoming reports are classified into categories, and can be associated with the "enhancement" type or the "wish" priority.

    Also clear from the above links is that a significant fraction are implemented.



    Проект ОБЯЗАН иметь общедоступный архив для отчетов и ответов для последующего поиска. (Требуется URL) [report_archive]

    https://trac.ffmpeg.org/report - this allows searching through the report database via a variety of queries.


  • Процесс отчета об уязвимостях


    Проект ОБЯЗАН публиковать процесс уведомления об уязвимостях на сайте проекта. (Требуется URL) [vulnerability_report_process]

    As seen at: https://ffmpeg.org/security.html, vulnerabilities are reported to ffmpeg-security@ffmpeg.org.



    Если поддерживаются приватные отчеты об уязвимости, проект ОБЯЗАН включить описание того, как отправлять сведения конфиденциальным способом. (Требуется URL) [vulnerability_report_private]

    As seen at: https://ffmpeg.org/security.html, vulnerabilities reported to ffmpeg-security@ffmpeg.org are private.



    Проект ОБЯЗАН обеспечивать время первоначального отклика на любой отчет об уязвимости, полученный за последние 6 месяцев, в пределах 14 дней или меньше. [vulnerability_report_response]

    As can be seen at: https://ffmpeg.org/security.html, regular point releases are made to address security vulnerabilities. For further evidence of a regular response time, please see: https://security.googleblog.com/2014/01/ffmpeg-and-thousand-fixes.html.

    For more detailed statistics, please check the commit log - any commit addressing a CVE has the CVE number associated with it via the commit message.


  • Рабочая система сборки


    Если программное обеспечение, создаваемое проектом, требует сборки для использования, проект ОБЯЗАН предоставить рабочую систему сборки, которая может автоматически пересобирать программное обеспечение из исходного кода. [build]

    FFmpeg can be built on a variety of platforms, including but not limited to Windows, GNU/Linux, OS X, BSD's, Solaris. Generally, it may be accomplished via ./configure, make, make install with a few flags, see https://trac.ffmpeg.org/wiki/CompilationGuide/Generic for details.



    ЖЕЛАТЕЛЬНО использовать общеупотребительные инструменты для сборки программного обеспечения. [build_common_tools]

    FFmpeg uses make and the configure script is written in sh. The configure script relies on some standard utilities, like tr, grep, etc for testing the availability of components for building. A standard C compiler and linker are required, but FFmpeg does not restrict itself to a particular toolchain. For good performance, yasm is required for building assembly files, though this is not strictly needed as --disable-yasm is supported by configure.



    Для сборки проекта СЛЕДУЕТ использовать только инструменты со свободными лицензиями. [build_floss_tools]

    FFmpeg builds fine with FLOSS tools, please see e.g fate.ffmpeg.org.


  • Набор автотестов


    Проект ОБЯЗАН использовать по крайней мере один автоматизированный набор тестов, опубликованный как свободное ПО (этот набор тестов может поддерживаться как отдельный проект свободного ПО). Проект ОБЯЗАН ясно показывать или иметь документацию о том, как запускать наборы тестов (например, через непрерывную интеграцию (CI) или используя файлы документации, такие как BUILD.md, README.md или CONTRIBUTING.md). [test]

    FFmpeg uses the FATE automated test suite: http://fate.ffmpeg.org/. The client side infrastructure is maintained within the FFmpeg repo. Server side is maintained at https://git.ffmpeg.org/fateserver. For details on how this works, please see https://ffmpeg.org/fate.html.



    Запуск набора тестов СЛЕДУЕТ реализовывать стандартным способом для этого языка. [test_invocation]

    As seen from https://ffmpeg.org/fate.html, invoking the FATE test suite is usually as simple as make fate. To obtain the test samples, make fate-rsync pulls samples from the https://samples.ffmpeg.org/ directory.



    ЖЕЛАТЕЛЬНО охватывать набором тестов большинство (а в идеале все) ветви кода, поля ввода и функциональные возможности. [test_most]

    The code coverage is generally at a 66%-75% level. It is still being actively worked upon, with http://coverage.ffmpeg.org/ showing the current status.



    ЖЕЛАТЕЛЬНО реализовать непрерывную интеграцию (Continuous Integration - частая интеграция нового или измененного кода в центральное хранилище кода, и запуск автоматических тестов на получившейся базе кода). [test_continuous_integration]

    A number of FATE clients are run, as can be seen from fate.ffmpeg.org. Clients get added and removed, but at any given moment there are a reasonable variety of CPU architectures, operating systems, and toolchains represented at fate.ffmpeg.org.


  • Тестирование новых функций


    Проект ОБЯЗАН иметь общую политику (формальную или нет), обязывающую добавлять тесты в набор автоматических тестов по мере добавления новых функциональных возможностей к программному обеспечению, создаваемому проектом. [test_policy]

    This is currently only an informal requirement, and generally is enforced only in libavcodec, where new encoders and decoders must be accompanied by tests.

    However, this is not uniformly enforced. Roughly, libavfilter tends to lack a lot of tests, and many new filters do not have tests associated with them immediately. It is the general expectation (informal) that tests will be added by the developer over time.



    Проект ОБЯЗАН иметь доказательства того, что критерий test_policy о добавлении тестов соблюдался при недавних крупных изменениях ПО, создаваемого проектом. [tests_are_added]

    Tests are lacking for all libraries except libavcodec.



    ЖЕЛАТЕЛЬНО задокументировать эту политику добавления тестов (см. критерий test_policy) в инструкции к предложениям об изменениях. [tests_documented_added]

    As seen above, the adding of tests is currently quite informal. Documentation is present at https://ffmpeg.org/developer.html, but it is sometimes vague.


  • Флаги предупреждений


    Проект ОБЯЗАН включать один или несколько предупреждающих флагов компилятора, «безопасный» языковой режим или использовать отдельный инструмент «linter» для поиска ошибок качества кода или типовых простых ошибок, если есть хотя бы один инструмент на свободном ПО, который может реализовать этот критерий на выбранном языке. [warnings]

    There are FATE clients running the ubsan toolchain, valgrind, etc. Generally speaking, -Wall and some other warnings are enabled by default for all compilations.



    Проект ОБЯЗАН обращать внимание на предупреждения. [warnings_fixed]

    There are numerous commits in the repository addressing warnings, and patches are regularly submitted and reviewed for the same.

    However, it must be noted that as FFmpeg supports a variety of toolchains, some of which omit bogus warnings, and that too sometimes only for specific versions of the toolchain, it is infeasible to reach a 0 warnings policy across all FATE clients. Generally, on "standard" toolchains, such as GNU/Linux OR OS X + gcc OR clang, the warning count does not exceed 100, and most warning cleanup work addresses such toolchains.



    ЖЕЛАТЕЛЬНО, чтобы проекты использовали самый строгий режим предупреждений в производимом ПО, где это целесообразно. [warnings_strict]

    As noted above, as FFmpeg supports a variety of toolchains, some of which omit bogus warnings, and that too sometimes only for specific versions of the toolchain, it is infeasible to reach a 0 warnings policy across all FATE clients. Generally, on "standard" toolchains, such as GNU/Linux OR OS X + gcc OR clang, the warning count does not exceed 100, and most warning cleanup work addresses such toolchains.

    It is thus counterproductive to enforce a maximal strictness policy wrt warnings in FFmpeg. However, it should be noted that some developers experiment with additional warning combinations, and when the warnings stop being too noisy, the project is open to introducing these flags into the default set of warning flags.


  • Знание безопасной разработки


    По крайней мере один основной разработчик на проекте ОБЯЗАН знать, как проектировать безопасное программное обеспечение (точные требования описаны в подробностях к критерию). [know_secure_design]

    Nicholas George and Michael Niedermayer (among possibly others) are developers who understand the above principles and actively use them. Michael Niedermayer is perhaps the only currently active developer who meets all of the above criteria.



    По крайней мере, один из основных разработчиков проекта ОБЯЗАН знать об общих видах ошибок, которые приводят к уязвимостям в этом виде программного обеспечения, а также по крайней мере одному методу противодействия или смягчения каждого из них. [know_common_errors]

    FFmpeg uses Coverity (https://scan.coverity.com/), a number of FATE clients use aids like ubsan, Valgrind, Helgrind, etc.

    FFmpeg does address the issue of creating more secure defaults, defensive programming practices, etc from time to time.


  • Основы правильного использования криптографии

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

    Программное обеспечение, созданное проектом, ОБЯЗАНО использовать по умолчанию только публикуемые криптографические протоколы и алгоритмы, которые анализируются экспертами (если используются криптографические протоколы и алгоритмы). [crypto_published]

    As seen from files like aes.c, blowfish.c, etc in libavutil/, FFmpeg only uses publicly known cryptographic algorithms by default.



    Если программное обеспечение, создаваемое проектом, является приложением или библиотекой, и его основной целью является не внедрение криптографии, тогда для реализации криптографических функций СЛЕДУЕТ обращаться к программному обеспечению, специально предназначенному для этого; НЕ СЛЕДУЕТ повторно реализовывать свои собственные функции. [crypto_call]

    FFmpeg reimplements common cryptographic primitives like AES, Blowfish, SHA, etc in files within FFmpeg. Many of them are simply used to meet a multimedia specification, and in many cases it is not security relevant. As FFmpeg is a very widely used library deployed in a variety of configurations, it is desired to have as few external dependencies as possible.



    Вся функциональность программного обеспечения, создаваемого проектом, которая зависит от криптографии, ОБЯЗАНА быть реализована с использованием свободного ПО. [crypto_floss]

    This may be seen by examining the source code.



    Механизмы безопасности в программном обеспечении, создаваемом проектом, ОБЯЗАНЫ использовать стандартные длины криптографических ключей, которые, по крайней мере, соответствуют минимальным требованиям NIST до 2030 года (как указано в 2012 году). Проект ОБЯЗАН предоставлять возможность настройки ПО таким образом, чтобы уменьшенные длины ключей были полностью отключены. [crypto_keylength]

    Although FFmpeg does provide a low level DES API, it is used strictly for format interoperability and is thus not part of any security mechanism.



    Механизмы безопасности по умолчанию в программном обеспечении, создаваемом проектом, НЕДОПУСТИМО делать зависимыми от взломанных криптографических алгоритмов (например, MD4, MD5, single DES, RC4, Dual_EC_DRBG) или использовать режимы шифрования, которые не подходят для контекста, если только они не требуются для интероперабельности протокола (поддерживающего самую новую версию стандарта на этот протокол, широко распространенного в сетевой экосистеме, причем эта экосистема требует использования данного алгоритма или режима, не предлагая более безопасных альтернатив). В документации НЕОБХОДИМО описать все связанные с этим риски безопасности и все известные способы смягчения рисков, если данные алгоритмы или режимы действительно нужны для совместимости с другими реализациями этого протокола. [crypto_working]

    FFmpeg does implement and export a number of low level cryptographic primitives, some of which are broken such as MD5 and single DES. However, it should be noted that the usage of these primitives within FFmpeg are confined to instances where it is necessary in order to meet some specification.



    Механизмы безопасности по умолчанию в программном обеспечении, создаваемом проектом, НЕ СЛЕДУЕТ делать зависимыми от криптографических алгоритмов или режимов с известными серьезными слабостями (например, криптографический алгоритм хеширования SHA-1 или режим CBC в SSH). [crypto_weaknesses]

    Same remarks as above. In particular, SHA-1 is used for creating identifiers, and is not used for a security purpose.



    В механизмах безопасности в программном обеспечении, создаваемом проектом, СЛЕДУЕТ реализовать совершенную прямую секретность для протоколов соглашений о ключах, чтобы ключ сеанса, произведенный из набора долгосрочных ключей, не мог быть скомпрометирован, если один из долгосрочных ключей скомпрометирован в будущем. [crypto_pfs]


    Если ПО, создаваемое проектом, требует хранить пароли для аутентификации внешних пользователей, НЕОБХОДИМО хранить пароли как итерированные хеши с солью для каждого пользователя с использованием алгоритма (итерированного) растяжения ключа (например, PBKDF2, Bcrypt или Scrypt). См. также: OWASP Password Storage Cheat Sheet (на англ.). [crypto_password_storage]

    FFmpeg does not store passwords for authentication of external users.



    Механизмы безопасности в программном обеспечении, создаваемом проектом, ОБЯЗАНЫ генерировать все криптографические ключи и временные значения с использованием криптографически безопасного генератора случайных чисел; НЕДОПУСТИМО делать это с использованием генераторов, которые криптографически небезопасны. [crypto_random]

    As can be seen from https://git.ffmpeg.org/gitweb/ffmpeg.git/blob/HEAD:/libavutil/random_seed.c, FFmpeg makes a best effort at providing a cryptographically secure random number generator.


  • Доставка, защищенная от атак посредника (MITM)


    Проект ОБЯЗАН использовать механизм доставки, устойчивый против атак посредника (MITM). Приемлемо использование https или ssh + scp. [delivery_mitm]

    PGP signatures are provided: https://ffmpeg.org/download.html#releases. The download is over https.



    НЕДОПУСТИМО получать криптографические контрольные суммы (например, sha1sum) по HTTP и использовать их без проверки криптографической подписи. [delivery_unsigned]

    PGP signatures are provided: https://ffmpeg.org/download.html#releases. The download is over https.


  • Исправление обнародованных уязвимостей


    НЕДОПУСТИМО оставлять незакрытыми уязвимости со степенью серьезности средней или выше, опубликованные более 60 дней назад. [vulnerabilities_fixed_60_days]

    FFmpeg fixes public vulnerabilities much more quickly than this. Please see the commit logs for evidence of this.



    Проектам СЛЕДУЕТ оперативно исправлять критические уязвимости после сообщения о них. [vulnerabilities_critical_fixed]

    FFmpeg has a track record of fixing CVE's promptly. Some evidence for this: 1. https://ffmpeg.org/security.html 2. Commit logs - all CVE related commits have the CVE number included in the message 3. https://security.googleblog.com/2014/01/ffmpeg-and-thousand-fixes.html.


  • Другие вопросы безопасности


    НЕДОПУСТИМА утечка действующих частных учетных данных (например, рабочий пароль или закрытый ключ), предназначенных для ограничения общего доступа, из публичных репозиториев. [no_leaked_credentials]

  • Статический анализ кода


    НЕОБХОДИМО применять по крайней мере, один инструмент анализа статического кода (помимо предупреждений компилятора и "безопасных" режимов языка) к любой предлагаемой основной версии создаваемого ПО до ее выпуска, если есть хотя бы один инструмент на свободном ПО, который реализует этот критерий на выбранном языке. [static_analysis]

    FFmpeg uses Coverity (scan.coverity.com) before production releases, which checks for a variety of common C programming mistakes. It should be noted that Coverity is not perfect, and there are false positives which is why FFmpeg does not necessarily "clear" the list before release. Nevertheless, an effort is made to fix Coverity reports before release.



    ЖЕЛАТЕЛЬНО включать по крайней мере в один из инструментов статического анализа, используемых для критерия static_analysis, правила или подходы для поиска распространенных уязвимостей в анализируемом языке или среде. [static_analysis_common_vulnerabilities]

    FFmpeg uses Coverity (scan.coverity.com), which checks for a variety of common C programming mistakes.



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

    FFmpeg fixes exploitable vulnerabilities promptly, regardless of whether they are found via static analysis (e.g privately via Coverity) or made public.



    ЖЕЛАТЕЛЬНО выполнять анализ статического исходного кода при каждом коммите или по крайней мере ежедневно. [static_analysis_often]

  • Динамический анализ кода


    ЖЕЛАТЕЛЬНО применять по крайней мере один инструмент динамического анализа к любой предлагаемой основной (major) версии программного обеспечения перед ее выпуском . [dynamic_analysis]


    ЖЕЛАТЕЛЬНО регулярно использовать по меньшей мере один динамический инструмент (например, fuzzer или сканер веб-приложения) в сочетании с механизмом для обнаружения проблем безопасности памяти, таких как перезапись буфера, если программное обеспечение, создаваемое проектом, включает части, написанные на небезопасном языке (например, C или C++). Если проект не создает программное обеспечение, написанное на небезопасном языке, выберите «неприменимо» (N/A). [dynamic_analysis_unsafe]

    Fuzzing is certainly performed quite regularly on FFmpeg: https://security.googleblog.com/2014/01/ffmpeg-and-thousand-fixes.html, http://obe.tv/about-us/obe-blog/item/26-fuzzing-ffmpeg-for-fun-and-profit. Note that this is being done by third parties.



    ЖЕЛАТЕЛЬНО включать в ПО, создаваемое проектом, достаточно много утверждений (assertions) времени выполнения, проверяемых при динамическом анализе. Во многих случаях эти утверждения не должны попадать в сборки под эксплуатацию (production). [dynamic_analysis_enable_assertions]

    FFmpeg uses assertions at various locations in the code (https://git.ffmpeg.org/gitweb/ffmpeg.git/blob/HEAD:/libavutil/random_seed.c).



    Проект ОБЯЗАН своевременно исправлять все уязвимости средней и выше степени серьезности, обнаруженные при динамическом анализе кода, после их подтверждения. [dynamic_analysis_fixed]

    FFmpeg does tend to fix vulnerabilities discovered via dynamic code analysis in a timely fashion: https://security.googleblog.com/2014/01/ffmpeg-and-thousand-fixes.html, http://obe.tv/about-us/obe-blog/item/26-fuzzing-ffmpeg-for-fun-and-profit. Note that is being done by third parties.



Эти данные доступны под лицензией Creative Commons Attribution версии 3.0 (CC-BY-3.0) в соответствии с условиями использования Open Source Security Foundation. Все могут свободно делиться и адаптировать эти данные, но должны указывать соответствующие ссылки. При распространении, пожалуйста, указывайте "Ganesh Ajjanagadde and the OpenSSF Best Practices badge contributors".
Владелец анкеты на значок проекта: Ganesh Ajjanagadde.
2016-07-04 19:43:22 UTC, последнее изменение сделано 2016-07-17 01:18:29 UTC.

Назад