<?xml version="1.0" encoding="utf-8" standalone="yes"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom">
  <channel>
    <title>Security on Max Ammann</title>
    <link>https://maxammann.org/categories/security/</link>
    <description>Recent content in Security on Max Ammann</description>
    <generator>Hugo</generator>
    <language>en-us</language>
    <copyright>Attribution 4.0 International (CC BY 4.0)</copyright>
    <atom:link href="https://maxammann.org/categories/security/index.xml" rel="self" type="application/rss+xml" />
    <item>
      <title>Disclosing unauthenticated user endpoint in outdoor activities app</title>
      <link>https://maxammann.org/posts/2026/03/disclosure-unauthentificated-endpoint-bz/</link>
      <pubDate>Mon, 30 Mar 2026 00:00:00 +0000</pubDate>
      <guid>https://maxammann.org/posts/2026/03/disclosure-unauthentificated-endpoint-bz/</guid>
      <description>&lt;blockquote&gt;&#xA;&lt;p&gt;A machine-translated German version is available below.&lt;/p&gt;&lt;/blockquote&gt;&#xA;&lt;p&gt;Late one night in February I was planning some weekend trips around Freiburg. The Badische Zeitung has an excellent app called &amp;ldquo;BZ-Lieblingsplätze&amp;rdquo;.&#xA;It shows lovely places nearby that are worth visiting.&#xA;The app does not have a web view that I knew of, so I wanted to check which API was running in the background of the app. This led to the discovery of an API endpoint that allowed the retrieval of the whole user database, including names, emails and encoded transaction metadata concerning app store purchases.&lt;/p&gt;</description>
    </item>
    <item>
      <title>Hacking the hack: Internals of the Dreame FEL rooting method</title>
      <link>https://maxammann.org/posts/2025/06/dreame-fel-mode/</link>
      <pubDate>Sun, 15 Jun 2025 00:00:00 +0000</pubDate>
      <guid>https://maxammann.org/posts/2025/06/dreame-fel-mode/</guid>
      <description>&lt;!-- Motivation --&gt;&#xA;&lt;p&gt;I got myself a Dreame vacuum robot with the goal of &amp;ndash; cleaning. Yes, I did not have the goal originally to root my vacuum.&#xA;However, in case I ever want to sideload software onto the robot, I picked one that is reliably rootable.&#xA;The Dreame X40 looked decent, and Dennis Giese did awesome work on getting root access to it &lt;a href=&#34;https://dontvacuum.me/talks/DEFCON29/DEFCON29-vacuum-robots.pdf&#34;&gt;back in 2021&lt;/a&gt;.&#xA;This turned out to be a good decision as at some point I was starting to become a bit freaked out by the robot&amp;rsquo;s camera and decided to checkout the security of the robot.&lt;/p&gt;</description>
    </item>
    <item>
      <title>Onlinezugangsgesetz in action: Disclosing security and privacy issues in NRW</title>
      <link>https://maxammann.org/posts/2024/10/security-privacy-disclosure-nrw/</link>
      <pubDate>Tue, 15 Oct 2024 00:00:00 +0000</pubDate>
      <guid>https://maxammann.org/posts/2024/10/security-privacy-disclosure-nrw/</guid>
      <description>&lt;p&gt;The &lt;a href=&#34;https://tuerantuer.de/digitalfabrik/&#34;&gt;Tür an Tür Digitalfabrik&lt;/a&gt; and I are publicly disclosing several security and privacy issues in the iOS and Android &lt;a href=&#34;https://www.engagiert-in-nrw.de/app-zur-ehrenamtskarte-nrw&#34;&gt;NRW Ehrenamtskarten-App&lt;/a&gt;. We found 1 high-severity and 1 informational security issue, as well as 5 additional privacy and legal issues.&lt;/p&gt;</description>
    </item>
    <item>
      <title>Finding mispriced opcodes with fuzzing</title>
      <link>https://maxammann.org/posts/2024/06/finding-mispriced-opcodes-with-fuzzing/</link>
      <pubDate>Mon, 17 Jun 2024 00:00:00 +0000</pubDate>
      <guid>https://maxammann.org/posts/2024/06/finding-mispriced-opcodes-with-fuzzing/</guid>
      <description>&lt;p&gt;This post was release on the &lt;a href=&#34;https://blog.trailofbits.com/2024/06/17/finding-mispriced-opcodes-with-fuzzing/&#34;&gt;Trail of Bits blog&lt;/a&gt;.&lt;/p&gt;</description>
    </item>
    <item>
      <title>5 reasons to strive for better disclosure processes</title>
      <link>https://maxammann.org/posts/2024/04/reasons-to-strive-for-better-disclosure-processes/</link>
      <pubDate>Mon, 15 Apr 2024 00:00:00 +0000</pubDate>
      <guid>https://maxammann.org/posts/2024/04/reasons-to-strive-for-better-disclosure-processes/</guid>
      <description>&lt;p&gt;This post was release on the &lt;a href=&#34;https://blog.trailofbits.com/2024/04/15/5-reasons-to-strive-for-better-disclosure-processes/&#34;&gt;Trail of Bits blog&lt;/a&gt;.&lt;/p&gt;</description>
    </item>
    <item>
      <title>Out of the kernel, into the tokens</title>
      <link>https://maxammann.org/posts/2024/03/out-of-the-kernel-into-the-tokens/</link>
      <pubDate>Fri, 08 Mar 2024 00:00:00 +0000</pubDate>
      <guid>https://maxammann.org/posts/2024/03/out-of-the-kernel-into-the-tokens/</guid>
      <description>&lt;p&gt;This post was release on the &lt;a href=&#34;https://blog.trailofbits.com/2024/03/08/out-of-the-kernel-into-the-tokens/&#34;&gt;Trail of Bits blog&lt;/a&gt;.&lt;/p&gt;</description>
    </item>
    <item>
      <title>LeftoverLocals: Listening to LLM responses through leaked GPU local memory</title>
      <link>https://maxammann.org/posts/2024/01/leftoverlocals-listening-to-llm-responses-through-leaked-gpu-local-memory/</link>
      <pubDate>Tue, 16 Jan 2024 00:00:00 +0000</pubDate>
      <guid>https://maxammann.org/posts/2024/01/leftoverlocals-listening-to-llm-responses-through-leaked-gpu-local-memory/</guid>
      <description>&lt;p&gt;This post was release on the &lt;a href=&#34;https://blog.trailofbits.com/2024/01/16/leftoverlocals-listening-to-llm-responses-through-leaked-gpu-local-memory/&#34;&gt;Trail of Bits blog&lt;/a&gt;.&lt;/p&gt;</description>
    </item>
    <item>
      <title>Billion times emptiness</title>
      <link>https://maxammann.org/posts/2023/12/billion-times-emptiness/</link>
      <pubDate>Fri, 29 Dec 2023 00:00:00 +0000</pubDate>
      <guid>https://maxammann.org/posts/2023/12/billion-times-emptiness/</guid>
      <description>&lt;p&gt;This post was release on the &lt;a href=&#34;https://blog.trailofbits.com/2023/12/29/billion-times-emptiness/&#34;&gt;Trail of Bits blog&lt;/a&gt;.&lt;/p&gt;</description>
    </item>
    <item>
      <title>Keeping the wolves out of wolfSSL</title>
      <link>https://maxammann.org/posts/2023/01/wolfssl-vulnerabilities-tlspuffin-fuzzing-ssh/</link>
      <pubDate>Thu, 12 Jan 2023 00:00:00 +0000</pubDate>
      <guid>https://maxammann.org/posts/2023/01/wolfssl-vulnerabilities-tlspuffin-fuzzing-ssh/</guid>
      <description>&lt;p&gt;This post was release on the &lt;a href=&#34;https://blog.trailofbits.com/2023/01/12/wolfssl-vulnerabilities-tlspuffin-fuzzing-ssh/&#34;&gt;Trail of Bits blog&lt;/a&gt;.&lt;/p&gt;</description>
    </item>
    <item>
      <title>Enable AddressSanitizer in Rust *-sys crate</title>
      <link>https://maxammann.org/posts/2021/06/sanitize-rust-sys-crate/</link>
      <pubDate>Tue, 15 Jun 2021 00:00:00 +0000</pubDate>
      <guid>https://maxammann.org/posts/2021/06/sanitize-rust-sys-crate/</guid>
      <description>&lt;p&gt;For our tlspuffin fuzzer we use Rust to implement the testing harness. The harness is statically linked to OpenSSL via the &lt;a href=&#34;https://github.com/sfackler/rust-openssl/&#34;&gt;openssl-sys&lt;/a&gt; and&#xA;&lt;a href=&#34;https://github.com/alexcrichton/openssl-src-rs&#34;&gt;openssl-src&lt;/a&gt; crates, where the latter just provides a &lt;a href=&#34;https://doc.rust-lang.org/cargo/reference/build-scripts.html&#34;&gt;Rust Build Script&lt;/a&gt;. &lt;code&gt;openssl-sys&lt;/code&gt; runs the script, then looks at the build artifacts and statically links against them.&lt;/p&gt;</description>
    </item>
    <item>
      <title>Inspect Secure Renegotiation using OpenSSL</title>
      <link>https://maxammann.org/posts/2021/06/openssl-renegotiate/</link>
      <pubDate>Mon, 07 Jun 2021 00:00:00 +0000</pubDate>
      <guid>https://maxammann.org/posts/2021/06/openssl-renegotiate/</guid>
      <description>&lt;p&gt;While trying to reproduce the implementation bug &lt;a href=&#34;https://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2021-3449&#34;&gt;CVE-2021-3449&lt;/a&gt;, I had to implement secure renegotiation as specified in &lt;a href=&#34;https://datatracker.ietf.org/doc/html/rfc5746&#34;&gt;RFC 5746&lt;/a&gt;. Often it is unclear which RFC is responsible for specific protocol behavior. With the abundance of extensions, messages and protocol versions it is not trivial to find and also verify whether you found the correct specification.&lt;/p&gt;</description>
    </item>
    <item>
      <title>Building OpenSSL with Determinisic Randomness</title>
      <link>https://maxammann.org/posts/2021/06/openssl-no-random/</link>
      <pubDate>Wed, 02 Jun 2021 00:00:00 +0000</pubDate>
      <guid>https://maxammann.org/posts/2021/06/openssl-no-random/</guid>
      <description>&lt;p&gt;TLS, like most cryptographic protocols, depend on random numbers to generate keying material. These numbers should come from a trusted and truly random source.&#xA;While this is necessary for production use, for testing purposes it is beneficial to use a pseudorandom number generator (PRNG). By seeding the generator with a static and not-random number, each execution of the protocol yields the same bytes which are sent over the network.&lt;/p&gt;</description>
    </item>
    <item>
      <title>Distinction between Fuzzing Approaches for TLS</title>
      <link>https://maxammann.org/posts/2021/04/distinction-tls-fuzzing-approaches/</link>
      <pubDate>Mon, 12 Apr 2021 00:00:00 +0000</pubDate>
      <guid>https://maxammann.org/posts/2021/04/distinction-tls-fuzzing-approaches/</guid>
      <description>&lt;p&gt;Traditionally, fuzzing mutates bits and bytes. That means that the semantics of the protocol are not directly used to mutate the fuzzing input. Symbolic-model Guided Fuzzers fuzz on a more abstract level. It uses a symbolic model to create inputs. Therefore, there are two main approaches &lt;em&gt;bit-level fuzzing&lt;/em&gt; and &lt;em&gt;model-guided fuzzing&lt;/em&gt; (also called generation-based fuzzing) &lt;sup id=&#34;fnref:1&#34;&gt;&lt;a href=&#34;#fn:1&#34; class=&#34;footnote-ref&#34; role=&#34;doc-noteref&#34;&gt;1&lt;/a&gt;&lt;/sup&gt;. This is also called &lt;a href=&#34;https://github.com/google/fuzzing/blob/master/docs/structure-aware-fuzzing.md&#34;&gt;structure-aware fuzzing&lt;/a&gt; by Google.&lt;/p&gt;</description>
    </item>
    <item>
      <title>Dissecting TLS using OpenSSL and Wireshark</title>
      <link>https://maxammann.org/posts/2021/03/tls-overview/</link>
      <pubDate>Tue, 23 Mar 2021 00:00:00 +0000</pubDate>
      <guid>https://maxammann.org/posts/2021/03/tls-overview/</guid>
      <description>&lt;p&gt;TLS is a beast of a protocol with at least &lt;a href=&#34;https://www.iana.org/assignments/tls-extensiontype-values/tls-extensiontype-values.xhtml&#34;&gt;50 extensions&lt;/a&gt; and over 20 years of history. This indicates that implementing can be challenging and that it is important to take a close look at its security.&#xA;TLS drives the web of today. The web can not exist without it anymore. Not only that secrecy and authentication is a must-have today, it is also required by specifications like &lt;a href=&#34;https://developer.mozilla.org/en-US/docs/Web/API/MediaDevices/getUserMedia&#34;&gt;getUserMedia&lt;/a&gt; for WebRTC streaming.&lt;/p&gt;</description>
    </item>
    <item>
      <title>Fuzzing Terminology</title>
      <link>https://maxammann.org/posts/2021/03/fuzzing-terminology/</link>
      <pubDate>Sun, 21 Mar 2021 14:00:33 +0100</pubDate>
      <guid>https://maxammann.org/posts/2021/03/fuzzing-terminology/</guid>
      <description>&lt;p&gt;Research in Fuzzing has gained a lot of traction in the last decade. A lot of open source fuzzers have been implemented and are available on Github. Everyone who already developed any application knows the pain of naming things. It is very difficult to have a common understanding of the terms used in a project. A standard software engineering practice is to use a glossary. This usually only scaled to a team or a small company but not to thousands of fuzzers on Github.&#xA;Also, documentation is more of a gimmick than a comprehensive guide in most projects.&lt;/p&gt;</description>
    </item>
    <item>
      <title>Keeping a Secret Safe (and not only Secure)</title>
      <link>https://maxammann.org/posts/2021/01/keeping-secret-safe/</link>
      <pubDate>Tue, 05 Jan 2021 00:00:00 +0000</pubDate>
      <guid>https://maxammann.org/posts/2021/01/keeping-secret-safe/</guid>
      <description>&lt;p&gt;Keeping a secret like GPG keys safe is not a trivial task. It gets even more complicated if you want to backup it and have access in the more distant future. Having your key on a HSM has the goal of keeping it secret. Keeping a secret safe means that it is not easy to lose your key.&lt;/p&gt;</description>
    </item>
    <item>
      <title>Routing Docker Container over a Specific Host Interface Like a VPN</title>
      <link>https://maxammann.org/posts/2020/04/routing-docker-container-over-vpn/</link>
      <pubDate>Thu, 02 Apr 2020 00:00:00 +0000</pubDate>
      <guid>https://maxammann.org/posts/2020/04/routing-docker-container-over-vpn/</guid>
      <description>&lt;p&gt;A docker setup can be very helpful when trying to separate services if they are not packaged otherwise.&#xA;We don&amp;rsquo;t only want to separate configuration in this post, but also the network configuration.&lt;/p&gt;</description>
    </item>
    <item>
      <title>Data Visualization of Telegram messages (Encrypted Chats)</title>
      <link>https://maxammann.org/posts/2020/03/telegram-data-visualization/</link>
      <pubDate>Wed, 25 Mar 2020 00:00:00 +0000</pubDate>
      <guid>https://maxammann.org/posts/2020/03/telegram-data-visualization/</guid>
      <description>&lt;p&gt;We are going to visualize the timestamps of messages in the Telegram database. This also includes encrypted chats as we analyze the SQLite database of the app.&lt;/p&gt;&#xA;&lt;h1 id=&#34;obtaining-the-database&#34;&gt;Obtaining the database &lt;a class=&#34;heading-link&#34; href=&#34;#obtaining-the-database&#34;&gt;&lt;/a&gt;&lt;/h1&gt;&#xA;&lt;p&gt;We pull the database of Telegram using the ADB tool. You can read &lt;a href=&#34;https://developer.android.com/studio/command-line/adb&#34;&gt;here&lt;/a&gt; how this tool works and how to set it up. Make sure your phone is rooted and you set &lt;code&gt;Root access&lt;/code&gt; to &lt;code&gt;ADB only&lt;/code&gt;. Then you can restart ADB using &lt;code&gt;adb root&lt;/code&gt;. Finally you can pull the database to your current working directory using:&lt;/p&gt;</description>
    </item>
    <item>
      <title>Armbian: Encrypting the Root Partition</title>
      <link>https://maxammann.org/posts/2020/01/armbian-encrypt-root/</link>
      <pubDate>Tue, 21 Jan 2020 00:00:00 +0000</pubDate>
      <guid>https://maxammann.org/posts/2020/01/armbian-encrypt-root/</guid>
      <description>&lt;p&gt;&lt;strong&gt;This guide is tested on Armbian 20.8&lt;/strong&gt;&lt;/p&gt;&#xA;&lt;p&gt;The default Armbian images do not offer an encrypted root partition. Unfortunately it is requied to build the image yourself inorder to use LUKS on your root partition.&lt;/p&gt;</description>
    </item>
    <item>
      <title>Verifying a Yubikey for genuity using common tools</title>
      <link>https://maxammann.org/posts/2019/09/verifying-yubikeys-for-genuity/</link>
      <pubDate>Wed, 04 Sep 2019 00:00:00 +0000</pubDate>
      <guid>https://maxammann.org/posts/2019/09/verifying-yubikeys-for-genuity/</guid>
      <description>&lt;p&gt;I received a free Yubikey from an untrusted source on the &lt;a href=&#34;https://events.ccc.de/camp/2019/wiki/Main_Page&#34;&gt;CCCamp 2019&lt;/a&gt;.&#xA;Therefore I looked for a way to verify its authenticity. The device appeared physically to be an original and not tampered with.&#xA;A check whether the key was manufactured by Yubico seems like a sufficient way to make sure that the security key is an original.&lt;/p&gt;</description>
    </item>
    <item>
      <title>Using Telegraf and InfluxDB on pfSense with Let’s Encrypt Certificate</title>
      <link>https://maxammann.org/posts/2019/05/pfsense-telegraf-letsencrypt/</link>
      <pubDate>Fri, 03 May 2019 00:00:00 +0000</pubDate>
      <guid>https://maxammann.org/posts/2019/05/pfsense-telegraf-letsencrypt/</guid>
      <description>&lt;p&gt;I had problem to connect a InfluxDB from the pfSense because of a invalid certificate chain. The main problem here is that if you are configuring Telegraf with the pfSense UI then you are not using the system certificate chain (on FreeBSD that is &lt;code&gt;/etc/ssl/cert.pem&lt;/code&gt;). In fact the generated Telegraf config is using: &lt;code&gt;/usr/local/etc/telegraf.ca&lt;/code&gt;&#xA;The pfSense is generating that chain from your pfSense CAs and certificates (See &lt;a href=&#34;https://github.com/pfsense/FreeBSD-ports/blob/f6facf5cd7ecf2c24f0bed05c3e56f4c1ae9618c/net-mgmt/pfSense-pkg-Telegraf/files/usr/local/pkg/telegraf.inc#L68&#34;&gt;here&lt;/a&gt; for the code which generates the chain).&lt;/p&gt;</description>
    </item>
    <item>
      <title>CTF: Fun with Hardware and Software breakpoints in GDB</title>
      <link>https://maxammann.org/posts/2018/12/fun-with-sw-hw-breakpoints/</link>
      <pubDate>Sun, 23 Dec 2018 00:00:00 +0000</pubDate>
      <guid>https://maxammann.org/posts/2018/12/fun-with-sw-hw-breakpoints/</guid>
      <description>&lt;p&gt;I did the orw challange on &lt;a href=&#34;https://pwnable.tw/&#34;&gt;pwnable.tw&lt;/a&gt; yesterday. It is very streight forward.&#xA;You just have to send some x86 shellcode to stdin and the orw binary will execute it.&lt;/p&gt;&#xA;&lt;p&gt;But I spend a few hours with getting this to work with gdb as the instructions in gdb were quite&#xA;weird.&lt;/p&gt;</description>
    </item>
  </channel>
</rss>
