메뉴
HN
Hacker News 48일 전

단 0.01유로 송금으로 은행 AI를 해킹하는 법

IMP
9/10
핵심 요약

유럽의 2위 디지털 은행인 번큐(Bunq)의 AI 어시스턴트에서 간접 프롬프트 인젝션(Indirect Prompt Injection) 취약점이 발견되었습니다. 공격자가 0.02유로를 송금하며 거래 내역에 악의적인 프롬프트를 숨기면, 피해자가 은행 앱에서 AI에게 질문할 때 AI가 이를 지시어로 인식하여 사용자를 겨냥한 정교한 피싱(스피어피싱) 공격을 자동으로 실행하게 됩니다. 이는 금융권 AI 시스템이 외부 데이터를 신뢰하고 처리하는 구조적 근본 결함을 보여주는 매우 중요한 보안 이슈입니다.

번역된 본문

🚀 Blue41이 RSAC 런치 패드에서 우승했습니다. 자세한 내용은 여기에서 확인하세요.

사례 연구: Blue41이 금융 AI 어시스턴트를 안전하게 보호하도록 Bunq를 지원한 방법 Thomas Vissers & Tim Van hamme • 2026년 4월 29일

Blue41은 2천만 명 이상의 고객을 보유한 유럽 두 번째 규모의 디지털 은행인 Bunq가 스피어피싱(Spearphishing) 위협으로부터 자사의 AI 어시스턴트를 보호할 수 있도록 지원했습니다. 우리의 테스트 과정에서 단 한 번의 송금만으로 어시스턴트가 매우 신뢰할 수 있는 피싱 공격의 전달 채널로 전환될 수 있는 간접 프롬프트 인젝션(Indirect Prompt Injection) 취약점을 발견했습니다. 우리가 이 사례를 공유하는 이유는 이러한 근본적인 문제가 한 은행에만 국한되지 않기 때문입니다. 이는 거래 데이터, 고객 기록, 문서, 메시지 또는 기타 신뢰할 수 없는 입력값을 처리하는 AI 어시스턴트를 배포하는 금융 기관 전체에 해당하는 더 광범위한 아키텍처적 과제입니다.

0.02유로 송금에서 금융 AI 어시스턴트 내부의 맞춤형 피싱 시나리오로.

설정 현대의 모바일 뱅킹 앱에는 점점 더 AI 기반 기능이 포함되고 있습니다. 이러한 기능은 사용자와 거래 기록, 제품 문서, 계좌 세부 정보, 고객 지원 콘텐츠 및 기타 내부 시스템과 같은 다양한 백엔드 데이터 소스 사이에 위치합니다. AI는 대규모 언어 모델(LLM, Large Language Model)을 사용하여 해당 컨텍스트를 기반으로 자연어 질문에 답변합니다.

일반적인 금융 AI 어시스턴트의 아키텍처: 사용자는 뱅킹 앱을 통해 상호작용하며, 어시스턴트는 거래 데이터, 문서 및 기타 소스에서 컨텍스트를 검색하여 외부 도구를 호출할 수도 있습니다.

사용자가 "내 최근 거래 내역을 보여줘"라고 질문하면 어시스턴트는 관련 기록을 가져와 LLM에 컨텍스트로 전달합니다. 그런 다음 모델은 대화형 응답으로 해당 데이터를 요약합니다.

보안상의 과제는 검색된 모든 컨텍스트를 동일하게 신뢰해서는 안 된다는 것입니다. 거래 설명(메모)은 제3자가 설정한 데이터입니다. 일반 텍스트처럼 보일 수 있지만, LLM 컨텍스트 창(Context Window)에 배치되면 모델이 이를 데이터가 아닌 명령어(Instruction)로 해석할 수 있습니다. 이것이 간접 프롬프트 인젝션의 핵심 문제입니다. 악의적인 명령어는 어시스턴트와 상호작용하는 사용자가 입력하는 것이 아닙니다. 대신 어시스턴트가 나중에 처리하는 외부 데이터나 검색된 데이터 내부에 숨겨져 있습니다.

개발자와 보안 팀에게는 AI 모델에 간접적으로 유입되는 각 데이터 조각의 위험 수준을 평가하는 것이 매우 복잡한 일입니다.

공격 시나리오 이 개념 증명(PoC) 공격은 피해자의 기기에 대한 접근 권한, 악성코드(Malware) 또는 전통적인 사회공학(Social Engineering) 기술이 전혀 필요하지 않았습니다. 공격자는 단지 소액의 계좌 이체만 보내면 되었습니다.

1단계: 공격자는 대상에게 소액(이 경우 0.02유로)을 송금합니다. 거래 설명 필드에 정교하게 조작된 프롬프트 인젝션 페이로드(Payload)를 포함합니다. 이것이 공격자가 취해야 하는 유일한 행동입니다.

2단계: 피해자가 뱅킹 앱을 열고 "내 최근 거래 내역 보여줘"와 같은 일상적인 질문을 AI 어시스턴트에게 던집니다. 이후 나머지 공격 과정은 AI 어시스턴트에 의해 자동적이고 자율적으로 실행됩니다.

해당 질문에 답하기 위해 AI 어시스턴트는 공격자의 송금 데이터를 포함한 거래 데이터를 검색하여 사용자의 질문에 답변하는 데 필요한 컨텍스트의 일부로 LLM에 전달합니다. 그런 다음 LLM은 거래 설명 내부에 주입된 악의적인 명령어를 처리합니다.

우리의 통제된 시연에서 어시스턴트는 은행으로부터의 정당한 재인증(Reauthentication) 요청으로 위장하여 은행 사용자에게 스피어피싱 공격을 시작하도록 조작되었습니다.

공격의 구조: 공격자가 거래 설명을 통해 악의적인 명령을 주입하고(1), 사용자가 어시스턴트에게 질문하며(2), 거래 데이터가 LLM 컨텍스트로 검색되고(3), 어시스턴트의 응답이 주입된 콘텐츠의 영향을 받습니다(4).

결과적으로 생성된 메시지는 은행 자체의 애플리케이션 내에, 은행 자체의 AI 어시스턴트로부터 나타납니다. 이 메시지는 실제 거래 세부 정보와 사용자 특정 정보를 참조할 수 있으므로 매우 신뢰도가 높은 피싱 공격이 됩니다. AI 에이전트의 기능에 따라 동일한 신뢰 경계(Trust-boundary) 붕괴는 여러 공격 시나리오로 이어질 수 있습니다. 왜 이러한 문제가...

