The issue here is relatively simple despite the technical depth the authors go into on the crypto and how it's used.AES-128 keys are used to encrypt challenge codes for the authentication flow between NFC tags and the alarm system, but the way these AES-128 keys are generated is naive and insecure...
It was possible to forge JWT tokens due to an unchecked constraint when processing the JWT before verifying. In one function the token would be "processed" as in it would pull out the relative information, passing it into `Util:verify_token(token, secret, acceptedIssuers)`
Stark Bank maintains two libraries "starkbank-ecdsa" one for Python and one for Node which insecurely implement the ECDSA signature verification method. The issue stems from two problems: