The FlashLoopAdapter exploit was caused by an authentication flaw in the open() and close() functions, which checked if the module was enabled on the caller instead of verifying if the caller was a legitimate Safe.