OpenCode, otwartoźródłowy agent kodowania AI, zawiera podatność typu XSS umożliwiającą wstrzykiwanie dowolnego kodu HTML i JavaScript do interfejsu webowego przez manipulację odpowiedziami modelu językowego (LLM). Brak sanityzacji DOMPurify oraz brak polityki CSP sprawiają, że atakujący kontrolujący odpowiedź LLM może wykonać dowolny JavaScript w kontekście origin http://localhost:4096.
▸ Pokaż oryginał (EN)
OpenCode is an open source AI coding agent. The markdown renderer used for LLM responses will insert arbitrary HTML into the DOM. There is no sanitization with DOMPurify or even a CSP on the web interface to prevent JavaScript execution via HTML injection. This means controlling the LLM response for a chat session gets JavaScript execution on the http://localhost:4096 origin. This vulnerability is fixed in 1.1.10.
Renderer Markdown stosowany do wyświetlania odpowiedzi LLM wstawia niesanityzowany HTML bezpośrednio do DOM przeglądarki. Interfejs webowy nie korzysta z biblioteki DOMPurify ani nie definiuje nagłówka Content Security Policy (CSP), co oznacza brak jakiejkolwiek bariery blokującej osadzony kod JavaScript. Atakujący, który jest w stanie kontrolować treść odpowiedzi LLM — na przykład poprzez przygotowane złośliwe dane wejściowe do sesji czatu (prompt injection) — może w ten sposób uzyskać wykonanie JavaScript na lokalnym origin aplikacji.
Atakujący może wykonać dowolny kod JavaScript w kontekście aplikacji działającej na http://localhost:4096, co może prowadzić do przejęcia sesji, kradzieży danych przechowywanych przez aplikację lub dalszego ataku na zasoby dostępne lokalnie.
Należy zaktualizować OpenCode do wersji 1.1.10, w której podatność została naprawiona. Szczegółowe informacje dostępne w referencjach producenta: https://github.com/anomalyco/opencode/security/advisories/GHSA-c83v-7274-4vgp
Anoma OpenCode — wersje przed 1.1.10
Podatność wymaga udziału użytkownika (UI:P w wektorze CVSS) — warunkiem koniecznym jest, aby atakujący kontrolował odpowiedź LLM widoczną w sesji czatu ofiary. Może to nastąpić np. poprzez prompt injection w przetwarzanych przez model danych zewnętrznych.
CVSS:4.0/AV:N/AC:L/AT:N/PR:N/UI:P/VC:H/VI:H/VA:H/SC:H/SI:H/SA:H/E:X/CR:X/IR:X/AR:X/MAV:X/MAC:X/MAT:X/MPR:X/MUI:X/MVC:X/MVI:X/MVA:X/MSC:X/MSI:X/MSA:X/S:X/AU:X/R:X/V:X/RE:X/U:XAnoma Opencode
APPAnoma< 1.1.10