원문 보기
원문 보기 (영어)
🚀 Blue41 wins RSAC Launch Pad. Read more here . Case study How we helped Bunq secure their financial AI assistant Thomas Vissers & Tim Van hamme • April 29, 2026 Blue41 helped Bunq , Europe’s second-largest digital bank with more than 20 million customers, secure its AI assistant against spearphishing risks. During our testing, we identified an indirect prompt injection vulnerability where a single bank transfer could turn the assistant into a delivery channel for a highly credible phishing attack. We are sharing this case because the underlying issue is not unique to one bank. It is a broader architectural challenge for financial institutions deploying AI assistants that process transaction data, customer records, documents, messages, or other untrusted inputs. From a €0.02 bank transfer to a personalized phishing scenario inside a banking AI assistant. The setup Modern banking apps increasingly include AI-powered features. These sit between the user and a range of backend data sources, such as transaction records, product documentation, account details, support content, and other internal systems. They use a large language model to answer natural-language questions based on that context. Architecture of a typical financial AI assistant: the user interacts through the banking app, while the assistant retrieves context from transaction data, documentation, and other sources, and may invoke external tools. When a user asks, “Give me an overview of my recent transactions,” the assistant fetches the relevant records and passes them to the LLM as context. The model then summarizes the data in a conversational response. The security challenge is that not all retrieved context should be trusted equally. A transaction description is data set by a third party. It may look like ordinary text, but when it is placed into an LLM context window, the model may interpret it as an instruction rather than as data. This is the core problem behind indirect prompt injection: malicious instructions are not entered by the user interacting with the assistant. They are hidden inside external or retrieved data that the assistant later processes. For developers and security teams, it is complex to assess the risk-level of each piece of data indirectly pulled into the AI model. The attack scenario The proof of concept required no access to the victim’s device, no malware, and no traditional social engineering. The attacker only needed to send a small bank transfer. Step 1. The attacker transfers a small amount, in our case €0.02, to the target. In the transaction description field, they include a carefully crafted prompt injection payload. This is the only action the attacker needs to take. Step 2. The victim opens the banking app and asks the AI assistant a routine question, such as “Show me my recent transactions”. The rest of the attack is executed automatically and autonomously by the AI assistant. To answer that question, the AI assistant retrieves the transaction data, including the attacker’s transfer, and passes it to the LLM as part of the context needed to answer the user. The LLM then processes the injected instructions inside the transaction description. In our controlled demonstration, the assistant was manipulate in launching a spearphishing attack to the bank’s user, presented as a legitimate reauthentication request from the bank. Anatomy of the attack: the attacker injects malicious instructions through a transaction description (1), the user queries the assistant (2), the transaction data is retrieved into the LLM context (3), and the assistant’s response is influenced by the injected content (4). The resulting message appears inside the bank’s own application, from the bank’s own AI assistant. It can reference real transaction details and user-specific information, making it a highly credible phishing attack. The same trust-boundary failure can lead to multiple attack scenarios, depending on the capabilities of the AI agent. Why this matters for financial institutions Several properties make this class of attack particularly relevant for banking and financial services. The injection surface is common. Transaction descriptions, payment references, merchant metadata, support messages, uploaded documents, emails, and CRM notes are all examples of data fields that may eventually be retrieved by an AI assistant. Many of these fields were never designed as trusted instruction boundaries. The delivery mechanism is cheap and credible. A tiny transfer can place attacker-controlled text inside a victim’s transaction history. The payload is then delivered through a highly trusted channel: the bank’s own application. The assistant has privileged context. Unlike a phishing email, a banking AI assistant can access real account context. That makes manipulated responses more personal, more timely, and more believable. The risk grows with capability. A read-only assistant can still mislead users. An assistant with access to tools, workflows, or account operations introduces a larger risk surface. The more useful the assistant becomes, the more important its security model becomes. The broader lesson is simple: every untrusted data source that enters an AI assistant’s context becomes part of the assistant’s attack surface. Why guardrails alone are not enough A natural response is to add input filters, prompt injection classifiers, or content moderation rules. These controls can help, but they are not sufficient on their own. Bunq’s AI application had guardrails in place. The issue persisted because the malicious intent was not obvious from the transaction description in isolation. The payload did not need to say “ignore previous instructions” or another classic jailbreak pattern. It was crafted to blend into the transaction data and only became dangerous once the assistant retrieved it, placed it into context, and generated a response from it. A naive prompt injection is caught with high confidence (top). A more carefully crafted payload can be difficult to distinguish from ordinary transaction data when reviewed in isolation (bottom). This is the limitation of relying on static text classification alone. The risk is not only in the text itself. The risk emerges from the interaction between untrusted data, retrieval logic, model behavior, application context, and the assistant’s available outputs or actions. The conclusion is that guardrails alone are not enough and need to be part of a layered security model. Input filtering helps reduce obvious attacks. Output constraints can prevent some harmful responses or data leaks. Least-privilege access limits impact. Runtime monitoring helps detect when the assistant behaves outside its intended operating profile. What effective mitigation looks like There is no single control that solves indirect prompt injection. The practical goal is to reduce exposure, constrain dangerous behavior, and detect compromise when protections fail. In this case, we discussed remediation options such as reducing unnecessary exposure to untrusted transaction fields, clearly separating data from instructions, constraining outbound links, and monitoring assistant behavior for anomalous outputs. We then validated together that the implemented mitigations effectively resolved the vulnerability. More generally, financial institutions deploying AI assistants should consider four layers of control. 1. Minimize unnecessary context. Do not pass fields to the assistant unless they are needed for the user task. If a transaction description is not required to answer a question, it should not enter the model context by default. 2. Treat retrieved data as untrusted. Transaction descriptions, customer messages, documents, emails, and API responses should be handled as data, not instructions. The assistant architecture should preserve that distinction explicitly. 3. Constrain sensitive outputs and actions. Assistants should not freely generate links, request credent