Critical ATO to P5 ‘Informational’: A Lesson in Threat Models & Bug Bounty Reality
嗯,用户让我帮忙总结一篇文章,控制在一百个字以内,而且不需要特定的开头。首先,我得通读一下这篇文章。看起来这是一个关于赏金猎人发现漏洞的故事,但漏洞被降级处理了,还被扣了分。 用户的需求很明确,就是要一个简短的总结。我需要抓住关键点:目标平台是匿名的,发现了一个严重的漏洞,把主密码存到cookie里了。然后提交后被降级为P5,还因为申诉被扣分。 接下来,我要把这些信息浓缩到100字以内。确保涵盖主要事件和结果。可能需要提到威胁模型、漏洞的影响以及处理过程中的问题。 最后,检查一下有没有遗漏的重要信息,比如教训和结论部分可以适当简化。这样总结出来的内容既准确又简洁。 </think> 赏金猎人发现匿名平台将用户主密码明文存入cookie,导致设备被攻陷时密码泄露。报告后漏洞被降级为低优先级,并因申诉被扣分。故事揭示了漏洞处理流程中的挑战与教训。 2026-3-31 06:16:53 Author: infosecwriteups.com(查看原文) 阅读量:3 收藏

Hacker MD

Press enter or click to view image in full size

Hello Hackers! Today, I want to share a recent bug bounty experience. This isn’t just about a technical vulnerability; it’s a story of how a “Critical P1” bug gets trapped in the triage process, gets downgraded to a “P5 Informational,” and how defending a valid technical finding ended up earning me a “Warning Point” from the platform!

If you’re active in bug bounties, you can probably relate to the frustration of having solid evidence dismissed. So, grab a coffee, and let’s dive into the technical details and the triage drama.

The Target & Its Threat Model

The target was a highly secure, anonymity-focused platform (Let’s call it Target X). Its primary mission is to protect sensitive users, such as journalists and whistleblowers.

Its threat model is completely different from your average e-commerce site. The official documentation proudly states that the system is specifically designed to withstand state-level surveillance and “Forensic Seizure” (i.e., if a user’s laptop falls into the hands of law enforcement or advanced threat actors). There are no email addresses or standard usernames here; users are assigned a randomly generated 7-word passphrase, which acts as their sole “Master Credential.”

The Hunt: Spotting the Leak

I was conducting a source code review and testing the application on a local environment, focusing heavily on authentication and session management.

When a user creates a new account, the backend provides them with this 7-word passphrase. Naturally, I wanted to see how the backend handled this highly sensitive session data. The application was built on Flask, which uses client-side sessions (cookies) by default.

I noticed something shocking in the code:

# Anonymized Code Snippet
codenames[tab_id] = secret_passphrase # The 7-word master password
session["codenames"] = fit_into_cookie(codenames) # Stuffed directly into the session!

Wait, what?! The developers were pushing the plaintext master password directly into a client-side cookie?

I immediately opened the browser’s DevTools, copied the ss (session) cookie, and wrote a simple Python script to Base64 decode and zlib decompress it (since Flask sessions are only signed by default, not encrypted).

Boom! 💥 The output of my script was the exact 7-word plaintext master password.

The Impact (As an Attacker)

If you understand this platform’s core threat model, this was a massive architectural flaw:

  • Digital Footprint: The platform promises absolute anonymity, yet the user’s master password was being saved directly to their hard drive and browser cache as a persistent cookie.
  • Account Takeover (ATO): If an attacker gains physical access to the device, installs malware, or takes a forensic image, they can effortlessly extract the password from the cookie without any brute-forcing.
  • Deanonymization: Once the password is stolen, the attacker can log in, read all confidential communications, and completely deanonymize the source.

According to the program’s bounty table, an “Authentication Bypass” on this specific interface was worth a top-tier reward. Thrilled, I recorded a flawless Video PoC, wrote a detailed report, and submitted it.

The Twist: Welcome to Triage

A few days later, I received a message from the platform’s triage team. The result? State changed to Informational (P5) Disclosure of Known Public Information.

Get Hacker MD’s stories in your inbox

Join Medium for free to get updates from this writer.

Remember me for faster sign in

Wait, public information? Since when is a user’s master password considered public information?

The triager’s argument was: “In order to exploit this, an attacker needs access to the victim’s session cookies, which requires compromising the device. This is highly unrealistic.”

I politely pushed back. I referenced Target X’s official threat model, which explicitly stated that device compromise and forensic seizure were their primary threat scenarios. If the platform itself requires users to operate on Tails OS and Tor to mitigate these exact risks, how could device compromise be deemed “unrealistic”?

The Infinite Loop & The “Warning”

I utilized the platform’s “Request Response” feature to escalate the issue to the actual developers.

  • 15 days passed… no reply. The request expired.
  • I raised a support ticket. I received a generic template reply: “If you have demonstrable impact, use the request response button.”
  • I submitted another request for response. Waited another 14 days. Expired again.

When I expressed my frustration (professionally) in a support ticket, pointing out that a valid credential leak was being ignored based on flawed technical logic and noting the broader industry issue of “silent fixes” the platform handed me a little gift: A Coaching Message for “Disruptive Behavior” with 1 Penalty Point. 😅

The reason? Continuing to contest decisions without providing new technical information.

Lessons Learned

This experience was incredibly frustrating, but it taught me several valuable lessons that I want to share with the community:

  • Triage Teams ≠ Application Developers: Triagers often strictly adhere to generic, standard threat models (like standard OWASP methodologies). If your target operates on a highly niche or extreme threat model, convincing the triage team is often the hardest part of the hunt.
  • The “Physical Access” Excuse: In the bug bounty world, vulnerabilities requiring physical access or local execution are notoriously difficult to get accepted, even if local security is the application’s primary selling point.
  • Know When to Pivot (Chain it!): If a triager refuses to accept your impact, don’t keep arguing chain the bug with something else! (Spoiler: I am now working on chaining this exact cookie leak with an Application-Level Denial of Service (DoS) attack. Let’s see how they justify ignoring a complete server crash!)
  • Protect Your Mental Health (and Your Account): Platform penalty points and bans are very real. If the system feels unfair or broken, take a step back, take a break, and shift your focus to a different target or platform. Invest your energy where your skills are actually valued.

Conclusion

Finding bugs is a technical skill, but getting them successfully triaged is an entirely different art form. Sometimes you are 100% technically correct, but the process simply works against you. It’s all part of the game. Keep hacking, keep learning, and don’t let one bad triage experience stop your momentum!

Have you ever faced a similar situation where a critical bug was marked as informational? Let me know in the comments! 👇

#BugBounty #BugBountyTips #CyberSecurity #InfoSec #EthicalHacking #AppSec #OffensiveSecurity #HackerCommunity #WebSecurity


文章来源: https://infosecwriteups.com/critical-ato-to-p5-informational-a-lesson-in-threat-models-bug-bounty-reality-ef1dffd827b9?source=rss----7b722bfd1b8d--bug_bounty
如有侵权请联系:admin#unsafe.sh