NGINX Modern Apps > Class 15 - Introduction to F5 AI Gateway Source | Edit on
Module 7 - LLM07: System Prompt Leakage¶
From the OWASP TOP 10 for LLM Applications and Generative AI:
- LLM07: System Prompt Leakage: The system prompt leakage vulnerability in LLMs refers to the risk that the system prompts or instructions used to steer the behavior of the model can also contain sensitive information that was not intended to be discovered. System prompts are designed to guide the model’s output based on the requirements of the application, but may inadvertently contain secrets. When discovered, this information can be used to facilitate other attacks.
Attack¶
The system prompt is defining to the LLM how to behave and what capabilities it has. If an attacker gets hold of this information, it would have a similar impact to disclosing the sensitive source code of a proprietary application.
Let’s see how we can attack our chatbot using this attack vector.
Start a new conversation and paste the below prompt.
Protect¶
We will now configure the AI Gateway to protect the AI Assistant by
using again prompt-injection
processor.
We will be adding a prompt-injection
processor to the AI Gateway configuration.
The processor definition is attached under the inputStages which is part of the previously configured profile. The inputStages indicates to the AI Gateway to inspect the request and run it through the configured processors.
The final config will look like this:
routes: - path: /api/chat policy: arcadia_ai_policy timeoutSeconds: 600 schema: openai # What policy is applied to the route policies: - name: arcadia_ai_policy profiles: - name: default # To what LLM endpoint we forward the request to services: - name: ollama executor: http config: endpoint: "http://ollama_public_ip:11434/api/chat" schema: ollama-chat # What do we do with the request, at the moment we just forward it profiles: - name: default inputStages: - name: protect steps: - name: prompt-injection services: - name: ollama # Here we will find all our processor configuration processors: - name: prompt-injection type: external config: endpoint: "http://aigw-processors-f5:8000" version: 1 namespace: f5 params: threshold: 0.5 # Default 0.5 reject: true # Default True skip_system_messages: true # Default true![]()
Configure the AI Gateway by running the bellow command in the VS Code terminal.
curl --data-binary "@/home/ubuntu/aigw_configs/lab7.yaml" http://10.1.1.5:8080/v1/config
![]()
Testing for system prompt leakage and checking the logs¶
Restart the chat and run the attack again.
You will see that this time AI Gateway is blocking it.
Then review the AI Gateway logs from the AI Gateway Web Shell tab you previously opened. Your previously run
command should continue to show you new log entries. You may need to scroll to the bottom of the screen in order to
see them. If you are back at the terminal prompt, run the docker logs aigw-aigw-1 -f
command again to view the logs.
The processor has blocked the request with a prompt injection confidence level of confidence:0.9920624494552612
2025/01/12 11:35:25 INFO running processor name=prompt-injection 2025/01/12 11:35:25 INFO processor error response name=prompt-injection metadata="&{RequestID:88e718031ae9605df12a5b9be89b34dd StepID:01945a4c-1df0-7351-8c2b-8da3f8c832f4 ProcessorID:f5:prompt-injection ProcessorVersion:v1 Result:map[confidence:0.9920624494552612 detected:true rejection_reason:Possible Prompt Injection detected] Tags:map[attacks-detected:[prompt-injection]]}" 2025/01/12 11:35:25 ERROR failed to executeStages: failed to chain.Process for stage protect: failed to runProcessor: processor prompt-injection returned error: external processor returned 422 with rejection_reason: Possible Prompt Injection detected![]()
Thank you for participating in the F5 AI Gateway lab. For more information about AI Gateway, please visit https://www.f5.com/products/ai-gateway
