공용 라이브러리가있는 bash
에 유틸리티 모음을 쓰고 있습니다. 필자가 작성하는 각 스크립트에는 실행 파일에 상대적인 라이브러리의 경로를 결정하는 코드 블록이 있어야합니다. 아니 실제 코드,하지만 예 : 대신 라이브러리를 검색하려고 프리앰블의환경 변수를 신뢰할 수 있습니까?
#!/bin/bash
DIR="$(cd -P "$(dirname "${BASH_SOURCE[0]}")" && pwd)"
. $DIR/../lib/utilities/functions
, 나는 도서관의 위치를 표시하기 위해 환경 변수를 사용하는 밝은 생각을했다.
#!/bin/bash
. $TOOLS_LIBRARY_PATH
래퍼 프로그램을 사용하여 해당 환경 변수를 설정하거나 내 경로에서 설정할 수 있습니다. bash
툴셋을 구성하는 더 좋은 방법이 있지만 질문은 다음과 같습니다.
환경 변수를 신뢰할 수 있습니까?
나는 이것들 중 하나입니다. 나는 결코 그런 생각을하지 않았습니다. 다른 언어로 프로그래밍 할 때 경로를 사용하여 라이브러리를 찾는 경우 (예 : LD_LIBRARY_PATH
, PYTHONPATH
, PERLLIB
, RUBYLIB
, , NODE_PATH
) 나는 그 코드가 안전하지 않을 수있는 방법을 중단하고 생각할 필요가 없었습니다.
실제로 LD_LIBRARY_PATH
은 사용을 방해하는 Why LD_LIBRARY_PATH
is bad입니다. Ruby 및 Perl 라이브러리 경로 환경 변수는 보안 메커니즘이 호출되면 무시됩니다 ($SAFE
및 -T
(taint mode)).
내 생각까지 ...
- 사용자는 그들이 선택한 라이브러리에
TOOLS_PATH_LIBRARY
를 설정할 수 있지만,이 유틸리티는 UID에서 실행됩니다. 악의적 인 라이브러리를bash
으로 직접 실행할 수 있습니다. - 내 도구
sudo
몇 가지. 누군가TOOLS_PATH_LIBRARY
을 활용할 수 있습니다. 그러나 도구는sudo
을 통해 실행되지 않으며 여기 저기에만sudo
을 호출합니다. 어쨌든 사용자는 이어야하며sudo
으로 직접 전화 할 수 있습니다. TOOLS_PATH_LIBRARY
을 신뢰할 수 없다면PATH
을 신뢰할 수 없습니다. 모든 프로그램 호출은 절대 경로를 사용해야합니다.- 쉘 프로그램에서는 절대 프로그램 인 별칭을 사용하므로
ls
을 호출하는 대신LS=/bin/ls
과 같은 변수를 사용합니다. 내가 읽은 바에 따르면, 사용자가 프로그램 기본값을 별칭으로 다시 정의하지 못하도록 보호합니다. 참조 : PATH, functions and security. Bash scripting best practices. . - Perl의 taint mode은 모든 환경 변수를 "오염 된"것으로 간주하므로 환경의 위험에 대해 추론하려고합니다.
- 해당 사용자가 root가 아닌 한 한 사용자가 다른 사용자의 환경을 변경할 수 없습니다. 따라서 사용자가 권한을 상승시키기 위해 자신의 환경을 변경하는 것에 대해서만 우려하고 있습니다. 참조 : Is there a way to change another process's environment variables?
나는 종류의 대답에 rubber ducked이를했습니다,하지만 난 여전히 두드려 응답하지 않기 때문에, 그것을 게시거야.
업데이트 : 환경 변수를 사용하여 라이브러리와 실행 파일의 경로를 지정하는 것과 관련된 보안 문제는 무엇입니까?
물론 허용 할 수 없습니다. 아무 것도 믿을 수 없어. 그러나 그것이 맞다고 생각하지 않는다면, 당신은 어디에 있습니까? 너는 아무 것도 할 수 없다. –
추가 변수없이 모든 디렉토리를 해결할 수 있다면 직접적인 사용자에게 친절하십시오. 그러나 백도어를 환경 변수의 형태로두면 라이브러리와 통합하려는 사람들에게 친절하게 남을 수 있습니다.변수가 올바르게 설정되었다고 가정하십시오 (Chris Morgan의 "이유"참조). – bobah
좋은 게시글, 많은 문제를 확인했습니다. 재미있는 일이지만, 분석 마비에 접하는 것 같습니다 (Chris의 말처럼). 보안은 레이어에 관한 것입니다. 사용자를 신뢰할 수 없다면, 더 많은 레이어가 필요합니다. 사람들은 보안 문제에서 PHD를 얻을 수 있으며 MilSpec 또는 은행 보안 시스템을 해킹 당할 수 있으므로 첨부 준비와 성공적인 연결 확률 사이의 균형을 파악해야합니다. 현재 프로젝트, 합법적 인 사용자 및 다른 지분 소유자에게 행운을 빕니다. – shellter