LLVM before 18.1.3 generates code in which the LR register can be overwritten without data being saved to the stack, and thus there can sometimes be an exploitable error in the flow of control. This affects the ARM backend and can be demonstrated with Clang. NOTE: the vendor perspective is "we don't have strong objections for a CVE to be created ... It does seem that the likelihood of this miscompile enabling an exploit remains very low, because the miscompile resulting in this JOP gadget is such that the function is most likely to crash on most valid inputs to the function. So, if this function is covered by any testing, the miscompile is most likely to be discovered before the binary is shipped to production."
{ "vanir_signatures": [ { "signature_type": "Function", "deprecated": false, "signature_version": "v1", "id": "CVE-2024-31852-1b2f1658", "digest": { "function_hash": "54210210702493145190645236580885974001", "length": 661.0 }, "source": "https://github.com/llvm/llvm-project/commit/c13b7485b87909fcf739f62cfa382b55407433c0", "target": { "function": "Sema::DiagnoseShadowingLambdaDecls", "file": "clang/lib/Sema/SemaDecl.cpp" } }, { "signature_type": "Line", "deprecated": false, "signature_version": "v1", "id": "CVE-2024-31852-37f68a2b", "digest": { "line_hashes": [ "121695522519665525926610151121875702509", "177813450041332089971052832782563408636", "270286072785656284913999371556910820979", "145772467512792817344807998265727079616", "40488896316332151667512104416055868446" ], "threshold": 0.9 }, "source": "https://github.com/llvm/llvm-project/commit/c13b7485b87909fcf739f62cfa382b55407433c0", "target": { "file": "clang/include/clang/Sema/ScopeInfo.h" } }, { "signature_type": "Line", "deprecated": false, "signature_version": "v1", "id": "CVE-2024-31852-4729bac6", "digest": { "line_hashes": [ "263727050855336723214702721639646230815", "338661521335189763468359639375733185610", "222764381900028030013161160196811858611" ], "threshold": 0.9 }, "source": "https://github.com/llvmbot/llvm-project/commit/0e16af8e4cf3a66ad5d078d52744ae2776f9c4b2", "target": { "file": "llvm/lib/Target/ARM/ARMFrameLowering.h" } }, { "signature_type": "Line", "deprecated": false, "signature_version": "v1", "id": "CVE-2024-31852-601c3b3e", "digest": { "line_hashes": [ "91435288572159140673604087140088704865", "60595000793907335208237528006181894499", "81246268898852584397373637365995114641", "12966949557758990523458051877827327793", "312614693179397280507014919761561370058", "171693201888983937631366761565053325549", "288468743252935033992033123555283595313", "271161800986016484171222072245905400122", "103940322508271299547962670881558613228", "10135203245374937469725355087472595701", "141816724252887940589846747154029630319", "329284555271103538031512502934458229588", "314945016070787031949304907406154010706", "73795432132172204987561770641335538826", "18241795241896258393951112393464153520", "324678086420977339913819431767002152818", "246366175408565920344069863017515870218", "6425702704167231857971357785892148660", "318676150208217114248308412658880502569", "225386210287659981795640714238854176288", "63540883665284814711237897895575946133", "30103516362247607827635677178992156115", "52402595661331567993091525777527888957", "127805555321790760525264467347833395642", "3555454874163405287023313756932363889", "89541331816960903311171902828191751029", "35562452605510776776837426958802660732", "103752125664474910961691897097682103123", "263461059513755621779014653582325480490", "109862694046425584484089680983526293475", "272917106648733788745504361934622468634", "178905699879263853777645015117117095881", "122611921716209793925442987154652883453", "77019705425720189940723220541881551209", "186795559406486653460907266281792750738" ], "threshold": 0.9 }, "source": "https://github.com/llvm/llvm-project/commit/c13b7485b87909fcf739f62cfa382b55407433c0", "target": { "file": "clang/lib/Sema/SemaDecl.cpp" } }, { "signature_type": "Function", "deprecated": false, "signature_version": "v1", "id": "CVE-2024-31852-627abe6b", "digest": { "function_hash": "73404285676738893015762700050352828765", "length": 748.0 }, "source": "https://github.com/llvmbot/llvm-project/commit/0e16af8e4cf3a66ad5d078d52744ae2776f9c4b2", "target": { "function": "ARMFrameLowering::processFunctionBeforeFrameFinalized", "file": "llvm/lib/Target/ARM/ARMFrameLowering.cpp" } }, { "signature_type": "Line", "deprecated": false, "signature_version": "v1", "id": "CVE-2024-31852-6333720d", "digest": { "line_hashes": [ "265396403827744709753340007848399007950", "49940269832124947600278244315797545189", "17478611451566763822165439623865914760", "209439641663065836104846623128826102110", "332882063965343746051776692655721200312", "273489715330268535590677568628668002994", "95994793136022703434935340511358603300", "209944497273777593380797853584218298710", "85108495606792866608053427659888107974" ], "threshold": 0.9 }, "source": "https://github.com/llvmbot/llvm-project/commit/0e16af8e4cf3a66ad5d078d52744ae2776f9c4b2", "target": { "file": "llvm/lib/Target/ARM/ARMFrameLowering.cpp" } }, { "signature_type": "Line", "deprecated": false, "signature_version": "v1", "id": "CVE-2024-31852-6d0e6301", "digest": { "line_hashes": [ "139400838949772341568642862127766024589", "40135402682672961640225337636555974013", "252677714685435878831939776807646057092", "232694490365100391273184275600372081997", "68234156437327767975307735129801407462", "211889732719358204229800160894706858795", "130150188875852060020832006673493996144", "170145326921393847927950279753823393291", "195914349568886285658548326064081607336", "63023319149774050960125992398873200987", "102715412356406950219770955940244365114", "15362434203787557402918574295999638423", "275240707835296085037501450936913597392", "107667869678680336114860712381213343260", "171387685097384633778659724188669004137", "200435280355266918551004663615097268063", "281255735761476042801819148967952881103", "185154442047100131982995347613015912851", "98966064383053373361210821037095072500", "337441876872040026195600000125352828708", "266646184066719595896113176259077053616", "154282124736809496210014140182972946366" ], "threshold": 0.9 }, "source": "https://github.com/llvmbot/llvm-project/commit/0e16af8e4cf3a66ad5d078d52744ae2776f9c4b2", "target": { "file": "llvm/lib/Target/ARM/ARMLoadStoreOptimizer.cpp" } }, { "signature_type": "Function", "deprecated": false, "signature_version": "v1", "id": "CVE-2024-31852-9cd1e164", "digest": { "function_hash": "133099328702317132762878207769385535974", "length": 735.0 }, "source": "https://github.com/llvmbot/llvm-project/commit/0e16af8e4cf3a66ad5d078d52744ae2776f9c4b2", "target": { "function": "ARMLoadStoreOpt::runOnMachineFunction", "file": "llvm/lib/Target/ARM/ARMLoadStoreOptimizer.cpp" } }, { "signature_type": "Function", "deprecated": false, "signature_version": "v1", "id": "CVE-2024-31852-a52e72cf", "digest": { "function_hash": "339118865025015256570547774295760199484", "length": 2192.0 }, "source": "https://github.com/llvm/llvm-project/commit/c13b7485b87909fcf739f62cfa382b55407433c0", "target": { "function": "Sema::CheckShadow", "file": "clang/lib/Sema/SemaDecl.cpp" } }, { "signature_type": "Function", "deprecated": false, "signature_version": "v1", "id": "CVE-2024-31852-fef23083", "digest": { "function_hash": "319680767746082854522444621428196790404", "length": 1498.0 }, "source": "https://github.com/llvmbot/llvm-project/commit/0e16af8e4cf3a66ad5d078d52744ae2776f9c4b2", "target": { "function": "ARMLoadStoreOpt::MergeReturnIntoLDM", "file": "llvm/lib/Target/ARM/ARMLoadStoreOptimizer.cpp" } } ] }