Việc viết mã có thể giao cho AI, tên miền (an toàn) có thể giao cho ai?

Tác giả: Yajin
Ngày 31 tháng 10, hơn mười trang web của các dự án DeFi đã bị tấn công. Một trong những dự án bị ảnh hưởng là Kintsu đã đăng bài trên X[1] nói rằng, tên miền mà họ mua qua Vercel đã bị tấn công ở cấp độ nhà đăng ký. Trong câu này có hai từ khóa, một là Vercel, một là nhà đăng ký. Chúng ta hãy bắt đầu từ Vercel.
Vercel là một nền tảng triển khai trang web. Các nhà phát triển gửi mã đã viết cho nó, nó chịu trách nhiệm xây dựng và đưa lên mạng, sau đó thông qua các máy chủ phân tán trên toàn cầu để gửi trang web đến tay người dùng. Vercel cũng là công ty đứng sau framework front-end Next.js[2], rất phổ biến trong giới phát triển, và hầu hết các dự án được đề cập lần này đều đặt trang web trên Vercel. Ngoài việc lưu trữ trang web, Vercel còn bán tên miền, người dùng có thể mua tên miền và quản lý phân giải trong cùng một bảng điều khiển.
Theo dữ liệu chúng tôi tìm thấy, mã của các dự án đặt trên Vercel không bị thay đổi, mà chỉ là tên miền được chỉ định đến đâu.
Sự việc này đáng để mọi nhà cung cấp dịch vụ ứng dụng quan tâm, đặc biệt là đối với các nhà cung cấp dịch vụ tài sản số. Trong hai năm qua, vibe coding đã trở nên phổ biến, tức là mô tả yêu cầu bằng ngôn ngữ tự nhiên, để AI viết chương trình. Điều này đã giảm đáng kể rào cản để phát triển ứng dụng: sử dụng AI để viết mã, gửi cho Vercel, Netlify, Cloudflare và các nền tảng triển khai khác để đưa lên chỉ bằng một cú nhấp chuột, và sau đó mua một tên miền trên nền tảng, chỉ trong vài phút có thể sở hữu một trang web khá.
Rào cản đã giảm, nhưng nguyên lý đằng sau không vì thế mà trở nên đơn giản hơn. Nhiều người không rõ tên miền được đăng ký ở đâu, ai có thể thay đổi hướng của nó, và cần chìa khóa gì để thay đổi. Vercel chỉ là một trong những loại nền tảng, những vấn đề này áp dụng cho tất cả các phương thức đưa lên chỉ bằng một cú nhấp chuột. Bài viết này muốn giải thích những vấn đề này theo cách dễ hiểu nhất có thể.
01 Một, một địa chỉ web được tìm thấy như thế nào
Quay lại với điều mà Kintsu nói về "nhà đăng ký". Để hiểu nhà đăng ký làm gì, trước tiên cần xem một địa chỉ web được tìm thấy như thế nào. Chúng ta có thể tưởng tượng trang web như một cửa hàng. Tên miền là tên cửa hàng, ví dụ như example.com; địa chỉ IP của máy chủ là số nhà của cửa hàng. Người dùng chỉ nhớ tên cửa hàng, vì vậy cần có ai đó dịch tên cửa hàng thành số nhà, việc dịch này gọi là "phân giải tên miền".
Quá trình dịch này liên quan đến ba vai trò.
Cơ quan đăng ký giống như văn phòng đăng ký tổng. Mỗi loại hậu tố đều có một cơ quan đăng ký, .com, .xyz, .finance mỗi cái đều có riêng. Cơ quan đăng ký chỉ ghi một điều: "địa chỉ hỏi đường" của một tên miền nào đó ở đâu.
Nhà đăng ký giống như một trung gian chạy việc cho người dùng. Người bình thường không thể trực tiếp đến cơ quan đăng ký để đăng ký, mà phải thông qua nhà đăng ký để mua tên miền, gia hạn, sửa đổi thông tin đăng ký. Người dùng trong bảng điều khiển của nhà đăng ký có thể chỉ định tên miền của mình được "địa chỉ hỏi đường" nào phụ trách.
Máy chủ tên miền (nameserver) chính là "địa chỉ hỏi đường". Nó có một bảng, ghi rõ tên cửa hàng tương ứng với số nhà nào. Mỗi hàng trong bảng này gọi là một bản ghi phân giải. Khi nói đến "thay đổi phân giải", thực chất là thay đổi bảng này trên máy chủ tên miền.
Khi người dùng nhập địa chỉ web vào trình duyệt, trình duyệt sẽ hỏi văn phòng đăng ký trước: "địa chỉ hỏi đường của cửa hàng này ở đâu?" Sau đó sẽ hỏi địa chỉ hỏi đường: "số nhà là bao nhiêu?" Cuối cùng theo số nhà tìm đến, mở trang web.

