CVE-2023-20864 Vmware Aria İşlemlerinde Uzaktan Kod Yürütme Açığı Nedir ?

a3b2jeo.png

logo.png

:siberataycovid:


CVE-2023-20864 Vmware Aria İşlemlerinde Uzaktan Kod Yürütme Açığı Nedir ?

VMware Aria Operations for Logs'da güvenli olmayan bir seri durumdan çıkarma güvenlik açığı bildirildi. Güvenlik açığı, sınıftaki kullanıcı verilerinin hatalı şekilde doğrulanmasından kaynaklanmaktadır. InternalClusterController. Kimliği doğrulanmamış uzaktaki bir saldırgan, hedef sunucuya hazırlanmış bir istek göndererek bu güvenlik açığından yararlanabilir. Başarılı bir şekilde kullanılması, Yönetici kullanıcının güvenlik bağlamında rastgele kod yürütülmesine neden olabilir.

CVE-2023-20864 Açığı Hakkında Bilgilerimiz Nerlerdir ?


VMware Aria Operations for Logs, daha önce vRealize Log Insight adı altında geliştirilen bir günlük yönetimi çözümüdür. Günlük dosyalarını depolama ve işleme amacıyla uzak makinelerden merkezi bir sunucuya toplamak için kullanılabilir. Yöneticiler daha sonra verileri görselleştirmek, raporlar oluşturmak ve günlük verilerini yönetmek için kontrol panelleri oluşturmak üzere web tabanlı bir kullanıcı arayüzüne erişebilir. Uygulama, web kullanıcı arayüzüne ek olarak sunucuyu yönetmek için bir API içerir. API'ye HTTP aracılığıyla 9000/TCP numaralı bağlantı noktasından veya HTTPS aracılığıyla 9543/TCP numaralı bağlantı noktasından erişilebilir.

-

Aria Operations for Logs, tek bir düğümde çalışan bağımsız bir cihaz olarak çalıştırılabilir veya birden fazla örnek, bir kümede çalışacak şekilde birlikte yapılandırılabilir. Bu güvenlik açığından etkilenen API'ler, uygulamayı kümeye eklemek için kurulum sırasında
Aria Operations for Logs'un iki örneği arasında kullanılmak üzere tasarlanmıştır. API "applyMembership", bir sunucu tarafından bir kümeye katılma isteği göndermek için kullanılır. Birincil sunucu, cluster katılma isteğini kabul ederse, cluster katılmak için gereken sunucuya yapılandırma verilerini göndermek için API "approveMembership"i ve sunucuya uygulanacak bir belirteç göndermek için "setToken" API'sini kullanır. Her API çağrısına ilişkin HTTP POST istek gövdesi, API'ye iletilecek verileri içeren serileştirilmiş bir Java nesnesi içerecektir. Serileştirilmiş her nesne, gönderildiği API'ye bağlı olarak farklı bir sınıfa sahip olacaktır. Java, nesnelerin serileştirilmesine izin vererek onların kompakt ve taşınabilir bir bayt akışı olarak temsil edilmesini sağlar. Bu bayt akışı daha sonra ağ üzerinden aktarılabilir ve karşılık gelen sunucu uygulaması veya uygulama tarafından kullanılmak üzere seri durumdan çıkarılabilir. Aşağıdaki örnek, bir sınıfın nasıl serileştirildiğini ve daha sonra nasıl çıkarıldığını gösterir:

Kod:
public static void main(String args[]) throws Exception{
 //This is the object we're going to serialize.
 MyObject1 myObj = new MyObject1();
 MyObject2 myObj2 = new MyObject2();
 myObj2.name = “calc”;
 myObj.test = myObj2;
//Write the serialized data to a file “object.ser”
 FileOutputStream fos = new FileOutputStream(“object.ser”);
ObjectOutputStream os = new ObjectOutputStream(fos);
 os.writeObject(myObj);
 os.close();
//Read the serialized data back in from the file “object.ser”
 FileInputStream fis = new FileInputStream(“object.ser”);
 ObjectInputStream ois = new ObjectInputStream(fis);
//Read the object from the data stream, and convert it back to a String
 MyObject1 objectFromDisk = (MyObject1)ois.readObject();
 ois.close();
}

