Các thiết bị đầu cuối VT100 (mà tất cả các trình giả lập thiết bị đầu cuối hiện đại mô phỏng ở một mức độ nào đó) đã hỗ trợ một số lệnh có vấn đề, nhưng các trình giả lập hoặc phân phối hiện đại vô hiệu hóa các lệnh có vấn đề hơn và ít hữu ích hơn. Dưới đây là danh sách không đầy đủ các chuỗi thoát tiềm ẩn rủi ro (không bao gồm các chuỗi chỉ đơn thuần làm cho màn hình không thể đọc được theo một cách nào đó):
- Các lệnh tệp nhật ký tùy ý trong rxvt và Eterm được báo cáo bởi HD Moore . Đây thực sự là những lỗi lớn, may mắn là đã sửa lâu.
- Lệnh answerback, còn được gọi là Return Terminal Status, được gọi bởi
ENQ
( Ctrl+E
). Điều này chèn văn bản vào thiết bị đầu cuối như thể người dùng đã gõ nó. Tuy nhiên, văn bản này không thuộc quyền kiểm soát của kẻ tấn công: đó là tên riêng của thiết bị đầu cuối, thường là một cái gì đó giống như xterm
hoặc screen
. Trên hệ thống của tôi (nén bóp Debian), xterm trả về chuỗi trống theo mặc định (điều này được kiểm soát bởi answerbackString
tài nguyên).
- Các thiết bị gửi thuộc tính lệnh
ESC [ c
và bạn bè. Thiết bị đầu cuối phản hồi với ESC [ … c
(trong đó chỉ …
có thể chứa các chữ số và dấu chấm câu ASCII). Đây là một cách truy vấn một số khả năng của thiết bị đầu cuối, chủ yếu là lỗi thời nhưng có lẽ được sử dụng bởi các ứng dụng cũ. Một lần nữa, phản ứng của thiết bị đầu cuối không thể phân biệt được với đầu vào của người dùng, nhưng nó không thuộc quyền kiểm soát của kẻ tấn công. Chuỗi điều khiển có thể trông giống như một phím chức năng, nhưng chỉ khi người dùng có cấu hình bất thường (không có cài đặt thông thường nào tôi gặp phải có chuỗi thoát khóa chức năng hợp lệ là tiền tố của phản hồi đầu cuối).
- Các chức năng điều khiển thiết bị khác nhau (DCS thoát, bắt đầu bằng
ESC P
).
- Tôi không biết những tác hại nào có thể được thực hiện thông qua
DECUDK
(đặt các khóa do người dùng xác định) trên trình giả lập thiết bị đầu cuối điển hình.
DECRQSS
(Chuỗi trạng thái yêu cầu) là một lệnh khác mà thiết bị đầu cuối phản hồi với một chuỗi thoát, lần này bắt đầu bằng \eP
; điều này có thể có vấn đề vì \eP
là một khóa hợp lệ ( Alt+ Shift+ P).
- Xterm có thêm hai tính năng thử nghiệm:
ESC P + p …
và ESC P + q …
, để lấy và đặt chuỗi termcap. Từ mô tả, điều này có thể được sử dụng ít nhất để sửa đổi hiệu ứng của các phím chức năng.
- Một số lệnh báo cáo trạng thái:
ESC [ … n
(Báo cáo trạng thái thiết bị). Thiết bị đầu cuối đáp ứng với một chuỗi thoát. Hầu hết các chuỗi thoát này không tương ứng với các chuỗi thoát khóa chức năng. Một vẻ có vấn đề: các báo cáo ESC [ 6 n
có dạng nơi và là chuỗi chữ số, và điều này có thể trông giống như với một số từ bổ nghĩa.ESC [ x ; y R
x
y
F3
- Các lệnh thao tác cửa sổ
ESC [ … t
.
- Một số trong số này cho phép cửa sổ xterm được thay đổi kích thước, biểu tượng hóa, v.v., gây rối.
- Một số trong số này làm cho thiết bị đầu cuối phản ứng với một chuỗi thoát. Hầu hết các chuỗi thoát này có nguy cơ thấp, tuy nhiên, có hai lệnh nguy hiểm: câu trả lời
ESC [ 2 0 t
và ESC [ 2 1 t
bao gồm nhãn biểu tượng và tiêu đề của cửa sổ đầu cuối, và kẻ tấn công có thể chọn những lệnh này.
- Ít nhất là trong quá trình nén Debian, xterm bỏ qua các lệnh này theo mặc định; chúng có thể được kích hoạt bằng cách đặt
allowWindowOps
tài nguyên hoặc chọn lọc thông qua disallowedWindowOps
tài nguyên. Gnome-terminal trong Ubuntu 10.04 thực hiện ngay cả các câu trả lời tiêu đề theo mặc định. Tôi chưa kiểm tra các thiết bị đầu cuối hoặc phiên bản khác.
- Các lệnh để đặt tiêu đề thiết bị đầu cuối hoặc tên biểu tượng. Dưới xterm và hầu hết các thiết bị đầu cuối X khác, chúng là . Trong màn hình, trình tự thoát là . Tôi tìm thấy mối quan tâm về các lệnh này được đánh giá cao. Mặc dù chúng cho phép một số lượng nghịch ngợm, bất kỳ trang web nào cũng có cùng một vấn đề. Hoạt động trên một cửa sổ chỉ dựa trên tiêu đề của nó chứ không phải trên lớp của nó giống như mở một tệp có tên được đặt cho bạn bởi một bên không tin cậy hoặc không trích dẫn một bản mở rộng có thể thay đổi trong tập lệnh shell hoặc vỗ vào một con chó dại trên mũi - đừng phàn nàn nếu bạn bị cắn.
ESC ] digit ; title ESC \
ESC k title ESC \
Tôi thấy phản ứng của Varnish không rõ ràng. Có vẻ như nó đang cố gắng thay đổi sự đổ lỗi, hoặc trong chế độ nazi bảo mật (bất kỳ mối quan tâm bảo mật nào, chính hãng hay không, đều biện minh cho tính năng bóng đen).
Sự khôn ngoan của việc thoát khỏi phản ứng đầu cuối nói chung đã bị nghi ngờ thường xuyên, nhưng vẫn không có chương trình mô phỏng thiết bị đầu cuối nào phù hợp để loại bỏ các chuỗi này, có lẽ là một nỗ lực sai lầm về khả năng tương thích với công nghệ 1970 không còn được sử dụng. (Hiểu)
Thay vì đổ lỗi cho bất kỳ và tất cả các chương trình viết logfiles, sẽ hiệu quả hơn nhiều, từ quan điểm bảo mật, để khiến các chương trình mô phỏng thiết bị đầu cuối ngừng làm những điều ngu ngốc, và do đó khắc phục vấn đề này và các vấn đề bảo mật khác một lần và cho tất cả.
Nhiều câu trả lời là các tính năng hữu ích: một ứng dụng cần biết những thứ như vị trí con trỏ và kích thước cửa sổ. Đặt tiêu đề cửa sổ cũng rất hữu ích. Có thể hoàn toàn dựa vào ioctl
các cuộc gọi cho những cuộc gọi này, tuy nhiên điều này sẽ cần thêm mã và tiện ích để thực hiện các ioctl
cuộc gọi này và chuyển chúng thành văn bản unix theo kiểu mô tả tệp. Thay đổi các giao diện này bây giờ sẽ rất nhiều công việc, vì lợi ích ít.
Các tệp văn bản không được phép chứa các ký tự không in như ký tự điều khiển. Các tệp nhật ký thường được dự kiến là các tệp văn bản. Các tệp nhật ký không được chứa các ký tự điều khiển.
Nếu bạn đang lo lắng rằng một tập tin có thể chứa trình tự thoát, mở nó trong một trình soạn thảo, hoặc xem nó có less
mà không có -r
hoặc -R
tùy chọn, hoặc xem nó thông qua cat -v
.