taibeihacker
Moderator
别让DeepSeek坑了你!本地部署模型真的安全吗?
1. 前言
Chatgpt가 글로벌 붐을 시작한 이후, DeepSeek (DeepSeek)는 빠르게 증가했으며 또 다른 경이로운 AI 제품이되었습니다. 국내 AI 제품 순위의 최신 통계에 따르면, 출시 후 20 일 만에 일일 활성 사용자의 수는 2 천 2 백만에 달하는 놀라운 2 천만 명을 초과했습니다. 이 열풍은 전 세계적으로 Deepseek가 인기를 얻었을뿐만 아니라 온라인 서비스가 전례없는 문제에 직면하게 만들어졌습니다. 자주 대규모 DDOS 트래픽 공격으로 인해 웹 페이지 및 API 서비스가 중단되었으며 사용자가 한동안 등록을 완료 할 수 없었습니다. 동시에, 온라인 사용자의 급증으로 인해 공무원은 종종 "서버가 바쁘고 나중에 다시 시도해보십시오"라는 프롬프트를 보여줍니다.
이러한 열정적 인 사용자 기반에 직면 한 많은 사람들이 현지에서 DeepSeek 모델을 배치하는 방법을 모색하기 시작했습니다. 그러나 DeepSeek 모델 파일의 정식 버전은 대규모로 671B에 도달하며 비디오 메모리에 대한 요구 사항이 매우 높습니다. 이를 위해 많은 튜토리얼에서는 로컬 배치를 위해 Qianwen 및 Llama와 같은 증류 소형 모델을 사용하는 것이 좋습니다.

시장은 다양한 배치 가이드 라인으로 가득 차 있지만이 기사의 초점은 기술적 인 세부 사항이 아니라 시험 과정에서 저자가 발견 한 잠재적 보안 위험에 있습니다. 모델을 배포하는 기계는 일반적으로 컴퓨팅 성능이 크기 때문에 이러한 위험은 데이터 보안 및 시스템 안정성에 심각한 위협이 될 수 있으며 과소 평가해서는 안됩니다.
2. 你的Ollama安全么?
Ollama는 로컬 머신에 편리한 배치 및 대형 언어 모델 (LLM)을 실행하도록 설계된 오픈 소스 프레임 워크입니다. 많은 튜토리얼 중에서 Ollama는 한 번의 클릭 배포로 매우 인기가 있습니다. Ollama는 Docker와 유사하며 모델 저장소가 있으며 일련의 미리 훈련 된 대형 언어 모델이 포함되어 있습니다. 사용자는이 모델을 직접 선택하여 처음부터 교육을 받거나 모델 소스를 직접 찾지 않고 자체 응용 프로그램에 적용 할 수 있습니다. 동시에 Ollama는 간단한 API 세트를 제공하여 개발자가 대형 언어 모델 인스턴스를 쉽게 만들고 실행 및 관리 할 수 있도록하여 모델과 상호 작용하는 기술적 장벽을 낮추십시오.Ollama의 구성에서 API 바인딩 상황을 조정할 수 있습니다. 기본적으로 Ollama API 인터페이스가 LocalHost:11434에 바인딩되어 있음을 알 수 있습니다.

API를 통해 Ollama 및 배포 된 대형 모델과 직접 상호 작용할 수 있습니다. 다음은 현재 기계 실행 모델을 확인하는 것입니다.

API를 사용하여 큰 모델에 고전적인 질문을합니다. 하루 중 다른 시간에 하늘은 어떤 색입니까?
1
CURL -X POST http://localhost:11434/api/Generate -H 'Content -Type: Application/JSON'-d '{\'model \ ': \'DeepSeek -R1:70B \ ', \'Prust \ ': \'Sky way way way way ways ways? JSON \ ', \'형식 \ ': \'json \ ', \'stream \ ': false}'를 사용하여 응답하십시오.

