GN⁺ 2024-09-04 | parent | ★ favorite | on: 왜 argv[0]을 사용하나요?(wietzebeukema.nl)
Hacker News 의견
  • argv[0]을 읽는 것에 대한 반대 의견은 저자의 무지나 강력한 방어가 필요함

    • busybox가 OpenWrt 박스에서 16MB 루트 파일 시스템으로 어떻게 작동해야 하는지 궁금함
    • argv[0] 값을 쓰는 것을 제한하는 논의는 고려할 만함
    • 공격자는 여전히 보안 조치를 우회할 수 있음
  • argv[0]은 수백 개의 명령어의 심볼릭 링크 대상이 되는 데 사용됨

    • Android는 대부분의 일반적인 쉘 명령어에 대해 이를 사용함
    • Toybox와 busybox가 그 예임
  • argv[0]을 사용하는 도구를 통해 컨테이너 내부에서 호스트 명령어를 실행할 수 있음

    • 예: flatpak 명령어를 호스트에서 실행하도록 설정 가능
  • 프로그램이 이름에 따라 다르게 동작하는 것은 문제가 없음

    • 프로그램 이름을 호출 인수로 포함하는 것은 매우 유용함
  • argv[0]에 대한 반대 의견은 현대 설계 원칙에 어긋난다는 주장임

    • symlink가 있는 경우 프로그램이 어떻게 호출되었는지 아는 것이 합리적임
    • python은 argv[0]을 사용하여 virtualenv 내부인지 확인하고 검색 경로를 조정함
  • argv[0]은 보안 관점에서 특별히 나쁘지 않음

    • 보안 소프트웨어가 argv 값을 인용하도록 수정하는 것이 더 나음
  • argv[0]은 문제없음

    • 대부분의 사람들은 argv[0]을 사용하여 명령어 버전을 구분함
  • busybox는 'shim' 모드에서 argv[0]을 사용함

    • 보안 문제는 SELinux와 같은 더 깊은 보안 메커니즘을 사용하는 것이 더 중요함
  • macOS는 여러 명령어가 단일 실행 파일을 가리키도록 설정함

    • argv[0]을 사용하여 CLI 사용성을 개선하고 코드 중복을 줄임
  • argv[0]을 제거하면 유용한 기능을 잃게 됨

    • 네트워크 보안은 네트워크에서 처리해야 함
    • argv[0]을 제거해도 공격자는 다른 방법을 찾을 것임