{"id":"CVE-2026-74671","state":"PUBLISHED","title":"ima: fix out-of-bounds read in xattr_verify()","description":"In the Linux kernel, the following vulnerability has been resolved:\n\nima: fix out-of-bounds read in xattr_verify()\n\nThe digest-length check in xattr_verify() mixes int and size_t:\n\n\tif (xattr_len - sizeof(xattr_value->type) - hash_start >=\n\t\t\tiint->ima_hash->length)\n\nsizeof() yields size_t, so the usual arithmetic conversions promote\nthe whole left-hand side to unsigned 64-bit before the subtraction\nruns. For a truncated xattr this underflows instead of going negative:\na 1-byte IMA_XATTR_DIGEST_NG xattr (xattr_len == 1, hash_start == 1)\nturns \"1 - 1 - 1\" into SIZE_MAX, which is trivially >= ima_hash->length.\nThe check then passes and the following memcmp() reads\niint->ima_hash->length bytes starting past the end of the buffer\nvfs_getxattr_alloc() allocated for it.\n\nNothing upstream clamps xattr_len back into a safe range first:\nima_get_hash_algo() only special-cases xattr_len < 2 to pick a default\nalgorithm, and evm_verifyxattr() returns INTEGRITY_UNKNOWN rather than\nfailing when no HMAC key is loaded, so a truncated security.ima value\nreaches the length check as-is.\n\nRewrite the comparison so every operand stays a signed int and no\nimplicit conversion to size_t can occur.","publishedAt":"2026-08-22T15:32:41.480Z","updatedAt":"2026-08-22T15:32:41.480Z","severity":null,"assigner":"Linux","products":["Linux Linux"],"affected":[{"vendor":"Linux","product":"Linux","defaultStatus":"unaffected","versions":[{"version":"3ea7a56067e663278470c04fd655adf809e72d4d","status":"affected","lessThan":"d823b5f4557083d1dd92096f796a78a2b1b06d10","versionType":"git"},{"version":"3ea7a56067e663278470c04fd655adf809e72d4d","status":"affected","lessThan":"caeb105c15ea2431fa8da7ecfa242d0c68272426","versionType":"git"},{"version":"3ea7a56067e663278470c04fd655adf809e72d4d","status":"affected","lessThan":"a784b4732ac7e51862b9b210c2d8b2ab9e83568c","versionType":"git"},{"version":"3ea7a56067e663278470c04fd655adf809e72d4d","status":"affected","lessThan":"b6cb134707a2127d90a58d69dd818679cae8033c","versionType":"git"},{"version":"3ea7a56067e663278470c04fd655adf809e72d4d","status":"affected","lessThan":"7e515b6c9aab452a4f0734bd7208e4e780e164ca","versionType":"git"},{"version":"3ea7a56067e663278470c04fd655adf809e72d4d","status":"affected","lessThan":"27f3924061592d0ef6b04e16f48754b6cb6adf27","versionType":"git"},{"version":"3ea7a56067e663278470c04fd655adf809e72d4d","status":"affected","lessThan":"dd04114af0d451091f7b8cbd26d9e37d011e9131","versionType":"git"},{"version":"3ea7a56067e663278470c04fd655adf809e72d4d","status":"affected","lessThan":"5ff232d31106f45ac87c3b64e1d35a0667777797","versionType":"git"}],"repo":"https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git","programFiles":["security/integrity/ima/ima_appraise.c"]},{"vendor":"Linux","product":"Linux","defaultStatus":"affected","versions":[{"version":"3.13","status":"affected"},{"version":"0","status":"unaffected","lessThan":"3.13","versionType":"semver"},{"version":"5.10.265","status":"unaffected","lessThanOrEqual":"5.10.*","versionType":"semver"},{"version":"5.15.216","status":"unaffected","lessThanOrEqual":"5.15.*","versionType":"semver"},{"version":"6.1.183","status":"unaffected","lessThanOrEqual":"6.1.*","versionType":"semver"},{"version":"6.6.152","status":"unaffected","lessThanOrEqual":"6.6.*","versionType":"semver"},{"version":"6.12.104","status":"unaffected","lessThanOrEqual":"6.12.*","versionType":"semver"},{"version":"6.18.45","status":"unaffected","lessThanOrEqual":"6.18.*","versionType":"semver"},{"version":"7.1.9","status":"unaffected","lessThanOrEqual":"7.1.*","versionType":"semver"},{"version":"7.2","status":"unaffected","lessThanOrEqual":"*","versionType":"original_commit_for_fix"}],"repo":"https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git","programFiles":["security/integrity/ima/ima_appraise.c"]}],"references":["https://git.kernel.org/stable/c/d823b5f4557083d1dd92096f796a78a2b1b06d10","https://git.kernel.org/stable/c/caeb105c15ea2431fa8da7ecfa242d0c68272426","https://git.kernel.org/stable/c/a784b4732ac7e51862b9b210c2d8b2ab9e83568c","https://git.kernel.org/stable/c/b6cb134707a2127d90a58d69dd818679cae8033c","https://git.kernel.org/stable/c/7e515b6c9aab452a4f0734bd7208e4e780e164ca","https://git.kernel.org/stable/c/27f3924061592d0ef6b04e16f48754b6cb6adf27","https://git.kernel.org/stable/c/dd04114af0d451091f7b8cbd26d9e37d011e9131","https://git.kernel.org/stable/c/5ff232d31106f45ac87c3b64e1d35a0667777797"],"weaknesses":[],"ingestedAt":"2026-10-29T20:12:58.252Z","source":{"repository":"CVEProject/cvelistV5","path":"cves/2026/74xxx/CVE-2026-74671.json","commit":"556c9d3a8cd17e218bb8e452ba7cd619a384ff47"},"raw":{"dataType":"CVE_RECORD","dataVersion":"5.2","cveMetadata":{"cveId":"CVE-2026-74671","state":"PUBLISHED","datePublished":"2026-08-22T15:32:41.480Z","dateUpdated":"2026-08-22T15:32:41.480Z","assignerShortName":"Linux","assignerOrgId":"416baaa9-dc9f-4396-8d5f-8c081fb06d67","dateReserved":"2026-08-15T05:44:03.925Z"},"containers":{"cna":{"title":"ima: fix out-of-bounds read in xattr_verify()","descriptions":[{"lang":"en","value":"In the Linux kernel, the following vulnerability has been resolved:\n\nima: fix out-of-bounds read in xattr_verify()\n\nThe digest-length check in xattr_verify() mixes int and size_t:\n\n\tif (xattr_len - sizeof(xattr_value->type) - hash_start >=\n\t\t\tiint->ima_hash->length)\n\nsizeof() yields size_t, so the usual arithmetic conversions promote\nthe whole left-hand side to unsigned 64-bit before the subtraction\nruns. For a truncated xattr this underflows instead of going negative:\na 1-byte IMA_XATTR_DIGEST_NG xattr (xattr_len == 1, hash_start == 1)\nturns \"1 - 1 - 1\" into SIZE_MAX, which is trivially >= ima_hash->length.\nThe check then passes and the following memcmp() reads\niint->ima_hash->length bytes starting past the end of the buffer\nvfs_getxattr_alloc() allocated for it.\n\nNothing upstream clamps xattr_len back into a safe range first:\nima_get_hash_algo() only special-cases xattr_len < 2 to pick a default\nalgorithm, and evm_verifyxattr() returns INTEGRITY_UNKNOWN rather than\nfailing when no HMAC key is loaded, so a truncated security.ima value\nreaches the length check as-is.\n\nRewrite the comparison so every operand stays a signed int and no\nimplicit conversion to size_t can occur."}],"affected":[{"vendor":"Linux","product":"Linux","defaultStatus":"unaffected","versions":[{"version":"3ea7a56067e663278470c04fd655adf809e72d4d","status":"affected","lessThan":"d823b5f4557083d1dd92096f796a78a2b1b06d10","versionType":"git"},{"version":"3ea7a56067e663278470c04fd655adf809e72d4d","status":"affected","lessThan":"caeb105c15ea2431fa8da7ecfa242d0c68272426","versionType":"git"},{"version":"3ea7a56067e663278470c04fd655adf809e72d4d","status":"affected","lessThan":"a784b4732ac7e51862b9b210c2d8b2ab9e83568c","versionType":"git"},{"version":"3ea7a56067e663278470c04fd655adf809e72d4d","status":"affected","lessThan":"b6cb134707a2127d90a58d69dd818679cae8033c","versionType":"git"},{"version":"3ea7a56067e663278470c04fd655adf809e72d4d","status":"affected","lessThan":"7e515b6c9aab452a4f0734bd7208e4e780e164ca","versionType":"git"},{"version":"3ea7a56067e663278470c04fd655adf809e72d4d","status":"affected","lessThan":"27f3924061592d0ef6b04e16f48754b6cb6adf27","versionType":"git"},{"version":"3ea7a56067e663278470c04fd655adf809e72d4d","status":"affected","lessThan":"dd04114af0d451091f7b8cbd26d9e37d011e9131","versionType":"git"},{"version":"3ea7a56067e663278470c04fd655adf809e72d4d","status":"affected","lessThan":"5ff232d31106f45ac87c3b64e1d35a0667777797","versionType":"git"}],"repo":"https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git","programFiles":["security/integrity/ima/ima_appraise.c"]},{"vendor":"Linux","product":"Linux","defaultStatus":"affected","versions":[{"version":"3.13","status":"affected"},{"version":"0","status":"unaffected","lessThan":"3.13","versionType":"semver"},{"version":"5.10.265","status":"unaffected","lessThanOrEqual":"5.10.*","versionType":"semver"},{"version":"5.15.216","status":"unaffected","lessThanOrEqual":"5.15.*","versionType":"semver"},{"version":"6.1.183","status":"unaffected","lessThanOrEqual":"6.1.*","versionType":"semver"},{"version":"6.6.152","status":"unaffected","lessThanOrEqual":"6.6.*","versionType":"semver"},{"version":"6.12.104","status":"unaffected","lessThanOrEqual":"6.12.*","versionType":"semver"},{"version":"6.18.45","status":"unaffected","lessThanOrEqual":"6.18.*","versionType":"semver"},{"version":"7.1.9","status":"unaffected","lessThanOrEqual":"7.1.*","versionType":"semver"},{"version":"7.2","status":"unaffected","lessThanOrEqual":"*","versionType":"original_commit_for_fix"}],"repo":"https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git","programFiles":["security/integrity/ima/ima_appraise.c"]}],"references":[{"url":"https://git.kernel.org/stable/c/d823b5f4557083d1dd92096f796a78a2b1b06d10"},{"url":"https://git.kernel.org/stable/c/caeb105c15ea2431fa8da7ecfa242d0c68272426"},{"url":"https://git.kernel.org/stable/c/a784b4732ac7e51862b9b210c2d8b2ab9e83568c"},{"url":"https://git.kernel.org/stable/c/b6cb134707a2127d90a58d69dd818679cae8033c"},{"url":"https://git.kernel.org/stable/c/7e515b6c9aab452a4f0734bd7208e4e780e164ca"},{"url":"https://git.kernel.org/stable/c/27f3924061592d0ef6b04e16f48754b6cb6adf27"},{"url":"https://git.kernel.org/stable/c/dd04114af0d451091f7b8cbd26d9e37d011e9131"},{"url":"https://git.kernel.org/stable/c/5ff232d31106f45ac87c3b64e1d35a0667777797"}],"providerMetadata":{"shortName":"Linux","orgId":"416baaa9-dc9f-4396-8d5f-8c081fb06d67","dateUpdated":"2026-08-22T15:32:41.480Z"},"cpeApplicability":[{"nodes":[{"operator":"OR","negate":false,"cpeMatch":[{"vulnerable":true,"criteria":"cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:*","versionStartIncluding":"3.13","versionEndExcluding":"5.10.265"},{"vulnerable":true,"criteria":"cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:*","versionStartIncluding":"3.13","versionEndExcluding":"5.15.216"},{"vulnerable":true,"criteria":"cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:*","versionStartIncluding":"3.13","versionEndExcluding":"6.1.183"},{"vulnerable":true,"criteria":"cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:*","versionStartIncluding":"3.13","versionEndExcluding":"6.6.152"},{"vulnerable":true,"criteria":"cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:*","versionStartIncluding":"3.13","versionEndExcluding":"6.12.104"},{"vulnerable":true,"criteria":"cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:*","versionStartIncluding":"3.13","versionEndExcluding":"6.18.45"},{"vulnerable":true,"criteria":"cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:*","versionStartIncluding":"3.13","versionEndExcluding":"7.1.9"},{"vulnerable":true,"criteria":"cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:*","versionStartIncluding":"3.13","versionEndExcluding":"7.2"}]}]}],"x_generator":{"engine":"bippy-1.2.0"}}}}}