Skip to content

Commit

Permalink
pam: patch CVE-2024-22365 (#8320)
Browse files Browse the repository at this point in the history
  • Loading branch information
Redent0r authored Mar 8, 2024
1 parent d8b5778 commit 88d859e
Show file tree
Hide file tree
Showing 4 changed files with 70 additions and 10 deletions.
55 changes: 55 additions & 0 deletions SPECS/pam/CVE-2024-22365.patch
Original file line number Diff line number Diff line change
@@ -0,0 +1,55 @@
From 031bb5a5d0d950253b68138b498dc93be69a64cb Mon Sep 17 00:00:00 2001
From: Matthias Gerstner <matthias.gerstner@suse.de>
Date: Wed, 27 Dec 2023 14:01:59 +0100
Subject: [PATCH] pam_namespace: protect_dir(): use O_DIRECTORY to prevent
local DoS situations

Without O_DIRECTORY the path crawling logic is subject to e.g. FIFOs
being placed in user controlled directories, causing the PAM module to
block indefinitely during `openat()`.

Pass O_DIRECTORY to cause the `openat()` to fail if the path does not
refer to a directory.

With this the check whether the final path element is a directory
becomes unnecessary, drop it.
---
modules/pam_namespace/pam_namespace.c | 18 +-----------------
1 file changed, 1 insertion(+), 17 deletions(-)

diff --git a/modules/pam_namespace/pam_namespace.c b/modules/pam_namespace/pam_namespace.c
index 2528cff86..f72d67189 100644
--- a/modules/pam_namespace/pam_namespace.c
+++ b/modules/pam_namespace/pam_namespace.c
@@ -1201,7 +1201,7 @@ static int protect_dir(const char *path, mode_t mode, int do_mkdir,
int dfd = AT_FDCWD;
int dfd_next;
int save_errno;
- int flags = O_RDONLY;
+ int flags = O_RDONLY | O_DIRECTORY;
int rv = -1;
struct stat st;

@@ -1255,22 +1255,6 @@ static int protect_dir(const char *path, mode_t mode, int do_mkdir,
rv = openat(dfd, dir, flags);
}

- if (rv != -1) {
- if (fstat(rv, &st) != 0) {
- save_errno = errno;
- close(rv);
- rv = -1;
- errno = save_errno;
- goto error;
- }
- if (!S_ISDIR(st.st_mode)) {
- close(rv);
- errno = ENOTDIR;
- rv = -1;
- goto error;
- }
- }
-
if (flags & O_NOFOLLOW) {
/* we are inside user-owned dir - protect */
if (protect_mount(rv, p, idata) == -1) {
9 changes: 7 additions & 2 deletions SPECS/pam/pam.spec
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
Summary: Linux Pluggable Authentication Modules
Name: pam
Version: 1.5.1
Release: 5%{?dist}
Release: 6%{?dist}
License: BSD and GPLv2+
URL: https://github.com/linux-pam/linux-pam
Source0: https://github.com/linux-pam/linux-pam/releases/download/v%{version}/Linux-PAM-%{version}.tar.xz
Expand All @@ -14,6 +14,8 @@ BuildRequires: audit-devel
Requires: audit-libs
Recommends: cracklib-dicts

Patch0: CVE-2024-22365.patch

%description
The Linux PAM package contains Pluggable Authentication Modules used to
enable the local system administrator to choose how applications authenticate users.
Expand All @@ -36,7 +38,7 @@ This package contains libraries, header files and documentation
for developing applications that use pam.

%prep
%autosetup -n Linux-PAM-%{version}
%autosetup -n Linux-PAM-%{version} -p1

%build
./configure \
Expand Down Expand Up @@ -98,6 +100,9 @@ EOF
%{_docdir}/%{name}-%{version}/*

%changelog
* Fri Mar 08 2024 Saul Paredes <saulparedes@microsoft.com> - 1.5.1-6
- Add patch for CVE-2024-22365

* Tue Mar 22 2022 Andrew Phelps <anphel@microsoft.com> - 1.5.1-5
- Require audit-libs

Expand Down
8 changes: 4 additions & 4 deletions toolkit/resources/manifests/package/toolchain_aarch64.txt
Original file line number Diff line number Diff line change
Expand Up @@ -281,10 +281,10 @@ p11-kit-debuginfo-0.24.1-1.cm2.aarch64.rpm
p11-kit-devel-0.24.1-1.cm2.aarch64.rpm
p11-kit-server-0.24.1-1.cm2.aarch64.rpm
p11-kit-trust-0.24.1-1.cm2.aarch64.rpm
pam-1.5.1-5.cm2.aarch64.rpm
pam-debuginfo-1.5.1-5.cm2.aarch64.rpm
pam-devel-1.5.1-5.cm2.aarch64.rpm
pam-lang-1.5.1-5.cm2.aarch64.rpm
pam-1.5.1-6.cm2.aarch64.rpm
pam-debuginfo-1.5.1-6.cm2.aarch64.rpm
pam-devel-1.5.1-6.cm2.aarch64.rpm
pam-lang-1.5.1-6.cm2.aarch64.rpm
patch-2.7.6-8.cm2.aarch64.rpm
patch-debuginfo-2.7.6-8.cm2.aarch64.rpm
pcre-8.45-2.cm2.aarch64.rpm
Expand Down
8 changes: 4 additions & 4 deletions toolkit/resources/manifests/package/toolchain_x86_64.txt
Original file line number Diff line number Diff line change
Expand Up @@ -287,10 +287,10 @@ p11-kit-debuginfo-0.24.1-1.cm2.x86_64.rpm
p11-kit-devel-0.24.1-1.cm2.x86_64.rpm
p11-kit-server-0.24.1-1.cm2.x86_64.rpm
p11-kit-trust-0.24.1-1.cm2.x86_64.rpm
pam-1.5.1-5.cm2.x86_64.rpm
pam-debuginfo-1.5.1-5.cm2.x86_64.rpm
pam-devel-1.5.1-5.cm2.x86_64.rpm
pam-lang-1.5.1-5.cm2.x86_64.rpm
pam-1.5.1-6.cm2.x86_64.rpm
pam-debuginfo-1.5.1-6.cm2.x86_64.rpm
pam-devel-1.5.1-6.cm2.x86_64.rpm
pam-lang-1.5.1-6.cm2.x86_64.rpm
patch-2.7.6-8.cm2.x86_64.rpm
patch-debuginfo-2.7.6-8.cm2.x86_64.rpm
pcre-8.45-2.cm2.x86_64.rpm
Expand Down

0 comments on commit 88d859e

Please sign in to comment.