KTXN - Cheatsheet chương 4


Cheatsheet Chương 4: Phân tích mã nguồn

Chương này tập trung vào các kỹ thuật và phương pháp để đánh giá, kiểm tra và phân tích mã nguồn của phần mềm hoặc ứng dụng nhằm tìm ra các lỗ hổng bảo mật và các vấn đề khác.

1. Các kỹ thuật phân tích mã nguồn

Phân tích mã nguồn có thể được thực hiện bằng hai kỹ thuật chính:

2. Phân tích mã nguồn thủ công

3. Phân tích mã nguồn tự động

4. Phân tích mã chương trình đã dịch (Mã đối tượng)

4.1. Phân tích mã thông dịch
4.2. Phân tích mã biên dịch
4.3. So sánh Mã thông dịch và Mã biên dịch
Đặc điểm Mã thông dịch Mã biên dịch
Ưu điểm - Có thể thực thi nhanh hơn (không cần biên dịch toàn bộ trước) - Thực thi nhanh hơn trong quá trình chạy (đã được biên dịch toàn bộ)
- Cho phép cập nhật mã nguồn và kiểm tra lỗi dễ dàng hơn - Đảm bảo tính bảo mật cao hơn (mã nguồn đã được dịch thành mã thực thi)
Nhược điểm - Có thể chậm hơn mã biên dịch trong quá trình thực thi và yêu cầu trình thông dịch - Có thể yêu cầu nhiều tài nguyên hơn và cần biên dịch lại nếu có thay đổi mã nguồn
- Không đảm bảo được tính bảo mật cao (mã nguồn được dịch thực thi ngay lập tức)

5. Kỹ thuật Fuzzing

5.1. Các bước thực hiện kỹ thuật Fuzzing

6. Phương pháp khai thác khi tìm ra lỗ hổng

6.1. Kết hợp phân tích tĩnh và phân tích động
6.2. Xem xét khả năng khai thác
6.3. Tạo payload để khai thác

7. Các phương pháp phòng ngừa khai thác lỗ hổng


In layman's term

Kỹ thuật fuzzing

Hãy tưởng tượng bạn có một chiếc máy bán hàng tự động mới toanh, và bạn muốn biết liệu nó có bị hỏng nếu ai đó đưa vào những thứ kỳ lạ, không đúng quy cách hay không. Kỹ thuật Fuzzing cũng hoạt động theo một cách tương tự như vậy đấy.

Dưới đây là các điểm chính về Fuzzing:

Tóm lại, Fuzzing giống như việc bạn cố tình "phá hoại" một chương trình bằng cách đưa vào những thứ "điên rồ" để xem nó có "sập" không, và nếu có, "sập" vì lý do gì, để từ đó chúng ta vá lại "lỗ hổng" đó.