London

June 28–29, 2027

New York

September 15–16, 2026

Berlin

November 9–10, 2026

Your tests can’t catch a poisoned model

The AI security threat engineering leaders aren’t talking about.
October 13, 2026

You have 1 article left to read this month before you need to register a free LeadDev.com account.

Estimated reading time: 7 minutes

Key takeaways:

  • Poisoned training data changes a model like rewritten code.
  • A poisoned model can pass every test.
  • Treat training data as production infrastructure.

As organizations race to deploy AI, engineering leaders are investing heavily in model performance, infrastructure, and application security. One attack vector still gets comparatively little attention: poisoning the data used to train AI systems.

Unlike a code vulnerability, a poisoned dataset can pass every functional test a team runs and still teach a model to behave exactly as an attacker intends.

This article explains how data poisoning differs from the security problems engineering teams already know how to catch, why standard software practices often miss it, and what a secure development lifecycle for AI needs to include.

Healthcare offers some of the clearest real-world examples of the problem, so it runs through this piece as a case study, though the lessons apply to any team building or deploying machine learning. 

The security threat most engineering teams aren’t watching for 

Most engineering security programs are built around a familiar model: harden the perimeter, patch the code, and monitor the network. That model assumes the thing worth protecting is the software itself: its logic, dependencies, and runtime behavior.

AI systems break that assumption. In a machine learning system, the training data functions as the logic. A model doesn’t run instructions an engineer wrote; it encodes patterns inferred from examples it was given. Corrupt those examples, and the system changes just as thoroughly as if someone had rewritten its source code, except no one wrote anything a code reviewer would recognize as a change. 

This is what data poisoning means – manipulating training data so a model learns behavior the attacker wants, rather than the behavior its owners intended. Standard tools weren’t built to catch this.

An SQL injection attempt shows up in a request log. A poisoned training run leaves nothing to log, because the compromise is distributed across millions of model weights and looks, at the code level, identical to a normal training job. 

This is why data poisoning slips past teams that trust their existing tooling. Functional tests confirm that code does what it’s supposed to do. They say nothing about whether a model’s underlying beliefs have been shaped by corrupted data.

A poisoned model can pass every test on the list and still act, consistently and confidently, on something false. 

Why healthcare exposes the problem first 

Healthcare is not the only industry exposed to data poisoning, but it makes the risk easiest to see, which is why it’s worth studying even if a clinical model isn’t on your roadmap.

Healthcare AI pipelines pull training data from hundreds of independent collection points: hospitals, outpatient clinics, imaging centers, and remote monitoring devices, each run by a different organization with different access controls. Any one of these points can become an injection vector where corrupted samples enter the pipeline long before a model reaches training. 

Regulated industries also illustrate a second problem: the controls meant to protect a system can obstruct the auditing needed to catch an attack on it.

In healthcare, the Health Insurance Portability and Accountability Act (HIPAA) and the General Data Protection Regulation (GDPR) limit data sharing to protect patient privacy. Those same limits make it harder to compare data across institutions and spot a coordinated poisoning campaign.

Any organization operating under strict data access boundaries, including finance and government, will recognize this tradeoff. Privacy controls, applied without a poisoning threat model in mind, can end up protecting an attacker’s cover as effectively as they protect a patient’s record. 

What healthcare adds is stakes that are hard to ignore. A poisoned recommendation engine costs a company revenue. A diagnostic model that gradually underperforms for one patient population costs something a bug report can’t fix. That’s why healthcare runs through this piece, not because the underlying mechanics only apply there. 

4 ways attackers manipulate AI systems 

Data poisoning covers a range of techniques, and understanding the differences doesn’t require a background in machine learning. 

  • Availability attacks are the most direct: flood the training set with mislabeled or noisy data until overall model accuracy drops. These are also the easiest to catch, because a measurable drop in accuracy is exactly what monitoring is designed to flag. 
  • Integrity attacks are more targeted: instead of degrading performance across the board, an attacker skews a model’s behavior on one specific input class while leaving everything else looking normal. A fraud-detection model, for example, could be trained to consistently miss one particular transaction pattern. 
  • Backdoor attacks deserve the most attention from engineering leaders: a trigger, such as an unusual pixel pattern or a rare token sequence, gets planted in a small number of training examples alongside the output the attacker wants. The model behaves normally on every input except the one containing the trigger, so it passes standard validation without issue. The backdoor then sits dormant until the attacker activates it. 
  • Demographic-targeted attacks concentrate harm in one subgroup within the data:  as the effect is narrow, it’s easy to mistake for something other than an attack, such as sampling bias or a known model limitation, rather than deliberate manipulation.

None of these four techniques require an exploit or an intrusion. The attack surface is the data pipeline itself, and each one can operate inside a training process that looks, from the outside, completely ordinary. 

Why do traditional engineering practices fall short?

The practices that make software engineering reliable are largely blind to this class of attack. They were built to catch a different problem. 

Continuous integration and continuous delivery (CI/CD) pipelines confirm that code builds, passes tests, and deploys correctly. They have little to say about whether the data feeding a training job has been tampered with, since that data usually lives outside the repository CI/CD is watching.

Unit tests verify that functions return expected outputs for known inputs, but they can’t catch a backdoor trigger no one thought to test for. Security scanning tools find vulnerable dependencies and insecure code patterns. They don’t evaluate whether a model’s behavior has been shaped by corrupted training examples. 

A poisoned model typically clears every one of these checks. It passes its unit tests, clears the security scan, and hits its accuracy target on the held-out validation set, because the attacker controls what’s in the trigger and, by definition, keeps it out of that set. The certification process ends up validating the backdoor into production instead of catching it. 

Treating AI systems as software with a few extra steps understates the engineering problem. The mindset a model requires is closer to supply chain security than application security: the question isn’t only whether the code does what it should, but whether the training data’s origin can be trusted. 

Building a secure development lifecycle for AI 

None of this makes AI undeployable, but it does mean the development lifecycle needs phases most engineering organizations haven’t built yet. 

Data provenance comes first. Every training dataset should carry a documented record of where each sample came from, who had write access to it, and when it entered the pipeline. Without that record, there’s no way to investigate when something looks wrong later. 

Threat modeling for training data deserves the same attention engineering teams already give to application architecture. Who can write to the training corpus? Who can influence labeling or feedback loops? Where are the trust boundaries between internal data, third-party data, and user-submitted data? 

Adversarial testing extends quality assurance (QA) past functional correctness. Teams need to actively probe for the kind of narrow, triggered behavior that standard test sets won’t surface, searching for backdoors rather than waiting to find one after deployment.

Continuous monitoring after deployment matters because poisoning attacks are built to survive pre-deployment validation. Watching for anomalies in specific input segments, not just aggregate accuracy, is often the only realistic chance of catching a dormant backdoor before it’s triggered. 

Cross-functional ownership ties these pieces together. Data provenance sits with data governance. Threat modeling sits with security. Adversarial testing sits with machine learning engineering. In most organizations today, these functions rarely sit in the same room when a training pipeline gets designed, which is the gap a real secure development lifecycle for AI has to close. 

NYC 27 Pre sale ticket block image

A poisoned model can ship without anyone noticing

The biggest risk in AI security may not be an attacker breaking into a system. It may be an organization unknowingly teaching its own model to behave incorrectly, and not finding out until the damage has already reached users.

Engineering leaders don’t need to become machine learning researchers to address this, but they do need to treat training data as production infrastructure: owned, documented, tested, and monitored with the same rigor already given to code.

That shift in ownership, more than any single tool, will determine whether an organization catches a poisoning attempt before it ships or discovers it months later, after the model has already made its decisions.