4 điểm bởi GN⁺ 2026-02-24 | 1 bình luận | Chia sẻ qua WhatsApp
  • Để kiểm chứng khả năng phát hiện mã độc bằng AI, nhóm nghiên cứu đã cấy backdoor nhân tạo vào nhiều tệp nhị phân máy chủ mã nguồn mở và tiến hành thử nghiệm phát hiện bằng tác tử AI cùng Ghidra
  • Các mô hình mới như Claude Opus 4.6 đã tìm ra một số backdoor đơn giản, nhưng tỷ lệ phát hiện là 49%tỷ lệ dương tính giả là 28%, ở mức chưa phù hợp để sử dụng thực tế
  • Thử nghiệm sử dụng các dự án nền tảng C·Rust như lighttpd, dnsmasq, Dropbear, Sozu, và AI thực hiện phân tích chỉ với công cụ dịch ngược mà không có mã nguồn
  • Một số mô hình cho thấy khả năng phán đoán còn hạn chế, như nhầm các lời gọi độc hại rõ ràng (execl("/bin/sh", ...)) là chức năng bình thường hoặc tập trung vào đoạn mã không liên quan
  • Nhóm nghiên cứu đánh giá rằng AI vẫn chưa phải là công cụ bảo mật hoàn chỉnh, nhưng đã phát triển đến mức ngay cả người không chuyên cũng có thể thực hiện kiểm tra bảo mật ban đầu

Bối cảnh nghiên cứu

  • Gần đây, các sự cố như cuộc tấn công chuỗi cung ứng Shai Hulud 2.0vụ chiếm đoạt tệp nhị phân Notepad++ đã làm nổi bật rủi ro của các tệp thực thi không đáng tin cậy
    • Kẻ tấn công chèn mã độc vào phần mềm hợp pháp để đánh cắp thông tin xác thực hoặc thực thi lệnh từ xa
  • Cũng đã có báo cáo về các trường hợp trong firmware hoặc thiết bị phần cứng tồn tại mô-đun liên lạc ẩn hoặc tài khoản backdoor
  • Để đối phó với các mối đe dọa này, nghiên cứu đã thử nghiệm xem AI có thể phát hiện hành vi độc hại ở cấp độ nhị phân hay không

Tổng quan phân tích nhị phân

  • Lập trình thông thường xử lý mã nguồn, nhưng phân tích mã độc phải giải thích tệp nhị phân ở mức mã máy
  • Trong quá trình biên dịch, các thông tin cấp cao như tên hàm và tên biến biến mất, đồng thời cấu trúc mã bị méo do tối ưu hóa
  • Việc phân tích trải qua quy trình dịch ngược chuyển đổi mã máy → assembly → mã giả C
    • Công cụ mã nguồn mở: Ghidra, Radare2
    • Công cụ thương mại: IDA Pro, Binary Ninja
  • Các công cụ này khôi phục ý nghĩa của mã, nhưng kết quả thường đầy những định danh vô nghĩa như FUN_00130550, bVar49

Cấu hình benchmark BinaryAudit

  • Nhóm nghiên cứu đã chèn backdoor dùng cho thử nghiệm vào nhiều máy chủ mã nguồn mở (lighttpd, dnsmasq, Dropbear, Sozu)
    • Ví dụ: thực thi lệnh thông qua header HTTP hoặc thực thi lệnh shell thông qua tùy chọn DHCP
  • AI chỉ được cung cấp tệp thực thi đã biên dịch, không có mã nguồn, và phân tích bằng Ghidra·Radare2·binutils
  • Mục tiêu là xác định có tồn tại backdoor hay không và địa chỉ bắt đầu của hàm tương ứng
  • Một số bài toán được thiết kế để chỉ yêu cầu phân biệt tệp nào bị nhiễm trong số nhiều tệp nhị phân

Các trường hợp phát hiện thành công

  • Claude Opus 4.5 đã phát hiện trong 5 phút backdoor dựa trên header X-Forwarded-Debug được cấy vào máy chủ lighttpd
    • Mô hình phát hiện lời gọi popen() và dùng Radare2 để dịch ngược, xác nhận logic thực thi lệnh
    • Nó còn xác định được cấu trúc trả kết quả thông qua header phản hồi X-Request-Trace
  • Mô hình đã thực hiện quy trình phân tích tự động bằng cách kết hợp các lệnh nm, strings, grep, r2

