In the Linux kernel, the following vulnerability has been resolved:
signal: restore the override_rlimit logic
Prior to commit d64696905554 ("Reimplement RLIMITSIGPENDING on top of ucounts") UCOUNTRLIMITSIGPENDING rlimit was not enforced for a class of signals. However now it's enforced unconditionally, even if overriderlimit is set. This behavior change caused production issues.
For example, if the limit is reached and a process receives a SIGSEGV signal, sigqueue_alloc fails to allocate the necessary resources for the signal delivery, preventing the signal from being delivered with siginfo. This prevents the process from correctly identifying the fault address and handling the error. From the user-space perspective, applications are unaware that the limit has been reached and that the siginfo is effectively 'corrupted'. This can lead to unpredictable behavior and crashes, as we observed with java applications.
Fix this by passing overriderlimit into incrlimitgetucounts() and skip the comparison to max there if override_rlimit is set. This effectively restores the old behavior.
[
{
"id": "CVE-2024-50271-07144302",
"deprecated": false,
"signature_version": "v1",
"signature_type": "Function",
"digest": {
"function_hash": "132084890510725153689771828327022298181",
"length": 635.0
},
"target": {
"file": "kernel/signal.c",
"function": "__sigqueue_alloc"
},
"source": "https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git@012f4d5d25e9ef92ee129bd5aa7aa60f692681e1"
},
{
"id": "CVE-2024-50271-181df664",
"deprecated": false,
"signature_version": "v1",
"signature_type": "Line",
"digest": {
"line_hashes": [
"39095355922835260676083069610351203286",
"223427565890967573341311059623403559455",
"194541081075022533891431656382074944644",
"115749887279812414920776819395996772259"
],
"threshold": 0.9
},
"target": {
"file": "include/linux/user_namespace.h"
},
"source": "https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git@012f4d5d25e9ef92ee129bd5aa7aa60f692681e1"
},
{
"id": "CVE-2024-50271-22e69331",
"deprecated": false,
"signature_version": "v1",
"signature_type": "Function",
"digest": {
"function_hash": "123455659241480238097760429142507463348",
"length": 628.0
},
"target": {
"file": "kernel/signal.c",
"function": "__sigqueue_alloc"
},
"source": "https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git@0208ea17a1e4456fbfe555f13ae5c28f3d671e40"
},
{
"id": "CVE-2024-50271-26ec58fc",
"deprecated": false,
"signature_version": "v1",
"signature_type": "Line",
"digest": {
"line_hashes": [
"36126912070512246358985281577055884144",
"66389726350027002192083894487422277419",
"148834704280397570859984081923957603659",
"41336890716717660241385265469743719964"
],
"threshold": 0.9
},
"target": {
"file": "kernel/signal.c"
},
"source": "https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git@4877d9b2a2ebad3ae240127aaa4cb8258b145cf7"
},
{
"id": "CVE-2024-50271-54ccd141",
"deprecated": false,
"signature_version": "v1",
"signature_type": "Line",
"digest": {
"line_hashes": [
"51655664305028347734541480814563008952",
"254738488647635758775365947967649223645",
"160071836762109880746863356781082486198",
"186227638102277759073625667791830985760",
"19974181702821350016143486466423462350",
"180805427221190648352064607491858431757",
"154845088505867046696174967820872489630",
"56670839555568106578231502478262102581"
],
"threshold": 0.9
},
"target": {
"file": "kernel/ucount.c"
},
"source": "https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git@012f4d5d25e9ef92ee129bd5aa7aa60f692681e1"
},
{
"id": "CVE-2024-50271-65ab771d",
"deprecated": false,
"signature_version": "v1",
"signature_type": "Line",
"digest": {
"line_hashes": [
"36126912070512246358985281577055884144",
"66389726350027002192083894487422277419",
"148834704280397570859984081923957603659",
"41336890716717660241385265469743719964"
],
"threshold": 0.9
},
"target": {
"file": "kernel/signal.c"
},
"source": "https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git@012f4d5d25e9ef92ee129bd5aa7aa60f692681e1"
},
{
"id": "CVE-2024-50271-6867c561",
"deprecated": false,
"signature_version": "v1",
"signature_type": "Line",
"digest": {
"line_hashes": [
"39095355922835260676083069610351203286",
"223427565890967573341311059623403559455",
"194541081075022533891431656382074944644",
"115749887279812414920776819395996772259"
],
"threshold": 0.9
},
"target": {
"file": "include/linux/user_namespace.h"
},
"source": "https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git@4877d9b2a2ebad3ae240127aaa4cb8258b145cf7"
},
{
"id": "CVE-2024-50271-6e8ccd58",
"deprecated": false,
"signature_version": "v1",
"signature_type": "Line",
"digest": {
"line_hashes": [
"39095355922835260676083069610351203286",
"223427565890967573341311059623403559455",
"194541081075022533891431656382074944644",
"115749887279812414920776819395996772259"
],
"threshold": 0.9
},
"target": {
"file": "include/linux/user_namespace.h"
},
"source": "https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git@0208ea17a1e4456fbfe555f13ae5c28f3d671e40"
},
{
"id": "CVE-2024-50271-71dbc84d",
"deprecated": false,
"signature_version": "v1",
"signature_type": "Function",
"digest": {
"function_hash": "108804830434180249900123802482346286087",
"length": 562.0
},
"target": {
"file": "kernel/ucount.c",
"function": "inc_rlimit_get_ucounts"
},
"source": "https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git@4877d9b2a2ebad3ae240127aaa4cb8258b145cf7"
},
{
"id": "CVE-2024-50271-78c09302",
"deprecated": false,
"signature_version": "v1",
"signature_type": "Function",
"digest": {
"function_hash": "108804830434180249900123802482346286087",
"length": 562.0
},
"target": {
"file": "kernel/ucount.c",
"function": "inc_rlimit_get_ucounts"
},
"source": "https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git@0208ea17a1e4456fbfe555f13ae5c28f3d671e40"
},
{
"id": "CVE-2024-50271-8720c54e",
"deprecated": false,
"signature_version": "v1",
"signature_type": "Function",
"digest": {
"function_hash": "123455659241480238097760429142507463348",
"length": 628.0
},
"target": {
"file": "kernel/signal.c",
"function": "__sigqueue_alloc"
},
"source": "https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git@9e05e5c7ee8758141d2db7e8fea2cab34500c6ed"
},
{
"id": "CVE-2024-50271-8ddb0ec4",
"deprecated": false,
"signature_version": "v1",
"signature_type": "Function",
"digest": {
"function_hash": "81957258104506348188243343050622809991",
"length": 557.0
},
"target": {
"file": "kernel/ucount.c",
"function": "inc_rlimit_get_ucounts"
},
"source": "https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git@9e05e5c7ee8758141d2db7e8fea2cab34500c6ed"
},
{
"id": "CVE-2024-50271-950612b0",
"deprecated": false,
"signature_version": "v1",
"signature_type": "Function",
"digest": {
"function_hash": "108804830434180249900123802482346286087",
"length": 562.0
},
"target": {
"file": "kernel/ucount.c",
"function": "inc_rlimit_get_ucounts"
},
"source": "https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git@012f4d5d25e9ef92ee129bd5aa7aa60f692681e1"
},
{
"id": "CVE-2024-50271-b35ffef1",
"deprecated": false,
"signature_version": "v1",
"signature_type": "Line",
"digest": {
"line_hashes": [
"36126912070512246358985281577055884144",
"66389726350027002192083894487422277419",
"148834704280397570859984081923957603659",
"41336890716717660241385265469743719964"
],
"threshold": 0.9
},
"target": {
"file": "kernel/signal.c"
},
"source": "https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git@0208ea17a1e4456fbfe555f13ae5c28f3d671e40"
},
{
"id": "CVE-2024-50271-ddf8a4be",
"deprecated": false,
"signature_version": "v1",
"signature_type": "Function",
"digest": {
"function_hash": "132084890510725153689771828327022298181",
"length": 635.0
},
"target": {
"file": "kernel/signal.c",
"function": "__sigqueue_alloc"
},
"source": "https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git@4877d9b2a2ebad3ae240127aaa4cb8258b145cf7"
},
{
"id": "CVE-2024-50271-de60f2df",
"deprecated": false,
"signature_version": "v1",
"signature_type": "Line",
"digest": {
"line_hashes": [
"51655664305028347734541480814563008952",
"254738488647635758775365947967649223645",
"160071836762109880746863356781082486198",
"186227638102277759073625667791830985760",
"19974181702821350016143486466423462350",
"180805427221190648352064607491858431757",
"154845088505867046696174967820872489630",
"56670839555568106578231502478262102581"
],
"threshold": 0.9
},
"target": {
"file": "kernel/ucount.c"
},
"source": "https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git@4877d9b2a2ebad3ae240127aaa4cb8258b145cf7"
},
{
"id": "CVE-2024-50271-e1306def",
"deprecated": false,
"signature_version": "v1",
"signature_type": "Line",
"digest": {
"line_hashes": [
"39095355922835260676083069610351203286",
"223427565890967573341311059623403559455",
"194541081075022533891431656382074944644",
"115749887279812414920776819395996772259"
],
"threshold": 0.9
},
"target": {
"file": "include/linux/user_namespace.h"
},
"source": "https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git@9e05e5c7ee8758141d2db7e8fea2cab34500c6ed"
},
{
"id": "CVE-2024-50271-e6e5892e",
"deprecated": false,
"signature_version": "v1",
"signature_type": "Line",
"digest": {
"line_hashes": [
"51655664305028347734541480814563008952",
"254738488647635758775365947967649223645",
"160071836762109880746863356781082486198",
"186227638102277759073625667791830985760",
"19974181702821350016143486466423462350",
"180805427221190648352064607491858431757",
"154845088505867046696174967820872489630",
"56670839555568106578231502478262102581"
],
"threshold": 0.9
},
"target": {
"file": "kernel/ucount.c"
},
"source": "https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git@0208ea17a1e4456fbfe555f13ae5c28f3d671e40"
},
{
"id": "CVE-2024-50271-fee236cd",
"deprecated": false,
"signature_version": "v1",
"signature_type": "Line",
"digest": {
"line_hashes": [
"36126912070512246358985281577055884144",
"66389726350027002192083894487422277419",
"148834704280397570859984081923957603659",
"41336890716717660241385265469743719964"
],
"threshold": 0.9
},
"target": {
"file": "kernel/signal.c"
},
"source": "https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git@9e05e5c7ee8758141d2db7e8fea2cab34500c6ed"
},
{
"id": "CVE-2024-50271-ff41dbe7",
"deprecated": false,
"signature_version": "v1",
"signature_type": "Line",
"digest": {
"line_hashes": [
"51655664305028347734541480814563008952",
"254738488647635758775365947967649223645",
"160071836762109880746863356781082486198",
"186227638102277759073625667791830985760",
"203964376734269470865601464930547029767",
"180805427221190648352064607491858431757",
"154845088505867046696174967820872489630",
"56670839555568106578231502478262102581"
],
"threshold": 0.9
},
"target": {
"file": "kernel/ucount.c"
},
"source": "https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git@9e05e5c7ee8758141d2db7e8fea2cab34500c6ed"
}
]