Trình duyệt hỏi cơ quan đăng ký trước, sau đó hỏi máy chủ tên miền, cuối cùng theo số nhà tìm đến
Vì vậy, nếu ai đó muốn lừa khách hàng đến cửa hàng giả của mình, có hai cách. Cách đầu tiên là đến địa chỉ hỏi đường, thay đổi số nhà trên bảng. Cách thứ hai kín đáo hơn, là đến nhà đăng ký, thay toàn bộ địa chỉ hỏi đường của cửa hàng này thành địa chỉ mà mình kiểm soát, sau đó ghi số nhà giả trên địa chỉ mới. Khi sử dụng cách thứ hai, chủ cửa hàng kiểm tra địa chỉ hỏi đường cũ, bảng vẫn không thay đổi một chữ nào, nhưng khách hàng đã bị dẫn đi.

Hai cách: thay đổi bảng trên địa chỉ hỏi đường, hoặc thay toàn bộ địa chỉ hỏi đường thành địa chỉ do kẻ tấn công kiểm soát
02 Hai, tên miền mua bằng một cú nhấp chuột, thuộc về ai
Hiểu rõ cơ quan đăng ký, nhà đăng ký và máy chủ tên miền, quay lại nhìn các nền tảng triển khai như Vercel. Nền tảng triển khai chịu trách nhiệm đưa chương trình đã viết lên mạng. Để giúp người dùng tiết kiệm thời gian, nhiều nền tảng triển khai đã tích hợp việc mua tên miền và quản lý phân giải vào bảng điều khiển của mình, người dùng từ việc mua tên miền đến khi trang web lên mạng, từ đầu đến cuối chỉ giao dịch với nền tảng.
Nhưng đằng sau nền tảng, các vai trò đã đề cập trước đó không thiếu một ai. Có nền tảng tự mình là nhà đăng ký, có nền tảng thì là trung gian giúp người dùng tìm nhà đăng ký, Vercel thuộc về loại sau. Chúng tôi đã kiểm tra tên miền của Kintsu, nhà đăng ký được ghi trong cơ quan đăng ký là Name.com, không phải Vercel.
Cách "một cửa" này rất tiện lợi, nhưng cái giá phải trả là người dùng thường không biết tên miền của mình còn có một nhà đăng ký, và càng không quan tâm đến mức độ an toàn của nhà đăng ký. Lấy Vercel làm ví dụ, trong bảng điều khiển và giao diện[3] của nó, máy chủ tên miền có thể thay đổi, mã ủy quyền để chuyển tên miền cũng có thể lấy được. Nói cách khác, ai nắm giữ tài khoản nền tảng hoặc quyền truy cập vào giao diện của nó, người đó có thể thay đổi hướng của tên miền, thậm chí chuyển tên miền đi.
Nhiều dự án kiểm soát mã, hợp đồng rất chặt chẽ, nhưng tên miền lại treo dưới một tài khoản, bình thường không ai xem, khi có sự cố cũng không biết tìm ai.
Đến thời đại AI, "một cú nhấp chuột" đang trở thành "không cú nhấp chuột". Công cụ dòng lệnh của Vercel[4] đã hỗ trợ việc mua và gia hạn tên miền mà không cần thao tác của con người thông qua kịch bản và trợ lý AI. Vercel còn cung cấp giao diện MCP cho trợ lý AI (một cách tiêu chuẩn để trợ lý AI gọi công cụ bên ngoài), trong đó có 28 công cụ liên quan đến tên miền và DNS[5]. Điều này có nghĩa là, nhà phát triển chỉ cần nói với AI "giúp tôi đưa trang web lên mạng, kết hợp với một tên miền", AI có thể hoàn thành việc mua tên miền, thay đổi phân giải cho họ.
Nhà phát triển không chỉ tiết kiệm được cú nhấp chuột, mà còn cả cơ hội hiểu những khâu này: tên miền được mua dưới tài khoản nào, nhà đăng ký nào đứng sau, ai có thể thay đổi nó, rất có thể từ đầu đến cuối chưa bao giờ qua mắt họ.

