<?xml version="1.0" encoding="UTF-8"?><rss xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:content="http://purl.org/rss/1.0/modules/content/" xmlns:atom="http://www.w3.org/2005/Atom" version="2.0" xmlns:itunes="http://www.itunes.com/dtds/podcast-1.0.dtd" xmlns:googleplay="http://www.google.com/schemas/play-podcasts/1.0"><channel><title><![CDATA[Secure All Software]]></title><description><![CDATA[A Newsletter for Developers, DevOps and Security Engineers]]></description><link>https://www.secureallsoftware.com</link><image><url>https://www.secureallsoftware.com/img/substack.png</url><title>Secure All Software</title><link>https://www.secureallsoftware.com</link></image><generator>Substack</generator><lastBuildDate>Mon, 06 Apr 2026 19:35:39 GMT</lastBuildDate><atom:link href="https://www.secureallsoftware.com/feed" rel="self" type="application/rss+xml"/><language><![CDATA[en]]></language><webMaster><![CDATA[1awr@substack.com]]></webMaster><itunes:owner><itunes:email><![CDATA[1awr@substack.com]]></itunes:email><itunes:name><![CDATA[Andreas Tiefenthaler]]></itunes:name></itunes:owner><itunes:author><![CDATA[Andreas Tiefenthaler]]></itunes:author><googleplay:owner><![CDATA[1awr@substack.com]]></googleplay:owner><googleplay:email><![CDATA[1awr@substack.com]]></googleplay:email><googleplay:author><![CDATA[Andreas Tiefenthaler]]></googleplay:author><itunes:block><![CDATA[Yes]]></itunes:block><item><title><![CDATA[Solving CI/CD Bottlenecks - Some Practical Tips]]></title><description><![CDATA[Tired of waiting for computers to do their stuff?]]></description><link>https://www.secureallsoftware.com/p/solving-cicd-bottlenecks-some-practical</link><guid isPermaLink="false">https://www.secureallsoftware.com/p/solving-cicd-bottlenecks-some-practical</guid><dc:creator><![CDATA[Andreas Tiefenthaler]]></dc:creator><pubDate>Fri, 31 May 2024 12:02:25 GMT</pubDate><enclosure url="https://substackcdn.com/image/fetch/$s_!f363!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F9be0e234-4c5a-4d51-b3da-67b98b1f623a_413x360.png" length="0" type="image/jpeg"/><content:encoded><![CDATA[<p>Let&#8217;s start this edition with a classic comic from xkcd: https://xkcd.com/303/</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!f363!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F9be0e234-4c5a-4d51-b3da-67b98b1f623a_413x360.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!f363!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F9be0e234-4c5a-4d51-b3da-67b98b1f623a_413x360.png 424w, https://substackcdn.com/image/fetch/$s_!f363!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F9be0e234-4c5a-4d51-b3da-67b98b1f623a_413x360.png 848w, https://substackcdn.com/image/fetch/$s_!f363!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F9be0e234-4c5a-4d51-b3da-67b98b1f623a_413x360.png 1272w, https://substackcdn.com/image/fetch/$s_!f363!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F9be0e234-4c5a-4d51-b3da-67b98b1f623a_413x360.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!f363!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F9be0e234-4c5a-4d51-b3da-67b98b1f623a_413x360.png" width="413" height="360" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/9be0e234-4c5a-4d51-b3da-67b98b1f623a_413x360.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:360,&quot;width&quot;:413,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:null,&quot;alt&quot;:&quot;Compiling&quot;,&quot;title&quot;:null,&quot;type&quot;:null,&quot;href&quot;:null,&quot;belowTheFold&quot;:false,&quot;topImage&quot;:true,&quot;internalRedirect&quot;:null,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="Compiling" title="Compiling" srcset="https://substackcdn.com/image/fetch/$s_!f363!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F9be0e234-4c5a-4d51-b3da-67b98b1f623a_413x360.png 424w, https://substackcdn.com/image/fetch/$s_!f363!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F9be0e234-4c5a-4d51-b3da-67b98b1f623a_413x360.png 848w, https://substackcdn.com/image/fetch/$s_!f363!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F9be0e234-4c5a-4d51-b3da-67b98b1f623a_413x360.png 1272w, https://substackcdn.com/image/fetch/$s_!f363!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F9be0e234-4c5a-4d51-b3da-67b98b1f623a_413x360.png 1456w" sizes="100vw" fetchpriority="high"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a><figcaption class="image-caption">copyright xkcd</figcaption></figure></div><h3><strong>How Long Should Developers Wait for CI/CD Pipelines?</strong></h3><p>Continuous integration and deployment (CI/CD) has revolutionized software development over the past two decades. Despite its transformative benefits, CI/CD can become a source of frustration due to increased build times as more checks and automation are added. The process, once designed to streamline development, can slow to a crawl, with build times ballooning to 30 minutes or more.</p><h3><strong>Balancing Speed and Thoroughness</strong></h3><p>As teams incorporate various tests, validations, and security scans, the CI/CD pipelines grow increasingly complex and prone to failure. <a href="https://en.wikipedia.org/wiki/Murphy%27s_law">Murphy&#8217;s Law</a> often ensures that the longest-running task is most likely to fail, further exacerbating delays.</p><h3><strong>Job Classification</strong></h3><p>To optimize CI/CD efficiency, it&#8217;s essential to categorize jobs:</p><ul><li><p>Non-negotiable: These jobs must run before code merges or deployments. They are critical for ensuring the integrity and security of the build.</p></li><li><p>Optional: While beneficial, these jobs should not block the pipeline if they fail or are skipped. Their results can be logged and addressed later.</p></li></ul><h3><strong>Parallelization and Efficiency</strong></h3><p>Running jobs in parallel can significantly reduce build times. If jobs depend on each other, breaking up these dependencies can help. Additionally, consider the setup and startup costs of each job; sometimes, bundling tasks into a single job can be more efficient.</p><h3><strong>Frequency of Jobs</strong></h3><p>Not all CI/CD jobs need to run on every push. Tasks like long-running fuzzing or vulnerability scans can be scheduled daily, separate from the main development workflow. This approach minimizes interruptions and reduces the likelihood of false positives that can frustrate the development team.</p><h3><strong>Conclusion</strong></h3><p>CI/CD automation is a powerful tool that, when used wisely, can greatly enhance development efficiency. However, overloading the pipeline with checks can slow progress. Teams can strike a balance that maximizes the benefits of CI/CD while minimizing its drawbacks by categorizing jobs, parallelizing tasks, and adjusting the frequency of long-running jobs. Use CI/CD wisely, and it becomes a near-magical tool for development; misuse it, and it becomes a handbrake on progress.</p><div class="poll-embed" data-attrs="{&quot;id&quot;:179862}" data-component-name="PollToDOM"></div><p></p><h1>Interesting Links</h1><p><strong><a href="https://pulse.latio.tech/p/defining-aspm">WTF is ASPM?</a></strong></p><p><a href="https://www.linkedin.com/in/james-berthoty/">James</a> is shedding light on yet another security acronym. Application Security Posture Management (ASPM) is the latest Gartner-fueled buzzword to take over cybersecurity, but no one knows exactly what it is.</p><p></p><p><strong><a href="https://adnanthekhan.com/2024/05/06/the-monsters-in-your-build-cache-github-actions-cache-poisoning/">The Monsters in Your Build Cache</a></strong></p><p>GitHub Actions cache poisoning can compromise build security, as detailed in <a href="https://www.linkedin.com/in/adnanekhan/">Adnan Khan</a>'s blog. Attackers exploit GitHub's cache mechanism, injecting malicious code by predicting or forcing cache keys, leading to unauthorized access and lateral movement within workflows.</p><p><strong><a href="https://mathieularose.com/gitops-cicd-github-actions">Building a (SOC 2 Compliant) GitOps CI/CD Pipeline with GitHub Actions</a></strong></p><p><a href="https://www.linkedin.com/in/mathieularose/">Mathieu</a> shared their blueprint for making a simple and developer-friendly GitOps-based CI/CD pipeline built on GitHub Actions, designed for SOC 2 compliance. It is simple, has great developer experience, and is SOC 2 compliant. </p><p></p><p class="button-wrapper" data-attrs="{&quot;url&quot;:&quot;https://www.secureallsoftware.com/p/solving-cicd-bottlenecks-some-practical?utm_source=substack&utm_medium=email&utm_content=share&action=share&quot;,&quot;text&quot;:&quot;Share&quot;,&quot;action&quot;:null,&quot;class&quot;:null}" data-component-name="ButtonCreateButton"><a class="button primary" href="https://www.secureallsoftware.com/p/solving-cicd-bottlenecks-some-practical?utm_source=substack&utm_medium=email&utm_content=share&action=share"><span>Share</span></a></p><div><hr></div><h5></h5><p>Thank you for reading along. If you have feedback or questions, message me anytime at <a href="http://andy@occamslabs.com">andy@occamslabs.com</a>.  If you want to be featured in the next issue or have suggestions<strong>,</strong> send them my way.</p><p></p>]]></content:encoded></item><item><title><![CDATA[Security for Engineering Leaders (on a budget)]]></title><description><![CDATA[Software startups often operate on tight budgets, making low or no-cost security measures particularly appealing.]]></description><link>https://www.secureallsoftware.com/p/security-for-engineering-leaders</link><guid isPermaLink="false">https://www.secureallsoftware.com/p/security-for-engineering-leaders</guid><dc:creator><![CDATA[Andreas Tiefenthaler]]></dc:creator><pubDate>Fri, 03 May 2024 07:47:48 GMT</pubDate><content:encoded><![CDATA[<p>Here are several effective strategies that startups can implement to enhance their security without significant financial investments.</p><p></p><p><strong>Use Open Source Tools</strong>: Many open-source security tools can provide robust security features at no cost. Tools like OWASP ZAP for web vulnerability detection and various security scanners that track known vulnerabilities in applications and libraries are available. </p><p><strong>Implement Strong Access Controls</strong>: Enforce the principle of least privilege by ensuring that employees have access only to the resources necessary for their roles. This can be managed through role-based access controls typically built into many operating systems and services. This can be a bit difficult depending on the size and stage of the company at the moment. Nevertheless, managing access and not giving full administrative access to everyone is a good idea.</p><p><strong>Enable Multi-Factor Authentication (MFA)</strong>: Many services offer multi-factor authentication for free. Enabling MFA adds an extra layer of security by requiring a second form of verification beyond just a password. While this can be in the way, it might be what stops you from being hacked.</p><p><strong>Use Strong, Unique Passwords</strong>: Ensure everyone uses strong, unique passwords for each service. Tools like KeePass or Bitwarden can help manage passwords securely without additional cost. Make sure you don&#8217;t save your second factor with your password.</p><p><strong>Regularly Update and Patch Systems</strong>: One of the simplest and most effective security measures is to keep all software up to date. This includes operating systems, applications, and all third-party software used in the business. This can be a bit tedious, but free tools like <a href="https://docs.github.com/en/code-security/dependabot">Dependabot</a> and  <a href="https://docs.renovatebot.com/">Renovate Bot </a>can automate most of the tasks freeing up your and your team&#8217;s hands.</p><p><strong>Secure Your Code</strong>: Use secure coding practice. Utilize free static analysis tools to scan and identify vulnerabilities in your codebase. GitHub, for example, offers integrated security scanning features that can help identify known vulnerabilities in open-source dependencies. Use <a href="https://owasp.org/www-project-developer-guide/release/">OWASP Developer Guide</a> to learn and train secure software development.</p><p></p><p>By integrating these security practices, startups can significantly bolster their security posture with minimal financial output. These are the basics everyone should follow.</p><p></p><h1>Interesting Links</h1><p><strong><a href="https://www.securityweek.com/dropbox-data-breach-impacts-customer-information/">Dropbox Data Breach Impacts Customer Information</a></strong></p><p>Another week, another data breach. Dropbox reported a breach in its Sign service, exposing user data like email addresses, usernames, phone numbers, hashed passwords, and authentication tokens. No payment info or signed documents were accessed. Dropbox has notified affected users, reset passwords, and rotated compromised keys and tokens. Investigations continue.</p><p><strong><a href="https://www.googlecloudcommunity.com/gc/Community-Blog/Implementing-a-Modern-Detection-Engineering-Workflow-Part-1/ba-p/735755">Implementing a Modern Detection Engineering Workflow Part 1</a></strong> (<strong><a href="https://www.googlecloudcommunity.com/gc/Community-Blog/Implementing-a-Modern-Detection-Engineering-Workflow-Part-2/ba-p/738302">Part 2</a></strong> &amp; <strong><a href="https://www.googlecloudcommunity.com/gc/Community-Blog/Implementing-a-Modern-Detection-Engineering-Workflow-Part-3/ba-p/739645">Part 3</a></strong>)</p><p>A modern detection engineering workflow involves implementing a Detection-as-Code pipeline to manage detection rules in Chronicle Security Operations. The process includes generating ideas, developing detection rules, peer reviews, deployment, and tuning. This three-part series gives a great intro.</p><p></p><p><a href="https://github.com/welldone-cloud/aws-scps-for-sandbox-and-training-accounts">aws-scps-for-sandbox-and-training-accounts</a></p><p>My long-term Friend <a href="https://www.linkedin.com/in/michael-kirchner-at/">Michael Kirchner</a>  created an AWS service control policy (SCP) that prevents member accounts from entering long-term financial agreements or making long-term reservations. His work on SCP is something to watch for as he regularly releases great new policies and tools.</p><p><strong><a href="https://github.com/boostsecurityio/poutine">poutine</a></strong></p><p><code>poutine</code> is a security scanner that detects misconfigurations and vulnerabilities in the build pipelines of a repository. It supports parsing CI workflows from GitHub Actions and Gitlab CI/CD. We scan all the things, but somehow we miss out on scanning the scanning automation. </p><p class="button-wrapper" data-attrs="{&quot;url&quot;:&quot;https://www.secureallsoftware.com/p/security-for-engineering-leaders?utm_source=substack&utm_medium=email&utm_content=share&action=share&quot;,&quot;text&quot;:&quot;Share&quot;,&quot;action&quot;:null,&quot;class&quot;:null}" data-component-name="ButtonCreateButton"><a class="button primary" href="https://www.secureallsoftware.com/p/security-for-engineering-leaders?utm_source=substack&utm_medium=email&utm_content=share&action=share"><span>Share</span></a></p><div><hr></div><h5><a href="https://www.occamslabs.com/">Working Together?</a></h5><p>Thank you for reading along. If you have feedback or questions, message me anytime at <a href="http://andy@occamslabs.com">andy@occamslabs.com</a>.  If you want to be featured in the next issue or have some suggestions<strong>,</strong> send them my way.</p><p></p>]]></content:encoded></item><item><title><![CDATA[Open Source Security ]]></title><description><![CDATA[Innovation and risk lie in the vast landscape of open-source software (OSS).]]></description><link>https://www.secureallsoftware.com/p/open-source-security</link><guid isPermaLink="false">https://www.secureallsoftware.com/p/open-source-security</guid><dc:creator><![CDATA[Andreas Tiefenthaler]]></dc:creator><pubDate>Fri, 05 Apr 2024 10:14:33 GMT</pubDate><content:encoded><![CDATA[<p>Innovation and risk lie in the vast landscape of open-source software (OSS). Recently, an alarming discovery&#8212;the XZ backdoor &#8212; shook the foundations of trust within the community. Hidden in plain sight, it raised questions about the security of the tools we rely on daily.</p><p>Think about it: every time we order food, manage finances, or run a business, we traverse thousands of codes crafted by numerous developers. This complexity offers unparalleled innovation, driving multi-billion dollar industries. However, it also presents a sprawling attack surface for threat actors to exploit.</p><p>In an ideal world, the community swiftly identifies and patches vulnerabilities. Yet, the reality is starkly different. Many OSS libraries are maintained by individuals juggling multiple responsibilities, making them vulnerable targets for exploitation. Threat actors may seize control of projects or clandestinely embed backdoors over time.</p><p>The XZ backdoor is a stark reminder of the sophistication with which threat actors can infiltrate the OSS ecosystem. Traditional safeguards like CI/CD pipelines and vulnerability checks offer limited protection against meticulously planned attacks.</p><p>So, how can we fortify the defenses of open-source software?</p><p>While solutions on a large scale remain elusive, there are steps we can take as consumers and contributors:</p><ol><li><p><strong>Exercise Selectivity</strong>: Choose OSS dependencies wisely, minimizing the risk of incorporating compromised code into projects.</p></li><li><p><strong>Simplify Development</strong>: Embrace simplicity in design, reducing the complexity that often breeds vulnerabilities.</p></li><li><p><strong>Support Maintenance</strong>: Fund open-source projects and compensate developers for maintaining critical components, ensuring sustainability.</p></li></ol><p>However, these measures are not foolproof. They require collective effort and investment. Establishing a certifying authority for "trusted" dependencies or implementing stringent validation processes demands resources, both in terms of time and money.</p><p>In essence, safeguarding the integrity of OSS necessitates a multifaceted approach. It demands not only technological solutions but also community collaboration and financial support. By actively participating in these efforts, we can bolster trust in open-source software and mitigate the risks posed by malicious actors. Thanks for reading Secure All Software! Subscribe for free to receive new posts and support my work.</p><p></p><p></p><h1>Interesting Links</h1><p><strong><a href="https://www.youtube.com/watch?v=vV_WdTBbww4">Revealing the features of the XZ backdoor</a></strong></p><p>Dive into the digital underworld, uncovering the secrets of the XZ backdoor. Witness firsthand the sophisticated mechanisms and the threats they pose to our cybersecurity. This eye-opening journey is a must-watch for tech enthusiasts and security professionals. In three words: This is wild!</p><p></p><p><strong><a href="https://jerrygamblin.com/2024/01/03/2023-cve-data-review/?utm_source=substack&amp;utm_medium=email#:~:text=CVEs%20By%20The%20Numbers,all%20CVEs%20for%20the%20year.">2023 CVE Data Review: Insights into vulnerability trends</a></strong></p><p>The 2023 CVE Data Review by Jerry Gamblin presents an alarming increase in cybersecurity vulnerabilities, with a record 28,902 CVEs reported, marking a 15% rise from the previous year. The analysis underscores a concerning trend in software security, revealing patterns in vulnerability reporting, such as the most CVEs published in October and Tuesdays being the peak days for publication. This deep dive into CVE statistics highlights the urgent need for improved security measures and awareness within the tech community. The review is a crucial resource for understanding and addressing the evolving landscape of cybersecurity threats.</p><p></p><p><strong><a href="https://fwdcloudsec.org/conference/europe/cfp.html">Call For Participation (CFP): fwd:cloudsec Europe 2024</a></strong></p><p>fwd:cloudsec is expanding to Europe with its Brussels event on September 17, 2024, aiming to mirror the success of its North American counterpart. This conference seeks contributions on the cutting edge of cloud security, covering both defensive and offensive aspects, and encourages discussions on European-specific regulatory impacts. Open to submissions from practitioners across the cloud security spectrum, fwd:cloudsec Europe 2024 is an opportunity for both seasoned and first-time speakers to share novel research, experiences, and insights in an environment designed to foster interaction and collaboration.</p><p></p><p><strong><a href="https://github.com/github/cleanowners">Cleanowners GitHub action</a></strong></p><p>Cleanowners is a GitHub Action designed to help keep <code>CODEOWNERS</code> files current by removing users who are no longer a part of the organization. This is helpful for companies that are looking to remove outdated information in the <code>CODEOWNERS</code> file. This action can be paired with other <code>CODEOWNERS</code> related actions to suggest new owners or lint <code>CODEOWNERS</code> files to ensure accuracy.</p><p></p><p><strong><a href="https://bishopfox.com/blog/poisoned-pipeline-attack-execution-a-look-at-ci-cd-environments">Poisoned Pipeline Execution Attacks: A Look at CI-CD Environments</a></strong></p><p>The Bishop Fox blog post delves into Poisoned Pipeline Execution (PPE) attacks targeting CI/CD environments. It explains how attackers manipulate CI/CD pipelines to execute malicious code, detailing three PPE attack types: direct, indirect, and public. </p><p></p><p class="button-wrapper" data-attrs="{&quot;url&quot;:&quot;https://www.secureallsoftware.com/p/open-source-security?utm_source=substack&utm_medium=email&utm_content=share&action=share&quot;,&quot;text&quot;:&quot;Share&quot;,&quot;action&quot;:null,&quot;class&quot;:null}" data-component-name="ButtonCreateButton"><a class="button primary" href="https://www.secureallsoftware.com/p/open-source-security?utm_source=substack&utm_medium=email&utm_content=share&action=share"><span>Share</span></a></p><div><hr></div><h5><a href="https://www.occamslabs.com/">Working Together?</a></h5><p>Thank you for reading along. If you have feedback or questions, message me anytime at <a href="http://andy@occamslabs.com">andy@occamslabs.com</a>.  If you want to be featured in the next issue or have some suggestions<strong>,</strong> send them my way.</p><p></p>]]></content:encoded></item><item><title><![CDATA[Burn your API keys!]]></title><description><![CDATA[Looking at API keys as a threat to your companies existence opens up the idea of using application identities and create temporary credentials based on "zero-trust" tech.]]></description><link>https://www.secureallsoftware.com/p/burn-your-api-keys</link><guid isPermaLink="false">https://www.secureallsoftware.com/p/burn-your-api-keys</guid><dc:creator><![CDATA[Andreas Tiefenthaler]]></dc:creator><pubDate>Fri, 29 Mar 2024 08:20:14 GMT</pubDate><enclosure url="https://substackcdn.com/image/fetch/f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F30273037-5f60-4b2a-a16c-526c14f99978_328x254.png" length="0" type="image/jpeg"/><content:encoded><![CDATA[<p>Long-lived access credentials and API keys are a threat to your company and a treat to attackers. Many of them are difficult to keep secret, hard to rotate and must be kept in an inventory so you know what you have.</p><p>Most data breaches happen because of accidentally leaked or stolen credentials, such as API keys or passwords.</p><p>According to <a href="https://www.ibm.com/reports/data-breach">IBM</a>, the average cost per breach is over 4 million dollars </p><p><strong>This can ruin a business in the blink of an eye.</strong>&nbsp;</p><p>One of the most recent data breaches:&nbsp;</p><p>Okta Data Breach (October 19, 2023): A service account stored within the system allowed unauthorized access to Okta&#8217;s customer support system.</p><p>The solution to this? Do not use long-lived access credentials.&nbsp; This applies to humans and machines.&nbsp;</p><div><hr></div><p>I am running an experiment offering anyone 30 minutes of free security consultation. Just <strong><a href="https://app.lemcal.com/@andreastiefenthaler/30-minutes">sign up for a spot</a></strong> or share with a friend.</p><div><hr></div><p>For humans make sure sensitive actions or logins have a short-lived session time or require re-entering passwords and second-factor authentication.</p><p>Machines use short-lived access tokens or, even better, a form of zero trust based on machine identity.&nbsp;</p><p>On a k8s cluster, you can use ServiceAccount tokens to identify your workloads. On most cloud providers, your systems can have an identity tied to your chosen role.</p><p>You can use systems like OIDC to establish trust between service providers and various SaaS.</p><p>In a past project, we combined Kubernetes Service Accounts and AWS Roles to get to almost zero long-lived access credentials. (Luckily, this application did not have a lot of external third parties)</p><p>In the end, we integrated:</p><ul><li><p>GitHub</p></li><li><p>GitLab</p></li><li><p>AWS access to internal components</p></li><li><p>HashiCorp Vault as Credentials proxy/ temporary credentials&nbsp;</p></li></ul><p>Ultimately, this reduced the inventory of secrets that needed to be maintained tremendously, allowing us to rotate these more efficiently and regularly.&nbsp;</p><p>Developers were also happy with it, as they didn't need to request secrets be stored for them in production vaults and could fully own their code.</p><div class="subscription-widget-wrap-editor" data-attrs="{&quot;url&quot;:&quot;https://www.secureallsoftware.com/subscribe?&quot;,&quot;text&quot;:&quot;Subscribe&quot;,&quot;language&quot;:&quot;en&quot;}" data-component-name="SubscribeWidgetToDOM"><div class="subscription-widget show-subscribe"><div class="preamble"><p class="cta-caption">Thanks for reading Secure All Software! Subscribe for free to receive new posts and support my work.</p></div><form class="subscription-widget-subscribe"><input type="email" class="email-input" name="email" placeholder="Type your email&#8230;" tabindex="-1"><input type="submit" class="button primary" value="Subscribe"><div class="fake-input-wrapper"><div class="fake-input"></div><div class="fake-button"></div></div></form></div></div><p></p><p></p><h1>Interesting Links</h1><p><strong><a href="https://github.com/aws-samples/hardeneks">Harden EKS</a></strong></p><p>Runs check against your EKS clusters to ensure they follow the <a href="https://aws.github.io/aws-eks-best-practices/">EKS best practices</a>. </p><p><strong><a href="https://tracecat.com/">Open-Source Security Automation</a></strong></p><p>Security orchestration, automation, and response (SOAR) allows you to react to detected security events and automate much of the response. Similar to Zappier or IFTT, it is a no-code/low-code environment that enables security teams to do more automation and less manual work.</p><p><strong><a href="https://ventureinsecurity.net/p/the-business-of-protecting-individuals">The Business of Protecting Individuals</a></strong></p><p>This article takes a deep dive into why building a successful consumer-focused security company is challenging. In the end, it boils down to awareness, perceived threat, and the likelihood of actually being attacked or hacked.</p><p></p><p class="button-wrapper" data-attrs="{&quot;url&quot;:&quot;https://www.secureallsoftware.com/p/burn-your-api-keys?utm_source=substack&utm_medium=email&utm_content=share&action=share&quot;,&quot;text&quot;:&quot;Share&quot;,&quot;action&quot;:null,&quot;class&quot;:null}" data-component-name="ButtonCreateButton"><a class="button primary" href="https://www.secureallsoftware.com/p/burn-your-api-keys?utm_source=substack&utm_medium=email&utm_content=share&action=share"><span>Share</span></a></p><div><hr></div><h5><a href="https://www.occamslabs.com/">Working Together?</a></h5><p>Thank you for reading along. If you have feedback or questions, message me anytime at <a href="http://andy@occamslabs.com">andy@occamslabs.com</a>.  If you want to be featured in the next issue or have some suggestions send them my way.</p><p></p>]]></content:encoded></item><item><title><![CDATA[Are Software and DevOps engineers becoming dumber?]]></title><description><![CDATA[I recently saw a (on purpose) controversial post on Linkedin titled &#8220;Are Software engineers becoming dumber?&#8221; The idea was that 20 years ago, we didn&#8217;t have any AI or Stack Overflow.]]></description><link>https://www.secureallsoftware.com/p/are-software-and-devops-engineers</link><guid isPermaLink="false">https://www.secureallsoftware.com/p/are-software-and-devops-engineers</guid><dc:creator><![CDATA[Andreas Tiefenthaler]]></dc:creator><pubDate>Fri, 22 Mar 2024 07:23:13 GMT</pubDate><enclosure url="https://substack-post-media.s3.amazonaws.com/public/images/3fe4845f-228d-4cd3-b479-0ec18269ff32_1024x1024.webp" length="0" type="image/jpeg"/><content:encoded><![CDATA[<p>I recently saw a (on purpose) controversial post on Linkedin titled  &#8220;Are Software engineers becoming dumber?&#8221; The idea was that 20 years ago, we didn&#8217;t have any AI or Stack Overflow. Back then, you needed a debugger and pen and paper to get your stuff working. But now in 2024 all you need is some AI engineer tool, a framework of your choice, a bit Stack Overflow and you Git push your code into the world without knowing how it even works under  the hood.</p><p>While the post gave me the feeling of an old man yelling at clouds, there was something to it that made me think.</p><p>Many of these abstractions, libraries, frameworks, and tools allowed us to build more and cheaper. They helped us avoid constantly reinventing the wheel and instead have stable and well-engineered building blocks.<br>This made the landscape much more complex and difficult to understand. Many different domains and tools are mingled into a single project&#8212;have you seen your average NodeJS project? Expecting every engineer to be on top of all this is unreasonable, and the need to augment your working process is vital.</p><p>From a security perspective, this looks vastly different. Using <a href="https://www.linkedin.com/pulse/ai-written-code-security-risks-businesses-cant-ignore-vicki-reyzelman-obl2e/">generated code from AI</a> without checking it can be dangerous. Even code on Stack Overflow has many <a href="https://stackoverflow.blog/2019/11/26/copying-code-from-stack-overflow-you-might-be-spreading-security-vulnerabilities/">vulnerabilities</a>. This is being battled by AI to fix detected vulnerabilities automatically. </p><p>Will this lead to engineers becoming dumber over time? Or do they need to be better integrated into the company's business, security, and other aspects to orchestrate the development and generation of new products and software?</p><div class="poll-embed" data-attrs="{&quot;id&quot;:158131}" data-component-name="PollToDOM"></div><p></p><div class="subscription-widget-wrap-editor" data-attrs="{&quot;url&quot;:&quot;https://www.secureallsoftware.com/subscribe?&quot;,&quot;text&quot;:&quot;Subscribe&quot;,&quot;language&quot;:&quot;en&quot;}" data-component-name="SubscribeWidgetToDOM"><div class="subscription-widget show-subscribe"><div class="preamble"><p class="cta-caption">Thanks for reading Secure All Software! Subscribe for free to receive new posts and support my work.</p></div><form class="subscription-widget-subscribe"><input type="email" class="email-input" name="email" placeholder="Type your email&#8230;" tabindex="-1"><input type="submit" class="button primary" value="Subscribe"><div class="fake-input-wrapper"><div class="fake-input"></div><div class="fake-button"></div></div></form></div></div><p></p><p></p><h1>Interesting Links</h1><p><strong><a href="https://github.blog/2024-03-20-found-means-fixed-introducing-code-scanning-autofix-powered-by-github-copilot-and-codeql/">Found Means Fixed</a></strong></p><p>GitHub's latest innovation, code scanning autofix, is now in public beta for GitHub Advanced Security customers and promises a monumental shift in handling code vulnerabilities. Leveraging the power of GitHub Copilot and CodeQL, it offers an automated solution that addresses over two-thirds of alerts with minimal manual intervention. This tool speeds up the remediation process and significantly cuts down on security debt by enabling developers to fix vulnerabilities as they occur.</p><p><strong><a href="https://spectrum.ieee.org/lean-software-development">Lean Software Development</a></strong></p><p>The article delves into the complexities and pitfalls of modern software development, highlighting how excessive reliance on external libraries and bloated code bases compromise software security and efficiency. He critiques the industry's approach to software development, emphasizing the risks posed by the sheer volume of code and dependencies. The text advocates for a shift towards leaner, more secure software practices and discusses regulatory efforts aimed at improving software quality.</p><p><strong><a href="https://lirantal.com/books/nodejs-secure-coding">Node.js Secure Coding: Defending Against Command Injection Vulnerabilities</a></strong></p><p>My friend and long-time personal hero published a book on writing NodeJS Defending Against Command Injection Vulnerabilities. This book is innovative in teaching secure coding, using real-world CVE vulnerabilities in popular open-source npm packages. Through hands-on exercises and code review, you'll learn how to avoid common security pitfalls and adopt a security-first mindset. It's worth getting when you are a backend JS developer or security Engineer.</p><p><strong><a href="https://www.armosec.io/blog/kubernetes-1-30-security/">Kubernetes 1.30 a security overview</a></strong></p><p>Kubernetes 1.30 introduces significant security enhancements and improvements in the developer experience. This update focuses on strengthening secrets management, node and cluster management, and data security. It features advancements like improved handling of secret images, reduction of secret-based service account tokens, and bound service account token improvements. Additionally, Kubernetes 1.30 offers new measures to safeguard data integrity within volumes and enhances container isolation and authorization controls. This release represents a comprehensive effort to bolster the security and usability of Kubernetes, reflecting the community's commitment to advancing the platform's capabilities.</p><p class="button-wrapper" data-attrs="{&quot;url&quot;:&quot;https://www.secureallsoftware.com/p/are-software-and-devops-engineers?utm_source=substack&utm_medium=email&utm_content=share&action=share&quot;,&quot;text&quot;:&quot;Share&quot;,&quot;action&quot;:null,&quot;class&quot;:null}" data-component-name="ButtonCreateButton"><a class="button primary" href="https://www.secureallsoftware.com/p/are-software-and-devops-engineers?utm_source=substack&utm_medium=email&utm_content=share&action=share"><span>Share</span></a></p><p></p><div><hr></div><h5><a href="https://www.occamslabs.com/">Working Together?</a></h5><p>Thank you for reading along. If you have feedback or questions, message me anytime at <a href="http://andy@occamslabs.com">andy@occamslabs.com</a>.  If you want to work together, here are a few different ways </p><p>I can help you:</p><ul><li><p>Security audit of your systems</p></li><li><p>Improving the security of your current systems</p></li><li><p>Designing secure systems from the ground up</p></li></ul>]]></content:encoded></item><item><title><![CDATA[Are we loosing at dependencies?]]></title><description><![CDATA[How did we get into this complex mess?]]></description><link>https://www.secureallsoftware.com/p/are-we-loosing-at-dependencies</link><guid isPermaLink="false">https://www.secureallsoftware.com/p/are-we-loosing-at-dependencies</guid><dc:creator><![CDATA[Andreas Tiefenthaler]]></dc:creator><pubDate>Fri, 16 Feb 2024 09:04:42 GMT</pubDate><enclosure url="https://substack-post-media.s3.amazonaws.com/public/images/acdd59d0-c24e-4f06-9950-9afde44bfc36_3456x5184.jpeg" length="0" type="image/jpeg"/><content:encoded><![CDATA[<p>Keeping dependencies up to date is best practice. Applying security updates is a must. Not spending any time on it is what we want to do.</p><p>We have built dogmatic approaches, software, and processes around the topic of software dependencies.</p><div class="subscription-widget-wrap-editor" data-attrs="{&quot;url&quot;:&quot;https://www.secureallsoftware.com/subscribe?&quot;,&quot;text&quot;:&quot;Subscribe&quot;,&quot;language&quot;:&quot;en&quot;}" data-component-name="SubscribeWidgetToDOM"><div class="subscription-widget show-subscribe"><div class="preamble"><p class="cta-caption">Thanks for reading Secure All Software! Subscribe for free to receive new posts and support my work.</p></div><form class="subscription-widget-subscribe"><input type="email" class="email-input" name="email" placeholder="Type your email&#8230;" tabindex="-1"><input type="submit" class="button primary" value="Subscribe"><div class="fake-input-wrapper"><div class="fake-input"></div><div class="fake-button"></div></div></form></div></div><p></p><div class="poll-embed" data-attrs="{&quot;id&quot;:146742}" data-component-name="PollToDOM"></div><p>We built whole companies and open-source automation chains around this problem. To handle what is essential dependency creep and over-use of libraries. Some applications install hundreds to thousands of libraries in various versions. Many times, only a very small amount of the library's functionality is used. <strong>The rest is just stuff that isn&#8217;t needed. </strong>But now, we must manage, update, and review if a scanner finds something.&nbsp;</p><h2>How did we end up here?</h2><p>Access to libraries and other people's codes has never been easier.&nbsp; There are multiple projects solving the same problem using a different approach or style. Something for everyone and anyone's needs.</p><p>It has never been easier to build and release new software products to the world.&nbsp; This is fantastic and enables people to create better lives for themselves and their families. Creating and maintaining open-source libraries has also become part of cultivating your resume as a developer.&nbsp;</p><p>But not all is great!</p><p>Very often, a small functionality is required to solve a problem. A quick search reveals a library. We add the library to our dependency management. The code snippet in the README.md solved the problem, and we moved on. Now, we have an extra universe of functionality, dependencies, and potential problems.</p><p>What could have been a different way?</p><p>Design and create the functionality yourself? Get inspired by the open-source project or piece of code on StackOverflow on how this could be implemented and write it ourselves. Is it worth it?</p><p>It depends on the dependency.</p><p>Software dependencies can help to create new products and functionality quickly and easily. But they come with many unknown and hidden problems we have to account for.</p><p>Being more in control of your code and product reduces the <strong>risks of dependencies disappearing</strong>, being <strong>compromised</strong> by malicious actors, or being exposed to <strong>security vulnerabilities</strong> in your dependency tree.</p><p>Dependencies do have their benefits.</p><p>Using popular open-source libraries helps to have potentially more secure code. Recreating your own authentication or cryptography systems might not be a great idea. With many eyes on the codebase, problems are quickly identified and fixed. The best is to operate in between.&nbsp; </p><p>Choose dependencies carefully and review how much extra is coming in.&nbsp; Consider building smaller functions yourself and base them on existing libraries. For libraries that provide more functionality or are core to the product, make sure to vet them correctly and follow updates closely. Wrap them where possible to have better interfaces to control them.</p><p><strong>Reducing the dependencies makes it much easier to keep them up to date and ultimately reduces the risk of supply chain attacks.</strong></p><h1>Link Of The Week</h1><p></p><p><strong><a href="https://github.blog/2024-02-08-githubs-engineering-fundamentals-program-how-we-deliver-on-availability-security-and-accessibility/">GitHubs approach to delivering availability, security, and accessibility</a></strong></p><p>Being a massive development organization, GitHub developed internal tooling to stay on top of fundamental and important traits of any application. This blog post outlines a good way to automate the metadata to be on top of the overall picture. </p><p></p><p class="button-wrapper" data-attrs="{&quot;url&quot;:&quot;https://www.secureallsoftware.com/p/are-we-loosing-at-dependencies?utm_source=substack&utm_medium=email&utm_content=share&action=share&quot;,&quot;text&quot;:&quot;Share&quot;,&quot;action&quot;:null,&quot;class&quot;:null}" data-component-name="ButtonCreateButton"><a class="button primary" href="https://www.secureallsoftware.com/p/are-we-loosing-at-dependencies?utm_source=substack&utm_medium=email&utm_content=share&action=share"><span>Share</span></a></p><p></p><div><hr></div><h5><a href="https://www.occamslabs.com/">Working Together?</a></h5><p>Thank you for reading along. If you have feedback or questions, message me anytime at <a href="http://andy@occamslabs.com">andy@occamslabs.com</a>.  If you want to work together, here are a few different ways </p><p>I can help you:</p><ul><li><p>Security audit of your systems</p></li><li><p>Improving the security of your current systems</p></li><li><p>Designing secure systems from the ground up</p></li></ul>]]></content:encoded></item><item><title><![CDATA[Entry through the gift shop]]></title><description><![CDATA[How to not manage access.]]></description><link>https://www.secureallsoftware.com/p/entry-through-the-gift-shop</link><guid isPermaLink="false">https://www.secureallsoftware.com/p/entry-through-the-gift-shop</guid><dc:creator><![CDATA[Andreas Tiefenthaler]]></dc:creator><pubDate>Fri, 10 Nov 2023 09:04:38 GMT</pubDate><content:encoded><![CDATA[<p></p><p>Thank you for being here. Please subscribe if you&#8217;ve found your way over  but are not yet subscribed. This newsletter is living on your feedback. Please don&#8217;t hesitate to  share your feedback with me.</p><p class="button-wrapper" data-attrs="{&quot;url&quot;:&quot;https://www.secureallsoftware.com/subscribe?&quot;,&quot;text&quot;:&quot;Subscribe now&quot;,&quot;action&quot;:null,&quot;class&quot;:null}" data-component-name="ButtonCreateButton"><a class="button primary" href="https://www.secureallsoftware.com/subscribe?"><span>Subscribe now</span></a></p><h1>Links</h1><p><em>A collection  of useful tools, articles, and other security-related topics. If you have anything that you would like to have featured, please let me know.</em></p><p><strong><a href="https://github.com/synacktiv/nord-stream">nord-stream</a></strong></p><p>Allows you to extract secrets stored inside CI/CD environments by deploying <em>malicious</em> pipelines. It currently supports Azure DevOps, GitHub, and GitLab&#8212;a fun tool to have around. We need to find better ways to store secrets for pipelines these days.</p><p><strong><a href="https://github.com/TalEliyahu/awesome-security-newsletters">awesome-security-newsletters</a></strong></p><p>A great resource to stay up to date on many security topics. The field of IT Security has many facets and directions, and the list has something for everyone.</p><p><strong><a href="https://github.com/ghostsecurity/waf-btk">ghostsecurity/waf-btk</a></strong></p><p>Running a Web Application Firewall? This is a tool that helps you test your  effectiveness.</p><p><strong><a href="https://www.cncf.io/announcements/2023/10/11/cloud-native-computing-foundation-announces-cilium-graduation/">Cloud Native Computing Foundation Announces Cilium Graduation</a></strong></p><p>Cilium - an advanced Kubernetes Container Network Interface - officially graduated the CNF. The graduation highlights its evolution from a simple CNI to a complete networking, observability, and security solution that prepares platforms and organizations for the next steps on their cloud-native journey.</p><p><strong><a href="https://www.bleepingcomputer.com/news/security/over-40-000-admin-portal-accounts-use-admin-as-a-password/">Over 40K admin accounts use &#8220;admin&#8221; as a password</a></strong></p><p>While we work hard to use technology to protect everything, our biggest weaknesses are people. Let&#8217;s not forget about them and teach them how to do better. Then we can build more technology and to prevent the use of  admin as a password again.</p><p><strong><a href="https://github.com/basti-app/basti">basti-app/basti</a></strong></p><p><a href="https://github.com/basti-app/basti">Basti</a> <em>(from <a href="https://en.wikipedia.org/wiki/Bastion_host">Bastion Host</a>)</em> is a CLI tool for securely accessing your DB instances and other AWS resources in private networks at almost no cost. </p><h1>Nobody needs permanent access to  production systems.&nbsp;</h1><p>Everyone knows the famous movie scenes where the main protagonist needs to get into a nightclub. The Bouncer won&#8217;t let them in through the front door. So they easily sneak in through the side entrance conveniently left open by the staff. This pretty much reflects the state-of-the-art access control for many companies.</p><p>Very commonly, you will find that too many people have permanent access to systems that they should not. Worse, they have full administrative rights. Often there are many reasons and arguments thrown around why this is that way:</p><ul><li><p>It is required to keep the current system running. </p></li><li><p>There are many issues and problems, so requesting access is holding up progress.</p></li><li><p>All customer bug reports need to be debugged in production. </p></li><li><p>I can not get my work done otherwise and will be much slower to progress.</p></li><li><p>This is how we have been doing it (my personal favorite).</p></li></ul><p>Often people with the most access have been the longest within the company&#8212;they were an essential part of bringing the product to the company where it is now. Access was collected over the tenure and never returned. The access rights are almost a badge of honor, carried by the <strong>single</strong> person keeping everything alive.</p><p>Unfortunately, this is very risky and can lead to massive damage for the company.</p><p>What are some of the risks associated with this?</p><p>Accidental modification of environments and the resulting downtime can be disastrous. An engineer working on some infrastructure or trying something new? Setting the access config wrongly and applying the changes to the wrong environment can lead to massive damage.</p><p>Directly accessing the database and manipulating some data because of a bug to unblock a user? There is No audit logging, validations, or safety net to keep you from causing inconsistent data or worse. Data manipulation directly on live systems is like open heart surgeries&#8212;sometimes essential but always highly risky.<br>Lost credentials - especially when not detected for long - is one if not the most dangerous scenario. Any attacker can access infrastructure and data. They can install code, extract data and do much more harm. This can lead to the exodus of the whole company.<br>Similarly, employees who are - for various reasons - threatened or let go without doing proper cleanup can lead to similar outcomes.</p><p>No matter how you look at it. The risks outweigh the &#8220;benefits&#8221; by far.&nbsp;</p><p>Here are some better alternatives:</p><p>There is a <strong>process</strong> and a <strong>technology</strong>-based way to handle this issue. Both follow the same approach. An engineer requests certain access rights to a system. The grantor of the access reviews this request. This is often Teamlead or the CTO, depending on the kind of access. The request can now be approved or rejected if not necessary or too wide. Once approved, the rights will be assigned to the requester. After the work has been completed, the rights will be removed again.&nbsp;</p><p>The <strong>process</strong> implementation is fairly lightweight and works well with small teams and infrequent access. The approver/assigner usually has only the right to give access to someone else, not for their own benefit. A simple ticketing system like Jira or even a Slack thread an be sufficient. For more complex scenarios and bigger teams automation technology is better.</p><p>It is okay to choose what works best for you in the beginning. Many companies start the process first and later add the technology. With this, the team is already in the habit, and it won&#8217;t cause too much disruption.</p><p>There are some good just-in-time access providers out there. Most are fairly expensive and clunky. Building a solution that suits your needs best and grows with you using your current cloud service provider if you have an in-house DevOps and engineering team is not too difficult.</p><p><strong>Let&#8217;s reap the Benefits of Limiting Access</strong></p><p>Overall, there is less risk to the system and the company. Without permanent access, you can reduce the attack surface significantly. <br>The limitations in access will result in better logging and monitoring. Access to these systems is a lot less risky and easier to manage. Because access is more restricted, the need for proper administrative tooling is stronger. Investments into building those will pay off as the company grows and onboarding new team members.<br>Overall there is a better audit trail and compliance setup. This will make customers, auditors and investors happy and in return foster trust and can positively impact sales and revenue.<br>You will have better emergency and disaster recovery. You will start to think about how to access systems during those and how to manage them.&nbsp;</p><p>Of course, there are downsides to limiting access.</p><p>When there are no proper systems in place, you will have a harder time recovering from bugs and downtimes. Getting access and following the processes will be slower and more painful. It is a lot harder, especially in the beginning. It is very important to start as early as possible. Culture change and building the necessary tools and infrastructure will take time.&nbsp;</p><p>Another downside is for smaller, early-stage companies with small teams and early product maturity. These companies are still trying to find their business case, product-market fit, and customers. Sometimes being able to &#8220;just help a customer&#8221; might be the difference between keeping or losing them. At this stage, it might hurt you more than it helps. When is the right time to start implementing Temporary Access Control? As early as possible, as simple as possible, and adapt as you grow.</p><p><strong>Conclusion</strong></p><p>Permanent access to live systems poses significant risks, including accidental modifications, unauthorized access, and potential abuse by rogue employees. Alternatives such as role-based access control, just-in-time access, and emergency privilege escalation offer better security. Limited access provides benefits such as reduced risk, improved administrative backend and tooling, better audit logs, and emergency escalation when needed. However, limited access may slow recovery in an emergency and can be challenging for early-stage companies. In conclusion, permanent access to live systems should be avoided due to the associated risks and the availability of better practices.</p><p></p><h1><a href="https://www.occamslabs.com/">Working Together?</a></h1><p>Thank you for reading along. If you have feedback or questions, message me any time <a href="http://andy@occamslabs.com">andy@occamslabs.com</a>.  If you want to work together, here are a few different ways I can help you:</p><ul><li><p>Security audit of your systems</p></li><li><p>Improving the security of your current systems</p></li><li><p>Designing secure systems from the ground up</p></li></ul><p class="button-wrapper" data-attrs="{&quot;url&quot;:&quot;https://1awr.substack.com/?utm_source=substack&amp;utm_medium=email&amp;utm_content=share&amp;action=share&quot;,&quot;text&quot;:&quot;Share Secure All Software&quot;,&quot;action&quot;:null,&quot;class&quot;:&quot;button-wrapper&quot;}" data-component-name="ButtonCreateButton"><a class="button primary button-wrapper" href="https://1awr.substack.com/?utm_source=substack&amp;utm_medium=email&amp;utm_content=share&amp;action=share"><span>Share Secure All Software</span></a></p>]]></content:encoded></item><item><title><![CDATA[Gone Phishing]]></title><description><![CDATA[There is always a new way to phish people and cause damage. Developers and DevOps Engineers are more targeted than ever. Sometimes it comes as the wolf in the sheep skin.]]></description><link>https://www.secureallsoftware.com/p/gone-phishing</link><guid isPermaLink="false">https://www.secureallsoftware.com/p/gone-phishing</guid><dc:creator><![CDATA[Andreas Tiefenthaler]]></dc:creator><pubDate>Wed, 27 Sep 2023 23:54:01 GMT</pubDate><enclosure url="https://substackcdn.com/image/fetch/$s_!fyOh!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F9e6dc17b-96e1-4bf0-b6af-6aec69ce5325_479x488.png" length="0" type="image/jpeg"/><content:encoded><![CDATA[<div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!fyOh!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F9e6dc17b-96e1-4bf0-b6af-6aec69ce5325_479x488.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!fyOh!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F9e6dc17b-96e1-4bf0-b6af-6aec69ce5325_479x488.png 424w, https://substackcdn.com/image/fetch/$s_!fyOh!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F9e6dc17b-96e1-4bf0-b6af-6aec69ce5325_479x488.png 848w, https://substackcdn.com/image/fetch/$s_!fyOh!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F9e6dc17b-96e1-4bf0-b6af-6aec69ce5325_479x488.png 1272w, https://substackcdn.com/image/fetch/$s_!fyOh!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F9e6dc17b-96e1-4bf0-b6af-6aec69ce5325_479x488.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!fyOh!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F9e6dc17b-96e1-4bf0-b6af-6aec69ce5325_479x488.png" width="589" height="600.0668058455115" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/9e6dc17b-96e1-4bf0-b6af-6aec69ce5325_479x488.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:false,&quot;imageSize&quot;:&quot;normal&quot;,&quot;height&quot;:488,&quot;width&quot;:479,&quot;resizeWidth&quot;:589,&quot;bytes&quot;:407730,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/png&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:false,&quot;topImage&quot;:true,&quot;internalRedirect&quot;:null,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!fyOh!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F9e6dc17b-96e1-4bf0-b6af-6aec69ce5325_479x488.png 424w, https://substackcdn.com/image/fetch/$s_!fyOh!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F9e6dc17b-96e1-4bf0-b6af-6aec69ce5325_479x488.png 848w, https://substackcdn.com/image/fetch/$s_!fyOh!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F9e6dc17b-96e1-4bf0-b6af-6aec69ce5325_479x488.png 1272w, https://substackcdn.com/image/fetch/$s_!fyOh!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F9e6dc17b-96e1-4bf0-b6af-6aec69ce5325_479x488.png 1456w" sizes="100vw" fetchpriority="high"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a><figcaption class="image-caption"><a href="https://www.flickr.com/photos/38299630@N05/4909680000">Flickr</a>  <strong><a href="https://creativecommons.org/licenses/by-nc-sa/2.0/#">CC BY-NC-SA 2.0</a></strong></figcaption></figure></div><p></p><p></p><p>Thank you for being here. Please subscribe if you&#8217;ve found your way over  but are not yet subscribed.</p><p class="button-wrapper" data-attrs="{&quot;url&quot;:&quot;https://www.secureallsoftware.com/subscribe?&quot;,&quot;text&quot;:&quot;Subscribe now&quot;,&quot;action&quot;:null,&quot;class&quot;:null}" data-component-name="ButtonCreateButton"><a class="button primary" href="https://www.secureallsoftware.com/subscribe?"><span>Subscribe now</span></a></p><h1>Link-List</h1><p><strong><a href="https://www.sonatype.com/state-of-the-software-supply-chain/introduction">Software Supply Chain Attacks rise 742%</a></strong></p><p>The 8th Sonatype report on Software Supply Chain Security is an interesting read. Most vulnerabilities come through transitive dependencies. Dependencies are a big risk landscape that is slowly being improved. The attackers have almost endless opportunities to  be a step ahead. Could a vetted Open Source mirror be a solution to this?</p><p><strong><a href="https://slsa.dev/">Supply-chain Levels for Software Artifacts, or SLSA</a></strong></p><p>Brought up in a recent chat on LinkedIn again. It is a great specification on how to prevent and detect attacks. While it&#8217;s a great specification, it can get complex fast. Implementation and maintenance need some manpower. As always, with security, it comes in layers, and the work never stops.</p><p><strong><a href="https://retool.com/blog/mfa-isnt-mfa/">When MFA isn't actually MFA</a></strong></p><p>Some <a href="https://retool.com/">retool</a> employees recently got tricked into giving up their second factor to an attacker. A very well-executed phishing campaign tricked employees into clicking on a link. The attacker then would call them to continue the scam. It shows that even if you have multiple layers of protection in place, you are not 100% safe.</p><h1>Caught Developers</h1><p><em>(scroll down for a  summary)</em></p><h2>The Attack</h2><p>Phishing attacks are getting more sophisticated by the day. Their target audience is changing every day. In the past, high-profile individuals were targeted using CXO attacks.<br>These days, the scope has broadened and is targeting the whole organization.</p><p>It is not just a rushed email from your CEO with links to a website that tries to steal your login credentials or make you download malicious software.&nbsp;</p><p>Attackers are getting way more creative to target people and who they are targeting.</p><p>Very recently, I encountered an interesting approach to phish a Developer.</p><p>The Developer was doing freelance work on the side, which was nothing uncommon. They got a request on a platform to help someone with a problem in a code base. After reviewing and accepting the job, they got access to the repository with instructions on getting it going and what error they would experience.</p><p>The developer went through the Readme, cloned the repo, installed the dependencies, and ran the setup commands. Nothing out of the ordinary and a very common approach. The developer ran into an error, tried a few things to fix it, and eventually dug deeper.</p><p>That's when they discovered some obfuscated code that would run upon setup. If the developer didn&#8217;t use the latest version of the Language, they probably wouldn&#8217;t have noticed.</p><p>As they dug deeper into the codebase, they discovered it contained Malware. It would connect to a remote command and control (C2) server and upload the clipboard, browser data, and a lot more. I will go into more detail later.</p><p>The developer immediately took the machine off the network, informed the security team and changed all of their passwords. The blast radius on this was quite big. All credentials this person had access to needed to be rotated. All direct and adjacent systems must be checked for access, abnormal behavior, or anything unusual. It took the team significant time and work to cover all grounds. Which is quite normal with the complexity of things we tend to build.</p><h2>The Reveal</h2><p>The malicious actor found a very good way to target developers effectively. So effectively that they are operating at a 90% + success ratio. The attackers can make sure the code is run in the best possible environment without needing to scout. Essentially, they can write a full profile of what is required, and their victims come their way &#129327;.</p><p>There is no need for fancy zero-day exploits or relying on other weaknesses within the target system. They can even get full root access by asking for it. Everything happens voluntarily and in plain sight.</p><h2>The Shield</h2><p>How do you protect yourself, your team, and your company from this kind of attack?</p><p>Education is the most effective and best prevention. Security always starts with the people. Technology is there to assist and aid them. A person not educated in or willing to follow security principles will not be saved by tooling (for the most part). If you and your teams don&#8217;t know how to identify and spot these kinds of threats, it is hard to protect yourself.&nbsp;</p><p>How could this have been avoided?&nbsp;</p><p>First, if something happens, ensure people can bring up when they think they got targeted or even hit by an attack. Do not push them into keeping it a secret by punishing them for wrongdoing. Be kind and empathic; don&#8217;t patronize. IT Security is intimidating and scary. Most people do-not like to make mistakes. Even fewer want to have to report that they made a mistake.</p><p>Have clear policies in place. What is allowed and what is not. Is it okay to do freelance work on the side? Can they do it on their workplace computer, or is this a strict no-go? All of this depends on the company, business, the risk appetite, and the culture. There is no one-size-fits-all set of policies.</p><p>It also helps to have some (technical) guardrails in place that protect, prevent, or reduce the impact:</p><ul><li><p>Ensure no admin access to the computers without passwords</p></li><li><p>Use managed browser profiles to ensure passwords are not stored etc.</p></li><li><p>Use single sign-on wherever possible, ensure everyone is using a password manager, and the second factor is <strong>not</strong> managed in the same password manager.</p></li><li><p>Do not have permanent access to any live system, especially not with privileged accounts.</p></li><li><p>Keep any application secret in a dedicated secret store like HashiCorp Vault etc.&nbsp;</p></li><li><p>Have a good inventory of your secrets. This allows for faster rotation when required.</p></li><li><p>If possible, have some intrusion detection and mobile device management systems in place</p></li></ul><h2>The Malware</h2><p>What did the malware try to do?</p><p>In this case, it was a 3 part malware. The first part was a JavaScript script hiding in a test runner. It was obfuscated/minimized and hard to reverse engineer. From what we identified, it tried to contact a command and control server to download further instructions and invoke the second and third parts of the malware written in Python.</p><p>The second script would:</p><ul><li><p>Grab the contents of the clipboard.</p></li><li><p>Get the browser history, sessions, and stored data (form and passwords).</p></li><li><p>Look for password files, SSH keys, keyrings, and all kinds of files.</p></li></ul><p>And upload all these files to a C2 server.</p><p>The third script would establish itself within the system for later use. All 3 scripts talked to different C2 servers.</p><p>The codebase was based on an open-source tooling that was modified. Variations of this attack can be found on GitHub in plain sight.</p><h2>The TL;DR</h2><blockquote><p>A developer got tricked into cloning some code that included malware to steal credentials, crypto wallets, and more. They did the right thing to take the machine offline and inform their security team. The most important thing to prevent attacks like this to educate and teach your team, set out policies to prevent them, and put the right tooling into place to do damage control.</p></blockquote><h2></h2><p></p><h1><a href="https://www.occamslabs.com/">Working Together?</a></h1><p>Thank you for reading along. If you have feedback or questions, message me any time <a href="http://andy@occamslabs.com">andy@occamslabs.com</a>.  If you want to work together, here are a few different ways I can help you:</p><ul><li><p>Security audit of your systems</p></li><li><p>Improving the security of your current systems</p></li><li><p>Designing secure systems from the ground up</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!KFpr!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F01bc102d-6d6e-4a3e-ba67-1911b02148ac_612x407.jpeg" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!KFpr!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F01bc102d-6d6e-4a3e-ba67-1911b02148ac_612x407.jpeg 424w, https://substackcdn.com/image/fetch/$s_!KFpr!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F01bc102d-6d6e-4a3e-ba67-1911b02148ac_612x407.jpeg 848w, https://substackcdn.com/image/fetch/$s_!KFpr!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F01bc102d-6d6e-4a3e-ba67-1911b02148ac_612x407.jpeg 1272w, https://substackcdn.com/image/fetch/$s_!KFpr!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F01bc102d-6d6e-4a3e-ba67-1911b02148ac_612x407.jpeg 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!KFpr!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F01bc102d-6d6e-4a3e-ba67-1911b02148ac_612x407.jpeg" width="612" height="407" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/01bc102d-6d6e-4a3e-ba67-1911b02148ac_612x407.jpeg&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:407,&quot;width&quot;:612,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:null,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:null,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:null,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!KFpr!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F01bc102d-6d6e-4a3e-ba67-1911b02148ac_612x407.jpeg 424w, https://substackcdn.com/image/fetch/$s_!KFpr!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F01bc102d-6d6e-4a3e-ba67-1911b02148ac_612x407.jpeg 848w, https://substackcdn.com/image/fetch/$s_!KFpr!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F01bc102d-6d6e-4a3e-ba67-1911b02148ac_612x407.jpeg 1272w, https://substackcdn.com/image/fetch/$s_!KFpr!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F01bc102d-6d6e-4a3e-ba67-1911b02148ac_612x407.jpeg 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div></li></ul><p class="button-wrapper" data-attrs="{&quot;url&quot;:&quot;https://1awr.substack.com/?utm_source=substack&amp;utm_medium=email&amp;utm_content=share&amp;action=share&quot;,&quot;text&quot;:&quot;Share Secure All Software&quot;,&quot;action&quot;:null,&quot;class&quot;:&quot;button-wrapper&quot;}" data-component-name="ButtonCreateButton"><a class="button primary button-wrapper" href="https://1awr.substack.com/?utm_source=substack&amp;utm_medium=email&amp;utm_content=share&amp;action=share"><span>Share Secure All Software</span></a></p>]]></content:encoded></item><item><title><![CDATA[You are doing it wrong! Kubernetes Image Tags ]]></title><description><![CDATA[9 out of 10 deployments are doing it wrong, can you guess why?]]></description><link>https://www.secureallsoftware.com/p/you-are-doing-it-wrong-kubernetes</link><guid isPermaLink="false">https://www.secureallsoftware.com/p/you-are-doing-it-wrong-kubernetes</guid><dc:creator><![CDATA[Andreas Tiefenthaler]]></dc:creator><pubDate>Fri, 15 Sep 2023 04:21:19 GMT</pubDate><enclosure url="https://substackcdn.com/image/fetch/$s_!GVeo!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F610eaa9d-79df-44b2-a416-a9e43b633bd9_1400x800.png" length="0" type="image/jpeg"/><content:encoded><![CDATA[<div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!GVeo!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F610eaa9d-79df-44b2-a416-a9e43b633bd9_1400x800.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!GVeo!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F610eaa9d-79df-44b2-a416-a9e43b633bd9_1400x800.png 424w, https://substackcdn.com/image/fetch/$s_!GVeo!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F610eaa9d-79df-44b2-a416-a9e43b633bd9_1400x800.png 848w, https://substackcdn.com/image/fetch/$s_!GVeo!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F610eaa9d-79df-44b2-a416-a9e43b633bd9_1400x800.png 1272w, https://substackcdn.com/image/fetch/$s_!GVeo!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F610eaa9d-79df-44b2-a416-a9e43b633bd9_1400x800.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!GVeo!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F610eaa9d-79df-44b2-a416-a9e43b633bd9_1400x800.png" width="1400" height="800" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/610eaa9d-79df-44b2-a416-a9e43b633bd9_1400x800.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:800,&quot;width&quot;:1400,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:389889,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/png&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:false,&quot;topImage&quot;:true,&quot;internalRedirect&quot;:null,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!GVeo!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F610eaa9d-79df-44b2-a416-a9e43b633bd9_1400x800.png 424w, https://substackcdn.com/image/fetch/$s_!GVeo!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F610eaa9d-79df-44b2-a416-a9e43b633bd9_1400x800.png 848w, https://substackcdn.com/image/fetch/$s_!GVeo!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F610eaa9d-79df-44b2-a416-a9e43b633bd9_1400x800.png 1272w, https://substackcdn.com/image/fetch/$s_!GVeo!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F610eaa9d-79df-44b2-a416-a9e43b633bd9_1400x800.png 1456w" sizes="100vw" fetchpriority="high"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><p></p><p>Thank you for being here. Please subscribe if you&#8217;ve found your way over by some miracle but are not yet subscribed.</p><p class="button-wrapper" data-attrs="{&quot;url&quot;:&quot;https://www.secureallsoftware.com/subscribe?&quot;,&quot;text&quot;:&quot;Subscribe now&quot;,&quot;action&quot;:null,&quot;class&quot;:null}" data-component-name="ButtonCreateButton"><a class="button primary" href="https://www.secureallsoftware.com/subscribe?"><span>Subscribe now</span></a></p><h1>Link-List</h1><p><strong><a href="https://mystic0x1.github.io/posts/methods-to-backdoor-an-aws-account/">Methods to Backdoor an AWS Account</a></strong></p><p>Six methods to get a backdoor into your cloud environment. From the most obvious way of having a pair of access keys and secrets to a more sophisticated approach of hiding the backdoor in the EC2 metadata service.</p><p><strong><a href="https://dev.to/madmaxx/building-docker-images-smaller-rootless-and-non-shell-for-kubernetes-hkb">Building Smaller Rootless Non-Shell Docker Images</a></strong></p><p>We are all building containers all the time. Mostly, we are focused on getting the applications running to enable business for the company. Too often, we don&#8217;t try to build the smallest, most secure image possible. </p><p><strong><a href="https://www.paloaltonetworks.com/blog/prisma-cloud/unpinnable-actions-github-security/">How Malicious Code Can Sneak into Your GitHub Actions Workflows</a></strong></p><p>Tags are a double-edged sword. While very useful for communicating between humans, they allow for hiding bad intentions after you think you have done your due diligence.</p><h1>You are using the latest tag!</h1><p><em>(scroll down for a 5-sentence summary)</em></p><p>You are using the <code>latest</code> tag. We have all been there, and this is the most convenient way. There is no need to update anything. Just restart the pod. Building and pushing the image is also a breeze, with absolutely zero logic needed. This might be okay for a continuously rolled-out development cluster. You shouldn&#8217;t use this anywhere else, though. How do you know exactly what is deployed at the moment? How do you do a rollback? Essentially, you are not in control; you pull whatever is there at any time. There is a time and a place for using this, and your deployments aren&#8217;t one of them. Good luck, you will need it.</p><p>So, you are using image tags like <code>v1.2.3.</code> This is great for humans to know what we are talking about. And it is better than using the latest tag. But it's still wrong. Tags are mere bookmarks of changes at a certain point in time. Anyone with access can move around them, and they are not immutable. With proper tags, you can have better conversations about deployment issues. You can do more efficient rollbacks for most parts. You still can not trust that what you are deploying right now is the same as when you deployed it the first time. This is a big risk, especially for third-party services.</p><p><em>What is the correct way to deploy container images in Kubernetes?</em></p><p>You have to use the SHA256 of the images for enhanced security and accuracy. The latest tags, or any other tag, are mutable. They are a bookmark to a certain SHA256. The only way to be certain about what you are deploying is by using the cryptographic hash. The SHA256 is the cryptographic digest of the image with all layers included.&nbsp;</p><p>Bonus points if the image is signed by <a href="https://docs.docker.com/engine/security/trust/">docker content trust</a> or <a href="https://docs.sigstore.dev/signing/quickstart/">cosign</a>.</p><p>The easiest way to get the hash of any image:&nbsp;</p><p><code>docker inspect --format='{{index .RepoDigests 0}}' $IMAGE</code></p><p>Should you use the hashes also for deployments of third-party services? This is particularly important. You don&#8217;t control the third-party repository, and you want to maximize the control you have. Changing the deployed version to the deployed hash will give you confidence.</p><h2>Summary</h2><blockquote><p>When doing Kubernetes image deployments, using tags like "latest" or version numbers such as "v1.2.3" can pose problems related to version control and security. To address this, consider using the SHA256 hash of images for deployment. This method ensures immutability and accuracy, and I recommend signing images using tools like Docker Content Trust or Cosign to enhance security. This approach is especially valuable when dealing with third-party services, granting you better control and confidence in your Kubernetes deployments.</p></blockquote><p></p><h1><a href="https://www.occamslabs.com/">Working Together?</a></h1><p>Thank you for reading along. If you have feedback or questions, message me any time <a href="http://andy@occamslabs.com">andy@occamslabs.com</a>.  If you want to work together, here are a few different ways I can help you:</p><ul><li><p>Security audit of your systems</p></li><li><p>Improving the security of your current systems</p></li><li><p>Designing secure systems from the ground up</p><p></p></li></ul><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!5a4H!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F2db98c24-8a3b-488b-8abb-7f22c2bb9bbc_577x432.jpeg" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!5a4H!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F2db98c24-8a3b-488b-8abb-7f22c2bb9bbc_577x432.jpeg 424w, https://substackcdn.com/image/fetch/$s_!5a4H!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F2db98c24-8a3b-488b-8abb-7f22c2bb9bbc_577x432.jpeg 848w, https://substackcdn.com/image/fetch/$s_!5a4H!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F2db98c24-8a3b-488b-8abb-7f22c2bb9bbc_577x432.jpeg 1272w, https://substackcdn.com/image/fetch/$s_!5a4H!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F2db98c24-8a3b-488b-8abb-7f22c2bb9bbc_577x432.jpeg 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!5a4H!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F2db98c24-8a3b-488b-8abb-7f22c2bb9bbc_577x432.jpeg" width="577" height="432" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/2db98c24-8a3b-488b-8abb-7f22c2bb9bbc_577x432.jpeg&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:432,&quot;width&quot;:577,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:null,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:null,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:null,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!5a4H!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F2db98c24-8a3b-488b-8abb-7f22c2bb9bbc_577x432.jpeg 424w, https://substackcdn.com/image/fetch/$s_!5a4H!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F2db98c24-8a3b-488b-8abb-7f22c2bb9bbc_577x432.jpeg 848w, https://substackcdn.com/image/fetch/$s_!5a4H!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F2db98c24-8a3b-488b-8abb-7f22c2bb9bbc_577x432.jpeg 1272w, https://substackcdn.com/image/fetch/$s_!5a4H!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F2db98c24-8a3b-488b-8abb-7f22c2bb9bbc_577x432.jpeg 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><p class="button-wrapper" data-attrs="{&quot;url&quot;:&quot;https://1awr.substack.com/?utm_source=substack&amp;utm_medium=email&amp;utm_content=share&amp;action=share&quot;,&quot;text&quot;:&quot;Share Secure All Software&quot;,&quot;action&quot;:null,&quot;class&quot;:&quot;button-wrapper&quot;}" data-component-name="ButtonCreateButton"><a class="button primary button-wrapper" href="https://1awr.substack.com/?utm_source=substack&amp;utm_medium=email&amp;utm_content=share&amp;action=share"><span>Share Secure All Software</span></a></p>]]></content:encoded></item><item><title><![CDATA[Kubernetes Fort Knox ]]></title><description><![CDATA[Your Arsenal Against Modern Cyber Threats]]></description><link>https://www.secureallsoftware.com/p/kubernetes-fort-knox</link><guid isPermaLink="false">https://www.secureallsoftware.com/p/kubernetes-fort-knox</guid><dc:creator><![CDATA[Andreas Tiefenthaler]]></dc:creator><pubDate>Fri, 01 Sep 2023 02:24:19 GMT</pubDate><enclosure url="https://substackcdn.com/image/fetch/$s_!ZBge!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1ee30310-ca50-450d-b2fa-20330c3870a4_1400x800.png" length="0" type="image/jpeg"/><content:encoded><![CDATA[<div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!ZBge!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1ee30310-ca50-450d-b2fa-20330c3870a4_1400x800.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!ZBge!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1ee30310-ca50-450d-b2fa-20330c3870a4_1400x800.png 424w, https://substackcdn.com/image/fetch/$s_!ZBge!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1ee30310-ca50-450d-b2fa-20330c3870a4_1400x800.png 848w, https://substackcdn.com/image/fetch/$s_!ZBge!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1ee30310-ca50-450d-b2fa-20330c3870a4_1400x800.png 1272w, https://substackcdn.com/image/fetch/$s_!ZBge!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1ee30310-ca50-450d-b2fa-20330c3870a4_1400x800.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!ZBge!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1ee30310-ca50-450d-b2fa-20330c3870a4_1400x800.png" width="728" height="416" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/1ee30310-ca50-450d-b2fa-20330c3870a4_1400x800.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:false,&quot;imageSize&quot;:&quot;normal&quot;,&quot;height&quot;:800,&quot;width&quot;:1400,&quot;resizeWidth&quot;:728,&quot;bytes&quot;:1327368,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/png&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:false,&quot;topImage&quot;:true,&quot;internalRedirect&quot;:null,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!ZBge!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1ee30310-ca50-450d-b2fa-20330c3870a4_1400x800.png 424w, https://substackcdn.com/image/fetch/$s_!ZBge!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1ee30310-ca50-450d-b2fa-20330c3870a4_1400x800.png 848w, https://substackcdn.com/image/fetch/$s_!ZBge!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1ee30310-ca50-450d-b2fa-20330c3870a4_1400x800.png 1272w, https://substackcdn.com/image/fetch/$s_!ZBge!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1ee30310-ca50-450d-b2fa-20330c3870a4_1400x800.png 1456w" sizes="100vw" fetchpriority="high"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><p>Thank you for being here. If you&#8217;ve found your way over by some miracle but are not yet subscribed, please subscribe.</p><p class="button-wrapper" data-attrs="{&quot;url&quot;:&quot;https://www.secureallsoftware.com/subscribe?&quot;,&quot;text&quot;:&quot;Subscribe now&quot;,&quot;action&quot;:null,&quot;class&quot;:null}" data-component-name="ButtonCreateButton"><a class="button primary" href="https://www.secureallsoftware.com/subscribe?"><span>Subscribe now</span></a></p><h1>Links</h1><h2><a href="https://ksoc.com/blog/kubernetes-security-ultimate-checklist">Kubernetes Security Ultimate Checklist: Cloud Native Security Basics Part VI</a></h2><p>This blog post provides a good overview checklist of security best practices for Kubernetes. It covers many topics: authentication, authorization, networking, secrets management, and auditing.</p><h2><a href="https://www.slideshare.net/wickett/the-emergent-cloud-security-toolchain-for-cicd">The Emergent Cloud Security Toolchain for CI/CD</a></h2><p>I recently found this talk by <a href="https://twitter.com/wickett">James Wickett</a> again in some notes. Although it is from 2018, most of it holds up very well. The principle of making security part of your toolchain in every step still hasn&#8217;t seen the wide adoption I was hoping for.</p><h2><a href="https://semgrep.dev/blog/2023/the-difference-between-sca-and-supply-chain-security/">The Difference Between SCA and Supply Chain Security</a></h2><p>Software Composition Analysis (SCA) identifies and assesses the security risks of third-party components used in software. Supply Chain Security (SCS) is a broader concept encompassing all aspects of securing the software supply chain, from development to deployment. A great article by the fantastic <a href="https://twitter.com/shehackspurple">Tanya Janca</a>.</p><p></p><h2><a href="https://medium.com/csima/personal-privacy-security-for-cisos-4a4b97255e7d">Personal Privacy &amp; Security for CISOs</a></h2><p>This one is a bit out of the usual kind of links I share. However I felt important to put the spotlight on personal security. This is not only relevant for CISOs, but also for anyone working online. </p><p class="button-wrapper" data-attrs="{&quot;url&quot;:&quot;https://www.secureallsoftware.com/p/kubernetes-fort-knox?utm_source=substack&utm_medium=email&utm_content=share&action=share&quot;,&quot;text&quot;:&quot;Share&quot;,&quot;action&quot;:null,&quot;class&quot;:&quot;button-wrapper&quot;}" data-component-name="ButtonCreateButton"><a class="button primary button-wrapper" href="https://www.secureallsoftware.com/p/kubernetes-fort-knox?utm_source=substack&utm_medium=email&utm_content=share&action=share"><span>Share</span></a></p><h1>How to Secure K8s without a cruft of tools?</h1><h3>Authentication and Authorization</h3><p>In the world of Kubernetes, authentication and authorization form the cornerstone of security. Authentication verifies the identities of users and components, while authorization determines their level of access.</p><p><em>Authentication Mechanisms</em></p><p>Exploring authentication mechanisms such as client certificates and service accounts is vital. These mechanisms establish trust and ensure only authorized entities interact with your cluster.</p><p><em>Role-Based Access Control (RBAC)</em></p><p>RBAC allows you to define fine-grained access policies. Learn how to assign roles and permissions to users and services, mitigating the risk of unauthorized actions.</p><h3>Network Policies</h3><p>Kubernetes network policies offer a powerful way to control traffic flow between pods and nodes. By implementing proper network policies, you can curtail unnecessary communication and enhance the security of your clusters.</p><h3>Image Security</h3><p>Securing container images is non-negotiable. Learn why using trusted, signed images is essential and how image scanning tools can help you identify vulnerabilities before deployment.</p><h2><strong>Best Practices for Kubernetes Security</strong></h2><h3>Secure Cluster Setup</h3><p>A solid security foundation begins with a secure cluster setup. We'll guide you through configuring your Kubernetes securely to prevent initial vulnerabilities. Making the control pane private is a very important first step. Kubernetes APIs and etcd should never be publicly exposed to the internet.  They should be in a private network only accessible using a VPN.</p><h3>Node Security</h3><p>Your worker nodes are the heart of your cluster. Ensure regular updates to minimize attack surfaces and leverage tools like kube-bench. The nodes should not be directly exposed to the internet, each application is made available through a load balancer to hide the IP addresses of the nodes. Ideally, all traffic is encrypted using TLS/HTTPS.</p><p>Use minimal operating systems. It is even better if the file system is read-only as much as possible to reduce potential malware installed. Implement Node Hardening and further reduce any attack surface. This is extra important when managing and operating your kubernetes worker nodes. Regularly update the operation systems and rotate old nodes.</p><h3>Pod Security</h3><p>Each pod has its own security context. Use security policies to ensure containers run with the right permissions and restrictions.</p><p>Avoid running as a root user or any other highly privileged user. Ensure any secrets used by the pods are limited in scope and impact. Avoid hardcoding sensitive information like passwords and API tokens directly in your pod configurations. Instead, use Kubernetes Secrets to store and manage such information securely.</p><p>Configure your pods to use read-only filesystems whenever possible. This prevents potential attackers from modifying container files, which can help mitigate certain security breaches. Resource limits and requests can prevent resource exhaustion and abuse. Define appropriate resource limits for your containers to avoid consuming excessive CPU, memory, or other resources.</p><p>Network policies control communication between pods and are instrumental in segmenting your application. By allowing only necessary communication and denying the rest, you reduce the attack surface and limit the lateral movement of threats. Configure your pods to use read-only filesystems whenever possible. This prevents potential attackers from modifying container files, which can help mitigate certain security breaches.</p><h3>Secure Communication</h3><p>Encrypted communication is crucial outside and within your cluster. Using TLS for communication between your services, nodes, and external partners is as important as ensuring secure communication from the outside in. Most Cloud Service Providers offer certificate services that can be used with kubernetes. Another free option is using <a href="https://letsencrypt.org/">Let's Encrypt</a> with Certmanager.</p><p>Not only your workloads and users should be using secure communication. Also, your interactions with your cluster control pane must be secured anytime. Try to aim for 100% encryption in transit.</p><h3>Monitoring and Auditing</h3><p>Monitoring can be its own pandora&#8217;s box. Choose a system that works for you, can store data longer than 30 days, and has the ability to generate alerts based on logs. Define some key metrics that are the baseline. Then, define alerts that are outside of regular operations. For security monitoring, we are interested in error rates and abnormalities. Part of your monitoring should include logging. Building metrics based on logs gives you correlation superpowers.</p><p>Audit logging must be enabled for any Kubernetes System; most Cloud Providers have it tied up with their own in-house built logging solution. This is sometimes extra to your current logging stack and can be an issue. Your applications should also have audit logs, that clearly document who is doing what and where. All of these audit logs must be stored securely and tamperproof away from the rest of the systems.</p><p>Need help? Let&#8217;s talk: <a href="mailto:andy@occamslabs.com">andy@occamslabs.com</a>.</p><p></p><p class="button-wrapper" data-attrs="{&quot;url&quot;:&quot;https://www.secureallsoftware.com/p/kubernetes-fort-knox?utm_source=substack&utm_medium=email&utm_content=share&action=share&quot;,&quot;text&quot;:&quot;Share&quot;,&quot;action&quot;:null,&quot;class&quot;:null}" data-component-name="ButtonCreateButton"><a class="button primary" href="https://www.secureallsoftware.com/p/kubernetes-fort-knox?utm_source=substack&utm_medium=email&utm_content=share&action=share"><span>Share</span></a></p><h1>Thank you</h1><p>Thank you for reading along. If you have feedback or questions, message me <a href="http://andy@occamslabs.com">andy@occamslabs.com</a>.  I would appreciate it if you shared it with people that can benefit from the newsletter. </p><p class="button-wrapper" data-attrs="{&quot;url&quot;:&quot;https://www.secureallsoftware.com/subscribe?&quot;,&quot;text&quot;:&quot;Subscribe now&quot;,&quot;action&quot;:null,&quot;class&quot;:null}" data-component-name="ButtonCreateButton"><a class="button primary" href="https://www.secureallsoftware.com/subscribe?"><span>Subscribe now</span></a></p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!WsXi!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa695192e-3c22-4bdc-8c72-e60902437eb9_750x500.jpeg" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!WsXi!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa695192e-3c22-4bdc-8c72-e60902437eb9_750x500.jpeg 424w, https://substackcdn.com/image/fetch/$s_!WsXi!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa695192e-3c22-4bdc-8c72-e60902437eb9_750x500.jpeg 848w, https://substackcdn.com/image/fetch/$s_!WsXi!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa695192e-3c22-4bdc-8c72-e60902437eb9_750x500.jpeg 1272w, https://substackcdn.com/image/fetch/$s_!WsXi!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa695192e-3c22-4bdc-8c72-e60902437eb9_750x500.jpeg 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!WsXi!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa695192e-3c22-4bdc-8c72-e60902437eb9_750x500.jpeg" width="750" height="500" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/a695192e-3c22-4bdc-8c72-e60902437eb9_750x500.jpeg&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:500,&quot;width&quot;:750,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:null,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:null,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:null,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!WsXi!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa695192e-3c22-4bdc-8c72-e60902437eb9_750x500.jpeg 424w, https://substackcdn.com/image/fetch/$s_!WsXi!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa695192e-3c22-4bdc-8c72-e60902437eb9_750x500.jpeg 848w, https://substackcdn.com/image/fetch/$s_!WsXi!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa695192e-3c22-4bdc-8c72-e60902437eb9_750x500.jpeg 1272w, https://substackcdn.com/image/fetch/$s_!WsXi!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa695192e-3c22-4bdc-8c72-e60902437eb9_750x500.jpeg 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><p class="button-wrapper" data-attrs="{&quot;url&quot;:&quot;https://1awr.substack.com/?utm_source=substack&amp;utm_medium=email&amp;utm_content=share&amp;action=share&quot;,&quot;text&quot;:&quot;Share Secure All Software&quot;,&quot;action&quot;:null,&quot;class&quot;:&quot;button-wrapper&quot;}" data-component-name="ButtonCreateButton"><a class="button primary button-wrapper" href="https://1awr.substack.com/?utm_source=substack&amp;utm_medium=email&amp;utm_content=share&amp;action=share"><span>Share Secure All Software</span></a></p>]]></content:encoded></item><item><title><![CDATA[Securing Kubernetes Workloads]]></title><description><![CDATA[Thank you for being here.]]></description><link>https://www.secureallsoftware.com/p/securing-kubernetes-workloads</link><guid isPermaLink="false">https://www.secureallsoftware.com/p/securing-kubernetes-workloads</guid><pubDate>Fri, 11 Aug 2023 03:13:45 GMT</pubDate><enclosure url="https://substackcdn.com/image/fetch/$s_!VRxK!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F3cf57072-988a-4549-b66d-a6b1cba0867f_2400x1350.png" length="0" type="image/jpeg"/><content:encoded><![CDATA[<div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!VRxK!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F3cf57072-988a-4549-b66d-a6b1cba0867f_2400x1350.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!VRxK!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F3cf57072-988a-4549-b66d-a6b1cba0867f_2400x1350.png 424w, https://substackcdn.com/image/fetch/$s_!VRxK!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F3cf57072-988a-4549-b66d-a6b1cba0867f_2400x1350.png 848w, https://substackcdn.com/image/fetch/$s_!VRxK!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F3cf57072-988a-4549-b66d-a6b1cba0867f_2400x1350.png 1272w, https://substackcdn.com/image/fetch/$s_!VRxK!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F3cf57072-988a-4549-b66d-a6b1cba0867f_2400x1350.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!VRxK!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F3cf57072-988a-4549-b66d-a6b1cba0867f_2400x1350.png" width="1456" height="819" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/3cf57072-988a-4549-b66d-a6b1cba0867f_2400x1350.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:819,&quot;width&quot;:1456,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:2699855,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/png&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:false,&quot;topImage&quot;:true,&quot;internalRedirect&quot;:null,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!VRxK!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F3cf57072-988a-4549-b66d-a6b1cba0867f_2400x1350.png 424w, https://substackcdn.com/image/fetch/$s_!VRxK!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F3cf57072-988a-4549-b66d-a6b1cba0867f_2400x1350.png 848w, https://substackcdn.com/image/fetch/$s_!VRxK!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F3cf57072-988a-4549-b66d-a6b1cba0867f_2400x1350.png 1272w, https://substackcdn.com/image/fetch/$s_!VRxK!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F3cf57072-988a-4549-b66d-a6b1cba0867f_2400x1350.png 1456w" sizes="100vw" fetchpriority="high"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><p>Thank you for being here. If you&#8217;ve found your way over by some miracle but are not yet subscribed, let me help you with that.</p><p></p><p class="button-wrapper" data-attrs="{&quot;url&quot;:&quot;https://www.secureallsoftware.com/subscribe?&quot;,&quot;text&quot;:&quot;Subscribe now&quot;,&quot;action&quot;:null,&quot;class&quot;:null}" data-component-name="ButtonCreateButton"><a class="button primary" href="https://www.secureallsoftware.com/subscribe?"><span>Subscribe now</span></a></p><h1>Kubernetes and the Supply Chain&nbsp;</h1><p>Running your workloads on Kubernetes(k8s) is becoming a de facto standard for many companies building software. The usual steps involve building software, running tests, building a container, hopefully doing some security scanning in the process, pushing to the registry, and deploying.</p><p>In general, there are two different risks with k8s images deployed:</p><ul><li><p>Vulnerabilities in Operating System packages and the software packages</p></li><li><p>Tampered or deliberately deployed images.</p></li></ul><p>Many of the workloads running on your cluster didn&#8217;t pass through your security tooling in your CI/CD pipelines. Tools directly installed using helm with publicly available container images.</p><p>These usually have a high degree of vulnerabilities that are hidden away from you.</p><p>Also, software that is not deployed all the time can amass vulnerabilities over time. While code doesn&#8217;t change, people keep finding vulnerabilities in existing software.</p><p>There are four stages of kubernetes supply chain security:</p><ol><li><p>CI/CD: scan your images and dependencies</p></li><li><p>Container registry scanning</p></li><li><p>Workload scanning while running and deployed in the cluster</p></li><li><p>Admission control only allows images based on an allow list and valid signatures.&nbsp;</p></li></ol><p><strong>CI/CD image scanning</strong></p><p>Tools like <a href="https://trivy.dev/">Trivy</a> can detect vulnerabilities in the container image. Next to the operating system issues, it can also detect problems with installed libraries of your software and secrets might have accidentally been added.</p><p>This will catch issues at the time of the build and prevent potentially shipping new vulnerabilities.</p><p><strong>Container registry scanning</strong></p><p>Registries like the ones offered by Google and AWS have the ability to scan existing images. This can make sense, but it usually is a dump yard that many people never look into.</p><p>If set up properly with alerting this can be useful. However, in my experience these are not on the radar of many teams.</p><p><strong>Workload Scanning&nbsp;</strong></p><p>Scanning and alerting on your currently running images helps you understand your current problems. It also catches container images that did not pass through your regular CI/CD pipelines or your registry.</p><p>Tools like <a href="https://github.com/aquasecurity/trivy-operator">Trivy operator</a> and <a href="https://quay.github.io/clair/">Clair</a> can support this. They are regularly scanning your running containers and will emit alerts for you. This adds extra load to your system but allows for the most accurate representation of vulnerabilities in your clusters.</p><p><strong>Admission control</strong></p><p>By controlling what can run on your cluster, you enhance an extra level of security.</p><p>Having an allowed list of images will reduce attack vectors by quite a bit. If, on top if this, you verify the signatures of the images you will get even more peace of mind. <a href="https://docs.docker.com/engine/security/trust/">Docker Content Trust </a>and <a href="https://docs.sigstore.dev/cosign/overview/">Cosign</a> by sigstore are currently the best supported.&nbsp;</p><p>What do you think? Let me know at <a href="mailto:andy@occamslabs.com">andy@occamslabs.com</a>.</p><p></p><p class="button-wrapper" data-attrs="{&quot;url&quot;:&quot;https://www.secureallsoftware.com/p/securing-kubernetes-workloads?utm_source=substack&utm_medium=email&utm_content=share&action=share&quot;,&quot;text&quot;:&quot;Share&quot;,&quot;action&quot;:null,&quot;class&quot;:null}" data-component-name="ButtonCreateButton"><a class="button primary" href="https://www.secureallsoftware.com/p/securing-kubernetes-workloads?utm_source=substack&utm_medium=email&utm_content=share&action=share"><span>Share</span></a></p><h1>Links</h1><h3><a href="https://ermetic.com/blog/cloud/cnappgoat-multicloud-open-source-tool-for-deploying-vulnerable-by-design-cloud-resources/">CNAPPGoat: </a><strong><a href="https://ermetic.com/blog/cloud/cnappgoat-multicloud-open-source-tool-for-deploying-vulnerable-by-design-cloud-resources/">The Multicloud Open-Source Tool for Deploying Vulnerable-by-Design Cloud Resources</a></strong></h3><p>A multi-level approach to get a better understanding of cloud security issues. It is also useful for testing your security tooling to spot various misconfigurations. </p><h3><a href="https://github.com/avolens/kubefuzz">kubefuzz - admission controller fuzzing</a></h3><p>Kubefuzz is a generative and mutative fuzzer for kubernetes admission controller chains. It can be used to uncover unexpected behavior in complex admission controller setups.</p><h3><a href="https://www.darkreading.com/dr-tech/6-best-practices-to-ensure-kubernetes-security-meets-compliance-regulations">6 Best Practices to Ensure Kubernetes Security Meets Compliance Regulations</a></h3><p>Security must be precise enough to meet compliance requirements without impeding DevOps and developer productivity. A fairly high level overview of some useful practices.</p><h3><a href="https://github.com/appvia/krane">Krane - Kubernetes RBAC Analysis made Easy</a></h3><p><em>Krane</em> is a simple Kubernetes RBAC static analysis tool. It identifies potential security risks in K8s RBAC design and makes suggestions on how to mitigate them. <em>Krane</em> dashboard presents current RBAC security posture and lets you navigate through its definition</p><p>.</p><h1>Thank you</h1><p>Thank you for reading along. If you have feedback or questions, message me: <a href="http://andy@occamslabs.com">andy@occamslabs.com</a>.  I would appreciate it if you shared it with people that can benefit from the newsletter. </p><p class="button-wrapper" data-attrs="{&quot;url&quot;:&quot;https://www.secureallsoftware.com/subscribe?&quot;,&quot;text&quot;:&quot;Subscribe now&quot;,&quot;action&quot;:null,&quot;class&quot;:null}" data-component-name="ButtonCreateButton"><a class="button primary" href="https://www.secureallsoftware.com/subscribe?"><span>Subscribe now</span></a></p><p class="button-wrapper" data-attrs="{&quot;url&quot;:&quot;https://1awr.substack.com/?utm_source=substack&amp;utm_medium=email&amp;utm_content=share&amp;action=share&quot;,&quot;text&quot;:&quot;Share Secure All Software&quot;,&quot;action&quot;:null,&quot;class&quot;:&quot;button-wrapper&quot;}" data-component-name="ButtonCreateButton"><a class="button primary button-wrapper" href="https://1awr.substack.com/?utm_source=substack&amp;utm_medium=email&amp;utm_content=share&amp;action=share"><span>Share Secure All Software</span></a></p>]]></content:encoded></item><item><title><![CDATA[Vulnerability vs. Supply Chain Attack ]]></title><description><![CDATA[Supply chain attacks are in all news (at least in mine). These kind of attacks happen in plain sight and use available infrastructure to do harm.]]></description><link>https://www.secureallsoftware.com/p/vulnerability-vs-supply-chain-attack</link><guid isPermaLink="false">https://www.secureallsoftware.com/p/vulnerability-vs-supply-chain-attack</guid><dc:creator><![CDATA[Andreas Tiefenthaler]]></dc:creator><pubDate>Fri, 04 Aug 2023 07:24:03 GMT</pubDate><enclosure url="https://substack-post-media.s3.amazonaws.com/public/images/11c8dc03-e4b6-458b-8655-ac1099997b99_1100x220.png" length="0" type="image/jpeg"/><content:encoded><![CDATA[<p>Thank you for being here. If you&#8217;ve found your way over by some miracle but are not yet subscribed, let me help you with that</p><p></p><p class="button-wrapper" data-attrs="{&quot;url&quot;:&quot;https://www.secureallsoftware.com/subscribe?&quot;,&quot;text&quot;:&quot;Subscribe now&quot;,&quot;action&quot;:null,&quot;class&quot;:null}" data-component-name="ButtonCreateButton"><a class="button primary" href="https://www.secureallsoftware.com/subscribe?"><span>Subscribe now</span></a></p><h1>Vulnerability vs. Supply Chain Attack </h1><p>What is the difference between them?</p><p>A <strong>vulnerability</strong> is usually an unintended software bug that opens an attack angle for a malicious actor. The good thing about an open-source project is, that the bigger the project, the more eyes are on it. The more likely these vulnerabilities will surface and be fixed fast. In smaller or dormant projects, this is usually not the case.</p><p>A supply <strong>chain attack</strong> is a deliberately created attack against a language ecosystem or certain users.&nbsp;</p><p>Recently, very targeted attacks have been seen against the fintech sector.&nbsp;</p><p>The attackers would use various different techniques to spread the malicious code. From simple typo squatting - where you publish a new package with a common spelling mistake - to sophisticated attacks - where social media profiles are created to build trust with the community and victims - the range is wide.&nbsp;</p><p><strong>How can you protect your applications from either?</strong></p><p>As discussed last week, lockfiles are an essential part of detecting attacks. There is more that can be done. A variety of open-source and commercial projects review the required dependencies. Then they compare the versions with various data sources to identify if you have a vulnerability in your dependencies.</p><p>Make these tools part of your workflow. Add them:</p><ul><li><p>your Local development</p></li><li><p>the CI/CD pipelines for every merge request,</p></li><li><p>running in your live systems to detect new vulnerabilities that are actively in use.</p></li></ul><p>These exact tools also help you identify known vulnerabilities in your dependencies. </p><p>The moment you enable tools like this, the chance is high to get a lot of findings as a result. </p><p></p><p><strong>How to triage vulnerable dependencies</strong></p><p>Scanning for vulnerabilities can lead to many results. How to tame the findings and get actionable?</p><p>Step one:</p><ul><li><p>Filter all findings by the highest severity&nbsp;</p></li><li><p>Review each finding with the questions in step two</p></li></ul><p>Step two, review each finding:</p><ul><li><p>What is the potential impact</p></li><li><p>Can it be used by external attackers?</p></li><li><p>How complicated is it to be executed?</p></li><li><p>Is the code in use? (not easy sometimes)</p></li></ul><p>Step 3:</p><ul><li><p>Include the version that is secure</p></li><li><p>Reduce the severity of the finding if needed.</p></li><li><p>Add an expectation until when this should be fixed (internal SLA)</p></li><li><p>Create a ticket with severity and questions/answers of the assessment</p></li></ul><p>What do you think? Let me know at <a href="mailto:andy@occamslabs.com">andy@occamslabs.com</a>.</p><p></p><p class="button-wrapper" data-attrs="{&quot;url&quot;:&quot;https://www.secureallsoftware.com/p/vulnerability-vs-supply-chain-attack?utm_source=substack&utm_medium=email&utm_content=share&action=share&quot;,&quot;text&quot;:&quot;Share&quot;,&quot;action&quot;:null,&quot;class&quot;:null}" data-component-name="ButtonCreateButton"><a class="button primary" href="https://www.secureallsoftware.com/p/vulnerability-vs-supply-chain-attack?utm_source=substack&utm_medium=email&utm_content=share&action=share"><span>Share</span></a></p><h1>LinkDump</h1><h3>Building a Detection-as-Code pipeline (<a href="https://medium.com/threatpunter/from-soup-to-nuts-building-a-detection-as-code-pipeline-28945015fc38">part one,</a> <a href="https://medium.com/threatpunter/from-soup-to-nuts-building-a-detection-as-code-pipeline-59b96c875ca1">part two</a>)</h3><p>A two-part (<a href="https://medium.com/threatpunter/from-soup-to-nuts-building-a-detection-as-code-pipeline-28945015fc38">part one,</a> <a href="https://medium.com/threatpunter/from-soup-to-nuts-building-a-detection-as-code-pipeline-59b96c875ca1">part two</a>) in-depth walkthrough of how to build and integrate event  detection from external secrets with GitHub automation by  <a href="https://twitter.com/threatpunter">David French</a>. Very interesting approach to combining various SaaS tools with some custom logic.</p><h3></h3><h3><a href="https://www.chainguard.dev/unchained/the-zero-cve-challenge-can-official-docker-hub-images-pass-the-test">The Zero CVE Challenge: Can official Docker Hub images pass the test?</a></h3><p>If you build your images on top of official docker hub images, are you getting security vulnerabilities with it that you could avoid? It seems that updating OS packages in popular Docker hub images reduces vulnerability counts, on average, by only 5.5%.  It might be better to build your own images sometimes</p><p></p><h3><a href="https://github.com/step-security/github-actions-goat">GitHub Actions Goat</a></h3><p>A deliberately Vulnerable GitHub Actions CI/CD Environment. This is a good resource to make yourself familiar with some of the biggest problems in CI/CD pipelines and how to spot them.</p><h1>Thank you</h1><p>Thank you for reading along. If you have feedback or questions, message me: <a href="http://andy@occamslabs.com">andy@occamslabs.com</a>.  I would appreciate it if you shared it with people that can benefit from the newsletter. </p><p class="button-wrapper" data-attrs="{&quot;url&quot;:&quot;https://www.secureallsoftware.com/subscribe?&quot;,&quot;text&quot;:&quot;Subscribe now&quot;,&quot;action&quot;:null,&quot;class&quot;:null}" data-component-name="ButtonCreateButton"><a class="button primary" href="https://www.secureallsoftware.com/subscribe?"><span>Subscribe now</span></a></p><p class="button-wrapper" data-attrs="{&quot;url&quot;:&quot;https://1awr.substack.com/?utm_source=substack&amp;utm_medium=email&amp;utm_content=share&amp;action=share&quot;,&quot;text&quot;:&quot;Share Secure All Software&quot;,&quot;action&quot;:null,&quot;class&quot;:&quot;button-wrapper&quot;}" data-component-name="ButtonCreateButton"><a class="button primary button-wrapper" href="https://1awr.substack.com/?utm_source=substack&amp;utm_medium=email&amp;utm_content=share&amp;action=share"><span>Share Secure All Software</span></a></p>]]></content:encoded></item><item><title><![CDATA[Supply-chains, Lockfiles and Rants]]></title><description><![CDATA[Supply chain attacks are in all news (at least in mine). These kind of attacks happen in plain sight and use available infrastructure to do harm.]]></description><link>https://www.secureallsoftware.com/p/supply-chains-lockfiles-and-rants</link><guid isPermaLink="false">https://www.secureallsoftware.com/p/supply-chains-lockfiles-and-rants</guid><dc:creator><![CDATA[Andreas Tiefenthaler]]></dc:creator><pubDate>Fri, 28 Jul 2023 07:42:04 GMT</pubDate><enclosure url="https://substack-post-media.s3.amazonaws.com/public/images/24fa10ba-5662-49b0-84fb-ddbc51a755e6_964x964.jpeg" length="0" type="image/jpeg"/><content:encoded><![CDATA[<p>Thank you for being here. If you&#8217;ve found your way over by some miracle but are not yet subscribed, let me help you with that:</p><p></p><p class="button-wrapper" data-attrs="{&quot;url&quot;:&quot;https://www.secureallsoftware.com/subscribe?&quot;,&quot;text&quot;:&quot;Subscribe now&quot;,&quot;action&quot;:null,&quot;class&quot;:null}" data-component-name="ButtonCreateButton"><a class="button primary" href="https://www.secureallsoftware.com/subscribe?"><span>Subscribe now</span></a></p><h1>Supply and Lockfiles</h1><p>A supply chain attack is when one or more of the dependencies in your application have been compromised, and some &#8220;bad code &#8220;is running on your systems and applications that is intended to harm you. These kinds of attacks are becoming more common and more sophisticated.</p><p>Most programming environments that offer a form of dependency manager have a locking mechanism in place. The manager allows to specify what kind of version should is used. And stores the version along with a checksum/cryptographic hash in a sometimes-called lockfile.</p><p>These lockfiles are essential to keeping applications safe from supply chain attacks. If the remote code changes but the same version number is used, you will get a checksum mismatch.</p><p>No matter if you update dependencies by hand or use tools like Dependabot or Renovate. You must review the changes to ensure the functionality is as you expect and the new code does not introduce any malware or obvious bad intentions. Simply updating and not checking is dangerous and circumvents the whole system.</p><p>How do you spot bad&#8221; intentions? Some ideas:&nbsp;</p><ul><li><p>the change introduces a new dependency,</p></li><li><p>changes to pre/post-install hooks of the dependency manager,&nbsp;</p></li><li><p>introduces cryptic code that is unclear</p></li><li><p>downloads stuff from the internet all of a sudden."</p></li></ul><p>How often should you update your dependencies?</p><p>There are two strong opposing approaches to updating software and dependencies.&nbsp;</p><p>The first approach you constantly update everything to stay on the bleeding edge. The second one is you update only when there is a necessity. Otherwise, never touch it.</p><p>What is the best way?&nbsp;</p><p>It depends on the environment and the company, how many people how many systems and moving parts they have. A good rule of thumb is to keep things up to date "enough," so it is easy to get it done during an emergency security update. You don't need to spend days or weeks fixing stuff.</p><p>What do you think? Let me know at <a href="mailto:andy@occamslabs.com">andy@occamslabs.com</a>.<br></p><p class="button-wrapper" data-attrs="{&quot;url&quot;:&quot;https://www.secureallsoftware.com/p/supply-chains-lockfiles-and-rants?utm_source=substack&utm_medium=email&utm_content=share&action=share&quot;,&quot;text&quot;:&quot;Share&quot;,&quot;action&quot;:null,&quot;class&quot;:null}" data-component-name="ButtonCreateButton"><a class="button primary" href="https://www.secureallsoftware.com/p/supply-chains-lockfiles-and-rants?utm_source=substack&utm_medium=email&utm_content=share&action=share"><span>Share</span></a></p><h1>LinkDump</h1><h3><a href="https://thehackernews.com/2023/07/banking-sector-targeted-in-open-source.html">Open Source Supply Chain attack targeting banks</a></h3><p>Malware authors pretended to be employees of banks. They even went that far to create fake LinkedIn profiles. The dependencies were hidden in plain sight using Azure&#8217;s CDN</p><h3>kbom - A Kubernetes Bill of Materials</h3><p> Allows you to create a JSON structured representation of what is running within your cluster. You can use this to build alerting into your security tooling when something changes that should not.</p><h3><a href="https://github.com/americanexpress/earlybird">earlybird - a sensitive data scanner</a></h3><p>American Express is maintaining an open-source scanner that is looking for  clear text password violations, PII, outdated cryptography methods, key files, and more. Another piece of tooling that can be added to the CI/CD to help detect leaks early. </p><h3><a href="http://www.ranum.com/security/computer_security/editorials/dumb/">The Six Dumbest Ideas in Computer Security</a></h3><p>A - quite on point - rant about computer security and some of the ideas driving it. It seems like every day, a new tool or toy is being released that claims to solve problem XYZ. After all, nobody got fired for hiring IBM or so.</p><p> </p><h1>Thank you</h1><p>Thank you for reading along. If you have feedback or questions, message me: <a href="http://andy@occamslabs.com">andy@occamslabs.com</a>.  I would appreciate it if you shared it with people that can benefit from the newsletter.</p><p class="button-wrapper" data-attrs="{&quot;url&quot;:&quot;https://www.secureallsoftware.com/subscribe?&quot;,&quot;text&quot;:&quot;Subscribe now&quot;,&quot;action&quot;:null,&quot;class&quot;:null}" data-component-name="ButtonCreateButton"><a class="button primary" href="https://www.secureallsoftware.com/subscribe?"><span>Subscribe now</span></a></p><p class="button-wrapper" data-attrs="{&quot;url&quot;:&quot;https://1awr.substack.com/?utm_source=substack&amp;utm_medium=email&amp;utm_content=share&amp;action=share&quot;,&quot;text&quot;:&quot;Share Secure All Software&quot;,&quot;action&quot;:null,&quot;class&quot;:&quot;button-wrapper&quot;}" data-component-name="ButtonCreateButton"><a class="button primary button-wrapper" href="https://1awr.substack.com/?utm_source=substack&amp;utm_medium=email&amp;utm_content=share&amp;action=share"><span>Share Secure All Software</span></a></p>]]></content:encoded></item><item><title><![CDATA[Secure All Software [#14] - Signing Containers ]]></title><description><![CDATA[Container image tags are overly trusted and rarely validated. Cryptographic signing is available. Here are a few ways to do it.]]></description><link>https://www.secureallsoftware.com/p/secure-all-software-14-signing-containers</link><guid isPermaLink="false">https://www.secureallsoftware.com/p/secure-all-software-14-signing-containers</guid><dc:creator><![CDATA[Andreas Tiefenthaler]]></dc:creator><pubDate>Fri, 23 Jun 2023 10:34:59 GMT</pubDate><content:encoded><![CDATA[<p>Happy Friday, everyone &#127881;. A long and eventful week is wrapping up. I dealt with some interesting issues, one related to Kubernetes and how to ensure the authenticity of the images running within.</p><h1>Why Docker image tags are bad</h1><p>When we build containers, we primarily control what's going on. Once pushed to the registry, it is considered stable and safe.</p><p>Docker tags are not as stable as we like to think they are.</p><p>Dependency integrity is a - more or less - solved problem for operating systems and library dependency managers. These usually use cryptographic hashes to verify what you wanted to download and that what you downloaded is the same.</p><p>In the container universe, we would rely on tags for years to decide what is installed in our clusters and systems. Ignoring that these tags can be recreated and something else could be installed without us knowing. Even when building our own images, integrity is not always guaranteed by just using a tag.</p><p>How do you improve this situation and mitigate the risk?</p><p>There are two ways to improve on this.&nbsp;First, we can rely on the sha256 of the image instead of the tag. The tag is for humans to read, but machines are okay with reading and comparing long hash strings. The sha256 of an image changes as soon as some of the content inside changes.</p><p>Whether for your in-house built images, or external ones, I recommend using the hash and not the tag. If you build on top of public images, rely on the SHA and not the tag to be in control. It makes updating things more inconvenient but guarantees you the authenticity of the image you build on top of.</p><p>On top of relying on the hash, signatures have been established to use cryptographic public/private-key methods to guarantee the authenticity of an image. After building an image and before sending it to the remote registry, the author would create a signature with the private key. The signature and the image are then pushed to the registry. It guarantees that what is downloaded is the same as what was uploaded.</p><p>At the moment, there are two different methods for signing images.</p><p>Out of the box, Docker has rolled out <a href="https://docs.docker.com/engine/security/trust/">Docker Content Trust</a> (DCT). It is s a built-in mechanism in Docker and allows for the verification of images. To use this in Kubernetes, you need to deploy a custom admission controller or use <a href="https://github.com/sse-secure-systems/connaisseur">connaisseur</a>.</p><p>The second option is cosign by sigstore. The basic concept is the same. However,, you can rely on cloud-native key management systems (KMS) like Hashicorp Vault, AWS KMS, and others.</p><p>Cosign offers a <a href="https://docs.sigstore.dev/policy-controller/overview/">policy controller</a> that can be deployed in Kubernetes. Connaisseur also supports cosign. Cosign can also be used to sign any other build and deployment artifacts.</p><p>Unfortunately, most publishers don't use either DCT or cosign to sign their images.</p><p>The way, for now, is to mirror the images you require, inspect them, and sign the ones you trust.</p><p>Enabling container signing for your images is easy and straightforward.</p><p>In the future, this will become more widespread and a standard.</p><div class="poll-embed" data-attrs="{&quot;id&quot;:81060}" data-component-name="PollToDOM"></div><p>What do you think? Let me know at <a href="mailto:andy@occamslabs.com">andy@occamslabs.com</a>.<br></p><p class="button-wrapper" data-attrs="{&quot;url&quot;:&quot;https://www.secureallsoftware.com/p/secure-all-software-14-signing-containers?utm_source=substack&utm_medium=email&utm_content=share&action=share&quot;,&quot;text&quot;:&quot;Share&quot;,&quot;action&quot;:null,&quot;class&quot;:null}" data-component-name="ButtonCreateButton"><a class="button primary" href="https://www.secureallsoftware.com/p/secure-all-software-14-signing-containers?utm_source=substack&utm_medium=email&utm_content=share&action=share"><span>Share</span></a></p><h1>Links</h1><h3>&#128272; <a href="https://sysdig.com/blog/top-15-kubectl-plugins-for-security-engineers/">15 Kubectl Plugins for Security Engineers</a></h3><p>Kubernetes has a good plugin ecosystem. Here are some useful tools day to day work with kubernetes. Especially interesting is the <strong>Cilium Plugin, </strong>which replaces the current container networking of k8s with a eBPF-based Networking layer for better observability and security.</p><h3>&#9760;&#65039; <a href="https://docs.google.com/spreadsheets/d/15CTPcgZQenWKDLDTQ2ibveUM4i7Of_n20TzdTi23xcg/edit?pli=1#gid=1357859852">Destroyed by Breach</a></h3><p><a href="https://twitter.com/sawaba">Adrian Sanabria</a> is curating a list of companies that went out of business due to &#8220;cyber security attacks&#8221;.  A very interesting read. This could be eye-opening for CTOs and company owners to understand the impact of a breach.</p><p></p><h3>&#128101; <a href="https://www.k9security.io/">K9 Security - AWS IAM is a mess</a></h3><p>Whenever dealing with AWS IAM, it&#8217;s a tricky walk. The system has great power and allows for super fine-grained access permissions. On the other hand, it is a complex beast to tame. My friend <a href="https://twitter.com/skuenzli">Stephen Kuenzli</a> is building a tool to help to handle this complexity.</p><h1>Thank you</h1><p>Thank you for reading along. If you have feedback or questions, message me: <a href="http://andy@occamslabs.com">andy@occamslabs.com</a>.  I would appreciate it if you shared it with people that can benefit from the newsletter.</p><p class="button-wrapper" data-attrs="{&quot;url&quot;:&quot;https://www.secureallsoftware.com/subscribe?&quot;,&quot;text&quot;:&quot;Subscribe now&quot;,&quot;action&quot;:null,&quot;class&quot;:null}" data-component-name="ButtonCreateButton"><a class="button primary" href="https://www.secureallsoftware.com/subscribe?"><span>Subscribe now</span></a></p><p class="button-wrapper" data-attrs="{&quot;url&quot;:&quot;https://1awr.substack.com/?utm_source=substack&amp;utm_medium=email&amp;utm_content=share&amp;action=share&quot;,&quot;text&quot;:&quot;Share Secure All Software&quot;,&quot;action&quot;:null,&quot;class&quot;:&quot;button-wrapper&quot;}" data-component-name="ButtonCreateButton"><a class="button primary button-wrapper" href="https://1awr.substack.com/?utm_source=substack&amp;utm_medium=email&amp;utm_content=share&amp;action=share"><span>Share Secure All Software</span></a></p>]]></content:encoded></item><item><title><![CDATA[Secure All Software - Who owns security? Issue #14]]></title><description><![CDATA[Is it me or is it you?]]></description><link>https://www.secureallsoftware.com/p/secure-all-software-newsletter-for-23-01-18</link><guid isPermaLink="false">https://www.secureallsoftware.com/p/secure-all-software-newsletter-for-23-01-18</guid><dc:creator><![CDATA[Andreas Tiefenthaler]]></dc:creator><pubDate>Thu, 15 Jun 2023 14:57:00 GMT</pubDate><enclosure url="https://substack-post-media.s3.amazonaws.com/public/images/721957b0-6e20-4449-ab04-a565dbd0755d_4288x2848.jpeg" length="0" type="image/jpeg"/><content:encoded><![CDATA[<h1>Foreword </h1><p>Welcome back! After some hiatus from writing and Twitter shutting down the old platform we will be back to regular schedule.</p><p>Thank you for continuing to read, let us dig right into it.</p><h1>Who owns security?</h1><p>Security used to be a thing you do at the end of a project or a release. Usually ceremonially crowned by the almighty pentest.</p><p>This has dramatically changed over the last few years. Today people talk a lot about security by design, shifting left, and other buzzy phrases.</p><p>Whose responsibility is security? Who owns it to design,  build, and ship software securely? Unless you have a dedicated team, there is usually no clear ownership.</p><p>What if a security feature causes issues with the product design &amp; usability?</p><p>How do you solve the issues of security negatively impacting onboarding and marketing numbers?</p><p>What if your security tooling is adding extra steps and delays for shipping code fast and furiously because you shifted all tooling as far left as possible?</p><p>Once security starts to impact the KPIs of individual business units and teams, they will start working around it and pushing it aside, and even silently discarding it.</p><p>I believe that security first and foremost starts with the people involved. And is everyone&#8217;s job to continuously work and improve on it.</p><p>Security in modern startups is a continuous conversation between design - engineering - marketing - business. There is no singular ownership. </p><p>Design wants secure features with great UI and UX. Engineering wants to ship code, fast easy, and secure. Marketing wants easy frictionless onboarding and uses security as a differentiator. Business wants to reduce business risk and build trust with clients and investors.  </p><p>All parties have their business goals but also need to balance risk and reward. This means that leaders and teams must have an aligned security mindset and keep each other accountable.</p><p>When you build this kind of security culture, security tooling starts to become useful and not just in the way.</p><p>People won't be trying so hard to work around the tools and processes, but rather figure out how to improve them.  They then can focus on their work and ship secure products with great features and high business impact.</p><p>Modern security is about shifting perspectives and defining ownership of security in daily processes.</p><p>Maybe Product Security is a new role in the future to bridge all of these in the future? What do you think, let me know at <a href="mailto:andy@occamslabs.com">andy@occamslabs.com</a>.<br></p><p class="button-wrapper" data-attrs="{&quot;url&quot;:&quot;https://www.secureallsoftware.com/p/secure-all-software-newsletter-for-23-01-18?utm_source=substack&utm_medium=email&utm_content=share&action=share&quot;,&quot;text&quot;:&quot;Share&quot;,&quot;action&quot;:null,&quot;class&quot;:null}" data-component-name="ButtonCreateButton"><a class="button primary" href="https://www.secureallsoftware.com/p/secure-all-software-newsletter-for-23-01-18?utm_source=substack&utm_medium=email&utm_content=share&action=share"><span>Share</span></a></p><h1>Links</h1><h3>&#128272; <a href="https://github.com/jeffsanicola/vault-policy-guide">The Vault Policy Guide </a>- <a href="https://github.com/jeffsanicola/vault-policy-guide">link</a></h3><p>Vault access control lists (ACL) can be confusing and are not always straightforward to handle. This deep-dive is valuable for anyone who wants to set up Vault, but also for folks who have it running and want to review their policies.</p><h3>&#9784;&#65039; <a href="https://github.com/k8sgpt-ai/k8sgpt">K8sGPT - Ultimate tool for kubernetes scanning</a> - <a href="https://github.com/k8sgpt-ai/k8sgpt">link</a></h3><p>Kubernetes being pretty much everywhere security is a big problem here. Combine it with AI and it can be a great tool to tame the complicity it brings. While the tool is mainly designed to find configuration issues, it helps to detect security misconfigurations as well.</p><h3>&#129361; <a href="https://security.googleblog.com/2023/05/announcing-launch-of-guac-v01.html">Google GUAC v0.1 Launched</a> - <a href="https://security.googleblog.com/2023/05/announcing-launch-of-guac-v01.html">link</a></h3><p> Graph for Understanding Artifact Composition (<a href="https://guac.sh/">GUAC</a>) is a metadata analysis tool  that aims to improve supply chain security. It looks like a promising project to combine many different sources and refine them into a simple-to-use API.</p><p></p><h3>&#128221;<a href="https://owasp.org/www-project-top-10-for-large-language-model-applications/">OWASP Top 10 for Large Language Model Applications </a>- <a href="https://owasp.org/www-project-top-10-for-large-language-model-applications/">link</a></h3><p>Artificial intelligence is here to stay. It will support our future work and might allow us to reach new levels of efficiency. With great power comes great responsibility and the first attacks have already been successful. The OWASP project released a first draft of the Top 10 security issues to watch out for.</p><p></p><h3>&#129504; <a href="https://vulcan.io/blog/ai-hallucinations-package-risk">Hallucinating AI as a security risk?</a> - <a href="https://vulcan.io/blog/ai-hallucinations-package-risk">link</a></h3><p>ChatGPT and other LLM systems sometimes make things up including names of opn source libraries . This could be used by an attacker to craft a vicious package and publish it under the made-up package name. While this is a bit hypothetical, it is not impossible at all.</p><h1>Thank you</h1><p>Thank you for reading along. If you have feedback or have some questions just send me a message: <a href="http://andy@occamslabs.com">andy@occamslabs.com</a> </p><p class="button-wrapper" data-attrs="{&quot;url&quot;:&quot;https://www.secureallsoftware.com/subscribe?&quot;,&quot;text&quot;:&quot;Subscribe now&quot;,&quot;action&quot;:null,&quot;class&quot;:null}" data-component-name="ButtonCreateButton"><a class="button primary" href="https://www.secureallsoftware.com/subscribe?"><span>Subscribe now</span></a></p><p class="button-wrapper" data-attrs="{&quot;url&quot;:&quot;https://www.secureallsoftware.com/?utm_source=substack&utm_medium=email&utm_content=share&action=share&quot;,&quot;text&quot;:&quot;Share Secure All Software&quot;,&quot;action&quot;:null,&quot;class&quot;:&quot;button-wrapper&quot;}" data-component-name="ButtonCreateButton"><a class="button primary button-wrapper" href="https://www.secureallsoftware.com/?utm_source=substack&utm_medium=email&utm_content=share&action=share"><span>Share Secure All Software</span></a></p>]]></content:encoded></item><item><title><![CDATA[Secure All Software - Issue #13 - Signal vs Noise a tale on Supply Chains]]></title><description><![CDATA[Supply Chain Scanning - Signal vs Noise]]></description><link>https://www.secureallsoftware.com/p/secure-all-software-issue-13-signal-22-08-26</link><guid isPermaLink="false">https://www.secureallsoftware.com/p/secure-all-software-issue-13-signal-22-08-26</guid><dc:creator><![CDATA[Andreas Tiefenthaler]]></dc:creator><pubDate>Fri, 26 Aug 2022 10:52:01 GMT</pubDate><content:encoded><![CDATA[<h1>Supply Chain Scanning - Signal vs Noise</h1><p>Recently was setting up basic SAST (Static Application Security Testing) and SCA (Software Composition Analysis) in one of my clients environments. I haven't done this from scratch in a while and was blown away by the amount of noise and false positives generated. We ended up with hundreds of findings that needed to be triaged, researched and followed up.</p><p><strong>Why was there so much noise, what happened?</strong></p><p>Usually I follow a systematic approach, but this time I just went in and enabled everything unfiltered. It can be overwhelming, frustrating and for some a scary experience.</p><p>Here is my usual approach:</p><p>First I would enable a SCA tool set it up to report CRITICAL findings first. The detected vulnerable dependencies then can be either updated right away if possible. When something takes more work I will create a backlog item and add it to a temporary acceptance list.</p><p>Sometimes there is no fix available or the dependency is not used (for example introduced in some transitive dependency but not used), it then ends up on the ignore list with a remark what is going on. Once all critical items are addressed the tool will be enabled to break the build on new findings.</p><p>With this we achieved the first milestone of having to address new critical vulnerabilities as soon as they appear.</p><p>Second run the SCA tool with HIGH and CRITICAL findings enabled and proceed in the same way. Then I take care of the&nbsp;MEDIUM and LOW findings.</p><p>Usually I wait a week between the individual levels. With this the teams can get used to the new tool and workflow and take ownership of the new findings without being overwhelmed.</p><p>For SAST I follow a similar approach. Depending on the tool, I am ignoring complete rule-sets from the beginning on. They have been of no value and generate the majority of noise.</p><p>More to this in the next edition.</p><p>How are you handling Supply Chain Scanning? Let me know <a href="mailto:andy@occamslabs.com">andy@occamslabs.com</a></p><h1>Links</h1><p>Things I have been reading reading and things I find useful.</p><p><a href="https://slsa.dev/">It&#8217;s a security framework, a check-list of standards and controls to prevent tampering, improve integrity, and secure packages and infrastructure in your projects, businesses or enterprises. It&#8217;s how you get from safe enough to being as resilient as possible, at any link in the chain.</a></p><p><a href="https://github.com/decalage2/awesome-security-hardening">A collection of awesome security hardening guides, tools and other resources - GitHub - decalage2/awesome-security-hardening: A collection of awesome security hardening guides, tools and other resources</a></p><p><a href="https://github.com/toniblyx/my-arsenal-of-aws-security-tools">List of open source tools for AWS security: defensive, offensive, auditing, DFIR, etc. - GitHub - toniblyx/my-arsenal-of-aws-security-tools: List of open source tools for AWS security: defensive, offensive, auditing, DFIR, etc.</a></p><h1>What is up?</h1><p><a href="https://blog.lastpass.com/2022/08/notice-of-recent-security-incident/">We have no evidence that this incident involved any access to customer data or encrypted password vaults. Our products and services are operating normally.</a></p><h1>Thank you</h1><p>If you found this newsletter useful please forward it to someone who might also get value out of it. Let me know if you found something interesting to share, or have some feedback for the next issue at&nbsp;<a href="mailto:andy@occamslabs.com?utm_campaign=secureallsoftware&amp;utm_medium=email&amp;utm_source=Revue%20newsletter">andy@occamslabs.com</a>.</p><p>Have a fantastic day,</p><p><em><strong>Andy</strong></em></p>]]></content:encoded></item><item><title><![CDATA[Secure All Software - Issue #12 - Containers and Kubernetes]]></title><description><![CDATA[Thoughts]]></description><link>https://www.secureallsoftware.com/p/secure-all-software-issue-12-containers-22-08-12</link><guid isPermaLink="false">https://www.secureallsoftware.com/p/secure-all-software-issue-12-containers-22-08-12</guid><dc:creator><![CDATA[Andreas Tiefenthaler]]></dc:creator><pubDate>Fri, 12 Aug 2022 08:10:00 GMT</pubDate><content:encoded><![CDATA[<h1>Thoughts</h1><p>Unverified container images can do a lot of harm to a company. Running applications in containers is widely adopted and many companies use them. Very few companies have a guideline on how to use and secure these tools. Anyone can choose any image on services like dockerhub and deploy them, but what is actually running in those containers is hard to inspect. Anyone can publish an image on any service and distribute their own version.</p><p>Here are a few easy things to do that reduce the risk.</p><p>Only use official images that are maintained by the projects you use. This reduces the risk of a malicious actor injecting something by a lot. It could still be that someone takes over an account and modifies the originals. Unfortunately tags can be overwritten and there is not a widely adopted signing mechanism yet. To prevent this from happening, push the images you are using to your own registry and sync updates after you inspect them.</p><p>If you need a customized version of an image, build it yourself. This might cause some extra work, but will reduce the risk tremendously. Keep your version as close as possible to the original. This will make maintenance and updates easier in the future. Do not rely on someone&#8217;s customized version, it is very likely this won&#8217;t be updated and receive the necessary care. The base images for your own applications should be based on some form of minimal Linux like&nbsp;<a href="https://www.alpinelinux.org/?utm_campaign=Secure%20All%20Software%20-%20Newsletter%20for%20Devopers%2C%20DevOps%20and%20Security%20Engineers&amp;utm_medium=email&amp;utm_source=Revue%20newsletter">Alpine Linux</a>&nbsp;or&nbsp;<a href="https://github.com/GoogleContainerTools/distroless?utm_campaign=Secure%20All%20Software%20-%20Newsletter%20for%20Devopers%2C%20DevOps%20and%20Security%20Engineers&amp;utm_medium=email&amp;utm_source=Revue%20newsletter">Distroless</a>. Based on these you can build your application container from the ground up and own the full setup.</p><p>Using simple and lightweight distributions ensures slim images that are easy to maintain and upgrade. Try to stick to as little Linux variations as possible to reduce maintenance overhead.</p><p>Enable container scanning for known vulnerabilities in the OS but also in your dependencies on your registry. In the past you would have one version of an OS rolled out to multiple instances. With containers and technologies like Kubernetes, we have a multitude of variations and versions that need to be checked and kept up to date.</p><p>What other ways to improve the security of your images do you know? Let me know at&nbsp;<a href="mailto:andy@occamslabs.com?utm_campaign=Secure%20All%20Software%20-%20Newsletter%20for%20Devopers%2C%20DevOps%20and%20Security%20Engineers&amp;utm_medium=email&amp;utm_source=Revue%20newsletter">andy@occamslabs.com</a></p><h1>Links &#128279;</h1><p>Things I have been reading reading and tools I find useful.</p><p><a href="https://github.com/step-security/supply-chain-goat">A project that is deliberately vulnerable to supply chain attacks. A training ground to practice implementing countermeasures specific to the software supply chain.</a></p><p><a href="https://threatpost.com/container_threats_cloud_defend/179452/">A deeper dive into securing containerized environments.</a></p><p><a href="https://www.darkreading.com/dr-tech/6-best-practices-to-ensure-kubernetes-security-meets-compliance-regulations">Security must be precise enough to meet compliance requirements without impeding DevOps and developer productivity. Here's how to strike that balance.</a></p><h1>Thank you for reading</h1><p>If you found this newsletter useful please forward it to someone who might also get some value out of it. Let me know if you found something interesting to share, or have some feedback for the next issue at <a href="mailto:andy@occamslabs.com">andy@occamslabs.com</a>.</p><p>Have a fantastic day,</p><p><em><strong>Andy</strong></em></p>]]></content:encoded></item><item><title><![CDATA[Secure All Software #11 - Secure Your Secrets, verify your IAM Policies]]></title><description><![CDATA[Hey &#128075;sorry for skipping one issue. My content backlog was short of good links and I wanted to save some space in your mailbox. Also today for the first time ever I am sending it on a Sunday.In this issue we have a set of helpful tools that help you to keep your secrets secure and prevent you from accidentally leaking them.  The upcoming Cloud Native Security Day 2019 opened their CFP and it looks it will become a very interesting event.I need your supportShare this link&#160;https://SecureAllSoftware.dev&#160;on a Linkedin or Twitter status update today and recommend it to your friends and colleagues tomorrow.I am looking for people with expertise in software security to chat with. If you this is you, or you know somebody please contact me&#160;andy@occamslabs.com&#160;or&#160;@pxlpnkHave a fantastic day,Andy]]></description><link>https://www.secureallsoftware.com/p/secure-all-software-11-secure-your-19-09-22</link><guid isPermaLink="false">https://www.secureallsoftware.com/p/secure-all-software-11-secure-your-19-09-22</guid><dc:creator><![CDATA[Andreas Tiefenthaler]]></dc:creator><pubDate>Sun, 22 Sep 2019 09:33:02 GMT</pubDate><content:encoded><![CDATA[<h1>Links</h1><p><a href="https://arstechnica.com/information-technology/2019/08/the-year-long-rash-of-supply-chain-attacks-against-open-source-is-getting-worse/">Backdoors snuck into 12 OSS packages were downloaded hundreds of thousands of times. And this is just what we are aware of.</a></p><p><a href="https://about.gitlab.com/2019/08/27/beginners-guide-container-security/">Container adoption is growing, but traditional security methods can&#8217;t keep up. This blogpost walks you through the different aspects to keep tighten your containers.</a></p><p><a href="https://securityboulevard.com/2019/08/iam-root-aws-iam-simulator-tutorial/">Data-breaches are happening more and more. This tutorial gives a great introduction on what to watch out for when building IAM roles. The IAM Policy Simulator is a powerful tool supporting the security of your AWS accounts and data</a></p><p><a href="https://github.blog/2019-09-18-securing-software-together/">GitHub is building up their security game. This blogpost is a strong stance towards making easier to secure OpenSource. I am very curious where this journey will lead us.</a></p><h1>Tools and Tech</h1><p><a href="https://github.com/ricoberger/vault-secrets-operator">Create Kubernetes secrets from Vault for a secure GitOps based workflow.</a></p><p><a href="https://github.com/wireghoul/graudit">grep rough audit - source code auditing tool. Pattern based static code analysis. Extremely fast and helpful, but with a certain noise level attached to it.</a></p><p><a href="https://github.com/eth0izzle/shhgit">shhgit is listening for code changes, and scans them right away for leaked credentials.</a></p><h1>What is up?</h1><p><a href="https://events.linuxfoundation.org/events/cloud-native-security-day-2019/">Cloud Native Security Day brings together the broader Cloud Native security community in a community-oriented space to discuss and share current challenges (and solutions) in Cloud Native security. The CFP is open and awaiting your contributions.</a></p><h1>Your Feedback!</h1><p>Did you write a great post? Built a useful tool or have something else to share? Please share it with me&nbsp;<a href="mailto:andy@occamslabs.com%20?utm_campaign=secureallsoftware&amp;utm_medium=email&amp;utm_source=Revue%20newsletter">andy@occamslabs.com&nbsp;</a>or on Twitter&nbsp;<a href="https://twitter.com/@pxlpnk?utm_campaign=secureallsoftware&amp;utm_medium=email&amp;utm_source=Revue%20newsletter">@pxlpnk</a></p><p>More at:&nbsp;<a href="https://www.secureallsoftware.dev/?utm_campaign=secureallsoftware&amp;utm_medium=email&amp;utm_source=Revue%20newsletter">https://SecureAllSoftware.dev</a></p>]]></content:encoded></item><item><title><![CDATA[Secure All Software - Issue #10 Rootkits, Serverless and the NPM package that walked away with all your passwords]]></title><description><![CDATA[Hey &#128075;In this issue we are having a mix of root exploits, serverless security, a wild chaos monkey that wants to keep an eye on your cloud services and the always useful OWASP cheat sheets for security topics.I try to have a wide range of topics, let me know if you want to see more or less of some particular field.I need your supportShare this link&#160;https://SecureAllSoftware.dev&#160;on a Facebook or Twitter status update today and recommend it to your friends and colleagues.Are you missing something? Please share your feedback with me&#160;andy@occamslabs.com or @pxlpnkHave a fantastic day,Andy]]></description><link>https://www.secureallsoftware.com/p/secure-all-software-issue-10-rootkits-19-08-24</link><guid isPermaLink="false">https://www.secureallsoftware.com/p/secure-all-software-issue-10-rootkits-19-08-24</guid><dc:creator><![CDATA[Andreas Tiefenthaler]]></dc:creator><pubDate>Sat, 24 Aug 2019 09:20:04 GMT</pubDate><content:encoded><![CDATA[<h1>Links</h1><p><a href="https://blog.reversinglabs.com/blog/the-npm-package-that-walked-away-with-all-your-passwords">Software developers are increasingly being targeted by supply chain attacks. Popularization of package managers and their integration into the development pipelines has made this ecosystem an interesting target for various threat actors.</a></p><p><a href="https://blog.usejournal.com/what-i-learned-at-capital-one-abb8669be9ce?gi=f24fa8e4a92">Lessons learned in moving from vendor to defender. You walk into an organization and suddenly instead of focusing on the newest threat you are shoved into a boat that has thousands of leaks.</a></p><p><a href="https://docs.google.com/presentation/d/e/2PACX-1vQ4O4UgV9j0cIoeiikLHZ9pQV8NFmOA1SkqUx5m2JwdPfoW8WNWlNi_KuCKl7JqU6uPb-E58GVGAQoU/pub?delayms=60000&amp;loop=false&amp;start=false#slide=id.g5dc46e216f_2_75">What is application security? A talk by </a><a href="https://twitter.com/7hunderSon/">@7hunderSon</a> helping people to ease into the mystic worlds of security, jargon and easy wins.</p><p><a href="https://github.com/OWASP/CheatSheetSeries/">The OWASP Cheat Sheet Series was created to provide a concise collection of high value information on specific application security topics.</a></p><p><a href="https://recipeforroot.com/">Your complete guide for privilege escalation. It is hard to prevent privileged escalation. It is easier when you know how they work.</a></p><p><a href="https://www.secjuice.com/serverless-security-dependencies/">This is the first of a three parts series discussing the ways of securing serverless applications. This rather new topic in the community is getting more and more interesting.</a></p><h1>Tools and Tech</h1><p><a href="https://github.com/docker/docker-bench-security">The Docker Bench for Security is a script that checks for dozens of common best-practices around deploying Docker containers in production.</a></p><p><a href="https://github.com/Netflix/security_monkey">Security Monkey monitors AWS, GCP, OpenStack, and GitHub orgs for assets and their changes over time.</a></p><h1>What is up?</h1><p><a href="https://www.bsidescharleston.org/">BSides Charleston is a 501(c)3 organization led computer security conference that was started in 2012 and has been held in Charleston, SC. Since its existence BSides Charleston has been attracting security professionals from all over the Lowcountry area for this one day event.</a></p><h1>Want to share something?</h1><p>Did you write a great post? Built a useful too or have something else to share? Please share it with me <a href="mailto:andy@occamslabs.com%20?utm_campaign=secureallsoftware&amp;utm_medium=email&amp;utm_source=Revue%20newsletter">andy@occamslabs.com </a>or on Twitter <a href="https://twitter.com/@pxlpnk?utm_campaign=secureallsoftware&amp;utm_medium=email&amp;utm_source=Revue%20newsletter">@pxlpnk</a></p><p>More at: <a href="https://www.SecureAllSoftware.dev?utm_campaign=secureallsoftware&amp;utm_medium=email&amp;utm_source=Revue%20newsletter">https://SecureAllSoftware.dev</a></p>]]></content:encoded></item><item><title><![CDATA[Secure All Software - Issue #9]]></title><description><![CDATA[Welcome and thank you for all the positive feedback on the last issue. In this issue we have a good mix between operations, programming and culture. We cover setting up a secure Kubernetes cluster, and use a new proper way of doing secrets management. Oh, did you ever wonder what is the state of your GitHub organization and what kind of hooks, collaborators or deploy keys you still have flying around?I need your supportShare this link&#160;https://www.getrevue.co/profile/devsecops/&#160;on a LinkedIn or Twitter status update today and recommend it to your friends and colleagues.Are you missing something? Please share your feedback with me&#160;andy@occamslabs.com or @pxlpnkHave a fantastic day,Andy]]></description><link>https://www.secureallsoftware.com/p/secure-all-software-issue-9-19-08-08</link><guid isPermaLink="false">https://www.secureallsoftware.com/p/secure-all-software-issue-9-19-08-08</guid><dc:creator><![CDATA[Andreas Tiefenthaler]]></dc:creator><pubDate>Thu, 08 Aug 2019 07:02:39 GMT</pubDate><content:encoded><![CDATA[<h1>Links</h1><p><a href="https://snyk.io/blog/how-to-increase-serverless-observability-monitoring-and-security/">Functions are often short-lived, deployed in large numbers and are invoked more and more frequently as you scale. How to manage monitoring and security?</a></p><p><a href="https://medium.com/cruise/container-platform-security-7a3057a27663">Security isn&#8217;t just a checkbox on project designs&#8202;&#8212;&#8202;it&#8217;s continual improvements made at multiple layers of the stack. We explore some of these layers and share how we tackled security&#8217;s challenges.</a></p><p><a href="https://github.com/OWASP/Go-SCP">Go Language - Web Application Secure Coding Practices is a guide written for anyone who is using the </a><a href="https://golang.org">Go Programming Language</a> and aims to use it for web development.</p><p><a href="https://techbeacon.com/security/how-secure-your-cloud-infrastructure-3-planes-opsec">Here's an approach to securing the cloud infrastructure layer that companies should adopt ASAP.</a></p><h1>Tools and Tech</h1><p><a href="https://github.com/genuinetools/audit">This also scans all an organization's repos you have permission to view. Because nobody has enough RAM in their brain to remember this stuff for 100+ repos.</a></p><p><a href="https://medium.com/cruise/secrets-management-3a7c47fe81b">Where should we store secrets? In source? In build artifacts? In CI/CD Pipelines as environment variables? None of these are good places. Cruise is open sourcing their new tool, a vault client, but for servers and containers: daytona</a></p><h1>What to Watch?</h1><p><a href="https://www.youtube.com/watch?v=AMFVUE30OaY">Google Product Manager, Dustin Kirkland interviews Google Product Manager, Maya Kaczorowski to discuss interesting vulnerabilities in the Kubernetes (K8s) space.</a></p><p><a href="https://www.devsecopsdays.com/articles/security-is-the-center-of-a-devops-world">The first session of last years RSA DevOps track in San Francisco. A great discussion about coloration and how it can improve the security of a whole organization. This might be the end of security as we know it.</a></p><h1>Want to share something?</h1><p>Did you write a great post? Built a useful too or have something else to share? Please share it with me <a href="mailto:andy@occamslabs.com ">andy@occamslabs.com </a>or on Twitter <a href="https://twitter.com/@pxlpnk">@pxlpnk</a></p><p>More at: <a href="https://www.SecureAllSoftware.dev">https://www.SecureAllSoftware.dev</a></p>]]></content:encoded></item></channel></rss>