<?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://foojayio.github.io/website/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://foojayio.github.io/website/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://foojayio.github.io/website/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://foojayio.github.io/website/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;
&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://foojayio.github.io/website/today/how-chat-memory-manipulation-can-ruin-your-ai-system/</link><pubDate>Thu, 16 Oct 2025 10:45:59 +0000</pubDate><guid>https://foojayio.github.io/website/today/how-chat-memory-manipulation-can-ruin-your-ai-system/</guid><description>&lt;h2 id="h2-0-do-llms-have-any-conversational-memory"&gt;Do LLMs have any conversational memory?&lt;/h2&gt;
&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;
&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://foojayio.github.io/website/today/ensuring-safe-and-reliable-ai-interactions-with-llm-guardrails/</link><pubDate>Tue, 17 Jun 2025 07:11:24 +0000</pubDate><guid>https://foojayio.github.io/website/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;
&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://foojayio.github.io/website/today/foojay-podcast-72/</link><pubDate>Mon, 02 Jun 2025 13:55:37 +0000</pubDate><guid>https://foojayio.github.io/website/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://foojayio.github.io/website/today/what-is-rag-and-how-to-secure-it/</link><pubDate>Fri, 16 May 2025 11:48:16 +0000</pubDate><guid>https://foojayio.github.io/website/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://foojayio.github.io/website/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://foojayio.github.io/website/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;
&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;
&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://foojayio.github.io/website/today/creating-sboms-with-the-snyk-cli/</link><pubDate>Fri, 07 Mar 2025 12:25:36 +0000</pubDate><guid>https://foojayio.github.io/website/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;
&lt;h2 id="h2-0-what-are-sboms"&gt;What are SBOMs?&lt;/h2&gt;
&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://foojayio.github.io/website/today/foojay-podcast-58/</link><pubDate>Mon, 30 Sep 2024 07:43:46 +0000</pubDate><guid>https://foojayio.github.io/website/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;
&lt;p&gt;In this podcast, we&amp;rsquo;ll discuss how developers can secure their code.&lt;/p&gt;
&lt;p&gt;I talked with three authors who posted a security and code quality post on Foojay.io.&lt;/p&gt;
&lt;h2 id="h2-0-video"&gt;Video&lt;/h2&gt;
&lt;div style="position: relative; padding-bottom: 56.25%; height: 0; overflow: hidden;"&gt;
			&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;
		&lt;/div&gt;

&lt;h2 id="h2-1-podcast-apps"&gt;Podcast Apps&lt;/h2&gt;
&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://foojayio.github.io/website/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://foojayio.github.io/website/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;
&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;
&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 &amp;mdash; 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://foojayio.github.io/website/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://foojayio.github.io/website/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;
&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://foojayio.github.io/website/today/securing-symmetric-encryption-algorithms-in-java/</link><pubDate>Fri, 29 Dec 2023 05:53:50 +0000</pubDate><guid>https://foojayio.github.io/website/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;
&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://foojayio.github.io/website/today/handling-security-vulnerabilities-in-spring-boot/</link><pubDate>Fri, 22 Dec 2023 14:59:10 +0000</pubDate><guid>https://foojayio.github.io/website/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;
&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://foojayio.github.io/website/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://foojayio.github.io/website/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;
&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://foojayio.github.io/website/today/snakeyaml-2-0-solving-the-unsafe-deserialization-vulnerability/</link><pubDate>Thu, 20 Jul 2023 07:17:16 +0000</pubDate><guid>https://foojayio.github.io/website/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;
&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;</description></item><item><title>Preventing Cross-Site Scripting (XSS) in Java with Snyk Code</title><link>https://foojayio.github.io/website/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://foojayio.github.io/website/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;
&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;
&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://foojayio.github.io/website/today/mitigating-path-traversal-vulnerabilities-in-java/</link><pubDate>Fri, 24 Mar 2023 07:57:06 +0000</pubDate><guid>https://foojayio.github.io/website/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;
&lt;p&gt;This can lead to the unauthorized reading or modification of sensitive data.&lt;/p&gt;
&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://foojayio.github.io/website/today/how-to-create-sboms-in-java-with-maven-and-gradle/</link><pubDate>Fri, 17 Mar 2023 09:08:28 +0000</pubDate><guid>https://foojayio.github.io/website/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;
&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;
&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://foojayio.github.io/website/today/unsafe-deserialization-vulnerability-in-snakeyaml-cve-2022-1471/</link><pubDate>Thu, 12 Jan 2023 13:19:29 +0000</pubDate><guid>https://foojayio.github.io/website/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;
&lt;p&gt;Recently, a vulnerability &amp;mdash; &lt;a href="https://www.cve.org/CVERecord?id=CVE-2022-1471" target="_blank" rel="noopener noreferrer"&gt;CVE-2022-1471&lt;/a&gt;
 &amp;mdash; was reported for this package. This vulnerability can lead to arbitrary code execution.&lt;/p&gt;
