Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

aws에서 security group 정보 가져오는 API #2

Merged
merged 4 commits into from
Oct 12, 2020

Conversation

KimKiHyuk
Copy link
Contributor

@KimKiHyuk KimKiHyuk commented Oct 2, 2020

Closes: #1

예제 및 security group 정보 가져오는 코드입니다.

@KimKiHyuk KimKiHyuk added the aws label Oct 2, 2020
@KimKiHyuk KimKiHyuk self-assigned this Oct 2, 2020
-e AWS_DEFAULT_REGION=${region} \
-e AWS_ACCESS_KEY_ID=${access_key} \
-e AWS_SECRET_ACCESS_KEY=${secret_key} \
--rm aws ec2 describe-security-groups \
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

커맨드 쉘 실행에서 값 검증 없이 그냥 넣으면 injection이 가능할 것 같습니다.

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

백엔드 프론트엔드가 같은 CORS를 적용해서 프론트쪽에서 믿을 수 있는 입력값을 보내는 경우도 injection 가능성이 있나요??

그리고 혹시 공격예시 알려주실 수 있을까요?

execShellCommand(param)

param에 인젝션 스트링을 넣어서 공격한다는걸로 이해했는데 맞나요?
제가 보안을 잘 몰라서 ㅎㅎ..
맞다면 docker 내부에서 모든 명령어가 실행되므로 안전하지 않나요?

Copy link
Member

@nnnlog nnnlog Oct 3, 2020

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

image

image

인자를 그대로 넣었기 때문에 || 로 도커의 커맨드를 자르고, 원하는 커맨드를 넣어 실행할 수 있을 것 같아요. (뒤에 남은 도커 인자들은 /dev/null로 보내서 자를 수 있고)
CORS와는 상관없이 지금은 저희만 사용하지만, 로그인/회원가입을 넣으면 로그인한 사용자는 저 요청을 날릴 수 있는 API인거 같아서요.

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

이해했습니다 설명 감사합니다 👍

regex로 영문, 숫자, - 를 제외한 문자들이 오면 커맨드 실행 안하고 400 리턴 해주려고 하는데 효과가 있는 방법일까요?

Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

regex로 거르고 400 Bad Request 반환해주면 좋을 것 같아요
저 access key들이 다른 API에서 공통으로 사용된다면 미들웨어로 api 라우터에 가기 전에 앞단에서 거르는게 제일 좋을 것 같아요

Copy link
Contributor Author

@KimKiHyuk KimKiHyuk Oct 3, 2020

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

네 좋은 생각이십니다.
일단 테스트 단계에서 access_key는 거의 대부분 API가 공통으로 사용할테니 미들웨어 걸어서 regex로 체크하는 방법으로 변경하겠습니다 :)

@KimKiHyuk KimKiHyuk requested a review from nnnlog October 2, 2020 16:41
src/routes/v1/Aws.ts Outdated Show resolved Hide resolved
@KimKiHyuk KimKiHyuk merged commit aa143e6 into master Oct 12, 2020
@KimKiHyuk
Copy link
Contributor Author

앗.. 이 브랜치 커밋이 필요해서 다른쪽에서 머지 후 다른 브랜치에서 master로 머지했는데 여기껏도 루트 베이스가 정확히 일치해서 자동 머지된 것 같네요.. ㅠㅠ 찬솔님이 언급하신 이슈는 따로 분리해두겠습니다.

@KimKiHyuk KimKiHyuk mentioned this pull request Oct 12, 2020
@nnnlog nnnlog deleted the aws/get-security-group branch October 28, 2020 09:35
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
Projects
None yet
Development

Successfully merging this pull request may close these issues.

AWS-CLI 로 메타데이터 정보 가져오기
2 participants