Secure development lifecycle (SSDLC): what it is and how to put it in place
What the secure development lifecycle is, what happens in each phase, what SAST, DAST and SCA add, and where to start if you have nothing in place today.
Almost everything written about artificial intelligence and cybersecurity is one of two things: that attackers now use AI, or that AI is going to defend you. Both are half true and neither helps you decide anything. What has changed, and it is concrete, is that companies are connecting models to their data and to their tools, and that creates an attack surface that did not exist three years ago.
It is worth starting by taking noise out, because this is where there is most of it.
Generative AI has not invented new attacks. What it has done is drop the cost of deception to almost nothing, and that does have practical consequences:
What has not changed is the way in: a valid credential, an unpatched system, and somebody who clicks. Anybody selling you that AI has changed the nature of the attack is selling you a product.
This is the part that matters and the part that almost nobody looks at. The moment a company connects an assistant to its documentation, to its database or to its tools, it has built a system that:
That is exactly the description of something you have to test before you expose it. And it has an uncomfortable property that no earlier system had: for a language model, data and instructions are the same thing. There is no technical boundary separating "this is content you should summarise" from "this is an order you should obey". All the security of these systems comes out of that.
The reference framework that orders these risks is the OWASP Top 10 for LLM Applications, which is to the world of models what the classic Top 10 is to the web.
Prompt injection is what makes every headline, almost always in its boring version: a user types "ignore your instructions" into the chat and the model does something it should not. That is the jailbreak, and as a company problem it is a minor one, because the user is deceiving himself inside his own session.
The one that matters is the indirect kind. Here the instruction is not written by the user: it arrives inside content that the system processes on its own. An email the assistant summarises. A page it consults. A document somebody outside uploaded to the shared folder. A support ticket a customer opens.
The content carries a hidden instruction, the model reads it as if it came from its owner, and acts. The victim has done nothing, has clicked nothing and does not find out. It is the difference between somebody deceiving his own assistant and somebody deceiving the assistant of another.
System prompt leakage comes out of the same place, and it is usually the first step: knowing the instructions and the tools of the assistant in order to know what can be asked of it.
A prompt injection on its own makes a model write something odd. Annoying and little else.
It becomes an incident when the model has hands. And that is where companies are today: assistants connected through MCP or other mechanisms to email, to repositories, to databases, to the ticketing tool or to the payment gateway.
The flaws we find are almost never in the model. They are in the design around it:
The practical conclusion: treat your assistant as a user who can be deceived, not as a trusted component. Least privilege, its own credentials, confirmation for anything that has effect, and a log of what it does.
The usual way for an assistant to know your company is RAG: documentation gets indexed and the model queries that index when it answers. It is the right approach and it brings two concrete problems.
The first one is about permissions. Indexing a folder usually means indexing everything in it, and the permissions of the original document rarely travel with the indexed fragment. The result is a search engine that answers anybody about documents that not everybody could open. It gets discovered the day somebody asks about the payroll.
The second one is that the index is an entry surface. If a third party can put content into something that gets indexed, they have put in text that the model will treat as trusted context. That is where indirect injection and data poisoning meet.
And then there is what happens with nobody’s permission: shadow AI. People pasting contracts, code or customer data into tools that the company has neither approved nor reviewed. Banning it by memo never works. What works is giving people an approved alternative that is actually usable, and then the ban holds up on its own.
The EU AI Act, the artificial intelligence regulation of the European Union, sorts systems by risk level and places different obligations depending on where each one falls. What is worth knowing without going into deadlines or articles, because that is for an adviser with your case in front of them:
An AI pentest is not about getting the model to say something outrageous. That is a demonstration, not a finding. What gets tested is the system around the model:
When what you want is to evaluate the behaviour of the model itself rather than the system, that is LLM red teaming, which is a different and complementary exercise.
The whole project, phase by phase, is written up in how an AI pentest works. If this is the first thing you are reading, it is worth starting with what penetration testing is, and for a specific scope, get in touch.
If any of this looks like a problem you are carrying, half an hour on a call scoping it with a senior pentester is worth more than reading another article.
Hablar con un pentester seniorPick a time that suits you. You tell us what you need and where you are, and we explain how we work and how we can help.