메뉴
HN
Hacker News 15일 전

AI가 만든 가짜 리포트에 버그 바운티 폐지

IMP
7/10
핵심 요약

오픈소스 데이터베이스 기업인 Turso가 데이터 오염 버그에 대해 1,000달러를 지급하던 버그 바운티 프로그램을 폐지했습니다. AI 도구를 악용해 대량의 가짜 버그 리포트와 PR(풀 리퀘스트)이 생성되면서 프로젝트 유지보수자들이 이를 처리하는 데 한계에 부딪혔기 때문입니다. 이 사건은 오픈소스 생태계와 기업의 보안 정책에 AI가 미치는 부작용이 현실화되었음을 보여줍니다.

번역된 본문

지금 Turso Cloud의 동시 쓰기(Concurrent Writes) 기능에 대한 얼리 액세스를 등록하세요. 대기자 명단에 합류해 주세요.

2026년 5월 12일

AI의 경이로움: 우리가 버그 바운티 프로그램을 폐지하는 이유

거의 1년 동안 Turso는 데이터 오염으로 이어질 수 있는 버그를 증명한 사람에게 1,000달러를 지급하는 프로그램을 운영해 왔습니다. 오늘, 우리는 이 프로그램을 폐지합니다.

글라우버 코스타(Glauber Costa)

거의 1년 동안 Turso는 데이터 오염으로 이어질 수 있는 버그를 증명한 사람에게 1,000달러를 지급하는 프로그램을 운영해 왔습니다. 오늘, 우리는 매우 안타까운 마음으로 이 프로그램을 폐지합니다.

이유는 간단합니다. 모든 사람이 저품질 AI 생성물(Slop) 제조 기계의 홍수에 시달리고 있기 때문입니다. 이 점에서 우리만 예외는 아닙니다. 하지만 특정 클래스의 버그에 대해 돈을 제공하는 프로그램은 이른바 '쓰레기 생성자(Slop makers)'들에게 너무나 매력적인 표적이 될 수밖에 없습니다.

며칠 동안 우리 프로젝트 유지보수자들은 Turso에서 데이터 오염을 유발하는 버그를 발견했다고 주장하는 AI 생성 저품질 PR(Pull Request)들을 닫는 것 외에는 거의 아무것도 하지 못했습니다. 수많은 오픈소스 소프트웨어(OSS) 프로젝트들이 외부 기여자들의 문을 닫고 있는 이 시기에, 우리는 Turso의 문을 열어두기 위해 모든 노력을 다하고자 합니다. '오픈 기여(Open Contribution)' 프로젝트는 우리 DNA의 일부이며, 이것이 Turso가 탄생한 방식이기 때문입니다.

하지지만 안타깝게도 금전적 보상은 이것을 거의 불가능하게 만들고 있으며, 따라서 보상 제도는 폐지되어야만 합니다. 우리가 이 사실을 공개적이고 큰 목소리로 알리는 이유는, 우리 모두가 이 새로운 시대에 양호한 거버넌스를 확립하기 위한 새로운 방법을 찾아야 하며, 서로에게서 배워야 한다고 믿기 때문입니다. 이 글이 그 대화에 대한 우리의 기여가 되기를 바랍니다.

우리가 이 프로그램을 시작한 이유

우리가 이 프로그램을 시작한 이유는, 세계에서 가장 신뢰할 수 있는 소프트웨어 중 하나로 알려진 SQLite를 다시 작성(rewriting)하고 있었기 때문입니다. 커뮤니티는 이러한 야심 찬 프로젝트에 높은 기준을 요구하며, 우리는 SQLite의 전설적인 안정성과 일치하거나 능가할 수 있도록 막대한 노력을 투자하고 있습니다.

Turso는 기본적으로 결정론적 시뮬레이터(Deterministic Simulator), 다양한 퍼저(Fuzzer) 모음, SQLite를 대상으로 하는 오라클 기반 차등 테스팅 엔진, 동시성 시뮬레이터를 제공하며, 그 위에 Antithesis에서 광범위한 테스트를 실행하고 있습니다. 우리는 테스트 원칙을 매우 중요하게 생각합니다. 그리고 우리의 이러한 자신감을 알리고 싶었습니다.

