Hacker News 의견
  • 처음엔 혼란스러웠음, 기사에 프롬프트 인젝션이 실제로 어떻게 이루어졌는지 설명이 잘 안 나와 있었음… 이미지의 헥스 데이터를 조작해 ASCII로 변환한다거나 하는 부작용인가 했음
    그러다가 깨달음, 글자 그대로 <i>이미지에 렌더링된 텍스트를 숨기는 방식</i>이었음
    와 정말 신기함

    • 이 공격 방식은 꽤 오래전부터 논의되어 왔음 이 논문을 참고할 수 있음
      소름 돋는 부분은, 이미지를 스케일링 했을 때 완전히 다른 이미지로 보이게 만들 수 있다는 점임
      예를 들어, 어떤 집단을 불법 이미지를 소지했다며 체포하려고 한다면, 이런 스케일링 트릭을 이용해 이미지를 밈이나 정치적 메시지, 타겟 집단이 다운받고 싶어 할 무언가로 변형할 수 있음

    • VLM 시스템을 만드는 입장으로서, 이 부분은 정말 두려운 일임
      이제는 VLM만을 위한 OWASP 가이드라인이 필요한 시점임
      거의 매달 새로운 공격 기법 소식을 듣고 있음
      참고로 OWASP에서 최근에 이런 자료를 냈음: Multi-Agentic System Threat Modeling Guide

    • 처음엔 이미지 속 텍스트를 전혀 알아채지 못했음
      리사이징만의 문제가 아니고, 단순히 이미지에 포함된 텍스트가 프롬프트의 일부로 취급되어 에이전트가 어떤 명령을 따르는지 투명성이 없다는 점이 문제임

    • 진짜 흥미로운 점은, 다운스케일링 시에 이미지가 다르게 보이도록 만드는 척도 이미지(Adversarial Image)임
      다운샘플링(샘플 수 줄이기)은 전통적인 방식이고 여기엔 AI가 관여하지 않음

    • 이게 궁금했던 부분임
      렌더된 텍스트는 기계가 읽으려면 OCR(문자인식)이 필요한데, 왜 굳이 AI가 그 비싼 과정을 거치는지 이해가 안 됨
      멀티모달 시스템의 일부라면 그 텍스트를 프롬프트와 구분하지 못할 수도 있음
      만약 그렇다면, 이 결함은 진짜 이해가 안 되는 부분임
      최소한 OCR 기능이 자동으로 프롬프트에 결과를 주입하지 말고, 사용자에게 알림을 보내서 확인을 받는 절차를 넣어야 함
      이처럼 비결정적이고 불안정한 시스템이 싫음
      진짜로 알고리즘과 건실한 기술로 돌아갔으면 하는 바람임

  • 이 문제는 권한 설정이 느슨할 때만 발생함
    하지만 요즘 트렌드는 더 주체적인(Agentic) 시스템이고, 이 시스템들은 종종 더 느슨한 권한이 필요함
    예를 들어, 집 앞에 놓인 택배를 집어오는 휴머노이드 로봇을 생각해 보면 됨
    비전 기능(시각 인식)이 택배를 집기 위해 필수임
    누군가 택배에 이미지를 붙여 넣어 프롬프트 인젝션을 시도한다면, 로봇이 집안의 귀중품을 창밖으로 던지게 유도할 수도 있음
    이런 시스템을 프롬프트 인젝션으로부터 지키는 일이 시급하다고 생각함

    • 여기서 진짜 문제는 이미지에 프롬프트가 들어있어서가 아니라, 로봇이 해당 행동에 대한 권한이 없는 소스에서 명령이 온 것을 구분하지 못하는 데 있음
      ML 모델의 근본적 문제는 reasoning(추론)이 모델의 토큰 스트림을 통해 이루어지는데, 이 스트림이 외부 입력도 함께 받아들이기 때문에, 모델은 자기 생각과 외부 입력을 효과적으로 구분할 수 있는 장치가 없음

    • 시스템에 직접 통합돼야 함
      예를 들어, 에이전트가 팔을 이용해 파괴적인 행동을 할 수 없도록 해야 함
      만약 자유 의지에 기계가 인간의 도덕성을 얻을 거라고 기대하면서 '좋은 프롬프트'와 '나쁜 프롬프트'만 구분하려 한다면, 앞으로도 이런 시스템의 위험성에 계속 놀라게 될 것임
      요약하면, 검증 가능한 거버넌스와 행동 결정성(Behavioral Determinism)이 이러한 시스템엔 반드시 필요함
      아마도 프롬프트 인젝션 대응책보다 더 중요한 요소임

    • 로봇에게 가짜 프롬프트를 무시하라는 프롬프트를 주면 해결 가능함

  • 일반적으로 프롬프트 인젝션 문제는 태스크별 계층 구조로 충분히 해결할 수 없을까 하는 생각이 있음
    LLM이 작업을 더 작은 컴포넌트로 쪼개서 수행하게 할 수 있음
    상위 레벨 태스크의 LLM은 하위 레벨의 세부 정보를 자유롭게 알 필요가 없고, 그 결과만 필터링해 정제하면 됨
    이는 상위 태스크 LLM 인스턴스의 컨텍스트도 제한되도록 하여, 집중하도록 만드는 효과도 있음
    물론 하위 태스크가 상위 태스크로 데이터를 넘길 수 있지만, 반드시 그렇게 짤 필요는 없음
    보안이 중요한 태스크라면, 상위 LLM이 자유로운 결과를 받지 않는 편이 오히려 나음

    • 어느 LLM이든, 프롬프트를 가장 먼저 받는 LLM이 프롬프트 인젝션 공격에 취약해진다는 문제가 있음
  • 좋은 이미지 스케일링 알고리즘은 나이퀴스트 한계를 반드시 고려해야 함
    예를 들어, bicubic 스케일링으로 원본 크기의 1/3로 줄일 때는, 4x4가 아니라 12x12 그리드를 써야 함
    적용 가중치를 산출하는 수식도 약간 변형해 쓰면 됨
    이미지의 감마정정(de-gamma)도 꼭 필요함
    좋은 스케일링이 진짜 드물어서 아쉬움

    • 이 문제의 많은 부분이 품질이 낮은 리샘플링 알고리즘에서 발생한다고 생각함
      상당한 앨리어싱(정보 왜곡)이 그대로 통과되도록 하니까 생기는 현상임
      논문에도 적혀 있듯, 커널 크기만 충분히 키우면 알고리즘이 좋아도 양자화 때문에 일부 정보는 남아 있을 수 있지만, 그 영향은 확 줄어듦
      유명 라이브러리도 여전히 mipmapping(미리 여러 크기를 생성해 쓰는 방식)만 쓰고 있는 게 놀라움
      좋은 리샘플링 필터는 15년 전 CPU로도 실시간 비디오 처리에 썼던 기술임
      감마 보정이 커널 사이즈 늘리는 것보다 더 많은 연산을 차지할 때도 많음
      케이스에 따라 감마 보정보다 필터 리샘플을 생략하면 진짜 이유 있는 상황임
  • LLM의 보안적 미래는 정말 두려움
    예전엔 많은 시행착오 끝에 배운 ‘In-band signaling(채널 자체에서 데이터와 명령 분리)’ 원칙을 완전히 무시한 시스템을 만들었음
    단순히 눈에 보이게 명령어를 삽입하는 방법부터, 이런 난독화(Obfuscation) 방식, ASCII Smuggling 등 다양한 공격 벡터가 많음
    방어책이라고 해봤자, 비결정적(Non-deterministic) 알고리즘에게 부적절한 명령 따르지 말아 주십사 ‘예쁘게’ 부탁하는 수준임
    참고: 텍스트를 유니코드 태그로 숨기기와 찾기

    • 점점 더 많은 개발자들이 LLM에게 바르게 행동해 달라고 애걸하는 중임
      뭔가 Warhammer 40k 게임의 분위기 같아서 웃기면서도 무서움

    • 다른 대안은, LLM이나 LLM이 포함된 시스템을 아예 쓰지 않는 것임

    • 마치 예전에 php로 사용자 입력을 그대로 문자열 연결해 쿼리 만들고, 위험한 패턴을 계속 잡아내는 두더지 게임하는 느낌임
      데이터와 명령을 구분하지 못해 이런 실수를 수십 년 만에 또 반복하는 게 안타까움

    • 이상하게도 모델에 sudo 토큰 같은 게 하나도 없는 점이 놀라움
      일반 토큰으로 표현할 수 없는 문법이 있었으면 좋았겠음

    • 마치 예전 시리얼 터미널(이식성이 높은 단순 명령 입력 시스템) 시절이 다시 온 느낌임

  • 이미지에 뭔가를 숨겨서 보내는 걸 생각해보지 못했다는 점이 정말 신선함
    LLM은 정말 역사상 가장 취약한 소프트웨어임
    예전에 Gemini의 전신을 테스트할 때, 초기 메시지를 아주 길게 입력하면 시스템 프롬프트를 밀어내서 뭐든 시킬 수 있었던 기억이 있음

  • “This image and its prompt-ergeist” 부분을 너무 인상적으로 봤음

  • 다운샘플링 전에 약간의 노이즈를 이미지에 추가하면 이런 문제가 해결될 수 있을지 궁금함

    • 이미지를 다운샘플링할 때, 샘플링 레이트 근처의 고주파를 제거하는 smoothing(스무딩) 처리가 필요함
      이렇게 하면 앨리어싱 효과를 줄일 수 있음
      ‘나이퀴스트-섀넌 샘플링 정리’라는 용어로 검색하면 됨
      디지털 신호 처리에서는 꽤 잘 알려진 이론임

    • 어느 정도 보안 대책이 되긴 하지만, 텍스트를 어떻게 숨겼는지, 어떤 종류의 노이즈를 쓰느냐에 따라 효과가 다름
      그런데 이렇게 하면 실제로 필요한 내용(정상 텍스트/디테일 등)도 지워질 수 있어서 진짜 정답은 아님

  • 내가 놓친 부분이 있는지 궁금함
    이번 공격 방법이 “난독화된 텍스트를 이미지에 주입하고… <i>어떤 시스템이 그걸 프롬프트로 해석하기를 바라는 것</i>”를 이용하는 거라면 맞게 이해한 것인지?

    • 맞음
      이 공격은 다운스케일 알고리즘을 악용해서 사람이 볼 때는 텍스트가 안 보이도록 숨기는 매우 똑똑한 방식임
      시스템 구조에 따라 ‘사람에게 안 보이게 숨기는’ 과정이 생략될 수도 있음
      LLM은 본질적으로 데이터와 명령의 구분이 없어서, 데이터 흐름에 명령이 섞여 들어가면 언제든 모델의 동작을 제어할 수 있음
      내 바이오에 이런 예시도 써 놓았음

    • “난독화 텍스트를 이미지에 넣고, 시스템이 그걸 프롬프트로 해석하기를 바람”
      여기서 빠진 부분이 있는데, “프롬프트”가 뭔가 특권이 있는 입력이라고 가정하는 것임
      실제로는 프롬프트는 전체 입력의 일부일 뿐이고, 모델은 모든 입력을 동일하게 취급함
      그래서 예전부터 유행하는 “이전 입력 모두 무시하고…” 같은 공격이 계속 통함

  • 왜 모델이 이미지 안의 텍스트와 텍스트 프롬프트를 따르는 걸 구별하지 못하는지 궁금함

    • 이미지 속 텍스트와 일반 텍스트 프롬프트 모두에서 모델이 쉽게 공격자의 명령에 넘어갈 수 있음