&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;
&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://foojayio.github.io/website/today/foojay-podcast-7/</link><pubDate>Mon, 21 Nov 2022 10:22:14 +0000</pubDate><guid>https://foojayio.github.io/website/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;
&lt;p&gt;How can you make and keep your systems safe?&lt;/p&gt;
&lt;p&gt;That&amp;rsquo;s what we want to find out&amp;hellip;&lt;/p&gt;
&lt;div style="position: relative; padding-bottom: 56.25%; height: 0; overflow: hidden;"&gt;
			&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;
		&lt;/div&gt;

&lt;h2 id="h2-1--odcast-pps"&gt;Podcast Apps&lt;/h2&gt;
&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://foojayio.github.io/website/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://foojayio.github.io/website/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;
&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;
&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;
&lt;p&gt;However, the Log4shell vulnerability was very easy to exploit &amp;mdash; 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://foojayio.github.io/website/today/how-to-use-java-dtos-to-stay-secure/</link><pubDate>Fri, 21 Oct 2022 07:29:57 +0000</pubDate><guid>https://foojayio.github.io/website/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;
&lt;p&gt;Data Transfer Objects (DTOs) in Java are objects that transport data between subsystems.&lt;/p&gt;
&lt;p&gt;It is an enterprise design pattern to aggregate data.&lt;/p&gt;
&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;
&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://foojayio.github.io/website/today/best-practices-for-managing-java-dependencies/</link><pubDate>Thu, 15 Sep 2022 08:21:10 +0000</pubDate><guid>https://foojayio.github.io/website/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;
&lt;p&gt;To speed up development, many folks use frameworks and libraries that do some of the heavy lifting.&lt;/p&gt;
&lt;p&gt;When looking at modern Java applications, almost all of them contain dependencies from libraries developed by someone else.&lt;/p&gt;
&lt;p&gt;Dependencies take up about 80 to 90 percent of the binary &amp;mdash; 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://foojayio.github.io/website/today/controlling-your-server-with-a-reverse-shell-attack/</link><pubDate>Thu, 08 Sep 2022 13:00:22 +0000</pubDate><guid>https://foojayio.github.io/website/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;
&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;
&lt;p&gt;In this article, I&amp;rsquo;ll explain how this can happen with a remote shell attack.&lt;/p&gt;
&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://foojayio.github.io/website/today/exploring-cve-2022-33980-the-apache-commons-configuration-rce-vulnerability/</link><pubDate>Thu, 18 Aug 2022 10:10:37 +0000</pubDate><guid>https://foojayio.github.io/website/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;
&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;
&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;
&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://foojayio.github.io/website/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://foojayio.github.io/website/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;
&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;
&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;
&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://foojayio.github.io/website/today/deserialization-exploits-in-java-why-should-i-care/</link><pubDate>Thu, 14 Jul 2022 07:39:03 +0000</pubDate><guid>https://foojayio.github.io/website/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;
&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://foojayio.github.io/website/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://foojayio.github.io/website/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://foojayio.github.io/website/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://foojayio.github.io/website/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;
&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://foojayio.github.io/website/today/security-warning-your-java-attack-surface-just-got-bigger/</link><pubDate>Thu, 17 Mar 2022 16:35:38 +0000</pubDate><guid>https://foojayio.github.io/website/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;
&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;
&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;
&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://foojayio.github.io/website/today/java-logging-what-to-log-what-not-to-log/</link><pubDate>Sat, 18 Dec 2021 11:29:33 +0000</pubDate><guid>https://foojayio.github.io/website/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;
&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><item><title>Log4Shell: Critical Log4j RCE Vulnerabilty -- Update to Version 2.15.0</title><link>https://foojayio.github.io/website/today/log4shell-critical-log4j-rce-vulnerabilty-update-to-version-2-15-0/</link><pubDate>Mon, 13 Dec 2021 07:16:56 +0000</pubDate><guid>https://foojayio.github.io/website/today/log4shell-critical-log4j-rce-vulnerabilty-update-to-version-2-15-0/</guid><description>&lt;p&gt;On Dec.10, 2021, a new, critical &lt;a href="https://logging.apache.org/log4j/2.x/" target="_blank" rel="noopener noreferrer"&gt;Log4j&lt;/a&gt;
 vulnerability was disclosed: &lt;a href="https://techcrunch.com/2021/12/10/apple-icloud-twitter-and-minecraft-vulnerable-to-ubiquitous-zero-day-exploit/" target="_blank" rel="noopener noreferrer"&gt;Log4Shell&lt;/a&gt;