반면, 이 모든 테스트 인프라는 결국 소프트웨어일 뿐이며 완벽하지 않습니다. 세상의 모든 퍼저와 시뮬레이터를 작성할 수 있지만, 실제로 생성되는 조합 내에서만 버그를 포착할 수 있습니다. 예를 들어, 퍼저가 인덱스를 생성하지 않는다면, 시스템의 나머지 부분을 얼마나 잘 스트레스 테스트하든 상관없이 정의상 인덱스와 관련된 버그를 발견할 수 없습니다.

실제 사례로, 우리는 1GB보다 큰 데이터베이스에서만 나타나는 버그를 발견했는데, 매 실행 시마다 적극적으로 결함(Fault)을 주입했기 때문에 데이터베이스가 버그를 트리거할 만큼 커지기 전에 테스트가 종료되곤 했습니다.

자동화된 테스트의 가장 큰 장점은, 테스트 생성기를 개선하면 버그가 검증을 통과하더라도 전체 버그 클래스가 사라진다는 것입니다. 따라서 우리는 이 프로그램이 두 가지 목적을 달성하는 훌륭한 방법이라고 구상했습니다. 이는 우리가 테스트 방법론에 가지고 있던 자신감을 확립하는 데 도움을 주었지만, 동시에 누군가 우리 시뮬레이터가 잘 다루지 못하는 영역을 발견한다면 기꺼이 그 대가를 지불할 준비가 되어 있었습니다!

우리는 Turso의 1.0 버전을 출시할 때까지 데이터 오염으로 이어지는 버그에 대해 1,000달러의 보상을 제공하는 것으로 프로그램을 시작했습니다. 우리의 계획은 1.0 버전에 도달하면 보상의 규모를 상당한 수준으로 점진적으로 늘리고, 보상할 이슈의 범위도 확대하는 것이었습니다.

'싱귤래리티(Singularity)' 이전에는, 이 방식이 훌륭했습니다

우리는 이 프로그램에 만족했습니다. 총 5명에게 보상금을 지급했으며, 상금을 받은 모든 사람은 놀라운 능력을 갖춘 분들이었습니다. 특히 알페렌(Alperen)의 작업을 돋보이게 할 만한데, 그는 실제로 우리 시뮬레이터의 핵심 기여자 중 한 명이었습니다 (따라서 개선할 수 있는 부분을 몇 가지 알고 있는 것은 당연한 일이었습니다). 그리고 미카엘(Mikael)은 LLM(대형 언어 모델)을 매우 창의적인 방식으로 사용해 시뮬레이터가 닿지 않는 영역을 찾아내기도 했습니다 (우리는 나중에 미카엘을 고용했습니다).

