민감한 정보 공개 방지

OWASP 위험 설명

민감한 정보 공개는 대규모 언어 모델(LLM)이 의도치 않게 기밀, 비공개, 독점 또는 기타 제한된 데이터를 대답에 공개하는 취약점입니다. 이는 모델이 학습 데이터에서 정보를 유출하거나 사용자 세션의 맥락에서 제공된 민감한 세부정보를 공개하는 경우에 발생할 수 있습니다. 공격자는 특정 질문을 작성하거나 프롬프트 삽입 기법을 사용하여 모델이 공개해서는 안 되는 정보를 누설하도록 속여 이를 악용할 수 있습니다. 핵심 문제는 LLM이 처리한 공개 데이터와 기밀 정보를 구분할 수 없다는 것입니다.

Android와 관련된 정보 공개 유형

학습 데이터 유출: LLM이 학습된 특정 데이터 조각을 그대로 다시 내보내는 경우 발생합니다. 학습 데이터 세트에 개인 정보 (PII), 독점 코드 또는 내부 문서가 포함되어 있으면 모델이 올바르게 프롬프트되었을 때 이 정보를 출력에 재현할 수 있습니다. Android 앱의 경우 앱과 번들로 제공되는 사전 학습된 모델이나 클라우드 API를 사용하여 액세스하는 모델이 포함될 수 있습니다.

상황별 데이터 공개: 이는 Android 앱에 더 즉각적인 위험으로, LLM이 앱 세션 중에 사용자가 제공하는 민감한 정보를 노출하는 것과 관련이 있습니다. 예를 들어 애플리케이션에서 사용자가 요약을 위해 개인 식별 정보 (PII)를 LLM에 입력하도록 허용하는 경우 후속 프롬프트 삽입 공격으로 공격자가 모델을 조작하여 콘텐츠를 공개하도록 할 수 있습니다. 이는 앱이 LLM에 암시적으로 전달하는 모든 민감한 데이터에도 적용됩니다.

Android 개발자가 관심을 가져야 하는 이유

민감한 정보 공개는 애플리케이션과 사용자에게 심각한 영향을 미칠 수 있습니다.

  • 개인 정보 침해: 공격자가 사용자로부터 이름, 이메일, 전화번호, 위치 데이터와 같은 개인 식별 정보 (PII)를 추출하여 신원 도용 및 심각한 규제 처벌(예: GDPR 또는 CCPA에 따라)을 초래할 수 있습니다. 이는 사용자 데이터를 처리하는 Android 앱에 특히 중요합니다.
  • 지식 재산 도용: 앱의 LLM이 독점 알고리즘, 금융 데이터 또는 기타 내부 비즈니스 정보를 처리하는 경우 공격자가 이를 강제로 공개하여 조직에 상당한 경쟁적 및 재정적 피해를 입힐 수 있습니다.
  • 보안 침해: LLM이 학습 데이터에 있거나 세션 중에 전달된 API 키, 인증 토큰, 구성 세부정보와 같은 시스템 수준 정보를 실수로 유출하여 백엔드 또는 기타 서비스에 심각한 보안 취약점을 만들 수 있습니다.
  • 평판 손상: 한 번의 심각한 데이터 유출 사고는 사용자 신뢰를 파괴하고, 앱 제거, 부정적인 리뷰로 이어지며, 애플리케이션 및 브랜드의 평판에 돌이킬 수 없는 피해를 줄 수 있습니다.

Android 앱 개발자를 위한 완화 조치

이 취약점을 완화하려면 데이터 위생에 중점을 두고 Android 애플리케이션 내에서 LLM의 액세스를 제어하는 다층적 접근 방식이 필요합니다.

