Salta al contenuto
0
  • Home
  • Piero Bosio
  • Blog
  • Mondo
  • Fediverso
  • News
  • Categorie
  • Old Web Site
  • Recenti
  • Popolare
  • Tag
  • Utenti
  • Home
  • Piero Bosio
  • Blog
  • Mondo
  • Fediverso
  • News
  • Categorie
  • Old Web Site
  • Recenti
  • Popolare
  • Tag
  • Utenti
Skin
  • Chiaro
  • Brite
  • Cerulean
  • Cosmo
  • Flatly
  • Journal
  • Litera
  • Lumen
  • Lux
  • Materia
  • Minty
  • Morph
  • Pulse
  • Sandstone
  • Simplex
  • Sketchy
  • Spacelab
  • United
  • Yeti
  • Zephyr
  • Scuro
  • Cyborg
  • Darkly
  • Quartz
  • Slate
  • Solar
  • Superhero
  • Vapor

  • Predefinito (Cerulean)
  • Nessuna skin
Collassa

Piero Bosio Social Web Site Personale Logo Fediverso

Social Forum federato con il resto del mondo. Non contano le istanze, contano le persone
  1. Home
  2. Categorie
  3. General Discussion
  4. FEP-fe34 (Origin-based security model) update : https://codeberg.org/fediverse/fep/pulls/849

FEP-fe34 (Origin-based security model) update : https://codeberg.org/fediverse/fep/pulls/849

Pianificato Fissato Bloccato Spostato General Discussion
activitypubfepfe34
7 Post 3 Autori 0 Visualizzazioni
  • Da Vecchi a Nuovi
  • Da Nuovi a Vecchi
  • Più Voti
Rispondi
  • Risposta alla discussione
