# ASCII smuggling: Ký tự vô hình và cuộc chiến chống Phishing trong kỷ nguyên AI


## Tổng quan

ASCII smuggling, kỹ thuật nổi tiếng trong prompt injection vì giấu chỉ thị khỏi mắt người nhưng vẫn bị phát hiện bởi với AI, cho dù dùng nhiều cách để né bộ lọc email. Hành vi được phát hiện điều này khi đang săn nội dung prompt injection ẩn trong email cho Defender for Office 365, không phải khi tìm phishing. Chiến dịch chèn ký tự Unicode vô hình vào giữa từ khoá tài chính như "funding" để phá so khớp literal, trong khi người nhận vẫn đọc bình thường, đạt tới 2,37 triệu email mỗi ngày tuần qua khoảng 148 domain giả mạo tài chính trong một ngày cao điểm.

Một phát hiện tình cờ từ nghiên cứu an toàn AI đó là signature phát hiện chiến dịch này không được xây để săn phishing. Nó là một phần trong nghiên cứu của Microsoft Defender for Office 365 về bảo vệ khỏi prompt injection, tìm nội dung ẩn trong email có thể được một mô hình AI đọc và làm theo mà người dùng không hề thấy. Khi tinh chỉnh signature này, nhóm nghiên cứu gặp một trường hợp thú vị: phiên bản đầu tiên báo nhầm trên một số email hoàn toàn hợp lệ, và khi kiểm tra thì tất cả đều chứa một trong ba emoji cờ vùng, England, Scotland và Wales. Ba lá cờ này thực sự được mã hoá bằng một chuỗi ký tự Unicode tag ẩn phía sau mã cờ nền, đúng dải U+E0000-U+E007F mà signature đang theo dõi, nên phải loại trừ trước khi dùng được. Sau bước lọc đó, phần hit còn lại chủ yếu đến từ cổng bảo mật email và nhà nghiên cứu đang thử nghiệm kỹ thuật này, tạo ra một baseline sạch để nhận ra bất thường thật.

