I understand Merkle roots can be used for Merkle inclusion proofs, where a client/validator can quickly check if a transaction is part of the block without requesting all the transactions in the block.
The question I have is this: for this process of performing the Merkle proof, where does the client performing the proof get the merkle root from? And how is the client guaranteed that the merkle root it is given is the correct one?
I am thinking of a scenario where an attacker could convince a client/validator that a transaction is part of a block by sending it a fraudulent Merkle root and corresponding hashes.
What properties of Merkle trees and how it is used in Merkle inclusion proof in bitcoin prevent this from happening?