.&lt;/p&gt;
&lt;p&gt;This vulnerability within the popular Java logging framework was published as &lt;a href="https://security.snyk.io/vuln/SNYK-JAVA-ORGAPACHELOGGINGLOG4J-2314720" target="_blank" rel="noopener noreferrer"&gt;CVE-2021-44228&lt;/a&gt;
 and categorized as &lt;code&gt;Critical&lt;/code&gt; with a CVSS score of 10, which is the highest score possible. The vulnerability was discovered by Chen Zhaojun from Alibaba&amp;rsquo;s Cloud Security team.&lt;/p&gt;
&lt;p&gt;All current versions of log4j2 up to and including 2.14.1 are vulnerable. You can remediate this vulnerability by updating to &lt;a href="https://logging.apache.org/log4j/2.x/download.html" target="_blank" rel="noopener noreferrer"&gt;version 2.15.0 or later&lt;/a&gt;
.&lt;/p&gt;</description></item><item><title>New Java 17 Features for Improved Security and Serialization</title><link>https://foojayio.github.io/website/today/new-java-17-features-for-improved-security-and-serialization/</link><pubDate>Thu, 02 Dec 2021 08:06:36 +0000</pubDate><guid>https://foojayio.github.io/website/today/new-java-17-features-for-improved-security-and-serialization/</guid><description>&lt;p&gt;In December 2020, I wrote the article&lt;a href="https://snyk.io/blog/serialization-and-deserialization-in-java/" target="_blank" rel="noopener noreferrer"&gt;Serialization and deserialization in Java: explaining the Java deserialize vulnerability&lt;/a&gt;
 about the problems Java has with its custom serialization implementation. The serialization framework is so deeply embedded inside Java that knowing how dangerous some implementation can be is important. Insecure deserialization can lead to arbitrary code executions if a gadget chain is created from your classpath classes.&lt;/p&gt;
&lt;p&gt;Recently, Java 17 &amp;mdash; the new LTS version &amp;mdash; was released. But how do the new features impact this problem, and can we prevent deserialization vulnerabilities better using these features?&lt;/p&gt;</description></item><item><title>How Social Trends Help Me Fix Essential Vulnerabilities</title><link>https://foojayio.github.io/website/today/how-social-trends-help-me-fix-essential-vulnerabilities/</link><pubDate>Thu, 04 Nov 2021 14:14:55 +0000</pubDate><guid>https://foojayio.github.io/website/today/how-social-trends-help-me-fix-essential-vulnerabilities/</guid><description>&lt;p&gt;Recently, Snyk added &lt;a href="https://snyk.io/blog/social-media-for-security-intelligence/" target="_blank" rel="noopener noreferrer"&gt;social trends&lt;/a&gt;
 to its &lt;a href="https://snyk.io/product/vulnerability-database/" target="_blank" rel="noopener noreferrer"&gt;vulnerability data&lt;/a&gt;
. This new indicator shows you what vulnerabilities are trending so you can better prioritize remediation. Our research team found a strong correlation between socially trending vulnerabilities and the existence of exploits that can actually harm your application.&lt;/p&gt;
&lt;p&gt;Following the social trends of security vulnerabilities makes practical sense. When a specific vulnerability is gaining a lot of interest in social &amp;mdash; Twitter, for instance &amp;mdash; it means a lot of people are aware of the problem. Statistically, this also means more people that want to do you harm. Therefore, it can be important to put some extra focus on the vulnerabilities in your system that are socially trending.&lt;/p&gt;</description></item><item><title>Discussion: The State of Java 2021</title><link>https://foojayio.github.io/website/today/discussion-state-of-java-2021/</link><pubDate>Mon, 25 Oct 2021 14:05:56 +0000</pubDate><guid>https://foojayio.github.io/website/today/discussion-state-of-java-2021/</guid><description>&lt;p&gt;There is a lot going in the Java world lately. A lot of this is already captured is the &lt;a href="https://snyk.io/jvm-ecosystem-report-2021/" target="_blank" rel="noopener noreferrer"&gt;Snyk JVM Ecosystem Report 2021&lt;/a&gt;
 based on a joint survey by &lt;a href="http://azul.com" target="_blank" rel="noopener noreferrer"&gt;Azul&lt;/a&gt;
 and &lt;a href="http://snyk.io" target="_blank" rel="noopener noreferrer"&gt;Snyk&lt;/a&gt;