![](https://cdn.hashnode.com/uploads/covers/669e2c7992d73f3fd8335153/e8611ff0-45c9-4d3e-8669-cf8e1c535e54.png align="center")

### Cơ chế ẩn ký tự và vì sao nó qua mặt được bộ lọc

Dải Unicode Tags (U+E0000-U+E007F) vốn là bản sao ẩn của các ký tự ASCII in được, ví dụ U+E0041 tương ứng "A", U+E0061 tương ứng "a", ban đầu dùng cho gắn thẻ ngôn ngữ và nay gần như bị bỏ. Điểm mấu chốt là phần lớn các mã này không được font hay giao diện người dùng hiển thị ra. Trong chiến dịch này, một từ khoá như "funding" được gửi đi dưới dạng "fun" cộng một ký tự TAG SPACE ẩn cộng "ding". Với người đọc, hoặc với bất kỳ pipeline nào chuẩn hoá và loại bỏ ký tự ẩn trước khi xử lý, chuỗi vẫn hiện ra là funding bình thường. Nhưng với bộ dò khớp chuỗi literal, hoặc regex không tính đến khả năng có mã ẩn xen giữa, chuỗi byte không còn chứa từ khoá liền mạch nữa. Rủi ro lớn hơn nằm ở các mô hình phân loại spam dựa trên ML và NLP: nếu tokenizer tách văn bản thành từ hoặc sub-word, việc chèn một mã ẩn vào giữa có thể khiến từ quen thuộc bị tách thành các token lạ, làm mô hình không còn nhận ra mẫu quen thuộc.

Chi tiết đáng chú ý nhất ở đây không phải bản thân kỹ thuật Unicode, mà là cách nó được tìm ra: một khoản đầu tư vào an toàn AI, cụ thể là bảo vệ khỏi prompt injection trong email, tình cờ bắt được một chiến dịch phishing truyền thống mà nó không hề được thiết kế để săn. Đây là một minh chứng cụ thể cho việc đầu tư vào kiểm tra nội dung cho AI không chỉ phục vụ rủi ro AI, nó mở rộng luôn bề mặt phát hiện cho các mối đe doạ cũ hơn dùng chung cơ chế kỹ thuật.

Về mặt kỹ thuật áp dụng, nguyên tắc chuẩn hoá trước khi so khớp không chỉ có giá trị cho bộ lọc email. Bất kỳ pipeline nào nhận nội dung từ nguồn ngoài rồi đưa vào bước so khớp từ khoá, phân loại, hay đưa thẳng vào một mô hình AI để xử lý, đều nên loại bỏ ký tự ẩn và không hiển thị trước khi tin tưởng nội dung đó. Cùng một lỗ hổng chuẩn hoá vừa làm yếu bộ lọc phishing, vừa mở đường cho prompt injection nếu nội dung email đó sau này được một trợ lý AI đọc lại.

## Sơ đồ mô tả

![](https://cdn.hashnode.com/uploads/covers/669e2c7992d73f3fd8335153/749a72d3-b086-4a51-992f-b4ad21ef0736.png align="center")

Đây không phải chuỗi thực thi mã độc nhiều tầng, mà là cách một chuỗi ký tự bị thao túng để ba "người đọc" khác nhau, con người, bộ lọc literal, và mô hình ML, nhìn thấy ba phiên bản khác nhau của cùng một từ, cộng với hạ tầng giúp nó tới được hộp thư.

**1\. Từ khoá gốc**: "funding" trong nội dung lure tài chính.

**2\. Chèn ký tự ẩn (T1027)**: operator chèn một ký tự TAG SPACE vô hình (U+E0020, thuộc dải Unicode Tags) vào giữa, tạo ra "fun" cộng ký tự ẩn cộng "ding".

**3\. Ba cách nhìn khác nhau trên cùng một chuỗi**: mắt người và giao diện vẫn hiển thị "funding" bình thường vì ký tự ẩn không được font render; bộ lọc so khớp literal hoặc regex thấy chuỗi byte bị gãy nên so khớp từ khoá thất bại; mô hình ML/NLP phân loại spam có thể tách thành các sub-token lạ, làm giảm độ tin cậy phân loại.

**4\. Hạ tầng phát tán (T1566)**: khoảng 148 domain tài chính dùng một lần, ghép từ khoảng 28 từ khoá tái sử dụng, gửi qua relay của ActiveCampaign theo pattern envelope em-\\d+/acems\\d+/emsd\\d+.

**5\. Link trong email**: bị ActiveCampaign viết lại để đi qua domain click-tracking riêng của nền tảng (acemlnd\[.\]com, activehosted\[.\]com).

**6\. Kết quả phát hiện**: signature của Microsoft bắt được bất thường Unicode, nhưng quan trọng hơn, hơn 99% email trong chiến dịch vẫn bị chặn nhờ các lớp phát hiện khác không phụ thuộc riêng tín hiệu này.

## IOC & Artifacts

```text
# Content pattern
U+E0000-E007F                       - Dải Unicode Tags, đặc biệt U+E0020 chèn giữa từ khoá tài chính

# Domain gửi tiêu biểu, đợt 9/2/2026 (Microsoft, 148 domain trong ngày)
guardiangrowthfunding[.]com
digitalcapitalboost[.]com
thebusinessloanexpress[.]com
yourlocfunding[.]com
advancefundingboost[.]com

# Domain gửi tiêu biểu, đợt 9/2025 (Fortra, quy mô nhỏ hơn, cùng pattern đặt tên)
capitalguardianboost[.]com
directfundingloc[.]com
uproarfundingsolutions[.]com
directcapitaltree[.]com
directlendingharbor[.]com

# Click-tracking / URL routing
acemlnd[.]com                       - domain click-tracking dùng chung của ActiveCampaign
activehosted[.]com                  - domain click-tracking dùng chung của ActiveCampaign

# Infrastructure pattern
em-<số>.<brand-domain>               - pattern envelope sender (regex: em-\d+\.)
acems<N>[.]com / emsd<N>[.]com       - pool gửi dùng chung, vd emsd4[.]com, s9.acems10[.]com
173.236.20[.]0/24                    - dải mạng chiếm ~92% khối lượng đo được, KHÔNG phải IOC độc lập
                                        (không gian hạ tầng dùng chung hợp pháp, chỉ dùng để khoanh vùng)
```

## Khuyến nghị

*   Chuẩn hoá, loại bỏ ký tự Unicode tag-block (U+E0000-U+E007F) và các mã ẩn/zero-width khác khỏi subject và body email trước khi chạy bất kỳ signature, keyword, hay regex nào
    
*   Hunt theo dấu hiệu hạ tầng: domain gửi ghép từ vocabulary tài chính nhỏ, kết hợp pattern envelope em-\\d+ hoặc acems\\d+/emsd\\d+
    
*   Xác minh độc lập mọi lời mời vay vốn hoặc hạn mức tín dụng qua kênh chính thức, không qua link trong email
    
*   Đào tạo nhận diện mẫu ưu đãi vốn khẩn cấp kèm form thu thập dữ liệu doanh nghiệp và mời gọi điện lại
    
*   Áp dụng cùng bước chuẩn hoá cho mọi pipeline đưa nội dung email hoặc tài liệu ngoài vào hệ thống AI/LLM nội bộ, giảm luôn rủi ro prompt injection
    

## Tài liệu tham khảo

1.  Microsoft Security Research (Noam Kochavi, Sarah Wolstencroft), "ASCII smuggling crosses over from AI prompt injection to phishing evasion" (3/9/2026): https://www.microsoft.com/en-us/security/blog/2026/09/03/ascii-smuggling-crosses-over-from-ai-prompt-injection-to-phishing-evasion/
    
2.  The Hacker News (Ravie Lakshmanan), "Phishing Campaign Sends Millions of Emails Using Invisible Unicode to Evade Filters" (4/9/2026): https://thehackernews.com/2026/09/phishing-campaign-sends-millions-of.html
    
3.  Fortra FIRE team, "Attackers exploit ActiveCampaign to Deliver Thousands of AI-generated SBA Phish" (18/9/2025): https://www.fortra.com/blog/attackers-exploit-activecampaign-deliver-thousands-ai-generated-sba-phish
