<?xml version="1.0" encoding="utf-8" standalone="yes"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:content="http://purl.org/rss/1.0/modules/content/">
  <channel>
    <title>mtardy</title>
    <link>https://mtardy.com/</link>
    <description>Recent content on mtardy</description>
    <generator>Hugo -- 0.152.2</generator>
    <language>en</language>
    <lastBuildDate>Fri, 19 Dec 2025 00:00:00 +0000</lastBuildDate>
    <atom:link href="https://mtardy.com/index.xml" rel="self" type="application/rss+xml" />
    <item>
      <title>BPF Verifier State Pruning: Prune Points</title>
      <link>https://mtardy.com/posts/prune-points/</link>
      <pubDate>Fri, 19 Dec 2025 00:00:00 +0000</pubDate>
      <guid>https://mtardy.com/posts/prune-points/</guid>
      <description>&lt;p&gt;&lt;em&gt;This article is part of a series of notes that Paul Chaignon and I wrote to prepare a
presentation introducing the BPF verifier state pruning for Linux Plumbers 2025
in Tokyo, see &lt;a href=&#34;https://lpc.events/event/19/contributions/2162/&#34;&gt;Making Sense of State Pruning&lt;/a&gt;.
You can also find the &lt;a href=&#34;https://lpc.events/event/19/contributions/2162/attachments/1820/3904/LPC25_State_Pruning.pdf&#34;&gt;slides&lt;/a&gt;
and the &lt;a href=&#34;http://www.youtube.com/watch?v=EoEBkFJ3St4&#34;&gt;video recording&lt;/a&gt; of the
presentation.&lt;/em&gt;&lt;/p&gt;
&lt;p&gt;&lt;em&gt;The version of the kernel code for these notes is &lt;code&gt;v6.17&lt;/code&gt;.&lt;/em&gt;&lt;/p&gt;
&lt;h2 id=&#34;why-do-we-care-about-prune-points&#34;&gt;Why do we care about prune points?&lt;/h2&gt;
&lt;p&gt;The entry point of the state pruning logic in the BPF verifier resides in the
&lt;code&gt;do_check&lt;/code&gt; function going over each instruction. Early in that function, the
state pruning logic is triggered via the &lt;code&gt;is_state_visited&lt;/code&gt; function and
guarded by &lt;code&gt;is_prune_point&lt;/code&gt;.&lt;/p&gt;</description>
    </item>
    <item>
      <title>Memory mapping BPF maps with BPF_F_MMAPABLE</title>
      <link>https://mtardy.com/posts/bpf-map-mmap/</link>
      <pubDate>Wed, 12 Mar 2025 00:00:00 +0000</pubDate>
      <guid>https://mtardy.com/posts/bpf-map-mmap/</guid>
      <description>&lt;p&gt;This is quick note on using the &lt;code&gt;BPF_F_MMAPABLE&lt;/code&gt; map flag that was added end of
2019 by Andrii Nakryiko, see &lt;a href=&#34;https://lore.kernel.org/bpf/20191117172806.2195367-4-andriin@fb.com/&#34;&gt;kernel patch&lt;/a&gt;.
I noticed that there weren&amp;rsquo;t a lot of tutorials on that so I thought about
writing this, then I realized I should have looked at kernel selftest, because
it&amp;rsquo;s obviously tested there, but anyway.&lt;/p&gt;
&lt;h2 id=&#34;pre-requisites&#34;&gt;Pre-requisites&lt;/h2&gt;
&lt;p&gt;This uses clang to compile the BPF progs, bpftool to generate the skeleton and
libbpf to load them, I relied on the excellent &lt;a href=&#34;https://github.com/libbpf/libbpf-bootstrap&#34;&gt;libbpf-bootstrap&lt;/a&gt;
repo. In short, for compiling the BPF progs you&amp;rsquo;ll need clang 11+, then you&amp;rsquo;ll
need bpftool to generate the BPF skeletons, and finally you&amp;rsquo;ll also need a
&amp;ldquo;recent&amp;rdquo; version of &lt;a href=&#34;https://github.com/libbpf/libbpf&#34;&gt;libbpf&lt;/a&gt;, which depends
on libelf and zlib. See more details and instruction in
&lt;a href=&#34;https://github.com/libbpf/libbpf-bootstrap?tab=readme-ov-file#install-dependencies&#34;&gt;libbpf-bootstrap deps&lt;/a&gt;.&lt;/p&gt;</description>
    </item>
    <item>
      <title>A Deep Dive into Golang Memory</title>
      <link>https://mtardy.com/posts/memory-golang/</link>
      <pubDate>Tue, 29 Oct 2024 00:00:00 +0000</pubDate>
      <guid>https://mtardy.com/posts/memory-golang/</guid>
      <description>&lt;p&gt;Let&amp;rsquo;s try to understand the memory use of an application written in Golang. For
