<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom"><channel><title>Security on foojay.io - Friends of OpenJDK</title><link>https://foojayio.github.io/website/today/category/security/</link><description>Recent content in Security on foojay.io - Friends of OpenJDK</description><generator>Hugo</generator><language>en-us</language><lastBuildDate>Thu, 23 Jul 2026 15:30:40 +0000</lastBuildDate><atom:link href="https://foojayio.github.io/website/today/category/security/index.xml" rel="self" type="application/rss+xml"/><item><title>AI Found the Bugs. Who's Patching Your EOL Java Code?</title><link>https://foojayio.github.io/website/today/ai-found-the-bugs-whos-patching-your-eol-java-code/</link><pubDate>Thu, 23 Jul 2026 15:26:53 +0000</pubDate><guid>https://foojayio.github.io/website/today/ai-found-the-bugs-whos-patching-your-eol-java-code/</guid><description>&lt;p&gt;Earlier this year an AI model found a flaw in OpenBSD&amp;rsquo;s TCP stack that had been sitting there for 27 years. The same scanning run turned up a 16-year-old bug in FFmpeg&amp;rsquo;s H.264 code.&lt;/p&gt;
&lt;h4 id="how-do-you-feel-about-ai-being-used-to-discover-bugs-in-open-source-across-the-board-and-at-scale"&gt;How do you feel about AI being used to discover bugs in open source, across the board and at scale?&lt;/h4&gt;
&lt;p&gt;Because that&amp;rsquo;s what&amp;rsquo;s happening. It&amp;rsquo;s tough enough dealing with machine-speed vulnerability discovery in code that has active maintainers. What about all the code with no friendly pair of safe hands?&lt;/p&gt;</description></item><item><title>BoxLang AWS, Azure, and Google Secrets Manager Module Released</title><link>https://foojayio.github.io/website/today/boxlang-aws-azure-and-google-secrets-manager-module-released/</link><pubDate>Tue, 21 Jul 2026 11:38:18 +0000</pubDate><guid>https://foojayio.github.io/website/today/boxlang-aws-azure-and-google-secrets-manager-module-released/</guid><description>&lt;p&gt;&lt;img src="https://foojayio.github.io/website/today/boxlang-aws-azure-and-google-secrets-manager-module-released/boxlang-secrets-700x467.jpg" alt="" loading="lazy"&gt;
&lt;/p&gt;
&lt;p&gt;Every production application carries secrets: database passwords, API tokens, encryption keys. The question is never whether to manage them &amp;ndash; it&amp;rsquo;s how badly the current approach is going to hurt you.&lt;/p&gt;
&lt;p&gt;Hardcoded credentials in config files get committed to repos. Environment variables sprawl across deployment pipelines with no audit trail. Custom integration code for each cloud provider means three different patterns to maintain, test, and rotate. And when a key needs to rotate at 2am? Someone is waking up.&lt;/p&gt;</description></item><item><title>This Dependency Update Looked Exactly Like an Account Takeover</title><link>https://foojayio.github.io/website/today/this-dependency-update-looked-exactly-like-an-account-takeover/</link><pubDate>Fri, 03 Jul 2026 08:31:27 +0000</pubDate><guid>https://foojayio.github.io/website/today/this-dependency-update-looked-exactly-like-an-account-takeover/</guid><description>&lt;p&gt;I pointed a scanner I have been building at an old Spring project, and it flagged javax.activation. The bump was 1.1-rev-1 to 1.1.1. Prior releases carried a GPG signature. This one did not.
&lt;img src="https://foojayio.github.io/website/today/this-dependency-update-looked-exactly-like-an-account-takeover/pr-comment-682x510.png" alt="git hub diff comment on PR" loading="lazy"&gt;
&lt;/p&gt;
&lt;br /&gt;
&lt;p&gt;If you have read the post-mortems of real supply-chain attacks, that pattern should make you sit up. A package that has signed its releases for years suddenly ships one unsigned. The boring explanation is a build pipeline change. The other explanation is that a different person is publishing now, and the signing key stayed behind with the old one. When ua-parser-js was hijacked in 2021, the malicious versions came from a compromised account. When event-stream went bad in 2018, it was a new maintainer nobody had vetted. The artifact looks fine. The metadata around it is what changed.&lt;/p&gt;</description></item><item><title>7 Jackson CVEs in One Day: AI-Assisted Security Research</title><link>https://foojayio.github.io/website/today/7-new-vulnerabilities-in-jackson-in-one-day-this-is-what-ai-assisted-security-research-looks-like/</link><pubDate>Mon, 29 Jun 2026 11:47:41 +0000</pubDate><guid>https://foojayio.github.io/website/today/7-new-vulnerabilities-in-jackson-in-one-day-this-is-what-ai-assisted-security-research-looks-like/</guid><description>&lt;p&gt;&lt;strong&gt;Quick version check:&lt;/strong&gt; the affected range for all seven is broadly &lt;code&gt;&amp;gt;=2.10.0 =2.19.0 =3.0.0 &amp;lt;3.1.4&lt;/code&gt; &amp;mdash; with some CVEs affecting narrower ranges. If you&amp;rsquo;re on a supported release, upgrade to 2.18.8, 2.21.4, or 3.1.4. If you&amp;rsquo;re on an EOL line &amp;mdash; 2.13.x, 2.14.x, 2.15.x &amp;mdash; jump to the bottom of the page for more specifics or visit &lt;a href="https://docs.herodevs.com/jackson?utm_source=devrel&amp;amp;amp;utm_medium=referral&amp;amp;amp;utm_campaign=2026q2_spring-boot-3-5-eol_global" target="_blank" rel="noopener noreferrer"&gt;HeroDevs Jackson Support&lt;/a&gt;
&lt;/p&gt;
&lt;hr&gt;
&lt;h3 id="h3-0-not-a-sales-pitch"&gt;Not a sales pitch&lt;/h3&gt;
&lt;p&gt;Anyone who knows me knows I dont do that. In this case I&amp;rsquo;m pointing you at &lt;a href="https://docs.herodevs.com/jackson?utm_source=devrel&amp;amp;amp;utm_medium=referral&amp;amp;amp;utm_campaign=2026q2_spring-boot-3-5-eol_global" target="_blank" rel="noopener noreferrer"&gt;HeroDevs&lt;/a&gt;
 because the Jackson issues are serious, &lt;a href="https://docs.herodevs.com/jackson?utm_source=devrel&amp;amp;amp;utm_medium=referral&amp;amp;amp;utm_campaign=2026q2_spring-boot-3-5-eol_global" target="_blank" rel="noopener noreferrer"&gt;HeroDevs&lt;/a&gt;
 have a solution thats stupidly easy to use and I know the folks behind the fixes. It takes a particular type of engineer to create security fixes and I know they have that skillset. Do your own research.&lt;/p&gt;</description></item><item><title>Quarkus Unpacked: Insights from the Foojay Podcast</title><link>https://foojayio.github.io/website/today/quarkus-unpacked-insights-from-the-foojay-podcast/</link><pubDate>Tue, 23 Jun 2026 12:36:54 +0000</pubDate><guid>https://foojayio.github.io/website/today/quarkus-unpacked-insights-from-the-foojay-podcast/</guid><description>&lt;figure class="alignleft is-resized"&gt;
 &lt;img decoding="async" src="3-Quarkus-Unpacked-2-2.jpeg" alt="Quarkus: A Runtime and Framework for Cloud-Native Java" style="width:300px"&gt;
