Snooping on libpam (openssh auth, passwd) with Golang and eBPF

Snooping on libpam (openssh auth, passwd) with Golang and eBPF
In the vast and complex landscape of software security, safeguarding sensitive information remains a paramount concern for developers and security professionals alike. Among the myriad of challenges, securely managing and protecting credentials during authentication processes stands out as a critical vulnerability point. Traditional security measures often fall short in providing real-time insights into how credentials are handled and potentially exposed within applications, especially those relying on widely used authentication frameworks like PAM (Pluggable Authentication Modules).
Read more →

Building an XDP eBPF Program with C and Golang: A Step-by-Step Guide

Building an XDP eBPF Program with C and Golang: A Step-by-Step Guide
Building an XDP eBPF Program with C and Golang: A Step-by-Step Guide is a comprehensive tutorial that walks readers through the process of building an XDP (eXpress Data Path) eBPF (extended Berkeley Packet Filter) program using C and Golang. The article provides a clear overview of XDP and eBPF, highlights the project’s goal of creating a simple chaos engineering tool, and guides readers through each step of the development process. From setting up the development environment to writing the XDP eBPF program in C and the accompanying Golang application, readers will gain hands-on experience and learn important concepts such as packet processing, perf event handling, and statistics tracking. By the end of the article, readers will have a solid understanding of how to leverage XDP and eBPF for networking and performance optimization purposes
Read more →

Docker Overlayfs: How filesystems work in Docker

Docker Overlayfs: How filesystems work in Docker
This is a brief follow up to my article on Docker networking: Network Namespaces, Docker Bridge and DNS Docker uses OverlayFS to manage the file system of its containers. When a container is run, Docker creates a new layer for the container’s file system on top of the base image. This allows the container to have its own file system that is isolated from the host system and other containers.
Read more →

Docker networking: Network Namespaces, Docker Bridge and DNS

Docker networking: Network Namespaces, Docker Bridge and DNS
Ever wondered how docker compose lets you communicate between services? This article takes a high level look at network namespaces, Dockers internal DNS and Docker bridge. Network namespaces are a powerful feature in Linux that allows for the isolation of network stacks, creating multiple virtual networks on a single host. This concept is particularly useful for scenarios such as containerization, where each container needs its own independent network stack. In this article we’ll take a look at how docker / docker compose utilize this technology to grant containers network isolation and also take a look at how docker handles cross-container networking.
Read more →

Advice for engineers wanting to ‘make it’

Advice for engineers wanting to 'make it'
The advice I wish I had been given As someone with two decades of experience in the tech industry, I have been fortunate to have enjoyed success, but my path has been far from deliberate. In hindsight, there are some steps I could have taken to have increased my ability to be a better engineer and ultimately to have reached my goals sooner. If I could time travel, this is the advice I would give to my younger self:
Read more →