Yamaha sĂŒnthaizeris avastatud peidetud kĂ€surea liides, mis vĂ”imaldas koodi tĂ€itmist MIDI kaudu

Anna Antonenko, kes tegeleb sisseehitatud sĂŒsteemide arendamisega ja arendab vabajal BOSS-i (BEAM-pĂ”hine opsĂŒsteem, millel on turvalisus), avaldas tulemused Yamaha PSR-E433 muusikalisĂŒntesaatori tagasijĂ€lgimisest. Tehtud töö kĂ€igus avastati sĂŒnthaizerist obfuskeeritud shell-liides, mis vĂ”imaldas kĂ€ivitada oma koodi pĂŒsivara tasemel. JuurdepÀÀs shell-liidesele toimub MIDI-pakettide saatmise kaudu SysEx sĂ”numitega, mida saab edastada sĂŒnthaizeri USB-porti ĂŒhendamisel. TagasijĂ€lgimise kĂ€igus saadud teave mikroskeemi ja pĂŒsivara kohta, samuti koodinĂ€idised ja silumistooted on saadaval GitHubis.

TagasitĂ”mbamise huvi tekkis paar aastat tagasi, kui Anna otsustas sĂŒntesaatori sisemust tolmust puhastada ja rahuldada oma uudishimu, uurides seadme sisu. Plaadil oli YAMAHA SWL01U kiip, mille kohta ei leidunud internetis pĂ”hjalikku teavet. MĂ”ni kuu tagasi leidis Anna sarnase sĂŒntesaatori mudeli juhendi, milles oli selle kiibi pinout. Anna koosseisu lahti vĂ”tnud ja katsetama asunud, kasutas ta plaadilt leiduvaid JTAG ja UART debugimise liidese vĂ€ljundeid.

Yamaha sĂŒnthaizeris avastatud peidetud kĂ€surea liides, mis vĂ”imaldas koodi tĂ€itmist MIDI kaudu

OpenOCD hÀÀlestaja abil, ĂŒhendudes JTAG-ga ja katsetades, selgus, et plaadil on ARM7TDMI protsessorituuma kiip. Uurides mĂ€lumooduli jaotust hÀÀlestajas, Ă”nnestus laadida vĂ€lja BIOS-i ja Flash-mĂ€lu sisu. PĂ€rast seda analĂŒĂŒsiti BIOS-i pilte Ghidra tagasitĂ”mbamise pakendis.

Vaadat unustamise kĂ€igus nĂ€htud tarkvarastringide andmetest leiti hulk ridu ("help", "info", "ver", "logout" jne), mis meenutavad kĂ€surealiidese kĂ€sklusi. Nende ridade nĂ€idikute uurimine vĂ”imaldas leida koodi, mis kutsub ĂŒles funktsioone kĂ€su töötlemiseks, meenutades sisselogimisliidest ja kĂ€surealiidest. Samuti tuvastati, et shelli aktiveerimiseks on ette nĂ€htud kĂ€sk "login", millele tuleb anda parool "#0000". void shell_run_command(char* command_input) { if (shell_login_state == 0) { if (shell_compare_command(command_input, "login") == 0) { shell_ask_passwd(); // prindib "passwd? " shell_login_state = 1; } } else if (shell_login_state == 1) { if (shell_compare_command(command_input, "#0000") == 0) { shell_login_ok(); // prindib "login OK" shell_login_state = 2; } else { shell_print("Passwd Error\r"); shell_login_state = 0; } } else { // tĂ€ida kĂ€sk } }

Edasi uurides tarkvara, selgus, et kĂ€sud töödeldakse pakettidena, mis algavad alati samade 8 baitiga andmetega ja lĂ”pevad koodiga 0xf7. Kuna vĂ€lised suhted sĂŒnteesijaiga toimuvad ainult lĂ€bi MIDI ning MIDI spetsifikatsioonis on ette nĂ€htud spetsiaalne teenindustĂŒĂŒp avaldusi SysEx, siis oletati, et just seda kasutatakse kĂ€skude edastamiseks. Eeldust toetas ka see, et SysEx sĂ”numid ja shell'i kĂ€ideldud paketid algasid koodiga 0xf0, millele jĂ€rgnes tootja identifikaator 0x43 (Yamaha).

HĂŒpoteesi kontrollimiseks valmis Python-skript, mis tĂ”lkis sisestatud andmed MIDI protokolli paketiteks. Ja meetod töötas: login passwd? #0000 login OK > help logout help ? info ver stack perf-on perf-off perf-disp d dp d xxxxx d/s xxxxx m ADDRESS DATA m/b ADDRESS DATA m/w ADDRESS DATA m/l ADDRESS DATA > info DevelopName PSR-E433 DevelopNumber #3341 Main DevelopNumber #3341 Make data & time MAY 16 2012 19:00:57 J/E Select English >

Vihikus, mis kuvatakse kÀsu "help" saatmise ajal, olid muu hulgas kÀsud, mis vÔimaldasid muuta mÀlu sisu. Nende kÀskude abil oli vÔimalik laadida juhuslikku koodi mÀllu ja edastada sellele juhtimist, asendades funktsiooni tagasituleku pointeri, mida kasutatakse kÀsu töötlemise lÔpus. Eksperimendina paigutati kasutamata mÀlu piirkonda lihtne assembleril kirjutatud rakendus, mis kuvab 8-kohalist "HeloWrld" stringi LCD-indikaatoris. Programm oli vormistatud tavaliseks MIDI-failiks, mille edastamine seadmele oli piisav.

Yamaha sĂŒnthaizeris avastatud peidetud kĂ€surea liides, mis vĂ”imaldas koodi tĂ€itmist MIDI kaudu

SeejĂ€rel hakati uurima graafika kuvamise iseĂ€rasusi LCD-ekraanil, mille tipphetkeks oli koodi ettevalmistamine, mis kuvab juhuslikku pikslisisu tĂ€hestikulises piirkonnas, sĂŒnkroonselt Bad Apple video esitamisega vĂ€lisseadmel (demonstreeriva videoga).

Yamaha sĂŒnthaizeris avastatud peidetud kĂ€surea liides, mis vĂ”imaldas koodi tĂ€itmist MIDI kaudu
Vaata videot


Allikas: opennet.ru
Osta usaldusvÀÀrne veebihosting DDoS kaitsega, VPS VDS serverid đŸ”„ Osta usaldusvÀÀrne veebihosting DDoS kaitsega, VPS VDS serverid | ProHoster