질문/조언질답게시판

to sns 애드온으로 게시글 트위터로 전송하고 있는데요.

api에서 app 생성해서 억세스토큰 생생해서 사용합니다.

 

그런데 최근 갑자기 제가 발행하지 않은 트윗이 작성되는 일이 생긴 것을 확인하고

토큰재생성을 했는데 어떻게 알아냈는지 트윗이 또 작성이 되었네요.(러시아어로 작성된 트윗입니다.)

 

물론 트위터 로그인 비밀번호는 바꾸었고 비밀번호가 누출된 것은 아닌것으로 보입니다.(로그인 관련 이슈가 있으면 메일이 오기 때문에..)

 

작성된 트윗을 보면 api를 사용한 트윗인 것으로 충분히 확인이 됩니다.(자유롭게 작성된 것과 api를 통해 작성되는게 구분이 됩니다.)

 

트위터 app 설정이나 개발자관리 사이트에서 살펴봐도 등록된 ip에서만 api 사용이 가능하도록 하는 화이트리스트 부분이 보이지 않네요.

  • profile
    1러시아어로 적힌 트윗이 어디앱을 통해 발행 됫나요.
    2최근 트위터 로그인으로 어딘가 로그인한적 없으신가요(?)(트위터내서 로그인후 대략 설정- 개인정보관련설정-앱내허용리스트 와같은 경로로 허용한 앱리스트가 잇습니다. 불필요한앱이 있지 않은지 확인해보세요.
  • profile profile

    1.트위터에서 api에서  app 이라고 부르며 api 연동을 하기 위한 단위로 이해하시면 됩니다. 트위터 api를 통해 트윗이 발행 되었습니다. (이 경우 등록된 사이트의 컨텐츠들이 전송되는데 러시아어로 작성된 내용과 상관없이 저희 사이트 게시판 주소 하나가 링크로 남기고 작성했더군요.)

    2.트위터로 따로 로그인 하거나 하는 것은 하지 않습니다.

     - 더욱이 로그인 관련 메일도 받은적 없고 어제 패스워드도 변경했으나 문제 트윗이 또 작성되었습니다.

    ps.트위터에서 부르는 app 용어를 보시고 조금 오해 해신 듯 하네요.

        제가 궁금한 것은 트위터에서 생성한 app 의 토큰을 알고 있어도 특정 아이피에게만 허용할 수 있는 화이트리스트 제도가 혹시 있는데 제가 알지 못하나 해서 질문했습니다.

  • profile profile

    Screenshot_20200526-112933_Twitter.jpg

     

    비슷한 방식으로 봇운영중입니다. 그런지도 몇년도 훨신지낫고요. 오해한게 아니라 제가 올려드린 사진처럼 하단 트윗날자 뒤에 앱을 확인해보라는 것이였습니다. 해당 러시아어로 적힌 트윗이 님이 개발한 봇에서 전송된게 맞는지부터 보라는겁니다. 그다음 허용된앱등등 확인하라는거고요.

     

    화이트아이피리스트가 없다는 뜻이기도 하고요

  • profile profile

    제가 만든 앱일 겁니다. 트윗을 지워서 혹시 재발생하면 확인해 보겠습니다.
    하지만 제 계정으로 그리고 발행되는 내용으로 보아 제가 생성한 앱의 토큰을 가지고 발행한 듯 합니다.
     

     

    이 계정에 조회되는 앱은 1개 입니다. 

     

    어제 억세스토큰을 변경하고 나서는 오래 트윗이 작성되지 않다가

    8시간 만에인가 다시 트윗이 작성되어서 오늘 오전에 컨슈머 키도 함께 또 한번 바꾼 상태입니다.

     

    현재 모니터링 중입니다.

     

    ip로 화이트리스트 운용할 수 없군요. 방법이 없는거네요. 

    마지막에 컨슈머 키 까지 바꾸고 억세스 토큰까지 모두 바꾼 한번의 작업이 유효하길 바래야 겠네요.

  • profile profile
    그럼 누군가 글을 작성시도했고, 해당 러시아어로 작성되었지만 스패머로 인해 차단당했다는 가정이 보일 수 있겠네요.

    위치는 실제로는 디비에 입력되지 않더라도 애드온에서 개발한것이라면 종종 이런경우가 있을 수 있습니다. (글 등록이 됬는지 안됬는지 채크없이 애드온이 실행되기 때문입니다.)
  • profile profile

    sns 발행 act 는
    procBoardInsertDocument" && $called_position == "after_module_proc"

    로 되어 있어서 db에 들어가야 발행이 되게 되어 있고 사이트에 로그인 없이 글을 쓸 수도 없습니다.

    글 쓰기로 인해 발행이 된거라면 애드온에서 마련한 것들이 문서번호와 함께 정확히 링크가 남겨지는데 문서번호는 없이 게시판 주소 까지만 링크가 남는거 보니

    api 를 이용해 남의 트윗 계정으로 홍보용 문구를 남기려는 듯 합니다.

     

    글 남기는 주기가 빨랐었는데 어제 억세스토큰을 바꾸고 나니 글을 못남기다가 8시간 만에 오늘 남긴게 확인되어서 오전에 컨슈머 키까지 싹 새로 또 바꿨는데 아직 등록이 안되고 있네요.

  • profile profile
    말씀해주신 글쓰기 시도로 인해 트윗이 작성될 수 있는지 더 살펴봐야 겠는데 지금은 쉽게 가능성이 떠오르지는 않네요.
  • profile
    혹시 스타일쉐어(?) 인가 뭐시긴가 비슷한 앱에 트위터로 가입하신적 있나요? 거기 털려가지고 제 계정도 막 누가 로그인 해서 제가 막 2중잠금하고 난리 쳤는데....
  • profile profile

    위에 댓글로 달았지만 개인적으로 트위터계정으로 어디 가입하거나 하는것을 싫어해서 전혀 트위터 이외에는 사용한 적 없구요. 사이트 공식계정이라 게시글 공유용 이외는 전혀 쓰지 않아요.

    사람이 로그인해서 쓰는 거라면 쓰고 싶은대로 맘대로 링크도 남기고 했을텐데
    딱 저희가 만들어 놓은 api를 사용한 것 처럼 트윗이 작성되었습니다.

     

    그리고 어제 문제를 발견하고 즉시 패스워드를 바꿨는데 그 후에도 트윗이 작성되어서 계정을 로그인 해서 쓰는건 아니란 걸 확인했구요.

    api 컨슈머키 와 억세스 키 토큰 등의 정보를 알면 해당 트윗계정으로 api에 의해 트윗 발행이 가능합니다.

    api 컨슈머키 억세스토큰 등 전부 다 바꾸고 난 이후로는 현재까지 트윗 작성이 안되고 있네요.

    제가 조치하기 전 상황이라면 벌써 10개 정도는 작성되었을....

  • profile profile
    저도 어떤놈이 제 계정으로 홍보글을 두세개 작성했더라구요 ㅋ
  • profile

    오늘 2시간 전 쯤 또 한개의 트윗이 작성되었네요. 오래 걸리긴 했지만 바꾼 억세스토큰 정보를 또 알아낸 듯 합니다. 이거 난감하네요.

     

    제 가 만든 트위터 api의 앱을 통해 작성되었고

    url은 저희 사이트 게시판 중 하나로 지정되었고 내용은 지들이 작성하고 싶은 내용을 적었네요.

  • profile
    먼저 비밀번호 변경하신뒤 아래 페이지에서 앱/세션 체크하시면 됩니다.

    https://twitter.com/settings/applications
    1. 앱 목록에서 신뢰할수 있는 앱 제외 모든 앱 접근 차단(사이트 API 제외 모든 앱을 차단하시는게 좋습니다)
    2. 세션 목록 체크후, 로그인 지역이 평상시 로그인하던 지역과 다른 경우 해당 세션 차단(목록에서 세션 눌러서 표시된 디바이스에서 로그아웃 클릭)
  • profile profile

    비밀번호는 이미 변경했고 특이한 세션은 없고 제가 접속한 세션만 있습니다.

    사이트 앱 밖에 없구요. 사이트 앱으로 트윗이 작성되는 문제입니다.

  • profile

    조금 더 자세히 알아보려고 억세스 ip를 확인해보니 특이한 ip가 없네요.

    저희 애드온으로 인해 트위터 앱으로 트윗이 발행될 때는 저희 서버 아이피가 기록되구요.
    그외 제가 로그인 했을대 로그인 한 단말 아이피가 기록되어 있네요.

    의심했던 누군가가 app 토큰 정보를 가지고 api를 사용한 건 아닌 것으로 보입니다.

    람보님께서 의심하셨던 누군가가 사이트에 글 쓰기 시도를 통해 글이 작성되지 못하고 그때 애드온에서 트윗전송되는 코드가 동작했다는게 의심이 되는 상황으로 온 것같습니다.

    그런데
    애드온에서 트윗 전송 코드는
    procBoardInsertDocument" && $called_position == "after_module_proc"


    위 액트의 조건으로 동작하는데 지금 의심하는 증상이 발생할 수 있는지 잘 모르겠습니다.

    일단 금일 마지막으로 애드온 상단에 비로그인시에는 리턴되도록 코드를 추가해 놓았습니다.

     

    --------------------

     

    위 상황에 대해서 추측? 을 조금 해보니

    xe 구조에 맞게 스팸 글쓰기 시도를 해서 권한때문에 실패로 리턴이 되게 되면 (해당 게시판의 목록으로 리턴될 듯)

    procBoardInsertDocument act  의 after 조건과 일치하게 되는 것이라 추측이 됩니다.(개발자분들은 아실듯)

     

    이때 트위터로 전송하는 코드가 동작해 트위터로 글쓰기 시도시 작성했던 내용과 문서번호 없이 해당 게시판주소까지만 링크로 전달되는 것 같습니다.

     

    지금의 상황으로 지금 유추해 봤습니다. 제 가설 중 기술적으로 틀린게 있다면 알려주세요.

     

    따라서 애드온에 비회원에게 동작하지 않는 코드를 넣어서 위 상황은 해결이 될 것 같구요