memory management, Golang uses garbage collection which means that
allocating and freeing memory is mostly transparent to the user. While it makes
the manipulation of memory easy at first glance, troubleshooting memory issues
requires you to understand how the garbage collector works.&lt;/p&gt;
&lt;p&gt;&lt;em&gt;The quote part of this article are cut-outs from &lt;a href=&#34;https://tip.golang.org/doc/gc-guide&#34;&gt;Golang Documentation: A
Guide to the Go Garbage Collector&lt;/a&gt;. Note
that it might be outdated, the article was written as of v1.22. Here are some
other important resources:
&lt;a href=&#34;https://tip.golang.org/doc/gc-guide#Optimization_guide&#34;&gt;Go: The Optimization guide&lt;/a&gt;
and &lt;a href=&#34;https://go.dev/doc/diagnostics#profiling&#34;&gt;Go: Diagnostics&lt;/a&gt;. There are so
many resources out there (and I&amp;rsquo;m adding another one!), but I found this
&lt;a href=&#34;https://groups.google.com/g/golang-nuts/c/LsOYrYc_Occ/m/QrIW1sryBwAJ&#34;&gt;Google groups message&lt;/a&gt;
to have good links as well. You will find more links through the article.&lt;/em&gt;&lt;/p&gt;</description>
    </item>
    <item>
      <title>gRPC-Go: Built-in Client Retry Mechanism</title>
      <link>https://mtardy.com/posts/grpc-go-client-retry/</link>
      <pubDate>Wed, 24 Jul 2024 00:00:00 +0000</pubDate>
      <guid>https://mtardy.com/posts/grpc-go-client-retry/</guid>
      <description>A little guide to use gRPC-Go built-in client retry mechanism.</description>
    </item>
    <item>
      <title>Memory Management on Kubernetes with Golang and eBPF: Deep Dive</title>
      <link>https://mtardy.com/posts/memory-kubernetes-golang-ebpf/</link>
      <pubDate>Wed, 03 Jul 2024 00:00:00 +0000</pubDate>
      <guid>https://mtardy.com/posts/memory-kubernetes-golang-ebpf/</guid>
      <description>A digest article on workload memory use, the memory control group, the OOM killer, and their relation with applications running on Kubernetes using Go and eBPF.</description>
    </item>
    <item>
      <title>Introduction to Tetragon: real-time observability and security based on eBPF</title>
      <link>https://mtardy.com/posts/introduction-to-tetragon/</link>
      <pubDate>Wed, 01 Nov 2023 00:00:00 +0000</pubDate>
      <guid>https://mtardy.com/posts/introduction-to-tetragon/</guid>
      <description>&lt;p&gt;&lt;em&gt;The article is available on &lt;a href=&#34;https://connect.ed-diamond.com/misc/misc-130/introduction-a-tetragon-observabilite-et-securite-temps-reel-basees-sur-ebpf&#34;&gt;MISC magazine&lt;/a&gt;
