Skip to content
Heist/ feed
Back to feed
MediumFix available

linux — security advisory

Type: advisorySources: OSVAdvisory ID: DEBIAN-CVE-2024-47706

In the Linux kernel, the following vulnerability has been resolved: block, bfq: fix possible UAF for bfqq->bic with merge chain 1) initial state, three tasks: Process 1 Process 2 Process 3 (BIC1) (BIC2) (BIC3) | Λ | Λ | Λ | | | | | | V | V | V | bfqq1 bfqq2 bfqq3 process ref: 1 1 1 2) bfqq1 merged to bfqq2: Process 1 Process 2 Process 3 (BIC1) (BIC2) (BIC3) | | | Λ \--------------\| | | V V | bfqq1--------->bfqq2 bfqq3 process ref: 0 2 1 3) bfqq2 merged to bfqq3: Process 1 Process 2 Process 3 (BIC1) (BIC2) (BIC3) here -> Λ | | \--------------\ \-------------\| V V bfqq1--------->bfqq2---------->bfqq3 process ref: 0 1 3 In this case, IO from Process 1 will get bfqq2 from BIC1 first, and then get bfqq3 through merge chain, and finially handle IO by bfqq3. Howerver, current code will think bfqq2 is owned by BIC1, like initial state, and set bfqq2->bic to BIC1. bfq_insert_request -> by Process 1 bfqq = bfq_init_rq(rq) bfqq = bfq_get_bfqq_handle_split bfqq = bic_to_bfqq -> get bfqq2 from BIC1 bfqq->ref++ rq->elv.priv[0] = bic rq->elv.priv[1] = bfqq if (bfqq_process_refs(bfqq) == 1) bfqq->bic = bic -> record BIC1 to bfqq2 __bfq_insert_request new_bfqq = bfq_setup_cooperator -> get bfqq3 from bfqq2->new_bfqq bfqq_request_freed(bfqq) new_bfqq->ref++ rq->elv.priv[1] = new_bfqq -> handle IO by bfqq3 Fix the problem by checking bfqq is from merge chain fist. And this might fix a following problem reported by our syzkaller(unreproducible): ================================================

Products
linux
Affected versions
6.1.106-1, 6.1.106-2, 6.1.106-3, 6.1.112-1, 6.1.27-1, 6.1.37-1, 6.1.38-1, 6.1.38-2, 6.1.38-2~bpo11+1, 6.1.38-3, 6.1.38-4, 6.1.38-4~bpo11+1, 6.1.52-1, 6.1.55-1, 6.1.55-1~bpo11+1, 6.1.64-1, 6.1.66-1, 6.1.67-1, 6.1.69-1, 6.1.69-1~bpo11+1, 6.1.76-1, 6.1.76-1~bpo11+1, 6.1.82-1, 6.1.85-1, 6.1.90-1, 6.1.90-1~bpo11+1, 6.1.94-1, 6.1.94-1~bpo11+1, 6.1.98-1, 6.1.99-1
Fixed versions
6.1.115-1, 6.11.2-1
CVEs
CVE-2024-47706
Confirmed fixed CVEs
Not specified
Updated in this feed
30 Oct 2026, 16:55 UTC · Revision 1

Source evidence

DEBIAN-CVE-2024-47706

core-osv · Original source

Published 21 Oct 2024, 12:15 UTC

