xtunnel - российский туннель, который позиционирует себя аналогом ушедшего из России ngrok. Сегодня, работая над учебным проектом, я заметил за ним любопытное поведение. Например, мы ставим на логине токен как http only куку (ниже и дальше будет представлен код на Java Spring, но подобное поведение аналогично во всех языках):

private void setTokenCookie(String token, HttpServletRequest request, HttpServletResponse response) {
        if (token == null) {
            return;
        }
        ResponseCookie cookie = ResponseCookie.from(JwtAuthFilter.TOKEN_COOKIE, token)
                .httpOnly(true)
                .secure(request.isSecure())
                .sameSite("Lax")
                .path("/api")
                .maxAge(Duration.ofMillis(expirationMs))
                .build();
        response.addHeader(HttpHeaders.SET_COOKIE, cookie.toString());
    }

Нормальные туннели не трогают такие куки, однако xtunnel такую куку закеширует (!) и будет подставлять ее в релеватные запросы по требованию кого угодно (!!). Например, в следующий метод, кто бы его не вызвал, xtunnel подставит куки последнего залогинного пользователя:

@GetMapping
    public ResponseEntity<?> get(
            @CookieValue(name = JwtAuthFilter.TOKEN_COOKIE, required = false) String token) {
        if (token == null) {
            return ResponseEntity.status(HttpStatus.UNAUTHORIZED).build();
        }
        // do something
    }

Таким образом, пользователи в обход логина могут представляться другими пользователями, и все аккаунты скомпрометированны.