While writing some code that communicates with the I2PControl JSON-RPC API I noticed that the Token returned by the Authenticate API was just a Unix timestamp (generated here.) This is obviously completely insufficient for an authentication token, as it is trivial to guess. A simple fix for this would be to just replace that with a call to a cryptographically secure RNG.
Much more seriously however, I also noticed that the token is not checked or validated anywhere! You can set arbitrary configuration parameters without knowing the password or having to guess the token!