In the Linux kernel, the following vulnerability has been resolved: block, bfq: fix possible UAF for bfqq->bic with merge chain 1) initial state, three tasks: Process 1 Process 2 Process 3 (BIC1) (BIC2) (BIC3) | Λ | Λ | Λ | | | | | | V | V | V | bfqq1 bfqq2 bfqq3 process ref: 1 1 1 2) bfqq1 merged to bfqq2: Process 1 Process 2 Process 3 (BIC1) (BIC2) (BIC3) | | | Λ \--------------\| | | V V | bfqq1--------->bfqq2 bfqq3 process ref: 0 2 1 3) bfqq2 merged to bfqq3: Process 1 Process 2 Process 3 (BIC1) (BIC2) (BIC3) here -> Λ | | \--------------\ \-------------\| V V bfqq1--------->bfqq2---------->bfqq3 process ref: 0 1 3 In this case, IO from Process 1 will get bfqq2 from BIC1 first, and then get bfqq3 through merge chain, and finially handle IO by bfqq3. Howerver, current code will think bfqq2 is owned by BIC1, like initial state, and set bfqq2->bic to BIC1. bfq_insert_request -> by Process 1 bfqq = bfq_init_rq(rq) bfqq = bfq_get_bfqq_handle_split bfqq = bic_to_bfqq -> get bfqq2 from BIC1 bfqq->ref++ rq->elv.priv[0] = bic rq->elv.priv[1] = bfqq if (bfqq_process_refs(bfqq) == 1) bfqq->bic = bic -> record BIC1 to bfqq2 __bfq_insert_request new_bfqq = bfq_setup_cooperator -> get bfqq3 from bfqq2->new_bfqq bfqq_request_freed(bfqq) new_bfqq->ref++ rq->elv.priv[1] = new_bfqq -> handle IO by bfqq3 Fix the problem by checking bfqq is from merge chain fist. And this might fix a following problem reported by our syzkaller(unreproducible): ================================================

osv:DEBIAN-CVE-2024-47706

linux

Fixed versions: 6.1.115-1

linux

Fixed versions: 6.11.2-1

linux

Fixed versions: 6.11.2-1

