- Overflow buffer
strcpydalam pemrosesan gap name pada berkas simpanan Create-A-Park berujung pada eksploit berkas simpanan dan jaringan di berbagai platform, termasuk original Xbox, Xbox 360, PS2, dan GameCube - Versi THPS4 untuk original Xbox menyalin string yang dibatasi 31 karakter ke buffer stack 32 byte tanpa pemeriksaan batas, sehingga dapat menimpa return address; shellcode dijalankan dengan memanfaatkan header berkas simpanan dan segmen data yang dapat dieksekusi
- Pada THPS3, input yang sama merusak heap, bukan stack, sehingga diperlukan rantai ROP melalui custom allocator dan jalur vtable; pada THUG 1 dan 2 versi Xbox, jalur gap name terblokir karena stack cookie
- Dalam multiplayer THPS4, host berbahaya mengirim berkas park ke klien untuk melakukan eksekusi kode jarak jauh dan transfer berkas asinkron; kebocoran memori jaringan yang terlihat selama transfer dilewati di dalam eksploit dengan hot patch
- Tony Hawk’s American Wasteland di Xbox 360 juga memungkinkan eksekusi ROP melalui overflow gap name, tetapi eksekusi kode hypervisor penuh hanya mungkin jika digabungkan dengan bug system call handler pada 4548 kernel; source dan berkas simpanan yang sudah dipatch dipublikasikan di GitHub
Titik awal: gap name dan strcpy
- Saat mencari bug peretasan berkas simpanan baru untuk original Xbox pada 2016, berkas simpanan custom park dari Tony Hawk’s Pro Skater 4 menjadi target analisis
- Fitur Create-A-Park di THPS4 memungkinkan pemain membuat skate park sendiri dan memberi nama pada gap, yaitu area lompatan
- gap name adalah string kustom yang terdiri dari maksimal 31 karakter dan null terminator
- Jika string ini diproses dengan fungsi seperti
strcpy, ia bisa menjadi primitive kerusakan memori
- Ketika berkas simpanan berbahaya dengan gap name yang diubah menjadi string panjang berulang
0x41disalin ke Xbox dan dimuat, konsol mengalami crash, dan instruction pointer disetel ke0x41414141- Ini menandakan bahwa gap name disalin ke stack hingga menimpa return address
- Hasil analisis IDA menunjukkan bahwa saat menelusuri daftar gap dalam berkas simpanan,
gap_namedarisave_file_gap_datadisalin denganstrcpykegap_description gapDescdi stack- Karena tidak ada pemeriksaan batas, penyalinan terus berlanjut sampai menemukan null terminator
- Versi game tersebut dikompilasi tanpa stack cookie, sehingga data stack dan return address dapat ditimpa
THPS4 original Xbox: memindahkan shellcode ke area yang dapat dieksekusi
- Original Xbox tidak memiliki DEP perangkat keras yang mencegah eksekusi data arbitrer seperti perangkat modern, tetapi kernel dan game keluaran belakangan memiliki sebagian soft DEP
- Caranya adalah mengubah alamat code segment selector agar hanya alamat di bawah batas tertentu yang dapat dieksekusi
- Stack dan alokasi heap yang memuat berkas simpanan berada di luar area yang dapat dieksekusi
- Segmen data read-write pada executable game berada di dalam area yang dapat dieksekusi, sehingga strategi yang digunakan adalah menyalin kode ke sana lalu menjalankannya
- Nama park berada di header berkas simpanan, dan ketika pemain memilih berkas simpanan, 136 byte pertama dari header disalin ke sebuah struct di segmen data executable untuk ditampilkan di UI
- Seluruh header tidak dapat diubah sesuka hati, tetapi ruangnya cukup untuk memasukkan stub
memcpykecil
- Seluruh header tidak dapat diubah sesuka hati, tetapi ruangnya cukup untuk memasukkan stub
- Alur eksploit THPS4 original Xbox
- Setelah berkas simpanan dimuat dan sebelum menekan “Start Game”, 136 byte pertama disalin ke segmen data executable game
- Saat “Start Game” ditekan, gap name berbahaya disalin ke stack dan return address ditimpa dengan alamat stub penyalin shellcode
- Saat fungsi melakukan return, eksekusi melompat ke stub penyalin, lalu menyalin payload besar dari buffer berkas simpanan ke segmen data yang dapat dieksekusi
- Setelah penyalinan selesai, eksekusi melompat ke payload dan memperoleh eksekusi kode arbitrer
Bypass tanda tangan dan habibi key
- Setelah memperoleh eksekusi kode di original Xbox, pemeriksaan tanda tangan harus dinonaktifkan dan unsigned executable harus dijalankan
- Payload disusun berdasarkan payload dari berkas simpanan softmod installer 007 Agent Under Fire yang sudah ada
- Ia mencari fungsi kernel dan alamat data, serta menemukan alamat RSA public key yang digunakan untuk verifikasi tanda tangan executable
- Ia menonaktifkan write protection pada machine state register dan mem-patch RSA public key menjadi habibi key
- Ia menjalankan executable tambahan yang disertakan dalam berkas simpanan; selama pengujian, executable
nyan catdigunakan
- Pasangan habibi key diperkirakan merupakan kunci RSA yang dibuat oleh kelompok original Xbox Linux hacking pada awal 2000-an
- Alih-alih membuat pemeriksaan tanda tangan RSA kernel selalu lolos, mereka mengganti public key dengan kunci mereka sendiri untuk menjalankan Linux loader
- Ini merupakan pilihan untuk mencegah berkas simpanan tersebut menjalankan pirated content, tetapi kemudian kelompok lain memublikasikan berkas exploit untuk memasang persistent hack
- Modulus habibi public key unik karena hanya berbeda 4 byte dari Microsoft RSA public key
- Exponent tampaknya perlu diubah menjadi 3, tetapi payload shellcode yang ada tidak mengubah exponent
- Belum jelas persis bagaimana cara kerjanya
- Metode habibi key dipilih karena kompatibilitas dengan berbagai versi Xbox kernel
- Untuk mem-patch fungsi verifikasi tanda tangan agar selalu true, diperlukan pencocokan instruction pattern untuk tiap versi kernel
- Dengan habibi key, cukup melakukan patch 4 byte pada memori yang mudah ditemukan
Analisis Varian: THPS3, THUG, THAW
-
Tony Hawk’s Pro Skater 3
- THPS3 juga memiliki Create-A-Park dan gap name, tetapi tidak crash tepat setelah memuat file simpanan berbahaya
- Pemain masih bisa skate di dalam game, dan konsol crash saat memilih “quit game”
- Gap name disalin bukan ke stack, melainkan ke heap, dan overflow menimpa allocation header dari alokasi heap berikutnya
- Saat allocation berikutnya di-free, pointer di header mengarah ke vtable yang memiliki cleanup routine function pointer
- THPS3 tidak menyalin header file simpanan ke segmen data yang dapat dieksekusi seperti THPS4, dan data file simpanan juga berada di memori heap yang tidak dapat dieksekusi
- Dengan menimpa pointer
pAllocOwner, posisi pemuatan cleanup function pointer dikendalikan, lalu ROP chain di memori file simpanan digunakan lewat stack pivot - ROP chain, hanya dengan beberapa gadget, menyalin shellcode di heap ke segmen data yang dapat dieksekusi lalu melompat ke sana
- Setelah itu, seperti payload generik “hack xbox kernel” untuk THPS4, exploit melakukan patch habibi key dan menjalankan executable unsigned
-
Tony Hawk’s Underground 1 & 2
- Saat gap name di-fuzzing pada THUG, alih-alih access violation, terjadi full bug check dengan pesan
Buffer overrun detected! - Di executable terdapat pemeriksaan stack cookie
- Stack cookie adalah nilai acak yang ditempatkan sebelum return address, dan sebelum fungsi return akan diperiksa apakah nilainya berubah
- Untuk menimpa return address, nilai cookie harus diketahui, tetapi pada jalur gap name tidak ada cara untuk membocorkannya
- Di antara gap name buffer dan stack cookie ada variabel-variabel yang bisa dirusak, tetapi segera ditimpa oleh kode game sehingga tidak berguna untuk exploit
- SEH exploitation juga dipertimbangkan, tetapi tidak ada cara memicu exception pada sisa kode sebelum pemeriksaan stack cookie, dan pada titik itu juga belum terdaftar exception handler yang menelusuri SEH chain
- THUG2 versi Xbox juga tidak dapat dieksploitasi berbasis gap name karena alasan yang sama
- Namun ada bug
strcpylain dan bug berbasis heap yang dapat dieksploitasi - Versi PlayStation 2, PC, dan kemungkinan GameCube dikompilasi tanpa stack cookie sehingga dapat dieksploitasi melalui gap name buffer
- Saat gap name di-fuzzing pada THUG, alih-alih access violation, terjadi full bug check dengan pesan
-
Tony Hawk’s American Wasteland
- Karena THAW adalah game setelah THUG 1·2, stack cookie diperkirakan ada, tetapi versi Xbox dikompilasi tanpa stack cookie
- Game ini rentan terhadap gap name buffer overflow, dan exploit disusun hampir sama dengan THPS4
RCE Jaringan THPS4: Meretas Klien Tanpa File Simpanan
- Karena exploit file simpanan membutuhkan memory card, game LAN multiplayer dipilih sebagai permukaan serangan dengan hambatan masuk yang lebih rendah
- Jika park yang dibuat dengan Create-A-Park digunakan di LAN multiplayer, host mengirim file simpanan lewat jaringan dan client memuatnya
- Hipotesisnya, console client dapat diretas dengan mengirim file park berbahaya
- Agar host tidak meretas dirinya sendiri, executable game dimodifikasi untuk menutup bug
strcpy, dan code segment tambahan juga ditambahkan untuk fungsi tambahan - Awalnya client bisa tersambung ke host dan skate secara normal, tetapi payload tidak berjalan dan buffer overflow juga tidak terpicu
- Data park file di memori client sudah berubah dan berbeda dari file exploit
- Setelah host memuat park file, host menyimpannya kembali dari memori lalu mengirim hasilnya ke client, sehingga data exploit rusak
- Setelah function call tersebut di-NOP, client menerima park file berbahaya, ter-compromise, dan warna LED berubah
- Pada jalur jaringan, header file simpanan tidak disalin ke segmen data, sehingga stub penyalinan shellcode dari exploit lokal THPS4 tidak dapat digunakan
- Shellcode disalin ke memori yang dapat dieksekusi dengan ROP chain yang mirip THPS3
Penemuan Kode Sumber THUG dan Pemanfaatan Kode Jaringan
- Executable payload tambahan perlu dikirim ke client lewat jaringan, tetapi tidak bisa menyertakan file di save game folder seperti pada exploit file simpanan lokal
- Cara memuat executable dari burned CD atau alamat jaringan lokal juga dipertimbangkan, tetapi tidak dipilih
- Implementasi Xbox winsock secara default menggunakan secure socket connection, sehingga security layer Xbox harus direproduksi dengan Python script
- Saat mencari materi terkait park save file, pencarian string
Sk4Ed_Deadmenemukan repositorithugdi GitHub- Itu dipahami bukan sebagai homebrew tool, melainkan seluruh kode sumber game Tony Hawk’s Underground
- Meski bukan THPS4 itu sendiri, codebase-nya cukup mirip sehingga dapat dimanfaatkan untuk networking code dan penulisan hook
- Di kode sumber terdapat park file loading code dan line persis yang memiliki bug
strcpy- Dengan merekonstruksi Visual Studio project file dan memperbaiki beberapa compiler error, build yang dapat dijalankan dengan final game asset berhasil dibuat
- Tampaknya bukan kode yang sepenuhnya sama dengan versi final, tetapi sangat dekat
- Tujuannya berubah dari RCE sederhana menjadi memperoleh RCE secara diam-diam pada console yang masuk ke match, memungkinkan eksekusi unsigned code, lalu mengirim executable tambahan saat game berlangsung
Pemulihan Eksekusi dan Transfer File Asinkron
- Agar transfer payload dapat berjalan sementara client terus memainkan game, pemulihan alur eksekusi game diperlukan setelah shell code berjalan
- ROP chain diubah agar menyimpan stack pointer lama sebelum stack pivot, lalu memulihkannya nanti setelah shell code berjalan
- Setelah itu shell code disalin ke memori yang dapat dieksekusi dan dilakukan jump ke sana
- Networking system game memiliki struktur yang mendaftarkan message ID dan handler function, lalu memanggil handler yang sesuai dengan ID pesan yang diterima
- Protokol transfer file sederhana diimplementasikan dengan mendaftarkan message ID yang tidak digunakan
- Saat client tersambung, client mengirim
MSG_ID_PAYLOAD_REQUESTke host untuk memulai transfer - Host mengirim data payload lewat pesan
MSG_ID_PAYLOAD_DATA - Saat client menerima
PAYLOAD_MSG_ID_END, transfer selesai
- Saat client tersambung, client mengirim
Kebocoran Memori 15 Tahun dan Hot Patch
- Saat transfer file berlangsung, console client crash karena null pointer dereference
- Network data allocator mengembalikan NULL, dan free byte di networking memory pool menjadi 0
- Di kode sumber THUG ada kode yang membebaskan message data buffer, tetapi perbaikan tersebut tidak ada pada shipped build THPS4
- Buffer
p_datamilikstream_desctidak dilepas pada setiap pesan, sehingga networking memory pool habis - Dalam multiplayer play biasa, masalah ini mungkin tidak muncul kecuali pemain bertahan cukup lama
- Buffer
- Exploit melakukan hot patch dengan meng-hook client code agar buffer
p_desc->p_datadilepas menggunakan free function yang benar - Setelah hot patch, transfer file berhasil pada console host dan client, dan client menjalankan executable
nyan-cat- Dengan menggunakan tunneling app, exploit yang sama juga diuji secara jarak jauh pada console teman di wilayah lain
Alur exploit jaringan Xbox original final
- Client terhubung ke console host berbahaya dan menerima file park “Hack Xbox” lewat jaringan
- Saat client mem-parse file park, terjadi buffer overflow, return address di stack tertimpa, dan ROP chain dimulai
- ROP chain menyalin payload shell code penuh ke area memori yang dapat dieksekusi lalu melompat ke sana
- Shell code menyiapkan hook dan patch yang diperlukan sebelum kembali ke eksekusi game, lalu men-spawn player ke dalam match
- Selama player bermain skate di dalam game, host mengirim executable file ke client, dan client menyimpannya di HDD
- Setelah transfer file selesai, shell code mem-patch kernel client agar menggunakan habibi key, lalu mem-boot secondary executable yang dikirim
- Jika warna LED tidak diubah, pengguna sulit menyadari progresnya sampai application lain tiba-tiba di-boot
Xbox 360: THAW dan kernel 4548
- Tony Hawk’s American Wasteland untuk Xbox 360 juga rentan terhadap buffer overflow pada gap name
- Tujuannya adalah mengeksploitasi console pada versi kernel baru, tetapi tanpa bug hypervisor baru hal itu tidak mungkin
- Sebagai gantinya, bug
strcpydi THAW digabungkan dengan bug system call handler pada kernel 4548 yang sudah ada untuk membuat exploit software-only pertama di Xbox 360 - Hack King Kong yang sudah ada di Xbox 360 menggunakan modified shader file untuk melakukan arbitrary write ke kernel memory dan mengeksploitasi bug system call handler
- Cara ini mengharuskan console dibuka dan firmware DVD drive dimodifikasi agar bisa memakai modified King Kong disc
- Bug game save bisa menjadi entry point lain untuk memulai ROP chain
Tanda tangan file save Xbox 360 dan peran konsol pengembangan
- File game save Xbox 360 ditandatangani dengan RSA key pair yang unik untuk setiap console
- Key store tiap console berisi cryptographic key yang dipakai untuk menandatangani game save
- Alasan file save dapat diverifikasi di console lain adalah karena RSA public key disertakan di header save file
- Public key ini sendiri ditandatangani dengan RSA key pair lain yang hanya dimiliki Microsoft
- Tidak bisa sembarang public key dimasukkan ke header lalu lolos verifikasi
- Untuk memakai save file yang dimodifikasi secara arbitrer di console lain, diperlukan decrypted key store dari salah satu console Xbox 360
- Titik awal hacking Xbox 360 adalah bocornya development console dan SDK
- Karena kode eksekusi dienkripsi, bug tidak bisa ditemukan jika code tidak dapat di-inspect dari luar
- Development console dan SDK menyediakan informasi yang diperlukan untuk decrypt executable code serta reverse engineering boot chain, hypervisor, dan game code
Bug system call handler 4548
- Xbox 360 memiliki hypervisor real mode dan kernel mode
- Hypervisor real mode adalah mode dengan privilege tertinggi
- OS dan game berjalan di kernel mode
- CPU memiliki cryptography unit di dekat L2 cache yang bertanggung jawab atas memory encryption dan hashing
- Di kernel mode, page hypervisor terlihat dalam keadaan encrypted + hashed, dan jika ditimpa sembarangan console akan halt saat hypervisor diakses
- Di real mode, 32 bit atas dari 64-bit physical address digunakan untuk mengontrol encryption dan hashing
- Dengan menerapkan mask
0x80000000.00000000, memory access yang mengabaikan encryption dan hashing menjadi mungkin - Di tempat-tempat kernel mode dapat memberikan physical address ke hypervisor, 32 bit atas harus selalu di-clear
- Dengan menerapkan mask
- System call handler normal menggunakan instruksi
slwiuntuk menggeser system call ordinal 2 bit ke kiri, lalu membuang 32 bit atas hasilnya sehingga hanya memakai 32-bit offset - System call handler pada kernel 4548 menggunakan
sldialih-alihslwi- Karena
sldibekerja secara 64-bit, 32 bit atas r0 juga ikut tercermin dalam perhitungan table index offset - Ordinal range check hanya diterapkan pada 32 bit bawah r0
- Misalnya,
0x20000000.0000003Fdapat lolos range check sekaligus menghasilkan offset0x80000000.000000FC, sehingga memicu unprotected memory access
- Karena
- Perubahan ini dinilai lebih mungkin merupakan compiler bug daripada modifikasi yang disengaja oleh developer
Konfigurasi exploit Xbox 360
- Menimpa view memori hypervisor terenkripsi dari kernel mode biasanya membuat console halt, tetapi jika system call handler dibuat membaca function pointer dari alamat yang bit proteksi atasnya disetel, ia dapat membaca nilai yang ditimpa tanpa fault
- Tahapan exploit
- Memuat shell code ke memori dan mendapatkan physical address
- Mengubah variable kernel memory manager agar view memori hypervisor terenkripsi terekspos sebagai rentang address yang bisa ditulis
- Menimpa function pointer system call hypervisor dengan alamat sequence instruksi
mtctr r4; bctr - Memasukkan ordinal berbahaya ke r0, dan ke r4 memasukkan nilai physical address shell code yang di-OR dengan mask
0x80000000.00000000 - Menjalankan instruksi system call agar hypervisor membaca function pointer yang telah ditimpa dan melompat ke shell code melalui
mtctr r4; bctr
- Exploit file penyimpanan THAW menggunakan PowerPC ROP chain
- Memodifikasi plugin IDA Ida-Sploiter agar mendukung pencarian gadget PowerPC
- Exploit lengkap terdiri dari 24 gadget ROP
- Alur lengkap THAW Xbox 360
- Menimpa return address dengan gadget ROP pertama melalui gap name buffer overflow
- Melakukan pivot stack pointer ke ROP chain di dalam save buffer
- Mengalokasikan physical memory untuk shell code hypervisor dengan
MmAllocatePhysicalMemoryEx - Menyalin shell code dengan
memcpydan mendapatkan physical address denganMmGetPhysicalAddress - Memetakan view memori hypervisor terenkripsi agar bisa ditulis
- Menimpa alamat function system call dengan sequence
mtctr r4; bctr - Menjalankan
syscalldengan ordinal system call berbahaya dan physical address shell code - Setelah mendapatkan eksekusi code hypervisor, mengubah warna LED dan mem-patch pemeriksaan signature RSA executable
- Kembali ke ROP chain kernel mode, memetakan folder HDD dengan
ObCreateSymbolicLink, lalu menjalankan unsigned secondary payload denganXLaunchNewImage
- Dengan metode ini, eksekusi ROP dapat diperoleh dari bug
strcpyTHAW pada versi OS Xbox 360 mana pun, tetapi full hypervisor code execution hanya dimungkinkan pada kernel 4548- Jika bug hypervisor baru ditemukan, entry point ini dapat digabungkan untuk diterapkan juga pada versi kernel yang lebih baru
Publikasi 2024 dan porting tambahan ke platform lain
- Pada 2024, exploit Tony Hawk dirapikan dan dipublikasikan
- Bug
strcpyyang sama ada pada 5 iterasi seri Tony Hawk serta beberapa platform console dan handheld -
PlayStation 2
- Exploit RCE jaringan THPS4 di-porting ke versi PlayStation 2
- Jika menggunakan PCSX2 atau console lain dan memiliki disc THPS4, console dapat di-hack melalui network
- Exploit mengirim uLaunchElf melalui network dan menjalankannya saat transfer selesai
- Setelah itu, installer FreeMcBoot atau FreeHDBoot dapat dimuat dari media lain seperti USB stick
- Exploit save game PS2 kurang berguna
- Jika ada cara untuk menyalin file ke memory card, FreeMcBoot bisa langsung dipasang
- Memory card FreeMcBoot dapat dibeli di Amazon seharga 15 dolar, atau FreeHDBoot dapat digunakan pada console phat dengan network adapter
-
GameCube
- Exploit save game THPS4 di-porting ke versi GameCube
- RCE jaringan maupun versi exploit save game lainnya tidak di-porting
- Menyalin file ke memory card GameCube tidaklah sederhana, dan memory card berisi pre-hacked save file telah dijual di eBay seharga lebih dari 50 dolar
- Game Tony Hawk versi GameCube tidak memiliki dukungan network, sehingga network exploit tidak dapat digunakan meskipun ada network adapter
- Karena sudah ada beberapa exploit game save dan tidak ada persistent software hack, banyak pengguna memilih modchip
-
Windows
- Exploit game save untuk THUG PRO juga dibuat, dan bug report telah disampaikan 7 tahun lalu, tetapi saat itu tidak ada minat untuk memperbaikinya
- Karena tidak ada nilai yang diberikan exploit di Windows, exploit tersebut tidak dipublikasikan
- Game Tony Hawk untuk PC memiliki bug
strcpyyang sama dan dapat dieksploitasi - Ada juga bug
strcpylain yang dapat dieksploitasi dalam network play - Disarankan untuk memaksa penerapan ASLR dan tidak menjalankannya sebagai Administrator
Materi publik
- Seluruh source code dan patched game save files dipublikasikan di GitHub
- Satu bug
strcpymenghasilkan exploit file penyimpanan, RCE jaringan, dan entry point exploit Xbox 360 berbasis software-only di berbagai platform
1 komentar
Komentar Hacker News
Hal yang lebih menarik dari kunci Habibi adalah modulus kunci publiknya hanya berbeda 4 byte dari kunci publik RSA Microsoft.
Bilangan bulat acak 2048-bit punya kemungkinan yang cukup besar untuk bisa difaktorkan secara trivial; saya tidak tahu probabilitas pastinya, tetapi bisa diperkirakan kira-kira di level 2^-32.
Kemungkinan mereka memakai kode yang mengubah atau menaikkan 4 byte dari modulus publik secara acak, lalu mencoba memfaktorkan selama sekitar 1 milidetik dan berhenti saat berhasil.
Akibatnya, modulus publik kemungkinan besar memiliki banyak faktor kecil. Modulus RSA biasanya adalah hasil kali tepat dua bilangan prima, tetapi selama relatif prima terhadap e, secara matematis semuanya tetap berjalan meski faktornya lebih banyak.
Jika beruntung implementasi RSA-nya memakai cara yang hanya mengharapkan tepat dua faktor prima, karena kita sudah tahu salah satu faktornya adalah 3, cukup bagi kunci publik dengan 3 untuk mendapatkan faktor prima lainnya.
Menurut Wikipedia, struktur kunci publik RSA mensyaratkan N berupa semiprima besar dan e relatif prima terhadap φ(N), dan siapa pun yang memfaktorkan N bisa mendapatkan kunci privat. Dalam konteks peretasan Xbox, jika N dibuat habis dibagi bilangan prima 3, maka bilangan prima lainnya adalah N/3, sehingga faktorisasi bisa dianggap berhasil.
Kode untuk menandatangani dengan kunci Habibi ada di https://github.com/XboxDev/xbedump/blob/b8cd5cd0f8b1cbc4e64f.... Setelah mengubah 4 byte terakhir menjadi 0x89, 0x9c, 0x90, 0x6b, nilainya dibagi 3, lalu kunci privat yang sesuai dibuat dari nilai itu.
Aplikasinya adalah merusak kunci publik dengan rowhammer, lalu menggunakan faktorisasi tersebut untuk membuat kunci privat baru yang sesuai. Ini berjalan pada kunci SSH dan GPG, dengan asumsi tertentu demi kepraktisan, misalnya mengetahui isi halaman yang memuat kunci.
Tingkat keberhasilan empiris berdasarkan waktu komputasi yang tersedia ada di Figure 7, pembahasan analitis ada di bagian 3, dan penjelasan metode aktual ada di bagian 4.4.
https://www.usenix.org/system/files/conference/usenixsecurit...
Misalnya, dengan kode yang mencoba membagi dengan bilangan prima dari 2 sampai 499, lalu berhasil jika nilainya menjadi 1, atau jika tidak menjalankan Miller–Rabin 20 kali, di lingkungan saya hanya butuh sekitar 100 percobaan untuk memfaktorkan sepenuhnya bilangan bulat acak 2048-bit.
Sulit menggambarkan betapa tidak masuk akalnya pencapaian ini.
Menakjubkan bahwa Xbox 360 bisa di-softmod lewat nama taman di game Tony Hawk, bahkan sampai memakai rantai ROP 24 tahap.
Ditambah penghormatan singkat untuk hypervisor, analisis yang ringkas dan praktis, serta botnet x360 yang langsung terpikirkan, semuanya terasa seperti serangan nostalgia Xbox 360 kelas berat.
Bagian “kalau beruntung, itu strcpy” lucu. Seharusnya mungkin strncpy, dan Tony Hawk, yang terkenal mendukung perlengkapan keselamatan, mungkin ingin dikaitkan dengan penyalinan string yang lebih aman.
Jika sumber tidak muat di tujuan, perlu penanganan spesifik aplikasi: apakah boleh dipotong, apakah seluruh operasi harus dibatalkan, atau apakah buffer tujuan harus dialokasikan ulang. strncpy hampir selalu melakukan hal yang salah.
Pada dasarnya strncpy hampir tidak boleh dipakai, dan hanya cocok untuk field berukuran tetap seperti
struct dirent { unsigned short inode; char name[14]; };.Bahkan dalam kasus seperti itu, byte padding sering kali seharusnya berupa spasi, bukan nul, dan strncpy seharusnya tidak pernah masuk ke pustaka standar.
Saat memakai C/C++, ini lebih mudah digunakan daripada fungsi C standar; ia menangani kasus gagal umum seperti buffer terlalu kecil atau integer overflow, dan semua fungsi mengembalikan kode kegagalan sehingga pemeriksaan error juga mudah.
Dalam kasus ini,
StringCchCopyW()atauStringCbCopyW()adalah pilihan yang lebih baik daripada strcpy.Agak disayangkan exploit ini juga berlaku untuk THUG PRO.
Skena kompetitif seri Tony Hawk praktis sudah mati hampir 20 tahun, kecuali pengecualian singkat berupa remake THPS1+2, dan mod ini masih dimainkan hingga sekarang.
Mod itu sendiri juga sudah berusia lebih dari 10 tahun dan para pengembang aslinya tampaknya sudah pergi, jadi itu menjelaskan mengapa tidak ada yang mau memperbaikinya saat Ryan melaporkannya. Namun sekarang mod ini sulit dipakai karena berisiko pengambilalihan hak penuh atas PC.
Semoga tulisan ini sampai ke orang yang bersedia menambal mod tersebut.
Source itu hanya untuk versi konsol, dan asumsi kompilasi ke Windows bukan berarti Xbox Windows, melainkan untuk alat bantu, sehingga banyak bagiannya berjalan sangat berbeda.
Yang tampak seperti ikon header bagian di depan teks “So what's the habibi key?” sebenarnya adalah area HTML details yang bisa diklik untuk dibuka, jadi kalau tertarik sebaiknya ditekan
Yang membuat penasaran: jika benar kunci Habibi dipakai secara eksklusif di kalangan konsol Linux untuk mencegah penggunaan konten bajakan, lalu kunci privat pasangannya dipublikasikan atau bocor dari mana, kapan, dan bagaimana?
Penulis menambal perbedaan 4 byte antara kunci Microsoft dan kunci Habibi untuk menjalankan berkas eksekusi yang “tidak ditandatangani”—yang sebenarnya ditandatangani dengan kunci privat Habibi—jadi tampaknya jelas ia berhasil mendapatkan kunci privatnya
Kunci privat bisa dipulihkan secara trivial dari kunci publik, jadi tidak ada yang khusus untuk dipublikasikan atau dibocorkan
Pada dasarnya ini adalah CTF kriptografi kecil yang tertanam di dalam hack file simpanan 007: Agent Under Fire yang asli, dan hack file simpanan itu sendiri juga lebih mirip CTF yang cukup diobfuskasi. Sepertinya ada dua niat sekaligus: mengerjai pengguna bajakan dan menantang para reverse engineer lain
Benar-benar keren. Saya sudah sedikit melakukan dekompilasi PSX, dan di sana juga banyak hal serupa
Menariknya, hal seperti
memmoveditautkan sebagai library SDK[0], tetapistrcpyadalah fungsi yang disediakan BIOSPada versi SDK berikutnya, ini bisa ditambal ke versi library, tetapi hingga 1997 pun belum dibuat begitu
0 - https://github.com/Xeeynamo/sotn-decomp/blob/master/src/main...
Sekarang game N64 mulai di-port ke PC melalui decompiler, jadi rasanya jadi berharap
Mungkin ada yang bereaksi, “game-game ini kan sudah punya versi PC,” tetapi jika game N64 dikompilasi ulang dan efeknya diganti dari shader menjadi tekstur murni atau efek yang lebih sederhana, game itu bisa berjalan nyaris di mana saja, bahkan di perangkat lambat seperti netbook murah tahun 2009
Ada juga contoh port Super Mario 64 ke API 3DFX. Game yang mengakses framebuffer N64 secara rumit mungkin membutuhkan OpenGL 3.3 untuk meniru microcode-nya, tetapi jika engine-nya berjalan sangat cepat pada perangkat setelah Pentium III, tidak sulit menjalankan sisanya dengan akselerasi GL 2.1 dan hanya meniru sebagian kecilnya lewat software
Saya sudah banyak membaca analisis exploit semacam ini dalam berbagai bentuk, dan rasanya akan lebih senang lagi kalau bisa membaca 100 lagi ke depannya
Ini tampak seperti contoh bagus tentang pola pikir keamanan yang keliru dalam pengembangan konsol
Pemikiran bahwa “data simpanan hanya bisa kita pakai, jadi kita cukup mem-parse apa yang kita tulis” umum di dunia konsol, tetapi secara mendasar salah karena orang bisa menyiapkan data simpanan buatan sendiri
Terlepas dari itu, konsol memang tidak seharusnya memperlakukan pengguna sebagai musuh, tetapi jika tetap begitu, game juga harus punya pola pikir keamanan yang sesuai dengan posisi itu
Saya tidak tahu bagaimana kecurangan game online bisa dicegah jika tidak membatasi hal-hal yang dapat dilakukan pengguna
Untuk membela Tony Hawk, ia adalah skater profesional, bukan analis keamanan
Waktu terbatas yang ia habiskan di depan keyboard pada akhir 90-an dan awal 2000-an kemungkinan bukan untuk mengaudit buffer overrun, melainkan untuk membuat 900 McTwist terasa alami di game yang kelak menjadi seri ikonik
Saya jadi punya kesempatan memeriksa legenda yang saya dengar saat kecil. Apakah Tony Hawk orang yang pertama berhasil melakukan 720?
Mungkin maksudnya “yang pertama tercatat,” tetapi kalau ada orang yang sudah melakukannya sebelumnya, kemungkinan besar ia akan membicarakannya ke mana-mana, dan orang yang mampu melakukannya toh kemungkinan besar adalah skater profesional