Exaforce Author Jakub Pavlik
Exaforce Author Marco Rodrigues
Industry
November 1, 2024

Exaforce’s response to the LottieFiles npm package compromise

Analyzing the supply chain attack and steps taken to secure the ecosystem

Jakub Pavlik

Jakub Pavlik

Marco Rodrigues

Marco Rodrigues

Exaforce’s response to the LottieFiles npm package compromise

October 30th, 2024, Exaforce’s Incident Response team was engaged by LottieFiles following the discovery of a sophisticated supply chain attack targeting their popular lottie-player NPM package.

  • The incident involved the compromise of a package maintainer’s credentials through a phishing attack, resulting in the distribution of malicious code designed to target crypto currency wallets used in the DeFi and Web3 community.
  • LottieFiles moved rapidly and were jointly able to contain the attack within an hour, minimizing potential impact on the package’s extensive user base, estimated at over 11 million daily active users.
  • In the entire process, LottieFiles demonstrated commendable speed and commitment to its community of users.

Exaforce is committed to ensuring LottieFiles is able to serve its community with the trust it has gained over the years. Key actions taken:

  • Helping the team at LottieFiles implement NPM package provenance attestation, providing cryptographic verification of package origins, build processes, continuous detection & response.
Screenshot of a GitHub comment by a user suggesting npm provenance attestation with GitHub Actions and Sigstore for supply chain security
  • Continue being actively engaged with LottieFiles to strengthen their security posture and ongoing monitoring of critical systems.
  • A follow up post incident blog where we will share additional learnings and suggestions on best practices will be made available.

Official details of the incident report here:

About LottieFiles and NPM Packages

LottieFiles has revolutionized web animation by providing developers with tools to implement lightweight, scalable animations across platforms. At the heart of their ecosystem lies the lottie-player NPM package, which serves over 9 million lifetime users and averages 94,000 weekly downloads. NPM packages form the backbone of modern JavaScript development, acting as building blocks that developers use to construct applications efficiently and securely. In the software supply chain, these packages represent both incredible value and potential vulnerability points, making their security paramount.

Attack Overview and Impact

The incident began with a sophisticated phishing campaign targeting LottieFiles developers. The attacker (email notify.npmjs@pm.me) sent a carefully crafted phishing email to a developer’s private Gmail account that was registered with NPM with an invitation to collaborate on the @lottiefiles/jlottie npm package. Through this social engineering attack, the threat actor successfully harvested both NPM credentials and two-factor authentication codes from the targeted developer.

Using compromised credentials, the attacker executed their campaign on October 30th, 2024, between 19:00 UTC and 20:00 UTC, publishing three malicious versions of the lottie-player package (2.0.5, 2.0.6, and 2.0.7) directly to the NPM registry. This manual publication bypassed LottieFiles’ standard GitHub Actions deployment pipeline.

The attack’s distribution mechanism proved particularly effective due to the nature of modern web development practices. The compromised versions rapidly propagated through major Content Delivery Networks (CDNs), affecting websites configured to automatically pull the latest library version. This auto-update feature, typically a security benefit, became an attack vector that significantly amplified the incident’s reach.

Important Lessons Learned

In the process of handling this incident we’ve come to the conclusion that the current NPM package distribution model presents significant security challenges that should concern enterprise organizations relying on it for their JavaScript dependencies. While Github (after its acquisition of NPM and subsequent deprecation of NPM Enterprise) is promoting a migration strategy, there are critical security gaps with existing npmjs.com offerings — lack of SSO for users, no logs for upstreaming of packages or usage of packages, limited integrity checks, lack of OIDC support for automated systems, and no controls on distribution through CDNs. These limitations collectively represent a substantial security deficit in what has become the backbone of modern JavaScript development, potentially exposing organizations to supply chain attacks and compliance issues. We, along with Lottie Files will work with npmjs and Github to improve the current gaps in such a vital software supply chain.

Incident Detection and Response Timeline

The incident was first reported through LottieFiles’ community website at approximately 19:24 UTC on October 30th, when users began noticing suspicious wallet connection prompts. Exaforce’s incident response team, working in conjunction with LottieFiles, implemented immediate countermeasures:

  • October 30th, 19:24 UTC: Initial detection and report
  • October 30th, 19:30 UTC: Impacted package versions (2.0.5, 2.0.6, 2.0.7) deleted
  • October 30th, 19:35 UTC: Revocation of compromised NPM access tokens
  • October 30th, 19:58 UTC: Publication of clean version 2.0.8
  • October 31st, 02:35 UTC: Removal of affected developer’s NPM access
  • October 31st, 02:40 UTC: Access of individual developers to NPM repositories revoked
  • October 31st, 02:45 UTC: All NPM keys as well as other systems had their keys revoked and NPM automations suspended
  • October 31st, 03:30 UTC: Laptop in question quarantined for further post-incident analysis
  • October 31st, 03:35 UTC: Begin forensics on the compromised laptop
  • October 31st, 03:55 UTC: Coordination with major CDN providers to purge compromised files
  • October 31st, 04:00 UTC: First official X (Twitter) post by LottieFiles
  • October 31st, 20:06 UTC: All infected files removed from downstream CDNs (cdnjs.com, unpkg.com) with the help of the community operators
  • November 1st, 01:59 UTC: Second official update on X (Twitter) post by LottieFiles

Hardening Effort Towards a More Secure LottieFiles

