Yes, there is absolutely no way of enforcing sanctions without prosecuting innocent parties. The only way that the US can get foreign banks not to deal with Iran is by punishing them, even if they were the victims of fraud, the bank would then have to decide if they want to continue operating in the US and try to recoup their losses by going after the fraudster, not operate in the jurisdiction of the fraudster if that is impossible, or not deal with Iran at all (in which case a competitor will). Otherwise, they can also stop dealing with the US.
So you're proposing that the government shouldn't prosecute fraud criminally, and it should be up to the banks go after the perpetrators in civil court instead?
You can be suef in civil and criminal court at the same time.
I've no love for HSBC (at all) but in this instance it appears they are the victim of fraudulent representations made by Huawei.
Your "solution" proposes prosecuting not only an innocent party, but one of the victims? That's an ... ummm ... interesting take.