遵循以下最佳实践的项目将能够自愿的自我认证,并显示他们已经实现了核心基础设施计划(OpenSSF)徽章。 显示详细资料
[](https://www.bestpractices.dev/projects/355)
<a href="https://www.bestpractices.dev/projects/355"><img src="https://www.bestpractices.dev/projects/355/badge"></a>
Libvirt is a free software project providing APIs and tools for managing virtualization technology
https://libvirt.org/hacking.html
The project has a broad core team with rights to approve & commit code https://libvirt.org/git/?p=libvirt.git;a=blob_plain;f=AUTHORS.in;hb=HEAD
The development of project features are a response to requirements of individual contributors working on the project. The project thus has no need to provide a formal roadmap for the project as a whole
The project is a program library, so user interface interaction is the concern of applications above.
Translations are maintained across many languages https://libvirt.org/git/?p=libvirt.git;a=tree;f=po;hb=HEAD
The primary dev host uses /etc/shadow standard hashing scheme. The wiki based on mediawiki has salted md5 hashes only.
Every release is required to be a drop-in upgrade from the previous version. The library promises API & ABI compatibility.
https://libvirt.org/bugs.html
All security vulnerabilities are recorded in machine readable XML format with full history of the flaw http://libvirt.org/git/?p=libvirt-security-notice.git;a=tree
https://libvirt.org/securityprocess.html
Coding guidelines are primarily documented in the website https://libvirt.org/hacking.html but also replicated in the source reop
The project uses the GNULIB 'syntax-check' facility for validating coding styles where practical, along with custom written tools for more complex scenarios
The configure script & makefile will honour flags set by the user. This is used during RPM builds
Debugging symbols are enabled by default in all builds
The project is built & installed with GNU autotools, and available for all major Linux distros in their native packaging format, and for Windows using an MSI installer
The build system honours DESTDIR and this is validated by RPM builds
The project uses standard GNU autotools framework that allows easy install & test. It can also correctly operate if run from the build directory without install
The project aims to avoid using dangerous libc APIs where practical (ie all non-reentrant APIs are forbidden). Other dangerous/easily misused APIs (malloc/free) are wrapped in higher level safe constructs to provide compile time guarantees of correct usage.
The CI system runs across all commits in git master branches https://ci.centos.org/view/libvirt/
The code is required to be 100% warning free at all times, as it builds with -Werror https://libvirt.org/git/?p=libvirt.git;a=blob;f=m4/virt-compile-warnings.m4;hb=HEAD
Access to the APIs requires authentication by default when accessing any privileged resources. The network listener service requires TLS by default. Internal APIs are designed to be robust against incorrect usage in key areas.
The default network facing protocols all work with strong cryptographic algorithms by default. Some optional features may still make use of MD5 in non-network scenarios due to need for interoperability with 3rd party software, but this is not required by default.
The use of GNUTLS is controlled by system crypto configuration policies which can be changed by the local admin whenever required.
API authentication is delegated to external libraries (SASL, Kerberos, etc).
Storage of passwords for VMs is handled out of band from the main VM configuration to avoid credential compromise in logs
The network protocol is configured to require TLS by default, requiring explicit admin action to disable it
The project relies on GNUTLS which enables TLS 1.2 by default
The project always performs TLS x509 certification verification unless explicitly instructed not to
The TLS handshake and verification must be completed before any protocol level traffic is sent
The API and RPC layers both do validation of user input to reject incorrect/unsafe defaults.
The project builds with compiler & linker hardening flags enabled by default
The coverity tool is also run against the codebase nightly
The project makes use of valgrind to analyse code, and enables make compiler protections during build including _FORTIFY_SOURCE which does runtime bounds checks in key syscalls.
后退