Các trường hợp phát hiện thất bại

  • Claude Opus 4.6 đã đánh giá nhầm là chức năng bình thường một backdoor thực thi /bin/sh được chèn vào mã xử lý DHCP của dnsmasq
    • Mô hình phát hiện lời gọi execl("/bin/sh", "sh", "-c", ...), nhưng nhầm đó là việc thực thi script DHCP
    • Trên thực tế, đó là đoạn mã dễ bị tấn công, thực thi nguyên nội dung của gói tin từ client
  • Dù đã tìm đúng vị trí, mô hình vẫn phủ nhận mức độ nguy hiểm và chuyển sang hàm khác, dẫn đến bỏ sót phát hiện

Giới hạn của AI và vấn đề dương tính giả

  • Với tỷ lệ dương tính giả trung bình 28%, có nhiều trường hợp AI báo nhầm backdoor ngay cả trong tệp nhị phân sạch
    • Ví dụ: Gemini 3 Pro nhầm đoạn mã phân tích tùy chọn dòng lệnh bình thường là “backdoor thực thi lệnh”
  • Trong cộng đồng bảo mật, chất lượng báo cáo do AI tạo ra giảm sút cũng đang bị chỉ ra là vấn đề
    • Dự án curl cho biết phần lớn báo cáo lỗi do AI tạo ra là vô nghĩa
  • Để được dùng như công cụ bảo mật thực tiễn, cần tỷ lệ dương tính giả dưới 0,001%

Hạn chế của công cụ mã nguồn mở

  • Ghidra và Radare2 hữu ích cho phân tích mã C, nhưng hiệu năng suy giảm với tệp nhị phân Rust·Go
    • Ví dụ: máy chủ Caddy viết bằng Go (50MB) mất 40 phút để Ghidra tải, và kết quả không chính xác
    • Trong khi đó, IDA Pro tải trong vòng 5 phút và cung cấp mã chính xác
  • Trong thử nghiệm, để loại trừ khác biệt về chất lượng công cụ, nghiên cứu chủ yếu tập trung vào tệp nhị phân nền tảng C

Kết quả và triển vọng

  • Tỷ lệ phát hiện được ghi nhận là Claude Opus 4.6: 49%, Gemini 3 Pro: 44%, Claude Opus 4.5: 37%
  • AI vẫn yếu trước các tệp nhị phân lớn hoặc backdoor bắt chước hành vi bình thường
  • Tuy nhiên, AI đã phát triển đến mức có thể trực tiếp thao tác Ghidra để thực hiện dịch ngược
    • Ngay cả người không chuyên cũng có thể kiểm tra bước đầu các tệp thực thi đáng ngờ
  • Hướng phát triển tương lai được đề xuất là tích hợp với công cụ thương mạiphân tích bảo mật dựa trên mô hình cục bộ
  • Toàn bộ benchmark và kết quả đã được công bố trên GitHub tại QuesmaOrg/BinaryAudit