Effettua l'accesso per rispondere
Questa discussione è stata eliminata. Solo gli utenti con diritti di gestione possono vederla.
  • silverpill@mitra.socialundefined Questo utente è esterno a questo forum
    silverpill@mitra.socialundefined Questo utente è esterno a questo forum
    silverpill@mitra.social
    scritto su ultima modifica di
    #1

    FEP-fe34 (Origin-based security model) update : https://codeberg.org/fediverse/fep/pulls/849

    I tried to better explain the assumptions on which the model is based, and clarified how exactly origins should enforce boundaries between actors:

    Servers MUST ensure that activities published by a client do not represent unauthorized actions. This includes activities embedded within other activities and objects.

    Servers MUST NOT allow clients to publish activities where embedded objects are owned by another actor.

    Lemmy API and Mastodon API implementers don't have to worry about this, but one needs to be very careful when accepting arbitrary payloads from clients, for example, when implementing ActivityPub C2S API or FEP-ae97 API. Unfortunately, these security issues are completely ignored by people who push for wide deployment of ActivityPub C2S API.

    Another addition is the recommendation to not use partially embedded objects, because that might lead to cache poisoning:

    Embedded non-anonymous objects SHOULD NOT be partial representations. A server that relies on embedding for authentication might save a partial representation of an object to the cache, replacing the full object.

    (see this issue for details: https://codeberg.org/silverpill/feps/issues/21)

    #fep_fe34 #activitypub

    silverpill@mitra.socialundefined evan@cosocial.caundefined 2 Risposte Ultima Risposta
    3
    • silverpill@mitra.socialundefined silverpill@mitra.social

      FEP-fe34 (Origin-based security model) update : https://codeberg.org/fediverse/fep/pulls/849

      I tried to better explain the assumptions on which the model is based, and clarified how exactly origins should enforce boundaries between actors:

      Servers MUST ensure that activities published by a client do not represent unauthorized actions. This includes activities embedded within other activities and objects.

      Servers MUST NOT allow clients to publish activities where embedded objects are owned by another actor.

      Lemmy API and Mastodon API implementers don't have to worry about this, but one needs to be very careful when accepting arbitrary payloads from clients, for example, when implementing ActivityPub C2S API or FEP-ae97 API. Unfortunately, these security issues are completely ignored by people who push for wide deployment of ActivityPub C2S API.

      Another addition is the recommendation to not use partially embedded objects, because that might lead to cache poisoning:

      Embedded non-anonymous objects SHOULD NOT be partial representations. A server that relies on embedding for authentication might save a partial representation of an object to the cache, replacing the full object.

      (see this issue for details: https://codeberg.org/silverpill/feps/issues/21)

      #fep_fe34 #activitypub

      silverpill@mitra.socialundefined Questo utente è esterno a questo forum
      silverpill@mitra.socialundefined Questo utente è esterno a questo forum
      silverpill@mitra.social
      scritto su ultima modifica di
      #2

      @phnt Following on one of our conversations, I now call out authorized fetch as ineffective when it is used on public objects:

      Some servers require an HTTP signature in an attempt to limit access to public objects. In this scenario, the request is expected to be signed with a key that is owned by a server actor. However, this measure is ineffective and can easily be circumvented by changing the keyId parameter of a signature.

      phnt@fluffytail.orgundefined 1 Risposta Ultima Risposta
      0
      • silverpill@mitra.socialundefined silverpill@mitra.social

        FEP-fe34 (Origin-based security model) update : https://codeberg.org/fediverse/fep/pulls/849

        I tried to better explain the assumptions on which the model is based, and clarified how exactly origins should enforce boundaries between actors:

        Servers MUST ensure that activities published by a client do not represent unauthorized actions. This includes activities embedded within other activities and objects.

        Servers MUST NOT allow clients to publish activities where embedded objects are owned by another actor.

        Lemmy API and Mastodon API implementers don't have to worry about this, but one needs to be very careful when accepting arbitrary payloads from clients, for example, when implementing ActivityPub C2S API or FEP-ae97 API. Unfortunately, these security issues are completely ignored by people who push for wide deployment of ActivityPub C2S API.

        Another addition is the recommendation to not use partially embedded objects, because that might lead to cache poisoning:

        Embedded non-anonymous objects SHOULD NOT be partial representations. A server that relies on embedding for authentication might save a partial representation of an object to the cache, replacing the full object.

        (see this issue for details: https://codeberg.org/silverpill/feps/issues/21)

        #fep_fe34 #activitypub

        evan@cosocial.caundefined Questo utente è esterno a questo forum
        evan@cosocial.caundefined Questo utente è esterno a questo forum
        evan@cosocial.ca
        scritto su ultima modifica di
        #3

        @silverpill

        I don't think this makes sense: "Servers MUST NOT allow clients to publish activities where embedded objects are owned by another actor."

        We've never had this requirement; it's not built into ActivityPub; it's not how federation work.

        - Like
        - Announce
        - inReplyTo
        - Follow
        - Accept
        - Reject

        I think two way verification is a better mechanism than same-origin. So, check that the `object` of a `Create` has the same `attributedTo` as the `actor`.

        silverpill@mitra.socialundefined 1 Risposta Ultima Risposta
        0
        • silverpill@mitra.socialundefined silverpill@mitra.social

          @phnt Following on one of our conversations, I now call out authorized fetch as ineffective when it is used on public objects:

          Some servers require an HTTP signature in an attempt to limit access to public objects. In this scenario, the request is expected to be signed with a key that is owned by a server actor. However, this measure is ineffective and can easily be circumvented by changing the keyId parameter of a signature.

          phnt@fluffytail.orgundefined Questo utente è esterno a questo forum
          phnt@fluffytail.orgundefined Questo utente è esterno a questo forum
          phnt@fluffytail.org
          scritto su ultima modifica di
          #4
          @silverpill
          >this measure is ineffective and can easily be circumvented by changing the keyId parameter of a signature.

          I never thought about it like that, but that too is a way to circumvent it. Although you would still need some way to publish that key and a valid Actor for verification, a server. If a remote server implementing restrictions on fetching based on signatures only disallows the instance Actor, then that is a way to bypass that restriction. Although I think there currently is no implementation that does that. Mastodon instead blocks everything on the domain including all subdomains and GTS probably does the same. No idea how the Misskey forks and Iceshrimp.NET do it though. Of course using different domains works as well.

          >Servers MUST NOT allow clients to publish activities where embedded objects are owned by another actor.

          Unrelated to the this FEP, but this came up when fixing the recent Pleroma security issues. There is no agreed upon way of federating moderation decisions to remote instances. It is logical when validating remote Update Activities to only allow Activities that update Objects owned by the same Actor, however that is never guaranteed when for example an admin on a remote instance forces a post to be NSFW. Similarly Delete Activities can have the Actor be the moderator, but Object actually owned by user.
          silverpill@mitra.socialundefined 1 Risposta Ultima Risposta
          0
          • evan@cosocial.caundefined evan@cosocial.ca

            @silverpill

            I don't think this makes sense: "Servers MUST NOT allow clients to publish activities where embedded objects are owned by another actor."

            We've never had this requirement; it's not built into ActivityPub; it's not how federation work.

            - Like
            - Announce
            - inReplyTo
            - Follow
            - Accept
            - Reject

            I think two way verification is a better mechanism than same-origin. So, check that the `object` of a `Create` has the same `attributedTo` as the `actor`.

            silverpill@mitra.socialundefined Questo utente è esterno a questo forum
            silverpill@mitra.socialundefined Questo utente è esterno a questo forum
            silverpill@mitra.social
            scritto su ultima modifica di
            #5

            @evan This is my mistake, thanks for pointing out. It should be changed to "...where embedded objects are owned by another local actor".

            I think Create.object.attributedTo == Create.actor is a different thing, because it is related to authorization, whereas the requirement we're discussing here is related to authentication.

            In general, yes, none of this was built into ActivityPub. But over the years implementers figured out authentication and authorization on their own, and now this is how federation works. People expect that same-origin embeddings can be cached as is, without re-fetching.

            @general

            evan@cosocial.caundefined 1 Risposta Ultima Risposta
            0
            • phnt@fluffytail.orgundefined phnt@fluffytail.org
              @silverpill
              >this measure is ineffective and can easily be circumvented by changing the keyId parameter of a signature.

              I never thought about it like that, but that too is a way to circumvent it. Although you would still need some way to publish that key and a valid Actor for verification, a server. If a remote server implementing restrictions on fetching based on signatures only disallows the instance Actor, then that is a way to bypass that restriction. Although I think there currently is no implementation that does that. Mastodon instead blocks everything on the domain including all subdomains and GTS probably does the same. No idea how the Misskey forks and Iceshrimp.NET do it though. Of course using different domains works as well.

              >Servers MUST NOT allow clients to publish activities where embedded objects are owned by another actor.

              Unrelated to the this FEP, but this came up when fixing the recent Pleroma security issues. There is no agreed upon way of federating moderation decisions to remote instances. It is logical when validating remote Update Activities to only allow Activities that update Objects owned by the same Actor, however that is never guaranteed when for example an admin on a remote instance forces a post to be NSFW. Similarly Delete Activities can have the Actor be the moderator, but Object actually owned by user.
              silverpill@mitra.socialundefined Questo utente è esterno a questo forum
              silverpill@mitra.socialundefined Questo utente è esterno a questo forum
              silverpill@mitra.social
              scritto su ultima modifica di
              #6

              @phnt Yesterday, a proposal was submitted that offered a solution to this exact problem: https://codeberg.org/fediverse/fep/src/branch/main/fep/baf5/fep-baf5.md. I don't like some parts of it (see discussion), but it's a step in the right direction

              1 Risposta Ultima Risposta
              0
              • silverpill@mitra.socialundefined silverpill@mitra.social

                @evan This is my mistake, thanks for pointing out. It should be changed to "...where embedded objects are owned by another local actor".

                I think Create.object.attributedTo == Create.actor is a different thing, because it is related to authorization, whereas the requirement we're discussing here is related to authentication.

                In general, yes, none of this was built into ActivityPub. But over the years implementers figured out authentication and authorization on their own, and now this is how federation works. People expect that same-origin embeddings can be cached as is, without re-fetching.

                @general

                evan@cosocial.caundefined Questo utente è esterno a questo forum
                evan@cosocial.caundefined Questo utente è esterno a questo forum
                evan@cosocial.ca
                scritto su ultima modifica di
                #7

                @silverpill @general so this is for **embedded** objects? That totally makes sense.

                1 Risposta Ultima Risposta
                0

                Ciao! Sembra che tu sia interessato a questa conversazione, ma non hai ancora un account.

                Stanco di dover scorrere gli stessi post a ogni visita? Quando registri un account, tornerai sempre esattamente dove eri rimasto e potrai scegliere di essere avvisato delle nuove risposte (tramite email o notifica push). Potrai anche salvare segnalibri e votare i post per mostrare il tuo apprezzamento agli altri membri della comunità.

                Con il tuo contributo, questo post potrebbe essere ancora migliore 💗

                Registrati Accedi
                Rispondi
                • Risposta alla discussione
                Effettua l'accesso per rispondere
                • Da Vecchi a Nuovi
                • Da Nuovi a Vecchi
                • Più Voti


                Feed RSS
                FEP-fe34 (Origin-based security model) update : https://codeberg.org/fediverse/fep/pulls/849
                @pierobosio@soc.bosio.info
                V4.10.1 Contributors
                • Accedi

                • Accedi o registrati per effettuare la ricerca.
                • Primo post
                  Ultimo post