Complete source record
{
  "id": "fcc381f29b1201a4be08181913691da719cbb000e9f1712fad78ffae68b3a15a",
  "url": "https://osv.dev/vulnerability/DEBIAN-CVE-2024-47706",
  "method": "structured",
  "payload": {
    "kind": "advisory",
    "title": "DEBIAN-CVE-2024-47706",
    "summary": "In the Linux kernel, the following vulnerability has been resolved: block, bfq: fix possible UAF for bfqq->bic with merge chain 1) initial state, three tasks: Process 1 Process 2 Process 3 (BIC1) (BIC2) (BIC3) | Λ | Λ | Λ | | | | | | V | V | V | bfqq1 bfqq2 bfqq3 process ref: 1 1 1 2) bfqq1 merged to bfqq2: Process 1 Process 2 Process 3 (BIC1) (BIC2) (BIC3) | | | Λ \\--------------\\| | | V V | bfqq1--------->bfqq2 bfqq3 process ref: 0 2 1 3) bfqq2 merged to bfqq3: Process 1 Process 2 Process 3 (BIC1) (BIC2) (BIC3) here -> Λ | | \\--------------\\ \\-------------\\| V V bfqq1--------->bfqq2---------->bfqq3 process ref: 0 1 3 In this case, IO from Process 1 will get bfqq2 from BIC1 first, and then get bfqq3 through merge chain, and finially handle IO by bfqq3. Howerver, current code will think bfqq2 is owned by BIC1, like initial state, and set bfqq2->bic to BIC1. bfq_insert_request -> by Process 1 bfqq = bfq_init_rq(rq) bfqq = bfq_get_bfqq_handle_split bfqq = bic_to_bfqq -> get bfqq2 from BIC1 bfqq->ref++ rq->elv.priv[0] = bic rq->elv.priv[1] = bfqq if (bfqq_process_refs(bfqq) == 1) bfqq->bic = bic -> record BIC1 to bfqq2 __bfq_insert_request new_bfqq = bfq_setup_cooperator -> get bfqq3 from bfqq2->new_bfqq bfqq_request_freed(bfqq) new_bfqq->ref++ rq->elv.priv[1] = new_bfqq -> handle IO by bfqq3 Fix the problem by checking bfqq is from merge chain fist. And this might fix a following problem reported by our syzkaller(unreproducible): ================================================",
    "evidence": "osv:DEBIAN-CVE-2024-47706",
    "products": [
      {
        "name": {
          "value": "linux",
          "evidence": "/affected/0/package/name"
        },
        "prerequisites": [],
        "fixed_versions": [
          {
            "value": "6.1.115-1",
            "evidence": "/affected/0/ranges"
          }
        ],
        "affected_versions": [
          {
            "value": "6.1.106-1",
            "evidence": "/affected/0/versions"
          },
          {
            "value": "6.1.106-2",
            "evidence": "/affected/0/versions"
          },
          {
            "value": "6.1.106-3",
            "evidence": "/affected/0/versions"
          },
          {
            "value": "6.1.112-1",
            "evidence": "/affected/0/versions"
          },
          {
            "value": "6.1.27-1",
            "evidence": "/affected/0/versions"
          },
          {
            "value": "6.1.37-1",
            "evidence": "/affected/0/versions"
          },
          {
            "value": "6.1.38-1",
            "evidence": "/affected/0/versions"
          },
          {
            "value": "6.1.38-2",
            "evidence": "/affected/0/versions"
          },
          {
            "value": "6.1.38-2~bpo11+1",
            "evidence": "/affected/0/versions"
          },
          {
            "value": "6.1.38-3",
            "evidence": "/affected/0/versions"
          },
          {
            "value": "6.1.38-4",
            "evidence": "/affected/0/versions"
          },
          {
            "value": "6.1.38-4~bpo11+1",
            "evidence": "/affected/0/versions"
          },
          {
            "value": "6.1.52-1",
            "evidence": "/affected/0/versions"
          },
          {
            "value": "6.1.55-1",
            "evidence": "/affected/0/versions"
          },
          {
            "value": "6.1.55-1~bpo11+1",
            "evidence": "/affected/0/versions"
          },
          {
            "value": "6.1.64-1",
            "evidence": "/affected/0/versions"
          },
          {
            "value": "6.1.66-1",
            "evidence": "/affected/0/versions"
          },
          {
            "value": "6.1.67-1",
            "evidence": "/affected/0/versions"
          },
          {
            "value": "6.1.69-1",
            "evidence": "/affected/0/versions"
          },
          {
            "value": "6.1.69-1~bpo11+1",
            "evidence": "/affected/0/versions"
          },
          {
            "value": "6.1.76-1",
            "evidence": "/affected/0/versions"
          },
          {
            "value": "6.1.76-1~bpo11+1",
            "evidence": "/affected/0/versions"
          },
          {
            "value": "6.1.82-1",
            "evidence": "/affected/0/versions"
          },
          {
            "value": "6.1.85-1",
            "evidence": "/affected/0/versions"
          },
          {
            "value": "6.1.90-1",
            "evidence": "/affected/0/versions"
          },
          {
            "value": "6.1.90-1~bpo11+1",
            "evidence": "/affected/0/versions"
          },
          {
            "value": "6.1.94-1",
            "evidence": "/affected/0/versions"
          },
          {
            "value": "6.1.94-1~bpo11+1",
            "evidence": "/affected/0/versions"
          },
          {
            "value": "6.1.98-1",
            "evidence": "/affected/0/versions"
          },
          {
            "value": "6.1.99-1",
            "evidence": "/affected/0/versions"
          }
        ]
      },
      {
        "name": {
          "value": "linux",
          "evidence": "/affected/1/package/name"
        },
        "prerequisites": [],
        "fixed_versions": [
          {
            "value": "6.11.2-1",
            "evidence": "/affected/1/ranges"
          }
        ],
        "affected_versions": []
      },
      {
        "name": {
          "value": "linux",
          "evidence": "/affected/2/package/name"
        },
        "prerequisites": [],
        "fixed_versions": [
          {
            "value": "6.11.2-1",
            "evidence": "/affected/2/ranges"
          }
        ],
        "affected_versions": []
      }
    ],
    "severity": "medium",
    "structured": {
      "id": "DEBIAN-CVE-2024-47706",
      "aliases": [
        "DEBIAN-CVE-2024-47706"
      ],
      "metrics": [
        {
          "type": "CVSS_V3",
          "score": "CVSS:3.1/AV:L/AC:L/PR:L/UI:N/S:U/C:N/I:N/A:H"
        }
      ],
      "affected": [
        {
          "ranges": [
            {
              "type": "ECOSYSTEM",
              "events": [
                {
                  "introduced": "0"
                },
                {
                  "fixed": "6.1.115-1"
                }
              ]
            }
          ],
          "package": {
            "name": "linux",
            "purl": "pkg:deb/debian/linux?arch=source&distro=bookworm",
            "ecosystem": "Debian:12"
          },
          "versions": [
            "6.1.106-1",
            "6.1.106-2",
            "6.1.106-3",
            "6.1.112-1",
            "6.1.27-1",
            "6.1.37-1",
            "6.1.38-1",
            "6.1.38-2",
            "6.1.38-2~bpo11+1",
            "6.1.38-3",
            "6.1.38-4",
            "6.1.38-4~bpo11+1",
            "6.1.52-1",
            "6.1.55-1",
            "6.1.55-1~bpo11+1",
            "6.1.64-1",
            "6.1.66-1",
            "6.1.67-1",
            "6.1.69-1",
            "6.1.69-1~bpo11+1",
            "6.1.76-1",
            "6.1.76-1~bpo11+1",
            "6.1.82-1",
            "6.1.85-1",
            "6.1.90-1",
            "6.1.90-1~bpo11+1",
            "6.1.94-1",
            "6.1.94-1~bpo11+1",
            "6.1.98-1",
            "6.1.99-1"
          ],
          "database_specific": {
            "source": "https://storage.googleapis.com/debian-osv/debian-cve-osv/DEBIAN-CVE-2024-47706.json"
          },
          "ecosystem_specific": {
            "urgency": "not yet assigned"
          }
        },
        {
          "ranges": [
            {
              "type": "ECOSYSTEM",
              "events": [
                {
                  "introduced": "0"
                },
                {
                  "fixed": "6.11.2-1"
                }
              ]
            }
          ],
          "package": {
            "name": "linux",
            "purl": "pkg:deb/debian/linux?arch=source&distro=trixie",
            "ecosystem": "Debian:13"
          },
          "database_specific": {
            "source": "https://storage.googleapis.com/debian-osv/debian-cve-osv/DEBIAN-CVE-2024-47706.json"
          },
          "ecosystem_specific": {
            "urgency": "not yet assigned"
          }
        },
        {
          "ranges": [
            {
              "type": "ECOSYSTEM",
              "events": [
                {
                  "introduced": "0"
                },
                {
                  "fixed": "6.11.2-1"
                }
              ]
            }
          ],
          "package": {
            "name": "linux",
            "purl": "pkg:deb/debian/linux?arch=source&distro=forky",
            "ecosystem": "Debian:14"
          },
          "database_specific": {
            "source": "https://storage.googleapis.com/debian-osv/debian-cve-osv/DEBIAN-CVE-2024-47706.json"
          },
          "ecosystem_specific": {
            "urgency": "not yet assigned"
          }
        }
      ],
      "modified": "2026-10-15T09:47:44.678483213Z",
      "provider": "osv",
      "upstream": [
        "CVE-2024-47706"
      ],
      "references": [
        "https://security-tracker.debian.org/tracker/CVE-2024-47706"
      ]
    },
    "related_cves": [
      {
        "value": "CVE-2024-47706",
        "evidence": "/upstream"
      }
    ],
    "security_relevant": true,
    "severity_evidence": "/severity/0/score"
  },
  "source_id": "core-osv",
  "document_id": 328596,
  "published_at": "2024-10-21T12:15:07.12+00:00"
}