|
1 | 1 | Dependencies |
2 | 2 | ============ |
3 | 3 |
|
4 | | -This page describes dependency monitoring and container vulnerability scanning. |
5 | | -For published release artifacts, SBOMs, signatures, and provenance |
6 | | -attestations, see :doc:`release-artifacts`. |
| 4 | +This page describes dependency inventory, vulnerability monitoring, dependency |
| 5 | +triage, and container vulnerability scanning. For published release artifacts, |
| 6 | +SBOMs, signatures, and provenance attestations, see |
| 7 | +:doc:`release-artifacts`. |
| 8 | + |
| 9 | +Dependency inventory |
| 10 | +-------------------- |
| 11 | + |
| 12 | +Weblate dependency information is maintained in several repository files: |
| 13 | + |
| 14 | +* Python dependencies are declared in :file:`pyproject.toml` and resolved in |
| 15 | + :file:`uv.lock`. |
| 16 | +* Frontend dependencies are declared in :file:`client/package.json` and |
| 17 | + resolved in :file:`client/yarn.lock`. |
| 18 | +* Vendored frontend libraries and generated license data are documented in |
| 19 | + :doc:`/contributing/submodules`. |
| 20 | +* Release SBOMs are published for Weblate releases as described in |
| 21 | + :ref:`sbom`. |
| 22 | +* Docker image and Helm chart dependencies are maintained in the |
| 23 | + Weblate-owned Docker and Helm repositories listed in |
| 24 | + :ref:`release-artifact-inventory`. |
| 25 | + |
| 26 | +The dependency ranges in :file:`pyproject.toml` describe the supported runtime |
| 27 | +requirements. The lock files describe the tested dependency set used by CI and |
| 28 | +release automation. |
7 | 29 |
|
8 | 30 | Tracking dependencies for vulnerabilities |
9 | 31 | ----------------------------------------- |
10 | 32 |
|
11 | | -Security issues in our dependencies are monitored using `Renovate`_. This |
12 | | -covers the Python and JavaScript libraries, and the latest stable release has |
13 | | -its dependencies updated to avoid vulnerabilities. |
| 33 | +Security issues in Weblate dependencies are monitored using `Renovate`_, |
| 34 | +GitHub dependency review, FOSSA_, release SBOMs, and container vulnerability |
| 35 | +scans. |
| 36 | + |
| 37 | +The Weblate repositories extend the shared Renovate preset from |
| 38 | +`WeblateOrg/meta`_. That preset enables the dependency dashboard, OSV |
| 39 | +vulnerability alerts, platform vulnerability alerts, semantic dependency |
| 40 | +commits, and Renovate custom managers for GitHub Actions, Dockerfiles, Helm |
| 41 | +chart application versions, and other pinned tool versions. It also configures |
| 42 | +selected package grouping, schedules, and automerge behavior. |
| 43 | + |
| 44 | +This repository adds ``main`` and ``stable`` as Renovate base branches. |
| 45 | +General dependency updates and lockfile maintenance are disabled on |
| 46 | +``stable``; security update coverage for Weblate releases is described in |
| 47 | +:ref:`security-updates`. |
| 48 | + |
| 49 | +GitHub dependency review runs on pull requests to show dependency changes |
| 50 | +before they are merged. FOSSA runs on pushes to ``main`` and records scan |
| 51 | +and policy-test results in the FOSSA service. |
| 52 | + |
| 53 | +Dependency vulnerability triage |
| 54 | +------------------------------- |
| 55 | + |
| 56 | +When a dependency vulnerability is reported by Renovate, GitHub dependency |
| 57 | +review, FOSSA, a release SBOM review, a container scan, or a vulnerability |
| 58 | +report, maintainers evaluate whether it affects Weblate. The triage checks |
| 59 | +include: |
| 60 | + |
| 61 | +* whether the affected dependency and version are used by Weblate, a published |
| 62 | + release artifact, or a maintained deployment artifact; |
| 63 | +* whether the vulnerable code path is reachable through supported Weblate |
| 64 | + functionality or supported deployment modes; |
| 65 | +* whether the issue is in Weblate's use of the dependency or should be |
| 66 | + reported to the upstream project; |
| 67 | +* whether a dependency update, configuration change, mitigation, advisory, or |
| 68 | + Weblate security update is needed. |
14 | 69 |
|
15 | 70 | .. hint:: |
16 | 71 |
|
17 | 72 | There might be vulnerabilities in third-party libraries which do not affect |
18 | 73 | Weblate, so those are not addressed by releasing bugfix versions of Weblate. |
19 | 74 |
|
| 75 | +Dependency and lockfile maintenance |
| 76 | +----------------------------------- |
| 77 | + |
| 78 | +The Python lock file is maintained by the ``uv lock update`` workflow. The |
| 79 | +frontend dependency lock file and vendored frontend files are maintained by the |
| 80 | +``yarn update`` workflow. |
| 81 | + |
| 82 | +Generated maintenance changes are passed through the ``Apply maintenance |
| 83 | +patch`` workflow. That workflow applies only validated patch artifacts and |
| 84 | +limits the paths that each maintenance workflow is allowed to update. |
| 85 | + |
20 | 86 | Docker container security |
21 | 87 | ------------------------- |
22 | 88 |
|
23 | 89 | The Weblate and Weblate Client Docker containers are scanned for security |
24 | 90 | vulnerabilities in CI. This allows us to detect vulnerabilities early and |
25 | 91 | release improvements quickly. |
26 | 92 |
|
27 | | -You can get the results of these scans at GitHub — they are stored as artifacts |
28 | | -on our CI as :abbr:`SARIF (Static Analysis Results Interchange Format)`. |
| 93 | +The inspected Weblate Docker and Weblate Client workflows scan built container |
| 94 | +images with Anchore_ and Trivy_. Results are uploaded to GitHub code scanning |
| 95 | +as :abbr:`SARIF (Static Analysis Results Interchange Format)` data. The |
| 96 | +inspected workflows also store Trivy SARIF artifacts, and the Weblate Client |
| 97 | +workflow stores Anchore SARIF artifacts. |
| 98 | + |
| 99 | +Known external policy details |
| 100 | +----------------------------- |
| 101 | + |
| 102 | +Some dependency and vulnerability-management details are maintained outside |
| 103 | +this documentation: |
| 104 | + |
| 105 | +* complete Renovate behavior is defined in the shared `WeblateOrg/meta`_ |
| 106 | + preset and repository platform settings; |
| 107 | +* GitHub dependency graph, Dependabot alert, and branch-protection state are |
| 108 | + GitHub platform configuration; |
| 109 | +* FOSSA result history and policy thresholds are stored in FOSSA; |
| 110 | +* scanner output is stored in GitHub code scanning and workflow artifacts. |
29 | 111 |
|
30 | 112 | .. seealso:: |
31 | 113 |
|
32 | 114 | * :ref:`ci-tests` |
33 | | - * `Renovate <https://www.mend.io/renovate/>`_ |
34 | | - * `Anchore <https://anchore.com/>`_ |
| 115 | + * Renovate_ |
| 116 | + * `GitHub dependency review`_ |
| 117 | + * FOSSA_ |
| 118 | + * Anchore_ |
35 | 119 | * Trivy_ |
36 | 120 |
|
37 | 121 | .. _Renovate: https://www.mend.io/renovate/ |
| 122 | +.. _WeblateOrg/meta: https://github.com/WeblateOrg/meta |
| 123 | +.. _GitHub dependency review: https://github.com/actions/dependency-review-action |
| 124 | +.. _FOSSA: https://fossa.com/ |
| 125 | +.. _Anchore: https://anchore.com/ |
38 | 126 | .. _Trivy: https://github.com/aquasecurity/trivy |
0 commit comments