. In addition, Java 17 &amp;mdash; the new LTS version &amp;mdash; was released in September and Oracle uncovered their plans to shorten the LTS release cycle to every 2 years.&lt;/p&gt;
&lt;p&gt;In a recent livestream, I had a discussion with some great folks in the Java world about the highlights of the Snyk Java Ecosystem report and the current developments in the Java world.&lt;/p&gt;</description></item><item><title>Why You Should Upgrade to Maven Version 3.8.1 Today or Very Soon</title><link>https://foojayio.github.io/website/today/why-you-should-upgrade-to-maven-version-3-8-1-today-or-very-soon/</link><pubDate>Wed, 11 Aug 2021 08:06:09 +0000</pubDate><guid>https://foojayio.github.io/website/today/why-you-should-upgrade-to-maven-version-3-8-1-today-or-very-soon/</guid><description>&lt;p&gt;If you are working in the Java ecosystem and building your applications with an older Maven version, this message is for you.&lt;/p&gt;
&lt;p&gt;Check your Maven version by typing &lt;code&gt;mvn -version&lt;/code&gt;! If you are still running on an old Maven version like 3.6.3 or below you definitely need to upgrade to version 3.8.1 because of security reasons. Be aware that to run Maven 3.8.1, Java 7+ is required.&lt;/p&gt;
&lt;p&gt;Luckily we found out in the &lt;a href="https://snyk.io/jvm-ecosystem-report-2021/" target="_blank" rel="noopener noreferrer"&gt;JVM Ecosystem report 2021&lt;/a&gt;
 that not many people work with Java 6 or below. We do see that a lot of people use Maven so not upgrading can end up in serious issues for a large part of the ecosystem.&lt;/p&gt;</description></item><item><title>Getting Started with Snyk for Secure Java Development</title><link>https://foojayio.github.io/website/today/getting-started-with-snyk-for-secure-java-development/</link><pubDate>Thu, 29 Jul 2021 06:39:02 +0000</pubDate><guid>https://foojayio.github.io/website/today/getting-started-with-snyk-for-secure-java-development/</guid><description>&lt;p&gt;If you&amp;rsquo;re a Java developer who wants to develop your applications more securely, you&amp;rsquo;ve come to the right place. Snyk can help you with that mission.&lt;/p&gt;
&lt;p&gt;This article will explain how to begin with Snyk for &lt;a href="https://snyk.io/blog/10-java-security-best-practices/" target="_blank" rel="noopener noreferrer"&gt;secure Java development&lt;/a&gt;
 so you can be more secure from the get-go.&lt;/p&gt;
&lt;p&gt;If you&amp;rsquo;re new to Snyk, it&amp;rsquo;s important to know that we offer a variety of developer-focused products and tools. Some of these tools, like our CLI and some IDE integration, support multiple products. However, we can distinguish four different products within Snyk:&lt;/p&gt;</description></item><item><title>New JVM Ecosystem Report 2021 Has Arrived!</title><link>https://foojayio.github.io/website/today/new-jvm-ecosystem-report-2021-has-arrived/</link><pubDate>Fri, 18 Jun 2021 08:14:41 +0000</pubDate><guid>https://foojayio.github.io/website/today/new-jvm-ecosystem-report-2021-has-arrived/</guid><description>&lt;p&gt;Snyk has just released the annual JVM ecosystem report! This report presents the results of the largest annual survey on the state of the JVM ecosystem.&lt;/p&gt;
&lt;p&gt;This year&amp;rsquo;s survey is a cooperation between &lt;a href="https://snyk.io/" target="_blank" rel="noopener noreferrer"&gt;Snyk&lt;/a&gt;
 and &lt;a href="https://www.azul.com/" target="_blank" rel="noopener noreferrer"&gt;Azul&lt;/a&gt;
 and was slightly different from the previous surveys. We aimed for the survey to be more concise and focus only on the most important aspects of JVM developers today. Additionally, this year every participant was allowed to choose multiple options. We believe that the way the 2021 survey was designed, we have a better and more comprehensive view of the current JVM ecosystem. In this report, we also looked at different open data sources like GitHub and Google Trends to see how that data compares to the survey results.&lt;/p&gt;</description></item><item><title>Learn All About Java Encryption and Hashing</title><link>https://foojayio.github.io/website/today/java-encryption-and-hashing/</link><pubDate>Thu, 10 Jun 2021 08:04:22 +0000</pubDate><guid>https://foojayio.github.io/website/today/java-encryption-and-hashing/</guid><description>&lt;p&gt;If you need to store sensitive data in your system, you have to be sure that you have proper encryption in place. First of all, you need to decide what kind of encryption you need &amp;mdash;for instance, symmetric or asymmetric. Also, you need to choose how secure it needs to be. Stronger encryption takes more time and consumes more CPU. The most important part is that you don&amp;rsquo;t need to implement the encryption algorithms yourself. Encryption is hard and a trusted library solves encryption for you.&lt;/p&gt;</description></item><item><title>Sanitize All Input! Sanitize All Input! Sanitize All Input!</title><link>https://foojayio.github.io/website/today/sanitize-all-input/</link><pubDate>Thu, 13 May 2021 07:23:33 +0000</pubDate><guid>https://foojayio.github.io/website/today/sanitize-all-input/</guid><description>&lt;p&gt;Cross-site scripting (XSS) is a well-known issue and mostly utilized in JavaScript applications. However, Java is not immune to this. XSS is nothing more than an injection of JavaScript code that&amp;rsquo;s executed remotely. Rule #0 for preventing XSS, according to OWASP, is &amp;ldquo;Never insert untrusted data except in allowed locations.&amp;rdquo; The basic solution to this Java security risk is to prevent untrusted data, as much as possible, and sanitize everything else before using the data.&lt;/p&gt;</description></item><item><title>Preventing YAML Parsing Vulnerabilities in Java</title><link>https://foojayio.github.io/website/today/preventing-yaml-parsing-vulnerabilities-in-java/</link><pubDate>Thu, 06 May 2021 16:09:24 +0000</pubDate><guid>https://foojayio.github.io/website/today/preventing-yaml-parsing-vulnerabilities-in-java/</guid><description>&lt;p&gt;YAML is a human-readable language to serialize data that&amp;rsquo;s commonly used for config files. The word YAML is an acronym for &amp;ldquo;YAML ain&amp;rsquo;t a markup language&amp;rdquo; and was first released in 2001. You can compare YAML to JSON or XML as all of them are text-based structured formats.&lt;/p&gt;