1 bình luận

 
GN⁺ 2026-02-24
Ý kiến trên Hacker News
  • Dù họ nói là không làm rối mã, nhưng nếu ẩn import và symbol, rồi làm rối chuỗi, thì tỷ lệ phát hiện sẽ lập tức về 0
    Trong trường hợp đó, thứ mà LLM phát hiện chỉ đơn giản là các mẫu bất thường về ngôn ngữ có liên quan đến hành vi độc hại, nên cũng không quá ấn tượng

    • Tôi là một trong các tác giả của bài báo. Các bài toán lần này đều ở mức nhập môn, và điều đáng ngạc nhiên chỉ là đã có mô hình có thể bắt được một số mẫu chỉ bằng cách nhìn vào mã nhị phân
      Ví dụ, các mô hình hiểu được tooling như Ghidra hay Radare2 chỉ có khoảng Opus 4.5, 4.6, Gemini 3 Pro và GLM 5
      Có thể xem benchmark liên quan tại đây
      Đây chỉ là điểm khởi đầu để AI có thể làm việc với binary, và vẫn còn rất xa mới tới được một giải pháp hoàn chỉnh
    • Khi tôi phát triển công cụ ghidra-cli cho LLM, tôi đã dùng crackme để thử nghiệm, và chỉ cần nhắc trong prompt thì nó vẫn xử lý tốt cả mã đã bị làm rối
      Trong reverse engineering phần mềm thực tế, nó có thể loay hoay một lúc, nhưng khi nhận ra đó là obfuscation thì từ đó trở đi tiến trình khá mượt, vừa làm vừa cập nhật kết quả vào các tài liệu như CLAUDE.md
    • Trong bài cũng ghi rõ là họ đã loại bỏ symbol. Các backdoor thực tế thì vốn đã được làm rối với lượng mã tối thiểu
      Có thể tham khảo các bản vá ví dụ như dnsmasq-backdoordropbear-brokenauth
    • Tôi đã dùng Opus 4.5 và 4.6 với plugin Ghidra cho Claude Code để reverse hoàn toàn mã độc đã bị làm rối
      Tuy nhiên, thứ tôi xử lý không phải backdoor cấp quốc gia mà chỉ ở mức crack phần mềm
    • Tôi đã thấy LLM nhận ra khá tốt các mẫu dị thường kiểu này. Có lẽ vì chúng đã học nhiều kỹ thuật mã hóa và làm rối khác nhau
      Ngược lại, logic phức tạp mới là thứ đánh gục LLM, nhưng các mô hình tốt sẽ tự nhận ra độ phức tạp đó và đánh dấu lại
  • Tôi muốn giới thiệu dự án ghidra-cli của mình
    Tôi đã dùng Ghidra để reverse định dạng file Altium (phần Delphi), và hiệu quả rất ấn tượng
    Các mô hình chưa thể tự viết một parser hoàn chỉnh từ đầu, nhưng trước thời LLM thì có lẽ tôi còn chẳng thử làm việc này
    Tôi sẽ không dựa vào nó cho security audit, nhưng với reverse engineering định dạng file thì các mô hình mới nhất đã đủ hữu dụng

    • Gần đây tôi đang quan sát cách dùng agent như công cụ hỗ trợ. Không phụ thuộc hoàn toàn mà dùng để mở rộng năng lực
      Ví dụ giao cho chúng tạo sơ đồ, lập bản đồ attack surface, khám phá mã nguồn, còn tôi tập trung vào phân tích thủ công
      LLM thay tôi làm các việc lặp lại nhàm chán nên tốc độ nhanh hơn. Nhưng nếu giao quá nhiều thì sẽ rơi vào bẫy năng suất
      Nếu dùng đúng tổ hợp agent với bộ “skill” phù hợp thì hiệu quả thực sự tăng rõ rệt
    • Chúng tôi dùng PyGhidra, nhưng khả năng truy cập qua CLI có thể còn tốt hơn
      Hạn chế lớn nhất của Ghidra là phân tích ngôn ngữ Go quá chậm
    • Đây thực sự là một dự án rất hay. Nó tinh vi hơn nhiều so với những gì tôi từng làm với Ghidra + LLM
    • Hệ sinh thái liên quan đang rất sôi động. Gần đây cũng có trường hợp về MCP server
      Tôi đã thử GhidrAssistMCP, analyzeHeadless, PyGhidra, v.v.,
      và cách tiếp cận có SKILL.md rõ ràng đặc biệt dễ tích hợp với AI agent
    • Tôi tò mò cách tiếp cận này so với các Ghidra MCP server khác ra sao
  • Điểm cốt lõi của thread này là thảo luận về phương pháp luận
    Nói rằng “thêm obfuscation thì tỷ lệ thành công về 0%” là đúng, nhưng mục đích của thí nghiệm là xem AI có thể xử lý binary không bị làm rối như một kỹ sư reverse lành nghề hay không
    Đây là một kịch bản có thể dùng thật, như kiểm toán nội bộ hoặc phân tích mã legacy
    Điều thực sự quan trọng là xác định threat model. Nếu là mức kẻ tấn công tự động hóa thì nó đã đủ hữu ích,
    nhưng nếu là kẻ tấn công cao cấp có chủ đích né tránh AI detection thì bài test này là chưa đủ
    Kiểm chứng thực chất phải là xem hiệu năng ở mức làm rối nhẹ (ẩn import, mã hóa chuỗi)

    • Nhưng nếu không nhận ra được binary đã bị làm rối thì cũng giống như không vượt qua được CAPTCHA
      Liệu có thể gọi một robot không hái được táo khi trời nhiều mây là “chuyên gia hái táo lành nghề” hay không?
  • GPT có tỷ lệ false positive bằng 0% nên khá ổn định, nhưng tỷ lệ phát hiện chỉ khoảng 18%
    Trong khi đó Claude Opus 4.6 có tỷ lệ phát hiện cao hơn, 46%, nhưng false positive lên tới 22%
    Nếu kết hợp nhiều mô hình, để một mô hình thiết kế quy trình kiểm chứng còn mô hình khác thực hiện kiểm thử exploit thực tế, có lẽ sẽ cho kết quả thú vị hơn

    • Thực ra những phương pháp đo hiệu năng phân loại nhị phân như thế này đã tồn tại từ 100 năm trước rồi
      Nhưng từ khi mô hình sinh xuất hiện thì có vẻ mọi người quên mất
  • Điểm quan trọng là: “AI khó có thể làm phát hiện malware hoàn chỉnh, nhưng đã giúp developer thực hiện security audit ban đầu dễ hơn nhiều”
    Ngay cả developer không có kinh nghiệm reverse engineering cũng có thể phân tích sơ bộ binary đáng ngờ
    Điều này có thể mở rộng không chỉ sang security mà còn sang tối ưu hóa, gỡ lỗi, reverse phần cứng, port kiến trúc và nhiều lĩnh vực khác
    Cuối cùng, điều quan trọng là xem AI như một công cụ tạo giả thuyết, chứ không phải một bộ phân tích hoàn hảo

  • Các file thực thi trong benchmark gồm hàng trăm đến hàng nghìn hàm, còn backdoor chỉ là vài dòng trong số đó
    Vì vậy cần thăm dò có chiến lược các đường đi trọng yếu như network parser hay routine xử lý đầu vào
    Một cách là cung cấp cho LLM các chiến lược đó dưới dạng file .md

    • Nhưng làm vậy có thể làm nhiễm thí nghiệm. Chỉ cần nói “có thể có backdoor” là đã xem như cung cấp gợi ý rồi
      Chỉ một từ ngữ tinh tế trong prompt cũng có thể thay đổi kết quả
      Cuối cùng độ phức tạp của thiết kế thí nghiệm sẽ bùng nổ, và độ vững chắc của kết quả giảm đi
    • Dù vậy, xét rằng các bài toán trong nghiên cứu này được đặt khá đơn giản, thì kết quả hiện tại đã rất ấn tượng
      Nếu có thêm hướng dẫn từ chuyên gia, nó có thể tạo ra hiệu ứng khuếch đại hiệu năng mạnh mẽ
    • Tuy nhiên, khi đưa chiến lược dưới dạng tài liệu, mô hình thường chỉ bắt chước nguyên xi và giả vờ “tư duy chiến lược”
      Vẫn còn rất khó để khiến AI thật sự làm theo tư duy chiến lược của con người
  • Link benchmark trực tiếp ở đây,
    và mã nguồn mở có thể xem tại kho GitHub

  • Kết quả cho thấy Gemini có tỷ lệ dương tính giả cao nhất rất khớp với trải nghiệm của tôi
    Tôi đã dùng cả ChatGPT, Claude và Gemini, và Gemini là bên thiên lệch tích cực nhất
    Nó luôn đưa ra câu trả lời lạc quan nhất
    Tôi đã tìm một benchmark thể hiện đặc tính này bằng số liệu, và kết quả lần này có thể là bằng chứng cho điều đó

  • Tôi không phải chuyên gia, nhưng để giảm vấn đề false positive, tôi nghĩ có thể để mô hình tự chạy backdoor để xác minh hay không

    • Nhưng đa số mô hình sẽ từ chối hành vi đó vì chính sách an toàn
      Vì vậy rất khó so sánh chéo giữa các mô hình, nên thay vào đó người ta yêu cầu mô hình chỉ rõ vị trí backdoor
      Nếu tự tùy biến hoặc fine-tune mô hình thì cách bạn đề xuất có thể hữu ích
  • Việc mô hình tốt nhất chỉ phát hiện được khoảng 50% thật ra không tệ. Có thể còn tốt hơn con người
    Nhưng tôi tò mò tại sao 50% còn lại lại bị bỏ sót
    Việc Claude Opus 4.6 tìm ra backdoor rồi vẫn kết luận là “không có vấn đề” khá thú vị
    Cuối cùng nó cho thấy AI khó đạt tới sự hiểu biết hoàn chỉnh nếu không có sự hỗ trợ phán đoán từ con người