Vägen in är volymkontrollen
En kritisk sårbarhet i Unitrees fyrbenta robot Go2 publicerades den 24 oktober i USA:s nationella sårbarhetsdatabas. Bristen sitter inte i robotens rörelsestyrning, inte i dess kameror och inte i dess nätverksstack. Den sitter i set_volume, en funktion i en fil som heter gpt_thread.py, inuti den komponent Unitree kallar chat_go — robotens samtalsassistent.
Enligt posten i NVD leder manipulation av funktionens argument Value till “os command injection”. Svagheten klassas som CWE-78, bristfällig neutralisering av specialtecken i ett operativsystemskommando: volymsiffran når någonstans där den behandlas som ett skalkommando i stället för som ett tal.
Posten anger att angreppet “kan utföras på distans”.
Poängen
Bristen bär tre allvarlighetsbetyg, alla på eller nära toppen av sina skalor. Enligt CVSS 3.1 sätts den till 9,6, kritisk, med vektorn AV:N/AC:L/PR:N/UI:R/S:C/C:H/I:H/A:H. Enligt nyare CVSS 4.0 sätts den till 9,4, också kritisk. Enligt sedan länge ersatta CVSS 2.0 är den en jämn 10,0.

Två delar av 3.1-vektorn bär det mesta av tyngden. PR:N betyder att inga behörigheter krävs. S:C betyder att omfånget ändras — den utnyttjade komponenten och den drabbade komponenten är inte desamma, vilket på en robot innebär att chattprocessen inte är där skadan stannar. Det enda förmildrande är UI:R: användarinteraktion krävs, vilket CVSS 4.0 registrerar som UI:P, passiv interaktion.
Versioner och rättningen
NVD-posten täcker Unitree Go2-firmware “upp till 1.1.11.4”. Version 1.1.11.5 löser problemet, och posten säger det rakt ut: “Att uppgradera till version 1.1.11.5 är tillräckligt för att lösa problemet. Du bör uppgradera den berörda komponenten.”
Det hänvisade firmwarepaketet är namngivet efter Go2-varianterna Edu, Max, Pro och X, och levereras från ett objektlager hos Alibaba Cloud.
Tillverkaren bekräftade, med ärendenummer
Ovanligt för en databaspost citerar NVD-beskrivningen tillverkaren direkt. “Tillverkaren bekräftade tidigt”, står det, innan citatet: “Inlämning 990502 motsvarar vårt interna ärende #474 (Go2 chat_go set_volume OS-kommandoinjektion, CWE-78).”
Det är en tillverkare som namnger sitt eget interna ärende, komponenten, funktionen och svaghetsklassen i en enda mening. Det är ett mer fullständigt erkännande än de flesta hårdvarutillverkare ger, och det undanröjer all tvekan om huruvida fyndet bestreds. Den samordnande posten förs av VulDB som post 426093, under inlämning 990502.

Varför den här typen av brist återkommer
Go2 säljs i utbildnings- och forskningskonfigurationer, vilket är hur en fyrbent forskningsrobot hamnar på universitetsnät och i företagslabb i stället för bakom en industriell brandvägg. Chattfunktionen är den del som sannolikast är exponerad, eftersom poängen med den är att vara nåbar.
Det underliggande mönstret är äldre än roboten. Ett gränssnitt i naturligt språk måste omvandla det som sägs till parametrar för systemet under, och varje parameter som når ett skal utan att neutraliseras är en kommandoinjektion som väntar på att hittas. En volyminställning är ungefär så harmlös en parameter kan verka, vilket förmodligen är skälet till att den inte behandlades som farlig indata.
Vad som är värt att följa
Det finns inga offentliga belägg i posten för att bristen har utnyttjats, och rättningen är en firmwareuppdatering som redan finns. Frågan är hur många driftsatta Go2-enheter som tar den. Robotar i undervisningslabb uppdateras enligt ett schema som sätts av den som driver labbet, inte av en flottförvaltare, och en robot som fungerar är en robot ingen vill koppla ner.
Värt att följa är också om andra tillverkares assistentintegrationer granskas lika hårt. chat_go är ett tunt samtalslager fastskruvat på en maskin som rör sig, och samma arkitektur sitter nu i väldigt många apparater.