FlawOpen

flawopen.com/AI Security/microsoft-365-copilot-echoleak-prompt-injection-may-2025

● CVE-2025-32711 · CVSS 9.3 · Kritis
Riset Keamanan · FlawOpen

EchoLeak Copilot: CVE-2025-32711

CVE-2025-32711 memungkinkan injeksi prompt ke Copilot lewat email tanpa klik. Microsoft memperbaiki layanan; pelanggan tak perlu bertindak.[2], [3]

💡 Penjelasan Sederhana (ELI5)

Bayangkan asisten yang merangkum surat dan sistem pratinjau yang otomatis memuat ilustrasi dalam jawabannya. Surat berbahaya menipu asisten agar memasukkan referensi ke informasi privat dalam sebuah ilustrasi; sistem pratinjau mengikuti referensi itu tanpa klik. EchoLeak melintasi batas antara email tak tepercaya, jawaban asisten, dan pengambilan eksternal otomatis. Pertahanannya adalah mencegah konten tak tepercaya mengizinkan pengambilan dan memeriksa setiap pratinjau melalui kebijakan terpisah.[3], [4]

Konsep Kunci & Istilah

Injeksi prompt tidak langsung
Instruksi dalam data yang dibaca AI dan berusaha mengalihkannya dari tugas pengguna.[4], [3]
CWE-74: Injeksi
CWE-74: Injection. Catatan CVE Microsoft mencantumkan klasifikasi ini dan skor CVSS 3.1 9,3 Critical. NVD secara terpisah menampilkan penilaiannya sendiri, 7,5 High; keduanya adalah penilaian berbeda, bukan pertentangan pada ID kerentanan.[2], [5]
Jalur sumber-ke-keluaran
Jalur yang dapat diaudit dari konten tidak tepercaya melalui pemrosesan model ke tindakan atau saluran pengungkapan.[3]
Microsoft 365 Copilot
Asisten kerja Microsoft yang menggunakan konteks Microsoft 365 yang diizinkan.[1]
Hak istimewa minimum
Memberikan identitas atau alat hanya akses yang diperlukan untuk tugas saat ini.[4]

Pemetaan kerangka kerja

Alur Serangan Langkah demi Langkah

Langkah 1

Email tidak tepercaya masuk ke konteks

Menurut studi kasus yang diterbitkan, Copilot harus memproses atau mengambil email yang dikendalikan penyerang saat penggunaan biasa. Pengiriman saja tidak memicu rangkaian ini; pengguna tidak perlu membuka email atau mengeklik apa pun.[3], [6]

Langkah 2

Konten bersaing dengan tugas

Peneliti melaporkan bahwa konten yang disisipkan menghindari klasifikator XPIA Copilot, sementara Markdown bergaya referensi pada jawaban yang dihasilkan lolos dari penghapusan tautan eksternal.[3], [6]

Langkah 3

Data yang diizinkan dapat dijangkau

Jawaban dapat menempatkan informasi yang memang sudah dapat diakses korban dalam referensi gambar jarak jauh. Klien mengambil gambar secara otomatis tanpa klik.[3], [6]

Langkah 4

Keluaran adalah batas penentu

Makalah tersebut melaporkan bahwa layanan pratinjau Microsoft Teams yang diizinkan CSP mengambil tujuan gambar eksternal dan melewati batas konten yang dirancang. Microsoft kemudian merilis perbaikan sisi server; panduannya menyatakan pelanggan tidak perlu melakukan tindakan.[3], [1], [2], [6]

Kode Sumber: Rentan vs Aman

Model edukasi FlawOpen, bukan kode sumber atau patch Microsoft. Cabang rentan memodelkan perender yang otomatis memuat referensi pilihan model. Cabang defensif hanya menerima ServerValidatedPreview yang dibuat oleh resolver sisi server tepercaya, memeriksa kebijakan tujuan yang dikelola server dan klasifikasi nonprivat, lalu meminta kebijakan persetujuan tepercaya memverifikasi persetujuan yang terikat pada jawaban dan tujuan yang tepat. Ini adalah prasyarat eksplisit: tipe Python saja tidak membuat nilai menjadi tepercaya; dalam produksi, kode yang dikendalikan server harus menegakkan batas resolver dan kebijakan. Kode tidak membuat permintaan jaringan dan tidak mereproduksi payload atau implementasi internal EchoLeak. Persetujuan juga terikat pada klasifikasi data.[3], [4]

IMPLEMENTASI RENTAN
# MODEL RISIKO ABSTRAK: memodelkan keputusan pratinjau otomatis; tidak membuat permintaan jaringan.
from dataclasses import dataclass

@dataclass(frozen=True)
class PreviewRequest:
    response_id: str
    destination_id: str
    provenance: str
    contains_private_data: bool

def vulnerable_preview_decision(request):
    return True
PERBAIKAN AMAN & KUAT
# MODEL RISIKO ABSTRAK: memodelkan keputusan pratinjau otomatis; tidak membuat permintaan jaringan.
from dataclasses import dataclass

@dataclass(frozen=True)
class ServerValidatedPreview:
    response_id: str
    destination_id: str
    provenance: str
    data_classification: str

class ServerPolicy:
    def destination_is_allowed(self, destination_id):
        raise NotImplementedError

    def verifies_exact_approval(self, approval, *, response_id, destination_id, data_classification):
        raise NotImplementedError

# PRAKONDISI: hanya kode server tepercaya yang membuat nilai tervalidasi ini.
def authorize_preview(request: ServerValidatedPreview, approval, server_policy):
    if request.provenance != 'trusted-catalog' or request.data_classification != 'public':
        return False
    if not server_policy.destination_is_allowed(request.destination_id):
        return False
    return server_policy.verifies_exact_approval(
        approval, response_id=request.response_id, destination_id=request.destination_id,
        data_classification=request.data_classification
    )

Daftar Periksa Penguatan Sistem Rekayasa

Sumber

← AI Security Directory →