Crypto++

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

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

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

        

 Основы 13/13

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

    Free C++ class library of cryptographic schemes

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


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

    "Free C++ class library of cryptographic schemes", https://cryptopp.com



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

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

    Projects on GitHub by default use issues and pull requests, as encouraged by documentation such as https://guides.github.com/activities/contributing-to-open-source/.



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

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



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

    Public Domain or Boost Software License v1 (BSL-1.0), https://github.com/weidai11/cryptopp/blob/master/License.txt.



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

    Public Domain or Boost Software License v1 (BSL-1.0), https://github.com/weidai11/cryptopp/blob/master/License.txt.



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


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

    Link to Manual on homepage, https://www.cryptopp.com/docs/ref/. Link to wiki with code examples on homepage, https://www.cryptopp.com/wiki/.



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

    Link to Manual on homepage, https://www.cryptopp.com/docs/ref/.


  • Другое


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

    Given only https: URLs.



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

    GitHub supports discussions on issues and pull requests. We also have traditional mailing lists at https://www.cryptopp.com/#lists.



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

    Link to Manual on homepage, https://www.cryptopp.com/docs/ref/. Link to wiki with code examples on homepage, https://www.cryptopp.com/wiki/.



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


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



Crypto++ is one of the oldest projects on the web. It was started by Wei Dai in 1992 and the first public release was 1994. Crypto++ was one of the targets of RSA Data Security Inc (RSA DSI) takedowns due to use of RSA while it was still patented. In June 2015 Wei Dai turned the library over to the community for maintenance.

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


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

    Repository on GitHub, which provides public git repositories with URLs.



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

    Repository on GitHub, which uses git. git can track the changes, who made them, and when they were made.



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

    Crypto++ does not use dead-end branches. It pollutes the Git log history. Instead testing forks are used and proposals are discussed.



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

    Repository on GitHub, which uses git. git is distributed.


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


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

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


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


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

    The README is the primary human readable document. https://github.com/weidai11/cryptopp/blob/master/Readme.txt. Each release has its own HTML page. For example, https://github.com/weidai11/website.



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

    Each release has its own HTML page that highlights CVEs and major problems that were corrected. For example, from https://github.com/weidai11/website/blob/master/release565.html: "Crypto++ 5.6.5 was released on October 11, 2016. The 5.6.5 release was mostly a maintenance release. The release included two CVE fixes." Then, the CVE details are provided.


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


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

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

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

    Typically the projects response time is less than a day. https://github.com/weidai11/cryptopp/issues.



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

    Typically the projects response time is less than a day. https://github.com/weidai11/cryptopp/issues.



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

    GitHub allows searching of past and closed reports. https://github.com/weidai11/cryptopp/issues.


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


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

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

    We do not support private vulnerabilities. As soon as we get a private report we forward it to the mailing list at https://groups.google.com/forum/#!forum/cryptopp-users.



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

    Typically the projects response time is less than a day.


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


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

    Non-trivial build file in repository: https://github.com/weidai11/cryptopp/blob/master/GNUmakefile. The project also supplies Autotools https://github.com/noloader/cryptopp-autotools, CMake https://github.com/noloader/cryptopp-cmake and Visual Studio project files for those who wish to use them.



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

    Non-trivial build file in repository: https://github.com/weidai11/cryptopp/blob/master/GNUmakefile. The project also supplies Autotools, CMake and Visual Studio project files for those who wish to use them.



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

    The project only requires GNU Make. CD into the project directory and run 'make -j 4'. It really is as easy as that. The project also supplies Autotools, CMake and Visual Studio project files for those who wish to use them.


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


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

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

    'make test' and 'make check' work for me. It follows the GNU Coding Standards.



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

    Our test suite is comprised of about 13 source files and covers about 80% of the library.



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


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

    Crypto++ is a library of cryptographic schemes. Our governance requires test coverage for new algorithms and protocols. At minimum, a new algorithm will include Known Answer Tests (KATs). Public Key algorithms will include Pairwise Consistency Tests.



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

    Crypto++ is a library of cryptographic schemes. Our governance requires test coverage for new algorithms and protocols. At minimum, a new algorithm will include Known Answer Tests (KATs). Public Key algorithms will include Pairwise Consistency Tests.



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

    Our governance requires new algorithms have both documentation on the wiki and test cases. We don't add new algorithms without test cases. It is too dangerous.

    It looks like we need to add a wiki page on this topic. I thought we had one, but I cannot find it.


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


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

    Testing includes -Wall -Wextra with GCC and Clang. On Windows, testing include /W4. We also have a test script from hell that builds the project in 50-100 permutations (depending on the platform and features available). The tests from hell include 6 different builds to tease warnings. Also see https://github.com/weidai11/cryptopp/blob/master/TestScripts/cryptest.sh.



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

    Our governance requires us to clear warnings under reasonable flags. To date our "reasonable flags" includes -Wall -Wextra. Otherwise, we get mailing list messages and bug reports for them.



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

    Testing includes -Werror when using GCC and Clang.


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


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

    The development team includes one Security Architect from US Financial and US DoD. The other maintainers have CVs that includes years of cryptography and security experience.

    The library has also been FIPS 140-2 validated by the US government. The FIPS 140-2 validation includes a SP800-56a audit for processes and procedures.



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

    The development team includes includes members of OWASP. The other maintainers have CVs that includes years of cryptography and security experience.

    The library has also been FIPS 140-2 validated by the US government. The FIPS 140-2 validation includes a SP800-56a audit for processes and procedures.


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

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

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

    The library includes well known algorithms, like AES; and lesser known algorithms, like RC6, MARS and Twofish.



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

    The project is a cryptographic library.



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

    The project is a cryptographic library.



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

    When available, the project implements 256-bits of security and above. 256-bits of security exceeds the US government's recommendations on key sizes. Also see https://www.cryptopp.com/wiki/Security_Level.



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

    The project is a cryptographic library. The project includes weak and wounded ciphers for historical reasons and research purposes.

    However, to use a weak or wounded cipher, a user must build the library with -DCRYPTOPP_ENABLE_NAMESPACE_WEAK. The setting is off-by-default. Then, a user can use a weak or wounded cipher within the Weak:: namespace. I.e., Weak::MD2, Weak::MD5, etc.



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

    When available, the project uses 128-bits of security by default. 128-bits of security is the US government's recommendation nowadays.



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

    The project includes ephemeral key exchanges, like DHE and ECDHE.



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

    The library itself does not store secrets, like private keys, shared secrets or passwords. Users may build applications that do so, but the library does not.



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

    The library includes approved software generators like NIST DBRG from SP800-90. The library also includes hardware-based PRNGS, like Padlock, RDRAND, RDSEED and DARN. DARN is the RDRAND equivalent on PowerPC.


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


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

    The project signs its release; see https://www.cryptopp.com/wiki/Release_Signing. The project also uses a trusted distribution channel for downloads using TLS and a Let's Encrypt certificate.



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

    The project's signing algorithm for release tarballs is SHA-256.


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


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

    The project typically responds to bugs within one day. Some patches take longer, but the patches are made available as soon as it is ready (i.e., passes testing).



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

    The project typically responds to bugs within one day. Some patches take longer, but the patches are made available as soon as it is ready (i.e., passes testing).


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


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

    The library does not publish private keys, shared secrets or passwords. Or not that we know of.


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


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

    The project uses Coverity Scan on Linux and OS X. The project uses Visual Studio Enterprise Analysis on Windows. Finally, the project uses the Looks Good To Me continuous security analysis. Also see https://www.cryptopp.com/wiki/Coverity_Scan and https://lgtm.com.



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

    The project uses Coverity Scan on Linux and OS X. The project uses Visual Studio Enterprise Analysis on Windows. Finally, the project uses the Looks Good To Me continuous security analysis. Also see https://www.cryptopp.com/wiki/Coverity_Scan and https://lgtm.com.



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

    The project typically responds to analysis findings within a hour when run manually, or within a day when reported by a user.



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

    Source code analysis is limited to weekly testing due to limits Synopsis places on the free Security Scan service. I.e., the project is only allowed 12 scans a week. We need to save the extra scans for reproducers and retesting.

    Looks Good To Me continuous security analysis is unlimited, but it is not as good as Coverity.


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


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

    The project uses Valgrind and Sanitizers to test for runtime violations. Valgrind detects memory and thread problems. Santiziers include Asan, Msan and UBsan.

    The projects self tests also "fuzz" certain interfaces attempting to crash the test suite. The fuzzing occurs under Valgrind, Asan and Msan.



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

    The project uses Valgrind and Sanitizers to test for runtime violations. Valgrind detects memory and thread problems. Santiziers include Asan, Msan and UBsan.

    The projects self tests also "fuzz" certain interfaces attempting to crash the test suite. The fuzzing occurs under Valgrind, Asan and Msan.



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

    Debug builds of the project includes asserts to aide the developer in finding mistakes.

    Release builds are built with -DNDEBUG and will NEVER asset. The library will validate the parameters and/or state and throw an exception on failure. Anywhere there is an 'if' statement to validate state includes an assert. Anywhere there is an assert to validate state includes an 'if' statement that throws. They are matched set like bookends.

    The Crypto++ library never asserts in production for five reasons. First, it is the application's authors decision to crash their app. The library does not make policy decisions for the application author.

    Second, some platforms, like Apple iOS, forbid applications from crashing because it degrades the UI experience. In this case, the App Store has set the policy for the application author. The library will not cause an author's app to be rejected from an App Store.

    Third, the library handles sensitive information like private keys, shared secrets and passwords. When an assert fires a core file could be written that includes the sensitive information. That means the sensitive information has been egressed outside the application's security boundary. Folks with access to the mobile device, desktop computer or a computer paired/sync'd with the mobile device will be able to recover the secrets from the filesystem.

    Fourth, the core file, if present, may be shipped to an Error Reporting Service. Now Apple, Google, Fedora, Red Hat, Ubuntu or Microsoft have the user's private keys, shared secrets and passwords. Then the information is then passed onto the developer who has the user's private keys, shared secrets and passwords, too.

    Fifth, asserts destroy most of Confidentiality-Availability-Integrity (CIA). When an assert crashes a program, it (1) may preserve data Integrity at the expense of (2) Confidentiality of the data and (3) Availability of the program or server. If an author wishes to preserve Integrity, he/she/it merely needs to return false in the offending function or call exit(1) without the loss of Confidentiality or Availability.



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

    The project typically responds to analysis findings within a hour when run manually, or within a day when reported by a user.



Эти данные доступны под лицензией Creative Commons Attribution версии 3.0 или более поздней (CC-BY-3.0+). Все могут свободно делиться и адаптировать эти данные, но должны указывать соответствующие ссылки. При распространении, пожалуйста, указывайте "Jeffrey Walton and the OpenSSF Best Practices badge contributors".

Владелец анкеты на значок проекта: Jeffrey Walton.
2020-03-25 18:25:43 UTC, последнее изменение сделано 2020-03-26 03:01:39 UTC. Последний раз условия для получения значка были выполнены 2020-03-25 19:57:57 UTC.

Назад