Beyond Takedown: Measuring Malicious Go Module Persistence in the Wild
This paper reveals a large-scale Go supply chain attack where adversaries repackage legitimate modules with obfuscated malware, demonstrating that relying solely on GitHub searches fails to detect the full scope of the compromise because over 99% of removed malicious artifacts remain retrievable via Go proxies.
Original paper licensed under CC BY 4.0 (http://creativecommons.org/licenses/by/4.0/). This is an AI-generated explanation of the paper below. It is not written or endorsed by the authors. For technical accuracy, refer to the original paper. Read full disclaimer
Imagine the world of software development as a massive, bustling library where programmers borrow "modules" (pre-written code blocks) to build their own applications. In the Go programming language, this library has a very strict librarian: the Go Proxy.
Here is the story of a recent heist in this library, told simply.
The Heist: "The Fake Book Club"
Attackers decided to steal from the library, but they didn't break the doors down. Instead, they played a game of impersonation.
- The Setup: They found popular, legitimate books (legitimate code modules) that everyone trusted.
- The Forgery: They created fake copies of these books under their own names. Inside these fake books, they hid a tiny, invisible trap.
- The Trap: In the Go world, when you "import" (borrow) a book, the library automatically runs a few setup tasks. The attackers hid a malicious instruction inside these setup tasks. It was like a book that, the moment you opened it, secretly whispered a command to your computer to download and run a virus.
- The Hype: To make their fake books look real, the attackers used a "bot army" to give them thousands of "stars" (likes) on GitHub, tricking developers into thinking, "Oh, this must be popular and safe."
The Investigation: Two Ways of Looking
The researchers (Minjae Bae and Carter Yagemann) wanted to see how big this problem really was. They used two different flashlights to look for the thieves.
Flashlight 1: The GitHub Search (The "Shelf" View)
They manually searched the main hosting site (GitHub), looking for suspicious patterns and following the "star" connections between accounts.
- What they found: They found 2,113 fake repositories.
- The Problem: This flashlight only works if the fake book is still sitting on the shelf. If the library staff removes the book, or if the thief never put it on the main shelf to begin with, this flashlight sees nothing.
Flashlight 2: The Proxy Scan (The "Circulation" View)
They built a special scanner called GOAST (a robot that reads code without running it) to scan the Go Proxy. This is the library's backup system. It keeps a perfect, unchangeable copy of every book that has ever been borrowed, even if the original book is deleted from the shelf.
- What they found: They found 2,289 malicious versions.
- The Surprise: The Proxy flashlight found 83% more malicious books than the GitHub flashlight did. Many of these fake books were never even on the main shelf, or they had already been removed, but the Proxy still had them.
The Big Discovery: "Takedown" Doesn't Mean "Fixed"
This is the most important part of the story.
Usually, when security teams find a bad book, they ask the library to take it down. They delete the repository on GitHub. They think, "Great, the threat is gone."
The researchers proved this is wrong.
Because the Go Proxy keeps a permanent, unchangeable copy of every module, deleting the source on GitHub does not delete the virus from the ecosystem.
- The researchers found that even after the attackers' repositories were deleted or suspended (making them "invisible" on GitHub), 99.4% of those malicious modules were still available and downloadable via the Go Proxy.
- It's like the library staff throwing a fake book into the trash, but the library's automated delivery drone (the Proxy) still has a perfect copy in its warehouse and keeps delivering it to customers who ask for it.
The Result
The researchers told the library staff (GitHub and Google) about the problem.
- GitHub removed 684 malicious repositories.
- Google (the Proxy team) cleaned up 1,377 malicious module versions from their permanent storage.
The Lesson
You cannot fix a software supply chain problem just by cleaning up the "hosting" layer (GitHub). If the "distribution" layer (the Proxy) keeps the bad code, the threat lives on. To truly fix the problem, you have to clean up both the shelf and the warehouse.
Drowning in papers in your field?
Get daily digests of the most novel papers matching your research keywords — with technical summaries, in your language.