보안 집약적 인 사이트의 작은 버그를 수정하기 위해 고용되었습니다. 코드를 살펴보면 보안 허점이 가득합니다. 너 뭐하니? [닫은]


109

누군가 사이트에서 작은 일을하도록 고용되었습니다. 대기업 사이트입니다. 매우 민감한 데이터가 포함되어 있으므로 보안이 매우 중요합니다. 코드를 분석하자마자 보안 허점으로 가득 차있는 것을 알았습니다. 읽고 많은 PHP 파일은 사용자의 get / post 입력을 mysql 요청 및 시스템 명령에 직접 입력합니다.

문제는 그를 위해 사이트를 만든 사람은 그 일에 의존하는 가족과 아이들을 가진 프로그래머입니다. "귀하의 사이트는 스크립트 아동 유원지입니다. 다시 해보면 괜찮을 것입니다."

이 상황에서 무엇을 하시겠습니까?

최신 정보:

나는 여기에 좋은 조언을 따르고 사이트에서 가능한 보안 결함을 발견했다고 개발자에게 공손하게보고했습니다. 나는 그 라인을 지적하고 거기에 SQL 주입 공격에 대한 가능한 취약점이 있다고 말했다. 그리고 그가 그것에 대해 알고 있는지 물었다. : 그는 대답했다 "확실히, 그러나 나는 그 공격자가 데이터베이스의 구조에 대한 정보가 있어야 그것을 악용 생각, 내가 더 잘 이해해야한다" .

업데이트 2 :

나는 항상 그런 것은 아니라고 말하고 올바르게 처리하기 위해이 스택 오버플로 질문 링크를 따를 것을 제안했습니다 : PHP에서 SQL 삽입을 방지하는 방법? 그는 그것을 연구하겠다고 말했고 전에 그에게 말한 것에 대해 감사했습니다. 내 역할이 다 된 것 같아, 고마워


29
나는 누군가의 인생을 망치지 않는 해결책을 정말로 좋아합니다. 나는 이것을 내버려 두었지만 그러한 보안 구멍도 일부 사람들의 삶을 망칠 수 있다는 것을 알고 있습니다. 복잡한.
MaiaVictor

18
침입자는이 익스플로잇을 사용하여 데이터베이스 구조에 대한 정보를 얻을 수 있습니다. 어떤 SQL 주입 취약점한다 이제까지 경시되지 않습니다.
Dave Rager

17
데이터베이스에 대한 지식 없이도 일부 취약성을 악용하는 방법을 보여줍니다. 그것은 그에게 그를 놀라게 할 것이다.
Euphoric

74
나는 당신이 모르는 다른 사람 / 프로그래머를 찾는 좋은 일을 말하고 싶습니다. 그들이 실수했기 때문에 생계를 망치는 것은 끔찍한 일이 아닙니다. 당신은 그들을 알지 못합니다. 그리고 나는 그것을 고려한 것에 대해 칭찬합니다.
Steel

8
@Dokkat 문제는 ​​균형 중 하나입니다. 프로그래머의 관점에서 볼 때 아내와 자녀를 둔 열악한 프로그래머는 실제로 회사를 위험에 빠뜨 렸으므로 아내와 자녀가있는 많은 직원의 직업이 위험에 처했습니다. 또한, "나쁜 프로그래머는 내 인생을 더 어렵게 만드는 일을한다"는 감정적 인 문제로 인해 종종 문제가 복잡해졌다. 이제 나는 가족과 함께 시간을 보내는 것을 놓쳐 야한다. " 그것은 비이성적 인 반응이지만 사람들은 사람들입니다.
deworde

답변:


114

가장 먼저, 우선 순위는 보안 허점을 닫는 것입니다.

이것을 작성한 엔지니어와 직접 작업하는 경우 모든 것을 문서화하고 해당 엔지니어에게 제공하십시오.

그렇지 않은 경우 고용주에게 보안 문제가 처음에 생각한 것보다 더 크고 사이트에 많은 작업이 필요하다고 말하십시오 . 사이트에있는 주요 개발자와 협력하여 PHP 보안에 대해 가르치도록 제안하십시오 (PHP 보안에 대해 약속하지 말고 알고있는 모든 것을 훈련 시키도록 제안하십시오). 당신이 끝나면.

이것을 "이 사람은 나쁘고 해고하십시오"문제로 만들지 마십시오 . "안녕하세요. 사이트 보안에 대한 무지 / 일반적인 오해에서 비롯된 통계 수정이 필요한 잠재적 인 버그를 발견했습니다. 또한 귀하의 개발에 대해 이야기하고 싶습니다. 귀하의 사이트를 개선 할 수 있습니다. 앞으로 더 많은 문제를 피하십시오. "


1
전반적으로 훌륭한 답변. 주제는 주관적이므로 커뮤니티에서 가장 많이 받아 들인 것으로 표시하겠습니다.
MaiaVictor

1
엔지니어와 함께 일하지만 경영진에 의해 보수를 받고 있다면 경영진에게보고하지 않아야합니까? 엔지니어가 감사하지만 떠나는 순간 보고서를 파괴하면 어떻게됩니까?
Konerak

둘 다 말하거나 엔지니어에게 먼저 알리고 사용중인 시스템에서 버그가 생성되고 추적되는지 확인하십시오. 버그가 생성되지 않으면 관리자에게 알리십시오.
Eric Hydrick

