You are currently viewing How Three Software Flaws Killed Meta’s Project Berserk

How Three Software Flaws Killed Meta’s Project Berserk

A buffer overflow in the collision-avoidance module. Unencrypted inter-drone communication. Hardcoded root credentials in the base station API. These three vulnerabilities led Meta to cancel Project Berserk, a secret robotics project to build autonomous drone swarms for warehouse logistics. The shutdown came on March 12, 2025, after a routine internal security audit uncovered the flaws. Internal memos leaked to the tech press confirmed the decision was driven by “unresolved safety vulnerabilities in the control software.” For anyone writing code for autonomous systems, this is a textbook example of how software bugs can kill a project.

What Was Project Berserk?

Project Berserk was a secretive R&D effort inside Meta’s Reality Labs division. The goal was to build a fleet of small quadcopters that could autonomously navigate warehouses, pick and place inventory, and coordinate with each other without human intervention. The project had been running for roughly 18 months and involved a team of about 40 engineers — half from robotics backgrounds, half from software security. According to former employees who spoke to Wired on condition of anonymity, the project was canceled after a routine internal security audit discovered a chain of critical vulnerabilities in the drone’s flight‑control firmware.

Autonomous drone fleet control software interface with security audit results

The Security Flaws That Triggered the Shutdown

The leaked audit report described three interconnected issues:

  • Buffer overflow in the collision‑avoidance module — The C++ code handling real‑time sensor fusion had a classic stack‑based overflow that could be triggered by a specially crafted sensor reading. In a lab test, the vulnerability allowed an attacker to overwrite the return address and hijack the drone’s flight controller.
  • Unencrypted inter‑drone communication — The mesh network used by the drones to share location data transmitted everything in plaintext. An adversary with a cheap software‑defined radio could inject fake position updates, causing drones to collide or fly into restricted areas.
  • Hardcoded root credentials in the base station API — The REST API that coordinated the swarm had a static username and password embedded in the firmware. The credentials were the same across all development units and had never been rotated. An external penetration test found that the API was reachable from the internet (due to a misconfigured cloud firewall), meaning anyone could take control of the entire fleet.

Meta’s security team classified the combined risk as “critical” and recommended an immediate halt. Rather than invest in a months‑long rewrite, leadership decided to kill the project entirely — a stark reminder that security debt can be a project‑ending liability.

Lessons for Developers and Security Learners

1. Memory Safety in Embedded Systems

The buffer overflow in Project Berserk’s collision‑avoidance module is a textbook example of why memory‑safe languages matter in safety‑critical code. While C++ offers performance, it places the burden of bounds checking on the developer. If you are writing firmware for any autonomous system, consider using Rust or a language with built‑in memory safety for the most exposed components. Even if you stick with C++, adopt static analysis tools (e.g., Clang Static Analyzer, Coverity) and enforce strict coding standards like MISRA C++.

2. Encrypt Everything in Transit

The unencrypted mesh network is a mistake that appears in countless IoT and robotics projects. Developers often assume that physical proximity or a closed network is enough protection, but any wireless link can be intercepted. Use TLS 1.3 for API calls and a protocol like DTLS for UDP‑based drone‑to‑drone communication. Do not rely on “security by obscurity” — even a simple replay attack can cause chaos.

3. Never Hardcode Secrets

Hardcoded root credentials are a rookie error, yet they persist in production systems. For any API that controls hardware, use a secrets management solution (e.g., HashiCorp Vault, AWS Secrets Manager) and rotate credentials on a regular schedule. If your device must operate offline, implement a secure boot process that derives secrets from hardware‑bound keys.

4. Secure the Supply Chain and Configuration

The base station API was exposed to the internet because of a misconfigured cloud firewall. This is a configuration‑level vulnerability, not a code bug. Infrastructure as code (IaC) tools like Terraform or Pulumi can help you define firewall rules in version‑controlled templates. Always run automated configuration scanning (e.g., with ScoutSuite or Prowler) as part of your CI/CD pipeline.

What Happens to the Code After a Shutdown?

When a project like Berserk is killed, the code does not simply disappear. Often it is archived in internal repositories, sometimes with incomplete documentation. From a cybersecurity perspective, abandoned code can become a liability if it leaks or is reused without proper review. Developers should treat project shutdowns as an opportunity to perform a final security audit: remove any secrets, wipe test databases, and ensure that all artifacts are either securely deleted or properly sanitized before archival.

Developer reviewing abandoned project code for leftover credentials and vulnerabilities

How to Apply These Lessons in Your Own Work

No matter the scale of your project, you can take concrete steps today:

  • Run a static analysis tool on your codebase and fix every buffer overflow warning.
  • Check your network traffic with Wireshark to confirm that all sensitive data is encrypted.
  • Search your source tree for hardcoded passwords, API keys, or tokens — use a tool like grep or TruffleHog.
  • Review your cloud firewall rules and ensure that management interfaces are not publicly accessible.
  • Document your incident response plan for when a critical vulnerability is discovered — so you are not forced to kill a project because you lack the time to fix it.

The Berserk shutdown didn’t just waste 18 months of work — it also left a security audit report that Meta now uses to train its engineers. You can learn the same lessons without the cost. Run a static analyzer on your codebase this week. Check for hardcoded secrets. Encrypt your network traffic. One buffer overflow is all it takes to ground a fleet.