HUST Giving
Bug bounty Managed triageHanoi University of Science and Technology
Donation and fundraising portal. Tested under written authorisation from the university.
- Accepting reports
- $50 – $10,000
- 6 assets in scope
- Launched Sep 2026
- giving.hust.edu.vn
Read the policy · first response per the engagement letter
Rewards by severity
Final amounts depend on demonstrated impact, report quality and asset criticality.
| Severity | CVSS | Reward | Typical findings |
|---|---|---|---|
| P1 Critical | 9.0 – 10.0 | $10,000 | Remote code execution, SQL injection reaching donor or payment records, authentication bypass on the administrative interface. Report immediately by phone or message as well as in writing. |
| P2 High | 7.0 – 8.9 | $2,000 – $5,000 | Stored cross-site scripting or template injection that lets attacker-controlled content render for other users, IDOR exposing another donor's record, payment amount or currency tampering. |
| P3 Medium | 4.0 – 6.9 | $200 – $500 | Reflected XSS, CSRF on a state-changing action, SSRF with limited reach, information disclosure that meaningfully assists an attacker. |
| P4 Low | 0.1 – 3.9 | $50 – $100 | Open redirect, verbose errors exposing internal paths, weak session invalidation. |
In scope
6 assets listed, 6 eligible for a reward. Anything not on this list is out of scope.
| Asset | Type | Max severity | Reward | Notes |
|---|---|---|---|---|
| giving.hust.edu.vn | Domain | Critical | Eligible | The donation portal, including the public pages and the donor-facing account area. |
| giving.hust.edu.vn/* (donation flow) | URL | Critical | Eligible | Campaign pages, pledge and checkout steps. Use the smallest possible test amount, and only your own payment instrument. |
| giving.hust.edu.vn (payment callback / IPN handlers) | API | Critical | Eligible | Signature verification, replay, amount and currency tampering on the return path from the payment provider. |
| giving.hust.edu.vn (administrative interface) | URL | Critical | Eligible | Authentication and authorisation only. Do not use administrative functions even if you reach them. |
| giving.hust.edu.vn (public API endpoints) | API | High | Eligible | Includes any JSON or form endpoint the portal itself calls. |
| giving.hust.edu.vn (file upload, if reachable) | URL | Critical | Eligible | Upload validation and post-upload handling. Upload only inert proof files. |
Out of scope
| Asset | Why |
|---|---|
| Every other hust.edu.vn host and subdomain | This authorisation covers the giving portal only. Other university systems are not included and testing them is not authorised. |
| The third-party payment gateway and its domains | Operated by the payment provider, not the university. Test the portal's handling of the gateway, never the gateway itself. |
| Student, staff, admissions and email systems | Outside the engagement, and they hold personal data of people who did not consent to this. |
| Physical facilities and university staff | No social engineering, no phishing, no physical access, no phone pretexting. |
| Network infrastructure, DNS and mail records | Shared university infrastructure outside the portal. |
Findings that will be closed as informative
- Denial of service, load testing, stress testing, or anything that degrades availability for donors.
- Automated scanner output with no manually confirmed proof of concept.
- Missing security headers, cookie flags or TLS configuration with no demonstrated impact.
- Rate-limit findings demonstrated by actually exhausting the limit in production.
- Reports describing a vulnerability class in the abstract without a working reproduction on this asset.
- Findings in third-party services the portal merely links to.
- Self-XSS, clickjacking on pages with no state-changing action, and missing SPF or DMARC.
- Anything obtained after the point where the testing rules below required you to stop.
Program policy
Program overview
giving.hust.edu.vn is the donation and fundraising portal for Hanoi University
of Science and Technology. It takes money from the public and holds donor
records, so the two things that matter most here are the integrity of the
payment path and the confidentiality of donor data.
This page exists because the university granted written authorisation for security testing of this specific host. It is not an open, public bug bounty: the authorisation is held by a named researcher, it covers one hostname, and it can be withdrawn. If you are reading this and you are not covered by that letter, you do not have permission to test this site.
The program pays for valid findings on a four-tier priority scale, from $50 at P4 to $10,000 at P1. The scale and how a report is placed on it are described under Reward decisions.
Authorisation and scope of this engagement
The authorisation covers giving.hust.edu.vn and nothing else. In particular it
does not extend to any other hust.edu.vn host, to the payment provider, or to
any university system that happens to share infrastructure with the portal.
Before testing, confirm in writing with the university contact:
- the exact hostnames and environments covered,
- the testing window and the hours within it,
- the named individuals the authorisation applies to,
- the emergency contact to call if something breaks,
- whether a staging environment exists and should be used instead of production.
Keep the authorisation available for the duration of the engagement. Record the source IP addresses you will test from and give them to the contact in advance, so that defenders can distinguish your traffic from a real attack.
What is in scope to find
These are the vulnerability classes this engagement is most interested in. All of them are in scope to discover and report:
- SQL injection and other database access, including injection that demonstrably reaches donor records, payment records or administrative tables.
- Remote code execution: deserialisation, template injection, command injection, unrestricted file upload leading to execution.
- Content and template injection: stored cross-site scripting, HTML injection, or any flaw that lets attacker-controlled content render for other visitors. This is the class that would allow a site defacement, and finding it is exactly what this engagement wants.
- Authentication and authorisation flaws: admin authentication bypass, privilege escalation, session fixation, IDOR across donor records.
- Payment integrity: amount, currency or campaign tampering; replay or forgery of the provider's callback; race conditions in pledge handling.
- Information disclosure: exposed backups, configuration,
.gitdirectories, debug endpoints, or donor data reachable without authentication.
Testing rules and expectations
Finding a flaw and exercising it are different acts. The authorisation covers finding. It does not cover the following, and none of these are permitted at any severity, in any circumstance:
- Do not modify, delete or corrupt data. Read access proves a database flaw. A single benign row you created yourself proves write access if you truly need to demonstrate it. Never touch a record you did not create.
- Do not deface. Proving that stored content renders for other users is done with an inert, self-identifying payload on a page only you can reach, not by changing what a visitor to the site sees.
- Do not exfiltrate in bulk. For a data exposure, the proof is the shape of the data: a row count, a column list, one record that is unmistakably yours, or a redacted screenshot. Pulling donor records is not a proof of concept, it is the breach.
- Do not persist. No web shells, no added accounts, no scheduled tasks, no
backdoors. If you achieve code execution, capture the minimum evidence
(
id, hostname, a file listing) and stop. - Do not disrupt. No denial of service, no load testing, no mass scanning. Throttle everything. This portal takes real donations and downtime costs the university money it was given by donors.
- Do not pivot. The moment you can reach another host, stop and report it. Reachability is the finding; exploring further is not authorised.
- Do not touch real money. Use the smallest possible amount and your own payment instrument. Never test against another person's transaction.
Test with your own accounts. Identify your traffic with a recognisable user agent where you can. Work inside the agreed window.
If you encounter personal data, stop reading it immediately, do not save it, do not screenshot it unredacted, do not paste it into any third-party service or AI assistant, and tell the contact the same day. Delete any copy you made once the university confirms receipt, and say in writing that you have done so.
Proving write access
If you find a way to write, do not prove it by causing damage. Prove it with the smallest change that can be attributed to you and undone in the same minute.
- One or two punctuation characters. Delete a full stop, add a comma. Nothing longer, nothing visible, no payload, no changed number or amount.
- Only on a record you created yourself. Your own test donation note, your own profile field. Never another donor's record, never site content, never a page the public can see.
- Revert within sixty seconds, in the same run, without being asked.
- Capture four states: before, after the change, after the revert, and an independent re-read confirming the revert held.
- If it cannot be reverted, do not change it. Report the write primitive and stop. For a database flaw, a row count and a column list already prove access.
Every request must carry headers that let the university separate your traffic from a real attack in its logs:
X-Bug-Bounty: giving-hust
X-Research-Account: <the account you submit the report under>
X-Authorisation-Ref: <reference of the engagement letter>
X-Request-Id: <unique per request>
User-Agent: sentinel-research/<handle> (+<this page>)
scripts/proof_of_write.py in this repository performs exactly this sequence,
refuses any host outside the scope above, refuses a diff longer than two
characters, always attempts the revert, and writes a timestamped evidence file.
Run it with --execute omitted first. Attach the evidence file to the report and
quote the request ids in the body.
Send the source IP addresses you will test from to the security contact before you begin.
Safe harbour
The university's written authorisation, not this page, is what protects you. A web page cannot grant legal permission; treat the engagement letter as the controlling document and this page as a summary of it.
Within that authorisation, good-faith testing that stays inside these rules is authorised access. You are expected to stay within scope, minimise impact, avoid privacy violations, and give the university reasonable time to fix what you find before telling anyone else.
Authorisation ends the moment you step outside it. Modifying data, defacing, exfiltrating donor records in bulk, testing an out-of-scope host, causing an outage, or using a finding for any purpose other than this report takes you outside the letter and outside any protection it offers.
Reward decisions
Rewards use a four-tier priority scale. Priority is not the same thing as CVSS: the score is where triage starts, and the tier is where it lands after the impact on donors and on the university's ability to take donations is weighed.
| Tier | Severity | Reward | What lands here |
|---|---|---|---|
| P1 | Critical | $10,000 | Remote code execution. SQL injection reaching donor or payment records. Authentication bypass on the administrative interface. |
| P2 | High | $2,000 – $5,000 | Stored XSS or template injection rendering for other users. IDOR across donor records. Payment amount or currency tampering. |
| P3 | Medium | $200 – $500 | Reflected XSS, CSRF on a state-changing action, SSRF with limited reach, information disclosure that meaningfully assists an attacker. |
| P4 | Low | $50 – $100 | Open redirect, verbose errors exposing internal paths, weak session invalidation. |
P1 is a flat amount. P2 to P4 are ranges, and where a report falls inside its range is decided by how much of the work the report did: a clear reproduction, an accurate impact statement and a suggested fix land at the top of the band; a finding the triager had to reconstruct lands at the bottom.
What moves a report between tiers. Demonstrated reach into donor or payment data moves a report up. A precondition the attacker cannot arrange in practice moves it down. A chain is rewarded at the tier of the final impact, not the highest tier any single link would have earned alone, and it is paid once.
Duplicates. The first report with enough detail to reproduce is the one that is paid, judged by the timestamp the report arrives at triage. A later report that materially raises the severity of an open issue is paid the difference between the two tiers.
Informative. Reports matching the exclusions list, or describing a vulnerability class without a working reproduction on this asset, are closed without a reward. That is not a judgement on the researcher, only on whether the report is actionable.
Payment. Made after the fix is confirmed, through the platform. Tax and any sanctions screening are handled at that point; a researcher the university cannot lawfully pay will be offered recognition instead.
Appeals. Reply in the report thread with the specific fact you think was missed, within 14 days of the decision. Tier decisions are reviewed by someone other than the original triager.
Disclosure policy
This is a coordinated disclosure, and the university sets the timeline. In the absence of a timeline in the engagement letter, use 90 days from the date the report is acknowledged, extended by agreement if a fix is genuinely in progress.
Do not publish anything (not a write-up, not a screenshot, not a redacted hostname, not a conference talk) before the university has confirmed the fix and agreed in writing to publication. Donor data, internal hostnames, credentials and staff names must be redacted from anything that is eventually published.
If you believe an issue is being actively exploited, say so in the first line of the report and contact the university by phone as well as in writing.
How to report
Send reports to admin@bugbounty-program.com. That is the triage address for this platform, not the university's own security contact: reports are validated here and forwarded to the university under the engagement. For anything you believe is being actively exploited, also use the emergency contact named in the engagement letter; do not wait for triage.
A usable report contains:
- one sentence stating the impact,
- the exact URL, method, parameter and account role needed,
- numbered steps a non-expert can follow to reproduce,
- the raw request and response, not a screenshot of them,
- what you did not do, so the university can scope its own investigation,
- the timestamps and source IPs of your testing, so it can be separated from real attack traffic in the logs,
- a suggested fix, if you have one.
Program updates
-
Program published under written authorisation
Scope is the giving portal only. Reports go to platform triage at admin@bugbounty-program.com, which validates and forwards them to the university.