multiple parameter pollution bugs at “battle camp” game that...
TRANSCRIPT
MultipleParameterPollutionBugsat“BattleCamp”GamethatcouldLeadstoSeveralIllegalAction
• BypasstheLimitationofMonsterFeeding;• FinishingAllofStories’Quest/GoalsinLessthan½Hour;
• MaximizingtheAttackValueatEvent“BossRaid”;• AlwaysWinatthe“DailyBossBattle”
Apr15th,2018
@YoKoAcc([email protected])
[IndonesianVersion]
MultipleParameterPollutionBugsat“BattleCamp”GamethatcouldLeadstoSeveralIllegalAction|page|2
InformasiRevisi
Version Date Detail
0.1 15April2018 -
0.2 18April2018 Penambahanbeberapainformasimengenaiawalketertarikandalammengujiaplikasiini.
MultipleParameterPollutionBugsat“BattleCamp”GamethatcouldLeadstoSeveralIllegalAction|page|3
DaftarIsi
InformasiRevisi......................................................................................................................................2
DaftarIsi.................................................................................................................................................3
DaftarGambar........................................................................................................................................4
I. SELINGANINSTANYANGTIDAKTERLALUPENTING..........................................................................5
II. PENDAHULUAN.................................................................................................................................6
III.KESIMPULANPERMASALAHAN.........................................................................................................6
IV.INFORMASIDANSITUASIUNTUKPOC..............................................................................................6
4.1.0x01–ParameterPollutionuntukManipulasiGabunganMonster(Fixed)...............................6
4.1.1.0x01RingkasCeritamengenaiFiturPenggabunganMonster..........................................7
4.1.2.0x01PoCuntukManipulasiPenggabunganMonster.......................................................9
4.1.3.0x01KeuntunganPemanfaatanBug..............................................................................11
4.1.4.0x01StatusBug..............................................................................................................12
4.2.0x02–ParameterPollutionuntukMelewatiSeluruhStage’sQuests/Goals..........................12
4.2.1.0x02RingkasCeritamengenaiAlurQuests/GoalsdidalamGame..............................12
4.2.2.0x02PoCuntukManipulasiMelewatiQuests/GoalspadaCerita................................14
4.2.3.0x02KeuntunganPemanfaatanBug..............................................................................17
4.2.4.0x02StatusBug..............................................................................................................17
4.3.0x03–ParameterPollutionuntukMemaksimalkanSeranganpadaBossRaid.......................17
4.3.1.0x03RingkasCeritamengenaiBossRaid.......................................................................17
4.3.2.0x03PoCuntukManipulasiNilaiSeranganpadaBossRaid...........................................18
4.3.3.0x03KeuntunganPemanfaatanBug..............................................................................20
4.3.4.0x03StatusBug..............................................................................................................20
4.4.0x04–ParameterPollutionuntukMemaksimalkanSeranganpadaDailyBossBattle............20
4.4.1.0x04RingkasCeritamengenaiDailyBossBattle............................................................20
4.4.2.0x04PoCuntukMemenangkanDailyBossBattle..........................................................21
4.4.3.0x04KeuntunganPemanfaatanBug..............................................................................23
4.4.4.0x04StatusBug..............................................................................................................23
V. PELAJARANYANGDAPATDIAMBIL.................................................................................................23
VI.REFERENSI.......................................................................................................................................23
MultipleParameterPollutionBugsat“BattleCamp”GamethatcouldLeadstoSeveralIllegalAction|page|4
DaftarGambar
Gambar1MonsterSpecialdiberiMonsterBiasa(Kiri)&MonsterBiasadiberiMonsterSpecial
(Kanan)...................................................................................................................................................7
Gambar2MencobaMenduplikasiNilaiParameter"Pendonor"...........................................................9
Gambar3DuplikasisatuMonstersebanyakLimaKali.........................................................................10
Gambar4PenggabungandenganMelebihiBatasyangdiizinkan........................................................10
Gambar5PenggabungandenganMelebihiBatasyangdiizinkan-II...................................................11
Gambar6AvailableStageatBattleCamp-DifferentStage-DifferentQuest/Goals........................12
Gambar7SampleofNPC.....................................................................................................................13
Gambar8SampleofSentRequesttoServerafterFinishingOneQuest/Goals.................................14
Gambar9CompletedStory-PersuadePenny.....................................................................................14
Gambar10CompletedStoryoftheFirstStage....................................................................................15
Gambar11Finishingthe1stStageandGetthePennyBadge.............................................................15
Gambar12Getthe5thBadgefromtheGame-QuakemakeBadge...................................................16
Gambar13GettheLatestBadgeoftheGame-TheArchitechBadge................................................16
Gambar14FinishingAlloftheStorieswithinaroundHalfHour.........................................................16
Gambar15BattleWonRequesttoServer...........................................................................................18
Gambar16NormalRequest-Damagearound1.544..........................................................................19
Gambar17EditedRequest-Damagechangedto30.000...................................................................19
Gambar18ResponsefromServer-DamageResults=30.000............................................................19
Gambar19OneoftheDailyBoss.........................................................................................................21
Gambar20SampleRequestofBattleLost...........................................................................................21
Gambar21BattleLostStatus...............................................................................................................22
Gambar22ChangetheBattle_LostintoBattle_WonwiththeSameBattle_IdParameter................22
Gambar23ResponseofBattleWonfromtheChangedParameter....................................................22
MultipleParameterPollutionBugsat“BattleCamp”GamethatcouldLeadstoSeveralIllegalAction|page|5
I. SELINGANINSTANYANGTIDAKTERLALUPENTING
Padatahun2014 lalu,sayadanbeberapatemandikantortertarikdengansuatupermainanonline
ber-genreRPGyangdigabungkandengankonseppuzzle.Dengankonsepnyayangterbilangcukupunik
(setidaknyabagiKamipadasaatitu),makacukupwajarbilagameinisempatmenyentuhtop50di
AppStoresampaisekitartahun2015.
Mengingat bahwa Kami memang bukanmerupakan gamer sejati (mudah tertarik karena melihat
penampilannya,lalubermainsebentar,dandihapus),jadihubunganKamidengangameinipuntidak
terlalulama.Terlebihlagi,Kamimemainkannyadenganjujursekalipadasaatitu.
Disuatukesempatanpadatahun2015,Sayapribadisedangagakbingungdalammemilihaplikasiyang
hendakdijadikantargetsecaralegaluntukdiuji.Seketikaitu,munculperasaanuntukmenghilangkan
kebingungansementaradenganmelihatgameber-genreRPGyangadadiAppStore.Ketikamelihat-
lihatsebentar,ternyata“BattleCamp”masihberadaditop50AppStoredengangenreRPG.Pada
saatitupunmunculberbagaipolapikirdalammengujibeberapaflowyangsempatSayamainkandi
tahunsebelumnya.
Singkat cerita, setelah kembalimeng-install dammemainkannya, ternyata beberapa pola pikir ini
berhasildieksekusi(dibahaskemudianpadalaporanini).NamunrespondaricustomersupportBattle
CampkurangterlalumenarikpadasaatitusaatmenerimasalahsatulaporanSaya.Kembalisayapun
meninggalkanpermainaninidengancepat.
Pada tahun 2017, kembali Saya bernostalgia dengan game ini dan hendak melihat kemungkinan
laporan Saya ditindaklanjuti oleh pihak Battle Camp. Ternyata, bug itu belum ditutupi. Dan pada
kesempatan kali ini, Saya punmencoba untuk kembalimengutak-utik danmempelajari beberapa
modepermainansampaiakhirnyasayamenemukanbeberapabugslagidiBattleCamp.
Tak lama berselang, Saya mencoba menghubungi Twitter Account mereka yang berujung pada
sambutanyangsangathangat.PerbincangandandiskusiKamiberjalandengansangatbaikpadasaat
itusampaiakhirnyatimBattleCampsempatmenyampaikanpermohonanmaafkarenabelumdapat
bertindakcepatdikarenakankepadatanmereka.Akantetapi,beberapabulankemudian,komunikasi
Kamipunkembaliheninghinggatidakadalagiinformasiterbaruyangsayaterimasampaisaatini.
Mengingat bahwa model pengujian ini cukup menarik untuk dipelajari karena insyaallah dapat
mengembangkanpolapikir kita,maka Sayapunmencobauntukmerilisnya kepadaparapembaca
melaluitulisanini.(Ya,sayasudahmencobamenghubungiBattleCampkembaliviaTwitterpadatahun
2018 ini dan belum jugamemperoleh jawaban). Jadimungkin hal inimerupakan risk yang dapat
diterimaolehrekan-rekanBattleCampmengingatumurbugsnyasudahsekitartigatahun.
MultipleParameterPollutionBugsat“BattleCamp”GamethatcouldLeadstoSeveralIllegalAction|page|6
II. PENDAHULUAN
Baiklah,selesaidenganbasa-basiyangagakpanjangdantidakterlaluberhubungandengankonten
daritulisanini.Sebagaiinformasikembali,“BattleCamp”merupakansalahsatupermainanber-genre
RPGyangbersifatonlineyangdiusungdenganmodelpuzzle.Didalampenerapannya,parapemain
akan dihadapkan pada banyak pilihanmonster yang dapat diperoleh dengan berbagai cara untuk
kemudiandigunakandalambertarungmelawanbossataupunplayerlain.
Sebagaimanasifatgameber-genreRPGpadaumumnyayangjugadisajikansecaraonline,BattleCamp
jugamemilikiinteraksidariaplikasimenujuserverdarisetiaphalyangditemuiolehparapemainnya.
Sebagaicontoh,ketikaseorangpemainhendakmenyelesaikanquestataupunmelawanboss,maka
secaraotomatis,aplikasipunakanmengirimkanrequestkeserverberupahasilpenyelesaianataupun
pertarunganyangtelahdilakukanolehparapemain.
Akantetapi,permasalahanmulaimunculketikaternyataBattleCampbelummelakukanvalidasipada
beberaparequestsehinggadapatmenyebabkanseorangpemainuntukmemanipulasinilaiyangada
demimemperolehbeberapatujuanspesifikdidalamgame.
III. KESIMPULANPERMASALAHAN
Sepertiyangtelahdijelaskansebelumnya,issueyangdibahaspadalaporaninidapat“mengizinkan”
pemain untuk dapatmemanipulasi beberapa hal demimeraih beberapa tujuan berbeda. Adapun
secaragarisbesarnya,issueinisendiriterbagimenjadi4(empat),yaitu:
3.1. MemungkinkanuntukmemanipulasiprosespenggabunganMonster;
3.2. Memungkinkan untuk melewati quests / goals tanpa harus mengikut cerita (menyelesaikan
seluruhquests/goalskurangdarisetengahjam);
3.3. MemaksimalkannilaiseranganpadaBossRaidEvent;
3.4. MemungkinkanselaluuntukmemperolehkemenanganpadaDailyBossBattle;
IV. INFORMASIDANSITUASIUNTUKPOC
4.1. 0x01–ParameterPollutionuntukManipulasiGabunganMonster(Fixed)
Sebenarnya, saya tidak memiliki nama yang tepat untuk menamakan bug tipe ini. Akan tetapi,
mengingat bahwa eksekusinya dilakukan dengan menambahkan parameter tertentu untuk
MultipleParameterPollutionBugsat“BattleCamp”GamethatcouldLeadstoSeveralIllegalAction|page|7
menghasilkan output yang diinginkan, maka jadilah hal yang terbayangkan oleh saya adalah
ParameterPollution.
4.1.1. 0x01RingkasCeritamengenaiFiturPenggabunganMonster
Akancukupsukarbilakitamemulaipembahasan inti tanpamengetahui terlebihdahulumengenai
flowdariaplikasiini.Terlebihbilaparapembacabelumpernahmencicipigameiniataubahkantidak
pernahmenyukaigametipeini.
Sederhananya, game inimenyajikan fitur penggabunganmonster (dinamakan “Feed”) yang dapat
dimanfaatkanolehpenggunauntukmenaikanlevelmonstermiliknyatanpaharusbertarungdengan
banyak“monsteryangtersediabebas”diareapermainan.Semakintinggijenisdanlevelmonsteryang
digabungkankemonsterutama,makatentuakansemakintinggilevelyangdapatdiperolehmonster
utamapengguna.
Didalampelaksanaannya,pihakpenyediagamepunmemberikansatujenismonsterunik(dinamakan
“Special”)yangmemiliki kemampuanuntukmenggandakankenaikan level ketika jenismonster ini
digabungkan(dinamakan“PotentMax”). Jadi,semakinbanyakpenggunamenggabungkanmonster
tipe“special”kemonsterutamamiliknya,makatentuakansemakindrastiskenaikanlevelyangdapat
diperolehnya.
Gambar1MonsterSpecialdiberiMonsterBiasa(Kiri)&MonsterBiasadiberiMonsterSpecial(Kanan)
MultipleParameterPollutionBugsat“BattleCamp”GamethatcouldLeadstoSeveralIllegalAction|page|8
Darigambarterlihatbahwapenggabunganyangsebelahkiriakanmenjadikannilaimonsterutama
menjadi level8(delapan)sedangkanpenggabunganyangsebelahkananakanmenjadikanmonster
utamamenjadilevel11(sebelas).
Hal yang perlu menjadi catatan di sini adalah, batasan jumlah monster yang diizinkan untuk
digabungkandalamsekalifeedyaitusebanyak5(limamonster).Bilalevelmonsterutamamasihkecil,
maka nilai feed untuk satu monster masih bernilai murah (yaitu 5 stone). Akan tetapi, bila level
monsterutamasudahsemakinbesar,makahargastoneuntuksatufeedakanmenjadisemakinbesar
nilainya.
Baiklah, sekarangmasukke intipembahasan.Ketika suatumonsterhendakdigabungkan (di-feed),
makasecaraotomatisaplikasiiniakanmengirimkanrequestkeserversepertiberikut:
POST/api/monster_fuseHTTP/1.1
Host:puzzlemonsters.pennypop.com:443
Accept-Encoding:gzip,deflate
Content-Type:application/json
Content-Length:312
Accept-Language:en-us
Accept:*/*
Connection:keep-alive
User-Agent:Battle%20Camp/3CFNetwork/711.4.6Darwin/14.0.0
{"place":"lakecamp_castlecamp","client_version":"i.3.1.1","donors":["E2MPYXVZB2lrzvwL3KLaJg",
"q6nkBcuxsAUY12QVOMv25Q","oF8oIqULIN2j3mbXW5SMCA"],"call_id":"9018173D-5798-4351-BC25-
5BDA57478DEC","bundle_id":"com.pp.pennypop.monsters","locale":"en","vessel":"PD8k6SWX3EDakx6q3mNhTg",
"udid":"TUTsux1x1x1x78X9z1z1z1"}
Tabel1ContohRequestPenggabunganMonster
Sepertiyangterlihat,terdapatparameterdonorspadarequestdimaksud.DidalampermainanBattle
Camp,parameterinimenandakankeunikanmonsteryangdigabungkankemonsterutama.Jadi,bila
ada 5 (lima) monster yang akan digabungkan ke monster utama, maka akan terdapat 5 (lima)
parameterunikdidalamnya.Untuksituasidiatas,hanya terdapat3 (tiga)parameteryangberarti
hanyaterdapat3(tiga)monsteryanghendakdigabungkan.
MultipleParameterPollutionBugsat“BattleCamp”GamethatcouldLeadstoSeveralIllegalAction|page|9
4.1.2. 0x01PoCuntukManipulasiPenggabunganMonster
Pertanyaansederhanayangdapatterlintasmengenaifituriniyaituhalapakahyangdapatdilakukan
untukmemanipulasifiturdimaksud?
Bila salahsatu jawabannyaadalahmenebaknilaiparameterataumemecahkanprosespembuatan
nilaiparameterdarimonstertentuakanmenjadihalyangsukaruntukdilakukan.Ya,dansayapun
tidakakanmembuangbanyakwaktuuntukmencaritahumengenaiprosespembuatannya(terlebih
bilamelihatresponsedaritimBattleCampdalammenanggapikirimanlaporanmengenaibugyang
“dimiliki”olehnya).Jadisingkatcerita,halinilebihbaikdiabaikan.
Akan tetapi, bila jawabannya adalah mencoba menduplikasi nilai parameter monster yang
digabungkan,makahaliniakancukupbaikuntukdicoba.Dalampercobaanpertamamengenaihalini,
Sayapunmencobamenduplikasisatunilaiparametermonsteryangdigabungkan.
Gambar2MencobaMenduplikasiNilaiParameter"Pendonor"
Bila kita perhatikan dengan seksama, pada request ini, saya menduplikasi nilai dari
"06pMhJa2L9YpwNDD5jwgBA".Hasilnyapuncukupmengejutkan,ternyataservermenerimarequest
ini dan menjadikannya sebagai suatu request yang valid. Singkat cerita, penggabungan dengan
menduplikasimonsterakansangatmemungkinkan.Bayangkanbilapenggunamenduplikasi“Special”
monsteryangsebenarnyahanyaadasatudalaminventorynya.
Lalu,apakahperjalanan ini terhenti?Tentu tidak. Langkahselanjutnyayangdapatdilakukanyaitu,
marikitacobaduplikasikansuatumonsteruniksampaibatasmaksimalyangdiizinkan(sebanyaklima
kali).
MultipleParameterPollutionBugsat“BattleCamp”GamethatcouldLeadstoSeveralIllegalAction|page|10
Gambar3DuplikasisatuMonstersebanyakLimaKali
Lalu, bagaimanakahhasilnya? Ternyata lagi-lagi request ini dianggap valid oleh server. Jadi, usaha
untukmenduplikasikanmonsterberjenisspecialakanberhasildengancaraini.
Kemudian,pemikiransayapadasaatitumenjadisemakinterbuka.Bukankahbatasanlimagabungan
inihanyatertuangsecaratekstual?Bagaimanakalauternyatapenggabunganinipadadasarnyadapat
dieksekusi sebanyak lebih dari lima kali? Untuk memastikannya, Saya pun mencoba untuk
menggabungkannyasebanyakmungkinyangdapatdilakukansejauhsayatidakmalasuntukpaste.
Gambar4PenggabungandenganMelebihiBatasyangdiizinkan
MultipleParameterPollutionBugsat“BattleCamp”GamethatcouldLeadstoSeveralIllegalAction|page|11
Gambar5PenggabungandenganMelebihiBatasyangdiizinkan-II
Terlihatpadagambarbahwaprosesduplikasimelebihidaribatas yangdiizinkanpunberhasil.Bila
tidaksalahhitung,jumlahnyayaitusebanyak80(delapanpuluh)duplikasi(yangtentusajadapatlebih
dariini).
4.1.3. 0x01KeuntunganPemanfaatanBug
Tentunyaakanterdapatkeuntunganyangsangatbesardalammemanfaatkanbugini,yaituseorang
penggunadapatmenduplikasi“Special”monstermiliknya(walaupunhanyasatupadainventorynya),
yangkemudiandisertaidengankeuntunganpemakaiannilaistoneyangkecil.Berikutinimerupakan
alurgarisbesarnyasupayaparapembacatidakmemilikikebingungansaatmenelaahmaksudtulisan
ini:
• Monsterutamamemilikilevel1.Denganlevelsekecilini,makanilaistoneyangdibutuhkanuntuk
menggabungkansatumonsterakanbernilai5(lima)stone.Akantetapi,nilaiiniakanmeningkat
bilamonsterutama terlanjurmemiliki level yangbesar.Dalamsatu situasi,dapat sajanilainya
mencapairatusanstoneuntukpermonsteryangdigabungkan.
Jadi, pada situasi ini, denganmenduplikasi sebanyak (misalnya)80 kali,maka total pemakaian
stonenyaakanberjumlah400stone(80x5).Tentunyajumlahinilebihmenguntungkanketimbang
penggunamenggabungkandengancaranormal.
• Kemudiankeuntungankeduayaitu,penggunadapat langsungmemaksimalkanmonsterutama
nyadengancepat.Bayangkanusahayangdiperlukanpemainuntukmemperoleh(misalnya)80
monster“special”dengancaranormaldemimemaksimalkanleveldarimonsterutama.
MultipleParameterPollutionBugsat“BattleCamp”GamethatcouldLeadstoSeveralIllegalAction|page|12
Dengan memanfaatkan bug ini, maka pengguna dapat langsung memaksimalkannya dengan
menduplikasimonsterjenis“special”yangmungkinhanyaadasatupadainventorynya.
4.1.4. 0x01StatusBug
Bug ini telahdiperbaikiolehpihakBattleCamp (tidakdiketahuimengenaiwaktunya secarapasti).
Namunsetidaknya,haliniyangtermasukpalingcepatdiperbaikidibandingkandenganbuglainyang
berumurlebihdari3(tiga)tahun.
4.2. 0x02–ParameterPollutionuntukMelewatiSeluruhStage’sQuests/Goals
4.2.1. 0x02RingkasCeritamengenaiAlurQuests/GoalsdidalamGame
Seperti halnyapermainanber-genreRPG secaraumum,BattleCamp jugamenyajikan suatu cerita
yang dapat dilalui oleh para pemainnya. Cerita ini sendiri terbagi menjadi beberapa bagian yang
dipisahkan berdasarkan tempat tertentu. Sebagai contoh, cerita pertama akan memakai latar
belakangtempatdi“Camp”,kemudianceritakeduabertempatdi“TeepeeHollow”,danseterusnya
hinggaceritaterakhiryangbertempatdi“LostTemple”.
Gambar6AvailableStageatBattleCamp-DifferentStage-DifferentQuest/Goals
AdapunpadaBattleCamp,setiappemainyangberhasilmelewaticerita-ceritainiakanmemperoleh
suatu “prestasi” yang dinamakan sebagai “Badge”. Terus terang, saya tidak mendapati adanya
MultipleParameterPollutionBugsat“BattleCamp”GamethatcouldLeadstoSeveralIllegalAction|page|13
kegunaan “badge” ini secara spesifik selain untuk ajangmemperlihatkan diri kepada pemain lain
bahwapemaindimaksudtelahmelewaticeritaterakhirdidalamgameini.
Baik,marikitakembalipadamodelpermainanyangada.Setiapceritayangdisajikanakanmemiliki
beberapaquestataupungoalsyangharusdiselesaikanolehparapemainnya.Didalampenerapannya,
pemainakanmemperolehsemacampengalaman(dikenalsebagai .exp)yangdapatbermanfaatkan
untukmenaikanleveldiripemainituketikasudahmencapaibatas.exptertentu.
Sebagaicontoh,untukdapatnaikkelevel7(tujuh)darilevel6(enam),makaseorangpemainharus
mengumpulkan .exp sebanyak (misalnya) 500.Apabila setiapquest / goals yangdiselesaikanakan
memberikan.expsebesar50,makaakandiperlukansekitar10goals/questuntukpemainitunaikke
level7(tujuh).Tentunyasemakintinggiquest/goalsyangdiselesaikan,makaakansemakintinggipula
.expyangdiperoleh.Akantetapi,perlumenjadicatatanbahwatingkatkesulitanpunakansemakin
meningkat.
Secaraspesifik,penyelesaianquests/goalsiniterdiridaribeberapamacamsepertiberbicarakepada
NPC (Non-Playable Character) ataupun melawan suatu boss. Adapun hal yang hendak dijadikan
catatanutamadariissueiniyaituterkaitmetodepembicaraandenganNPC.Sebagaiinformasi,NPC
secaraumummerupakankarakterdidalamgameyangtidakdapatdimainkanolehpemainmanapun.
Tugasnyasecararincihanyaberbicarapadakarakter(secaraotomatis)untukmenyampaikanhal-hal
yangharusdilakukanolehpemainitusendiri.
Gambar7SampleofNPC
MultipleParameterPollutionBugsat“BattleCamp”GamethatcouldLeadstoSeveralIllegalAction|page|14
Pada situasi ini, terlihat bahwa salah satuquest / goals nya yaituberbicaradenganNPCbernama
“Penny”. Setelah itu, “Penny” akanmenyampaikanbeberapahal yangharusdipilihpemain sesuai
dengan jalan cerita yang diharapkan. Setelah pemain selesai berbicara dengannya, maka pemain
dinyatakanselesaimelaksanakanquest/goalsdimaksud.
4.2.2. 0x02PoCuntukManipulasiMelewatiQuests/GoalspadaCerita
Di dalam realitanya, terdapat hal yang sangat menarik dari model quest yang memanfaatkan
pembicaraan dengan NPC. Setiap seorang pemain menyelesaikan quest yang ada, maka secara
otomatisaplikasiakanmengirimkanrequestkeserversepertiberikut:
Gambar8SampleofSentRequesttoServerafterFinishingOneQuest/Goals
Adapunresponyangdiperolehketikarequestdimaksudterkirimkeserveryaitusuaturesponseyang
bernilaisekitar300.000sepertigambarberikut:
Gambar9CompletedStory-PersuadePenny
Darigambar ini,dapatdiambilsuatukesimpulanyangkuatbahwaparameter“id"yangdikirimkan
olehaplikasimerupakanpenandabahwatelahselesainyasuatuquest/goalsdilakukan.Dalamhalini,
MultipleParameterPollutionBugsat“BattleCamp”GamethatcouldLeadstoSeveralIllegalAction|page|15
quest/goalsyangtelahdiselesaikanyaitustage1(satu)denganceritake-9(sembilan)yangditandai
denganvalue:“1_9:complete”.Laluhalapayangdapatkitalakukanterkaithalini?
Secarasederhana,sayapunmencobamelakukanrequestotomatisdarinilai"1_9:complete"sampai
"1_35:complete".Alasansayamulaidarinilai9(sembilan)dikarenakannilaiinitelahsayalalui(dan
ya,kitatidakdapatmengulangquestyangtelahdilakukandemimemperoleh.expberkali-kali).
Hasildarirequestotomatisinicukupmenyenangkankarenasecaraotomatisjuga,Sayadapatlangsung
menyelesaikansuatuceritadengancepattanpaharusmenjalanijalanpermainanyangada.Berikutini
merupakansalahsatucontohrequestyangdikirimkan(berakhirpada“1_11:complete”dikarenakan
tidakadalagiceritasetelahnyapadastagepertama).
Gambar10CompletedStoryoftheFirstStage
Dengancarayangsama,Sayapunterusmelakukanhal inidarivalue“2_1:complete”sampaipada
value “9_25:complete”. Berikut inimerupakan beberapa contoh penyelesaian cerita yang disertai
dengandiperolehnyabadgedarimasing-masingtempatcerita:
Gambar11Finishingthe1stStageandGetthePennyBadge
MultipleParameterPollutionBugsat“BattleCamp”GamethatcouldLeadstoSeveralIllegalAction|page|16
Gambar12Getthe5thBadgefromtheGame-QuakemakeBadge
Gambar13GettheLatestBadgeoftheGame-TheArchitechBadge
Dan singkat cerita,berikut inimerupakan tampilanpemain yang sayagunakanyang telahberhasil
menyelesaikanseluruhstory(danmengoleksiseluruhbadge)dalamwaktukurangdarisetengahjam
sejakpermainandimulai:
Gambar14FinishingAlloftheStorieswithinaroundHalfHour
MultipleParameterPollutionBugsat“BattleCamp”GamethatcouldLeadstoSeveralIllegalAction|page|17
4.2.3. 0x02KeuntunganPemanfaatanBug
Beberapakeuntunganyangdapatdiperolehdaripemanfaatanbuginiyaituseperti:
• Mencapaitempattertinggidanmemilikipotensiyangsangatbesaruntukmemperolehmonster
bersifat“uncommon”(lebihbaikdaripadajenis“common”)yangtentunyadapatdigunakanuntuk
mempercepat kenaikan level dari monster yang dimiliki pemain (dengan menggunakan fitur
penggabunganmonstersebagai“Feed”).
Secara sederhana, bila pemain berusaha mencari monster asupan pada tempat awal (yaitu
“camp”),maka akan terbilang lama sekali untukmenaikan levelmonster utama yang dimiliki.
Denganmencapai tempat tertinggi (yaitu “Lost Temple”),makapemain akandapat bertarung
dengan“uncommon”monsteryangberadadiareasekitardanmemilikimonsterdimaksud.
• Memperolehsekitar20golds lebih serta sekitar14.000stones lebihdalamwaktuyangsangat
singkatyangmenurutsayasudahterbilangcukupuntukmembayarbiayapenggabunganmonster.
• Kemudian,memperolehlightingyangdapatdigunakanuntukbermainmelawanmonster.Adapun
jumlah ini tidak saya ketahui pasti nilainya karena ketika me-reproduce pada dua karakter
berbeda, hasilnya pun berbeda. Karakter satu memperoleh sekitar 50 lightings, sedangkan
karaktersatulagihanyamemperolehsekitar30lightings.
4.2.4. 0x02StatusBug
BuginibelumdiperbaikiolehpihakBattleCamp(dantidakdiketahuipastimengenaikemungkinan
diperbaikinyaatautidak).Secarapribadi,Sayapuntidakmengetahuikapanbug inimulaidapatdi-
reproducemengingatSayabarumulaimenemukanhalinipadatahun2017lalu.
4.3. 0x03–ParameterPollutionuntukMemaksimalkanSeranganpadaBossRaid
4.3.1. 0x03RingkasCeritamengenaiBossRaid
Demi memaksimalkan para pemainnya dalam melakukan interaksi satu sama lain, Battle Camp
menyediakansuatuevent (tidaksayaketahuipastiwaktupelaksanaannya)yangdapatdiikutioleh
seluruhpemainterdaftar.Adapunsalahsatu“kegiatan”padaeventiniyaitumengalahkanbeberapa
bossyangdisediakandisuatutempat(dikenaldengannama“BossRaid”).
Tentunya,semakinbanyakpointseranganyangdihasilkan,makabossinisendiriakansemakincepat
untukdikalahkan.Adapundidalampelaksanaannya,BattleCampjugamenyediakanhadiahbagipara
pemainyangberhasilmengalahkanbossinidengannilaitertinggi.Hadiahinisendiridapatdiperoleh
MultipleParameterPollutionBugsat“BattleCamp”GamethatcouldLeadstoSeveralIllegalAction|page|18
baiksecaraindividumaupunsecaragrup(yangtergabungdidalamtroops).Singkatcerita,BattleCamp
menyediakanpointbaikuntukindividudanadapointuntuktroops.
Didalamevent“BossRaid”ini,setiappemaintidakakanpernahmengalamikekalahan.Dengankata
lain,satu-satunya“kekalahan”yangakanditerimapemainpadaeventyaituhanyaapabilaeventitu
telahberakhir(yangumumnyaeventakanberjalansekitarenamhari).
4.3.2. 0x03PoCuntukManipulasiNilaiSeranganpadaBossRaid
Didalampenerapannya,disetiapbattleyangdihadapipemainpadaevent“BossRaid”,makapemain
harusmenyerangsebanyakmungkindalamwaktusatumenit.Ketikawaktusatumenitiniberakhir,
maka secara otomatis aplikasi akan mengirimkan request ke server dengan tujuan “BattleWon”
sepertigambarberikut:
Gambar15BattleWonRequesttoServer
Bila dianalisa lebih jauh, terdapat beberapa parameter yang sangat menarik di dalamnya, yaitu
“damage”,“total_damage”,dan“wave_damage”.
Saatitu,mulailahSayamencobamencaricarauntukdapatmenaikanjumlahnilaiseranganinitanpa
harus berlelah-lelahmengumpulkan combo serangan. Singkat cerita, ketika Sayamemasuki battle
berikutnya,SayapunmencobauntukmematikankoneksiinternetyangSayagunakan.Ternyatabattle
inisendirimasihberjalandanSayamasihdapatmenyerangmonster.Apakahparapembacasudah
terbayangakankesimpulannya?
Ya,gameiniternyatamenyimpansecaraofflineterlebihdahuluakannilaiseranganyangdieksekusi.
Dengankatalain,bilakitamenahanrequestnilaidamageyangtersedialalumenggantinyamenjadi
lebih tinggi, maka server tetap akan menerima dan menganggap hal itu valid (dikarenakan tidak
terdapatnyavalidasiunikpadaparameter lainyangdihubungkandenganparameternilai serangan
ini). Berikut ini merupakan hasil manipulasi serangan yang telah Saya lakukan pada salah satu
pertarunganmelawansuatuboss:
MultipleParameterPollutionBugsat“BattleCamp”GamethatcouldLeadstoSeveralIllegalAction|page|19
Gambar16NormalRequest-Damagearound1.544
Gambar17EditedRequest-Damagechangedto30.000
Gambar18ResponsefromServer-DamageResults=30.000
Dari gambar ini, terlihatbahwaSayamencobamengubahnilai serangandari yang semulabernilai
1.544menjadi30.000.Dandarigambarterakhir,terlihatbahwaservertelahmenerimanilaiserangan
itusebagaiseranganyangvalid.Halinisendiridapatdilihatpadatulisanyangdi-highlight.
Saatsayamencobamenaikannyamenjadiratusanribu,ternyatanilaimaksimumyangdapatditerima
yaitusekitar75.000.Setelahmelakukananalisalebihjauh,ternyataBattleCamptelahmenerapkan
algoritmajumlahseranganmaksimalyangdidasarkandarilevelsertakemampuanmonsterdaripara
MultipleParameterPollutionBugsat“BattleCamp”GamethatcouldLeadstoSeveralIllegalAction|page|20
pemain.Dengankata lain,bilaseorangpemainmemiliki5 (lima)monsterdengan levelsatu,maka
jumlah maksimal serangannya akan berbeda dengan seorang pemain lain yang memiliki 5 (lima)
monsterdenganleveldua.
4.3.3. 0x03KeuntunganPemanfaatanBug
Keuntunganyangdapatdiperolehdaripemanfaatanbuginiyaitupemaindapatselalumemperoleh
pointmaksimalbaikuntukindividumaupunsecaragrup(troops)tanpaharusberlelah-lelahmembuat
combopadasuatubattleresmidenganbossyangtersedia.
Singkat cerita, hanya dengan berbekal standard monster, maka seorang pemain akan dapat
memaksimalkanpointyangdidapatolehnya.Berdasarkanujicobasaya,padasaatitusayaberhasil
menembustop5000dariseluruhpemainterdaftardisuatuevent (denganstandardmonsteryang
memilikilevelkecildanhanyadidukungdenganjumlahlightingyangjugaterbilangkecil).
4.3.4. 0x03StatusBug
BuginibelumdiperbaikiolehpihakBattleCamp(dantidakdiketahuipastimengenaikemungkinan
diperbaikinyaatautidak).Namunsebagaiinformasi,buginitelahmemilikiumursekitarlebihdari3
(tiga) tahun (dari awalBattleCampmasihmasuk top50GamesdiAppStore /Play Store, sampai
akhirnyasekarangsudahberadadiluarpantauantop50).
4.4. 0x04–ParameterPollutionuntukMemaksimalkanSeranganpadaDailyBossBattle
4.4.1. 0x04RingkasCeritamengenaiDailyBossBattle
DailyBossBattlemerupakansalahsatu“fasilitas”yangdisediakanolehBattleCampuntukmembuat
pemainmemperolehhadiahuniksepertimonster(bertipe“rare”),lighting,ataupunyanglainnya.
Akan tetapi, seperti namanya, “Boss”, maka tentu pemain akan mendapati rintangan yang tidak
mudahuntukdilewati.Terlebihlagibilapilihanmodenyaadalahhardwalaupuntentuhadiahyang
diperolehdenganmodehardinijauhlebihbaikdaripadamodeeasy.
Secaraspesifik,sejauhsayamenelaahsecarasekilas,hanyaterdapattigabossyang“tersedia”setiap
harinya yang bertempat di tempat yang sama. Perlumenjadi catatan bahwa pemain harus selalu
menungguhinggajam07:00GMT+7pagiuntukdapatbertarungkembalimelawandailybossketika
sebelumnyasudahpernahbertarungdengannya.
Berikutinimerupakansalahsatupenampakanbossyangtersediadidalamgame:
MultipleParameterPollutionBugsat“BattleCamp”GamethatcouldLeadstoSeveralIllegalAction|page|21
Gambar19OneoftheDailyBoss
Singkatcerita,ketikaseorangpemaintelahdinyatakankalahdalampertarunganmelawandailyboss,
makasecaraotomatisaplikasiakanmengirimkanrequestkeserverberupa“battle_lost”.
Gambar20SampleRequestofBattleLost
Danketikaseorangpemainberhasilmengalahkanbossdimaksud,makasecaraotomatis,aplikasiakan
mengirimkanrequestkeserverberupa“battle_won”.
4.4.2. 0x04PoCuntukMemenangkanDailyBossBattle
Sepertiyangtelahparapembaca lihatpadabagianpenjelasansebelumnya,ketikaseorangpemain
memenangkanpertarunganmelawandailyboss,makasecaraotomatis,aplikasiakanmengirimkan
requestkeserverberupa“battle_won”.
Mengingatbahwagame inimenerapkan sistemofflineketikapertarunganberlangsungdan server
hanyamenunggurequestdariaplikasi,makakekalahanyangdimilikiolehpemaindalamdailyboss
battleakandapatdiubahmenjadi kemenangan.Hal ini sendiridapatdilakukandenganmengubah
requestdaribattle_lostmenjadibattle_won.
Adapunbeberapatahapanyangharusdijalaniyaitu:
• Pastikan pemain untuk tidak perlu menyerang daily boss dengan tingkat kesulitan “hard”.
(bayangkan, level rendahmencobabermainhard. Tentunya lebihbaik diabaikandengan tidak
menyerangsamasekali).
MultipleParameterPollutionBugsat“BattleCamp”GamethatcouldLeadstoSeveralIllegalAction|page|22
• Ketikawaktuberakhir(hanyasatumenit),makasecaraotomatisaplikasiakanmengirimrequest
keserverberupabattle_lost.Padakondisiini,tahanrequestdimaksudsehinggatidakterkirimke
serverterlebihdahulu.
Gambar21BattleLostStatus
• Simpannilaibattle_idpada“battle_lost”yangtelahkitaperolehdarirequestsebelumnya.
• Setelahitu,copyseluruhstatusbattle_wonyangtelahpemainperolehdariPoCpadaBossRaid
(0x03dilaporanini)danreplaceseluruhrequestdaribattle_lostinimenjadibattle_wondariBoss
Raid.Adapuncatatanpentingyangharusdilakukanpadabagianiniyaitudenganmemasukannilai
battle_idyangdidapatdaribattle_losttadi.
• Singkatcerita,makahasilakhirperubahannyayaitusepertiberikutini:
Gambar22ChangetheBattle_LostintoBattle_WonwiththeSameBattle_IdParameter
Sepertiyangterlihat,Sayatelahmenggantirequestdaribattle_lostmenjadibattle_wondengan
menggunakannilaibattle_idyangsamayangdiiringidengannilaidamageyangbesar.
• Setelahselesai,makakirimkanlahkeserverdanhasilnyapunakanvalid.Dengankatalain,server
akanmenganggapbahwapemaintelahmemperolehkemenangandaridailybattlebossdimaksud
(walaupunpadadasarnyapemaintidakmelakukanapa-apa).
Gambar23ResponseofBattleWonfromtheChangedParameter
MultipleParameterPollutionBugsat“BattleCamp”GamethatcouldLeadstoSeveralIllegalAction|page|23
4.4.3. 0x04KeuntunganPemanfaatanBug
Keuntunganyangdapatdiperolehdaripemanfaatanbuginiyaitupemaindapatselalumemperoleh
kemenangandisetiapmelakukanpertarungandengandailyboss.Artinya,pemainakanselaludapat
memperolehhadiahkemenangandarihasilpertarunganiniyanghadiahnyatentubermacam-macam.
BerdasarkanpengalamanSayaselamabeberapaharimemanfaatkanbugini,Sayatelahmemperoleh
monsterbertipe“rare”beberapakaliyangdapatdigunakanuntukmenjadi“feed”bagimonsterutama
yangdigunakan.
4.4.4. 0x04StatusBug
Bug ini juga belum diperbaiki oleh pihak Battle Camp (dan tidak diketahui pasti mengenai
kemungkinandiperbaikinyaatautidak).Namunsebagaiinformasisederhana,buginisendiribarusaya
sadaripadatahun2017lalu.
V. PELAJARANYANGDAPATDIAMBIL
ParameterPollutionmasihmenjadisuatuteknisfavorityangdapatdimanfaatkanuntukmengelabui
suatu logikaaplikasiyang telah jadi.Adapundidalamnya, teknik inibarudapatbermanfaatketika
memangtidakterdapatvalidasitertentuyangdilakukanolehsuatuaplikasidalammemprosessuatu
flowyangdikirimkan.
Dalamhalini,BattleCampmemilikikerentanandidalammelakukanvalidasiterhadapnilaiserangan,
penyelesaianquest,ataupunpenggabunganmonster.Akantetapi,didalamrealitabilaberbicaradi
luaraplikasipermainan,halinidapatberkembanglebihjauhsepertimenghapusataupunmengubah
suatudata(sepertisalahsatustudikasusmengenaiFortiNetSupportPortalyangpernahdisampaikan
padablogSaya)ataubahkansampaidapatmelakukanpengaksesansecaraillegalterhadapsuatudata
sensitif(walaupundirealita,konsepiniberhubunganeratdengannama“IDOR).
VI. REFERENSI
6.1. https://cwe.mitre.org/data/definitions/20.html
6.2. https://cwe.mitre.org/data/definitions/233.html
6.3. https://www.owasp.org/index.php/Testing_for_HTTP_Parameter_pollution_(OTG-INPVAL-004)