While there is a nonReentrant modifier, it's implemented incorrectly.:
The lock is always set to false at the end of the function, regardless of its initial state. The correct implementation should set locked = true at the start and locked = false at the end. At this moment the reentrancy guard has no protection at all, therefore all functions with nonReentrant modifier are still vulnerable to reentrancy attacks.
Fix the reentrancy guard:
The contest is live. Earn rewards by submitting a finding.
This is your time to appeal against judgements on your submissions.
Appeals are being carefully reviewed by our judges.