In response to this incident, we are working with Lottie Files to implement comprehensive security improvements across their infrastructure. Key measures include:

  1. Implementation of NPM package provenance attestation and continuous monitoring of this, providing cryptographic verification of package origins and build processes. This ensures that packages are built and published through verified GitHub workflows only, eliminating the risk of direct human publishing.
  2. Understanding the posture of human and machine identities in critical systems. Machine identities, including credentials, are the most common threat vector in the cloud today. Gaining visibility into these identities, how they are being used and by whom is critical to establishing a strong cloud security posture.
  3. Real-time monitoring and threat detection coverage across all critical systems leveraging a combination of Exaforce AI-BOTs and our Managed Cloud Detection & Response service.

Stay tuned for a follow up where we will share our learnings helping Lottie establish industry leading Security Engineering and Operations by augmenting their existing teams with task specific AI bots. Only by working together to improve NPM’s infrastructure can we create a more secure JavaScript ecosystem. At Exaforce, we’re committed to taking the first step by helping open-source libraries adopt provenance attestation in their publishing process.

Recent posts

The breach already inside: Operationalizing insider risk management

The breach already inside: Operationalizing insider risk management

7 predictions for the security landscape in 2026

7 predictions for the security landscape in 2026

Exaforce Agentic SOC 2025 year in review

Exaforce Agentic SOC 2025 year in review

When trusted third parties behave like threat actors

When trusted third parties behave like threat actors

Lessons from the hallways at my first AWS re:Invent

Lessons from the hallways at my first AWS re:Invent

Detecting and interrupting a sophisticated Google Workspace intrusion with agentic AI security

Detecting and interrupting a sophisticated Google Workspace intrusion with agentic AI security

Feeding the worm a soft cloudy bun: The second coming of Shai-Hulud

Feeding the worm a soft cloudy bun: The second coming of Shai-Hulud

How an AI SOC turns Anthropic’s intelligence report into daily defense

How an AI SOC turns Anthropic’s intelligence report into daily defense

Your AI-driven threat hunting is only as good as your data platform and pipeline

Your AI-driven threat hunting is only as good as your data platform and pipeline

The log rings don’t lie: historical enumeration in plain sight

The log rings don’t lie: historical enumeration in plain sight

The past, present, and future of security detections

The past, present, and future of security detections

We’re HITRUST certified: strengthening trust across cloud-native SOC automation

We’re HITRUST certified: strengthening trust across cloud-native SOC automation

GPT needs to be rewired for security

GPT needs to be rewired for security

Aggregation redefined: Reducing noise, enhancing context

Aggregation redefined: Reducing noise, enhancing context

Exaforce selected to join the 2025 AWS Generative AI Accelerator

Exaforce selected to join the 2025 AWS Generative AI Accelerator

Do you feel in control? Analysis of AWS CloudControl API as an attack tool

Do you feel in control? Analysis of AWS CloudControl API as an attack tool

Exaforce Named a Leader and Outperformer in the 2025 GigaOm Radar for SecOps Automation

Exaforce Named a Leader and Outperformer in the 2025 GigaOm Radar for SecOps Automation

How agentic AI simplifies GuardDuty incident response playbook execution

How agentic AI simplifies GuardDuty incident response playbook execution

There’s a snake in my package! How attackers are going from code to coin

There’s a snake in my package! How attackers are going from code to coin

Ghost in the Script: Impersonating Google App Script projects for stealthy persistence

Ghost in the Script: Impersonating Google App Script projects for stealthy persistence

How Exaforce detected an account takeover attack in a customer’s environment, leveraging our multi-model AI

How Exaforce detected an account takeover attack in a customer’s environment, leveraging our multi-model AI

s1ngularity supply chain attack: What happened & how Exaforce protected customers

s1ngularity supply chain attack: What happened & how Exaforce protected customers

Introducing Exaforce MDR: A Managed SOC That Runs on AI

Introducing Exaforce MDR: A Managed SOC That Runs on AI

Meet Exaforce: The full-lifecycle AI SOC platform

Meet Exaforce: The full-lifecycle AI SOC platform

Building trust at Exaforce: Our journey through security and compliance

Building trust at Exaforce: Our journey through security and compliance

Fixing the broken alert triage process with more signal and less noise

Fixing the broken alert triage process with more signal and less noise

Evaluate your AI SOC initiative

Evaluate your AI SOC initiative

One LLM does not an AI SOC make

One LLM does not an AI SOC make

Detections done right: Threat detections require more than just rules and anomaly detection

Detections done right: Threat detections require more than just rules and anomaly detection

The KiranaPro breach: A wake-up call for cloud threat monitoring

The KiranaPro breach: A wake-up call for cloud threat monitoring

3 points missing from agentic AI conversations at RSAC

3 points missing from agentic AI conversations at RSAC

5 reasons why security investigations are broken - and how Exaforce fixes them

5 reasons why security investigations are broken - and how Exaforce fixes them

Bridging the Cloud Security Gap: Real-World Use Cases for Threat Monitoring

Bridging the Cloud Security Gap: Real-World Use Cases for Threat Monitoring

Reimagining the SOC: Humans + AI bots = Better, faster, cheaper security & operations

Reimagining the SOC: Humans + AI bots = Better, faster, cheaper security & operations

Safeguarding against Github Actions(tj-actions/changed-files) compromise

Safeguarding against Github Actions(tj-actions/changed-files) compromise

Npm provenance: bridging the missing security layer in JavaScript libraries

Npm provenance: bridging the missing security layer in JavaScript libraries

Explore how Exaforce can help transform your security operations

See what Exabots + humans can do for you

Black Pattern Background