Thao tác trọng yếu: vì sao một số việc lại hỏi cả hai thiết bị lần nữa

·6 phút đọc·Bởi SSP Editorial Team
Ảnh bìa SSP Academy: thao tác trọng yếu và ký lại trong SSP Enterprise

Thao tác trọng yếu: vì sao một số việc lại hỏi cả hai thiết bị lần nữa

Bạn đã đăng nhập. Bạn có vai trò quản trị viên. Bạn bấm "loại thành viên" — và SSP yêu cầu bạn ký bằng cả hai thiết bị, y như thể bạn đang đăng nhập lại từ đầu.

Đây không phải phiền phức vì phiền phức. Đó là một lằn ranh được vạch có chủ ý giữa những thao tác mà một token phiên nên được phép cấp quyền và những thao tác thì không, và lối lập luận đằng sau lằn ranh ấy đáng hiểu dù bạn có dùng SSP hay không.

Phiên là để tiện lợi, không phải để gánh hậu quả

Token phiên là một chứng chỉ cho người cầm. Ai giữ nó thì người đó là bạn, theo cách nhìn của máy chủ. Đó chính là điều làm phiên trở nên tiện — bạn xác thực một lần rồi hành động thoải mái — và cũng chính là điều khiến nó là nền tảng tồi cho những quyết định không thể đảo ngược.

Phiên bị đánh cắp. Qua một lỗi cross-site scripting, một chiếc laptop chưa khóa, mã độc, một bản sao lưu rò rỉ, hay đơn giản là một trình duyệt để mở trong văn phòng chung. Hướng dẫn quản lý phiên của OWASP coi việc mất cắp phiên là một điều kiện được dự liệu chứ không phải trường hợp hy hữu, và mọi thiết kế giả định ngược lại đều lạc quan.

Với phần lớn thao tác, đây là rủi ro chấp nhận được, bởi phần lớn thao tác đều đảo ngược được. Đổi tên một kho, thêm một người xem, chỉnh một thiết lập thông báo — nếu kẻ tấn công với phiên bị đánh cắp làm những việc ấy, bạn hoàn tác.

Một số thao tác thì không như vậy. Chuyển quyền sở hữu một tổ chức là trao quyền kiểm soát cho người khác. Loại một thành viên là cắt quyền truy cập của họ. Xóa một tổ chức là dứt điểm. Với những việc này, SSP đòi bằng chứng rằng người đang hành động vẫn giữ cả hai thiết bị ngay lúc này — chứ không phải đã giữ chúng vào lúc nào đó sớm hơn trong ngày.

Mười ba thao tác

Mười ba thao tác đòi phải ký lại. Chúng rơi vào bốn nhóm.

Quyền kiểm soát tổ chức

  • Chuyển quyền sở hữu
  • Xóa tổ chức

Thành viên và vai trò

  • Loại một thành viên
  • Nâng một thành viên lên quản trị viên
  • Hạ một quản trị viên

Danh tính tài khoản

  • Đổi email doanh nghiệp
  • Gỡ email doanh nghiệp

Vòng đời và quản trị kho

  • Lưu trữ một kho, và đưa nó khỏi lưu trữ
  • Đóng băng một kho, và gỡ đóng băng
  • Nâng một quản trị viên kho, và hạ họ xuống

Điều gắn kết chúng không phải là chúng chuyển tiền — chẳng thao tác nào chuyển, và cũng không thể, bởi chỉ người ký mới chuyển được tiền. Điều gắn kết chúng là chúng thay đổi ai sẽ làm được gì về sau. Đó là những thao tác mà kẻ tấn công thèm muốn để cắm rễ quyền truy cập, khóa những người chủ thật ở bên ngoài, hoặc lặng lẽ chuẩn bị cho một vụ trộm về sau.

Đáng chú ý là các thao tác liên quan tới email cũng nằm trong danh sách. Đổi email doanh nghiệp trên một tài khoản trông có vẻ hành chính, nhưng đó là nước cờ mở màn kinh điển của việc chiếm đoạt tài khoản: chuyển hướng kênh khôi phục, rồi ung dung làm việc. Đòi cả hai thiết bị cho việc đó bịt kín lối ấy.

Vì sao máy chủ viết thử thách

Cơ chế quan trọng ngang với yêu cầu, và một quyết định thiết kế gánh phần lớn công việc.

Máy chủ tạo ra thông điệp bạn ký. Máy khách thì không bao giờ.

Một thao tác trọng yếu, từng bước một

Nếu máy khách tự soạn thử thách của mình, một máy khách bị xâm phạm có thể soạn một cái thật tiện: một thông điệp mô tả thao tác vô hại, được ký bởi người dùng tin rằng mình đang làm điều vô hại, rồi phát lại vào một điểm cuối nguy hiểm. Việc máy chủ chấp bút thông điệp có nghĩa là thứ bạn ký chính là thứ sẽ được thực thi, bởi máy chủ đối chiếu chữ ký với thông điệp mà chính nó phát hành, chứ không phải với thứ nào khác.

