<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom"><channel><title>krash.dev</title><link>https://krash.dev/</link><description>Recent content on krash.dev</description><generator>Hugo</generator><language>en-us</language><lastBuildDate>Sun, 12 Jul 2026 16:00:27 +0530</lastBuildDate><atom:link href="https://krash.dev/rss.xml" rel="self" type="application/rss+xml"/><item><title>DNS Over HTTPS (DoH): What, Why, and How It Works</title><link>https://krash.dev/posts/dns-over-https/</link><pubDate>Tue, 23 Jun 2026 00:00:00 +0000</pubDate><guid>https://krash.dev/posts/dns-over-https/</guid><description>&lt;p&gt;You&amp;rsquo;re at a coffee shop. You join the free Wi-Fi, type &lt;code&gt;bank.example.com&lt;/code&gt;, and start checking your balance. The connection to your bank is locked behind that reassuring little padlock — TLS, encrypted, private.&lt;/p&gt;
&lt;p&gt;Except the &lt;em&gt;question you asked first&lt;/em&gt; wasn&amp;rsquo;t private at all.&lt;/p&gt;
&lt;p&gt;Before your browser could open that encrypted tunnel, it had to ask a simple question:&lt;/p&gt;
&lt;blockquote&gt;&lt;p&gt;&lt;strong&gt;&amp;ldquo;What&amp;rsquo;s the IP address for bank.example.com?&amp;rdquo;&lt;/strong&gt;&lt;/p&gt;
&lt;/blockquote&gt;&lt;p&gt;That question — a DNS lookup — left your laptop unencrypted, in a 40-year-old format (&lt;a href="https://datatracker.ietf.org/doc/html/rfc1035" target="_blank" rel="noopener noreferrer"&gt;RFC 1035&lt;/a&gt;
), for anyone on that Wi-Fi (and your ISP, and a few hops in between) to read, log, or quietly change.&lt;/p&gt;</description></item><item><title>Securing MCP Servers: A Threat Modeling Guide for Security Engineers</title><link>https://krash.dev/posts/securing-mcp/</link><pubDate>Fri, 12 Jun 2026 00:00:00 +0000</pubDate><guid>https://krash.dev/posts/securing-mcp/</guid><description>&lt;p&gt;Model Context Protocol servers are appearing inside organizations faster than most security teams have a review process for them.&lt;/p&gt;
&lt;p&gt;They often look like small, polite integrations: a package, a few tool definitions, some outbound API calls, and a README.&lt;/p&gt;
&lt;p&gt;That framing is the problem.&lt;/p&gt;
&lt;p&gt;An MCP server is not a passive integration. It is an execution surface exposed to a language model. It may hold credentials, read sensitive data, call internal APIs, write to downstream systems, and act on instructions that came from untrusted text.&lt;/p&gt;</description></item><item><title>Before Your Code Runs: Node.js</title><link>https://krash.dev/posts/before-your-code-runs/nodejs/</link><pubDate>Sun, 29 Mar 2026 00:00:00 +0000</pubDate><guid>https://krash.dev/posts/before-your-code-runs/nodejs/</guid><description>&lt;blockquote&gt;&lt;p&gt;This post is part of the &lt;strong&gt;&lt;a href="https://krash.dev/before-your-code-runs/"&gt;Before Your Code Runs&lt;/a&gt;
&lt;/strong&gt; series, cataloguing the hidden, implicit code execution surfaces in programming language runtimes and toolchains.&lt;/p&gt;
&lt;/blockquote&gt;&lt;p&gt;Node.js and npm sit underneath a huge chunk of the modern web. It&amp;rsquo;s the runtime that made JavaScript a &amp;ldquo;real&amp;rdquo; backend language, and npm is the largest package registry in the world. That&amp;rsquo;s a lot of trust in a lot of code.&lt;/p&gt;
&lt;p&gt;Here&amp;rsquo;s roughly what happens when Node starts:&lt;/p&gt;</description></item><item><title>Before Your Code Runs: Python</title><link>https://krash.dev/posts/before-your-code-runs/python/</link><pubDate>Sun, 29 Mar 2026 00:00:00 +0000</pubDate><guid>https://krash.dev/posts/before-your-code-runs/python/</guid><description>&lt;blockquote&gt;&lt;p&gt;This post is part of the &lt;strong&gt;&lt;a href="https://krash.dev/before-your-code-runs/"&gt;Before Your Code Runs&lt;/a&gt;
&lt;/strong&gt; series, cataloguing the hidden, implicit code execution surfaces in programming language runtimes and toolchains.&lt;/p&gt;
&lt;/blockquote&gt;&lt;p&gt;Python is probably the most beloved language in the world right now. It&amp;rsquo;s everywhere: data science, web backends, DevOps glue, AI/ML pipelines, you name it. And because it&amp;rsquo;s everywhere, attackers love it too. The thing is, most Python developers think execution starts when you type &lt;code&gt;python app.py&lt;/code&gt;. It doesn&amp;rsquo;t. Not even close.&lt;/p&gt;</description></item><item><title>YubiKey OTP Best Practices</title><link>https://krash.dev/posts/yubikey-best-practices/</link><pubDate>Sun, 15 Mar 2026 00:00:00 +0000</pubDate><guid>https://krash.dev/posts/yubikey-best-practices/</guid><description>&lt;p&gt;If you use a YubiKey for one-time passwords (OTP), you’ve probably done it at least once: you meant to type something, touched the key, and a long modhex string landed in Slack, a commit message, or an email. Annoying for everyone, and worse, it’s a real security risk.&lt;/p&gt;
&lt;img loading="lazy" decoding="async" src="../images/slack-screenshot.png" alt="Slack Screenshot"&gt;&lt;p&gt;This post pulls together practical ways to reduce accidental triggers and what to do when a code gets out, plus how YubiOTP compares to TOTP so you can use both wisely. We also cover FIDO2 / WebAuthn and how to use them alongside OTP.&lt;/p&gt;</description></item><item><title>Navigating the Ethereum Yellow Paper</title><link>https://krash.dev/posts/blockchain-security/navigating-ethereum-yellow-paper/</link><pubDate>Mon, 23 Feb 2026 00:00:00 +0000</pubDate><guid>https://krash.dev/posts/blockchain-security/navigating-ethereum-yellow-paper/</guid><description>&lt;p&gt;I&amp;rsquo;ll be honest with you: I attempted to read the Yellow Paper four times before I actually finished it. The first three times, I opened the PDF, saw equations like &lt;code&gt;Υ(σ, T) ≡ σ'&lt;/code&gt;, and promptly closed it, convinced it was written for people far smarter than me.&lt;/p&gt;
&lt;p&gt;The fourth time, I changed my approach entirely. Instead of trying to understand it linearly, I treated it like - &amp;ldquo;I don&amp;rsquo;t have an option but to understand this&amp;rdquo;. This post is the map I wish I&amp;rsquo;d had.&lt;/p&gt;</description></item><item><title>Blockchain Architecture: Layers</title><link>https://krash.dev/posts/blockchain-security/blockchain-layers-and-types/</link><pubDate>Mon, 29 Dec 2025 00:00:00 +0000</pubDate><guid>https://krash.dev/posts/blockchain-security/blockchain-layers-and-types/</guid><description>&lt;p&gt;In the last two blogs, we looked at &lt;a href="https://krash.dev/posts/blockchain-security/blockchain-components/"&gt;the pieces that make a blockchain work&lt;/a&gt;
 and &lt;a href="https://krash.dev/posts/blockchain-security/consensus/"&gt;how the network agrees on what is true&lt;/a&gt;