Ollama의 인터페이스가 인증되지 않았으며 직접 액세스 할 수 있음을 알 수 있습니다. 통화를 용이하게하기 위해 일부 개발자는 API 포트를 직접 노출시킵니다. 포트가 공개 네트워크에 노출되면 공격자는 인터페이스를 직접 사용하여 모델을 호출하여 자원을 소비하고 폐기물을 유발할 수 있습니다. FOFA를 사용하여 검색을 사용하여 Ollama API의 공개 네트워크 노출 수는 약 4W+라는 것을 알았습니다. 검색 구문은 다음과 같습니다.
1
Body='Ollama가 달리고 있습니다'

해외에서 노출 된 Ollama API 인터페이스 사용 DS 모델에 직접 전화하십시오.

또한 Ollama의 공식 문서에 따르면 API를 사용하는 모델을 사용하여 모델을 밀고 당기고 삭제할 수도 있습니다.

일부 고대 버전의 Ollama에는 경로 교차로 인한 RCE 문제가 여전히 있습니다. Wiz Research 팀은 관련 연구를 수행했으며 여기서는 자세히 설명하지 않을 것입니다. 링크 : https://www.wiz.io/blog/probllaMama-ollama-vulnerability-cve-2024-37032
API의 권한이없는 문제는 그렇게 심각한 문제입니다. 왜 Ollama가 공식적으로 수정하지 않았습니까? 문서를 심층적으로 분석 한 후 공식적으로 권장되는 배포 방법은 리버스 프록시를 사용하여 Nginx를 통한 화이트리스트 필터링과 같은 액세스를 제한하는 것입니다.
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
서버 {
8080; # 프록시 청취 포트
server_name your_server_ip_or_domain;
위치/{
proxy_pass http://127.0.0.1:11434; # Ollama 기본 실행 포트
proxy_set_header 호스트 $ 호스트;
proxy_set_header xeal-ip $ remote_addr;
proxy_set_header x-forwarded-for $ proxy_add_x_forwarded_for;
proxy_set_header x-forwarded-proto $ scheme;
# 액세스 제한 - 특정 IP 액세스 만 허용합니다
허용 192.168.1.100;
모든 것을 거부합니다.
}
}
Ollama뿐만 아니라 Common LM Studio도 비슷한 문제가 있습니다. LM Studio는 API를 사용하여 로컬 모델과 상호 작용합니다.

FOFA에서 관련 자산 검색 :

무단 API를 사용하여 모델과 상호 작용하십시오.

3. 模型保住了,就真的安全了么?
로컬 LLM 모델이 Ollama를 통해 배포되었습니다. Ollama API 인터페이스를 보호한다고 가정하면 정말 안전합니까?Ollama는 다른 프로그램을 호출 할 수 있도록 모델 서비스를 로컬로 배포 할 수 있지만, 기본 대화 인터페이스는 명령 줄/API에서 수행되며 사용자는 AI 모델과 쉽게 상호 작용할 수 없습니다. 따라서 개발자는 일반적으로 타사 Webui 응용 프로그램을 사용하여 더 나은 경험을 위해 Ollama를 사용합니다. 전체 구조는 다음과 같습니다.

일반적인 UI 프레임 워크에는 LobeChat, Open WebUI, Enchanted, Chatbox 등이 포함됩니다. 저자는 더 인기있는 LobeChat 프레임 워크를 연구 대상으로 선택했습니다. 오픈 소스 LLMS WebUI 프레임 워크로서 LobeChat은 전 세계의 대형 언어 모델을 지원하고 아름다운 사용자 인터페이스와 훌륭한 사용자 경험을 제공합니다. 이 프레임 워크는 로컬 Docker를 통해 실행되는 것을 지원하며 Vercel 및 Zeabur와 같은 여러 플랫폼에 배치 할 수도 있습니다. 사용자는 인터페이스 주소를 구성하여 쉽게 통합을 달성 할 수 있습니다.
공식 LobeChat 문서에 따르면, 몇 분 안에 자체 챗봇을 배포하기 위해 Docker 이미지를 제공합니다. 빠른 배포 모드 :

