MASTG-KNOW-0059: Bibliotecas de Terceiros

Aplicações iOS frequentemente fazem uso de bibliotecas de terceiros que aceleram o desenvolvimento, pois o desenvolvedor precisa escrever menos código para resolver um problema. No entanto, bibliotecas de terceiros podem conter vulnerabilidades, licenças incompatíveis ou conteúdo malicioso. Além disso, é difícil para organizações e desenvolvedores gerenciar dependências de aplicações, incluindo o monitoramento de lançamentos de bibliotecas e a aplicação de patches de segurança disponíveis.

Existem três ferramentas de gerenciamento de pacotes amplamente utilizadas: Swift Package Manager, Carthage e CocoaPods:

  • O Swift Package Manager é de código aberto, incluído com a linguagem Swift, integrado ao Xcode (desde o Xcode 11) e suporta pacotes Swift, Objective-C, Objective-C++, C e C++. Ele é escrito em Swift, é descentralizado e utiliza o arquivo Package.swift para documentar e gerenciar dependências do projeto.
  • O Carthage é de código aberto e pode ser usado para pacotes Swift e Objective-C. É escrito em Swift, é descentralizado e utiliza o arquivo Cartfile para documentar e gerenciar dependências do projeto.
  • O CocoaPods é de código aberto e pode ser usado para pacotes Swift e Objective-C. É escrito em Ruby, utiliza um registro centralizado de pacotes para pacotes públicos e privados e usa o arquivo Podfile para documentar e gerenciar dependências do projeto.

Existem duas categorias de bibliotecas:

  • Bibliotecas que não são (ou não deveriam ser) empacotadas dentro da aplicação de produção real, como o OHHTTPStubs usado para testes.
  • Bibliotecas que são empacotadas dentro da aplicação de produção real, como o Alamofire.

Essas bibliotecas podem levar a efeitos colaterais indesejados:

  • Uma biblioteca pode conter uma vulnerabilidade, o que tornará a aplicação vulnerável. Um bom exemplo é a versão 2.5.1 do AFNetworking, que continha um bug que desativava a validação de certificados. Essa vulnerabilidade permitiria que atacantes executassem ataques Machine-in-the-Middle (MITM) contra aplicativos que usam a biblioteca para conectar-se às suas APIs.
  • Uma biblioteca pode não ser mais mantida ou ser pouco utilizada, razão pela qual nenhuma vulnerabilidade é relatada e/ou corrigida. Isso pode levar à existência de código ruim e/ou vulnerável em sua aplicação por meio da biblioteca.
  • Uma biblioteca pode usar uma licença, como a LGPL2.1, que exige que o autor da aplicação forneça acesso ao código-fonte para aqueles que usam a aplicação e solicitam acesso ao seu código-fonte. Na verdade, a aplicação deve então ser permitida ser redistribuída com modificações em seu código-fonte. Isso pode colocar em risco a propriedade intelectual (IP) da aplicação.

Observe que esse problema pode ocorrer em múltiplos níveis: quando você usa webviews com JavaScript executando no webview, as bibliotecas JavaScript também podem ter esses problemas. O mesmo se aplica a plugins/bibliotecas para aplicativos Cordova, React-native e Xamarin.