Đánh giá mức độ nguy hiểm các lỗ hổng trên các plugin của Wordpress như thế nào?
Wordpress là một framework được sử dụng rất phổ biến hiện nay, nó cung cấp chức năng cho phép sử dụng các plugin từ bên thứ ba, các lỗ hổng trong các plugin của wordpress được tìm thấy rất thường xuyên với các mức độ nguy hiểm khác nhau.
Bài viết này đưa ra để cung cấp những chủ sở hữu, người quản trị website có được những cái nhìn chính xác về mức độ nguy hiểm của các lỗ hổng được công bố trên các plugin của wordpress
Ảnh hưởng của quyền tới việc khai thác lỗ hổng
Trái với suy nghĩ của nhiều người, khi nghe thấy SQL injection không có nghĩa là ai đó có thể thực sự có thể hack được website của bạn. Vấn đề chỉ thực sự trở nên nghiêm trọng khi attacker có thể thể thực hiện tấn công mà không cần phải thực hiện các bước xác thực về quyền.
Khi một cuộc tấn công chỉ có thể xảy ra với điều kiện kẻ tấn công phải xác thực để có được đặc quyền nào đó trước khi thực hiện tấn công, thì mức độ nghiêm trọng của lỗ hổng đó cũng giảm xuống.
Dưới góc độ an ninh, cần đảm bảo việc thiết lập quyền tối thiểu cho người sử dụng theo từng vai trò khác nhau. Đảm bảo họ có thể thực hiện công việc của mình không hơn không kém. Điều này giảm thiểu nguy cơ có thể bị attacker lợi dụng các quyền đó để thực hiện các cuộc tấn công.
Cách chấm điểm mức độ nguy hiểm của các lỗ hổng trong các Plugin của WordPress
DREAD được phát triển bới Microsoft nhiều năm trước đây và tới thời điểm hiện tại, nó không được sử dụng rộng rãi. Tuy nhiên, nó sẽ rất hữu ích khi đánh giá trên các ứng dụng web đặc biệt là các Content Management System (CMS). Việc sử dụng điểm DREAD sẽ cung cấp cho chúng ta một cái nhìn khách quan về mức độ nghiêm trọng của các lỗ hổng
DREAD gồm 5 tiêu chí:
- Damage – Cuộc tấn công sẽ tồi tệ như thế nào?
- Reproducibility – Việc thực hiện cuộc tấn công dễ dàng như thế nào?
- Exploitability – Mất bao nhiêu bước để thực hiện cuộc tấn công
- Affected Users – Có báo nhiêu người dùng sẽ bị ảnh hưởng bởi lỗ hổng?
- Discoverability – Việc phát hiện ra các mỗi đe dọa dễ dàng như thế nào?
Mỗi tiêu chí đều có số điểm từ 0 - 10, lấy tổng điểm của các tiêu chí này và chia đều cho 5 sẽ được điểm đánh giá mức độ nguy hiểm của 1 lỗ hổng.
Đánh giá điểm cho từng tiêu chí:
1. Damage
- 0: Mức độ nguy hiểm mà nó gây ra giống với những gì quyền mà nó yêu cầu để khai thác thác lỗ hổng có thể làm được. Ví dụ: Lỗ hổng SQLi cần quyền admin để khai thác, tất cả những gì attacker có thể làm được như đánh cắp dữ liệu, xóa cơ sở dữ liệu… thì vai trò admin đều có thể thực hiện được.
- 3: Rò rỉ thông tin
- 5: XSS
- 8: SQL injections
- 10: Thực thi code từ xa không cần xác thực và SQL injections
2. Reproducibility
- 0: Yêu cầu quyền admin
- 2: Yêu cầu quyền editor
- 3: Yêu cầu quyền author
- 6: Yêu cầu quyền Subscriber
- 10: Không cần xác thực quyền
3. Exploitability
- 0: Hoàn toàn bằng tay và mất rất nhiều thời gian
- 3: Khó để khai thác tự động (sử dụng tool), yêu cầu quyền author hoặc cao hơn
- 5: Khó để khai thác tự động (sử dụng tool), yêu cầu login
- 8: Dễ dàng để khai thác tự động (sử dụng tool), cần thực hiện nhiều bước
- 10: Chỉ cần 1 cú click trên trình duyệt
4. Affected users
- 0: Ít hơn 1k website sử dụng
- 5: Trên 100k website sử dụng
- 10: Trên 1m website sử dụng
5. Discoverability
- 0: Bạn phải nỗ lực khai thác để xác định xem nó hoạt động hay không
- 3: Bạn phải đoán và yêu cầu login
- 5: Bạn phải đoán nhưng có thể tấn công từ xa
- 10: Bạn biết chắc rằng plugin đó được cài đặt
Một số ví dụ:
MainWP-Child: Password Bypass / Mức độ nguy hiểm: Cao
Lỗ hổng trên plugin MainWP được đánh giá mức độ nguy hiểm cao do việc khai thác dễ dàng của lỗ hổng này và cho phép bất cứ ai chiếm quyền truy cập của admin.
Điểm DREAD:
D: 10
R: 10
E: 9
A: 5
D: 6
Điểm đánh giá: 8 (Cao) ((10 + 10 + 9 + 5 + 6)/5)
WooCommerce: SQL Injection / Mức độ nguy hiểm: Rất thấp
Lỗ hổng SQLi tồn tại trong plugin WooCommerce, tuy nhiên nó yêu cầu quyền admin để có thể thực hiện khai thác. Do đó được đánh giá rất thấp.
D: 0 (mức độ nguy hiểm lỗ hổng này có thể gây ra giống với những gì có thể làm được dưới quyền admin – quyền yêu cầu để khai thác lỗ hổng này)
R: 0 (yêu cầu quyền admin)
E: 1
A: 10 (1m+ cài đặt)
D: 3
Điểm đánh giá là: 2 (Rất thấp) ((0 + 0 + 1 + 10 + 3)/5)
Việc đánh giá các lỗ hổng và những ảnh hưởng của chúng luôn là một công việc không dễ dàng. Một lỗ hổng được đánh giá với mức độ nguy hiểm thấp (dựa trên điểm DREAD) không có nghĩa là nó sẽ không được sử dụng để tấn công vào website của bạn. Do đó, bạn vẫn cần phải có những biện pháp như cập nhật các bản vá mới nhất, sử dụng Firewall… để luôn đảm bảo website được ở trong trạng thái an toàn.
Bài viết này đưa ra để cung cấp những chủ sở hữu, người quản trị website có được những cái nhìn chính xác về mức độ nguy hiểm của các lỗ hổng được công bố trên các plugin của wordpress
Ảnh hưởng của quyền tới việc khai thác lỗ hổng
Trái với suy nghĩ của nhiều người, khi nghe thấy SQL injection không có nghĩa là ai đó có thể thực sự có thể hack được website của bạn. Vấn đề chỉ thực sự trở nên nghiêm trọng khi attacker có thể thể thực hiện tấn công mà không cần phải thực hiện các bước xác thực về quyền.
Khi một cuộc tấn công chỉ có thể xảy ra với điều kiện kẻ tấn công phải xác thực để có được đặc quyền nào đó trước khi thực hiện tấn công, thì mức độ nghiêm trọng của lỗ hổng đó cũng giảm xuống.
Dưới góc độ an ninh, cần đảm bảo việc thiết lập quyền tối thiểu cho người sử dụng theo từng vai trò khác nhau. Đảm bảo họ có thể thực hiện công việc của mình không hơn không kém. Điều này giảm thiểu nguy cơ có thể bị attacker lợi dụng các quyền đó để thực hiện các cuộc tấn công.
Cách chấm điểm mức độ nguy hiểm của các lỗ hổng trong các Plugin của WordPress
DREAD được phát triển bới Microsoft nhiều năm trước đây và tới thời điểm hiện tại, nó không được sử dụng rộng rãi. Tuy nhiên, nó sẽ rất hữu ích khi đánh giá trên các ứng dụng web đặc biệt là các Content Management System (CMS). Việc sử dụng điểm DREAD sẽ cung cấp cho chúng ta một cái nhìn khách quan về mức độ nghiêm trọng của các lỗ hổng
DREAD gồm 5 tiêu chí:
- Damage – Cuộc tấn công sẽ tồi tệ như thế nào?
- Reproducibility – Việc thực hiện cuộc tấn công dễ dàng như thế nào?
- Exploitability – Mất bao nhiêu bước để thực hiện cuộc tấn công
- Affected Users – Có báo nhiêu người dùng sẽ bị ảnh hưởng bởi lỗ hổng?
- Discoverability – Việc phát hiện ra các mỗi đe dọa dễ dàng như thế nào?
Mỗi tiêu chí đều có số điểm từ 0 - 10, lấy tổng điểm của các tiêu chí này và chia đều cho 5 sẽ được điểm đánh giá mức độ nguy hiểm của 1 lỗ hổng.
Đánh giá điểm cho từng tiêu chí:
1. Damage
- 0: Mức độ nguy hiểm mà nó gây ra giống với những gì quyền mà nó yêu cầu để khai thác thác lỗ hổng có thể làm được. Ví dụ: Lỗ hổng SQLi cần quyền admin để khai thác, tất cả những gì attacker có thể làm được như đánh cắp dữ liệu, xóa cơ sở dữ liệu… thì vai trò admin đều có thể thực hiện được.
- 3: Rò rỉ thông tin
- 5: XSS
- 8: SQL injections
- 10: Thực thi code từ xa không cần xác thực và SQL injections
2. Reproducibility
- 0: Yêu cầu quyền admin
- 2: Yêu cầu quyền editor
- 3: Yêu cầu quyền author
- 6: Yêu cầu quyền Subscriber
- 10: Không cần xác thực quyền
3. Exploitability
- 0: Hoàn toàn bằng tay và mất rất nhiều thời gian
- 3: Khó để khai thác tự động (sử dụng tool), yêu cầu quyền author hoặc cao hơn
- 5: Khó để khai thác tự động (sử dụng tool), yêu cầu login
- 8: Dễ dàng để khai thác tự động (sử dụng tool), cần thực hiện nhiều bước
- 10: Chỉ cần 1 cú click trên trình duyệt
4. Affected users
- 0: Ít hơn 1k website sử dụng
- 5: Trên 100k website sử dụng
- 10: Trên 1m website sử dụng
5. Discoverability
- 0: Bạn phải nỗ lực khai thác để xác định xem nó hoạt động hay không
- 3: Bạn phải đoán và yêu cầu login
- 5: Bạn phải đoán nhưng có thể tấn công từ xa
- 10: Bạn biết chắc rằng plugin đó được cài đặt
Một số ví dụ:
MainWP-Child: Password Bypass / Mức độ nguy hiểm: Cao
Lỗ hổng trên plugin MainWP được đánh giá mức độ nguy hiểm cao do việc khai thác dễ dàng của lỗ hổng này và cho phép bất cứ ai chiếm quyền truy cập của admin.
Điểm DREAD:
D: 10
R: 10
E: 9
A: 5
D: 6
Điểm đánh giá: 8 (Cao) ((10 + 10 + 9 + 5 + 6)/5)
WooCommerce: SQL Injection / Mức độ nguy hiểm: Rất thấp
Lỗ hổng SQLi tồn tại trong plugin WooCommerce, tuy nhiên nó yêu cầu quyền admin để có thể thực hiện khai thác. Do đó được đánh giá rất thấp.
D: 0 (mức độ nguy hiểm lỗ hổng này có thể gây ra giống với những gì có thể làm được dưới quyền admin – quyền yêu cầu để khai thác lỗ hổng này)
R: 0 (yêu cầu quyền admin)
E: 1
A: 10 (1m+ cài đặt)
D: 3
Điểm đánh giá là: 2 (Rất thấp) ((0 + 0 + 1 + 10 + 3)/5)
Việc đánh giá các lỗ hổng và những ảnh hưởng của chúng luôn là một công việc không dễ dàng. Một lỗ hổng được đánh giá với mức độ nguy hiểm thấp (dựa trên điểm DREAD) không có nghĩa là nó sẽ không được sử dụng để tấn công vào website của bạn. Do đó, bạn vẫn cần phải có những biện pháp như cập nhật các bản vá mới nhất, sử dụng Firewall… để luôn đảm bảo website được ở trong trạng thái an toàn.