CVE-2021-47107 (GCVE-0-2021-47107)
Vulnerability from cvelistv5
Published
2024-03-04 18:15
Modified
2026-08-05 08:46
Severity ?
VLAI Severity ?
EPSS score ?
Summary
In the Linux kernel, the following vulnerability has been resolved:
NFSD: Fix READDIR buffer overflow
If a client sends a READDIR count argument that is too small (say,
zero), then the buffer size calculation in the new init_dirlist
helper functions results in an underflow, allowing the XDR stream
functions to write beyond the actual buffer.
This calculation has always been suspect. NFSD has never sanity-
checked the READDIR count argument, but the old entry encoders
managed the problem correctly.
With the commits below, entry encoding changed, exposing the
underflow to the pointer arithmetic in xdr_reserve_space().
Modern NFS clients attempt to retrieve as much data as possible
for each READDIR request. Also, we have no unit tests that
exercise the behavior of READDIR at the lower bound of @count
values. Thus this case was missed during testing.
References
Impacted products
{
"containers": {
"adp": [
{
"metrics": [
{
"other": {
"content": {
"id": "CVE-2021-47107",
"options": [
{
"Exploitation": "none"
},
{
"Automatable": "no"
},
{
"Technical Impact": "partial"
}
],
"role": "CISA Coordinator",
"timestamp": "2024-07-24T14:23:20.067017Z",
"version": "2.0.3"
},
"type": "ssvc"
}
}
],
"providerMetadata": {
"dateUpdated": "2024-07-24T14:23:30.968Z",
"orgId": "134c704f-9b21-4f2e-91b3-4a467353bcc0",
"shortName": "CISA-ADP"
},
"title": "CISA ADP Vulnrichment"
},
{
"providerMetadata": {
"dateUpdated": "2024-08-04T05:24:39.886Z",
"orgId": "af854a3a-2127-422b-91ae-364da2661108",
"shortName": "CVE"
},
"references": [
{
"tags": [
"x_transferred"
],
"url": "https://git.kernel.org/stable/c/9e291a6a28d32545ed2fd959a8165144d1724df1"
},
{
"tags": [
"x_transferred"
],
"url": "https://git.kernel.org/stable/c/eabc0aab98e5218ceecd82069b0d6fdfff5ee885"
},
{
"tags": [
"x_transferred"
],
"url": "https://git.kernel.org/stable/c/53b1119a6e5028b125f431a0116ba73510d82a72"
}
],
"title": "CVE Program Container"
},
{
"affected": [
{
"defaultStatus": "unknown",
"product": "SIMATIC S7-1500 TM MFP - GNU/Linux subsystem",
"vendor": "Siemens",
"versions": [
{
"lessThan": "*",
"status": "affected",
"version": "0",
"versionType": "custom"
}
]
}
],
"providerMetadata": {
"dateUpdated": "2026-05-12T10:12:22.406Z",
"orgId": "0b142b55-0307-4c5a-b3c9-f314f3fb7c5e",
"shortName": "siemens-SADP"
},
"references": [
{
"url": "https://cert-portal.siemens.com/productcert/html/ssa-265688.html"
}
],
"x_adpType": "supplier"
}
],
"cna": {
"affected": [
{
"defaultStatus": "unaffected",
"product": "Linux",
"programFiles": [
"fs/nfsd/nfs3proc.c",
"fs/nfsd/nfsproc.c"
],
"repo": "https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git",
"vendor": "Linux",
"versions": [
{
"lessThan": "9e291a6a28d32545ed2fd959a8165144d1724df1",
"status": "affected",
"version": "37aa5e64022243e721b8334122997881177a4cfc",
"versionType": "git"
},
{
"lessThan": "eabc0aab98e5218ceecd82069b0d6fdfff5ee885",
"status": "affected",
"version": "7f87fc2d34d475225e78b7f5c4eabb121f4282b2",
"versionType": "git"
},
{
"lessThan": "53b1119a6e5028b125f431a0116ba73510d82a72",
"status": "affected",
"version": "7f87fc2d34d475225e78b7f5c4eabb121f4282b2",
"versionType": "git"
}
]
},
{
"defaultStatus": "affected",
"product": "Linux",
"programFiles": [
"fs/nfsd/nfs3proc.c",
"fs/nfsd/nfsproc.c"
],
"repo": "https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git",
"vendor": "Linux",
"versions": [
{
"status": "affected",
"version": "5.13"
},
{
"lessThan": "5.13",
"status": "unaffected",
"version": "0",
"versionType": "semver"
},
{
"lessThanOrEqual": "5.15.*",
"status": "unaffected",
"version": "5.15.12",
"versionType": "semver"
},
{
"lessThanOrEqual": "*",
"status": "unaffected",
"version": "5.16",
"versionType": "original_commit_for_fix"
}
]
}
],
"cpeApplicability": [
{
"nodes": [
{
"cpeMatch": [
{
"criteria": "cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:*",
"versionEndExcluding": "5.15.12",
"versionStartIncluding": "5.13",
"vulnerable": true
},
{
"criteria": "cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:*",
"versionEndExcluding": "5.16",
"versionStartIncluding": "5.13",
"vulnerable": true
}
],
"negate": false,
"operator": "OR"
}
]
}
],
"descriptions": [
{
"lang": "en",
"value": "In the Linux kernel, the following vulnerability has been resolved:\n\nNFSD: Fix READDIR buffer overflow\n\nIf a client sends a READDIR count argument that is too small (say,\nzero), then the buffer size calculation in the new init_dirlist\nhelper functions results in an underflow, allowing the XDR stream\nfunctions to write beyond the actual buffer.\n\nThis calculation has always been suspect. NFSD has never sanity-\nchecked the READDIR count argument, but the old entry encoders\nmanaged the problem correctly.\n\nWith the commits below, entry encoding changed, exposing the\nunderflow to the pointer arithmetic in xdr_reserve_space().\n\nModern NFS clients attempt to retrieve as much data as possible\nfor each READDIR request. Also, we have no unit tests that\nexercise the behavior of READDIR at the lower bound of @count\nvalues. Thus this case was missed during testing."
}
],
"metrics": [
{
"cvssV3_1": {
"baseScore": 9.8,
"baseSeverity": "CRITICAL",
"vectorString": "CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:H/I:H/A:H",
"version": "3.1"
},
"scenarios": [
{
"lang": "en",
"value": "AV:N - The vulnerability is in nfsd (fs/nfsd) READDIR handling and is triggered by a remote NFS client sending a crafted NFSv2/v3 READDIR/READDIRPLUS RPC over the network to the in-kernel NFS server.\nAC:L - The attacker fully controls the READDIR count argument and can reliably set it to zero (or another value \u003c 8) to cause the buflen underflow; no race or other conditions outside attacker control are required.\nPR:N - NFSv2/v3 exports default to allowing AUTH_NULL and AUTH_UNIX with no cryptographic authentication, so a remote attacker on an allowed client network can mount and issue READDIR without verified credentials.\nUI:N - Exploitation requires only attacker-sent NFS RPCs; no legitimate user action on the server or client is needed.\nS:U - The overflow corrupts kernel memory within the NFS server host\u0027s kernel authority and does not cross a VM, IOMMU, or other security boundary.\nC:H - The underflow enables an out-of-bounds write into adjacent RPC reply pages, which is kernel memory corruption that can be leveraged for information disclosure per CVSS kernel guidance.\nI:H - This is an attacker-triggerable out-of-bounds write via xdr_reserve_space() into unreserved pages, which can be exploited for arbitrary write primitives and control-flow hijacking.\nA:H - Walking page_ptr past reserved pages can hit a NULL page entry or corrupt kernel structures, causing a kernel oops/panic and denying service."
}
]
}
],
"providerMetadata": {
"dateUpdated": "2026-08-05T08:46:02.458Z",
"orgId": "416baaa9-dc9f-4396-8d5f-8c081fb06d67",
"shortName": "Linux"
},
"references": [
{
"url": "https://git.kernel.org/stable/c/9e291a6a28d32545ed2fd959a8165144d1724df1"
},
{
"url": "https://git.kernel.org/stable/c/eabc0aab98e5218ceecd82069b0d6fdfff5ee885"
},
{
"url": "https://git.kernel.org/stable/c/53b1119a6e5028b125f431a0116ba73510d82a72"
}
],
"title": "NFSD: Fix READDIR buffer overflow",
"x_generator": {
"engine": "bippy-1.2.0"
}
}
},
"cveMetadata": {
"assignerOrgId": "416baaa9-dc9f-4396-8d5f-8c081fb06d67",
"assignerShortName": "Linux",
"cveId": "CVE-2021-47107",
"datePublished": "2024-03-04T18:15:38.706Z",
"dateReserved": "2024-03-04T18:12:48.835Z",
"dateUpdated": "2026-08-05T08:46:02.458Z",
"state": "PUBLISHED"
},
"dataType": "CVE_RECORD",
"dataVersion": "5.2",
"vulnerability-lookup:meta": {
"vulnrichment": {
"containers": "{\"adp\": [{\"title\": \"CVE Program Container\", \"references\": [{\"url\": \"https://git.kernel.org/stable/c/9e291a6a28d32545ed2fd959a8165144d1724df1\", \"tags\": [\"x_transferred\"]}, {\"url\": \"https://git.kernel.org/stable/c/eabc0aab98e5218ceecd82069b0d6fdfff5ee885\", \"tags\": [\"x_transferred\"]}, {\"url\": \"https://git.kernel.org/stable/c/53b1119a6e5028b125f431a0116ba73510d82a72\", \"tags\": [\"x_transferred\"]}], \"providerMetadata\": {\"orgId\": \"af854a3a-2127-422b-91ae-364da2661108\", \"shortName\": \"CVE\", \"dateUpdated\": \"2024-08-04T05:24:39.886Z\"}}, {\"affected\": [{\"vendor\": \"Siemens\", \"product\": \"SIMATIC S7-1500 TM MFP - GNU/Linux subsystem\", \"versions\": [{\"status\": \"affected\", \"version\": \"0\", \"lessThan\": \"*\", \"versionType\": \"custom\"}], \"defaultStatus\": \"unknown\"}], \"x_adpType\": \"supplier\", \"references\": [{\"url\": \"https://cert-portal.siemens.com/productcert/html/ssa-265688.html\"}], \"providerMetadata\": {\"orgId\": \"0b142b55-0307-4c5a-b3c9-f314f3fb7c5e\", \"shortName\": \"siemens-SADP\", \"dateUpdated\": \"2026-05-12T10:12:22.406Z\"}}, {\"title\": \"CISA ADP Vulnrichment\", \"metrics\": [{\"other\": {\"type\": \"ssvc\", \"content\": {\"id\": \"CVE-2021-47107\", \"role\": \"CISA Coordinator\", \"options\": [{\"Exploitation\": \"none\"}, {\"Automatable\": \"no\"}, {\"Technical Impact\": \"partial\"}], \"version\": \"2.0.3\", \"timestamp\": \"2024-07-24T14:23:20.067017Z\"}}}], \"providerMetadata\": {\"orgId\": \"134c704f-9b21-4f2e-91b3-4a467353bcc0\", \"shortName\": \"CISA-ADP\", \"dateUpdated\": \"2024-07-24T14:23:26.949Z\"}}], \"cna\": {\"title\": \"NFSD: Fix READDIR buffer overflow\", \"metrics\": [{\"cvssV3_1\": {\"version\": \"3.1\", \"baseScore\": 9.8, \"baseSeverity\": \"CRITICAL\", \"vectorString\": \"CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:H/I:H/A:H\"}, \"scenarios\": [{\"lang\": \"en\", \"value\": \"AV:N - The vulnerability is in nfsd (fs/nfsd) READDIR handling and is triggered by a remote NFS client sending a crafted NFSv2/v3 READDIR/READDIRPLUS RPC over the network to the in-kernel NFS server.\\nAC:L - The attacker fully controls the READDIR count argument and can reliably set it to zero (or another value \u003c 8) to cause the buflen underflow; no race or other conditions outside attacker control are required.\\nPR:N - NFSv2/v3 exports default to allowing AUTH_NULL and AUTH_UNIX with no cryptographic authentication, so a remote attacker on an allowed client network can mount and issue READDIR without verified credentials.\\nUI:N - Exploitation requires only attacker-sent NFS RPCs; no legitimate user action on the server or client is needed.\\nS:U - The overflow corrupts kernel memory within the NFS server host\u0027s kernel authority and does not cross a VM, IOMMU, or other security boundary.\\nC:H - The underflow enables an out-of-bounds write into adjacent RPC reply pages, which is kernel memory corruption that can be leveraged for information disclosure per CVSS kernel guidance.\\nI:H - This is an attacker-triggerable out-of-bounds write via xdr_reserve_space() into unreserved pages, which can be exploited for arbitrary write primitives and control-flow hijacking.\\nA:H - Walking page_ptr past reserved pages can hit a NULL page entry or corrupt kernel structures, causing a kernel oops/panic and denying service.\"}]}], \"affected\": [{\"repo\": \"https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git\", \"vendor\": \"Linux\", \"product\": \"Linux\", \"versions\": [{\"status\": \"affected\", \"version\": \"37aa5e64022243e721b8334122997881177a4cfc\", \"lessThan\": \"9e291a6a28d32545ed2fd959a8165144d1724df1\", \"versionType\": \"git\"}, {\"status\": \"affected\", \"version\": \"7f87fc2d34d475225e78b7f5c4eabb121f4282b2\", \"lessThan\": \"eabc0aab98e5218ceecd82069b0d6fdfff5ee885\", \"versionType\": \"git\"}, {\"status\": \"affected\", \"version\": \"7f87fc2d34d475225e78b7f5c4eabb121f4282b2\", \"lessThan\": \"53b1119a6e5028b125f431a0116ba73510d82a72\", \"versionType\": \"git\"}], \"programFiles\": [\"fs/nfsd/nfs3proc.c\", \"fs/nfsd/nfsproc.c\"], \"defaultStatus\": \"unaffected\"}, {\"repo\": \"https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git\", \"vendor\": \"Linux\", \"product\": \"Linux\", \"versions\": [{\"status\": \"affected\", \"version\": \"5.13\"}, {\"status\": \"unaffected\", \"version\": \"0\", \"lessThan\": \"5.13\", \"versionType\": \"semver\"}, {\"status\": \"unaffected\", \"version\": \"5.15.12\", \"versionType\": \"semver\", \"lessThanOrEqual\": \"5.15.*\"}, {\"status\": \"unaffected\", \"version\": \"5.16\", \"versionType\": \"original_commit_for_fix\", \"lessThanOrEqual\": \"*\"}], \"programFiles\": [\"fs/nfsd/nfs3proc.c\", \"fs/nfsd/nfsproc.c\"], \"defaultStatus\": \"affected\"}], \"references\": [{\"url\": \"https://git.kernel.org/stable/c/9e291a6a28d32545ed2fd959a8165144d1724df1\"}, {\"url\": \"https://git.kernel.org/stable/c/eabc0aab98e5218ceecd82069b0d6fdfff5ee885\"}, {\"url\": \"https://git.kernel.org/stable/c/53b1119a6e5028b125f431a0116ba73510d82a72\"}], \"x_generator\": {\"engine\": \"bippy-1.2.0\"}, \"descriptions\": [{\"lang\": \"en\", \"value\": \"In the Linux kernel, the following vulnerability has been resolved:\\n\\nNFSD: Fix READDIR buffer overflow\\n\\nIf a client sends a READDIR count argument that is too small (say,\\nzero), then the buffer size calculation in the new init_dirlist\\nhelper functions results in an underflow, allowing the XDR stream\\nfunctions to write beyond the actual buffer.\\n\\nThis calculation has always been suspect. NFSD has never sanity-\\nchecked the READDIR count argument, but the old entry encoders\\nmanaged the problem correctly.\\n\\nWith the commits below, entry encoding changed, exposing the\\nunderflow to the pointer arithmetic in xdr_reserve_space().\\n\\nModern NFS clients attempt to retrieve as much data as possible\\nfor each READDIR request. Also, we have no unit tests that\\nexercise the behavior of READDIR at the lower bound of @count\\nvalues. Thus this case was missed during testing.\"}], \"cpeApplicability\": [{\"nodes\": [{\"negate\": false, \"cpeMatch\": [{\"criteria\": \"cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:*\", \"vulnerable\": true, \"versionEndExcluding\": \"5.15.12\", \"versionStartIncluding\": \"5.13\"}, {\"criteria\": \"cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:*\", \"vulnerable\": true, \"versionEndExcluding\": \"5.16\", \"versionStartIncluding\": \"5.13\"}], \"operator\": \"OR\"}]}], \"providerMetadata\": {\"orgId\": \"416baaa9-dc9f-4396-8d5f-8c081fb06d67\", \"shortName\": \"Linux\", \"dateUpdated\": \"2026-08-05T08:46:02.458Z\"}}}",
"cveMetadata": "{\"cveId\": \"CVE-2021-47107\", \"state\": \"PUBLISHED\", \"dateUpdated\": \"2026-08-05T08:46:02.458Z\", \"dateReserved\": \"2024-03-04T18:12:48.835Z\", \"assignerOrgId\": \"416baaa9-dc9f-4396-8d5f-8c081fb06d67\", \"datePublished\": \"2024-03-04T18:15:38.706Z\", \"assignerShortName\": \"Linux\"}",
"dataType": "CVE_RECORD",
"dataVersion": "5.2"
}
}
}
Loading…
Loading…
Sightings
| Author | Source | Type | Date |
|---|
Nomenclature
- Seen: The vulnerability was mentioned, discussed, or seen somewhere by the user.
- Confirmed: The vulnerability is confirmed from an analyst perspective.
- Published Proof of Concept: A public proof of concept is available for this vulnerability.
- Exploited: This vulnerability was exploited and seen by the user reporting the sighting.
- Patched: This vulnerability was successfully patched by the user reporting the sighting.
- Not exploited: This vulnerability was not exploited or seen by the user reporting the sighting.
- Not confirmed: The user expresses doubt about the veracity of the vulnerability.
- Not patched: This vulnerability was not successfully patched by the user reporting the sighting.
Loading…
Loading…