&lt;p&gt;YAML files are often used to configure applications, application servers, or clusters. It is a very common format in Spring Boot applications and, of course, to configure Kubernetes. However, similarly to JSON and XML, you can use YAML to serialize and deserialize data.&lt;/p&gt;</description></item><item><title>Fix Java Security Issues While Coding in IntelliJ IDEA</title><link>https://foojayio.github.io/website/today/fix-java-security-issues-while-coding-in-intellij-idea/</link><pubDate>Thu, 29 Apr 2021 17:10:33 +0000</pubDate><guid>https://foojayio.github.io/website/today/fix-java-security-issues-while-coding-in-intellij-idea/</guid><description>&lt;p&gt;Nowadays, developers are responsible for more than just creating the application. Besides working on features, developers have to focus on their applications&amp;rsquo; maintainability, scalability, reliability, &lt;strong&gt;and&lt;/strong&gt; security. Many developers are unsure of where to start with security. In addition, most companies still work with a dedicated security team instead of having security expertise inside the team.&lt;/p&gt;
&lt;p&gt;A lot of developers practically live in their integrated development environment (IDE). A good IDE is like a swiss army knife: it is your go-to tool to do almost everything. Having everything I need to build, run, test, debug, and&lt;strong&gt;secure&lt;/strong&gt; my application, makes a good IDE invaluable for many developers.&lt;/p&gt;</description></item><item><title>8 Best Practices to Prevent SQL Injection Attacks</title><link>https://foojayio.github.io/website/today/8-best-practices-to-prevent-sql-injection-attacks/</link><pubDate>Thu, 15 Apr 2021 08:33:39 +0000</pubDate><guid>https://foojayio.github.io/website/today/8-best-practices-to-prevent-sql-injection-attacks/</guid><description>&lt;p&gt;SQL injection is one of the most dangerous vulnerabilities for online applications. It occurs when a user adds untrusted data to a database query. For instance, when filling in a web form. If SQL injection is possible, smart attackers can create user input to steal valuable data, bypass authentication, or corrupt the records in your database.&lt;/p&gt;
&lt;p&gt;There are different types of SQL injection attacks, but in general, they all have a similar cause. The untrusted data that the user enters is concatenated with the query string. Therefore the user&amp;rsquo;s input can alter the query&amp;rsquo;s original intent.&lt;/p&gt;</description></item><item><title>Participate in the Java Ecosystem Survey 2021</title><link>https://foojayio.github.io/website/today/java-ecosystem-survey-2021/</link><pubDate>Thu, 01 Apr 2021 16:03:13 +0000</pubDate><guid>https://foojayio.github.io/website/today/java-ecosystem-survey-2021/</guid><description>&lt;p&gt;Just like in 2020, &lt;a href="https://snyk.io" target="_blank" rel="noopener noreferrer"&gt;Snyk&lt;/a&gt;
 is creating a comprehensive Java 2021 report that reflects the state of the JVM ecosystem.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Note:&lt;/strong&gt; Friday, 2 April, the survey will come to an end, after running since the middle of February, spread the word! 🙂&lt;br&gt;
&lt;a href="https://snykteam.typeform.com/to/ZHuh7NzJ" target="_blank" rel="noopener noreferrer"&gt;Go to the Java 2021 survey&lt;/a&gt;
&lt;/p&gt;
&lt;p&gt;Here&amp;rsquo;s the summary of the &lt;a href="https://snyk.io/blog/jvm-ecosystem-report-2020" target="_blank" rel="noopener noreferrer"&gt;JVM Ecosystem 2020&lt;/a&gt;
 report:&lt;/p&gt;
