2009-09-20 7 views
13

유닉스 로그인에 널리 사용되는 인증 메커니즘을 사용하는 PAM 모듈을 작성하는 데 관심이 있습니다. 대부분의 과거 프로그래밍 경험은 파이썬에서 이루어졌으며, 내가 사용하고있는 시스템은 이미 파이썬 API를 가지고 있습니다. 내가 주위에 봤 거든 pam_python, PAM 모듈은 파이썬 intrepreter를 호출 할 수 있도록, 따라서 파이썬 본질적으로 작성된 수있는 PAM 모듈을 허용 발견.Python PAM 모듈에 대한 보안 문제가 있습니까?

그러나 SUID Python 스크립트와 같이 사용자가 자신보다 높은 액세스 수준으로 실행되는 Python 코드를 호출 할 때 보안 위험이 있음을 읽었습니다. 이러한 우려는 Python PAM 모듈에도 적용됩니까?

답변

17

언급 된 보안 문제는 높은 액세스 수준으로 실행되는 "사용자가 Python 코드를 호출하도록 허용"에 관한 것이 아니며 사용자가 컨트롤의 실행 중 어떤 형태로든 실행할 수 있도록 허용합니다. 이러한 코드는 코드 자체를 주입하거나 변경함으로써 가장 분명하게 알 수 있습니다. 그러나 좀 더 세밀하게도 프로세스의 환경 (따라서 코드가 모듈을 가져 오는 경로)을 제어함으로써 가능합니다. (사용자가 예를 들어 .so을로드하는 경로를 제어 할 수 있다면 유사한 우려 사항이 C 작성 코드에 적용됩니다. OS가 이러한 우려를 직접적으로 도울 수는 있지만).

pam_python은 이러한 위험으로부터 잘 보호 받고 있으므로 안전하게 사용할 수 있어야합니다. 그러나 ... 그 the docs 점 밖으로주의 할 : 파이썬에서

쓰기 PAM 모듈 덜 발생 큰 성능 저하 및 파이썬을 필요로를 설치하기 위해서는 이 모듈을 작성하기위한 최선의 선택되지 않도록 그 널리 사용됩니다.

그래서 당신이 제공하는 메커니즘이 인기가 있다면이 문제를 피하기 위해 C로 모듈을 코딩해야 할 것입니다. 그러나 파이썬에서 제한된 분포를 갖는 개념 증명으로 프로토 타이핑을하기 전에 C로 확정하기 전에 프로토 타이핑하는 것이 실행 가능한 전략입니다.

관련 문제