Nói một câu, AI đã giúp nhà phát triển mua xong tên miền, thiết lập xong phân giải
03 Ba, kẻ tấn công đã thay đổi ở đâu
Theo các báo cáo công khai[6], vào ngày 31 tháng 10, số lượng trang web bị đề cập đã tăng lên hơn mười cái. Ngoài Kintsu, còn có StonkFun, Pickle, Echelon, Origami, Fluxbeam, Stakepoint, SupSwap, Longbow, SHPRD, ApeX DeFi và các dự án DeFi khác.
Thông tin đăng ký tên miền là công khai, bất kỳ ai cũng có thể tra cứu. Chúng tôi đã tra cứu tên miền của 11 dự án trong số đó và phát hiện tất cả nhà đăng ký của chúng đều là Name.com, trong đó 7 cái đã có sự thay đổi trong thông tin đăng ký vào ngày 31 tháng 10. Tính đến 6 giờ chiều theo giờ Bắc Kinh ngày 31, vẫn còn 5 tên miền chỉ đến máy chủ của kẻ tấn công.
Kẻ tấn công đã sử dụng cả hai cách đã nói ở trên. pickle.finance[7] và stakepoint.app trên máy chủ tên miền của Vercel vẫn còn một bảng, trên bảng vẫn ghi địa chỉ máy chủ của Vercel, có thể thấy địa chỉ hỏi đường ban đầu của chúng nên ở Vercel; nhưng địa chỉ hỏi đường được ghi trong cơ quan đăng ký đã bị thay đổi thành máy chủ tên miền của Name.com vào khoảng 1 giờ sáng UTC ngày 31, địa chỉ mới ghi là 31.56.52.52.
Một trường hợp khác là, fluxbeam.xyz, supswap.xyz và apexdefi.xyz có địa chỉ hỏi đường ban đầu đã ở Name.com, thông tin đăng ký trong cơ quan đăng ký từ tháng 2 hoặc tháng 5 năm nay đã không thay đổi, nhưng bảng trên địa chỉ hỏi đường hiện cũng ghi địa chỉ 31.56.52.52, có thể suy ra bảng này đã bị thay đổi. Địa chỉ này được đăng ký dưới một công ty có tên là Snowcore[8], quốc gia đăng ký của dải IP là Hà Lan, không liên quan đến Vercel.

