<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom"><channel><title>Brian Vermeer on foojay.io - Friends Of OpenJDK</title><link>https://foojay.io/today/author/bmvermeer/</link><description>Articles written by Brian Vermeer on foojay.io - Friends Of OpenJDK</description><generator>Hugo</generator><language>en-us</language><lastBuildDate>Fri, 15 May 2026 15:31:08 +0000</lastBuildDate><atom:link href="https://foojay.io/today/author/bmvermeer/index.xml" rel="self" type="application/rss+xml"/><item><title>Don't Panic: The Thymeleaf Template Injection That Only Hurts If You Let It (CVE-2026-40478)</title><link>https://foojay.io/today/dont-panic-the-thymeleaf-template-injection-that-only-hurts-if-you-let-it-cve-2026-40478/</link><pubDate>Fri, 15 May 2026 15:31:08 +0000</pubDate><guid>https://foojay.io/today/dont-panic-the-thymeleaf-template-injection-that-only-hurts-if-you-let-it-cve-2026-40478/</guid><description>&lt;p&gt;The Thymeleaf vulnerability with a CVSS score of 9.1 grabs your attention, as it should. But before you call the cavalry and claim this as the new Log4shell, read this first.&lt;/p&gt;&#10;&lt;p&gt;&lt;a href="https://security.snyk.io/vuln/SNYK-JAVA-ORGTHYMELEAF-16078379?_gl=1*1at854d*_gcl_aw*R0NMLjE3NzgwMDAzNjIuQ2p3S0NBandxdWJQQmhCT0Vpd0F6Z1pYMnFGMkJrY1V2VEIwbHRsSmMyVVFDeWxCaFJGYng0Yy02SjVIdzdITHJITGFueExTdllmN0tCb0NnNDhRQXZEX0J3RQ..*_gcl_au*MTUyNzYyMTQ0Ny4xNzc1NjU3MzI2*_ga*MTY1NTk4NjI5Ni4xNzc1NjU3MzI3*_ga_X9SH3KP7B4*czE3NzgyNTkzMzMkbzcxJGcxJHQxNzc4MjU5NjMxJGo2MCRsMCRoMA.." target="_blank" rel="noopener noreferrer"&gt;CVE-2026-40478&lt;/a&gt; is a server-side template injection vulnerability in Thymeleaf &lt;a href="https://vipentest.com/blog/cve-2026-40478-thymeleaf-ssti-sandbox-escape-rce/" target="_blank" rel="noopener noreferrer"&gt;discovered by pentester Dawid Bakaj&lt;/a&gt;. Thymeleaf is a templating engine in Java that is used for server-side webpage rendering. The sandbox that normally prevents arbitrary code execution got bypassed using a tab character. And yes, this can lead to a remote code execution if exploited.&lt;/p&gt;</description></item><item><title>How Chat Memory Manipulation Can Ruin Your AI System</title><link>https://foojay.io/today/how-chat-memory-manipulation-can-ruin-your-ai-system/</link><pubDate>Thu, 16 Oct 2025 10:45:59 +0000</pubDate><guid>https://foojay.io/today/how-chat-memory-manipulation-can-ruin-your-ai-system/</guid><description>&lt;h2 id="do-llms-have-any-conversational-memory"&gt;Do LLMs have any conversational memory?&lt;/h2&gt;&#10;&lt;p&gt;With the use of ChatGPT, Claude, and Copilot, we are now quite used to chat-based AI assistants that can help us. We&amp;rsquo;ve all grown accustomed to chatbots that &amp;ldquo;remember&amp;rdquo; us and the conversation we had before.&lt;/p&gt;&#10;&lt;p&gt;From virtual assistants that recall our preferences to support bots that track our past issues, chat memory feels like a natural part of interacting with digital agents. It&amp;rsquo;s easy to assume that modern AI models like ChatGPT or other LLM-powered bots possess similar built-in memory.&lt;/p&gt;</description></item><item><title>Ensuring Safe and Reliable AI Interactions with LLM Guardrails</title><link>https://foojay.io/today/ensuring-safe-and-reliable-ai-interactions-with-llm-guardrails/</link><pubDate>Tue, 17 Jun 2025 07:11:24 +0000</pubDate><guid>https://foojay.io/today/ensuring-safe-and-reliable-ai-interactions-with-llm-guardrails/</guid><description>&lt;p&gt;&lt;strong&gt;Integrating Large Language Models (LLMs) into our applications is becoming increasingly popular. These models are extremely useful for creating content, searching documentation, and solving more complex problems. However, with great power comes great responsibility.&lt;/strong&gt;&lt;/p&gt;&#10;&lt;p&gt;We know that LLMs can and will make mistakes, and while enriching your prompts with the proper context can help align results with your documents and information, risks still remain. Along with the rise of LLMs, new attack vectors are surfacing. Clever prompt injections can lead to misinformation and‌ escalate privacy-sensitive information.&lt;/p&gt;</description></item><item><title>Foojay Podcast #72: JCon Report, Part 1 - Grow your career, public speaking, 30 years of Java, greener coding,...</title><link>https://foojay.io/today/foojay-podcast-72/</link><pubDate>Mon, 02 Jun 2025 13:55:37 +0000</pubDate><guid>https://foojay.io/today/foojay-podcast-72/</guid><description>&lt;p&gt;On May 13th and 14th, Foojay attended the JCON conference in Köln, Germany, where we did over 30 live-stream interviews. In this episode, we present to you the first set of these interviews, in which we focus on celebrating 30 years of Java, how you can grow your career, become a public speaker and writer, make your code more green, a bit of AI (of course&amp;hellip;), and how the connections between open-source contributors can be visualized.&lt;/p&gt;</description></item><item><title>What is RAG, and How to Secure It</title><link>https://foojay.io/today/what-is-rag-and-how-to-secure-it/</link><pubDate>Fri, 16 May 2025 11:48:16 +0000</pubDate><guid>https://foojay.io/today/what-is-rag-and-how-to-secure-it/</guid><description>&lt;p&gt;Integrating large language models (LLMs) into your application is more accessible than ever. With a few API calls to OpenAI, Anthropic, or Cohere, you can instantly add &lt;a href="https://snyk.io/solutions/secure-ai-generated-code/" target="_blank" rel="noopener noreferrer"&gt;++AI capabilities++&lt;/a&gt; to your stack. Using frameworks and libraries that abstract this away for you makes it even easier to create your own LLM-powered assistant. However, if you&amp;rsquo;ve shipped any real-world LLM features, you&amp;rsquo;ve hit the wall where these powerful models confidently make up facts, reference outdated information, or deliver answers that don&amp;rsquo;t take your context into account.&lt;/p&gt;</description></item><item><title>Path Traversal Vulnerability in Deep Java Library (DJL)</title><link>https://foojay.io/today/path-traversal-vulnerability-in-deep-java-library-djl-and-its-impact-on-java-ai-development/</link><pubDate>Tue, 11 Mar 2025 12:21:50 +0000</pubDate><guid>https://foojay.io/today/path-traversal-vulnerability-in-deep-java-library-djl-and-its-impact-on-java-ai-development/</guid><description>&lt;p&gt;Deep Java Library (&lt;a href="https://djl.ai/" target="_blank" rel="noopener noreferrer"&gt;++DJL++&lt;/a&gt;) is an open source deep learning framework that brings AI capabilities to Java developers without requiring a shift to Python.&lt;/p&gt;&#10;&lt;p&gt;It provides an intuitive, high-level API for building, training, and deploying machine learning models, supporting deep learning engines like TensorFlow, PyTorch, and MXNet.&lt;/p&gt;&#10;&lt;p&gt;While not as widely adopted as Python-based frameworks, DJL is gaining traction in Java-based AI applications, especially in enterprise software, cloud environments, and financial services.&lt;/p&gt;</description></item><item><title>Creating SBOMs with the Snyk CLI</title><link>https://foojay.io/today/creating-sboms-with-the-snyk-cli/</link><pubDate>Fri, 07 Mar 2025 12:25:36 +0000</pubDate><guid>https://foojay.io/today/creating-sboms-with-the-snyk-cli/</guid><description>&lt;p&gt;The software bill of materials (SBOM) is quickly becoming an essential aspect of open source security and compliance. In this post, we&amp;rsquo;ll delve into what SBOMs are, why they&amp;rsquo;re necessary, and their role in open source security.&lt;/p&gt;&#10;&lt;h2 id="what-are-sboms"&gt;What are SBOMs?&lt;/h2&gt;&#10;&lt;p&gt;A software Bill of Materials (SBOM) is a comprehensive inventory of all components used in a software product. They include all the necessary details about each component, such as their names, versions, and licensing information. SBOMs can be seen as the ingredients list for software, providing complete transparency into what makes up a software product.&lt;/p&gt;</description></item><item><title>Foojay Podcast #58: How Java Developers Can Secure Their Code</title><link>https://foojay.io/today/foojay-podcast-58/</link><pubDate>Mon, 30 Sep 2024 07:43:46 +0000</pubDate><guid>https://foojay.io/today/foojay-podcast-58/</guid><description>&lt;p&gt;Three years after Log4Shell caused a significant security issue, we still struggle with insecure dependencies and injection problems.&lt;/p&gt;&#10;&lt;p&gt;In this podcast, we&amp;rsquo;ll discuss how developers can secure their code.&lt;/p&gt;&#10;&lt;p&gt;I talked with three authors who posted a security and code quality post on Foojay.io.&lt;/p&gt;&#10;&lt;h2 id="video"&gt;Video&lt;/h2&gt;&#10;&lt;div style="position: relative; padding-bottom: 56.25%; height: 0; overflow: hidden;"&gt;&#10;&#9;&#9;&#9;&lt;iframe allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share; fullscreen" loading="eager" referrerpolicy="strict-origin-when-cross-origin" src="https://www.youtube.com/embed/sRVcqILDuSo?autoplay=0&amp;amp;controls=1&amp;amp;end=0&amp;amp;loop=0&amp;amp;mute=0&amp;amp;start=0" style="position: absolute; top: 0; left: 0; width: 100%; height: 100%; border:0;" title="YouTube video"&gt;&lt;/iframe&gt;&#10;&#9;&#9;&lt;/div&gt;&#10;&#10;&lt;h2 id="podcast-apps"&gt;Podcast Apps&lt;/h2&gt;&#10;&lt;p&gt;You can listen and subscribe to the Foojay Podcast on:&lt;/p&gt;</description></item><item><title>The Persistent Threat: Why Major Vulnerabilities Like Log4Shell and Spring4Shell Remain Significant</title><link>https://foojay.io/today/the-persistent-threat-why-major-vulnerabilities-like-log4shell-and-spring4shell-remain-significant/</link><pubDate>Tue, 17 Sep 2024 16:17:07 +0000</pubDate><guid>https://foojay.io/today/the-persistent-threat-why-major-vulnerabilities-like-log4shell-and-spring4shell-remain-significant/</guid><description>&lt;p&gt;&lt;em&gt;This article was originally published at &lt;a href="https://snyk.io/blog/log4shell-spring4shell-threat/" target="_blank" rel="noopener noreferrer"&gt;Snyk.io&lt;/a&gt;&lt;/em&gt;&lt;/p&gt;&#10;&lt;p&gt;&lt;strong&gt;As developers, we&amp;rsquo;re constantly juggling features, fixes, and deadlines. Yet, a lurking issue has been surprisingly overlooked: the continued use of vulnerable Log4j and Spring Framework versions in many projects.&lt;/strong&gt;&lt;/p&gt;&#10;&lt;p&gt;Despite the high-profile exposure of Log4Shell and Spring4Shell vulnerabilities, a shocking number of applications are still running on these ticking time bombs. This isn&amp;rsquo;t just a minor oversight — it&amp;rsquo;s a major risk. We&amp;rsquo;re builders at heart, but part of building is ensuring our structures are safe.&lt;/p&gt;</description></item><item><title>Four Easy Ways to Analyze your Java and Kotlin Code for Security Problems</title><link>https://foojay.io/today/four-easy-ways-to-analyze-your-java-and-kotlin-code-for-security-problems/</link><pubDate>Fri, 30 Aug 2024 09:07:43 +0000</pubDate><guid>https://foojay.io/today/four-easy-ways-to-analyze-your-java-and-kotlin-code-for-security-problems/</guid><description>&lt;p&gt;&lt;em&gt;Originally published at &lt;a href="https://snyk.io/blog/analyze-java-kotlin-code/" target="_blank" rel="noopener noreferrer"&gt;Snyk.io&lt;/a&gt;&lt;/em&gt; .&lt;/p&gt;&#10;&lt;p&gt;&lt;strong&gt;Nowadays, the security of your applications is just as important as the functionality they provide. Therefore, analyzing your code for security vulnerabilities is a vital part of maintaining the integrity of your applications and protecting your users&amp;rsquo; data. As developers, we are at the front lines of this battle. It&amp;rsquo;s our responsibility to ensure that the code we write is not just functional and efficient but also secure.&lt;/strong&gt;&lt;/p&gt;</description></item><item><title>Securing Symmetric Encryption Algorithms in Java</title><link>https://foojay.io/today/securing-symmetric-encryption-algorithms-in-java/</link><pubDate>Fri, 29 Dec 2023 05:53:50 +0000</pubDate><guid>https://foojay.io/today/securing-symmetric-encryption-algorithms-in-java/</guid><description>&lt;p&gt;&lt;strong&gt;In our connected world, securing digital data has become an utmost priority. With the wide spread of Java applications in various sectors, from banking to healthcare, we must emphasize the importance of encryption. Encryption is converting readable data or plaintext into unreadable data or ciphertext, ensuring that even if encrypted data is intercepted, it remains inaccessible to unauthorized individuals.&lt;/strong&gt;&lt;/p&gt;&#10;&lt;p&gt;The first choice you must make as a developer is whether you need encryption. Although this sounds like a strange question, the key principle of encryption is that the ciphertext can be reverted into the original text.&lt;/p&gt;</description></item><item><title>Handling security vulnerabilities in Spring Boot</title><link>https://foojay.io/today/handling-security-vulnerabilities-in-spring-boot/</link><pubDate>Fri, 22 Dec 2023 14:59:10 +0000</pubDate><guid>https://foojay.io/today/handling-security-vulnerabilities-in-spring-boot/</guid><description>&lt;p&gt;&lt;strong&gt;In the world of software development, managing dependencies is a core part of creating strong and secure applications. Spring Boot, a favorite among Java developers, makes building applications easier, but there&amp;rsquo;s more to it than meets the eye. Keeping your dependencies in check is crucial to ensure that your Spring Boot projects run smoothly and remain resilient in the face of ever-evolving threats.&lt;/strong&gt;&lt;/p&gt;&#10;&lt;p&gt;One critical aspect of Spring Boot dependency management is security. Software vulnerabilities are discovered frequently, and by keeping your project&amp;rsquo;s dependencies up to date, you&amp;rsquo;re essentially putting on your digital security armor. Outdated dependencies can be like unlocked doors, inviting trouble from potential threats, and that&amp;rsquo;s something we&amp;rsquo;d like to avoid.&lt;/p&gt;</description></item><item><title>Using JLink to create smaller Docker images for Spring Boot apps</title><link>https://foojay.io/today/using-jlink-to-create-smaller-docker-images-for-your-spring-boot-java-application/</link><pubDate>Thu, 21 Sep 2023 11:33:05 +0000</pubDate><guid>https://foojay.io/today/using-jlink-to-create-smaller-docker-images-for-your-spring-boot-java-application/</guid><description>&lt;p&gt;&lt;strong&gt;Containers bring new flexibility and agility to software development and deployment. However, they also introduce a new attack surface that malicious actors can exploit. A compromised container can give an attacker access to other containers and even the host system. Smaller images that contain fewer artifacts are already a great help in achieving a smaller attack surface.&lt;/strong&gt;&lt;/p&gt;&#10;&lt;p&gt;In this article, we&amp;rsquo;ll present an in-depth exploration of utilizing JLink to optimize Docker image sizes, enhancing application security and performance. We&amp;rsquo;ll showcase how to use JLink and integrate it with Docker to efficiently deploy your Spring Boot or general Java applications.&lt;/p&gt;</description></item><item><title>SnakeYaml 2.0: Solving the unsafe deserialization vulnerability</title><link>https://foojay.io/today/snakeyaml-2-0-solving-the-unsafe-deserialization-vulnerability/</link><pubDate>Thu, 20 Jul 2023 07:17:16 +0000</pubDate><guid>https://foojay.io/today/snakeyaml-2-0-solving-the-unsafe-deserialization-vulnerability/</guid><description>&lt;p&gt;&lt;strong&gt;In December of last year, we reported &lt;a href="https://www.cve.org/CVERecord?id=CVE-2022-1471" target="_blank" rel="noopener noreferrer"&gt;++CVE-2022-1471++&lt;/a&gt; to you. This unsafe deserialization problem could easily lead to arbitrary code execution under the right circumstances.&lt;/strong&gt;&lt;/p&gt;&#10;&lt;p&gt;In the deep-dive blog post &amp;ldquo;&lt;a href="https://snyk.io/blog/unsafe-deserialization-snakeyaml-java-cve-2022-1471/" target="_blank" rel="noopener noreferrer"&gt;++Unsafe deserialization vulnerability in SnakeYaml (CVE-2022-1471)++&lt;/a&gt;&amp;rdquo;, I explained the problems in this library and how it could be executed. The gist of the problem was that by default SnakeYaml parsed the incoming yaml to the generic object type.&lt;/p&gt;&#10;&lt;p&gt;This creates an opportunity to deserialize other classes that are available on the class path. Regardless of the &lt;code&gt;ClassCastException&lt;/code&gt; that is thrown, if the object has already been loaded, the damage is done.&lt;/p&gt;</description></item><item><title>Preventing Cross-Site Scripting (XSS) in Java with Snyk Code</title><link>https://foojay.io/today/preventing-cross-site-scripting-xss-in-java-applications-with-snyk-code/</link><pubDate>Fri, 09 Jun 2023 15:23:39 +0000</pubDate><guid>https://foojay.io/today/preventing-cross-site-scripting-xss-in-java-applications-with-snyk-code/</guid><description>&lt;p&gt;Java is a powerful backend programming language that can also be used to write HTML pages for web applications. However, developers must know the potential security risks associated with Cross-Site Scripting (XSS) attacks when creating these pages.&lt;/p&gt;&#10;&lt;p&gt;With the rise of modern templating frameworks, preventing security attacks through proper input validation and encoding techniques has become easier.&lt;/p&gt;&#10;&lt;p&gt;However, when developers choose to create their own HTML pages without using a templating framework, there is an increased risk of introducing vulnerabilities.&lt;/p&gt;</description></item><item><title>Mitigating Path Traversal Vulnerabilities in Java</title><link>https://foojay.io/today/mitigating-path-traversal-vulnerabilities-in-java/</link><pubDate>Fri, 24 Mar 2023 07:57:06 +0000</pubDate><guid>https://foojay.io/today/mitigating-path-traversal-vulnerabilities-in-java/</guid><description>&lt;p&gt;Path traversal is a type of security vulnerability that can occur when a web application or service allows an attacker to access server files or directories that are outside the intended directory structure.&lt;/p&gt;&#10;&lt;p&gt;This can lead to the unauthorized reading or modification of sensitive data.&lt;/p&gt;&#10;&lt;p&gt;In the context of file uploads, a path traversal vulnerability can occur when an application fails to properly validate the file path specified by the user, which can allow the attacker to upload a malicious file with a filename that gives them access to restricted files on the server.&lt;/p&gt;</description></item><item><title>How to create SBOMs in Java with Maven and Gradle</title><link>https://foojay.io/today/how-to-create-sboms-in-java-with-maven-and-gradle/</link><pubDate>Fri, 17 Mar 2023 09:08:28 +0000</pubDate><guid>https://foojay.io/today/how-to-create-sboms-in-java-with-maven-and-gradle/</guid><description>&lt;p&gt;When building applications in Java, we highly depend on external libraries and frameworks. And each Java package that is imported likely also depends on more libraries. This means that the amount of Java packages included in your application is often not really transparent.&lt;/p&gt;&#10;&lt;p&gt;As a developer, these nested (transitive) dependencies create the problem that you probably do not know all the libraries you are actually using.&lt;/p&gt;&#10;&lt;p&gt;Recently, we discussed why and how we should maintain our dependencies carefully. In the article &lt;a href="https://snyk.io/blog/best-practices-for-managing-java-dependencies/" target="_blank" rel="noopener noreferrer"&gt;Best practices for managing Java dependencies&lt;/a&gt;, I discussed the options and tools available for setting up a dependency management strategy.&lt;/p&gt;</description></item><item><title>Unsafe Deserialization Vulnerability in SnakeYaml</title><link>https://foojay.io/today/unsafe-deserialization-vulnerability-in-snakeyaml-cve-2022-1471/</link><pubDate>Thu, 12 Jan 2023 13:19:29 +0000</pubDate><guid>https://foojay.io/today/unsafe-deserialization-vulnerability-in-snakeyaml-cve-2022-1471/</guid><description>&lt;p&gt;SnakeYaml is a well-known YAML 1.1 parser and emitter for Java.&lt;/p&gt;&#10;&lt;p&gt;Recently, a vulnerability — &lt;a href="https://www.cve.org/CVERecord?id=CVE-2022-1471" target="_blank" rel="noopener noreferrer"&gt;CVE-2022-1471&lt;/a&gt; — was reported for this package. This vulnerability can lead to arbitrary code execution.&lt;/p&gt;&#10;&lt;p&gt;The &lt;code&gt;org.yaml:snakeyaml&lt;/code&gt; package is widely used in the Java ecosystem, in part because it is packaged by default with Spring Boot in the &lt;code&gt;spring-boot-starter&lt;/code&gt;.&lt;/p&gt;&#10;&lt;p&gt;In this article, we look into the security vulnerability affecting this Java library, discuss the potential hazardous impact it may have on your applications, and weigh the actual risks.&lt;/p&gt;</description></item><item><title>Foojay Podcast #7: Security in Java -- what do we need to know?</title><link>https://foojay.io/today/foojay-podcast-7/</link><pubDate>Mon, 21 Nov 2022 10:22:14 +0000</pubDate><guid>https://foojay.io/today/foojay-podcast-7/</guid><description>&lt;p&gt;For this Foojay Podcast**,** we invited security experts to dive into the fascinating world of secure coding and detecting vulnerabilities in your Java applications.&lt;/p&gt;&#10;&lt;p&gt;How can you make and keep your systems safe?&lt;/p&gt;&#10;&lt;p&gt;That&amp;rsquo;s what we want to find out&amp;hellip;&lt;/p&gt;&#10;&lt;div style="position: relative; padding-bottom: 56.25%; height: 0; overflow: hidden;"&gt;&#10;&#9;&#9;&#9;&lt;iframe allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share; fullscreen" loading="eager" referrerpolicy="strict-origin-when-cross-origin" src="https://www.youtube.com/embed/ATXMizsu1Rc?autoplay=0&amp;amp;controls=1&amp;amp;end=0&amp;amp;loop=0&amp;amp;mute=0&amp;amp;start=0" style="position: absolute; top: 0; left: 0; width: 100%; height: 100%; border:0;" title="YouTube video"&gt;&lt;/iframe&gt;&#10;&#9;&#9;&lt;/div&gt;&#10;&#10;&lt;h2 id="podcast-apps"&gt;Podcast Apps&lt;/h2&gt;&#10;&lt;p&gt;You can listen and subscribe to the Foojay Podcast on:&lt;/p&gt;</description></item><item><title>CVE-2022-42889: Apache Commons Text (Text4Shell) Vulnerability</title><link>https://foojay.io/today/reviewing-cve-2022-42889-arbitrary-code-execution-vulnerability-in-apache-commons-text-text4shell/</link><pubDate>Thu, 03 Nov 2022 14:56:24 +0000</pubDate><guid>https://foojay.io/today/reviewing-cve-2022-42889-arbitrary-code-execution-vulnerability-in-apache-commons-text-text4shell/</guid><description>&lt;p&gt;First things first, let&amp;rsquo;s be clear that &lt;strong&gt;this is NOT a new Log4Shell or Spring4Shell vulnerability&lt;/strong&gt;.&lt;/p&gt;&#10;&lt;p&gt;Although it is a remote code execution issue, the impact is neither as severe nor as easily exploitable as the issue in Log4j from December 2021.&lt;/p&gt;&#10;&lt;p&gt;Similar to the Log4j issue, the essence of the problem is that you can perform a lookup that can then be misused.&lt;/p&gt;&#10;&lt;p&gt;However, the Log4shell vulnerability was very easy to exploit — which is not necessarily the case this time.&lt;/p&gt;</description></item><item><title>How to Use Java DTOs to Stay Secure</title><link>https://foojay.io/today/how-to-use-java-dtos-to-stay-secure/</link><pubDate>Fri, 21 Oct 2022 07:29:57 +0000</pubDate><guid>https://foojay.io/today/how-to-use-java-dtos-to-stay-secure/</guid><description>&lt;p&gt;&lt;del&gt;This article was orignally posted on &lt;a href="https://snyk.io/blog/how-to-use-java-dtos/" target="_blank" rel="noopener noreferrer"&gt;Snyk.io&lt;/a&gt; and is reused with permission.&lt;/del&gt;&lt;/p&gt;&#10;&lt;p&gt;Data Transfer Objects (DTOs) in Java are objects that transport data between subsystems.&lt;/p&gt;&#10;&lt;p&gt;It is an enterprise design pattern to aggregate data.&lt;/p&gt;&#10;&lt;p&gt;The main purpose is to reduce the number of system calls needed between the subsystems, reducing the amount of overhead created.&lt;/p&gt;&#10;&lt;p&gt;In this article, I will explain how DTOs are used in modern Java applications, ways your application can benefit, and how Java DTOs can help you be more secure by preventing accidental data leaks.&lt;/p&gt;</description></item><item><title>Best Practices for Managing Java Dependencies</title><link>https://foojay.io/today/best-practices-for-managing-java-dependencies/</link><pubDate>Thu, 15 Sep 2022 08:21:10 +0000</pubDate><guid>https://foojay.io/today/best-practices-for-managing-java-dependencies/</guid><description>&lt;p&gt;Creating Java applications is great, and many resources are available.&lt;/p&gt;&#10;&lt;p&gt;To speed up development, many folks use frameworks and libraries that do some of the heavy lifting.&lt;/p&gt;&#10;&lt;p&gt;When looking at modern Java applications, almost all of them contain dependencies from libraries developed by someone else.&lt;/p&gt;&#10;&lt;p&gt;Dependencies take up about 80 to 90 percent of the binary — so, we should take good care of them when creating a Java project.&lt;/p&gt;</description></item><item><title>Controlling your Server with a Reverse Shell Attack</title><link>https://foojay.io/today/controlling-your-server-with-a-reverse-shell-attack/</link><pubDate>Thu, 08 Sep 2022 13:00:22 +0000</pubDate><guid>https://foojay.io/today/controlling-your-server-with-a-reverse-shell-attack/</guid><description>&lt;p&gt;Creating and running an application in your favorite language is usually pretty simple. After you create your application, deploying it and showing it to the world is also quite straightforward.&lt;/p&gt;&#10;&lt;p&gt;The last thing you need is someone to take over your system and fully control your brand new application.&lt;/p&gt;&#10;&lt;p&gt;In this article, I&amp;rsquo;ll explain how this can happen with a remote shell attack.&lt;/p&gt;&#10;&lt;p&gt;Note: The code examples in this article are for educational purposes only. I mainly try to explain what a remote shell attack is and how it can occur in your applications. Using this or any other example to hack someone is not advised. In most countries, hacking without the consent of the target is illegal, even if you have the best intentions.&lt;/p&gt;</description></item><item><title>Exploring the Apache Commons Configuration RCE Vulnerability</title><link>https://foojay.io/today/exploring-cve-2022-33980-the-apache-commons-configuration-rce-vulnerability/</link><pubDate>Thu, 18 Aug 2022 10:10:37 +0000</pubDate><guid>https://foojay.io/today/exploring-cve-2022-33980-the-apache-commons-configuration-rce-vulnerability/</guid><description>&lt;p&gt;This article was originally posted on &lt;a href="https://snyk.io/blog/cve-2022-33980-apache-commons-configuration-rce-vulnerability/" target="_blank" rel="noopener noreferrer"&gt;Snyk.io&lt;/a&gt; and is co-written by &lt;a href="https://twitter.com/h4ck3rky13" target="_blank" rel="noopener noreferrer"&gt;Kyle Suero&lt;/a&gt; and &lt;a href="https://twitter.com/BrianVerm" target="_blank" rel="noopener noreferrer"&gt;Brian Vermeer&lt;/a&gt;&lt;/p&gt;&#10;&lt;p&gt;Before we dive into the details of this vulnerability, we want to make it clear that there&amp;rsquo;s no need for panic.&lt;/p&gt;&#10;&lt;p&gt;Many systems permit the use of various types of code in configuration files, and there are legitimate use cases to include string and variable interpolation in the configuration of applications and systems.&lt;/p&gt;&#10;&lt;p&gt;This is &lt;strong&gt;not&lt;/strong&gt; Log4Shell all over again.&lt;/p&gt;</description></item><item><title>Secure CI/CD Pipelines with GitHub Actions for Your Java Apps</title><link>https://foojay.io/today/building-secure-ci-cd-pipelines-with-github-actions-for-your-java-application/</link><pubDate>Thu, 11 Aug 2022 06:28:38 +0000</pubDate><guid>https://foojay.io/today/building-secure-ci-cd-pipelines-with-github-actions-for-your-java-application/</guid><description>&lt;p&gt;This article was originally post at&lt;a href="https://snyk.io/blog/building-a-secure-pipeline-with-github-actions/" target="_blank" rel="noopener noreferrer"&gt;Snyk.io&lt;/a&gt; and is used with permission&lt;/p&gt;&#10;&lt;p&gt;GitHub Actions has made it easier than ever to build a secure continuous integration and continuous delivery (CI/CD) pipeline for your GitHub projects.&lt;/p&gt;&#10;&lt;p&gt;By integrating your CI/CD pipeline and GitHub repository, GitHub Actions allows you to automate your build, test, and deployment pipeline.&lt;/p&gt;&#10;&lt;p&gt;You can create workflows that build and test every pull request to your repository or deploy merged pull requests to production.&lt;/p&gt;</description></item><item><title>Deserialization exploits in Java: why should I Care?</title><link>https://foojay.io/today/deserialization-exploits-in-java-why-should-i-care/</link><pubDate>Thu, 14 Jul 2022 07:39:03 +0000</pubDate><guid>https://foojay.io/today/deserialization-exploits-in-java-why-should-i-care/</guid><description>&lt;p&gt;&lt;strong&gt;Hackers refer to deserialization in Java as &amp;ldquo;the gift that keeps on giving&amp;rdquo;. But what is actually the problem? In most cases, it is not even your own code that creates this security vulnerability. This problem is also not restricted to Java&amp;rsquo;s custom serialization framework. When deserializing JSON, XML, or YAML, similar issues can occur as well.&lt;/strong&gt;&lt;/p&gt;&#10;&lt;p&gt;I recently gave a talk about this during &lt;a href="https://www.devoxx.co.uk/" target="_blank" rel="noopener noreferrer"&gt;Devoxx UK&lt;/a&gt;, the largest and most prestigious Java community conference in the United Kingdom. In this talk, I explain how deserialization vulnerabilities work natively in Java and how attack chains are created. This was loosely based on my blog post: &lt;a href="https://snyk.io/blog/serialization-and-deserialization-in-java/" target="_blank" rel="noopener noreferrer"&gt;&amp;ldquo;Serialization and deserialization in Java: explaining the Java deserialize vulnerability&amp;rdquo;&lt;/a&gt;.&lt;/p&gt;</description></item><item><title>How to do password hashing in Java applications the right way</title><link>https://foojay.io/today/how-to-do-password-hashing-in-java-applications-the-right-way/</link><pubDate>Thu, 12 May 2022 15:04:55 +0000</pubDate><guid>https://foojay.io/today/how-to-do-password-hashing-in-java-applications-the-right-way/</guid><description>&lt;p&gt;There are multiple ways to store sensitive passwords. And while having choices can be great, in the context of password storage, picking wrong can be a security nightmare. With that in mind, let&amp;rsquo;s &lt;em&gt;hash&lt;/em&gt; out some of your options 🥁🥁.In this article we&amp;rsquo;ll discuss how you should hash passwords in your Java applications. While you can apply these principles to any ecosystem, we&amp;rsquo;ll specifically showcase the best way to handle password hashing in Java.&lt;/p&gt;</description></item><item><title>Spring4Shell: The zero-day RCE in the Spring Framework explained</title><link>https://foojay.io/today/spring4shell-the-zero-day-rce-in-the-spring-framework-explained-ready/</link><pubDate>Fri, 08 Apr 2022 04:17:45 +0000</pubDate><guid>https://foojay.io/today/spring4shell-the-zero-day-rce-in-the-spring-framework-explained-ready/</guid><description>&lt;p&gt;On March 30, 2022, a critical &lt;a href="https://snyk.io/vuln/SNYK-JAVA-ORGSPRINGFRAMEWORK-2436751" target="_blank" rel="noopener noreferrer"&gt;remote code execution (RCE) vulnerability&lt;/a&gt; was found in the Spring Framework. More specifically, it is part of the &lt;code&gt;spring-beans&lt;/code&gt; package, a transitive dependency in both &lt;code&gt;spring-webmvc&lt;/code&gt; and &lt;code&gt;spring-webflux&lt;/code&gt;. This vulnerability is another example of why &lt;a href="https://snyk.io/blog/preventing-malicious-packages-and-supply-chain-attacks-with-snyk/" target="_blank" rel="noopener noreferrer"&gt;securing the software supply chain&lt;/a&gt; is important to open source.&lt;/p&gt;&#10;&lt;p&gt;Security resources like &lt;a href="https://www.lunasec.io/docs/blog/spring-rce-vulnerabilities/" target="_blank" rel="noopener noreferrer"&gt;Lunasec&lt;/a&gt;, &lt;a href="https://www.rapid7.com/blog/post/2022/03/30/spring4shell-zero-day-vulnerability-in-spring-framework/" target="_blank" rel="noopener noreferrer"&gt;Rapid7&lt;/a&gt; and &lt;a href="https://www.praetorian.com/blog/spring-core-jdk9-rce/" target="_blank" rel="noopener noreferrer"&gt;Praetorian&lt;/a&gt; confirmed that the vulnerability is real, and in the meantime, Spring has already released a new version that mitigates this problem, so &lt;a href="https://snyk.io/blog/is-there-such-a-thing-as-spring4shell/" target="_blank" rel="noopener noreferrer"&gt;we recommend updating&lt;/a&gt;. While &lt;strong&gt;Spring4Shell&lt;/strong&gt; does not appear to have the same impact as the recent Log4Shell vulnerability, it should still be evaluated and prioritized by every organization using the Spring Framework. In this post, we&amp;rsquo;ll explore how the RCE works.&lt;/p&gt;</description></item><item><title>Security Warning: Your Java Attack Surface Just Got Bigger</title><link>https://foojay.io/today/security-warning-your-java-attack-surface-just-got-bigger/</link><pubDate>Thu, 17 Mar 2022 16:35:38 +0000</pubDate><guid>https://foojay.io/today/security-warning-your-java-attack-surface-just-got-bigger/</guid><description>&lt;p&gt;Building cloud-native Java applications is undoubtedly awesome.&lt;/p&gt;&#10;&lt;p&gt;However, it comes with undeniable new risks. Next to your own code, you are relying on so many other things.&lt;/p&gt;&#10;&lt;p&gt;Blindly depending on open-source libraries and Docker images can form a massive risk for your application. The wrong package can introduce severe vulnerabilities into your application, exposing your application and your user&amp;rsquo;s data.&lt;/p&gt;&#10;&lt;p&gt;In the talk below we&amp;rsquo;ll show common threats, vulnerabilities, and misconfiguration including the recently disclosed issues in Log4j. Most importantly, you&amp;rsquo;ll learn how to protect your application with actionable remediation and best practices.&lt;/p&gt;</description></item><item><title>Java Logging: What To Log &amp; What Not To Log?</title><link>https://foojay.io/today/java-logging-what-to-log-what-not-to-log/</link><pubDate>Sat, 18 Dec 2021 11:29:33 +0000</pubDate><guid>https://foojay.io/today/java-logging-what-to-log-what-not-to-log/</guid><description>&lt;p&gt;Logs are a handy tool to spot mistakes and debug code. For engineers and, specifically, in a DevOps environment, the logs are a very valuable tool.&lt;/p&gt;&#10;&lt;p&gt;In addition to the functional aspect of logging, logs are also critical from a Java security perspective. When a security breach occurs, your log files are the first place to look for clues about what happened. But with a large number of different frameworks available for logging in Java applications, how do you pick the right one? More importantly, how to do Java logging right?&lt;/p&gt;</description></item></channel></rss>