I came across this question Offline brute-forcing of a bank card PIN, which was asked 7 years ago. I'm currently exploring vulnerabilities in EMV protocol, and I wanted to double check if an idea I had in mind is viable. I came across a paper written in 2013, titled Risks of Offline Verify PIN on Contactless Cards, which describes a scenario where an attacker can try to guess a smartcard's PIN code if they are in NFC range. The attacker would use an offline reader which sends to the card a VERIFY_PIN command. Note here that the reader will terminate the transaction every time the remaining attempts to enter the PIN is 1. So theoretically, if the card allows 3 attempts in total, the attacker can make 2 guesses at a time, and then reset the transaction.
And since all this is happening offline, nobody will detect that the card is being attacked. A brute force approach will require 10000 attempts, and with the help of some probabilistic analysis, the guesses can be made in a more educated manner (e.g. using birthdays etc.). Good folks at Cambridge have put in effort to illustrate that there is in fact a trend in terms of people picking predictable PINs A birthday present every eleven wallets? The security of customer-chosen banking PINs.
In this case the paper recommends that the VERIFY_PIN command be omitted from the possible commands sent to an NFC card, so that the attacker cannot issue this command to the card to begin with, and since it isn't really necessary, because NFC transactions usually involve small amount and many don't even require a PIN verification. Nevertheless, my question remains: is such a setup viable for contact transactions (physically inserting the card in the terminal)? There have been attacks previously mentioning a Man-in-the-middle that intercepts a transaction and fools the card into thinking there is no PIN required. So why not try a random PIN twice, and then intercept the transaction by resetting it? Has this idea been discussed in the literature? Is there a solution for it in the EMV protocol?