Python 스크립트를 사용하고 실수로 가상 회의 플랫폼을 해킹한 방법

1885 단어 pythonopensource
방법이 아니라 경고의 이야기로 이것을 읽으십시오. 첫째, 공개. 우리는 API 기록 시스템이므로 API가 백엔드에서 처리되는 방식에 항상 관심이 있습니다. 둘째, 우리는 개발자이므로 해킹은 본성입니다.

최근 회의에서 우리 개발자 중 한 명이 리더보드의 참석자가 엄청난 점수를 모았다는 사실을 알게 되었습니다. 다른 참석자의 2배 이상입니다. 그것은 우리의 Spidey 감각을 얼얼하게 보냈습니다. 그 사람의 프로필을 보면 점수를 높이는 데 사용한 두 개의 스크립트가 포함된 GitHub 저장소에 대한 링크가 표시되었습니다. 여기에는 사악한 것이 없고 단지 좋은 구식 개발자의 독창성만 있을 뿐입니다.

글쎄, 그것은 재미있어 보였다. 그래서 프리젠테이션 사이에 약간의 중단 시간 동안 스크립트(참석자 ID를 긁어내는 스크립트와 프로필 페이지를 방문하는 스크립트)를 분기하고 병합하여 좀 더 효율적으로 만들고 이를 실행하여 각 참석자의 페이지를 자동으로 방문하고 우리 자신의 점수를 높일 수 있습니다. 우리가 옳았다. 그것은 일종의 재미였습니다.

여기가 흥미로워집니다. 우리 제품의 라이브 데모가 예정되어 있었습니다. 이 데모에서는 Resurface 제품이 실시간으로 볼 수 있는 API 호출을 캡처하는 방법을 보여주고 싶었습니다. 데모를 시청하는 사람들이 알림을 받고 동시에 Resurface에 기록된 해당 알림과 관련된 API 호출을 보는 것보다 더 좋은 방법은 무엇입니까? 우리는 주변을 조금 둘러본 결과 메시징 엔드포인트가 프로필 ID를 볼 수 있는 엔드포인트만큼 사용 가능하다는 것을 알았습니다. 그래서 우리는 모든 참석자에게 메시지를 보내는 또 다른 스크립트를 작성했습니다. 데모에서 이 스크립트를 실행했습니다. 의도한 대로 참석자는 메시지 알림을 받았고 해당 메시지와 관련된 통화가 녹음된 것을 보았습니다. 많은 사람들이 놀랐습니다. (주의: 회의에 참석한 다른 모든 사람들도 메시지를 받았기 때문에 여기에서 몇 가지 깃털을 휘둘렀습니다. 일부는 놀라움보다 속상해했습니다.)

그러나 그것은 액세스의 용이성을 설명하는 역할을 했으며 사용자 인증이 모든 용도를 해결할 수는 없습니다. 우리는 Peloton이 해킹당한 것과 같은 방식으로 API를 사용했습니다. 즉, 사용자가 인증되었지만 실행할 수 있는 작업을 제어할 수 있는 사용자 수준의 액세스 권한이 없음을 확인하는 것입니다. 회의 예에서 참가자는 의사 소통을 위해 일정 수준의 액세스 권한이 필요합니다. 그렇다면 이것이 남용이나 공격이 되지 않도록 하려면 어떻게 해야 합니까? 또는 최소한 부적절한 댓글과 이미지를 게시하는 사람들입니다.

플랫폼 소유자는 사람들이 공개 API를 남용하고 있다는 사실을 알지 못했거나 모든 사람에게 직접적인 영향을 미치지 않았기 때문에 문제를 알고도 보지 못했습니다. 모두에게 DM을 보낼 때까지. 사람들의 관심을 끌었습니다.

하이람의 법칙은 여기에서 위험한 방식으로 진행됩니다.

With a sufficient number of users of an API,
it does not matter what you promise in the contract:
all observable behaviors of your system
will be depended on by somebody.

우리는 그 마지막 줄을 “누군가에 의존하거나 오용될 것입니다”로 변경할 수 있습니다.

어느 쪽이든, API 작업을 알지 못하거나 무시하면 API 끝점을 모니터링하여 방지할 수 있는 문제가 발생합니다. 예를 들어, 사용자를 식별하고 더 나쁜 행동을 하기 전에 경고하거나 금지할 수 있습니다.

좋은 웹페이지 즐겨찾기