multiple parameter pollution bugs at “battle camp” game that...

23
Multiple Parameter Pollution Bugs at “Battle Camp” Game that could Leads to Several Illegal Action Bypass the Limitation of Monster Feeding; Finishing All of Stories’ Quest / Goals in Less than ½ Hour; Maximizing the Attack Value at Event “Boss Raid”; Always Win at the “Daily Boss Battle” Apr 15 th , 2018 @YoKoAcc ( [email protected] ) [Indonesian Version]

Upload: hoangdat

Post on 14-Mar-2019

214 views

Category:

Documents


0 download

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)