You can find the bad sector by running a smart long test;
# smartctl -t long /dev/sda
You can then check the status of the long test to see if its finished, and the LBA of the first error it encountered;
# smartctl -l selftest /dev/sda
smartctl 7.1 2019-12-30 r5022 [x86_64-linux-5.7.0-1-amd64] (local build)
Copyright (C) 2002-19, Bruce Allen, Christian Franke, www.smartmontools.org
=== START OF READ SMART DATA SECTION ===
SMART Self-test log structure revision number 1
Num Test_Description Status Remaining LifeTime(hours) LBA_of_first_error
# 1 Extended offline Completed without error 00% 17711 12345
# 2 Short offline Completed without error 00% 17709 -
# 3 Short captive Interrupted (host reset) 10% 450 -
# 4 Short captive Interrupted (host reset) 10% 228 -
You can then overwrite the bad sector using dd;
# dd if=/dev/zero of=/dev/sda seek=12345 count=1