Các địa chỉ web khác nhau của các dự án đều được chỉ đến cùng một địa chỉ do kẻ tấn công kiểm soát
Một số tên miền khác đã được chuyển về máy chủ bình thường, một số đã chuyển sang nhà cung cấp khác, còn một số đang trong quá trình chuyển tên miền đi, có vẻ như là các bên dự án đang cứu vãn.
Cả hai cách đều có một điểm chung: đều cần có khả năng chỉnh sửa ở phía nhà đăng ký. Kẻ tấn công đã lấy quyền từ chính Name.com, hay từ sự kết nối giữa Vercel và Name.com, hoặc từ tài khoản của từng bên dự án, vẫn chưa rõ từ dữ liệu công khai. Tính đến thời điểm chúng tôi tra cứu, Vercel và Name.com vẫn chưa công bố thông tin.
Kintsu đã đề cập trong thông báo rằng việc khắc phục không thể có hiệu lực kịp thời, điều này có thể liên quan đến bộ nhớ cache. Các máy chủ phân giải ở nhiều nơi sẽ lưu trữ thông tin của địa chỉ hỏi đường trong một khoảng thời gian, thường là khoảng một giờ. Sau khi bên dự án thay đổi thông tin đăng ký, một phần máy tính của người dùng vẫn sử dụng câu trả lời cũ, tiếp tục bị dẫn đến cửa hàng giả. Điều này là suy đoán của chúng tôi, chưa được xác nhận.
04 Bốn, chìa khóa không chỉ là mật khẩu
Trước đó đã đề cập, kẻ tấn công đã lấy quyền ở phía nhà đăng ký từ đâu, hiện vẫn chưa có kết luận. Dù điểm vào ở đâu, người có thể thay đổi tên miền, cuối cùng cũng chỉ là một chìa khóa nào đó. Nói về chìa khóa, nhiều người nghĩ đến tài khoản mật khẩu và mã xác thực. Những người viết chương trình bằng AI, triển khai tự động, thực tế còn có một loại chìa khóa khác: mã thông hành (token).
Mã thông hành là một chuỗi ký tự, chương trình sử dụng nó có thể đại diện cho người dùng gọi giao diện của nền tảng, không cần mật khẩu, cũng không cần mã xác thực. Lấy Vercel làm ví dụ, khi tạo mã thông hành, cần chọn phạm vi quyền[9]: có thể chỉ quản lý một dự án, có thể quản lý tất cả dự án của một đội, hoặc có thể chọn "toàn bộ tài khoản", nhận toàn bộ quyền. Khi tạo còn phải chọn thời gian hết hạn, sau khi hết hạn mã thông hành sẽ tự động không còn hiệu lực. Phạm vi chọn càng lớn, mã thông hành một khi bị rò rỉ, thiệt hại cũng càng lớn.
Cách rò rỉ mã thông hành nhiều hơn nhiều người tưởng tượng:
• Viết vào mã hoặc tệp cấu hình. Mã thông hành bị viết vào mã, cùng nhau được gửi đến kho mã công khai, hoặc đóng gói vào front-end, bất kỳ ai cũng có thể thấy.
• Giao cho trợ lý lập trình AI. Trợ lý lập trình để giúp người dùng triển khai, sẽ đọc tệp cấu hình trong dự án, hoặc trực tiếp lấy mã thông báo mà người dùng dán vào cuộc trò chuyện; thông qua trợ lý kết nối với nền tảng triển khai MCP, bản thân nó đã nắm quyền sửa đổi tên miền và phân giải. Những nội dung này sẽ được gửi đi cùng với cuộc trò chuyện, nếu trợ lý đọc được trang web hoặc tài liệu đã bị người khác can thiệp, nó còn có thể bị dẫn dụ thực hiện những thao tác không nên thực hiện.
• Qua trạm trung chuyển. Một số người dùng vì rẻ hoặc tiện lợi, không trực tiếp gọi API của nhà cung cấp AI, mà sử dụng "trạm trung chuyển" của bên thứ ba. Tất cả nội dung cuộc trò chuyện đều đi qua trạm trung chuyển, trong đó nếu có mã thông báo, người điều hành trạm trung chuyển có thể nhìn thấy rõ ràng.
• Kết nối với các plugin và tích hợp khác nhau. Mỗi khi kết nối với một dịch vụ bên thứ ba, lại có thêm một nơi giữ chìa khóa.

