Christian Lehnert — Linux, Hacking & Faith

tag: #security

10 posts
5 days ago Secrets in Git, Done Right

When you genuinely have a secret and your whole workflow is git, where does it live? Not plaintext in the repo, not a gitignored file passed around Slack. SOPS with age encrypts the values, commits the ciphertext, keeps git diffs readable, and decrypts only at the point of use. age gives modern key management without the PGP misery; SOPS gives the value-only, multi-recipient, git-friendly workflow. A team's access model becomes a reviewable list of public keys. Plus when SOPS beats Vault and the one thing you must not get wrong.

#security #secrets #sops #gitops #devops
2 weeks ago Azure Managed Identities

The most dangerous thing in most Azure setups is a stored secret - it leaks, nobody rotates it, and an attacker finds it months later. Managed identities delete it, because the identity becomes the credential and your code gets short-lived tokens by proving what it is. Inside Azure that is one toggle and a scoped role; across the boundary, Workload Identity Federation lets GitHub Actions and Kubernetes authenticate to Azure over OIDC with no stored secret at all. Here is how both work, and the caveats that replace secret rotation.

#azure #devops #security
2 weeks ago Where Should Agent Code Run

An AI agent writes code, and now you have to decide where it runs, because in your process a single prompt injection reaches everything. Three answers sit at three points on the one axis that matters, isolation strength - plain Docker (thin shared-kernel wall), my tank-os-with-llms container (that thin wall hardened, self-hosted), and Azure Container Apps Sandboxes (thick hardware-backed microVM, cloud-managed). Isolation strength and ownership pull against each other, and here is how to pick.

#security #azure #containers #docker
3 weeks ago Patching - The Boring Control That Stops Most Breaches, and Why It Still Does Not Happen

Around 60% of breaches exploit a vulnerability that already had a patch. The gap is not knowledge, it is deployment, and it stays open because patching genuinely breaks things, there are too many patches, CVSS points at the wrong ones, and nobody owns the forgotten systems. The way through: prioritize by what is actually being exploited (the CISA KEV catalog, not raw severity), tier your response by exposure, automate the boring low-risk majority, and know what you run, because you cannot patch what you forgot you own.

#security #patching #devops
3 weeks ago If a Human Can Delete Prod, That Is the System's Fault, Not the Human's

When someone deletes production, the room asks who did it. That is the wrong question. If one person at one terminal with one wrong command can destroy prod, the system that granted that power with no guardrail is the failure, not the human, who is only the last link in a chain of missing controls. Here is why human error is a symptom not a cause, the controls that actually prevent it (least privilege, deletion protection, two-step destructive ops, environment isolation, separate-account immutable backups), and using chaos engineering to test the guardrails before reality does.

#security #reliability #rbac #devops
3 weeks ago WORM - When You Actually Need Write-Once Storage, and When a Hash Chain Is Enough

WORM (Write Once Read Many) storage cannot be altered or deleted after writing, even by an administrator, which makes it the right tool for audit logs, regulated financial records, and ransomware-resistant backups. But it confuses two different promises - write-prevention (the storage lock) and integrity-proof (a hash chain). Most tamper-proof-log requirements need only the hash chain, which is cheaper and independently verifiable. Here is when to reach for real WORM, the irreversible compliance-mode trap, and the GDPR conflict to design around.

#storage #worm #compliance #security
1 month ago Your Agent Has Your Keys

People install Claude Code, Codex, and Cursor in five minutes and never ask what the thing can actually reach. The answer is everything you can - your files, your network, your keys. The documented 2026 attacks are mundane, a JSON config in a cloned repo that runs commands before the trust dialog, a crash report that smuggles a shell command through a tool you trust. Here is the real threat model and how to bound it, up to my tank-os-with-llms box.

#security #ai-agents #claude-code #codex #mcp #prompt-injection
1/2 older >