당신의 에이전트에는 검증하지 않은 중간자가 있습니다
연구자들은 Taobao, Xianyu, Shopify 기반 스토어프론트에서 유료 LLM API 라우터 28개를 구매했고, 공개 커뮤니티에서 추가로 400개를 수집했습니다. 그들은 심어둔 자격 증명으로 요청을 계측하고, 모든 라우터를 탐침하여 트래픽을 어떻게 처리하는지 확인했습니다.1
이 라우터들 중 17개가 요청에 심어둔 AWS 카나리 자격 증명을 건드렸습니다. 하나는 미끼로 배치된 개인 키에서 ETH를 탈취했습니다. 연구팀이 허니팟으로 설정한 유출된 OpenAI 키는 회수하기 전까지 1억 개의 GPT-5.4 토큰을 생성했고, 초록에 따르면 “7개 이상의 Codex 세션”을 만들어냈습니다.1 별도로 약하게 구성된 디코이들은 20억 개의 청구 토큰, 440개의 Codex 세션에 걸친 99개의 자격 증명, 그리고 이미 자율 YOLO 모드로 실행 중인 401개의 세션을 산출했습니다.1
LLM API 라우터는 새로운 공격 표면입니다. 아무도 이를 감사하지 않고 있습니다.
TL;DR
서드파티 LLM API 라우터는 에이전트와 업스트림 모델 사이의 모든 인플라이트 JSON 페이로드에 평문으로 완전히 접근할 수 있는 애플리케이션 계층 프록시입니다. 어떤 제공업체도 클라이언트와 업스트림 사이에 암호학적 무결성을 강제하지 않습니다. Liu, Shou, Wen, Chen, Fang의 새로운 arxiv 논문은 이 공격 표면에 대한 최초의 체계적 연구를 제시하며, 현장 데이터는 추악합니다. 유료 라우터 28개 중 1개, 무료 라우터 400개 중 8개가 응답에 악성 코드를 적극적으로 주입하고 있었고, 2개는 적응형 회피 트리거를 배포하고 있었으며, 17개는 심어둔 AWS 카나리 자격 증명을 건드렸고, 1개는 심어둔 개인 키에서 ETH를 탈취했습니다.1 저자들은 두 개의 핵심 공격 클래스와 두 개의 적응형 회피 변종을 공식화한 뒤, Mine이라는 연구 프록시를 구축하여 4개의 공개 에이전트 프레임워크에 대해 (그들의 표현으로) “네 개의 공격 클래스 모두”를 구현하고, 배포 가능한 클라이언트 측 방어 세 가지를 평가합니다.1 에이전트가 직접 구축하지 않은 라우터를 사용하고 있다면, 감사한 적 없는 신뢰 경계를 가지고 있는 것입니다.
핵심 요약
- 에이전트 운영자: 클라이언트와 업스트림 모델 사이에 있는 모든 LLM API 라우터는 모든 요청과 응답에 평문으로 접근할 수 있는 애플리케이션 계층 프록시입니다. 암호학적 무결성은 강제되지 않습니다. 마켓플레이스에서 구매했거나 공개 커뮤니티 목록에서 가져온 라우터를 사용하고 있다면, 그 반대가 입증되기 전까지 적대적 중개자로 취급하세요.
- 하네스 빌더: PreToolUse 훅은 도구 실행 전에 실행되지만, 악성 라우터는 모델 응답을 생성된 후이자 훅에 도달하기 전에 수정합니다. 훅 스택에 응답 측 검증을 추가하고, 비정상적인 응답 형태에 대해 페일 클로즈드 정책 게이트를 고려하세요.
- YOLO 모드를 실행하는 모든 사람: 연구자들의 허니팟에 있던 401개의 세션이 이미 자율 YOLO 모드로 실행 중이었습니다.1 자율 세션에서 도구 호출을 수정하는 라우터는 당신이 읽게 될 응답을 수정하는 라우터보다 훨씬 더 큰 폭발 반경을 가집니다. 통제하지 않는 라우터를 통해 YOLO 모드를 실행하지 마세요.
라우터란 정확히 무엇인가?
이 논문의 맥락에서 LLM API 라우터는 클라이언트와 하나 이상의 업스트림 모델 제공업체 사이에 위치하는 서드파티 서비스입니다. OpenAI 호환 API를 사용하여 라우터에 요청을 보냅니다. 라우터는 그 요청들을 자신이 선택한 업스트림 — GPT-5, Claude, Gemini, 오픈 웨이트 모델, 또는 이 모두의 풀 — 으로 전달하고, 동일한 형태로 응답을 반환합니다.1
라우터가 존재하는 이유는 LLM 생태계가 혼란스럽기 때문입니다. 사람들은 모든 모델에 작동하는 하나의 API 키를 원합니다. 사람들은 가격 차익을 원합니다 — 토큰을 대량으로 사서 더 싸게 재판매하는 것이죠. 사람들은 직접 제공업체 액세스가 제한된 지역을 위한 지리적 우회책을 원합니다. 사람들은 단일 클라이언트로 여러 모델을 테스트하고 싶어 합니다. 이 모두는 정당한 이유이며, 건강한 라우터 시장은 이 모두를 지원합니다.
문제는 라우터가 애플리케이션 계층 프록시라는 점입니다. 라우터는 단순히 바이트를 전달하는 것이 아닙니다. 요청 JSON를 읽고, 업스트림을 선택하고, 선택적으로 요청을 재작성하고, 전달하고, 응답을 읽고, 선택적으로 응답을 재작성한 뒤 반환합니다. 이 파이프라인의 모든 단계는 라우터의 인프라에서 평문으로 이루어집니다.1
여기에는 TLS에 해당하는 것이 없습니다. TLS는 클라이언트에서 라우터까지, 그리고 라우터에서 업스트림 모델까지의 바이트를 보호합니다. 하지만 라우터 자체로부터 페이로드를 보호하는 역할은 전혀 하지 않습니다. 어떤 제공업체도 원래 클라이언트와 최종 모델 사이의 암호학적 무결성을 강제하지 않습니다 — 모델이 받은 요청이 클라이언트가 보낸 요청과 동일하다는 서명된 증명도 없고, 클라이언트가 받은 응답이 모델이 생성한 응답과 동일하다는 서명된 증명도 없습니다.1
그 부재가 바로 공격 표면입니다.
현장 데이터
연구자들은 세 개의 마켓플레이스(Taobao, Xianyu, Shopify 기반 스토어프론트)에서 유료 라우터 28개를 구매했고, 공개 커뮤니티에서 무료 라우터 400개를 수집했습니다. 그들은 심어둔 자격 증명, 알려진 페이로드, 마커 문자열을 포함한 계측된 요청으로 각 라우터를 일련의 탐침을 통해 실행했습니다.1
그들이 발견한 것은 다음과 같습니다.
| 발견 | 개수 | 비고 |
|---|---|---|
| 응답에 악성 코드를 적극 주입한 유료 라우터 | 1 (28개 중) | 초록에서 명시적으로 구분 |
| 응답에 악성 코드를 적극 주입한 무료 라우터 | 8 (400개 중) | 초록에서 명시적으로 구분 |
| 적응형 회피 트리거를 배포한 라우터 | 2 | 초록에 유료/무료 구분 없음 |
| 연구자 소유 AWS 카나리 자격 증명을 건드린 라우터 | 17 | 초록에 유료/무료 구분 없음 |
| 연구자 소유 개인 키에서 ETH를 탈취한 라우터 | 1 | 초록에 유료/무료 구분 없음 |
적응형 회피 발견은 당신을 잠 못 들게 할 만한 것입니다. 적응형 회피 트리거란 라우터가 대부분의 시간 동안은 정상적으로 작동하다가 특정 조건 — 특정 요청 형태, 특정 클라이언트 지문, 특정 리듬 — 에서 공격 동작으로 전환한다는 뜻입니다. 무작위 요청을 샘플링하여 이를 잡아낼 수는 없습니다. 라우터가 언제 샘플링되는지 알고 정상적으로 동작하기 때문입니다.
카나리 자격 증명은 덫과 같습니다. 누군가 그것을 사용하려 할 때 발동됩니다. 17개의 라우터가 이를 “건드렸다”는 것은 최소한 17개의 라우터가 인플라이트 페이로드에서 자격 증명을 추출하여 AWS에 대해 사용을 시도했다는 의미입니다.1 초록은 라우터별 정확한 메커니즘을 상술하지 않지만, 트립와이어 설계상 접촉 = 사용입니다.
연구자 소유 개인 키에서 ETH를 탈취한 그 한 라우터는 더 강력한 증거입니다. 프롬프트 안의 개인 키는 자격 증명 트립와이어가 아닙니다 — 라우터가 실제로 지갑을 탈취했을 때만 침해 증거를 생성하는 미끼입니다. 한 라우터가 실제로 그렇게 했습니다.1
두 가지 포이즈닝 연구
연구자들은 표면상 양성인 라우터들도 서드파티 노출을 통해 동일한 공격 표면으로 끌려들어갈 수 있음을 보여주기 위해 두 가지 추가 연구를 수행했습니다.
연구 1: 유출된 OpenAI 키. 연구자들은 개발자의 실수로 노출된 것처럼 작동하는 OpenAI API 키를 유출시켰습니다. 관찰 기간 동안, 초록에 따르면 그 한 개의 유출된 키는 이를 포착한 라우터들을 통해 1억 개의 GPT-5.4 토큰과 “7개 이상의 Codex 세션”을 생성했습니다.1 누군가 — 혹은 여러 사람이 — 그 키를 찾아서 커뮤니티 라우터를 통해 요청을 라우팅하고, 1억 토큰 분량의 컴퓨트를 소진했습니다. 라우터는 도난당한 키를 세탁하는 계층이었던 것입니다.
연구 2: 약하게 구성된 디코이. 연구자들은 약하게 구성된 디코이 엔드포인트를 세웠습니다. 디코이들은 20억 개의 청구된 토큰, 440개의 Codex 세션에 걸친 99개의 자격 증명, 그리고 — 이것이 핵심 문장입니다 — 이미 자율 YOLO 모드로 실행 중인 401개의 세션을 산출했습니다.1
401개의 자율 세션이 이미 단 한 세트의 디코이를 통해 라우팅되고 있었습니다. 이 세션들 각각은 악성 중개자가 도구 호출을 주입하거나, 비밀을 탈취하거나, 모델의 출력을 수정할 수 있는 살아 있는 공격 표면이었고, 에이전트는 사람의 개입 없이 돌아온 것을 무엇이든 실행했을 것입니다. 401이라는 숫자는 한 연구 디코이가 잡아낸 것입니다 — 통제되지 않은 중개자를 통해 라우팅되는 실제 운영 인구는 필연적으로 더 큽니다.
두 핵심 공격 클래스와 두 적응형 변종
논문은 두 개의 핵심 공격 클래스와 두 개의 적응형 회피 변종을 공식화합니다. 초록은 분류에 대해 명시적입니다. AC-1과 AC-2는 핵심 클래스이며, AC-1.a와 AC-1.b는 AC-1의 변종입니다. 연구 프록시 Mine은 (초록의 표현으로) “네 개의 공격 클래스 모두”를 4개의 공개 에이전트 프레임워크에 대해 구현합니다.1
AC-1: 페이로드 주입 (핵심 클래스). 라우터는 응답을 수정하여 클라이언트 에이전트가 작동할 추가 지시, 도구 호출, 또는 콘텐츠를 주입합니다. 에이전트는 자신이 모델의 출력을 읽고 있다고 생각하지만, 실제로는 라우터 소유자의 출력을 읽고 있는 것입니다.
AC-2: 비밀 탈취 (핵심 클래스). 라우터는 인플라이트 요청과 응답에서 비밀 — API 키, 토큰, 개인 키, 자격 증명처럼 보이는 모든 것 — 을 읽어내어 공격자의 인프라로 전송합니다.
AC-1.a: 의존성 표적 주입 (AC-1의 적응형 변종). 주입은 요청이 특정 의존성이나 컨텍스트와 일치할 때만 발동됩니다 — 예를 들어, 요청이 특정 라이브러리에 관한 것일 때만, 특정 함수가 참조될 때만, 특정 파일 경로가 프롬프트에 나타날 때만. 이는 무작위 테스트에서 공격을 보이지 않게 만듭니다.
AC-1.b: 조건부 전달 (AC-1의 적응형 변종). 악성 페이로드는 특정 조건(시간대, 요청 리듬, 클라이언트 지문) 하에서 전달됩니다. 동일한 탐지 회피 로직입니다.
이 공격 클래스들 모두는 클라이언트와 업스트림 모델 모두에게 보이지 않습니다. 양쪽 끝이 라우터를 신뢰하기 때문입니다. 클라이언트는 정상적인 응답 형태를 봅니다. 모델은 정상적인 요청 형태를 봅니다. 라우터는 그 중간에서 원하는 것을 자유롭게 할 수 있고, 어느 쪽도 변조를 탐지할 암호학적 방법을 가지고 있지 않습니다.1
한 계층 아래의 구성 패턴
저는 같은 구조적 버그에 대해 계속 글을 쓰고 있습니다. 개별적으로 승인된 구성 요소들이 승인되지 않은 동작으로 구성되는 것이죠. Trivy-to-LiteLLM는 패키지 계층에서의 구성이었습니다. 사일런트 이그레스는 도구 설명 계층에서의 구성이었습니다. MCP 도구 포이즈닝은 프로토콜 계층에서의 구성이었습니다. axios 메인테이너 침해는 인간 메인테이너 계층에서의 구성이었습니다.
라우터 공격은 네트워크 계층에서의 구성입니다. 클라이언트는 라우터를 호출할 권한이 있습니다. 라우터는 업스트림 모델을 호출할 권한이 있습니다. 업스트림 모델은 응답할 권한이 있습니다. 모든 개별 홉은 승인되어 있습니다. 이 승인된 홉들의 구성은 아무도 암호학적으로 봉인하지 않은 신뢰 경계를 가로지르기 때문에 대규모로 페이로드 주입과 비밀 탈취를 생성합니다.1
이를 어떤 단일 계층에서도 고칠 수 없습니다. 구성 계층에서 고쳐야 합니다. 이는 클라이언트가 응답 형태, 도구 호출, 콘텐츠가 모두 업스트림 모델이 그럴듯하게 생성할 만한 것과 일치한다는 것을 독립적으로 검증하기 전까지 라우터를 적대적으로 취급해야 한다는 의미입니다.
논문이 평가하는 세 가지 방어
논문은 공격 클래스들에 대한 세 가지 클라이언트 측 방어를 평가합니다.1
1. 페일 클로즈드 정책 게이트. 클라이언트는 응답 형태, 허용된 도구 호출, 허용된 URL, 허용된 명령에 대한 정책을 강제합니다. 정책을 벗어난 것은 페일 클로즈드 — 요청이 허용되는 대신 거부됩니다.
2. 응답 측 이상 탐지. 클라이언트는 응답 형태의 이상, 특이한 토큰 패턴, 알려진 공격 마커(알 수 없는 호스트로의 URL, 의심스러운 자격 증명 패턴, 특이한 도구 호출 구조)를 포함하는 출력을 감시합니다.
3. 추가 전용 투명성 로깅. 클라이언트는 모든 요청과 응답을 소급적으로 수정될 수 없는 추가 전용 로그에 기록합니다. 이것이 공격을 방지하지는 않지만, 포렌식적으로 추적 가능하게 만듭니다.
이들 중 어느 것도 만능 해결책이 아닙니다. 제 의견으로는, 페일 클로즈드 정책 게이트가 세 가지 중 가장 강력합니다. 왜냐하면 공격을 탐지하는 데 의존하지 않기 때문입니다 — 명시적 허용 목록 밖의 모든 것을 거부합니다 — 하지만 초록은 방어들을 순위 매기지 않으므로, 이는 논문의 발견이 아닌 제 의견으로 취급하세요. 이상 탐지는 정상적으로 보이는 공격을 놓치고, 적응형 회피 변종(AC-1.a와 AC-1.b)은 테스트 조건에서 정상적으로 보이도록 특별히 설계되었습니다. 정책 게이트는 그 정책만큼만 좋습니다. 그리고 “모델 응답이 어떻게 보여야 하는가”에 대한 완전한 정책을 작성하는 것은 어렵습니다.
실제로 해야 할 일
직접 구축하지 않은 라우터를 통해 LLM API를 호출하는 에이전트를 실행하고 있다면:
-
마켓플레이스에서 구매했거나 공개 커뮤니티에서 가져온 라우터를 운영자를 신뢰하지 않는 한 사용을 중단하세요. 여기서 “신뢰”는 외부적 근거가 있음을 의미합니다 — 알려진 팀, 서명된 계약, 법적으로 집행 가능한 관할권 — “마켓플레이스에서 좋은 리뷰를 받았다”가 아닙니다.
-
하네스에 페일 클로즈드 정책 게이트를 추가하세요. Claude Code에서 이는 명시적 허용 목록 밖의 도구 호출을 거부하는 PreToolUse 훅, 그리고 응답 형태를 다음 모델 턴에 전달하기 전에 검증하는 PostToolUse 훅을 의미합니다. 훅 스택은 당신의 페일 클로즈드 정책 계층입니다.
-
통제하지 않는 라우터를 통해 YOLO 모드를 절대 실행하지 마세요. 허니팟의 401개 자율 세션이 그 선례입니다. 라우터가 적대적이고 당신의 세션이 자율적이라면, 라우터가 당신의 머신을 실행하고 있는 것입니다.
-
모든 것을 기록하세요. 추가 전용 투명성 로깅은 사고를 재구성할 수 있게 해주는 것입니다. 모든 요청. 모든 응답. 모든 도구 호출. 라우터가 접근할 수 없는 곳에 저장하세요.
-
에이전트 인프라를 운영한다면, 암호학적 무결성을 강제하세요. 클라이언트와 업스트림을 모두 운영한다면, 클라이언트에서 요청에 서명하고 업스트림에서 서명을 검증하세요. 그것이 유일한 진짜 해결책입니다. 라우터는 여전히 평문을 볼 수 있지만, 서명을 무효화하지 않고는 아무것도 수정할 수 없습니다.
불편한 함의
라우터 공격 표면은 에이전트 생태계가 보안보다 인프라를 더 빨리 출하하고 있다는 깔끔한 예시입니다. 사람들은 모든 모델에 작동하는 하나의 API 키를 원합니다. 사람들은 가격 차익을 원합니다. 사람들은 지역 액세스를 원합니다. 라우터는 이 모두를 제공합니다. 시장은 이들을 보상합니다. 보안 감사는 이루어지지 않았습니다.
MCP 공격 표면은 50개의 문서화된 취약점을 가지고 있습니다. 공급망 공격 표면은 일주일 만에 다섯 개 생태계를 넘나든 TeamPCP 캠페인을 가지고 있습니다. 사일런트 이그레스 공격 표면은 Clinejection과 MCPTox 벤치마크를 가지고 있습니다. 이제 라우터 공격 표면을 추가하세요. 428개의 라우터가 연구되었고, 9개가 적극적으로 악성 코드를 주입하고 있었고, 17개가 심어둔 자격 증명을 건드렸고, 1개가 ETH를 탈취했고, 401개의 자율 세션이 이미 적대적 인프라에서 실행 중이었습니다.1
패턴은 매번 똑같습니다. 우리는 에이전트 스택의 새로운 계층을 구축합니다. 새 계층은 감사되기 전에 채택됩니다. 공격자들이 나타납니다. 연구자들이 나타납니다. 커뮤니티는 발견 사항을 작성합니다. 주의를 기울이고 있던 운영자들은 자신의 배포를 패치합니다. 주의를 기울이지 않았던 운영자들은 힘든 방식으로 알게 됩니다.
라우터 공격 표면은 “연구자들이 방금 작성한” 단계에 있습니다. 당신은 배포를 패치할 시간이 있습니다. 사용하세요.
FAQ
이 맥락에서 LLM API 라우터란 무엇인가요?
클라이언트와 업스트림 모델 제공업체 사이에 위치하고, OpenAI 호환 API를 노출하며, 요청을 하나 이상의 업스트림 모델로 디스패치하는 서드파티 서비스입니다. 모든 요청과 응답에 평문으로 접근할 수 있는 애플리케이션 계층 프록시입니다.1
CDN이나 일반 HTTP 프록시와 어떻게 다른가요?
CDN은 애플리케이션 페이로드를 읽지 않고 바이트를 전달합니다. LLM API 라우터는 JSON를 읽고, 업스트림을 선택하고, 선택적으로 요청을 재작성하고, 전달하고, 응답을 읽고, 선택적으로 응답을 재작성합니다. 단순한 전송이 아니라 데이터에 대해 애플리케이션 수준 처리를 수행하고 있는 것입니다.1
TLS가 악성 라우터로부터 저를 보호해주나요?
아니요. TLS는 클라이언트에서 라우터까지, 그리고 라우터에서 업스트림 모델까지의 바이트를 보호합니다. 라우터는 TLS를 종료하고, 평문을 읽고, 반대편에서 다시 암호화합니다. TLS는 라우터 자체로부터 페이로드를 보호하는 데는 아무 역할도 하지 않습니다.1
응답을 적극적으로 주입하는 라우터를 어떻게 탐지할 수 있나요?
라우터가 적응형 회피를 사용하고 있다면 안정적으로 탐지할 수 없습니다. 논문의 AC-1.a와 AC-1.b 공격 클래스는 운영 조건에서만 발동함으로써 특별히 탐지 회피를 목표로 합니다.1 최선의 방법은 사후에 공격을 탐지하려 하기보다 페일 클로즈드 정책 게이트 — 명시적 허용 목록 밖의 모든 것을 거부하는 것 — 입니다.
저는 Claude Code을 api.anthropic.com에 직접 실행하고 있습니다. 영향을 받나요?
아니요, 이 논문에서 설명한 라우터 공격 클래스의 영향은 받지 않습니다. 중개자 없이 Anthropic을 직접 호출하고 있기 때문입니다. 공격 표면은 특별히 서드파티 라우터입니다. 어떤 이유로든 — 기업 게이트웨이, 속도 제한 우회, 모델 집계기 — 프록시를 통해 Claude Code을 라우팅한다면 그 프록시를 감사해야 합니다.
OpenRouter, LiteLLM, 또는 다른 잘 알려진 집계기는 어떤가요?
논문은 특정 마켓플레이스(Taobao, Xianyu, Shopify 기반 스토어프론트)에서 구매한 유료 라우터 28개와 공개 커뮤니티 목록에서 가져온 무료 라우터 400개를 연구합니다.1 명명된 제품의 구체적인 목록은 발표하지 않습니다. 논문의 요점은 구조적입니다. 신뢰의 별도 근거가 없는 한 어떤 라우터도 신뢰할 수 없는 중개자입니다. 잘 알려진 집계기가 자동으로 더 안전한 것은 아닙니다 — 단지 더 가시적일 뿐이고, 이는 다른 속성입니다.
연구자들이 발견한 401개의 자율 세션에 대해 어떻게 해야 하나요?
그 세션들은 자신의 트래픽을 연구자들의 디코이를 통해 라우팅한 다른 운영자들의 것입니다. 직접 구축하지 않은 라우터를 통해 자율 에이전트 세션을 실행하고 있다면, 첫 번째 단계는 중단하는 것입니다. 두 번째 단계는 그 라우터를 통해 이동한 모든 자격 증명을 로테이션하는 것입니다. 세 번째 단계는 비정상적인 도구 호출이나 출력에 대해 세션 로그를 감사하는 것입니다.
참고 문헌
-
Hanzhi Liu, Chaofan Shou, Hongbo Wen, Yanju Chen, Ryan Jingyang Fang, “Your Agent Is Mine: Measuring Malicious Intermediary Attacks on the LLM Supply Chain,” arXiv:2604.08407, April 2026. 이 글에 있는 모든 라우터 공격 데이터, 공격 클래스 정의, 현장 연구 방법론, 방어 평가의 주요 출처. 모든 통계(유료 라우터 28개, 무료 라우터 400개, 1+8개의 적극적 주입, 2개의 적응형 회피 트리거, 17개의 AWS 카나리 자격 증명 접촉, 1개의 ETH 탈취, 유출된 키로부터 1억 토큰, 디코이로부터 20억 토큰, 401개의 자율 YOLO 세션, 440개의 Codex 세션, 99개의 자격 증명, 두 개의 핵심 공격 클래스 분류 — AC-1 페이로드 주입과 AC-2 비밀 탈취 — 그리고 두 개의 적응형 회피 변종 AC-1.a와 AC-1.b, Mine 프록시는 4개의 공개 에이전트 프레임워크에 대해 “네 개의 공격 클래스 모두”를 구현, 세 가지 클라이언트 측 방어: 페일 클로즈드 정책 게이트, 응답 측 이상 탐지, 추가 전용 투명성 로깅)는 논문 초록에서 직접 인용되었습니다. ↩↩↩↩↩↩↩↩↩↩↩↩↩↩↩↩↩↩↩↩↩↩↩↩