Thật sự xin lỗi người dùng GitHub có tên @reset
(discuss.systems)- Trong một thảo luận trên GitHub Issues về việc đặt thanh ghi về 0, nội dung lại bị xử lý thành mention người dùng @reset, khiến một người không liên quan liên tục nhận email thông báo
- Nguyên nhân là GitHub diễn giải các chuỗi như
@resetthành mention tự động, nên những từ trong ngữ cảnh kỹ thuật có thể dẫn đến việc gọi nhầm người dùng thật - Những handle ngắn trùng với thuật ngữ kỹ thuật hoặc placeholder như
@boxed,@stack,@else,@font,@acmecũng gặp tình trạng bị làm phiền bởi các thông báo tương tự - Đã có đề xuất dùng dấu backtick hoặc tránh kiểu
@[any_text], nhưng vì thông báo vẫn có thể phát sinh trong commit message và bình luận PR·issue nên rất khó tránh hoàn toàn - Người dùng
@resetđược cho là đã vui vẻ đón nhận chuyện này trong phần bình luận trên Hacker News, nhưng các handle ngắn và phổ biến rất dễ xung đột với tính năng mention tự động của các công cụ dành cho lập trình viên
Sự cố mention @reset
- Adrian Sampson đã xin lỗi vì trong lúc nói về việc đặt thanh ghi về 0 trên GitHub, anh vô tình gửi email thông báo đến người dùng
@reset - Bình luận issue GitHub được liên kết là bình luận issue trong kho
cucapra/calyx, và trọng tâm vấn đề là@resetđã bị hiểu là tên người dùng GitHub - Trong ngữ cảnh kỹ thuật của câu “setting registers to zero”, từ
resetxuất hiện rất tự nhiên, và khi gắn thêm@thì nó trở thành mention người dùng thật
Những thông báo nhầm mà các handle ngắn nhận được
- Những handle trùng với thuật ngữ kỹ thuật hoặc định danh phổ biến rất dễ nhận các thông báo ngoài ý muốn trên nhiều dịch vụ
- Người dùng
@boxeddùng cùng một nickname trên GitHub và Mastodon, và cho biết mọi người thường viết@boxedtrong commit message, khiến họ nhận rất nhiều thông báo GitHub - Người dùng
@stacknói rằng khi một ngôn ngữ nào đó có biến liên quan đến stack kèm@, họ sẽ tự động nhận được thông báo - Một người từng dùng
@elsecuối cùng đã phải bỏ handle đó vì quá nhiều thông báo từ PR và bình luận - Người dùng
@acmenhận nhiều thông báo vì trùng với placeholder của nhiều framework - Trong các cuộc thảo luận về CSS, khi bàn về
@font-face, người dùng@fontliên tục gặp phiền toái
- Người dùng
Khó tránh cơ chế mention tự động của GitHub
- Như phản hồi kiểu “không thể escape ký tự
@”, cơ chế mention tự động của GitHub được chỉ ra là nguyên nhân cốt lõi - Có lời khuyên rằng không nên trực tiếp viết
@[any_text]trong GitHub Issues hoặc PR - Cũng có đề xuất rằng bọc trong dấu backtick có thể giúp ích
- Trong những không gian văn bản mà lập trình viên thường dùng như code, chú thích, commit message và bình luận issue, dạng
@từ_ngữcó thể xung đột với tên người dùng
Những ví dụ liên quan mang màu sắc đùa vui
- Tình huống này được xem là một tác dụng phụ của việc chọn các định danh ngắn và phổ biến
- Có người nói nó giống câu chuyện một nhà nghiên cứu bảo mật mua biển số
NULLrồi nhận các vé vi phạm giao thông vốn chưa được gán cho ai - Cũng có người nhớ đến chuyện Steve Wozniak sau khi có được số điện thoại
888-8888, trẻ con cứ bấm lặp lại các nút khiến cuộc gọi được thực hiện - Trên IRC, một người dùng tên
pokeskể rằng mọi người thường gõ nhầm/me pokes [name]thành/msg, khiến họ thường xuyên nhận tin nhắn riêng - Trên Mastodon cũng có trường hợp ký tự mặt
@_@có thể gửi thông báo đến người dùng@_trên một instance cụ thể
Phản ứng của người dùng @reset
- Người dùng
@resetđược cho là đã để lại bình luận trên Hacker News với ý rằng họ trả lời mỗi khi nhận được thông báo, cười về chuyện đó và thực sự thấy thú vị - Phản ứng tiếp theo mang không khí nhẹ nhõm vì biết được điều này
- Dù vậy, toàn bộ câu chuyện vẫn cho thấy khi các handle ngắn và phổ biến gặp tính năng mention tự động trên các nền tảng phát triển, những người không liên quan có thể liên tục nhận thông báo ngoài ý muốn
1 bình luận
Ý kiến trên Hacker News
@reset đây. Hễ được mention bằng @ là tôi luôn trả lời. Vừa buồn cười, vừa thật sự rất vui khi sau đó được xem mọi người đang xây dựng gì
Mong mọi người cứ tiếp tục làm vậy; đó là một phần khá thú vị trong ngày của tôi
Trước đây tôi làm ở Realm, một công ty cơ sở dữ liệu di động. Chúng tôi có một tích hợp đăng lại lên Slack mỗi khi @realm được nhắc đến trên Twitter, để xem chuyện gì đang diễn ra
Một buổi sáng, kênh #twitter gần như bị lấp đầy bởi nội dung gần như khiêu dâm. Những chàng trai trẻ mặc đồ hở hang khoe cơ bụng và cười với camera
Hóa ra ai đó đã gắn một bot đăng lại bài Instagram lên Twitter, trong khi Instagram cho phép dấu chấm trong tên người dùng còn Twitter thì không. Tài khoản IG có lẽ là @realm.of.beauty, và Twitter diễn giải thẳng thành @realm
Khi lướt qua hashtag hoặc mention của chúng tôi, thỉnh thoảng lại thấy cảnh một diễn viên trẻ bị đánh khêu gợi vào mông trần bằng thứ gì đó giống gậy cricket
Ở công ty cũ, chúng tôi quyết định tạo một kênh Slack đặt theo tên chỉ thị tiền xử lý C. Có lẽ là #define hoặc #endif. Một vài người phát hiện ra và hiểu trò đùa
Nhưng vài tháng sau, quản trị viên liên hệ hỏi có thể xóa kênh đó không. Trong các tổ chức lớn, Slack biết những kênh không nên hiện ra với các bộ phận khác của tổ chức; vì thế các mention về chỉ thị tiền xử lý C bị kiểm duyệt với những người ngoài nhóm của tôi ^^;
Tôi từng lỡ dán một backtrace vào issue GitHub mà không dùng code block. Stack khá sâu và mỗi dòng bắt đầu kiểu “#0”, “#1”, “#2”, GitHub biến tất cả thành liên kết tới issue có số tương ứng
Thậm chí mỗi issue còn nhận thông báo tham chiếu ngược, và dường như không có cách nào hoàn tác hành vi đó
Vấn đề là khi merge template đã cập nhật vào các repo con, issue trong từng repo con cũng bị đóng luôn
Họ gặp vấn đề này từ rất sớm khi di chuyển từ Launchpad, nên chỉ cần đánh số lại hai ba issue đã được tạo với số thấp; không phải chuyện lớn
Những người gặp bug đôi khi @ tôi chỉ vì gần đây tôi có đóng góp vào repo. Những lúc đó, nếu tôi chỉ trả lời “LGTM Approved” thì họ nổi giận
Tôi chẳng quan tâm họ check in gì vào dự án này. Đâu phải dự án của tôi
Có lần tôi đổi số điện thoại sao cho 8 chữ số cuối là 69696969. Lúc đó tôi nghĩ nó cực kỳ buồn cười
Rồi tôi phát hiện người ta đã viết bừa số đó lên mọi buồng vệ sinh kiểu “Muốn vui vẻ thì gọi XYZ69696969”, và đêm nào cũng có cuộc gọi suốt đêm
Sau đó mới biết là các em bé đang bấm nút trên điện thoại của bố mẹ, và số toàn 8 có vẻ rất dễ để trẻ con bấm
https://www.wired.com/1998/09/woz/
https://www.spiegel.de/panorama/falsche-nummer-beckenbauers-...
GitHub có vài tính năng khá nguy hiểm ở phần tag và mention. Ví dụ khi thêm ai đó vào tổ chức, tên người dùng sẽ được tự động hoàn thành
Có một người có tên rất phổ biến, và chúng tôi từng lỡ thêm nhầm một người có tên tương tự nhưng không phải người đó vào tổ chức. May là đã gỡ họ ra trước khi họ chấp nhận lời mời và thêm đúng người
Trên GitHub, thỉnh thoảng tôi bị tag như một múi giờ
Nghĩ ra một đường spam khá thú vị. Chỉ cần tạo một PR quảng cáo thứ gì đó, rồi @ hàng loạt những người đã cào dữ liệu về là được
Hướng tấn công cũng thú vị. Lấy một tên @ dễ gây nhầm lẫn rồi theo dõi xem mình có trở thành reviewer của PR nào không. Sau đó thêm mã độc vào PR đó và merge là xong
Nói thêm, khi thiết lập quyền truy cập bảo mật cho tổ chức ở nơi làm việc, việc có thể thêm bất kỳ ai trên toàn thế giới từ phần tìm kiếm tổ hợp cũng thật ngu ngốc. Thậm chí không có tùy chọn lọc chỉ người trong nội bộ tổ chức
Và đa số mọi người dùng các handle kỳ lạ trên GitHub công việc hoặc cá nhân. Vì vậy nếu dùng UI thì hoặc con người phải trở thành bộ so sánh chuỗi xuất sắc, hoặc phải tìm handle của từng người rồi sao chép-dán từng cái một
Cách tấn công thứ ba là tạo hàng loạt tài khoản có tên giống nhân viên của công ty mục tiêu, rồi hy vọng ai đó lỡ tay thêm vào kho lưu trữ của tổ chức
Một người dùng GitHub gửi thông báo tới 400 nghìn người [2022]
https://news.ycombinator.com/item?id=31627061
Tôi từng khá bối rối khi biết rằng nếu liên kết đến một issue GitHub ở repository khác, issue được liên kết sẽ xuất hiện backlink. Xóa liên kết cũng không hoàn tác được; phải xóa hẳn issue
Ước gì có thể tắt tính năng này
May là ở chế độ ẩn danh thì nó biến mất, và đăng nhập bằng tài khoản khác cũng không thấy. Không phải ai cũng nhìn thấy, nhưng trong chốc lát đó là một bất ngờ khá khó chịu
Nhưng việc nó không biến mất ngay cả khi chỉnh sửa để xóa, thậm chí xóa cả bình luận chứa liên kết đó, thì cực kỳ ngu ngốc và khó chịu
Việc xem một issue ảnh hưởng thế nào đến dự án khác là điều tốt, và có thể là thông tin khá hữu ích
Tuy nhiên mong là chỉ làm vậy trong repository cá nhân mà chỉ bạn đóng góp. Nếu không, với người bấm vào thì trông cực kỳ đáng ngờ