&lt;figure class="aligncenter is-resized"&gt;
 &lt;img fetchpriority="high" decoding="async" src="https://lh6.googleusercontent.com/pE3ECVjEXTzDVr3fus4nGAzSoY7288RU21Vb-KQ5Xmu7FJpi8zEvjWQeSCb9gQAdHn4EqApLc0CncLDS0JkxDNi0XRHqqRsxjyqkYhfK69jrSkHOTMNflNrrAdY1KkywbfdAo-02" alt="" width="800" height="435"&gt;
&lt;/figure&gt;
&lt;p&gt;As always, we couldn&amp;rsquo;t have done this without you! So, once again, we ask for your help with the 2021 edition of the JVM Ecosystem Report.&lt;br&gt;
&lt;a href="https://snykteam.typeform.com/to/ZHuh7NzJ" target="_blank" rel="noopener noreferrer"&gt;Go to the Java 2021 survey&lt;/a&gt;
&lt;/p&gt;</description></item><item><title>Secure Code Review Best Practices (Part 2)</title><link>https://foojayio.github.io/website/today/secure-code-review-best-practices-part-2/</link><pubDate>Thu, 18 Mar 2021 15:14:31 +0000</pubDate><guid>https://foojayio.github.io/website/today/secure-code-review-best-practices-part-2/</guid><description>&lt;p&gt;Code reviews are hard to do well. Particularly when you&amp;rsquo;re not entirely sure about the errors you should be looking for!&lt;/p&gt;
&lt;p&gt;In &lt;a href="https://foojayio.github.io/website/today/secure-code-review-best-practices-part-1/"&gt;part 1 of this series&lt;/a&gt;
, we focused on four best practices, such as &lt;strong&gt;sanitization&lt;/strong&gt; , &lt;strong&gt;storing secrets,&lt;/strong&gt; and &lt;strong&gt;scanning your application&lt;/strong&gt; are explained so take a quick look if you missed the first part.&lt;/p&gt;
&lt;p&gt;Let&amp;rsquo;s move on to the second and final part of this topic, tips 5 through 8!&lt;/p&gt;</description></item><item><title>Secure Code Review Best Practices (Part 1)</title><link>https://foojayio.github.io/website/today/secure-code-review-best-practices-part-1/</link><pubDate>Thu, 11 Mar 2021 16:58:46 +0000</pubDate><guid>https://foojayio.github.io/website/today/secure-code-review-best-practices-part-1/</guid><description>&lt;p&gt;Code reviews are hard to do well. Particularly when you&amp;rsquo;re not entirely sure about the errors you should be looking for!&lt;/p&gt;
&lt;p&gt;Be sure when you&amp;rsquo;re reviewing code to understand that all code isn&amp;rsquo;t written equal! Think also about what lies behind the code that you&amp;rsquo;re reviewing and thus the data and assets you are trying to protect. This working knowledge is something that isn&amp;rsquo;t easy to add into a checklist.&lt;/p&gt;</description></item><item><title>Explaining Java Deserialization Vulnerabilities (Part 2)</title><link>https://foojayio.github.io/website/today/explaining-java-deserialization-vulnerabilities-part-2/</link><pubDate>Thu, 28 Jan 2021 08:23:00 +0000</pubDate><guid>https://foojayio.github.io/website/today/explaining-java-deserialization-vulnerabilities-part-2/</guid><description>&lt;p&gt;Java serialization is a mechanism to transform an object into a byte stream. Java deserialization is exactly the other way around and allows us to recreate an object from a byte stream. Java serialization&amp;mdash;and more specifically deserialization in Java&amp;mdash;is also known as &amp;ldquo;the gift that keeps on giving&amp;rdquo;. This relates to the many security issues and other problems it has produced over the years.&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href="https://foojayio.github.io/website/today/explaining-java-deserialization-vulnerabilities-part-1/"&gt;Explaining Java Deserialization Vulnerabilities (Part 1)&lt;/a&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Earlier, in part 1, the basics of Java serialization and deserialization were explained and how to tamper with data in serialized objects. In this part, we continue with even more harmful attacks and show you how you can prevent this in your own code.&lt;/p&gt;</description></item><item><title>Explaining Java Deserialization Vulnerabilities (Part 1)</title><link>https://foojayio.github.io/website/today/explaining-java-deserialization-vulnerabilities-part-1/</link><pubDate>Thu, 21 Jan 2021 10:12:19 +0000</pubDate><guid>https://foojayio.github.io/website/today/explaining-java-deserialization-vulnerabilities-part-1/</guid><description>&lt;p&gt;Java serialization is a mechanism to transform an object into a byte stream. Java deserialization is exactly the other way around and allows us to recreate an object from a byte stream.&lt;/p&gt;
&lt;p&gt;Java serialization&amp;mdash;and more specifically deserialization in Java&amp;mdash;is also known as &amp;ldquo;the gift that keeps on giving&amp;rdquo;. This relates to the many security issues and other problems it has produced over the years.&lt;/p&gt;
&lt;h3 id="h3-0-serialization-and-deserialization-in-java"&gt;Serialization and Deserialization in Java?&lt;/h3&gt;
&lt;p&gt;In Java, we create objects. These objects live in memory and are removed by the garbage collector once they are not used anymore. If we want to transfer an object, for instance, store it on a disk or send it over a network, we need to transform it into a byte stream. To do this, the class of that object needs to implement the interface &lt;code&gt;Serializable&lt;/code&gt;. Serialization is converting the state of an object into a byte stream. This byte stream does not contain the actual code.&lt;/p&gt;</description></item><item><title>Hacking Java XML Input via External Entity Injection</title><link>https://foojayio.github.io/website/today/hacking-java-xml-input-via-external-entity-injection/</link><pubDate>Thu, 14 Jan 2021 08:37:10 +0000</pubDate><guid>https://foojayio.github.io/website/today/hacking-java-xml-input-via-external-entity-injection/</guid><description>&lt;p&gt;Java natively supplies many different options to parse XML. However, all available parsers in Java have XML eXternal Entity (XXE) enabled by default. This makes Java XML libraries particularly vulnerable to XXE injection.&lt;/p&gt;
&lt;p&gt;We already briefly went into XXE injection problem in an earlier &lt;a href="https://foojayio.github.io/website/today/how-to-configure-your-java-xml-parsers-to-prevent-xxe-attacks/"&gt;blog post&lt;/a&gt;
on foojay.io. However, let&amp;rsquo;s go a little deeper. In the video below, I explain and demonstrate how an XXE injection attack works by extracting system data that should not be exposed. I also show you how you can solve this in your Java code in multiple ways.&lt;/p&gt;</description></item><item><title>5 Tips to Create Secure Docker Images for Java Applications</title><link>https://foojayio.github.io/website/today/5-tips-to-create-secure-docker-images-for-java-applications/</link><pubDate>Fri, 25 Dec 2020 10:41:54 +0000</pubDate><guid>https://foojayio.github.io/website/today/5-tips-to-create-secure-docker-images-for-java-applications/</guid><description>&lt;p&gt;Docker is the most widely used way to containerize your application. With Docker Hub, it is easy to create and pull pre-created images. This is very convenient as you can use these images from Docker Hub to quickly build an image for your Java application.&lt;/p&gt;
&lt;p&gt;However, the naive way of creating custom Docker images for your Java applications comes with many security concerns. So, how do we make security an essential part of Docker images for Java?&lt;/p&gt;</description></item><item><title>Minimizing Security Risks in Application Development</title><link>https://foojayio.github.io/website/today/minimizing-security-risks-in-java-application-development/</link><pubDate>Tue, 08 Dec 2020 11:02:28 +0000</pubDate><guid>https://foojayio.github.io/website/today/minimizing-security-risks-in-java-application-development/</guid><description>&lt;p&gt;United by their passion for open source, Payara and IBM recently teamed up for a panel discussion on security in Java application development.&lt;/p&gt;
&lt;p&gt;Security is something that is considered extremely important, however, it is not always something that is a priority for many development teams. The main question is&amp;mdash;how to minimize security risks while developing Java applications.&lt;/p&gt;
&lt;p&gt;In this panel discussion, our experts addressed a variety of topics related to secure application development. Most of the topics were introduced by questions from the audience.&lt;/p&gt;</description></item><item><title>Use Query Parameterization to Prevent Injection</title><link>https://foojayio.github.io/website/today/use-query-parameterization-to-prevent-injection/</link><pubDate>Mon, 23 Nov 2020 08:14:52 +0000</pubDate><guid>https://foojayio.github.io/website/today/use-query-parameterization-to-prevent-injection/</guid><description>&lt;p&gt;In the 2017 version of the OWASP Top 10 vulnerabilities, injection appeared at the top of the list as the number one vulnerability that year.&lt;/p&gt;
&lt;p&gt;When looking at a typical SQL injection in Java, the parameters of a sequel query are naively concatenated to the static part of the query. The following is an unsafe execution of SQL in Java, which can be used by an attacker to gain more information than otherwise intended:&lt;/p&gt;</description></item><item><title>Avoid Java Serialization: The Gift That Keeps On Giving</title><link>https://foojayio.github.io/website/today/avoid-java-serialization/</link><pubDate>Wed, 11 Nov 2020 08:48:37 +0000</pubDate><guid>https://foojayio.github.io/website/today/avoid-java-serialization/</guid><description>&lt;p&gt;Serialization in Java allows us to transform an object to a byte stream. This byte stream is either saved to disk or transported to another system. The other way around, a byte stream can be deserialized and allows us to recreate the original object.&lt;/p&gt;
&lt;p&gt;The biggest problem is with the deserializing part. Typically it looks something like this:&lt;/p&gt;
&lt;pre class="EnlighterJSRAW" data-enlighter-language="java" data-enlighter-theme="" data-enlighter-highlight="" data-enlighter-linenumbers="" data-enlighter-lineoffset="" data-enlighter-title="" data-enlighter-group=""&gt;ObjectInputStream in = new ObjectInputStream( inputStream );
return (Data)in.readObject();&lt;/pre&gt;
&lt;p&gt;There&amp;rsquo;s no way to know what you&amp;rsquo;re deserializing before you decoded it. Possibly, an attacker serialized a malicious object and sent it to your application. Once you call &lt;code&gt;readObject()&lt;/code&gt;, the malicious objects have already been instantiated. You might believe that these kinds of attacks are impossible because you need to have a vulnerable class on you classpath. However, if you consider the amount of classes on your classpath&amp;mdash;that includes your own code, Java libraries, third-party libraries and frameworks&amp;mdash;it is very likely that there is a vulnerable class available.&lt;/p&gt;</description></item><item><title>How to Configure Your Java XML Parsers to Prevent XXE Attacks</title><link>https://foojayio.github.io/website/today/how-to-configure-your-java-xml-parsers-to-prevent-xxe-attacks/</link><pubDate>Fri, 06 Nov 2020 11:27:18 +0000</pubDate><guid>https://foojayio.github.io/website/today/how-to-configure-your-java-xml-parsers-to-prevent-xxe-attacks/</guid><description>&lt;p&gt;With XML eXternal Entity (XXE) enabled, it is possible to create a malicious XML, as shown below, and read the content of an arbitrary file on the machine. It&amp;rsquo;s not a surprise that XXE attacks are part of the OWASP Top 10 vulnerabilities. Java XML libraries are particularly vulnerable to XXE injection because most XML parsers have external entities by default enabled.&lt;/p&gt;
&lt;pre class="EnlighterJSRAW" data-enlighter-language="xml" data-enlighter-theme="" data-enlighter-highlight="" data-enlighter-linenumbers="" data-enlighter-lineoffset="" data-enlighter-title="" data-enlighter-group=""&gt;&amp;lt;?xml version="1.0" encoding="UTF-8" standalone="yes"?&amp;gt;
&amp;lt;!DOCTYPE bar [
 &amp;lt;!ENTITY xxe SYSTEM "file:///etc/passwd"&amp;gt;]&amp;gt;
