Tấn công hệ thống biên dịch trực tuyến thông qua thao tác trên file header

Hanno Böck, tác giả của dự án fuzzing-project.org, nhận thấy về lỗ hổng của các giao diện biên dịch tương tác cho phép xử lý mã bên ngoài bằng ngôn ngữ C. Khi chỉ định một đường dẫn tùy ý trong lệnh "#include", lỗi biên dịch sẽ bao gồm nội dung của tệp không thể biên dịch được.

Ví dụ: bằng cách thay thế “#include ” vào mã của một trong các dịch vụ trực tuyến, đầu ra có thể lấy được hàm băm của mật khẩu người dùng root từ tệp /etc/shadow, điều này cũng chỉ ra rằng dịch vụ web đang chạy với quyền root và chạy các lệnh biên dịch với quyền root (có thể một vùng chứa riêng biệt đã được sử dụng trong quá trình biên dịch, nhưng việc chạy với quyền root trong vùng chứa cũng là một vấn đề). Dịch vụ có vấn đề có thể tái tạo sự cố vẫn chưa được quảng cáo. Nỗ lực mở tệp trong FS /proc giả không thành công vì GCC coi chúng là tệp trống, nhưng việc mở tệp từ /sys vẫn hoạt động.

Nguồn: opennet.ru

Thêm một lời nhận xét