Proteção contra confusão de dependência em PHP com Composer





Alex Birsan publicou recentemente um artigo "Confusão de dependências: como eu invadi Apple, Microsoft e dezenas de outras empresas", no qual ele explicou como usou gerenciadores de pacotes em nível de linguagem como npm (Javascript), pip (Python) e gems ( Ruby) para forçar as empresas a instalar e executar código malicioso em sua infraestrutura.



O problema se resume ao fato de que as empresas se referem a pacotes internos por nome, por exemplo my-internal-package



, e um invasor publica um pacote com o mesmo nome no registro / repositório central de pacotes de idiomas (para PHP é packagist.org ) my-internal-package



ter uma versão superior. As empresas então instalaram e executaram esses pacotes maliciosos em vez de seus pacotes internos porque seu gerenciador de pacotes estava escolhendo um número de versão mais alto do repositório de pacotes padrão em vez do repositório interno.



Falando sobre a solução para esse problema para o Composer e o Packagist no Twitter, Geordie resumiu as várias medidas que o Composer e o Packagist estão usando para proteger as empresas desse sério problema:



  1. Composer , , my-company/our-internal-pkg



    . packagist.org. Packagist.org . my-company/



    . packagist.org ( ), , my-company/dummy-pkg



    , , , . my-company/my-internal-package



    , «» packagist.org.
  2. Composer 2.0, . , , . packagist.org, . , , , Composer .
  3. Private Packagist , packagist.org, , , . Private Packagist Composer 1.x , Composer 2.
  4. Private Packagist packagist.org , Composer. , .
  5. Composer (lock file) URL . composer install, , . , , .
  6. Com o Composer 2, você pode excluir o carregamento de nomes de pacotes ou padrões para cada repositório. Portanto, você pode ter certeza de que mesmo pacotes com erros ortográficos que não existem sem um prefixo registrado em packagist.org não serão capazes de fazer download de packagist.org substituindo a configuração padrão em composer.json. Este filtro de exclusão também pode ser usado para repositórios de pacotes de terceiros adicionais.




    "repositories": {
        "private-repo": {
            "url": "https://my-repo.internal"
        }
        "packagist.org": {
            "url": "https://repo.packagist.org",
            "exclude": ["myprefix/*"]
        }
    }
      
      





Ataques na cadeia de suprimentos semelhantes aos descritos por Alex são uma séria ameaça para as empresas e têm sido destaque nas notícias recentemente, por isso é importante que sua empresa compreenda os riscos que enfrenta e tome medidas para mitigá-los.






Anúncio



Você está procurando um VDS para projetos de depuração, um servidor para desenvolvimento e implantação? Definitivamente, você é nosso cliente :) Cobrança diária de servidores, crie sua própria configuração em poucos cliques, anti-DDoS e licenças do Windows já estão inclusas no preço.






All Articles