AEM på Adobe hade ett nära samarbete med öppen källkodsprojektet NotSoSerial för att bidra till att minska de säkerhetsluckor som beskrivs i CVE-2015-7501. NotSoSerial licensieras under Apache 2-licens och innehåller ASM-kod som licensierats separat BSD-liknande licens.
Agentbehållaren som medföljer detta paket är distributionen av NotSoSerial efter Adobe.
NotSoSerial är en lösning på Java™-nivå till ett problem på Java™-nivå och är inte AEM. En preflight-kontroll läggs till i ett försök att avserialisera ett objekt. Den här kontrollen testar ett klassnamn mot en brandväggsliknande tillåtelselista, blockeringslista eller båda. På grund av det begränsade antalet klasser i standardvärdet blockeringslista är det osannolikt att det här testet påverkar ditt system eller din kod.
Som standard utför agenten en kontroll av blockeringslista mot aktuella kända sårbara klasser. Blockeringslista är avsett att skydda dig från den aktuella listan över explosioner som använder den här typen av sårbarhet.
Du kan konfigurera blockeringslista och tillåtelselista genom att följa instruktionerna i Konfigurera agenten i den här artikeln.
Medlet är avsett att bidra till att minska de senaste kända sårbara klasserna. Om ditt projekt avserialiserar otillförlitliga data kan det fortfarande vara känsligt för denial of service-attacker, slut på minnesattacker och okända framtida avserialiseringsattacker.
Adobe har officiellt stöd för Java™ 6, 7 och 8. Adobe förstår dock att NotSoSerial även stöder Java™ 5.
Om du tidigare har installerat serialiseringssnabbkorrigeringen för AEM 6.1 tar du bort agentens startkommandon från Java™-körningsraden.
Installera com.adobe.cq.cq paket.
Gå till webbkonsolen Bundle på https://server:port/system/console/bundles
Leta efter serialiseringspaketet och starta det. När du gör det laddas NotSoSerial-agenten automatiskt.
NotSoSerial-agenten ingår inte i standarddistributionen av AEM för programservrar. Du kan dock extrahera den från AEM jar-distributionen och använda den med programserverkonfigurationen:
Ladda först ned AEM snabbstartfil och extrahera den:
java -jar aem-quickstart-6.2.0.jar -unpack
Gå till platsen för den uppzippade AEM snabbstarten och kopiera crx-quickstart/opt/notsoserial/
mapp till crx-quickstart
mapp för AEM programserverinstallation.
Ändra ägarskap för /opt
till användaren som kör servern:
chown -R opt <user running the server>
Konfigurera och kontrollera att agenten har aktiverats korrekt enligt följande avsnitt i den här artikeln.
Standardkonfigurationen räcker för de flesta installationer. Den här konfigurationen innehåller en blockeringslista med kända, fjärrkörda sårbara klasser och en tillåtelselista paket där avserialisering av tillförlitliga data är säkert.
Brandväggskonfigurationen är dynamisk och kan ändras när som helst genom att:
Gå till webbkonsolen på https://server:port/system/console/configMgr
Söka efter och klicka Konfiguration av brandvägg för deserialisering.
Du kan även nå konfigurationssidan direkt genom att gå till URL:en på:
https://server:port/system/console/configMgr/com.adobe.cq.deserfw.impl.DeserializationFirewallImpl
Den här konfigurationen innehåller loggning av tillåtelselista, blockeringslista och deserialisering.
Tillåt lista
I avsnittet Tillåt är dessa listor klasser eller paketprefix som tillåts för deserialisering. Om du avserialiserar egna klasser lägger du till antingen klasserna eller paketen i den här tillåtelselista.
Blocklista
I avsnittet med blocklistor är klasser som aldrig tillåts för deserialisering. Den första uppsättningen av dessa klasser är begränsad till klasser som har befunnits sårbara för attacker på fjärrbasis. Blockeringslista används före alla poster i listan över tillåtna.
Diagnostikloggning
I avsnittet för diagnostikloggning kan du välja flera alternativ för loggning när deserialisering sker. De här alternativen är bara inloggade första gången och loggas inte igen vid efterföljande användningar.
Standardvärdet för class-name-only informerar dig om de klasser som avserialiseras.
Du kan också ange fullhög som loggar en Java™-stack om det första deserialiseringsförsöket för att informera dig om var deserialiseringen sker. Det här alternativet är användbart när du vill hitta och ta bort deserialisering från din användning.
Du kan verifiera deserialiseringsagentens konfiguration genom att gå till URL:en på:
https://server:port/system/console/healthcheck?tags=deserialization
När du har öppnat URL-adressen visas en lista med hälsokontroller som är relaterade till agenten. Du kan avgöra om agenten har aktiverats på rätt sätt genom att verifiera att hälsokontrollerna har godkänts. Om de misslyckas måste du läsa in agenten manuellt.
Mer information om felsökning av problem med agenten finns i Hantera fel med dynamisk agentinläsning nedan.
Om du lägger till org.apache.commons.collections.functors
hälsokontrollen misslyckas alltid till tillåtelselista.
Om fel visas i loggen, eller om verifieringsstegen upptäcker ett problem med att läsa in agenten, läser du in agenten manuellt. Det här arbetsflödet rekommenderas också om du använder en JRE (Java™ Runtime Environment) i stället för en JDK (Java™ Development Toolkit), eftersom verktygen för dynamisk inläsning inte är tillgängliga.
Så här läser du in agenten manuellt:
Redigera JVM-startparametrarna för CQ-behållaren och lägg till följande alternativ:
-javaagent:<aem-installation-folder>/crx-quickstart/opt/notsoserial/notsoserial.jar
Kräver att du även använder alternativet -nofork CQ/AEM, tillsammans med lämpliga JVM-minnesinställningar, eftersom agenten inte är aktiverad på en forked JVM.
Adobe-distributionen av NotSoSerial Agent burk finns på crx-quickstart/opt/notsoserial/
mapp för AEM.
Stoppa och starta om JVM,
Verifiera agentens aktivering igen genom att följa stegen som beskrivs ovan Verifierar agentens aktivering.
Om du kör på en IBM® JVM läser du dokumentationen om stöd för Java™ Attach API på den här platsen.