website. Note that this article is available behind a paywall, and in French.&lt;/em&gt;&lt;/p&gt;
&lt;p&gt;This article is an introduction to &lt;a href=&#34;https://github.com/cilium/tetragon&#34;&gt;Tetragon&lt;/a&gt;,
the project I&amp;rsquo;m working on at Isovalent.&lt;/p&gt;</description>
    </item>
    <item>
      <title>First contact: try Tetragon on Linux</title>
      <link>https://mtardy.com/posts/try-tetragon-on-linux/</link>
      <pubDate>Thu, 27 Apr 2023 00:00:00 +0000</pubDate>
      <guid>https://mtardy.com/posts/try-tetragon-on-linux/</guid>
      <description>Discover and experiment with Tetragon on your local Linux host!</description>
    </item>
    <item>
      <title>Crashing Microsoft OMI with fuzzing</title>
      <link>https://mtardy.com/posts/omi-fuzzing/</link>
      <pubDate>Fri, 31 Mar 2023 00:00:00 +0000</pubDate>
      <guid>https://mtardy.com/posts/omi-fuzzing/</guid>
      <description>&lt;p&gt;The article is available on &lt;a href=&#34;https://blog.quarkslab.com/a-gentle-introduction-to-microsoft-omi-and-how-to-crash-it.html&#34;&gt;Quarkslab&amp;rsquo;s
blog&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;It explains the discovery of &lt;a href=&#34;https://github.com/microsoft/omi&#34;&gt;Microsoft OMI&lt;/a&gt;
and how I fuzzed it to discover some crashes. It then details the finding and
how they work.&lt;/p&gt;</description>
    </item>
    <item>
      <title>Introducing Falco audit results</title>
      <link>https://mtardy.com/posts/falco-audit/</link>
      <pubDate>Wed, 22 Mar 2023 00:00:00 +0000</pubDate>
      <guid>https://mtardy.com/posts/falco-audit/</guid>
      <description>&lt;p&gt;The article is available on &lt;a href=&#34;https://blog.quarkslab.com/audit-of-falco-the-open-source-cloud-native-runtime-security.html&#34;&gt;Quarkslab&amp;rsquo;s
blog&lt;/a&gt;.
The corresponding &lt;a href=&#34;https://falco.org/blog/falco-security-audit-2023/&#34;&gt;article on Falco blog&lt;/a&gt; is also available.&lt;/p&gt;
&lt;p&gt;It presents the findings of our audit of &lt;a href=&#34;https://falco.org/&#34;&gt;Falco&lt;/a&gt;. You can
find the complete &lt;a href=&#34;https://github.com/falcosecurity/falco/blob/e19f5365141ed6ea1e6def91d3d91938ce0615be/audits/SECURITY_AUDIT_2023_01_23-01-1097-LIV.pdf&#34;&gt;audit report here&lt;/a&gt;.&lt;/p&gt;</description>
    </item>
    <item>
      <title>New security features in Kubernetes</title>
      <link>https://mtardy.com/posts/new-security-features-kubernetes/</link>
      <pubDate>Sat, 01 Oct 2022 00:00:00 +0000</pubDate>
      <guid>https://mtardy.com/posts/new-security-features-kubernetes/</guid>
      <description>&lt;p&gt;&lt;em&gt;The article is available on &lt;a href=&#34;https://connect.ed-diamond.com/misc/mischs-026/les-nouveautes-de-securite-de-kubernetes&#34;&gt;MISC magazine&lt;/a&gt;
website. Note that this article is available behind a paywall, and in French.&lt;/em&gt;&lt;/p&gt;
&lt;p&gt;In this article, we focus on what&amp;rsquo;s new in Kubernetes security enhancements on
versions still being maintained at the time of writing: 1.22, 1.23 and 1.24
released in August 2021, December 2021 and May 2022 respectively.&lt;/p&gt;</description>
    </item>
    <item>
      <title>PodSecurityPolicy: The Historical Context</title>
      <link>https://mtardy.com/posts/podsecuritypolicy-the-historical-context/</link>
      <pubDate>Tue, 23 Aug 2022 00:00:00 +0000</pubDate>
      <guid>https://mtardy.com/posts/podsecuritypolicy-the-historical-context/</guid>
      <description>&lt;p&gt;&lt;em&gt;The article was originally published on &lt;a href=&#34;https://kubernetes.io/blog/2022/08/23/podsecuritypolicy-the-historical-context/&#34;&gt;kubernetes.io&lt;/a&gt; blog.&lt;/em&gt;&lt;/p&gt;
