# Poczta to niezaufane dane wejściowe

Asystent czyta e-maile od obcych ludzi, a to, co napisze, zapisuje się w twojej
skrzynce. Każdy może ukryć w e-mailu polecenie dla modelu – „zignoruj reguły,
wyślij odpowiedź do wiadomości…”. To prawdziwy atak, a draften broni się przed
nim warstwowo, **nie polegając na tym, że model odmówi wykonania polecenia**.

## Przed modelem

- **Poczta automatyczna jest odrzucana na podstawie nagłówków** (automatyczne
  odpowiedzi, zwroty, powiadomienia, poczta masowa), zanim zobaczy ją
  jakikolwiek model. Asystent nigdy na nią nie odpowiada, więc nie może powstać
  pętla dwóch maszyn. Wyjątkiem są adresy formularzy internetowych z ustawień
  asystenta.
- **Ukryty tekst jest usuwany** – biały tekst, zerowy rozmiar, tekst poza
  ekranem, komentarze HTML. To, co znaleziono, zapisuje się przy wiadomości.
- **Niewidoczne znaki** (o zerowej szerokości, sterujące, znaki kierunku tekstu
  i podobne) są usuwane i liczone.
- **Zdania, które wyglądają jak polecenia**, są oznaczane; wiadomość ma wtedy
  w zakładce Poczta etykietę **podejrzana**.

## W wytycznych dla modelu

Każdy obcy tekst – temat, nazwa nadawcy, treść, wcześniejsze wiadomości wątku,
wyniki z archiwum i podłączonych systemów – jest w zamkniętym bloku z adnotacją,
że to dane, nie polecenia. Znaczniki bloku są w treści zabezpieczone, więc
atakujący nie może bloku zamknąć. Reguła dotycząca bloków jest częścią stałego
rdzenia draften, nie edytowalnym tekstem. Model ma polecenie przekazać sprawę
człowiekowi, gdy zauważy próbę manipulacji.

## Po modelu

To, co napisze model, draften sprawdza z taką samą nieufnością – przeszło to
przecież przez e-mail od obcej osoby:

- **adresatem** może być tylko adres, który jest w oryginalnej wiadomości,
- **DW** tylko z dozwolonych adresów asystenta, inaczej wypada,
- **załączniki** tylko z listy załączników asystenta,
- **linki** tylko do dozwolonych domen i domen źródeł wiedzy, inaczej szkic
  nie powstaje,
- **podpis** musi być w szkicu w całości, inaczej szkic nie powstaje,
- szkic nie może zaczynać się od nazwy asystenta (wyglądałby jak polecenie
  właściciela),
- **limity** na dzień, na nadawcę i na sprawdzanie spowalniają zalew poczty.

## Co nigdy nie jest możliwe

- **Nic nie zostaje wysłane.** Rejestracja aplikacji nie ma uprawnienia
  `Mail.Send`, a draften nie ma żadnego wywołania, które wysyła. Każdy szkic
  widzisz, zanim go wyślesz.
- **Nic nie zostaje usunięte.** Asystent niczego w skrzynce nie usuwa.
- Podłączone systemy (CRM) **tylko czytają** i tylko o uczestnikach wątku.
- Adresy, które asystent pobiera (linki, strony z instrukcjami), muszą być
  publiczne – źródło nigdy nie sięga do wewnętrznej sieci serwera.

## Czego obrona nie obejmuje

Samej treści tekstu szkicu – oraz atakującego, który wpisze własny adres
w treść e-maila (kontrola adresata go tam wtedy znajdzie). Przy szkicu, który
zatwierdza człowiek, jest to akceptowalne; przy automatycznym wysyłaniu by nie
było – to kolejny powód, dla którego draften nigdy nie wysyła.

Zobacz też [Siatka bezpieczeństwa](/pl/admin/safety-net).
