Soteria: Automatically Mitigating Timing Side-Channel Vulnerabilities In Sensitive Programs