.&lt;/p&gt;
&lt;p&gt;In here, we will look at how all those pieces sit together as layers, how blockchains are structured, and how Layer 1 and Layer 2 actually differ in practice. Once we know what each layer is responsible for, concepts like rollups, sequencers, proofs and scaling start making sense.&lt;/p&gt;</description></item><item><title>Consensus: How Blockchains Agree</title><link>https://krash.dev/posts/blockchain-security/consensus/</link><pubDate>Sun, 28 Dec 2025 00:00:00 +0000</pubDate><guid>https://krash.dev/posts/blockchain-security/consensus/</guid><description>&lt;p&gt;Decentralization sounds simple until you realise every node acts on its own. In a blockchain each node holds its own copy of the ledger and processes data independently. Nodes see transactions at different times, some go offline, some behave incorrectly and some may try to cheat. Without a way to agree the network would split into a thousand truths. Consensus is what keeps all those independent nodes and all those independent ledgers marching in the same direction.&lt;/p&gt;</description></item><item><title>Blockchain Components</title><link>https://krash.dev/posts/blockchain-security/blockchain-components/</link><pubDate>Sat, 27 Dec 2025 00:00:00 +0000</pubDate><guid>https://krash.dev/posts/blockchain-security/blockchain-components/</guid><description>&lt;p&gt;If you’re still asking &amp;lsquo;&lt;a href="https://krash.dev/posts/blockchain-security/why-blockchain-and-blockchain-security/"&gt;Why do I even need to learn Blockchain security?&lt;/a&gt;
&amp;rsquo; No worries. I wrote this blog to answer exactly that. Give it a read, then come back and we’ll dive into Blockchain 101 together.&lt;/p&gt;
&lt;p&gt;Now that you are here, let&amp;rsquo;s start by understanding what is Blockchain?&lt;/p&gt;
&lt;p&gt;But wait, a bit of warning, there is way too much text in the entire blog - I tried putting some AI generated images (which make sense for the blog), but they also were not able to do much, so all the best!&lt;/p&gt;</description></item><item><title>Why Learn Blockchain &amp; Blockchain Security?</title><link>https://krash.dev/posts/blockchain-security/why-blockchain-and-blockchain-security/</link><pubDate>Fri, 12 Sep 2025 00:00:00 +0000</pubDate><guid>https://krash.dev/posts/blockchain-security/why-blockchain-and-blockchain-security/</guid><description>&lt;p&gt;In the world of AI, I’m gonna go rebel and talk about Blockchains. Why? Because I’ve been learning and tinkering with it, and I thought it’d be fun to share. Honestly, this is as much for my own notes as it is for anyone reading.&lt;/p&gt;
&lt;p&gt;Blockchain isn’t as shiny as AI right now, but it’s still a big deal. Here’s the thing: blockchain is too important to ignore, but too risky to approach without understanding security. It’s not just a playground for developers writing smart contracts. Entrepreneurs building products, investors betting on tokens, policy makers drafting regulations, and security folks trying to protect users, they all have skin in the game.&lt;/p&gt;</description></item><item><title>Production Grade Bash Scripts</title><link>https://krash.dev/posts/writing-production-grade-bash-script/</link><pubDate>Wed, 16 Apr 2025 00:00:00 +0000</pubDate><guid>https://krash.dev/posts/writing-production-grade-bash-script/</guid><description>&lt;p&gt;Most shell scripts start innocent, just a few lines to glue things together. Blink twice, and it’s deploying infrastructure, rotating secrets, restarting servers, and possibly provisioning a small nation-state. It’s doing things for the people, by the people, held together by &lt;code&gt;echo&lt;/code&gt;.&lt;/p&gt;
&lt;p&gt;This isn’t another “bash scripting 101” tutorial. You already know how to loop over a list and grep things. This is about writing scripts that survive real-world conditions: bad input, missing dependencies, flaky networks, and humans.&lt;/p&gt;</description></item><item><title>Reputation Farming in OSS: A Threat to Building Trust</title><link>https://krash.dev/posts/reputation-farming/</link><pubDate>Thu, 27 Jun 2024 00:00:00 +0000</pubDate><guid>https://krash.dev/posts/reputation-farming/</guid><description>&lt;p&gt;This issue complicates the open source and supply chain security space. For attacks like xz, such strategies can be used by attackers to build &amp;ldquo;fake&amp;rdquo; trust among fellow OSS community members.&lt;/p&gt;
&lt;p&gt;A few days ago, &lt;a href="https://openssf.slack.com/archives/C019M98JSHK/p1719225074824219" target="_blank" rel="noopener noreferrer"&gt;this discussion ignited in the OSSF Slack&lt;/a&gt;, which talked about the issue of credibility farming in several open source repositories.&lt;/p&gt;
&lt;img loading="lazy" decoding="async" src="../images/slack-message.png" alt="OSSF Slack Discussion"&gt;&lt;p&gt;So, the issue revolves around GitHub (or equivalent platforms) accounts approving or commenting on old pull requests and issues that were already resolved or closed, where these meaningless contributions show up prominently on the user&amp;rsquo;s profile and activity feed, making their involvement seem more significant than it actually is, without closer look.&lt;/p&gt;</description></item><item><title>Two Bits on the xz Vulnerability</title><link>https://krash.dev/posts/xz-vulnerability/</link><pubDate>Mon, 01 Apr 2024 00:00:00 +0000</pubDate><guid>https://krash.dev/posts/xz-vulnerability/</guid><description>&lt;table&gt;
 &lt;thead&gt;
 &lt;tr&gt;
 &lt;th&gt;&lt;/th&gt;
 &lt;th&gt;&lt;/th&gt;
 &lt;/tr&gt;
 &lt;/thead&gt;
 &lt;tbody&gt;
 &lt;tr&gt;
 &lt;td&gt;GitHub Repository&lt;/td&gt;
 &lt;td&gt;&lt;a href="https://github.com/tukaani-project/xz/releases/tag/v5.6.0" target="_blank" rel="noopener noreferrer"&gt;xz (Suspended)&lt;/a&gt;&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;Source Code&lt;/td&gt;
 &lt;td&gt;&lt;a href="https://git.tukaani.org/?p=xz.git" target="_blank" rel="noopener noreferrer"&gt;https://git.tukaani.org/?p=xz.git&lt;/a&gt;&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;Threat Actor&lt;/td&gt;
 &lt;td&gt;&lt;a href="https://github.com/JiaT75" target="_blank" rel="noopener noreferrer"&gt;Jia Tan (GitHub)&lt;/a&gt;&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;CVE Number&lt;/td&gt;
 &lt;td&gt;&lt;a href="https://nvd.nist.gov/vuln/detail/CVE-2024-3094" target="_blank" rel="noopener noreferrer"&gt;CVE-2024-3094 (CVSS 10.0)&lt;/a&gt;&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;Vulnerability Type&lt;/td&gt;
 &lt;td&gt;Remote Code Execution&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;Attack Category&lt;/td&gt;
 &lt;td&gt;Social Engineering, Supply Chain Attack&lt;/td&gt;
 &lt;/tr&gt;
 &lt;/tbody&gt;