&lt;/figure&gt;
&lt;p&gt;I recently had the pleasure of joining the &lt;a href="https://www.youtube.com/watch?v=_nJCTTrnZkE" target="_blank" rel="noopener noreferrer"&gt;Foojay podcast&lt;/a&gt;
 to talk about Quarkus in depth. The conversation covered a lot of ground, from what makes Quarkus different to the practical trade-offs between JVM and native mode. This post captures the key questions and answers from that discussion, lightly edited for readability.{#_quarkus_unpacked_insights_from_the_foojay_podcast}&lt;/p&gt;
&lt;p&gt;If you have been following this blog series, note that the third installment on building your own stack with Quarkus is coming next. Consider this a bonus entry that distills the podcast conversation into a format you can read, reference, and share.&lt;/p&gt;</description></item><item><title>Did AI Just Break Software Security For Ever?</title><link>https://foojayio.github.io/website/today/did-ai-just-break-software-security-for-ever/</link><pubDate>Tue, 16 Jun 2026 14:51:04 +0000</pubDate><guid>https://foojayio.github.io/website/today/did-ai-just-break-software-security-for-ever/</guid><description>&lt;p&gt;Whether the answer is yes or no (read on for my opinion) , something fundamental has changed this year. Not one thing. Four things, converging at once.&lt;/p&gt;
&lt;h3 id="h3-0-first-the-rate-of-cve-arrivals"&gt;First: The rate of CVE arrivals&lt;/h3&gt;
&lt;p&gt;More than 40,000 CVEs were published in 2024, rising to just under 50,000 in 2025. FIRST &amp;mdash; the Forum of Incident Response and Security Teams, &lt;a href="https://www.first.org/blog/20260522-vulnerability-forecast-update" title="projects" target="_blank" rel="noopener noreferrer"&gt;projects&lt;/a&gt;
 a median of 68,000 for 2026, with realistic scenarios reaching 70,000 to 100,000.&lt;/p&gt;</description></item><item><title>Spring Boot 3.5 Migration and the CRA: When Good Enough Isn't"</title><link>https://foojayio.github.io/website/today/spring-boot-migration-and-the-cra-when-good-enough-isnt/</link><pubDate>Fri, 05 Jun 2026 08:52:01 +0000</pubDate><guid>https://foojayio.github.io/website/today/spring-boot-migration-and-the-cra-when-good-enough-isnt/</guid><description>&lt;p&gt;Back in April I &lt;a href="https://foojayio.github.io/website/today/crossing-the-river-styx-spring-boot-3-5-and-the-zombie-dependency-problem/" title="wrote"&gt;wrote&lt;/a&gt;
 about what happens to your security posture when Spring Boot 3.5 crosses the EOL line.&lt;/p&gt;
&lt;p&gt;The short version: the CVE pipeline dries up, your scanner goes quiet, and the bad actors keep watching upstream for anything they can exploit downstream against the dead code nobody&amp;rsquo;s patching.&lt;/p&gt;
&lt;p&gt;I called them zombie dependencies.&lt;/p&gt;
&lt;p&gt;June 30th is coming. In a few weeks, Spring Boot 3.5 reaches end of open-source support. You&amp;rsquo;ve either got a plan or you haven&amp;rsquo;t.&lt;/p&gt;</description></item><item><title>Tiberius: A Security Testing Framework for LLM Applications in Java</title><link>https://foojayio.github.io/website/today/tiberius-a-security-testing-framework-for-llm-applications-in-java/</link><pubDate>Thu, 04 Jun 2026 20:09:09 +0000</pubDate><guid>https://foojayio.github.io/website/today/tiberius-a-security-testing-framework-for-llm-applications-in-java/</guid><description>&lt;p&gt;&lt;em&gt;How do you write a regression test for a system that is non-deterministic by design?&lt;/em&gt;&lt;/p&gt;
&lt;hr&gt;
&lt;ol&gt;
&lt;li&gt;The Problem {#h2-0-1-the-problem}&lt;/li&gt;
&lt;/ol&gt;
&lt;hr&gt;
&lt;p&gt;Large Language Models have moved from research artifacts to production infrastructure. Java applications are embedding them into customer-facing services via Spring Boot, and e.g. LangChain4J &amp;mdash; for document summarization, customer support, healthcare assistance, and financial guidance, to name just a few. The deployment surface is growing faster than the security tooling.&lt;/p&gt;
&lt;p&gt;The vulnerability landscape is empirically well-established. Horlacher, Vifian, and Zagidullina (2026) &lt;strong&gt;[4]&lt;/strong&gt; red-teamed &lt;code&gt;gpt-oss-20b&lt;/code&gt; and found that adversarial techniques achieved alarmingly high Attack Success Rates, while non-adversarial probing exposed pervasive stereotypical defaults &amp;mdash; both consistent across English and Swiss German. Their conclusion: &lt;em&gt;&amp;ldquo;current alignment mechanisms have not fully resolved jailbreaks and inherent bias, posing critical challenges for automated decision-making.&amp;rdquo;&lt;/em&gt;&lt;/p&gt;</description></item><item><title>Introducing bx-jwt: Enterprise-Grade JSON Web Tokens for BoxLang</title><link>https://foojayio.github.io/website/today/introducing-bx-jwt-enterprise-grade-json-web-tokens-for-boxlang/</link><pubDate>Tue, 26 May 2026 10:14:00 +0000</pubDate><guid>https://foojayio.github.io/website/today/introducing-bx-jwt-enterprise-grade-json-web-tokens-for-boxlang/</guid><description>&lt;p&gt;&lt;img src="https://foojayio.github.io/website/today/introducing-bx-jwt-enterprise-grade-json-web-tokens-for-boxlang/bx-jwt-700x467.jpg" alt="" loading="lazy"&gt;
&lt;/p&gt;
&lt;p&gt;JWT authentication is everywhere. But rolling it correctly &amp;mdash; with proper algorithm enforcement, key management, clock skew handling, JWE encryption, and zero security footguns &amp;mdash; is anything but trivial. Today, we&amp;rsquo;re shipping &lt;strong&gt;bx-jwt&lt;/strong&gt;, a production-ready JWT/JWE module for BoxLang that handles all of it out of the box, so you can focus on building, not fighting cryptography.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;bx-jwt&lt;/strong&gt; is part of the &lt;a href="https://www.boxlang.io/plans" title="BoxLang&amp;#43; and BoxLang&amp;#43;&amp;#43; subscription tiers" target="_blank" rel="noopener noreferrer"&gt;BoxLang+ and BoxLang++ subscription tiers&lt;/a&gt;
 &amp;mdash; our enterprise-grade module collection built for teams that take security seriously.&lt;/p&gt;</description></item><item><title>BoxLang v1.13.0: Compatibility, Concurrency, and Formatter Maturity</title><link>https://foojayio.github.io/website/today/boxlang-v1-13-0-compatibility-concurrency-and-formatter-maturity/</link><pubDate>Tue, 19 May 2026 12:11:19 +0000</pubDate><guid>https://foojayio.github.io/website/today/boxlang-v1-13-0-compatibility-concurrency-and-formatter-maturity/</guid><description>&lt;p&gt;&lt;img src="https://foojayio.github.io/website/today/boxlang-v1-13-0-compatibility-concurrency-and-formatter-maturity/boxlang-v1.13.0-700x467.jpg" alt="" loading="lazy"&gt;
&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;BoxLang 1.13.0&lt;/strong&gt; is a stability-first release with deep compatibility work and runtime hardening. This build closes 48 issues, with the majority focused on CFML compatibility edge cases, concurrency correctness, formatting parity, and miniserver/runtime reliability under real production loads.&lt;/p&gt;
&lt;p&gt;While this release is bug-fix heavy, it still introduces several meaningful features and quality-of-life improvements: character-aware trimming, class metadata lookup by absolute path, process environment control in SystemExecute(), SOAP headers, new query column rename capabilities, and safer miniserver routing/security defaults.&lt;/p&gt;</description></item><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>Foojay Podcast #95: Is Your Java App Actually Secure, Or Does It Just Look That Way?</title><link>https://foojayio.github.io/website/today/foojay-podcast-95/</link><pubDate>Mon, 11 May 2026 09:57:00 +0000</pubDate><guid>https://foojayio.github.io/website/today/foojay-podcast-95/</guid><description>&lt;p&gt;Is your Java application actually secure, or does it just look that way? In this episode of the Foojay Podcast, Frank is joined by Steve Poole and David Welch, both from &lt;a href="https://www.herodevs.com/" target="_blank" rel="noopener noreferrer"&gt;HeroDevs&lt;/a&gt;
, to dig deep into the state of Java security in 2025 and beyond.&lt;/p&gt;
&lt;p&gt;Steve introduces the concept of zombie dependencies: end-of-life libraries that appear safely dormant but are quietly accumulating vulnerabilities waiting to bite you. David, a co-chair of the CVE Automation Working Group, explains what a CVE actually is, how the identification and disclosure process works in practice, and why AI tools like Mythos are dramatically accelerating the pace at which new vulnerabilities are found &amp;mdash; on both sides of the wall.&lt;/p&gt;</description></item><item><title>Spring Boot 3.5 EOL — The CVE Blind Spot Nobody Talks About</title><link>https://foojayio.github.io/website/today/crossing-the-river-styx-spring-boot-3-5-and-the-zombie-dependency-problem/</link><pubDate>Sun, 19 Apr 2026 13:37:13 +0000</pubDate><guid>https://foojayio.github.io/website/today/crossing-the-river-styx-spring-boot-3-5-and-the-zombie-dependency-problem/</guid><description>&lt;p&gt;Tomorrow I start (o so early) for &lt;a href="https://2026.europe.jcon.one/" target="_blank" rel="noopener noreferrer"&gt;JCON Europe&lt;/a&gt;
 in Cologne and then, at the tail end of the week, go to Devoxx France to give more talks. If you&amp;rsquo;re at either, come say hi. Herodevs has a booth at both.&lt;/p&gt;
&lt;p&gt;After digging into the CVE stories behind &lt;a href="https://foojayio.github.io/website/today/the-real-mechanics-of-vulnerabilities-in-an-upstream-downstream-topsy-turvy-eol-world/"&gt;Tomcat 8.5&amp;rsquo;s end of life&lt;/a&gt;
, I turned my attention to Spring Boot 3.5. Same question, different framework: what &lt;em&gt;actually&lt;/em&gt; happens to your security posture when a project crosses the EOL line?&lt;/p&gt;</description></item><item><title>Why Java Developers Over-Trust AI-Generated Code</title><link>https://foojayio.github.io/website/today/why-java-developers-over-trust-ai-dependency-suggestions/</link><pubDate>Thu, 09 Apr 2026 10:45:36 +0000</pubDate><guid>https://foojayio.github.io/website/today/why-java-developers-over-trust-ai-dependency-suggestions/</guid><description>&lt;p&gt;&lt;em&gt;This article is adapted from &lt;a href="https://noregressions.substack.com/p/the-confidence-trap-why-developers" target="_blank" rel="noopener noreferrer"&gt;The Confidence Trap&lt;/a&gt;
, part of the &amp;ldquo;2026 Supply Chain Reckoning&amp;rdquo; series on my No Regressions newsletter.&lt;/em&gt;&lt;/p&gt;
&lt;hr&gt;
&lt;p&gt;Your boss calls you on a Friday afternoon. He&amp;rsquo;s read all the available data, he tells you with absolute confidence, and he&amp;rsquo;s decided that migrating from Spring Boot 3.5 to 4.0 will be straightforward. Wants it done over the weekend.&lt;/p&gt;
&lt;p&gt;You&amp;rsquo;d push back. You&amp;rsquo;d ask which data. You&amp;rsquo;d point out the breaking changes.&lt;/p&gt;</description></item><item><title>Best practices for Mastering AI Agents, Subagents, Skills &amp; MCP</title><link>https://foojayio.github.io/website/today/best-practices-for-working-with-ai-agents-subagents-skills-and-mcp/</link><pubDate>Mon, 30 Mar 2026 18:55:59 +0000</pubDate><guid>https://foojayio.github.io/website/today/best-practices-for-working-with-ai-agents-subagents-skills-and-mcp/</guid><description>&lt;p&gt;A practical guide to the five best practices every developer should apply when working with AI agents, subagents, skills and MCP servers &amp;mdash; from choosing the right model and writing precise prompts, to defining agent behaviour with SDD, isolating context with Claude Code subagents, securing MCP calls, and guiding agent response quality with guardrails.&lt;/p&gt;
&lt;hr&gt;
&lt;h2 id="h2-0-0-where-this-fits-in-the-series"&gt;§0 📖 Where This Fits in the Series&lt;/h2&gt;
&lt;blockquote&gt;
&lt;p&gt;This article assumes you already know what MCP is and have used or built at least one Agent.&lt;/p&gt;</description></item><item><title>DPoP: What It Is, How It Works, and Why Bearer Tokens Aren't Enough</title><link>https://foojayio.github.io/website/today/dpop-what-it-is-how-it-works-and-why-bearer-tokens-arent-enough/</link><pubDate>Mon, 09 Mar 2026 08:08:06 +0000</pubDate><guid>https://foojayio.github.io/website/today/dpop-what-it-is-how-it-works-and-why-bearer-tokens-arent-enough/</guid><description>&lt;p&gt;DPoP is one of the most exciting developments in the IAM (Identity and Access Management) space in recent years. Yet many backend developers either have not heard of it or are unsure what it actually changes. In this article, I will break down what DPoP is, what problem it solves, and walk through a working implementation with Keycloak and Quarkus.&lt;/p&gt;
&lt;h2 id="h2-0-what-is-dpop"&gt;What is DPoP?&lt;/h2&gt;
&lt;p&gt;DPoP (Demonstration of Proof-of-Possession) is an OAuth 2.0 security mechanism defined in &lt;a href="https://datatracker.ietf.org/doc/html/rfc9449" target="_blank" rel="noopener noreferrer"&gt;RFC 9449&lt;/a&gt;
. Its core purpose is simple: cryptographically bind an access token to the client that requested it. This way, even if a token is intercepted, it cannot be used by another client.&lt;/p&gt;</description></item><item><title>Tomcat TLSv1.3 cipher configuration</title><link>https://foojayio.github.io/website/today/tomcat-tlsv13-cipher-configuration-spring-boot/</link><pubDate>Thu, 26 Feb 2026 18:02:34 +0000</pubDate><guid>https://foojayio.github.io/website/today/tomcat-tlsv13-cipher-configuration-spring-boot/</guid><description>&lt;p&gt;A recent update to Apache Tomcat introduced a subtle but significant change to how TLS cipher suites are configured. If your Spring Boot application explicitly configures TLS ciphers, particularly TLSv1.3 ciphers, and runs on Tomcat 9.0.115+ (Spring Boot 2.x), 10.1.52+ (Spring Boot 3.x), or 11.0.18+ (Spring Boot 4.x), your cipher configuration may be silently ignored.&lt;/p&gt;
&lt;p&gt;Prior to the change, Tomcat used a single &lt;code&gt;ciphers&lt;/code&gt; attribute on the SSL connector to configure cipher suites for all TLS versions. Starting with the versions of Tomcat listed above (Tomcat &lt;a href="https://github.com/apache/tomcat/commit/9abf6bddb2e84ecf1668780bb3150b799f832ccf" target="_blank" rel="noopener noreferrer"&gt;commit&lt;/a&gt;
), this attribute was split:&lt;/p&gt;</description></item><item><title>Shai-Hulud and the npm Worm: How Speed-Optimised Dev Ecosystems Made a Self-Propagating Supply Chain Attack Inevitable</title><link>https://foojayio.github.io/website/today/the-shai-hulud-cyber-worm-and-more-thoughts-on-supply-chain-attacks/</link><pubDate>Thu, 12 Feb 2026 11:47:48 +0000</pubDate><guid>https://foojayio.github.io/website/today/the-shai-hulud-cyber-worm-and-more-thoughts-on-supply-chain-attacks/</guid><description>&lt;h2 id="h2-0-first-a-word-about-ecosystems"&gt;first, a word about ecosystems&lt;/h2&gt;
&lt;p&gt;Before we dive into Shai-Hulud, before we label it &amp;ldquo;sophisticated&amp;rdquo; or &amp;ldquo;advanced&amp;rdquo; or &amp;ldquo;next generation,&amp;rdquo; we need to be honest about something.&lt;/p&gt;
&lt;p&gt;The worm didn&amp;rsquo;t appear in a broken system. It appeared in the one we deliberately optimised.&lt;/p&gt;
&lt;p&gt;In the book Dune, the worm is integral to the ecosystem. The planet, its environment, and the worms are deeply interconnected.&lt;/p&gt;
&lt;p&gt;That&amp;rsquo;s true for the cyber-worm equivalent. The worm is an entirely predictable outcome of the ecosystem in which we, as developers, are part&lt;/p&gt;</description></item><item><title>Security Doesn’t Start at Liftoff</title><link>https://foojayio.github.io/website/today/security-doesnt-start-at-liftoff/</link><pubDate>Fri, 23 Jan 2026 10:22:31 +0000</pubDate><guid>https://foojayio.github.io/website/today/security-doesnt-start-at-liftoff/</guid><description>&lt;p&gt;This is a follow-on to the article &lt;a href="https://foojayio.github.io/website/today/the-real-mechanics-of-vulnerabilities-in-an-upstream-downstream-topsy-turvy-eol-world/"&gt;The Real Mechanics of Vulnerabilities in an Upstream/Downstream, Topsy-Turvy EOL World&lt;/a&gt;
.&lt;/p&gt;
&lt;h4 id="what-youll-learn-in-this-article"&gt;What you&amp;rsquo;ll learn in this article:&lt;/h4&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;The Security Timeline Inversion&lt;/strong&gt;: CVE disclosure is no longer the true start of the security timeline.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Security Outcomes&lt;/strong&gt;: Routine maintenance decisions, not reaction speed or tooling, determine security outcomes.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Flawed Indicators&lt;/strong&gt;: CVE scores, scanners, and compliance deadlines are not effective early-warning systems.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Vulnerability Distortion&lt;/strong&gt;: Embedded, forked, and end-of-life components obscure vulnerability visibility and responsibility.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Your Mission&lt;/strong&gt;: Governance and lifecycle changes are necessary to avoid being structurally late to &amp;ldquo;silent&amp;rdquo; vulnerabilities.&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id="h2-0-are-you-sitting-comfortably"&gt;Are you sitting comfortably?&lt;/h2&gt;
&lt;p&gt;In February 2025, Apache Tomcat shipped a set of routine point releases. They arrived without urgency, without commentary, and without the kind of noise that can accompany significant security incidents.&lt;/p&gt;</description></item><item><title>SonarQube AI Code Assurance &amp; MCP: Auto-Fix Java (Part 4)</title><link>https://foojayio.github.io/website/today/sonarqube-part-4-ai-code-assurance/</link><pubDate>Mon, 19 Jan 2026 15:27:14 +0000</pubDate><guid>https://foojayio.github.io/website/today/sonarqube-part-4-ai-code-assurance/</guid><description>&lt;p&gt;Hola Java developers! 👋&lt;/p&gt;
&lt;p&gt;Welcome to the &lt;strong&gt;Grand Finale&lt;/strong&gt; of our series.&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;&lt;a href="https://foojayio.github.io/website/today/developers-guide-to-sonarqube-part-1/"&gt;Part 1&lt;/a&gt;
&lt;/strong&gt;: We turned your IDE into a fortress.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;&lt;a href="https://foojayio.github.io/website/today/developers-guide-to-sonarqube-part-2/"&gt;Part 2&lt;/a&gt;
&lt;/strong&gt;: We synced the team with Connected Mode.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;&lt;a href="https://foojayio.github.io/website/today/avoid-the-trojan-horse-in-your-pom-xml-sonarqube-advanced-security-part-3/"&gt;Part 3&lt;/a&gt;
&lt;/strong&gt;: We secured the Supply Chain (dependencies).&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;We have become excellent at &lt;em&gt;finding&lt;/em&gt; bugs. But let&amp;rsquo;s be honest: Finding them is only half the battle. &lt;strong&gt;Who is going to fix them?&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;We are drowning in a backlog of &amp;ldquo;Technical Debt,&amp;rdquo; &amp;ldquo;Code Smells,&amp;rdquo; and &amp;ldquo;Security Hotspots.&amp;rdquo; You don&amp;rsquo;t have enough hours in the day to refactor every complex method or research the perfect fix for a regex denial-of-service vulnerability.&lt;/p&gt;</description></item><item><title>Optimizing Java for the Cloud-Native Era with Quarkus</title><link>https://foojayio.github.io/website/today/optimizing-java-for-the-cloud-native-era-with-quarkus/</link><pubDate>Tue, 06 Jan 2026 21:09:00 +0000</pubDate><guid>https://foojayio.github.io/website/today/optimizing-java-for-the-cloud-native-era-with-quarkus/</guid><description>&lt;p&gt;This article explores how Quarkus can help organizations reduce costs, streamline development, and modernize their Java applications for today&amp;rsquo;s cloud-native environments. It outlines the real-world benefits of adopting Quarkus and highlights how its core features address the performance and scalability challenges commonly associated with traditional Java frameworks.&lt;/p&gt;
&lt;p&gt;Quarkus is already being adopted across industries. One example is Orange, a global telecom provider that selected Quarkus to support its 5G API initiative, and benefited from fast startup times, a lightweight footprint, and seamless integration with Kubernetes.&lt;/p&gt;</description></item><item><title>Quarkus: A Runtime and Framework for Cloud-Native Java</title><link>https://foojayio.github.io/website/today/quarkus-a-runtime-and-framework-for-cloud-native-java/</link><pubDate>Tue, 06 Jan 2026 13:46:50 +0000</pubDate><guid>https://foojayio.github.io/website/today/quarkus-a-runtime-and-framework-for-cloud-native-java/</guid><description>&lt;p&gt;Public clouds such as AWS, Microsoft Azure, and Google Cloud, and platforms like Red Hat OpenShift, favor services that start fast and stay lean. Quarkus is engineered for exactly that.&lt;/p&gt;
&lt;p&gt;Build time processing reduces runtime overhead and results in rapid startup, a small memory footprint, and frictionless deployment across Kubernetes, OpenShift, serverless, and managed container services in any cloud. If your Java services need to start in milliseconds, run dense on shared nodes, and still feel great to build, Quarkus was made for that job.&lt;/p&gt;</description></item><item><title>Stop the trojan horse in your pom : SonarQube Advace Security</title><link>https://foojayio.github.io/website/today/avoid-the-trojan-horse-in-your-pom-xml-sonarqube-advanced-security-part-3/</link><pubDate>Mon, 22 Dec 2025 10:42:41 +0000</pubDate><guid>https://foojayio.github.io/website/today/avoid-the-trojan-horse-in-your-pom-xml-sonarqube-advanced-security-part-3/</guid><description>&lt;p&gt;Hola Java developers! 👋&lt;/p&gt;
&lt;p&gt;Welcome to &lt;strong&gt;Part 3&lt;/strong&gt;.&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;In &lt;a href="https://foojayio.github.io/website/today/developers-guide-to-sonarqube-part-1/"&gt;&lt;strong&gt;Part 1&lt;/strong&gt;&lt;/a&gt;
, we turned your IntelliJ into a security guard.&lt;/li&gt;
&lt;li&gt;In &lt;a href="https://foojayio.github.io/website/today/developers-guide-to-sonarqube-part-2/"&gt;&lt;strong&gt;Part 2&lt;/strong&gt;&lt;/a&gt;
, we connected it to the server to enforce the Quality Gate.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;We are feeling good. Our code is high quality. Our logic is sound. But here is the scary reality: In a modern Spring Boot application, &lt;strong&gt;you only wrote about 10% of the code.&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;The other 90%? It comes from Maven Central. It&amp;rsquo;s Hibernate, Jackson, Apache Commons, Spring Security&amp;hellip; You are building a house, and you made sure &lt;em&gt;your&lt;/em&gt; bricks are solid. But did you check if the foundation you bought from a stranger is made of explosive material? 🧨&lt;/p&gt;</description></item><item><title>The Real Mechanics of Vulnerabilities in an Upstream/Downstream, Topsy-Turvy EOL World</title><link>https://foojayio.github.io/website/today/the-real-mechanics-of-vulnerabilities-in-an-upstream-downstream-topsy-turvy-eol-world/</link><pubDate>Fri, 19 Dec 2025 13:36:28 +0000</pubDate><guid>https://foojayio.github.io/website/today/the-real-mechanics-of-vulnerabilities-in-an-upstream-downstream-topsy-turvy-eol-world/</guid><description>&lt;h3 id="h3-0-in-this-article-you-ll-learn"&gt;In this article you&amp;rsquo;ll learn&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;Why CVEs record that a vulnerability exists, not that a usable fix exists&lt;/li&gt;
&lt;li&gt;How vulnerabilities are often discovered and fixed downstream before upstream ever acknowledges them&lt;/li&gt;
&lt;li&gt;Why EOL branches continue to accumulate exploitable behaviour even when no CVEs appear&lt;/li&gt;
&lt;li&gt;How downstream-only patches break the assumptions scanners and SBOMs rely on&lt;/li&gt;
&lt;li&gt;What disclosure actually enables when &amp;ldquo;just upgrade&amp;rdquo; is not a viable option&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id="h3-1-introduction"&gt;Introduction&lt;/h3&gt;
&lt;p&gt;There is a tidy, almost academic version of how software security is supposed to work. It appears in conference talks, compliance documents and in the cheerful diagrams seen on marketing slides. It usually looks something like this:&lt;/p&gt;</description></item><item><title>The 5 Knights of the MCP Apocalypse 😱</title><link>https://foojayio.github.io/website/today/the-5-knights-of-the-mcp-apocalypse/</link><pubDate>Tue, 09 Dec 2025 15:55:41 +0000</pubDate><guid>https://foojayio.github.io/website/today/the-5-knights-of-the-mcp-apocalypse/</guid><description>&lt;p&gt;Let&amp;rsquo;s talk about that new &lt;strong&gt;MCP (Model Context Protocol) Server&lt;/strong&gt; your team is using to connect to your real data services. It&amp;rsquo;s awesome, right? It&amp;rsquo;s the &amp;ldquo;magic box&amp;rdquo; that gives your AI Agent access to the &lt;strong&gt;real world&lt;/strong&gt;&amp;mdash;live databases, internal APIs, and all your tools.&lt;/p&gt;
&lt;p&gt;But here&amp;rsquo;s the catch: &lt;strong&gt;you don&amp;rsquo;t own the code.&lt;/strong&gt; 🚫&lt;/p&gt;
&lt;p&gt;It&amp;rsquo;s a vendor product, an open-source project, or another team&amp;rsquo;s platform. You can&amp;rsquo;t just change its code when you find a security hole, unless you have the code and recompile it and deploy it.&lt;/p&gt;</description></item><item><title>Java Security Starts with the JVM</title><link>https://foojayio.github.io/website/today/java-security-starts-with-the-jvm/</link><pubDate>Mon, 10 Nov 2025 12:37:20 +0000</pubDate><guid>https://foojayio.github.io/website/today/java-security-starts-with-the-jvm/</guid><description>&lt;p&gt;&lt;em&gt;&lt;strong&gt;When it comes to Java security, the first thing that comes to mind should be the JVM. If you&amp;rsquo;re relying on outdated, unpatched, or unsupported Java runtimes, you&amp;rsquo;re taking unnecessary risks.&lt;/strong&gt;&lt;/em&gt;&lt;/p&gt;
&lt;p&gt;&lt;em&gt;&lt;strong&gt;In this article, you will learn:&lt;/strong&gt;&lt;/em&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;em&gt;&lt;strong&gt;Timely, predictable updates are critical for Java security&lt;/strong&gt;&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;em&gt;&lt;strong&gt;Long-term security hinges on long-term support&lt;/strong&gt;&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;em&gt;&lt;strong&gt;If your Java runtime is compromised, every application that runs on it could be compromised too&lt;/strong&gt;&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;em&gt;&lt;strong&gt;As environments become cluttered with multiple JDK versions and unpatched workloads, organizations lose visibility into what&amp;rsquo;s deployed&lt;/strong&gt;&lt;/em&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;When it comes to securing your Java applications, the JVM might not be the first thing that comes to mind&amp;mdash;but it should be. Your JDK isn&amp;rsquo;t just a runtime; it&amp;rsquo;s part of your software supply chain. If you&amp;rsquo;re relying on outdated, unpatched, or unsupported Java runtimes, you&amp;rsquo;re taking unnecessary risks.&lt;/p&gt;</description></item><item><title>JC-AI Newsletter #8</title><link>https://foojayio.github.io/website/today/jc-ai-newsletter-8/</link><pubDate>Thu, 30 Oct 2025 06:36:12 +0000</pubDate><guid>https://foojayio.github.io/website/today/jc-ai-newsletter-8/</guid><description>&lt;p&gt;&lt;strong&gt;Fourteen days have passed, and it is time to present a fresh collection of readings that could influence developments in the field of artificial intelligence.&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;This newsletter focuses on examining how AI enhances productivity through enterprise studies, agentic system architecture, attack vectors, Model Context Protocol (MCP) implementation, Agent-to-Agent (A2A) protocol, Java code generation within IDEs, LLM benchmarking methodologies, and the security challenges arising from increased AI-LLM adoption.&lt;/p&gt;
&lt;p&gt;The world influenced by LLM is changing very quickly, let&amp;rsquo;s start&amp;hellip;&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>Save Time and Money by Reducing False Positives</title><link>https://foojayio.github.io/website/today/save-time-and-money-by-reducing-false-positives/</link><pubDate>Mon, 23 Jun 2025 08:35:27 +0000</pubDate><guid>https://foojayio.github.io/website/today/save-time-and-money-by-reducing-false-positives/</guid><description>&lt;p&gt;&lt;strong&gt;&lt;a href="https://www.azul.com/blog/how-azul-identifies-java-security-vulnerabilities-with-1000-times-greater-accuracy/" target="_blank" rel="noopener noreferrer"&gt;Recently Azul announced that AVD&lt;/a&gt;
 (Azul Vulnerability Detection), which is our solution to scan for security vulnerabilities in production, now comes with a new feature that only makes it possible to identify vulnerable components on a JAR file level but also on class file level.&lt;/strong&gt;&lt;/p&gt;
&lt;h3 id="h3-0-the-production-scanning-challenge"&gt;The Production Scanning Challenge&lt;/h3&gt;
&lt;p&gt;So what does that mean? Usually, security scanners work in environments from development up to CI/CD, but not in production. The main reason for that is the fact that once you start scanning for vulnerabilities in production, the scanning process itself needs too many resources, which brings down the performance of the system. The performance decrease can be in the range of 10 to 30%, which explains why companies trust security scanners that scan in CI/CD and don&amp;rsquo;t add additional scans in production.&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>Sonar Connect Amsterdam 2025</title><link>https://foojayio.github.io/website/today/sonar-connect-amsterdam-2025/</link><pubDate>Mon, 16 Jun 2025 15:51:13 +0000</pubDate><guid>https://foojayio.github.io/website/today/sonar-connect-amsterdam-2025/</guid><description>&lt;h3 id="h3-0-code-quality-code-security-for-open-source-ai-code"&gt;Code quality + Code security for Open Source &amp;amp; AI code&lt;/h3&gt;
&lt;p&gt;In the age of AI, ensuring code quality and code security is more critical than ever. Are you using the best methodologies to introduce GenAI in your company? do you know the risks? have you heard about AI MCP and the benefits ? what about using AI in the full SDLC? do you know the latest features of SonarQube regarding AI and SCA(dependencies vulnerabilities)?&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>Time to panic? AI and Cybercrime legislation is on your doorstep now</title><link>https://foojayio.github.io/website/today/time-to-panic-ai-and-cybercrime-legislation-is-on-your-doorstep-now/</link><pubDate>Thu, 10 Apr 2025 07:25:52 +0000</pubDate><guid>https://foojayio.github.io/website/today/time-to-panic-ai-and-cybercrime-legislation-is-on-your-doorstep-now/</guid><description>&lt;p&gt;&lt;strong&gt;As we settle into 2025, legislation around AI and cybercrime is no longer a distant threat or vague aspiration. It&amp;rsquo;s here, real, and it&amp;rsquo;s already changing how companies must build, deploy, and secure intelligent systems.&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;If you&amp;rsquo;re a developer, security engineer, or anyone responsible for the software supply chain, it&amp;rsquo;s time to recalibrate. Here&amp;rsquo;s what&amp;rsquo;s coming, who&amp;rsquo;s shaping it, and what tools are emerging to help navigate the new landscape.&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>Code Reviews with AI a developer guide</title><link>https://foojayio.github.io/website/today/code-reviews-with-ai-a-developer-guide/</link><pubDate>Fri, 07 Mar 2025 12:10:37 +0000</pubDate><guid>https://foojayio.github.io/website/today/code-reviews-with-ai-a-developer-guide/</guid><description>&lt;p&gt;Code reviews are a cornerstone of software development. They&amp;rsquo;re where we share knowledge, catch bugs early, and ensure our code meets the highest standards.&lt;/p&gt;
&lt;p&gt;But let&amp;rsquo;s be honest&amp;hellip;&lt;/p&gt;
&lt;p&gt;Traditional code reviews can be time-consuming and tedious and sometimes even miss subtle yet critical issues. Enter the age of AI-powered code review, a game-changer that addresses these challenges and elevates code quality to new heights.&lt;/p&gt;
&lt;p&gt;This article dives into the common pitfalls of code reviews and explores how AI tools can revolutionize each phase of the development lifecycle.&lt;/p&gt;</description></item><item><title>Securing Vaadin Applications with Microsoft Entra</title><link>https://foojayio.github.io/website/today/securing-vaadin-applications-with-microsoft-entra/</link><pubDate>Wed, 26 Feb 2025 12:55:43 +0000</pubDate><guid>https://foojayio.github.io/website/today/securing-vaadin-applications-with-microsoft-entra/</guid><description>&lt;p&gt;Many companies use Microsoft 365, so letting users log in with their Microsoft account is a good choice. This blog post shows how to secure your Vaadin applications using Microsoft Entra for authentication and authorization and explains how Karibu Testing must be configured.&lt;/p&gt;
&lt;h2 id="h2-0-step-1-create-an-application-in-entra"&gt;Step 1: Create an Application in Entra&lt;/h2&gt;
&lt;p&gt;The first step is to create an application, configure roles, assign users, and set the redirect URI.&lt;/p&gt;
&lt;p&gt;To create an application, log in to &lt;a href="http://entra.microsoft.com" target="_blank" rel="noopener noreferrer"&gt;http://entra.microsoft.com&lt;/a&gt;
 and select &amp;ldquo;Applications&amp;rdquo; -&amp;gt; &amp;ldquo;Enterprise applications.&amp;rdquo; There, you can create a new application. Select &amp;ldquo;Register an application to integrate with Microsoft Entra ID (App you&amp;rsquo;re developing).&amp;rdquo;&lt;/p&gt;</description></item><item><title>Pseudorandom Number Generators - The Secret Behind Santa’s Gift Bag</title><link>https://foojayio.github.io/website/today/pseudorandom-number-generator/</link><pubDate>Thu, 02 Jan 2025 14:51:10 +0000</pubDate><guid>https://foojayio.github.io/website/today/pseudorandom-number-generator/</guid><description>&lt;p&gt;On a snowy Christmas Eve, Santa sets off on his journey around the world, gliding through the night sky on his sleigh to deliver presents to children everywhere.&lt;/p&gt;
&lt;p&gt;It&amp;rsquo;s one of the busiest nights of the year for Santa, as children eagerly await their special gifts. With his magical gift bag which provides an endless supply of presents, Santa ensures no one is ever disappointed. To those watching, the gifts might seem to appear randomly, but Santa knows precisely which gift to deliver next, following an order only he can understand.&lt;/p&gt;</description></item><item><title>Foojay Podcast #63: How do we keep your Java applications up to date and secure?</title><link>https://foojayio.github.io/website/today/foojay-podcast-63/</link><pubDate>Mon, 16 Dec 2024 12:41:10 +0000</pubDate><guid>https://foojayio.github.io/website/today/foojay-podcast-63/</guid><description>&lt;h2 id="h2-0-last-month-i-published-a-foojay-article-about-the-risks-in-systems-that-are-stuck-on-old-or-outdated-java-versions-and-got-a-lot-of-feedback-from-developers-most-of-them-want-to-move-on-but-get-stuck-on-management-decisions-outdated-production-environments-or-one-of-the-many-other-reasons-that-keep-systems-stuck-on-old-java-versions-and-dependencies"&gt;Last month, I published a Foojay article about &lt;a href="https://foojayio.github.io/website/today/why-java-8-is-a-ticking-time-bomb-hiding-within-your-organization/"&gt;the risks in systems that are stuck on old or outdated Java versions&lt;/a&gt;
 and got &lt;a href="https://foojayio.github.io/website/today/how-organizations-became-stuck-on-outdated-java-versions/"&gt;a lot of feedback from developers&lt;/a&gt;
. Most of them want to move on but get stuck on management decisions, outdated production environments, or one of the many other reasons that keep systems stuck on old Java versions and dependencies.&lt;/h2&gt;
&lt;p&gt;Do you want to bring your system from Java 8 to 23? Did you know that Java 17 already has 13 security releases? And that you can use tools like OpenRewrite to help you update your code?&lt;/p&gt;</description></item><item><title>Prevent LDAP injection in #java 💥💉with #springboot</title><link>https://foojayio.github.io/website/today/prevent-ldap-injection-in-java-with-springboot/</link><pubDate>Wed, 04 Dec 2024 14:45:35 +0000</pubDate><guid>https://foojayio.github.io/website/today/prevent-ldap-injection-in-java-with-springboot/</guid><description>&lt;p&gt;&lt;strong&gt;LDAP (Lightweight Directory Access Protocol)&lt;/strong&gt; is essential for managing and accessing directory information in Java web applications. However, it&amp;rsquo;s crucial to understand and prevent &lt;strong&gt;LDAP Injection&lt;/strong&gt;, a serious security vulnerability that can lead to unauthorized access and data breaches.&lt;/p&gt;
&lt;p&gt;Following &lt;strong&gt;OWASP Recommendations&lt;/strong&gt; , such as validating user inputs and using parameterized queries, is vital for securing your applications. In this article, we&amp;rsquo;ll dive into LDAP, explore LDAP Injection, share OWASP&amp;rsquo;s best practices, and demonstrate secure coding in &lt;strong&gt;Spring Boot&lt;/strong&gt;.&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>Java: Where the Wild Code Isn't (On Security and Modularity)</title><link>https://foojayio.github.io/website/today/java-where-the-wild-code-isnt/</link><pubDate>Tue, 17 Sep 2024 08:41:00 +0000</pubDate><guid>https://foojayio.github.io/website/today/java-where-the-wild-code-isnt/</guid><description>&lt;p&gt;In the last several years, the OpenJDK community has made Java significantly safer for users and developers while at the same time making it easier to design, build, and run applications quickly.&lt;/p&gt;
&lt;p&gt;There are two core aspects that have led to this:&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;
&lt;p&gt;A secure JDK, where vulnerabilities are dealt with and patched.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;A modular JDK, where different types or risk can be clearly delineated.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;A Secure JDK {#h2-0-1-a-secure-jdk}&lt;/p&gt;
&lt;/li&gt;
&lt;/ol&gt;
&lt;hr&gt;
&lt;p&gt;The core Java platform underlies all Java applications and is kept secure by a special OpenJDK Vulnerability Group. This group helps to perform different actions and security regression tests like fuzzing and ensuring old vulnerabilities do not recur.&lt;/p&gt;</description></item><item><title>Top Security Flaws hiding in your code right now</title><link>https://foojayio.github.io/website/today/top-security-flaws-hiding-in-your-code-right-now-and-how-to-fix-them/</link><pubDate>Thu, 05 Sep 2024 16:41:02 +0000</pubDate><guid>https://foojayio.github.io/website/today/top-security-flaws-hiding-in-your-code-right-now-and-how-to-fix-them/</guid><description>&lt;h3 id="h3-0-recent-years-have-seen-numerous-injection-attacks-causing-significant-damage-including-a-2019-sql-injection-breach-in-the-fortnite-video-game-and-a-2018-attack-on-tesla-s-systems"&gt;Recent years have seen numerous injection attacks causing significant damage, including a 2019 SQL injection breach in the Fortnite video game and a 2018 attack on Tesla&amp;rsquo;s systems.&lt;/h3&gt;
&lt;p&gt;Other serious incidents involve the Log4Shell logging injection and a deserialization attack on Atlassian Jira. These examples show that various code vulnerabilities can affect any organization. This article will examine the three most common attack types&amp;mdash;SQL injection, Deserialization Injection, and Logging Injection&amp;mdash;and discuss ways to prevent them.&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>IBM Semeru Runtimes for Java includes FIPS 140-3 certified cryptography</title><link>https://foojayio.github.io/website/today/ibm-semeru-java-fips140-3-cryptographic-standard/</link><pubDate>Tue, 27 Aug 2024 08:55:26 +0000</pubDate><guid>https://foojayio.github.io/website/today/ibm-semeru-java-fips140-3-cryptographic-standard/</guid><description>&lt;p&gt;&lt;strong&gt;IBM® Semeru Runtimes™ for Java™ 11, 17, 21+ now includes FIPS 140-3 cryptography (&lt;a href="https://csrc.nist.gov/projects/cryptographic-module-validation-program/certificate/4755" title="certified by the U.S. National Institute of Standards and Technology (NIST)" target="_blank" rel="noopener noreferrer"&gt;certified by the U.S. National Institute of Standards and Technology; NIST&lt;/a&gt;
) and is production-ready for Java deployments. FIPS 140-3 is also available in IBM SDK, Java Technology Edition, V8.&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;IBM first made FIPS 140-3 cryptography available as a technology preview more than a year ago, and users responded with helpful feedback on usage and configuration so that the IBM development team could improve its usability. With NIST certification, this capability is now generally available for production deployments on most platforms (with more to come).&lt;/p&gt;</description></item><item><title>Unsupported OpenJDK Distributions are at Risk of Non-Compliance with DORA</title><link>https://foojayio.github.io/website/today/unsupported-openjdk-distributions-are-at-risk-of-non-compliance-with-dora/</link><pubDate>Mon, 26 Aug 2024 12:24:05 +0000</pubDate><guid>https://foojayio.github.io/website/today/unsupported-openjdk-distributions-are-at-risk-of-non-compliance-with-dora/</guid><description>&lt;p&gt;&lt;strong&gt;For the EU Digital Operations Resilience Act (DORA) to have any meaning at all in the context of OpenJDK (and surely it must have application there since it is explicitly focused on &amp;ldquo;ICT Assets&amp;rdquo;, which it defines as broadly as possible as &amp;ldquo;a software or hardware asset in the network and information systems used by a financial entity&amp;rdquo;), it can only be interpreted to, at the very least, very strongly encourage the usage of supported OpenJDK distributions.&lt;/strong&gt;&lt;/p&gt;</description></item><item><title>Connecting Resilience to Performance in Relation to OpenJDK</title><link>https://foojayio.github.io/website/today/connecting-resilience-to-performance-in-relation-to-openjdk/</link><pubDate>Thu, 22 Aug 2024 08:22:37 +0000</pubDate><guid>https://foojayio.github.io/website/today/connecting-resilience-to-performance-in-relation-to-openjdk/</guid><description>&lt;p&gt;&lt;strong&gt;When considering the connection between performance and resilience in Java, especially in the context of OpenJDK distributions, specific distributions&amp;mdash;like &lt;a href="https://www.azul.com/products/prime/" target="_blank" rel="noopener noreferrer"&gt;Azul Platform Prime&lt;/a&gt;
, which includes Azul Zing, an enhanced build of OpenJDK for superior performance, consistency, and efficiency&amp;mdash;offer unique features that can significantly influence how these two aspects are managed.&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;The &lt;a href="https://foojayio.github.io/website/today/the-impact-of-the-digital-operational-resilience-act-dora-on-java-investment-with-azul/"&gt;Digital Operational Resilience Act (DORA) by the European Union&lt;/a&gt;
 adds another layer of importance to these considerations, particularly for financial institutions operating within the EU, &lt;a href="https://foojayio.github.io/website/today/the-impact-of-the-eu-dora-act-on-non-eu-financial-organizations/"&gt;regardless of whether they are themselves EU-based institutions&lt;/a&gt;
.&lt;/p&gt;</description></item><item><title>Are Critical Vulnerabilities Lurking in Your Java Ecosystem?</title><link>https://foojayio.github.io/website/today/are-critical-vulnerabilities-lurking-in-your-java-ecosystem/</link><pubDate>Mon, 19 Aug 2024 12:57:59 +0000</pubDate><guid>https://foojayio.github.io/website/today/are-critical-vulnerabilities-lurking-in-your-java-ecosystem/</guid><description>&lt;p&gt;Java, the popular object-oriented language renowned for its portability, performance, and security, is often the preferred choice for organisations building everything from enterprise and cloud-native applications to Android apps.&lt;/p&gt;
&lt;p&gt;However, despite these strengths, Java&amp;rsquo;s popularity and the complex ecosystem of third-party libraries it relies upon have also made it a prime target for malicious actors to exploit vulnerabilities. According to the Datadog &amp;ldquo;State of DevSecOps&amp;rdquo;[1] report, a staggering 90% of Java services are susceptible to one or more critical or high-severity vulnerabilities, often stemming from external dependencies, compared to an average of 47% for other technologies. This discrepancy is concerning and points to inherent issues within the Java ecosystem.&lt;/p&gt;</description></item><item><title>The Impact of the EU DORA Act on Non-EU Financial Organizations</title><link>https://foojayio.github.io/website/today/the-impact-of-the-eu-dora-act-on-non-eu-financial-organizations/</link><pubDate>Wed, 14 Aug 2024 05:33:09 +0000</pubDate><guid>https://foojayio.github.io/website/today/the-impact-of-the-eu-dora-act-on-non-eu-financial-organizations/</guid><description>&lt;p&gt;&lt;strong&gt;The &lt;a href="https://foojayio.github.io/website/today/the-impact-of-the-digital-operational-resilience-act-dora-on-java-investment-with-azul/"&gt;EU Digital Operational Resilience Act (DORA)&lt;/a&gt;
 is a significant regulatory framework designed to strengthen the digital resilience of financial institutions within the European Union.&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;While the primary focus of DORA is on EU-based entities, its impact extends beyond the EU&amp;rsquo;s borders, particularly to financial organizations outside the EU that have business ties with the region.&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;Here&amp;rsquo;s how DORA impacts financial organizations outside the EU.&lt;/p&gt;
&lt;h3 id="h3-0-1-third-party-service-providers"&gt;1. &lt;strong&gt;Third-Party Service Providers&lt;/strong&gt;&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Scope of Regulation&lt;/strong&gt;. DORA covers not just financial entities within the EU but also third-party service providers, including Cloud services, software providers, and IT services. If these providers serve EU financial institutions, they must comply with DORA&amp;rsquo;s requirements, even if they are based outside the EU.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Increased Compliance Costs&lt;/strong&gt;. Non-EU service providers might need to invest in compliance infrastructure to meet DORA standards, which include stringent cybersecurity measures, operational resilience requirements, and incident reporting protocols.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Operational Changes&lt;/strong&gt;. These providers may need to adapt their operations to comply with DORA&amp;rsquo;s requirements, potentially impacting service delivery, pricing, and contractual arrangements with their EU clients.&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id="h3-1-2-cross-border-operations"&gt;2. &lt;strong&gt;Cross-Border Operations&lt;/strong&gt;&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;EU Subsidiaries&lt;/strong&gt;. Non-EU financial organizations with subsidiaries or branches in the EU must ensure that these entities comply with DORA. This might require significant changes in internal processes, governance structures, and IT systems.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Data Protection and Transfer&lt;/strong&gt;. DORA&amp;rsquo;s focus on operational resilience and cybersecurity intersects with data protection regulations. Non-EU organizations must ensure that data transfers and processing are compliant with EU standards, which could involve changes in data management practices.&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id="h3-2-3-competitive-pressure"&gt;3. &lt;strong&gt;Competitive Pressure&lt;/strong&gt;&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Market Access&lt;/strong&gt;. To maintain or gain access to the EU market, non-EU financial organizations must align with DORA&amp;rsquo;s requirements. Failure to comply might restrict their ability to operate within the EU or provide services to EU-based clients.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Reputation and Trust&lt;/strong&gt;. Organizations that proactively comply with DORA may gain a competitive edge by being seen as trustworthy and secure partners. Conversely, those that lag may face reputational risks, especially in a market increasingly focused on cybersecurity and operational resilience.&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id="h3-3-4-indirect-impact-through-business-relationships"&gt;4. &lt;strong&gt;Indirect Impact Through Business Relationships&lt;/strong&gt;&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Supply Chain Scrutiny&lt;/strong&gt;. DORA requires EU financial entities to ensure that their supply chain, including non-EU entities, adheres to operational resilience standards. Non-EU organizations in these supply chains may face increased scrutiny and pressure to comply with DORA, indirectly impacting their operations and costs.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Contractual Obligations&lt;/strong&gt;. Financial institutions in the EU may impose new contractual obligations on non-EU partners to ensure DORA compliance. This could lead to renegotiation of contracts and increased legal and operational overheads for non-EU entities.&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id="h3-4-5-global-regulatory-influence"&gt;5. &lt;strong&gt;Global Regulatory Influence&lt;/strong&gt;&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Precedent for Other Jurisdictions&lt;/strong&gt;. DORA could set a precedent, encouraging other jurisdictions to adopt similar regulatory frameworks. Non-EU financial organizations may find themselves needing to adapt to a broader wave of operational resilience regulations globally, beyond just the EU.&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id="h3-5-6-impact-on-financial-services-market"&gt;6. &lt;strong&gt;Impact on Financial Services Market&lt;/strong&gt;&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Barrier to Entry&lt;/strong&gt;. DORA&amp;rsquo;s stringent requirements might act as a barrier to entry for smaller or less-resourced non-EU financial firms seeking to enter the EU market, potentially limiting competition.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Innovation and Fintech&lt;/strong&gt;. While aiming to enhance security, DORA may also slow down innovation, as non-EU fintech firms might find the compliance burden heavy, possibly leading to a more cautious approach in launching new products or services in the EU.&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id="h3-6-summary"&gt;Summary&lt;/h3&gt;
&lt;p&gt;The EU DORA Act significantly impacts financial organizations outside the EU, especially those providing services to or operating within the EU.&lt;/p&gt;</description></item><item><title>Trash Pandas Love Enterprise Java Garbage Code</title><link>https://foojayio.github.io/website/today/trash-pandas-love-enterprise-java-garbage-code/</link><pubDate>Tue, 13 Aug 2024 08:16:55 +0000</pubDate><guid>https://foojayio.github.io/website/today/trash-pandas-love-enterprise-java-garbage-code/</guid><description>&lt;p&gt;&lt;strong&gt;If raccoons were software engineers, they would feel at home inside many enterprise systems. These systems are often full of unused and dead code that was written, fully tested, then altered in a way that prevents teams from ever running it.&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;This garbage code &amp;mdash; a raccoon&amp;rsquo;s favorite &amp;mdash; is a maintenance burden that developers must work around to keep passing tests while other major changes are made. This code often doesn&amp;rsquo;t end up in the trash because it&amp;rsquo;s hard to know what can be safely removed without breaking the application. But you can better identify bad code if you understand how to look for it.&lt;/p&gt;</description></item><item><title>Are Java Security Updates Important?</title><link>https://foojayio.github.io/website/today/are-java-security-updates-important/</link><pubDate>Sat, 03 Aug 2024 14:56:00 +0000</pubDate><guid>https://foojayio.github.io/website/today/are-java-security-updates-important/</guid><description>&lt;p&gt;&lt;strong&gt;Recently, I was in discussion with a Java user at a bank about the possibilities of using &lt;a href="https://www.azul.com/products/core/" target="_blank" rel="noopener noreferrer"&gt;Azul Platform Core&lt;/a&gt;
 (formerly known as Zulu) to run a range of applications. One of the most significant advantages for mission-critical enterprise applications is knowing that you have access to the latest security patches and bug fixes. With Platform Core, these are provided within a defined SLA after the embargo for updates is lifted (this is essentially the point in time when Oracle releases the update to their JDK).&lt;/strong&gt;&lt;/p&gt;</description></item><item><title>Consequences of DORA on Java and OpenJDK with Azul</title><link>https://foojayio.github.io/website/today/consequences-of-dora-on-java-and-openjdk-with-azul/</link><pubDate>Fri, 02 Aug 2024 13:49:44 +0000</pubDate><guid>https://foojayio.github.io/website/today/consequences-of-dora-on-java-and-openjdk-with-azul/</guid><description>&lt;p&gt;&lt;strong&gt;The EU&amp;rsquo;s &lt;a href="https://foojayio.github.io/website/today/the-impact-of-the-digital-operational-resilience-act-dora-on-java-investment-with-azul/"&gt;Digital Operational Resilience Act (DORA)&lt;/a&gt;
 is a regulatory framework aimed at enhancing the digital operational resilience of financial institutions within the European Union.&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;Its primary goal is to ensure that financial entities can withstand, respond to, and recover from all types of ICT-related disruptions and threats, such as cyberattacks.&lt;/p&gt;
&lt;p&gt;DORA establishes a uniform set of requirements for managing ICT risks across the financial sector, promoting a harmonized approach to digital resilience.&lt;/p&gt;</description></item><item><title>The Impact of the Digital Operational Resilience Act (DORA) on Java Investment with Azul</title><link>https://foojayio.github.io/website/today/the-impact-of-the-digital-operational-resilience-act-dora-on-java-investment-with-azul/</link><pubDate>Sun, 14 Jul 2024 13:26:13 +0000</pubDate><guid>https://foojayio.github.io/website/today/the-impact-of-the-digital-operational-resilience-act-dora-on-java-investment-with-azul/</guid><description>&lt;p&gt;&lt;strong&gt;The &lt;a href="https://eur-lex.europa.eu/eli/reg/2022/2554/oj" target="_blank" rel="noopener noreferrer"&gt;Digital Operational Resilience Act (DORA)&lt;/a&gt;
, Regulation (EU) 2022/2554&lt;/strong&gt; ,&lt;strong&gt;is a key piece of European Union legislation focused on strengthening the resilience of the financial sector against digital operational risks, such as cyber attacks and other ICT-related disruptions.&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;DORA is part of the broader &lt;a href="https://finance.ec.europa.eu/publications/digital-finance-package_en" target="_blank" rel="noopener noreferrer"&gt;Digital Finance Package&lt;/a&gt;
 introduced by the European Commission to enable innovation and competition in the financial sector while ensuring its security and resilience.&lt;/p&gt;
&lt;p&gt;It is focused on enhancing ICT risk management, strengthening cybersecurity, ensuring continuity and recovery, managing risks arising from dependencies on third-party ICT service providers, and incident reporting.&lt;/p&gt;</description></item><item><title>Foojay Podcast #52 from JCON in Cologne!</title><link>https://foojayio.github.io/website/today/foojay-podcast-52/</link><pubDate>Mon, 10 Jun 2024 09:32:12 +0000</pubDate><guid>https://foojayio.github.io/website/today/foojay-podcast-52/</guid><description>&lt;p&gt;This is part 4 of the JCON interviews!&lt;/p&gt;
&lt;p&gt;In this episode, we have 5 new guests for you.&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;We start with garbage collectors and Intelligence Cloud, a tool created by Azul to find out which of your code is actually used in production and which dependencies are known to have vulnerabilities. My colleague Gerrit Grunwald was at JCON to give a talk about these subjects.&lt;/li&gt;
&lt;li&gt;With Balkrishna Rawool we dove into Virtual Threads, a very interesting topic as concurrency and threads can be challenging&amp;hellip;&lt;/li&gt;
&lt;li&gt;Piotr Przybyl came to JCON to give a talk about Test Containers and how to test your application in an environment that is similar to your production environment. Another important topic related to testing is Flaky Tests. How do you handle tests that only fail from time to time and make your whole test report unreliable?&lt;/li&gt;
&lt;li&gt;François Martin had a talk about this subject, and he came to the conference together with Annelore Egger, who was one of the many volunteers.&lt;/li&gt;
&lt;/ul&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/9q7kSibmVBA?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>Foojay Podcast #50: JCON Report, Part 2 - Maven, Software Security, Code Quality</title><link>https://foojayio.github.io/website/today/foojay-podcast-50/</link><pubDate>Mon, 27 May 2024 08:07:54 +0000</pubDate><guid>https://foojayio.github.io/website/today/foojay-podcast-50/</guid><description>&lt;p&gt;This is part 2 of the interviews we recorded at the JCON conference earlier this month in Germany. In this episode, you get two main topics: &lt;strong&gt;Maven and Code Quality&lt;/strong&gt;.&lt;/p&gt;
&lt;p&gt;In the first part, you&amp;rsquo;ll hear Karl Heinz Marbaise and Steve Poole discuss the Maven project, the repository, Sonaytype, and the security impact of dependencies.&lt;/p&gt;
&lt;p&gt;But next to security, we developers are also responsible for creating readable and maintainable code. Miro Wengner, Marit van Dijk, and Hinse ter Schuur dive into this topic, in the second part!&lt;/p&gt;</description></item><item><title>Improve DevOps Productivity with Azul Intelligence Cloud for Any JVM</title><link>https://foojayio.github.io/website/today/improve-devops-productivity-with-azul-intelligence-cloud-for-any-jvm/</link><pubDate>Fri, 24 May 2024 09:46:34 +0000</pubDate><guid>https://foojayio.github.io/website/today/improve-devops-productivity-with-azul-intelligence-cloud-for-any-jvm/</guid><description>&lt;p&gt;For decades DevOps teams have been under pressure to do four things: make software faster, make it cheaper, keep it secure, and accelerate time to market.&lt;/p&gt;
&lt;p&gt;But with fewer engineering resources, enterprises that use Java must find a way to speed up application innovation and fortify application security across their entire Java estate more efficiently.&lt;/p&gt;
&lt;p&gt;The rewards (and costs of not doing so) are high &amp;ndash; companies in the top quartile of &lt;a href="https://www.mckinsey.com/industries/technology-media-and-telecommunications/our-insights/developer-velocity-how-software-excellence-fuels-business-performance" target="_blank" rel="noopener noreferrer"&gt;McKinsey&amp;rsquo;s Developer Velocity Index (DVI)&lt;/a&gt;
 perform significantly higher than bottom-quartile companies:&lt;/p&gt;</description></item><item><title>Secure your API with these 16 Practices with Apache APISIX – part 2</title><link>https://foojayio.github.io/website/today/secure-your-api-with-these-16-practices-with-apache-apisix-part-2/</link><pubDate>Mon, 11 Mar 2024 09:39:24 +0000</pubDate><guid>https://foojayio.github.io/website/today/secure-your-api-with-these-16-practices-with-apache-apisix-part-2/</guid><description>&lt;p&gt;&lt;a href="https://foojayio.github.io/website/today/secure-your-api-with-these-16-practices-with-apache-apisix-part-1/"&gt;We&amp;rsquo;ve listed 16 practices to help secure one&amp;rsquo;s APIs&lt;/a&gt;
 and described how to implement them with Apache APISIX.&lt;/p&gt;
&lt;blockquote&gt;
&lt;ol&gt;
&lt;li&gt;&lt;del&gt;Authentication 🕵️️ - Verifies the identity of users accessing APIs.&lt;/del&gt;&lt;/li&gt;
&lt;li&gt;&lt;del&gt;Authorization 🚦 - Determines permissions of authenticated users.&lt;/del&gt;&lt;/li&gt;
&lt;li&gt;Data Redaction 🖍️ - Obscures sensitive data for protection.&lt;/li&gt;
&lt;li&gt;Encryption 🔒 - Encodes data so only authorized parties can decode it.&lt;/li&gt;
&lt;li&gt;Error Handling ❌ - Manages responses when things go wrong, avoiding revealing sensitive info.&lt;/li&gt;
&lt;li&gt;&lt;del&gt;Input Validation &amp;amp; Data Sanitization 🧹 - Checks input data and removes harmful parts.&lt;/del&gt;&lt;/li&gt;
&lt;li&gt;Intrusion Detection Systems 👀 - Monitor networks for suspicious activities.&lt;/li&gt;
&lt;li&gt;&lt;del&gt;IP Whitelisting 📝 - Permits API access only from trusted IP addresses.&lt;/del&gt;&lt;/li&gt;
&lt;li&gt;&lt;del&gt;Logging and Monitoring 🖥️ - Keeps detailed logs and regularly monitors APIs.&lt;/del&gt;&lt;/li&gt;
&lt;li&gt;&lt;del&gt;Rate Limiting ⏱️ - Limits user requests to prevent overload.&lt;/del&gt;&lt;/li&gt;
&lt;li&gt;Secure Dependencies 📦 - Ensures third-party code is free from vulnerabilities.&lt;/li&gt;
&lt;li&gt;Security Headers 📋 - Enhances site security against types of attacks like XSS.&lt;/li&gt;
&lt;li&gt;Token Expiry ⏳ - Regularly expiring and renewing tokens prevents unauthorized access.&lt;/li&gt;
&lt;li&gt;Use of Security Standards and Frameworks 📘 - Guides your API security strategy.&lt;/li&gt;
&lt;li&gt;Web Application Firewall 🔥 - Protects your site from HTTP-specific attacks.&lt;/li&gt;
&lt;li&gt;API Versioning 🔄 - Maintains different versions of your API for seamless updates.&lt;/li&gt;
&lt;/ol&gt;
&lt;/blockquote&gt;
&lt;p&gt;Let&amp;rsquo;s now look at the remaining practices.&lt;/p&gt;</description></item><item><title>Secure your API with these 16 Practices with Apache APISIX - part 1</title><link>https://foojayio.github.io/website/today/secure-your-api-with-these-16-practices-with-apache-apisix-part-1/</link><pubDate>Mon, 11 Mar 2024 09:35:51 +0000</pubDate><guid>https://foojayio.github.io/website/today/secure-your-api-with-these-16-practices-with-apache-apisix-part-1/</guid><description>&lt;p&gt;A couple of months ago, I stumbled upon this list &lt;a href="https://www.linkedin.com/posts/brijpandeyji_secure-your-api-with-these-16-practices-activity-7094020647529369601-5kzQ/" target="_blank" rel="noopener noreferrer"&gt;16 practices to secure your API&lt;/a&gt;
:&lt;/p&gt;
&lt;blockquote&gt;
&lt;ol&gt;
&lt;li&gt;Authentication 🕵️️ - Verifies the identity of users accessing APIs.&lt;/li&gt;
&lt;li&gt;Authorization 🚦 - Determines permissions of authenticated users.&lt;/li&gt;
&lt;li&gt;Data Redaction 🖍️ - Obscures sensitive data for protection.&lt;/li&gt;
&lt;li&gt;Encryption 🔒 - Encodes data so only authorized parties can decode it.&lt;/li&gt;
&lt;li&gt;Error Handling ❌ - Manages responses when things go wrong, avoiding revealing sensitive info.&lt;/li&gt;
&lt;li&gt;Input Validation &amp;amp; Data Sanitization 🧹 - Checks input data and removes harmful parts.&lt;/li&gt;
&lt;li&gt;Intrusion Detection Systems 👀 - Monitor networks for suspicious activities.&lt;/li&gt;
&lt;li&gt;IP Whitelisting 📝 - Permits API access only from trusted IP addresses.&lt;/li&gt;
&lt;li&gt;Logging and Monitoring 🖥️ - Keeps detailed logs and regularly monitors APIs.&lt;/li&gt;
&lt;li&gt;Rate Limiting ⏱️ - Limits user requests to prevent overload.&lt;/li&gt;
&lt;li&gt;Secure Dependencies 📦 - Ensures third-party code is free from vulnerabilities.&lt;/li&gt;
&lt;li&gt;Security Headers 📋 - Enhances site security against types of attacks like XSS.&lt;/li&gt;
&lt;li&gt;Token Expiry ⏳ - Regularly expiring and renewing tokens prevents unauthorized access.&lt;/li&gt;
&lt;li&gt;Use of Security Standards and Frameworks 📘 - Guides your API security strategy.&lt;/li&gt;
&lt;li&gt;Web Application Firewall 🔥 - Protects your site from HTTP-specific attacks.&lt;/li&gt;
&lt;li&gt;API Versioning 🔄 - Maintains different versions of your API for seamless updates.&lt;/li&gt;
&lt;/ol&gt;
&lt;/blockquote&gt;
&lt;p&gt;While it&amp;rsquo;s debatable whether some points relate to security, &lt;em&gt;e.g.,&lt;/em&gt;, versioning, the list is a good starting point anyway. In this two-post series, I&amp;rsquo;d like to describe how we can implement each point with Apache APISIX (or not).&lt;/p&gt;</description></item><item><title>Hardening Apache APISIX with the OWASP's Coraza and Core Ruleset</title><link>https://foojayio.github.io/website/today/hardening-apache-apisix-with-the-owasps-coraza-and-core-ruleset/</link><pubDate>Tue, 20 Feb 2024 08:01:56 +0000</pubDate><guid>https://foojayio.github.io/website/today/hardening-apache-apisix-with-the-owasps-coraza-and-core-ruleset/</guid><description>&lt;blockquote&gt;
&lt;p&gt;The Open Worldwide Application Security Project is an online community that produces freely available articles, methodologies, documentation, tools, and technologies in the fields of IoT, system software and web application security. The OWASP provides free and open resources. It is led by a non-profit called The OWASP Foundation. The OWASP Top 10 - 2021 is the published result of recent research based on comprehensive data compiled from over 40 partner organizations.&lt;/p&gt;</description></item><item><title>Migrate to Spring Boot 3.2 with OpenRewrite</title><link>https://foojayio.github.io/website/today/openrewrite-migrate-to-spring-boot-3-2/</link><pubDate>Tue, 06 Feb 2024 08:17:07 +0000</pubDate><guid>https://foojayio.github.io/website/today/openrewrite-migrate-to-spring-boot-3-2/</guid><description>&lt;p&gt;&lt;strong&gt;As a developer, we frequently face the challenges of migrating to newer versions of frameworks and refactoring code. However, we can effortlessly achieve these tasks with the assistance of &lt;a href="https://docs.openrewrite.org/" target="_blank" rel="noopener noreferrer"&gt;OpenRewrite&lt;/a&gt;
. OpenRewrite provides a stack of recipes specifically designed for migration purposes. By utilizing the appropriate recipes and integrating with the rewrite plugin, we can effectively migrate our code.&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;Two months ago, the Spring Boot 3.2 version released, bringing numerous changes to the framework. If you are involved in multiple projects and require migrating to the latest version, developers may find manually updating all the code repositories with the necessary upgrade changes a challenging task.&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>State of the Software Supply Chain Report: Key Takeaways for Java Developers</title><link>https://foojayio.github.io/website/today/evolving-landscape-software-supply-chains-java-developers/</link><pubDate>Thu, 12 Oct 2023 08:19:25 +0000</pubDate><guid>https://foojayio.github.io/website/today/evolving-landscape-software-supply-chains-java-developers/</guid><description>&lt;p&gt;&lt;strong&gt;Sonatype have just released the 9th edition of their &lt;a href="https://www.sonatype.com/state-of-the-software-supply-chain/introduction" target="_blank" rel="noopener noreferrer"&gt;State of the Software Supply Chain Report&lt;/a&gt;
. It delves into the landscape of open source, software development, and software supply chain security. I thought I&amp;rsquo;d pull out some highlights for Java Developers!&lt;/strong&gt;&lt;/p&gt;
&lt;h2 id="h2-0-software-supply-chains-and-open-source"&gt;Software Supply Chains and Open Source&lt;/h2&gt;
&lt;h4 id="maven-central-hits-1-trillion-downloads"&gt;Maven Central hits 1 Trillion downloads&lt;/h4&gt;
&lt;p&gt;Open source adoption continues to grow, with Java (Maven) being a significant ecosystem.&lt;/p&gt;
&lt;p&gt;The report indicates that Java projects and their versions have seen substantial growth. a 28% year-over-year increase in total projects available on Maven Central - hitting the amazing 1 Trillion download number.&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>Thread-Safe Counter in Java: A Comprehensive Guide</title><link>https://foojayio.github.io/website/today/thread-safe-counter-in-java-a-comprehensive-guide/</link><pubDate>Thu, 17 Aug 2023 06:59:29 +0000</pubDate><guid>https://foojayio.github.io/website/today/thread-safe-counter-in-java-a-comprehensive-guide/</guid><description>&lt;p&gt;&lt;strong&gt;In this tutorial, we will explore the concept of thread safety in Java, specifically focusing on a simple counter.&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;We will start by understanding why a basic counter is not safe for multiple threads; then, we will progressively enhance its thread safety using different techniques such as synchronization, locks, Unsafe, VarHandle, and finally, AtomicInteger.&lt;/p&gt;
&lt;p&gt;We will be referencing the code from this &lt;a href="https://github.com/rokon12/counter" target="_blank" rel="noopener noreferrer"&gt;repository&lt;/a&gt;
 throughout the tutorial.&lt;/p&gt;
&lt;p&gt;Before we dive into the different implementations, let&amp;rsquo;s define a Counter interface that all our counter classes will implement.&lt;/p&gt;</description></item><item><title>Book Review: "OpenJDK Migration for Dummies"</title><link>https://foojayio.github.io/website/today/book-review-openjdk-migration-for-dummies/</link><pubDate>Fri, 04 Aug 2023 09:02:46 +0000</pubDate><guid>https://foojayio.github.io/website/today/book-review-openjdk-migration-for-dummies/</guid><description>&lt;p&gt;&lt;strong&gt;The subject of Java licensing and OpenJDK migration is complex and vital to many software engineers.&lt;/strong&gt; &lt;strong&gt;I am no different. It&amp;rsquo;s a topic often shrouded in legal jargon and technicalities, making it difficult to approach.&lt;/strong&gt;&lt;/p&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;p&gt;&amp;ldquo;OpenJDK Migration for Dummies&amp;rdquo; by&lt;a href="https://www.linkedin.com/in/siritter/" target="_blank" rel="noopener noreferrer"&gt;Simon Ritter&lt;/a&gt;
 offers a fresh perspective, breaking down these challenges into digestible segments. (&lt;a href="https://www.azul.com/openjdk-migration-for-dummies/" target="_blank" rel="noopener noreferrer"&gt;Get it for free here.&lt;/a&gt;
)&lt;/p&gt;
&lt;p&gt;&lt;a href="https://www.azul.com/openjdk-migration-for-dummies/" target="_blank" rel="noopener noreferrer"&gt;&lt;/a&gt;
&lt;/p&gt;
&lt;p&gt;[&lt;/p&gt;
&lt;img decoding="async" class="alignright wp-image-101738" src="dummies-373x510.png" alt="" width="270" height="369"&gt;
&lt;p&gt;](&lt;a href="https://www.azul.com/openjdk-migration-for-dummies/" target="_blank" rel="noopener noreferrer"&gt;https://www.azul.com/openjdk-migration-for-dummies/&lt;/a&gt;
)&lt;/p&gt;
&lt;br /&gt;
&lt;p&gt;The book directly speaks to my core expertise in Java, providing clarity and guidance.&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>Understanding Security Vulnerabilities: Preventing Attacks</title><link>https://foojayio.github.io/website/today/understanding-security-vulnerabilities-a-first-step-in-preventing-attacks/</link><pubDate>Thu, 06 Jul 2023 12:49:42 +0000</pubDate><guid>https://foojayio.github.io/website/today/understanding-security-vulnerabilities-a-first-step-in-preventing-attacks/</guid><description>&lt;p&gt;When I was a teenager, our local telephone company introduced a new service - the premium phone calls (AKA 1-900 numbers).&lt;/p&gt;
&lt;p&gt;The fun part was that we discovered a workaround to these charges by dialing the sequential local numbers which these 1-900 numbers would redirect to.&lt;/p&gt;
&lt;p&gt;If the &amp;ldquo;support number&amp;rdquo; for the 1-900 was 555-555 we would dial every number between 555-455 and 555-655 until we hit the jackpot&amp;hellip;&lt;/p&gt;
&lt;p&gt;Hours were spent dialing these numbers, leading us to make numerous calls for free. This attack is still prevalent today, and it&amp;rsquo;s called Insecure Direct Object References (IDOR).&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>State of Java Survey</title><link>https://foojayio.github.io/website/today/state-of-java-survey/</link><pubDate>Tue, 23 May 2023 05:47:41 +0000</pubDate><guid>https://foojayio.github.io/website/today/state-of-java-survey/</guid><description>&lt;p&gt;Do you ever wonder what OpenJDK distributions and what Java versions your peers are using? Java-based infrastructures and languages? How many are running Java applications in public clouds?&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;THE SURVEY DESCRIBED BELOW IS NOW COMPLETE, NO MORE RESPONSES CAN BE ACCEPTED.&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;Azul has been gathering all that data from a survey of Java users, running until 6:30pm CT on June 15, 2023. If you want to participate, the survey takes about 10 minutes, and we&amp;rsquo;ll hook you up with the report after the survey is complete. Plus you&amp;rsquo;ll be helping to add to our collective knowledge. Plus you&amp;rsquo;ll be entered into a drawing to win prizes like an Apple MacBook Pro laptop or a set of AirPods.
&lt;img src="https://foojayio.github.io/website/today/state-of-java-survey/image-6-1024x272.png" alt="" loading="lazy"&gt;
&lt;/p&gt;</description></item><item><title>Analyzing dependencies in IntelliJ IDEA</title><link>https://foojayio.github.io/website/today/analyzing-dependencies-in-intellij-idea/</link><pubDate>Thu, 11 May 2023 09:33:40 +0000</pubDate><guid>https://foojayio.github.io/website/today/analyzing-dependencies-in-intellij-idea/</guid><description>&lt;p&gt;If you&amp;rsquo;re working on a real world project, you&amp;rsquo;re probably using external dependencies.&lt;/p&gt;
&lt;p&gt;You might need to analyze which dependencies your application uses.&lt;/p&gt;
&lt;p&gt;For example, you may want to find out how a particular version of a dependency ended up in your application.&lt;/p&gt;
&lt;p&gt;Let&amp;rsquo;s take a look at how IntelliJ IDEA can help you to analyze dependencies.&lt;/p&gt;
&lt;p&gt;We can view our dependencies in the Maven or Gradle tool window.&lt;/p&gt;
&lt;p&gt;Here, we can expand dependencies to show their transitive dependencies, or collapse them again.&lt;/p&gt;</description></item><item><title>Using Bots to Keep Dependencies Updated</title><link>https://foojayio.github.io/website/today/using-bots-to-keep-dependencies-updated/</link><pubDate>Mon, 27 Mar 2023 15:18:33 +0000</pubDate><guid>https://foojayio.github.io/website/today/using-bots-to-keep-dependencies-updated/</guid><description>&lt;p&gt;Any real world Java project will likely use external dependencies.&lt;/p&gt;
&lt;p&gt;As we&amp;rsquo;ve seen over the last few years, it&amp;rsquo;s important to keep these dependencies up to date. We used to have to manually check for updates, but fortunately these days there are tools available that can help us with this. Because, let&amp;rsquo;s be honest, most developers don&amp;rsquo;t enjoy maintaining applications.&lt;/p&gt;
&lt;p&gt;We&amp;rsquo;d much rather be using cool new tools and/or language features, and solving interesting problems. Sorry, I mean: delivering business value! But we are responsible for keeping our dependencies up to date, so let&amp;rsquo;s make that as easy as possible.&lt;/p&gt;</description></item><item><title>Java Security: Log4J, the SecurityManager, and Funding</title><link>https://foojayio.github.io/website/today/java-security-log4j-the-securitymanager-and-funding/</link><pubDate>Fri, 24 Mar 2023 09:28:00 +0000</pubDate><guid>https://foojayio.github.io/website/today/java-security-log4j-the-securitymanager-and-funding/</guid><description>&lt;p&gt;A demonstration of log4j exploits, which defenses people tried, and which worked.&lt;/p&gt;
&lt;p&gt;We&amp;rsquo;ll cover how groups responded effectively to patch to see what was common.&lt;/p&gt;
&lt;p&gt;We&amp;rsquo;ll also look at open source funding models, subscriptions, and bug bounty programs to see why it&amp;rsquo;s sometimes hard to donate.&lt;/p&gt;
&lt;p&gt;This talk uses actual exploit code that takes over systems through their log messages to open calculators.&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/0mi9mTMd_5I?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;</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>Predicting Secure Java Projects on Maven Central</title><link>https://foojayio.github.io/website/today/predicting-secure-java-projects-on-maven-central/</link><pubDate>Thu, 23 Mar 2023 14:10:02 +0000</pubDate><guid>https://foojayio.github.io/website/today/predicting-secure-java-projects-on-maven-central/</guid><description>&lt;p&gt;If you&amp;rsquo;ve searched for &lt;a href="http://central.sonatype.com" title="Maven Central components" target="_blank" rel="noopener noreferrer"&gt;Maven Central components&lt;/a&gt;
 in the last six months, you may have noticed some pretty big changes to the website, including a UI facelift and some new component analysis tools like &lt;a href="https://bomdoctor.sonatype.com/#/home" title="BOM Doctor" target="_blank" rel="noopener noreferrer"&gt;BOM Doctor&lt;/a&gt;
 and the Sonatype Safety Rating.&lt;/p&gt;
&lt;p&gt;It&amp;rsquo;s no coincidence that many of these changes are security related. Maven Central, along with public code repositories, are the first line of defense when it comes to supply chain security.&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>Authenticate with OpenID Connect and Apache APISIX</title><link>https://foojayio.github.io/website/today/authenticate-with-openid-connect-and-apache-apisix/</link><pubDate>Thu, 09 Mar 2023 07:51:47 +0000</pubDate><guid>https://foojayio.github.io/website/today/authenticate-with-openid-connect-and-apache-apisix/</guid><description>&lt;p&gt;Lots of companies are eager to provide their identity provider: Twitter, Facebook, Google, etc. For smaller businesses, not having to manage identities is a benefit. However, we want to avoid being locked into one provider.&lt;/p&gt;
&lt;p&gt;In this article, I want to demo how to use OpenID Connect using Google underneath and then switch to Azure.&lt;/p&gt;
&lt;h2 id="h2-0-openid-connect"&gt;OpenID Connect&lt;/h2&gt;
&lt;p&gt;The idea of an &lt;em&gt;authorization&lt;/em&gt; open standard started with &lt;a href="https://en.wikipedia.org/wiki/OAuth" target="_blank" rel="noopener noreferrer"&gt;OAuth&lt;/a&gt;
 around 2006. Because of a security issue, OAuth 2.0 superseded the initial version. OAuth 2.0 became an in 2012:&lt;/p&gt;</description></item><item><title>Making SBOMs, Threats, and Modelling Them a Piece of Cake!</title><link>https://foojayio.github.io/website/today/making-sboms-threats-and-modelling-them-a-piece-of-cake/</link><pubDate>Tue, 07 Mar 2023 09:15:56 +0000</pubDate><guid>https://foojayio.github.io/website/today/making-sboms-threats-and-modelling-them-a-piece-of-cake/</guid><description>&lt;p&gt;The third in a series of SBOMs, software supply chains, the government and you (you too, no exceptions).&lt;/p&gt;
&lt;p&gt;Yes, just like the previous articles, we have cake this time too - this one is a three tiered extravaganza!&lt;/p&gt;
&lt;figure class="aligncenter size-thumbnail"&gt;
 &lt;img fetchpriority="high" decoding="async" width="300" height="260" src="Unknown-300x260.jpg" alt="" class="wp-image-62771"&gt;
&lt;/figure&gt;
&lt;p&gt;So&amp;hellip; still with us? Good!&lt;/p&gt;
&lt;p&gt;Earlier, Steve Poole showed us his digital mixing bowl, &lt;a href="https://foojayio.github.io/website/today/sboms-first-steps-in-a-new-journey-for-developers/"&gt;telling us how applications and their dependencies were like ingredients to a fancy cake&lt;/a&gt;
.&lt;/p&gt;
&lt;p&gt;Jamie Coleman then made sure there were no soggy bottoms (one for the Mary Berry fans), by explaining how &lt;a href="https://foojayio.github.io/website/today/sboms-and-software-composition-analysis/"&gt;SCA tools and SBOMs can work together to prevent vulnerabilities&lt;/a&gt;
.&lt;/p&gt;</description></item><item><title>Java Serialization Filtering: Prevent 0-day Security Vulnerabilities</title><link>https://foojayio.github.io/website/today/java-serialization-filtering-prevent-0-day-security-vulnerabilities/</link><pubDate>Fri, 03 Mar 2023 16:04:53 +0000</pubDate><guid>https://foojayio.github.io/website/today/java-serialization-filtering-prevent-0-day-security-vulnerabilities/</guid><description>&lt;p&gt;I&amp;rsquo;ve been a Java developer long enough to remember the excitement when Sun introduced the concept of serialization in the JVM.&lt;/p&gt;
&lt;p&gt;In the world of C, we could just write a struct into a file but this was always problematic. It wasn&amp;rsquo;t portable and had many issues. But for Java we could just write the class and it &amp;ldquo;worked&amp;rdquo;. This was pure magic!&lt;/p&gt;
&lt;p&gt;Java was still mostly in use in the client side and when we thought about security, we had different vulnerabilities in mind. The sandbox occupied most of our security discussions.&lt;/p&gt;</description></item><item><title>Make Your Security Policy Auditable</title><link>https://foojayio.github.io/website/today/make-your-security-policy-auditable/</link><pubDate>Tue, 28 Feb 2023 11:14:22 +0000</pubDate><guid>https://foojayio.github.io/website/today/make-your-security-policy-auditable/</guid><description>&lt;p&gt;Following from my previous article, I wrote about &lt;a href="https://foojayio.github.io/website/today/the-right-feature-at-the-right-place/"&gt;putting the right feature at the right place&lt;/a&gt;
.&lt;/p&gt;
&lt;p&gt;I used rate limiting as an example, moving it from a library inside the application to the API Gateway.&lt;/p&gt;
&lt;p&gt;Today, I&amp;rsquo;ll use another example: authentication and authorization.&lt;/p&gt;
&lt;h2 id="h2-0-securing-a-spring-boot-application"&gt;Securing a Spring Boot application&lt;/h2&gt;
&lt;p&gt;I&amp;rsquo;ll keep using Spring Boot in the following because I&amp;rsquo;m familiar with it. The Spring Boot application offers a REST endpoint to check employees&amp;rsquo; salaries.&lt;/p&gt;</description></item><item><title>SBOMs and Software Composition Analysis │ Foojay.io</title><link>https://foojayio.github.io/website/today/sboms-and-software-composition-analysis/</link><pubDate>Mon, 27 Feb 2023 08:11:28 +0000</pubDate><guid>https://foojayio.github.io/website/today/sboms-and-software-composition-analysis/</guid><description>&lt;h4 id="this-article-is-the-second-in-a-series-about-sboms-software-supply-chains-the-government-and-you"&gt;This article is the second in a series about SBOMs, software supply chains, the government and you.&lt;/h4&gt;
&lt;h4 id="i-hope-you-are-still-hungry-after-the-first-article-as-more-cake-is-available-below"&gt;I hope you are still hungry after the first article as more cake is available below!&lt;/h4&gt;
&lt;p&gt;&lt;img src="https://foojayio.github.io/website/today/sboms-and-software-composition-analysis/cake-image.png" alt="Cake and Dependencies" title="Cake and Dependencies" loading="lazy"&gt;
&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;If you have read the first article in this series that introduces SBOMs &lt;a href="https://foojayio.github.io/website/today/sboms-first-steps-in-a-new-journey-for-developers/" title="SBOMs: First Steps in a New Journey for Developers"&gt;SBOMs: First Steps in a New Journey for Developers | Foojay.io&lt;/a&gt;
 then you already know how important they are and will be increasingly going forward.&lt;/strong&gt;&lt;/p&gt;</description></item><item><title>Update or Upgrade Java... and Which Version Should You Use?</title><link>https://foojayio.github.io/website/today/should-you-update-java-or-upgrade-and-which-version-should-you-use/</link><pubDate>Thu, 23 Feb 2023 09:12:39 +0000</pubDate><guid>https://foojayio.github.io/website/today/should-you-update-java-or-upgrade-and-which-version-should-you-use/</guid><description>&lt;h2 id="h2-0-update-versus-upgrade-what-s-the-difference-and-what-are-the-consequences-of-your-decision"&gt;&lt;em&gt;Update versus Upgrade: what&amp;rsquo;s the difference and what are the consequences of your decision?&lt;/em&gt;&lt;/h2&gt;
&lt;p&gt;Since 2018, every six months we get an upgrade to a new OpenJDK version, and this year versions 20 and 21 will be released.&lt;/p&gt;
&lt;p&gt;Next to these six-month releases, OpenJDK distributor Azul, amongst others, provides four critical patch updates (CPU) and patch set updates (PSU) per year.&lt;/p&gt;
&lt;p&gt;So what&amp;rsquo;s the difference between a Java upgrade and an update?&lt;/p&gt;</description></item><item><title>Moving Security into the JVM</title><link>https://foojayio.github.io/website/today/moving-security-into-the-jvm/</link><pubDate>Fri, 17 Feb 2023 11:15:35 +0000</pubDate><guid>https://foojayio.github.io/website/today/moving-security-into-the-jvm/</guid><description>&lt;p&gt;The threat model for Java applications is changing, with modern risk coming from the widespread scope and usage of Java and library vulnerabilities.&lt;/p&gt;
&lt;p&gt;There are so many different versions of Java (both major and minor versions) and so many systems and libraries that it&amp;rsquo;s complex to know what everything is, where everything is, and if it&amp;rsquo;s what&amp;rsquo;s &amp;ldquo;out there&amp;rdquo; poses any security risk.&lt;/p&gt;
&lt;p&gt;The new &lt;a href="https://www.azul.com/products/vulnerability-detection" target="_blank" rel="noopener noreferrer"&gt;Azul Vulnerability Detection&lt;/a&gt;
 product by &lt;a href="https://www.azul.com/" target="_blank" rel="noopener noreferrer"&gt;Azul&lt;/a&gt;
 is designed to help organizations deal with this evolving threat and manage the large scope of their Java environments.&lt;/p&gt;</description></item><item><title>SBOMs: First Steps in a New Journey for Developers</title><link>https://foojayio.github.io/website/today/sboms-first-steps-in-a-new-journey-for-developers/</link><pubDate>Tue, 14 Feb 2023 10:01:28 +0000</pubDate><guid>https://foojayio.github.io/website/today/sboms-first-steps-in-a-new-journey-for-developers/</guid><description>&lt;p&gt;&lt;em&gt;&lt;strong&gt;This article is the first in a series about SBOMs, software supply chains, the government and you. Buckle up - it&amp;rsquo;s going to be a wild ride. Luckily there is cake to see you through.&lt;/strong&gt;&lt;/em&gt;&lt;/p&gt;
&lt;p&gt;Software bill of materials, anyone? A year ago, most developers had not heard of the &amp;lsquo;SBOM&amp;rsquo; acronym.&lt;/p&gt;
&lt;p&gt;Indeed, related terms like &amp;ldquo;software supply chain&amp;rdquo; or &amp;ldquo;security hygiene&amp;rdquo; were absent from most developers&amp;rsquo; vocabularies.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Things are about to change! This year is already shaping up to be the year of SBOMs, of securing the software supply chain, and of the appearance of legislation that enforces better security practices among those involved in software. Whether in creation, testing, deploying, securing or operating, we all have specific security responsibilities in protecting our part of the software supply chain.&lt;/strong&gt;&lt;/p&gt;</description></item><item><title>How to Find &amp; Fix Vulnerabilities with IntelliJ IDEA Ultimate</title><link>https://foojayio.github.io/website/today/package-checker-find-fix-vulnerabilities-with-intellij-idea-ultimate/</link><pubDate>Mon, 13 Feb 2023 09:09:39 +0000</pubDate><guid>https://foojayio.github.io/website/today/package-checker-find-fix-vulnerabilities-with-intellij-idea-ultimate/</guid><description>&lt;p&gt;In this article, we&amp;rsquo;re going to take a look at the &lt;a href="https://plugins.jetbrains.com/plugin/18337-package-checker" target="_blank" rel="noopener noreferrer"&gt;Package Checker plugin&lt;/a&gt;
, that&amp;rsquo;s bundled with &lt;a href="https://www.jetbrains.com/idea/" target="_blank" rel="noopener noreferrer"&gt;IntelliJ IDEA Ultimate&lt;/a&gt;
.&lt;/p&gt;
&lt;p&gt;We&amp;rsquo;ll have a look at how to view known vulnerabilities in your Maven or Gradle projects, how to get more information about the known vulnerabilities in a specific dependency and how to remediate these vulnerabilities inside IntelliJ IDEA Ultimate if a new version with a fix is available.&lt;/p&gt;
&lt;p&gt;&lt;a href="https://foojayio.github.io/website/plugin.png" title="Package Checker plugin"&gt;&lt;img src="https://foojayio.github.io/website/today/package-checker-find-fix-vulnerabilities-with-intellij-idea-ultimate/plugin.png" alt="Package Checker plugin" title="Package Checker plugin" loading="lazy"&gt;
&lt;/a&gt;
&lt;/p&gt;</description></item><item><title>Securing Admin Access to Apache APISIX</title><link>https://foojayio.github.io/website/today/securing-admin-access-to-apache-apisix/</link><pubDate>Sat, 11 Feb 2023 16:34:59 +0000</pubDate><guid>https://foojayio.github.io/website/today/securing-admin-access-to-apache-apisix/</guid><description>&lt;p&gt;API Gateways are critical components in one&amp;rsquo;s infrastructure.&lt;/p&gt;
&lt;p&gt;If an attacker could change the configuration of routes, they could direct traffic to their infrastructure.&lt;/p&gt;
&lt;p&gt;Consequences could range from data theft to financial losses.&lt;/p&gt;
&lt;p&gt;Worse, data theft could only be noticed after a long time by mirroring the load.&lt;/p&gt;
&lt;p&gt;Hence, protecting your API Gateway is of utmost importance.&lt;/p&gt;
&lt;p&gt;In this short article, I&amp;rsquo;ll list a couple of ways to secure your Apache APISIX admin access.&lt;/p&gt;</description></item><item><title>Vaadin, OAuth2, and Keycloak</title><link>https://foojayio.github.io/website/today/vaadin-oauth2-and-keycloak/</link><pubDate>Tue, 24 Jan 2023 09:34:41 +0000</pubDate><guid>https://foojayio.github.io/website/today/vaadin-oauth2-and-keycloak/</guid><description>&lt;p&gt;This article shows how to configure Vaadin and Spring Security to use OAuth2 with Keycloak.&lt;/p&gt;
&lt;h2 id="h2-0-keycloak"&gt;Keycloak&lt;/h2&gt;
&lt;p&gt;First, we must start Keycloak and configure a realm. The easiest way is to start Keycloak with Docker.&lt;br&gt;
&lt;em&gt;Caution: This is just for development purposes. Don&amp;rsquo;t use the setup in production.&lt;/em&gt;&lt;/p&gt;
&lt;pre class="EnlighterJSRAW" data-enlighter-language="bash" data-enlighter-theme="" data-enlighter-highlight="" data-enlighter-linenumbers="" data-enlighter-lineoffset="" data-enlighter-title="" data-enlighter-group=""&gt;docker run -d -p 8180:8080 -e KEYCLOAK_ADMIN=admin -e KEYCLOAK_ADMIN_PASSWORD=admin \ 
 quay.io/keycloak/keycloak:20.0.1 start-dev&lt;/pre&gt;
&lt;p&gt;Now you can log in to the admin console: &lt;a href="http://localhost:8180/admin" target="_blank" rel="noopener noreferrer"&gt;http://localhost:8180/admin&lt;/a&gt;
 (user: admin, password: admin)&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>Internal Security: Hardening Internal Systems</title><link>https://foojayio.github.io/website/today/internal-security-hardening-internal-systems/</link><pubDate>Fri, 18 Nov 2022 15:08:28 +0000</pubDate><guid>https://foojayio.github.io/website/today/internal-security-hardening-internal-systems/</guid><description>&lt;p&gt;60% of security breaches are internal to the organization and yet when we think about security we usually think about vulnerabilities, exploits, etc. All the while, 60% of hacks are just from a person just logging into the system and taking whatever the hell they want.&lt;/p&gt;
&lt;p&gt;I&amp;rsquo;ve been thinking about this quite a bit recently. I spent a great deal of time researching security-related issues for a chapter of my upcoming book and unfortunately found very little on hardening internal systems.&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>Learning by Auditing Kubernetes Manifests</title><link>https://foojayio.github.io/website/today/learning-by-auditing-kubernetes-manifests/</link><pubDate>Mon, 05 Sep 2022 08:44:17 +0000</pubDate><guid>https://foojayio.github.io/website/today/learning-by-auditing-kubernetes-manifests/</guid><description>&lt;p&gt;Last year, I spoke at the &lt;a href="https://www.devopsonline.co.uk/national-devops-conference/" target="_blank" rel="noopener noreferrer"&gt;National DevOps Conference&lt;/a&gt;
 that took place at the British Museum. I had already visited the museum before, but speaking there was a fantastic experience. Besides, we had the museum all for ourselves for a couple of hours. If you&amp;rsquo;ve ever visited the place, you know what I mean.&lt;/p&gt;
&lt;p&gt;Anyway, I also attended a talk about &lt;a href="https://www.checkov.io/" target="_blank" rel="noopener noreferrer"&gt;Checkov&lt;/a&gt;
:&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;Checkov scans cloud infrastructure configurations to find misconfigurations before they&amp;rsquo;re deployed.&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>How to Secure Your Web Apps With An API Gateway</title><link>https://foojayio.github.io/website/today/how-to-secure-your-web-apps-with-an-api-gateway/</link><pubDate>Mon, 18 Jul 2022 18:50:10 +0000</pubDate><guid>https://foojayio.github.io/website/today/how-to-secure-your-web-apps-with-an-api-gateway/</guid><description>&lt;p&gt;API management solutions, also known as API gateways, are a must in this day and age of APIs.&lt;/p&gt;
&lt;p&gt;However, once you&amp;rsquo;ve set up such a gateway, you can use it for different purposes unrelated to APIs.&lt;/p&gt;
&lt;p&gt;Today, I want to show you how to improve the security of web apps.&lt;/p&gt;
&lt;h2 id="h2-0-prevent-sniffing"&gt;Prevent sniffing&lt;/h2&gt;
&lt;p&gt;Browsers are fantastic pieces of technology that try to make the life of users as comfortable as possible.&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>Does Java 18 Finally Have A Better Alternative To JNI?</title><link>https://foojayio.github.io/website/today/does-java-18-finally-have-a-better-alternative-to-jni/</link><pubDate>Tue, 19 Apr 2022 21:01:50 +0000</pubDate><guid>https://foojayio.github.io/website/today/does-java-18-finally-have-a-better-alternative-to-jni/</guid><description>&lt;p&gt;Java 18 was released last month (March 2022), and with it comes the second incubator of the Foreign Function &amp;amp; Memory API, so let us look at the state of Foreign Function Interface (FFI) in Java.&lt;/p&gt;
&lt;p&gt;&lt;img src="https://dev-to-uploads.s3.amazonaws.com/uploads/articles/c1kwxzrhvt40nuulijge.png" alt="cover image" loading="lazy"&gt;
&lt;/p&gt;
&lt;p&gt;If you would prefer to follow along by watching a video, here&amp;rsquo;s the recording of my FOSDEM'22 talk on this topic, from the &lt;a href="https://youtu.be/lW69_AtAXzE" target="_blank" rel="noopener noreferrer"&gt;the OktaDev YouTube channel&lt;/a&gt;
.&lt;/p&gt;
&lt;h2 id="h2-0-what-is-a-foreign-function-interface"&gt;What is a Foreign Function Interface?&lt;/h2&gt;
&lt;p&gt;A foreign function interface is the ability to call functions or routines written in one programming language from another programming language.&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>Spring Remote Code Execution Vulnerability</title><link>https://foojayio.github.io/website/today/spring-remote-code-execution-vulnerability/</link><pubDate>Thu, 31 Mar 2022 14:54:49 +0000</pubDate><guid>https://foojayio.github.io/website/today/spring-remote-code-execution-vulnerability/</guid><description>&lt;p&gt;I&amp;rsquo;d like to start by saying that I&amp;rsquo;m not a security expert. I also won&amp;rsquo;t link to the exploit. This is a very fresh take on a new vulnerability but there&amp;rsquo;s &lt;a href="https://blog.sonatype.com/new-0-day-spring-framework-vulnerability-confirmed" target="_blank" rel="noopener noreferrer"&gt;already confirmation from Sonatype&lt;/a&gt;
. The current exploit seems to be limited to Spring on top of Tomcat but it probably can be adapted since the underlying vulnerability seems general enough.&lt;/p&gt;
&lt;p&gt;The vulnerability only impacts Java 9 or newer so if you have an older version you should be safe from this specific exploit.&lt;/p&gt;</description></item><item><title>Quick Fire Java: Java After Log4j</title><link>https://foojayio.github.io/website/today/quick-fire-java-java-after-log4j/</link><pubDate>Thu, 31 Mar 2022 08:23:36 +0000</pubDate><guid>https://foojayio.github.io/website/today/quick-fire-java-java-after-log4j/</guid><description>&lt;p&gt;In this episode of the Quick Fire Java video series, Rudy De Busscher and Priya Khaira-Hanks discuss Log4j, security processes and prioritization, and how Payara dealt with the vulnerability.&lt;/p&gt;
&lt;p&gt;All in a concise 10-minute video!&lt;/p&gt;
&lt;p&gt;The &lt;a href="https://logging.apache.org/log4j/2.x/" target="_blank" rel="noopener noreferrer"&gt;Log4j&lt;/a&gt;
 vulnerability, &lt;a href="https://en.wikipedia.org/wiki/Log4Shell" target="_blank" rel="noopener noreferrer"&gt;Log4Shell&lt;/a&gt;
, was disclosed in early December 2021 and the repercussions have been far-reaching.&lt;/p&gt;
&lt;p&gt;&lt;a href="https://twitter.com/rdebusscher" target="_blank" rel="noopener noreferrer"&gt;Rudy&lt;/a&gt;
 explains more about what this actually means and about the wider implications of the incident. He also responds to &lt;a href="https://www.breachquest.com/" target="_blank" rel="noopener noreferrer"&gt;BreachQuest&amp;rsquo;s&lt;/a&gt;
&lt;a href="https://twitter.com/MalwareJake" target="_blank" rel="noopener noreferrer"&gt;Jake Williams&lt;/a&gt;
 for &lt;a href="https://threatpost.com/" target="_blank" rel="noopener noreferrer"&gt;Threatpost&lt;/a&gt;
, who claimed &amp;ldquo;being exploited through an internet-facing system running vulnerable log4j at this point is a leadership failure, not a technical one.&amp;rdquo;&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>Detect, Track, Verify Security Issues &amp; 0-Days</title><link>https://foojayio.github.io/website/today/detecting-investigating-and-verifying-fixes-for-security-incidents-and-zero-day-issues-using-lightrun/</link><pubDate>Thu, 10 Mar 2022 12:25:09 +0000</pubDate><guid>https://foojayio.github.io/website/today/detecting-investigating-and-verifying-fixes-for-security-incidents-and-zero-day-issues-using-lightrun/</guid><description>&lt;p&gt;&lt;strong&gt;Important:&lt;/strong&gt; You can use &lt;a href="https://lightrun.com/free" target="_blank" rel="noopener noreferrer"&gt;Lightrun for free&lt;/a&gt;
 on your servers.&lt;/p&gt;
&lt;p&gt;I&amp;rsquo;m not a security expert. I&amp;rsquo;d like to think of myself as a security conscious developer, but this is a vast subject with depth and breadth. What I understand is &lt;a href="https://lightrun.com/debugging/remote-debugging/" target="_blank" rel="noopener noreferrer"&gt;Lightrun and Debugging&lt;/a&gt;
. In that capacity, I can show some creative ways you can use it as a security tool. A &amp;ldquo;proper&amp;rdquo; security expert could take this to the next level.&lt;/p&gt;</description></item><item><title>Treat Security as a Risk</title><link>https://foojayio.github.io/website/today/treat-security-as-risk/</link><pubDate>Thu, 27 Jan 2022 11:26:57 +0000</pubDate><guid>https://foojayio.github.io/website/today/treat-security-as-risk/</guid><description>&lt;p&gt;Security is the poster child of a Non-Functional Requirement: most people don&amp;rsquo;t care until the proverbial matter hits the rotary propeller.&lt;/p&gt;
&lt;p&gt;Consequences can range from losing reputation to legal liability to putting the business out. In my &lt;a href="https://blog.frankel.ch/running-untrusted-code/" target="_blank" rel="noopener noreferrer"&gt;post on running unsecured code&lt;/a&gt;
, I concluded that you should treat security as a risk - and left it at that. I think it warrants a dedicated post.&lt;/p&gt;
&lt;p&gt;Risk management is pretty &lt;a href="https://en.wikipedia.org/wiki/Risk_management" target="_blank" rel="noopener noreferrer"&gt;much documented&lt;/a&gt;
. You can find it in many engineering disciplines, if not every one of them. A risk management process consists of the following steps:&lt;/p&gt;</description></item><item><title>The State of Java in 2022</title><link>https://foojayio.github.io/website/today/the-state-of-java-in-2022/</link><pubDate>Tue, 25 Jan 2022 10:24:08 +0000</pubDate><guid>https://foojayio.github.io/website/today/the-state-of-java-in-2022/</guid><description/></item><item><title>You're Running Untrusted Code!</title><link>https://foojayio.github.io/website/today/running-untrusted-code/</link><pubDate>Mon, 17 Jan 2022 08:28:24 +0000</pubDate><guid>https://foojayio.github.io/website/today/running-untrusted-code/</guid><description>&lt;p&gt;Last December, Log4Shell shortened the nights of many people in the JVM world. Worse, using the earthquake analogy caused many aftershocks after the initial quake.&lt;/p&gt;
&lt;p&gt;I immediately made the connection between Log4Shell and the Security Manager. At first, I didn&amp;rsquo;t want to write about it, but I&amp;rsquo;ve received requests to do so, and I couldn&amp;rsquo;t walk away.&lt;/p&gt;
&lt;p&gt;&lt;a href="https://twitter.com/nicolas_frankel/status/1471140080366632968" target="_blank" rel="noopener noreferrer"&gt;&lt;/a&gt;
&lt;/p&gt;
&lt;p&gt;[&lt;/p&gt;
&lt;img fetchpriority="high" decoding="async" class="alignnone size-medium wp-image-51338" src="johannes-rab-700x119.png" alt="" width="700" height="119"&gt;
&lt;p&gt;](&lt;a href="https://twitter.com/nicolas_frankel/status/1471140080366632968" target="_blank" rel="noopener noreferrer"&gt;https://twitter.com/nicolas_frankel/status/1471140080366632968&lt;/a&gt;
)&lt;/p&gt;
&lt;br /&gt;
&lt;p&gt;As a reminder, the Oracle team deprecated the Security Manager in Java 17. One of the arguments it based its decision on is that it was initially designed to protect against applets. Applets were downloaded from the Internet, so they had to be considered untrusted code. Hence, we had to run them in a sandbox.&lt;/p&gt;</description></item><item><title>Log4Shell Shows The Need for "Trustworthy Java"</title><link>https://foojayio.github.io/website/today/log4shell-shows-the-need-for-trustworthy-java/</link><pubDate>Mon, 10 Jan 2022 10:03:24 +0000</pubDate><guid>https://foojayio.github.io/website/today/log4shell-shows-the-need-for-trustworthy-java/</guid><description>&lt;h2 id="h2-0-what-just-happened"&gt;What Just Happened?&lt;/h2&gt;
&lt;p&gt;I believe Log4Shell is Java&amp;rsquo;s biggest crisis. I reported on it in the &amp;ldquo;&lt;a href="https://betterprojectsfaster.com/guide/java-full-stack-report-2022-01-new-noteworthy" target="_blank" rel="noopener noreferrer"&gt;New &amp;amp; Noteworthy&lt;/a&gt;
&amp;rdquo; section of &lt;a href="https://bpfnl.substack.com" target="_blank" rel="noopener noreferrer"&gt;my newsletter&lt;/a&gt;
. A quick recap: The US cybersecurity and infrastructure agency director &lt;a href="https://www.zdnet.com/article/log4j-flaw-this-new-threat-is-going-to-affect-cybersecurity-for-a-long-time/" target="_blank" rel="noopener noreferrer"&gt;called Log4Shell&lt;/a&gt;
 &amp;ldquo;one of the most serious that I&amp;rsquo;ve seen in my entire career, if not the most serious&amp;rdquo;. Exploiting it may be as easy as sending an HTTP request to a Java application, with a JNDI link in the HTTP header. The last wide-spread software vulnerability of this magnitude &lt;a href="https://nvd.nist.gov/vuln/detail/CVE-2014-0160" target="_blank" rel="noopener noreferrer"&gt;scored 7.5&lt;/a&gt;
 - Log4Shell &lt;a href="https://nvd.nist.gov/vuln/detail/CVE-2021-44228#" target="_blank" rel="noopener noreferrer"&gt;scored a 10&lt;/a&gt;
.&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 / Leak4J</title><link>https://foojayio.github.io/website/today/log4shell-leak4j/</link><pubDate>Wed, 15 Dec 2021 12:49:15 +0000</pubDate><guid>https://foojayio.github.io/website/today/log4shell-leak4j/</guid><description>&lt;p&gt;Over the last couple of days (and nights) I&amp;rsquo;ve been studying the new (extremely dangerous) vulnerability in log4j2 called &lt;a href="https://en.wikipedia.org/wiki/Log4Shell" target="_blank" rel="noopener noreferrer"&gt;Log4Shell&lt;/a&gt;
).&lt;/p&gt;
&lt;p&gt;All versions of log4j-core from 2.0-beta9 to 2.14.1 are affected by this, and it&amp;rsquo;s a &lt;strong&gt;big&lt;/strong&gt; one.&lt;/p&gt;
&lt;p&gt;This vulnerability allows the attacker to remotely execute code on your system, with the ability to get complete control of the underlying servers.&lt;/p&gt;
&lt;p&gt;Log4J has, for a long time, been the most used logging framework in the Java landscape. It&amp;rsquo;s extremely widely used and this attack has the most broad trigger you can imagine: It needs to log something.&lt;/p&gt;</description></item><item><title>Log4j2 Isn’t Killing Java</title><link>https://foojayio.github.io/website/today/log4j-isnt-killing-java/</link><pubDate>Mon, 13 Dec 2021 18:51:34 +0000</pubDate><guid>https://foojayio.github.io/website/today/log4j-isnt-killing-java/</guid><description>&lt;p&gt;In the season of resurrection, I&amp;rsquo;d like to join the ranks of those who have made &lt;a href="https://www.forrester.com/blogs/10-11-23-java_is_a_dead_end_for_enterprise_app_development/" target="_blank" rel="noopener noreferrer"&gt;long careers announcing the death of Java&lt;/a&gt;
 who follow up each obituary with an equally shocking revelation that &lt;a href="https://jaxenter.com/java-not-dead-yet-133459.html" target="_blank" rel="noopener noreferrer"&gt;it is alive again&lt;/a&gt;
 as one of the top programming languages &lt;a href="https://www.oracle.com/news/connect/25-years-of-java-technology-community-family.html" target="_blank" rel="noopener noreferrer"&gt;25 years running&lt;/a&gt;
. Even before the recent log4j2 vulnerability allegedly &amp;ldquo;killing&amp;rdquo; it yet again, we have a joke in the Foojay chat that a Java museum would be called a cemetery for the &lt;a href="https://redmonk.com/jgovernor/2016/02/24/on-lightbend-lagom-and-java-is-dead-is-dead/" target="_blank" rel="noopener noreferrer"&gt;number of times this has happened&lt;/a&gt;
.&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>PSA: The Risks of Remote JDWP Debugging: It's Like a Wide Open Door</title><link>https://foojayio.github.io/website/today/psa-the-risks-of-remote-jdwp-debugging/</link><pubDate>Wed, 20 Oct 2021 08:13:29 +0000</pubDate><guid>https://foojayio.github.io/website/today/psa-the-risks-of-remote-jdwp-debugging/</guid><description>&lt;p&gt;&lt;strong&gt;It isn&amp;rsquo;t so much a security risk as it is a wide open door with everything labeled for anyone to take freely and matches to burn it all down&amp;hellip;&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;When I teach or lecture and mention security, I always love the analogy of security as an onion. This is a common cliché yet it&amp;rsquo;s still a powerful analogy for people who are new to the concepts. The equivalent analogy I would pick for remote debugging is like leaving your front door open with all your valuables piled in easy to spot and well labeled boxes. Calling JDWP insecure doesn&amp;rsquo;t make any sense. It wasn&amp;rsquo;t designed to be secure so it isn&amp;rsquo;t&amp;hellip;&lt;/p&gt;</description></item><item><title>SolarWinds Hack: What Does This Mean For Us?</title><link>https://foojayio.github.io/website/today/solarwinds-hack-and-the-executive-order-of-cybersecurity-what-does-this-mean-for-us/</link><pubDate>Thu, 19 Aug 2021 08:19:56 +0000</pubDate><guid>https://foojayio.github.io/website/today/solarwinds-hack-and-the-executive-order-of-cybersecurity-what-does-this-mean-for-us/</guid><description>&lt;p&gt;In the past two years, we have had to learn a lot about cybersecurity. New attack vectors are becoming more and more sophisticated and are directed more and more against the value chain in general.&lt;/p&gt;
&lt;p&gt;But what does that mean for us? What can be done about it, and what reactions have the state already taken?&lt;/p&gt;
&lt;p&gt;Let&amp;rsquo;s start with the story that got all of this rolling and made sure that the general attention was drawn to the vulnerabilities of the available IT infrastructure.&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>Introducing SAST, DAST, IAST and RASP</title><link>https://foojayio.github.io/website/today/sast-dast-iast-and-rasp/</link><pubDate>Thu, 05 Aug 2021 08:28:52 +0000</pubDate><guid>https://foojayio.github.io/website/today/sast-dast-iast-and-rasp/</guid><description>&lt;p&gt;In this article, we&amp;rsquo;re going to look at the differences between the various cybersecurity defence techniques. Here you can identify four main groups, which we will go through briefly one after another to illustrate the advantages and disadvantages.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;SAST: Static Application Security Testing&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;SAST describes the process in which the components of an application are subjected to a static analysis. This approach not only searches for security gaps but also determines the licenses for the individual elements. In the following, however, I will only deal with the consideration of vulnerabilities.&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>CVSS 101: First Steps with Common Vulnerability Scoring System</title><link>https://foojayio.github.io/website/today/cvss-101-first-steps-with-common-vulnerability-scoring-system/</link><pubDate>Wed, 14 Jul 2021 06:56:13 +0000</pubDate><guid>https://foojayio.github.io/website/today/cvss-101-first-steps-with-common-vulnerability-scoring-system/</guid><description>&lt;p&gt;What is the &lt;a href="https://www.first.org/cvss/v3.0/specification-document" target="_blank" rel="noopener noreferrer"&gt;Common Vulnerability Scoring System&lt;/a&gt;
 (CVSS), who is behind it, what are we doing with it, and what does a CVSS Value mean for you?&lt;/p&gt;
&lt;p&gt;On Foojay, you can apply the insights below to understand the &lt;a href="https://foojayio.github.io/website/java-15/?quarter=102020&amp;amp;tab=cve&amp;amp;version=15.0.1"&gt;Security/CVE Views in the OpenJDK Update &amp;amp; Release Details pages&lt;/a&gt;
, such as the one shown here:
&lt;a href="https://foojayio.github.io/website/java-15/?quarter=102020&amp;amp;tab=cve&amp;amp;version=15.0.1"&gt;&lt;img src="https://foojayio.github.io/website/today/cvss-101-first-steps-with-common-vulnerability-scoring-system/image-3-1024x481.png" alt="" loading="lazy"&gt;
&lt;/a&gt;
&lt;/p&gt;
&lt;p&gt;I will explain how a CVSS Score is calculated, what the different elements of it mean, and what are the differences between the different CVSS versions.&lt;/p&gt;</description></item><item><title>About The Lifecycle of a Security Vulnerability</title><link>https://foojayio.github.io/website/today/the-lifecycle-of-a-security-vulnerability/</link><pubDate>Thu, 08 Jul 2021 08:40:56 +0000</pubDate><guid>https://foojayio.github.io/website/today/the-lifecycle-of-a-security-vulnerability/</guid><description>&lt;p&gt;Again and again, we read in the IT news about new security gaps that have been identified. The more severe the classification of the loophole, the more attention the information receives in the general press. Most of the time, you don&amp;rsquo;t even hear or read anything about all the security holes found that are not as well known as the SolarWinds Hack, for example.&lt;/p&gt;
&lt;p&gt;But what is the typical lifecycle of such a security gap?&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>JEP 411: Java's Security Model and the Principle of Least Privilege</title><link>https://foojayio.github.io/website/today/jep-411-what-it-means-for-javas-security-model/</link><pubDate>Thu, 03 Jun 2021 07:47:51 +0000</pubDate><guid>https://foojayio.github.io/website/today/jep-411-what-it-means-for-javas-security-model/</guid><description>&lt;p&gt;&lt;img src="https://upload.wikimedia.org/wikipedia/commons/0/07/Swiss_cheese_model.svg" alt="" loading="lazy"&gt;
&lt;/p&gt;
&lt;p&gt;Java, like most platforms or languages has layers of security, this article intends to look at Java&amp;rsquo;s Authorization layer, which is unlike in other languages, and to distinguish between two different ways this layer is typically utilized, why one is effective while the other isn&amp;rsquo;t and investigate why JEP 411 only considers the least effective method and hopefully increase awareness of the Principle of Least Privilege as it&amp;rsquo;s applied to Java Authorization, improve adoption, encourage people to take advantage of the improved security it provides, as well as prolong its support and possibly even improve it in future.&lt;/p&gt;</description></item><item><title>Getting Started Hacking Third-Party APIs on the JVM</title><link>https://foojayio.github.io/website/today/hacking-third-party-api-jvm/</link><pubDate>Thu, 27 May 2021 06:27:58 +0000</pubDate><guid>https://foojayio.github.io/website/today/hacking-third-party-api-jvm/</guid><description>&lt;p&gt;The JVM ecosystem is mature and offers plenty of libraries, so you don&amp;rsquo;t need to reinvent the wheel. Basic - and not so basic - functionalities are just a dependency away. Sometimes, however, the dependency and your use-case are slightly misaligned.&lt;/p&gt;
&lt;p&gt;The correct way to fix this would be to create a Pull Request. But your deadline is tomorrow: you need to make it work &lt;em&gt;now&lt;/em&gt;! It&amp;rsquo;s time to hack the provided API.&lt;/p&gt;</description></item><item><title>Why JEP 411 Will Have a Negative Impact on Java Security</title><link>https://foojayio.github.io/website/today/why-jep-411-will-have-a-negative-impact-on-java-security/</link><pubDate>Sat, 22 May 2021 07:43:06 +0000</pubDate><guid>https://foojayio.github.io/website/today/why-jep-411-will-have-a-negative-impact-on-java-security/</guid><description>&lt;p&gt;&lt;em&gt;&lt;a href="https://openjdk.java.net/jeps/411" target="_blank" rel="noopener noreferrer"&gt;JEP 411&lt;/a&gt;
 specifies the &amp;ldquo;deprecation of the Security Manager for removal in a future release. The Security Manager dates from Java 1.0. It has not been the primary means of securing client-side Java code for many years, and it has rarely been used to secure server-side code. To move Java forward, we intend to deprecate the Security Manager for removal in concert with the legacy Applet API (JEP 398).&amp;rdquo; Below, Peter Firmstone describes how this relates to the principle of least privilege and what the impact of this JEP will be. Agree or disagree, add your comments, or your full articles on this topic are also welcome here on Foojay.&lt;/em&gt;&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>Namespace Shadowing (a.k.a. “Dependency Confusion”) Attack</title><link>https://foojayio.github.io/website/today/namespace-shadowing-a-k-a-dependency-confusion-attack/</link><pubDate>Thu, 22 Apr 2021 06:31:08 +0000</pubDate><guid>https://foojayio.github.io/website/today/namespace-shadowing-a-k-a-dependency-confusion-attack/</guid><description>&lt;h3 id="h3-0-tl-dr-yet-another-case-for-using-exclude-patterns-in-remote-repositories"&gt;TL;DR: Yet Another Case for Using Exclude Patterns in Remote Repositories&lt;/h3&gt;
&lt;p&gt;The npm Registry is vulnerable to supply chain namespace shadowing, also known as &amp;ldquo;Dependency Confusion&amp;rdquo; attacks. Make sure you create npm scoped packages and force exclude patterns.&lt;/p&gt;
&lt;h3 id="h3-1-long-time-obsession-with-exclude-patterns"&gt;Long-time Obsession with Exclude Patterns&lt;/h3&gt;
&lt;p&gt;I remember the first JFrog customer training I delivered in February 2012. This slide was the one where I explained the importance of setting exclude patterns on your repositories (you can see it is 2012 by the slide design, right? Also, Ant was a thing.):&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>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>Safe Writing to Files in IoT and Industrial Systems</title><link>https://foojayio.github.io/website/today/safe-writing-to-files-in-iot-and-industrial-systems/</link><pubDate>Thu, 11 Feb 2021 09:12:23 +0000</pubDate><guid>https://foojayio.github.io/website/today/safe-writing-to-files-in-iot-and-industrial-systems/</guid><description>&lt;p&gt;Especially on IoT devices, file corruption on shutdown is a common concern. This article discusses how to write to disk safely in Java, combining disk sync, shutdown hooks, and atomic renaming of files.&lt;/p&gt;
&lt;h3 id="h3-0-files-on-disk-can-still-easily-become-corrupted"&gt;Files On Disk Can Still Easily Become Corrupted&lt;/h3&gt;
&lt;p&gt;For performance optimization, file systems write to disks asynchronously resulting in potential corruption when a hard system shutdowns occurs through power off or crashes.&lt;/p&gt;
&lt;p&gt;As this has become a rare experience for desktop and server users, it comes as a surprise to many developers working on IoT devices and industrial computers that hard power cuts are a common operational scenario and storage is far less robust than expected.&lt;/p&gt;</description></item><item><title>The SolarWinds Hack for Java Developers</title><link>https://foojayio.github.io/website/today/the-solarwinds-hack-for-java-developers/</link><pubDate>Tue, 09 Feb 2021 07:39:53 +0000</pubDate><guid>https://foojayio.github.io/website/today/the-solarwinds-hack-for-java-developers/</guid><description>&lt;p&gt;In December 2020, an advanced persistent threat attacked many companies by &lt;a href="https://www.fireeye.com/blog/threat-research/2020/12/evasive-attacker-leverages-solarwinds-supply-chain-compromises-with-sunburst-backdoor.html" target="_blank" rel="noopener noreferrer"&gt;injecting malicious code into a vendor application&lt;/a&gt;
 that belonged to SolarWinds. This technique is called a &amp;ldquo;supply chain attack,&amp;rdquo; because instead of targeting the victim directly, the attacker damaged something higher up the supply chain and simply waited. The US government uses SolarWinds, so by attacking SolarWinds in a way that would infiltrate the US government, the attacker effectively got their target.&lt;/p&gt;</description></item><item><title>OIDC Client with Mutual TLS Client Authentication</title><link>https://foojayio.github.io/website/today/oidc-client-with-mutual-tls-client-authentication/</link><pubDate>Thu, 04 Feb 2021 08:48:06 +0000</pubDate><guid>https://foojayio.github.io/website/today/oidc-client-with-mutual-tls-client-authentication/</guid><description>&lt;p&gt;It is common to authenticate OAuth and OpenID Connect (OIDC) clients with secrets. When you register a client in the Authorization Server (i.e., the OpenID Connect Provider, OP), you typically get a client ID and a secret. These are then used as credentials whenever your client sends requests to the Authorization Server. Often, this type of credential will provide a sufficient level of security for a deployment; other times, however, this simply is not enough. Authenticating with client ID and secret means that if anyone manages to steal or guess your application&amp;rsquo;s credentials, they will be able to use them to impersonate it. The attacker does not even have to intercept the credentials themselves. They may be able to capture a request sent to the Authorization Server and replay it. The Authorization Server does not know who is sending the request; it can only check whether the credentials are valid. (This is why it&amp;rsquo;s also important to use TLS and unguessable client secrets when using this type of credential.)&lt;/p&gt;</description></item><item><title>Quick Security Wins and Getting Started with DevSecOps</title><link>https://foojayio.github.io/website/today/getting-started-with-devsecops/</link><pubDate>Wed, 03 Feb 2021 17:41:45 +0000</pubDate><guid>https://foojayio.github.io/website/today/getting-started-with-devsecops/</guid><description>&lt;p&gt;&lt;em&gt;Hello and welcome to my first DevSecOps article! Here in Germany, it&amp;rsquo;s winter right now, and the forests are quiet. The snow slows down everything and it&amp;rsquo;s a beautiful time to move undisturbed through the woods.&lt;/em&gt; &lt;em&gt;Here you can pursue your thoughts, and I started thinking about a subject that customers or participants at conferences ask me repeatedly.&lt;/em&gt;&lt;/p&gt;
&lt;hr&gt;
&lt;p&gt;The question I am asked is almost always: &amp;ldquo;What are the quick wins or low hanging fruits if you want to deal more with the topic of security in software development? And I want you to answer this question right &lt;strong&gt;now!&lt;/strong&gt;&amp;rdquo;&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>A Compendium of 2021 Java &amp; OpenJDK Predictions</title><link>https://foojayio.github.io/website/today/2021-java-jvm-predictions-by-topic/</link><pubDate>Fri, 22 Jan 2021 08:03:25 +0000</pubDate><guid>https://foojayio.github.io/website/today/2021-java-jvm-predictions-by-topic/</guid><description>&lt;p&gt;Now that 2021 is well underway, many prominent Java developers have taken the time to predict what 2021 may bring to the Java universe.&lt;/p&gt;
&lt;p&gt;In December, here on Foojay.io, several articles were published on this theme, such as &lt;a href="https://foojayio.github.io/website/today/java-predictions-for-2021/"&gt;Java Predictions for 2021&lt;/a&gt;
, &lt;a href="https://foojayio.github.io/website/today/java-predictions-for-2021-jakarta-ee/"&gt;Java Predictions for 2021: Jakarta EE&lt;/a&gt;
, and &lt;a href="https://foojayio.github.io/website/today/java-predictions-for-2021-raspberry-pi/"&gt;Java Predictions for 2021: Raspberry Pi&lt;/a&gt;
. In early January, Simon Ritter published &lt;a href="https://www.azul.com/staring-into-my-java-snow-globe-2021/" title="Starting Into My Java Snow Globe 2021" target="_blank" rel="noopener noreferrer"&gt;Staring Into My Java Snow Globe 2021&lt;/a&gt;
. Separately, I conversed with another six developers about their visions for the coming year.&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>Let's Do Some Java Syntax Puzzlers Today</title><link>https://foojayio.github.io/website/today/java-syntax-puzzlers/</link><pubDate>Wed, 06 Jan 2021 09:26:04 +0000</pubDate><guid>https://foojayio.github.io/website/today/java-syntax-puzzlers/</guid><description>&lt;p&gt;Roughly 12 years ago, I started to contribute to the Eclipse ecosystem in various functions. One of the most interesting experiences to this date was to work on developer tooling and handling the edge cases so others don&amp;rsquo;t have to struggle. Though I stepped down as an Eclipse committer in the meantime, I&amp;rsquo;m still attached to working on productivity tooling nowadays as a member of the &lt;a href="https://github.com/gradle/gradle" target="_blank" rel="noopener noreferrer"&gt;Gradle Build Tool&lt;/a&gt;
.&lt;/p&gt;
&lt;p&gt;While working on Eclipse, I fondly remember working on various parts of the Java Tooling (JDT) and while working on refactorings and quick fixes. And not surprisingly, working on language-intensive pieces turned out to have the same hiccups as other non-trivial algorithms - the transition from &amp;ldquo;this is gonna be easy&amp;rdquo; to &amp;ldquo;why am I up at 3 am reading the Java Language Specification&amp;rdquo;.&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>Securing Microservices with Auth0 and MicroProfile in Kubernetes</title><link>https://foojayio.github.io/website/today/securing-microservices-with-auth0-and-microprofile-in-kubernetes/</link><pubDate>Tue, 03 Nov 2020 15:38:00 +0000</pubDate><guid>https://foojayio.github.io/website/today/securing-microservices-with-auth0-and-microprofile-in-kubernetes/</guid><description>&lt;p&gt;In this day and age, securing enterprise platforms is a challenge that developers and consultants tackle in an uninformed manner, producing subpar solutions in most cases.&lt;/p&gt;
&lt;p&gt;To combat this pattern, third-party security services such as Auth0 have been devised to externalize the security of services, and they focus on stable implementations of common enterprise use cases (identity management, OAuth compatibility, and so on), and platforms such as &lt;a href="https://microprofile.io/" title="Eclipse MicroProfile" target="_blank" rel="noopener noreferrer"&gt;Eclipse MicroProfile&lt;/a&gt;
 allow for their easy integration with enterprise Java microservices.&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><item><title>foojay: A Place for Friends of OpenJDK</title><link>https://foojayio.github.io/website/today/foojay-a-place-for-friends-of-openjdk/</link><pubDate>Sat, 25 Apr 2020 15:09:00 +0000</pubDate><guid>https://foojayio.github.io/website/today/foojay-a-place-for-friends-of-openjdk/</guid><description>&lt;p&gt;Welcome to foojay, a place for &lt;strong&gt;f&lt;/strong&gt; riends &lt;strong&gt;o&lt;/strong&gt; f &lt;strong&gt;O&lt;/strong&gt; pen&lt;strong&gt;J&lt;/strong&gt; DK, sponsored by &lt;a href="http://azul.com" target="_blank" rel="noopener noreferrer"&gt;Azul&lt;/a&gt;
. Foojay&amp;rsquo;s user-focused Java and OpenJDK technical dashboards provide free data for everyday Java developers. Right away you have access to updated analysis, selected highlights, and categorized lists arranged for easy consumption.&lt;/p&gt;
&lt;h4 id="java-technologist-dashboards"&gt;Java Technologist Dashboards&lt;/h4&gt;
&lt;p&gt;Together with Java enthusiasts around the world, the foojay team works to identify critical aspects of each new OpenJDK release and update &amp;ndash; with related information such as OpenJDK distributions, download locations, and JVM command line arguments &amp;ndash; and brings to the fore precisely the content and services that have value and relevance to those that use Java on a daily basis throughout the industry.
&lt;img src="https://foojayio.github.io/website/today/foojay-a-place-for-friends-of-openjdk/Screenshot-2020-08-20-at-17.19.43-1024x647.png" alt="" loading="lazy"&gt;
 OpenJDK Update Release Details&lt;/p&gt;</description></item></channel></rss>