&amp;lt;song&amp;gt;
 &amp;lt;artist&amp;gt;&amp;amp;xxe;&amp;lt;/artist&amp;gt;
 &amp;lt;title&amp;gt;Bohemian Rhapsody&amp;lt;/title&amp;gt;
 &amp;lt;album&amp;gt;A Night at the Opera&amp;lt;/album&amp;gt;
&amp;lt;/song&amp;gt;&lt;/pre&gt;
&lt;p&gt;A naive implementation of the DefaultHandler and the Java SAX parser, like that shown below, parses this XML file and reveals the content of the passwd file. The Java SAX parser case is used as the main example here but other parsers, like DocumentBuilder and DOM4J, have similar default behaviour.&lt;/p&gt;</description></item><item><title>Fixing Vulnerabilities in Maven-Based Projects</title><link>https://foojayio.github.io/website/today/fixing-vulnerabilities-in-maven-projects/</link><pubDate>Tue, 20 Oct 2020 06:40:22 +0000</pubDate><guid>https://foojayio.github.io/website/today/fixing-vulnerabilities-in-maven-projects/</guid><description>&lt;p&gt;Maven is still the most used build system in the Java ecosystem. According to the &lt;a href="https://snyk.io/blog/jvm-ecosystem-report-2020/" target="_blank" rel="noopener noreferrer"&gt;JVM report 2020&lt;/a&gt;
, Maven is the number one build tool in the ecosystem with two-thirds of the share.&lt;/p&gt;
&lt;p&gt;Therefore, it is important to know how Maven works. For instance, if you find vulnerabilities in your Maven project using Snyk, how can you fix them?&lt;/p&gt;
&lt;p&gt;In this article, I will explain how you can fix vulnerabilities in third-party libraries when using Maven, even when it is not obvious.&lt;/p&gt;</description></item></channel></rss>