2
나는이 답변을 더 좋아했습니다 : programmers.stackexchange.com/a/189206/28351 , 고용주는 우선 순위가 다르기 때문에. 먼저 보안 취약점을보고 한 다음 작은 버그를 수정하십시오.
nalply

80

무지와 무능에는 차이가 있습니다. SQL 인젝션이 무엇인지 알지 못하는 시간이 있었으며, 원래 프로그래머가 일단 문제를 인식하면 문제를 해결할 수 없다고 믿을 이유가 없습니다.

그들에게 말해 구체적이고 객관적인 자세를 취하고 질문에 답변하고 악용 사례 및 수정 사항에 대한 권장 사항을 제공하십시오. 그 후에도 정보를 얻지 못하면 실제로 개인 정보를 사이트에 올리지 않는 것이 가장 좋습니다.


26
+1. 무지는 고칠 수 있습니다. 무능은 일부의 경력입니다!
Mitch Wheat

20

당신의 일은 그를 위해 사이트를 다시 만들지 않습니다. 작은 버그를 수정하는 것입니다. 그러나 수정해야 할 보안 문제를 발견 한 경우 사이트 소유자에게 문의하여 문제에 대한 통찰력을 제공 할 수 있습니다.

원래 개발자에 대해 부정하거나 말을하거나 코드가 얼마나 끔찍한 지 언급하지 마십시오. 정중하고 전문적이어야합니다. 문제를 해결하기 위해 개발자와 함께 작업하도록 제안 할 수 있습니다. 문제를 해결하기 위해 계약을 맺지 않은 경우 직접 해결하거나 해결책을 제시하지 마십시오. 그들이 당신의 조언을 따르고 당신이 틀렸다면 그들은 다시 올 수 있습니다.


17

무엇보다도-그들이 당신을 고용 한 것을 고치십시오. 그렇게하지 않으면 업무를 완수하기보다는 스스로 더 많은 일을하는 데 관심이있는 컨설턴트 유형으로 인식 될 것입니다.

수정 사항과 함께 보안 관점에서 잘못된 것으로 확인 된 항목과 이러한 이유가 잘못된 이유를 목록으로 제공해야합니다.


13

문제를보고하지 않는 사람은 아무 것도하지 않습니다. 특정 작업이있는 경우 완료를 위해 고용되었지만 다른 보안 문제를 볼 때 문서화하여 해당 개인, 아마도 귀하가 고용 한 작업에 대해보고 한 개인에게보고하십시오.

이것은 전술과 함께 이것을 다루기 위해 강력한 소프트 기술이 유용하게 될 상황입니다. 사이트에서 다른 사람들이 수행 한 작업을 중단하고 개발자가 자신의 재능에 의문을 제기하는 것처럼 개발자가 느끼게하지 않아야합니다.

사이트를 작성한 개발자를위한 코드 / 결점 및 유사한 단어를 참조 할 때 "빈, 나쁜, 가난한, 수수께끼 같은"단어를 피하십시오.


4
개발자가 결함의 심각성과이를 악용 할 수있는 방법을 알고 있는지 확인하십시오. 이 개발자와 함께 로컬 컴퓨터에서 제어 된 '공격'을 시작하는 데 시간을 내면 문제에 대해 교육하는 데 많은 도움이 될 수 있으므로 코드를 강화하는 방법을 제안 할 수 있습니다.
Andrew Gray

7

다른 답변 외에도 개발자가 SQL 주입 문제를 얼마나 쉽게 악용 할 수 있는지에 대한 리소스를 개발자에게 알려주는 것이 있습니다 (예 : 자동 SQL 주입 악용 도구 인 sqlmap) .

과거에 이런 종류의 문제가 심각하다는 것을 증명하는 데 효과적인 것으로 밝혀진 것은 그 문제로 무엇을 할 수 있는지 보여주는 것입니다. 데이터의 추출 등을 보여주기 위해 사이트의 사본을 통해 심각성을 확신 할 수 있습니다.


4
이것은 "해커"처럼 보일 수 있다는 점에서 약간의 위험이 있다는 점에 유의하십시오. 관리 사람들은 반드시 "기존의 취약점", "개발 복사"와 "흰 모자 보안 분석가"와 같은 용어 이해하지 않는다
deworde

0

첫째와 유일한; 경영진은 문제에 대해 듣고 싶지 않습니다. 나는 그들의 시스템이 안전하지 않은 것을 지적했기 때문에 인사 관리 사무실 (백악관의 보안 허가)에서 해고당했습니다. 그것은 과거로 돌아 왔지만 경영 태도는 바뀌지 않았습니다.

전자 메일을 통해 개발자의 문제를 해결하여 길을 찾은 다음 걷거나 도망 가십시오. 그들이 계약자로서 결국 문제를 겪게되면, 문제에 원격으로 연결 되어도 관계없이 당신을 탓하려고합니다.

SQL 주입만큼 근본적인 문제가 있다는 것은 처음에 시스템을 개발할 때 비용이 저렴했으며 현재는 가장 저렴하다는 것입니다. 그들이 아직 사업을하는 동안 그들에게서 할 수있는 것을 얻으십시오. 그러나 다른 곳에서 사업 개발을 추구하십시오.


3
당신의 주장을 지원하기 위해 몇 가지 추론 / 참조를 추가 (나에게 그럴듯하게 들리지만,이 정말 중요하지 않습니다) 그리고 난 downvote 취소됩니다 - "관리 문제에 대해 듣고 싶어하지 않는다"
모기
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.