Xin chào ! Nếu đây là lần đầu tiên bạn đến với diễn đàn, xin vui lòng danh ra một phút bấm vào đây để đăng kí và tham gia thảo luận cùng VnPro.
X
 
  • Filter
  • Time
  • Show
Clear All
new posts

  • 🔓 Broken Access Control – Khi “quyền hạn” bị phá vỡ


    Trong thế giới an ninh mạng, có những lỗ hổng không cần exploit phức tạp, không cần shell, không cần payload cao siêu…
    Chỉ cần bạn truy cập được thứ không thuộc về mình – thế là đủ toang.

    Đó chính là Broken Access Control.
    ❓ Access Control là gì?

    Access Control (kiểm soát truy cập) là cơ chế quyết định:
    • Ai được làm gì?
    • Ai được xem cái gì?
    • Ai được sửa, xóa, tạo dữ liệu?
    Ví dụ:
    • User thường ❌ không được xóa tài khoản khác
    • Admin ✅ được xem toàn bộ hệ thống
    • Người A ❌ không được xem dữ liệu của người B
    Nghe thì đơn giản. Nhưng khi làm sai… hậu quả rất lớn.
    💥 Broken Access Control là gì?

    Broken Access Control xảy ra khi hệ thống không kiểm tra đúng quyền hạn, cho phép người dùng:
    • Truy cập tài nguyên không được phép
    • Thực hiện hành động vượt quyền
    • Thay đổi dữ liệu của người khác

    OWASP xếp nó Top 1 lỗ hổng nguy hiểm nhất – không phải ngẫu nhiên.
    🧨 Những ví dụ “kinh điển”

    1️⃣ IDOR – Insecure Direct Object Reference

    URL kiểu:

    /api/user/profile?id=123
    Bạn đổi 123 → 124

    ➡️ Xem được profile người khác
    ➡️ Không cần login thêm
    ➡️ Không bị chặn

    💣 Boom – IDOR.
    2️⃣ Leo thang đặc quyền (Privilege Escalation)

    User thường gửi request:
    POST /change-role role=user
    Bạn sửa thành:
    role=admin
    Server:
    • ❌ Không kiểm tra role hiện tại
    • ❌ Tin dữ liệu client gửi lên

    ➡️ Chúc mừng, bạn vừa thành admin.
    3️⃣ Bypass kiểm tra phía client

    Frontend ẩn nút Delete User
    Nhưng backend:
    • ❌ Không kiểm tra quyền
    • ❌ Chỉ dựa vào UI

    ➡️ Gửi request thủ công = xóa được user

    👉 Ẩn nút ≠ bảo mật
    🚨 Vì sao Broken Access Control nguy hiểm?
    • Không cần kỹ thuật cao
    • Khai thác cực dễ
    • Ảnh hưởng trực tiếp dữ liệu người dùng
    • Dễ bị exploit hàng loạt (automation)

    Rất nhiều vụ:
    • Leak dữ liệu cá nhân
    • Mất quyền admin
    • Chiếm hệ thống nội bộ

    … đều bắt đầu từ Access Control.
    🛠️ Nguyên nhân phổ biến
    • Kiểm tra quyền ở frontend thay vì backend
    • Tin dữ liệu từ client (role, user_id…)
    • Không kiểm tra ownership (ai sở hữu dữ liệu)
    • Logic phân quyền rối rắm, chồng chéo
    • Dev nghĩ: “Chắc không ai đoán được URL đâu” 😅

    ✅ Cách phòng tránh (Best Practices)

    🔒 Luôn kiểm tra quyền ở backend
    Backend mới là nơi ra quyết định, không phải frontend.

    🔒 Áp dụng nguyên tắc Least Privilege

    User chỉ có đúng quyền cần thiết – không hơn.
    🔒 Kiểm tra ownership

    Không chỉ hỏi:
    “User đã login chưa?”


    Mà phải hỏi:
    “User có quyền với tài nguyên này không?

    🔒 Không tin client
    • Không tin role
    • Không tin user_id
    • Không tin bất kỳ thứ gì gửi từ client

    🔒 Test thường xuyên
    • Dùng Burp Suite
    • Dùng DVWA / Juice Shop
    • Viết test cho authorization logic
    Click image for larger version

Name:	image.png
Views:	11
Size:	33.5 KB
ID:	438552
    🎯 Kết luận

    Broken Access Control không phải lỗi “cao siêu”,
    nhưng lại là lỗi phá hoại nặng nhất.

    Nếu bạn:
    • Là developer → hãy viết code phòng thủ
    • Là pentester → hãy test authorization trước tiên
    • Là người học security → nắm Access Control thật chắc
    👉 Vì khi quyền hạn bị phá vỡ,
    mọi lớp bảo mật khác gần như vô nghĩa.
Working...
X