Đây là cùng khuôn mẫu SSP dùng cho đăng nhập, và cũng là khuôn mẫu khiến xác thực dựa trên chữ ký nói chung an toàn: đừng bao giờ ký thứ bạn không nhận được từ chính bên sẽ xác minh nó.

Thử thách gắn với những gì

Thông điệp không phải một tiếng "đồng ý" chung chung. Đó là một chuỗi cụ thể chứa bốn thứ, cùng nhau khiến một chữ ký bị thu giữ trở nên vô dụng ở bất cứ nơi nào khác.

Chính xác thao tác nào. remove_membertransfer_ownership tạo ra hai thông điệp khác nhau. Chữ ký cho cái này không thể cấp quyền cho cái kia.

Chính xác mục tiêu nào. Tổ chức, kho khi có liên quan, và người bị tác động đều được nêu tên trong thông điệp. Các thao tác thuộc phạm vi kho có kèm rõ ID của kho, để chữ ký đóng băng một kho không thể phát lại nhằm đóng băng một kho khác.

Một dấu thời gian. Nó chiếm mười ba ký tự đầu của thông điệp — một vị trí cố định, bởi SSP Wallet xác thực định dạng ấy trước khi hiển thị bất cứ điều gì. Thử thách hết hạn sau mười lăm phút.

Một nonce ngẫu nhiên. Mười hai byte ngẫu nhiên mật mã, khiến mỗi thử thách là duy nhất ngay cả với cùng một thao tác nhắm vào cùng một mục tiêu trong cùng một giây.

Và thử thách chỉ dùng được một lần. Khi nó được đổi lấy quyền, máy chủ đánh dấu đã dùng trong chính thao tác nguyên tử xác thực nó — nên một chữ ký phát lại bị từ chối với "đã dùng rồi" thay vì lặng lẽ thành công lần thứ hai. Thử thách hết hạn được một chỉ mục TTL tự động dọn dẹp.

Mọi lần thử đều được ghi lại, kể cả những lần thất bại

Thao tác trọng yếu được ghi vào một log vĩnh viễn, và ở đây có một chi tiết dễ lướt qua: bản ghi được viết khi thử thách được yêu cầu, chứ không chỉ khi thao tác hoàn tất.

Nghĩa là log bao gồm cả những lần thử bị bỏ dở, những lần ký thất bại, và những lần bị từ chối. Một thao tác trọng yếu thất bại đơn lẻ thường là ai đó đổi ý. Một chùm chúng lúc ba giờ sáng thì là một câu chuyện.

Như phần còn lại của dấu vết kiểm toán trong SSP, những bản ghi này không có hạn dùng và không có tác vụ dọn dẹp. Giá trị của một log kiểm toán sống trọn vẹn ở những phần mà chẳng ai lường trước là sẽ cần.

Thực tế thì nó trông ra sao

Hãy có cả hai thiết bị bên mình trước khi bắt đầu. Thao tác trọng yếu không thể hoàn tất với một thiết bị, và thử thách hết hạn trong mười lăm phút. Nếu điện thoại của bạn ở phòng khác, hãy đi lấy trước đã.

Đọc thao tác trên điện thoại, không chỉ trên bảng điều khiển. Thông điệp mà thiết bị hiển thị nêu tên thao tác và mục tiêu. Đó là cơ hội để bạn nhận ra mục tiêu không phải người bạn nghĩ — cùng một thói quen bảo vệ bạn khi xem lại một giao dịch. Các cuộc tấn công lừa đảo nhắm vào người dùng crypto nói về việc vì sao cái nhìn thứ hai trên thiết bị thứ hai xứng đáng với vài giây bỏ ra.

Đừng gộp chúng lại. Mỗi thao tác trọng yếu có thử thách riêng và chữ ký riêng. Nếu bạn loại ba nhân viên sắp rời đi, đó là ba lần ký. Điều này có chủ ý: gộp lại sẽ đồng nghĩa một chữ ký cấp quyền cho nhiều thay đổi, đúng là tính chất mà chúng tôi đang cố tránh.

Hãy chờ chúng vào những lúc tệ nhất. Thao tác trọng yếu dồn lại đúng vào những thời khắc có người rời đi, một tài khoản bị xâm phạm, hay một kho cần đóng băng — tức là những lúc người ta căng thẳng và muốn làm cho nhanh. Biết trước rằng những việc này cần cả hai thiết bị sẽ biến một bất ngờ thành một bước trong quy trình.

Bức tranh rộng hơn về cái gì cưỡng chế cái gì — và vì sao việc ký lại nằm ở lớp giữa chứ không phải lớp mạnh nhất — có trong điều gì thực sự chặn được một giao dịch. Về cách tổ chức và các kho của nó khớp vào nhau, hãy bắt đầu từ SSP Enterprise: kho multisig cho đội nhóm.

Chia sẻ bài viết này

Bài viết liên quan