Earlier quoted context omitted.
Exactly. SQL injection was caused by treating user input as part of the instruction instead of as the pure data that it was intended as. Separating those two fixed it. Prompt injection is unavoidable because the user input is intended as instruction.
This is the real problem with LLMs. There is no way to separate code from data. At best, models could be trained on tokens that indicate untrusted data coming in. But then the untrusted tokens could also be messed with. I've wondered if it would be possible for there to be two input streams: 1, for prompt, 2 for untrusted data. But I suspect that transformers would still only optionally decide what each one was for.…
And now all these security efforts to manage data privacy are akin to lipstick on a pig, they are brittle, costly, one-off. There are no boundaries inside the LLM storage, the training data is not encrypted at all in the memory across the pseudo tenants