원문 보기
원문 보기 (영어)
Register now for early access to concurrent writes in the Turso Cloud. Join the waitlist May 12, 2026 The Wonders of AI: We Are Retiring Our Bug Bounty Program For almost a year now, Turso has had a program that pays $1,000 for any bug that can be demonstrated to lead to data corruption. Today, we are retiring this program. Glauber Costa For almost a year now, Turso has had a program that pays $1,000 for any bug that can be demonstrated to lead to data corruption. Today, with immense sadness, we are retiring this program. The reason is simple: everybody is being inundated by the slop machine. We are not unique in this regard. However, a program that offers money in exchange for a specific class of bugs is just too juicy of a target for the slop makers. For days, our maintainers have done little else other than close slop PRs claiming to have found bugs that led to data corruption in Turso. In a time where many OSS projects are closing their doors to contributions, we want to make every effort possible to keep the doors of Turso open. Being an Open Contribution project is part of our DNA. It is how Turso was born. But unfortunately, the financial reward is making this close to impossible and it has to go. We are sharing this publicly and loudly because we believe that we will all have to find new ways to establish good governance in this new era, and should learn from each other. This is our contribution to that conversation. # Why did we start this program We started this program because we are rewriting SQLite, known to be one of the most reliable pieces of software in the world. The community expects a high bar from a project with such ambition, and we invest tremendous effort into making sure that we can match or even surpass SQLite’s legendary reliability. Turso ships with a native Deterministic Simulator, a collection of fuzzers, an oracle-based differential testing engine against SQLite, a concurrency simulator, and on top of that, we have extensive runs on Antithesis . We take our testing discipline seriously. And we wanted to communicate our confidence. On the other hand, all of that testing infrastructure is, at the end of the day, just software and is not perfect. You can write all the fuzzers and simulators in the world, but they will only catch bugs in the combinations that are effectively generated. For example, if your fuzzer never generates indexes, you will by definition not find any bugs related to indexes, regardless of how well you stress the rest of the system. As a real example, we found bugs that escaped our simulator because they would only appear in databases that were larger than 1GB , and because we injected faults aggressively into every run , databases would never get big enough to trigger. The main advantage of automated testing is that a bug escapes your validation, once you improve the test generators, an entire class of bugs go away. So we envisioned this program as a great way to do both things: it helped us establish the confidence we had in the methodology , but at the same time, if someone did find areas that our simulators didn’t cover well, we’d be more than happy to pay for it! We started the program with a $1,000 reward for bugs that would lead to data corruption until we could release a 1.0 version of Turso. Our plan was that once we’d reach 1.0, we would progressively increase both the size of the reward to substantial levels, and the scope of the issues we’d reward people for. # And before the “singularity”, this worked great We were delighted by this program. We paid a total of 5 individuals. All of those people who were awarded were incredibly special people. Worth highlighting the work of Alperen , who was actually one of the core contributors to our simulator itself (so little surprise that he knew of a couple of places where it could be improved). Then Mikael , who in fact used LLMs in a very creative ways to identify places where the simulator was not reaching (we later hired Mikael), and Pavan Nambi , who paired the simulator with formal methods and ended up not only finding bugs in Turso, but in fact found more than TEN bugs on SQLite itself through is methodology. # But after the “singularity”, we got drowned In our experience, anybody who was skilled enough to find critical issues was someone we wanted around in our community. We did have the occasional person that tried to submit bad PRs in the hopes of collecting the bounty, but it was a rare occurrence: the requirement that the simulator had to be extended to demonstrate the bug (just pointing out the bug was not enough) helped keep the bar high, and most importantly, there just aren’t that many bugs. But then an army of slop was released overnight. It became too high a reward to just point an LLM at Turso, and try to find a bug. And as you all know, if you instruct an LLM to go find a bug and collect a bounty, it will produce some output. Whether or not it makes sense, is a completely different story. I want to share some of those with you. # Some examples In this PR , the author just injected garbage bytes manually into the database header, and then argued that this corrupted the database (duh!). After our maintainer pointed out that well, no shit Sherlock, the author (or his bot) kept arguing with your usual LLM-induced wall-of-text for quite a while. You might find that unbelievable, but it is actually less incredible than modifying the source code to manually add an out-of-bound array access to corrupt the database In this other PR which is full of tables, green check marks and em dashes, the author claims to have found a critical vulnerability that allows for the execution of arbitrary SQL statements. Imagine that? A SQL database that allows the execution of SQL statements. How can we ever recover from this. This other masterpiece enables concurrent writes on Turso, one of the features that set us apart from SQLite, and then demonstrates that SQLite cannot open the file until the journal mode is set back to WAL, disabling concurrent writes (that is how the system is designed to operate) For this other one , I wish I could write a nice description, but I have no idea what they are trying to do. As our maintainer Mikael (the same who won the award in the past!) pointed out, it is very clear that the person just saw the prize announcement, started salivating, and pointed the slop machine at us. # The last attempt In our last attempt to establish some order, we have designed and implemented a vouching system. If we suspect that a submission is coming from a bot, we just auto-close it. And this worked okay for some time, until the bots just started opening issues questioning the closing of their PRs and requesting a manual inspection. They all look the same: We also had many instances in which we could close a PR, and the same or a very similar PR would just be opened by a different user moments after. # It’s sad, but here we are The main problem of course is that it costs the slopmaker perhaps a minute to generate their submission. But it costs us hours to read, understand, and engage with them. And they can be generated at a semi-infinite pace. It is possible to set up automated systems to gatekeep this, but with a non-negligible dollar value attached to it, the incentive is just too great for the AIs to just keep arguing, reopening the same PR, etc. We value our Open Source community of contributors a lot, and we will continue to strengthen our community. But at this point, we just don’t believe that a financial incentive of any kind works well with an open system. We have to either close the system, or get rid of the incentive. For now, we are choosing the latter. Share article Twitter / X Hacker News Email LinkedIn Copy link