A private attack is to violate the integrity of block B by creating another string of length equal to or longer than the longest string containing B, after B is confirmed.
If the opponent reveals his chain too early, i.e. before the B block turns deep k. The command will still displace B, but then the action does not violate the integrity.
Why not pose a safety risk? Does not the offset of B in the future already mean that the mined block is adopted by malicious nodes because the longest chain and block containing a malicious transaction may be confirmed once it becomes k-deep?