Mã thông báo có thể thay đổi tên miền, có thể bị rò rỉ từ những nơi này
Cần lưu ý rằng, chưa có kết luận về điểm vào của sự kiện lần này, chúng tôi không nói rằng nó do rò rỉ mã thông báo gây ra; chỉ là trong thời đại AI viết chương trình ngày càng phổ biến, mã thông báo có thể sửa đổi máy chủ tên miền và bản ghi phân giải, cần được bảo quản cẩn thận như khóa riêng.
05 Năm, tại sao các trang web liên quan đến tài sản bị chiếm đoạt lại đặc biệt nguy hiểm
Trang web thông thường bị chiếm đoạt, người dùng có thể tiết lộ tài khoản và mật khẩu trên trang giả. Bất kỳ dịch vụ nào liên quan đến tài sản, như sàn giao dịch, ví, tổ chức thanh toán, ứng dụng DeFi, một khi tên miền bị chiếm đoạt, hậu quả thường trực tiếp hơn: mỗi thao tác của người dùng trên trang giả có thể trở thành tổn thất tài sản thực sự.
Tài sản kỹ thuật số đặc biệt như vậy. Người dùng trên trang web DeFi nhấp vào "Ủy quyền", "Đổi", "Staking", trang web gửi một giao dịch đến ví, người dùng nhấp xác nhận trong ví. Trang web gửi đến là gì, nhiều người dùng không hiểu, chỉ có thể tin vào chính địa chỉ URL. Một địa chỉ URL bị chiếm đoạt, gửi đến có thể là một giao dịch ủy quyền token cho kẻ tấn công, ký vào đó, kẻ tấn công có thể chuyển tiền bất cứ lúc nào. Một khi chuyển khoản trên chuỗi hoàn thành, gần như không thể thu hồi.
Các tổ chức thanh toán cũng tương tự. Người dùng điền số thẻ và mã xác thực trên trang thanh toán, hoặc thanh toán theo địa chỉ nhận tiền hiển thị trên trang, trang giả chỉ cần thay đổi thông tin nhận tiền, tiền sẽ rơi vào tay kẻ tấn công. Người dùng thấy tên miền, trang, quy trình đều giống hệt như thường lệ, rất khó phát hiện.
Theo tôi, sự chú ý đến an toàn trong thời đại AI cần phải được điều chỉnh. Mã ngày càng nhiều được AI viết, đội ngũ tập trung năng lực an toàn vào kiểm tra mã và kiểm toán hợp đồng là không sai, nhưng người dùng đến một trang web, vẫn phải đi qua cơ quan đăng ký, nhà đăng ký, máy chủ tên miền và nền tảng triển khai. Con đường này cũng là một phần của an toàn, và những khâu này chính là nơi AI làm nhiều nhất, con người hiểu biết ít nhất.
Hệ thống nền tảng và hợp đồng làm chặt chẽ đến đâu, chỉ cần một khâu trên con đường này bị tấn công, người dùng sẽ tự tay giao tài sản cho một trang giả.
06 Sáu, lời khuyên cho nhà cung cấp ứng dụng và nhà cung cấp dịch vụ tài sản kỹ thuật số
Xác định rõ tên miền thuộc về ai. Kiểm tra xem tên miền của mình được đăng ký tại nhà đăng ký nào, máy chủ tên miền ở đâu, tài khoản liên quan do ai quản lý. Tên miền mua một lần trên nền tảng cũng cần biết ai đứng sau.
Khóa tên miền. Bật khóa nhà đăng ký, ngăn chặn tên miền bị chuyển nhượng tùy ý. Các dự án quan trọng có thể yêu cầu khóa cơ quan đăng ký, khi cần sửa đổi thông tin quan trọng như địa chỉ, cần xác minh danh tính bằng tay.
Bảo vệ tài khoản, cũng bảo vệ mã thông báo. Tài khoản sử dụng khóa bảo mật phần cứng để thực hiện xác thực đa yếu tố. Mã thông báo chỉ cấp quyền tối thiểu cần thiết và thiết lập thời gian hết hạn. Mã thông báo không được viết vào mã, không dán vào cuộc trò chuyện AI, cũng không qua trạm trung chuyển không rõ nguồn gốc. Mã thông báo không sử dụng cần được xóa kịp thời.
Cung cấp chìa khóa riêng cho trợ lý AI. Khi để trợ lý AI giúp triển khai, hãy tạo mã thông báo riêng cho nó, chỉ mở quyền cần thiết cho dự án hiện tại, thiết lập thời gian hết hạn ngắn hơn. Các thao tác như mua tên miền, thay đổi máy chủ tên miền, chuyển nhượng tên miền nên được xác nhận bởi con người, chứ không phải để AI tự động hoàn thành.
Theo dõi sự thay đổi. Máy chủ tên miền, bản ghi phân giải, trạng thái tên miền, bất kỳ thay đổi nào cũng nên nhận được thông báo. Kẻ tấn công kích hoạt HTTPS trên trang giả, thường cần xin chứng chỉ mới cho tên miền đó, và chứng chỉ được phát hành công khai đều có hồ sơ công khai, giám sát những hồ sơ này cũng có thể phát hiện bất thường sớm.
Chuẩn bị trước kế hoạch khẩn cấp. Nghĩ ra cách thông báo cho người dùng ngay lập tức khi tên miền gặp sự cố, cách tìm đến dịch vụ khách hàng thực của nhà đăng ký. Kintsu đã phàn nàn trong thông báo rằng dịch vụ khách hàng chỉ là một robot. Gặp phải tình huống như vậy, kênh nhân tạo đã chuẩn bị trước có thể quyết định tốc độ dừng lỗ.
07 Bảy, càng dễ triển khai, càng cần rõ ràng chìa khóa thuộc về ai
AI làm cho việc viết mã trở nên dễ dàng, cũng làm cho việc triển khai, mua tên miền, cấu hình phân giải trở nên dễ dàng. Rào cản đã giảm xuống, nhưng trách nhiệm không theo đó mà giảm bớt. Người dùng nhập một địa chỉ URL, tức là đã giao phó niềm tin cho toàn bộ con đường đứng sau địa chỉ đó, cũng như mỗi người và mỗi chương trình nắm giữ chìa khóa.
Những khâu này thường không thấy, cũng rất ít người nghĩ đến, nhưng trong mắt người dùng, chúng cũng giống như mã do nhà cung cấp tự viết, đều là một phần của dịch vụ. Bất kỳ khâu nào bị mất, người dùng sẽ quy trách nhiệm cho nhà cung cấp dịch vụ.
Những công cụ thay chúng ta làm ngày càng nhiều, chúng ta còn rõ ràng mình đã giao chìa khóa nào ra ngoài không?
Liên kết tham khảo
[1] Bài viết: https://x.com/Kintsu/status/2116382643017101513 [2] Next.js: https://nextjs.org [3] API: https://vercel.com/docs/rest-api/reference/endpoints/domains-registrar [4] Công cụ dòng lệnh: https://vercel.com/docs/cli/domains [5] 28 cái: https://vercel.com/docs/mcp/vercel-mcp/tools [6] Báo cáo công khai: https://cryptoadventure.com/stepdrainer-hits-12-crypto-sites-in-dns-hijack-wave/ [7] pickle.finance: https://rdap.org/domain/pickle.finance [8] Snowcore: https://rdap.db.ripe.net/ip/31.56.52.52 [9] Phạm vi quyền hạn: https://vercel.com/kb/guide/how-do-i-use-a-vercel-api-access-token












