Uso de mecanismos de navegação alternativos no Japão

    No iOS 26.2 e em versões posteriores, mecanismos de navegação que não sejam WebKit podem ser usados em dois tipos de app para usuários no Japão: apps de navegação dedicados, que oferecem uma experiência completa de navegação na web, e apps de entidades mantenedoras de mecanismos de navegação, que fornecem experiências de navegação integradas por meio de um mecanismo incorporado.

    A Apple fornecerá aos desenvolvedores autorizados acesso a tecnologias dentro do sistema que viabilizam funcionalidades essenciais e possibilitam a oferta de mecanismos de navegação modernos de alto desempenho. Essas tecnologias incluem compilação JIT (just-in-time), suporte a multiprocesso e muito mais.

    No entanto, como os mecanismos de navegação estão constantemente expostos a conteúdo não confiável e potencialmente malicioso e têm acesso a dados sensíveis dos usuários, eles são um dos alvos de ataque mais comuns explorados por agentes mal-intencionados. Para reforçar a segurança dos usuários online, a Apple autorizará a implementação de mecanismos de navegação alternativos apenas aos desenvolvedores que cumprirem critérios específicos e assumirem compromissos contínuos com requisitos rigorosos de privacidade e segurança, incluindo a disponibilização de atualizações de segurança em tempo hábil para enfrentar ameaças e vulnerabilidades emergentes.


    Direito Web Browser Engine

    No caso de apps de navegação

    Com o Direito Web Browser Engine (Mecanismo de Navegação na Web), você pode usar um mecanismo de navegação alternativo em seu app de navegação. Se você se interessar em usar um mecanismo de navegação alternativo em seu app de navegação, veja os requisitos abaixo e envie sua solicitação para obter o Direito Web Browser Engine. Para obter orientações técnicas, consulte:

    Requisitos

    Para se qualificar para esse direito, seu app deve cumprir os seguintes requisitos:

    • Ser distribuído exclusivamente no iOS no Japão. A distribuição em outras jurisdições ou outras plataformas Apple só será permitida se expressamente autorizada pela Apple nos termos do Contrato de Desenvolvedor — incluindo quaisquer adendos — e desde que você tenha obtido o respectivo perfil de direito (entitlement);
    • Ter o Direito do navegador padrão
    • Atender aos seguintes requisitos funcionais para garantir que seu app esteja usando um mecanismo de navegação que forneça uma funcionalidade básica da web:
      • Ser aprovado em um percentual mínimo dos testes disponíveis dentre os pacotes de testes padrão da indústria:
        • 90% dos Web Platform Tests
          • calculados como porcentagem do maior número de subtestes executados por qualquer navegador na página inicial do wpt.fyi; e
          • em um sistema operacional com o qual o pacote de testes seja compatível
        • 80% no Test262 em um dispositivo iOS ou iPadOS ou em um Mac com o Apple Silicon; e
      • Cumprir o requisito do conjunto de testes acima caso a compilação JIT (just-in-time) não esteja disponível (por exemplo, se o usuário tiver ativado o Modo de Bloqueio).
    • Você e seu app devem atender aos seguintes requisitos de segurança:
      • Comprometer-se a adotar processos de desenvolvimento seguros, incluindo o monitoramento da cadeia de suprimentos de software do seu app em busca de vulnerabilidades e o cumprimento das práticas recomendadas em relação ao desenvolvimento seguro de software (como a realização de modelagem de ameaças para novos recursos em desenvolvimento).
      • Fornecer um URL para uma política de divulgação de vulnerabilidade publicada que inclua: informações de contato para que terceiros (que pode incluir a Apple) relatem vulnerabilidades e problemas de segurança a você; quais informações fornecer em um relatório e o prazo para o recebimento de atualizações de status.
      • Comprometer-se a mitigar, em tempo hábil, as vulnerabilidades que estão sendo exploradas no seu app ou no mecanismo de navegação alternativo utilizado (por exemplo, 30 dias para as classes mais simples de vulnerabilidades que estão sendo exploradas ativamente).
      • Fornecer um URL para uma página (ou páginas) da web disponível publicamente que informe sobre quais vulnerabilidades relatadas foram resolvidas em versões específicas do mecanismo de navegação e, se aplicável, na versão correspondente do app.
      • Se o mecanismo de navegação alternativo usar um repositório de certificados raiz que não seja acessado por meio do SDK do iOS, você deverá tornar a política de certificados raiz publicamente acessível, e o proprietário dessa política deverá participar do CA/Browser Forum (Certification Authority/Browser Forum) na qualidade de navegador.
      • Demonstrar suporte a protocolos modernos de TLS (Transport Layer Security) para proteger comunicações de dados em trânsito durante o uso do mecanismo de navegação.
    Requisitos de segurança do programa

    Você deve cumprir os seguintes requisitos:

    • Usar linguagens de programação com segurança de memória, ou recursos que aumentem a segurança de memória em outras linguagens, no mecanismo de navegação alternativo, no mínimo, para todo o código que processa conteúdo da web;
    • Adotar as mais recentes mitigações de segurança (por exemplo, códigos de autenticação de ponteiros) que removem classes de vulnerabilidades ou dificultam muito o desenvolvimento de uma cadeia de exploração. Isso inclui a adoção de:
      • Códigos de autenticação de ponteiros (PAC);
      • Memory Integrity Enforcement (MIE) para quaisquer (i) alocadores fornecidos pelo sistema utilizados em quaisquer extensões de conteúdo e (ii) alocadores fornecidos pelo sistema ou personalizados empregados em todos os processos e extensões do app, incluindo extensões de rede e de renderização gráfica;
    • Seguir as práticas recomendadas de design e programação seguros;
    • Usar a separação de processos para reduzir o efeito de explorações e validar a comunicação entre processos (IPC) no mecanismo de navegação alternativo;
    • Monitorar vulnerabilidades em quaisquer dependências de software de terceiros e na cadeia de suprimentos de software mais ampla do seu app, migrando para versões mais recentes caso uma vulnerabilidade impacte o seu app;
    • Não usar frameworks ou bibliotecas de software que não estão mais recebendo atualizações de segurança em resposta a vulnerabilidades; e
    • Priorizar a resolução de vulnerabilidades relatadas com agilidade, em vez de priorizar o desenvolvimento de novos recursos. Por exemplo, quando o mecanismo de navegação alternativo cria uma ponte entre o SDK da plataforma e o conteúdo da web para habilitar APIs web, mediante solicitação, o suporte a essa API web dever ser removido se ela for identificada como apresentando uma vulnerabilidade. A maioria das vulnerabilidades deve ser resolvida em 30 dias, mas algumas podem ser mais complexas e levar mais tempo.
    Requisitos de privacidade do programa

    Você deve cumprir os seguintes requisitos:

    • Bloquear cookies entre sites (ou seja, cookies de terceiros) por padrão, a menos que o usuário opte expressamente por permiti-los com consentimento informado ou conforme exigido para compatibilidade no caso de janelas pop-up que interagem com quadros na janela de abertura;
    • Particionar qualquer armazenamento ou estado observável com base no site de nível superior, ou bloquear o uso e a observação desse armazenamento ou estado entre sites;
    • Não sincronizar qualquer estado — incluindo cookies — entre seu app e qualquer outro app, ainda que pertencente ao mesmo desenvolvedor, salvo se o usuário tiver concedido permissão explícita para tal sincronização, seja mediante autenticação em ambos os apps ou por outro mecanismo que configure consentimento expresso;
    • Não compartilhar identificadores de dispositivos com sites sem consentimento informado e ativação do usuário;
    • Identificar as conexões de rede usando as APIs fornecidas para gerar um Relatório de Privacidade de Apps no iOS (independentemente da jurisdição em que o app seja distribuído); e
    • Seguir os padrões da web geralmente adotados sobre quando exigir a ativação informada do usuário e/ou o seu consentimento, conforme apropriado para APIs web (por exemplo, acesso à área de transferência ou ao modo de tela cheia), incluindo as APIs que fornecem acesso a informações pessoalmente identificáveis.

    Direito Embedded Browser Engine

    No caso de navegação dentro do app

    Com o Direito Embedded Browser Engine (Mecanismo de Navegação Integrado), você pode incorporar um mecanismo de navegação alternativo em seu app para fornecer navegação dentro do app. A navegação dentro do app consiste na exibição dinâmica de conteúdos da web que seriam acessíveis e funcionariam em um app de navegação convencional. Isso não inclui conteúdo integrado ou disponível apenas pelo app.

    O foco principal do seu app ao oferecer navegação dentro do app deve ser fornecer a funcionalidade de navegação na web. Ao disponibilizar a navegação dentro do app, a interface de usuário deve:

    • Ocupar a maior parte da tela, exceto pelos controles necessários para que o usuário final gerencie a sessão de navegação;
    • Fornecer um botão ou link para o navegador padrão do sistema, permitindo que o usuário abra um app de navegação dedicado para ver o conteúdo que está sendo exibido; e
    • Exibir o domínio ou URL cujo conteúdo está sendo renderizado pela navegação dentro do app.

    Se você quiser usar um mecanismo de navegação alternativo em seu app para fornecer experiências de navegação dentro do app, veja os requisitos abaixo e envie sua solicitação para obter o Direito Embedded Browser Engine Entitlement. Você precisará fornecer informações sobre o mecanismo que pretende incorporar, incluindo como ele atende aos requisitos e como pode ser integrado a um app para proporcionar a experiência de navegação dentro do app. Para obter orientações técnicas, consulte a seção Exemplos e recursos.

    Requisitos

    Para se qualificar para esse direito, sua organização deve ser uma entidade mantenedora do mecanismo de navegação. Um mantenedor do mecanismo de navegação é uma entidade que detém a responsabilidade primária pela operação de um mecanismo de navegação distinto.

    • Responsabilidade primária significa ter controle operacional e assumir a responsabilidade final por coordenar a resposta a vulnerabilidades de segurança ou privacidade identificadas no mecanismo de navegação, bem como por implementar sua solução.
    • Um mecanismo de navegação distinto é mantido por uma entidade ou organização diferente de qualquer outro mecanismo de navegação e apresenta uma arquitetura e um conjunto de APIs web materialmente distintos dos de qualquer outro mecanismo. O mecanismo, em geral, não é atualizado com as alterações feitas em suas ramificações; em vez disso, ele envia suas próprias atualizações para elas.
    Requisitos do app

    O seu app deve cumprir os seguintes requisitos:

    • Ser distribuído exclusivamente no iOS no Japão. A distribuição em outras jurisdições ou outras plataformas Apple só será permitida se expressamente autorizada pela Apple nos termos do Contrato de Desenvolvedor — incluindo quaisquer adendos — e desde que você tenha obtido o respectivo perfil de direito (entitlement);
    • Usar o direito exclusivamente para navegação dentro do app;
    • Não ter o direito do navegador padrão
    • Atender aos seguintes requisitos funcionais para garantir que seu app esteja usando um mecanismo de navegação que forneça uma funcionalidade básica da web:
      • Ser aprovado em um percentual mínimo dos testes disponíveis dentre os pacotes de testes padrão da indústria:
        • 90% dos Web Platform Tests
          • calculados como porcentagem do maior número de subtestes executados por qualquer navegador na página inicial do wpt.fyi; e
          • em um sistema operacional com o qual o pacote de testes seja compatível
        • 80% de conformidade no Test262 em um dispositivo iOS ou iPadOS ou em um Mac com o Apple Silicon; e
      • Cumprir o requisito do conjunto de testes acima caso a compilação JIT (just-in-time) não esteja disponível (por exemplo, se o usuário tiver ativado o Modo de Bloqueio).
    • Atender aos seguintes requisitos de segurança:
      • Comprometer-se a adotar processos de desenvolvimento seguros, incluindo o monitoramento da cadeia de suprimentos de software do seu app em busca de vulnerabilidades e o cumprimento das práticas recomendadas em relação ao desenvolvimento seguro de software (como a realização de modelagem de ameaças para novos recursos em desenvolvimento).
      • Fornecer um URL para uma política de divulgação de vulnerabilidade publicada que inclua: informações de contato para que terceiros (que pode incluir a Apple) relatem vulnerabilidades e problemas de segurança a você; quais informações fornecer em um relatório e o prazo para o recebimento de atualizações de status.
      • Comprometer-se a mitigar, em tempo hábil, as vulnerabilidades que estão sendo exploradas no seu app ou no mecanismo de navegação alternativo utilizado (por exemplo, 30 dias para as classes mais simples de vulnerabilidades que estão sendo exploradas ativamente).
      • Fornecer um URL para uma página (ou páginas) da web disponível publicamente que informe sobre quais vulnerabilidades relatadas foram resolvidas em versões específicas do mecanismo de navegação e, se aplicável, na versão correspondente do app.
      • Se o mecanismo de navegação alternativo usar um repositório de certificados raiz que não seja acessado por meio do SDK do iOS, você deverá tornar a política de certificados raiz publicamente acessível, e o proprietário dessa política deverá participar do CA/Browser Forum (Certification Authority/Browser Forum) na qualidade de navegador.
      • Demonstrar suporte a protocolos modernos de TLS (Transport Layer Security) para proteger comunicações de dados em trânsito durante o uso do mecanismo de navegação.
    Requisitos de segurança do programa

    Você deve cumprir os seguintes requisitos:

    • Usar linguagens de programação com segurança de memória, ou recursos que aumentem a segurança de memória em outras linguagens, no mecanismo de navegação alternativo, no mínimo, para todo o código que processa conteúdo da web;
    • Adotar as mais recentes mitigações de segurança que removem classes de vulnerabilidades ou dificultam muito o desenvolvimento de uma cadeia de exploração.
    • Seguir as práticas recomendadas de design e programação seguros;
    • Monitorar vulnerabilidades em quaisquer dependências de software de terceiros e na cadeia de suprimentos de software mais ampla do seu app, migrando para versões mais recentes caso uma vulnerabilidade impacte o seu app;
    • Não usar frameworks ou bibliotecas de software que não estão mais recebendo atualizações de segurança em resposta a vulnerabilidades; e
    • Priorizar a resolução de vulnerabilidades relatadas com agilidade, em vez de priorizar o desenvolvimento de novos recursos. Por exemplo, quando o mecanismo de navegação alternativo cria uma ponte entre o SDK da plataforma e o conteúdo da web para habilitar APIs web, mediante solicitação, o suporte a essa API web dever ser removido se ela for identificada como apresentando uma vulnerabilidade. A maioria das vulnerabilidades deve ser resolvida em 30 dias, mas algumas podem ser mais complexas e levar mais tempo.
    Requisitos de privacidade do programa

    Você deve cumprir os seguintes requisitos:

    • Bloquear cookies entre sites (ou seja, cookies de terceiros) por padrão, a menos que o usuário opte expressamente por permiti-los com consentimento informado ou conforme exigido para compatibilidade no caso de janelas pop-up que interagem com quadros na janela de abertura;
    • Particionar qualquer armazenamento ou estado observável com base no site de nível superior, ou bloquear o uso e a observação desse armazenamento ou estado entre sites;
    • Não compartilhar identificadores de dispositivos com sites sem consentimento informado e ativação do usuário;
    • Identificar as conexões de rede usando as APIs fornecidas para gerar um Relatório de Privacidade de Apps no iOS (independentemente da jurisdição em que o app seja distribuído); e
    • Seguir os padrões da web geralmente adotados sobre quando exigir a ativação informada do usuário e/ou o consentimento do usuário, conforme apropriado para APIs web (por exemplo, acesso à área de transferência ou tela cheia), incluindo aqueles que fornecem acesso a informações pessoalmente identificáveis.
    Requisitos adicionais
    • Você deve enviar, com cada envio do binário, o nome e a versão do mecanismo de navegação alternativo integrado ao seu app.
    • Quando uma nova versão do mecanismo de navegação alternativo integrado ao seu app for disponibilizada, você deverá enviar uma atualização para o app com essa nova versão em até 15 (quinze) dias corridos.

    Exemplos e recursos

    Esta seção contém recursos adicionais e exemplos para ajudar você a atender aos requisitos que permitem usar um mecanismo de navegação alternativo.

    SDLC Seguro (ciclo de vida do desenvolvimento de software)

    Muitos dos requisitos que você precisa cumprir dependem do desenvolvimento de uma abordagem com foco em segurança e privacidade ao introduzir novos recursos em seu app. Ao iniciar o desenvolvimento de um novo recurso, deve‑se primeiramente elaborar uma modelagem de ameaças e um plano que estabeleça como a arquitetura e a versão lançada do app garantirão a mitigação dos riscos identificados. Há várias técnicas para obter essa garantia, por exemplo, auditoria de código, fuzzing e casos de testes para verificar as propriedades de segurança que você pretende aplicar. Você deve considerar todo o conteúdo da web como não confiável e possivelmente malicioso.

    Recursos

    Mitigações de segurança e segurança de memória

    Também é necessário considerar as mitigações de segurança fornecidas pelo iOS ou iPadOS, como códigos de autenticação de ponteiros e Memory Integrity Enforcement, bem como as linguagens de programação, os recursos de linguagem, as ferramentas de compilação e os demais instrumentos disponíveis para mitigar cada ameaça identificada. Por exemplo, o Swift é uma linguagem com segurança de memória por padrão e pode ajudar você a evitar várias fontes comuns de vulnerabilidades e outros bugs de software relacionados à memória. No entanto, linguagens sem segurança de memória por padrão, como o C++, disponibilizam recursos que trazem benefícios de segurança de memória, como o std::span. Além disso, é possível usar opções e ferramentas do compilador como, por exemplo, -fbounds-safety em C, que permitem anotar o código existente para mitigar o acesso à memória fora dos limites, sem exigir necessariamente a reescrita da funcionalidade em uma linguagem que seja, por padrão, segura para a memória.

    Recursos

    Gerenciamento de vulnerabilidades

    Você deve partir do pressuposto de que as vulnerabilidades não descobertas sempre estarão presentes em um mecanismo de navegação e que novos recursos poderão introduzir riscos não intencionais. Portanto, é essencial ter processos estabelecidos que permitam que você responda adequadamente quando uma vulnerabilidade for identificada, seja internamente (por meio de testes e esforços de segurança e privacidade), na sua cadeia de suprimentos de software, ou via relatos de terceiros.

    Ao disponibilizar um canal para que terceiros (como pesquisadores de segurança) relatem vulnerabilidades, considere quais informações serão necessárias para avaliar rapidamente a validade do relato e identificar a causa do problema. Você deve garantir que existam processos para priorizar a correção da vulnerabilidade e publicar uma atualização, mesmo que isso esteja fora de seu cronograma habitual.

    Também é importante que os usuários possam determinar rapidamente quais vulnerabilidades públicas com um CVE-ID associado foram resolvidas em determinada versão do app (ou mecanismo de navegação alternativo).

    Recursos

    Segurança de rede

    Ao utilizar o SDK do iOS, especificamente o framework Network e/ou as APIs SecTrust, você reduz a necessidade de avaliar a confiabilidade dos certificados web e de manter ou usar um repositório de certificados raiz para qualquer mecanismo de navegação alternativo que esteja em uso. Se você opera um programa, ele deve fornecer informações sobre como uma autoridade de certificação (CA) raiz pode se candidatar a participar do programa e como incidentes (por exemplo, a exposição da chave privada de uma autoridade de certificação raiz) podem ser relatados para que você possa tomar providências.

    Os protocolos usados na web estão em constante evolução para responder às ameaças emergentes e proteger melhor a privacidade e a segurança dos usuários. As versões modernas de TLS atuais e não descontinuadas que devem ser compatíveis com o seu mecanismo de navegação alternativo são TLS 1.2 e 1.3. No entanto, isso pode mudar com o tempo. Você pode oferecer suporte a protocolos descontinuados no mecanismo de navegação alternativo, mas deve informar aos usuários quando eles navegarem para um site que ofereça suporte apenas a esses protocolos.

    Recursos

    Contratos