mirror of
https://sourceware.org/git/glibc.git
synced 2024-11-24 05:50:14 +00:00
Update advisory format and introduce some automation
Simplify the advisory format by dropping the -Backport tags and instead stick to using just the -Commit tags. To identify backports, put a substring of git-describe into the release version in the brackets next to the commit ref. This way, it not only identifies that the fix (or regression) is on the release/2.YY/master branch, it also disambiguates regressions/fixes in the branch from those in the tarball. Add a README to make it easier for consumers to understand the format. Additionally, the Release wiki needs to be updated to inform the release manager to: 1. Generate a NEWS snipped from the advisories directory AND 2. on release/2.YY/master, replace the advisories directory with a text file pointing to the advisories directory in master so that we don't have to update multiple locations. Signed-off-by: Siddhesh Poyarekar <siddhesh@sourceware.org> Reviewed-by: Andreas K. Hüttel <dilfridge@gentoo.org>
This commit is contained in:
parent
6cdc442142
commit
443c10018c
@ -11,4 +11,4 @@ CVE-Id: CVE-2023-25139
|
|||||||
Public-Date: 2023-02-02
|
Public-Date: 2023-02-02
|
||||||
Vulnerable-Commit: e88b9f0e5cc50cab57a299dc7efe1a4eb385161d (2.37)
|
Vulnerable-Commit: e88b9f0e5cc50cab57a299dc7efe1a4eb385161d (2.37)
|
||||||
Fix-Commit: c980549cc6a1c03c23cc2fe3e7b0fe626a0364b0 (2.38)
|
Fix-Commit: c980549cc6a1c03c23cc2fe3e7b0fe626a0364b0 (2.38)
|
||||||
Fix-Backport: 07b9521fc6369d000216b96562ff7c0ed32a16c4 (2.37)
|
Fix-Commit: 07b9521fc6369d000216b96562ff7c0ed32a16c4 (2.37-4)
|
||||||
|
@ -10,6 +10,6 @@ CVE-Id: CVE-2023-4527
|
|||||||
Public-Date: 2023-09-12
|
Public-Date: 2023-09-12
|
||||||
Vulnerable-Commit: f282cdbe7f436c75864e5640a409a10485e9abb2 (2.36)
|
Vulnerable-Commit: f282cdbe7f436c75864e5640a409a10485e9abb2 (2.36)
|
||||||
Fix-Commit: bd77dd7e73e3530203be1c52c8a29d08270cb25d (2.39)
|
Fix-Commit: bd77dd7e73e3530203be1c52c8a29d08270cb25d (2.39)
|
||||||
Fix-Backport: 4ea972b7edd7e36610e8cde18bf7a8149d7bac4f (2.36)
|
Fix-Commit: 4ea972b7edd7e36610e8cde18bf7a8149d7bac4f (2.36-113)
|
||||||
Fix-Backport: b7529346025a130fee483d42178b5c118da971bb (2.37)
|
Fix-Commit: b7529346025a130fee483d42178b5c118da971bb (2.37-38)
|
||||||
Fix-Backport: b25508dd774b617f99419bdc3cf2ace4560cd2d6 (2.38)
|
Fix-Commit: b25508dd774b617f99419bdc3cf2ace4560cd2d6 (2.38-19)
|
||||||
|
@ -8,8 +8,8 @@ arbitrary memory.
|
|||||||
CVE-Id: CVE-2023-4806
|
CVE-Id: CVE-2023-4806
|
||||||
Public-Date: 2023-09-12
|
Public-Date: 2023-09-12
|
||||||
Fix-Commit: 973fe93a5675c42798b2161c6f29c01b0e243994 (2.39)
|
Fix-Commit: 973fe93a5675c42798b2161c6f29c01b0e243994 (2.39)
|
||||||
Fix-Backport: e09ee267c03e3150c2c9ba28625ab130705a485e (2.34)
|
Fix-Commit: e09ee267c03e3150c2c9ba28625ab130705a485e (2.34-420)
|
||||||
Fix-Backport: e3ccb230a961b4797510e6a1f5f21fd9021853e7 (2.35)
|
Fix-Commit: e3ccb230a961b4797510e6a1f5f21fd9021853e7 (2.35-270)
|
||||||
Fix-Backport: a9728f798ec7f05454c95637ee6581afaa9b487d (2.36)
|
Fix-Commit: a9728f798ec7f05454c95637ee6581afaa9b487d (2.36-115)
|
||||||
Fix-Backport: 6529a7466c935f36e9006b854d6f4e1d4876f942 (2.37)
|
Fix-Commit: 6529a7466c935f36e9006b854d6f4e1d4876f942 (2.37-39)
|
||||||
Fix-Backport: 00ae4f10b504bc4564e9f22f00907093f1ab9338 (2.38)
|
Fix-Commit: 00ae4f10b504bc4564e9f22f00907093f1ab9338 (2.38-20)
|
||||||
|
@ -9,8 +9,8 @@ CVE-Id: CVE-2023-4911
|
|||||||
Public-Date: 2023-10-03
|
Public-Date: 2023-10-03
|
||||||
Vulnerable-Commit: 2ed18c5b534d9e92fc006202a5af0df6b72e7aca (2.34)
|
Vulnerable-Commit: 2ed18c5b534d9e92fc006202a5af0df6b72e7aca (2.34)
|
||||||
Fix-Commit: 1056e5b4c3f2d90ed2b4a55f96add28da2f4c8fa (2.39)
|
Fix-Commit: 1056e5b4c3f2d90ed2b4a55f96add28da2f4c8fa (2.39)
|
||||||
Fix-Backport: dcc367f148bc92e7f3778a125f7a416b093964d9 (2.34)
|
Fix-Commit: dcc367f148bc92e7f3778a125f7a416b093964d9 (2.34-423)
|
||||||
Fix-Backport: c84018a05aec80f5ee6f682db0da1130b0196aef (2.35)
|
Fix-Commit: c84018a05aec80f5ee6f682db0da1130b0196aef (2.35-274)
|
||||||
Fix-Backport: 22955ad85186ee05834e47e665056148ca07699c (2.36)
|
Fix-Commit: 22955ad85186ee05834e47e665056148ca07699c (2.36-118)
|
||||||
Fix-Backport: b4e23c75aea756b4bddc4abcf27a1c6dca8b6bd3 (2.37)
|
Fix-Commit: b4e23c75aea756b4bddc4abcf27a1c6dca8b6bd3 (2.37-45)
|
||||||
Fix-Backport: 750a45a783906a19591fb8ff6b7841470f1f5701 (2.38)
|
Fix-Commit: 750a45a783906a19591fb8ff6b7841470f1f5701 (2.38-27)
|
||||||
|
@ -6,15 +6,13 @@ flags set.
|
|||||||
|
|
||||||
CVE-Id: CVE-2023-5156
|
CVE-Id: CVE-2023-5156
|
||||||
Public-Date: 2023-09-25
|
Public-Date: 2023-09-25
|
||||||
Vulnerable-Commit: 973fe93a5675c42798b2161c6f29c01b0e243994 (pre-2.39)
|
Vulnerable-Commit: e09ee267c03e3150c2c9ba28625ab130705a485e (2.34-420)
|
||||||
Fix-Commit: ec6b95c3303c700eb89eebeda2d7264cc184a796 (2.39)
|
Vulnerable-Commit: e3ccb230a961b4797510e6a1f5f21fd9021853e7 (2.35-270)
|
||||||
Vulnerable-Backport: e09ee267c03e3150c2c9ba28625ab130705a485e (2.34)
|
Vulnerable-Commit: a9728f798ec7f05454c95637ee6581afaa9b487d (2.36-115)
|
||||||
Vulnerable-Backport: e3ccb230a961b4797510e6a1f5f21fd9021853e7 (2.35)
|
Vulnerable-Commit: 6529a7466c935f36e9006b854d6f4e1d4876f942 (2.37-39)
|
||||||
Vulnerable-Backport: a9728f798ec7f05454c95637ee6581afaa9b487d (2.36)
|
Vulnerable-Commit: 00ae4f10b504bc4564e9f22f00907093f1ab9338 (2.38-20)
|
||||||
Vulnerable-Backport: 6529a7466c935f36e9006b854d6f4e1d4876f942 (2.37)
|
Fix-Commit: 8006457ab7e1cd556b919f477348a96fe88f2e49 (2.34-421)
|
||||||
Vulnerable-Backport: 00ae4f10b504bc4564e9f22f00907093f1ab9338 (2.38)
|
Fix-Commit: 17092c0311f954e6f3c010f73ce3a78c24ac279a (2.35-272)
|
||||||
Fix-Backport: 8006457ab7e1cd556b919f477348a96fe88f2e49 (2.34)
|
Fix-Commit: 856bac55f98dc840e7c27cfa82262b933385de90 (2.36-116)
|
||||||
Fix-Backport: 17092c0311f954e6f3c010f73ce3a78c24ac279a (2.35)
|
Fix-Commit: 4473d1b87d04b25cdd0e0354814eeaa421328268 (2.37-42)
|
||||||
Fix-Backport: 856bac55f98dc840e7c27cfa82262b933385de90 (2.36)
|
Fix-Commit: 5ee59ca371b99984232d7584fe2b1a758b4421d3 (2.38-24)
|
||||||
Fix-Backport: 4473d1b87d04b25cdd0e0354814eeaa421328268 (2.37)
|
|
||||||
Fix-Backport: 5ee59ca371b99984232d7584fe2b1a758b4421d3 (2.38)
|
|
||||||
|
73
advisories/README
Normal file
73
advisories/README
Normal file
@ -0,0 +1,73 @@
|
|||||||
|
GNU C Library Security Advisory Format
|
||||||
|
======================================
|
||||||
|
|
||||||
|
Security advisories in this directory follow a simple git commit log
|
||||||
|
format, with a heading and free-format description augmented with tags
|
||||||
|
to allow parsing key information. References to code changes are
|
||||||
|
specific to the glibc repository and follow a specific format:
|
||||||
|
|
||||||
|
Tag-name: <commit-ref> (release-version)
|
||||||
|
|
||||||
|
The <commit-ref> indicates a specific commit in the repository. The
|
||||||
|
release-version indicates the publicly consumable release in which this
|
||||||
|
commit is known to exist. The release-version is derived from the
|
||||||
|
git-describe format, (i.e. stripped out from glibc-2.34.NNN-gxxxx) and
|
||||||
|
is of the form 2.34-NNN. If the -NNN suffix is absent, it means that
|
||||||
|
the change is in that release tarball, otherwise the change is on the
|
||||||
|
release/2.YY/master branch and not in any released tarball.
|
||||||
|
|
||||||
|
The following tags are currently being used:
|
||||||
|
|
||||||
|
CVE-Id:
|
||||||
|
This is the CVE-Id assigned under the CVE Program
|
||||||
|
(https://www.cve.org/).
|
||||||
|
|
||||||
|
Public-Date:
|
||||||
|
The date this issue became publicly known.
|
||||||
|
|
||||||
|
Vulnerable-Commit:
|
||||||
|
The commit that introduced this vulnerability. There could be multiple
|
||||||
|
entries, one for each release branch in the glibc repository; the
|
||||||
|
release-version portion of this tag should tell you which branch this is
|
||||||
|
on.
|
||||||
|
|
||||||
|
Fix-Commit:
|
||||||
|
The commit that fixed this vulnerability. There could be multiple
|
||||||
|
entries for each release branch in the glibc repository, indicating that
|
||||||
|
all of those commits contributed to fixing that issue in each of those
|
||||||
|
branches.
|
||||||
|
|
||||||
|
Adding an Advisory
|
||||||
|
------------------
|
||||||
|
|
||||||
|
An advisory for a CVE needs to be added on the master branch in two steps:
|
||||||
|
|
||||||
|
1. Add the text of the advisory without any Fix-Commit tags along with
|
||||||
|
the fix for the CVE. Add the Vulnerable-Commit tag, if applicable.
|
||||||
|
The advisories directory does not exist in release branches, so keep
|
||||||
|
the advisory text commit distinct from the code changes, to ease
|
||||||
|
backports. Ask for the GLIBC-SA advisory number from the security
|
||||||
|
team.
|
||||||
|
|
||||||
|
2. Finish all backports on release branches and then back on the msater
|
||||||
|
branch, add all commit refs to the advisory using the Fix-Commit
|
||||||
|
tags. Don't bother adding the release-version subscript since the
|
||||||
|
next step will overwrite it.
|
||||||
|
|
||||||
|
3. Run the process-advisories.sh script in the scripts directory on the
|
||||||
|
advisory:
|
||||||
|
|
||||||
|
scripts/process-advisories.sh update GLIBC-SA-YYYY-NNNN
|
||||||
|
|
||||||
|
(replace YYYY-NNNN with the actual advisory number).
|
||||||
|
|
||||||
|
4. Verify the updated advisory and push the result.
|
||||||
|
|
||||||
|
Getting a NEWS snippet from advisories
|
||||||
|
--------------------------------------
|
||||||
|
|
||||||
|
Run:
|
||||||
|
|
||||||
|
scripts/process-advisories.sh news
|
||||||
|
|
||||||
|
and copy the content into the NEWS file.
|
85
scripts/process-advisories.sh
Executable file
85
scripts/process-advisories.sh
Executable file
@ -0,0 +1,85 @@
|
|||||||
|
#!/bin/bash -e
|
||||||
|
# Copyright The GNU Toolchain Authors.
|
||||||
|
# This file is part of the GNU C Library.
|
||||||
|
#
|
||||||
|
# The GNU C Library is free software; you can redistribute it and/or
|
||||||
|
# modify it under the terms of the GNU Lesser General Public
|
||||||
|
# License as published by the Free Software Foundation; either
|
||||||
|
# version 2.1 of the License, or (at your option) any later version.
|
||||||
|
#
|
||||||
|
# The GNU C Library is distributed in the hope that it will be useful,
|
||||||
|
# but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||||
|
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
|
||||||
|
# Lesser General Public License for more details.
|
||||||
|
#
|
||||||
|
# You should have received a copy of the GNU Lesser General Public
|
||||||
|
# License along with the GNU C Library; if not, see
|
||||||
|
# <https://www.gnu.org/licenses/>.
|
||||||
|
|
||||||
|
if ! [ -d advisories ]; then
|
||||||
|
echo "error: Run me from the toplevel directory of the glibc repository."
|
||||||
|
exit 1
|
||||||
|
fi
|
||||||
|
|
||||||
|
command=$1
|
||||||
|
|
||||||
|
usage () {
|
||||||
|
cat >&2 <<EOF
|
||||||
|
usage: $0 {update|news}
|
||||||
|
EOF
|
||||||
|
exit 1
|
||||||
|
}
|
||||||
|
|
||||||
|
command="$1"
|
||||||
|
|
||||||
|
case "$command" in
|
||||||
|
update|news)
|
||||||
|
;;
|
||||||
|
*)
|
||||||
|
usage
|
||||||
|
;;
|
||||||
|
esac
|
||||||
|
|
||||||
|
get_rel() {
|
||||||
|
rel=$(git describe $1 | sed 's/glibc-\([^g]\+\)-g.*/\1/')
|
||||||
|
# If the latest tag for the commit is the development tag, then increment
|
||||||
|
# the release version.
|
||||||
|
if echo $rel | grep -q "\.9000"; then
|
||||||
|
rel=$(echo $rel | sed 's/2\.\([0-9]\+\)\.9000.*/\1/')
|
||||||
|
rel="2.$((rel+1))"
|
||||||
|
fi
|
||||||
|
echo $rel
|
||||||
|
}
|
||||||
|
|
||||||
|
advisories_update() {
|
||||||
|
advisory=$1
|
||||||
|
|
||||||
|
if [ -z $1 ]; then
|
||||||
|
echo "Usage: $0 update GLIBC-SA-YYYY-NNNN"
|
||||||
|
exit 1
|
||||||
|
fi
|
||||||
|
|
||||||
|
advisory_file=advisories/$advisory
|
||||||
|
|
||||||
|
grep --color=none Commit $advisory_file | awk '{printf "%s %s\n", $1, $2}' |
|
||||||
|
while read t r; do
|
||||||
|
rel=$(get_rel $r)
|
||||||
|
echo "*** Updating: $t $r ($rel)"
|
||||||
|
sed -i "s/^$t $r.*/$t $r ($rel)/" $advisory_file
|
||||||
|
done
|
||||||
|
}
|
||||||
|
|
||||||
|
advisories_news() {
|
||||||
|
rel=$(get_rel "HEAD")
|
||||||
|
for f in $(grep -l "^Fix-Commit: .* ($rel)$" advisories/*); do
|
||||||
|
echo -e " $(basename $f):"
|
||||||
|
cve_id=$(sed -n 's/CVE-Id: \(.*\)/\1/p' $f)
|
||||||
|
echo "$(head -1 $f) ($cve_id)" | fold -w 68 -s |
|
||||||
|
while read line; do
|
||||||
|
echo " $line"
|
||||||
|
done
|
||||||
|
echo
|
||||||
|
done
|
||||||
|
}
|
||||||
|
|
||||||
|
advisories_$command $2
|
@ -1,41 +0,0 @@
|
|||||||
#!/bin/bash -e
|
|
||||||
# Copyright The GNU Toolchain Authors.
|
|
||||||
# This file is part of the GNU C Library.
|
|
||||||
#
|
|
||||||
# The GNU C Library is free software; you can redistribute it and/or
|
|
||||||
# modify it under the terms of the GNU Lesser General Public
|
|
||||||
# License as published by the Free Software Foundation; either
|
|
||||||
# version 2.1 of the License, or (at your option) any later version.
|
|
||||||
#
|
|
||||||
# The GNU C Library is distributed in the hope that it will be useful,
|
|
||||||
# but WITHOUT ANY WARRANTY; without even the implied warranty of
|
|
||||||
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
|
|
||||||
# Lesser General Public License for more details.
|
|
||||||
#
|
|
||||||
# You should have received a copy of the GNU Lesser General Public
|
|
||||||
# License along with the GNU C Library; if not, see
|
|
||||||
# <https://www.gnu.org/licenses/>.
|
|
||||||
|
|
||||||
if ! [ -d advisories ]; then
|
|
||||||
echo "error: Run me from the toplevel directory of the glibc repository."
|
|
||||||
exit 1
|
|
||||||
fi
|
|
||||||
|
|
||||||
release=$(echo RELEASE | gcc -E -include version.h -o - - | grep -v "^#")
|
|
||||||
minor=$(echo __GLIBC_MINOR__ | gcc -E -include include/features.h -o - - |
|
|
||||||
grep -v "^#")
|
|
||||||
|
|
||||||
if [ $release = "\"development\"" ]; then
|
|
||||||
cur_rel=2.$((minor + 1))
|
|
||||||
else
|
|
||||||
cur_rel=2.$minor
|
|
||||||
fi
|
|
||||||
|
|
||||||
for f in $(grep -l "^Fix-Commit: .* ($cur_rel)$" advisories/*); do
|
|
||||||
echo -e " $(basename $f):"
|
|
||||||
cve_id=$(sed -n 's/CVE-Id: \(.*\)/\1/p' $f)
|
|
||||||
echo "$(head -1 $f) ($cve_id)" | fold -w 68 -s | while read line; do
|
|
||||||
echo " $line"
|
|
||||||
done
|
|
||||||
echo
|
|
||||||
done
|
|
Loading…
Reference in New Issue
Block a user