Serializable tüm Java Nesneleri, Serializable arayüzü uygular. Bu arayüz, sırasıyla nesneleri serializable yaparken ve seri durumdan çıkarırken çağrılan writeObject() ve yöntemlerini uygular. readObject() Bu yöntemler, Java Nesnelerinin Serializable ni ve seri durumdan çıkarılması sırasında özel davranışı uygulamak üzere değiştirilebilir. Serializable bir Java nesnesi aşağıdaki yapıyla başlar :

Kod:
Name              Length         Value
------------------------------------------------------------------
STREAM_MAGIC      2              \xac\xed
STREAM_VERSION    2              typically \x00\x05
TC_OBJECT         1              \x73
TC_CLASSDESC      1              \x72
Length            2              \x00\x11 (Length of Class Name)
Class Name var “java.util.HashMap”

VMware Aria Operations for Logs'da güvenli olmayan bir seri durumdan çıkarma güvenlik açığı bildirildi. Güvenlik açığı, kullanıcı verilerinin sınıftaki birden çok yöntemde hatalı şekilde doğrulanmasından kaynaklanmaktadır InternalClusterController. Aria Operation for Logs, kümelerin yönetimine yardımcı olmak için "routes" dosyasında üç API işlevi tanımlar: "applyMembership", "setToken" ve "approveMembership". Sunucu bu API'lerden herhangi birine bir çağrı aldığında, sınıfta API adına karşılık gelen bir yöntem çağrılacaktır InternalClusterController. Kullanılan API ne olursa olsun, yöntem ilk olarak HTTP isteğinin gövdesini bir bayt dizisi olarak yönteme iletecektir SerializationUtils.deserialize(). Yöntem deserialize() daha sonra bayt dizisini bir nesneye dönüştürecek ByteArrayInputStreamve ardından onu deserialize() tekrar iletecektir. Yöntem daha sonra kullanıcı verilerini bir ObjectInputStream nesneye dönüştürecek ve çağrı yapacaktır. readObject() seri durumdan çıkarmak için üzerinde. Kullanıcı verileri seri durumdan çıkarıldıktan sonra, kullanıcının API'ye yönelik isteğinin işlenmesini tamamlamak için başka bir yönteme aktarılacaktır. Ancak API'lere yönelik isteklerin gövdesindeki Serializable nesneler, seri durumdan çıkarılmadan önce doğrulanmaz. Kimliği doğrulanmamış uzak bir saldırgan, hazırlanmış serileştirilmiş bir nesne içeren bir API isteği göndererek bu güvenlik açığından yararlanabilir. Böyle hazırlanmış bir nesne , “CommonsBeanutils1” gadget zincirini kullanan ysoserial aracıyla oluşturulabilir . Başarılı bir şekilde kullanılması, kök kullanıcının güvenlik bağlamında rastgele kod yürütülmesine neden olabilir.


Hey Konuyu Okuyun Sen ! Sıkılmaman İçin Bir Video İzle.Çünkü Exploit Konuları Gerçekten
Ekran-goruntusu-2023-08-23-110429.png
Einstein Seviyesinde Mola Verdikten Sonra Oku

:siberatay_uwu:



Anlatılan Kaynak Kodlarındak Çözüm Nasıl Yapılır


Aşağıdaki kod VMware Aria Operation for Logs sürüm 8.10.2'den alınmıştır. Yorumlar Trend Micro araştırmacıları tarafından eklenmiştir.

/usr/lib/loginsight/application/lib/api-play-service_2.13-1.0.jar!routes'tan:

Kod:
POST /api/v2/internal/cluster/applyMembership
 controllers.InternalClusterController.applyMembership(request :play.mvc.Http.Request)
POST /api/v2/internal/cluster/setToken
 controllers.InternalClusterController.setToken(request :play.mvc.Http.Request)
POST /api/v2/internal/cluster/approveMembership
 controllers.InternalClusterController.approveMembership(request :play.mvc.Http.Request)

Java sınıfından /usr/lib/loginsight/application/lib/api-play-service_2.13-1.0.jar!controllers/InternalClusterController.class:
Kod:
    public Result applyMembership(Http.Request request) throws ApiProvidersException {
        // Pass body of request to deserialize()
        ApplyMembershipRequest applyRequest = (ApplyMembershipRequest)
SerializationUtils.deserialize(request.body().asBytes().toArray());
        ApplyMembershipResult result = provider.applyMembership(applyRequest);
        return ok(SerializationUtils.serialize(result));
    }

    public Result setToken(Http.Request request) throws ApiProvidersException {
        // Pass body of request to deserialize()
        SetTokenRequest setTokenRequest = (SetTokenRequest)
SerializationUtils.deserialize(request.body().asBytes().toArray());
        SetTokenResult result = provider.setToken(setTokenRequest);
        return ok(SerializationUtils.serialize(result));
    }

    public Result approveMembership(Http.Request request) throws ApiProvidersException {
        // Pass body of request to deserialize()
        SetConfigRequest setConfigRequest = (SetConfigRequest)
SerializationUtils.deserialize(request.body().asBytes().toArray());
        SetConfigResult result = provider.approveMembership(setConfigRequest);
        return ok(SerializationUtils.serialize(result));
    }

Java sınıfından /usr/lib/loginsight/application/lib/lib/commons-lang3.jar!org/apache/commons/lang3/SerializationUtils.class:
Kod:
     public static Object deserialize(byte[] objectData) {
         if (objectData == null) {
             throw new IllegalArgumentException(“The byte[] must not be null”);
         } else {
             // Create BtyeArrayInputStream and deserialize
             ByteArrayInputStream bais = new ByteArrayInputStream(objectData);
             return deserialize((InputStream)bais);
         }
     }

Java sınıfından /usr/lib/loginsight/application/lib/lib/commons-lang3-3.1.jar!org/apache/commons/lang3/SerializationUtils.class:

Kod:
     public static Object deserialize(InputStream inputStream) {
         if (inputStream == null) {
             throw new IllegalArgumentException(“The InputStream must not be null”);
         } else {
             ObjectInputStream in = null;

             Object var2;
             try {
                 // Deserialization of object in user request happens here without prior validation
                 in = new ObjectInputStream(inputStream);
                 var2 = in.readObject();
             } catch (ClassNotFoundException var12) {
                 throw new SerializationException(var12);
             } catch (IOException var13) {
                 throw new SerializationException(var13);
             } finally {
                 try {
                     if (in != null) {
                     in.close();
                     }
                 } catch (IOException var11) {
                 }
             }

             return var2;
         }
     }

Bu güvenlik açığından yararlanan bir saldırıyı algılamak için, algılama cihazının 9000 ve 9543 numaralı TCP bağlantı noktaları üzerindeki trafiği izlemesi ve ayrıştırması gerekir. Trafiğin şifrelenmiş olabileceğini ve bu algılama kılavuzunu uygulamadan önce trafiğin şifresinin çözülmesi gerekeceğini unutmayın. Algılama cihazının HTTP isteklerindeki Java Serializable nesnelerini ayrıştırması gerekir. Java, nesnelerin serileştirilmesine izin vererek onların kompakt ve taşınabilir bir bayt akışı olarak temsil edilmesini sağlar. Bu bayt akışı daha sonra ağ üzerinden aktarılabilir ve karşılık gelen sunucu uygulaması veya uygulama tarafından kullanılmak üzere seri durumdan çıkarılabilir. Serileştirilmiş bir Java nesnesi yukarıda gösterilen yapıyla başlar.
Algılama cihazının aşağıdaki URI'lere gelen HTTP POST isteklerini incelemesi gerekir:

Kod:
/api/v2/internal/cluster/applyMembership
/api/v2/internal/cluster/approveMembership
/api/v2/internal/cluster/setToken

Bulunursa, algılama cihazının istek gövdesini Java Serializable bir nesne için incelemesi gerekir. Algılama cihazı, Serializable bir nesneyi bulmak için "\xac\xed" baytlarına ve ardından "\x00\x05" 2 baytlık akış sürümüne yönelik talebi inceleyebilir. Algılama cihazı daha sonra Serializable nesneyi ofsetten başlayarak incelemeli ve ,' 0x04 ye karşılık gelen aşağıdaki baytları ve ardından Sınıf Adının uzunluğunu aramalı ve hemen ardından isteğin hangi API uç noktasına gideceğine bağlı olarak bir Sınıf Adı gelmelidir: TC_OBJECTTC_CLASSDESC
Kod:
API Endpoint       Bytes              Expected Class Name
-------------------------------------------------------------------------------------------------------------
applyMembership    \x73\x72\x00\x45   com.vmware.loginsight.daemon.protocol.commands.ApplyMembershipRequest
approveMembership  \x73\x72\x00\x3F   com.vmware.loginsight.daemon.protocol.commands.SetConfigRequest
setToken           \x73\x72\x00\x3E   com.vmware.loginsight.daemon.protocol.commands.SetTokenRequest

İstekteki Serializable nesnedeki Sınıf Adı, beklenen Sınıf Adıyla eşleşmiyorsa trafiğin şüpheli olduğu düşünülmelidir ve bu güvenlik açığından yararlanan bir saldırı büyük olasılıkla gerçekleştirilmektedir. Yazılımın gelecek sürümlerinde her API için beklenen sınıf adının değişebileceğini unutmayın.

Fix Yöntemi


VMware bu hatayı Nisan ayında VMSA-2023-0007 ile düzeltti . Bugüne kadar bu hatanın aktif saldırılarda kullanıldığına dair herhangi bir kanıt görmedik. Ancak doğada da benzer hataların tespit edildiği bildiriliyor. Aria kullanıcılarının bu güncelleştirmeyi hızlı bir şekilde test edip dağıtmaları önerilir.

Konumu Okuduğunuz İçin Teşekkür Ederim

Konu Kaynaklarım:


1.TrendMicro Şirketi
2.ZerodayInvıte Şirketi
3.Vmware Şirketi


a3b2jeo.png
 

gostking

Katılımcı Üye
29 Nis 2020
362
688
Vatan
a3b2jeo.png

logo.png

:siberataycovid:


CVE-2023-20864 Vmware Aria İşlemlerinde Uzaktan Kod Yürütme Açığı Nedir ?

VMware Aria Operations for Logs'da güvenli olmayan bir seri durumdan çıkarma güvenlik açığı bildirildi. Güvenlik açığı, sınıftaki kullanıcı verilerinin hatalı şekilde doğrulanmasından kaynaklanmaktadır. InternalClusterController. Kimliği doğrulanmamış uzaktaki bir saldırgan, hedef sunucuya hazırlanmış bir istek göndererek bu güvenlik açığından yararlanabilir. Başarılı bir şekilde kullanılması, Yönetici kullanıcının güvenlik bağlamında rastgele kod yürütülmesine neden olabilir.

CVE-2023-20864 Açığı Hakkında Bilgilerimiz Nerlerdir ?


VMware Aria Operations for Logs, daha önce vRealize Log Insight adı altında geliştirilen bir günlük yönetimi çözümüdür. Günlük dosyalarını depolama ve işleme amacıyla uzak makinelerden merkezi bir sunucuya toplamak için kullanılabilir. Yöneticiler daha sonra verileri görselleştirmek, raporlar oluşturmak ve günlük verilerini yönetmek için kontrol panelleri oluşturmak üzere web tabanlı bir kullanıcı arayüzüne erişebilir. Uygulama, web kullanıcı arayüzüne ek olarak sunucuyu yönetmek için bir API içerir. API'ye HTTP aracılığıyla 9000/TCP numaralı bağlantı noktasından veya HTTPS aracılığıyla 9543/TCP numaralı bağlantı noktasından erişilebilir.

-

Aria Operations for Logs, tek bir düğümde çalışan bağımsız bir cihaz olarak çalıştırılabilir veya birden fazla örnek, bir kümede çalışacak şekilde birlikte yapılandırılabilir. Bu güvenlik açığından etkilenen API'ler, uygulamayı kümeye eklemek için kurulum sırasında
Aria Operations for Logs'un iki örneği arasında kullanılmak üzere tasarlanmıştır. API "applyMembership", bir sunucu tarafından bir kümeye katılma isteği göndermek için kullanılır. Birincil sunucu, cluster katılma isteğini kabul ederse, cluster katılmak için gereken sunucuya yapılandırma verilerini göndermek için API "approveMembership"i ve sunucuya uygulanacak bir belirteç göndermek için "setToken" API'sini kullanır. Her API çağrısına ilişkin HTTP POST istek gövdesi, API'ye iletilecek verileri içeren serileştirilmiş bir Java nesnesi içerecektir. Serileştirilmiş her nesne, gönderildiği API'ye bağlı olarak farklı bir sınıfa sahip olacaktır. Java, nesnelerin serileştirilmesine izin vererek onların kompakt ve taşınabilir bir bayt akışı olarak temsil edilmesini sağlar. Bu bayt akışı daha sonra ağ üzerinden aktarılabilir ve karşılık gelen sunucu uygulaması veya uygulama tarafından kullanılmak üzere seri durumdan çıkarılabilir. Aşağıdaki örnek, bir sınıfın nasıl serileştirildiğini ve daha sonra nasıl çıkarıldığını gösterir:

Kod:
public static void main(String args[]) throws Exception{
 //This is the object we're going to serialize.
 MyObject1 myObj = new MyObject1();
 MyObject2 myObj2 = new MyObject2();
 myObj2.name = “calc”;
 myObj.test = myObj2;
//Write the serialized data to a file “object.ser”
 FileOutputStream fos = new FileOutputStream(“object.ser”);
ObjectOutputStream os = new ObjectOutputStream(fos);
 os.writeObject(myObj);
 os.close();
//Read the serialized data back in from the file “object.ser”
 FileInputStream fis = new FileInputStream(“object.ser”);
 ObjectInputStream ois = new ObjectInputStream(fis);
//Read the object from the data stream, and convert it back to a String
 MyObject1 objectFromDisk = (MyObject1)ois.readObject();
 ois.close();
}

Serializable tüm Java Nesneleri, Serializable arayüzü uygular. Bu arayüz, sırasıyla nesneleri serializable yaparken ve seri durumdan çıkarırken çağrılan writeObject() ve yöntemlerini uygular. readObject() Bu yöntemler, Java Nesnelerinin Serializable ni ve seri durumdan çıkarılması sırasında özel davranışı uygulamak üzere değiştirilebilir. Serializable bir Java nesnesi aşağıdaki yapıyla başlar :

Kod:
Name              Length         Value
------------------------------------------------------------------
STREAM_MAGIC      2              \xac\xed
STREAM_VERSION    2              typically \x00\x05
TC_OBJECT         1              \x73
TC_CLASSDESC      1              \x72
Length            2              \x00\x11 (Length of Class Name)
Class Name var “java.util.HashMap”

VMware Aria Operations for Logs'da güvenli olmayan bir seri durumdan çıkarma güvenlik açığı bildirildi. Güvenlik açığı, kullanıcı verilerinin sınıftaki birden çok yöntemde hatalı şekilde doğrulanmasından kaynaklanmaktadır InternalClusterController. Aria Operation for Logs, kümelerin yönetimine yardımcı olmak için "routes" dosyasında üç API işlevi tanımlar: "applyMembership", "setToken" ve "approveMembership". Sunucu bu API'lerden herhangi birine bir çağrı aldığında, sınıfta API adına karşılık gelen bir yöntem çağrılacaktır InternalClusterController. Kullanılan API ne olursa olsun, yöntem ilk olarak HTTP isteğinin gövdesini bir bayt dizisi olarak yönteme iletecektir SerializationUtils.deserialize(). Yöntem deserialize() daha sonra bayt dizisini bir nesneye dönüştürecek ByteArrayInputStreamve ardından onu deserialize() tekrar iletecektir. Yöntem daha sonra kullanıcı verilerini bir ObjectInputStream nesneye dönüştürecek ve çağrı yapacaktır. readObject() seri durumdan çıkarmak için üzerinde. Kullanıcı verileri seri durumdan çıkarıldıktan sonra, kullanıcının API'ye yönelik isteğinin işlenmesini tamamlamak için başka bir yönteme aktarılacaktır. Ancak API'lere yönelik isteklerin gövdesindeki Serializable nesneler, seri durumdan çıkarılmadan önce doğrulanmaz. Kimliği doğrulanmamış uzak bir saldırgan, hazırlanmış serileştirilmiş bir nesne içeren bir API isteği göndererek bu güvenlik açığından yararlanabilir. Böyle hazırlanmış bir nesne , “CommonsBeanutils1” gadget zincirini kullanan ysoserial aracıyla oluşturulabilir . Başarılı bir şekilde kullanılması, kök kullanıcının güvenlik bağlamında rastgele kod yürütülmesine neden olabilir.


Hey Konuyu Okuyun Sen ! Sıkılmaman İçin Bir Video İzle.Çünkü Exploit Konuları Gerçekten
Ekran-goruntusu-2023-08-23-110429.png
Einstein Seviyesinde Mola Verdikten Sonra Oku

:siberatay_uwu:



Anlatılan Kaynak Kodlarındak Çözüm Nasıl Yapılır


Aşağıdaki kod VMware Aria Operation for Logs sürüm 8.10.2'den alınmıştır. Yorumlar Trend Micro araştırmacıları tarafından eklenmiştir.

/usr/lib/loginsight/application/lib/api-play-service_2.13-1.0.jar!routes'tan:

Kod:
POST /api/v2/internal/cluster/applyMembership
 controllers.InternalClusterController.applyMembership(request :play.mvc.Http.Request)
POST /api/v2/internal/cluster/setToken
 controllers.InternalClusterController.setToken(request :play.mvc.Http.Request)
POST /api/v2/internal/cluster/approveMembership
 controllers.InternalClusterController.approveMembership(request :play.mvc.Http.Request)

Java sınıfından /usr/lib/loginsight/application/lib/api-play-service_2.13-1.0.jar!controllers/InternalClusterController.class:
Kod:
    public Result applyMembership(Http.Request request) throws ApiProvidersException {
        // Pass body of request to deserialize()
        ApplyMembershipRequest applyRequest = (ApplyMembershipRequest)
SerializationUtils.deserialize(request.body().asBytes().toArray());
        ApplyMembershipResult result = provider.applyMembership(applyRequest);
        return ok(SerializationUtils.serialize(result));
    }

    public Result setToken(Http.Request request) throws ApiProvidersException {
        // Pass body of request to deserialize()
        SetTokenRequest setTokenRequest = (SetTokenRequest)
SerializationUtils.deserialize(request.body().asBytes().toArray());
        SetTokenResult result = provider.setToken(setTokenRequest);
        return ok(SerializationUtils.serialize(result));
    }

    public Result approveMembership(Http.Request request) throws ApiProvidersException {
        // Pass body of request to deserialize()
        SetConfigRequest setConfigRequest = (SetConfigRequest)
SerializationUtils.deserialize(request.body().asBytes().toArray());
        SetConfigResult result = provider.approveMembership(setConfigRequest);
        return ok(SerializationUtils.serialize(result));
    }

Java sınıfından /usr/lib/loginsight/application/lib/lib/commons-lang3.jar!org/apache/commons/lang3/SerializationUtils.class:
Kod:
     public static Object deserialize(byte[] objectData) {
         if (objectData == null) {
             throw new IllegalArgumentException(“The byte[] must not be null”);
         } else {
             // Create BtyeArrayInputStream and deserialize
             ByteArrayInputStream bais = new ByteArrayInputStream(objectData);
             return deserialize((InputStream)bais);
         }
     }

Java sınıfından /usr/lib/loginsight/application/lib/lib/commons-lang3-3.1.jar!org/apache/commons/lang3/SerializationUtils.class:

Kod:
     public static Object deserialize(InputStream inputStream) {
         if (inputStream == null) {
             throw new IllegalArgumentException(“The InputStream must not be null”);
         } else {
             ObjectInputStream in = null;

             Object var2;
             try {
                 // Deserialization of object in user request happens here without prior validation
                 in = new ObjectInputStream(inputStream);
                 var2 = in.readObject();
             } catch (ClassNotFoundException var12) {
                 throw new SerializationException(var12);
             } catch (IOException var13) {
                 throw new SerializationException(var13);
             } finally {
                 try {
                     if (in != null) {
                     in.close();
                     }
                 } catch (IOException var11) {
                 }
             }

             return var2;
         }
     }

Bu güvenlik açığından yararlanan bir saldırıyı algılamak için, algılama cihazının 9000 ve 9543 numaralı TCP bağlantı noktaları üzerindeki trafiği izlemesi ve ayrıştırması gerekir. Trafiğin şifrelenmiş olabileceğini ve bu algılama kılavuzunu uygulamadan önce trafiğin şifresinin çözülmesi gerekeceğini unutmayın. Algılama cihazının HTTP isteklerindeki Java Serializable nesnelerini ayrıştırması gerekir. Java, nesnelerin serileştirilmesine izin vererek onların kompakt ve taşınabilir bir bayt akışı olarak temsil edilmesini sağlar. Bu bayt akışı daha sonra ağ üzerinden aktarılabilir ve karşılık gelen sunucu uygulaması veya uygulama tarafından kullanılmak üzere seri durumdan çıkarılabilir. Serileştirilmiş bir Java nesnesi yukarıda gösterilen yapıyla başlar.
Algılama cihazının aşağıdaki URI'lere gelen HTTP POST isteklerini incelemesi gerekir:

Kod:
/api/v2/internal/cluster/applyMembership
/api/v2/internal/cluster/approveMembership
/api/v2/internal/cluster/setToken

Bulunursa, algılama cihazının istek gövdesini Java Serializable bir nesne için incelemesi gerekir. Algılama cihazı, Serializable bir nesneyi bulmak için "\xac\xed" baytlarına ve ardından "\x00\x05" 2 baytlık akış sürümüne yönelik talebi inceleyebilir. Algılama cihazı daha sonra Serializable nesneyi ofsetten başlayarak incelemeli ve ,' 0x04 ye karşılık gelen aşağıdaki baytları ve ardından Sınıf Adının uzunluğunu aramalı ve hemen ardından isteğin hangi API uç noktasına gideceğine bağlı olarak bir Sınıf Adı gelmelidir: TC_OBJECTTC_CLASSDESC
Kod:
API Endpoint       Bytes              Expected Class Name
-------------------------------------------------------------------------------------------------------------
applyMembership    \x73\x72\x00\x45   com.vmware.loginsight.daemon.protocol.commands.ApplyMembershipRequest
approveMembership  \x73\x72\x00\x3F   com.vmware.loginsight.daemon.protocol.commands.SetConfigRequest
setToken           \x73\x72\x00\x3E   com.vmware.loginsight.daemon.protocol.commands.SetTokenRequest

İstekteki Serializable nesnedeki Sınıf Adı, beklenen Sınıf Adıyla eşleşmiyorsa trafiğin şüpheli olduğu düşünülmelidir ve bu güvenlik açığından yararlanan bir saldırı büyük olasılıkla gerçekleştirilmektedir. Yazılımın gelecek sürümlerinde her API için beklenen sınıf adının değişebileceğini unutmayın.

Fix Yöntemi


VMware bu hatayı Nisan ayında VMSA-2023-0007 ile düzeltti . Bugüne kadar bu hatanın aktif saldırılarda kullanıldığına dair herhangi bir kanıt görmedik. Ancak doğada da benzer hataların tespit edildiği bildiriliyor. Aria kullanıcılarının bu güncelleştirmeyi hızlı bir şekilde test edip dağıtmaları önerilir.

Konumu Okuduğunuz İçin Teşekkür Ederim

Konu Kaynaklarım:


1.TrendMicro Şirketi
2.ZerodayInvıte Şirketi
3.Vmware Şirketi


a3b2jeo.png
Eline emeğine sağlık
 
Üst

Turkhackteam.org internet sitesi 5651 sayılı kanun’un 2. maddesinin 1. fıkrasının m) bendi ile aynı kanunun 5. maddesi kapsamında "Yer Sağlayıcı" konumundadır. İçerikler ön onay olmaksızın tamamen kullanıcılar tarafından oluşturulmaktadır. Turkhackteam.org; Yer sağlayıcı olarak, kullanıcılar tarafından oluşturulan içeriği ya da hukuka aykırı paylaşımı kontrol etmekle ya da araştırmakla yükümlü değildir. Türkhackteam saldırı timleri Türk sitelerine hiçbir zararlı faaliyette bulunmaz. Türkhackteam üyelerinin yaptığı bireysel hack faaliyetlerinden Türkhackteam sorumlu değildir. Sitelerinize Türkhackteam ismi kullanılarak hack faaliyetinde bulunulursa, site-sunucu erişim loglarından bu faaliyeti gerçekleştiren ip adresini tespit edip diğer kanıtlarla birlikte savcılığa suç duyurusunda bulununuz.