VT100 터미널 (모든 최신 터미널 에뮬레이터가 어느 정도 에뮬레이션)은 많은 문제가있는 명령을 지원했지만 최신 에뮬레이터 또는 배포는 문제가 많고 덜 유용한 명령을 비활성화합니다. 잠재적으로 위험한 이스케이프 시퀀스 의 전체 목록은 다음과 같습니다 (어떤 방식으로도 디스플레이를 읽을 수 없도록하는 것은 포함하지 않음).
- rxvt 및 Eterm의 임의 로그 파일 명령은 HD Moore에 의해보고되었습니다 . 이들은 실제로 주요 버그이며, 다행스럽게도 오랫동안 수정되었습니다.
- 리턴 터미널 상태라고도하는 answerback 명령은
ENQ
( Ctrl+E
)에 의해 호출됩니다 . 사용자가 입력 한 것처럼 터미널에 텍스트를 삽입합니다. 그러나,이 텍스트는 공격자의 통제하에되지 않습니다 : 그것은 터미널의 자신의 이름과 같은 일반적으로 뭔가 xterm
나 screen
. 내 시스템 (Debian squeeze)에서 xterm은 기본적으로 빈 문자열을 반환합니다 ( answerbackString
리소스에 의해 제어 됨 ).
- 장치 속성 보내기 명령
ESC [ c
및 친구. 터미널은 숫자와 ASCII 문장 부호 만 포함 할 수 ESC [ … c
있는 것으로 응답합니다 …
. 이 기능은 일부 터미널 기능을 쿼리하는 방법으로, 대부분 사용되지 않지만 이전 응용 프로그램에서 사용되었을 수 있습니다. 다시 말하지만 터미널의 응답은 사용자 입력과 구별 할 수 없지만 공격자는 제어 할 수 없습니다. 제어 순서는 기능 키처럼 보일 수 있지만 사용자가 비정상적인 구성을 가지고있는 경우에만 가능합니다 (내가 본 일반적인 설정 중 어느 것도 터미널 응답의 접두사 인 유효한 기능 키 이스케이프 시퀀스가 없습니다).
- 다양한 장치 제어 기능 (로 시작하는 DCS 이스케이프
ESC P
)
DECUDK
전형적인 터미널 에뮬레이터에서 (사용자 정의 키 설정)을 통해 어떤 피해를 입을 수 있는지 모르겠습니다 .
DECRQSS
(Request Status String)은 터미널이 이스케이프 시퀀스로 응답하는 또 다른 명령이며 이번에는 \eP
; \eP
유효한 키 ( Alt+ Shift+ P) 이므로 문제가 될 수 있습니다 .
- : 텀은 두 가지 실험적인 기능을 가지고
ESC P + p …
와 ESC P + q …
, 취득 및 설정 TERMCAP 문자열을. 설명에서 이것은 최소한 기능 키의 효과를 수정하는 데 사용될 수 있습니다.
- 여러 상태 보고서 명령 :
ESC [ … n
(장치 상태 보고서). 터미널은 이스케이프 시퀀스로 응답합니다. 이 이스케이프 시퀀스의 대부분은 기능 키 이스케이프 시퀀스와 일치하지 않습니다. 문제는 다음과 같습니다.보고 대상 ESC [ 6 n
은 숫자 시퀀스의 위치 및 숫자 형식 이며 일부 수정 자 에서처럼 보일 수 있습니다.ESC [ x ; y R
x
y
F3
- 창 조작 명령
ESC [ … t
.
- 이들 중 일부는 xterm 창의 크기를 조정하거나 아이콘 화하는 등의 작업을 수행 할 수 있습니다.
- 이들 중 일부는 터미널이 이스케이프 시퀀스로 응답하게합니다. 이러한 이스케이프 시퀀스의 대부분은 위험이 적지 만 두 가지 위험한 명령이 있습니다. 터미널 창의 아이콘 레이블과 제목에 대한 답변
ESC [ 2 0 t
과 대답을 ESC [ 2 1 t
포함하며 공격자는이 명령을 선택할 수 있습니다.
- 최소한 데비안 압축에서는 xterm은 기본적으로이 명령을 무시합니다.
allowWindowOps
리소스 를 설정하거나 리소스를 통해 선택적으로 활성화 할 수 있습니다 disallowedWindowOps
. Ubuntu 10.04의 그놈 터미널은 기본적으로 제목 응답을 구현합니다. 다른 터미널이나 버전을 확인하지 않았습니다.
- 터미널 제목 또는 아이콘 이름을 설정하는 명령입니다. xterm 및 대부분의 다른 X 터미널에서는 입니다. 화면에서 이스케이프 시퀀스는 입니다. 이 명령에 대한 우려가 과대 평가 된 것으로 나타났습니다. 그들은 약간의 장난을 허용하지만 모든 웹 페이지에는 같은 문제가 있습니다. 수업이 아닌 제목만을 기준으로 창에서 행동하는 것은 신뢰할 수없는 당사자가 이름을 지정한 파일을 열거 나 쉘 스크립트에서 변수 확장을 인용하지 않거나 코에 멍청한 개를 두드리는 것과 비슷합니다 물린 경우 불평하지 마십시오.
ESC ] digit ; title ESC \
ESC k title ESC \
나는 바니쉬의 반응이 불분명하다는 것을 안다. 그것은 책임을 바꾸려고하거나 보안 나치 모드 (진정한 여부에 관계없이 모든 보안 문제가 블랙 볼링을 정당화 함) 인 것처럼 느껴집니다.
일반적으로 터미널-응답-탈출의 지혜는 일정한 간격으로 의문을 제기했지만 주요 터미널 에뮬레이션 프로그램 중 어느 것도 이러한 시퀀스를 버리는 데 적합한 것으로 보지 못했을 것입니다. (…)
로그 파일을 작성하는 모든 프로그램을 비난하는 대신, 보안 관점에서 터미널 에뮬레이션 프로그램이 어리석은 일을 멈추게하여이 문제와 다른 보안 문제를 한 번 해결하는 것이 훨씬 생산적입니다. 모든.
많은 답변이 유용한 기능입니다. 응용 프로그램은 커서 위치 및 창 크기와 같은 것을 알아야합니다. 창 제목을 설정하는 것도 매우 유용합니다. 이것에 대한 ioctl
호출 에만 전적으로 의존 할 수는 있지만, 이러한 ioctl
호출을하고 파일 디스크립터에 전달하는 유닉스 스타일의 텍스트로 변환 하려면 추가 코드와 유틸리티가 필요 했을 것입니다. 이러한 인터페이스를 변경하면 많은 이점이 있지만 많은 작업이 필요합니다.
텍스트 파일에는 제어 문자와 같은 비 인쇄 문자가 포함되지 않아야합니다. 로그 파일은 일반적으로 텍스트 파일이어야합니다. 로그 파일에는 제어 문자가 포함되지 않아야합니다.
파일에 이스케이프 시퀀스가 포함되어 있는지 걱정되는 경우 편집기에서 파일을 열거 나 또는 옵션 less
없이 파일을 보거나을 통해보십시오 .-r
-R
cat -v