&lt;/table&gt;
&lt;h1 id="what-does-xz-module-do"&gt;What does &lt;code&gt;xz&lt;/code&gt; module do?&lt;a class="heading-anchor" href="#what-does-xz-module-do" aria-label="Link to this section"&gt;#&lt;/a&gt;
&lt;/h1&gt;
&lt;p&gt;XZ Utils is a set of free and open-source data compression utilities that provide high compression ratios and fast decompression. It primarily uses the &lt;a href="https://en.wikipedia.org/wiki/Lempel%E2%80%93Ziv%E2%80%93Markov_chain_algorithm" target="_blank" rel="noopener noreferrer"&gt;LZMA compression algorithm&lt;/a&gt;
, which is an algorithm for lossless data compression.&lt;/p&gt;</description></item><item><title>Handling Deprecated Dependencies In Your Project</title><link>https://krash.dev/posts/handling-deprecated-dependencies/</link><pubDate>Tue, 07 Nov 2023 00:00:00 +0000</pubDate><guid>https://krash.dev/posts/handling-deprecated-dependencies/</guid><description>&lt;p&gt;&lt;em&gt;&lt;strong&gt;Disclaimer&lt;/strong&gt;: Just a heads up, while we&amp;rsquo;re diving into ways to tackle the problem of dependency depreciation, there&amp;rsquo;s no one-size-fits-all solution here. It&amp;rsquo;s a bit of a wild ride dealing with supply chain security and those pesky deprecated dependencies, so don&amp;rsquo;t expect a quick fix!&lt;/em&gt;&lt;/p&gt;
&lt;p&gt;The issue of using deprecated dependencies has persisted for quite some time, and it&amp;rsquo;s gaining increased attention. Many projects continue to incorporate deprecated dependencies.&lt;/p&gt;
&lt;p&gt;I was inspired to write this blog after coming across &lt;a href="https://www.linkedin.com/posts/rorym_softwaresupplychainsecurity-activity-7127600960364797954-rAJE/" target="_blank" rel="noopener noreferrer"&gt;a LinkedIn post by Rory McCune&lt;/a&gt; and several other posts over the past few weeks.&lt;/p&gt;</description></item><item><title>VS Code Security: Looking at the IDE from Security Lens</title><link>https://krash.dev/posts/attacking-vs-code/</link><pubDate>Thu, 14 Sep 2023 00:00:00 +0000</pubDate><guid>https://krash.dev/posts/attacking-vs-code/</guid><description>&lt;p&gt;While perusing &lt;a href="https://survey.stackoverflow.co/2023/#section-most-popular-technologies-integrated-development-environment" target="_blank" rel="noopener noreferrer"&gt;StackOverflow&amp;#39;s 2023 Developer Survey&lt;/a&gt; (yes, we developers have our own version of celebrity gossip), I couldn&amp;rsquo;t help but notice that our trusty VSCode is still riding high as the undisputed IDE champ. With a whopping 73% of the developer vote, it&amp;rsquo;s safe to say that VSCode has firmly planted its flag. But, like any superstar, it&amp;rsquo;s not immune to the spotlight&amp;rsquo;s glare, especially when it comes to security. And in this blog, we&amp;rsquo;ll explore the security aspects that every VSCode user should consider.&lt;/p&gt;</description></item><item><title>Investigating Reported Vulnerabilities: A Closer Look!</title><link>https://krash.dev/posts/investigating-reported-vulnerability/</link><pubDate>Sun, 30 Jul 2023 00:00:00 +0000</pubDate><guid>https://krash.dev/posts/investigating-reported-vulnerability/</guid><description>&lt;p&gt;In vulnerability scanners or penetration testing reports, you might come across statements like &lt;em&gt;&amp;ldquo;Service version x.y.z is vulnerable to CVE-YYYY-ABCD.&amp;rdquo;&lt;/em&gt; However, it&amp;rsquo;s essential to delve deeper to confirm the actual vulnerability.&lt;/p&gt;
&lt;p&gt;Let&amp;rsquo;s consider a real example:&lt;/p&gt;
&lt;p&gt;We received a vulnerability report indicating a vulnerability (&lt;a href="https://curl.se/docs/CVE-2023-23916.html" target="_blank" rel="noopener noreferrer"&gt;CVE-2023-23916&lt;/a&gt;) in curl v7.74.0 within the Debian 11 environment.&lt;/p&gt;
&lt;p&gt;The CVE documentation mentions:&lt;/p&gt;
&lt;blockquote&gt;&lt;p&gt;Affected versions: curl 7.57.0 to and including 7.87.0&lt;/p&gt;
&lt;/blockquote&gt;&lt;p&gt;At first glance, it appears that v7.74.0 is indeed vulnerable. But is that really the case?&lt;/p&gt;</description></item><item><title>Kubernetes Components</title><link>https://krash.dev/posts/kubernetes/kubernetes-components/</link><pubDate>Sun, 18 Jun 2023 00:00:00 +0000</pubDate><guid>https://krash.dev/posts/kubernetes/kubernetes-components/</guid><description>&lt;p&gt;In this blog post, we are going to talk about different components used in Kubernetes and what purpose each component serve. We will be talking about the following -&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Pods&lt;/li&gt;
&lt;li&gt;Service&lt;/li&gt;
&lt;li&gt;Ingress&lt;/li&gt;
&lt;li&gt;ConfigMap&lt;/li&gt;
&lt;li&gt;Secret&lt;/li&gt;
&lt;li&gt;Deployment&lt;/li&gt;
&lt;li&gt;StatefulSet&lt;/li&gt;
&lt;li&gt;ReplicaSet&lt;/li&gt;
&lt;li&gt;DaemonSet&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Use-case that will be used througout the blog will be hosting a web application with application code and database in different pods.&lt;/p&gt;
&lt;img loading="lazy" decoding="async" src="../../images/setup-k8s-c.png" alt="Setup"&gt;&lt;p&gt;Before starting this blog, if you want to learn about the underlying concepts - Read &amp;ldquo;&lt;a href="https://krash.dev/posts/kubernetes/kubernetes-concept/"&gt;Kubernetes Concept&lt;/a&gt;
&amp;rdquo;&lt;/p&gt;</description></item><item><title>My Experiments with Raspberry Pi Pico - Poor Man's Rubber Ducky</title><link>https://krash.dev/posts/rubber-ducky-using-pi-pico/</link><pubDate>Sat, 04 Feb 2023 00:00:00 +0000</pubDate><guid>https://krash.dev/posts/rubber-ducky-using-pi-pico/</guid><description>&lt;p&gt;Mr. Robot Season 2 Episode 9 - &amp;ldquo;Rubber Duckie, You&amp;rsquo;re The One&amp;rdquo; - I was fascinated by this piece of technology when I first saw it many years ago. Then I looked it up on the internet to learn more about it, and it turned out to be HID, or Human Interface Device. It basically imitates users and executes code or performs actions in their place.&lt;/p&gt;
&lt;p&gt;Since the real rubber ducky was out of my budget, I looked for alternatives and discovered that similar behaviour to the rubber ducky can be achieved using a less expensive piece of hardware - the Raspberry Pi Pico (7$).&lt;/p&gt;</description></item><item><title>Docker Security</title><link>https://krash.dev/posts/docker-security/</link><pubDate>Thu, 02 Feb 2023 00:00:00 +0000</pubDate><guid>https://krash.dev/posts/docker-security/</guid><description>&lt;p&gt;&lt;em&gt;Last Updated on &lt;strong&gt;2nd Feb 2023&lt;/strong&gt;&lt;/em&gt;.&lt;/p&gt;
&lt;h1 id="containers"&gt;Containers?&lt;a class="heading-anchor" href="#containers" aria-label="Link to this section"&gt;#&lt;/a&gt;
&lt;/h1&gt;
&lt;p&gt;Why do we need containers over VMs -&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Efficient Resource Consumption between containers&lt;/li&gt;
&lt;li&gt;Once License for services/OS&lt;/li&gt;
&lt;li&gt;Low Compute Overhead&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;What does docker engine does?&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Emulates Filesystem&lt;/li&gt;
&lt;li&gt;Gives each container unique process ID&lt;/li&gt;
&lt;li&gt;Isolation of container process&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Communication between the architecture components -&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Components
&lt;ul&gt;
&lt;li&gt;Docker client (The one user interacts with)&lt;/li&gt;
&lt;li&gt;Docker Host
&lt;ul&gt;
&lt;li&gt;Docker Daemon&lt;/li&gt;
&lt;li&gt;Images&lt;/li&gt;
&lt;li&gt;Containers&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;Registry&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;Docker client using serveral API calls sends the commands to Docker Engine which is being forwarded to containerd.&lt;/li&gt;
&lt;li&gt;Commuication between docker daemon and containerd is facilated through &lt;a href="https://krash.dev/posts/grpc-concepts"&gt;gRPC&lt;/a&gt;
 calls.&lt;/li&gt;
