2017-10-12 26 views
12

Tôi có một ứng dụng web Spring MVC được bảo vệ bằng Spring Security. Cuộc sống dường như rất bình tĩnh cho đến khi tôi bị buộc phải làm một số Static Application Security Testing (SAST) và công cụ này đã ném một loạt các vấn đề bảo mật. Có một cái nhìn tại đây:Làm thế nào một cái bình có thể lan truyền một lỗ hổng trong một ứng dụng web mà nó được sử dụng?

enter image description here

Tôi đã trải qua tất cả CVEs và nhận được một bức tranh thô về các lỗ hổng. Tôi có một vài truy vấn:

  1. Làm thế nào để ứng dụng web dễ bị khai thác như vậy, khi một khung bảo mật được tích hợp với nó?

  2. Tôi có thể bỏ qua tất cả các lỗ hổng đó vì Spring Security có thể có cách giải quyết nào đó cho tất cả các lỗ hổng đó không?

+0

Tại sao bạn nghĩ vậy? Bởi vì hầu hết các lọ được sử dụng trên toàn cầu, do đó, đó sẽ là một phỏng đoán hoang dã. Quay lại vì tôi muốn chỉ ra công nghệ mà tôi đã sử dụng. –

+2

Không có gì trong [tài liệu] (https://docs.spring.io/spring-security/site/docs/current/reference/html/index.html), đó là hỗ trợ đoán hoang dã của bạn. AFAIK câu trả lời cho câu hỏi đầu tiên của bạn là: không và vì vậy câu hỏi thứ hai của bạn không có ý nghĩa, bởi vì Spring Security không xử lý các cuộc tấn công như vậy. – dur

+0

Vì tò mò, bạn đã sử dụng công cụ nào? – holmis83

Trả lời

7

Từ Spring Security manual:

Xuân An là một mạnh mẽ và tùy biến cao khuôn khổ xác thực và kiểm soát truy cập. Đây là tiêu chuẩn thực tế để bảo mật các ứng dụng dựa trên Spring.

Hãy nghĩ về bảo mật mùa xuân làm khung xác thực, nó bao gồm một phần của câu đố bảo mật.

Như một ví dụ, chúng ta hãy có một cái nhìn tại # 1 của rủi ro OWASP Top 10 ứng dụng bảo mật: A1 - tiêm
Giả sử bạn sử dụng một lọ để truy cập vào một cơ sở dữ liệu SQL (ví dụ như ngủ đông) và nó có một tiêm lỗ hổng, sau đó ứng dụng của bạn có thể dễ bị tổn thương là tốt. Tuy nhiên, ngay cả khi hibernate không có bất kỳ lỗi bảo mật nào, nếu một lập trình viên nối một truy vấn SQL với nhau mà không cần phải thoát khỏi đầu vào của người dùng thì ứng dụng đó rất dễ bị tấn công tiêm.
Bảo mật mùa xuân không bảo vệ ứng dụng của bạn khỏi một trong các cuộc tấn công tiêm này.

Nếu bình có lỗ hổng và bạn đang gọi các phương pháp/tính năng dễ bị tổn thương thì ứng dụng của bạn cũng có thể có lỗ hổng đó, nó phụ thuộc rất nhiều vào lỗ hổng và cách hoạt động của ứng dụng. jar.

Đối với một cái nhìn nhanh qua OWASP Top 10 Application Security Risks khác:
A1-Injection - Không bảo vệ khỏi Xuân An
Xác thực A2-hỏng và quản lý phiên - Xuân An có thể giúp quản lý một số trong số này, tuy nhiên một bỏ lỡ cấu hình bảo mật mùa xuân sẽ phơi bày những.
A3-Cross-Site Scripting (XSS) - Không bảo vệ khỏi Xuân An
A4-không an toàn đối tượng trực tiếp tham khảo - Bảo vệ Không thêm từ Xuân An (Spring Security mang đến cho bạn những công cụ để quản lý này)
A5-an sai - Không bảo vệ khỏi xuân an
A6-Sensitive Exposure liệu - xuân an có thể hỗ trợ này tuy nhiên nó cũng phụ thuộc rất nhiều vào cách bạn lưu trữ và quản lý dữ liệu của bạn (file log Ví dụ)
A7 -Missing Chức năng cấp Acces s Control - Nếu kiểm soát truy cập đã bị bỏ lỡ, Spring Security không thể giúp bạn, tuy nhiên bảo mật mùa xuân giúp bạn dễ dàng thêm
Giả mạo yêu cầu qua trang web A8 (CSRF) - Bảo mật mùa xuân (tùy thuộc vào cách thức ứng dụng của bạn được định cấu hình) sẽ hỗ trợ bạn hoặc thậm chí quản lý rủi ro này cho bạn.
A9-Sử dụng thành phần với lỗ hổng đã biết - Đây là của CVE bạn đã liệt kê trong câu hỏi của bạn - Không bảo vệ khỏi Xuân An
A10-unvalidated Chuyển hướng và đạo - Xuân An có thể được sử dụng để quản lý này tuy nhiên nó doesn 't bảo vệ ứng dụng của bạn từ này ra khỏi hộp

danh sách các CVEs tìm thấy trong STAT của ứng dụng của bạn là một ví dụ về A9-Sử dụng thành phần với lỗ hổng đã biết có một cái nhìn tại OWASP wiki for more information.

Ví dụ tấn công kịch bản

lỗ hổng phần có thể gây ra hầu hết các loại rủi ro tưởng tượng, từ tầm thường để phần mềm độc hại tinh vi được thiết kế để nhắm mục tiêu một tổ chức cụ thể. Linh kiện hầu như luôn luôn chạy với đặc quyền đầy đủ của ứng dụng, vì vậy sai sót trong bất kỳ thành phần có thể nghiêm túc, Hai thành phần dễ bị tổn thương sau đã được tải về lần 22m trong 2011.

  • Apache CXF Xác thực Bypass - Bằng không cung cấp mã thông báo nhận dạng, kẻ tấn công có thể gọi bất kỳ dịch vụ web nào có quyền đầy đủ . (Apache CXF là một khung dịch vụ, không bị nhầm lẫn với Máy chủ ứng dụng Apache.)
  • Thực thi mã từ xa mùa xuân - Lạm dụng ngôn ngữ biểu thức triển khai trong Spring cho phép kẻ tấn công thực thi mã tùy ý, chiếm hữu hiệu quả máy chủ.

Mọi ứng dụng sử dụng một trong các thư viện dễ bị tổn thương này là dễ bị tấn công vì cả hai thành phần này đều có thể truy cập trực tiếp bởi người dùng ứng dụng. Các thư viện dễ bị tổn thương khác, được sử dụng sâu hơn trong một ứng dụng, có thể khó khai thác hơn.

Lưu ý đoạn cuối cùng, thành phần (jar) càng khó khai thác, điều đó không có nghĩa là một thực thể được xác định không thể khai thác chúng.

Tóm lại, Spring Security là một công cụ tuyệt vời để quản lý xác thực và kiểm soát truy cập trong ứng dụng của bạn nhưng nó không phải là một viên đạn ma thuật để khắc phục mọi sự cố bảo mật.

Các vấn đề liên quan