DevSecOps

Security defaults, pipeline hardening, and operational lessons from running production infrastructure under real adversary pressure.

RivasSec

Infrastructure. Security. Insight.

Field notes on infrastructure security, cloud hardening, Kubernetes, IAM, and OSINT by RivasSec.

Latest posts

Bandit-Clean Pwnagotchi Plugins: How `subprocess` Goes From Risk to Routine

Pwnagotchi plugins live one shell=True away from local code execution. Walking through the hardening of bt-tether-multi against Bandit B602/B603/B607: full-path resolution with shutil.which(), argv-list invocations, MAC and name validation, and the # nosec discipline. The patterns generalize to anything that shells out from Python.


Continue reading

TLS Has Three Jobs. Forget the Rest.

TLS gets easier when you stop walking the handshake step by step and start naming what it is for. It does three jobs. Once those are anchored, the protocol stops being a memorization problem and becomes a design problem.


Continue reading

Adoption Is a Security Control: Notes from Paving a Road

A security control developers can route around is not a control. Field notes from rebuilding a cloud security model around making the secure path the easy path: 40% lower remediation time, 27% lower pipeline latency, and a four-month adoption stall I caused myself.


Continue reading

IAM Roles That Fail Loud: Small Defaults, Big Difference

A small Pulumi library that treats IAM safety as a precondition: mandatory permissions boundary, no wildcard trust, no wildcard actions, every opt-out explicit.


Continue reading

The Trust Decay: Why Modern Hiring Has Become an Adversarial System

The tech hiring pipeline has shifted from talent discovery to risk mitigation. In 2026, the engineers who get hired are the ones who are hardest to doubt.


Continue reading

Elasticsearch Snapshot Verification, Minimal Privileges

Verify Elasticsearch snapshots without manage_snapshot: minimal API key, Prometheus-friendly script, and a public tools repo for hardened monitoring automation.


Continue reading

Taming the OOM Killer: Process Priorities on Linux

The Linux OOM Killer decides what dies under memory pressure. Protect sshd, mysqld, and other critical processes with oom_score_adj via a small script.


Continue reading

The 208.5-Day Kernel Bug: Uptime, Overflow, and Risk

A 2012 Linux kernel bug caused CPU lockups after 208.5 days of uptime due to an integer overflow in sched_clock(). RHEL 5/6 lesson: patch and observe uptime.


Continue reading