BigSig, một lỗ hổng trong Mozilla NSS có thể cho phép thực thi mã

Tin tức về xác định một lỗ hổng nghiêm trọng (đã được liệt kê theo CVE-2021-43527) en bộ thư viện mật mã NSS (Dịch vụ an ninh mạng) từ Mozilla có thể dẫn đến việc thực thi mã độc hại khi xử lý chữ ký số DSA hoặc RSA-PSS được chỉ định bằng DER (Quy tắc mã hóa phân biệt).

Vấn đề thể hiện trong các ứng dụng sử dụng NSS để xử lý chữ ký số CMS, S / MIME, PKCS # 7 và PKCS # 12, hoặc khi xác minh chứng chỉ trong triển khai TLS, X.509, OCSP và CRL. Lỗ hổng bảo mật có thể phát sinh trong các ứng dụng máy khách và máy chủ khác nhau có hỗ trợ TLS, DTLS và S / MIME, ứng dụng email và trình xem PDF sử dụng lệnh gọi NSS CERT_VerifyCertificate () để xác minh chữ ký số.

LibreOffice, Evolution và Evince được đề cập đến như những ví dụ về các ứng dụng dễ bị tấn công. Về khả năng, sự cố cũng có thể ảnh hưởng đến các dự án như Pidgin, Apache OpenOffice, Suricata, Curl, trong số những dự án khác.

Đồng thời lỗ hổng bảo mật không xuất hiện trong Firefox, Thunderbird và Tor Browser, sử dụng thư viện mozilla :: pkix riêng biệt để xác minh, cũng là một phần của NSS. Các Trình duyệt dựa trên Chrome (trừ khi chúng được biên dịch cụ thể với NSS), sử dụng NSS cho đến năm 2015, nhưng sau đó được chuyển sang BoringSSL, họ không bị ảnh hưởng bởi vấn đề.

Lỗ hổng bảo mật là do lỗi trong mã xác minh chứng chỉ trong vfy_CreateContext chức năng của tệp secvfy.c. Lỗi tự xuất hiện cả khi máy khách đọc chứng chỉ từ máy chủ như khi máy chủ xử lý các chứng chỉ của máy khách.

Khi xác minh chữ ký điện tử được mã hóa DER, NSS giải mã chữ ký thành bộ đệm có kích thước cố định và chuyển bộ đệm này đến mô-đun PKCS # 11. Trong quá trình xử lý hậu kỳ, đối với chữ ký DSA và RSA-PSS, kích thước được xác minh không chính xác, dẫn đến trong đó dẫn đến tràn bộ đệm được cấp phát cho cấu trúc VFYContextStr, nếu kích thước của chữ ký số vượt quá 16384 bit (2048 byte được cấp phát cho bộ đệm, nhưng không được xác minh rằng chữ ký có thể lớn hơn).

Mã chứa lỗ hổng bảo mật có từ năm 2003, nhưng nó không phải là một mối đe dọa cho đến khi tái cấu trúc vào năm 2012. Vào năm 2017, sai lầm tương tự đã xảy ra khi triển khai hỗ trợ RSA-PSS. Để thực hiện một cuộc tấn công, không cần thiết phải tạo ra một số khóa sử dụng nhiều tài nguyên để có được dữ liệu cần thiết, vì hiện tượng tràn xảy ra trong giai đoạn trước khi xác minh tính hợp lệ của chữ ký điện tử. Phần dữ liệu nằm ngoài giới hạn được ghi vào vùng bộ nhớ có chứa các con trỏ hàm, giúp dễ dàng tạo các khai thác đang hoạt động.

Lỗ hổng bảo mật đã được các nhà nghiên cứu của Google Project Zero xác định trong quá trình thử nghiệm với các phương pháp kiểm tra fuzzing mới và là một minh chứng tốt về việc các lỗ hổng nhỏ bé có thể không bị phát hiện trong một thời gian dài trong một dự án được biết đến đã được thử nghiệm rộng rãi như thế nào.

Đối với các vấn đề chính mà vấn đề không được chú ý trong một khoảng thời gian dài:

  • Thư viện ổ đĩa NSS và các bài kiểm tra fuzzing không được thực hiện toàn bộ mà ở cấp độ thành phần riêng lẻ.
  • Ví dụ, mã để giải mã DER và xử lý chứng chỉ đã được xác minh riêng biệt; Trong quá trình mờ, một chứng chỉ có thể đã được lấy, dẫn đến biểu hiện của lỗ hổng được đề cập, nhưng xác minh của nó không đến được mã xác minh và vấn đề không được tiết lộ.
  • Trong quá trình kiểm tra fuzzing, các giới hạn nghiêm ngặt được đặt ra đối với kích thước của đầu ra (10,000 byte) trong trường hợp không có giới hạn như vậy trong NSS (nhiều cấu trúc ở chế độ bình thường có thể lớn hơn 10,000 byte, do đó, để xác định vấn đề, cần nhiều dữ liệu đầu vào hơn ). Để xác minh đầy đủ, giới hạn phải là 2 24 -1 byte (16 MB), tương ứng với kích thước tối đa của chứng chỉ được phép trong TLS.
  • Quan niệm sai lầm về độ bao phủ của mã bằng các thử nghiệm mờ. Mã dễ bị tấn công đã được kiểm tra tích cực, nhưng sử dụng bộ nạp, không thể tạo ra dữ liệu đầu vào cần thiết. Ví dụ: fuzzer tls_server_target đã sử dụng một tập hợp các chứng chỉ out-of-the-box được xác định trước, điều này giới hạn việc xác minh mã xác minh chứng chỉ chỉ với các thông báo TLS và các thay đổi trạng thái giao thức.

Cuối cùng, Điều đáng nói là sự cố với tên mã BigSig đã được khắc phục trong NSS 3.73 và NSS ESR 3.68.1 và các bản cập nhật của giải pháp ở dạng gói đã được phát hành trong các bản phân phối khác nhau: Debian, RHEL, Ubuntu, SUSE, Arch Linux, Gentoo, FreeBSD, v.v.

Nếu bạn muốn biết thêm về nó, bạn có thể tham khảo liên kết sau.


Để lại bình luận của bạn

địa chỉ email của bạn sẽ không được công bố. Các trường bắt buộc được đánh dấu bằng *

*

*

  1. Chịu trách nhiệm về dữ liệu: AB Internet Networks 2008 SL
  2. Mục đích của dữ liệu: Kiểm soát SPAM, quản lý bình luận.
  3. Hợp pháp: Sự đồng ý của bạn
  4. Truyền thông dữ liệu: Dữ liệu sẽ không được thông báo cho các bên thứ ba trừ khi có nghĩa vụ pháp lý.
  5. Lưu trữ dữ liệu: Cơ sở dữ liệu do Occentus Networks (EU) lưu trữ
  6. Quyền: Bất cứ lúc nào bạn có thể giới hạn, khôi phục và xóa thông tin của mình.