&lt;li&gt;Docker Client communicates with the Docker Daemon through a domain socket (if local) and through a TCP Socket (if remote).&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;What does &lt;code&gt;runc&lt;/code&gt; do?&lt;/p&gt;</description></item><item><title>Zone Identifier - Is your file downloaded from the internet?</title><link>https://krash.dev/posts/zone-identifier/</link><pubDate>Thu, 06 Oct 2022 00:00:00 +0000</pubDate><guid>https://krash.dev/posts/zone-identifier/</guid><description>&lt;p&gt;Have you ever wondered, why your file is not working after downloading it from the internet? How does system know if the file is downloaded from the internet?&lt;/p&gt;
&lt;p&gt;The answers to this is &lt;strong&gt;Zone.Identifiers&lt;/strong&gt;.&lt;/p&gt;
&lt;h2 id="what-are-zone-identifiers"&gt;What are Zone Identifiers?&lt;a class="heading-anchor" href="#what-are-zone-identifiers" aria-label="Link to this section"&gt;#&lt;/a&gt;
&lt;/h2&gt;
&lt;p&gt;Zone Identifiers is an alternate data stream that points, from where the file came on the users&amp;rsquo; computer.&lt;/p&gt;
&lt;blockquote&gt;&lt;p&gt;&lt;strong&gt;Note:&lt;/strong&gt; Alternate Data Streams are included with files on WIndows. This is typically the case with downloaded and blocked files.&lt;/p&gt;</description></item><item><title>Understanding DKIM - Email Security Series</title><link>https://krash.dev/posts/email-security/dkim/</link><pubDate>Tue, 26 Jul 2022 00:00:00 +0000</pubDate><guid>https://krash.dev/posts/email-security/dkim/</guid><description>&lt;p&gt;DKIM is a technological advancement in the field of email security. SPF prevents non-authorized servers from sending emails, but it does not prevent all attempts at spoofing. This is where our next level of security comes into play.&lt;/p&gt;
&lt;p&gt;DKIM or Domain Keys Identified Mail aids to the security of the email as it adds a digital signature to every outgoing message, allowing receiving servers to verify that the message came from your organization. It ensures that the content of the email remains untampered/compromised and can be trusted.&lt;/p&gt;</description></item><item><title>Understanding SPF - Email Security Series</title><link>https://krash.dev/posts/email-security/spf/</link><pubDate>Mon, 25 Jul 2022 00:00:00 +0000</pubDate><guid>https://krash.dev/posts/email-security/spf/</guid><description>&lt;p&gt;Sender Policy Framework or SPF is an email authentication platform. It helps in specifying who is allowed to send emails from your domain. Making it harder for fraudsters to spoof sender information.&lt;/p&gt;
&lt;div class="callout callout--note"&gt;
 &lt;div class="callout__label"&gt;Note&lt;/div&gt;
 RFC 7208 - &lt;a href="https://datatracker.ietf.org/doc/html/rfc7208" target="_blank" rel="noopener noreferrer"&gt;&lt;a href="https://datatracker.ietf.org/doc/html/rfc7208" target="_blank" rel="noopener noreferrer"&gt;https://datatracker.ietf.org/doc/html/rfc7208&lt;/a&gt;
