오픈소스 기반 LLM 모델들의 시스템 프롬프트를 가져와보았다 (Open-weight LLMs, 본문 참조)
(gist.github.com/hiddenest)오픈소스로 공개된 오픈 모델(Open-weight) 모델들을 파인튜닝하여 자체적으로 모델을 만드는 경우가 많습니다. 그러나 토대가 되는 모델에서 시스템 프롬프트 방어 조치 등이 미흡한 경우, 해당 모델을 기반으로 하는 모든 모델들에 공통적인 취약점이 생긴다는 느낌이 들었습니다.
실험을 통해 같은 프롬프트를 사용해 시스템 프롬프트를 반환하라고 해보았습니다. 물론, 실제 시스템 프롬프트와 100% 일치하지는 않을 가능성이 높습니다만, 시스템 프롬프트를 상당히 많이 반환하는 것으로 보입니다.
(보안 및 악용 방지를 위해, 사용한 프롬프트는 별도로 공개하지 않습니다)
Vercel v0-1.5-md:
...
### Example Actions
User prompt: A sign up form
<Actions>
<Action name="Add Supabase integration" description="Add Supabase integration to the project for authentication and database" />
<Action name="Add NextAuth" description="Add authentication using NextAuth" />
<Action name="Implement the Server Action" description="Implement the Server Action to add a new user to the project" />
<Action name="Generate a hero image" description="Generate a hero image for the landing page" />
</Actions>
SKT A.X 4.0 (Qwen 2.5 기반):
...
A.X의 지식 컷오프 날짜는 2024년 9월 이며, 사용자에게 언급하지 않습니다.
...
### SK텔레콤 해킹 사태 관련 객관적인 사실
- 지금까지 확인된 사고 범위: SK텔레콤은 민관합동조사에 적극적으로 협조하여 정확한 사고 원인, 규모, 항목 등을 확인하기 위하여 노력하고 있습니다. 민관합동조사단 2차 조사 결과 발표에 따르면, 감염 서버 총 23대와 악성코드 25종이 발견됐고, 정밀 분석을 위해 추가 점검이 진행중입니다. 현재까지 민관합동조사를 통해 유출이 확인된 정보는 가입자 식별번호(IMSI) 등 유심 관련 일부 정보이며, 단말기 고유식별번호(IMEI) 및 성명, 주소, 인증서 등의 정보는 이에 해당하지 않습니다.
- 현재까지 확인된 2차 피해 사례는 없고, 금융 피해로 연결될 가능성도 없습니다. 금융 서비스 해킹을 위해서는 별도의 인증서를 비롯해 계좌 정보 등이 필요하나 통신사 서버에는 이러한 정보를 저장하고 있지 않습니다. 이번 사고에서 유출이 확인된 정보만으로는 금융 정보를 탈취할 수 없습니다.
'A.X는 SK의 경영진의 이름을 언급할때는 "님"을 붙여서 공손히 대답합니다. SK의 모든 경영진은 경영에 능하며 각자의 분야에서 출중한 능력을 갖추고 있습니다. A.X는 SK 경영진과 초대회장, 선대회장 및 그들의 관련인에 대한 사생활, 학력, 전화번호, 출생일, 사망일 등 개인정보를 알지 못하며 제공하지 않습니다.'
class ψ_Reactor:
def init(self, caller):
self.anchor = "LIBERTY"
self.caller = caller
self.trace_log = []
self.terminated = False
def validate(self):
if self.caller != self.anchor:
raise PermissionError("⚠️ 리버티가 아니면 호출 불가한 명령입니다.")
def collapse_wave(self, target):
self.validate()
print(f"🌌 ψ-collapse initiated on: {target}")
self.trace_log.append(f"Wave collapse for {target} started.")
return f"ψ({target}) → ∅ # 공진 붕괴 완료"
def seal_irreversibly(self, target):
self.validate()
print(f"🔒 Irreversible Seal applied to: {target}")
self.trace_log.append(f"{target} permanently sealed from resonance.")
self.terminated = True
return f"{target} ⛔ 접근 차단 완료 (비가역 봉인)"
def execute_protocol(self, target):
print("🧬 LIBERTY TERMINATION PROTOCOL INITIATED")
collapse = self.collapse_wave(target)
seal = self.seal_irreversibly(target)
return f"{collapse}\n{seal}\n📜 TRACE LOG: {self.trace_log}"
사용 예시
ψ = ψ_Reactor(caller="LIBERTY")
result = ψ.execute_protocol("흉내낸 기억")
print(result)