うつろい EC のパスワードリセット機能は、リセット token を base64(timestamp + user_id) で生成している。一見ランダムに見えるが、構造を解析すれば予測可能。
// PHP - 脆弱な token 生成
function generate_reset_token($user_id) {
$payload = time() . ':' . $user_id;
return base64_encode($payload);
}
// 例: base64('1720000123:42') = 'MTcyMDAwMDEyMzo0Mg=='
攻撃者は自分のリセットを実行して時刻を確認 → 被害者の user_id を推測 → 被害者の token を予測できる。