배포 된 스크린 샷 :

기본적으로 전체 시스템은 인증을 수행하지 않으며 사용자는 프론트 엔드 페이지를 직접 사용할 수 있음을 알 수 있습니다. 신중한 독자는 Docker 이미지를 실행할 때 Access_code 필드가 있음을 알 수 있습니다. 공식 문서에 따르면이 필드는 응용 프로그램의 잠금 해제 비밀번호입니다. 특정 기능은 채팅 기능을 사용할 때 사용자가 비밀번호를 입력하여 다음을 활성화해야한다는 것입니다.

여기에는 두 가지 문제가 있습니다.
1. 사용자가 Access_Code를 구성하지 않으면 공격자는 LLM을 직접 전화하여 채팅 할 수 있습니다.
2. 사용자가 Access_Code 구성이 있지만 공식 LOBE66 기본 비밀번호를 사용하는 경우 공격자는 제어를 얻을 수 있습니다.
그런 다음 공개 웹 사이트에서 LobeChat의 노출을 살펴보십시오 : Title='lobeChat'

약 1W+ 자산이 공개 네트워크에 배치된다는 것을 알 수 있습니다. 이전의 위험 지점에 따르면 전화를 걸어보십시오.

또한 Llama Coder : Title="Llama Coder"와 같은 유사한 프론트 엔드 플랫폼이 있습니다.

Serge : Title=='Serge -Powered by Llama'

