나는 SSH를 통해 로컬 컴퓨터에 로그인하는 PHP 응용 프로그램을 가지고 있으며 셸 스크립트를 시작하고 실시간으로 스크립트의 출력을 브라우저에 다시 인쇄합니다 (페이지로드 유지). 그러나 원격으로 실행 된 쉘 스크립트에서 sudo를 호출하면 임의의 메모리가 덤프됩니까?
의 쉘 스크립트는 겉으로는 임의의 메모리sudo service apache2 reload > /dev/null
1024 바이트가 덤프됩니다 명중하고 스크립트가 정상적으로 완료 동안 출력이 중단 될 때.
연결이 마지막으로 종료되면 (예 : 죽이는 등) 연결이 열린 채로 남아있는 시간에 따라 화면에 걸쳐 임의의 추가 양이 구토됩니다.
는 실행 PHP 스크립트는 이벤트가 발생할 종료/일부 중단합니다 때까지 SSH 연결의 표준 출력을 읽습니다. 모든 보안이 사람들을 걱정 들어
stream_set_blocking($this->stdo, true);
fwrite($this->stdo, $cmd . "\n"); // write command to start running shellscript
$buf = '';
do
{
$buf = fread($this->stdo, 256);
if ($ansicolor)
echo $this->ansicolor($buf); // color codes are translated to HTML here
else
echo $buf;
flush();
ob_flush();
}
while (strpos($buf, '$') === false);
flush();
ob_flush();
: 그것은 ANSI 컬러 코드를 변환하는 것을 제외하고는 <span>
의를 HTML로 PHP는 매우에만 명령이에 대한 "NOPASSWD"sudo를 가진 일반 사용자로 로그인합니다.
은 스크립트가 echo
을 통해 자주 발생하는 결과를 출력하므로 문제가되는 것으로 알릴 수 있습니다.
또한 재로드가 실패하고 실제로 유용한 오류가 나오는 경우 stderr를 멀리 파이프하고 싶지 않습니다. 해당 일의
설치된 버전 :
- PHP는
5.3.3-7+squeeze17 with Suhosin-Patch (cli) (built: Aug 23 2013 15:06:16)
때문에 나는 캔트 최신 버전을 처리하는 기존 응용 프로그램의 PHP 5.3이 필요합니다. - libssh2-PHP
0.11.0-2.1
- OpenSSL을
1.0.1e-2+deb7u7
(https://www.debian.org/security/2014/dsa-2896) - 는 openssh-서버
1:6.0p1-4+deb7u1
어떻게 더 이상 임의 메모리를 덤프하지 않도록이 문제를 해결할 수 있습니까?
OpenSSL의 컨텍스트에서 "덤프 임의 메모리"는 혼란스러운 개념입니다. Heartbleed 버그가있는 OpenSSL 1.0.1e를 사용하고 있습니다. 1.0.1g (또는 그 이상)로 업그레이드하는 것이 좋습니다. –
@BrianKendig https://www.debian.org/security/2014/dsa-2896에 따르면 heartbleed는 wheezy 용으로'1.0.1e-2 + deb7u5'에서 수정되었습니다. deb-repo를 통해 새로운 버전을 얻지도 않습니다. –
좋습니다. 그러면 첫 번째 질문은'ssh' 또는'sudo'에서 메모리 덤프가 오는가, 아니면 원격으로 실행중인 명령에서 오는 것입니까? 다른 것들에'sudo'를 쓰거나 명령 줄에서 직접 명령을 실행 해보십시오.그 쓰레기의 원인이되는 퍼즐 조각 하나를 분리 할 수 있는지 확인하십시오. –