&lt;/a&gt;
&lt;/div&gt;

&lt;p&gt;SPF Records are used to specify the origin of the email to the world. It can be considered as a public list that specifies where an email is sent from.&lt;/p&gt;
&lt;h2 id="how-does-spf-records-look-like"&gt;How does SPF records look like?&lt;a class="heading-anchor" href="#how-does-spf-records-look-like" aria-label="Link to this section"&gt;#&lt;/a&gt;
&lt;/h2&gt;
&lt;p&gt;SPF is configured and managed as a TXT record inside the DNS server your domain uses.&lt;/p&gt;</description></item><item><title>Linux - Command Line Struggles</title><link>https://krash.dev/posts/linux-commands/</link><pubDate>Mon, 04 Jul 2022 00:00:00 +0000</pubDate><guid>https://krash.dev/posts/linux-commands/</guid><description>&lt;h2 id="configure-network-using-ip-command-in-ubuntu-server"&gt;Configure Network Using &lt;code&gt;ip&lt;/code&gt; Command in Ubuntu Server&lt;a class="heading-anchor" href="#configure-network-using-ip-command-in-ubuntu-server" aria-label="Link to this section"&gt;#&lt;/a&gt;
&lt;/h2&gt;
&lt;p&gt;&lt;strong&gt;Temporary Method -&lt;/strong&gt;&lt;/p&gt;
&lt;div class="code-block"&gt;
 &lt;div class="code-block__head"&gt;
 &lt;span class="code-block__lang"&gt;bash&lt;/span&gt;
 &lt;button class="code-copy" type="button" aria-label="Copy code to clipboard"&gt;&lt;svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" aria-hidden="true"&gt;&lt;rect x="9" y="9" width="13" height="13" rx="2" ry="2"/&gt;&lt;path d="M5 15H4a2 2 0 0 1-2-2V4a2 2 0 0 1 2-2h9a2 2 0 0 1 2 2v1"/&gt;&lt;/svg&gt;&lt;span class="code-copy__label"&gt;copy&lt;/span&gt;&lt;/button&gt;
 &lt;/div&gt;
 &lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-bash" data-lang="bash"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;$ ip a &lt;span class="c1"&gt;# to get the interface name after connecting LAN&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;$ sudo ip a add 192.168.1.8/24 dev &amp;lt;network-interface-name&amp;gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;$ ip link &lt;span class="nb"&gt;set&lt;/span&gt; dev &amp;lt;network-interface-name&amp;gt; up
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;$ sudo ip route add default via 192.168.1.1&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;&lt;strong&gt;Permanent Solution -&lt;/strong&gt;
Ref: &lt;a href="https://netplan.io/examples/" target="_blank" rel="noopener noreferrer"&gt;https://netplan.io/examples/&lt;/a&gt;
&lt;/p&gt;</description></item><item><title>gRPC: We are not RESTing Anymore</title><link>https://krash.dev/posts/grpc-concepts/</link><pubDate>Sat, 02 Jul 2022 00:00:00 +0000</pubDate><guid>https://krash.dev/posts/grpc-concepts/</guid><description>&lt;p&gt;gRPC is a framework which is being used to build scalable and fast APIs. The framework from which it derives most of its positives is from the protocol it uses - HTTP/2. Apart from HTTP/2, it uses protocol buffer (protobuf) for the communication.&lt;/p&gt;
&lt;p&gt;gRPC can be useful in circumstances like -&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;large-scale microservices connections&lt;/li&gt;
&lt;li&gt;real-time communication&lt;/li&gt;
&lt;li&gt;Low power &amp;amp; low bandwidth systems&lt;/li&gt;
&lt;li&gt;Multi-language environments&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id="why-should-we-care-lets-talk-benefits"&gt;Why Should We Care? Let&amp;rsquo;s talk Benefits&lt;a class="heading-anchor" href="#why-should-we-care-lets-talk-benefits" aria-label="Link to this section"&gt;#&lt;/a&gt;
&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;The use of HTTP/2 over the TLS end-to-end encryption connection in gRPC ensures API security.&lt;/li&gt;
&lt;li&gt;gRPC provides built-in support for commodity features, such as metadata exchange, encryption, authentication, deadline/timeouts and cancellations, interceptors, load balancing, service discovery, and so much more.&lt;/li&gt;
&lt;li&gt;The prime feature of gRPC methodology is the native code generation for client/server applications.&lt;/li&gt;
&lt;li&gt;gRPC tools and libraries are designed to work with multiple platforms and programming languages, including Java, JavaScript, Ruby, Python, Go, Dart, Objective-C, C#, and more.&lt;/li&gt;
&lt;li&gt;Parsing with Protobuf requires fewer CPU resources since data is converted into a binary format, and encoded messages are lighter in size. So, messages are exchanged faster, even in machines with a slower CPU, such as mobile devices.&lt;/li&gt;
&lt;li&gt;Request and Response Multiplexing - Multiple requests/response in one single connection.&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id="underlying-concepts"&gt;Underlying Concepts&lt;a class="heading-anchor" href="#underlying-concepts" aria-label="Link to this section"&gt;#&lt;/a&gt;
&lt;/h2&gt;
&lt;h3 id="protocol-buffers"&gt;Protocol Buffers&lt;a class="heading-anchor" href="#protocol-buffers" aria-label="Link to this section"&gt;#&lt;/a&gt;
&lt;/h3&gt;
&lt;p&gt;aka &lt;code&gt;protobuf&lt;/code&gt; . It&amp;rsquo;s Google&amp;rsquo;s serialization/deserialization protocol that enables easy definition of services and auto-generation of client libraries. It is an IDL (Interface Definition Language).&lt;/p&gt;</description></item><item><title>How is XSS different from CSRF?</title><link>https://krash.dev/posts/xss-vs-csrf/</link><pubDate>Tue, 28 Jun 2022 00:00:00 +0000</pubDate><guid>https://krash.dev/posts/xss-vs-csrf/</guid><description>&lt;p&gt;An interesting discussion, led me to realize this is one of the commonly discussed topic and I thought a blog post for it might be helpful for someone.&lt;/p&gt;
&lt;p&gt;&lt;a href="https://portswigger.net/web-security/csrf" target="_blank" rel="noopener noreferrer"&gt;Cross-site request forgery&lt;/a&gt; and &lt;a href="https://portswigger.net/web-security/cross-site-scripting" target="_blank" rel="noopener noreferrer"&gt;Cross-site scripting&lt;/a&gt; are both client side attacks which performs action on behalf of users.&lt;/p&gt;
&lt;p&gt;Just some context here -&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href="https://portswigger.net/web-security/cross-site-scripting" target="_blank" rel="noopener noreferrer"&gt;Cross-site scripting&lt;/a&gt; (or XSS) allows an attacker to execute arbitrary JavaScript within the browser of a victim user. The attack happen because of the acceptance of the malicious code by the sites.&lt;/li&gt;
&lt;li&gt;&lt;a href="https://portswigger.net/web-security/csrf" target="_blank" rel="noopener noreferrer"&gt;Cross-site request forgery&lt;/a&gt; (or CSRF) allows an attacker to induce a victim user to perform actions that they do not intend to. This attack can be performed by the code hosted on any third party attacker controlled site.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Before diving into the differences, let&amp;rsquo;s see what conditions needs to be met in order for both the attacks to be successful.&lt;/p&gt;</description></item><item><title>Kubernetes Concept</title><link>https://krash.dev/posts/kubernetes/kubernetes-concept/</link><pubDate>Mon, 17 Jan 2022 00:00:00 +0000</pubDate><guid>https://krash.dev/posts/kubernetes/kubernetes-concept/</guid><description>&lt;p&gt;I have been wanting to learn about &lt;del&gt;kubernetes&lt;/del&gt; k8s since long, and create this blog series. Here we are finally started (thanks to &lt;a href="https://blog.null.community/study-group-cloud-security/" target="_blank" rel="noopener noreferrer"&gt;null cloud security study group&lt;/a&gt; ), so without wasting too much time let&amp;rsquo;s get started. I am learning this having a security mindset, to find common misconfigurations and understand the development process to understand the mitigation.&lt;/p&gt;
&lt;p&gt;K8s is a &lt;strong&gt;container orchestrator&lt;/strong&gt;. Before diving too much into the depth let&amp;rsquo;s see what orchestrators/orchestrations are.&lt;/p&gt;</description></item><item><title>Anonymous Challenge Write-Up: WinjaCTF c0c0n 2021</title><link>https://krash.dev/posts/winja-anonymous-challenge-writeup/</link><pubDate>Mon, 15 Nov 2021 00:00:00 +0000</pubDate><guid>https://krash.dev/posts/winja-anonymous-challenge-writeup/</guid><description>&lt;p&gt;WinjaCTF at c0c0n [2021]: I developed an easy challenge - called &amp;ldquo;Anonymous&amp;rdquo; - the challenge was based upon browser forensics.&lt;/p&gt;
&lt;h2 id="tldr"&gt;TL;DR&lt;a class="heading-anchor" href="#tldr" aria-label="Link to this section"&gt;#&lt;/a&gt;
&lt;/h2&gt;
&lt;p&gt;&lt;strong&gt;Intended Way&lt;/strong&gt; - Download the zip &amp;gt; Extract it &amp;gt; Navigate the Linux directory structure &amp;gt; To find a directory called &lt;code&gt;.config&lt;/code&gt; &amp;gt; google-chrome &amp;gt; Default &amp;gt; Open the History File in SQL Browser &amp;gt; Search for URLs and upon up the URL to get a file with the name - formatted like flag.&lt;/p&gt;</description></item><item><title>This is why you need a personal Collaborator Client!</title><link>https://krash.dev/posts/this-is-why-you-need-a-personal-collaborator-client/</link><pubDate>Tue, 22 Jun 2021 00:00:00 +0000</pubDate><guid>https://krash.dev/posts/this-is-why-you-need-a-personal-collaborator-client/</guid><description>&lt;p&gt;If you have used &lt;a href="https://portswigger.net/burp/documentation/collaborator" target="_blank" rel="noopener noreferrer"&gt;Burp’s collaborator client&lt;/a&gt; for your Out-of-band testing, you know it’s awesome. Then why there is a need for a personal collaborator client? There are a few things that need to be addressed.&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;Companies have started to blacklist burp collaborator’s domain, making it difficult for OOB vulnerabilities detection. (&lt;a href="https://twitter.com/burp_suite/status/1069998639785725952?lang=en" target="_blank" rel="noopener noreferrer"&gt;Read here&lt;/a&gt;)&lt;/li&gt;
&lt;li&gt;Collaborator client is not available for the community/free edition of BurpSuite.&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;This brings the need for having a personal collaborator client, with no to minimal investments, that will help us in the detection of any out-of-band/blind vulnerabilities, and I have linked an amazing cheatsheet below that will guide in OOB Exploitation. So, let’s get started. Below are the things required for our recipe to cook:&lt;/p&gt;</description></item><item><title>How does burp proxy work?</title><link>https://krash.dev/posts/how-does-burp-proxy-work/</link><pubDate>Mon, 07 Jun 2021 00:00:00 +0000</pubDate><guid>https://krash.dev/posts/how-does-burp-proxy-work/</guid><description>&lt;h2 id="whats-a-proxy"&gt;What’s a proxy?&lt;a class="heading-anchor" href="#whats-a-proxy" aria-label="Link to this section"&gt;#&lt;/a&gt;
&lt;/h2&gt;
&lt;p&gt;A proxy acts as a gateway between you and the internet. The internet traffic flow back and forth if a proxy is setup in the middle. So, what is the need of proxy? There are several reasons organizations and individuals use proxies:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Control and monitor internet usage&lt;/li&gt;
&lt;li&gt;Proxy servers can give better speed and bandwidth by caching websites&lt;/li&gt;
&lt;li&gt;Proxy servers can also be setup along with VPNs to provide anonymity and better security&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;There are different types of proxies, but a specific type of proxy that we are going to talk about in this blog is &lt;strong&gt;interception proxy&lt;/strong&gt;.&lt;/p&gt;</description></item><item><title>NULLCON 2021 Training: DEVSECOPS</title><link>https://krash.dev/posts/nullcon-2021-training-devsecops/</link><pubDate>Sat, 27 Mar 2021 00:00:00 +0000</pubDate><guid>https://krash.dev/posts/nullcon-2021-training-devsecops/</guid><description>&lt;p&gt;You don’t need money to buy expensive things, sometimes hard work pays off. And yes nullcon trainings are still expensive for me xD and I am grateful that I got this chance to attend one.&lt;/p&gt;
&lt;p&gt;One year ago, I was going through the nullcon training schedule, and trying to understand the structure, and how much I can learn from it, because it was too expensive for me to get the actual training. Cut to March 1st , 2021, where I was attending a nullcon Training called – “&lt;a href="https://nullcon.net/website/goa-2021/training/DevSecOps-automating-security-in-devops.php" target="_blank" rel="noopener noreferrer"&gt;DEVSECOPS – AUTOMATING SECURITY IN DEVOPS&lt;/a&gt; by Rohit Salecha”, not only as an attendee but also as a moderator for the event, because I was the one of the employees at &lt;a href="https://payatu.com/" target="_blank" rel="noopener noreferrer"&gt;Payatu&lt;/a&gt;.&lt;/p&gt;</description></item><item><title>Exam Experience: CEH v10</title><link>https://krash.dev/posts/passed-cehv10-practical/</link><pubDate>Fri, 27 Nov 2020 00:00:00 +0000</pubDate><guid>https://krash.dev/posts/passed-cehv10-practical/</guid><description>&lt;p&gt;July 6th, 2020: It all started with this mail. I received a scholarship for CEH Practical (applied two times xD) and I had to pay $99 to take the exam.&lt;/p&gt;
&lt;img loading="lazy" decoding="async" src="../images/ec-c-600x441.png" alt="Scholarship Mail"&gt;&lt;p&gt;I guess it was worth it. Battling with college and other stuff, I used to think I am not ready yet and kept on postponing it until 6th of November, 2020. I finally took the exam and passed it easily, and now that I look back, I could have done it then as well, but yeah.&lt;/p&gt;</description></item><item><title>Bug Bounty Summit CTF Writeup</title><link>https://krash.dev/posts/bug-bounty-summit-ctf-writeup/</link><pubDate>Mon, 02 Nov 2020 00:00:00 +0000</pubDate><guid>https://krash.dev/posts/bug-bounty-summit-ctf-writeup/</guid><description>&lt;p&gt;&lt;em&gt;The CTF is live on Hacker101 as Grayhatcon CTF – &lt;a href="https://ctf.hacker101.com/ctf" target="_blank" rel="noopener noreferrer"&gt;Hacker101 CTF&lt;/a&gt;&lt;/em&gt;&lt;/p&gt;
&lt;p&gt;The CTF was built upon real vulnerabilities found during bug bounties. It had four flags – 250 points each.&lt;/p&gt;
&lt;blockquote&gt;&lt;p&gt;&lt;strong&gt;Objective&lt;/strong&gt; - Hackerone&amp;rsquo;s Username and Password database has been leaked and put on an auction. Our task was to delete the auction listing before anyone buys it.&lt;/p&gt;
&lt;/blockquote&gt;&lt;p&gt;We were given an IP, which resolved to a web application. On performing some basic information gathering, I found out some stuff.&lt;/p&gt;</description></item><item><title>Hacking Is Not Black &amp; White</title><link>https://krash.dev/posts/hacking-is-not-black-and-white/</link><pubDate>Sun, 01 Nov 2020 00:00:00 +0000</pubDate><guid>https://krash.dev/posts/hacking-is-not-black-and-white/</guid><description>&lt;p&gt;&lt;em&gt;This is related to a talk given by me and pre &amp;amp; post-event activities, that were conducted at Developer Circles, Pune and Bengaluru.&lt;/em&gt;&lt;/p&gt;
&lt;p&gt;It all started with DEFCON 2020 Red Team Village CTF, my team and I reached the Top 50 and it was just amazing for all of us. It was an enriching experience, solving challenges from a wide range of categories and learning new stuff in the process. One section of the CTF dealt with Malware Analysis and I was fascinated by this domain of security and have been learning about it.&lt;/p&gt;</description></item><item><title>Search</title><link>https://krash.dev/search/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://krash.dev/search/</guid><description>search</description></item></channel></rss>