Bí mật hoặc dữ liệu nhạy cảm được sử dụng để xác thực cực kỳ hấp dẫn đối với những kẻ tấn công. Bằng cách hack hoặc bỏ qua chúng, bạn có thể có quyền truy cập vào tài nguyên CNTT của tổ chức. Chúng tôi sẽ cho bạn biết cách sử dụng các quy tắc tùy chỉnh để tìm ra bí mật nhanh hơn những kẻ tấn công.
- Giới thiệu
- Bí mật là gì?
- Các vấn đề bảo mật trong quản lý bí mật
- Các quy tắc tùy chỉnh giúp bạn tìm ra bí mật như thế nào?
- Kiểm tra chất lượng phát hiện bí mật
- Phân tích kết quả
- kết luận
Giới thiệu
Như bạn đã biết, bất kỳ sản phẩm phần mềm nào cũng chứa thông tin bí mật. Thông tin cung cấp quyền truy cập vào cơ sở dữ liệu tới các dịch vụ và tài nguyên CNTT khác nhau của công ty được gọi là bí mật. Chúng là một phần không thể thiếu của các ứng dụng, bảo vệ cơ sở hạ tầng khỏi sự xâm nhập của bên thứ ba và các mối đe dọa mạng khác nhau.
Tìm kiếm bí mật là một bước quan trọng trong quá trình phát triển phần mềm. Trong bài viết này, chúng tôi sẽ cho bạn biết bí mật là gì và chúng gây ra những rủi ro bảo mật nào, đồng thời xem xét cách công cụ Gileaks đối phó với việc tìm kiếm dữ liệu bí mật một cách độc lập và sử dụng các quy tắc tùy chỉnh.
Bí mật là gì?
Hãy bắt đầu bằng việc xác định “bí mật” thực sự là gì. Về cơ bản, đây là bất kỳ dữ liệu nhạy cảm nào được sử dụng để xác thực vào hệ thống. Bí mật bao gồm:
- các khóa khác nhau là thông tin bí mật được thuật toán mật mã sử dụng khi mã hóa/giải mã tin nhắn và xác minh chữ ký số;
- mã thông báo là chuỗi ký tự mang thông tin được mã hóa và cho phép bạn xác định chính xác một đối tượng cũng như xác định mức độ đặc quyền của đối tượng đó;
- thông tin đăng nhập và mật khẩu, ví dụ để truy cập cơ sở dữ liệu;
- bất kỳ thông tin xác thực nào khác không được tiết lộ.
Hình 1. Ví dụ về khóa bí mật
Các bí mật được các hệ thống sử dụng để tích hợp và truyền dữ liệu cho nhau. Chúng cũng có thể do người dùng xác định – đây là thông tin đăng nhập và mật khẩu để vào cơ sở dữ liệu. Khi phát triển phần mềm, có thể sử dụng nhiều dịch vụ, mỗi dịch vụ đều yêu cầu thông tin xác thực. Có thể rất khó để khám phá ra một loạt bí mật như vậy chứ đừng nói đến việc quản lý chúng.
Các vấn đề bảo mật trong quản lý bí mật
Lưu trữ bí mật trong mã có thể là nguồn rủi ro nghiêm trọng cho một dự án. Nếu bí mật bị tiết lộ, kẻ tấn công có thể dễ dàng truy cập vào tài khoản quản trị viên, mã nguồn ứng dụng hoặc toàn bộ cơ sở hạ tầng CNTT. Điều này có thể dẫn đến vi phạm dữ liệu, vi phạm quyền riêng tư và tổn thất nghiêm trọng về tài chính và danh tiếng cho tổ chức. Vì vậy, vào năm 2023 mức trung bình hư hại Các công ty Nga do rò rỉ dữ liệu lên tới 5,5 triệu rúp.
Các vấn đề chính có thể gặp phải khi quản lý bí mật là sự xâm phạm và rò rỉ dữ liệu. Dưới đây là một số lý do khiến rủi ro bảo mật phát sinh:
- Nhà phát triển đã vô tình để lại dữ liệu bí mật ở dạng văn bản rõ ràng (mật khẩu, khóa mã hóa hoặc quyền truy cập cơ sở dữ liệu) trong mã nguồn hoặc tệp cấu hình. Lỗi này tạo cơ hội cho kẻ tấn công thực hiện các cuộc tấn công có thể xảy ra.
- Các chuyên gia của công ty đã vô tình chia sẻ bí mật trong tin nhắn hoặc qua email cá nhân, mở quyền truy cập vào nó trong trường hợp tài khoản có thể bị hack.
- Bí mật có thể được chỉ định trong tệp cấu hình Kubernetes, điều này có thể dẫn đến sự xâm phạm.
Các quy tắc tùy chỉnh giúp bạn tìm ra bí mật như thế nào?
Bây giờ hãy nói về quy tắc người dùng (tùy chỉnh) là gì và tại sao chúng lại cần thiết.
Không có công cụ nào có thể cung cấp thông tin đầy đủ về tất cả các bí mật trong mã. Điều này có thể là do đặc thù của ngôn ngữ mà ứng dụng đang được phát triển, bản thân những bí mật cần được tìm thấy hoặc ngôn ngữ mà các nhà phát triển sử dụng.
Hình 2. Một ví dụ về bí mật mà máy quét có thể bỏ sót do khai báo biến bằng tiếng Nga
Các nhà phát triển chương trình tìm kiếm bí mật phải cân bằng giữa việc tối đa hóa phạm vi bao phủ mã, trọng lượng chương trình và tốc độ phân tích. Do đó, họ buộc phải chỉ thêm vào cơ sở dữ liệu những quy tắc mang lại kết quả chính xác và thường có khả năng được kích hoạt trong mã chương trình. Để cho phép người dùng mở rộng khả năng của máy quét và tìm ra những bí mật mà họ đã bỏ lỡ, nhiều nhà phát triển cung cấp khả năng viết các quy tắc của riêng họ.
Thông thường các quy tắc được viết bằng ngôn ngữ biểu thức chính quy RegExp. Một số công cụ cung cấp khả năng mở rộng RegExp, chẳng hạn như thêm các từ ngoại lệ hoặc tìm kiếm trong các tệp cụ thể.
Kiểm tra chất lượng phát hiện bí mật
Bây giờ, hãy tìm kiếm bí mật mà không sử dụng các quy tắc tùy chỉnh, sau đó sử dụng chúng. Hãy lấy kho lưu trữ làm ứng dụng thử nghiệm Bí mật sai của OWASP trong nhánh “giường thí nghiệm”. Nó chứa các bí mật được tạo bởi các dịch vụ thực, vì vậy chủ đề này rất phù hợp để thử nghiệm các công cụ tìm kiếm bí mật.
Hãy chọn làm công cụ phân tích Gileaks. Đây là một máy quét để tìm thông tin nhạy cảm trong kho Git. Nó sử dụng các mẫu nhất định để phát hiện bí mật và các lỗ hổng có thể xảy ra.
Trước tiên, chúng tôi sẽ tiến hành kiểm tra phân tích kho lưu trữ bằng công cụ này mà không cần cài đặt bổ sung (“có thể dùng ngay”), sau đó sử dụng các quy tắc tùy chỉnh. Cuối cùng, chúng tôi sẽ so sánh cả hai phương pháp và chia sẻ kết quả dưới dạng bảng.
Tìm kiếm bí mật với Gileaks
Có một số cách để cài đặt Gileaks:
- Sử dụng Docker.
- Xây dựng Gitleaks từ nguồn.
- Tải xuống và cài đặt bằng trình quản lý gói.
- Tải xuống các tệp nhị phân từ trang “phát hành».
Hình 3. Ví dụ về quét kho lưu trữ bằng Gitleaks
Thư mục này phải được khởi tạo dưới dạng thư mục git. Chỉ những lỗ hổng đã được lưu (đã cam kết) mới được kiểm tra. Để khắc phục hạn chế này, bạn có thể sử dụng cờ “–no-git”. Khi đó sẽ không còn việc tìm kiếm bí mật trong lịch sử kho lưu trữ. Nhưng điều này là không bắt buộc, vì bạn cần kiểm tra chất lượng của việc thiết lập quy tắc chứ không phải việc rò rỉ bí mật trong các cam kết. Tuy nhiên, chính chế độ này mới là tính năng nổi bật của công cụ này, vì nó có thể tìm kiếm các bí mật không chỉ trong cam kết hiện tại mà còn trong suốt lịch sử. Cờ “-v” sẽ được sử dụng để hiển thị kết quả và cờ “–config” hoặc “-c” sẽ được sử dụng để áp dụng các quy tắc tùy chỉnh.
Tìm bí mật bằng Gitleaks và các quy tắc tùy chỉnh
Để áp dụng các quy tắc của riêng bạn, bạn phải tạo tệp TOML mô tả bộ quy tắc tùy chỉnh của bạn. Nó có thể trông như thế này (Hình 4).
Hình 4. Ví dụ về cấu hình quy tắc tùy chỉnh
Mỗi quy tắc phải được điền vào các trường “id” (mã định danh duy nhất của quy tắc) và “regex” (biểu thức chính quy được sử dụng để tìm kiếm bí mật). Bạn có thể đọc về các cài đặt quy tắc khác trong kho lưu trữ chính thức Gileaks.
Sau khi cài đặt chương trình và viết bộ quy tắc của riêng bạn, hãy khởi chạy công cụ. Để chạy Gitleaks với một bộ quy tắc được xác định trước, bạn cần viết lệnh “gileaks detect” trong thư mục sẽ được quét.
Hình 5. Quét thư mục bằng các quy tắc tùy chỉnh
Phân tích kết quả
Vì vậy, hãy xem kết quả của bài kiểm tra Gitleaks mà không áp dụng các quy tắc tùy chỉnh và sau đó với chúng.
Kết quả của việc tự kiểm tra, Gitleaks có 14 điểm tích cực trong 13 loại bí mật trên 21. Khi kết nối các quy tắc tùy chỉnh, số điểm tích cực trở thành 49 ở 16 loại trên 21.
Trong số những mặt tích cực mới có những điểm trùng lặp. Điều này là do một số quy tắc mới bao gồm các quy tắc Gileaks được xác định trước. Điều này đạt được phạm vi bảo hiểm lớn hơn. Kết quả so sánh các bí mật được phát hiện được thể hiện trong bảng bên dưới.
Bảng 1. So sánh phân tích mã Gileaks có và không có quy tắc tùy chỉnh
Thư mục |
Gileaks |
Gitleaks + quy tắc tùy chỉnh |
Ghi chú |
|
1 |
1 mật khẩu |
– |
+ |
|
2 |
màu xanh |
– |
+ |
|
3 |
azuredevops |
– |
– |
Quy tắc chưa được tạo |
4 |
docker |
– |
+ |
|
5 |
căn cứ hỏa lực |
+ |
+ |
|
6 |
gcp |
+ |
+ |
|
7 |
github_and_ssh |
+ |
+ |
|
số 8 |
gitlab |
+ |
+ |
|
9 |
gpg |
+ |
+ |
|
10 |
lớp |
– |
+ |
|
11 |
jwt |
+ |
+ |
|
12 |
k8s |
– |
+ |
|
13 |
phím |
+ |
+ |
|
14 |
mvn |
– |
+ |
|
15 |
npm |
– |
+ |
|
16 |
bộ phận |
– |
– |
Quy tắc chưa được tạo |
17 |
lười biếng |
+ |
+ |
|
18 |
totp |
– |
+ |
|
19 |
đám mây lang thang |
+ |
+ |
|
20 |
basic_auth_curl.sh |
– |
+ |
|
21 |
paperkey.txt |
– |
– |
Dữ liệu thử nghiệm |
kết luận
Số vụ rò rỉ thông tin mật ở Nga tiếp tục gia tăng, trong khi đó việc đảm bảo an toàn cho dữ liệu người dùng và các hệ thống quan trọng là yêu cầu bắt buộc của nhà nước. Để bảo vệ các sản phẩm kỹ thuật số khỏi các mối đe dọa trên mạng, các công ty cần xây dựng cơ chế quản lý bí mật CNTT thành thạo.
Ngày nay, sự sẵn có của các công cụ chuyên dụng giúp các nhà phát triển tìm kiếm và phân tích bí mật dễ dàng hơn nhiều. Tuy nhiên, chúng không phải là thuốc chữa bách bệnh và cần có giải pháp bổ sung. Chúng tôi đã phân tích chất lượng tìm kiếm bí mật của công cụ này và sau đó áp dụng các quy tắc tùy chỉnh cho nó. Với họ, phạm vi bảo hiểm mã đã được cải thiện đáng kể. Điều này cũng giúp có thể tùy chỉnh tìm kiếm chính xác những bí mật được sử dụng trong ngăn xếp công nghệ.
Quét mã bằng các quy tắc của riêng bạn cho phép bạn tìm thấy nhiều vấn đề tiềm ẩn hơn trong ứng dụng của mình. Bằng cách điều chỉnh các điều kiện tùy chỉnh theo các tính năng và yêu cầu cụ thể của dự án, bạn có thể cải thiện việc quản lý bí mật và theo đó, tăng mức độ bảo mật sản phẩm.