pixiv · Report #3183520
Non-premium user can disable Ads in japanese version of dic.pixiv.net
Summary
Summary
A vulnerability is identified in the Japanese version of the pixiv dictionary website (dic.pixiv.net) where non-premium users can disable advertisements. Normally, the ability to disable ads is restricted to premium users only, as indicated by the "P" icon next to the ad display settings in the user profile. However, due to improper access control at the API endpoint /_api/update_user_setting, any authenticated user can modify their ad display preferences without verification of premium status.
Steps to Reproduce
- Disable any ad-blocker plugins in your browser and login as a non-premium Pixiv user
- Browse to
https://dic.pixiv.net(the Japanese version that doesn't have /en in the URL) and observe ads being displayed normally - Intercept any request to
dic.pixiv.netthat includes your cookies - Modify the request by:
- Changing the HTTP method to POST
- Setting the target URL to
/_api/update_user_setting - Including the following JSON data in the request body:
{"setting":{"showAds":false,"showNewUI":true}} - Note: No need to worry about the Content-Type header, as the server does not validate it
- Send the request - the response should be
{"success":true}{F4536685} - Go to your profile at
https://dic.pixiv.net/mypageand verify that "表示しない" (Do not display ads) is now selected despite not being a premium user {F4536687} - Browse the site to confirm that ads are no longer displayed
Impact
The vulnerability allows non-premium users to access a feature that should be restricted to paying customers only. This can result in:
- Lost revenue from reduced ad impressions when non-premium users disable advertisements
- Devaluation of the premium subscription offering, as one of its key benefits (ad-free browsing) can be obtained for free
- Potential widespread exploitation if knowledge of this vulnerability spreads among users
How it was found
The write-up for this report has not been downloaded yet, or the program disclosed it without one. Read it on HackerOne.