Skip to content
Heist/ feed
High

block, bfq: fix possible UAF for bfqq->bic with merge chain

Type: advisorySource: Official CVE List1 source record

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): ================================================

Announced Group revision 1
Original source ↗

CVE-2024-47706

Primary source · Revision 1

Imported from structured advisory data. Source references identify upstream records or fields; verify affected versions and your deployed configuration.

Security context

Source reference: cve:CVE-2024-47706

Linux

Source reference: /containers/cna/affected/0/product

Affected versions
Not stated in this record
Fixed versions
Not stated in this record
Prerequisites
Not stated in this record

Linux

Source reference: /containers/cna/affected/1/product

Affected versions
Not stated in this record
Fixed versions
Not stated in this record
Prerequisites
Not stated in this record

Structured affected-version data

Original package identities and version rules from this source.

[
  {
    "repo": "https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git",
    "vendor": "Linux",
    "product": "Linux",
    "versions": [
      {
        "status": "affected",
        "version": "36eca894832351feed9072d0f97eb06fc9482ca4",
        "lessThan": "a9bdd5b36887d2bacb8bc777fd18317c99fc2587",
        "versionType": "git"
      },
      {
        "status": "affected",
        "version": "36eca894832351feed9072d0f97eb06fc9482ca4",
        "lessThan": "bc2140534b2aae752e4f7cb4489642dbb5ec4777",
        "versionType": "git"
      },
      {
        "status": "affected",
        "version": "36eca894832351feed9072d0f97eb06fc9482ca4",
        "lessThan": "e1277ae780cca4e69ef5468d4582dfd48f0b8320",
        "versionType": "git"
      },
      {
        "status": "affected",
        "version": "36eca894832351feed9072d0f97eb06fc9482ca4",
        "lessThan": "8aa9de02a4be2e7006e636816ce19b0d667ceaa3",
        "versionType": "git"
      },
      {
        "status": "affected",
        "version": "36eca894832351feed9072d0f97eb06fc9482ca4",
        "lessThan": "ddbdaad123254fb53e32480cb74a486a6868b1e0",
        "versionType": "git"
      },
      {
        "status": "affected",
        "version": "36eca894832351feed9072d0f97eb06fc9482ca4",
        "lessThan": "7faed2896d78e48ec96229e73b30b0af6c00a9aa",
        "versionType": "git"
      },
      {
        "status": "affected",
        "version": "36eca894832351feed9072d0f97eb06fc9482ca4",
        "lessThan": "880692ee233ba63808182705b3333403413b58f5",
        "versionType": "git"
      },
      {
        "status": "affected",
        "version": "36eca894832351feed9072d0f97eb06fc9482ca4",
        "lessThan": "6d130db286ad0ea392c96ebb2551acf0d7308048",
        "versionType": "git"
      },
      {
        "status": "affected",
        "version": "36eca894832351feed9072d0f97eb06fc9482ca4",
        "lessThan": "18ad4df091dd5d067d2faa8fce1180b79f7041a7",
        "versionType": "git"
      }
    ],
    "programFiles": [
      "block/bfq-iosched.c"
    ],
    "defaultStatus": "unaffected"
  },
  {
    "repo": "https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git",
    "vendor": "Linux",
    "product": "Linux",
    "versions": [
      {
        "status": "affected",
        "version": "4.12"
      },
      {
        "status": "unaffected",
        "version": "0",
        "lessThan": "4.12",
        "versionType": "semver"
      },
      {
        "status": "unaffected",
        "version": "4.19.323",
        "versionType": "semver",
        "lessThanOrEqual": "4.19.*"
      },
      {
        "status": "unaffected",
        "version": "5.4.285",
        "versionType": "semver",
        "lessThanOrEqual": "5.4.*"
      },
      {
        "status": "unaffected",
        "version": "5.10.227",
        "versionType": "semver",
        "lessThanOrEqual": "5.10.*"
      },
      {
        "status": "unaffected",
        "version": "5.15.168",
        "versionType": "semver",
        "lessThanOrEqual": "5.15.*"
      },
      {
        "status": "unaffected",
        "version": "6.1.113",
        "versionType": "semver",
        "lessThanOrEqual": "6.1.*"
      },
      {
        "status": "unaffected",
        "version": "6.6.54",
        "versionType": "semver",
        "lessThanOrEqual": "6.6.*"
      },
      {
        "status": "unaffected",
        "version": "6.10.13",
        "versionType": "semver",
        "lessThanOrEqual": "6.10.*"
      },
      {
        "status": "unaffected",
        "version": "6.11.2",
        "versionType": "semver",
        "lessThanOrEqual": "6.11.*"
      },
      {
        "status": "unaffected",
        "version": "6.12",
        "versionType": "original_commit_for_fix",
        "lessThanOrEqual": "*"
      }
    ],
    "programFiles": [
      "block/bfq-iosched.c"
    ],
    "defaultStatus": "affected"
  }
]
Related CVEs
CVE-2024-47706

Source reference: /cveMetadata/cveId

Publisher severity

high

Source reference: /containers/cna/metrics

Event
#26731 · Revision 1
Added to Heist Feed
Publisher date
Read the original announcement