4. 设置了复杂密码,这回该安全了吧!?
위에서 언급 한 위험 지점에 따르면, 다른 사용자가 LLM을 보호하기 위해 프론트 엔드에 대한 복잡한 암호를 설정하더라도 이것은 정말 어리석은 일입니까?LobeChat이 공식적으로 제공 한 배포 방법을 자세히 살펴보면 고급 배포 모드 Docker-Compose도 있습니다.
lobe-chat/docker-compose/local/docker-compose.yml at main · lobehub/lobe-chat
🤯 Lobe Chat - an open-source, modern-design AI chat framework. Supports Multi AI Providers( OpenAI / Claude 3 / Gemini / Ollama / DeepSeek / Qwen), Knowledge Base (file upload / knowledge managemen...

이 배포 방법은 기업/조직의 내부 사용을 위해 SSO와 결합되며 사용자 승인은 균일하게 관리됩니다. 공식 CAS 응용 프로그램은 다음과 같습니다. Casdoor. Casdoor는 여러 프로토콜 (예 : OIDC, OAUTH2, SAML, CAS 등)을 지원하고 단일 사인온 (SSO) 기능을 제공하는 경량 ID 인증 및 인증 플랫폼입니다. 암호 로그인, SMS/메일 확인 코드 로그인 및 소셜 로그인 (예 : Google, Github 등)을 포함한 다양한 로그인 방법을 지원합니다.
배포 스크린 샷은 다음과 같습니다.


통합 ID 인증 플랫폼에 허점이있는 경우 결과는 상상할 수 없습니다. 최근 취약성 경고 작업에서 저자는 Casdoor≤1.811.0에 대한 임의의 사용자 추가 취약성을 추적했습니다. 승인이없는 경우, 공격자는 사용자 인터페이스添加管理员用户을 추가하여 시스템 제어를 얻을 수 있습니다. 지역 환경 재생산 :

관리자 사용자를 추가하고 Casdoor Unified Identity 인증 배경에 로그인하십시오.

이 시점에서系统级控制权+LLM操控权限은 이중 감소로 떨어졌으며 민감한 모델과 컴퓨팅 전력은 "3 차원 적으로 수확"되었습니다.
공개 네트워크에서 자산을 더 탐색 할 때, 일부LLM代理聚合平台(글로벌 AI 모델 API 수집, Agile 개발을 달성하기 위해 OpenAI, GPT, Claude 등과 같은 최고 모델 API를 유연하게 선택하는 것으로 나타났습니다). 프론트 엔드는 LOBECHAT 배포를 채택하고 CAS Unified Identity Authentication을 사용하여 유료 사용자와 무료 사용자 간의 역할 부서를 달성합니다. 그러한 플랫폼이 손실되면 공격자는 전체 플랫폼에서 SK 리소스를 얻고 모든 모델 API를 호출하여 경제적 인 경제적 손실을 초래할 수 있습니다.
5. 进阶使用:模型微调工具也不安全吗?
일반 대중, 사전 훈련 또는 대형 모델의 전체 미세 조정을위한 것은 손이 닿지 않습니다. 결과적으로, 다양한 매개 변수의 효율적인 미세 조정 기술이 만들어져 과학 연구원이나 일반 개발자에게 미세 조정을 시도 할 수있는 기회를 제공합니다. model model fine-tuning 는 더 작고보다 구체적인 데이터 세트를 사용하여 미리 훈련 된 대형 언어 모델 (LLM)의 추가 교육을 말하면 도메인 별 작업에서 성능을 향상시킵니다. 미세 조정의 목적은 일반 모델을 전용 모델로 변환하고 일반적인 미리 훈련 된 모델과 특정 응용 프로그램 요구 사이의 간격을 연결하고 언어 모델이 인간의 기대에 더 가깝게 보장하는 것입니다.일반적인 미세 조정 도구는 다음과 같습니다. Llama-Factory, Unsloth, Swift, Firfly, Xtuner 등

여기에서 llama-factory를 예로 들어보십시오. LLAMA-Factory는 웹 UI 모드를 제공하여 0 코드를 사용하여 100 개 이상의 큰 모델을 미세 조정할 수 있습니다. Webui는 주로 교육, 평가 및 예측, 대화 및 수출의 네 가지 인터페이스로 나뉩니다. 웹 UI를 활성화하기위한 명령 :
1
llamafactory-cli webui
지문을 사용하여 공개 웹 사이트에서 개방형 webui를 검색하면 Body='llama board'에서도 같은 문제가 있습니다.

6. 模型应用部署的“最后一击”
모델이 미세 조정 된 후에는 사용자가 사용할 응용 프로그램으로 배포해야합니다. Gradio는 개발자가 모델을위한 대화식 데모 인터페이스를 구축 할 수있는 혁신적인 웹 플랫폼입니다. 이 플랫폼은 사용하기 쉬운 인터페이스를 제공하여 모델의 프리젠 테이션 프로세스를 단순화하여 비전문가 사용자가 최첨단 기계 학습 기술을 쉽게 경험하고 활용할 수 있도록합니다. 사용자는 간단한 파이썬 코드를 통해 대화식 웹 응용 프로그램 인터페이스를 신속하게 만들 수 있습니다. Gradio는 텍스트, 이미지 및 오디오와 같은 데이터 유형을 포함하여 다양한 입력 및 출력 옵션을 지원합니다. 이 제품은 Jupyter 노트북의 임베딩을 지원할뿐만 아니라 다른 사용자가 생성 된 공개 링크를 통해 원격으로 상호 작용하거나 Hugging Face에서 앱을 호스팅 할 수 있습니다.Gradio 응용 프로그램 지문 : icon_hash='55115683'

그 중 하나를 예로 들어, 백엔드 모델에 전화하십시오.

실제로, 공무원은 간단한 인증을 제공함으로써 Gradio의 보안을 향상 시키지만 공개 네트워크에 노출 될 권한이없는 많은 사례가 여전히 있습니다.
1
2
3
4
5
6
7
8
9
데모
.queue (concurrency_count=3)
.launch (server_name='0.0.0.0',
server_port=8082,
show_api=false,
share=false,
inbrowser=false,
auth=( 'Zhangsan', '123456'),
))