&lt;p&gt;The PodSecurityPolicy (PSP) admission controller has been removed, as of
Kubernetes v1.25. Its deprecation was announced and detailed in the blog post
&lt;a href=&#34;https://mtardy.com/blog/2021/04/06/podsecuritypolicy-deprecation-past-present-and-future/&#34;&gt;PodSecurityPolicy Deprecation: Past, Present, and Future&lt;/a&gt;,
published for the Kubernetes v1.21 release.&lt;/p&gt;
&lt;p&gt;This article aims to provide historical context on the birth and evolution of
PSP, explain why the feature never made it to stable, and show why it was
removed and replaced by Pod Security admission control.&lt;/p&gt;</description>
    </item>
    <item>
      <title>Black Hat, KubeCon and Kernel Recipes</title>
      <link>https://mtardy.com/posts/blackhat-kubecon-kernelrecipes/</link>
      <pubDate>Mon, 04 Jul 2022 00:00:00 +0000</pubDate>
      <guid>https://mtardy.com/posts/blackhat-kubecon-kernelrecipes/</guid>
      <description>Having joined the IT world in covid times, these events were my first in-person international conferences!</description>
    </item>
    <item>
      <title>Kubernetes and HostPath, a Love-Hate Relationship</title>
      <link>https://mtardy.com/posts/k8s-hostpath/</link>
      <pubDate>Thu, 03 Mar 2022 00:00:00 +0000</pubDate>
      <guid>https://mtardy.com/posts/k8s-hostpath/</guid>
      <description>&lt;p&gt;The article is available on &lt;a href=&#34;https://blog.quarkslab.com/kubernetes-and-hostpath-a-love-hate-relationship.html&#34;&gt;Quarkslab&amp;rsquo;s
blog&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;It traces the history of three Kubernetes-related vulnerabilities. Explaining
what they are, how they were patched, and how they are related. The
exploitation of these vulnerabilities allowed access to the underlying host
filesystem for users that were not properly authorized.&lt;/p&gt;</description>
    </item>
    <item>
      <title>kdigger: a Context Discovery Tool for Kubernetes</title>
      <link>https://mtardy.com/posts/kdigger-release/</link>
      <pubDate>Thu, 07 Oct 2021 00:00:00 +0000</pubDate>
      <guid>https://mtardy.com/posts/kdigger-release/</guid>
      <description>&lt;p&gt;The article is available on &lt;a href=&#34;https://blog.quarkslab.com/kdigger-a-context-discovery-tool-for-kubernetes.html&#34;&gt;Quarkslab&amp;rsquo;s
blog&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;It&amp;rsquo;s an introduction to Kubernetes security through the release of a new
context discovery tool, &lt;a href=&#34;https://github.com/quarkslab/kdigger&#34;&gt;&lt;em&gt;kdigger&lt;/em&gt;&lt;/a&gt;, and
its mini CTF companion,
&lt;a href=&#34;https://github.com/quarkslab/minik8s-ctf&#34;&gt;&lt;em&gt;minik8s-ctf&lt;/em&gt;&lt;/a&gt;.&lt;/p&gt;</description>
    </item>
    <item>
      <title>Arbitrary code injection in Super Mario Bros 3</title>
      <link>https://mtardy.com/posts/mario-injection/</link>
      <pubDate>Sun, 14 Mar 2021 00:00:00 +0000</pubDate>
      <guid>https://mtardy.com/posts/mario-injection/</guid>
      <description>This write-up is the extended abstract of my final year long-project. It was an exploration about arbitrary code injection in video games.</description>
    </item>
    <item>
      <title>Summer Internship: Reflexive Programming Language Framework</title>
      <link>https://mtardy.com/posts/reflexive-language/</link>
      <pubDate>Mon, 30 Nov 2020 00:00:00 +0000</pubDate>
      <guid>https://mtardy.com/posts/reflexive-language/</guid>
      <description>This write-up is the extended abstract of my 2020 summer internship. It was a reflexivity-based programming language project written in C.</description>
    </item>
  </channel>
</rss>