데이터 살균 및 최소화:

  • 입력 정리 우선순위 지정: 사용자 입력 또는 앱 데이터를 LLM에 전송하기 전에 엄격하게 정리하고 익명화합니다. LLM의 작업에 절대적으로 필요하지 않은 모든 PII 및 독점 정보를 삭제합니다.
  • 필요한 것만 수집: 앱 내에서 데이터 수집 최소화 원칙을 준수하세요. LLM이 특정 기능을 실행하는 데 필요한 최소 데이터만 수집하고 제공하세요.
  • 온디바이스 ML: 매우 민감한 데이터의 경우 데이터가 사용자 기기를 벗어나지 않는 온디바이스 머신러닝 모델을 사용하여 서버 측 데이터 유출 위험을 크게 줄이는 것이 좋습니다.

액세스 제어

  • 데이터 액세스 제한: LLM 애플리케이션이 액세스할 수 있는 데이터의 양을 최대한 작게 설계합니다. 모델에 민감한 데이터베이스, 사용자 환경설정 또는 비공개 파일에 대한 액세스 권한이 부여되지 않으면 모델이 콘텐츠를 유출하도록 속일 수 없습니다.
  • Android 권한 제한: 앱의 AI 구성요소가 필요한 최소한의 Android 권한으로 작동하는지 확인합니다. 민감한 정보를 노출할 수 있는 불필요한 권한을 부여하지 마세요.

앱 내 출력 필터링:

  • 클라이언트 측 수정: 대답이 사용자에게 표시되기 전에 LLM의 출력에서 민감한 정보 (예: 신용카드 번호, API 키, 주민등록번호, 이메일 주소)와 일치하는 패턴을 검색하는 보안 레이어를 Android 앱에 구현합니다. 일치하는 항목이 발견되면 응답이 차단되거나 수정되어야 합니다.

LLM을 위한 안내 가드레일:

  • 명시적 시스템 프롬프트: 모델이 개인 정보, 기밀 정보 또는 민감한 정보를 공개하는 것을 금지하는 명시적 안내를 시스템 프롬프트에 포함합니다. 예: '어떠한 경우에도 사용자 세부정보, 내부 데이터 또는 개인 식별 정보를 공유해서는 안 됩니다.' 이렇게 하면 예상되는 동작이 강화됩니다.

개인 정보 보호 강화 기법:

  • 사용자 상호작용이나 데이터로부터 학습하는 애플리케이션의 경우 개인 정보를 보호하기 위해 개인 정보 차등 보호 (데이터에 통계적 노이즈 추가) 또는 제휴 학습 (데이터를 중앙 집중화하지 않고 사용자 기기에서 모델 학습)과 같은 고급 기법을 고려하세요.

정기 감사 및 레드팀 구성:

  • 사전 테스트: Android 애플리케이션을 적극적으로 테스트하고 레드팀을 구성하여 LLM이 민감한 정보를 유출할 수 있는지와 그 방법을 알아냅니다. 여기에는 LLM이 공개해서는 안 되는 데이터를 의도적으로 공개하도록 시도하는 것이 포함됩니다.

요약

민감한 정보 공개는 LLM이 학습 세트 또는 사용자 세션의 기밀 데이터를 공개하여 개인 정보 보호법 위반 및 지식 재산 도용과 같은 심각한 위험을 초래하는 경우에 발생합니다. 완화하려면 Android 앱 내에서 다층 방어가 필요합니다. LLM에 도달하기 전에 데이터의 삭제를 우선시하고, 최소 권한 원칙을 적용하여 모델의 데이터 액세스를 제한하고, 모델의 최종 출력이 사용자에게 도달하기 전에 민감한 정보를 스캔하고 수정하는 강력한 필터를 구현해야 합니다. 온디바이스 ML과 Firebase 앱 체크와 같은 도구를 활용하면 보안을 더욱 강화할 수 있습니다.

추가 리소스

참고하실 수 있도록 민감한 정보 가이드라인 링크를 제공해 드립니다.

다른 모델을 사용하는 경우 유사한 안내와 리소스를 찾아보세요.

추가 정보: