
CVE-2020-0413 के लिए एक्सप्लॉइट जो Android Fluoride Bluetooth stack को लक्षित करता है, एक विशेष रूप से तैयार किए गए ब्लूटूथ पैकेट के माध्यम से रिमोट कोड निष्पादन सक्षम करता है।
बस AOSP बनाएं - Fluoride डिफ़ॉल्ट रूप से वहाँ है।
Ubuntu के लिए निर्देश, 14.04 पर Clang 3.5.0 और 16.10 पर Clang 3.8.0 के साथ परीक्षण किया गया
mkdir ~/fluoride
cd ~/fluoride
git clone https://android.googlesource.com/platform/system/bt
निर्भरताएँ स्थापित करें (sudo पहुँच आवश्यक):
cd ~/fluoride/bt
build/install_deps.sh
फिर तृतीय पक्ष निर्भरताएँ प्राप्त करें:
cd ~/fluoride/bt
mkdir third_party
cd third_party
git clone https://github.com/google/googletest.git
git clone https://android.googlesource.com/platform/external/aac
git clone https://android.googlesource.com/platform/external/libchrome
git clone https://android.googlesource.com/platform/external/libldac
git clone https://android.googlesource.com/platform/external/modp_b64
git clone https://android.googlesource.com/platform/external/tinyxml2
और तृतीय पक्ष निर्भरताओं की तृतीय पक्ष निर्भरताएँ:
cd fluoride/bt/third_party/libchrome/base/third_party
mkdir valgrind
cd valgrind
curl https://chromium.googlesource.com/chromium/src/base/+/master/third_party/valgrind/valgrind.h?format=TEXT | base64 -d > valgrind.h
curl https://chromium.googlesource.com/chromium/src/base/+/master/third_party/valgrind/memcheck.h?format=TEXT | base64 -d > memcheck.h
नोट: यदि system/bt AOSP के अंतर्गत चेक आउट किया गया है, तो स्रोत डाउनलोड करने के बजाय प्रतीकात्मक लिंक बनाएँ
cd system/bt
mkdir third_party
cd third_party
ln -s ../../../external/aac aac
ln -s ../../../external/libchrome libchrome
ln -s ../../../external/libldac libldac
ln -s ../../../external/modp_b64 modp_b64
ln -s ../../../external/tinyxml2 tinyxml2
ln -s ../../../external/googletest googletest
cd ~/fluoride/bt
gn gen out/Default
cd ~/fluoride/bt
ninja -C out/Default all
यह सभी लक्ष्यों (साझा लाइब्रेरी, निष्पादनयोग्य, परीक्षण आदि) का निर्माण करेगा और उन्हें out/Default में रखेगा। किसी व्यक्तिगत लक्ष्य को बनाने के लिए, "all" को अपनी पसंद के लक्ष्य से बदलें, उदा. ninja -C out/Default net_test_osi।
cd ~/fluoride/bt/out/Default
LD_LIBRARY_PATH=./ ./bluetoothtbd -create-ipc-socket=fluoride
Chromium परियोजना के Eclipse सेटअप निर्देशों का पालन करें "Optional: Building inside Eclipse" अनुभाग तक (वह अनुभाग न करें, हम इसे अलग तरीके से सेट करेंगे)
Eclipse सेटिंग्स जनरेट करें:
cd system/bt
gn gen --ide=eclipse out/Default
Eclipse में, File->Import->C/C++->C/C++ Project Settings करें, system/bt/out/Default के अंतर्गत XML स्थान चुनें
प्रोजेक्ट पर राइट क्लिक करें। Preferences->C/C++ Build->Builder Settings पर जाएँ। "Use default build command" को अनचेक करें, बल्कि इसके बजाय "ninja -C out/Default" का उपयोग करें
Behaviour टैब पर जाएँ, क्लीन कमांड को "-t clean" में बदलें